{"version":3,"file":"js/app~5c551db8.3038eec0.js","mappings":"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","sources":["webpack://app/./src/utilities/generateDefaultMyWorkFilters.js","webpack://app/./src/utilities/composables/useOnPageLoad.ts","webpack://app/./src/utilities/generateSrcUrl.js","webpack://app/./src/mixins/checkPlatform.js","webpack://app/./src/utilities/colorsAndIcons.ts","webpack://app/./src/utilities/getRouteAfterLogin.ts","webpack://app/./src/types/iconTypes.ts","webpack://app/./src/utilities/composables/useCurrentRole.ts","webpack://app/./src/mixins/customIconsMixin.js","webpack://app/./src/utilities/fileExtensions.ts","webpack://app/./src/mixins/electronHelpersMixin.js","webpack://app/./src/utilities/composables/useShortcutHandlers.ts","webpack://app/./src/types/notes.ts","webpack://app/./src/mixins/draggingIsOn.js","webpack://app/./src/utilities/composables/useDeleteResource.ts","webpack://app/./src/utilities/composables/useAddCardInGroupByOrder.ts","webpack://app/./src/utilities/composables/useTranslate.ts","webpack://app/./src/utilities/composables/useSetAndOpenProject.ts","webpack://app/./src/utilities/composables/useToggleSidebar.ts","webpack://app/./src/utilities/composables/useAudioTranscription.ts","webpack://app/./src/utilities/translate.ts","webpack://app/./src/types/resources.ts","webpack://app/./src/mixins/isSafari.js","webpack://app/./src/utilities/moveCard.js","webpack://app/./src/utilities/sprintKeys.ts","webpack://app/./src/utilities/specialCharactersPattern.js","webpack://app/./src/utilities/getDashedTitle.js","webpack://app/./src/utilities/getTextToTitleCase.ts","webpack://app/./src/utilities/composables/useNotes.ts","webpack://app/./src/mixins/defaultShortcutKeyPillStyle.js","webpack://app/./src/utilities/strings/index.ts","webpack://app/./src/utilities/index.ts","webpack://app/./src/utilities/sortProjects.ts","webpack://app/./src/types/onboardingActions.ts","webpack://app/./src/utilities/getCurrentDateInSeconds.js","webpack://app/./src/mixins/headerMixin.js","webpack://app/./src/utilities/isInViewport.js","webpack://app/./src/mixins/hideDropdownsMixin.js","webpack://app/./src/types/messageTypes.ts","webpack://app/./src/utilities/getBranchName.js","webpack://app/./src/utilities/api.ts","webpack://app/./src/utilities/validateEmail.ts","webpack://app/./src/utilities/composables/useIsElectronApp.ts","webpack://app/./src/utilities/constants.js","webpack://app/./src/utilities/timeDifference.ts","webpack://app/./src/utilities/composables/useCustomIcon.ts","webpack://app/./src/utilities/SocketService.js","webpack://app/./src/utilities/isApple.ts","webpack://app/./src/utilities/globalState.js","webpack://app/./src/types/tabs.ts","webpack://app/./src/mixins/userAvatarContentMixin.js","webpack://app/./src/mixins/viewResultsMixin.js","webpack://app/./src/mixins/update.js","webpack://app/./src/utilities/getRandomNumber.js","webpack://app/./src/utilities/composables/useOnboardingActions.ts","webpack://app/./src/utilities/composables/useUserHashColor.ts","webpack://app/./src/utilities/eventBus.ts","webpack://app/./src/types/groupByOption.ts","webpack://app/./src/utilities/browser-storage.util.ts","webpack://app/./src/types/cardStatusType.ts","webpack://app/./src/utilities/composables/useNotesPoll.ts","webpack://app/./src/utilities/meetingDetectionSupportedApps.js","webpack://app/./src/utilities/isPublicPageApp.ts","webpack://app/./src/utilities/defaultCardStatuses.ts","webpack://app/./src/types/quickResourceType.ts","webpack://app/./src/utilities/sentry.ts","webpack://app/./src/mixins/recentlyViewed.js","webpack://app/./src/router/modules/authentication.js","webpack://app/./src/router/modules/workspaces.js","webpack://app/./src/mixins/gAnalytics.ts","webpack://app/./src/router/utilities/index.ts","webpack://app/./src/router/utilities/cardRouteHandler.ts","webpack://app/./src/router/utilities/checkRole.ts","webpack://app/./src/router/utilities/boardViewBeforeEnter.ts","webpack://app/./src/router/utilities/guestReaderCheck.ts","webpack://app/./src/router/index.ts","webpack://app/./src/mixins/viewRouteCheckMixin.js","webpack://app/./src/mixins/electronOpenInAppMixin.js","webpack://app/./src/mixins/iconTypeMixin.js","webpack://app/./src/mixins/cardStatuses.js","webpack://app/./src/types/suggestions.ts","webpack://app/./src/store/state.ts","webpack://app/./src/utilities/updateBoardPageTitleInProject.ts","webpack://app/./src/utilities/objectSet.js","webpack://app/./src/store/actions.ts","webpack://app/./src/store/mutations.ts","webpack://app/./src/store/getters.ts","webpack://app/./src/store/modules/boards/getDefaultBoardState.ts","webpack://app/./src/store/modules/boards/getters.ts","webpack://app/./src/utilities/jwtUtilities.js","webpack://app/./src/utilities/getQuickCardObjectName.ts","webpack://app/./src/utilities/childCardDraft.js","webpack://app/./src/store/modules/boards/mutations.ts","webpack://app/./src/utilities/getItemAndIndex.ts","webpack://app/./src/utilities/removeSuggestion.ts","webpack://app/./src/utilities/displayCardUtil.ts","webpack://app/./src/store/modules/boards/actions.ts","webpack://app/./src/store/modules/boards/index.ts","webpack://app/./src/store/modules/pages/getDefaultPageState.ts","webpack://app/./src/store/modules/pages/getters.ts","webpack://app/./src/store/modules/pages/mutations.ts","webpack://app/./src/store/modules/pages/actions.ts","webpack://app/./src/store/modules/pages/index.ts","webpack://app/./src/store/modules/onboarding/state.ts","webpack://app/./src/store/modules/onboarding/getters.ts","webpack://app/./src/store/modules/onboarding/mutations.ts","webpack://app/./src/store/modules/onboarding/actions.ts","webpack://app/./src/store/modules/onboarding/index.ts","webpack://app/./src/store/modules/editors/state.ts","webpack://app/./src/store/modules/editors/getters.ts","webpack://app/./src/store/modules/editors/mutations.ts","webpack://app/./src/store/modules/editors/actions.ts","webpack://app/./src/store/modules/editors/index.ts","webpack://app/./src/store/modules/attachmentPreview/attachmentPreviewState.ts","webpack://app/./src/store/modules/attachmentPreview/attachmentPreviewGetters.ts","webpack://app/./src/store/modules/attachmentPreview/attachmentPreviewMutations.ts","webpack://app/./src/store/modules/attachmentPreview/attachmentPreviewActions.ts","webpack://app/./src/store/modules/attachmentPreview/index.ts","webpack://app/./src/store/modules/index.ts","webpack://app/./src/store/index.ts","webpack://app/./src/mixins/isCardMixin.js","webpack://app/./src/utilities/rootStyles.js","webpack://app/./src/utilities/capitalizeFirstLetter.ts","webpack://app/./src/utilities/localDrafts.ts","webpack://app/./src/registerServiceWorker.js","webpack://app/./src/mixins/removeLoader.js","webpack://app/./src/mixins/isGuestRoleMixin.js","webpack://app/./src/utilities/vtippy.directive.ts","webpack://app/./src/utilities/autofocus.directive.ts","webpack://app/./src/utilities/draghover.directive.ts","webpack://app/./src/utilities/dragToScroll.directive.ts","webpack://app/./src/utilities/member-hover-directive.js","webpack://app/./src/utilities/posthog.js","webpack://app/./src/utilities/languages.js","webpack://app/./src/plugins/BreakpointsPlugin.js","webpack://app/./src/utilities/isFullyLoaded.js","webpack://app/./src/utilities/vuescrollOptions.js","webpack://app/./src/main.ts","webpack://app/./src/utilities/attachmentPreviewable.js","webpack://app/./src/mixins/inputDropdown.js","webpack://app/./src/utilities/isMobile.js","webpack://app/./src/utilities/getCalendarIntegration.ts"],"sourcesContent":["const generateDefaultMyWorkFilters = (userId, tabId) => {\n switch (tabId) {\n case 'assigned':\n return {\n include: {\n members: [userId],\n },\n exclude: {\n statuses: ['completed', 'cancelled'],\n },\n };\n case 'created':\n return {\n include: {\n creators: [userId],\n },\n exclude: {\n statuses: ['completed', 'cancelled'],\n },\n };\n default:\n return {\n include: {},\n exclude: {},\n };\n }\n};\n\nexport default generateDefaultMyWorkFilters;\n","export default function onPageLoad() {\n const loader = document.getElementById('loading-wrapper');\n if (!loader) return;\n const removeLoader = () => {\n loader.remove();\n };\n removeLoader();\n}\n","import constants from './constants';\n\nconst cdnBase = 'https://app.superthread.com/cdn-cgi/image';\n\nconst generateSrcUrl = (src, width, height, pageCover = false) => {\n if (\n src.includes(constants.UNSPLASH_BASE_URL) ||\n src.includes('superthread.com/public') ||\n src.includes('https://lh3.googleusercontent.com')\n ) {\n const encoded = encodeURI(src);\n return `${cdnBase}/q=90,h=${height},w=${width}${pageCover ? ',fit=cover' : ''}/${encoded}`;\n }\n return src;\n};\n\nexport default generateSrcUrl;\n","import { checkIsApple } from '@/utilities/isApple';\n\nexport default {\n computed: {\n isApple() {\n return checkIsApple();\n },\n },\n};\n","const icons = [\n 'headphones',\n 'activity',\n 'alert-circle',\n 'anchor',\n 'award',\n 'bell',\n 'box',\n 'briefcase',\n 'camera',\n 'check-circle',\n 'clock',\n 'coffee',\n 'compass',\n 'credit-card',\n 'disc',\n 'feather',\n 'folder',\n 'flag',\n 'gift',\n 'globe',\n 'hash',\n 'heart',\n 'hexagon',\n 'home',\n 'image-st',\n 'inbox',\n 'info',\n 'key',\n 'life-buoy',\n 'link-st',\n 'loader',\n 'lock',\n 'mail',\n 'map',\n 'map-pin',\n 'meh',\n 'message-circle',\n 'mic',\n 'moon',\n 'music',\n 'paperclip',\n 'rocket',\n 'shopping-bag',\n 'target',\n 'shield',\n 'thumbs-up',\n 'thumbs-down',\n 'tool',\n 'trending-up',\n 'truck',\n 'tv',\n 'umbrella',\n 'watch',\n 'video-st',\n 'zap',\n];\n\nconst colors = [\n '#99CDFF',\n '#FDA29B',\n '#FEC84B',\n '#6CE9A6',\n '#7CD4FD',\n '#A4BCFD',\n '#BDB4FE',\n '#FAA7E0',\n '#FEB273',\n '#475467',\n];\n\nconst appColors = {\n warning300: '#FEC84B',\n gray300: '#D0D5DD',\n gray600: '#475467',\n gray900: '#101828',\n error600: '#D92D20',\n};\n\nconst predefinedListNames = ['todo', 'to do', 'qa', 'q&a', 'doing', 'backlog', 'ideas', 'done'];\n\nexport { icons, colors, predefinedListNames, appColors };\n","import { browserStorageGetItem, browserStorageRemoveItem } from '@/utilities/browser-storage.util';\n\nexport default function getRouteAfterLogin(clearAfterGet = true) {\n // Get the redirect route after login from the browser storage\n const redirectRouteAfterLogin = browserStorageGetItem('redirectRouteAfterLogin') ?? {};\n // Remove the redirect route after login from the browser storage\n if (clearAfterGet) {\n browserStorageRemoveItem('redirectRouteAfterLogin');\n }\n return redirectRouteAfterLogin;\n}\n","export enum IconType {\n Icon = 'icon',\n Emoji = 'emoji',\n Image = 'image',\n}\n","import { computed } from 'vue';\nimport { TeamMemberRole } from '@superthread-com/api';\nimport { useStore } from 'vuex';\n\nexport default function useCurrentRole() {\n const store = useStore();\n\n const currentRole = computed(() => {\n return store.getters.getCurrentRole;\n });\n\n const isOwner = computed(() => {\n return currentRole.value === TeamMemberRole.Owner;\n });\n\n const isAdmin = computed(() => {\n return currentRole.value === TeamMemberRole.Admin;\n });\n\n const isMember = computed(() => {\n return currentRole.value === TeamMemberRole.Member;\n });\n\n const isGuest = computed(() => {\n return currentRole.value === TeamMemberRole.Guest;\n });\n\n const isGuestReader = computed(() => {\n return currentRole.value === TeamMemberRole.GuestReader;\n });\n\n /**\n * Is true if the user has one of the roles with elevated\n * permissions. Only use this for the \"lowest\" elevated role\n * (i.e. this could be true for admins and owners). Check for \"higher\"\n * elevated roles specifically (i.e. isOwner for owner-specific UI,\n * isElevated for UI that could be seen by any admin or owner).\n *\n * NOTE: In 'Free' mode this should return true for all users. Currently it does not.\n */\n const isElevated = computed(() => {\n return isOwner.value || isAdmin.value;\n });\n\n return {\n currentRole,\n isOwner,\n isAdmin,\n isMember,\n isGuest,\n isElevated,\n isGuestReader,\n };\n}\n","export default {\n computed: {\n iconsContext() {\n return require.context('../assets/icons/', false);\n },\n },\n methods: {\n iconPath(name, extension = 'svg') {\n if (!name) return '';\n try {\n return this.iconsContext(`./${name}.${extension}`);\n } catch (error) {\n return '';\n }\n },\n\n getCustomIconStyle(path, styleOptions = {}, useMask = true) {\n const url = `url(${path})`;\n return useMask\n ? {\n // Use mask styles if you want to override colors\n // require set with css: background-color, width and height\n maskImage: url,\n webkitMaskImage: url,\n maskSize: 'contain', // change with css if needed, use !important to apply\n webkitMaskSize: 'contain',\n maskRepeat: 'no-repeat',\n webkitMaskRepeat: 'no-repeat',\n ...styleOptions,\n }\n : {\n // Use background-image to preserve original colors\n backgroundImage: url,\n backgroundSize: 'contain',\n backgroundRepeat: 'no-repeat',\n ...styleOptions,\n };\n },\n },\n};\n","const imageExtensions = ['JPG', 'JPEG', 'PNG', 'SVG+XML', 'GIF', 'IMAGE'];\n\nconst isImage = (type: string) => type?.includes?.('image');\n\nconst isVideo = (type: string) => type?.includes?.('video');\n\nconst isPdf = (type: string) => type?.includes?.('pdf');\n\nexport { imageExtensions, isImage, isVideo, isPdf };\n","const isElectronApp = () => {\n return navigator?.userAgent.indexOf('Electron') >= 0;\n};\n\nexport default {\n computed: {\n isElectronApp() {\n return isElectronApp();\n },\n },\n};\n\nexport { isElectronApp };\n","import { ref, watch } from 'vue';\nimport useOnboardingActions from '@/utilities/composables/useOnboardingActions';\nimport getBranchName from '@/utilities/getBranchName';\nimport constants from '@/utilities/constants';\nimport { TeamMemberRole } from '@superthread-com/api';\nimport { Dispatch, useStore } from 'vuex';\nimport { useRoute } from 'vue-router';\nimport useTranslate from '@/utilities/composables/useTranslate';\nimport useIsElectronApp from '@/utilities/composables/useIsElectronApp';\nimport {\n QuickResourceType,\n QuickResourceActions,\n QuickResourceAction,\n} from '@/types/quickResourceType';\nimport useAudioTranscription from '@/utilities/composables/useAudioTranscription';\n\nconst { isElectronApp } = useIsElectronApp();\n\nconst isInput = () => {\n const { tagName, isContentEditable } = document.activeElement as HTMLElement;\n return (\n tagName.toLowerCase() === 'input' || tagName.toLowerCase() === 'textarea' || isContentEditable\n );\n};\n\nconst isElectronQuickNote = (routeName: string) => {\n return isElectronApp.value && routeName === constants.electronNotesRoute.name;\n};\n\nconst isGuestReader = (getters: any) => getters.getCurrentRole === TeamMemberRole.GuestReader;\n\nconst closeOtherPopups = (modalToOpen: QuickResourceType, getters: any, dispatch: Dispatch) => {\n if (modalToOpen !== QuickResourceType.QuickCard && getters.getQuickCardIsOn)\n dispatch(QuickResourceAction.setQuickCard, false);\n if (modalToOpen !== QuickResourceType.QuickPage && getters.getQuickPage)\n dispatch(QuickResourceAction.setQuickPage, false);\n if (modalToOpen !== QuickResourceType.QuickNote && getters.getQuickNote)\n dispatch(QuickResourceAction.setQuickNote, false);\n if (getters.getDeletePopupId) dispatch('deletePopupId', '');\n if (getters.showSearchModal) dispatch('toggleSearchModal', false);\n if (getters.getEmojiPickerDisplayed) dispatch('setEmojiPickerDisplayed', '');\n};\n\nconst openQuickResource = (resourceType: QuickResourceType, getters: any, dispatch: Dispatch) => {\n closeOtherPopups(resourceType, getters, dispatch);\n dispatch(QuickResourceActions[resourceType], true);\n};\n\nconst quickCardShortcutHandlerFn = (\n event: KeyboardEvent,\n completeOnboardingActions: Function,\n getters: any,\n dispatch: any,\n routeName: string\n) => {\n if (isGuestReader(getters)) return false;\n if (\n !isInput() &&\n (event.code === 'KeyC' || event.key === 'C' || event.key === 'c') &&\n !isElectronQuickNote(routeName)\n ) {\n openQuickResource(QuickResourceType.QuickCard, getters, dispatch);\n return true;\n }\n return false;\n};\n\nconst quickPageShortcutHandlerFn = (\n event: KeyboardEvent,\n completeOnboardingActions: Function,\n getters: any,\n dispatch: any,\n routeName: string\n) => {\n if (isGuestReader(getters)) return false;\n if (\n !isInput() &&\n (event.code === 'KeyP' || event.key === 'P' || event.key === 'p') &&\n !isElectronQuickNote(routeName)\n ) {\n openQuickResource(QuickResourceType.QuickPage, getters, dispatch);\n return true;\n }\n return false;\n};\n\nconst quickNoteShortcutHandlerFn = (\n event: KeyboardEvent,\n completeOnboardingActions: Function,\n getters: any,\n dispatch: any,\n routeName: string,\n hasPermissions: boolean\n) => {\n if (isGuestReader(getters)) return false;\n if (\n !isInput() &&\n (event.code === 'KeyN' || event.key === 'N' || event.key === 'n') &&\n hasPermissions &&\n !isElectronQuickNote(routeName)\n ) {\n openQuickResource(QuickResourceType.QuickNote, getters, dispatch);\n return true;\n }\n return false;\n};\n\nexport default function useShortcutHandlers() {\n const route = useRoute();\n const { translate } = useTranslate();\n const { completeOnboardingActions } = useOnboardingActions() as any;\n\n const quickCardShortcutHandler = ref<(event: KeyboardEvent) => void>(() => {});\n const quickPageShortcutHandler = ref<(event: KeyboardEvent) => void>(() => {});\n const quickNoteShortcutHandler = ref<(event: KeyboardEvent) => void>(() => {});\n const copyGitBranchNameShortcutHandler = ref<(cardId: string | number) => void>(() => {});\n\n const { hasAllPermissions } = useAudioTranscription();\n\n watch(\n () => useStore(),\n (store) => {\n if (!store) return;\n\n quickCardShortcutHandler.value = (event: KeyboardEvent) => {\n return quickCardShortcutHandlerFn(\n event,\n completeOnboardingActions,\n store.getters,\n store.dispatch,\n String(route.name)\n );\n };\n\n quickPageShortcutHandler.value = (event: KeyboardEvent) => {\n return quickPageShortcutHandlerFn(\n event,\n completeOnboardingActions,\n store.getters,\n store.dispatch,\n String(route.name)\n );\n };\n\n quickNoteShortcutHandler.value = (event: KeyboardEvent) => {\n return quickNoteShortcutHandlerFn(\n event,\n completeOnboardingActions,\n store.getters,\n store.dispatch,\n String(route.name),\n hasAllPermissions.value\n );\n };\n\n copyGitBranchNameShortcutHandler.value = (cardId: string | number) => {\n const card = store.getters.getCardById(cardId);\n const branchName = getBranchName(cardId, card.title);\n navigator.clipboard?.writeText?.(branchName);\n\n store.dispatch('addUiNotification', {\n message: translate('branchCopiedToClipboard'),\n icon: 'git-pull-request',\n duration: 4000,\n });\n };\n },\n { immediate: true }\n );\n\n return {\n copyGitBranchNameShortcutHandler,\n quickCardShortcutHandler,\n quickPageShortcutHandler,\n quickNoteShortcutHandler,\n isInput,\n openQuickResource,\n };\n}\n","export const lastVisitedNoteIdKey = 'last-visited-note-id';\nexport const quickPageNoteKey = 'quick-page-note-temp-value';\nexport const notesSidebarWidthKey = 'notes-sidebar-width';\nexport const notesCalendarIntegrationReminderKey = 'notes-calendar-integration';\nexport const notesCalendarUsedEventIdsKey = 'notes-calendar-used-event-ids';\nexport const noteTranscriptPersistKey = 'note-transcript-persist';\n\nexport const noteAiTitlePrompt =\n 'Generate a concise title from the following notes and transcript. The title should be 5 words or less that captures the essence of the content.';\n\nexport enum NoteContentType {\n UserNotes = 'user_notes',\n AiNotes = 'ai_notes',\n Transcript = 'transcript',\n}\n\nexport enum NoteTemplate {\n AutoEnhanced = 'auto_enhanced',\n CustomerCall = 'customer_call',\n RecurringMeeting = 'recurring_meeting',\n}\n","export default {\n computed: {\n draggedEntity() {\n if (!this.$store) return {};\n return this.$store.getters.draggedEntity;\n },\n draggingIsOn() {\n return Object.keys(this.draggedEntity).length > 0;\n },\n },\n};\n","import { getCurrentInstance, computed, Ref } from 'vue';\nimport useSetAndOpenProject from '@/utilities/composables/useSetAndOpenProject';\nimport { View, Project, Card, Page, Board, List } from '@superthread-com/api';\nimport { IEpic } from '@/types/epics';\nimport { ResourceType } from '@/types/resources';\nimport EventBus from '@/utilities/eventBus';\n\nexport default function useDeleteResource(id: Ref, type: Ref) {\n const _this = getCurrentInstance()?.proxy as any;\n if (!_this) return;\n\n const { setAndOpenProject, setAndOpenAdjacentProject } = useSetAndOpenProject() as any;\n\n let frozenTitle = '' as string;\n\n // delete functions\n\n const deleteProject = async () => {\n const currentProjId = _this.$store.getters.getCurrentProjectId;\n const deletingCurrentProject = currentProjId === id.value;\n\n if (deletingCurrentProject) {\n await setAndOpenAdjacentProject(id.value);\n }\n\n return _this.$store.dispatch('deleteProject', id.value).catch((err: Error) => {\n if (deletingCurrentProject) {\n setAndOpenProject(id.value);\n }\n throw err;\n });\n };\n\n const deleteCard = async () => {\n const result = await _this.$store.dispatch('deleteCard', {\n cardId: id.value,\n cardType: type.value,\n });\n\n if (_this.$store.getters.getIsCardDisplayed(id.value)) {\n EventBus.$emit('closeCard', {\n cardId: id.value,\n });\n }\n return result;\n };\n\n const deleteView = async () => {\n // when on view route and deleting the view, redirect to views route\n // possibly navigate back if it fails\n const deletingCurrentView = _this.$route.name === _this.$constants.routeNames.view;\n if (deletingCurrentView) {\n _this.$router.push({\n name: _this.$constants.routeNames.views,\n params: { dontFetch: true }, // dont fetch views on page load to avoid getting deleted view\n });\n }\n\n return _this.$store\n .dispatch('deleteView', {\n viewId: id.value,\n shared: (resource.value as View).shared,\n })\n .catch((err: Error) => {\n if (deletingCurrentView) {\n _this.$router.push({\n name: _this.$constants.routeNames.view,\n params: { viewId: id.value },\n });\n }\n throw err;\n });\n };\n\n const deletePage = async () => {\n const pageResource = resource.value as Page;\n const pageFromTree = _this.$store.getters.getProjectPagesTree(pageResource.project_id)[\n id.value\n ];\n\n const result = await _this.$store.dispatch('deletePage', {\n pageId: id.value,\n projectId: pageResource.project_id,\n });\n\n const allChildren: any[] = [];\n\n // collect all levels of child pages and remove them from recently viewed\n const collectAllChildren = (page: any) => {\n if (page.children) {\n page.children.forEach((childId: string) => {\n allChildren.push(childId);\n _this.$store.dispatch('removeFromElectronRecentlyViewed', {\n currentlyViewed: { id: childId, type: ResourceType.Page },\n teamId: _this.$store.getters.getTeamID,\n });\n const childPage = _this.$store.getters.getProjectPagesTree(pageResource.project_id)[\n childId\n ];\n if (childPage) {\n collectAllChildren(childPage);\n }\n });\n }\n };\n\n collectAllChildren(pageFromTree);\n\n const isChildPageOpened = allChildren.includes(currentPageId.value);\n\n if (openedPage.value.id === id.value || isChildPageOpened) {\n _this.$router.push(`/${teamSlug.value}/space-${currentProjectId.value}/boards`);\n }\n return result;\n };\n\n const deleteBoard = async () => {\n const result = await _this.$store.dispatch('deleteBoard', {\n boardId: id.value,\n projectId: (resource.value as Board).project_id,\n });\n\n if (currentBoardId === id.value) {\n _this.$router.push(`/${teamSlug.value}/space-${currentProjectId.value}/boards`);\n }\n\n return result;\n };\n\n const deleteList = () => {\n return _this.$store.dispatch('deleteList', {\n listId: id.value,\n });\n };\n\n const deleteResource = (): Promise => {\n let deleteFn: Function;\n switch (type.value) {\n case ResourceType.Project:\n deleteFn = deleteProject;\n break;\n case ResourceType.View:\n deleteFn = deleteView;\n break;\n case ResourceType.Epic:\n case ResourceType.Card:\n deleteFn = deleteCard;\n break;\n case ResourceType.Board:\n deleteFn = deleteBoard;\n break;\n case ResourceType.Page:\n deleteFn = deletePage;\n break;\n case ResourceType.List:\n deleteFn = deleteList;\n break;\n default:\n deleteFn = () => Promise.reject(new Error('Invalid resource type'));\n }\n\n // we need to store the title before the resource gets deleted locally\n frozenTitle = resourceTitle.value;\n\n return deleteFn();\n };\n\n // resource getters\n\n const getProject = computed((): Project => {\n return _this.$store.getters.getProjectById(id.value);\n });\n\n const getView = computed((): View => {\n return (\n [..._this.$store.getters.getPrivateViews, ..._this.$store.getters.getPublicViews].find(\n (v: View) => v.id === id.value\n ) ?? {}\n );\n });\n\n const getCard = computed((): IEpic => {\n return _this.$store.getters.getCards[id.value] ?? {};\n });\n\n const getPage = computed((): Page => {\n return _this.$store.getters.getPageById(id.value) ?? {};\n });\n\n const getBoard = computed((): Board => {\n return _this.$store.getters.getFlatBoards[id.value] ?? {};\n });\n\n const getList = computed((): List => {\n return _this.$store.getters.lists[id.value] ?? {};\n });\n\n const resource = computed((): Project | View | IEpic | Card | Page | Board | List => {\n let res;\n\n switch (type.value) {\n case ResourceType.Project:\n res = getProject.value;\n break;\n case ResourceType.View:\n res = getView.value;\n break;\n case ResourceType.Epic:\n case ResourceType.Card:\n res = getCard.value;\n break;\n case ResourceType.Board:\n res = getBoard.value;\n break;\n case ResourceType.Page:\n res = getPage.value;\n break;\n case ResourceType.List:\n res = getList.value;\n break;\n default:\n res = {};\n }\n\n return res;\n });\n const resourceTitle = computed((): string => {\n let resTitle;\n if ('title' in resource.value) {\n resTitle = resource.value.title;\n } else if ('name' in resource.value) {\n resTitle = resource.value.name;\n }\n\n if (resTitle === '' && ResourceType.Page) return 'Untitled page';\n\n return resTitle || '';\n });\n\n // helpers\n\n const teamSlug = computed(() => _this.$store.getters.getTeamSlug);\n const currentProjectId = computed(() => _this.$store.getters.getCurrentProjectId);\n const currentBoardId = _this.$store.getters.currentBoardId;\n const currentPageId = computed(() => _this.$store.getters.getCurrentPageID);\n const openedPage = computed(() => _this.$store.getters.getPage);\n\n return {\n resourceTitle: computed(() => resourceTitle.value || frozenTitle),\n deleteResource,\n };\n}\n","import { getCurrentInstance } from 'vue';\nimport { Store } from 'vuex';\n\nexport default function useAddCardInGroupByOrder(store?: Store) {\n const _this = getCurrentInstance();\n const proxy: any = store ?? _this?.proxy?.$store;\n\n const dispatchCardAction = (\n action: string,\n card: any,\n items: any[],\n groupBy: string,\n defaultId: string,\n idKey: string | number\n ) => {\n if (items.length > 0) {\n for (const item of items) {\n proxy.dispatch(action, {\n boardId: card.board_id,\n epicId: card.epic?.id,\n cardId: card.id,\n listId: idKey ? item[idKey] : item,\n groupBy,\n });\n }\n } else {\n proxy.dispatch(action, {\n boardId: card.board_id,\n epicId: card.epic?.id,\n cardId: card.id,\n listId: defaultId,\n groupBy,\n });\n }\n };\n\n const addCardInGroupByOrder = (card: any, tagsToAdd = card.tags || []) => {\n dispatchCardAction(\n 'addCardToGroupByList',\n card,\n card.members,\n 'assignee',\n 'unassigned',\n 'user_id'\n );\n dispatchCardAction('addCardToGroupByList', card, tagsToAdd, 'tag', 'notags', 'id');\n dispatchCardAction(\n 'addCardToGroupByList',\n card,\n [card?.epic?.id || ''],\n 'epic',\n 'noproject',\n 'id'\n );\n dispatchCardAction('addCardToGroupByList', card, [card.priority || 0], 'priority', '', 0);\n dispatchCardAction(\n 'addCardToGroupByList',\n card,\n [card.status || 'backlog'],\n 'statusType',\n '',\n 0\n );\n\n if (card?.epic?.id) {\n dispatchCardAction('addCardToGroupByList', card, [card.project_id], 'space', '', 0);\n }\n };\n\n const removeCardFromGroupByOrder = (card: any, tagsToAdd = card.tags || []) => {\n dispatchCardAction(\n 'removeCardFromGroupByList',\n card,\n card.members,\n 'assignee',\n 'unassigned',\n 'user_id'\n );\n dispatchCardAction('removeCardFromGroupByList', card, tagsToAdd, 'tag', 'notags', 'id');\n dispatchCardAction(\n 'removeCardFromGroupByList',\n card,\n [card?.epic?.id || ''],\n 'epic',\n 'noproject',\n 'id'\n );\n\n dispatchCardAction('removeCardFromGroupByList', card, [card.priority || 0], 'priority', '', 0);\n dispatchCardAction(\n 'addCardToGroupByList',\n card,\n [card.status || 'backlog'],\n 'statusType',\n '',\n 0\n );\n };\n\n return {\n addCardInGroupByOrder,\n removeCardFromGroupByOrder,\n };\n}\n","import { useTranslation } from 'i18next-vue';\nimport { isPublicPageApp } from '@/utilities/isPublicPageApp';\n\nexport default function useTranslate() {\n let translate: TranslateFn = (key) => {\n return key;\n };\n if (!isPublicPageApp()) {\n const { t } = useTranslation();\n if (t) {\n translate = t as TranslateFn;\n }\n }\n return {\n translate,\n };\n}\n\nexport type TranslateFn = (key: string, interpolations?: Record) => string;\n","import { getCurrentInstance } from 'vue';\n\nexport default function useSetAndOpenProject() {\n const _this = getCurrentInstance()?.proxy as any;\n if (!_this) return;\n\n /**\n * Gets the adjecent project (prioritizes previous one) of the project passed as param\n * then sets it as current project and navigates to it\n */\n const setAndOpenAdjacentProject = (\n projectId: string = _this.$store.getters.getCurrentProjectId\n ) => {\n const newProjectId = _this.$store.getters.getAdjacentProjectId(projectId);\n return setAndOpenProject(newProjectId);\n };\n\n /**\n * Sets the project passed as current one and navigates to it or fall back to manage spaces\n */\n const setAndOpenProject = (projectId: string) => {\n _this.$store.dispatch('setCurrentProjectId', projectId);\n\n if (!projectId) {\n return openManageSpaces();\n } else {\n return openProject(projectId);\n }\n };\n\n const openManageSpaces = () => {\n const isSettings = _this.$route.path.indexOf('/settings/') > -1;\n const toRouteName = isSettings\n ? _this.$constants.settingsManageSpacesRouteName\n : _this.$constants.manageSpacesRouteName;\n\n if (_this.$route.name !== toRouteName) {\n return _this.$router.push({ name: toRouteName });\n }\n return Promise.resolve();\n };\n\n const openProject = (projectId: string = '') => {\n const teamSlug = _this.$store.getters.getTeamSlug;\n const tabName = 'boards';\n const projectPath = `${_this.$constants.projectSlug}-${projectId}`;\n const toRoutePath = `/${teamSlug}/${projectPath}/${tabName}`;\n\n if (_this.$route.path !== toRoutePath) {\n return _this.$router.push(toRoutePath);\n }\n return Promise.resolve();\n };\n\n return {\n setAndOpenAdjacentProject,\n setAndOpenProject,\n };\n}\n","import { useStore } from 'vuex';\nimport constants from '@/utilities/constants';\nimport { setRootStyle, convertStyleToNumber, getDefaultSidebarWidth } from '@/utilities/rootStyles';\nimport EventBus from '@/utilities/eventBus';\nimport { browserStorageSetItem, browserStorageGetItem } from '@/utilities/browser-storage.util';\n\nexport default function useToggleSidebar() {\n const store = useStore();\n\n const closeSidebar = (breakpoint?: number | null) => {\n if (breakpoint && window.screen.width >= breakpoint) return;\n\n store.dispatch('setSidebarExpanded', false);\n\n setRootStyle(constants.sidebarWidthRoot, '0px');\n browserStorageSetItem('sidebarWidth', 0);\n\n EventBus.$emit('toggledSidebar', false);\n };\n\n const expandSidebar = () => {\n store.dispatch('setSidebarExpanded', true);\n\n const width =\n browserStorageGetItem('sidebarExpandWidth') ||\n convertStyleToNumber(getDefaultSidebarWidth());\n setRootStyle(constants.sidebarWidthRoot, `${width}px`);\n browserStorageSetItem('sidebarWidth', width);\n\n EventBus.$emit('toggledSidebar', true);\n };\n\n return {\n closeSidebar,\n expandSidebar,\n };\n}\n","import { ref, Ref, computed, nextTick } from 'vue';\nimport { INoteTranscript, IncomingTranscript, TranscriptionState } from '@/types/transcript';\nimport { nanoid } from 'nanoid';\nimport constants from '@/utilities/constants';\nimport { useStore } from 'vuex';\nimport { NoteTranscriptSource } from '@superthread-com/api';\nimport { browserStorageSetItem } from '@/utilities/browser-storage.util';\nimport { noteTranscriptPersistKey } from '@/types/notes';\nimport useTranslate from '@/utilities/composables/useTranslate';\nimport useIsElectronApp from '@/utilities/composables/useIsElectronApp';\n\nexport default function useAudioTranscription(noteId: Ref = ref('newnote')) {\n const store = useStore();\n const { translate } = useTranslate();\n\n //@ts-ignore\n const electronAPI = window.electron;\n\n const { isElectronApp } = useIsElectronApp();\n\n const transcriptionState = computed((): TranscriptionState => {\n return store.getters.getTranscriptionState;\n });\n\n // recording control functions\n const startRecording = async (persistedNoteId: string = '') => {\n // note audio transcription is only available for teams that have `nat` feature flag enabled (paid plan and custom plans)\n if (!hasNoteTranscriptionFeatureFlag.value) return;\n\n // if we start recording on new note, create it before transcribing\n const newNoteId =\n persistedNoteId || (noteId.value === constants.newNote ? await createNote() : noteId.value);\n\n const transcriptionKeywords = store.getters.getUser.transcription_keywords || [];\n const memberKeywords = Object.values(store.getters.getTeamMembers || {}).map(\n (m: any) => m.first_name || m.display_name\n );\n electronAPI?.send('deepgram-keywords-channel', [...transcriptionKeywords, ...memberKeywords]);\n electronAPI?.send(\n 'deepgram-language-channel',\n store.getters.getUserSettings.transcription_language || 'en'\n );\n\n nextTick(() => {\n electronAPI?.send('recording-channel', 'start');\n store.dispatch('setTranscriptionState', {\n recording: 'pending',\n noteId: newNoteId,\n alreadyRecorded: transcriptionState.value.alreadyRecorded.add(newNoteId),\n });\n });\n\n setupChannels();\n };\n\n const alreadyRecordedForCurrentNote = computed(() => {\n return transcriptionState.value.alreadyRecorded.has(noteId.value);\n });\n\n const saveUnsavedTranscripts = async (noteId: string) => {\n const unsavedTranscripts =\n store.getters.getNotes[noteId]?.transcripts.filter((t: INoteTranscript) => t.ongoing) || [];\n\n if (unsavedTranscripts.length > 0) {\n store\n .dispatch('createTranscript', {\n noteId,\n transcripts: unsavedTranscripts.map((t: INoteTranscript) => ({\n source: t.source,\n content: !t.ongoing ? t.content : `${t.content || ''} ${t.interim_content}`,\n })),\n })\n .then(({ data }: any) => {\n store.dispatch('localSetNoteTranscripts', {\n noteId,\n transcripts: data.note.transcripts,\n });\n });\n }\n };\n\n const startRecordingForAnotherNote = async (newNoteForRecording: string) => {\n // note audio transcription is only available for teams that have `nat` feature flag enabled (paid plan and custom plans)\n if (!hasNoteTranscriptionFeatureFlag.value) return;\n\n saveUnsavedTranscripts(currentTranscriptionNoteId.value);\n const newNoteId =\n newNoteForRecording === constants.newNote ? await createNote() : newNoteForRecording;\n\n store.dispatch('setTranscriptionState', {\n noteId: newNoteId,\n alreadyRecorded: transcriptionState.value.alreadyRecorded.add(newNoteId),\n });\n };\n\n const stopRecording = (persistNoteRecording = false) => {\n if (persistNoteRecording && transcriptionState.value.recording === 'started') {\n browserStorageSetItem(noteTranscriptPersistKey, currentTranscriptionNoteId.value);\n }\n\n saveUnsavedTranscripts(currentTranscriptionNoteId.value);\n electronAPI?.send('recording-channel', 'stop');\n store.dispatch('setTranscriptionState', { recording: 'stopped', noteId: '' });\n removeChannels();\n };\n\n const currentTranscriptionNoteId = computed(() => {\n return transcriptionState.value.noteId;\n });\n\n const currentTranscriptionNoteTitle = computed(() => {\n return (\n store.getters.getNotes[currentTranscriptionNoteId.value]?.title || translate('untitledNote')\n );\n });\n\n const isRecordingPending = computed((): boolean => {\n return !!currentTranscriptionNoteId.value && transcriptionState.value.recording === 'pending';\n });\n\n const isRecordingStarted = computed((): boolean => {\n return !!currentTranscriptionNoteId.value && transcriptionState.value.recording === 'started';\n });\n\n const isRecordingStopped = computed((): boolean => {\n return transcriptionState.value.recording === 'stopped';\n });\n\n // create a new note\n const createNote = async () => {\n return store.dispatch('createNewNote', {\n title: '',\n });\n };\n\n const transcripts = computed((): INoteTranscript[] => {\n return store.getters.getNotes[noteId.value]?.transcripts || [];\n });\n\n const hasTranscripts = computed((): boolean => {\n return Boolean(transcripts.value.length);\n });\n\n const isTranscriptDone = (t: IncomingTranscript) => {\n return t.is_final && /^[^]*[.!?]\\s*$/.test(t.content.trim());\n };\n\n const createInterimTranscript = (t: IncomingTranscript) => {\n store.dispatch('localCreateTranscript', {\n noteId: currentTranscriptionNoteId.value,\n transcript: {\n local_id: nanoid(6),\n source: t.source,\n ongoing: true,\n content: '',\n interim_content: t.content,\n },\n });\n };\n\n const createFinalTranscript = (t: INoteTranscript) => {\n store.dispatch('createTranscript', {\n noteId: currentTranscriptionNoteId.value,\n transcripts: [\n {\n source: t.source,\n content: t.content || '',\n },\n ],\n });\n };\n\n const processTranscript = async (t: IncomingTranscript) => {\n if (!isRecordingStarted.value || !t.content) return;\n\n const notes = store.getters.getNotes;\n const note = notes[currentTranscriptionNoteId.value];\n if (!note) return;\n\n const { transcripts = [] } = note;\n\n // find last transcription of the same source\n const lastTranscriptIndex = transcripts\n .slice()\n .reverse()\n .findIndex((ti: any) => ti.source === t.source);\n\n const lastTranscript = transcripts[transcripts.length - lastTranscriptIndex - 1];\n\n // transcript is considered done if its content is final version of interim result and if it is a finished sentence\n const newTranscriptIsDone = isTranscriptDone(t);\n\n // if this is the first transcript of the source or if last transcript is done, create a new one\n if (lastTranscriptIndex == -1 || !lastTranscript.ongoing) {\n if (newTranscriptIsDone) {\n createFinalTranscript(t);\n } else {\n createInterimTranscript(t);\n }\n\n return;\n }\n\n // if this is a final version of the last transcript, update the content\n if (t.is_final) {\n lastTranscript.content = `${lastTranscript.content} ${t.content}`;\n lastTranscript.interim_content = '';\n } else {\n // if interim result is not done generating, update interim content\n lastTranscript.interim_content = t.content;\n }\n\n lastTranscript.ongoing = !newTranscriptIsDone;\n\n // update the transcript locally\n store.dispatch('localUpdateTranscript', {\n noteId: currentTranscriptionNoteId.value,\n transcript: {\n //@ts-ignore\n local_id: lastTranscript.local_id,\n content: lastTranscript.content,\n interim_content: lastTranscript.interim_content,\n ongoing: !newTranscriptIsDone,\n },\n });\n\n // if transcript is done, save it on the BE\n if (newTranscriptIsDone) {\n createFinalTranscript({ source: lastTranscript.source, content: lastTranscript.content });\n }\n };\n\n // sets up the transcription channel to listen to incoming transcriptions\n const setupChannels = () => {\n electronAPI.on('transcription-channel', (_: any, t: IncomingTranscript) => {\n processTranscript(t);\n });\n\n electronAPI.on('recording-channel', (_: any, recording: string) => {\n store.dispatch('setTranscriptionState', {\n ...(recording === 'stopped' && { noteId: '' }),\n recording,\n });\n\n // TOOD(senad): add a logic to stop recording when recieving 'stopped' event\n });\n };\n\n const removeChannels = () => {\n electronAPI.removeAllListeners('transcription-channel');\n electronAPI.removeAllListeners('recording-channel');\n };\n\n // setups up a listener to receive audio permissions\n const audioPermissionsCheck = () => {\n electronAPI.on('permissions-channel', (_: any, perm: string) => {\n const { source, permission_status } = JSON.parse(perm);\n //@ts-ignore\n store.dispatch('setTranscriptionState', {\n permissions: {\n ...transcriptionState.value.permissions,\n [source]: permission_status,\n },\n });\n });\n\n electronAPI.send('permissions-channel', 'get-microphone');\n electronAPI.send('permissions-channel', 'get-system');\n };\n\n const hasSystemAudioPermission = computed(() => {\n return transcriptionState.value.permissions.system === 'authorized';\n });\n\n const hasMicrophonePermission = computed(() => {\n return transcriptionState.value.permissions.microphone === 'authorized';\n });\n\n const hasAllPermissions = computed(() => {\n return isElectronApp.value\n ? hasSystemAudioPermission.value && hasMicrophonePermission.value\n : true;\n });\n\n const isMicrophonePending = computed(() => {\n return transcriptionState.value.permissions.microphone === 'pending';\n });\n\n const isSystemAudioPending = computed(() => {\n return transcriptionState.value.permissions.system === 'pending';\n });\n\n const isMicrophoneAuthorized = computed(() => {\n return transcriptionState.value.permissions.microphone === 'authorized';\n });\n\n const isSystemAudioAuthorized = computed(() => {\n return transcriptionState.value.permissions.system === 'authorized';\n });\n\n const requestPermission = (source: 'microphone' | 'system', callback = () => {}) => {\n const permissionStatus = transcriptionState.value.permissions[source];\n\n switch (permissionStatus) {\n case 'authorized':\n break;\n case 'denied':\n callback();\n break;\n default:\n electronAPI.send('permissions-channel', `request-${source}`);\n break;\n }\n };\n\n const getPermission = (source: 'microphone' | 'system') => {\n electronAPI.send('permissions-channel', `get-${source}`);\n };\n\n const getTranscriptContents = (separator: string = '\\n', noFormatting = true) => {\n if (noFormatting)\n return transcripts.value.map((t: INoteTranscript) => t.content).join(separator);\n\n return transcripts.value.reduce((acc: string, t: INoteTranscript, index: number) => {\n const sourceFrom = t.source === NoteTranscriptSource.Author ? 'Me' : 'Them';\n\n if (index === 0) return `${sourceFrom}: ${t.content}`;\n\n const prevTranscript = transcripts.value[index - 1];\n return acc + (prevTranscript.source !== t.source ? `\\n${sourceFrom}: ` : ' ') + t.content;\n }, '');\n };\n\n const hasNoteTranscriptionFeatureFlag = computed(() => {\n return store.getters.getTeamFeatureEnabled(constants.featureFlagIds.noteAudioTranscription);\n });\n\n return {\n startRecording,\n startRecordingForAnotherNote,\n stopRecording,\n isRecordingStopped,\n isRecordingPending,\n isRecordingStarted,\n alreadyRecordedForCurrentNote,\n\n setupChannels,\n removeChannels,\n\n transcriptionState,\n transcripts,\n hasTranscripts,\n processTranscript,\n isTranscriptDone,\n\n audioPermissionsCheck,\n hasMicrophonePermission,\n hasSystemAudioPermission,\n hasAllPermissions,\n requestPermission,\n getPermission,\n\n isMicrophonePending,\n isSystemAudioPending,\n isMicrophoneAuthorized,\n isSystemAudioAuthorized,\n\n createFinalTranscript,\n createInterimTranscript,\n createNote,\n\n getTranscriptContents,\n currentTranscriptionNoteId,\n currentTranscriptionNoteTitle,\n\n hasNoteTranscriptionFeatureFlag,\n };\n}\n","import i18next from 'i18next';\n\nconst translate = (key: string, interpolation?: any): string =>\n i18next.t(key, interpolation) as string;\n\nexport default translate;\n","export enum ResourceType {\n Team = 'team',\n Board = 'board',\n List = 'list',\n Card = 'card',\n Page = 'page',\n Project = 'project',\n Space = 'space',\n ChildPage = 'child-page',\n Comment = 'comment',\n CardTemplate = 'cardTemplate',\n PageTemplate = 'pageTemplate',\n NoteTemplate = 'noteTemplate',\n Epic = 'epic',\n View = 'view',\n EpicsBoard = 'epicsBoard',\n InEpicBoard = 'inEpicBoard',\n QuickChildCard = 'quickChildCard',\n Sprints = 'sprints',\n Sprint = 'sprint',\n SprintCard = 'sprintcard',\n Subscription = 'subscription',\n CardComment = 'card-comment',\n PageComment = 'page-comment',\n Member = 'member',\n Note = 'note',\n Agent = 'agent',\n AgentPromptIteration = 'agent_prompt_iteration',\n GoogleCalendarEvent = 'google_calendar_user_notes_events',\n}\n\nexport enum ResourceLoadedKey {\n Epics = 'epics',\n TeamMembers = 'teamMembers',\n SpaceTags = 'spaceTags',\n}\n","export default {\n computed: {\n isSafariCheck() {\n const isSafari = /^((?!chrome|android).)*safari/i.test(navigator?.userAgent);\n return isSafari;\n },\n },\n};\n","const getListById = ({ listId, storeGetters }) => {\n if (storeGetters.lists[listId]) {\n return storeGetters.lists[listId];\n }\n\n return {};\n};\n\nconst handleAddEventBoardView = ({\n newIndex,\n oldIndex,\n cardId,\n listId,\n originalListId,\n destinationBoardId,\n originalBoardId,\n storeGetters,\n storeDispatch,\n cardModel = null,\n order,\n}) => {\n if (!cardId) return {};\n\n const { getListCards, getCards } = storeGetters;\n const destinationBoard = storeGetters.getFlatBoards[destinationBoardId];\n const originalBoard = storeGetters.getFlatBoards[originalBoardId];\n const isDestinationSprintBoard = destinationBoardId.includes('s');\n\n if (!getCards[cardId]) {\n storeDispatch('addCardToCards', { card: cardModel });\n }\n\n const newListObject = getListById({ listId, storeGetters });\n const { title, color, icon, behavior } = newListObject;\n\n if (\n handleListUpdate({\n cardId,\n newIndex,\n listId,\n originalListId,\n getListCards,\n storeDispatch,\n })\n )\n return null;\n\n updateCardFields({\n cardId,\n newListObject,\n listId,\n isDestinationSprintBoard,\n title,\n color,\n icon,\n behavior,\n storeDispatch,\n });\n if (originalBoardId !== destinationBoardId) {\n updateBoardFields({\n cardId,\n isDestinationSprintBoard,\n destinationBoard,\n destinationBoardId,\n storeDispatch,\n });\n }\n\n if (\n destinationBoard &&\n originalBoard &&\n originalBoard?.project_id !== destinationBoard?.project_id\n ) {\n storeDispatch('localUpdateCardField', {\n cardId,\n fieldName: 'project_id',\n fieldValue: destinationBoard.project_id,\n });\n const card = getCards[cardId];\n storeDispatch('removeCardFromGroupByList', {\n boardId: '',\n epicId: card.epic?.id,\n cardId,\n listId: originalBoard.project_id,\n groupBy: 'space',\n });\n storeDispatch('addCardToGroupByList', {\n boardId: '',\n epicId: card.epic?.id,\n cardId,\n listId: destinationBoard.project_id,\n groupBy: 'space',\n });\n }\n\n return null;\n};\n\nconst handleListUpdate = ({\n cardId,\n newIndex,\n listId,\n originalListId,\n getListCards,\n storeDispatch,\n}) => {\n const originalList = [...(getListCards[originalListId] || [])];\n const newList = [...(getListCards[listId] || [])];\n\n if (newList[newIndex] === cardId) {\n return true;\n }\n\n if (originalList) {\n const originalIndex = originalList.indexOf(cardId);\n originalList.splice(originalIndex, 1);\n storeDispatch('setSingleListInListCards', {\n listId: originalListId,\n value: originalList,\n });\n\n if (originalListId === listId) {\n newList.splice(originalIndex, 1);\n }\n }\n\n if (newList) {\n newList.splice(newIndex, 0, cardId);\n storeDispatch('setSingleListInListCards', {\n listId,\n value: newList,\n });\n }\n\n return false;\n};\n\nconst updateCardFields = ({\n cardId,\n newListObject,\n listId,\n isDestinationSprintBoard,\n title,\n color,\n icon,\n behavior,\n storeDispatch,\n}) => {\n storeDispatch('localUpdateCardField', {\n cardId,\n fieldName: 'list_id',\n fieldValue: isDestinationSprintBoard ? newListObject.orginalId : listId,\n });\n\n storeDispatch('localUpdateCardField', {\n cardId,\n fieldName: 'list_title',\n fieldValue: title,\n });\n\n storeDispatch('localUpdateCardField', {\n cardId,\n fieldName: 'color',\n fieldValue: color,\n });\n\n storeDispatch('localUpdateCardField', {\n cardId,\n fieldName: 'list_color',\n fieldValue: color,\n });\n\n storeDispatch('localUpdateCardField', {\n cardId,\n fieldName: 'status',\n fieldValue: behavior,\n });\n};\n\nconst updateBoardFields = ({\n cardId,\n isDestinationSprintBoard,\n destinationBoard,\n destinationBoardId,\n storeDispatch,\n}) => {\n storeDispatch('localUpdateCardField', {\n cardId,\n fieldName: isDestinationSprintBoard ? 'sprint_id' : 'board_id',\n fieldValue: isDestinationSprintBoard ? destinationBoard?.orginalId : destinationBoardId,\n });\n\n // clear sprint or board id in case when card has both sprint id and board id\n storeDispatch('localUpdateCardField', {\n cardId,\n fieldName: isDestinationSprintBoard ? 'board_id' : 'sprint_id',\n fieldValue: '',\n });\n\n storeDispatch('localUpdateCardField', {\n cardId,\n fieldName: 'board_title',\n fieldValue: destinationBoard?.title,\n });\n};\n\nconst handleUpdateEventBoardView = ({\n newIndex,\n oldIndex,\n cardId,\n listId,\n storeDispatch,\n storeGetters,\n}) => {\n const { getListCards } = storeGetters;\n\n const listCards = [...getListCards[listId]];\n if (listCards[newIndex] === cardId) return;\n\n listCards.splice(oldIndex, 1);\n listCards.splice(newIndex, 0, cardId);\n\n storeDispatch('setBoardListProp', {\n listId,\n propertyName: 'card_order',\n value: listCards,\n });\n\n storeDispatch('setSingleListInListCards', {\n listId,\n value: listCards,\n });\n};\n\nconst addCard = ({\n cardModel,\n cardId,\n destinationProjectId,\n destinationBoardId,\n destinationListId,\n destinationPosition,\n originalProjectId,\n originalBoardId,\n originalListId,\n originalPosition,\n storeGetters,\n storeDispatch,\n route,\n}) => {\n if (destinationListId !== originalListId) {\n handleAddEventBoardView({\n cardModel,\n cardId,\n newIndex: destinationPosition,\n oldIndex: originalPosition,\n listId: destinationListId,\n originalListId,\n destinationBoardId,\n originalBoardId,\n storeDispatch,\n storeGetters,\n });\n } else {\n handleUpdateEventBoardView({\n newIndex: destinationPosition,\n oldIndex: originalPosition,\n cardId,\n listId: destinationListId,\n storeDispatch,\n storeGetters,\n });\n }\n};\n\nexport {\n addCard,\n handleAddEventBoardView,\n handleUpdateEventBoardView,\n updateCardFields,\n updateBoardFields,\n handleListUpdate,\n getListById,\n};\n","/**\n * Generates a unique key for a sprint based on the project ID and sprint ID.\n *\n * @param {number | string} projectId - The ID of the project.\n * @param {number | string} sprintId - The ID of the sprint.\n * @returns {string} The generated sprint key: ${projectId}s${sprintId}.\n */\nconst getSprintKey = (projectId: number | string = '', sprintId: number | string = ''): string => {\n return `${projectId}s${sprintId}`;\n};\n\n/**\n * Generates a unique key for a sprint list based on the project ID, sprint ID, and list ID.\n *\n * @param {number | string} projectId - The ID of the project.\n * @param {number | string} sprintId - The ID of the sprint.\n * @param {number | string} listId - The ID of the list.\n * @returns {string} The generated sprint list key: ${projectId}s${sprintId}-${listId}.\n */\nconst getSprintListKey = (\n projectId: number | string = '',\n sprintId: number | string = '',\n listId: number | string = ''\n): string => {\n return `${getSprintKey(projectId, sprintId)}-${listId}`;\n};\n\nexport { getSprintKey, getSprintListKey };\n","const specialCharactersPattern = /[^a-zA-Z\\d-]/g;\n\nexport default specialCharactersPattern;\n","import specialCharactersPattern from './specialCharactersPattern';\n\nconst getDashedTitle = (title = '') =>\n title\n .replaceAll(/^\\s+|\\s+$/g, '')\n .replaceAll(/-{2,}|\\s/g, '-')\n .replaceAll(/-{2,}|\\s/g, '-')\n .replaceAll(' ', '-')\n .replace(specialCharactersPattern, '')\n .toLowerCase();\n\nexport default getDashedTitle;\n","export default function (str: string): string {\n return str.replace(\n /\\w\\S*/g,\n (text) => text.charAt(0).toUpperCase() + text.substring(1).toLowerCase()\n );\n}\n","import { ref, computed } from 'vue';\nimport constants from '@/utilities/constants';\nimport { NoteContentType, NoteTemplate, notesCalendarUsedEventIdsKey } from '@/types/notes';\nimport { translate } from '@/utilities';\nimport useAudioTranscription from '@/utilities/composables/useAudioTranscription';\nimport { useStore } from 'vuex';\nimport getTextToTitleCase from '@/utilities/getTextToTitleCase';\nimport { convertTimeTo24Hours, convertDateToDDMM } from '@/utilities/timeDifference';\nimport { browserStorageSetItem, browserStorageGetItem } from '@/utilities/browser-storage.util';\nimport { nanoid } from 'nanoid';\nimport { useRouter } from 'vue-router';\nimport { OnboardingActionType } from '@/types/onboardingActions';\nimport useToggleSidebar from '@/utilities/composables/useToggleSidebar';\n\nconst LARGE_SCREEN_BREAKPOINT = 2200;\n\nexport default function useNotes() {\n const store = useStore();\n const router = useRouter();\n\n const noteId = ref();\n\n const { currentTranscriptionNoteId, stopRecording, startRecording } =\n useAudioTranscription(noteId);\n\n const { closeSidebar } = useToggleSidebar();\n\n const debouncedUpdateNoteTitle = ref();\n const debouncedUpdateNoteContent = ref();\n\n const noteTemplates = computed(() => {\n return store.getters.getNoteTemplates;\n });\n\n const noteTemplatesFavourited = computed(() => {\n const templates = noteTemplates.value;\n\n const favouritedTemplates = Object.fromEntries(\n Object.entries(templates).filter(([, value]: [any, any]) => value.is_favourited)\n );\n\n const autoEnhancedTemplate = {\n id: NoteTemplate.AutoEnhanced,\n title: translate('autoEnhanced'),\n icon: {\n src: 'zap',\n color: 'var(--iconDefault)',\n type: 'icon',\n },\n is_favourited: true,\n };\n\n const result = {\n [NoteTemplate.AutoEnhanced]: autoEnhancedTemplate,\n ...favouritedTemplates,\n };\n\n return result;\n });\n\n const getNoteEditorId = (noteId: string) => {\n const teamId = store.getters.getTeamID;\n return `${teamId}-editor-note-${noteId}`;\n };\n\n const debounceUpdateNoteTitle = (noteId: string, title: string, immediate = false) => {\n clearTimeout(debouncedUpdateNoteTitle.value);\n\n if (immediate) {\n store.dispatch('updateNoteTitle', { noteId, title });\n return;\n }\n\n debouncedUpdateNoteTitle.value = setTimeout(() => {\n store.dispatch('updateNoteTitle', { noteId, title });\n\n clearTimeout(debouncedUpdateNoteTitle.value);\n debouncedUpdateNoteTitle.value = null;\n }, 1000);\n };\n\n const updateCorrectNoteContent = (noteId: string, content: string, aiNoteId: string = '') => {\n const action = aiNoteId ? 'updateAiNoteContent' : 'updateNoteContent';\n store.dispatch(action, {\n noteId,\n ...(aiNoteId ? { aiNoteId } : { fieldType: NoteContentType.UserNotes }),\n content,\n });\n };\n\n const debounceUpdateNoteContent = (noteId: string, content: string, aiNoteId: string = '') => {\n clearTimeout(debouncedUpdateNoteContent.value);\n\n debouncedUpdateNoteContent.value = setTimeout(() => {\n updateCorrectNoteContent(noteId, content, aiNoteId);\n\n clearTimeout(debouncedUpdateNoteContent.value);\n debouncedUpdateNoteContent.value = null;\n }, 1000);\n };\n\n const clearUpdateNoteDebounceTimeout = ({\n noteId,\n title,\n content,\n aiNoteId = '',\n }: {\n noteId: string;\n title: string;\n content: string;\n aiNoteId: string;\n }) => {\n if (debouncedUpdateNoteTitle.value) {\n clearTimeout(debouncedUpdateNoteTitle.value);\n debouncedUpdateNoteTitle.value = null;\n\n store.dispatch('updateNoteTitle', { noteId, title });\n }\n\n if (debouncedUpdateNoteContent.value) {\n updateCorrectNoteContent(noteId, content, aiNoteId);\n\n clearTimeout(debouncedUpdateNoteContent.value);\n debouncedUpdateNoteContent.value = null;\n }\n };\n\n const createNote = async (\n title: string = '',\n calendarEvent: any = {},\n localId: string = constants.newNote,\n isOnboardingNote: boolean = false,\n afterLocalNoteCreatedCallback: () => void = () => {}\n ) => {\n const localNote = {\n id: localId,\n title,\n time_created: Date.now() / 1000,\n ...(Object.keys(calendarEvent).length && {\n meeting_time: calendarEvent.start,\n meeting_metadata: {\n links: calendarEvent.meeting_links,\n },\n }),\n };\n\n store.dispatch('setNote', { note: localNote });\n afterLocalNoteCreatedCallback();\n\n const newNoteId = await store.dispatch('createNewNote', {\n title,\n calendarEvent,\n noteIdToUpdate: localId,\n isOnboardingNote,\n });\n\n const oldEditorId = getNoteEditorId(constants.newNote);\n const newEditorId = getNoteEditorId(newNoteId);\n\n store.dispatch('updateEditorId', {\n oldId: oldEditorId,\n newId: newEditorId,\n resourceId: newNoteId,\n });\n\n return newNoteId;\n };\n\n const getNoteChronologicalAfterNoteId = (noteId: string, notesList: Array) => {\n if (noteId === constants.newNote) return notesList?.[1];\n\n const noteIndex = notesList.findIndex((note: any) => note.id === noteId);\n\n const noteBefore = notesList[noteIndex - 1];\n const noteAfter = notesList[noteIndex + 1];\n\n if (noteIndex === -1) return null;\n if (!noteAfter && noteBefore) return noteBefore;\n return noteAfter;\n };\n\n const deleteNote = (noteId: string) => {\n if (currentTranscriptionNoteId.value === noteId) stopRecording();\n store.dispatch('deleteNote', noteId);\n };\n\n const updateNoteTitle = async (noteId: string, title: string, immediate: boolean = false) => {\n store.dispatch('localUpdateNoteProp', {\n noteId,\n propertyName: 'title',\n value: title,\n });\n\n debounceUpdateNoteTitle(noteId, title, immediate);\n };\n\n const updateNoteContent = (noteId: string, content: string, aiNoteId: string = '') => {\n store.dispatch('localUpdateNoteProp', {\n noteId,\n ...(aiNoteId && { aiNoteId }),\n propertyName: aiNoteId ? 'content' : NoteContentType.UserNotes,\n value: content,\n });\n\n debounceUpdateNoteContent(noteId, content, aiNoteId);\n };\n\n const getNote = (noteId: string) => store.getters.getNotes[noteId] || {};\n\n const getAiNote = (noteId: string, templateId: string) => {\n return getNote(noteId)[NoteContentType.AiNotes]?.find(\n (note: any) => note?.note_template_id === templateId\n );\n };\n\n const updateLastNoteTemplateId = (noteId: string, templateId: string) => {\n if (!templateId) return;\n\n // Prevent updating if the last note template is the same\n if (getNote(noteId).last_note_template_id === templateId) return;\n\n store.dispatch('localUpdateNoteProp', {\n noteId,\n propertyName: 'last_note_template_id',\n value: templateId,\n });\n\n store.dispatch('updateLastNoteTemplateId', { noteId, templateId });\n };\n\n const getNoteHasAiNotes = (noteId: string) => {\n return getNote(noteId)[NoteContentType.AiNotes]?.length > 0;\n };\n\n const getLastNoteTemplate = (noteId: string) => {\n return getNote(noteId)?.last_note_template_id || '';\n };\n\n const getPublicNoteUrl = (noteId: string) => {\n return getNote(noteId).public_settings?.url || '';\n };\n\n const togglePublicNote = async (noteId: string) => {\n const isPublicNote = !getPublicNoteUrl(noteId);\n\n const updatedNote = await store.dispatch('updateNote', {\n noteId,\n payload: { is_public: isPublicNote },\n });\n\n store.dispatch('localUpdateNoteProp', {\n noteId,\n propertyName: 'is_public',\n value: isPublicNote,\n });\n\n store.dispatch('localUpdateNoteProp', {\n noteId,\n propertyName: 'public_settings',\n value: {\n url: isPublicNote ? updatedNote?.public_settings?.url : '',\n },\n });\n };\n\n const getNoteMeetingLinkInfo = (noteId: string) => {\n const linkInfo = getNote(noteId).meeting_metadata?.links?.[0] || {};\n\n return {\n link: linkInfo.link || '',\n provider: getTextToTitleCase(linkInfo.provider || ''),\n };\n };\n\n const usedEventIds = ref(browserStorageGetItem(notesCalendarUsedEventIdsKey) || []);\n\n const markEventAsUsed = (eventId: string) => {\n usedEventIds.value.push(eventId);\n browserStorageSetItem(notesCalendarUsedEventIdsKey, usedEventIds.value);\n };\n\n const getNoteTitleFromEvent = (event: any): string => {\n if (event.id === constants.noteOnboardingEventId) return translate('get_started_notes.title');\n\n const eventStartDate = new Date(event.start * 1000);\n const eventEndDate = new Date(event.end * 1000);\n const formattedStartDate = convertTimeTo24Hours(eventStartDate);\n\n // If event is not today, add the day and month to the end time\n const formattedEndDate =\n convertTimeTo24Hours(eventEndDate) +\n (eventEndDate.toDateString() !== new Date().toDateString()\n ? `, ${convertDateToDDMM(event.end)}`\n : '');\n\n return `${event.title || translate('untitled')} (${formattedStartDate} - ${formattedEndDate})`;\n };\n\n const calendarEvents = computed(() => {\n return store.getters.getUpcomingGoogleCalendarEvents;\n });\n\n const createNoteFromEvent = async (eventId: string) => {\n const calendarEvent = calendarEvents.value.find((e: any) => e.id === eventId);\n if (!calendarEvent) return;\n\n markEventAsUsed(eventId);\n\n const title = getNoteTitleFromEvent(calendarEvent);\n const localId = nanoid(10);\n const id = await createNote(title, calendarEvent, localId, false, () => {\n router.push({\n name: constants.routeNames.note,\n params: { noteId: localId },\n });\n });\n router.push({ name: constants.routeNames.note, params: { noteId: id } });\n };\n\n const createNoteFromOnboardingEvent = async () => {\n const localId = nanoid(10);\n const id = await createNote(translate('get_started_notes.title'), {}, localId, true, () => {\n router.push({\n name: constants.routeNames.note,\n params: { noteId: localId },\n });\n });\n router.push({ name: constants.routeNames.note, params: { noteId: id } });\n\n noteId.value = id;\n\n store.dispatch('completeOnboardingActions', [OnboardingActionType.GetStartedNotes]);\n startRecording();\n closeSidebar(LARGE_SCREEN_BREAKPOINT);\n\n window.electron.send('notes-onboarding-channel', {\n path: constants.electronNotesOnboardingRoute.path,\n });\n };\n\n return {\n getNoteEditorId,\n noteTemplates,\n noteTemplatesFavourited,\n debouncedUpdateNoteTitle,\n updateCorrectNoteContent,\n debouncedUpdateNoteContent,\n debounceUpdateNoteTitle,\n debounceUpdateNoteContent,\n createNote,\n deleteNote,\n getNoteChronologicalAfterNoteId,\n updateNoteTitle,\n updateNoteContent,\n clearUpdateNoteDebounceTimeout,\n getAiNote,\n updateLastNoteTemplateId,\n getNoteHasAiNotes,\n getLastNoteTemplate,\n getPublicNoteUrl,\n togglePublicNote,\n getNoteMeetingLinkInfo,\n usedEventIds,\n markEventAsUsed,\n getNoteTitleFromEvent,\n calendarEvents,\n createNoteFromEvent,\n createNoteFromOnboardingEvent,\n };\n}\n","import styleVariables from '@/assets/scss/variables.module.scss';\n\nexport default {\n computed: {\n theme() {\n return this.$store.getters.getTheme;\n },\n key() {\n const defaultStyle = {\n background: styleVariables.white,\n text: styleVariables.gray800,\n border: styleVariables.gray500,\n };\n\n if (this.theme === 'dark') {\n return {\n background: styleVariables.gray800,\n text: styleVariables.gray200,\n border: styleVariables.gray400,\n };\n }\n\n return defaultStyle;\n },\n },\n};\n","export default {\n parameterize(value: string = ''): string {\n return value\n .trim()\n .toLowerCase()\n .replace(/[^a-zA-Z0-9 -]/, '')\n .replace(/\\s/g, '-');\n },\n};\n","import strings from './strings';\nimport translate from './translate';\n\nconst { parameterize } = strings;\n\nexport { parameterize, translate };\n","import { Project } from '@superthread-com/api';\n\n// Function to compare the time_created property of two projects\nfunction compareTimeCreated(a: Project, b: Project) {\n return (a.time_created ?? 0) - (b.time_created ?? 0);\n}\n\nfunction compareProjectOrder(a: Project, b: Project, projectOrder: string[]): number {\n const aIndex = projectOrder.indexOf(a.id ?? '');\n const bIndex = projectOrder.indexOf(b.id ?? '');\n if (aIndex === -1 && bIndex === -1) {\n // sort by time created if neither project is in the project order\n return compareTimeCreated(a, b);\n }\n if (aIndex === -1) {\n return 1;\n }\n if (bIndex === -1) {\n return -1;\n }\n return aIndex - bIndex;\n}\n\nfunction sortProjects(projects: Project[] = [], projectOrder: string[] = []): Project[] {\n const sortedProjects = [...projects];\n return projectOrder.length\n ? sortedProjects.sort((a, b) => compareProjectOrder(a, b, projectOrder))\n : sortedProjects.sort(compareTimeCreated);\n}\n\nexport default sortProjects;\n","export enum OnboardingActionType {\n GetStartedNotes = 'get_started_notes',\n AddWorkspaceLogo = 'add_workspace_logo',\n CustomiseYourProfile = 'customise_your_profile',\n ImportTasks = 'import_tasks',\n CreateCard = 'create_card',\n AddChildCard = 'add_child_card',\n CreatePage = 'create_page',\n MentionAnything = 'mention_anything',\n ViewKeyboardShortcuts = 'view_keyboard_shortcuts',\n ConnectSlack = 'connect_slack',\n}\n\nexport enum OnboardingActionStatus {\n NotCompleted = 'not_completed',\n Completed = 'completed',\n Dismissed = 'dismissed',\n}\n\nexport interface OnboardingAction {\n type: OnboardingActionType;\n status: OnboardingActionStatus;\n time_updated?: number;\n animate_completion?: boolean;\n}\n","const getCurrentDateInSeconds = () => {\n return Math.round(new Date().getTime() / 1000);\n};\n\nexport default getCurrentDateInSeconds;\n","import { ResourceType } from '@/types/resources';\n\nexport default {\n computed: {\n isProject() {\n return (this.$route.name === 'boards' || this.$route.name === 'pages') && !this.inEpicBoard;\n },\n\n notificationTypePage() {\n return this.$store.getters.getCurrentInboxResource.resource_type === 'page';\n },\n\n isPage() {\n return this.$route.name === 'page' && !this.inEpicBoard;\n },\n isBoard() {\n return this.$route.name === 'board' && !this.inEpicBoard;\n },\n isSprints() {\n return this.$route.name === this.$constants.routeNames.sprintsRouteName && !this.inEpicBoard;\n },\n isSprint() {\n return (\n (this.$route.name === this.$constants.routeNames.sprint || this.isSprintInbox) &&\n !this.inEpicBoard\n );\n },\n isSprintInbox() {\n return (\n this.isInbox &&\n this.$store.getters.getCurrentInboxResource.resource_type === ResourceType.Sprint\n );\n },\n isNewPage() {\n return this.$route.name === 'newpage' && !this.inEpicBoard;\n },\n isNewBoard() {\n return this.$route.name === 'newboard' && !this.inEpicBoard;\n },\n isAnyCardDisplayed() {\n return this.$store.getters.getIsAnyCardDisplayed || this.$store.getters.getChildCardCreation;\n },\n isManageSpaces() {\n return this.$route.name === this.$constants.manageSpacesRouteName && !this.inEpicBoard;\n },\n isEpicsBoard() {\n return this.$route.name === this.$constants.epicsBoardRoute.name && !this.inEpicBoard;\n },\n membersBasedOnRoute() {\n if (this.isManageSpaces) {\n const selectedProjectId = this.$store.getters.getSelectedProjectId;\n return selectedProjectId !== ''\n ? this.$store.getters.getTeamProjectById(selectedProjectId)?.members\n : [];\n }\n if (this.isProject || this.isPage) {\n const inactiveMembers = this.$store.getters.getInactiveTeamMembers;\n return Object.values(\n this.$store.getters.getCurrentMembers.filter((member) => !inactiveMembers[member.user_id])\n );\n }\n if (this.isBoard) {\n return this.$store.getters.currentBoard.members;\n }\n return [];\n },\n\n isInbox() {\n return this.$route.name === this.$constants.routeNames.inbox && !this.inEpicBoard;\n },\n },\n};\n","const isInViewport = (\n elem,\n boundElem,\n boundingOffests = { top: 0, right: 0, bottom: 0, left: 0 }\n) => {\n const rect = elem.getBoundingClientRect();\n const rectAgainst = boundElem.getBoundingClientRect\n ? boundElem.getBoundingClientRect()\n : boundElem.$el.getBoundingClientRect();\n const boundOffsets = { ...{ top: 0, right: 0, bottom: 0, left: 0 }, ...boundingOffests };\n const offsetedAgainstTop = rectAgainst.top + boundOffsets.top;\n const offsetedAgainsBottom = rectAgainst.bottom - boundOffsets.bottom;\n\n const vertical =\n (rect.bottom >= offsetedAgainstTop &&\n rect.top >= offsetedAgainstTop &&\n rect.bottom <= offsetedAgainsBottom) ||\n (rect.top <= offsetedAgainsBottom &&\n rect.bottom <= offsetedAgainsBottom &&\n rect.top >= offsetedAgainstTop);\n const horizontal = rect.right <= rectAgainst.right && rect.left >= rectAgainst.left;\n let deltaH = 0;\n if (!horizontal) {\n if (rect.right > rectAgainst.right) {\n deltaH = rect.right - rectAgainst.right;\n } else if (rect.left < rectAgainst.left) {\n deltaH = rectAgainst.left - rect.left;\n }\n }\n let deltaV = 0;\n if (!vertical) {\n if (rect.bottom > offsetedAgainsBottom) {\n deltaV = rect.bottom - offsetedAgainsBottom;\n } else if (rect.top < offsetedAgainstTop) {\n deltaV = -(offsetedAgainstTop - rect.top);\n }\n }\n\n return {\n vertical,\n horizontal,\n deltaH,\n deltaV,\n };\n};\n\nexport default isInViewport;\n","import EventBus from '@/utilities/eventBus';\n\nexport default {\n methods: {\n hideMemberDropdown() {\n if (this.$store.getters.getCurrentCardIdMemberDropdown) {\n this.$store.dispatch('setCurrentCardIdMemberDropdown', '');\n this.$store.dispatch('setCurrentCardMembersDropdown', {});\n }\n },\n hideCardActionsDropdown() {\n if (this.$store.getters.getCurrentCardIdActionEdit) {\n this.$store.dispatch('setCurrentCardIdForActionEdit', '');\n }\n },\n\n closeParentCardPopup() {\n if (this.$store.getters.getShowSetParentCardPopup) {\n this.$store.dispatch('setShowSetParentCardPopup', '');\n }\n },\n\n closeDupicateCardPopup() {\n if (this.$store.getters.getShowDuplicateCardPopup) {\n this.$store.dispatch('setShowDuplicateCardPopup', '');\n }\n },\n\n closeEmojiPicker() {\n if (this.$store.getters.getEmojiPickerDisplayed) {\n this.$store.dispatch('setEmojiPickerDisplayed', '');\n }\n },\n\n closePageUploadPopup() {\n if (Object.keys(this.$store.getters.getPageUploadPopup).length > 0) {\n this.$store.dispatch('setPageUploadPopup', {});\n }\n },\n\n closeRestOfCardDropdowns() {\n // for card sidebar members and parent card pill dropdown\n EventBus.$emit('closeCommentActionsDropdown');\n },\n hideManageProjectsDropdowns() {\n this.hideMemberDropdown();\n },\n\n hideAllDropdowns() {\n this.hideMemberDropdown();\n this.hideCardActionsDropdown();\n this.closeRestOfCardDropdowns();\n this.hideManageProjectsDropdowns();\n this.closeParentCardPopup();\n this.closeDupicateCardPopup();\n this.closeEmojiPicker();\n this.closePageUploadPopup();\n },\n },\n};\n","export enum MessageTypes {\n sidebarResize = 'sidebar-resize',\n sidebarResizeStart = 'sidebar-resize-start',\n sidebarResizeEnd = 'sidebar-resize-end',\n}\n","import getDashedTitle from '@/utilities/getDashedTitle';\n\nconst getBranchName = (resourceId, resourceTitle, character = '_') => {\n const title = getDashedTitle(resourceTitle).slice(0, 100).trim().replaceAll('-', character);\n const gitName = `st-${resourceId}${character}${title}`;\n return gitName;\n};\n\nexport default getBranchName;\n","import axios, { AxiosError } from 'axios';\nimport { store } from '@/store';\nimport { Api, HttpClient } from '@superthread-com/api';\n\nconst defaultConfig = () => ({\n withCredentials: true,\n withXSRFToken: true,\n});\n\nconst httpClient = new HttpClient({\n timeout: 20000,\n baseURL: `${process.env.VUE_APP_API_BASE_URL}/v1`,\n ...defaultConfig(),\n});\n\nconst http = httpClient.instance;\nconst { get: axiosBaseGet } = axios;\n\nlet refereshPromise: any = null;\nlet refreshPending: boolean = false;\n\nconst authRefresh = (client: any = http) => {\n if (refreshPending) return refereshPromise;\n\n refreshPending = true;\n refereshPromise = client\n .post('auth/refresh', {}, { ...defaultConfig() })\n .then((res: any) => {\n refreshPending = false;\n return res;\n })\n .catch((err: any) => {\n refreshPending = false;\n return Promise.reject(err);\n });\n return refereshPromise;\n};\n\nconst createAxiosResponseInterceptor = (client: any) => {\n const interceptor = client.interceptors.response.use(\n (response: any) => response,\n (errorResponse: any) => {\n if (axios.isCancel(errorResponse)) {\n return Promise.reject(errorResponse.message);\n }\n if (errorResponse.response?.status === 401) {\n /*\n * When response code is 401, try to refresh the token.\n * Eject the interceptor so it doesn't loop in case\n * token refresh causes the 401 response\n */\n client.interceptors.response.eject(interceptor);\n\n return authRefresh(client)\n .then(() => {\n const { config } = errorResponse.response;\n // Retry\n return client({\n method: config.method,\n url: config.url,\n data: config.data,\n params: config.params,\n ...defaultConfig(),\n });\n })\n .catch((error: AxiosError) => {\n const { pathname } = window.location;\n if (pathname !== '/login' && pathname !== '/' && error?.response) {\n if (store.getters.getLoggedIn) {\n window.location.href = '/login';\n } else {\n window.history.pushState({}, '', '/login');\n }\n }\n return Promise.reject(error);\n })\n .finally(() => createAxiosResponseInterceptor(client));\n }\n return Promise.reject(errorResponse);\n }\n );\n};\n\ncreateAxiosResponseInterceptor(http);\n\nconst api = new Api(httpClient);\n\nconst baseGet = (endpoint = '', params = {}) => http.get(endpoint, { params });\n\nconst authGet = (endpoint = '', customConfig?: any) =>\n http.get(endpoint, { ...defaultConfig(), ...customConfig });\n\nconst authPut = (endpoint = '', putData = {}, customConfig?: any) =>\n http.put(endpoint, putData, { ...defaultConfig(), ...customConfig });\n\nconst basePost = (endpoint = '', postData = {}) => http.post(endpoint, postData);\n\nconst authPost = (endpoint = '', postData = {}, customConfig?: any) =>\n http.post(endpoint, postData, { ...defaultConfig(), ...customConfig });\n\nconst authPatch = (endpoint = '', patchData = {}, customConfig?: any) =>\n http.patch(endpoint, patchData, { ...defaultConfig(), ...customConfig });\n\nconst authDelete = (endpoint = '', customConfig?: any) =>\n http.delete(endpoint, { ...defaultConfig(), ...customConfig });\n\nexport {\n authGet,\n authPut,\n authPost,\n authPatch,\n baseGet,\n basePost,\n authDelete,\n authRefresh,\n axiosBaseGet,\n http,\n api,\n};\n","const validateEmail = (email: string) =>\n /^(?=.{6,254}$)[a-zA-Z0-9!#$%&'*+\\\\/=()<>\\[\\]:,;?^_{|}~`-]+(\\.[a-zA-Z0-9!#$%&'*+\\\\/=()<>:,;?^_{|}~`-]+)*@[a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)*(\\.[a-zA-Z0-9-]{2,63})$/.test(\n email\n );\n\nexport default validateEmail;\n","import { computed } from 'vue';\n\nexport default function useIsElectronApp() {\n const isElectronApp = computed((): boolean => navigator?.userAgent.indexOf('Electron') >= 0);\n\n return {\n isElectronApp,\n };\n}\n","const SECOND = 1000;\nconst MINUTE = 60 * SECOND;\nconst HOUR = 60 * MINUTE;\nconst DAY = 24 * HOUR;\nconst MONTH = 30 * DAY;\nconst YEAR = 365 * DAY;\nconst UNSPLASH_URL = 'https://app.superthread.com/fn/img/unsplash';\nconst UNSPLASH_DOWNLOAD_URL = 'https://app.superthread.com/fn/img/unsplash-download';\nconst UNSPLASH_BASE_URL = '.unsplash.com';\nconst screens = {\n sm: '640px',\n md: '768px',\n lg: '1024px',\n xl: '1280px',\n xxl: '1536px',\n};\nconst ST_PUBLIC_PAGE_BASE_URL = 'https://pages.superthread.com/t/tMZnvavA/p/';\nconst staticAssetsUrl = 'https://assets.superthread.com';\nconst staticFilesUrl = 'https://static.superthread.com';\n\nexport default {\n fullScreen: 'fullScreen',\n docked: 'docked',\n modal: 'modal',\n postHogApiHost: 'https://eu.posthog.com',\n postHogApiKey: 'phc_Bk5R0M204Bj1sACe9sc9WkSEL7J9cyI3qAhEY7grJhQ',\n emptyMarkdownInput: '

',\n emptyEditor: '

',\n profileImageSupportedFiles: ['JPG', 'JPEG', 'PNG', 'GIF'],\n cardSupportedFiles: [\n 'JPG',\n 'PNG',\n 'PDF',\n 'GIF',\n 'TXT',\n 'MP4',\n 'BMP',\n 'JPEG',\n 'SVG',\n 'AVIF',\n 'WEBP',\n 'DOC',\n 'PLAIN',\n 'DOCX',\n 'RTF',\n 'ODG',\n 'XML',\n 'HTML',\n 'XLS',\n 'XLSX',\n 'ODS',\n 'KEY',\n 'ODP',\n 'PPS',\n 'PPT',\n 'PPTX',\n 'AVI',\n 'FLV',\n 'MOV',\n 'MKV',\n 'MPG',\n 'RM',\n 'VOB',\n 'WMV',\n 'H264',\n 'MPEG',\n '7Z',\n 'ARJ',\n 'DEB',\n 'PKG',\n 'RAR',\n 'RPM',\n 'TAR',\n 'ZIP',\n 'ZIPX',\n 'Z',\n 'GZ',\n 'TAR',\n 'JSON',\n ],\n userColors: [\n '#12B76A',\n '#4A9AFF',\n '#F04438',\n '#F79009',\n '#4E5BA6',\n '#7A5AF8',\n '#EE46BC',\n '#F63D68',\n '#667085',\n ],\n editorSupportedFiles: ['JPG', 'JPEG', 'PNG', 'GIF', 'AVIF', 'WEBP'],\n videoVolumeDefault: 1,\n videoVolumeStorageKey: 'video-volume',\n videoMuteVolumeKey: 'video-mute-volume',\n addCardButton: 'add-card-', // add-card-\n epicsBoardId: 'epics',\n inEpicBoardIdPrefix: 'inEpicBoard',\n epicsBoardRoute: {\n path: 'roadmap',\n name: 'epics-board',\n },\n epicRoute: {\n path: 'project',\n name: 'epic',\n },\n electronNotesRoute: {\n path: 'electronnotes',\n name: 'electronnotes',\n },\n electronNotesOnboardingRoute: {\n path: 'electronnotes-onboarding',\n name: 'electronnotes-onboarding',\n },\n newPage: 'newpage',\n newBoard: 'newboard',\n manageSpacesRouteName: 'manage-spaces',\n settingsManageSpacesRouteName: 'settings/manage-spaces',\n createSpaceRouteName: 'create-space',\n settingsCreateSpaceRouteName: 'settings/create-space',\n settingsMemberRouteName: 'settings/member',\n settingsSpaceRouteName: 'settings/space',\n settingsBoardsRouteName: 'settings/boards',\n settingsSelectedBoardRouteName: 'settings/boards/selected',\n settingsSprintsRouteName: 'settings/sprints',\n settingsWorkspaceRouteName: 'general',\n settingsImportRouteName: 'import',\n settingsNotificationsRouteName: 'notifications',\n settingsRouteName: 'settings',\n settingsTemplate: {\n root: 'templates',\n card: {\n root: {\n path: 'card',\n name: 'templates-card',\n },\n create: {\n path: 'create',\n name: 'templates-card-create',\n },\n edit: {\n path: 'edit',\n name: 'templates-card-edit',\n },\n },\n page: {\n root: {\n path: 'page',\n name: 'templates-page',\n },\n create: {\n path: 'create',\n name: 'templates-page-create',\n },\n edit: {\n path: 'edit',\n name: 'templates-page-edit',\n },\n },\n note: {\n root: {\n path: 'note',\n name: 'templates-note',\n },\n create: {\n path: 'create',\n name: 'templates-note-create',\n },\n edit: {\n path: 'edit',\n name: 'templates-note-edit',\n },\n view: {\n path: 'view',\n name: 'templates-note-view',\n },\n },\n },\n memberRouteName: 'member',\n roles: {\n owner: 'owner',\n admin: 'admin',\n member: 'member',\n guest: 'guest',\n },\n myWorkRouteName: 'my-work',\n hRx: /((dev|staging)-)?(app|release)(\\.)?superthread\\.com/,\n internalLinkRegEx: /(https:\\/\\/)?((dev|staging)-)?(app|release)(\\.)?superthread\\.com[^ |\\n]+\\n?/g,\n projectSlug: 'space',\n projectsSlug: 'spaces',\n // sidebar constants\n sidebarWidthRoot: '--sidebar-width',\n sidebarResizeSnapWidth: 15,\n sidebarTogglePercentage: 20,\n timelineSidebarResizeSnapWidth: 15,\n inboxListResizeSnapWidth: 15,\n updateCardCancel: 'update-card-cancel',\n smallCardMemberCountMax: 3,\n openedCardMemberCountMax: 5,\n stImageMinWidth: 100,\n SECOND,\n MINUTE,\n HOUR,\n DAY,\n MONTH,\n YEAR,\n UNSPLASH_URL,\n UNSPLASH_DOWNLOAD_URL,\n screens,\n UNSPLASH_BASE_URL,\n stImage: 'st-image',\n editorChecklistItem: 'checklist-item',\n newChecklistItem: 'newchecklistitem',\n dark: 'dark',\n light: 'light',\n fromSection: 'sidebar',\n blockAttributeName: 'block-id',\n filterTypes: [\n 'members',\n 'owners',\n 'creators',\n 'tags',\n 'statuses',\n 'boards',\n 'projects',\n 'epics',\n 'parent_cards',\n 'is_parent',\n 'is_child',\n 'due_date',\n 'linked_cards',\n 'time_created',\n 'time_updated',\n 'external_links',\n 'priority',\n 'estimates',\n 'title',\n ],\n quickCard: 'quick-card',\n quickChildCard: 'quick-child-card',\n projectsColumn: 'projects-column',\n newListButton: 'new-list',\n integrationRoutes: {\n github: {\n dev: 'https://github.com/apps/superthread-app-dev',\n staging: 'https://github.com/apps/superthread-app-staging',\n release: 'https://github.com/apps/superthread-app',\n production: 'https://github.com/apps/superthread-app',\n },\n zapier: 'https://zapier.com/apps/superthread/integrations',\n },\n searchGroupsOrder: ['members', 'cards', 'epics', 'pages', 'spaces', 'boards'],\n stImageDefaultWidth: 350,\n stImageDefaultHeight: 200,\n stImagePlaceholder: 'st-image-placeholder',\n corsProxyBaseUrl: 'https://app.superthread.com/fn/corsproxy?url=',\n redirectAfterGoogleSignInRoute: 'superthread://oauth2',\n desktopRedirectRoutes: {\n dev: 'https://dev-app.superthread.com/desktop-redirect',\n staging: 'https://staging-app.superthread.com/desktop-redirect',\n release: 'https://release.superthread.com/desktop-redirect',\n production: 'https://app.superthread.com/desktop-redirect',\n },\n changelogUrl: 'https://pages.superthread.com/t/tMZnvavA/p/2141',\n uiNotificationStatuses: {\n success: 'success',\n error: 'error',\n warning: 'warning',\n },\n uiNotificationLabelTypes: {\n opne: 'open',\n update: 'update',\n retry: 'retry',\n changelog: 'changelog',\n undo: 'undo',\n },\n uiNotificationElements: {\n button: 'button',\n span: 'span',\n checkBox: 'checkbox',\n },\n uiNotificationMaxTitleLength: 60,\n timelineHelperElementId: 'timeline-helper-element',\n timelineArrowButtonOffset: 12,\n timelineAnimatedScrollingSpeed: 1.5,\n connectToDesktopAppUrls: [\n 'http://localhost:40124/is-desktop-app-running',\n 'http://localhost:18283/is-desktop-app-running',\n 'http://127.0.0.1:40124/is-desktop-app-running',\n 'http://127.0.0.1:18283/is-desktop-app-running',\n ],\n timelineCardTitleMinWidth: 100,\n timelineTooltipDateFormat: 'EEE, dd MMM',\n infoSidebarProject: 'infoSidebar-project',\n emojiRegex: /^[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/,\n pageSyncTime: 60, // 60 seconds\n quickCardMaxTagsCount: 5,\n fullyLoadedBoardPropThreshold: 3,\n fullyLoadedSprintBoardPropThreshold: 2,\n fullyLoadedPagePropThreshold: 3,\n noSpaceName: 'No space name',\n showMemberHoverPreviewDelay: 500,\n estimateSystems: {\n fibonacci: {\n values: [1, 2, 3, 5, 8],\n label: 'fibonacciPoints',\n labelAbbreviation: 'fib.',\n type: 'points',\n },\n exponential: {\n values: [1, 2, 4, 8, 16],\n label: 'exponentialPoints',\n labelAbbreviation: 'exp.',\n type: 'points',\n },\n tshirt: {\n values: ['extraSmall', 'small', 'mediumSize', 'large', 'extraLarge'],\n valueAbbreviations: ['XS', 'S', 'M', 'L', 'XL'],\n label: 'tshirtSizes',\n type: 'sizes',\n },\n },\n toggleButtonClass: 'settings-sidebar-toggle-button',\n defaultSuggestedTagsColors: {\n bug: 'red',\n feature: 'blue',\n },\n featureFlagIds: {\n aiAssistant: 'ai0',\n aiAgents: 'ai1',\n aiSuggestedActions: 'ai2',\n privateSpace: 'pvt',\n userPermissions: 'up',\n inviteMembers: 'im',\n publicPageIndexing: 'ppi',\n sprint: 'spt',\n timelineLayout: 'tml',\n views: 'vws',\n noteAudioTranscription: 'nat',\n },\n limitIds: {\n spaceLimit: '#sp',\n },\n iconPicker: {\n createProject: 'create-project',\n manageProjects: 'manage-projects',\n sidebarProject: 'sidebar-project',\n page: 'page',\n templateContent: 'template-content',\n epicSidebar: 'epic-sidebar',\n epicBoardView: 'epic-board-view',\n },\n templateDropdown: {\n pageView: 'page-view',\n boardView: 'board-view',\n quickBoardView: 'quick-board-view',\n quickCardModalView: 'quick-card-modal-view',\n quickPageModalView: 'quick-page-modal-view',\n },\n updateEmailPopupTypes: {\n reauthenticate: 'reauthenticate',\n input: 'input',\n verify: 'verify',\n },\n timeline: 'timeline',\n list: 'list',\n calendarLayout: 'calendar',\n // number of items to show in the get started section when 'show less' is clicked\n getStartedShowLessCount: 3,\n projectPrivacyType: {\n open: 'open',\n private: 'private',\n },\n characterLimit: {\n comment: 5000,\n },\n knowledgeBaseUrls: {\n mentionAnyting: `${ST_PUBLIC_PAGE_BASE_URL}1095-other-features#17bfb836-c8d5-47e8-8b84-3095900a37f8`,\n childCards: `${ST_PUBLIC_PAGE_BASE_URL}1088-boards-cards-and-statuses#1c2685e0-d70b-4b0c-9b85-adc0b70cf737`,\n organisePages: `${ST_PUBLIC_PAGE_BASE_URL}1089-pages-subpages-and-public-pages#0e7663eb-aeca-48e4-bb57-4f97c2dd5b38`,\n createPages: `${ST_PUBLIC_PAGE_BASE_URL}1089-pages-subpages-and-public-pages#7b1c0284-990a-4248-9053-b7949870973e`,\n pageIconAndCoverImage: `${ST_PUBLIC_PAGE_BASE_URL}1089-pages-subpages-and-public-pages#f5f20f2f-dc87-4401-9d7d-91bb6ecba33e`,\n comments: `${ST_PUBLIC_PAGE_BASE_URL}1095-other-features#493de01a-1ab1-476b-850b-7d951da67d4c`,\n boardsCardsAndStatuses: `${ST_PUBLIC_PAGE_BASE_URL}1088-boards-cards-and-statuses`,\n },\n // Mon Dec 18 2023 00:00:00 GMT+0000\n onboardingActionsReleaseDate: 1702857600,\n resolved: 'resolved',\n open: 'open',\n onboardingActionsVideoPrefix: 'onboarding-actions-video',\n searchResultsType: {\n SearchModal: 'search_modal',\n MentionList: 'mention_list',\n },\n openSpace: 'open',\n notificationsIntegrations: {\n slackUser: 'slack_user',\n notificationDigest: 'notification_digest',\n },\n OAuthState: {\n googleCalendar: 'googleCalendarOAuthState',\n // necessary for integration to work because backend checks redirect_uri to match\n googleCalendarRedirectUri: 'googleCalendarRedirectUri',\n googleBaseUrl: 'https://accounts.google.com/o/oauth2/v2/auth',\n slack: 'slackOAuthState',\n slackRedirectUri: 'slackRedirectUri',\n },\n googleCalendarIntegration: 'google_calendar_user_notes',\n calendarUserNotesSettings: 'calendar_user_notes',\n webhookIntegrations: {\n slackChannel: 'slack_channel_webhook',\n },\n defaultTimeInputValue: '15:45',\n fullWidth: 'full-width',\n readOnly: 'read-only',\n epicDefaultIcon: 'box',\n resourceIconDefault: {\n height: 16,\n width: 16,\n },\n emptyEditorClass: 'is-editor-empty',\n cardDetailsSidebar: 'card-details-sidebar',\n epicDetailsSidebar: 'epic-details-sidebar',\n owner: 'owner',\n editorContentBaseClass: 'st-editor-content',\n rolledOverList: 'rolledover',\n routeNames: {\n teamLogin: 'teamlogin',\n login: 'login',\n workspaces: 'list-workspaces',\n newWorkspace: 'new-workspace',\n verifyEmail: 'verify-email',\n onboardingInfo: 'onboarding-info',\n join: 'join',\n board: 'board',\n space: 'boards',\n page: 'page',\n boardCard: 'board-card',\n sprintCard: 'sprint-card',\n inbox: 'inbox',\n view: 'view',\n newView: 'newview',\n views: 'views',\n billing: 'billing',\n sprintsRouteName: 'sprints',\n sprint: 'sprint',\n agents: 'agents',\n newAgent: 'newAgent',\n updateAgent: 'updateAgent',\n notesSettings: 'notes-settings',\n notes: 'notes',\n note: 'note',\n },\n editor: {\n sharedToWebClass: 'shared-to-web',\n bottomGutterClass: 'bottom-gutter',\n arrowUpInFirstRow: 'arrow-up-in-first-row',\n arrowLeftAtDocStart: 'arrow-left-at-doc-start',\n },\n staticAssetsUrl,\n staticImages: `${staticAssetsUrl}/images`,\n staticVideos: `${staticAssetsUrl}/videos`,\n downloadLinks: {\n macArm64: {\n text: 'macArm64Label',\n icon: 'download-cloud',\n link: `${staticFilesUrl}/desktop-app/Superthread-arm64.dmg`,\n },\n macx64: {\n text: 'macx64Label',\n icon: 'download-cloud',\n link: `${staticFilesUrl}/desktop-app/Superthread-x64.dmg`,\n },\n },\n contactMail: 'contact@superthread.com',\n importerRadioNewProject: 'radioNewProject',\n prStates: ['pr_draft', 'pr_open', 'pr_merged', 'pr_closed'],\n prStatusKeys: {\n pr_draft: 'draftPROpened',\n pr_open: 'pROpened',\n pr_merged: 'pRMerged',\n pr_closed: 'pRClosed',\n },\n gitBranchNameRegex: /^[a-zA-Z0-9._\\/-]{1,250}$/,\n boardEmailDomain: {\n dev: 'inbound.dev.superthread.com',\n staging: 'inbound.staging.superthread.com',\n prod: 'inbound.superthread.com',\n },\n keyboardShortcutCheatsheetUrl: `${ST_PUBLIC_PAGE_BASE_URL}1556-keyboard-shortcuts`,\n numberOfRecentWorkspaces: 2,\n cardView: 'cardView',\n boardView: 'boardView',\n noListsInEpicsBoardErr: 'Epics boards has no lists',\n missingCardTitleOrListIdErr: 'Missing card title or list id',\n userTypes: {\n user: 'user',\n system: 'system',\n },\n systemName: 'Superthread',\n memberSearchKeys: ['display_name', 'first_name', 'last_name', 'email'],\n memberSearchThreshold: 0.3,\n newNote: 'newnote',\n pageCoverImage: 'page-cover-image',\n noteOnboardingEventId: 'note-onboarding-event',\n};\n","import { translate } from '@/utilities';\n\n// TODO translate short and long time signatures\nconst msPerSecond = 1000;\nconst msPerMinute = 60 * msPerSecond;\nconst msPerHour = msPerMinute * 60;\nconst msPerDay = msPerHour * 24;\nconst msPerMonth = msPerDay * 30;\nconst msPerYear = msPerDay * 365;\n\nconst periods = [\n {\n value: msPerYear,\n labelPlural: 'years',\n labelSingular: 'a year',\n shortFormat: 'Y',\n },\n {\n value: msPerMonth,\n labelPlural: 'months',\n labelSingular: 'a month',\n shortFormat: 'M',\n },\n {\n value: msPerDay,\n labelPlural: 'days',\n labelSingular: 'a day',\n shortFormat: 'd',\n },\n {\n value: msPerHour,\n labelPlural: 'hours',\n labelSingular: 'an hour',\n shortFormat: 'h',\n },\n {\n value: msPerMinute,\n labelPlural: 'minutes',\n labelSingular: 'a minute',\n shortFormat: 'm',\n },\n {\n value: msPerSecond,\n labelPlural: 'seconds',\n labelSingular: 'a second',\n shortFormat: 's',\n },\n];\n\nconst monthsLabels = translate('monthsAbbreviation')?.split(',');\n// As line above is not reactive and can return undefind if utility is imported before translation was loaded,\n// this method is added to ensure that monthsLabels retires to get the value from translation.\nconst generateMonthsLabels = () => {\n return monthsLabels || translate('monthsAbbreviation')?.split(',') || [];\n};\n\nconst generateLabel = (value: number, periodIndex: number, shortFormat: boolean): string => {\n const period = periods[periodIndex];\n\n if (shortFormat) {\n return `${value}${period.shortFormat}`;\n }\n return value <= 1 ? period.labelSingular : `${value} ${period.labelPlural}`;\n};\n\nconst getTimeDifferenceRecursion = (\n elapsed: number,\n shortFormat: boolean,\n periodIndex = 0,\n valuesArray = [] as any\n): any => {\n if (elapsed <= msPerMinute) {\n valuesArray.push({\n label: translate('nowActivity'),\n });\n return valuesArray;\n }\n\n if (elapsed >= periods[periodIndex].value) {\n const value = Math.floor(elapsed / periods[periodIndex].value);\n valuesArray.push({\n label: generateLabel(value, periodIndex, shortFormat),\n });\n const rest = elapsed % periods[periodIndex].value;\n const newPeriodIndex = periodIndex + 1;\n return getTimeDifferenceRecursion(rest, shortFormat, newPeriodIndex, valuesArray);\n }\n return getTimeDifferenceRecursion(elapsed, shortFormat, periodIndex + 1, valuesArray);\n};\n\nconst timeDifference = (time: number, depth = 2, dueDate = false, shortFormat = false) => {\n const current = new Date().getTime();\n\n let elapsed = 0;\n if (dueDate) {\n elapsed = time - current;\n } else {\n elapsed = current - time;\n }\n\n const array = getTimeDifferenceRecursion(elapsed, shortFormat, 0, []);\n let finalString = '';\n const loopLimit = array.length < depth ? array.length : depth;\n for (let i = 0; i < loopLimit; i += 1) {\n let separator = ', ';\n if (i === loopLimit - 1 && i !== 0) {\n separator = ' and ';\n }\n finalString += i === 0 ? `${array[i].label}` : `${separator} ${array[i].label}`;\n }\n\n if (dueDate) {\n return `in ${finalString}`;\n } else {\n return shortFormat || finalString === translate('nowActivity')\n ? `${finalString}`\n : `${finalString} ago`;\n }\n};\n\nconst getDayFromDate = (time: number) => {\n const date = new Date(time * 1000);\n return date.getDay() - 1;\n};\n\nconst convertTimeTo12Hours = (date: Date) =>\n date.toLocaleTimeString(undefined, {\n hour12: true,\n hour: 'numeric',\n minute: 'numeric',\n });\n\nconst convertToTwoDigits = (value: number): string => (value < 10 ? `0${value}` : `${value}`);\n\nconst convertTimestampToDate = (time: number) => {\n const date = new Date(time * 1000);\n return `${generateMonthsLabels()[date.getMonth()]} ${date.getDate()}`;\n};\n\n//16 Mar\nconst convertTimestampToDateSecondFormat = (time: number) => {\n const date = new Date(time * 1000);\n return `${date.getDate()} ${generateMonthsLabels()[date.getMonth()]}`;\n};\n\n// Mon 16 Mar\nconst convertTimestampToDateSecondFormatWithDay = (time: number) => {\n const days = translate('daysAbbreviationLong')?.split(',');\n const day = getDayFromDate(time);\n return `${days.at(day)} ${convertTimestampToDateSecondFormat(time)}`;\n};\n\n//28 Jun, 11:36 (current year) / 28 Jun, 2022, 11:36 (not current year)\nconst convertTimestampToDDMlabelTime = (date: Date) => {\n const currentDate = new Date();\n const currentYear = currentDate.getFullYear();\n const year = currentYear === date.getFullYear() ? '' : `${date.getFullYear()}, `;\n const hours = convertToTwoDigits(date.getHours());\n const minutes = convertToTwoDigits(date.getMinutes());\n return `${date.getDate()} ${generateMonthsLabels()[date.getMonth()]}, ${year} ${hours}:${minutes}`;\n};\n\nconst convertToHoursMinutes = (date: Date) => {\n const hours = convertToTwoDigits(date.getHours());\n const minutes = convertToTwoDigits(date.getMinutes());\n return `${hours}:${minutes}`;\n};\n\n// March 16 2021\nconst timestampToFullDate = (time: number) => {\n const d = new Date(time * 1000);\n const day = convertToTwoDigits(d.getDate());\n const months = translate('months')?.split(',');\n const month = months[d.getMonth()];\n const year = d.getFullYear();\n return `${month} ${day}, ${year}`;\n};\n\n// 16 Mar 2024\nconst timestampToFullDateShort = (time: number) => {\n const d = new Date(time * 1000);\n const day = convertToTwoDigits(d.getDate());\n const month = generateMonthsLabels()[d.getMonth()];\n return `${day} ${month} ${d.getFullYear()}`;\n};\n\n// March 16 2021\nconst convertTimeTo24Hours = (time: Date) => {\n const hours = convertToTwoDigits(time.getHours());\n const minutes = convertToTwoDigits(time.getMinutes());\n return `${hours}:${minutes}`;\n};\n\n// 06/05/24\nconst convertDateToDDMMYY = (date: Date) => {\n const day = convertToTwoDigits(date.getDate());\n const month = convertToTwoDigits(date.getMonth() + 1);\n const year = String(date.getFullYear()).slice(-2);\n return `${day}/${month}/${year}`;\n};\n\n// 06/05\nconst convertDateToDDMM = (time: number) => {\n const date = new Date(time * 1000);\n const day = convertToTwoDigits(date.getDate());\n const month = convertToTwoDigits(date.getMonth() + 1);\n return `${day}/${month}`;\n};\n\nexport {\n getDayFromDate,\n timeDifference,\n convertTimeTo12Hours,\n convertTimestampToDate,\n convertTimestampToDateSecondFormat,\n convertTimestampToDateSecondFormatWithDay,\n timestampToFullDate,\n timestampToFullDateShort,\n convertTimeTo24Hours,\n convertTimestampToDDMlabelTime,\n convertToHoursMinutes,\n convertDateToDDMM,\n convertDateToDDMMYY,\n};\n","import { computed } from 'vue';\n\ntype WebpackContext = {\n (key: string): string;\n keys(): string[];\n resolve(key: string): string;\n};\n\ntype ViteContext = {\n keys: () => string[];\n resolve: (key: string) => string;\n};\n\n// Create a variable to store the webpack context if we're in webpack\n// This avoids dynamic require calls that cause warnings\nlet webpackIconsContext: WebpackContext | null = null;\ntry {\n // This will only work in Webpack and will be statically analyzable\n if (typeof require !== 'undefined') {\n // @ts-ignore - Webpack specific\n webpackIconsContext = require.context('@/assets/icons', false);\n }\n} catch (e) {\n // We're not in Webpack or there was an error\n webpackIconsContext = null;\n}\n\nexport default function useCustomIcon() {\n const iconsContext = computed(() => {\n if (webpackIconsContext) {\n // Webpack environment - use the pre-created context\n return webpackIconsContext;\n } else {\n // Vite environment (Nuxt)\n return {\n // For Vite, we'll provide a simpler implementation\n keys: (): string[] => {\n // Return a hardcoded list of your icon files or an empty array\n return [];\n },\n // Simple wrapper to match webpack's require.context interface\n resolve: (key: string): string => `/icons/${key.replace('./', '')}`,\n };\n }\n });\n\n function iconPath(name: string, extension = 'svg'): string {\n if (!name) return '';\n try {\n if (!webpackIconsContext) {\n return (iconsContext.value as ViteContext).resolve(`./${name}.${extension}`);\n }\n return (iconsContext.value as WebpackContext)(`./${name}.${extension}`);\n } catch (error) {\n return '';\n }\n }\n\n function getCustomIconStyle(\n path: string,\n styleOptions: Record = {},\n useMask: boolean = true\n ) {\n const url = `url(${path})`;\n return useMask\n ? {\n // Use mask styles if you want to override colors\n maskImage: url,\n webkitMaskImage: url,\n maskSize: 'contain', // change with css if needed, use !important to apply\n webkitMaskSize: 'contain',\n maskRepeat: 'no-repeat',\n webkitMaskRepeat: 'no-repeat',\n ...styleOptions,\n }\n : {\n // Use background-image to preserve original colors\n backgroundImage: url,\n backgroundSize: 'contain',\n backgroundRepeat: 'no-repeat',\n ...styleOptions,\n };\n }\n\n return {\n iconPath,\n getCustomIconStyle,\n };\n}\n","/* eslint-disable class-methods-use-this */\nimport { authRefresh } from './api';\nimport { logError } from './sentry';\nimport { ResourceType } from '@/types/resources';\nimport useAddCardInGroupByOrder from '@/utilities/composables/useAddCardInGroupByOrder';\nimport translate from '@/utilities/translate';\nimport constants from '@/utilities/constants';\nimport { store } from '@/store';\nimport { getSprintKey, getSprintListKey } from '@/utilities/sprintKeys';\nimport { fetchCalendarEvents } from '@/utilities/getCalendarIntegration';\n\nclass SocketService {\n constructor({ storeDispatch, storeGetters, route }) {\n this.storeDispatch = storeDispatch;\n this.storeGetters = storeGetters;\n this.route = route;\n this.baseUrl = `${this.storeGetters.getRoutes.socket}/${this.storeGetters.getTeamID}/websockets/connect`;\n this.authExpired = false;\n this.openStateTimeout = null;\n this.subscriptions = {\n body: {\n subscribe: {\n agents: [],\n projects: [],\n boards: [],\n sprints: [],\n cards: [],\n },\n unsubscribe: {\n agents: [],\n projects: [],\n boards: [],\n sprints: [],\n cards: [],\n },\n unsubscribe_all: false,\n },\n };\n this.connect();\n }\n\n waitForConnection(callback, interval = 2000) {\n if (this.ws.readyState === 1) {\n this.openStateTimeout = null;\n clearInterval(this.openStateTimeout);\n callback();\n } else {\n this.openStateTimeout = setTimeout(() => {\n this.waitForConnection(callback, interval);\n }, interval);\n }\n }\n\n send(data) {\n this.waitForConnection(() => {\n this.ws.send(JSON.stringify(data));\n });\n }\n\n connect() {\n this.ws = new WebSocket(this.baseUrl);\n this.ws.onopen = this.onOpen;\n this.ws.onmessage = this.onMessage;\n this.ws.onerror = this.onError;\n this.ws.onclose = this.onClose;\n }\n\n disconnect() {\n this.ws.close();\n }\n\n onOpen = () => {\n this.storeDispatch('setSocketConnected', true);\n if (this.authExpired) {\n this.resubscribe();\n this.authExpired = false;\n }\n };\n\n onMessage = (event) => {\n const data = JSON.parse(event.data);\n if (data.same_user) return;\n switch (data.topic) {\n case 'card_archived':\n case 'card_unarchived':\n this.handleCardArchivedRestored(data.body);\n break;\n case 'resource_created':\n this.handleResourceCreated(data.body);\n break;\n case 'resource_updated':\n this.handleResourceUpdated(data.body);\n break;\n case 'resource_deleted':\n this.handleResourceDeleted(data.body);\n break;\n case 'card_moved':\n this.handleCardMoved(data.body);\n break;\n case 'page_moved':\n this.handlePageMoved(data.body);\n break;\n case 'board_moved':\n this.handleBoardMoved(data.body);\n break;\n case 'resource_archived':\n this.handleResourceArchived(data.body);\n break;\n default:\n break;\n }\n };\n\n // resource type should be: 'agents' 'projects', 'boards', 'sprints' or 'cards'\n subscribe(resourceType, id) {\n const subscribedList = this.subscriptions.body.subscribe[resourceType];\n const resourceIndex = subscribedList.indexOf(id);\n if (resourceIndex !== -1) return;\n this.subscriptions.topic = 'subscribe';\n subscribedList.push(id);\n this.send(this.subscriptions);\n this.clearUnsubscribeResources();\n }\n\n clearUnsubscribeResources() {\n this.subscriptions.body.unsubscribe = {\n agents: [],\n projects: [],\n boards: [],\n sprints: [],\n cards: [],\n };\n }\n\n // used for resubscribing to resources after auth expires\n resubscribe() {\n this.subscriptions.topic = 'subscribe';\n this.clearUnsubscribeResources();\n this.subscriptions.body.unsubscribe_all = false;\n this.send(this.subscriptions);\n }\n\n unsubscribe(resourceType, id) {\n this.subscriptions.topic = 'subscribe';\n // add to unsubscribe\n this.subscriptions.body.unsubscribe[resourceType].push(id);\n\n // remove from subscribed\n if (this.subscriptions.body.subscribe[resourceType].length > 0) {\n const index = this.subscriptions.body.subscribe[resourceType].findIndex((s) => s === id);\n if (index > -1) {\n this.subscriptions.body.subscribe[resourceType].splice(index, 1);\n }\n }\n\n this.send(this.subscriptions);\n this.clearUnsubscribeResources();\n }\n\n /**\n * @param {string} resourceType - gents, projects, boards, cards\n * @param {Array} resourceIds - list of resource ids to add or remove\n * @param {string} addKey - key to add resource to\n * @param {string} removeKey - key to remove resource from\n * @returns {void}\n * @memberof SocketService\n * @description add or remove resource from subscribe or unsubscribe list\n */\n\n addRemoveResource(\n resourceType,\n resourceIds = [],\n addKey = 'subscribe',\n removeKey = 'unsubscribe'\n ) {\n const addList = this.subscriptions.body[addKey][resourceType] || [];\n const removeList = this.subscriptions.body[removeKey][resourceType] || [];\n\n resourceIds.forEach((resourceId) => {\n const resourceIndex = addList.indexOf(resourceId);\n if (resourceIndex === -1) {\n addList.push(resourceId);\n }\n if (removeList.length > 0) {\n const index = removeList.indexOf(resourceId);\n if (index > -1) {\n removeList.splice(index, 1);\n }\n }\n });\n }\n\n /**\n * @param {string} resourceType - projects, boards, cards\n * @param {Array} subscribeTo - list of resource ids to subscribe to\n * @param {Array} unsubscribeFrom - list of resource ids to unsubscribe from\n */\n updateSubscriptions(resourceType, subscribeTo = [], unsubscribeFrom = []) {\n this.subscriptions.topic = 'subscribe';\n\n this.addRemoveResource(resourceType, subscribeTo);\n this.addRemoveResource(resourceType, unsubscribeFrom, 'unsubscribe', 'subscribe');\n\n this.send(this.subscriptions);\n this.clearUnsubscribeResources();\n }\n\n onError(event) {\n logError(event);\n }\n\n handleAuthRefresh() {\n // send refresh request\n authRefresh()\n .then(() => {\n // reconnect to socket service\n this.connect();\n this.storeDispatch('setSocketConnected', true);\n this.storeDispatch('callReconnectionCallbacks');\n })\n .catch(() => {\n // do not set socket connected to true when auth refresh fails\n });\n }\n\n onClose = (event) => {\n this.storeDispatch('setSocketConnected', false);\n if (event.reason === 'auth expired') {\n this.authExpired = true;\n this.handleAuthRefresh();\n return;\n }\n\n // unexpected websocket close error\n if (event.code === 1006) {\n this.connect();\n this.resubscribe();\n this.storeDispatch('setSocketConnected', true);\n this.storeDispatch('callReconnectionCallbacks');\n }\n };\n\n handleResourceCreated(data) {\n switch (data.resource_type) {\n case ResourceType.AgentPromptIteration:\n this.storeDispatch('handleAgentPromptIteration', data.resource);\n break;\n case 'project':\n this.storeDispatch('localAddProjectToTeamProjects', data.resource);\n break;\n case ResourceType.Card:\n this.storeDispatch('handleCardCreated', {\n listId: data.resource.list_id,\n card: { ...data.resource },\n });\n break;\n case ResourceType.Board:\n this.storeDispatch('handleBoardCreated', {\n board: { ...data.resource },\n });\n break;\n case 'page':\n this.storeDispatch('handlePageCreated', {\n page: { ...data.resource },\n });\n break;\n case ResourceType.Sprint:\n this.storeDispatch('postFetchSprint', { ...data.resource });\n break;\n case ResourceType.GoogleCalendarEvent:\n fetchCalendarEvents(store);\n break;\n default:\n break;\n }\n }\n\n handleResourceUpdated(data) {\n switch (data.resource_type) {\n case ResourceType.Subscription:\n this.handleSubscriptionUpdated(data);\n break;\n case ResourceType.Project:\n if (data.changes.length > 0) {\n this.storeDispatch('localUpdateProject', { id: data.resource_id, changes: data.changes });\n }\n break;\n case ResourceType.Card:\n this.storeDispatch('localUpdateCard', {\n cardId: data.resource_id,\n listId: data.hints.list_id,\n projectId: data.hints.project_id,\n changes: data.changes,\n });\n break;\n case ResourceType.Sprint:\n this.handleSprintUpdated(data);\n break;\n default:\n break;\n }\n }\n\n handleResourceDeleted(data) {\n switch (data.resource_type) {\n case ResourceType.Project:\n this.storeDispatch('addToSocketDeletedProjects', data.resource_id);\n this.storeDispatch('localRemoveProject', data.resource_id);\n break;\n case ResourceType.Board:\n this.handleBoardDeleted(data);\n break;\n case ResourceType.Page:\n this.handlePageDeleted(data);\n break;\n case ResourceType.Card:\n this.handleCardDeleted(data);\n break;\n default:\n break;\n }\n }\n\n handleSubscriptionUpdated(data) {\n const planIdChange = data.changes.find((change) => change.path.includes('plan_id'));\n if (planIdChange) {\n this.storeDispatch('getAllTeamFeatures');\n if (planIdChange.to !== 'free') {\n this.storeDispatch('addUiNotification', {\n icon: 'gift',\n message: translate('upgradedWorkspace'),\n duration: -1,\n dismissible: true,\n dismissCallback: () => window.location.reload(),\n labels: [\n {\n text: translate('reload'),\n type: constants.uiNotificationElements.button,\n callback: () => window.location.reload(),\n buttonStyle: 'attention',\n },\n ],\n id: 'plan-upgrade',\n });\n }\n }\n }\n\n handleSprintUpdated(data) {\n this.storeDispatch('localUpdateSprintInProject', {\n id: data.resource_id,\n changes: data.changes,\n });\n }\n\n handleCardMoved(data) {\n const { addCardInGroupByOrder, removeCardFromGroupByOrder } = useAddCardInGroupByOrder(store);\n const { card } = data;\n\n const originalListId = this.getListId(\n card.project_id,\n data.original_sprint_id,\n data.original_list_id\n );\n const destinationListId = this.getListId(\n card.project_id,\n data.destination_sprint_id,\n data.destination_list_id\n );\n const originalBoardId = this.getBoardId(\n data.original_project_id,\n data.original_sprint_id,\n data.original_board_id\n );\n const destinationBoardId = this.getBoardId(\n data.destination_project_id,\n data.destination_sprint_id,\n data.destination_board_id\n );\n\n removeCardFromGroupByOrder(card);\n addCardInGroupByOrder(card);\n\n this.storeDispatch('moveCardHandler', {\n cardModel: card,\n cardId: data.card_id,\n destinationProjectId: data.destination_project_id,\n destinationBoardId,\n destinationListId,\n destinationPosition: data.destination_position,\n originalProjectId: data.original_project_id,\n originalBoardId,\n originalListId,\n originalPosition: data.original_position,\n route: this.route,\n });\n }\n\n getListId(projectId, sprintId, listId) {\n return sprintId !== '' ? getSprintListKey(projectId, sprintId, listId) : listId;\n }\n\n getBoardId(projectId, sprintId, boardId) {\n return sprintId !== '' ? getSprintKey(projectId, sprintId) : boardId;\n }\n\n handlePageMoved(data) {\n this.storeDispatch('movePageHandler', {\n destinationProjectId: data.destination_project.id,\n originalProjectId: data.original_project.id,\n destinationPages: data.destination_project.pages,\n originalPages: data.original_project.pages,\n destinationPageOrder: data.destination_project.page_order,\n originalPageOrder: data.original_project.page_order,\n });\n }\n\n handleBoardMoved(data) {\n this.subscribe('projects', data.destination_project.id);\n this.storeDispatch('moveBoardHandler', {\n destinationProjectId: data.destination_project.id,\n originalProjectId: data.original_project.id,\n destinationBoardOrder: data.destination_project.board_order,\n originalBoardOrder: data.original_project.board_order,\n boardId: data.board_id,\n });\n }\n\n handleCardArchivedRestored(body) {\n const card = body.card;\n this.storeDispatch('localUpdateCardField', {\n cardId: card.id,\n fieldName: 'archived',\n fieldValue: card.archived || false,\n });\n if (card.archived) {\n const listCards = this.storeGetters.getListCards[card.list_id];\n const index = listCards.findIndex((c) => c === card.id);\n if (index > -1) {\n listCards.splice(index, 1);\n const listCardsObj = {};\n listCardsObj[card.list_id] = listCards;\n this.storeDispatch('setListCards', listCardsObj || {});\n }\n } else {\n this.storeDispatch('addCardToListCards', {\n listId: card.list_id,\n cardId: card.id || card.card_id || '',\n });\n }\n }\n\n handleCardDeleted(data) {\n const card = data.card;\n\n this.storeDispatch('removeCardFromCards', card.id);\n this.storeDispatch('removeCardFromListCards', {\n listId: card.list_id,\n cardId: card.id,\n });\n this.storeDispatch('removeCardFromGroupByBoard', {\n boardId: card.board_id,\n card: card,\n });\n\n const viewResult = this.storeGetters.getViewResults;\n const viewCardIndex = viewResult.findIndex((c) => c.id === card.id);\n if (viewCardIndex > -1) {\n viewResult.splice(viewCardIndex, 1);\n this.storeDispatch('setViewResults', viewResult);\n this.storeDispatch('currentViewTotalCount', viewResult.length);\n }\n\n this.storeDispatch('removeFromElectronRecentlyViewed', {\n currentlyViewed: { id: card.id, type: data.resource_type },\n teamId: this.storeGetters.getTeamID,\n });\n\n const isCardDisplayed = this.storeGetters.getIsCardDisplayed(card.id);\n if (isCardDisplayed) {\n this.storeDispatch('removeDisplayedCardsByField', {\n field: 'id',\n value: card.id,\n });\n\n const isOnlyCardDisplayed = this.storeGetters.getDisplayedCards.length === 1;\n if (isOnlyCardDisplayed) {\n this.storeDispatch('itemNotFound', true);\n }\n }\n }\n\n handlePageDeleted(data) {\n const page = data.page;\n const pageFromTree = this.storeGetters.getProjectPagesTree(page.project_id)[page.id];\n\n this.storeDispatch('localRemovePageFromPageOrder', {\n projectId: page.project_id,\n pageId: page.id,\n });\n this.storeDispatch('localRemovePagesFromTree', {\n projectId: page.project_id,\n pages: [pageFromTree],\n });\n this.storeDispatch('removeProjectPage', { pageId: page.id, projectId: page.project_id });\n this.storeDispatch('removePage', page.id);\n\n this.storeDispatch('removeFromElectronRecentlyViewed', {\n currentlyViewed: { id: page.id, type: data.resource_type },\n teamId: this.storeGetters.getTeamID,\n });\n\n const openedPage = this.storeGetters.getPage;\n if (openedPage.id === page.id) {\n this.storeDispatch('itemNotFound', true);\n }\n }\n\n handleBoardDeleted(data) {\n const board = data.board;\n\n const flatBoards = this.storeGetters.getFlatBoards;\n if (flatBoards?.hasOwnProperty(board.id)) {\n delete flatBoards[board.id];\n }\n const boardsArray = Object.values(flatBoards);\n this.storeDispatch('setFlatBoards', boardsArray);\n\n this.storeDispatch('addBoardInBoards', { id: `${board.id}_notFound`, notFound: true });\n\n this.storeDispatch('removeFromElectronRecentlyViewed', {\n currentlyViewed: { id: board.id, type: data.resource_type },\n teamId: this.storeGetters.getTeamID,\n });\n\n const currentBoardId = this.storeGetters.currentBoardId;\n if (currentBoardId === board.id) {\n this.storeDispatch('itemNotFound', true);\n }\n }\n\n handleResourceArchived(data) {\n switch (data.resource_type) {\n case ResourceType.Board:\n this.storeDispatch('updateBoardPropertyInBoards', {\n boardId: data.resource_id,\n propertyName: 'archived',\n value: data.archived,\n });\n break;\n case ResourceType.Page:\n this.storeDispatch('localUpdatePageProp', {\n pageId: data.resource_id,\n propertyName: 'archived',\n value: data.archived,\n });\n break;\n case ResourceType.Team:\n this.storeDispatch('logOut');\n break;\n default:\n break;\n }\n }\n}\n\nexport default SocketService;\n","// check if the device is an apple device\nexport const checkIsApple = () => {\n return /Mac|iPod|iPhone|iPad/.test(navigator.userAgent);\n};\n","import { reactive } from 'vue';\n\nexport const globalState = reactive({\n memberHoverPreviewShown: false,\n memberHoverTippyInstance: null,\n currentGroupAvatarId: null,\n currentGroupAvatarTimeout: null,\n});\n","export enum MyWorkTabId {\n Assigned = 'assigned',\n Created = 'created',\n}\n\nexport enum EpicTabId {\n Details = 'details',\n Cards = 'cards',\n}\n\nexport enum NoteTabId {\n Original = 'original',\n Enhanced = 'enhanced',\n Transcript = 'transcript',\n}\n\nexport type TabDropdownOptions = {\n items?: any;\n selectedItem?: any;\n title?: string;\n events?: any;\n};\n\nexport type Tab = {\n id: MyWorkTabId | EpicTabId | NoteTabId;\n label: string;\n icon?: string;\n disabled?: boolean;\n selected?: boolean;\n dropdownOptions?: TabDropdownOptions;\n};\n","import { userHashColor } from '@/utilities/composables/useUserHashColor';\nimport generateSrcUrl from '@/utilities/generateSrcUrl';\n\nexport default {\n computed: {\n userId() {\n return this.member.id || this.member.user_id || this.member.invitee_user_id || '';\n },\n storeMember() {\n return this.$store.getters.getMemberById(this.userId);\n },\n hidden() {\n return this.isGuestRole && Object.keys(this.storeMember).length === 0;\n },\n hiddenStyle() {\n return {\n backgroundColor: this.member.color ?? userHashColor(this.userId),\n maskPosition: 'center',\n };\n },\n memberInTeamMembers() {\n if (this.hidden) return {};\n return {\n ...this.storeMember,\n color: this.storeMember.color ?? userHashColor(this.storeMember),\n };\n },\n memberInitials() {\n if (this.hidden) return '';\n const { first_name, last_name, display_name, email } = this.memberInTeamMembers;\n const name =\n first_name || last_name || display_name || email || this.member.invitee_email || '';\n return name.substring(0, 1).toUpperCase();\n },\n fallbackStyle() {\n if (this.hidden)\n return {\n borderColor: `${this.member.color ?? userHashColor(this.userId)} !important`,\n backgroundColor: 'var(--background)',\n };\n const { thumbnail_image, profile_image } = this.memberInTeamMembers;\n const img = thumbnail_image || profile_image;\n return {\n backgroundColor: this.memberInTeamMembers.color || '#212121',\n ...(img && {\n backgroundImage: `url(\"${generateSrcUrl(img, 48, 48, true)}\")`,\n backgroundPosition: 'center',\n }),\n ...(this.showUserColor && {\n border: `2px solid ${this.memberInTeamMembers.color}`,\n }),\n };\n },\n memberColor() {\n return this.showUserColor ? this.memberInTeamMembers.color : '';\n },\n },\n};\n","import { getSprintKey } from '@/utilities/sprintKeys';\n\nexport default {\n computed: {\n listOfViewResults() {\n return this.$store.getters.getListOfViewResults;\n },\n currentViewResultsCount() {\n return this.$store.getters.getCurrentViewTotalCount;\n },\n cardCountLabel() {\n const cardLabel = this.translate(\n this.currentViewResultsCount === 1 ? 'card' : 'cards'\n ).toLowerCase();\n return this.isMobile && this.$route.name === this.$constants.routeNames.view ? '' : cardLabel;\n },\n },\n\n methods: {\n preloadNewViewResults(id, card_filters = this.$store.getters.getViewFilters) {\n if (id in this.listOfViewResults) return;\n\n this.fetchNewViewResults(card_filters).then(({ cards, count }) => {\n this.localAddViewResultsToList({\n cards,\n count,\n id,\n });\n cards.forEach((card) => {\n this.postFetchViewResults(card);\n });\n });\n },\n\n preloadViewResults(viewId) {\n if (viewId in this.listOfViewResults) return;\n\n this.fetchViewResults(viewId).then(({ cards, count }) => {\n this.localAddViewResultsToList({\n cards,\n count,\n id: viewId,\n });\n cards.forEach((card) => {\n this.postFetchViewResults(card);\n });\n });\n },\n\n fetchNewViewResults(card_filters = this.$store.getters.getViewFilters) {\n return this.$store.dispatch('fetchNewViewResults', {\n card_filters,\n type: 'card',\n });\n },\n\n fetchViewResults(viewId) {\n return this.$store.dispatch('fetchViewResults', viewId);\n },\n\n setViewResults({ cards, count }) {\n this.$store.dispatch('setViewResults', cards);\n this.$store.dispatch('currentViewTotalCount', count);\n },\n\n localViewResults(id) {\n return this.$store.getters.getViewResultsFromList(id) || {};\n },\n\n setViewResultsFromLocal(id) {\n const viewToSelect = [\n ...this.$store.getters.getPublicViews,\n ...this.$store.getters.getPrivateViews,\n ].find((view) => view.id === id);\n if (viewToSelect) this.$store.dispatch('setSelectedView', viewToSelect);\n\n const { cards = [], count = 0 } = this.localViewResults(id);\n this.setViewResults({ cards, count });\n },\n\n localAddViewResultsToList(payload) {\n this.$store.dispatch('localAddViewResultsToList', payload);\n },\n\n postFetchViewResults(card) {\n this.$store.dispatch('addCardToCards', { card });\n if (card.sprint_id) {\n this.fetchSprint(card.sprint_id, card.project_id);\n return;\n }\n this.fetchBoard(card.board_id);\n },\n\n fetchBoard(board_id) {\n const flatBoard = this.$store.getters.getFlatBoards[board_id] || {};\n if (!this.$isBoardFullyLoaded(flatBoard)) {\n this.$store.dispatch('fetchBoard', { boardId: board_id }).then(({ board }) => {\n this.fetchTags(board.project_id);\n });\n }\n },\n\n fetchSprint(sprintId, projectId) {\n const sprintKey = getSprintKey(projectId, sprintId);\n const sprint = this.$store.getters.getFlatBoards[sprintKey] || {};\n if (this.$isBoardFullyLoaded(sprint, true)) return;\n this.$store.dispatch('getSprint', { sprintId, projectId });\n },\n\n fetchTags(project_id) {\n if (!this.$store.getters.projectTags[project_id]) {\n this.$store.dispatch('fetchTags', { projectId: project_id });\n }\n },\n },\n};\n","export default {\n data() {\n return {\n // refresh variables\n refreshing: false,\n registration: null,\n updateExists: false,\n };\n },\n\n created() {\n // Listen for our custom event from the SW registration\n document.addEventListener('swUpdated', this.updateAvailable, { once: true });\n },\n\n methods: {\n // Store the SW registration so we can send it a message\n // We use `updateExists` to control whatever alert, toast, dialog, etc we want to use\n // To alert the user there is an update they need to refresh for\n updateAvailable(event) {\n this.registration = event.detail;\n this.updateExists = true;\n },\n\n // Called when the user accepts the update\n refreshApp() {\n this.updateExists = false;\n // Make sure we only send a 'skip waiting' message if the SW is waiting\n if (!this.registration || !this.registration.waiting) return;\n\n // Prevent multiple refreshes and attach listener only at this point\n navigator.serviceWorker.addEventListener('controllerchange', () => {\n if (this.refreshing) return;\n this.refreshing = true;\n // Here the actual reload of the page occurs\n window.location.reload();\n });\n\n // send message to SW to skip the waiting and activate the new SW\n this.registration.waiting.postMessage({ type: 'SKIP_WAITING' });\n },\n },\n};\n","const getRandomNumber = (x, y) =>\n Math.trunc(x + (y - x + 1) * (crypto.getRandomValues(new Uint32Array(1))[0] / 2 ** 32)) || 0;\n\nexport default getRandomNumber;\n","import { getCurrentInstance, computed, toRef, Ref } from 'vue';\nimport {\n OnboardingActionType,\n OnboardingActionStatus,\n OnboardingAction,\n} from '@/types/onboardingActions';\nimport constants from '@/utilities/constants';\nimport { Router, RouteLocationNormalized } from 'vue-router';\nimport { Team, User } from '@superthread-com/api';\n\n// ** ONBOARDING ACTIONS - ON CLICK FNs **\n\nconst goToWorkspaceSettingsRoute = (router: Router, route: Ref) => {\n if (constants.settingsWorkspaceRouteName !== route.value.name)\n router.push({\n name: constants.settingsWorkspaceRouteName,\n });\n};\n\nconst goToSettingsRoute = (router: Router, route: Ref) => {\n if (constants.settingsRouteName != route.value.name)\n router.push({\n name: constants.settingsRouteName,\n });\n};\n\nconst goToImportSettingsRoute = (router: Router, route: Ref) => {\n if (constants.settingsImportRouteName != route.value.name)\n router.push({\n name: constants.settingsImportRouteName,\n });\n};\n\nconst goToKeyboardShortcutRoute = (\n router: Router,\n route: Ref,\n dispatch: any\n) => {\n dispatch('completeOnboardingActions', [OnboardingActionType.ViewKeyboardShortcuts]);\n window.open(constants.keyboardShortcutCheatsheetUrl, '_blank');\n};\n\nconst goToNotificationsSettingsRoute = (router: Router, route: Ref) => {\n if (constants.settingsNotificationsRouteName != route.value.name) {\n router.push({\n name: constants.settingsNotificationsRouteName,\n });\n }\n};\n\nconst goToNotesRoute = (router: Router, route: Ref) => {\n if (\n ![constants.routeNames.notes, constants.routeNames.note].includes(route.value.name as string)\n ) {\n router.push({ name: constants.routeNames.notes });\n }\n};\n\nconst showQuickCardModal = (dispatch: any) => {\n dispatch('setQuickCard', true);\n};\n\nconst showQuickPageModal = (dispatch: any) => {\n dispatch('setQuickPage', true);\n};\n\nexport default function useOnboardingActions() {\n const _this = getCurrentInstance()?.proxy;\n if (!_this) return;\n\n const { $router } = _this;\n const routeRef = toRef(_this, '$route');\n\n // ** ONBOARDING ACTIONS - MAPS **\n\n const onboardingActionsDataMap = {\n [OnboardingActionType.MentionAnything]: {\n icon: 'at-sign',\n onClick: () => openOnboardingActionsVideoPreview(OnboardingActionType.MentionAnything),\n title: _this.translate(`${OnboardingActionType.MentionAnything}.title`),\n tooltip: _this.translate(`${OnboardingActionType.MentionAnything}.tooltip`),\n },\n [OnboardingActionType.AddChildCard]: {\n icon: 'card-child',\n onClick: () => openOnboardingActionsVideoPreview(OnboardingActionType.AddChildCard),\n title: _this.translate(`${OnboardingActionType.AddChildCard}.title`),\n tooltip: _this.translate(`${OnboardingActionType.AddChildCard}.tooltip`),\n },\n [OnboardingActionType.CreateCard]: {\n icon: 'new-card-icon',\n onClick: () => showQuickCardModal(_this.$store.dispatch),\n title: _this.translate(`${OnboardingActionType.CreateCard}.title`),\n tooltip: _this.translate(`${OnboardingActionType.CreateCard}.tooltip`),\n },\n [OnboardingActionType.CreatePage]: {\n icon: 'page',\n onClick: () => showQuickPageModal(_this.$store.dispatch),\n title: _this.translate(`${OnboardingActionType.CreatePage}.title`),\n tooltip: _this.translate(`${OnboardingActionType.CreatePage}.tooltip`),\n },\n [OnboardingActionType.AddWorkspaceLogo]: {\n icon: 'workspace',\n onClick: () => goToWorkspaceSettingsRoute($router, routeRef),\n title: _this.translate(`${OnboardingActionType.AddWorkspaceLogo}.title`),\n tooltip: _this.translate(`${OnboardingActionType.AddWorkspaceLogo}.tooltip`),\n },\n [OnboardingActionType.CustomiseYourProfile]: {\n icon: 'user',\n onClick: () => goToSettingsRoute($router, routeRef),\n title: _this.translate(`${OnboardingActionType.CustomiseYourProfile}.title`),\n tooltip: _this.translate(`${OnboardingActionType.CustomiseYourProfile}.tooltip`),\n },\n [OnboardingActionType.ImportTasks]: {\n icon: 'upload-cloud',\n onClick: () => goToImportSettingsRoute($router, routeRef),\n title: _this.translate(`${OnboardingActionType.ImportTasks}.title`),\n tooltip: _this.translate(`${OnboardingActionType.ImportTasks}.tooltip`),\n },\n [OnboardingActionType.ViewKeyboardShortcuts]: {\n icon: 'mac-command',\n onClick: () => goToKeyboardShortcutRoute($router, routeRef, _this.$store.dispatch),\n title: _this.translate(`${OnboardingActionType.ViewKeyboardShortcuts}.title`),\n tooltip: _this.translate(`${OnboardingActionType.ViewKeyboardShortcuts}.tooltip`),\n },\n [OnboardingActionType.ConnectSlack]: {\n icon: 'slack',\n onClick: () => goToNotificationsSettingsRoute($router, routeRef),\n title: _this.translate(`${OnboardingActionType.ConnectSlack}.title`),\n tooltip: _this.translate(`${OnboardingActionType.ConnectSlack}.tooltip`),\n },\n [OnboardingActionType.GetStartedNotes]: {\n icon: 'note',\n onClick: () => goToNotesRoute($router, routeRef),\n title: _this.translate(`${OnboardingActionType.GetStartedNotes}.title`),\n tooltip: _this.translate(`${OnboardingActionType.GetStartedNotes}.tooltip`),\n },\n } as Record<\n OnboardingActionType,\n { icon: string; onClick: Function; title: string; tooltip: string; extension?: string }\n >;\n\n // ** ONBOARDING ACTIONS METHODS AND COMPUTEDS **\n\n const userCreatedAfterOnboardingActionsRelease = computed(() => {\n const { time_created } = _this.$store.getters.getUser;\n return time_created > constants.onboardingActionsReleaseDate;\n });\n\n const getOnboardingActions = computed((): OnboardingAction[] => {\n return _this.$store.getters.getOnboardingActions;\n });\n\n const getNotDismissedOnboardingActions = computed((): OnboardingAction[] => {\n return getOnboardingActions.value.filter(\n ({ status }) => status !== OnboardingActionStatus.Dismissed\n );\n });\n\n const getNotCompletedOnboardingActions = computed((): OnboardingAction[] => {\n return getOnboardingActions.value.filter(\n ({ status }) => status === OnboardingActionStatus.NotCompleted\n );\n });\n\n // onboarding actions for which completion animation is still on\n const getCompletionRunningOnboardingActions = computed((): OnboardingAction[] => {\n return getNotDismissedOnboardingActions.value.filter(\n ({ animate_completion }) => animate_completion\n );\n });\n\n const getFullyCompletedOnboardingActions = computed((): OnboardingAction[] => {\n return getNotDismissedOnboardingActions.value.filter(\n ({ status }) => status === OnboardingActionStatus.Completed\n );\n });\n\n const dismissOnboardingAction = (type: OnboardingActionType) => {\n _this.$store.dispatch('dismissOnboardingAction', type);\n };\n\n const completeOnboardingActions = (types: OnboardingActionType) => {\n _this.$store.dispatch('completeOnboardingActions', types);\n };\n\n const openOnboardingActionsVideoPreview = (\n type: OnboardingActionType,\n extension: string = 'mp4'\n ) => {\n const url = `${constants.staticVideos}/${type}.${extension}`;\n const id = `${constants.onboardingActionsVideoPrefix}-${type}`;\n _this.$store.dispatch('setPreviewAttachments', [\n {\n url,\n type: 'video',\n name: onboardingActionsDataMap[type].title,\n id,\n },\n ]);\n _this.$store.dispatch('setPreviewAttachmentId', {\n attachmentId: id,\n });\n };\n\n const team = computed((): Team => {\n return _this.$store.getters.getTeam;\n });\n\n const user = computed((): User => {\n return _this.$store.getters.getUser;\n });\n\n const teamLogo = computed(() => {\n return team?.value?.logo?.src ?? null;\n });\n\n const userProfileImage = computed(() => {\n return user?.value?.profile_image ?? null;\n });\n\n // skips onboarding actions that were already completed\n const shouldSkipOnboardingAction = (type: OnboardingActionType) => {\n if (type === OnboardingActionType.AddWorkspaceLogo && teamLogo.value) return true;\n if (type === OnboardingActionType.CustomiseYourProfile && userProfileImage.value) return true;\n return false;\n };\n\n const getOnboardingAction = (\n accumulator: OnboardingAction[],\n type: OnboardingActionType,\n onboardingActionsMap: any // onboarding actions from response\n ) => {\n // don't show if already set\n\n if (shouldSkipOnboardingAction(type)) return accumulator;\n\n //if any action is not returned in response, populate it with default not completed state\n const onboardingAction = {\n type,\n status: onboardingActionsMap[type]?.status ?? OnboardingActionStatus.NotCompleted,\n };\n\n accumulator.push(onboardingAction);\n return accumulator;\n };\n\n const fetchOnboardingActions = () => {\n _this.$store\n .dispatch('fetchOnboardingActions')\n .then((onboarding_actions: OnboardingAction[]) => {\n const existingNotesOnboardingAction = onboarding_actions.find(\n (action) => action.type === OnboardingActionType.GetStartedNotes\n );\n\n /**\n * In the case where the user was created before the onboarding actions release,\n * we need to show the notes onboarding action.\n */\n if (!userCreatedAfterOnboardingActionsRelease.value) {\n _this.$store.dispatch('setOnboardingActions', [\n {\n type: OnboardingActionType.GetStartedNotes,\n status: existingNotesOnboardingAction?.status ?? OnboardingActionStatus.NotCompleted,\n },\n ]);\n } else {\n const onboardingActionsMap = onboarding_actions.reduce((accumulator: any, item) => {\n accumulator[item.type] = { ...item };\n return accumulator;\n }, {});\n\n const onboardingActions = Object.values(OnboardingActionType).reduce(\n (accumulator: OnboardingAction[], type) =>\n getOnboardingAction(accumulator, type, onboardingActionsMap),\n []\n );\n\n _this.$store.dispatch('setOnboardingActions', onboardingActions);\n }\n });\n };\n // ** GET STARTED SIDEBAR SECTION **\n\n const getGetStartedExpanded = computed((): boolean => {\n return _this.$store.getters.getGetStartedExpanded;\n });\n\n const toggleGetStartedExpanded = () => {\n _this.$store.dispatch('setGetStartedExpanded', !getGetStartedExpanded.value);\n };\n\n const setGetStartedExpandedFromLS = () => {\n const isExpanded = JSON.parse(localStorage.getItem('getStartedExpanded') ?? 'null');\n if (isExpanded !== null) {\n _this.$store.dispatch('setGetStartedExpanded', isExpanded);\n }\n };\n\n const getGetStartedShowAll = computed(() => {\n return _this.$store.getters.getGetStartedShowAll;\n });\n\n const toggleGetStartedShowAll = () => {\n _this.$store.dispatch('setGetStartedShowAll', !getGetStartedShowAll.value);\n };\n\n const setGetStartedShowAllFromLS = () => {\n const showAll = JSON.parse(localStorage.getItem('getStartedShowAll') ?? 'null');\n if (showAll !== null) {\n _this.$store.dispatch('setGetStartedShowAll', showAll);\n }\n };\n\n // to be used on dev/staging only\n const setAllAsNotCompleted = (e: KeyboardEvent) => {\n if (e.code !== 'KeyN' || !e.ctrlKey || !e.altKey) return;\n\n _this.$store.dispatch(\n 'setAsNotCompletedOnboardingAction',\n getOnboardingActions.value.map((a) => {\n return {\n type: a.type,\n status: OnboardingActionStatus.NotCompleted,\n };\n })\n );\n };\n\n return {\n OnboardingActionType,\n onboardingActionsDataMap,\n getOnboardingActions,\n getNotDismissedOnboardingActions,\n getNotCompletedOnboardingActions,\n getCompletionRunningOnboardingActions,\n getFullyCompletedOnboardingActions,\n dismissOnboardingAction,\n completeOnboardingActions,\n fetchOnboardingActions,\n userCreatedAfterOnboardingActionsRelease,\n openOnboardingActionsVideoPreview,\n\n toggleGetStartedExpanded,\n getGetStartedExpanded,\n setGetStartedExpandedFromLS,\n\n toggleGetStartedShowAll,\n getGetStartedShowAll,\n setGetStartedShowAllFromLS,\n setAllAsNotCompleted,\n teamLogo,\n userProfileImage,\n getOnboardingAction,\n };\n}\n","import { User } from '../../types';\nimport constants from '@/utilities/constants';\n\nconst userHashColor = (user: User | string) => {\n const id: string = typeof user === 'string' ? user : (user?.user_id ?? user?.id);\n\n if (!id) {\n return constants.userColors[0];\n }\n\n const colorIndex =\n id.split('').reduce((prev, curr) => prev + curr.charCodeAt(0), 0) % constants.userColors.length;\n\n return constants.userColors[colorIndex];\n};\n\nconst useUserHashColor = () => userHashColor;\n\nexport { userHashColor, useUserHashColor };\n","import emitter from 'tiny-emitter/instance';\n\ntype EventHandler = (...args: any[]) => void;\n\nexport default {\n $on(event: string, handler: EventHandler): void {\n emitter.on(event, handler);\n },\n $once(event: string, handler: EventHandler): void {\n emitter.once(event, handler);\n },\n $off(event: string, handler?: EventHandler): void {\n emitter.off(event, handler);\n },\n $emit(event: string, ...args: any[]): void {\n emitter.emit(event, ...args);\n },\n};\n","export enum groupByOption {\n status = 'status',\n assignee = 'assignee',\n // owner = 'owner',\n tag = 'tag',\n priority = 'priority',\n space = 'space',\n // board = 'board',\n statusType = 'statusType',\n none = 'none',\n epic = 'epic',\n}\n","export function browserStorageSetItem(itemName: string, value: any): void {\n const valueToStore = typeof value === 'string' ? value : JSON.stringify(value);\n window?.localStorage.setItem(itemName, valueToStore);\n}\n\nexport function browserStorageGetItem(\n itemName: string & (T extends void ? 'Specify return type of the function call' : string)\n): T | null {\n if (typeof window === 'undefined') return null;\n const item = window?.localStorage.getItem(itemName);\n\n if (item === null || item === 'undefined') {\n return null;\n }\n\n try {\n return JSON.parse(item) as T;\n } catch (_) {\n // localStorage.getItem() returns string always,\n // but in this case we want to say that we know it is NOT string\n return item as unknown as T;\n }\n}\n\nexport function browserStorageRemoveItem(key: string): void {\n if (typeof window === 'undefined') return;\n window?.localStorage.removeItem(key);\n}\n\n/**\n * Function is used to get/set item from/to localStorage, where item is an object\n * @param itemName - name of the item to get/set from/to localStorage\n * @param key - key of the item to set in localStorage\n * @param value - value to set\n */\nexport function browserStorageGetAndSetItem(itemName: string, key: string, value: any): void {\n if (typeof window === 'undefined') return;\n const item: any = browserStorageGetItem(itemName) || {};\n item[key] = value;\n browserStorageSetItem(itemName, item);\n}\n\n/**\n * Function is used to rename an item in localStorage\n * @param oldKey - old key of the item to rename\n * @param newKey - new key of the item\n * @returns void\n */\nexport function browserStorageRenameItem(oldKey: string, newKey: string): void {\n if (typeof window === 'undefined') return;\n const item: any = browserStorageGetItem(oldKey) || {};\n browserStorageSetItem(newKey, item);\n browserStorageRemoveItem(oldKey);\n}\n\n/**\n * Function is used to remove multiple items from localStorage by keys\n * @param keys - array of keys to remove\n * @returns void\n */\nexport function removeMultipleItemsByKeys(keys: string[]): void {\n if (typeof window === 'undefined') return;\n keys.forEach((key) => {\n window?.localStorage.removeItem(key);\n });\n}\n\n/**\n * Function is used to remove multiple items from localStorage by prefix\n * @param prefix - prefix of the items to remove\n * @returns void\n */\nexport function removeMultipleItemsByPrefix(prefix: string): void {\n if (typeof window === 'undefined') return;\n Object.keys(window.localStorage).forEach((key) => {\n if (key.startsWith(prefix)) {\n window?.localStorage.removeItem(key);\n }\n });\n}\n\n/**\n * Function is used to remove multiple items from localStorage by array of prefixes\n * @param prefixes - array of prefixes of the items to remove\n * @returns void\n * */\nexport function removeMultipleItemsByArrayPrefix(prefixes: string[]): void {\n if (typeof window === 'undefined') return;\n Object.keys(window.localStorage).forEach((key) => {\n prefixes.forEach((prefix) => {\n if (key.startsWith(prefix)) {\n window?.localStorage.removeItem(key);\n }\n });\n });\n}\n","import { CardStatus } from '@superthread-com/api';\n\nconst cardStatusType = {\n Backlog: 'backlog',\n Rolledover: 'rolledover',\n ...CardStatus,\n} as const;\n\nexport default cardStatusType;\n","import { useStore } from 'vuex';\n\nconst POLL_INTERVAL = 2500;\nconst RECENT_NOTES_COUNT = 5;\n\nexport default function useNotesPoll() {\n const store = useStore();\n\n const fetchNotes = async () => {\n return store.dispatch('fetchNotesForPoll');\n };\n\n const getRecentNotes = (notes: any) => {\n return Object.values(notes)\n .sort((a: any, b: any) => b.time_created - a.time_created)\n .slice(0, RECENT_NOTES_COUNT);\n };\n\n // Fetchs notes and sends recent *n* notes to electron process to be displayed in tray menu.\n const setNotes = async () => {\n const notes = await fetchNotes();\n\n //@ts-ignore\n const electronAPI = window.electron;\n if (electronAPI?.send) {\n electronAPI.send('send-notes-channel', getRecentNotes(notes));\n }\n };\n\n // Setups notes polling interval.\n const setupNotesPoll = async () => {\n await setNotes();\n setInterval(setNotes, POLL_INTERVAL);\n };\n\n return {\n getRecentNotes,\n setNotes,\n setupNotesPoll,\n };\n}\n","export default [\n {\n id: 'slack',\n icon: 'slack',\n name: 'Slack',\n bundleID: 'com.tinyspeck.slackmacgap',\n processName: 'Slack',\n },\n {\n id: 'teams',\n icon: 'teams',\n name: 'Teams',\n bundleID: 'com.microsoft.teams2',\n // msteams triggers meeting notification twice as it has 2 separate processes using mic/cam\n // we have child bundle id to not generate notification for helpers mic/cam usage\n childBundleID: 'com.microsoft.teams2',\n processName: 'Microsoft Teams',\n },\n {\n id: 'zoom',\n icon: 'zoom',\n name: 'Zoom',\n bundleID: 'us.zoom.xos',\n processName: 'zoom.us',\n },\n {\n id: 'webex',\n icon: 'webex',\n name: 'Webex',\n bundleID: 'Cisco-Systems.Spark',\n processName: 'Webex',\n },\n {\n id: 'facetime',\n icon: 'facetime',\n name: 'Facetime',\n bundleID: 'com.apple.avconferenced',\n processName: 'avconferenced',\n },\n {\n id: 'whatsapp',\n icon: 'whatsapp',\n name: 'WhatsApp',\n bundleID: 'net.whatsapp.WhatsApp',\n processName: 'WhatsApp',\n },\n {\n id: 'safari',\n icon: 'safari',\n name: 'Safari',\n bundleID: 'com.apple.Safari',\n processName: 'Safari',\n },\n {\n id: 'chrome',\n icon: 'chrome',\n name: 'Chrome',\n bundleID: 'com.google.Chrome',\n processName: 'Google Chrome',\n },\n {\n id: 'firefox',\n icon: 'firefox',\n name: 'Firefox',\n bundleID: 'org.mozilla.firefox',\n processName: 'Firefox',\n },\n {\n id: 'edge',\n icon: 'edge',\n name: 'Edge',\n bundleID: 'com.microsoft.edgemac',\n processName: 'Microsoft Edge',\n },\n];\n","export const isPublicPageApp = () => {\n // @ts-ignore\n if (typeof useRuntimeConfig === 'function') {\n // Nuxt environment\n // @ts-ignore\n return useRuntimeConfig().public.appId === 'public';\n }\n return false;\n};\n","import cardStatusType from '@/types/cardStatusType';\n\ntype StatusKey = (typeof cardStatusType)[keyof typeof cardStatusType];\n\nconst getCardStatus = (status: StatusKey, isEpic: boolean = false) => {\n return getDefaultCardStatuses(isEpic)[status];\n};\n\nconst getDefaultCardStatuses = (isEpic: boolean = false) => {\n return {\n backlog: {\n label: 'Backlog',\n icon: isEpic ? 'hex-16' : 'circle-dotted',\n id: cardStatusType.Backlog,\n color: '#98A2B3',\n },\n committed: {\n label: 'Not started',\n icon: isEpic ? 'hexagon-16' : 'disc',\n id: cardStatusType.Committed,\n color: '#98A2B3',\n },\n started: {\n label: 'In progress',\n icon: isEpic ? 'play-hex-16' : 'play-circle',\n id: cardStatusType.Started,\n color: '#498CF7',\n },\n completed: {\n label: 'Done',\n icon: isEpic ? 'check-hex-16' : 'check-circle',\n id: cardStatusType.Completed,\n color: '#32D583',\n },\n cancelled: {\n label: 'Cancelled',\n icon: isEpic ? 'x-hex-16' : 'x-circle',\n id: cardStatusType.Cancelled,\n color: '#F79009',\n },\n rolledover: {\n label: 'Rolled over',\n icon: 'arrow-right-circle',\n id: cardStatusType.Rolledover,\n color: '#475467',\n },\n };\n};\n\nconst getBoardLists = (isEpic: boolean = false) => {\n return [\n {\n id: getCardStatus(cardStatusType.Backlog, isEpic).id,\n label: getCardStatus(cardStatusType.Backlog, isEpic).label,\n title: 'Backlog',\n behavior: getCardStatus(cardStatusType.Backlog, isEpic).id,\n icon: getCardStatus(cardStatusType.Backlog, isEpic).icon,\n color: getCardStatus(cardStatusType.Backlog, isEpic).color,\n },\n {\n id: getCardStatus(cardStatusType.Committed, isEpic).id,\n label: getCardStatus(cardStatusType.Committed, isEpic).label,\n title: 'To do',\n behavior: getCardStatus(cardStatusType.Committed, isEpic).id,\n icon: getCardStatus(cardStatusType.Committed, isEpic).icon,\n color: getCardStatus(cardStatusType.Committed, isEpic).color,\n },\n {\n id: getCardStatus(cardStatusType.Started, isEpic).id,\n label: getCardStatus(cardStatusType.Started, isEpic).label,\n title: 'Doing',\n behavior: getCardStatus(cardStatusType.Started, isEpic).id,\n icon: getCardStatus(cardStatusType.Started, isEpic).icon,\n color: getCardStatus(cardStatusType.Started, isEpic).color,\n },\n {\n id: getCardStatus(cardStatusType.Completed, isEpic).id,\n label: getCardStatus(cardStatusType.Completed, isEpic).label,\n title: 'Done',\n behavior: getCardStatus(cardStatusType.Completed, isEpic).id,\n icon: getCardStatus(cardStatusType.Completed, isEpic).icon,\n color: getCardStatus(cardStatusType.Completed, isEpic).color,\n },\n {\n id: getCardStatus(cardStatusType.Cancelled, isEpic).id,\n label: getCardStatus(cardStatusType.Cancelled, isEpic).label,\n title: 'Cancelled',\n behavior: getCardStatus(cardStatusType.Cancelled, isEpic).id,\n icon: getCardStatus(cardStatusType.Cancelled, isEpic).icon,\n color: getCardStatus(cardStatusType.Cancelled, isEpic).color,\n },\n ];\n};\n\nconst defaultSprintStatuses = [\n {\n title: getCardStatus(cardStatusType.Committed).label,\n status: getCardStatus(cardStatusType.Committed).id,\n },\n {\n title: getCardStatus(cardStatusType.Started).label,\n status: getCardStatus(cardStatusType.Started).id,\n },\n {\n title: getCardStatus(cardStatusType.Completed).label,\n status: getCardStatus(cardStatusType.Completed).id,\n },\n {\n title: getCardStatus(cardStatusType.Cancelled).label,\n status: getCardStatus(cardStatusType.Cancelled).id,\n },\n {\n title: getCardStatus(cardStatusType.Rolledover).label,\n status: getCardStatus(cardStatusType.Rolledover).id,\n },\n];\n\nexport { getCardStatus, getBoardLists, defaultSprintStatuses, getDefaultCardStatuses };\n","enum QuickResourceType {\n QuickCard = 'quickCard',\n QuickPage = 'quickPage',\n QuickNote = 'quickNote',\n}\n\nenum QuickResourceAction {\n setQuickCard = 'setQuickCard',\n setQuickPage = 'setQuickPage',\n setQuickNote = 'setQuickNote',\n}\n\nconst QuickResourceActions: Record = {\n [QuickResourceType.QuickCard]: QuickResourceAction.setQuickCard,\n [QuickResourceType.QuickPage]: QuickResourceAction.setQuickPage,\n [QuickResourceType.QuickNote]: QuickResourceAction.setQuickNote,\n};\n\nexport { QuickResourceType, QuickResourceAction, QuickResourceActions };\n","import * as Sentry from '@sentry/vue';\nconst isLocalhost = window.location.hostname === 'localhost';\nconst isEnvDevOrLocal = ['dev', 'local'].includes(`${process.env.VUE_APP_ENV}`);\n\nconst initSentry = (vueRouterRef: any, appInstance: any) => {\n if (!isLocalhost && !isEnvDevOrLocal) {\n Sentry.init({\n ...(appInstance ? { app: appInstance } : {}),\n dsn: 'https://c872c89d21344a3bbd8f18732ac6713b@o340344.ingest.sentry.io/5444532',\n integrations: [\n Sentry.browserTracingIntegration({\n ...(vueRouterRef && { router: vueRouterRef }),\n }),\n ],\n tracesSampleRate: 0.8,\n environment: process.env.VUE_APP_ENV,\n });\n }\n};\n\nconst logError = (error: any) => Sentry.captureException(error);\n\nexport { logError, initSentry };\n","import getDashedTitle from '@/utilities/getDashedTitle';\nimport EventBus from '@/utilities/eventBus';\nimport cardStatuses from '@/mixins/cardStatuses';\nimport { ResourceType } from '@/types/resources';\nimport { getCardStatus } from '@/utilities/defaultCardStatuses';\nimport cardStatusType from '@/types/cardStatusType';\n\nexport default {\n mixins: [cardStatuses],\n data() {\n return {\n currentlyViewed: () => ({}),\n recentlyViewedGenItemTimeout: null,\n };\n },\n computed: {\n displayedCards() {\n return this.$store.getters.getDisplayedCards;\n },\n\n gettersAndIconsMap() {\n return {\n [this.$constants.routeNames.view]: {\n getter: () => this.$store.getters.getSelectedView,\n icon: 'view',\n },\n [this.$constants.routeNames.page]: {\n getter: () => this.$store.getters.getPage,\n icon: (page) => page?.icon?.src || 'page',\n iconType: (page) => page?.icon?.type || 'icon',\n },\n [this.$constants.routeNames.board]: {\n getter: () => this.$store.getters.currentBoard,\n icon: 'board',\n },\n [this.$constants.routeNames.space]: {\n getter: () => this.$store.getters.getCurrentProject,\n icon: (project) => project?.icon?.src || '',\n iconType: (project) => project.icon?.type || '',\n },\n [this.$constants.routeNames.boardCard]: {\n getter: (id) => this.$store.getters.getCardById(id),\n icon: (card) => this.cardStatusIcon(card),\n },\n [this.$constants.epicRoute.name]: {\n getter: (id) => this.$store.getters.getCardById(id),\n icon: (epic) => this.cardStatusIcon(epic),\n additionalIcon: (epic) => epic?.icon || { src: this.$constants.epicDefaultIcon },\n },\n [ResourceType.Member]: {\n getter: (id) => this.$store.getters.getMemberById(id),\n },\n [this.$constants.routeNames.note]: {\n getter: (id) => this.$store.getters.getNotes[id],\n icon: 'note',\n iconType: 'icon',\n },\n };\n },\n\n recentlyViewedLS() {\n const currentTeamIdLS = this.teamId ?? localStorage.getItem('currentTeamId');\n return currentTeamIdLS\n ? JSON.parse(localStorage.getItem(`recentlyViewed:${currentTeamIdLS}`) || '[]')\n : [];\n },\n\n teamId() {\n return this.$store.getters.getTeamID;\n },\n\n teamSlug() {\n return this.$store.getters.getTeamSlug;\n },\n\n pages() {\n return this.$store.getters.getPages;\n },\n\n cards() {\n return this.$store.getters.getCards;\n },\n\n boards() {\n return this.$store.getters.getFlatBoards;\n },\n\n notes() {\n return this.$store.getters.getNotes;\n },\n },\n watch: {\n $route: {\n immediate: true,\n handler(newVal) {\n if (newVal.params?.noteId === this.$constants.newNote) return;\n\n this.recentlyViewedGenItemTimeout = setTimeout(() => {\n const id = newVal.params?.userId || newVal.params?.noteId;\n this.generateItemForRecentlyViewedDropdown(newVal.name, newVal.path, id);\n }, 250);\n },\n },\n displayedCards(newVal, oldVal) {\n // check if any elements from oldVal are missing in newVal\n // these elements are newly opened cards\n const diff = newVal.filter((nv) => !oldVal.some((ov) => ov?.id === nv?.id));\n\n for (const newCard of diff) {\n const { title } = this.$store.getters.getCardById(newCard.id);\n const isEpic = newCard.resource_type === ResourceType.Epic;\n const path = isEpic ? this.$constants.epicRoute.path : 'card';\n const routeName = isEpic\n ? this.$constants.epicRoute.name\n : this.$constants.routeNames.boardCard;\n this.generateItemForRecentlyViewedDropdown(\n routeName,\n `/${this.teamSlug}/${path}-${newCard.id}-${getDashedTitle(title)}/`,\n newCard.id\n );\n return;\n }\n\n this.addItemToRecentlyViewedDropdown();\n },\n teamId: {\n handler(newVal) {\n if (!newVal) return;\n this.setRecentlyViewed(this.recentlyViewedLS);\n },\n immediate: true,\n },\n },\n mounted() {\n EventBus.$on('addQuickCardToRecentlyViewed', this.saveQuickCardCreatedToRecentlyViewed);\n EventBus.$on('addQuickPageToRecentlyViewed', this.saveQuickPageCreatedToRecentlyViewed);\n },\n beforeUnmount() {\n EventBus.$off('addQuickCardToRecentlyViewed', this.saveQuickCardCreatedToRecentlyViewed);\n EventBus.$off('addQuickPageToRecentlyViewed', this.saveQuickPageCreatedToRecentlyViewed);\n\n this.setRecentlyViewed([]);\n this.generateItemForRecentlyViewedDropdown(this.$route.name, this.$route.path);\n clearTimeout(this.recentlyViewedGenItemTimeout);\n },\n methods: {\n setRecentlyViewed(payload) {\n this.$store.dispatch('setElectronRecentlyViewed', payload);\n },\n\n cardStatusIcon(card) {\n const currentCardList = this.$store.getters.lists[card.list_id] || null;\n const cardStatus = currentCardList || this.cardStatuses[card.status] || {};\n const isEpic = card.type === ResourceType.Epic;\n\n return (\n (getCardStatus(cardStatus?.behavior, isEpic) || {}).icon ||\n cardStatus.icon ||\n getCardStatus(cardStatusType.Backlog, isEpic).icon ||\n ''\n );\n },\n\n isInvalidItemForRecentlyViewed(item, type) {\n if (!item) return true;\n if (type === ResourceType.Member) return false;\n\n const { id, title, name } = item;\n return (\n !id ||\n (!title &&\n !name &&\n type !== this.$constants.routeNames.page &&\n type !== this.$constants.routeNames.note)\n );\n },\n\n getLabel(item, type) {\n const memberLabel = item.display_name || `${item.first_name} ${item.last_name}`;\n return (\n item.title ||\n item.name ||\n (type === ResourceType.Member && memberLabel) ||\n (type === this.$constants.routeNames.page ? this.translate('pageTitlePlaceholder') : '') ||\n (type === this.$constants.routeNames.note ? this.translate('untitledNote') : '')\n );\n },\n\n generateItemForRecentlyViewedDropdown(type, path, resourceId) {\n // adds the previously stored item to the dropdown\n this.addItemToRecentlyViewedDropdown(this.teamId);\n\n const config = this.gettersAndIconsMap[type];\n if (!config) return;\n\n const item = config.getter(resourceId);\n\n if (this.isInvalidItemForRecentlyViewed(item, type)) return;\n\n const { id, project_id, time_created } = item;\n const label = this.getLabel(item, type);\n\n const configIconType = typeof config.iconType === 'function' ? config.iconType(item) : '';\n\n let icon;\n if ([this.$constants.epicRoute.name, this.$constants.routeNames.boardCard].includes(type)) {\n icon = {\n name: config.icon(item),\n color: item.list_color,\n };\n } else {\n icon = {\n name: typeof config.icon === 'function' ? config.icon(item) : config.icon,\n color: item.icon?.color || '',\n type: item.icon?.type ? item.icon.type : configIconType,\n };\n }\n\n let additionalIcon;\n if (type === this.$constants.epicRoute.name) {\n additionalIcon = config.additionalIcon(item);\n }\n\n const payload = {\n label,\n icon,\n id,\n type,\n path,\n ...(project_id && { project_id }),\n\n // special case icon, currently only used for epics\n ...(additionalIcon && { additionalIcon }),\n\n // special case for members\n ...(type === ResourceType.Member && {\n role: item.role,\n first_name: item.first_name,\n last_name: item.last_name,\n }),\n\n ...(time_created && { time_created }),\n };\n\n // sets the current item to be added later on\n this.currentlyViewed = payload;\n },\n\n addItemToRecentlyViewedDropdown(teamId = this.teamId) {\n if (Object.keys(this.currentlyViewed).length) {\n const { currentlyViewed } = this;\n this.addToElectronRecentlyViewed({ currentlyViewed, teamId });\n this.currentlyViewed = {};\n }\n },\n\n addToElectronRecentlyViewed(payload) {\n if (this.isResourceDeleted(payload.currentlyViewed)) return;\n this.handleNoteTitleChange(payload);\n this.$store.dispatch('addToElectronRecentlyViewed', payload);\n },\n\n isResourceDeleted(currentlyViewed) {\n if (currentlyViewed.type === this.$constants.routeNames.page) {\n return !this.pages[currentlyViewed.id];\n } else if (currentlyViewed.type === this.$constants.routeNames.boardCard) {\n return !this.cards[currentlyViewed.id];\n } else if (currentlyViewed.type === this.$constants.routeNames.board) {\n return this.boards[`${currentlyViewed.id}_notFound`];\n } else if (currentlyViewed.type === this.$constants.routeNames.note) {\n return !this.notes[currentlyViewed.id];\n }\n return false;\n },\n\n handleNoteTitleChange(payload) {\n if (payload.currentlyViewed.type === this.$constants.routeNames.note) {\n const stateNote = this.notes[payload.currentlyViewed.id];\n if (stateNote && stateNote.title !== payload.currentlyViewed.label) {\n payload.currentlyViewed.label = stateNote.title || this.translate('untitledNote');\n }\n }\n },\n\n saveQuickCardCreatedToRecentlyViewed(card) {\n const path = `/${this.teamSlug}/card-${card.id}-${getDashedTitle(card.title)}`;\n const icon = {\n name: this.cardStatusIcon(card),\n color: card.list_color || '',\n };\n const payload = {\n label: card.title,\n path,\n icon,\n type: this.$constants.routeNames.boardCard,\n id: card.id,\n };\n\n this.addToElectronRecentlyViewed({\n currentlyViewed: payload,\n teamId: this.teamId,\n });\n },\n\n saveQuickPageCreatedToRecentlyViewed(page) {\n const label = page.title || this.translate('pageTitlePlaceholder');\n const path = `/${this.teamSlug}/page-${page.id}-${getDashedTitle(label)}`;\n const icon = {\n name: 'page',\n color: '',\n type: '',\n };\n const payload = {\n label,\n path,\n icon,\n type: this.$constants.routeNames.page,\n id: page.id,\n };\n\n this.addToElectronRecentlyViewed({\n currentlyViewed: payload,\n teamId: this.teamId,\n });\n },\n },\n};\n","import { store } from '@/store';\nimport constants from '@/utilities/constants';\n\nexport default [\n {\n path: `/${constants.routeNames.join}`,\n name: constants.routeNames.join,\n component: () =>\n import(\n /* webpackChunkName: \"authentication\" */ '@/components/pages/authentication/StJoin.vue'\n ),\n meta: { requiresAuth: false },\n },\n {\n path: '/login',\n name: constants.routeNames.login,\n component: () =>\n import(\n /* webpackChunkName: \"authentication\" */ '@/components/pages/authentication/Login.vue'\n ),\n meta: { requiresAuth: false },\n beforeEnter: (to, from, next) => {\n const { redirect } = to.query;\n if (redirect) {\n const redirectQuery = redirect.split('?')[1] || '';\n const [key, value] = redirectQuery.split('=') || [];\n if (key === 'updateEmail' && value === 'true') {\n const team_subdomain = redirect.split('/')[1];\n store.dispatch('setRedirectRouteAfterLogin', {\n params: { team_subdomain },\n query: { [key]: value },\n path: redirect,\n fullPath: redirect,\n });\n }\n }\n next();\n },\n },\n {\n path: `/${constants.routeNames.verifyEmail}`,\n name: constants.routeNames.verifyEmail,\n component: () =>\n import(\n /* webpackChunkName: \"authentication\" */ '@/components/pages/authentication/VerifyEmail.vue'\n ),\n meta: { requiresAuth: false },\n beforeEnter: (to, from, next) => {\n if (!from || from.name !== 'login') {\n return next({ name: 'login' });\n }\n\n return next();\n },\n },\n {\n // electron app -> sign in with google -> redirect to browser -> select account -> redirect to electron ap -> /oauth2\n path: '/oauth2',\n name: 'oauth2',\n meta: { requiresAuth: false },\n beforeEnter: (to, from, next) => {\n const { code, state } = to.query;\n\n if (state !== localStorage.getItem('authStateParam') || !code) {\n return next({ name: 'login' });\n }\n\n localStorage.removeItem('authStateParam');\n\n // pass authentication code to BE\n return store\n .dispatch('passAuthCode', {\n code,\n redirect_uri: constants.desktopRedirectRoutes[process.env.VUE_APP_ENV],\n })\n .then(() => next({ name: constants.routeNames.workspaces }))\n .catch(() => next({ name: 'login' }));\n },\n component: { template: '
' }, // Dummy component to satisfy the type\n },\n {\n path: '/desktop-redirect',\n name: 'desktop-redirect',\n meta: { requiresAuth: false },\n component: () =>\n import(\n /* webpackChunkName: \"authentication\" */ '@/components/pages/authentication/DesktopRedirect.vue'\n ),\n },\n];\n","import constants from '@/utilities/constants';\n\nexport default [\n {\n path: '/workspaces/new',\n name: constants.routeNames.newWorkspace,\n component: () =>\n import(/* webpackChunkName: \"workspaces\" */ '@/components/pages/workspaces/NewWorkspace.vue'),\n },\n {\n path: '/workspaces',\n name: constants.routeNames.workspaces,\n component: () =>\n import(\n /* webpackChunkName: \"workspaces\" */ '@/components/pages/workspaces/ListWorkspaces.vue'\n ),\n },\n {\n path: `/${constants.routeNames.onboardingInfo}`,\n name: constants.routeNames.onboardingInfo,\n component: () =>\n import(/* webpackChunkName: \"workspaces\" */ '@/components/pages/OnboardingGatheringInfo.vue'),\n },\n];\n","import attachGScript from '@/utilities/attachGScript';\n\ndeclare global {\n interface Window {\n ga: any;\n }\n}\n\nconst ga = (...args: any) => {\n if (!window.ga) {\n window.ga = {};\n }\n if (!window.ga.q) window.ga.q = [];\n window.ga.q.push(args);\n};\n\nconst gaInit = (clientTrackingId: string) => {\n if (!clientTrackingId) return Promise.reject(new Error('No client tracking Id'));\n return attachGScript()\n .then((/* event */) => {\n window.ga = ga;\n window.ga.l = +new Date();\n window.ga('create', clientTrackingId);\n window.ga('send', 'pageview');\n })\n .catch((/* error */) => {\n console.warn('Google Analytics script not loaded.');\n });\n};\n\nconst gaMixin = {\n methods: {\n sendGAEvent(eventCategory = '', eventAction = '', eventLabel = '') {\n ga('send', 'event', eventCategory, eventAction, eventLabel);\n },\n },\n};\n\nexport { gaInit, gaMixin, ga };\n","import { store } from '@/store';\nimport constants from '@/utilities/constants';\nimport { ga } from '@/mixins/gAnalytics';\nimport { Page, Project, Team } from '@/types';\nimport isMobile from '../../utilities/isMobile';\nimport { isElectronApp } from '@/mixins/electronHelpersMixin';\nimport { browserStorageSetItem } from '@/utilities/browser-storage.util';\nimport getRouteAfterLogin from '@/utilities/getRouteAfterLogin';\n\nlet popstateDetected = false;\n\nwindow.addEventListener('popstate', () => {\n popstateDetected = true;\n});\n\nconst isLoggingIn = () => {\n const localLogin = localStorage.getItem('login');\n return localLogin === 'authProvider';\n};\n\nconst removeLocalStorageItem = (item: string) => {\n localStorage.removeItem(item);\n};\n\nconst setUser = (user: any) => {\n store.dispatch('setLoggedIn');\n store.dispatch('setUser', user);\n store.dispatch('setOnboardingUserID', user.id);\n};\n\nconst setTeam = (team: any, routeName = '') => {\n if (routeName === constants.routeNames.workspaces) return;\n store.dispatch('setCurrentTeamId', team.id);\n store.dispatch('setTeamSubDomain', team.sub_domain);\n const key = `${team.id}-currentProjectId`;\n const currentProjectId = localStorage.getItem(key);\n if (currentProjectId) {\n store.dispatch('setCurrentProjectId', currentProjectId);\n }\n};\n\nconst getPendingInvities = (user: any, next: Function, routeName: string) => {\n if (window.location.pathname === '/oauth2/authorize') {\n return next();\n }\n store\n .dispatch('getPendingInvities')\n .then((data) => {\n if (data.pending_invites.length === 0 && user.teams.length === 1) {\n setTeam(user.teams[0]);\n const defaultTabName = store.getters.getDefaultTabName;\n return next(defaultTabName);\n }\n if (data.pending_invites.length || user.teams.length) {\n if (routeName === constants.routeNames.workspaces) return next();\n return next({ name: constants.routeNames.workspaces });\n }\n if (isLoggingIn()) {\n store.dispatch('setOnboardingErrorMessage', '');\n return next({ name: constants.routeNames.newWorkspace });\n }\n // no teams and no pending invites\n if (data.pending_invites.length === 0 && user.teams.length === 0) {\n return next({ name: constants.routeNames.newWorkspace });\n }\n removeLocalStorageItem('login');\n })\n .catch(() => {\n if (user.teams?.length) {\n return next({ name: constants.routeNames.workspaces });\n }\n return next({ name: constants.routeNames.newWorkspace });\n });\n};\n\nconst handleRedirectLogin = (user: any, to: any, next: Function) => {\n const teamSubDomain = store.getters.getTeamSubDomain;\n const localCurrentTeamId = localStorage.getItem('currentTeamId');\n const teamIndex = user.teams.findIndex((t: Team) => t.id === localCurrentTeamId);\n store.dispatch('setRedirectRouteAfterLogin', {});\n const isAuthorizeRoute = to.name === 'authorize';\n const getRouteAfterLoginData = getRouteAfterLogin();\n\n if (isAuthorizeRoute || getRouteAfterLoginData.trusted) {\n const fullPath = isAuthorizeRoute ? to.fullPath : getRouteAfterLoginData.fullPath;\n const redirectData = {\n fullPath,\n trusted: true,\n };\n store.dispatch('setRedirectRouteAfterLogin', redirectData);\n browserStorageSetItem('redirectRouteAfterLogin', redirectData);\n if (user.teams.length === 0) {\n return next({ name: constants.routeNames.onboardingInfo });\n }\n store.dispatch('setOnboardingErrorMessage', '');\n return next(fullPath);\n }\n if (teamIndex !== -1) {\n setTeam(user.teams[teamIndex], to?.name);\n removeLocalStorageItem('login');\n if (to.name === 'home') {\n const defaultTabName =\n localStorage.getItem('lastVisitedRoute') || store.getters.getDefaultTabName;\n return next(defaultTabName);\n }\n }\n if (\n to.params.team_subdomain &&\n (!localCurrentTeamId || teamSubDomain !== to.params.team_subdomain)\n ) {\n const team = user.teams.find((t: Team) => t.sub_domain === to.params.team_subdomain);\n if (team && Object.keys(team).length) {\n setTeam(team);\n return next();\n } else {\n return getPendingInvities(user, next, to?.name);\n }\n } else if (teamIndex === -1) {\n return getPendingInvities(user, next, to?.name);\n }\n next();\n};\n\nconst checkGuestAttempt = (to: any, from: any, next: Function) => {\n // when user is guest and trying to access create-space or settings/create-space\n if (\n store.getters.getTeam?.role === 'guest' &&\n [constants.createSpaceRouteName, constants.settingsCreateSpaceRouteName].includes(to.name)\n ) {\n next({\n name: constants.manageSpacesRouteName,\n path: `${store.getters.getTeamSubDomain}/${constants.manageSpacesRouteName}`,\n params: { team_subdomain: store.getters.getTeamSubDomain },\n });\n }\n};\n\nconst handleRedirect = (user: any, to: any) => {\n const teamSubDomain = store.getters.getTeamSubDomain;\n const currentTeamId = localStorage.getItem('currentTeamId') ?? -1;\n let teamIndex = -1;\n if (currentTeamId !== -1) {\n teamIndex = user.teams.findIndex((t: Team) => t.id === currentTeamId);\n }\n if (teamIndex > -1) {\n setTeam(user.teams[teamIndex], to?.name);\n } else if (user.teams.length) {\n const defaultTeam = user.teams[0];\n setTeam(defaultTeam, to?.name);\n }\n if (to.params.team_subdomain && (!currentTeamId || teamSubDomain !== to.params.team_subdomain)) {\n const team = user.teams.find((t: any) => t.sub_domain === to.params.team_subdomain);\n setTeam(team);\n }\n};\n\nconst tryFetchingUser = (to: any, from: any, next: Function) =>\n store\n .dispatch('loadUser')\n .then(({ user }) => {\n setUser(user);\n handleRedirectLogin(user, to, next);\n checkGuestAttempt(to, from, next);\n\n store.dispatch('setOnboardingErrorMessage', '');\n\n if (!from.name) {\n /* User reloading or coming fresh */\n if (to.name === 'page') {\n store.dispatch('setCurrentTabName', 'pages');\n }\n\n if (to.name === 'board') {\n store.dispatch('setCurrentTabName', 'boards');\n }\n }\n })\n .catch((/* error */) => {\n // trusted routes are routes that are allowed to be accessed directly without workspace checks\n const trustedRoutes = ['/oauth2/authorize'];\n const previousRoute = { ...to, trusted: trustedRoutes.includes(to.path) };\n store.dispatch('setPreviousRoute', previousRoute);\n store.dispatch('setRedirectRouteAfterLogin', previousRoute);\n if (to.name !== 'home') {\n browserStorageSetItem('redirectRouteAfterLogin', previousRoute);\n }\n store.dispatch('setNotLoggedIn');\n if (previousRoute.path !== '/login') {\n return next('/login');\n }\n next();\n });\n\nconst handleLogin = (to: any, from: any, next: Function) => {\n if (!store.getters.getLoggedIn || !Object.keys(store.getters.getUser).length) {\n tryFetchingUser(to, from, next);\n } else if (\n (from.name === null || from.name === undefined) &&\n to.name !== 'login' &&\n to.name !== 'create' &&\n to.name !== 'join'\n ) {\n store\n .dispatch('loadUser')\n .then(({ user }) => {\n setUser(user);\n handleRedirect(user, to);\n checkGuestAttempt(to, from, next);\n if (to.name === 'home') {\n if (store.getters.getTeamID && !isLoggingIn()) {\n const teamSlug = store.getters.getTeamSlug;\n const currentProjectId = `${constants.projectSlug}-${store.getters.getCurrentProjectId}`;\n const currentTabName = store.getters.getCurrentTabName;\n removeLocalStorageItem('login');\n return next(`/${teamSlug}/${currentProjectId}/${currentTabName}`);\n }\n }\n next();\n })\n .catch(() => {\n // intentional empty catch block\n });\n } else {\n store.dispatch('setPreviousRoute', from);\n checkGuestAttempt(to, from, next);\n next();\n }\n};\n\nconst loadProjects = async () => {\n await store.dispatch('loadTeamProjects').then((data) => {\n data.forEach((project: Project) => {\n const projectId = project.id;\n const pagesIds: string[] = [];\n const pagesObject: { [key: string]: Page } = {};\n const pagesTree: { [key: string]: { [key: string]: any } } = {\n root: { id: 'root', children: [] },\n };\n const archivePages: { [key: string]: Page } = {};\n const archivedPagesTree: { [key: string]: Page } = {};\n\n project.pages.forEach((page: Page) => {\n pagesIds.push(page.id);\n pagesObject[page.id] = page;\n });\n [...(project.page_order || [])].forEach((p) => {\n pagesTree[p.id] = p;\n });\n [...(project.archive_pages || [])].forEach((p) => {\n archivePages[p.id] = p;\n });\n [...(project.archive_page_order || [])].forEach((p) => {\n archivedPagesTree[p.id] = p;\n });\n\n store.dispatch('setProjectPages', { projectId, pagesIds });\n store.dispatch('setPages', pagesObject);\n store.dispatch('setProjectPagesTree', { projectId, pagesTree });\n store.dispatch('setFlatBoards', project.boards);\n store.dispatch('setProjectBoards', {\n projectId,\n projectBoards: project.board_order,\n });\n store.dispatch('setProjectArchivePagesTree', { projectId, archivedPagesTree });\n store.dispatch('setProjectArchivePages', archivePages);\n });\n });\n};\n\nexport const beforeEachGuard = async (to: any, from: any, next: Function) => {\n if (\n store.getters.getIsAnyCardDisplayedInLayout(constants.fullScreen) &&\n to.name !== constants.routeNames.boardCard &&\n to.name !== constants.routeNames.sprintCard &&\n to.name !== constants.epicRoute.name\n ) {\n store.dispatch('setDisplayedCards');\n }\n if (\n !store.getters.getPreviousNextButtonClicked &&\n to.path !== '/' &&\n isElectronApp() &&\n !(\n from.path === '/' &&\n (to.name === constants.routeNames.boardCard ||\n to.name === constants.epicRoute.name ||\n to.name === constants.routeNames.sprintCard)\n )\n ) {\n store.dispatch('addToElectronBrowseHistory', {\n path: to.path,\n replaceAfterIndex:\n store.getters.getElectronBrowseHistoryIndex !==\n store.getters.getElectronBrowseHistory.length - 1\n ? store.getters.getElectronBrowseHistoryIndex\n : null,\n });\n store.dispatch(\n 'setElectronBrowseHistoryIndex',\n store.getters.getElectronBrowseHistoryIndex + 1\n );\n }\n if (\n isMobile() &&\n to.name !== constants.routeNames.boardCard &&\n to.name !== constants.routeNames.sprintCard &&\n to.name !== constants.epicRoute.name\n ) {\n store.dispatch('setDisplayedCards');\n }\n store.dispatch('setCurrentRoute', to);\n if (\n (from.name === 'page' ||\n from.name === 'board' ||\n from.name === constants.epicsBoardRoute.name ||\n from.name === constants.routeNames.sprint ||\n from.anem === constants.routeNames.sprintsRouteName) &&\n (to.name === 'boards' ||\n to.name === 'pages' ||\n to.name === 'view' ||\n to.name === 'views' ||\n to.name === 'board-card' ||\n to.name === 'sprint-card' ||\n to.name === constants.epicRoute.name ||\n to.name === 'board' ||\n to.name === 'page' ||\n to.name === 'inbox' ||\n to.name === constants.routeNames.sprint ||\n to.name === constants.routeNames.sprintsRouteName)\n ) {\n if (store.getters.getFavouritesOpened) {\n store.dispatch('setFavouritesOpened', false);\n store.dispatch('setOpenedFavouriteItem', {});\n }\n }\n if (to.name !== from.name && (to.name === 'inbox' || to.name === 'views')) {\n store.dispatch('setCurrentBoardId', '');\n store.dispatch('setCurrentPageID', '');\n store.dispatch('setPage', { content: '' });\n }\n\n if (to.meta?.requiresAuth === false) {\n store.dispatch('setPreviousRoute', from);\n next();\n } else {\n handleLogin(to, from, next);\n }\n\n if (\n ![\n 'board',\n 'board-card',\n 'sprint-card',\n constants.epicRoute.name,\n constants.epicsBoardRoute.name,\n ].includes(`${to.name}`)\n ) {\n // destroy board view\n store.dispatch('setBoardViewNoDestroy', false);\n }\n\n if (store.getters.socketDeletedProjects.length) {\n store.dispatch('clearSocketDeletedProjects');\n }\n\n if (!popstateDetected) {\n switch (to.name) {\n case constants.epicsBoardRoute.name:\n case 'board':\n to.meta.scrollPositions[to.params.boardId] = 0;\n break;\n case 'page':\n to.meta.scrollPositions[to.params.pageId] = 0;\n break;\n case 'boards': {\n const projectId = to.params.projectIdParam.split('-')[1];\n to.meta.scrollPositions[projectId] = 0;\n break;\n }\n default:\n break;\n }\n } else if (to.name === 'boards' || to.name === 'sprints') {\n const toProjectId = to.params.projectIdParam?.split('-')[1] || to.params.projectId;\n\n if (toProjectId !== store.getters.getCurrentProjectId) {\n const project = store.getters.getMyProjectById(toProjectId);\n if (!project) {\n await loadProjects();\n }\n store.dispatch('setCurrentProjectId', toProjectId);\n }\n }\n to.meta.popstate = popstateDetected;\n popstateDetected = false;\n};\n\nexport const afterEachGuard = (to: any) => {\n ga('set', 'page', to.path);\n ga('send', 'pageview');\n if (\n !['/login', '/desktop-redirect', '/oauth2'].includes(to.path) &&\n !['authorize', 'login', 'oauth2', 'desktop-redirect'].includes(to.name) &&\n !to.path.includes('/electronnotes')\n ) {\n localStorage.setItem('lastVisitedRoute', to.path);\n }\n};\n\nexport default {\n beforeEachGuard,\n afterEachGuard,\n};\n","import getDashedTitle from '@/utilities/getDashedTitle';\nimport { translate } from '@/utilities';\nimport cons from '@/utilities/constants';\nimport { ResourceType } from '@/types/resources';\nimport { getSprintKey } from '@/utilities/sprintKeys';\n\nfunction makeCardRouteHandler(\n store: any,\n router: any,\n _to: any,\n _from: any,\n type: ResourceType.Card | ResourceType.Epic\n) {\n const previousRoute = sessionStorage.getItem('route');\n const teamSlug = store.getters.getTeamSlug;\n const previousPathByType = type === ResourceType.Epic ? cons.epicRoute.path : 'card';\n const isComingFromVerifyCode = _from.name === 'verify-email';\n const reloadWithPreviousRoute =\n (_from.fullPath === '/' || isComingFromVerifyCode) && // Coming from root or verify-email\n previousRoute &&\n previousRoute !== '/' &&\n previousRoute !== '/login' && // Previous route is not root or login\n !previousRoute.includes(`${teamSlug}/${previousPathByType}-`); // Previous route doesn't include '/card-' or '/project-'\n const reloadWithoutPreviousRoute =\n (_from.fullPath === '/' || isComingFromVerifyCode) &&\n (!previousRoute || previousRoute === '/' || previousRoute === '/login');\n const cardOpenedFromSettings = previousRoute?.includes('/settings/');\n let toPath = _to.fullPath.replace(\n /\\?userNavigated=true|&userNavigated=true|&cardIdButton=true|\\?cardIdButton=true|\\?cardMoved=true|&cardMoved=true|\\?cardOpenedFromNotes=true|&cardOpenedFromNotes=true/g,\n ''\n );\n\n if (type === ResourceType.Epic && _to.params?.selectedTabId) {\n const tabIdToAdd = `/${_to.params.selectedTabId}`;\n if (!toPath.endsWith(tabIdToAdd)) {\n toPath += tabIdToAdd;\n }\n }\n\n const isCardMoved = _to.query?.cardMoved;\n const cardOpenedFromNotes = _to.query?.cardOpenedFromNotes;\n const usePush =\n isCardMoved ||\n (['inbox'].includes(_from.name) && !store.getters.getIsAnyCardDisplayed) ||\n cardOpenedFromNotes;\n\n const isCardIdButtonClicked = _to.query?.cardIdButton;\n\n return function cardRouteHandler(data: any, type: ResourceType.Card | ResourceType.Epic) {\n const card = data;\n if (\n isCardMoved ||\n reloadWithoutPreviousRoute ||\n isCardIdButtonClicked ||\n cardOpenedFromSettings ||\n cardOpenedFromNotes ||\n (reloadWithoutPreviousRoute && store.getters.getIsSettingsOpen) ||\n isComingFromVerifyCode\n ) {\n let boardId = '';\n if (card.sprint_id) {\n boardId = getSprintKey(card.project_id, card.sprint_id);\n } else if (card.type === ResourceType.Epic) {\n boardId = cons.epicsBoardId;\n } else {\n boardId = card.board_id;\n }\n\n const projectId = card.project_id;\n const boardTitle = store.getters.getFlatBoards[boardId]?.title || '';\n const routeItemName = card.sprint_id ? 'sprint' : 'board';\n const dashedBoardTitle = getDashedTitle(boardTitle);\n\n let nextRoute = '';\n if (!boardId) {\n nextRoute = `/${teamSlug}/space-${card.project_id}/boards`;\n } else if (boardId === cons.epicsBoardId) {\n nextRoute = `/${teamSlug}/${cons.epicsBoardRoute.path}`;\n } else {\n nextRoute = `/${teamSlug}/${routeItemName}-${boardId}-${dashedBoardTitle}/${store.getters.cardsLayout()}`;\n }\n\n const boardRouteWithoutCardsLayout = `/${teamSlug}/${routeItemName}-${boardId}-${dashedBoardTitle}`;\n\n if (\n router.currentRoute.fullPath !== nextRoute &&\n router.currentRoute.fullPath !== boardRouteWithoutCardsLayout\n ) {\n // if usePush then push route instead of replace route to allow back navigation to inbox\n const routerCommand = usePush ? 'push' : 'replace';\n const { state } = history;\n router[routerCommand]({\n path: card.sprint_id ? boardRouteWithoutCardsLayout : nextRoute,\n }).then(() => {\n // After successful navigation to the previous route, update history\n const historyStateProps = isComingFromVerifyCode\n ? {\n back: toPath,\n current: toPath,\n }\n : {\n back: state.current,\n current: toPath,\n };\n history.replaceState(\n { ...state, cardId: _to.params.cardId, ...historyStateProps },\n '',\n toPath\n );\n localStorage.setItem('lastVisitedRoute', toPath);\n\n if (isCardIdButtonClicked && boardId && !_from.name.includes('inbox')) {\n const { cardId } = history.state || '';\n if (cardId) {\n const [, sprintId] = _from.params?.sprintId?.split('s') || [];\n const card = store.getters.getCardById(cardId);\n const boardIdFromRoute = _from.params?.boardId;\n if (\n (card && boardIdFromRoute && card.board_id === boardIdFromRoute) ||\n (sprintId && sprintId === card.sprint_id)\n )\n return;\n }\n const notificationMessage =\n type === ResourceType.Epic\n ? translate('roadmapOpenedInTheBackground')\n : translate('boardOpenedInTheBackground', {\n boardTitle,\n });\n store.dispatch('setCurrentBoardId', boardId);\n store.dispatch('setCurrentProjectId', projectId);\n store.dispatch('addUiNotification', { message: notificationMessage });\n } else {\n // Set and display the card\n store.dispatch('setDisplayedCards', [_to.params.cardId]);\n }\n });\n }\n } else if (reloadWithPreviousRoute) {\n const { state } = history;\n router.replace({ path: previousRoute }).then(() => {\n history.replaceState(\n { ...state, back: state.current, cardId: _to.params.cardId },\n '',\n toPath\n );\n localStorage.setItem('lastVisitedRoute', toPath);\n\n // Fetch and display the card\n store.dispatch('setDisplayedCards', [_to.params.cardId]);\n });\n }\n\n if (\n _to.query.userNavigated &&\n !reloadWithPreviousRoute &&\n !isCardIdButtonClicked &&\n !reloadWithoutPreviousRoute\n ) {\n history.pushState(\n {\n ...history.state,\n cardId: _to.params.cardId,\n back: history.state.current,\n current: toPath,\n },\n '',\n toPath\n );\n localStorage.setItem('lastVisitedRoute', toPath);\n }\n };\n}\n\nfunction cardBeforeEnterHandler(store: any, router: any, to: any, from: any, next: any) {\n const type = to.name === cons.epicRoute.name ? ResourceType.Epic : ResourceType.Card;\n\n // add function to handle card\n const cardRouteHandler = makeCardRouteHandler(store, router, to, from, type);\n // check if card is already on state don't fetch it again\n if (store.getters.getCards[to.params.cardId]) {\n cardRouteHandler(store.getters.getCards[to.params.cardId], type);\n } else {\n store\n .dispatch('fetchCard', {\n cardId: to.params.cardId,\n type,\n })\n .then((card: any) => {\n cardRouteHandler(card, type);\n })\n .catch(() => {\n if (from.path === '/') {\n next({\n name: 'cardnotfound',\n params: {\n team_subdomain: store.getters.getTeamSlug,\n cardId: to.params.cardId,\n cardTitle: to.params.cardTitle,\n },\n });\n } else {\n store.dispatch('itemNotFound', true);\n }\n });\n }\n}\n\nexport { makeCardRouteHandler, cardBeforeEnterHandler };\n","import type { RouteLocationRaw } from 'vue-router';\nimport type { Store } from 'vuex';\n\nexport type RoleList = { allowed: string[] } | { disallowed: string[] };\n\n/**\n * @param store\n * @param redirect The list of redirects. Provide undefined if you want to use this with next() within a beforeEnter guard.\n * @param roles\n * @returns\n */\nexport default function (\n store: Store,\n redirect: { pass: RouteLocationRaw | undefined; fail: RouteLocationRaw | undefined },\n roles: RoleList\n): RouteLocationRaw | undefined {\n if (!store.getters.getUser.teams) return redirect.pass;\n const currentRole = store.getters.getUser.teams?.find(\n (team: any) => team.id === store.getters.getTeamID\n ).role;\n if ('allowed' in roles && roles.allowed) {\n if (roles.allowed.includes(currentRole)) {\n return redirect.pass;\n }\n }\n if ('disallowed' in roles && roles.disallowed) {\n if (!roles.disallowed.includes(currentRole)) {\n return redirect.pass;\n }\n }\n return redirect.fail;\n}\n","import getDashedTitle from '@/utilities/getDashedTitle';\nimport constants from '@/utilities/constants';\nimport { BoardLayout } from '@superthread-com/api';\n\nexport default async function (store: any, to: any, _from: any, next: any) {\n const teamSlug = store.getters.getTeamSlug;\n\n if (to.params.cardsLayout === BoardLayout.Timeline) {\n await store.dispatch('getAllTeamFeatures');\n\n if (!store.getters.getTeamFeatureEnabled(constants.featureFlagIds.timelineLayout)) {\n const path = `/${teamSlug}/board-${to.params.boardId}${getDashedTitle(\n to.params.boardTitle\n )}/board`;\n next({ path });\n }\n }\n if (to.params.boardId) {\n store.dispatch('setCurrentBoardId', to.params.boardId);\n }\n store.dispatch('setCurrentTabName', 'boards');\n next();\n}\n","import checkRole from './checkRole';\nimport { TeamMemberRole } from '@superthread-com/api';\nimport type { Store } from 'vuex';\nimport { RootState } from '@/types';\n\nexport default function (store: Store, next: Function, failPath: string = '') {\n const roleCheck = checkRole(\n store,\n {\n pass: undefined,\n fail: { path: failPath },\n },\n { disallowed: [TeamMemberRole.GuestReader] }\n );\n return roleCheck;\n}\n","import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router';\nimport { translate } from '@/utilities';\nimport constants from '@/utilities/constants';\nimport { store } from '@/store';\nimport { authRefresh } from '../utilities/api';\nimport authentication from './modules/authentication';\nimport workspaces from './modules/workspaces';\nimport { beforeEachGuard, afterEachGuard } from './utilities';\nimport { cardBeforeEnterHandler } from './utilities/cardRouteHandler';\nimport EventBus from '../utilities/eventBus';\nimport checkRole from './utilities/checkRole';\nimport boardViewBeforeEnter from '@/router/utilities/boardViewBeforeEnter';\nimport { TeamMemberRole } from '@superthread-com/api';\nimport { EpicTabId } from '@/types/tabs';\nimport guestReaderCheck from './utilities/guestReaderCheck';\nimport { browserStorageGetItem, browserStorageRemoveItem } from '@/utilities/browser-storage.util';\nimport getCalendarIntegration from '@/utilities/getCalendarIntegration';\nimport useIsElectronApp from '@/utilities/composables/useIsElectronApp';\nconst { isElectronApp } = useIsElectronApp();\n\nconst router = createRouter({\n history: createWebHistory(process.env.BASE_URL),\n routes: [\n {\n path: '/:pathMatch(.*)*',\n name: 'notfound',\n component: () =>\n import(/* webpackChunkName: \"404notfound\" */ '../components/pages/NotFound.vue'),\n },\n\n // APP //\n {\n path: '',\n name: 'home',\n },\n\n ...authentication,\n ...workspaces,\n\n {\n path: '/integrations',\n name: 'integrations',\n component: () =>\n import(/* webpackChunkName: \"integrations\" */ '../components/pages/Integrations.vue'),\n beforeEnter: (to, _from, next) => {\n if (to.query.state) {\n const integration: any = to.query.type;\n store\n .dispatch('createInstallationForIntegration', {\n integration,\n payload: {\n [integration]: {\n id: to.query.installation_id,\n },\n },\n })\n .then(() => {\n store.dispatch('addUiNotification', {\n message: translate('gitHubConnected'),\n duration: 5000,\n });\n });\n const workspaces = store.getters.getUser.teams;\n const workspace = workspaces.find((ws: any) => ws.id === to.query.state);\n const defaultTabName = store.getters.getDefaultTabName;\n\n if (workspace) {\n store.dispatch('setCurrentTeamId', workspace.id);\n store.dispatch('setTeamSubDomain', workspace.sub_domain);\n const key = `${workspace.id}-currentProjectId`;\n const currentProjectIdForWs = localStorage.getItem(key);\n if (currentProjectIdForWs) {\n store.dispatch('setCurrentProjectId', currentProjectIdForWs);\n }\n store.dispatch('fetchTeamMembers').catch(() => {});\n router.push(defaultTabName);\n }\n }\n next();\n },\n },\n\n {\n path: '/:team_subdomain/login/',\n name: constants.routeNames.teamLogin,\n component: () =>\n import(\n /* webpackChunkName: \"loginOnboarding\" */ '../components/pages/authentication/Login.vue'\n ),\n meta: { requiresAuth: false },\n },\n\n {\n path: `/${constants.electronNotesOnboardingRoute.path}`,\n name: constants.electronNotesOnboardingRoute.name,\n component: () =>\n import(\n /* webpackChunkName: \"projectPages\" */ '../components/notes/ElectronNoteOnboarding.vue'\n ),\n },\n\n {\n // settings without workspace, navigate to current workspace\n path: '/settings:pathMatch(.*)*',\n redirect: (to) => {\n const teamSlug = store.getters.getTeamSlug;\n const pathMatch = Array.isArray(to.params.pathMatch) ? to.params.pathMatch.join('/') : '';\n return {\n path: `/${teamSlug}/settings${pathMatch ?? ''}`,\n query: to.query,\n };\n },\n },\n\n {\n // inbox without workspace, navigate to current workspace\n path: '/inbox:pathMatch(.*)*',\n redirect: (to) => {\n const teamSlug = store.getters.getTeamSlug;\n const pathMatch = Array.isArray(to.params.pathMatch) ? to.params.pathMatch.join('/') : '';\n return {\n path: `/${teamSlug}/inbox${pathMatch ? '/' + pathMatch : ''}`,\n query: to.query,\n };\n },\n },\n\n {\n path: '/:team_subdomain/settings',\n name: 'settings',\n component: () => import(/* webpackChunkName: \"settings\" */ '../settings/pages/Settings.vue'),\n redirect: () => {\n const teamSlug = store.getters.getTeamSlug;\n return { path: `/${teamSlug}/settings/profile` };\n },\n beforeEnter: (_to, from, next) => {\n EventBus.$emit('closeCard');\n store.dispatch('setRouteBeforeSettings', from.path);\n next();\n },\n children: [\n {\n path: 'integration',\n name: 'integration',\n components: {\n Settings: () =>\n import(/* webpackChunkName: \"settings\" */ '@/settings/pages/Integration.vue'),\n },\n redirect: () => {\n const teamSlug = store.getters.getTeamSlug;\n return { path: `/${teamSlug}/settings/integration/github` };\n },\n beforeEnter: (_, __, next) => {\n const teamSlug = store.getters.getTeamSlug;\n const roleCheck = guestReaderCheck(store, next, `/${teamSlug}/settings`);\n\n if (roleCheck) {\n return next(roleCheck);\n }\n next();\n },\n children: [\n {\n path: 'github',\n name: 'github',\n component: () =>\n import(/* webpackChunkName: \"settings\" */ '@/settings/pages/GithubIntegration.vue'),\n },\n {\n path: 'zapier',\n name: 'zapier',\n component: () =>\n import(/* webpackChunkName: \"settings\" */ '@/settings/pages/ZapierIntegration.vue'),\n },\n {\n path: 'slack',\n name: 'slack',\n component: () =>\n import(/* webpackChunkName: \"settings\" */ '@/settings/pages/SlackUnfurling.vue'),\n beforeEnter: (to, _from, next) => {\n const integration = 'slack_team_unfurl';\n const teamSlug = store.getters.getTeamSlug;\n\n const state = localStorage.getItem('slackOAuthState');\n localStorage.removeItem('slackOAuthState');\n if (to.query.code && to.query.state === state) {\n const redirectUri = `${window.location.origin}/${teamSlug}/settings/integration/slack`;\n store\n .dispatch('createInstallationForIntegration', {\n integration,\n payload: {\n slack_team_unfurl: {\n code: to.query.code,\n redirect_uri: redirectUri,\n },\n },\n })\n .then(() => {\n store\n .dispatch('getTeamIntegrationInstallations', {\n integration,\n })\n .then(() => {\n router.push(`/${teamSlug}/settings/integration/slack`);\n next();\n });\n })\n .catch(() => {\n next();\n });\n } else {\n store\n .dispatch('getTeamIntegrationInstallations', {\n integration,\n })\n .then(() => {\n next();\n })\n .catch(() => {\n next();\n });\n }\n },\n },\n ],\n },\n {\n path: 'tags',\n name: 'tags',\n components: {\n Settings: () =>\n import(/* webpackChunkName: \"settings\" */ '@/settings/pages/WorkspaceTags.vue'),\n },\n beforeEnter: (to, from, next) => {\n const teamSlug = store.getters.getTeamSlug;\n const roleCheck = guestReaderCheck(store, next, `/${teamSlug}/settings`);\n\n if (roleCheck) {\n return next(roleCheck);\n }\n store\n .dispatch('fetchTags', {\n projectId: store.getters.getCurrentProjectId,\n })\n .then(() => {\n next();\n });\n },\n },\n {\n path: constants.settingsTemplate.root,\n components: {\n Settings: () =>\n import(/* webpackChunkName: \"settings\" */ '@/settings/pages/WorkspaceTemplates.vue'),\n },\n children: [\n {\n path: '',\n redirect: () => {\n return {\n name: constants.settingsTemplate.card.root.name,\n };\n },\n },\n ],\n },\n {\n path: `${constants.settingsTemplate.root}/${constants.settingsTemplate.card.root.path}`,\n name: constants.settingsTemplate.card.root.name,\n components: {\n Settings: () =>\n import(/* webpackChunkName: \"settings\" */ '@/settings/pages/WorkspaceTemplates.vue'),\n },\n beforeEnter: (_, __, next) => {\n const teamSlug = store.getters.getTeamSlug;\n const roleCheck = guestReaderCheck(store, next, `/${teamSlug}/settings`);\n\n if (roleCheck) {\n return next(roleCheck);\n }\n next();\n },\n children: [\n {\n path: constants.settingsTemplate.card.create.path,\n name: constants.settingsTemplate.card.create.name,\n component: () =>\n import(\n /* webpackChunkName: \"settings\" */ '@/settings/pages/WorkspaceTemplateContent.vue'\n ),\n },\n {\n path: `${constants.settingsTemplate.card.edit.path}/:templateId`,\n name: constants.settingsTemplate.card.edit.name,\n component: () =>\n import(\n /* webpackChunkName: \"settings\" */ '@/settings/pages/WorkspaceTemplateContent.vue'\n ),\n },\n ],\n },\n {\n path: `${constants.settingsTemplate.root}/${constants.settingsTemplate.page.root.path}`,\n name: constants.settingsTemplate.page.root.name,\n components: {\n Settings: () =>\n import(/* webpackChunkName: \"settings\" */ '@/settings/pages/WorkspaceTemplates.vue'),\n },\n beforeEnter: (_, __, next) => {\n const teamSlug = store.getters.getTeamSlug;\n const roleCheck = guestReaderCheck(store, next, `/${teamSlug}/settings`);\n\n if (roleCheck) {\n return next(roleCheck);\n }\n next();\n },\n children: [\n {\n path: constants.settingsTemplate.page.create.path,\n name: constants.settingsTemplate.page.create.name,\n component: () =>\n import(\n /* webpackChunkName: \"settings\" */ '@/settings/pages/WorkspaceTemplateContent.vue'\n ),\n },\n {\n path: `${constants.settingsTemplate.page.edit.path}/:templateId`,\n name: constants.settingsTemplate.page.edit.name,\n component: () =>\n import(\n /* webpackChunkName: \"settings\" */ '@/settings/pages/WorkspaceTemplateContent.vue'\n ),\n },\n ],\n },\n {\n path: `${constants.settingsTemplate.root}/${constants.settingsTemplate.note.root.path}`,\n name: constants.settingsTemplate.note.root.name,\n components: {\n Settings: () =>\n import(/* webpackChunkName: \"settings\" */ '@/settings/pages/WorkspaceTemplates.vue'),\n },\n beforeEnter: (_, __, next) => {\n const teamSlug = store.getters.getTeamSlug;\n const roleCheck = guestReaderCheck(store, next, `/${teamSlug}/settings`);\n\n if (roleCheck) {\n return next(roleCheck);\n }\n next();\n },\n children: [\n {\n path: constants.settingsTemplate.note.create.path,\n name: constants.settingsTemplate.note.create.name,\n component: () =>\n import(\n /* webpackChunkName: \"settings\" */ '@/settings/pages/WorkspaceTemplateContent.vue'\n ),\n },\n {\n path: `${constants.settingsTemplate.note.edit.path}/:templateId`,\n name: constants.settingsTemplate.note.edit.name,\n component: () =>\n import(\n /* webpackChunkName: \"settings\" */ '@/settings/pages/WorkspaceTemplateContent.vue'\n ),\n },\n {\n path: `${constants.settingsTemplate.note.view.path}/:templateId`,\n name: constants.settingsTemplate.note.view.name,\n component: () =>\n import(\n /* webpackChunkName: \"settings\" */ '@/settings/pages/WorkspaceTemplateContent.vue'\n ),\n },\n ],\n },\n {\n path: 'members',\n name: 'members',\n components: {\n Settings: () =>\n import(/* webpackChunkName: \"settings\" */ '@/settings/pages/MembersManagement.vue'),\n },\n beforeEnter: (to, from, next) => {\n const teamSlug = store.getters.getTeamSlug;\n const roleCheck = guestReaderCheck(store, next, `/${teamSlug}/settings`);\n\n if (roleCheck) {\n return next(roleCheck);\n }\n if (from.name) {\n authRefresh();\n next();\n } else {\n Promise.all([\n store.dispatch('fetchTeamMembers').catch(() => {}),\n authRefresh(),\n store.dispatch('getTeamPendingInvities'),\n ]).then(() => {\n next();\n });\n }\n },\n },\n {\n path: 'general',\n name: 'general',\n components: {\n Settings: () =>\n import(/* webpackChunkName: \"settings\" */ '@/settings/pages/WorkspaceManagement.vue'),\n },\n beforeEnter: (_, __, next) => {\n const teamSlug = store.getters.getTeamSlug;\n const roleCheck = guestReaderCheck(store, next, `/${teamSlug}/settings`);\n\n if (roleCheck) {\n return next(roleCheck);\n }\n next();\n },\n },\n {\n path: 'import',\n name: 'import',\n components: {\n Settings: () =>\n import(/* webpackChunkName: \"settings\" */ '@/settings/pages/Import.vue'),\n },\n beforeEnter: (to, from, next) => {\n const teamSlug = store.getters.getTeamSlug;\n const roleCheck = guestReaderCheck(store, next, `/${teamSlug}/settings`);\n\n if (roleCheck) {\n return next(roleCheck);\n }\n store\n .dispatch('getImportHistory')\n .then((data) => {\n store.dispatch('setImportHistory', data);\n next();\n })\n .catch(() => {\n next();\n });\n },\n children: [\n {\n path: 'trello',\n name: 'trello',\n component: () =>\n import(/* webpackChunkName: \"settings\" */ '@/settings/pages/ImportSetup.vue'),\n },\n {\n path: 'jira',\n name: 'jira',\n component: () =>\n import(/* webpackChunkName: \"settings\" */ '@/settings/pages/ImportSetup.vue'),\n },\n {\n path: 'shortcut',\n name: 'shortcut',\n component: () =>\n import(/* webpackChunkName: \"settings\" */ '@/settings/pages/ImportSetup.vue'),\n },\n ],\n },\n {\n path: 'billing',\n name: 'billing',\n redirect: () => {\n const teamSlug = store.getters.getTeamSlug;\n return { path: `/${teamSlug}/settings/billing/plan` };\n },\n components: {\n Settings: () =>\n import(/* webpackChunkName: \"settings\" */ '@/settings/pages/PlanAndBilling.vue'),\n },\n children: [\n {\n path: 'plan',\n name: 'plan',\n beforeEnter: (_to, _from, next) => {\n const teamSlug = store.getters.getTeamSlug;\n const roleCheck = checkRole(\n store,\n {\n pass: undefined,\n fail: { path: `/${teamSlug}/settings` },\n },\n { allowed: ['owner', 'admin'] }\n );\n if (roleCheck) {\n next(roleCheck);\n } else {\n next();\n }\n },\n component: () =>\n import(/* webpackChunkName: \"settings\" */ '@/settings/pages/Plan.vue'),\n },\n {\n path: 'payment',\n name: 'payment',\n beforeEnter: (_to, _from, next) => {\n const teamSlug = store.getters.getTeamSlug;\n const roleCheck = checkRole(\n store,\n {\n pass: undefined,\n fail: { path: `/${teamSlug}/settings` },\n },\n { allowed: ['owner', 'admin'] }\n );\n if (roleCheck) {\n next(roleCheck);\n } else {\n next();\n }\n next();\n },\n component: () =>\n import(/* webpackChunkName: \"settings\" */ '@/settings/pages/Billing.vue'),\n },\n ],\n },\n {\n path: 'profile',\n name: 'profile',\n components: {\n Settings: () =>\n import(/* webpackChunkName: \"settings\" */ '@/settings/pages/EditUserProfile.vue'),\n },\n },\n {\n path: 'notes',\n name: constants.routeNames.notesSettings,\n components: {\n Settings: () =>\n import(/* webpackChunkName: \"settings\" */ '@/settings/pages/NotesSettings.vue'),\n },\n beforeEnter: async (to, from, next) => {\n const state = browserStorageGetItem(constants.OAuthState.googleCalendar);\n const redirectUri = browserStorageGetItem(\n constants.OAuthState.googleCalendarRedirectUri\n );\n const integration = constants.googleCalendarIntegration;\n\n browserStorageRemoveItem(constants.OAuthState.googleCalendar);\n browserStorageRemoveItem(constants.OAuthState.googleCalendarRedirectUri);\n\n if (to.query.code && to.query.state === state) {\n try {\n await store.dispatch('createInstallationForIntegration', {\n integration,\n payload: {\n google_calendar_user_notes: {\n code: to.query.code,\n redirect_uri: redirectUri,\n },\n },\n });\n\n getCalendarIntegration({ store, fetchEvents: isElectronApp.value });\n } catch (_) {\n next({ name: constants.routeNames.notesSettings });\n }\n } else {\n await getCalendarIntegration();\n }\n\n next();\n },\n },\n {\n path: 'preferences',\n name: 'preferences',\n components: {\n Settings: () =>\n import(/* webpackChunkName: \"settings\" */ '@/settings/pages/Preferences.vue'),\n },\n },\n {\n path: 'manage-spaces',\n name: constants.settingsManageSpacesRouteName,\n components: {\n Settings: () =>\n import(\n /* webpackChunkName: \"settings\" */ '@/settings/pages/ManageProjectsContent.vue'\n ),\n },\n beforeEnter: (_, __, next) => {\n if (store.getters.getCurrentProjectId) {\n store.dispatch('setCurrentProjectId', '');\n }\n next();\n },\n },\n {\n path: 'create-space',\n name: constants.settingsCreateSpaceRouteName,\n components: {\n Settings: () =>\n import(\n /* webpackChunkName: \"settings\" */ '@/settings/pages/CreateProjectContent.vue'\n ),\n },\n beforeEnter: (_, __, next) => {\n const teamSlug = store.getters.getTeamSlug;\n const roleCheck = guestReaderCheck(store, next, `/${teamSlug}/settings`);\n\n if (roleCheck) {\n return next(roleCheck);\n }\n\n next();\n },\n },\n\n {\n path: `${constants.projectSlug}-:projectIdParam`,\n name: constants.settingsSpaceRouteName,\n components: {\n Settings: () =>\n import(/* webpackChunkName: \"settings\" */ '@/settings/pages/SettingsProjects.vue'),\n },\n beforeEnter: (to, _from, next) => {\n const teamSlug = store.getters.getTeamSlug;\n const roleCheck = guestReaderCheck(store, next, `/${teamSlug}/settings`);\n\n if (roleCheck) {\n return next(roleCheck);\n }\n const projectId = to.params.projectIdParam;\n if (projectId !== store.getters.getSettingsCurrentProjectId)\n store.dispatch('setSettingsCurrentProjectId', projectId);\n next();\n },\n children: [\n {\n path: `boards`,\n name: constants.settingsBoardsRouteName,\n component: () =>\n import(/* webpackChunkName: \"settings\" */ '@/settings/pages/BoardsSettings.vue'),\n beforeEnter: async (to, _from, next) => {\n const gitHubIntegrated =\n store.getters.getIntegrationInstallations('github').length > 0;\n if (!gitHubIntegrated) {\n store.dispatch('getTeamIntegrationInstallations', {\n integration: 'github',\n });\n }\n store.dispatch('getTeamIntegrationInstallations', {\n integration: constants.webhookIntegrations.slackChannel,\n });\n\n const projectId = to.params?.projectIdParam;\n if (projectId) {\n try {\n const sprint = await store.dispatch('getSprintSettings', projectId);\n const { board_order: projectBoards } = await store.dispatch(\n 'loadBoards',\n projectId\n );\n store.dispatch('setProjectPreviewBoards', {\n projectBoards,\n projectId,\n });\n const [firstBoardId] = projectBoards ?? [];\n if (store.getters.getSettingsCurrentBoardId === -1) {\n store.dispatch('setSettingsCurrentBoardId', firstBoardId);\n }\n\n if (to?.name === constants.settingsBoardsRouteName) {\n if (sprint.enabled && !to.params.boardId) {\n next({\n path: `${to.path}/sprints`,\n });\n return;\n } else if (projectBoards.length && !sprint.enabled) {\n next({\n path: `${to.path}/${firstBoardId}`,\n });\n return;\n }\n }\n next();\n } catch (e) {\n next();\n }\n } else {\n next();\n }\n },\n children: [\n {\n path: ':boardId',\n name: constants.settingsSelectedBoardRouteName,\n component: () =>\n import(\n /* webpackChunkName: \"settings\" */ '@/settings/pages/BoardsSettings.vue'\n ),\n beforeEnter: (_to, _from, next) => {\n const boardId = _to.params?.boardId;\n const projectId = _to.params?.projectIdParam;\n\n const slackChannelWebhookIntegrated = store.getters\n .getIntegrationInstallations(constants.webhookIntegrations.slackChannel)\n .find((i: any) => i.slack_channel_webhook?.board_id === boardId);\n\n if (!slackChannelWebhookIntegrated) {\n store.dispatch('getTeamIntegrationInstallations', {\n integration: constants.webhookIntegrations.slackChannel,\n });\n }\n\n if (projectId) {\n store\n .dispatch('loadBoards', projectId)\n .then(({ board_order: projectBoards }) => {\n if (!projectBoards.includes(boardId) && boardId !== 'sprints') {\n next({\n name: constants.settingsBoardsRouteName,\n params: {\n ..._to.params,\n },\n });\n store.dispatch('addUiNotification', {\n message: translate('boardDoesNotExists'),\n status: constants.uiNotificationStatuses.error,\n });\n }\n });\n }\n\n next();\n },\n children: [\n {\n path: 'slack',\n name: 'slack-channel-integration',\n beforeEnter: (_to, _from, next) => {\n const state = browserStorageGetItem(constants.OAuthState.slack);\n const redirectUri = browserStorageGetItem(\n constants.OAuthState.slackRedirectUri\n );\n const integration = constants.webhookIntegrations.slackChannel;\n const boardId = _to.params.boardId;\n const slackCode = _to.query.code;\n const slackState = _to.query.state;\n\n browserStorageRemoveItem(constants.OAuthState.slack);\n browserStorageRemoveItem(constants.OAuthState.slackRedirectUri);\n\n if (slackCode && state === slackState) {\n const webhookInstallation = {\n integration,\n payload: {\n slack_channel_webhook: {\n code: slackCode,\n board_id: boardId,\n redirect_uri: redirectUri,\n },\n },\n };\n\n store\n .dispatch('createInstallationForIntegration', webhookInstallation)\n .then(({ data }) => {\n store.dispatch('createBoardWebhookNotification', {\n boardId,\n integration,\n integrationId: data.id,\n });\n })\n .then(() => {\n store.dispatch('getTeamIntegrationInstallations', {\n integration: constants.webhookIntegrations.slackChannel,\n });\n })\n .catch(() => {\n store.dispatch('addUiNotification', {\n message: translate('slackIntegrationError'),\n status: constants.uiNotificationStatuses.error,\n });\n });\n\n next({\n name: constants.settingsSelectedBoardRouteName,\n params: _to.params,\n });\n } else {\n store.dispatch('addUiNotification', {\n message: translate('slackIntegrationError'),\n status: constants.uiNotificationStatuses.error,\n });\n next({\n name: constants.settingsSelectedBoardRouteName,\n params: _to.params,\n });\n }\n },\n },\n ],\n },\n ],\n },\n {\n path: `sprints`,\n name: constants.settingsSprintsRouteName,\n component: () =>\n import(/* webpackChunkName: \"settings\" */ '@/settings/pages/SprintsSettings.vue'),\n },\n ],\n },\n\n {\n path: 'notifications',\n name: 'notifications',\n components: {\n Settings: () =>\n import(\n /* webpackChunkName: \"settings\" */ '@/settings/pages/NotificationsIntegrations.vue'\n ),\n },\n beforeEnter: (to, from, next) => {\n const teamSlug = store.getters.getTeamSlug;\n const roleCheck = guestReaderCheck(store, next, `/${teamSlug}/settings`);\n\n if (roleCheck) {\n return next(roleCheck);\n }\n // load notification digest\n store.dispatch('fetchNotificationDigest').then(() => {\n store.dispatch('fetchNotificationDigestSettings');\n });\n\n const integration = 'slack_user';\n const state = localStorage.getItem('slackOAuthState');\n localStorage.removeItem('slackOAuthState');\n if (to.query.code && to.query.state === state) {\n const teamSlug = store.getters.getTeamSlug;\n const redirectUri = `${window.location.origin}/${teamSlug}/settings/notifications`;\n store\n .dispatch('createInstallationForIntegration', {\n integration,\n payload: {\n slack_user: {\n code: to.query.code,\n redirect_uri: redirectUri,\n },\n },\n })\n .then(() => {\n store\n .dispatch('getTeamIntegrationInstallations', {\n integration,\n })\n .then(() => {\n store.dispatch('getTeamIntegrationsSettings', integration).then((data) => {\n if (data.slack_user) {\n store.dispatch('setIntegrationSettings', {\n integration: integration,\n settings: data.slack_user,\n });\n }\n router.push(`/${teamSlug}/settings/notifications`);\n next();\n });\n });\n })\n .catch(() => {\n next();\n });\n } else {\n store\n .dispatch('getTeamIntegrationInstallations', { integration })\n .then(() => {\n store.dispatch('getTeamIntegrationsSettings', integration).then((data) => {\n if (data.slack_user) {\n store.dispatch('setIntegrationSettings', {\n integration: integration,\n settings: data.slack_user,\n });\n }\n next();\n });\n })\n .catch(() => {\n next();\n });\n }\n },\n },\n ],\n },\n {\n path: '/:team_subdomain',\n name: 'project-pages',\n component: () =>\n import(/* webpackChunkName: \"projectPages\" */ '../components/pages/ProjectPages.vue'),\n redirect: () => {\n const { getTeamSlug, getTeamID } = store.getters;\n\n const key = `${getTeamID}-currentProjectId`;\n const currentProjectId = localStorage.getItem(key);\n if (currentProjectId) {\n return { path: `/${getTeamSlug}/space-${currentProjectId}/boards` };\n }\n return { path: `/${getTeamSlug}/${constants.manageSpacesRouteName}` };\n },\n children: [\n {\n path: '/:team_subdomain/page-:pageId:pageTitle(-.*)?',\n name: 'page',\n meta: {\n scrollPositions: {},\n },\n component: () =>\n import(\n /* webpackChunkName: \"projectPages\" */ '../components/sections/PageColumnNewEditor.vue'\n ),\n beforeEnter(to, _from, next) {\n store.dispatch('setCurrentBoardId', '');\n store.dispatch('setCurrentTabName', 'pages');\n store.dispatch('setCurrentPageID', to.params.pageId);\n next();\n },\n },\n {\n path: '/:team_subdomain/board-:boardId(\\\\d+):boardTitle?/:cardsLayout?',\n name: constants.routeNames.board,\n meta: {\n scrollPositions: {},\n },\n props: true,\n component: () =>\n import(/* webpackChunkName: \"projectPages\" */ '../components/pages/BoardView.vue'),\n beforeEnter(to, _from, next) {\n boardViewBeforeEnter(store, to, _from, next);\n },\n },\n {\n path: '/:team_subdomain/card-:cardId:cardTitle(-.*)?',\n name: constants.routeNames.boardCard,\n beforeEnter(_to, _from, next) {\n cardBeforeEnterHandler(store, router, _to, _from, next);\n },\n component: { template: '
' },\n },\n {\n path: '/:team_subdomain/card-:cardId:cardTitle(-.*)?',\n name: 'cardnotfound',\n component: () =>\n import(/* webpackChunkName: \"projectPages\" */ '../components/pages/CardNotFound.vue'),\n },\n {\n path: `/:team_subdomain/:projectIdParam(${constants.projectSlug}-.*)/newboard`,\n name: 'newboard',\n component: () =>\n import(/* webpackChunkName: \"projectPages\" */ '../components/pages/NewBoard.vue'),\n },\n {\n path: `/:team_subdomain/:projectIdParam(${constants.projectSlug}-.*)/newpage`,\n name: 'newpage',\n component: () =>\n import(\n /* webpackChunkName: \"projectPages\" */ '../components/sections/PageColumnNewEditor.vue'\n ),\n beforeEnter(to, from, next) {\n if (store.getters.getFavouritesOpened) {\n store.dispatch('setFavouritesOpened', false);\n store.dispatch('setOpenedFavouriteItem', {});\n }\n if (from.name === null) {\n store.dispatch('setNewPageCreating', true);\n store.dispatch('setCurrentPageID', 'newpage');\n }\n next();\n },\n },\n {\n path: `/:team_subdomain/${constants.projectSlug}-:projectId/sprints`,\n name: constants.routeNames.sprintsRouteName,\n component: () =>\n import(/* webpackChunkName: \"projectPages\" */ '../components/sprints/Sprints.vue'),\n },\n {\n path: `/:team_subdomain/:projectIdParam(${constants.projectSlug}-.*)`,\n name: 'project',\n redirect: (to) => {\n const unsplitParam = to.params.projectIdParam ?? '';\n const [projectId] = (typeof unsplitParam === 'string' ? unsplitParam : '').split('/');\n return `/${to.params.team_subdomain}/${projectId}/boards`;\n },\n component: () =>\n import(\n /* webpackChunkName: \"projectPages\" */ '../components/sections/ProjectContentColumn.vue'\n ),\n children: [\n {\n path: 'boards',\n name: 'boards',\n meta: {\n scrollPositions: {},\n },\n beforeEnter(_to, _from, next) {\n store.dispatch('setCurrentTabName', 'boards');\n next();\n },\n component: { template: '
' },\n },\n ],\n },\n {\n path: '/:team_subdomain/manage-spaces',\n name: constants.manageSpacesRouteName,\n component: () =>\n import(\n /* webpackChunkName: \"projectPages\" */ '../components/pages/ProjectManagement.vue'\n ),\n beforeEnter: (to, from, next) => {\n if (store.getters.getItemNotFound) {\n store.dispatch('itemNotFound', false);\n }\n if (store.getters.getCurrentProjectId) {\n store.dispatch('setCurrentProjectId', '');\n }\n next();\n },\n },\n {\n path: '/:team_subdomain/create-space',\n name: constants.createSpaceRouteName,\n component: () =>\n import(\n /* webpackChunkName: \"projectPages\" */ '../components/pages/ProjectManagement.vue'\n ),\n beforeEnter: (_, __, next) => {\n const lastRoute = browserStorageGetItem('lastVisitedRoute') || '';\n const roleCheck = guestReaderCheck(store, next, lastRoute);\n\n if (roleCheck) {\n return next(roleCheck);\n }\n if (store.getters.getItemNotFound) {\n store.dispatch('itemNotFound', false);\n }\n next();\n },\n },\n {\n path: `/:team_subdomain/${constants.epicsBoardRoute.path}/:cardsLayout?`,\n name: constants.epicsBoardRoute.name,\n meta: {\n scrollPositions: {},\n },\n props: true,\n component: () =>\n import(/* webpackChunkName: \"projectPages\" */ '../components/pages/BoardView.vue'),\n beforeEnter(_to, _from, next) {\n const lastRoute = browserStorageGetItem('lastVisitedRoute') || '';\n const roleCheck = guestReaderCheck(store, next, lastRoute);\n\n if (roleCheck) {\n return next(roleCheck);\n }\n if (store.getters.getCurrentRole === TeamMemberRole.Guest) {\n store.dispatch('itemNotFound', true);\n return;\n }\n\n if (_to.name === constants.epicsBoardRoute.name) {\n _to.params.boardId = constants.epicsBoardId;\n store.dispatch('setCurrentBoardId', constants.epicsBoardId);\n if (store.getters.getCurrentProjectId) {\n store.dispatch('setCurrentProjectId', '');\n }\n }\n\n next();\n },\n },\n {\n path: `/:team_subdomain/${constants.epicRoute.path}-:cardId-:cardTitle?/:selectedTabId?`,\n name: constants.epicRoute.name,\n component: { template: '
' },\n beforeEnter(_to, _from, next) {\n if (\n !_to.params.selectedTabId ||\n Object.values(EpicTabId).indexOf(_to.params.selectedTabId as EpicTabId) === -1\n ) {\n _to.params.selectedTabId = store.getters.getEpicSelectedTabId(_to.params.cardId);\n }\n\n if (_to.params.selectedTabId) {\n store.dispatch('setEpicSelectedTabId', {\n cardId: _to.params.cardId,\n tabId: _to.params.selectedTabId,\n });\n }\n cardBeforeEnterHandler(store, router, _to, _from, next);\n },\n },\n {\n // Sprint id format in url is projectId + 's' + sprintId because fetching sprint by sprintId is not possible without projectId\n path: '/:team_subdomain/sprint-:sprintId(\\\\d+s\\\\d+):sprintTitle?/:cardsLayout?',\n name: constants.routeNames.sprint,\n meta: {\n scrollPositions: {},\n },\n props: true,\n component: () =>\n import(/* webpackChunkName: \"projectPages\" */ '../components/sprints/SprintView.vue'),\n beforeEnter(to, _from, next) {\n if (to.params.sprintId) {\n store.dispatch('setCurrentBoardId', to.params.sprintId);\n store.dispatch('setCurrentTabName', 'boards');\n }\n next();\n },\n },\n {\n path: '/:team_subdomain/sprintcard-:cardId:cardTitle(-.*)?',\n name: constants.routeNames.sprintCard,\n component: { template: '
' },\n beforeEnter(_to, _from, next) {\n cardBeforeEnterHandler(store, router, _to, _from, next);\n },\n },\n {\n path: '/:team_subdomain/views',\n name: 'views',\n component: () => import(/* webpackChunkName: \"views\" */ '../components/pages/Views.vue'),\n beforeEnter: (_, __, next) => {\n const lastRoute = browserStorageGetItem('lastVisitedRoute') || '';\n const roleCheck = guestReaderCheck(store, next, lastRoute);\n\n if (roleCheck) {\n return next(roleCheck);\n }\n next();\n },\n },\n {\n path: '/:team_subdomain/newview',\n name: 'newview',\n component: () =>\n import(/* webpackChunkName: \"views\" */ '../components/pages/NewView.vue'),\n beforeEnter: (_, __, next) => {\n const lastRoute = browserStorageGetItem('lastVisitedRoute') || '';\n const roleCheck = guestReaderCheck(store, next, lastRoute);\n\n if (roleCheck) {\n return next(roleCheck);\n }\n next();\n },\n },\n {\n path: '/:team_subdomain/view-:viewId:viewTitle(-.*)?',\n name: 'view',\n component: () =>\n import(/* webpackChunkName: \"views\" */ '../components/pages/SingleView.vue'),\n beforeEnter: (_, __, next) => {\n const lastRoute = browserStorageGetItem('lastVisitedRoute') || '';\n const roleCheck = guestReaderCheck(store, next, lastRoute);\n\n if (roleCheck) {\n return next(roleCheck);\n }\n next();\n },\n },\n {\n path: '/:team_subdomain/inbox',\n name: 'inbox',\n component: () => import(/* webpackChunkName: \"inbox\" */ '../components/pages/Inbox.vue'),\n beforeEnter: (_, __, next) => {\n const lastRoute = browserStorageGetItem('lastVisitedRoute') || '';\n const roleCheck = guestReaderCheck(store, next, lastRoute);\n\n if (roleCheck) {\n return next(roleCheck);\n }\n next();\n },\n },\n {\n path: '/:team_subdomain/note-:noteId?',\n redirect: (to) => {\n return {\n name: constants.routeNames.note,\n params: {\n team_subdomain: to.params.team_subdomain,\n noteId: to.params.noteId || '',\n },\n };\n },\n },\n {\n path: '/:team_subdomain/notes',\n name: constants.routeNames.notes,\n component: () =>\n import(/* webpackChunkName: \"projectPages\" */ '../components/notes/Notes.vue'),\n children: [\n {\n path: 'note-:noteId?',\n name: constants.routeNames.note,\n component: () =>\n import(/* webpackChunkName: \"projectPages\" */ '../components/notes/Notes.vue'),\n },\n ],\n },\n {\n path: '/:team_subdomain/my-work/:selectedTabId?',\n name: 'my-work',\n component: () =>\n import(/* webpackChunkName: \"projectPages\" */ '../components/pages/MyWork.vue'),\n beforeEnter(_to, from, next) {\n const lastRoute = browserStorageGetItem('lastVisitedRoute') || '';\n const roleCheck = guestReaderCheck(store, next, lastRoute);\n\n if (roleCheck) {\n return next(roleCheck);\n }\n store.dispatch('setMyWorkUserId', store.getters.getUserId);\n next();\n },\n },\n {\n name: constants.routeNames.agents,\n path: '/:team_subdomain/agents',\n component: () =>\n import(/* webpackChunkName: \"projectPages\" */ '../components/pages/Agents.vue'),\n beforeEnter(_to, from, next) {\n const lastRoute = browserStorageGetItem('lastVisitedRoute') || '';\n const roleCheck = guestReaderCheck(store, next, lastRoute);\n\n if (roleCheck) {\n return next(roleCheck);\n }\n next();\n },\n children: [\n {\n name: constants.routeNames.newAgent,\n path: 'new',\n component: () =>\n import(\n /* webpackChunkName: \"projectPages\" */ '../components/sections/NewAgent.vue'\n ),\n },\n {\n name: constants.routeNames.updateAgent,\n path: 'update/:agentId',\n component: () =>\n import(\n /* webpackChunkName: \"projectPages\" */ '../components/sections/NewAgent.vue'\n ),\n },\n ],\n },\n {\n path: '/:team_subdomain/member-:userId/:selectedTabId?',\n name: 'member',\n component: () =>\n import(/* webpackChunkName: \"projectPages\" */ '../components/pages/MyWork.vue'),\n beforeEnter(to, from, next) {\n const lastRoute = browserStorageGetItem('lastVisitedRoute') || '';\n const roleCheck = guestReaderCheck(store, next, lastRoute);\n\n if (roleCheck) {\n return next(roleCheck);\n }\n if (!from.name) {\n store.dispatch('fetchTeamMembers').catch(() => {});\n }\n store.dispatch('setMyWorkUserId', to.params.userId);\n next();\n },\n },\n ],\n },\n {\n path: '/create-space',\n redirect: (to) => {\n const teamSlug = store.getters.getTeamSlug;\n return {\n name: constants.createSpaceRouteName,\n path: `/${teamSlug}${to.path}`,\n query: to.query,\n params: { team_subdomain: teamSlug },\n };\n },\n },\n {\n path: '/manage-spaces:pathMatch(.*)*',\n redirect: (to) => {\n const teamSlug = store.getters.getTeamSlug;\n const pathMatch = Array.isArray(to.params.pathMatch) ? to.params.pathMatch.join('/') : '';\n return {\n path: `/${teamSlug}/manage-spaces${pathMatch ? '/' + pathMatch : ''}`,\n query: to.query,\n params: { team_subdomain: teamSlug },\n };\n },\n },\n {\n path: `/${constants.epicsBoardRoute.path}`,\n redirect: (to) => {\n const teamSlug = store.getters.getTeamSlug;\n return {\n name: constants.epicsBoardRoute.name,\n path: `/${teamSlug}${to.path}`,\n params: { team_subdomain: teamSlug },\n };\n },\n },\n {\n path: '/views',\n redirect: (to) => {\n const teamSlug = store.getters.getTeamSlug;\n return {\n name: 'views',\n path: `/${teamSlug}${to.path}`,\n params: { team_subdomain: teamSlug },\n };\n },\n },\n {\n path: '/my-work',\n redirect: (to) => {\n const teamSlug = store.getters.getTeamSlug;\n return { path: `/${teamSlug}${to.path}`, params: { team_subdomain: teamSlug } };\n },\n },\n {\n path: '/my-work/notes',\n redirect: () => {\n const teamSlug = store.getters.getTeamSlug;\n return { path: `/${teamSlug}/notes`, params: { team_subdomain: teamSlug } };\n },\n },\n {\n path: '/notes',\n redirect: (to) => {\n const teamSlug = store.getters.getTeamSlug;\n return { path: `/${teamSlug}${to.path}`, params: { team_subdomain: teamSlug } };\n },\n },\n {\n path: '/oauth2/authorize/',\n name: 'authorize',\n component: () =>\n import(\n /* webpackChunkName: \"loginOnboarding\" */ '../components/pages/IntegrationWorkspaceList.vue'\n ),\n },\n ] as Array,\n});\n\nrouter.beforeEach((to: any, from: any, next: Function) => {\n beforeEachGuard(to, from, next);\n});\n\nrouter.afterEach((to: any) => {\n afterEachGuard(to);\n});\n\nexport default router;\n","export default {\n computed: {\n isViewOpen() {\n return [\n this.$constants.routeNames.view,\n this.$constants.routeNames.views,\n this.$constants.routeNames.newView,\n ].includes(this.$route.name);\n },\n },\n};\n","import electronHelpersMixin from '@/mixins/electronHelpersMixin';\nimport isSafari from './isSafari';\n\nexport default {\n mixins: [electronHelpersMixin, isSafari],\n data() {\n return {\n displayOverlay: false,\n };\n },\n computed: {\n getOpenInDesktopAppLS() {\n return this.$store.getters.getOpenInDesktopApp;\n },\n isSettings() {\n const pathName = window.location.pathname;\n return pathName.endsWith('/settings') || pathName.includes('/settings/');\n },\n teamSlug() {\n return this.$store.getters.getTeamSlug;\n },\n disableOpeningLinksInApp() {\n return (\n window.location.pathname.includes('/desktop-redirect') ||\n this.isElectronApp ||\n this.isMobile ||\n this.isSettings ||\n this.getOpenInDesktopAppLS === false\n );\n },\n },\n mounted() {\n if (this.disableOpeningLinksInApp) {\n return;\n }\n\n // safari does not allow connecting to electron app's local express server\n // => always display notification for choosing to open in app\n if (this.isSafariCheck) {\n this.openInAppHandler();\n return;\n }\n\n this.isElectronAppRunning().then((installed) => {\n if (installed) this.openInAppHandler();\n });\n },\n methods: {\n openInAppHandler() {\n if (this.getOpenInDesktopAppLS === null) {\n this.displayChooseToOpenInDesktopAppNotif();\n } else {\n this.displayOverlay = true;\n this.openCurrentRouteInDesktopApp();\n }\n },\n async isElectronAppRunning() {\n for (const url of this.$constants.connectToDesktopAppUrls) {\n try {\n const response = await fetch(url);\n if (response.ok) {\n const { installed } = await response.json();\n return installed;\n }\n } catch (error) {\n continue;\n }\n }\n\n return false;\n },\n\n openCurrentRouteInDesktopApp() {\n // dont display desktop redirect overlay component if 'open in app'\n // is triggered by clicking on button in toast notification\n if (this.displayOverlay) this.$store.dispatch('setShowRedirectedToAppOverlay', true);\n const url = new URL(window.location.href);\n const { pathname, search, hash } = url;\n window.location.href = `superthread:/${pathname}${search}${hash}`;\n },\n setOpenInDesktopAppLS(value) {\n this.$store.dispatch('setOpenInDesktopApp', value);\n },\n displayChooseToOpenInDesktopAppNotif() {\n this.displayOverlay = false;\n const notificationLabels = [\n {\n text: this.translate('electronOpenInApp'),\n type: this.$constants.uiNotificationElements.button,\n callback: this.openCurrentRouteInDesktopApp,\n buttonStyle: 'attention',\n },\n {\n text: this.translate('rememberChoice'),\n type: this.$constants.uiNotificationElements.checkBox,\n action: 'setOpenInDesktopApp',\n },\n ];\n this.$store.dispatch('addUiNotification', {\n message: `${this.translate('electronOpenInDesktopApp')}?`,\n icon: 'monitor',\n subtitle: this.translate('electronAppIsInstalled'),\n labels: notificationLabels,\n duration: -1,\n });\n },\n },\n};\n","import { IconType } from '@/types/iconTypes';\n\nexport default {\n computed: {\n iconEnum() {\n return IconType.Icon;\n },\n emojiEnum() {\n return IconType.Emoji;\n },\n imageEnum() {\n return IconType.Image;\n },\n },\n};\n","import { getBoardLists, getDefaultCardStatuses } from '@/utilities/defaultCardStatuses';\n\nexport default {\n computed: {\n cardStatuses() {\n return getDefaultCardStatuses();\n },\n },\n\n methods: {\n defaultLists(isEpic = false) {\n return getBoardLists(isEpic);\n },\n },\n};\n","import { Tag, TagColor } from '@superthread-com/api';\n\nexport interface SuggestionTag extends Tag {\n name: string;\n color: TagColor;\n}\n\nexport enum SuggestionType {\n tag = 'tag',\n relation = 'relation',\n}\n\nexport type SuggestionTooltipType = 'accept' | 'reject' | 'default';\n\nexport interface RemoveSuggestionPayload {\n type: SuggestionType;\n card_id?: string;\n tagName?: string;\n ignoreSuggestion?: boolean; // ignore suggestion so it wont appear again for the current card\n}\n","import { RootState as IState } from '@/types';\nimport { Modal } from '@/types/modal';\nimport { browserStorageGetItem } from '@/utilities/browser-storage.util';\nimport { hideEmptyGroupByBoardKey, showWeekendsByBoardKey } from '@/utilities/localDrafts';\n\nconst getDefaultState = (): IState => ({\n currentProjectId: '',\n\n currentEditCommentID: '',\n\n commentToDeleteId: '',\n commentToDeleteParentId: '',\n commentToDeleteResourceType: '',\n\n commentsAreActive: false,\n\n userSettings: {},\n user: { team: {} },\n\n teams: {},\n teamProjects: [],\n projectOrder: [],\n socketDeletedProjects: [],\n\n comments: [],\n\n cardsCommentsAndActivities: {},\n\n commentsSection: 'pages',\n\n loggedIn: false,\n previousRoute: {},\n popUpMessage: '',\n\n loginDetails: {\n userName: '',\n email: '',\n password: '',\n teamID: '',\n teamSubDomain: localStorage.teamSubDomain || '',\n teamSubDomains: localStorage.getItem('teamSubDomains')\n ? JSON.parse(localStorage.teamSubDomains)\n : [],\n },\n\n emojiPickerDisplayed: '',\n\n routes: {\n local: {\n host: 'http://localhost:8080',\n users: 'http://localhost:12000',\n projects: 'http://localhost:12001',\n pages: 'http://localhost:12002',\n reactions: 'http://localhost:12003',\n comments: 'http://localhost:12004',\n boards: 'http://localhost:12005',\n lists: 'http://localhost:12006',\n cards: 'http://localhost:12007',\n checklists: 'http://localhost:12008',\n checklistitems: 'http://localhost:12009',\n search: '',\n files: '',\n views: 'http://localhost:12001',\n socket: '',\n integrations: '',\n editorSocket: 'ws://localhost:8787',\n },\n dev: {\n host: 'https://dev-app.superthread.com',\n users: 'https://api.dev.superthread.com',\n projects: 'https://api.dev.superthread.com',\n pages: 'https://api.dev.superthread.com',\n reactions: 'https://api.dev.superthread.com',\n comments: 'https://api.dev.superthread.com',\n boards: 'https://api.dev.superthread.com',\n lists: 'https://api.dev.superthread.com',\n cards: 'https://api.dev.superthread.com',\n checklists: 'https://api.dev.superthread.com',\n checklistitems: 'https://api.dev.superthread.com',\n search: 'https://api.dev.superthread.com',\n files: 'https://api.dev.superthread.com',\n views: 'https://api.dev.superthread.com',\n socket: 'wss://api.dev.superthread.com/v1',\n integrations: 'https://api.dev.superthread.com',\n editorSocket: 'wss://yjs-ws.superthread.workers.dev',\n },\n test: {\n host: 'https://dev-app.superthread.com',\n users: 'https://api.dev.superthread.com',\n projects: 'https://api.dev.superthread.com',\n pages: 'https://api.dev.superthread.com',\n reactions: 'https://api.dev.superthread.com',\n comments: 'https://api.dev.superthread.com',\n boards: 'https://api.dev.superthread.com',\n lists: 'https://api.dev.superthread.com',\n cards: 'https://api.dev.superthread.com',\n checklists: 'https://api.dev.superthread.com',\n checklistitems: 'https://api.dev.superthread.com',\n search: 'https://api.dev.superthread.com',\n files: 'https://api.dev.superthread.com',\n views: 'https://api.dev.superthread.com',\n socket: 'wss://api.dev.superthread.com/v1',\n integrations: 'https://api.dev.superthread.com',\n editorSocket: 'wss://yjs-ws.superthread.workers.dev',\n },\n staging: {\n host: 'https://staging-app.superthread.com',\n users: 'https://api.staging.superthread.com',\n projects: 'https://api.staging.superthread.com',\n pages: 'https://api.staging.superthread.com',\n reactions: 'https://api.staging.superthread.com',\n comments: 'https://api.staging.superthread.com',\n boards: 'https://api.staging.superthread.com',\n lists: 'https://api.staging.superthread.com',\n cards: 'https://api.staging.superthread.com',\n checklists: 'https://api.staging.superthread.com',\n checklistitems: 'https://api.staging.superthread.com',\n search: 'https://api.staging.superthread.com',\n files: 'https://api.staging.superthread.com',\n views: 'https://api.staging.superthread.com',\n socket: 'wss://api.staging.superthread.com/v1',\n integrations: 'https://api.staging.superthread.com',\n editorSocket: 'wss://collaboration-staging.superthread.com',\n },\n release: {\n host: 'https://app.superthread.com',\n users: 'https://api.superthread.com',\n projects: 'https://api.superthread.com',\n pages: 'https://api.superthread.com',\n reactions: 'https://api.superthread.com',\n comments: 'https://api.superthread.com',\n boards: 'https://api.superthread.com',\n lists: 'https://api.superthread.com',\n cards: 'https://api.superthread.com',\n checklists: 'https://api.superthread.com',\n checklistitems: 'https://api.superthread.com',\n search: 'https://api.superthread.com',\n files: 'https://api.superthread.com',\n views: 'https://api.superthread.com',\n socket: 'wss://api.superthread.com/v1',\n integrations: 'https://api.superthread.com',\n editorSocket: 'wss://collaboration.superthread.com',\n },\n production: {\n host: 'https://app.superthread.com',\n users: 'https://api.superthread.com',\n projects: 'https://api.superthread.com',\n pages: 'https://api.superthread.com',\n reactions: 'https://api.superthread.com',\n comments: 'https://api.superthread.com',\n boards: 'https://api.superthread.com',\n lists: 'https://api.superthread.com',\n cards: 'https://api.superthread.com',\n checklists: 'https://api.superthread.com',\n checklistitems: 'https://api.superthread.com',\n search: 'https://api.superthread.com',\n files: 'https://api.superthread.com',\n views: 'https://api.superthread.com',\n socket: 'wss://api.superthread.com/v1',\n integrations: 'https://api.superthread.com',\n editorSocket: 'wss://collaboration.superthread.com',\n },\n },\n helpPopupIsOn: false,\n\n commentListOrderBy: 'time',\n\n projectFormName: '',\n projectFormDescription: '',\n\n currentTabName: 'boards',\n members: [],\n showSearchModal: false,\n showAskAiNotesModal: false,\n searchResults: [],\n childSearchResults: [],\n lastSearchQuery: '',\n lastAskAiNotesSearchQuery: '',\n notificationMessage: '',\n notificationType: '',\n darkMode: false,\n cachedComponents: ['ProjectPages'],\n boardsBackground: '',\n sidebarExpanded: true,\n addMemberPopupIsOn: false,\n addMembersTarget: {},\n displayMembersDropdownId: '',\n\n displayEditLinkPopup: false,\n displayEditorTooltip: {\n editorID: '',\n show: false,\n },\n commentLinkUrl: '',\n commentLinkText: '',\n displayInfoSidebar: false,\n\n teamMembers: {},\n inactiveMembers: {},\n\n redirectRouteAfterLogin: {},\n notificationCount: 0,\n notificationAlerts: [],\n teamMemberNotifications: [],\n\n publicViews: [],\n privateViews: [],\n selectedViewType: 'card',\n viewPreview: [],\n selectedView: {},\n viewFilters: {\n include: {},\n exclude: {},\n sort_by: {\n field: 'time_created',\n },\n },\n viewPills: [],\n viewResultsList: {},\n viewEditMode: false,\n boardsFilters: [],\n uiNotifications: [],\n favouritesOpened: false,\n openedFavouriteItem: {},\n membersSearchInput: '',\n headerMemberDropdownPosition: {},\n activeComment: '',\n currentRoute: {},\n socketConnected: false,\n displayVideoLinkPopup: '',\n installations: {},\n importProgressSteps: {},\n routeBeforeSettings: '',\n importProgressCurrentStep: 1,\n settingsCurrentProjectId: '',\n settingsCurrentBoardId: '1',\n integrationSettings: {},\n projectSidebarExpanded: {},\n projectsExpanded: true,\n favouritesExpanded: true,\n draggingEntityProjectFromId: '',\n draggingSidebarItem: false,\n selectedProjectId: '',\n pendingInvites: [],\n currentRole: '',\n doubleCheckPopup: false,\n confirmationModal: false,\n localCardIds: {},\n colorsPopup: false,\n commentsOrder: 'newest',\n quickCard: false,\n membersToAddQuickCard: [],\n quickCardBoardId: '',\n quickPage: false,\n noteInQuickPage: '',\n quickNote: false,\n cardCommentActivityFilter: 'all',\n commentsInProgressPatch: [],\n commentsInProgressDelete: [],\n online: true,\n loadedFiles: [],\n projectPreviewLastScrollPos: {},\n favourites: [],\n favouritesFolderExpanded: {},\n newFolderInput: false,\n importHistory: [],\n favouriteFolderForRename: '',\n favouriteFolderTitle: '',\n showPeekSidebar: false,\n theme: '',\n electronBrowseHistory: [],\n electronBrowseHistoryIndex: -1,\n electronRecentlyViewed: [],\n themePreference: '',\n inviteeRole: '',\n inviteesProjectIds: [],\n redirectProjectId: 1,\n currentInboxResource: {},\n inboxFilter: 'unresolved',\n inboxListWidth: 350,\n inboxListExpanded: true,\n showOnboarding: false,\n openInDesktopApp: JSON.parse(localStorage.getItem('openInDesktopApp') || 'null'),\n showRedirectedToAppOverlay: false,\n membersDropdownInvitees: [],\n editorForCardLink: '',\n myWorkSelectedTabId: {},\n myWorkUserId: '',\n deletePopupId: '',\n itemNotFound: false,\n trashProjects: [],\n boardsColumnLayout: JSON.parse(localStorage.getItem('boardsColumnLayout') ?? '{}'),\n pagesColumnLayout: JSON.parse(localStorage.getItem('pagesColumnLayout') ?? '{}'),\n pressedEscCancelDragging: false,\n currentViewTotalCount: 0,\n sidebarHovered: false,\n sidebarDragging: {},\n teamFeatures: [],\n showUpdateEmailPopup: false,\n showHideReplies: {},\n editorOpen: {},\n pageIconPickerDisplayed: false,\n hideEmptyGroups:\n browserStorageGetItem(hideEmptyGroupByBoardKey(browserStorageGetItem('currentTeamId') ?? '')) ||\n [],\n showWeekends:\n browserStorageGetItem(showWeekendsByBoardKey(browserStorageGetItem('currentTeamId') || '')) ||\n [],\n reconnectionCallbacks: {},\n previousNextButtonClicked: false,\n resolveInlineComment: false,\n notificationDigest: {},\n notificationDigestSettings: {},\n boardEmbedPopup: {},\n isSettingsOpen: false,\n showUpgradePlanPopup: '',\n myWorkSortBy: {},\n modal: {} as Modal,\n recentWorkspaces: JSON.parse(localStorage.getItem('recentWorkspaces') ?? '[]'),\n openWorkspaceThroughQuickSwitcher: false,\n sidebarSprintsExpanded: {},\n notes: {},\n noteCreating: '',\n aiNoteGenerating: '',\n aiNoteGeneratingTitle: '',\n noteTemplates: [],\n transcriptionState: {\n noteId: '',\n recording: 'stopped',\n alreadyRecorded: new Set(),\n permissions: {\n microphone: 'unknown',\n system: 'unknown',\n },\n },\n resourceLoaded: {\n teamMembers: false,\n spaceTags: false,\n epics: false,\n },\n noteTemplateDraft: {},\n noteTemplateSections: [],\n agents: [],\n agentRuns: [],\n currentAgentId: '',\n agentPromptIterations: {},\n upcomingGoogleCalendarEvents: [],\n teamSubscription: {},\n availablePlans: [],\n subGroupByEnabled: {},\n workspaceSectionExpanded: true,\n});\n\nexport default getDefaultState;\n","import { Project } from '@/types';\nimport EventBus from './eventBus';\n\nconst localUpdatePageProp = (pageId: string, value: any, prop: string, storeDispatch: any) => {\n storeDispatch('localUpdatePageProp', {\n pageId,\n propertyName: prop,\n value,\n });\n if (prop === 'icon') {\n EventBus.$emit(`${pageId}-updatePageIcon`, value);\n }\n};\n\nconst updateBoardPropertyInBoards = (\n boardId: string,\n value: any,\n prop: string,\n storeDispatch: any\n) => {\n storeDispatch('updateBoardPropertyInBoards', {\n boardId,\n propertyName: prop,\n value,\n });\n};\n\nconst updateBoard = (\n newProject: Project,\n type: string,\n path: [string, any, string, any],\n to: any,\n from: any,\n storeDispatch: any,\n storeGetters: any\n) => {\n const [, index, prop] = path;\n const boardId = newProject.board_order?.[index];\n\n if (prop === 'title' && boardId) {\n updateBoardPropertyInBoards(boardId, to, 'title', storeDispatch);\n }\n\n if (type === 'create') {\n updateBoardPropertyInBoards(to.id, false, 'archived', storeDispatch);\n const board = storeGetters.getFlatBoards[to.id];\n if (board?.is_bookmarked) {\n storeDispatch('addBoardToBookmarked', board);\n }\n }\n};\n\nconst updatePage = (\n newProject: Project,\n type: string,\n path: [string, any, string, any],\n to: any,\n from: any,\n storeDispatch: any\n) => {\n const project = newProject;\n const [, index, prop, prop2] = path;\n const page = newProject.pages?.[index] ?? {};\n const pageId = page?.id;\n\n if (type === 'create') {\n const title = to.title || '';\n const icon = to.icon;\n localUpdatePageProp(to.id, title, 'title', storeDispatch);\n if (icon) {\n localUpdatePageProp(to.id, icon, 'icon', storeDispatch);\n }\n\n if (project.pages?.findIndex((page: any) => page.id === to.id) === -1) {\n project.pages.splice(index, 0, to);\n }\n\n storeDispatch('addPageToFlatPages', { ...to, projectId: project.id });\n storeDispatch('addPageToProjectPages', {\n pageId: page.id,\n projectId: project.id,\n });\n }\n\n if (type === 'update' && pageId) {\n if (prop === 'title') {\n localUpdatePageProp(pageId, to, 'title', storeDispatch);\n page.title = to;\n }\n if (prop === 'icon') {\n if (from === null) {\n page.icon = to;\n } else if (prop2 === 'src' || prop2 === 'color' || prop2 === 'type') {\n page.icon[prop2] = to;\n }\n if (to === null) {\n page.icon = {\n src: '',\n blurhash: '',\n type: '',\n };\n }\n localUpdatePageProp(pageId, page.icon, 'icon', storeDispatch);\n }\n }\n\n if (type === 'delete') {\n const pageId = from.id;\n const copiedPages = [...(newProject.pages ?? [])];\n const pageIndex = copiedPages.findIndex((page: any) => page.id === pageId);\n if (pageIndex === -1) return project;\n copiedPages.splice(pageIndex, 1);\n project.pages = copiedPages;\n }\n\n return project;\n};\n\nconst updateArchivedPages = (\n newProject: Project,\n type: string,\n to: any,\n from: any,\n storeDispatch: any,\n storeGetters: any\n) => {\n if (type === 'delete') {\n const archived = false;\n localUpdatePageProp(from.id, archived, 'archived', storeDispatch);\n }\n\n if (type === 'create') {\n const parentPageId = storeGetters.getProjectPagesTree(newProject.id)[to.id]?.parent;\n const page = storeGetters.getPages[parentPageId];\n if (page?.archived) {\n localUpdatePageProp(to.id, page.archived, 'archived', storeDispatch);\n }\n }\n};\n\nconst updateBoardPageTitle = (\n project: any,\n type: string,\n path: [string, any, string, any],\n to: any,\n from: any,\n storeDispatch: any,\n storeGetters: any\n) => {\n let newProject = project;\n const [basePath] = path;\n\n if (basePath === 'boards') {\n updateBoard(newProject, type, path, to, from, storeDispatch, storeGetters);\n }\n\n if (basePath === 'pages') {\n newProject = updatePage(newProject, type, path, to, from, storeDispatch);\n }\n\n if (basePath === 'archive_pages') {\n updateArchivedPages(newProject, type, to, from, storeDispatch, storeGetters);\n }\n\n if (basePath === 'page_order' && type === 'update') {\n const newPageTree: any = {};\n [...(to || [])].forEach((p) => {\n newPageTree[p.id] = p;\n });\n\n storeDispatch('setProjectPageOrderTree', {\n projectId: newProject.id,\n pagesTree: newPageTree,\n });\n\n /* storeDispatch('setProjectPagesTree', { projectId: newProject.id, to }); */\n newProject.page_order = to;\n }\n\n if (basePath === 'archive_page_order') {\n const newArchivePageTree: any = {};\n [...(to || [])].forEach((p) => {\n newArchivePageTree[p.id] = p;\n });\n\n storeDispatch('setProjectArchivedTree', {\n projectId: newProject.id,\n archiveTree: newArchivePageTree,\n });\n }\n\n return newProject;\n};\n\nexport default updateBoardPageTitle;\n","/* eslint-disable no-param-reassign */\nconst objectSet = (object, path, value) => {\n const decomposedPath = path;\n const base = decomposedPath[0];\n\n if (base === undefined) {\n return object;\n }\n\n if (Array.isArray(object) && !object.length) {\n object = [];\n } else if (!Array.isArray(object) && !Object.prototype.hasOwnProperty.call(object, base)) {\n object[base] = {};\n }\n // Determine if there is still layers to traverse\n value =\n decomposedPath.length <= 1 ? value : objectSet(object[base], decomposedPath.slice(1), value);\n\n if (Array.isArray(object)) {\n return [...object, value];\n }\n\n return {\n ...object,\n [base]: value,\n };\n};\n\nexport default objectSet;\n","/**\n * Main vuex actions\n * @packageDocumentation\n * @category Store\n */\nimport { ActionTree, ActionContext } from 'vuex';\nimport { nanoid } from 'nanoid';\nimport { RootState as State } from '@/types';\nimport {\n authGet,\n basePost,\n authPost,\n authDelete,\n authPatch,\n api,\n authPut,\n authRefresh,\n} from '@/utilities/api';\nimport updateBoardPageTitle from '@/utilities/updateBoardPageTitleInProject';\nimport constants from '@/utilities/constants';\nimport objectSet from '@/utilities/objectSet';\nimport getRandomNumber from '@/utilities/getRandomNumber';\nimport { icons, colors } from '@/utilities/colorsAndIcons';\nimport {\n AddMembersRequest,\n MemberRole,\n ChildCommentResponse,\n CommentResponse,\n UpdateCommentRequest,\n UpdateCommentStatusRequest,\n CreateCommentRequest,\n CreateCommentReactionRequest,\n CreateProjectRequest,\n GetUserResponse,\n User,\n GetFilesResponse,\n File,\n UpdateNotificationDigestRequest,\n UpdateNotificationDigestSettingsRequest,\n AddWatcherRequest,\n UpdateUserResponse,\n SprintState,\n} from '@superthread-com/api';\nimport { ResourceType } from '@/types/resources';\nimport { browserStorageGetItem, browserStorageSetItem } from '@/utilities/browser-storage.util';\nimport { subGroupByBoardKey } from '@/utilities/localDrafts';\nimport { Modal } from '@/types/modal';\nimport { translate } from '@/utilities';\nimport { OnboardingActionType } from '@/types/onboardingActions';\nimport { NoteContentType } from '@/types/notes';\nimport { toRaw } from 'vue';\nimport cloneDeep from 'lodash/cloneDeep';\n\nconst activePromises: { [key: string]: Promise } = {};\n\nlet abortSearchController: AbortController | undefined;\nlet viewsPaginationCursor: string | undefined;\nlet notificationsPaginationCursor: string | undefined;\nlet notesPaginationCursor: string | undefined;\n\nconst actions: ActionTree = {\n /**\n * Login Action\n * https://api.superthread.com/v1/auth/email\n */\n login({ getters }: ActionContext) {\n return basePost(`${getters.getRoutes.users}/v1/auth/email`, {\n email: getters.getEmail,\n password: getters.getPassword,\n }).catch((error) => {\n throw error;\n });\n },\n /**\n * Action to login with username and password only and set cookie\n */\n loginUsernamePass({ getters }: ActionContext) {\n return authPost(`${getters.getRoutes.users}/v1/auth/email`, {\n email: getters.getEmail,\n password: getters.getPassword,\n }).catch((error) => {\n throw error;\n });\n },\n\n async setUserSettings({ commit, getters }, settings) {\n const oldSettings = getters.getUserSettings;\n commit('setUserSettings', settings);\n return api.auth.updateUserSettings('me', settings).catch((error) => {\n commit('setUserSettings', oldSettings);\n throw error;\n });\n },\n async fetchUserSettings({ commit }) {\n return api.auth\n .getUserSettings('me')\n .then(({ data }) => {\n const { settings } = data;\n if (!settings) return;\n commit('setUserSettings', settings);\n })\n .catch((error) => {\n throw error;\n });\n },\n\n /**\n * Action for loading user details.\n * https://api.superthread.com/v1/users/{user_id}\n */\n async loadUser({ dispatch, commit }) {\n const meUser = api.auth\n .getUser('me')\n .then(({ data }: { data: GetUserResponse }) => {\n if (data.token_outdated) {\n authRefresh();\n }\n const user: User = { teams: [], ...data.user };\n commit('setUser', user);\n return { user };\n })\n .catch((error) => {\n throw error;\n });\n\n dispatch('fetchUserSettings').catch(() => {});\n\n return meUser;\n },\n /**\n * Action for checking if user has token_privileged which is requiered to update email.\n */\n checkForTokenPrivileged() {\n return api.auth\n .getUser('me')\n .then(({ data }: { data: GetUserResponse }) => {\n return data.token_privileged;\n })\n .catch((error: Error) => {\n throw error;\n });\n },\n /**\n * Action for sending a code to a new email address.\n * @param {string} email - new email address\n * @param {boolean} resend - flag for resending a new code to same email without requiering a privileged token\n */\n sendCodeToNewEmail({ getters }, { email, resend = false }: { email: string; resend: boolean }) {\n return api.auth\n .sendUpdateUserEmailCode(getters.getUserId, { email }, { resend })\n .catch((error: Error) => {\n throw error;\n });\n },\n /**\n * Action for update user's email address.\n * @param {string} email - must match address the code was sent to\n * @param {boolean} resend - code sent to new email\n */\n updateUserEmail({ getters }, { email, code }: { email: string; code: string }) {\n return api.auth.updateUserEmail(getters.getUserId, { email, code }).catch((error: Error) => {\n throw error;\n });\n },\n /**\n * Sets the flag when user is logged in.\n */\n setLoggedIn({ commit }: ActionContext) {\n commit('setLoggedIn');\n },\n /**\n * Sets the flag when user is not loged in.\n */\n setNotLoggedIn({ commit }) {\n commit('setNotLoggedIn');\n },\n /**\n * Sets passed user to state.\n * @param {User} user\n */\n setUser({ commit }, user: User) {\n commit('setUser', user);\n },\n\n /**\n * PROJECTS\n */\n\n /**\n * Action for adding a new project.\n */\n addProject({ getters, dispatch, commit }, { isPrivate, icon, members } = {}) {\n const { getProjectFormName, getProjectFormDescription, getTeamID, getTeamProjects, getUserId } =\n getters;\n if (!getProjectFormName) return Promise.reject(new Error(constants.noSpaceName));\n const newTeamProjects = [...getTeamProjects];\n const currentDate = Math.floor(Date.now() / 1000);\n const projectMembers = [{ user_id: getUserId, role: MemberRole.Admin }, ...(members || [])];\n const localId = nanoid(6);\n const randomColorIndex = getRandomNumber(0, colors.length - 1);\n const randomIconIndex = getRandomNumber(0, icons.length - 1);\n\n const newProject = {\n description: '',\n id: localId,\n is_member: true,\n is_private: Boolean(isPrivate),\n members: projectMembers,\n team_id: getTeamID,\n time_created: currentDate,\n time_updated: currentDate,\n title: getProjectFormName,\n total_members: projectMembers.length,\n total_members_online: 0,\n user_id: getUserId,\n icon: {\n src: icon?.src || icons[randomIconIndex],\n color: icon?.color || colors[randomColorIndex],\n type: icon?.type || 'icon',\n },\n board_order: [],\n boards: [],\n pages: [],\n page_order: [],\n };\n newTeamProjects.push(newProject);\n dispatch('setProjectFormName', '');\n dispatch('setProjectFormDescription', '');\n dispatch('setTeamProjects', newTeamProjects);\n\n const payload: CreateProjectRequest = {\n title: getProjectFormName,\n description: getProjectFormDescription,\n is_private: newProject.is_private,\n icon: {\n src: newProject.icon.src,\n color: newProject.icon.color,\n type: newProject.icon.type,\n },\n members: projectMembers,\n };\n\n return api.projects\n .createProject(getTeamID, payload)\n .then(({ data }) => {\n const { project } = data;\n if (project) {\n commit('localUpdateProject', {\n localId,\n newId: project.id,\n });\n commit('localAddProjectInPageTree', project.id);\n const newProjctsOrder = [...getters.getProjectOrder];\n newProjctsOrder.push(project.id);\n commit('setProjectOrder', newProjctsOrder);\n }\n return data;\n })\n .catch((error) => {\n commit('localUpdateFailRequest', localId);\n throw error;\n });\n },\n\n addToSocketDeletedProjects({ commit }, projectId) {\n commit('addToSocketDeletedProjects', projectId);\n },\n\n clearSocketDeletedProjects({ commit }) {\n commit('clearSocketDeletedProjects');\n },\n\n localRemoveProject({ getters, commit }, projectId) {\n const { getTeamProjects } = getters;\n const newTeamProjects = [...getTeamProjects];\n const index = newTeamProjects.findIndex((p) => p.id === projectId);\n if (index > -1) {\n const project = { ...newTeamProjects[index] };\n newTeamProjects.splice(index, 1);\n commit('setTeamProjects', { projects: newTeamProjects });\n\n // remove project from projectOrder\n const newProjectOrder = [...getters.getProjectOrder];\n const projectIndex = newProjectOrder.indexOf(projectId);\n if (projectIndex > -1) {\n newProjectOrder.splice(projectIndex, 1);\n commit('setProjectOrder', newProjectOrder);\n }\n\n // add project to trashed projects\n const trashedProjects = [...getters.getTrashProjects];\n trashedProjects.push(project);\n commit('setTrashProjects', trashedProjects);\n }\n },\n\n localAddProjectToTeamProjects({ commit, getters }, newProject) {\n const newTeamProjects = [...getters.getTeamProjects];\n\n const alreadyExists = newTeamProjects.some((p) => p.id === newProject.id);\n if (alreadyExists) return;\n // add is_member flag to project if undefined\n if (newProject.is_member === undefined) {\n newProject.is_member = newProject.members?.some((m: any) => m.user_id === getters.getUserId);\n }\n newTeamProjects.push(newProject);\n commit('setTeamProjects', { projects: newTeamProjects });\n },\n\n /**\n * Joins user on project, for the passed project id.\n * @param {string} projectId\n */\n joinProject({ getters, dispatch }, projectId) {\n const { getTeamID, getUser } = getters;\n const payload: AddMembersRequest = {\n members: [{ user_id: getUser.id, role: MemberRole.Member }],\n };\n return api.projects\n .addProjectMember(getTeamID, projectId, payload)\n .then(() => dispatch('loadTeamProjects'))\n .catch((error) => {\n throw error;\n });\n },\n /**\n * Action to load all projects for user's team.\n */\n loadTeamProjects({ commit, getters }) {\n const key = 'loadTeamProjects';\n const existingPromise = activePromises[key];\n if (existingPromise !== undefined) return existingPromise;\n\n const promise = api.projects\n .getProjects(getters.getTeamID)\n .then(({ data }) => data)\n .then(({ projects, project_order }) => {\n commit('setTeamProjects', { projects, projectOrder: project_order });\n if (projects) {\n projects.forEach((project) => {\n commit('setProjectBoards', {\n projectId: project.id,\n projectBoards: project.board_order,\n });\n const projectBoards = project.boards\n .map((item: any) => {\n const oldBoardData = getters.getFlatBoards[item.id];\n return {\n ...item,\n // save old layout property\n ...(oldBoardData?.layout && { layout: oldBoardData.layout }),\n project_id: project.id,\n };\n })\n .filter((board) => {\n if (board.id) return !getters.getFlatBoards[board.id];\n return false;\n });\n if (projectBoards.length > 0) {\n commit('setFlatBoards', projectBoards);\n }\n });\n }\n return projects;\n })\n .catch(() => {})\n .finally(() => {\n delete activePromises[key];\n });\n activePromises[key] = promise;\n return promise;\n },\n setTeamProjects({ commit }, teamProjects) {\n commit('setTeamProjects', { projects: teamProjects });\n },\n setTeam({ commit }, team) {\n commit('setTeam', team);\n },\n /**\n * Action to set project order\n */\n setProjectOrder({ commit }, projectOrder) {\n commit('setProjectOrder', projectOrder);\n },\n /**\n * Updates project field.\n * @param {object} projectData {title: string, description: string, overview_page_id: number}\n */\n updateProject(\n { getters, commit, dispatch },\n { projectData, projectId = getters.getCurrentProjectId, skipCheck = false }\n ) {\n const { getTeamID, getSelectedProjectId, getTeamProjectById } = getters;\n let currentProjectId: string;\n if (!skipCheck) {\n currentProjectId = getSelectedProjectId === '' ? projectId : getSelectedProjectId;\n } else {\n currentProjectId = projectId;\n }\n const currentProject = { ...getTeamProjectById(currentProjectId) };\n const currentProjectTimeUpdated = currentProject?.time_updated;\n const timeUpdated = new Date().getTime();\n\n const updateFields = (fieldValueSource: any, forceUpdate = false) => {\n const fieldsToUpdate = ['title', 'description', 'icon', 'estimate_system'];\n fieldsToUpdate.forEach((field) => {\n if (forceUpdate || (projectData[field] && projectData[field] !== currentProject[field])) {\n dispatch('localUpdateTeamProjectField', {\n projectId: currentProjectId,\n fieldName: field,\n fieldValue: fieldValueSource[field],\n });\n }\n });\n };\n\n updateFields(projectData);\n\n dispatch('localUpdateTeamProjectField', { fieldName: 'time_updated', fieldValue: timeUpdated });\n\n return api.projects.updateProject(getTeamID, currentProjectId, projectData).catch((error) => {\n updateFields(currentProject, true);\n dispatch('localUpdateTeamProjectField', {\n fieldName: 'time_updated',\n fieldValue: currentProjectTimeUpdated,\n });\n commit('setSelectedProjectId', '');\n throw error;\n });\n },\n\n /**\n * Updates team project field locally.\n * @param {object} fieldNameValueObject {fieldName: string, fieldValue: string}\n */\n localUpdateTeamProjectField(\n { commit, getters },\n { projectId = getters.getCurrentProjectId, fieldName, fieldValue }\n ) {\n const payload = {\n projectId,\n fieldName,\n fieldValue,\n };\n commit('setTeamProjectField', payload);\n },\n\n /**\n * Sets a flag for displaying a popup for help section.\n * @param {boolean} payload\n */\n setHelpPopupIsOn({ commit }, payload: boolean) {\n commit('setHelpPopupIsOn', payload);\n },\n /**\n * Sets current project id on state and local storage.\n * @param {string} id\n */\n setCurrentProjectId({ commit, getters }, id: string) {\n commit('setCurrentProjectId', {\n teamId: getters.getTeamID,\n projectId: id,\n });\n },\n /**\n * Sets project description from form input when adding project or editing description.\n * @param {string} description\n */\n setProjectFormDescription({ commit }, description: string) {\n commit('setProjectFormDescription', description);\n },\n /**\n * Sets project name from form input.\n * @param {string} name\n */\n setProjectFormName({ commit }, name: string) {\n commit('setProjectFormName', name);\n },\n\n /**\n * PAGES\n */\n /**\n * Sets previous route path.\n * @param {string} route\n */\n setPreviousRoute({ commit }, route: string) {\n commit('setPreviousRoute', route);\n },\n /**\n * Action sets user's password.\n * @param {string} password\n */\n setPassword({ commit }, password: string) {\n commit('setPassword', password);\n },\n /**\n * Action sets user's username.\n * @param {string} username\n */\n setUserName({ commit }, username: string) {\n commit('setUserName', username);\n },\n /**\n * Action sets user's email address.\n * @param {string} email\n */\n setEmail({ commit }, email: string) {\n commit('setEmail', email);\n },\n\n /**\n * Action sets the team subdomain to store and browser's local storage.\n * @param {string} teamSubdomain\n */\n setTeamSubDomain({ commit }, teamSubdomain: string) {\n commit('setTeamSubDomain', teamSubdomain);\n },\n\n removeTeamSubDomain({ commit }, index: number) {\n commit('removeTeamSubDomain', index);\n },\n\n /**\n * COMMENTS\n */\n\n addLocalComment({ commit }, payload) {\n commit('addLocalComment', payload);\n },\n\n updateLocalCommentId({ commit }, { commentId, localId, childCommentId, commentPayload, cardId }) {\n commit('updateLocalCommentId', {\n commentId,\n localId,\n childCommentId,\n commentPayload,\n cardId,\n });\n },\n\n removeLocalComment({ commit }, { localCommentId, parentCommentId }) {\n commit('removeLocalComment', { localCommentId, parentCommentId });\n },\n\n localUpdateComment({ commit }, { fieldName, fieldValue, commentId, childCommentId, cardId }) {\n commit('localUpdateComment', { fieldName, fieldValue, commentId, childCommentId, cardId });\n },\n\n /**\n * Add new comment from page or card.\n */\n addComment(\n { dispatch, getters },\n { content, context = '', isCard = false, card_id, page_id = getters.getCurrentPageID }\n ) {\n const totalCommentCount = parseInt(getters.getPage?.total_comments || 0, 10);\n if (!isCard) {\n dispatch('localUpdatePageProp', {\n pageId: getters.getPage.id,\n propertyName: 'total_comments',\n value: `${totalCommentCount + 1}`,\n });\n }\n\n if (content === constants.emptyMarkdownInput || content === '')\n return Promise.reject(new Error('Comment content is empty.'));\n\n const body: CreateCommentRequest = {\n content,\n schema: getters.commentsSchema,\n ...(context && { context }),\n ...(isCard && { card_id }),\n ...(!isCard && { page_id }),\n };\n\n return api.comments\n .createComment(getters.getTeamID, body)\n .then(({ data }: { data: CommentResponse }) => {\n return data;\n })\n .catch((err) => {\n if (!isCard) {\n dispatch('localUpdatePageProp', {\n pageId: getters.getPage.id,\n propertyName: 'total_comments',\n value: `${totalCommentCount - 1}`,\n });\n }\n return err;\n });\n },\n\n /**\n * Add new child comment for existing comment.\n * https://api.superthread.com/v1/{team_id}/comments/{comment_id}/children\n */\n addChildComment({ getters }, { content, commentId }) {\n const commentContent = content.replace(/(<([^>]+)>)/, '');\n if (!commentContent.length) return Promise.reject(new Error('Comment content is empty.'));\n const body: CreateCommentRequest = {\n content,\n schema: getters.commentsSchema,\n };\n\n return api.comments\n .createChildComment(getters.getTeamID, commentId, body)\n .then(({ data }: { data: ChildCommentResponse }) => {\n return data;\n })\n .catch((err) => err);\n },\n\n /**\n * Update edited comment in the comment list.\n */\n updateComment({ getters, commit }, { commentId, content, childComment, childCommentId, status }) {\n const body: UpdateCommentRequest = {\n ...(content && { content }),\n schema: getters.commentsSchema,\n ...(status && { status }),\n };\n const updateChild = () =>\n api.comments.updateChildComment(getters.getTeamID, commentId, childCommentId, body);\n const updateParent = () => api.comments.updateComment(getters.getTeamID, commentId, body);\n const update = childComment ? updateChild : updateParent;\n\n return update().catch(({ response }) => {\n const error = response.data;\n if (error.message === 'oldSchema') {\n // add ui notification\n commit('addUiNotification', {\n message: translate('updateAppToEditComment'),\n duration: 4000,\n id: nanoid(4),\n });\n }\n throw error;\n });\n },\n\n updateCommentStatus({ getters }, { commentId, status }) {\n const body: UpdateCommentStatusRequest = {\n status,\n };\n return api.comments.updateCommentStatus(getters.getTeamID, commentId, body);\n },\n\n /**\n * Loads comments for the previously set comments section\n * Used only for pages, we get card comments within activity\n */\n loadComments({ getters, commit, dispatch }) {\n return api.comments\n .getComments(getters.getTeamID, { page_id: getters.getCurrentPageID })\n .then(({ data }) => {\n commit('setComments', data.comments);\n return data;\n })\n .catch((/* err */) => {\n dispatch('addUiNotification', {\n message: translate('couldntLoadComments'),\n status: constants.uiNotificationStatuses.error,\n labels: [\n {\n text: translate('retry'),\n type: constants.uiNotificationElements.button,\n action: 'loadComments',\n buttonStyle: 'important',\n },\n ],\n });\n });\n },\n\n /**\n * Load comment by comment id\n */\n loadComment({ getters, commit, dispatch }, commentId) {\n return api.comments\n .getComment(getters.getTeamID, commentId)\n .then(({ data }) => {\n commit('addComment', data.comment);\n return data;\n })\n .catch((/* err */) => {\n dispatch('addUiNotification', {\n message: translate('couldntLoadComments'),\n status: constants.uiNotificationStatuses.error,\n labels: [\n {\n text: translate('retry'),\n type: constants.uiNotificationElements.button,\n action: 'loadComment',\n params: { commentId },\n buttonStyle: 'important',\n },\n ],\n });\n });\n },\n\n /**\n * Sets the current comment di for further manipualtion.\n * @param {string} commentId\n */\n setCurrentEditCommentID({ commit }, commentId) {\n commit('setCurrentEditCommentID', commentId);\n },\n\n /**\n * Sets current comments.\n * @param {object} payload\n */\n setComments({ commit }, payload) {\n commit('setComments', payload);\n },\n\n /**\n * Sets current card comments and activities.\n * @param {object} payload\n */\n setCardCommentsAndActivities({ commit }, { cardId, payload }) {\n commit('setCardCommentsAndActivities', { cardId, payload });\n },\n\n /**\n * Dispatches API call to delete comment using commentToDeleteId previously set.\n */\n deleteComment(\n { getters, commit, dispatch },\n { commentId, commentType, cardId = '', parentCommentId = '' }\n ) {\n const teamId = getters.getTeamID;\n\n const totalCommentCount = parseInt(getters.getPage.total_comments, 10);\n const currentRouteName = getters.getCurrentRoute.name;\n let comments = null;\n let commentIndex = -1;\n if (cardId && commentType === ResourceType.CardComment) {\n comments = getters.getCardCommentsAndActivities(cardId);\n } else {\n comments = getters.getPageComments;\n if (currentRouteName === 'page' && !parentCommentId) {\n dispatch('localUpdatePageProp', {\n pageId: getters.getPage.id,\n propertyName: 'total_comments',\n value: `${totalCommentCount - 1}`,\n });\n }\n }\n let commentToDeleteId = '';\n if (parentCommentId) {\n commentToDeleteId = parentCommentId;\n commentIndex = comments.findIndex((c: any) => c.id === parentCommentId);\n } else {\n commentToDeleteId = commentId;\n commentIndex = comments.findIndex((c: any) => c.id === commentId);\n }\n dispatch('addCommentInProgressDelete', commentToDeleteId);\n const oldComment = { ...comments[commentIndex] };\n\n commit('removeLocalComment', { localCommentId: commentId, parentCommentId, cardId });\n const childCommentString = parentCommentId\n ? `${parentCommentId}/children/${commentId}`\n : `${commentId}`;\n return authDelete(`${getters.getRoutes.pages}/v1/${teamId}/comments/${childCommentString}`)\n .then(({ data }) => {\n dispatch('removeCommentInProgressDelete', commentToDeleteId);\n return data;\n })\n .catch((error) => {\n commit('addLocalComment', {\n comment: oldComment,\n index: commentIndex,\n });\n if (currentRouteName === 'page') {\n dispatch('localUpdatePageProp', {\n pageId: getters.getPage.id,\n propertyName: 'total_comments',\n value: `${totalCommentCount + 1}`,\n });\n }\n throw error;\n });\n },\n\n /* POPUP */\n\n /**\n * Sets the message to be displayed on popup.\n * @param {string} message\n */\n setPopUpMessage({ commit }, message: string) {\n commit('setPopUpMessage', message);\n },\n\n /**\n * Sets the name of the current tab.\n * @param {string} tabName pages/boards\n */\n setCurrentTabName({ commit }, tabName) {\n commit('setCurrentTabName', tabName);\n },\n\n /**\n * Sets a flag controling the display of comments list in the page view.\n * @param {boolean} active\n */\n setCommentsAreActive({ commit, dispatch }, active: boolean) {\n if (!active) {\n dispatch('setHighlightedPageLevelComments', []);\n }\n commit('setCommentsAreActive', active);\n },\n\n /**\n * Sets a flag determing where the comment is written.\n * @param {string} section Identifier where the comment is pages/card\n */\n setCommentsSection({ commit }, section) {\n commit('setCommentsSection', section);\n },\n\n /**\n * Fetches Team Members\n * */\n fetchTeamMembers({ commit, getters }) {\n const teamId = getters.getTeamID;\n if (!teamId) return Promise.reject(new Error('No team id.'));\n return api.auth\n .getTeamMembers(teamId)\n .then(({ data }) => {\n const members = [...(data.members ?? []), ...(data.invited ?? [])].sort((a, b) =>\n (a.display_name || a.email || '').localeCompare(b.display_name || b.email || '')\n );\n commit('setTeamMembers', { members });\n if (data.inactive) {\n commit('setTeamMembers', {\n members: data.inactive.sort((a, b) =>\n (a.display_name || a.email || '').localeCompare(b.display_name || b.email || '')\n ),\n inactive: true,\n });\n }\n return data;\n })\n .catch((error) => {\n throw error;\n });\n },\n\n /**\n * Set team members\n * @param {array} teamMembers Array of team members\n * */\n setTeamMembers({ commit }, teamMembers) {\n commit('setTeamMembers', { members: teamMembers });\n },\n\n /**\n * Set current project members\n * @param {array} projectMembers Array of project members\n */\n setProjectMembers({ commit }, projectMembers) {\n commit('setCurrentMembers', projectMembers);\n },\n\n /**\n * Sets a showSearchModal flag.\n * @param {boolean} payload\n */\n toggleSearchModal({ commit }, payload: boolean) {\n commit('toggleSearchModal', payload);\n },\n\n /**\n * Sets a showAskAiNotesModal flag.\n * @param {boolean} payload\n */\n toggleAskAiNotes({ commit }, payload: boolean) {\n commit('toggleAskAiNotes', payload);\n },\n\n cancelSearch() {\n if (abortSearchController !== undefined) {\n abortSearchController.abort();\n }\n },\n\n fetchSearchResults({ getters }, { query, advanceOptions }) {\n if (abortSearchController !== undefined) {\n // cancel previous request\n abortSearchController.abort();\n }\n\n const queryParams = {\n query,\n archived: advanceOptions.archived,\n grouped: advanceOptions.grouped,\n types: advanceOptions.types,\n ...(advanceOptions.fields && { fields: advanceOptions.fields }),\n project_ids: advanceOptions.spaces,\n statuses: advanceOptions.statuses,\n parent_card: advanceOptions.parentCard,\n };\n\n abortSearchController = new AbortController();\n\n return api.search\n .getSearch(getters.getTeamID, queryParams, {\n signal: abortSearchController.signal,\n paramsSerializer: {\n indexes: null,\n },\n })\n .then((response) => {\n abortSearchController = undefined;\n return response;\n })\n .catch((error) => {\n if (error === 'canceled') return;\n abortSearchController = undefined;\n throw error;\n });\n },\n\n /**\n * Dispatches API call to search microservice and cancels previous request\n * @param {string} query\n */\n sendSearchQuery({ commit, dispatch }, { query, advanceOptions, childCard = false }) {\n if (query !== '') {\n return dispatch('fetchSearchResults', { query, advanceOptions })\n .then((resp) => {\n const { data } = resp;\n if (childCard) {\n commit('setChildSearchResults', data);\n return;\n }\n commit('setSearchResults', data);\n return data;\n })\n .catch((/* err */) => {});\n }\n if (childCard) {\n commit('setChildSearchResults', []);\n } else {\n commit('setSearchResults', []);\n }\n return Promise.resolve('No search query!');\n },\n\n /**\n * Sets search results to store.\n * @param {array} results\n */\n setSearchResults({ commit }, results: any[]) {\n commit('setSearchResults', results);\n },\n\n setLastSearchQuery({ commit }, lastSearchQuery: string) {\n commit('setLastSearchQuery', lastSearchQuery);\n },\n\n setLastAskAiNotesSearchQuery({ commit }, lastSearchQuery: string) {\n commit('setLastAskAiNotesSearchQuery', lastSearchQuery);\n },\n\n /**\n * Sets search results to store.\n * @param {array} results\n */\n setChildSearchResults({ commit }, results: any[]) {\n commit('setChildSearchResults', results);\n },\n\n /**\n * Updates user profile properties\n * @param {{ first_name: string, last_name: string, display_name: string }} payload\n * https://api.superthread.com/v1/users/{user_id}\n */\n updateUserProfile({ getters, dispatch }, payload) {\n return api.auth\n .updateUser(getters.getUserId, payload)\n .then(({ data }: { data: UpdateUserResponse }) => {\n const { profile_image } = data?.user || {};\n if (profile_image) {\n dispatch('completeOnboardingActions', [OnboardingActionType.CustomiseYourProfile]);\n }\n return data;\n });\n },\n\n /**\n * Loads project by passed project id\n * @param {string} projectId project id\n */\n loadProjectDetails({ getters, dispatch }, projectId) {\n return api.projects\n .getProject(getters.getTeamID, projectId)\n .then(({ data }) => {\n if (data.project) {\n dispatch('setProjectMembers', data.project.members || []);\n }\n return data;\n })\n .catch((err: any) => err);\n },\n\n /**\n * Sets the message to be displayed on notification.\n * @param {string} message\n */\n setNotificationMessage({ commit }, message) {\n commit('setNotificationMessage', message);\n },\n\n /**\n * Sets the type of the notification to be displayed.\n * @param {string} message\n */\n setNotificationType({ commit }, type) {\n commit('setNotificationType', type);\n },\n /**\n * Toggles global dark mode toggle.\n */\n toggleDarkMode({ commit }) {\n commit('toggleDarkMode');\n },\n /**\n * Sets the background image of a boards.\n * @param {string} value\n */\n setBoardsBackground({ commit }, value) {\n commit('setBoardsBackground', value);\n },\n /**\n * Sets sidebarExpanded property to the state.\n * @param {boolean} payload\n */\n setSidebarExpanded({ getters, commit }, payload) {\n if (getters.displayInfoSidebar) commit('displayInfoSidebar', false);\n commit('setSidebarExpanded', payload);\n },\n\n setDisplayEditLinkPopup({ commit }, payload) {\n commit('setDisplayEditLinkPopup', payload);\n },\n\n setDisplayEditorTooltip({ commit }, payload) {\n commit('setDisplayEditorTooltip', payload);\n },\n\n setCommentLinkUrl({ commit }, value) {\n commit('setCommentLinkUrl', value);\n },\n\n resolveInlineComment({ commit }, payload) {\n commit('resolveInlineComment', payload);\n },\n\n logOut({ getters, commit }, redirectData) {\n return authPost(`${getters.getRoutes.users}/v1/auth/logout`)\n .then(({ data }) => {\n commit('resetState');\n localStorage.clear();\n if (redirectData) {\n browserStorageSetItem('redirectRouteAfterLogin', redirectData);\n }\n window.location.href = `${data.logout_redirect_url}`;\n })\n .catch((e) => {\n throw e;\n });\n },\n /**\n * Sets property for displaying add new member popup to the state\n * @param {boolean} payload\n */\n setAddMemberPopup({ commit }, payload) {\n commit('setAddMemberPopup', payload);\n },\n /**\n * Sets property for displaying add members dropdown to the state\n * @param {string} payload\n */\n setDisplayMembersDropdownId({ commit }, payload) {\n commit('setDisplayMembersDropdownId', payload);\n },\n\n setMembersSearchInput({ commit }, payload) {\n commit('setMembersSearchInput', payload);\n },\n\n setAddMembersTarget({ commit }, target) {\n commit('setAddMembersTarget', target);\n },\n /**\n * Sets a flag controling the display of info sidebar.\n */\n displayInfoSidebar({ commit }, payload) {\n commit('displayInfoSidebar', payload);\n },\n\n localAddUserInWorkspace({ commit }, workspace) {\n commit('localAddUserInWorkspace', workspace);\n },\n\n locaRemoveUserFromWorkspace({ commit }, teamId) {\n commit('locaRemoveUserFromWorkspace', teamId);\n },\n\n archiveWorkspace({ getters, commit }, teamId = getters.getTeamID) {\n return api.auth\n .updateTeam(teamId, {\n archived: true,\n })\n .then(({ data }) => {\n commit('resetState');\n localStorage.clear();\n // @ts-ignore\n window.location.href = `${data.logout_redirect_url}`;\n });\n },\n\n deleteWorkspace({ getters, commit }, teamId = getters.getTeamID) {\n return api.auth.deleteTeam(teamId).then(({ data }) => {\n commit('resetState');\n localStorage.clear();\n window.location.href = `${data.logout_redirect_url}`;\n });\n },\n\n addCardIdForLocalId({ commit }, { localId, id }) {\n commit('addCardIdForLocalId', { localId, id });\n },\n\n uploadFiles({ getters, commit }, { payload, id, localId, showActualFileSize = false }) {\n const abortUploadController: AbortController = new AbortController();\n return authPost(`${getters.getRoutes.files}/v1/${getters.getTeamID}/files`, payload, {\n signal: abortUploadController.signal,\n headers: { 'Content-Type': 'multipart/form-data' },\n onUploadProgress: (progressEvent: { loaded: number; total: number }) => {\n if (!id || !localId) return;\n const uploadProgress = Math.round((progressEvent.loaded * 100) / progressEvent.total);\n // If the id starts with 'editor-', it is an editor upload.\n if ((id as string)?.startsWith?.('editor-')) {\n commit('insertOrUpdateEditorUpload', {\n // We should persist the id as-is, without the prefix.\n id: (id as string)?.replace('editor-', ''),\n progress: uploadProgress,\n });\n } else {\n commit('addAttachmentUploadDetails', {\n id,\n localId,\n uploadDetails: {\n uploadProgress,\n // Actual file size is original file size,\n // while progressEvent.total is the size + all body bytes (multipart/form-data)\n ...(!showActualFileSize && { fileSize: progressEvent.total }),\n cancelUpload: () => {\n abortUploadController.abort();\n },\n },\n });\n }\n },\n timeout: 600000,\n }).then((data) => {\n if ((id as string)?.startsWith?.('editor-')) {\n commit('removeEditorUpload', (id as string)?.replace('editor-', ''));\n }\n return data;\n });\n },\n\n getFiles({ getters, commit, dispatch }, payload) {\n const uploadInProgressCardId = getters.getCardAttachmentUploadingId;\n\n return api.files\n .getFiles(getters.getTeamID, payload)\n .then(({ data }: { data: GetFilesResponse }) => {\n const { files }: { files?: File[] } = data;\n files?.forEach((file: any) => {\n dispatch('addLoadedFile', file);\n });\n if (payload.card_id) {\n const attachmentsInProgress =\n uploadInProgressCardId !== -1 && uploadInProgressCardId === payload.card_id\n ? getters\n .getAttachments(uploadInProgressCardId, 'c')\n .filter((att: any) => att.local_id)\n : [];\n\n commit('setAttachments', {\n files: [...attachmentsInProgress, ...(files ?? [])],\n id: payload.card_id,\n prefix: 'c',\n });\n return files;\n }\n if (payload.page_id) {\n return files;\n }\n return data;\n });\n },\n\n getFile({ getters, dispatch }, id) {\n return authGet(`${getters.getRoutes.files}/v1/${getters.getTeamID}/files/${id}?noredirect=true`)\n .then(({ data }) => {\n dispatch('addLoadedFile', data.file);\n return data.file;\n })\n .catch((error) => error);\n },\n\n deleteFile({ getters, commit }, { fileId, cardId }: { fileId: string; cardId: string }) {\n if (cardId) {\n commit('localRemoveFileFromCard', { cardId, fileId });\n }\n return authDelete(`${getters.getRoutes.files}/v1/${getters.getTeamID}/files/${fileId}`).catch(\n (error) => {\n throw error;\n }\n );\n },\n\n resetState({ commit }) {\n commit('resetState');\n },\n\n addMemberToProject(\n { commit, getters, state, dispatch },\n { membersToAdd, projectId = getters.getCurrentProjectId }\n ) {\n const { getTeamID, getRedirectProjectId } = getters;\n const membersPayload: any[] = [];\n const project = getters.getTeamProjectById(projectId);\n const existingProjectMembers = project?.members ?? getters.getCurrentMembers;\n let isMe = false;\n\n dispatch('addProjectMembers', {\n membersToAdd,\n projectId,\n });\n membersToAdd.forEach((memberToAdd: any) => {\n isMe = memberToAdd.user_id === getters.getUserId;\n const memberExist = existingProjectMembers.some(\n (m: any) => m.user_id === memberToAdd.user_id\n );\n\n if (!memberExist) {\n membersPayload.push(memberToAdd);\n const memberAlreadyAdded = state.members.some((m) => m.user_id === memberToAdd.user_id);\n if (!memberAlreadyAdded) commit('addMemberToProject', { memberToAdd });\n commit('joinProject', { memberId: memberToAdd.user_id, projectId });\n if (getRedirectProjectId === projectId) {\n commit('joinProject', getRedirectProjectId);\n }\n }\n });\n\n const existingOrder = [...getters.getProjectOrder];\n if (isMe) {\n // add project to projectOrder\n const newOrder = [...existingOrder];\n const index = newOrder.indexOf(projectId);\n // prevent adding project to projectOrder multiple times\n if (index === -1) {\n newOrder.push(projectId);\n commit('setProjectOrder', newOrder);\n }\n }\n\n if (membersPayload.length < 1) return Promise.resolve();\n\n return api.projects\n .addProjectMember(getTeamID, projectId, { members: membersPayload })\n .catch((error: any) => {\n dispatch('removeProjectMembers', {\n membersToRemove: membersToAdd,\n projectId,\n });\n membersToAdd.forEach((memberToAdd: any) => {\n commit('removeMemberFromProject', { memberToRemove: memberToAdd });\n commit('leaveProject', { memberId: memberToAdd.user_id });\n });\n commit('setProjectOrder', existingOrder);\n throw error;\n });\n },\n\n addProjectMembers({ commit }, { membersToAdd, projectId }) {\n const { getTeamProjects } = this.getters;\n const projectIndex = getTeamProjects.findIndex((i: any) => i.id === projectId);\n if (projectIndex !== -1) {\n const { members: projectMembers } = getTeamProjects[projectIndex];\n const newMembers = [...projectMembers];\n membersToAdd.forEach((memberToAdd: any) => {\n const memberExist = projectMembers.some((m: any) => m.user_id === memberToAdd.user_id);\n if (!memberExist) {\n newMembers.push(memberToAdd);\n }\n });\n commit('setProjectMembers', {\n members: newMembers,\n projectId,\n projectIndex,\n });\n }\n },\n\n removeProjectMembers({ commit }, { membersToRemove, projectId }) {\n const { getTeamProjects } = this.getters;\n const projectIndex = getTeamProjects.findIndex((i: any) => i.id === projectId);\n if (projectIndex !== -1) {\n const { members: projectMembers } = getTeamProjects[projectIndex];\n const newMembers = [...projectMembers];\n membersToRemove.forEach((memberToRemove: any) => {\n const memberIndex = projectMembers.findIndex(\n (m: any) => m.user_id === memberToRemove.user_id\n );\n if (memberIndex !== -1) {\n newMembers.splice(memberIndex, 1);\n }\n });\n commit('setProjectMembers', {\n members: newMembers,\n projectId,\n projectIndex,\n });\n }\n },\n /**\n * Remove a member from a project.\n * @param {string} memberId\n */\n removeMemberFromProject(\n { commit, getters, dispatch },\n { memberToRemove, projectId = getters.getCurrentProjectId }\n ) {\n const { getTeamID, getSelectedProjectId } = getters;\n\n const currentProjectId = getSelectedProjectId === '' ? projectId : getSelectedProjectId;\n dispatch('removeProjectMembers', {\n membersToRemove: [memberToRemove],\n projectId: currentProjectId,\n });\n if (projectId === currentProjectId) {\n commit('removeMemberFromProject', { memberToRemove });\n }\n commit('leaveProject', {\n memberId: memberToRemove.user_id,\n projectId: currentProjectId,\n });\n const memberId = memberToRemove.user_id;\n const isMe = memberId === getters.getUserId;\n\n return api.projects\n .deleteProjectMember(getTeamID, currentProjectId, memberId)\n .then(({ data }) => {\n if (isMe) {\n // remove project from projectOrder\n const newOrder = [...getters.getProjectOrder];\n const index = newOrder.findIndex((i) => i === currentProjectId);\n newOrder.splice(index, 1);\n commit('setProjectOrder', newOrder);\n }\n return data;\n })\n .catch((error: any) => {\n dispatch('addProjectMembers', {\n membersToAdd: [memberToRemove],\n projectId: currentProjectId,\n });\n if (projectId === getSelectedProjectId) {\n commit('addMemberToProject', { memberToAdd: memberToRemove });\n commit('joinProject', { memberId: memberToRemove.user_id });\n }\n throw error;\n });\n },\n\n transferSpaceOwnership(\n { commit, getters },\n { ownerId, projectId = getters.getCurrentProjectId }\n ) {\n commit('setTeamProjectField', { projectId, fieldName: 'user_id', fieldValue: ownerId });\n return api.projects.setProjectOwner(getters.getTeamID, projectId, {\n user_id: ownerId,\n });\n },\n\n /**\n * Sets route path for redirection.\n * @param {string} route\n */\n setRedirectRouteAfterLogin({ commit }, route: object) {\n commit('setRedirectRouteAfterLogin', route);\n },\n\n /* NOTIFICATIONS */\n\n /**\n * Loads count of notifications\n */\n loadNotificationCount({ getters, commit }) {\n return authGet(\n `${getters.getRoutes.projects}/v1/${getters.getTeamID}/notifications?filter=unseen`\n )\n .then(({ data }) => {\n commit('setNotificationCount', data.count);\n commit('setNotificationAlerts', data.notifications);\n })\n .catch((err) => err);\n },\n localUpdateNotificationCount({ commit }, count) {\n commit('setNotificationCount', count);\n },\n /**\n * Loads team member notifications.\n */\n async loadTeamMemberNotifications({ getters, commit }, { loadMore = false, filter = '' }) {\n if (notificationsPaginationCursor === 'end' && loadMore === true) return [];\n\n return api.activity\n .getNotifications(getters.getTeamID, {\n ...(loadMore && { cursor: notificationsPaginationCursor }),\n ...(filter && { filter }),\n })\n .then(({ data }) => {\n // Filter out member_added notifications for boards until backend disables them\n const notifications = (data.notifications || []).filter(\n (n: any) => !(n.type === 'member_added' && n.resource_type === 'board')\n );\n notificationsPaginationCursor = data.cursor || 'end';\n if (loadMore) {\n commit('setTeamMemberNotifications', [\n ...getters.getTeamMemberNotifications,\n ...notifications,\n ]);\n } else {\n commit('setTeamMemberNotifications', notifications);\n }\n });\n },\n /**\n * Update team member notifications by Id.\n */\n updateTeamMemberNotification({ getters }, { id, read, interacted }) {\n return authPatch(`${getters.getRoutes.projects}/v1/${getters.getTeamID}/notifications/${id}`, {\n read,\n interacted,\n }).catch((err) => err);\n },\n\n localRemoveNotification({ commit }, notificationId) {\n commit('localRemoveNotification', notificationId);\n },\n\n /* *\n * Update notifications. Mark all as read or seen.\n */\n markAllReadSeen({ getters, commit }, option) {\n const notifications = getters.getTeamMemberNotifications;\n const mostRecentNotificationId = notifications[0].id;\n const read = { read_up_to_id: mostRecentNotificationId };\n const seen = { seen_up_to_id: mostRecentNotificationId };\n if (option === 'read') {\n commit('localUpdateNotifMarkAllAsRead', notifications);\n }\n return authPatch(\n `${getters.getRoutes.projects}/v1/${getters.getTeamID}/notifications`,\n option === 'seen' ? seen : read\n ).catch((err) => {\n throw err;\n });\n },\n setTeamMemberNotifications({ commit }, notifications) {\n commit('setTeamMemberNotifications', notifications);\n },\n\n inviteUser({ getters, dispatch }, body) {\n /*\n api.auth.createTeamInvite(getters.getTeamID, body)\n */\n return authPost(`${getters.getRoutes.users}/v1/teams/${getters.getTeamID}/invites`, body).then(\n ({ data }) => {\n dispatch('fetchTeamMembers');\n return data;\n }\n );\n },\n updateTeamDetails({ dispatch, getters }, body) {\n return api.auth\n .updateTeam(getters.getTeamID, body)\n .then(({ data }) => {\n const { id, logo } = data?.team || {};\n if (logo?.src) {\n dispatch('completeOnboardingActions', [OnboardingActionType.AddWorkspaceLogo]);\n }\n dispatch('updateRecentWorkspace', { workspaceId: id, updatedFields: data?.team });\n return data;\n })\n .catch((error) => error);\n },\n setRedirectProjectId({ commit }, payload) {\n commit('setRedirectProjectId', payload);\n },\n\n setInviteeRole({ commit }, payload) {\n commit('setInviteeRole', payload);\n },\n setInviteesProjectIds({ commit }, payload) {\n commit('setInviteesProjectIds', payload);\n },\n\n loadViews({ commit, getters }, payload) {\n const { getRoutes, getTeamID } = getters;\n return authGet(`${getRoutes.views}/v1/${getTeamID}/views`, { params: payload }).then(\n ({ data }) => {\n if (payload.shared) {\n commit('setPublicViews', data.views);\n } else {\n commit('setPrivateViews', data.views);\n }\n }\n );\n },\n\n setSelectedViewType({ commit }, viewType) {\n commit('setSelectedViewType', viewType);\n },\n\n updateSelectedViewName({ commit }, viewName) {\n commit('updateSelectedViewName', viewName);\n },\n\n fetchNewViewResults({ getters }, payload) {\n const { getRoutes, getTeamID } = getters;\n return authPost(\n `${getRoutes.views}/v1/${getTeamID}/views/preview`,\n { ...payload },\n { params: { count: 100 } }\n ).then(({ data }) => {\n viewsPaginationCursor = data.cursor || 'end';\n return data;\n });\n },\n\n hideAllReplies({ commit }, payload) {\n commit('hideAllReplies', payload);\n },\n showHideReplies({ commit }, payload) {\n commit('showHideReplies', payload);\n },\n\n setViewResults({ commit }, payload) {\n commit('setViewResults', payload);\n },\n\n updateLocalViewId({ commit }, { key, viewId }) {\n commit('updateLocalViewId', { key, viewId });\n },\n\n localAddViewResultsToList({ commit }, payload) {\n commit('localAddViewResultsToList', payload);\n },\n\n updateCountInViewResultsList({ commit }, payload) {\n commit('updateCountInViewResultsList', payload);\n },\n\n createView({ getters }, payload) {\n const { getRoutes, getTeamID } = getters;\n return authPost(`${getRoutes.views}/v1/${getTeamID}/views`, { ...payload }).then(\n ({ data }) => data\n );\n },\n\n updateView({ getters }, updatingData) {\n const { getRoutes, getTeamID } = getters;\n return authPatch(`${getRoutes.views}/v1/${getTeamID}/views/${updatingData.id}`, {\n ...updatingData.payload,\n }).then(({ data }) => data);\n },\n\n fetchViewResults({ commit, getters }, viewId) {\n const { getRoutes, getTeamID } = getters;\n return authGet(`${getRoutes.views}/v1/${getTeamID}/views/${viewId}/results`, {\n params: { count: 100 },\n }).then(({ data }) => {\n const { cards = [], count = 0, cursor } = data;\n viewsPaginationCursor = cursor || 'end';\n commit('localAddViewResultsToList', { cards, count, viewId });\n return data;\n });\n },\n\n currentViewTotalCount({ commit }, payload) {\n commit('currentViewTotalCount', payload);\n },\n\n fetchMoreViewResults({ commit, getters }, viewId) {\n if (viewsPaginationCursor === 'end') return { cards: [] };\n\n const { getTeamID, getViewEditMode, getCurrentRoute } = getters;\n const params = viewsPaginationCursor\n ? { count: 100, cursor: viewsPaginationCursor }\n : { count: 100 };\n const card_filters = getters.getViewFilters;\n const type = 'card';\n const isMyWorkRoute = getCurrentRoute.name === constants.myWorkRouteName;\n const isMemberRoute = getCurrentRoute.name === constants.memberRouteName;\n const request =\n !getViewEditMode && !isMyWorkRoute && !isMemberRoute\n ? api.views.getViewResults(getTeamID, viewId, params)\n : api.views.viewPreview(getTeamID, { card_filters, type }, params);\n\n return request.then(({ data }) => {\n const { cards = [], cursor } = data;\n viewsPaginationCursor = cursor || 'end';\n commit('setViewResults', [...getters.getViewResults, ...cards]);\n return data;\n });\n },\n\n fetchView({ commit, getters }, viewId) {\n const { getRoutes, getTeamID } = getters;\n return authGet(`${getRoutes.views}/v1/${getTeamID}/views/${viewId}`).then(({ data }) => {\n commit('setSelectedView', data);\n commit('setSelectedViewType', data.type);\n });\n },\n\n localAddViewToViewList({ commit }, view) {\n commit('localAddViewToViewList', view);\n },\n\n setSelectedView({ commit }, view) {\n commit('setSelectedView', view);\n },\n\n setViewFilters({ commit }, filters) {\n commit('setViewFilters', filters);\n },\n\n setViewPills({ commit }, payload) {\n commit('setViewPills', payload);\n },\n\n setViewEditMode({ commit }, changed) {\n commit('setViewEditMode', changed);\n },\n\n localUpdateViewId({ commit }, payload) {\n commit('localUpdateViewId', payload);\n },\n\n itemNotFound({ commit }, payload) {\n commit('itemNotFound', payload);\n },\n\n getAllTrashProjects({ commit, getters }, trash) {\n return api.projects.getProjects(getters.getTeamID, { trash }).then(({ data }) => {\n commit('setTrashProjects', data.projects);\n // filter out trashed from the projectOrder\n const newOrder = getters.getProjectOrder.filter((id: string) => {\n return !data.projects?.some((p: any) => p.id === id);\n });\n commit('setProjectOrder', newOrder);\n });\n },\n\n deleteView(\n { commit, dispatch, getters, state },\n { viewId, shared }: { viewId: string; shared: boolean }\n ) {\n const key = shared ? 'publicViews' : 'privateViews';\n const index = state[key].findIndex((v: any) => v.id === viewId);\n const view = { ...state[key][index] };\n\n commit('localDeleteView', { key, index });\n const rawFavourites = toRaw(getters.getFavourites);\n const favourites = cloneDeep(rawFavourites);\n const isFavourite = getters.isFavourite(viewId, ResourceType.View);\n if (isFavourite) {\n commit('localRemoveFromFavourites', {\n resourceId: viewId,\n resourceType: ResourceType.View,\n });\n }\n\n return api.views\n .viewDelete(getters.getTeamID, viewId)\n .then(() => {\n if (isFavourite) {\n dispatch('deleteUserFavourite', {\n resource_id: viewId,\n resource_type: ResourceType.View,\n title: view.name,\n });\n }\n })\n .catch((err: Error) => {\n commit('localAddView', { view, key, index });\n if (isFavourite) {\n commit('setFavourites', favourites);\n }\n throw err;\n });\n },\n\n localDeleteView({ commit }, { key, index }) {\n commit('localDeleteView', { key, index });\n },\n\n fetchBoardsFilters({ commit, getters }) {\n const { getRoutes, getTeamID } = getters;\n\n return authGet(`${getRoutes.search}/v1/${getTeamID}/search/boards`).then(({ data }) => {\n const { boards } = data;\n commit('setBoardsFilters', boards);\n });\n },\n /**\n * Adds a new UI notification to state.\n * @param {object} notificatin\n */\n addUiNotification({ commit }, notification) {\n const newNotification = {\n ...notification,\n id: notification.id ?? nanoid(4),\n };\n commit('addUiNotification', newNotification);\n },\n /**\n * Removes UI notification by id\n * @param {string} notificationId\n */\n removeUiNotificationById({ commit }, notificationId) {\n commit('removeUiNotificationById', notificationId);\n },\n setOpenedFavouriteItem({ commit }, favouriteItem) {\n commit('setOpenedFavouriteItem', favouriteItem);\n },\n setHeaderMemberDropdownPosition({ commit }, payload) {\n commit('setHeaderMemberDropdownPosition', payload);\n },\n\n setActiveComment({ commit }, payload) {\n commit('setActiveComment', payload);\n },\n\n setImportHistory({ commit }, value) {\n commit('setImportHistory', value);\n },\n\n watchResource({ dispatch }, { resourceType, resourceId, subscribe, message }) {\n let actionName = '';\n switch (resourceType) {\n case ResourceType.Board:\n actionName = 'watchBoard';\n break;\n case ResourceType.List:\n actionName = 'watchList';\n break;\n case ResourceType.Card:\n actionName = 'watchCard';\n break;\n case ResourceType.Page:\n actionName = 'watchPage';\n break;\n }\n\n if (actionName) {\n dispatch(actionName, { resourceId, subscribe, message });\n }\n },\n\n async watchPage({ getters, dispatch }, { resourceId, subscribe, message }) {\n const { getTeamID, getUserId } = getters;\n const localPageUpdatePayload = {\n pageId: resourceId,\n propertyName: 'is_watching',\n value: subscribe,\n };\n dispatch('localUpdatePageProp', localPageUpdatePayload);\n\n const successHandler = () => {\n dispatch('addUiNotification', {\n message: translate(message.success, { name: 'page' }),\n duration: 4000,\n });\n };\n\n const errHandler = () => {\n const revertPayload = {\n pageId: resourceId,\n propertyName: 'is_watching',\n value: !subscribe,\n };\n dispatch('localUpdatePageProp', revertPayload);\n dispatch('addUiNotification', {\n message: translate(message.error, { name: 'page' }),\n status: constants.uiNotificationStatuses.error,\n });\n };\n\n if (subscribe) {\n const body: AddWatcherRequest = { user_id: getUserId };\n await api.pages\n .addPageWatcher(getTeamID, resourceId, body)\n .then(successHandler)\n .catch(errHandler);\n } else {\n await api.pages\n .deletePageWatcher(getTeamID, resourceId, getUserId)\n .then(successHandler)\n .catch(errHandler);\n }\n },\n\n async watchCard({ getters, dispatch }, { resourceId, subscribe, message }) {\n const { getTeamID, getUserId } = getters;\n const localCardUpdatePayload = {\n cardId: resourceId,\n fieldName: 'is_watching',\n fieldValue: subscribe,\n };\n dispatch('localUpdateCardField', localCardUpdatePayload);\n\n const isEpicCard = getters.getCards[resourceId]?.board_id === constants.epicsBoardId;\n const resourceCardName = isEpicCard ? ResourceType.Project : ResourceType.Card;\n\n const successHandler = () => {\n dispatch('addUiNotification', {\n message: translate(message.success, { name: resourceCardName }),\n duration: 4000,\n });\n };\n\n const errHandler = () => {\n const revertPayload = {\n cardId: resourceId,\n fieldName: 'is_watching',\n fieldValue: !subscribe,\n };\n dispatch('localUpdateCardField', revertPayload);\n dispatch('addUiNotification', {\n message: translate(message.error, { name: resourceCardName }),\n status: constants.uiNotificationStatuses.error,\n });\n };\n\n if (subscribe) {\n const body: AddWatcherRequest = { user_id: getUserId };\n await api.boards\n .addCardWatcher(getTeamID, resourceId, body)\n .then(successHandler)\n .catch(errHandler);\n } else {\n await api.boards\n .deleteCardWatcher(getTeamID, resourceId, getUserId)\n .then(successHandler)\n .catch(errHandler);\n }\n },\n\n async watchBoard({ getters, dispatch }, { resourceId, subscribe, message }) {\n const { getTeamID, getUserId } = getters;\n const localBoardUpdatePayload = {\n boardId: resourceId,\n propertyName: 'is_watching',\n value: subscribe,\n };\n dispatch('updateBoardPropertyInBoards', localBoardUpdatePayload);\n\n const successHandler = () => {\n dispatch('addUiNotification', {\n message: translate(message.success, { name: 'board' }),\n duration: 4000,\n });\n };\n\n const errHandler = () => {\n const revertPayload = {\n boardId: resourceId,\n propertyName: 'is_watching',\n value: !subscribe,\n };\n dispatch('updateBoardPropertyInBoards', revertPayload);\n dispatch('addUiNotification', {\n message: translate(message.error, { name: 'board' }),\n status: constants.uiNotificationStatuses.error,\n });\n };\n\n if (subscribe) {\n const body: AddWatcherRequest = { user_id: getUserId };\n await api.boards\n .addBoardWatcher(getTeamID, resourceId, body)\n .then(successHandler)\n .catch(errHandler);\n } else {\n await api.boards\n .deleteBoardWatcher(getTeamID, resourceId, getUserId)\n .then(successHandler)\n .catch(errHandler);\n }\n },\n\n async watchList({ getters, dispatch }, { resourceId, subscribe, message }) {\n const { getTeamID, getUserId } = getters;\n const localListUpdatePayload = {\n listId: resourceId,\n propertyName: 'is_watching',\n value: subscribe,\n };\n dispatch('setBoardListProp', localListUpdatePayload);\n\n const successHandler = () => {\n dispatch('addUiNotification', {\n message: translate(message.success, { name: 'list' }),\n duration: 4000,\n });\n };\n\n const errHandler = () => {\n const revertPayload = {\n listId: resourceId,\n propertyName: 'is_watching',\n value: !subscribe,\n };\n dispatch('setBoardListProp', revertPayload);\n dispatch('addUiNotification', {\n message: translate(message.error, { name: 'list' }),\n status: constants.uiNotificationStatuses.error,\n });\n };\n\n if (subscribe) {\n const body: AddWatcherRequest = { user_id: getUserId };\n await api.boards\n .addListWatcher(getTeamID, resourceId, body)\n .then(successHandler)\n .catch(errHandler);\n } else {\n await api.boards\n .deleteListWatcher(getTeamID, resourceId, getUserId)\n .then(successHandler)\n .catch(errHandler);\n }\n },\n\n // eslint-disable-next-line\n fetchProjectData({ getters }, { teamId, resourceId }) {\n return api.projects\n .getProject(teamId, resourceId)\n .then(({ data }) => data.project)\n .catch((error) => {\n throw error;\n });\n },\n\n setFavouritesOpened({ commit }, value) {\n commit('setFavouritesOpened', value);\n },\n\n moveBoardHandler(\n { commit, getters, dispatch },\n { destinationProjectId, originalProjectId, destinationBoardOrder, originalBoardOrder, boardId }\n ) {\n const projectExpanded = getters.getProjectExpanded(\n `${getters.getTeamSlug}-${destinationProjectId}`\n );\n if (projectExpanded) {\n dispatch('loadBoards', destinationProjectId);\n }\n if (!getters.getFlatBoards[boardId]?.lists) {\n dispatch('fetchBoard', { boardId });\n }\n\n if (getters.currentBoardId === boardId) {\n dispatch('setCurrentProjectId', destinationProjectId);\n }\n\n commit('localUpdateProjectBoardsOrder', {\n projectId: destinationProjectId,\n payload: destinationBoardOrder,\n });\n commit('localUpdateProjectBoardsOrder', {\n projectId: originalProjectId,\n payload: originalBoardOrder,\n });\n\n commit('setProjectBoards', {\n projectId: destinationProjectId,\n projectBoards: destinationBoardOrder,\n });\n\n commit('setProjectBoards', {\n projectId: originalProjectId,\n projectBoards: originalBoardOrder,\n });\n\n commit('updateBoardPropertyInBoards', {\n boardId,\n propertyName: 'project_id',\n value: destinationProjectId,\n });\n },\n\n localAddPageInProject({ commit, getters }, { projectId, page }) {\n if (!projectId || !page) return;\n const projectForUpdate = getters.getTeamProjects.find((p: any) => p.id === projectId);\n const newPage = {\n id: page.id,\n title: page.title,\n ...(page.icon && { icon: page.icon }),\n };\n if (!projectForUpdate.pages) return;\n projectForUpdate.pages.push(newPage);\n commit('updateProjectById', projectForUpdate);\n },\n\n localUpdateSprintInProject({ commit, getters }, { id, changes }) {\n const unfinishedCards: any[] = [];\n const cardIds: string[] = [];\n changes.forEach((change: any) => {\n const [resource] = change.path;\n if (resource === 'lists') return;\n if (change.type === 'update') {\n commit('updateBoardPropertyInBoards', {\n boardId: id,\n propertyName: resource,\n value: change.to,\n });\n }\n if (change.type === 'create' && resource === 'unfinished_cards') {\n unfinishedCards.push(change.to);\n cardIds.push(change.to.id);\n }\n });\n if (unfinishedCards.length) {\n setTimeout(() => {\n const rolledoverList = {\n id: `${id}-rolledover`,\n title: 'Rolled over',\n board_id: id,\n team_id: getters.getTeamID,\n card_order: cardIds,\n cards: unfinishedCards,\n behavior: 'rolledover',\n };\n commit('updateBoardPropertyInBoards', {\n boardId: id,\n propertyName: 'unfinished_cards',\n value: unfinishedCards,\n });\n commit('addBoardListId', {\n boardId: id,\n listId: `${id}-rolledover`,\n });\n commit('setSingleListInListCards', { listId: `${id}-rolledover`, value: cardIds });\n commit('setBoardListsFlat', [rolledoverList]);\n }, 300);\n }\n },\n\n localUpdateProject({ commit, getters, dispatch }, { id, changes }) {\n const project = getters.getTeamProjectById(id) || {};\n const projectString = JSON.stringify(project);\n\n let newProject = JSON.parse(projectString);\n const newPageTree: any = {};\n\n changes.forEach((change: any) => {\n if (\n ['page_order', 'archive_page_order', 'archive_pages', 'pages', 'boards'].includes(\n change.path[0]\n )\n ) {\n newProject = updateBoardPageTitle(\n newProject,\n change.type,\n change.path,\n change.to,\n change.from,\n dispatch,\n getters\n );\n } else {\n newProject = objectSet(newProject, change.path, change.to);\n }\n });\n\n commit('updateProjectById', newProject);\n [...(newProject.page_order || [])].forEach((p) => {\n newPageTree[p.id] = p;\n });\n\n /* commit('setProjectPagesTree', {\n projectId: newProject.id,\n pagesTree: { ...getters.getProjectPagesTree(newProject.id), ...newPageTree },\n }); */\n\n if (project.board_order !== newProject.board_order) {\n commit('setProjectBoards', {\n projectId: id,\n projectBoards: newProject.board_order,\n });\n }\n },\n\n setCurrentRoute({ commit }, route) {\n commit('setCurrentRoute', route);\n },\n\n setSocketConnected({ commit }, value) {\n commit('setSocketConnected', value);\n },\n\n setDisplayVideoLinkPopup({ commit }, value) {\n commit('setDisplayVideoLinkPopup', value);\n },\n\n createBoardWebhookNotification({ getters, commit }, { boardId, integration, integrationId }) {\n const { getTeamID } = getters;\n\n return api.boards\n .createWebhookNotification(getTeamID, boardId, {\n destination_type: integration,\n integration_id: integrationId,\n })\n .then(({ data }) => {\n commit('updateBoardPropertyInBoards', {\n boardId,\n propertyName: 'webhook_notifications',\n value: data.board?.webhook_notifications,\n });\n });\n },\n\n deleteBoardWebhookNotification({ getters }, { boardId, webhookDestination }) {\n const { getTeamID } = getters;\n\n return api.boards.deleteWebhookNotification(getTeamID, boardId, webhookDestination);\n },\n\n createInstallationForIntegration({ getters }, { integration, payload }) {\n return api.integrations\n .createIntegrationInstallation(getters.getTeamID, integration, payload)\n .catch(() => {});\n },\n\n deleteInstallationForIntegration({ getters }, { integration, installationId }) {\n const { getRoutes, getTeamID } = getters;\n return authDelete(\n `${getRoutes.integrations}/v1/${getTeamID}/integrations/${integration}/installations/${installationId}`\n );\n },\n\n getTeamIntegrations({ getters }) {\n const { getRoutes, getTeamID } = getters;\n return authGet(`${getRoutes.integrations}/v1/${getTeamID}/integrations`).then(\n ({ data }) => data\n );\n },\n\n getTeamIntegrationInstallations({ commit, getters }, { integration }) {\n const { getRoutes, getTeamID } = getters;\n return authGet(\n `${getRoutes.integrations}/v1/${getTeamID}/integrations/${integration}/installations`\n ).then(({ data }) => {\n commit('setInstallations', {\n integration,\n installations: data.installations,\n });\n });\n },\n\n toggleBoardWebhookNotificationOption(\n { getters, commit },\n { boardId, webhookDestination, payload }\n ) {\n const { getTeamID } = getters;\n\n return api.boards\n .updateWebhookNotificationBoard(getTeamID, boardId, webhookDestination, payload)\n .then(({ data }) => {\n commit('updateBoardPropertyInBoards', {\n boardId,\n propertyName: 'webhook_notifications',\n value: data.board?.webhook_notifications,\n });\n });\n },\n\n toggleListWebhookNotificationOption(\n { getters, dispatch },\n { listId, webhookDestination, payload }\n ) {\n const { getTeamID } = getters;\n\n return api.boards\n .updateWebhookNotificationList(getTeamID, listId, webhookDestination, payload)\n .then(({ data }) => {\n dispatch('setBoardListProp', {\n listId,\n propertyName: 'webhook_notifications',\n value: data.list?.webhook_notifications,\n });\n });\n },\n\n setUpImport({ getters }, value) {\n return api.importer\n .createImport(getters.getTeamID, value)\n .then(({ data }) => data.import)\n .catch((error) => {\n throw error;\n });\n },\n\n updateImportSettings({ getters }, { value, importId }) {\n return authPatch(\n `${getters.getRoutes.projects}/v1/${getters.getTeamID}/imports/${importId}`,\n value\n )\n .then(({ data }) => data)\n .catch((error) => {\n throw error;\n });\n },\n\n startImportProcess({ getters }, importId) {\n return authPost(\n `${getters.getRoutes.projects}/v1/${getters.getTeamID}/imports/${importId}/queue`\n )\n .then((data) => data)\n .catch((e) => {\n throw e;\n });\n },\n\n getImportHistory({ getters }) {\n return authGet(`${getters.getRoutes.projects}/v1/${getters.getTeamID}/imports`)\n .then(({ data }) => data.imports)\n .catch((error) => {\n throw error;\n });\n },\n\n setImportProgressSteps({ commit }, payload) {\n commit('setImportProgressSteps', payload);\n },\n\n updateImportProgressSteps({ commit }, { step, propertyName, value }) {\n commit('updateImportProgressSteps', { step, propertyName, value });\n },\n\n setRouteBeforeSettings({ commit }, value) {\n commit('setRouteBeforeSettings', value);\n },\n\n setImportProgressCurrentStep({ commit }, value) {\n commit('setImportProgressCurrentStep', value);\n },\n\n setSettingsCurrentProjectId({ commit }, id: string) {\n commit('setSettingsCurrentProjectId', id);\n },\n\n setCachedComponents({ commit }, components) {\n commit('setCachedComponents', components);\n },\n\n setSettingsCurrentBoardId({ commit }, id: string) {\n commit('setSettingsCurrentBoardId', id);\n },\n getTeamIntegrationsSettings({ getters }, integration) {\n const { getRoutes, getTeamID } = getters;\n return authGet(\n `${getRoutes.integrations}/v1/${getTeamID}/integrations/${integration}/settings`\n ).then(({ data }) => data);\n },\n\n updateIntegrationsSettings({ getters }, { integration, payload }) {\n return authPatch(\n `${getters.getRoutes.projects}/v1/${getters.getTeamID}/integrations/${integration}/settings`,\n {\n [integration]: payload,\n }\n )\n .then(({ data }) => data)\n .catch((error) => {\n throw error;\n });\n },\n\n setIntegrationSettings({ commit }, { integration, settings }) {\n commit('setIntegrationSettings', { integration, settings });\n },\n\n updateLocalIntegrationSettings({ commit }, { integration, payload }) {\n commit('updateLocalIntegrationSettings', { integration, payload });\n },\n\n setUpcomingGoogleCalendarEvents({ commit }, events) {\n commit('setUpcomingGoogleCalendarEvents', events);\n },\n\n getUpcomingGoogleCalendarEvents({ getters, commit }, { installation_id }) {\n const key = 'getUpcomingGoogleCalendarEvents';\n\n const existingPromise = activePromises[key];\n if (existingPromise !== undefined) return existingPromise;\n\n const promise = api.integrations\n .getGcalEvents(getters.getTeamID, installation_id)\n .then(({ data }) => {\n if (data.events) {\n commit('setUpcomingGoogleCalendarEvents', data.events);\n }\n delete activePromises[key];\n return data;\n });\n\n activePromises[key] = promise;\n return promise;\n },\n\n fetchIntegrationDetails({ getters }, { client_id }) {\n return authGet(`${getters.getRoutes.integrations}/oauth2/clients/${client_id}`)\n .then(({ data }) => data)\n .catch((error) => error);\n },\n\n setExpandedProject({ commit }, { id, value }) {\n commit('setExpandedProject', { id, value });\n },\n\n setBoardsColumnLayout(\n { commit, getters },\n { layout, projectId = getters.getCurrentProjectId, teamSlug = getters.getTeamSlug }\n ) {\n commit('setBoardsColumnLayout', { layout, projectId, teamSlug });\n },\n\n fetchAgents({ commit, getters }) {\n if (getters.getTeamFeatureEnabled(constants.featureFlagIds.aiAgents)) {\n return api.ai.getAiAgents(getters.getTeamID).then(({ data }) => {\n commit('setAgents', data.agents);\n });\n }\n },\n\n getAgentById({ getters }, agentId) {\n return api.ai.getAiAgent(getters.getTeamID, agentId).then(({ data }) => {\n return data.agent;\n });\n },\n\n createAgent({ getters, commit }, payload) {\n return api.ai.createAiAgent(getters.getTeamID, payload).then(({ data }) => {\n const agents = [...getters.getAgents, data.agent];\n commit('setAgents', agents);\n return agents;\n });\n },\n\n updateAgent({ getters, commit }, { agentId, payload }) {\n return api.ai.updateAiAgent(getters.getTeamID, agentId, payload).then(({ data }) => {\n const agents = [...(getters.getAgents || [])];\n const agentIndex = agents.findIndex((a) => a.id === agentId);\n if (agentIndex !== -1) {\n agents.splice(agentIndex, 1, data.agent);\n } else {\n agents.push(data.agent);\n }\n commit('setAgents', agents);\n return agents;\n });\n },\n\n attachAgent({ getters, commit }, { agentId, payload }) {\n return authPost(\n `${getters.getRoutes.users}/v1/${getters.getTeamID}/ai/agents/${agentId}/attachments`,\n payload\n ).then(({ data }) => {\n const agents = [...(getters.getAgents || [])];\n const agentIndex = agents.findIndex((a) => a.id === agentId);\n if (agentIndex !== -1) {\n agents.splice(agentIndex, 1, data);\n } else {\n agents.push(data);\n }\n commit('setAgents', agents);\n return agents;\n });\n },\n\n detachAgent({ getters, commit }, { agentId, attachmentId }) {\n return authDelete(\n `${getters.getRoutes.users}/v1/${getters.getTeamID}/ai/agents/${agentId}/attachments/${attachmentId}`\n ).then(({ data }) => {\n const agents = [...(getters.getAgents || [])];\n const agentIndex = agents.findIndex((a) => a.id === agentId);\n if (agentIndex !== -1) {\n agents.splice(agentIndex, 1, data);\n }\n\n commit('setAgents', agents);\n return data.attached_resources;\n });\n },\n\n deleteAgent({ getters, commit }, agentId) {\n return api.ai.deleteAiAgent(getters.getTeamID, agentId).then(() => {\n const agents = [...(getters.getAgents || [])];\n const agentIndex = agents.findIndex((a) => a.id === agentId);\n if (agentIndex !== -1) {\n agents.splice(agentIndex, 1);\n }\n commit('setAgents', agents);\n return agents;\n });\n },\n\n setCurrentAgentId({ commit }, agentId) {\n commit('setCurrentAgentId', agentId);\n },\n\n fetchAgentPromptIterations({ getters, commit }, agentId) {\n return api.ai.getAiAgentPromptIterations(getters.getTeamID, agentId).then(({ data }) => {\n commit('setPromptIterationsForAgent', {\n agentId: agentId,\n iterations: data.agent_prompt?.iterations || [],\n });\n return data.agent_prompt;\n });\n },\n\n sendMessageToPromptBuilderAssistant({ getters, commit }, { agentId, message }) {\n const payload = {\n message: message,\n };\n\n return api.ai\n .addAiAgentPromptIteration(getters.getTeamID, agentId, payload)\n .then(({ data }) => {\n const iterations = [...getters.getAgentPromptIterations(agentId), data.prompt_iteration];\n commit('setPromptIterationsForAgent', { agentId, iterations });\n return data;\n });\n },\n\n handleAgentPromptIteration({ getters, commit }, event) {\n const agentId = event.agent_id;\n const history = getters.getAgentPromptIterations(agentId);\n\n const isAlreadyPresent = history.some((item: any) => item.id === event.iteration.id);\n let iterations;\n\n if (isAlreadyPresent) {\n iterations = history.map((i: any) => {\n if (i.id === event.iteration.id) {\n return { ...i, ...event.iteration };\n }\n return i;\n });\n } else {\n iterations = [...history, event.iteration];\n }\n\n commit('setPromptIterationsForAgent', { agentId, iterations });\n },\n\n resetChatHistoryForAgent({ getters, commit }, agentId) {\n return api.ai\n .deleteAiAgentPromptHistory(getters.getTeamID, agentId)\n .then(() => commit('setPromptIterationsForAgent', { agentId, iterations: [] }));\n },\n\n fetchAgentRuns({ getters, commit }, agentId) {\n return api.ai.getAiAgentRuns(getters.getTeamID, agentId).then(({ data }) => {\n commit('setAgentRuns', data.runs);\n return data;\n });\n },\n\n setPagesColumnLayout(\n { commit, getters },\n { layout, projectId = getters.getCurrentProjectId, teamSlug = getters.getTeamSlug }\n ) {\n commit('setPagesColumnLayout', { layout, projectId, teamSlug });\n },\n\n setProjectsExpanded({ commit }, value) {\n commit('setProjectsExpanded', value);\n },\n\n setFavouritesExpanded({ commit }, value) {\n commit('setFavouritesExpanded', value);\n },\n\n setDraggingEntityProjectFromId({ commit }, id) {\n commit('setDraggingEntityProjectFromId', id);\n },\n\n setDraggingSidebarItem({ commit }, value) {\n commit('setDraggingSidebarItem', value);\n },\n\n localAddProjectBoardOrder({ commit }, { projectId, boardId }) {\n commit('localAddProjectBoardOrder', { projectId, boardId });\n },\n\n localAddPageInTree({ commit }, { projectId, pageId }) {\n commit('localAddPageInTree', { projectId, pageId });\n },\n\n setSelectedProjectId({ commit }, projectId) {\n commit('setSelectedProjectId', projectId);\n },\n\n localRemovePageInTree({ commit }, { projectId, pageId }) {\n commit('localRemovePageFromPageOrder', { projectId, pageId });\n commit('localRemoveBoardOrPageInProject', {\n projectId,\n itemId: pageId,\n section: 'pages',\n });\n },\n\n localRemoveBoardFromOrder({ commit }, { projectId, boardId }) {\n commit('localRemoveBoardFromOrder', { projectId, boardId });\n commit('localRemoveBoardOrPageInProject', {\n projectId,\n itemId: boardId,\n section: 'boards',\n });\n },\n\n /**\n * Get pending invites for a team\n * https://api.superthread.com/v1/users/{user_id}/pending_invites\n */\n getTeamPendingInvities({ commit, getters }) {\n return authGet(`${getters.getRoutes.users}/v1/teams/${getters.getTeamID}/invites`)\n .then(({ data }) => commit('setPendingInvites', data))\n .catch((error) => error);\n },\n\n deleteTeamInvite({ getters }, payload) {\n return authDelete(`${getters.getRoutes.users}/v1/teams/${getters.getTeamID}/invites`, {\n data: { invitee_emails: payload },\n })\n .then(({ data }) => data)\n .catch((error) => {\n throw error;\n });\n },\n\n deleteTeamMember({ getters }, userId) {\n return authDelete(`${getters.getRoutes.users}/v1/teams/${getters.getTeamID}/members/${userId}`)\n .then(({ data }) => data)\n .catch((error) => {\n throw error;\n });\n },\n\n updateTeamMember({ commit, getters }, { userId, payload }) {\n return authPatch(\n `${getters.getRoutes.projects}/v1/teams/${getters.getTeamID}/members/${userId}`,\n {\n role: payload,\n }\n )\n .then(({ data }) => {\n commit('localUpdateTeamMember', { userId, updatedFields: data?.member || {} });\n return data;\n })\n .catch((error) => {\n throw error;\n });\n },\n\n resendTeamInvite({ getters }, payload) {\n return authPost(\n `${getters.getRoutes.projects}/v1/teams/${getters.getTeamID}/invites/resend`,\n payload\n )\n .then((data) => data)\n .catch((e) => {\n throw e;\n });\n },\n\n deleteProject({ getters, dispatch, commit }, projectId: string) {\n const project = getters.getTeamProjectById(projectId);\n const oldProjectOrder = [...getters.getProjectOrder];\n const oldTrashedProjects = [...getters.getTrashProjects];\n\n dispatch('localRemoveProject', project.id);\n\n return api.projects.trashProject(getters.getTeamID, project.id).catch((err) => {\n commit('setTrashProjects', oldTrashedProjects);\n dispatch('localAddProjectToTeamProjects', project);\n dispatch('setProjectOrder', oldProjectOrder);\n throw err;\n });\n },\n\n deletePopupId({ commit }, payload) {\n commit('deletePopupId', payload);\n },\n\n setCurrentRole({ commit }, payload) {\n commit('setCurrentRole', payload);\n },\n\n setDoubleCheckPopup({ commit }, payload) {\n commit('setDoubleCheckPopup', payload);\n },\n\n setConfirmationModal({ commit }, payload) {\n commit('setConfirmationModal', payload);\n },\n\n setColorsPopup({ commit }, payload) {\n commit('setColorsPopup', payload);\n },\n\n setCommentsOrder({ commit }, payload) {\n commit('setCommentsOrder', payload);\n },\n\n loadActivity({ getters }, payload) {\n return api.comments\n .activityDetail(getters.getTeamID, payload)\n .then(({ data }) => data)\n .catch((error) => error);\n },\n closeEditor({ commit }, payload) {\n commit('closeEditor', payload);\n },\n editorOpen({ commit }, payload) {\n commit('editorOpen', payload);\n },\n\n setQuickCard({ commit }, payload: boolean) {\n commit('setQuickCard', payload);\n },\n\n setQuickCardBoardId({ commit }, payload) {\n commit('setQuickCardBoardId', payload);\n },\n\n setQuickPage({ commit }, value) {\n commit('setQuickPage', value);\n },\n\n setNoteInQuickPage({ commit }, value) {\n commit('setNoteInQuickPage', value);\n },\n\n setQuickNote({ commit }, value) {\n commit('setQuickNote', value);\n },\n\n setCardCommentActivityFilter({ commit }, payload) {\n commit('setCardCommentActivityFilter', payload);\n },\n\n addCommentInProgressPatch({ commit }, payload) {\n commit('addCommentInProgressPatch', payload);\n },\n\n removeCommentInProgressPatch({ commit }, payload) {\n commit('removeCommentInProgressPatch', payload);\n },\n\n addCommentInProgressDelete({ commit }, payload) {\n commit('addCommentInProgressDelete', payload);\n },\n\n removeCommentInProgressDelete({ commit }, payload) {\n commit('removeCommentInProgressDelete', payload);\n },\n\n setOnline({ commit }, value) {\n commit('setOnline', value);\n },\n\n addLoadedFile({ commit }, payload) {\n commit('addLoadedFile', payload);\n },\n\n setProjectPreviewLastScrollPos({ commit }, { projectId, scrollPosition }) {\n commit('setProjectPreviewLastScrollPos', { projectId, scrollPosition });\n },\n\n fetchFavourites({ commit, getters }) {\n return api.favourites\n .getFavourites(getters.getTeamID)\n .then(({ data }: any) => {\n if (data) {\n commit('setFavourites', data.favourites);\n return data.favourites;\n }\n })\n .catch((err: any) => err);\n },\n\n setFavourites({ commit }, favourites) {\n commit('setFavourites', favourites);\n },\n\n addFavourite({ commit, getters, dispatch }, item) {\n const { getFavourites } = getters;\n const payload = {\n ...(item.parent_id && { parent_id: item.parent_id }),\n position: item.position,\n title: item.title,\n resource_type: item.resource_type,\n resource_id: item.resource_id,\n };\n const favourites = getFavourites;\n\n commit('addInFavourites', payload);\n\n if (item.resource_type === ResourceType.Sprint && item?.state === SprintState.Active) {\n payload.resource_id = `${item.project_id}s0`;\n }\n\n return api.favourites\n .addFavourite(getters.getTeamID, payload)\n .then(({ data }: any) => {\n if (data) {\n commit('setFavourites', data.favourites);\n dispatch('addUiNotification', {\n message: `${translate(payload.resource_type)} ${translate('addedSuccesfully')}`,\n icon: 'star',\n duration: 4000,\n });\n return data.favourites;\n }\n })\n .catch(() => {\n commit('setFavourites', favourites);\n });\n },\n\n localRemoveFromFavourites({ commit }, { resourceId, resourceType }) {\n commit('localRemoveFromFavourites', {\n resourceId,\n resourceType,\n });\n },\n\n addInRootFavourite({ commit }, resource) {\n commit('addInFavourites', resource);\n },\n\n addInParentFavourite({ commit }, { item, parentId, position = -1 }) {\n commit('addInParentFavourite', { item, parentId, position });\n },\n\n deleteUserFavourite({ commit, getters, dispatch }, resource) {\n const { getTeamID, getFavourites } = getters;\n const favourites = getFavourites;\n\n commit('localRemoveFromFavourites', {\n resourceId: resource.resource_id,\n resourceType: resource.resource_type,\n });\n\n let resourceIdForRequest = `${resource.resource_type}:${resource.resource_id}`;\n if (resource.resource_type === ResourceType.Sprint && resource?.state === SprintState.Active) {\n resourceIdForRequest = `${resource.resource_type}:${resource.project_id}s0`;\n }\n\n return api.favourites\n .deleteFavourite(getTeamID, resourceIdForRequest)\n .then(() => {\n dispatch('addUiNotification', {\n message: `${translate(resource.resource_type)} ${translate('deletedSuccesfully')}`,\n icon: 'unfavourite',\n duration: 4000,\n });\n })\n .catch(() => {\n commit('setFavourites', favourites);\n });\n },\n\n localUpdateResourceInFavourites({ commit }, resource) {\n commit('localUpdateResourceInFavourites', resource);\n },\n\n updateFavourite({ commit, getters }, { resource, payload }) {\n const { getTeamID, getFavourites } = getters;\n const favourites = getFavourites;\n let resourceForUpdateKey = `${resource.resource_type}:${resource.resource_id}`;\n\n if (resource.resource_type === ResourceType.Sprint) {\n const sprint = getters.getFlatBoards[resource.resource_id];\n if (sprint?.state === SprintState.Active) {\n resourceForUpdateKey = `${resource.resource_type}:${sprint.project_id}s0`;\n }\n }\n\n const resourceForUpdate = {\n ...resource,\n ...payload,\n };\n\n if (!payload.position) {\n commit('localUpdateResourceInFavourites', resourceForUpdate);\n }\n\n return api.favourites\n .updateFavourite(getTeamID, resourceForUpdateKey, payload)\n .then(({ data }: any) => {\n commit('setFavourites', data.favourites);\n })\n .catch(() => {\n commit('setFavourites', favourites);\n });\n },\n\n setFavouritesFolderExpand({ commit }, { id, value }) {\n commit('setFavouritesFolderExpand', { id, value });\n },\n\n toggleCommentReaction({ commit, getters }, payload) {\n commit('toggleCommentReaction', payload);\n const { getTeamID } = getters;\n const { commentId, reaction } = payload;\n let removeProgressTimeout: any = null;\n // set as in progress so activity pooling does not override the change\n commit('addCommentInProgressPatch', commentId);\n\n const body: CreateCommentReactionRequest = {\n unicode: reaction.native,\n variation: reaction.colons,\n };\n\n return api.comments\n .createCommentReaction(getTeamID, commentId, reaction.id, body)\n .catch(() => {\n commit('toggleCommentReaction', payload);\n })\n .finally(() => {\n // remove in progress so activity pooling can override the change\n removeProgressTimeout = setTimeout(() => {\n commit('removeCommentInProgressPatch', commentId);\n clearTimeout(removeProgressTimeout);\n }, 1000);\n });\n },\n\n removeCommentReaction({ commit, getters }, payload) {\n commit('toggleCommentReaction', payload);\n const { getTeamID } = getters;\n const { commentId, reaction } = payload;\n let removeProgressTimeout: any = null;\n\n // set as in progress so activity pooling does not override the change\n commit('addCommentInProgressPatch', commentId);\n\n return api.comments\n .deleteCommentReaction(getTeamID, commentId, reaction.id)\n .catch(() => {\n commit('toggleCommentReaction', payload);\n })\n .finally(() => {\n // remove in progress so activity pooling can override the change\n removeProgressTimeout = setTimeout(() => {\n commit('removeCommentInProgressPatch', commentId);\n clearTimeout(removeProgressTimeout);\n }, 1000);\n });\n },\n\n setEmojiPickerDisplayed({ commit }, payload) {\n commit('setEmojiPickerDisplayed', payload);\n },\n\n setNewFolderInput({ commit }, value) {\n commit('setNewFolderInput', value);\n },\n\n setFavouriteFolderForRename({ commit }, value) {\n commit('setFavouriteFolderForRename', value);\n },\n\n setFavouriteFolderTitle({ commit }, value) {\n commit('setFavouriteFolderTitle', value);\n },\n\n showPeekSidebar({ commit }, value) {\n commit('showPeekSidebar', value);\n },\n\n setTheme({ commit }, value) {\n commit('setTheme', value);\n },\n addToElectronBrowseHistory({ commit }, payload) {\n commit('addToElectronBrowseHistory', payload);\n },\n setElectronBrowseHistory({ commit }, value) {\n commit('setElectronBrowseHistory', value);\n },\n setElectronBrowseHistoryIndex({ commit }, value) {\n commit('setElectronBrowseHistoryIndex', value);\n },\n setElectronRecentlyViewed({ commit }, value) {\n commit('setElectronRecentlyViewed', value);\n },\n addToElectronRecentlyViewed({ commit }, payload) {\n commit('addToElectronRecentlyViewed', payload);\n },\n removeFromElectronRecentlyViewed({ commit }, payload) {\n commit('removeFromElectronRecentlyViewed', payload);\n },\n updateItemInElectronRecentlyViewed({ commit }, payload) {\n commit('updateItemInElectronRecentlyViewed', payload);\n },\n setThemePreference({ commit }, value) {\n commit('setThemePreference', value);\n },\n\n setCurrentInboxResource({ commit }, value) {\n commit('setCurrentInboxResource', value);\n },\n\n setInboxFilters({ commit }, value) {\n commit('setInboxFilters', value);\n },\n\n setInboxListWidth({ commit }, value) {\n commit('setInboxListWidth', value);\n },\n setInboxListExpanded({ commit }, value) {\n commit('setInboxListExpanded', value);\n },\n\n setShowOnboarding({ commit }, value) {\n commit('setShowOnboarding', value);\n },\n\n setOpenInDesktopApp({ commit }, value) {\n commit('setOpenInDesktopApp', value);\n },\n\n setShowRedirectedToAppOverlay({ commit }, value) {\n commit('setShowRedirectedToAppOverlay', value);\n },\n\n updateFile({ getters }, { fileId, payload }) {\n if (!fileId) return Promise.reject(new Error('invalid file id'));\n return api.files.updateFile(getters.getTeamID, fileId, payload);\n },\n\n setMembersDropdownInvitees({ commit }, value) {\n commit('setMembersDropdownInvitees', value);\n },\n\n addMembersDropdownInvitee({ commit }, value) {\n commit('addMembersDropdownInvitee', value);\n },\n\n removeMembersDropdownInvitee({ commit }, value) {\n commit('removeMembersDropdownInvitee', value);\n },\n\n setEditorForCardLink({ commit }, value) {\n commit('setEditorForCardLink', value);\n },\n\n /**\n * Sets a selected tab in for 'my work' page for each individual user\n * Default value is AssignedToMe\n * @param {string} tabId\n * @param {string} userId\n */\n setMyWorkSelectedTabId({ commit }, { userId, tabId }) {\n commit('setMyWorkSelectedTabId', { userId, tabId });\n },\n\n /**\n * Sets a selected userId for which 'my-work' page is displayed\n * @param {string} userId\n */\n setMyWorkUserId({ commit }, userId) {\n commit('setMyWorkUserId', userId);\n },\n\n fetchArchivedBoardsByWorkspace({ getters, commit }) {\n const { getRoutes, getTeamID } = getters;\n\n return authGet(`${getRoutes.search}/v1/${getTeamID}/search/boards?archived=true`).then(\n ({ data }) => {\n const { boards } = data;\n const archivedBoards = boards.filter((board: any) => board.archived);\n commit('setFlatBoards', archivedBoards);\n }\n );\n },\n\n /**\n * Adds a card to first place in array of current view results for views/my work/members page\n * @param {object} value { card }\n */\n addCardToCurrentViewResults({ commit }, value) {\n commit('addCardToCurrentViewResults', value);\n },\n\n setPressedEscCancelDrag({ commit }, value) {\n commit('setPressedEscCancelDrag', value);\n },\n\n setSidebarHover({ commit }, value) {\n commit('setSidebarHover', value);\n },\n\n setSidebarDragging({ commit }, value) {\n commit('setSidebarDragging', value);\n },\n\n /**\n * Sets flag for displaying the 'Update email' popup\n * @param {string} type - type of currently displayed popup ('reauthenticate', 'input' or 'verify')\n */\n setShowUpdateEmailPopup({ commit }, type: string) {\n commit('setShowUpdateEmailPopup', type);\n },\n\n async AiTask({ getters }, payload) {\n const response = await fetch(`${getters.getRoutes.projects}/v1/${getters.getTeamID}/ai/llm`, {\n method: 'POST',\n body: JSON.stringify(payload),\n credentials: 'include',\n headers: {\n Accept: 'text/event-stream',\n },\n });\n\n return response;\n },\n\n getAllTeamFeatures({ commit, getters }) {\n return api.auth.getTeamFeatures(getters.getTeamID).then(({ data }) => {\n if (data.token_outdated) {\n authRefresh();\n }\n commit('setTeamFeatures', data?.features);\n return data;\n });\n },\n\n setTeamFeatures({ commit }, features) {\n commit('setTeamFeatures', features);\n },\n\n toggleTeamFeature({ commit, getters }, { featureId, value }) {\n const oldValue = getters.getTeamFeature(featureId);\n commit('updateTeamFeature', { featureId, feature: { ...oldValue, enabled: true } });\n return authPut(\n `${getters.getRoutes.users}/v1/teams/${getters.getTeamID}/features/${featureId}`,\n {\n enabled: value,\n }\n )\n .then(({ data }) => {\n authRefresh().then(() => {\n api.auth.getUser('me').then(({ data }) => {\n commit('setUser', data.user);\n });\n });\n commit('updateTeamFeature', { featureId, feature: data?.feature });\n })\n .catch(() => {\n commit('updateTeamFeature', { featureId, feature: oldValue });\n });\n },\n\n updateTeamFeature({ commit }, { featureId, feature }) {\n commit('updateTeamFeature', { featureId, feature });\n },\n\n setPageIconPickerDisplayed({ commit }, value) {\n commit('setPageIconPickerDisplayed', value);\n },\n\n setHideEmptyGroups({ commit, getters }, { value, boardId = getters.currentBoardId }) {\n const teamId = getters.getTeamID;\n if (!teamId || !boardId) return;\n commit('setHideEmptyGroups', { value, boardId, teamId });\n },\n\n setShowWeekends({ commit, getters }, payload: boolean) {\n const teamId = getters.getTeamID;\n const currentBoardId = getters.currentBoardId;\n if (!teamId || !currentBoardId) return;\n commit('setShowWeekends', { value: payload, boardId: currentBoardId, teamId });\n },\n\n addReconnectionCallback({ commit }, { callbackId, callback }) {\n commit('addReconnectionCallback', { callbackId, callback });\n },\n\n removeReconnectionCallback({ commit }, callbackId) {\n commit('removeReconnectionCallback', callbackId);\n },\n\n callReconnectionCallbacks({ getters }) {\n const { getReconnectionCallbacks } = getters;\n Object.keys(getReconnectionCallbacks || []).forEach((key) => {\n const callback = getReconnectionCallbacks[key];\n if (typeof callback === 'function') {\n callback();\n }\n });\n },\n\n previousNextButtonClicked({ commit }, value) {\n commit('previousNextButtonClicked', value);\n },\n\n /**\n * Updates user timezone in store and in backend\n * @param timezone_id {string} - new timezone id\n */\n updateUserTimezoneId({ commit }, timezone_id) {\n return api.auth\n .updateUser('me', {\n timezone_id,\n })\n .then(() => commit('setUserTimezoneId', timezone_id))\n .catch((err: Error) => {\n throw err;\n });\n },\n\n /**\n * Fetches notification digest for current team\n */\n fetchNotificationDigest({ getters, commit }) {\n return api.activity\n .getNotificationDigest(getters.getTeamID)\n .then(({ data }) => {\n commit('updateNotificationDigest', data?.digest);\n })\n .catch((err: Error) => {\n throw err;\n });\n },\n\n /**\n * Sets notification digest for current team\n */\n updateNotificationDigest({ getters, commit }, payload: UpdateNotificationDigestRequest) {\n const oldNotifDigest = getters.getNotificationDigest;\n commit('updateNotificationDigest', payload);\n return api.activity.updateNotificationDigest(getters.getTeamID, payload).catch((err: Error) => {\n commit('updateNotificationDigest', oldNotifDigest);\n throw err;\n });\n },\n\n /**\n * Sets notification digest settings for current team\n */\n fetchNotificationDigestSettings({ getters, commit }) {\n return api.activity\n .getNotificationDigestSettings(getters.getTeamID)\n .then(({ data }) => {\n commit('updateNotificationDigestSettings', data);\n })\n .catch((err: Error) => {\n throw err;\n });\n },\n\n /**\n * Sets notification digest settings for current team\n */\n updateNotificationDigestSettings(\n { getters, commit },\n payload: UpdateNotificationDigestSettingsRequest\n ) {\n const oldNotifDigestSettings = getters.getNotificationDigestSettings;\n commit('updateNotificationDigestSettings', payload);\n return api.activity\n .updateNotificationDigestSettings(getters.getTeamID, payload)\n .catch((err: Error) => {\n commit('updateNotificationDigestSettings', oldNotifDigestSettings);\n throw err;\n });\n },\n\n setBoardEmbedPopup({ commit }, payload) {\n commit('setBoardEmbedPopup', payload);\n },\n\n async askQuestionAi({ getters }, payload) {\n const response = await fetch(`${getters.getRoutes.projects}/v1/${getters.getTeamID}/ai/ask`, {\n method: 'POST',\n body: JSON.stringify(payload),\n credentials: 'include',\n headers: {\n Accept: 'text/event-stream',\n },\n });\n\n return response;\n },\n\n localRemovePageFromPageOrder({ commit }, payload) {\n commit('localRemovePageFromPageOrder', payload);\n },\n\n removeProjectPage({ commit }, payload) {\n commit('removeProjectPage', payload);\n },\n\n updatePageInTeamProject({ commit }, { projectId, pageId, field, value }) {\n commit('updatePageInTeamProject', { projectId, pageId, field, value });\n },\n\n addPageToTeamProject({ commit }, { projectId, page }) {\n commit('addProjectPage', { page, projectId });\n },\n\n removePageFromTeamProject({ commit }, { pageId, projectId }) {\n commit('removeProjectPage', { pageId, projectId });\n },\n\n setIsSettingsOpen({ commit }, value) {\n commit('setIsSettingsOpen', value);\n },\n\n setShowUpgradePlanPopup({ commit }, value) {\n commit('setShowUpgradePlanPopup', value);\n },\n\n setMyWorkSortBy({ commit, getters }, payload) {\n commit('setMyWorkSortBy', { teamId: getters.getTeamID, ...payload });\n },\n\n setMyWorkSortByForAllUsers({ commit }, payload) {\n commit('setMyWorkSortByForAllUsers', payload);\n },\n\n localRemoveTeamMember({ commit }, userId) {\n commit('localRemoveTeamMember', userId);\n },\n\n setModal({ commit }, payload: Modal) {\n commit('setModal', payload);\n },\n\n setRecentWorkspaces({ commit }, workspace) {\n commit('setRecentWorkspaces', workspace);\n },\n\n updateRecentWorkspace({ commit }, { workspaceId, updatedFields }) {\n commit('updateRecentWorkspace', { workspaceId, updatedFields });\n },\n\n setOpenWorkspaceThroughQuickSwitcher({ commit }, value) {\n commit('setOpenWorkspaceThroughQuickSwitcher', value);\n },\n\n setSidebarSprintsExpanded({ commit, getters }, { projectId, value }) {\n const teamSlug = getters.getTeamSlug;\n commit('setSidebarSprintsExpanded', { teamSlug, projectId, value });\n },\n\n localAddSprintToProject({ commit }, { projectId, sprint }) {\n commit('localAddSprintToProject', { projectId, sprint });\n },\n\n setNote({ commit }, note) {\n commit('setNote', note);\n },\n\n fetchNotesForPoll({ getters }) {\n return api.pages.getNotes(getters.getTeamID).then(({ data }) => {\n const notes = (data?.notes || []).reduce((acc: any, note: any) => {\n acc[note.id] = { ...note };\n return acc;\n }, {});\n return notes;\n });\n },\n\n getNotes({ dispatch, getters }, { loadMore } = { loadMore: false }) {\n if (notesPaginationCursor === 'end' && loadMore === true) return [];\n\n return api.pages\n .getNotes(getters.getTeamID, {\n count: 50,\n ...(loadMore && { cursor: notesPaginationCursor }),\n })\n .then(({ data }) => {\n const notes = (data?.notes || []).reduce((acc: any, note: any) => {\n acc[note.id] = { ...note };\n return acc;\n }, {});\n dispatch('setNotes', { ...getters.getNotes, ...notes });\n notesPaginationCursor = data.cursor || 'end';\n return notes;\n });\n },\n\n setNotes({ commit }, notes) {\n commit('setNotes', notes);\n },\n\n updateNoteTitle({ commit, getters }, { noteId, title }) {\n // update the note in recently viewed if present\n const recentlyViewed = getters.getElectronRecentlyViewed || [];\n const noteIndex = recentlyViewed.findIndex(\n (item: any) => item.type === 'note' && item.id === noteId\n );\n\n if (noteIndex !== -1) {\n const updatedItem = {\n ...recentlyViewed[noteIndex],\n label: title || translate('untitledNote'),\n };\n\n commit('updateItemInElectronRecentlyViewed', {\n id: noteId,\n type: 'note',\n teamId: getters.getTeamID,\n toUpdate: updatedItem,\n });\n }\n\n return api.pages.updateNote(getters.getTeamID, noteId, { title });\n },\n\n updateNoteContent({ getters }, { noteId, content }) {\n return api.pages.updateNote(getters.getTeamID, noteId, {\n [NoteContentType.UserNotes]: content,\n });\n },\n\n updateAiNoteContent({ getters }, { noteId, aiNoteId, content }) {\n return api.pages.updateEnhancedNote(getters.getTeamID, noteId, aiNoteId, { content });\n },\n\n createNewNote(\n { getters, dispatch },\n {\n title = '',\n calendarEvent = null,\n noteIdToUpdate = constants.newNote,\n isOnboardingNote = false,\n }\n ) {\n const key = 'createNewNote';\n const existingPromise = activePromises[key];\n if (existingPromise !== undefined) return existingPromise;\n\n const noteFromCalendarEvent = Object.keys(calendarEvent || {}).length > 0;\n\n const promise = api.pages\n .createNote(getters.getTeamID, {\n title,\n ...(noteFromCalendarEvent && { google_calendar_event: calendarEvent }),\n })\n .then(({ data }) => {\n dispatch('setNote', {\n noteIdToUpdate,\n note: {\n ...data.note,\n ...(noteFromCalendarEvent && { fromCalendarEvent: true }),\n ...(isOnboardingNote && { isOnboardingNote: true }),\n },\n });\n return data.note?.id;\n })\n .finally(() => {\n delete activePromises[key];\n });\n\n activePromises[key] = promise;\n return promise;\n },\n\n deleteNote({ commit, getters, dispatch }, noteId) {\n commit('deleteNote', noteId);\n return api.pages.deleteNote(getters.getTeamID, noteId).then(() => {\n dispatch('removeFromElectronRecentlyViewed', {\n currentlyViewed: {\n id: noteId,\n type: constants.routeNames.note,\n },\n teamId: getters.getTeamID,\n });\n });\n },\n\n getNote({ commit, getters }, noteId) {\n return api.pages.getNote(getters.getTeamID, noteId).then(({ data }) => {\n commit('setNote', { noteIdToUpdate: noteId, note: data.note });\n });\n },\n\n updateNote({ getters }, { noteId, payload }) {\n return api.pages.updateNote(getters.getTeamID, noteId, payload).then(({ data }) => data.note);\n },\n\n localUpdateNoteProp({ commit }, { noteId, aiNoteId, propertyName, value }) {\n commit('localUpdateNoteProp', { noteId, aiNoteId, propertyName, value });\n },\n\n setAiNoteGenerating({ commit }, noteId) {\n commit('setAiNoteGenerating', noteId);\n },\n\n setAiNoteGeneratingTitle({ commit }, noteId) {\n commit('setAiNoteGeneratingTitle', noteId);\n },\n\n fetchNoteTemplates({ dispatch, getters }) {\n return api.pages\n .getNoteTemplates(getters.getTeamID)\n .then(({ data }) => {\n //@ts-ignore\n dispatch('setNoteTemplates', data.templates);\n return data;\n })\n .catch((error) => error);\n },\n\n setNoteTemplates({ commit }, templates) {\n commit('setNoteTemplates', templates);\n },\n\n async applyNoteTemplate({ getters }, { noteId, templateId }) {\n const response = await fetch(\n `${getters.getRoutes.pages}/v1/${getters.getTeamID}/notes/${noteId}/apply_template`,\n {\n method: 'POST',\n body: JSON.stringify({ note_template_id: templateId }),\n credentials: 'include',\n headers: {\n Accept: 'text/event-stream',\n },\n }\n );\n\n return response;\n },\n\n setAiNote({ commit }, { noteId, templateId, aiNote }) {\n commit('setAiNote', { noteId, templateId, aiNote });\n },\n\n generateAiActions({ commit, getters }, { noteId, aiNoteId }) {\n // Set isGeneratingActions to true to show loading spinner\n commit('localUpdateNoteProp', {\n noteId,\n aiNoteId,\n propertyName: 'isGeneratingActions',\n value: true,\n });\n\n return api.ai\n .createAiActions(getters.getTeamID, { note_id: noteId }, { timeout: 60000 })\n .then(({ data }) => {\n commit('setAiActions', { noteId, aiNoteId, actions: data.actions });\n return data.actions;\n })\n .catch((error) => error)\n .finally(() => {\n commit('localUpdateNoteProp', {\n noteId,\n aiNoteId,\n propertyName: 'isGeneratingActions',\n value: false,\n });\n });\n },\n\n updateAiAction({ commit, getters }, { noteId, aiNoteId, actionId, payload }) {\n return api.ai\n .updateAiAction(getters.getTeamID, actionId, payload)\n .then(({ data }) => {\n commit('updateAiAction', { noteId, aiNoteId, actionId, action: data.action });\n return data;\n })\n .catch((error) => error);\n },\n\n setAiActions({ commit }, { noteId, aiNoteId, actions }) {\n commit('setAiActions', { noteId, aiNoteId, actions });\n },\n\n updateLastNoteTemplateId({ getters }, { noteId, templateId }) {\n return api.pages.updateNote(getters.getTeamID, noteId, { last_note_template_id: templateId });\n },\n\n setSelectedNoteTabId({ commit }, { noteId, tabId }) {\n commit('setSelectedNoteTabId', { noteId, tabId });\n },\n\n localCreateTranscript({ commit }, { noteId, transcript }) {\n commit('localCreateTranscript', { noteId, transcript });\n },\n\n localUpdateTranscript({ commit }, { noteId, transcript }) {\n commit('localUpdateTranscript', { noteId, transcript });\n },\n\n localSetNoteTranscripts({ commit }, { noteId, transcripts }) {\n commit('localSetNoteTranscripts', { noteId, transcripts });\n },\n\n createTranscript({ getters }, { noteId, transcripts }) {\n return api.pages.updateNote(getters.getTeamID, noteId, { transcripts });\n },\n\n setTranscriptionState({ commit }, value) {\n commit('setTranscriptionState', value);\n },\n\n setResourceLoaded({ commit }, { resource, value }) {\n commit('setResourceLoaded', { resource, value });\n },\n\n fetchNoteTemplate({ commit, getters }, templateId) {\n if (!templateId) return Promise.resolve({});\n\n return authGet(\n `${getters.getRoutes.pages}/v1/${getters.getTeamID}/notes/templates/${templateId}`\n )\n .then(({ data }) => {\n commit('setNoteTemplate', data.note_template || {});\n return data.note_template;\n })\n .catch((error) => {\n throw error;\n });\n },\n\n createNoteTemplate({ commit, getters }, noteTemplate = getters.getNoteTemplateDraft) {\n // remove all fields from noteTemplate.sections except title and description\n noteTemplate.sections = noteTemplate.sections.map((section: any) => ({\n title: section.title,\n description: section.description,\n }));\n // remove sections from noteTemplate.sections that are empty\n noteTemplate.sections = noteTemplate.sections.filter((section: any) => section.title);\n const tempId = nanoid(4);\n\n return authPost(`${getters.getRoutes.pages}/v1/${getters.getTeamID}/notes/templates`, {\n ...noteTemplate,\n }).then(({ data }) => {\n commit('replaceNoteTemplateId', { localId: tempId, template: data.note_template ?? {} });\n commit('setNoteTemplate', {\n ...data.note_template,\n });\n return data;\n });\n },\n\n updateNoteTemplate(\n { commit, getters },\n { templateId, noteTemplate = getters.getNoteTemplateDraft }\n ) {\n if (!templateId) return Promise.resolve({});\n\n const oldTemplate = getters.getNoteTemplates[templateId];\n return authPatch(\n `${getters.getRoutes.pages}/v1/${getters.getTeamID}/notes/templates/${templateId}`,\n {\n ...noteTemplate,\n }\n )\n .then(({ data }) => {\n commit('setNoteTemplate', {\n id: templateId,\n ...data.note_template,\n });\n return data;\n })\n .catch((error) => {\n commit('setNoteTemplate', { id: templateId, ...oldTemplate });\n throw error;\n });\n },\n\n deleteNoteTemplate({ commit, getters }, templateId) {\n if (!templateId) return Promise.resolve({});\n\n commit('deleteNoteTemplate', templateId);\n return authDelete(\n `${getters.getRoutes.pages}/v1/${getters.getTeamID}/notes/templates/${templateId}`\n );\n },\n\n setNoteTemplateDraft({ commit }, template) {\n commit('setNoteTemplateDraft', template);\n },\n\n updateNoteTemplateDraftField({ commit }, { fieldName, value }) {\n commit('updateNoteTemplateDraftField', { fieldName, value });\n },\n\n clearNoteTemplateDraft({ commit }) {\n commit('clearNoteTemplateDraft');\n },\n\n setNoteTemplateSections({ commit }, sections) {\n commit('setNoteTemplateSections', sections);\n },\n\n favouriteNoteTemplate({ commit, getters }, resource) {\n commit('setNoteTemplate', {\n id: resource.id,\n ...resource,\n is_favourited: true,\n });\n return authPut(\n `${getters.getRoutes.pages}/v1/${getters.getTeamID}/notes/templates/${resource.id}/favourite`\n ).catch(() => {\n commit('setNoteTemplate', {\n id: resource.id,\n ...resource,\n is_favourited: false,\n });\n });\n },\n\n unfavouriteNoteTemplate({ commit, getters }, resource) {\n commit('setNoteTemplate', {\n id: resource.id,\n ...resource,\n is_favourited: false,\n });\n return authDelete(\n `${getters.getRoutes.pages}/v1/${getters.getTeamID}/notes/templates/${resource.id}/favourite`\n ).catch(() => {\n commit('setNoteTemplate', {\n id: resource.id,\n ...resource,\n is_favourited: true,\n });\n });\n },\n\n async fetchTeamSubscription({ commit, getters }) {\n const resp = await api.auth.getSubscription(getters.getTeamID);\n if (resp) {\n commit('setTeamSubscription', resp.data.subscription);\n }\n },\n\n async fetchAvailablePlans({ commit, getters }) {\n const resp = await api.auth.getAvailablePlans(getters.getTeamID);\n if (resp) {\n commit('setAvailablePlans', resp.data);\n }\n },\n\n setSubGroupByEnabled({ commit, getters }, { value, boardId = getters.currentBoardId }) {\n const teamId = getters.getTeamID;\n if (!teamId || !boardId) return;\n const v: boolean =\n value ?? !!browserStorageGetItem(subGroupByBoardKey(teamId, boardId));\n\n browserStorageSetItem(subGroupByBoardKey(teamId, boardId), `${v}`);\n commit('setSubGroupByEnabled', { value: v, boardId });\n },\n\n setListsExpanded({ commit, getters }, { boardId, listId, value }) {\n const teamSlug = getters.getTeamSlug;\n commit('setListsExpanded', { teamSlug, boardId, listId, value });\n },\n\n setWorkspaceSectionExpanded({ commit }, value) {\n commit('setWorkspaceSectionExpanded', value);\n },\n};\n\nexport default actions;\n","/**\n * Main vuex mutations\n * @packageDocumentation\n * @category Store\n */\nimport { MutationTree } from 'vuex';\nimport { RootState as State } from '@/types';\nimport getDefaultState from './state';\nimport {\n browserStorageGetAndSetItem,\n browserStorageSetItem,\n} from '@/utilities/browser-storage.util';\nimport {\n myWorkSortByKey,\n hideEmptyGroupByBoardKey,\n showWeekendsByBoardKey,\n} from '@/utilities/localDrafts';\nimport { MyWorkTabId } from '@/types/tabs';\nimport { getSprintKey } from '@/utilities/sprintKeys';\nimport { ResourceType, ResourceLoadedKey } from '@/types/resources';\nimport { NoteContentType } from '@/types/notes';\nimport { GetAvailablePlansResponse, Subscription } from '@superthread-com/api';\n\nconst mutations: MutationTree = {\n setTeamProjects(state, { projects, projectOrder }) {\n state.teamProjects = projects;\n if (projectOrder) {\n state.projectOrder = projectOrder;\n }\n },\n\n setProjectOrder(state, projectOrder) {\n // temp workaround filter out trashed projects\n const newProjectOrder = projectOrder.filter((id: string) => {\n return !state.trashProjects.some((project: any) => project.id === id);\n });\n state.projectOrder = newProjectOrder;\n },\n\n addToSocketDeletedProjects(state, projectId) {\n state.socketDeletedProjects.push(projectId);\n },\n\n clearSocketDeletedProjects(state) {\n state.socketDeletedProjects.splice(0, state.socketDeletedProjects.length);\n },\n\n setUserSettings(state, settings) {\n state.userSettings = { ...state.userSettings, ...settings };\n },\n\n setUser(state, user: any) {\n state.user = user;\n user.teams.forEach((team: any) => {\n state.teams[team.id] = team;\n });\n },\n\n setTeam(state, team) {\n const existingTeam = state.teams[team.id];\n state.teams[team.id] = { ...(existingTeam ?? {}), ...team };\n },\n\n setCommentsSection(state, section) {\n state.commentsSection = section;\n },\n\n setComments(state, comments) {\n state.comments = comments;\n },\n\n setCardCommentsAndActivities(state, { cardId, payload }) {\n state.cardsCommentsAndActivities[cardId] = payload;\n },\n\n addComment(state, comment) {\n const index = state.comments.findIndex((c) => c.id === comment.id);\n if (index > -1) {\n state.comments.splice(index, 1, comment);\n } else {\n state.comments.push(comment);\n }\n },\n\n setUserName(state, userName: string) {\n state.loginDetails.userName = userName;\n },\n\n setEmail(state, email: string) {\n state.loginDetails.email = email;\n },\n\n setPassword(state, password: string) {\n state.loginDetails.password = password;\n },\n\n setTeamSubDomain(state, teamSubDomain: string) {\n state.loginDetails.teamSubDomain = teamSubDomain;\n localStorage.setItem('teamSubDomain', teamSubDomain);\n if (!teamSubDomain) return;\n if (state.loginDetails.teamSubDomains.includes(teamSubDomain)) return;\n\n state.loginDetails.teamSubDomains.push(teamSubDomain);\n localStorage.setItem('teamSubDomains', JSON.stringify(state.loginDetails.teamSubDomains));\n },\n\n removeTeamSubDomain(state, index: number) {\n state.loginDetails.teamSubDomains.splice(index, 1);\n localStorage.setItem('teamSubDomains', JSON.stringify(state.loginDetails.teamSubDomains));\n },\n\n setLoggedIn(state) {\n state.loggedIn = true;\n },\n\n setNotLoggedIn(state) {\n state.loggedIn = false;\n },\n\n setCurrentProjectId(state, { teamId, projectId = '' }) {\n state.currentProjectId = projectId;\n const key = `${teamId}-currentProjectId`;\n localStorage.setItem(key, projectId);\n },\n\n setCurrentEditCommentID(state, id: string) {\n state.currentEditCommentID = id;\n },\n\n setPreviousRoute(state, route: object) {\n state.previousRoute = route;\n },\n\n setPopUpMessage(state, message: string) {\n state.popUpMessage = message;\n },\n\n setHelpPopupIsOn(state, isOn) {\n state.helpPopupIsOn = isOn;\n },\n\n setCommentListOrderBy(state, orderBy) {\n state.commentListOrderBy = orderBy;\n },\n\n setProjectFormName(state, projectFormName) {\n state.projectFormName = projectFormName;\n },\n\n setProjectFormDescription(state, projectFormDescription) {\n state.projectFormDescription = projectFormDescription;\n },\n\n setCommentsAreActive(state, active) {\n state.commentsAreActive = active;\n },\n\n setCurrentTabName(state, tabName) {\n state.currentTabName = tabName;\n },\n\n itemNotFound(state, value) {\n state.itemNotFound = value;\n },\n\n setTrashProjects(state, projects) {\n state.trashProjects = projects;\n },\n\n addLocalComment(state, { comment, index = null, parentCommentId, cardId = null }) {\n let comments = [];\n if (cardId) {\n comments = state.cardsCommentsAndActivities[cardId] ?? [];\n } else {\n comments = state.comments;\n }\n if (parentCommentId) {\n let parentCommentIndex = -1;\n const parentComment = comments.find((c: any, cIndex: number) => {\n if (c.id === parentCommentId) {\n parentCommentIndex = cIndex;\n return c;\n }\n return false;\n });\n if (parentCommentIndex > -1) {\n if (!parentComment.children) {\n parentComment.children = { child_comments: [], count: 0 };\n }\n parentComment.children.child_comments.push(comment);\n parentComment.children.count += 1;\n comments.splice(parentCommentIndex, 1, parentComment);\n return;\n }\n }\n if (index) {\n comments.splice(index, 0, comment);\n return;\n }\n comments.push(comment);\n },\n\n updateLocalCommentId(\n state,\n { commentId, localId, childCommentId, commentPayload = {}, cardId = null }\n ) {\n const parentCommentId = childCommentId ? commentId : localId;\n const comments = cardId ? state.cardsCommentsAndActivities[cardId] : state.comments;\n let commentIndex: number = -1;\n const comment = comments.find((c: any, cIndex: number) => {\n if (c.id === parentCommentId) {\n commentIndex = cIndex;\n return c;\n }\n return false;\n });\n if (!comment) return;\n if (childCommentId) {\n let childCommentIndex = -1;\n const childComment = comment.children.child_comments.find((childC: any, cIndex: number) => {\n if (childC.id === localId) {\n childCommentIndex = cIndex;\n return childC;\n }\n return false;\n });\n if (childCommentIndex > -1) {\n delete childComment.localCommentId;\n comment.children.child_comments.splice(childCommentIndex, 1, {\n ...childComment,\n ...commentPayload,\n });\n }\n comments.splice(commentIndex, 1, { ...comment });\n if (cardId) {\n state.cardsCommentsAndActivities[cardId] = comments;\n } else {\n state.comments = comments;\n }\n return;\n }\n comments.splice(commentIndex, 1, {\n ...comment,\n ...commentPayload,\n ...{ id: commentId, localCommentId: false },\n });\n if (cardId) {\n state.cardsCommentsAndActivities[cardId] = comments;\n } else {\n state.comments = comments;\n }\n },\n\n removeLocalComment(state, { localCommentId, parentCommentId, cardId = null }) {\n if (cardId) {\n if (parentCommentId) {\n const parentComment = state.cardsCommentsAndActivities[cardId].find(\n (c: any) => c.id === parentCommentId\n );\n const childCommentIndex = parentComment.children.child_comments.findIndex(\n (c: any) => c.id === localCommentId\n );\n if (childCommentIndex !== -1) {\n parentComment.children.child_comments.splice(childCommentIndex, 1);\n parentComment.children.count -= 1;\n return;\n }\n }\n const comments = state.cardsCommentsAndActivities[cardId];\n const index = comments.findIndex((c: any) => c.id === localCommentId);\n if (index !== -1) {\n comments.splice(index, 1);\n }\n return;\n }\n let { comments: commentsArray } = state;\n if (parentCommentId) {\n const parentComment = state.comments.find((c: any) => c.id === parentCommentId);\n commentsArray = parentComment.children.child_comments;\n parentComment.children.count -= 1;\n }\n\n const index = commentsArray.findIndex((c: any) => c.id === localCommentId);\n if (index !== -1) {\n commentsArray.splice(index, 1);\n }\n },\n\n localUpdateComment(state, { fieldName, fieldValue, commentId, childCommentId, cardId = null }) {\n const comments = cardId ? state.cardsCommentsAndActivities[cardId] : state.comments;\n let commentIndex: number = -1;\n const comment = comments.find((c: any, cIndex: number) => {\n if (c.id === commentId) {\n commentIndex = cIndex;\n return c;\n }\n return false;\n });\n if (!comment) return;\n if (!childCommentId) {\n comments.splice(commentIndex, 1, { ...comment, [fieldName]: fieldValue });\n } else {\n let childIndex = -1;\n const childComment = comment.children?.child_comments.find((c: any, cIndex: number) => {\n if (c.id === childCommentId) {\n childIndex = cIndex;\n return c;\n }\n return false;\n });\n comment.children.child_comments.splice(childIndex, 1, {\n ...childComment,\n [fieldName]: fieldValue,\n });\n comments.splice(commentIndex, 1, { ...comment });\n }\n if (cardId) {\n state.cardsCommentsAndActivities[cardId] = comments;\n } else {\n state.comments = comments;\n }\n },\n\n toggleCommentReaction(state, { commentId, parentResourceId, userId, reaction, cardId = null }) {\n const comments = cardId ? state.cardsCommentsAndActivities[cardId] : state.comments;\n let commentIndex: number = -1;\n const primaryCommentId = parentResourceId || commentId;\n const parentComment = comments.find((c: any, cIndex: number) => {\n if (c.id === primaryCommentId) {\n commentIndex = cIndex;\n return c;\n }\n return false;\n });\n\n let comment = parentComment;\n let childCommentIndex: number = -1;\n\n if (parentResourceId) {\n comment = parentComment.children.child_comments.find((c: any, index: number) => {\n if (c.id === commentId) {\n childCommentIndex = index;\n return c;\n }\n return false;\n });\n }\n\n const storeComment = (comment: any) => {\n if (childCommentIndex > -1) {\n parentComment.children.child_comments.splice(childCommentIndex, 1, { ...comment });\n comments.splice(commentIndex, 1, { ...parentComment });\n } else {\n comments.splice(commentIndex, 1, { ...comment });\n }\n if (cardId) {\n state.cardsCommentsAndActivities[cardId] = comments;\n } else {\n state.comments = comments;\n }\n };\n\n if (!comment) return;\n const newReaction = {\n id: reaction.id,\n members: [\n {\n user_id: userId,\n variation: reaction.colons,\n },\n ],\n unicode: reaction.native,\n };\n if (!comment.reactions) comment.reactions = [];\n const existingReaction = comment.reactions.find((r: any) => r.id === reaction.id);\n if (existingReaction) {\n // find if user already reacted\n const userAlreadyReacted = existingReaction.members.find((u: any) => u.user_id === userId);\n if (userAlreadyReacted) {\n // remove user from members\n existingReaction.members = existingReaction.members.filter(\n (u: any) => u.user_id !== userId\n );\n if (existingReaction.members.length === 0) {\n // remove reaction when left empty\n comment.reactions = comment.reactions.filter((r: any) => r.id !== reaction.id);\n }\n storeComment(comment);\n return;\n }\n // add user to members\n existingReaction.members.push({\n user_id: userId,\n variation: reaction.colons,\n });\n storeComment(comment);\n return;\n }\n comment.reactions.push(newReaction);\n storeComment(comment);\n },\n\n setEmojiPickerDisplayed(state, payload) {\n state.emojiPickerDisplayed = payload;\n },\n\n setCurrentMembers(state, members) {\n state.members = members;\n },\n\n toggleSearchModal(state, payload) {\n state.showSearchModal = payload;\n },\n\n toggleAskAiNotes(state, payload) {\n state.showAskAiNotesModal = payload;\n },\n\n setSearchResults(state, results = []) {\n state.searchResults = results;\n },\n\n setChildSearchResults(state, results = []) {\n state.childSearchResults = results;\n },\n\n setLastSearchQuery(state, lastSearchQuery) {\n state.lastSearchQuery = lastSearchQuery;\n },\n\n setLastAskAiNotesSearchQuery(state, lastSearchQuery) {\n state.lastAskAiNotesSearchQuery = lastSearchQuery;\n },\n\n setNotificationMessage(state, message: string) {\n state.notificationMessage = message;\n },\n\n setNotificationType(state, type: string) {\n state.notificationType = type;\n },\n\n toggleDarkMode(state) {\n state.darkMode = !state.darkMode;\n },\n\n setBoardsBackground(state, value: string) {\n state.boardsBackground = value;\n },\n\n setTeamProjectField(state, { projectId, fieldName, fieldValue }) {\n const projectIndex = state.teamProjects.findIndex((project: any) => project.id === projectId);\n if (projectIndex > -1) {\n state.teamProjects[projectIndex][fieldName] = fieldValue;\n }\n },\n\n setImportHistory(state, payload) {\n state.importHistory = payload;\n },\n setRedirectProjectId(state, payload) {\n state.redirectProjectId = payload;\n },\n setInviteeRole(state, payload) {\n state.inviteeRole = payload;\n },\n setInviteesProjectIds(state, payload) {\n state.inviteesProjectIds = payload;\n },\n\n setSidebarExpanded(state, payload) {\n state.sidebarExpanded = payload;\n },\n\n setAddMemberPopup(state, payload) {\n state.addMemberPopupIsOn = payload;\n },\n\n setAddMembersTarget(state, target) {\n state.addMembersTarget = target;\n },\n\n deletePopupId(state, payload) {\n state.deletePopupId = payload;\n },\n\n setDisplayMembersDropdownId(state, payload) {\n state.displayMembersDropdownId = payload;\n },\n\n setMembersSearchInput(state, payload) {\n state.membersSearchInput = payload;\n },\n\n setDisplayEditLinkPopup(state, payload) {\n state.displayEditLinkPopup = payload;\n },\n\n setDisplayEditorTooltip(state, payload) {\n state.displayEditorTooltip = payload;\n },\n\n setCommentLinkUrl(state, value) {\n state.commentLinkUrl = value;\n },\n\n displayInfoSidebar(state, payload) {\n state.displayInfoSidebar = payload;\n },\n\n resolveInlineComment(state, payload) {\n state.resolveInlineComment = payload;\n },\n\n setTeamMembers(state, { members, inactive = false }) {\n const membersObj: { [key: string]: any } = {};\n members.forEach((m: any) => {\n membersObj[m.id] = m;\n });\n if (inactive) {\n state.inactiveMembers = membersObj;\n return;\n }\n state.teamMembers = membersObj;\n },\n\n localAddUserInWorkspace(state, workspace) {\n const i = state.user.teams.findIndex((team: any) => team.id === workspace.id);\n if (i > -1) state.user.teams.splice(i, 1, workspace);\n else state.user.teams.push(workspace);\n },\n\n locaRemoveUserFromWorkspace(state, teamID) {\n const teamIndex = state?.user?.teams.findIndex((team: { id: any }) => team.id === teamID);\n state?.user?.teams.splice(teamIndex, 1);\n },\n\n resetState(state) {\n const newState = {\n ...getDefaultState(),\n user: state.user,\n theme: state.theme,\n themePreference: state.themePreference,\n recentWorkspaces: state.recentWorkspaces,\n transcriptionState: {\n noteId: '',\n alreadyRecorded: new Set(),\n recording: 'stopped',\n permissions: state.transcriptionState.permissions,\n },\n hideEmptyGroups: state.hideEmptyGroups,\n showWeekends: state.showWeekends,\n };\n Object.assign(state, newState);\n },\n\n addMemberToProject(state, { memberToAdd }) {\n const newMembers = [...state.members, memberToAdd];\n state.members = newMembers;\n },\n\n removeMemberFromProject(state, { memberToRemove }) {\n const mIndex = state.members.findIndex((i) => i.user_id === memberToRemove.user_id);\n state.members.splice(mIndex, 1);\n },\n\n setRedirectRouteAfterLogin(state, route: object) {\n state.redirectRouteAfterLogin = route;\n },\n\n setNotificationCount(state, count) {\n state.notificationCount = count;\n },\n\n setNotificationAlerts(state, currentNotifications) {\n state.notificationAlerts = currentNotifications;\n },\n\n setTeamMemberNotifications(state, notifications) {\n state.teamMemberNotifications = notifications;\n },\n\n localUpdateNotifMarkAllAsRead(state, notifications) {\n const newNotificationList = notifications.map((n: any) => ({ ...n, read: true }));\n state.teamMemberNotifications = newNotificationList;\n },\n\n localRemoveNotification(state, notificationId) {\n const index = state.teamMemberNotifications.findIndex((n: any) => n.id === notificationId);\n if (index > -1) {\n state.teamMemberNotifications.splice(index, 1);\n }\n },\n\n setPublicViews(state, views) {\n state.publicViews = views;\n },\n\n setPrivateViews(state, views) {\n state.privateViews = views;\n },\n\n setSelectedViewType(state, viewType) {\n state.selectedViewType = viewType;\n },\n\n setViewResults(state, viewResults) {\n state.viewPreview = viewResults;\n },\n\n localAddViewResultsToList(state, { cards, count, id }) {\n state.viewResultsList[id] = { cards, count };\n },\n\n updateCountInViewResultsList(state, { newCount, id }) {\n state.viewResultsList[id].count = newCount;\n },\n\n currentViewTotalCount(state, count) {\n state.currentViewTotalCount = count;\n },\n\n setSelectedView(state, view) {\n state.selectedView = view;\n },\n\n updateSelectedViewName(state, name) {\n state.selectedView.name = name;\n },\n\n setViewFilters(state, payload) {\n state.viewFilters = payload;\n },\n\n setViewPills(state, pills) {\n state.viewPills = pills;\n },\n\n setViewEditMode(state, changed) {\n state.viewEditMode = changed;\n },\n\n localAddViewToViewList(state, view) {\n if (view.shared) {\n state.publicViews.unshift(view);\n } else {\n state.privateViews.unshift(view);\n }\n },\n\n updateLocalViewId(state, { key, viewId }) {\n if (key === 'publicViews') {\n state.publicViews[0].id = viewId;\n } else {\n state.privateViews[0].id = viewId;\n }\n },\n\n localDeleteView(state, { key, index }) {\n state[key].splice(index, 1);\n },\n\n localAddView(state, { view, key, index }) {\n state[key].splice(index, 0, view);\n },\n\n setBoardsFilters(state, boards) {\n state.boardsFilters = boards;\n },\n addUiNotification(state, notification) {\n if (notification.onlineStatus) {\n const index = state.uiNotifications.findIndex((n: any) => n.onlineStatus === false);\n\n if (index !== -1) {\n state.uiNotifications.splice(index, 1);\n }\n }\n /* Do not push a notification if its `id` is already displayed */\n if (!state.uiNotifications.find((n) => n.id === notification.id)) {\n state.uiNotifications.push(notification);\n }\n },\n\n removeUiNotificationById(state, notificationId) {\n const index = state.uiNotifications.findIndex((n) => n.id === notificationId);\n\n if (index > -1) {\n state.uiNotifications.splice(index, 1);\n }\n },\n\n setFavouritesOpened(state, value) {\n state.favouritesOpened = value;\n },\n\n setOpenedFavouriteItem(state, favouriteItem) {\n state.openedFavouriteItem = favouriteItem;\n },\n setHeaderMemberDropdownPosition(state, payload) {\n state.headerMemberDropdownPosition = payload;\n },\n\n setActiveComment(state, payload) {\n state.activeComment = payload;\n },\n\n updateProjectById(state, project) {\n const index = state.teamProjects.findIndex((p) => p.id === project.id);\n\n if (index > -1) {\n state.teamProjects.splice(index, 1, project);\n }\n },\n\n setCurrentRoute(state, route) {\n state.currentRoute = route;\n },\n\n setSocketConnected(state, value) {\n state.socketConnected = value;\n },\n localUpdateProject(state, { localId, newId }) {\n const projectIndex = state.teamProjects.findIndex((i: any) => i.id === localId);\n if (projectIndex > -1) {\n state.teamProjects[projectIndex].id = newId;\n }\n },\n localUpdateFailRequest(state, localId) {\n const projectIndex = state.teamProjects.findIndex((i: any) => i.id === localId);\n if (projectIndex > -1) {\n state.teamProjects.splice(projectIndex, 1);\n }\n },\n\n joinProject(state, { memberId, projectId = state.currentProjectId }) {\n const { user } = state;\n if (memberId === user.id) {\n const projectIndex = state.teamProjects.findIndex((i: any) => i.id === projectId);\n if (projectIndex !== -1) {\n state.teamProjects[projectIndex] = {\n ...state.teamProjects[projectIndex],\n is_member: true,\n };\n }\n }\n },\n\n leaveProject(state, { memberId, projectId = state.currentProjectId }) {\n const { user, selectedProjectId } = state;\n const currentProjectId = selectedProjectId !== '' ? selectedProjectId : projectId;\n if (memberId === user.id) {\n const projectIndex = state.teamProjects.findIndex((i: any) => i.id === currentProjectId);\n if (projectIndex !== -1) {\n delete state.teamProjects[projectIndex].is_member;\n }\n }\n },\n\n setDisplayVideoLinkPopup(state, value) {\n state.displayVideoLinkPopup = value;\n },\n\n setInstallations(state, { integration, installations }) {\n state.installations[integration] = installations;\n },\n\n addInstallation(state, { integration, installation }) {\n state.installations[integration] = installation;\n },\n\n setImportProgressSteps(state, payload) {\n state.importProgressSteps = payload;\n },\n\n updateImportProgressSteps(state, { step, propertyName, value }) {\n state.importProgressSteps[step][propertyName] = value;\n },\n\n setRouteBeforeSettings(state, value) {\n state.routeBeforeSettings = value;\n },\n\n setImportProgressCurrentStep(state, value) {\n state.importProgressCurrentStep = value;\n },\n\n setSettingsCurrentProjectId(state, projectId) {\n state.settingsCurrentProjectId = projectId;\n },\n\n setCachedComponents(state, components) {\n state.cachedComponents = components;\n },\n\n setSettingsCurrentBoardId(state, boardId) {\n state.settingsCurrentBoardId = boardId;\n },\n\n setIntegrationSettings(state, { integration, settings }) {\n state.integrationSettings[integration] = settings;\n },\n\n updateLocalIntegrationSettings(state, { integration, payload }) {\n state.integrationSettings[integration] = {\n ...state.integrationSettings[integration],\n ...payload,\n };\n },\n\n setUpcomingGoogleCalendarEvents(state, events) {\n state.upcomingGoogleCalendarEvents = events;\n },\n\n setExpandedProject(state, { id, value }) {\n state.projectSidebarExpanded[id] = value;\n browserStorageGetAndSetItem('projectsExpanded', id, value);\n },\n\n setBoardsColumnLayout(state, { layout, projectId, teamSlug }) {\n const key = `${teamSlug}-${projectId}`;\n state.boardsColumnLayout[key] = layout;\n browserStorageGetAndSetItem('boardsColumnLayout', key, layout);\n },\n\n setPagesColumnLayout(state, { layout, projectId, teamSlug }) {\n const key = `${teamSlug}-${projectId}`;\n state.pagesColumnLayout[key] = layout;\n browserStorageGetAndSetItem('pagesColumnLayout', key, layout);\n },\n\n setProjectsExpanded(state, value) {\n state.projectsExpanded = value;\n localStorage.setItem('projSectionExpanded', value);\n },\n\n setFavouritesExpanded(state, value) {\n state.favouritesExpanded = value;\n localStorage.setItem('favSectionExpanded', value);\n },\n\n localRemoveBoardOrPageInProject(state, { projectId, itemId, section }) {\n const projectIndex = state.teamProjects.findIndex((i: any) => i.id === projectId);\n if (projectIndex > -1) {\n const itemIndex = state.teamProjects[projectIndex][section].findIndex(\n (i: any) => i.id === itemId\n );\n if (itemIndex > -1) {\n state.teamProjects[projectIndex][section].splice(itemIndex, 1);\n }\n }\n },\n\n localUpdateProjectBoardOrder(state, { projectToId, projectFromId, boardId, position = -1 }) {\n const projectIndexTo = state.teamProjects.findIndex((i: any) => i.id === projectToId);\n if (\n projectIndexTo > -1 &&\n state.teamProjects[projectIndexTo].board_order.indexOf(boardId) === -1\n ) {\n if (position !== -1) {\n state.teamProjects[projectIndexTo].board_order.splice(position, 0, boardId);\n } else {\n state.teamProjects[projectIndexTo].board_order.push(boardId);\n }\n }\n\n const projectIndexFrom = state.teamProjects.findIndex((i: any) => i.id === projectFromId);\n\n if (projectIndexFrom > -1) {\n const boardForRemoveIndex = state.teamProjects[projectIndexFrom].board_order.findIndex(\n (id: any) => id === boardId\n );\n if (boardForRemoveIndex > -1) {\n state.teamProjects[projectIndexFrom].board_order.splice(boardForRemoveIndex, 1);\n }\n }\n },\n\n localRemoveBoardFromOrder(state, { projectId, boardId }) {\n const projectIndex = state.teamProjects.findIndex((i: any) => i.id === projectId);\n\n if (projectIndex > -1) {\n const boardForRemoveIndex = state.teamProjects[projectIndex].board_order.findIndex(\n (id: any) => id === boardId\n );\n if (boardForRemoveIndex > -1) {\n state.teamProjects[projectIndex].board_order.splice(boardForRemoveIndex, 1);\n }\n }\n },\n\n localUpdateProjectBoardsOrder(state, { projectId, payload }) {\n const projectIndex = state.teamProjects.findIndex((i: any) => i.id === projectId);\n if (projectIndex > -1) {\n state.teamProjects[projectIndex].board_order = payload;\n }\n },\n\n localAddProjectBoardOrder(state, { projectId, boardId }) {\n const projectIndexTo = state.teamProjects.findIndex((i: any) => i.id === projectId);\n if (projectIndexTo > -1 && state.teamProjects[projectIndexTo]) {\n const boardOrder = state.teamProjects[projectIndexTo].board_order;\n if (boardOrder && boardOrder.indexOf(boardId) === -1) {\n boardOrder.push(boardId);\n } else if (!boardOrder) {\n state.teamProjects[projectIndexTo].board_order = [boardId];\n }\n }\n },\n\n setDraggingEntityProjectFromId(state, id) {\n state.draggingEntityProjectFromId = id;\n },\n\n setDraggingSidebarItem(state, payload) {\n state.draggingSidebarItem = payload;\n },\n\n setSelectedProjectId(state, projectId) {\n state.selectedProjectId = projectId;\n },\n\n setPendingInvites(state, payload) {\n state.pendingInvites = payload;\n },\n\n setCurrentRole(state, payload) {\n state.currentRole = payload;\n },\n\n setDoubleCheckPopup(state, payload) {\n state.doubleCheckPopup = payload;\n },\n\n setConfirmationModal(state, payload) {\n state.confirmationModal = payload;\n },\n\n addCardIdForLocalId(state, { localId, id }) {\n state.localCardIds[localId] = id;\n },\n\n setColorsPopup(state, payload) {\n state.colorsPopup = payload;\n },\n\n setCommentsOrder(state, payload) {\n state.commentsOrder = payload;\n },\n\n setQuickCard(state, isOn) {\n state.quickCard = isOn;\n },\n\n setQuickCardBoardId(state, payload) {\n state.quickCardBoardId = payload;\n },\n\n setQuickPage(state, value) {\n state.quickPage = value;\n },\n\n setNoteInQuickPage(state, value) {\n state.noteInQuickPage = value;\n },\n\n setQuickNote(state, value) {\n state.quickNote = value;\n },\n\n setCardCommentActivityFilter(state, payload) {\n state.cardCommentActivityFilter = payload;\n },\n\n addCommentInProgressPatch(state, payload) {\n state.commentsInProgressPatch.push(payload);\n },\n\n removeCommentInProgressPatch(state, payload) {\n const commentIndex = state.commentsInProgressPatch.indexOf(payload);\n state.commentsInProgressPatch.splice(commentIndex, 1);\n },\n\n addCommentInProgressDelete(state, payload) {\n state.commentsInProgressDelete.push(payload);\n },\n\n removeCommentInProgressDelete(state, payload) {\n const commentIndex = state.commentsInProgressDelete.indexOf(payload);\n state.commentsInProgressDelete.splice(commentIndex, 1);\n },\n\n addLoadedFile(state, payload) {\n if (state.loadedFiles.find((file: any) => file.id === payload.id)) return;\n state.loadedFiles.push(payload);\n },\n\n setOnline(state, value) {\n state.online = value;\n },\n\n setProjectMembers(state, { members, projectId, projectIndex }) {\n if (projectIndex > -1) {\n state.teamProjects[projectIndex].members = members;\n } else {\n const projectIndex = state.teamProjects.findIndex((i: any) => i.id === projectId);\n if (projectIndex > -1) {\n const newProject = { ...state.teamProjects[projectIndex], members };\n state.teamProjects.splice(projectIndex, 1, newProject);\n }\n }\n },\n\n setProjectPreviewLastScrollPos(state, { projectId, scrollPosition }) {\n const temp = { ...state.projectPreviewLastScrollPos };\n if (!scrollPosition) {\n delete temp[projectId];\n state.projectPreviewLastScrollPos = temp;\n } else {\n state.projectPreviewLastScrollPos[projectId] = scrollPosition;\n }\n },\n hideAllReplies(state) {\n state.showHideReplies = {};\n },\n showHideReplies(state, payload) {\n state.showHideReplies[payload.commentId] = payload.show;\n },\n closeEditor(state) {\n state.editorOpen = {};\n },\n editorOpen(state, payload) {\n state.editorOpen[payload.commentId] = payload.open;\n },\n\n setFavourites(state, favourites) {\n const processFavourite = (item: any) => {\n if (item.resource_type === ResourceType.Sprint && !item.resource_id.includes('s')) {\n item.original_resource_id = item.resource_id;\n item.resource_id = getSprintKey(item.project_id, item.resource_id);\n }\n if (item.children) {\n item.children = item.children.map(processFavourite);\n }\n return item;\n };\n\n const favouritesForSet = favourites.map(processFavourite);\n state.favourites = favouritesForSet;\n },\n\n addInFavourites(state, item) {\n if (item.position > -1) {\n state.favourites.splice(item.position, 0, item);\n } else {\n state.favourites.push(item);\n }\n },\n\n addInParentFavourite(state, { item, parentId, position = -1 }) {\n const parentIndex = state.favourites.findIndex((f: any) => f.resource_id === parentId);\n if (state.favourites[parentIndex].children) {\n if (position > -1) {\n state.favourites[parentIndex].children.splice(position, 0, item);\n } else {\n state.favourites[parentIndex].children.push(item);\n }\n } else {\n state.favourites[parentIndex].children = [item];\n }\n },\n\n localRemoveFromFavourites(state, { resourceId, resourceType }) {\n for (let i = 0; i < state.favourites.length; i++) {\n const favourite = state.favourites[i];\n if (!favourite) continue;\n if (favourite.resource_id === resourceId && favourite.resource_type === resourceType) {\n state.favourites.splice(i, 1);\n } else if (favourite.children) {\n for (let j = 0; j < favourite.children.length; j++) {\n if (\n favourite.children[j].resource_id === resourceId &&\n favourite.children[j].resource_type === resourceType\n ) {\n favourite.children.splice(j, 1);\n }\n }\n }\n }\n },\n\n localUpdateResourceInFavourites(state, resource) {\n for (let i = 0; i < state.favourites.length; i++) {\n const favourite = state.favourites[i];\n if (\n favourite.resource_id === resource.resource_id &&\n favourite.resource_type === resource.resource_type\n ) {\n state.favourites.splice(i, 1, resource);\n }\n if (favourite?.children) {\n for (let j = 0; j < favourite.children.length; j++) {\n if (\n favourite.children[j].resource_id == resource.resource_id &&\n favourite.children[j].resource_type === resource.resource_type\n ) {\n favourite.children.splice(j, 1, resource);\n }\n }\n }\n }\n },\n\n setFavouritesFolderExpand(state, { id, value }) {\n state.favouritesFolderExpanded[id] = value;\n let existing = localStorage.getItem('favouritesFolderExpanded');\n existing = existing ? JSON.parse(existing) : {};\n // @ts-ignore: Object is possibly 'null'.\n existing[id] = value;\n localStorage.setItem('favouritesFolderExpanded', JSON.stringify(existing));\n },\n\n setNewFolderInput(state, value) {\n state.newFolderInput = value;\n },\n\n setFavouriteFolderForRename(state, value) {\n state.favouriteFolderForRename = value;\n },\n\n setFavouriteFolderTitle(state, value) {\n state.favouriteFolderTitle = value;\n },\n showPeekSidebar(state, value) {\n state.showPeekSidebar = value;\n },\n\n setTheme(state, value) {\n state.theme = value;\n },\n addToElectronBrowseHistory(state, payload) {\n if (payload.replaceAfterIndex) {\n state.electronBrowseHistory.splice(payload.replaceAfterIndex + 1);\n }\n\n state.electronBrowseHistory.push(payload.path);\n },\n setElectronBrowseHistoryIndex(state, value) {\n state.electronBrowseHistoryIndex = value;\n },\n setElectronRecentlyViewed(state, value) {\n state.electronRecentlyViewed = value;\n },\n addToElectronRecentlyViewed(state, payload) {\n const { currentlyViewed, teamId } = payload;\n const { type, id } = currentlyViewed;\n\n const recentlyViewed = state.electronRecentlyViewed.length\n ? state.electronRecentlyViewed\n : JSON.parse(localStorage.getItem(`recentlyViewed:${teamId}`) ?? '[]');\n\n const index = recentlyViewed.findIndex((i: any) => i.type === type && i.id === id);\n\n if (index > -1) {\n recentlyViewed.splice(index, 1);\n }\n\n recentlyViewed.unshift(currentlyViewed);\n\n if (recentlyViewed.length > 10) {\n recentlyViewed.pop();\n }\n\n state.electronRecentlyViewed.splice(0, state.electronRecentlyViewed.length, ...recentlyViewed);\n\n localStorage.setItem(`recentlyViewed:${teamId}`, JSON.stringify(state.electronRecentlyViewed));\n },\n removeFromElectronRecentlyViewed(state, payload) {\n const { currentlyViewed, teamId } = payload;\n const { type, id } = currentlyViewed;\n\n const recentlyViewed = state.electronRecentlyViewed.length\n ? state.electronRecentlyViewed\n : JSON.parse(localStorage.getItem(`recentlyViewed:${teamId}`) ?? '[]');\n\n const index = recentlyViewed.findIndex((i: any) => i.type === type && i.id === id);\n\n if (index === -1) {\n return;\n }\n\n recentlyViewed.splice(index, 1);\n\n state.electronRecentlyViewed.splice(0, state.electronRecentlyViewed.length, ...recentlyViewed);\n\n localStorage.setItem(`recentlyViewed:${teamId}`, JSON.stringify(recentlyViewed));\n },\n updateItemInElectronRecentlyViewed(\n state,\n { id, type, teamId, toUpdate }: { id: string; type: string; teamId: string; toUpdate: any }\n ) {\n const recentlyViewed = state.electronRecentlyViewed.length\n ? state.electronRecentlyViewed\n : JSON.parse(localStorage.getItem(`recentlyViewed:${teamId}`) ?? '[]');\n\n const index = recentlyViewed.findIndex((i: any) => i.type === type && i.id === id);\n\n if (index === -1) {\n return;\n }\n\n state.electronRecentlyViewed.splice(index, 1, {\n ...recentlyViewed[index],\n ...toUpdate,\n });\n localStorage.setItem(`recentlyViewed:${teamId}`, JSON.stringify(recentlyViewed));\n },\n setThemePreference(state, value) {\n state.themePreference = value;\n },\n\n setCurrentInboxResource(state, value) {\n state.currentInboxResource = value;\n },\n\n setInboxFilters(state, value) {\n state.inboxFilter = value;\n },\n\n setInboxListWidth(state, value) {\n state.inboxListWidth = value;\n },\n setInboxListExpanded(state, value) {\n state.inboxListExpanded = value;\n },\n\n setShowOnboarding(state, value) {\n state.showOnboarding = value;\n },\n\n setOpenInDesktopApp(state, value) {\n state.openInDesktopApp = value;\n localStorage.setItem('openInDesktopApp', value);\n },\n\n setShowRedirectedToAppOverlay(state, value) {\n state.showRedirectedToAppOverlay = value;\n },\n\n setMembersDropdownInvitees(state, value) {\n state.membersDropdownInvitees = value;\n },\n\n addMembersDropdownInvitee(state, value) {\n const alreadyAdded = state.membersDropdownInvitees.some(\n (invitee) => (value.id && invitee.id === value.id) || invitee.email === value.email\n );\n if (!alreadyAdded) {\n state.membersDropdownInvitees.push(value);\n }\n },\n\n removeMembersDropdownInvitee(state, value) {\n const index = state.membersDropdownInvitees.findIndex(\n (invitee) => (value.id && invitee.id === value.id) || invitee.email === value.email\n );\n if (index > -1) state.membersDropdownInvitees.splice(index, 1);\n },\n\n setEditorForCardLink(state, value) {\n state.editorForCardLink = value;\n },\n\n setMyWorkSelectedTabId(state, { userId, tabId }: { userId: string; tabId: any }) {\n if (Object.values(MyWorkTabId).indexOf(tabId) === -1) {\n tabId = MyWorkTabId.Assigned;\n }\n state.myWorkSelectedTabId[userId] = tabId;\n },\n\n setMyWorkUserId(state, userId) {\n state.myWorkUserId = userId;\n },\n\n addCardToCurrentViewResults(state, card) {\n state.viewPreview.unshift(card);\n },\n\n setPressedEscCancelDrag(state, value) {\n state.pressedEscCancelDragging = value;\n },\n\n setSidebarHover(state, value) {\n state.sidebarHovered = value;\n },\n\n setSidebarDragging(state, value) {\n state.sidebarDragging = value;\n },\n\n setTeamFeatures(state, features) {\n state.teamFeatures = features;\n },\n\n updateTeamFeature(state, { featureId, feature }) {\n const index = state.teamFeatures.findIndex((f: any) => f.id === featureId);\n if (index !== -1) {\n state.teamFeatures.splice(index, 1, feature);\n }\n },\n\n setShowUpdateEmailPopup(state, type) {\n state.showUpdateEmailPopup = type;\n },\n\n setPageIconPickerDisplayed(state, value) {\n state.pageIconPickerDisplayed = value;\n },\n\n setHideEmptyGroups(state, { value, boardId, teamId }) {\n const index = state.hideEmptyGroups.indexOf(boardId);\n if (value) {\n if (index === -1) {\n state.hideEmptyGroups.push(boardId);\n }\n } else if (index !== -1) {\n state.hideEmptyGroups.splice(index, 1);\n }\n browserStorageSetItem(hideEmptyGroupByBoardKey(teamId), state.hideEmptyGroups);\n },\n\n setShowWeekends(state, { value, boardId, teamId }) {\n const index = state.showWeekends.indexOf(boardId);\n if (value) {\n if (index === -1) {\n state.showWeekends.push(boardId);\n }\n } else if (index !== -1) {\n state.showWeekends.splice(index, 1);\n }\n browserStorageSetItem(showWeekendsByBoardKey(teamId), state.showWeekends);\n },\n\n addReconnectionCallback(state, { callbackId, callback }) {\n state.reconnectionCallbacks[callbackId] = callback;\n },\n\n removeReconnectionCallback(state, callbackId) {\n delete state.reconnectionCallbacks[callbackId];\n },\n\n previousNextButtonClicked(state, value) {\n state.previousNextButtonClicked = value;\n },\n\n // add page to team projects\n addProjectPage(state, { page, projectId }) {\n const projectIndex = state.teamProjects.findIndex((p: any) => p.id === projectId);\n if (projectIndex > -1) {\n const project = state.teamProjects[projectIndex];\n if (project.pages) {\n const pages = [...project.pages];\n pages.push(page);\n project.pages = pages.slice().sort((a: any, b: any) => parseInt(a.id) - parseInt(b.id));\n } else {\n project.pages = [page];\n }\n }\n },\n\n // remove page from team projects\n removeProjectPage(state, { pageId, projectId }) {\n const projectIndex = state.teamProjects.findIndex((p: any) => p.id === projectId);\n if (projectIndex > -1) {\n const project = state.teamProjects[projectIndex];\n if (project.pages) {\n const pageIndex = project.pages.findIndex((p: any) => p.id === pageId);\n if (pageIndex > -1) {\n project.pages.splice(pageIndex, 1);\n }\n }\n }\n },\n\n updatePageInTeamProject(state, { projectId, pageId, field, value }) {\n const projectIndex = state.teamProjects.findIndex((p: any) => p.id === projectId);\n if (projectIndex > -1) {\n const project = state.teamProjects[projectIndex];\n if (project.pages) {\n const pageIndex = project.pages.findIndex((p: any) => p.id === pageId);\n if (pageIndex > -1) {\n project.pages[pageIndex][field] = value;\n }\n }\n }\n },\n\n setUserTimezoneId(state, timezone_id) {\n state.user.timezone_id = timezone_id;\n },\n\n updateNotificationDigest(state, payload) {\n state.notificationDigest = {\n ...state.notificationDigest,\n ...payload,\n };\n },\n\n updateNotificationDigestSettings(state, payload) {\n state.notificationDigestSettings = {\n ...state.notificationDigestSettings,\n ...payload,\n };\n },\n\n setBoardEmbedPopup(state, payload) {\n state.boardEmbedPopup = payload;\n },\n\n setIsSettingsOpen(state, value) {\n state.isSettingsOpen = value;\n },\n\n setShowUpgradePlanPopup(state, value) {\n state.showUpgradePlanPopup = value;\n },\n\n setMyWorkSortBy(state, { teamId, userId, value }) {\n state.myWorkSortBy[userId] = value;\n browserStorageGetAndSetItem(myWorkSortByKey(teamId), userId, value);\n },\n\n setMyWorkSortByForAllUsers(state, value) {\n state.myWorkSortBy = value;\n },\n\n localRemoveTeamMember(state, userId) {\n delete state.teamMembers[userId];\n },\n\n localUpdateTeamMember(state, { userId, updatedFields }) {\n state.teamMembers[userId] = {\n ...state.teamMembers[userId],\n ...updatedFields,\n };\n },\n\n setModal(state, payload) {\n state.modal = payload;\n },\n\n setRecentWorkspaces(state, workspace) {\n const workspaceIndex = state.recentWorkspaces.findIndex((ws: any) => ws.id === workspace.id);\n\n if (workspaceIndex !== -1) state.recentWorkspaces.splice(workspaceIndex, 1);\n state.recentWorkspaces.push(workspace);\n\n browserStorageSetItem('recentWorkspaces', state.recentWorkspaces);\n },\n\n updateRecentWorkspace(state, { workspaceId, updatedFields }) {\n const workspaceIndex = state.recentWorkspaces.findIndex((ws: any) => ws.id === workspaceId);\n if (workspaceIndex === -1) return;\n\n state.recentWorkspaces[workspaceIndex] = {\n ...state.recentWorkspaces[workspaceIndex],\n ...updatedFields,\n };\n },\n\n setOpenWorkspaceThroughQuickSwitcher(state, value) {\n state.openWorkspaceThroughQuickSwitcher = value;\n },\n\n setSidebarSprintsExpanded(state, { teamSlug, projectId, value }) {\n state.sidebarSprintsExpanded[projectId] = value;\n let existing = localStorage.getItem(`sidebarSprintsExpanded-${teamSlug}`);\n existing = existing ? JSON.parse(existing) : {};\n // @ts-ignore: Object is possibly 'null'.\n existing[projectId] = value;\n localStorage.setItem(`sidebarSprintsExpanded-${teamSlug}`, JSON.stringify(existing));\n },\n\n localAddSprintToProject(state, { projectId, sprint }) {\n const projectIndex = state.teamProjects.findIndex((i) => i.id === projectId);\n\n if (projectIndex > -1) {\n const sprints = state.teamProjects[projectIndex].sprints;\n if (!sprints) {\n state.teamProjects[projectIndex].sprints = [sprint];\n } else if (!sprints.some((s: any) => s.id === sprint.id)) {\n sprints.push(sprint);\n }\n }\n },\n\n setNote(state, { noteIdToUpdate, note }) {\n if (noteIdToUpdate) {\n delete state.notes[noteIdToUpdate];\n }\n\n state.notes[note.id] = note;\n },\n\n localUpdateNoteProp(state, { noteId, aiNoteId, propertyName, value }) {\n if (!state.notes[noteId]) return;\n\n if (aiNoteId) {\n const aiNoteIndex = (state.notes[noteId]?.[NoteContentType.AiNotes] || []).findIndex(\n (aiNote: any) => aiNote.id === aiNoteId\n );\n\n if (aiNoteIndex !== -1) {\n const aiNote = state.notes[noteId][NoteContentType.AiNotes][aiNoteIndex];\n state.notes[noteId][NoteContentType.AiNotes][aiNoteIndex] = {\n ...aiNote,\n [propertyName]: value,\n };\n }\n\n return;\n }\n\n const updatedNote = {\n [noteId]: {\n ...state.notes[noteId],\n [propertyName]: value,\n },\n };\n\n const notes = {\n ...state.notes,\n ...updatedNote,\n };\n\n state.notes = notes;\n },\n\n deleteNote(state, noteId) {\n const notes = { ...state.notes };\n\n delete notes[noteId];\n state.notes = notes;\n },\n\n setNotes(state, notes) {\n state.notes = notes;\n },\n\n setAiNoteGenerating(state, noteId) {\n state.aiNoteGenerating = noteId;\n },\n\n setAiNoteGeneratingTitle(state, noteId) {\n state.aiNoteGeneratingTitle = noteId;\n },\n\n setAiNote(state, { noteId, templateId, aiNote }) {\n if (!state.notes[noteId]) return;\n\n const aiNoteIndex = (state.notes[noteId]?.[NoteContentType.AiNotes] || [])?.findIndex(\n (n: any) => n.note_template_id === templateId\n );\n\n if (aiNoteIndex !== -1) {\n state.notes[noteId][NoteContentType.AiNotes][aiNoteIndex] = aiNote;\n return;\n }\n\n const aiNotes = state.notes[noteId][NoteContentType.AiNotes] || [];\n\n aiNotes.push(aiNote);\n\n state.notes[noteId] = {\n ...state.notes[noteId],\n [NoteContentType.AiNotes]: aiNotes,\n };\n },\n\n setAiActions(state, { noteId, aiNoteId, actions }) {\n const note = state.notes[noteId];\n if (!note) return;\n\n const aiNoteIndex = note[NoteContentType.AiNotes]?.findIndex((n: any) => n.id === aiNoteId);\n if (aiNoteIndex === -1) return;\n\n const aiNote = note[NoteContentType.AiNotes][aiNoteIndex];\n state.notes[noteId][NoteContentType.AiNotes][aiNoteIndex] = {\n ...aiNote,\n actions,\n };\n },\n\n updateAiAction(state, { noteId, aiNoteId, actionId, action }) {\n const note = state.notes[noteId];\n if (!note) return;\n\n const aiNoteIndex = aiNoteId\n ? note[NoteContentType.AiNotes]?.findIndex((n: any) => n.id === aiNoteId)\n : note[NoteContentType.AiNotes]?.findIndex((n: any) =>\n n.actions?.find((a: any) => a.id === actionId)\n );\n if (aiNoteIndex === -1) return;\n\n const aiNote = note[NoteContentType.AiNotes][aiNoteIndex] || {};\n if (!aiNote.actions) return;\n\n const actionIndex = aiNote.actions.findIndex((a: any) => a.id === actionId);\n if (actionIndex === -1) return;\n\n state.notes[noteId][NoteContentType.AiNotes][aiNoteIndex].actions.splice(\n actionIndex,\n 1,\n action\n );\n },\n\n localCreateTranscript(state, { noteId, transcript }) {\n if (!state.notes[noteId]) return;\n\n if (!state.notes[noteId].transcripts) {\n state.notes[noteId].transcripts = [];\n }\n\n state.notes[noteId].transcripts.push(transcript);\n },\n\n localUpdateTranscript(state, { noteId, transcript }) {\n if (!state.notes[noteId]) return;\n\n const transcriptIndex = state.notes[noteId].transcripts.findIndex(\n (t: any) => t.local_id === transcript.local_id\n );\n if (transcriptIndex !== -1) {\n const updatedTranscript = {\n ...state.notes[noteId].transcripts[transcriptIndex],\n ...transcript,\n };\n state.notes[noteId].transcripts.splice(transcriptIndex, 1, updatedTranscript);\n }\n },\n\n localSetNoteTranscripts(state, { noteId, transcripts }) {\n if (!state.notes[noteId]) return;\n\n state.notes[noteId].transcripts = transcripts;\n },\n\n setTranscriptionState(state, value) {\n state.transcriptionState = { ...state.transcriptionState, ...value };\n },\n\n setResourceLoaded(state, { resource, value }: { resource: ResourceLoadedKey; value: boolean }) {\n state.resourceLoaded[resource] = value;\n },\n\n setNoteTemplates(state, templatesArray) {\n const flatTemplates: { [key: string]: any } = {};\n templatesArray.forEach((template: any) => {\n flatTemplates[template.id] = template;\n });\n const newTemplates = { ...flatTemplates };\n state.noteTemplates = newTemplates;\n },\n\n setNoteTemplate(state, template) {\n state.noteTemplates[template.id] = template;\n },\n\n replaceNoteTemplateId(state, { localId, template }) {\n const newTemplates = { ...state.noteTemplates };\n delete newTemplates[localId];\n newTemplates[template.id] = template;\n state.noteTemplates = newTemplates;\n },\n\n deleteNoteTemplate(state, templateId) {\n const newTemplates = { ...state.noteTemplates };\n delete newTemplates[templateId];\n state.noteTemplates = newTemplates;\n },\n\n setNoteTemplateDraft(state, template) {\n const newTemplate = {\n title: template.title,\n icon: template.icon,\n is_shared: template.is_shared,\n context: template.context,\n sections: template.sections,\n };\n state.noteTemplateDraft = newTemplate;\n },\n\n updateNoteTemplateDraftField(state, { fieldName, value }) {\n state.noteTemplateDraft[fieldName] = value;\n },\n\n clearNoteTemplateDraft(state) {\n state.noteTemplateDraft = {\n title: '',\n icon: {},\n is_shared: true,\n context: '',\n sections: [],\n };\n },\n\n setNoteTemplateSections(state, sections) {\n state.noteTemplateSections = sections;\n },\n\n setAgents(state, agents) {\n state.agents = agents;\n },\n\n setCurrentAgentId(state, agentId) {\n state.currentAgentId = agentId;\n },\n\n setPromptIterationsForAgent(state, { agentId, iterations }) {\n state.agentPromptIterations[agentId] = iterations;\n },\n\n setAgentRuns(state, agentRuns) {\n state.agentRuns = agentRuns;\n },\n\n setTeamSubscription(state, subscription: Subscription) {\n state.teamSubscription = subscription;\n },\n setAvailablePlans(state, availablePlans: GetAvailablePlansResponse) {\n state.availablePlans = availablePlans.plans || [];\n },\n\n setSubGroupByEnabled(state, { value, boardId }) {\n state.subGroupByEnabled[boardId] = value;\n },\n\n setWorkspaceSectionExpanded(state, value) {\n state.workspaceSectionExpanded = value;\n browserStorageSetItem('workspaceSectionExpanded', value);\n },\n};\n\nexport default mutations;\n","/**\n * Main vuex getters\n * @packageDocumentation\n * @category Store\n */\nimport { GetterTree } from 'vuex';\nimport { RootState as State, User, Team, Project } from '@/types';\nimport sortProjects from '@/utilities/sortProjects';\nimport constants from '@/utilities/constants';\nimport { ResourceType } from '@/types/resources';\nimport { MyWorkTabId } from '@/types/tabs';\nimport { TeamMember, Subscription, Plan } from '@superthread-com/api';\n\nconst getters: GetterTree = {\n /** Returns the team sub domain of the currently logged in user. */\n getTeamSubDomain: (state): string => state.loginDetails.teamSubDomain,\n /** Returns the username of the currently logged in user. */\n getUserName: (state): string => state.loginDetails.userName,\n /** Returns the email of the currently logged in user. */\n getEmail: (state): string => state.loginDetails.email,\n /** Returns settings for user */\n getUserSettings: (state) => state.userSettings,\n /** Returns the currently logged in user object. */\n getUser: (state): User => state.user,\n /** Returns the user id. */\n getUserId: (state): string => state.user.id,\n /** Returns the user email. */\n getUserEmail: (state): string => state.user.email,\n /** Returns the team of the user. */\n getTeam: (state, _getters, rootState, rootGetters): Team => {\n const teamId = rootGetters.getTeamID;\n return (state.user.teams || []).find((t: Team) => t.id === teamId);\n },\n getUserTeams: (state): Team[] => {\n return state.user.teams;\n },\n /** Returns the password of the currently logged in user. */\n getPassword: (state): string => state.loginDetails.password,\n /** Returns flag determing if user is logged in or not. */\n getLoggedIn: (state): boolean => state.loggedIn,\n /** Returns project where user is member. */\n getProjects: (state): Project[] => state.teamProjects.filter((p: any) => p.is_member) || [],\n /** Returns my projects sorted by project_order array. */\n getMySortedProjects: (state, _getters): any[] => {\n return sortProjects(_getters.getProjects, _getters.getProjectOrder);\n },\n /** Returns my project for given id */\n getMyProjectById: (state, _getters) => (id: string) =>\n _getters.getProjects.find((p: any) => p.id === id),\n /** Returns team project for given id */\n getTeamProjectById: (state) => (id: string) => state.teamProjects.find((p: any) => p.id === id),\n /** Returns all project from user's team. */\n getTeamProjects: (state): Project[] => state.teamProjects || [],\n getTeamSortedProjects: (state, _getters): any[] => {\n return sortProjects(_getters.getTeamProjects, _getters.getProjectOrder);\n },\n socketDeletedProjects: (state): string[] => state.socketDeletedProjects,\n /** Returns order of projects. */\n getProjectOrder: (state): string[] => state.projectOrder ?? [],\n /** Returns project based on passed project id */\n getProjectById: (state, _getters) => (id: string) => _getters.getTeamProjectById(id) || {},\n /** Returns current comments. */\n getComments: (state): any[] => state.comments,\n /** Returns cards comments and activities */\n getCardCommentsAndActivities: (state, globalGetters) => (id: string) => {\n const activities = state.cardsCommentsAndActivities[id];\n if (activities) {\n return globalGetters.getCommentActivityOrderOfDisplayedCard(id) === 'newest'\n ? [...activities].sort((a: any, b: any) => b.time_created - a.time_created)\n : [...activities].sort((a: any, b: any) => a.time_created - b.time_created);\n }\n return [];\n },\n /** Returns comments for page. */\n getPageComments: (state) => state.comments.sort((a, b) => a.time_created - b.time_created),\n /**\n * Returns comment object for passed comment id.\n * @param {string} id comment id to look for.\n */\n getCommentById: (state) => (id: string, cardId: string) => {\n if (cardId)\n return state.cardsCommentsAndActivities[cardId]?.find((c: any) => c.id === id) || {};\n else return state.comments.find((c: any) => c.id === id) || {};\n },\n /** Returns the id of the comment which is currently edited. */\n getCurrentEditCommentId: (state): string => state.currentEditCommentID,\n /** Returns the previous route object. */\n getPreviousRoute: (state): object => state.previousRoute,\n /** Returns the previous route name */\n getPreviousRouteName: (state): string => state.previousRoute.name || '',\n /** Returns the prevoious route path */\n getPreviousRoutePath: (state): string => state.previousRoute.path || '',\n /** Returns the flag which indicates if the previous route was root. */\n isPreviousRouteRoot: (state): boolean => {\n const path = state.previousRoute.path || '';\n return path === '' || path === '/';\n },\n /** Returns notification message for popup. */\n getPopUpMessage: (state): string => state.popUpMessage,\n /** Returns the flag which controls the display of popup for help section. */\n getHelpPopupIsOn: (state): boolean => state.helpPopupIsOn,\n /** NOT IN USE */\n getCommentListOrderBy: (state): string => state.commentListOrderBy,\n /** Returns the id of the adjecent project (prioritizes previous one) of the project passed as param */\n getAdjacentProjectId:\n (state, getters) =>\n (projectId: string = state.currentProjectId) => {\n const order = getters.getProjectOrder;\n\n // last project in the list -> navigate to a fallback route (e.g. manage spaces)\n if (order.length === 1) return '';\n\n const index = order.indexOf(projectId);\n // does not exist in project order\n if (index === -1) return '';\n\n const previousProjectIndex = index === 0 ? index + 1 : index - 1;\n return order[previousProjectIndex];\n },\n /** Returns the id of the currently selected project. */\n getCurrentProjectId: (state): string => state.currentProjectId,\n /** Returns current project object */\n getCurrentProject: (state, _getters) => _getters.getProject(state.currentProjectId) ?? {},\n /** Returns the project object for given project id from teamProject or trashProjects. */\n getProject:\n (state, _getters) =>\n (projectId: string = state.currentProjectId) => {\n return _getters.getTeamProjectById(projectId) ?? _getters.getTrashProjectById(projectId);\n },\n /** Returns a title of the current project */\n getCurrentProjectTitle: (state, _getters): string => _getters.getCurrentProject.title || '',\n /** Returns the description of the current project. */\n getCurrentProjectDescription: (state, _getters): string =>\n _getters.getCurrentProject.description || '',\n /** Returns the project name on the form for adding project. */\n getProjectFormName: (state): string => state.projectFormName,\n /** Returns the project description on the form for adding new project. */\n getProjectFormDescription: (state): string => state.projectFormDescription,\n /** Returns a flag controling the display of page comments list. */\n getCommentsAreActive: (state): boolean => state.commentsAreActive,\n /** Returns a flag to determin where does a comment belong page or card. */\n getCommentsSection: (state) => state.commentsSection,\n /** Returns environment specific endpoints */\n getRoutes: (state) => {\n if (process.env.VUE_APP_ENV) {\n return state.routes[process.env.VUE_APP_ENV];\n }\n return state.routes.dev;\n },\n /** Returns current tab name (Pages or Boards) */\n getCurrentTabName: (state) => state.currentTabName,\n /** Returns members which are in the project. */\n getCurrentMembers: (state) => state.members,\n /** Get member by id */\n getMemberById: (state) => (id: any) => state.teamMembers[id] || state.inactiveMembers[id] || {},\n /** Returns a flag to show or hide search popup. */\n showSearchModal: (state): boolean => state.showSearchModal,\n /** Returns a flag to show or hide Ask AI Notes popup. */\n showAskAiNotesModal: (state): boolean => state.showAskAiNotesModal,\n /** Returns value to show search result on search popup. */\n searchResults: (state) => state.searchResults,\n /** Returns value to show search result in child search dropdown. */\n childSearchResults: (state) => state.childSearchResults,\n /** Returns value of last search */\n getLastSearchQuery: (state) => state.lastSearchQuery,\n /** Returns value of last search for Ask AI Notes */\n getLastAskAiNotesSearchQuery: (state) => state.lastAskAiNotesSearchQuery,\n /** Returns team slug for logged user's team */\n getTeamSlug: (state, globalGetters) => {\n const currentTeam = (state.user.teams || []).find((t: any) => t.id === globalGetters.getTeamID);\n return currentTeam?.sub_domain || localStorage.getItem('teamSubDomain') || '';\n },\n /** Returns notification message to be displayed */\n getNotificationMessage: (state) => state.notificationMessage,\n /** Returns notification type to be displayed */\n getNotificationType: (state) => state.notificationType,\n /** Returns array of team sub domains */\n getTeamSubDomains: (state) => state.loginDetails.teamSubDomains,\n /** Returns dark mode flag */\n darkMode: (state) => state.darkMode,\n /** Returns name of setted background for boardView */\n getBoardsBackground: (state) => state.boardsBackground,\n /** Returns the flag that indicates is sidebar expanded. */\n sidebarExpanded: (state): boolean => state.sidebarExpanded,\n /** Returns value that indicates is popup for adding new member opened */\n getAddMemberPopupIsOn: (state): boolean => state.addMemberPopupIsOn,\n /** Returns id that indicates which dropdown for adding members is active */\n getDisplayMembersDropdownId: (state) => state.displayMembersDropdownId,\n /** Returns object that indicates in which item to add members(board, page, card, project) */\n getAddMembersTarget: (state): object => state.addMembersTarget,\n\n getDisplayEditLinkPopup: (state) => state.displayEditLinkPopup,\n getDisplayEditorTooltip: (state) => state.displayEditorTooltip,\n /** Returns value to show or hide popup for edit user profile. */\n displayInfoSidebar: (state) => state.displayInfoSidebar,\n\n getTeamMembers: (state) => state.teamMembers,\n\n getInactiveTeamMembers: (state) => state.inactiveMembers,\n\n getDefaultTabName: (state) => {\n const currentProjecId = state.currentProjectId;\n const currentProjectPath = `${constants.projectSlug}-${currentProjecId}`;\n const currentTabName = state.currentTabName || 'boards';\n const { teamSubDomain } = state.loginDetails;\n if (!currentProjecId) {\n return `/${teamSubDomain}/${constants.manageSpacesRouteName}`;\n }\n return `/${teamSubDomain}/${currentProjectPath}/${currentTabName}`;\n },\n getRedirectRouteAfterLogin: (state) => state.redirectRouteAfterLogin,\n /** Returns notification count. */\n notificationCount: (state) => state.notificationCount,\n getNotificationAlerts: (state) => state.notificationAlerts,\n /** Returns team member notifications. */\n getTeamMemberNotifications: (state) => state.teamMemberNotifications,\n getPublicViews: (state) => state.publicViews,\n getPrivateViews: (state) => state.privateViews,\n getSelectedViewType: (state) => state.selectedViewType,\n getViewResults: (state) => state.viewPreview,\n getViewResultsFromList: (state) => (viewId: string | number) =>\n state.viewResultsList[viewId] || {},\n getListOfViewResults: (state) => state.viewResultsList,\n getSelectedView: (state) => state.selectedView,\n getViewFilters: (state) => state.viewFilters,\n getViewPills: (state) => state.viewPills,\n getViewEditMode: (state) => state.viewEditMode,\n getBoardsFilters: (state) => state.boardsFilters,\n getEmojiPickerDisplayed: (state) => state.emojiPickerDisplayed,\n /** Returns ui toast notifications array */\n getUiNotifications: (state) => state.uiNotifications,\n getFavouritesOpened: (state) => state.favouritesOpened,\n getOpenedFavouriteItem: (state) => state.openedFavouriteItem,\n isFavourite: (state) => (id: string, type: string) => {\n return state.favourites.some(\n (fav) =>\n (fav?.resource_id === id && fav?.resource_type === type) ||\n fav?.children?.some(\n (child: any) => child?.resource_id === id && child?.resource_type === type\n )\n );\n },\n getMembersSearchInput: (state) => state.membersSearchInput,\n getHeaderMemberDropdownPosition: (state): any => state.headerMemberDropdownPosition,\n activeComment: (state) => state.activeComment,\n getCurrentRoute: (state) => state.currentRoute,\n getSocketConnected: (state) => state.socketConnected,\n getDisplayVideoLinkPopup: (state) => state.displayVideoLinkPopup,\n getIntegrationInstallations: (state) => (integration: string) =>\n state.installations[integration] || [],\n getImportProgressSteps: (state) => state.importProgressSteps,\n getRouteBeforeSettings: (state) => state.routeBeforeSettings,\n getImportProgressCurrentStep: (state) => state.importProgressCurrentStep,\n getSettingsCurrentProjectId: (state): string => state.settingsCurrentProjectId,\n getSettingsCurrentBoardId: (state): string => state.settingsCurrentBoardId,\n getIntegrationSettings: (state) => (integration: string) =>\n state.integrationSettings[integration] || [],\n getProjectExpanded: (state) => (id: number) => state.projectSidebarExpanded[id] || false,\n getProjectsExpanded: (state) => state.projectsExpanded,\n getFavouritesExpanded: (state) => state.favouritesExpanded,\n draggingEntityProjectFromId: (state) => state.draggingEntityProjectFromId,\n draggingSidebarItem: (state) => state.draggingSidebarItem,\n getSelectedProject: (state, _getters) =>\n _getters.getTeamProjectById(state.selectedProjectId) || {},\n getSelectedProjectTitle: (state, _getters): string => _getters.getSelectedProject.title || '',\n getSelectedProjectDescription: (state, _getters): string =>\n _getters.getSelectedProject.description || '',\n getSelectedProjectId: (state): string => state.selectedProjectId,\n\n getPendingInvites: (state) => state.pendingInvites,\n getCurrentRole: (state, globalGetters) => {\n const currentTeam = state.teams[globalGetters.getTeamID];\n return currentTeam?.role || constants.roles.member;\n },\n getDoubleCheckPopup: (state) => state.doubleCheckPopup,\n getConfirmationModal: (state) => state.confirmationModal,\n getColorsPopup: (state) => state.colorsPopup,\n getCommentsOrder: (state) => state.commentsOrder,\n getQuickCardIsOn: (state) => state.quickCard,\n quickCardBoardId: (state) => state.quickCardBoardId,\n getQuickPage: (state) => state.quickPage,\n getNoteInQuickPage: (state) => state.noteInQuickPage,\n getQuickNote: (state) => state.quickNote,\n getCardCommentActivityFilter: (state) => state.cardCommentActivityFilter,\n getCommentsInProgressPatch: (state) => state.commentsInProgressPatch,\n getCommentsInProgressDelete: (state) => state.commentsInProgressDelete,\n getOnline: (state) => state.online,\n getLoadedFiles: (state) => state.loadedFiles,\n getProjectPreviewLastScrollPos: (state) => (projectId: string) =>\n state.projectPreviewLastScrollPos[projectId] || 0,\n getFavouriteResource: (state) => (index: number) => state.favourites[index] || {},\n getFavourites: (state) => state.favourites || [],\n getFavouritesFolderExpanded: (state) => (id: string) =>\n state.favouritesFolderExpanded[id] || false,\n newFolderInput: (state) => state.newFolderInput,\n getImportHistory: (state) => state.importHistory,\n favouriteFolderForRename: (state) => state.favouriteFolderForRename,\n favouriteFolderTitle: (state) => state.favouriteFolderTitle,\n showPeekSidebar: (state) => state.showPeekSidebar,\n getTheme: (state) => state.theme,\n getElectronBrowseHistory: (state) => state.electronBrowseHistory,\n getElectronBrowseHistoryIndex: (state) => state.electronBrowseHistoryIndex,\n getElectronRecentlyViewed: (state, getters) => {\n return state.electronRecentlyViewed.map((item: any) => ({\n ...item,\n label: getters.resourceTitle(item.type, item.id) || item.label,\n }));\n },\n getThemePreference: (state) => state.themePreference || 'matchSystem',\n getInviteeRole: (state) => state.inviteeRole,\n getInviteesProjectIds: (state) => state.inviteesProjectIds,\n getRedirectProjectId: (state) => state.redirectProjectId,\n getCurrentInboxResource: (state) => state.currentInboxResource,\n inboxFilters: (state) => state.inboxFilter,\n getInboxListWidth: (state) => state.inboxListWidth,\n inboxListExpanded: (state) => state.inboxListExpanded,\n getShowOnboarding: (state) => state.showOnboarding,\n getOpenInDesktopApp: (state) => state.openInDesktopApp,\n getCardIdForLocalCardId: (state) => (localId: string) => state.localCardIds[localId] ?? '',\n getLocalCardIdForId: (state) => (id: string) => {\n const localId = Object.keys(state.localCardIds || []).find(\n (key) => state.localCardIds[key] === id\n );\n return localId ?? '';\n },\n getShowRedirectedToAppOverlay: (state) => state.showRedirectedToAppOverlay,\n getMembersDropdownInvitees: (state) => state.membersDropdownInvitees,\n editorForCardLink: (state) => state.editorForCardLink,\n getMyWorkSelectedTabId: (state) => (userId: string) =>\n state.myWorkSelectedTabId[userId] || MyWorkTabId.Assigned,\n getMyWorkUserId: (state) => state.myWorkUserId,\n getDeletePopupId: (state) => state.deletePopupId,\n getItemNotFound: (state) => state.itemNotFound,\n getTrashProjects: (state) => state.trashProjects || [],\n getTrashProjectById: (state) => (id: string) => state.trashProjects.find((p: any) => p.id === id),\n getBoardsColumnLayout: (state, _getters) => (key: string) =>\n state.boardsColumnLayout[`${_getters.getTeamSlug}-${key}`] || 'list',\n getPagesColumnLayout: (state, _getters) => (key: string) =>\n state.pagesColumnLayout[`${_getters.getTeamSlug}-${key}`] || 'list',\n getCurrentProjectBoardColumnLayout: (state, _getters) =>\n state.boardsColumnLayout[`${_getters.getTeamSlug}-${state.currentProjectId}`] || 'list',\n getCurrentProjectPageColumnLayout: (state, _getters) =>\n state.pagesColumnLayout[`${_getters.getTeamSlug}-${state.currentProjectId}`] || 'grid',\n getPressedEscCancelDragging: (state) => state.pressedEscCancelDragging,\n getEstimateSystemForProject: (state, _getters) => (projectId: string) =>\n _getters.getProjectById(projectId)?.estimate_system || '',\n getCurrentViewTotalCount: (state) => state.currentViewTotalCount,\n sidebarHover: (state) => state.sidebarHovered,\n getSidebarDragging: (state) => state.sidebarDragging,\n getTeamFeatureEnabled: (state) => (featureId: string) => {\n return !!state.teamFeatures.find((feature: any) => feature.id === featureId)?.enabled;\n },\n getTeamFeatureAvailable: (state) => (featureId: string) => {\n return state.teamFeatures.some((feature: any) => {\n return feature.id === featureId;\n });\n },\n getTeamFeature: (state) => (featureId: string) => {\n return state.teamFeatures.find((feature: any) => feature.id === featureId) || {};\n },\n getTeamLimit: (state) => (limitId: string) => {\n return state.teamLimits.find((limit: any) => limit.id === limitId) || {};\n },\n getUserFeatureEnabled: (state, _getters, _rootState, rootGetters) => (featureId: string) => {\n return state.teams[rootGetters.getTeamID]?.flags?.includes?.(featureId);\n },\n getSubscriptionPlan: (state, rootGetters) => {\n return state.teams[rootGetters.getTeamID]?.subscription_plan_id;\n },\n getShowUpdateEmailPopup: (state) => state.showUpdateEmailPopup,\n showHideReplies: (state) => state.showHideReplies,\n editorOpen: (state) => state.editorOpen,\n getPageIconPickerDisplayed: (state) => state.pageIconPickerDisplayed,\n getHideEmptyGroups:\n (state, getters) =>\n (boardId = getters.currentBoardId) =>\n state.hideEmptyGroups.indexOf(boardId) !== -1 || false,\n getShowWeekends: (state, getters) =>\n state.showWeekends.indexOf(getters.currentBoardId) !== -1 || false,\n getReconnectionCallbacks: (state) => state.reconnectionCallbacks,\n getPreviousNextButtonClicked: (state) => state.previousNextButtonClicked,\n resolveInlineComment: (state) => state.resolveInlineComment,\n getUserTimezoneId: (state) => state.user.timezone_id,\n getUserLocale: (state) => state.user.locale,\n getIsAutomaticTimezone: (state) => state.user.autodetect_timezone_id,\n getNotificationDigest: (state) => state.notificationDigest || {},\n getNotificationDigestSettings: (state) => state.notificationDigestSettings || {},\n getCachedComponents: (state) => state.cachedComponents,\n getBoardEmbedPopup: (state) => state.boardEmbedPopup,\n getIsSettingsOpen: (state) => state.isSettingsOpen,\n getShowUpgradePlanPopup: (state) => state.showUpgradePlanPopup,\n getMyWorkSortBy: (state) => state.myWorkSortBy,\n getModal: (state) => state.modal || {},\n getIsModalDisplayed: (state) => Object.keys(state.modal || {}).length > 0,\n resourceTitle:\n (state, globalGetters) => (resourceType: ResourceType | string, resourceId: string) => {\n // based on resource type, get the title of the resource\n switch (resourceType) {\n case ResourceType.Page:\n return globalGetters.getPages[resourceId]?.title || '';\n case ResourceType.Card:\n case constants.routeNames.boardCard:\n return globalGetters.getCardById(resourceId).title || '';\n case ResourceType.Board:\n return globalGetters.getBoardById(resourceId).title || '';\n case ResourceType.Project:\n case ResourceType.Space:\n case constants.routeNames.space:\n return globalGetters.getProjectById(resourceId).title || '';\n case ResourceType.View:\n return globalGetters.getViewById(resourceId).title || '';\n default:\n return '';\n }\n },\n getWorkspaceOwner: (state) => {\n const members = state.teamMembers;\n const teamOwner = Object.values(members as Record).find(\n (member) => member.role === constants.roles.owner\n );\n\n return teamOwner ?? {};\n },\n getRecentWorkspaces: (state) => state.recentWorkspaces,\n getOpenWorkspaceThroughQuickSwitcher: (state) => state.openWorkspaceThroughQuickSwitcher,\n getSidebarSprintsExpanded: (state) => state.sidebarSprintsExpanded,\n getAgents: (state) => state.agents,\n getCurrentAgentId: (state) => state.currentAgentId,\n getAgentPromptIterations: (state) => (agentId: string) => {\n return state.agentPromptIterations[agentId] || [];\n },\n getNotes: (state) => state.notes || {},\n getNoteCreating: (state) => state.noteCreating,\n getAiNoteGenerating: (state) => state.aiNoteGenerating || '',\n getAiNoteGeneratingTitle: (state) => state.aiNoteGeneratingTitle || '',\n getNoteTemplates: (state) => state.noteTemplates || [],\n getTranscriptionState: (state) => state.transcriptionState,\n getResourceLoaded: (state) => state.resourceLoaded,\n getNoteTemplateSections: (state) => state.noteTemplateSections || [],\n getNoteTemplateDraft: (state) => state.noteTemplateDraft,\n getUpcomingGoogleCalendarEvents: (state) => state.upcomingGoogleCalendarEvents || [],\n getTeamSubscription: (state): Subscription => state.teamSubscription,\n getAvailablePlans: (state): Plan[] => state.availablePlans,\n getSubGroupByEnabled:\n (state, getters) =>\n (boardId = getters.currentBoardId) =>\n state.subGroupByEnabled[boardId] || false,\n getWorkspaceSectionExpanded: (state): boolean => state.workspaceSectionExpanded,\n};\n\nexport default getters;\n","import { BoardState } from '@/types';\nimport { nanoid } from 'nanoid';\nimport { browserStorageGetItem } from '@/utilities/browser-storage.util';\nimport {\n localBoardLayoutKey,\n cardsSubGroupByOrderKey,\n boardSubGroupByKey,\n} from '@/utilities/localDrafts';\nimport { BoardLayout } from '@superthread-com/api';\nimport constants from '@/utilities/constants';\nimport isMobile from '@/utilities/isMobile';\n\nconst getDefaultBoardState = (): BoardState => ({\n lists: {},\n boardsListsIds: {},\n projectBoards: {},\n flatBoards: {},\n currentBoardId: '',\n newBoardProjectId: '',\n draftCard: {},\n listDraftCardCreateView: null,\n listsDraftCard: {},\n draggedEntity: {},\n dropTargetId: '',\n expandedBoardIds: {},\n loadingBoards: false,\n boardViewNoDestroy: false,\n draftListInputVisibleOnOpen: false,\n boardListView: 'list',\n currentTagForEdit: {},\n cardSidebarExpanded: {},\n showImageUploadPopup: false,\n currentCardIdActionEdit: '',\n currentListIdActionEdit: '',\n cardsLayout:\n browserStorageGetItem(localBoardLayoutKey(browserStorageGetItem('currentTeamId') || '')) || {},\n cardsLayoutOptions: [\n {\n value: BoardLayout.Board,\n label: 'cardsLayoutBoard',\n icon: 'board',\n default: true,\n },\n {\n value: BoardLayout.List,\n label: 'cardsLayoutList',\n icon: 'list',\n },\n {\n value: BoardLayout.Timeline,\n label: 'cardsLayoutTimeline',\n icon: 'timeline',\n },\n {\n value: BoardLayout.Calendar,\n label: 'cardsLayoutCalendar',\n icon: 'calendar',\n },\n ],\n removedListMeta: { position: '', boardId: '', listId: '' },\n removedCardMeta: {\n position: '',\n boardId: '',\n cardId: '',\n listId: '',\n },\n attachments: {},\n cardFailedAttachments: [],\n cardAutoFocus: false,\n previewPopoverKey: false,\n attachmentTargetCardId: -1,\n cardAttachmentsLoaded: false,\n archivedBoards: [],\n archivedLists: [],\n archivedCards: [],\n newBoardTitle: '',\n currentCardIdMemberDropdown: '',\n currentCardMembersDropdown: {},\n currentCardIdForPopup: '',\n projectPreviewBoards: {},\n displayProjectPreviewBoards: false,\n previewProject: {},\n cardAttachmentUploadingId: -1,\n showDuplicateCardPopup: '',\n showSetParentCardPopup: '',\n checklistTitle: '',\n draggingEnd: false,\n cards: {},\n listCards: {},\n currentCardId: '',\n displayedCards: [],\n currentCardLayout: isMobile()\n ? constants.modal\n : (localStorage.getItem('cardLayout') ?? constants.modal),\n linkedCardType: '',\n collapsedChecklistIds: [],\n hiddenItemsChecklistIds: [],\n boardsFilters: localStorage.getItem(`boardsFilters-${localStorage.getItem('currentTeamId')}`)\n ? JSON.parse(\n localStorage.getItem(`boardsFilters-${localStorage.getItem('currentTeamId')}`) ?? ''\n )\n : {},\n boardsPills: {},\n tags: {},\n projectTags: {},\n boardViewMouseSuspended: false,\n workspaceTags: {},\n cardCommentAttachmentUploadPopup: {},\n cardDescriptionAttachmentUploadPopup: {},\n lastOpenedBoardId: '',\n lastHoveredListId: '',\n lastHoveredCardId: '',\n lastHoveredDisplayedCardId: '',\n selectedCardId: '',\n checklistInputActive: {},\n checklistItemInputActive: {},\n reportInfoData: {},\n timelineZoom: 'quarter',\n timelineSidebarWidth: 350,\n cardTemplates: {},\n cardTemplateDraft: {\n title: '',\n icon: {},\n project_ids: [],\n card_title: '',\n card_content: '',\n card_board_id: '',\n card_list_id: '',\n card_members: [],\n card_tags: [],\n card_priority: 0,\n card_child_cards: [],\n },\n cardsSchema: 0,\n quickCardFilesToUpdate: [],\n cardIdForMove: '',\n quickCardObject: {\n localId: nanoid(6),\n title: '',\n content: '',\n tags: [],\n attachments: [],\n members: [],\n parentCard: {},\n projectId: '',\n priority: 0,\n board: {},\n listId: '',\n hints: [],\n childCards: [],\n },\n quickChildCardFilesToUpdate: [],\n quickChildCardObject: {\n localId: nanoid(6),\n title: '',\n content: '',\n tags: [],\n attachments: [],\n members: [],\n parentCard: {},\n projectId: '',\n priority: 0,\n board: {},\n listId: '',\n hints: [],\n childCards: [],\n },\n childCardCreation: false,\n cardInEpicCreation: '',\n cardInNoteCreation: '',\n boardSortByOptions: [\n {\n value: 'manual',\n label: 'manualOrder',\n icon: 'cursor',\n default: true,\n },\n {\n value: 'time_created',\n label: 'lastCreated',\n icon: 'calendar-created',\n viewDefault: true,\n inEpicBoardDefault: true,\n },\n {\n value: 'due_date',\n label: 'earliestDueDate',\n icon: 'calendar',\n },\n {\n value: 'time_updated',\n label: 'lastUpdated',\n icon: 'edit-outline',\n },\n {\n value: 'priority',\n label: 'highestPriority',\n icon: 'chevrons-up',\n },\n {\n value: 'estimate',\n label: 'largestEstimate',\n icon: 'clock',\n },\n {\n value: 'status',\n label: 'status',\n icon: 'play-circle',\n },\n ],\n boardSortBy: localStorage.getItem(`boardSortBy-${localStorage.getItem('currentTeamId')}`)\n ? JSON.parse(localStorage.getItem(`boardSortBy-${localStorage.getItem('currentTeamId')}`) ?? '')\n : {},\n priorityDropdown: false,\n showCardPriorityPopup: false,\n\n boardGroupByOptions: [\n {\n value: 'status',\n label: 'status',\n icon: 'play-circle',\n default: true,\n },\n {\n value: 'statusType',\n label: 'statusType',\n icon: 'play-circle',\n inEpicBoardDefault: true,\n },\n {\n value: 'assignee',\n label: 'assignee',\n icon: 'user',\n },\n {\n value: 'tag',\n label: 'tag',\n icon: 'tag',\n },\n {\n value: 'priority',\n label: 'priority',\n icon: 'chevrons-up',\n },\n {\n value: 'space',\n label: 'space',\n icon: 'folder',\n },\n {\n value: 'none',\n label: 'none',\n icon: 'x',\n },\n {\n value: 'epic',\n label: 'epic',\n icon: 'map',\n },\n ],\n boardGroupBy: localStorage.getItem(`boardGroupBy-${localStorage.getItem('currentTeamId')}`)\n ? JSON.parse(\n localStorage.getItem(`boardGroupBy-${localStorage.getItem('currentTeamId')}`) ?? ''\n )\n : {},\n boardListGroupByOrder: localStorage.getItem(\n `groupByOrder-${localStorage.getItem('currentTeamId')}`\n )\n ? JSON.parse(\n localStorage.getItem(`groupByOrder-${localStorage.getItem('currentTeamId')}`) ?? ''\n )\n : {},\n listCardsGroupByOrder: localStorage.getItem(\n `listCardsGroupByOrder-${localStorage.getItem('currentTeamId')}`\n )\n ? JSON.parse(\n localStorage.getItem(`listCardsGroupByOrder-${localStorage.getItem('currentTeamId')}`) ?? ''\n )\n : {},\n cardWidth: 600,\n showSuggestionsPlaceholder: false,\n qcShowSuggestionsPlaceholder: false,\n currentGroupByListIdCardActionEdit: '',\n currentCardUniqueRowId: '',\n newBoardObject: {},\n sprintSettings: {},\n spaceSprints: {},\n sprintLists: {},\n sprintForEditId: {},\n epicSelectedTabId: {},\n cardsFuse: {},\n cardsSubGroupByOrder:\n browserStorageGetItem(cardsSubGroupByOrderKey(browserStorageGetItem('currentTeamId') || '')) ||\n {},\n boardSubGroupBy:\n browserStorageGetItem(boardSubGroupByKey(browserStorageGetItem('currentTeamId') || '')) || {},\n listsExpanded: {},\n});\n\nexport default getDefaultBoardState;\n","/**\n * Boards module getters\n * @packageDocumentation\n * @category Store\n */\nimport { GetterTree } from 'vuex';\nimport { BoardState as State, Board, CardsLayoutOption } from '@/types';\nimport { SuggestionType } from '@/types/suggestions';\nimport { CardHint, Card } from '@superthread-com/api';\nimport { IEpic } from '@/types/epics';\nimport { ResourceType } from '@/types/resources';\nimport { DisplayedCard } from '@/types/displayedCard';\nimport constants from '@/utilities/constants';\nimport { EpicTabId } from '@/types/tabs';\n\nexport default {\n /** Returns currently opened board. */\n currentBoard: (state, getters): Board | {} => state.flatBoards[getters.currentBoardId] || {},\n /** Returns currently opened board id */\n currentBoardId: (state): string => state.currentBoardId,\n /** Returns the list of added boards. */\n lists: (state) => state.lists,\n /** Returns the list of board ids for specific projectId. */\n getProjectBoards: (state) => (projectId: string | number) => state.projectBoards[projectId] || [],\n\n getFlatBoards: (state) => state.flatBoards,\n\n boardsListsIds: (state) => state.boardsListsIds,\n\n /** Returns the id of project in which board is being added. */\n getNewBoardProjectId: (state): string | undefined => state.newBoardProjectId,\n getCardById:\n (state): any =>\n (cardId: string) =>\n state.cards[cardId] ?? {},\n getBoardById:\n (state): any =>\n (boardId: string = state.currentBoardId) =>\n state.flatBoards[boardId] ?? {},\n getViewById:\n (state): any =>\n (viewId: string = state.selectedView) =>\n [...(state.privateViews || []), ...(state.publicviews || [])].find((v) => v.id == viewId) ??\n {},\n\n /** Returns id of the list in which card is creating. */\n getListDraftCardCreateView: (state): string | null | undefined => state.listDraftCardCreateView,\n /** Returns a data of dragged entity. */\n draggedEntity: (state): any => state.draggedEntity,\n /** Returns id of element in in which dragging was finished. */\n dropTargetId: (state): string | undefined => state.dropTargetId,\n /** Returns the board that is expanded in the list of boards. */\n boardExpanded:\n (state): any =>\n (boardId: string) =>\n state.expandedBoardIds[boardId],\n /** Returns the flag that indicates whether boards are loading. */\n loadingBoards: (state): boolean => state.loadingBoards,\n /** Returns the flag that indicates when the board's data is needed to be removed. */\n boardViewNoDestroy: (state): boolean => state.boardViewNoDestroy,\n /** Returns the flag for opening list's input when there aren't any list on the board. */\n draftListInputVisibleOnOpen: (state): boolean => state.draftListInputVisibleOnOpen,\n /** Returns current board list view type (list or grid) */\n getBoardListView: (state): string | undefined => state.boardListView,\n /** Returns object of the tag that needs to be edited */\n getCurrentTagForEdit: (state): any => state.currentTagForEdit,\n /** Returns the flag that indicates is popup for uplading image opened */\n getShowImageUploadPopup: (state): boolean => state.showImageUploadPopup,\n /** Returns id of card which have opened dropdown for edit card. */\n getCurrentCardIdActionEdit: (state): string => state.currentCardIdActionEdit,\n /** Returns id of list which have opened dropdown for edit list. */\n getCurrentListIdActionEdit: (state): string | null => state.currentListIdActionEdit,\n /** Returns current board view type (list or grid) */\n cardsLayout:\n (state, getters) =>\n (boardId: string = getters.currentBoardId) => {\n let layout = state.cardsLayout[boardId] || state.flatBoards[boardId]?.layout || '';\n if (!layout) {\n const { value } = getters.cardsLayoutOptions.find(\n (option: CardsLayoutOption) => option.default\n );\n layout = value;\n }\n return layout;\n },\n getCardsLayoutForBoard:\n (state): any =>\n (boardId: string) =>\n state.cardsLayout[boardId] || state.flatBoards[boardId]?.layout || 'board',\n getLocalBoardLayoutForBoard: (state) => (boardId: string) => state.cardsLayout[boardId],\n cardsLayoutOptions: (state): CardsLayoutOption[] => state.cardsLayoutOptions,\n getCurrentCardActionEdit: (state): any => state.cards[state.currentCardIdActionEdit] || {},\n currentCardForPopup: (state): any => state.cards[state.currentCardIdForPopup] || {},\n /** Returns object conaining the meta of removed board list */\n removedListMeta: (state) => state.removedListMeta,\n /** Returns object conaining the meta of removed card */\n removedCardMeta: (state) => state.removedCardMeta,\n getAttachments: (state) => (id: number, prefix: string) =>\n state.attachments[`${prefix}-${id}`] || [],\n /** Returns whether any of attachments is still uploading */\n getAreAttachmentsUploading: (state) => {\n const { attachments } = state;\n return Object.keys(attachments).some((key) =>\n attachments[key].some((a: any) => a.uploadProgress)\n );\n },\n getCardAutoFocus: (state): boolean => state.cardAutoFocus,\n getPreviewPopoverKey: (state): boolean => state.previewPopoverKey,\n getAttachmentTargetCardId: (state) => state.attachmentTargetCardId,\n getCardAttachmentsLoaded: (state): boolean => state.cardAttachmentsLoaded,\n archivedBoards: (state) => state.archivedBoards,\n archivedLists: (state) => state.archivedLists,\n archivedCards: (state) => state.archivedCards,\n getNewBoardTitle: (state) => state.newBoardTitle,\n getCurrentCardIdMemberDropdown: (state): string => state.currentCardIdMemberDropdown,\n currentCardIdForPopup: (state): string => state.currentCardIdForPopup,\n getCurrentCardMembersDropdown: (state): any => state.currentCardMembersDropdown,\n previewProject: (state) => state.previewProject,\n getLinkedCardType: (state): string => state.linkedCardType,\n getReportInfoData: (state) => state.reportInfoData,\n projectPreviewBoards: (state) => state.projectPreviewBoards,\n displayProjectPreviewBoards: (state) => state.displayProjectPreviewBoards,\n getCardAttachmentUploadingId: (state) => state.cardAttachmentUploadingId,\n getTimeperoidOptions: (state) => state.timeperiodOptions,\n getShowDuplicateCardPopup: (state): string => state.showDuplicateCardPopup,\n getShowSetParentCardPopup: (state): string => state.showSetParentCardPopup,\n /** Returns the flag that indicates is card dragging just finished */\n getDraggingEnd: (state): boolean => state.draggingEnd,\n getListCards: (state) => state.listCards,\n getCards: (state) => state.cards,\n cardsFuse: (state) => state.cardsFuse,\n /** Filters epics out of cards on state. */\n getEpics: (state) => {\n const epics: { [key: string]: IEpic } = {};\n for (const c of Object.values(state.cards as Card[] | IEpic[])) {\n if (c.type === ResourceType.Epic) {\n epics[c.id] = c;\n }\n }\n return epics;\n },\n getDisplayedCards: (state) => state.displayedCards,\n getIsCardDisplayed: (state) => (cardId: string) =>\n state.displayedCards.some((c) => c.id === cardId),\n getIsAnyCardDisplayed: (state) => state.displayedCards.length > 0,\n getLayoutOfDisplayedCard: (state) => (cardId: string) =>\n state.displayedCards.find((card: DisplayedCard) => card.id === cardId)?.layout ||\n state.currentCardLayout,\n getIsAnyCardDisplayedInLayout: (state) => (layout: string) =>\n state.displayedCards.some((card: DisplayedCard) => card.layout === layout),\n getCommentActivityFilterOfDisplayedCard: (state, globalGetters) => (cardId: string) =>\n state.displayedCards.find((card: DisplayedCard) => card.id === cardId)\n ?.comment_activity_filter || globalGetters.getCardCommentActivityFilter,\n getCommentActivityOrderOfDisplayedCard: (state, globalGetters) => (cardId: string) =>\n state.displayedCards.find((card: DisplayedCard) => card.id === cardId)\n ?.comment_activity_order || globalGetters.getCommentsOrder,\n getDisplayedCardListCards: (state) => (cardId: string) =>\n state.displayedCards.find((card: DisplayedCard) => card.id === cardId)?.list_cards || [],\n /** Returns the list of checklist ids that have collapsed state active */\n getCollapsedChecklistIds: (state) => state.collapsedChecklistIds,\n /** Returns the list of checklist ids that have checklist items hidden */\n getHiddenItemsChecklistIds: (state) => state.hiddenItemsChecklistIds,\n boardsFilters: (state) => state.boardsFilters,\n boardFilters: (state) => (boardId: number) => state.boardsFilters[boardId],\n boardsPills: (state) => (boardId: number) => state.boardsPills[boardId] || [],\n getTags: (state) => state.tags,\n /** Returns the list of tag ids for specific projectId. */\n getProjectTags: (state) => (projectId: string | number) => state.projectTags[projectId] || [],\n /** Returns the list of tag ids for specific teamId. */\n getWorkspaceTags: (state) => (teamId: string | number) => state.workspaceTags[teamId] || [],\n /** Returns the object of project tags. */\n projectTags: (state) => state.projectTags || [],\n getCardCommentAttachmentUploadPopup: (state): object => state.cardCommentAttachmentUploadPopup,\n getCardDescriptionAttachmentUploadPopup: (state): object =>\n state.cardDescriptionAttachmentUploadPopup,\n lastHoveredListId: (state) => state.lastHoveredListId,\n lastHoveredCardId: (state) => state.lastHoveredCardId,\n lastHoveredDisplayedCardId: (state) => state.lastHoveredDisplayedCardId,\n boardViewMouseSuspended: (state) => state.boardViewMouseSuspended,\n selectedCardId: (state) => state.selectedCardId,\n lastOpenedBoardId: (state): string => state.lastOpenedBoardId,\n /** Returns the flag for checking if checklist or checklist item input is active. */\n getChecklistInputActive: (state) => (checklistId: string) =>\n state.checklistInputActive[checklistId] || false,\n getChecklistsInputActive: (state) => state.checklistInputActive,\n getChecklistItemInputActive: (state) => (checklistItemId: string) =>\n state.checklistItemInputActive[checklistItemId] || false,\n getChecklistItemsInputActive: (state) => state.checklistItemInputActive,\n getTimelineZoom: (state) => state.timelineZoom,\n getTimelineSidebarWidth: (state) => state.timelineSidebarWidth,\n getCardWidth: (state) => state.cardWidth,\n cardsSchema: (state) => state.cardsSchema,\n getCardIdForMove: (state) => state.cardIdForMove,\n // Quick card\n getQuickCardFilesToUpdate: (state) => state.quickCardFilesToUpdate,\n getMembersToAddQuickCard: (state) => state.quickCardObject.members,\n getQuickCardProjectId: (state) => state.quickCardObject.projectId,\n getQuickCard: (state) => state.quickCardObject,\n // Quick child card embed\n getQuickChildCardFilesToUpdate: (state) => state.quickChildCardFilesToUpdate,\n getMembersToAddQuickChildCard: (state) => state.quickChildCardObject.members,\n getQuickChildCardProjectId: (state) => state.quickChildCardObject.projectId,\n getQuickChildCard: (state) => state.quickChildCardObject,\n getChildCardCreation: (state) => state.childCardCreation,\n getCardInEpicCreation: (state) => state.cardInEpicCreation,\n getCardInNoteCreation: (state) => state.cardInNoteCreation,\n getCardSliderActive: (state) => state.cardSliderActive,\n getBoardSortBy:\n (state, getters) =>\n (boardId = getters.currentBoardId): string => {\n let sortBy = `${state.boardSortBy[boardId] || ''}`;\n const isInEpicBoard = boardId.startsWith(constants.inEpicBoardIdPrefix);\n\n if (!sortBy) {\n const { value } = getters.boardSortByOptions.find((option: CardsLayoutOption) =>\n isInEpicBoard ? option.inEpicBoardDefault : option.default\n );\n sortBy = value;\n }\n\n return sortBy;\n },\n boardSortByOptions: (state): CardsLayoutOption[] => state.boardSortByOptions,\n getShowPriorityDropdown: (state): boolean => state.priorityDropdown,\n getShowCardPriorityPopup: (state): boolean => state.showCardPriorityPopup,\n getBoardGroupBy:\n (state, getters) =>\n (boardId = getters.currentBoardId): string => {\n let groupBy = `${state.boardGroupBy[boardId] || ''}`;\n const isInEpicBoard = boardId.startsWith(constants.inEpicBoardIdPrefix);\n\n if (!groupBy) {\n const { value } = getters.boardGroupByOptions.find((option: CardsLayoutOption) =>\n isInEpicBoard ? option.inEpicBoardDefault : option.default\n );\n groupBy = value;\n }\n\n return groupBy;\n },\n boardGroupByOptions: (state): CardsLayoutOption[] => state.boardGroupByOptions,\n getCardsByCurrentBoardId:\n (state, getters) =>\n (boardId = getters.currentBoardId) =>\n Object.values(state.cards).filter((c: any) => c.board_id === boardId) || [],\n /** Gets all the cards that are added to epic. */\n getCardsByEpicId: (state) => (epicId: string) => {\n const cards: Record = {};\n for (const key in state.cards) {\n if (state.cards[key].epic?.id === epicId) {\n cards[key] = state.cards[key];\n }\n }\n return cards;\n },\n getCardsByCurrentSprintId:\n (state, getters) =>\n (boardId = getters.currentBoardId) =>\n Object.values(state.cards).filter((c: any) => c.sprint_id === boardId) || [],\n boardsCardsIds: (state) => {\n const boardsCardsIds: Record = {};\n for (const [boardId, listIds] of Object.entries(state.boardsListsIds)) {\n const cards: string[] = [];\n for (const listId of listIds) {\n const listCards = state.listCards[listId];\n if (listCards) {\n cards.push(...listCards);\n }\n }\n boardsCardsIds[boardId] = cards;\n }\n return boardsCardsIds;\n },\n getBoardsCardsIdsByBoardId:\n (state, getters) =>\n (boardId: string = getters.currentBoardId): string[] => {\n return getters.boardsCardsIds[boardId] || [];\n },\n getBoardListGroupByOrder: (state) => (boardId: string) => state.boardListGroupByOrder[boardId],\n getListCardsGroupByOrder: (state) => (listId: string) => state.listCardsGroupByOrder[listId],\n getCurrentGroupByListIdCardActionEdit: (state): string =>\n state.currentGroupByListIdCardActionEdit,\n getCurrentCardUniqueRowId: (state): string => state.currentCardUniqueRowId,\n getCardTemplates: (state) => state.cardTemplates,\n getCardTemplateDraft: (state) => state.cardTemplateDraft,\n getCardTemplateChildCards: (state) => state.cardTemplateDraft.card_child_cards,\n getQCChildCards: (state) => state.quickCardObject.childCards,\n getSuggestions: (state) => (cardId: string) => state.cards[cardId]?.hints || [],\n getQCSuggestions: (state) => state.quickCardObject?.hints || [],\n getTagSuggestions: (state) => (cardId: string) =>\n state.cards[cardId]?.hints?.filter(({ type }: CardHint) => type === SuggestionType.tag) || [],\n getQCTagSuggestions: (state) =>\n state.quickCardObject?.hints?.filter(({ type }: CardHint) => type === SuggestionType.tag) || [],\n getDuplicateSuggestions: (state) => (cardId: string) =>\n state.cards[cardId]?.hints?.filter(({ type }: CardHint) => type === SuggestionType.relation) ||\n [],\n getQCDuplicateSuggestions: (state) =>\n state.quickCardObject?.hints?.filter(\n ({ type }: CardHint) => type === SuggestionType.relation\n ) || [],\n getShowSuggestionsPlaceholder: (state) => state.showSuggestionsPlaceholder,\n getQCShowSuggestionsPlaceholder: (state) => state.qcShowSuggestionsPlaceholder,\n getNewBoardObject: (state) => state.newBoardObject,\n getSprintSettings: (state) => (projectId: string) => state.sprintSettings[projectId] || {},\n getSpaceSprints: (state) => (projectId: string | number) => state.spaceSprints[projectId] || {},\n getSprints: (state) => state.spaceSprints,\n getSprintLists: (state) => (listId: string | number) => state.sprintLists[listId] || [],\n getSprintForEditId: (state) => state.sprintForEditId,\n getEpicSelectedTabId: (state) => (cardId: string) =>\n state.epicSelectedTabId[cardId] || EpicTabId.Details,\n\n getBoardSubGroupBy:\n (state, getters) =>\n (boardId = getters.currentBoardId): string => {\n let subGroupBy = `${state.boardSubGroupBy[boardId] || ''}`;\n const isInEpicBoard = boardId.startsWith(constants.inEpicBoardIdPrefix);\n\n if (!subGroupBy) {\n const option = getters.boardGroupByOptions.find((option: CardsLayoutOption) =>\n isInEpicBoard ? option.inEpicBoardDefault : option.default\n );\n const value = option ? option.value : 'status';\n subGroupBy = value;\n }\n\n return subGroupBy;\n },\n\n getSubGroupByListOrder: (state) => (key: string, subGroup: string) => {\n return Object.keys(state.cardsSubGroupByOrder[key]?.[subGroup] || {});\n },\n\n getSubGroupByListCards: (state) => (key: string, subGroup: string, listId: string) => {\n return state.cardsSubGroupByOrder[key]?.[subGroup]?.[listId]?.cardIds || [];\n },\n\n getSubGroupByBoardId: (state) => (boardId: string, groupBy: string, subGroupBy: string) => {\n return state.cardsSubGroupByOrder[boardId]?.[groupBy]?.[subGroupBy] || {};\n },\n\n getListExpanded: (state) => (boardId: string, listId: string) => {\n return state.listsExpanded[boardId]?.[listId] ?? true;\n },\n} as GetterTree;\n","import { decodeJwt } from 'jose';\n\nexport const decodeToken = (token) => {\n try {\n const decodedToken = decodeJwt(token);\n return decodedToken;\n } catch (error) {\n return null;\n }\n};\n\nexport const isExpired = (exp) => {\n const expirationDate = new Date(exp * 1000);\n const currentDate = new Date();\n return expirationDate < currentDate;\n};\n\nexport const isTokenExpired = (token) => {\n const decodedToken = decodeToken(token);\n if (!decodedToken) return true;\n return isExpired(decodedToken.exp);\n};\n","export const getQuickCardObjectName = (isModal: boolean) =>\n isModal ? 'quickCardObject' : 'quickChildCardObject';\n\nexport const getQuickCardFilesToUpdateName = (isModal: boolean) =>\n isModal ? 'quickCardFilesToUpdate' : 'quickChildCardFilesToUpdate';\n","export const getDefaultChildCardDraftObject = (isModal) => ({\n title: '',\n content: '',\n board_id: '',\n list_id: '',\n members: [],\n tags: [],\n priority: 0,\n});\n\nexport const convertChildCardDraftToChildCard = (childCardDraft) => {\n const { title, content, boardId, board_id, board, listId, list_id, members, tags, priority } =\n childCardDraft || {};\n const boardIdValue = board?.id || boardId || board_id;\n const listIdValue = listId || list_id;\n\n const childCard = {\n ...getDefaultChildCardDraftObject(),\n ...(title && { title }),\n ...(content && { content }),\n ...(boardIdValue && { board_id: boardIdValue }),\n ...(listIdValue && { list_id: listIdValue }),\n ...(members && { members: members.map((member) => ({ user_id: member.user_id })) }),\n ...(tags && { tags: [{ ids: tags.map((tag) => tag.id) }] }),\n ...(priority && { priority }),\n };\n\n return childCard;\n};\n","/**\n * Board module mutations\n * @packageDocumentation\n * @category Store\n */\nimport { MutationTree } from 'vuex';\nimport { BoardState as State } from '@/types';\nimport getDefaultBoardState from './getDefaultBoardState';\nimport { isTokenExpired } from '@/utilities/jwtUtilities';\nimport {\n getQuickCardObjectName,\n getQuickCardFilesToUpdateName,\n} from '@/utilities/getQuickCardObjectName';\nimport { convertChildCardDraftToChildCard } from '@/utilities/childCardDraft';\nimport { nanoid } from 'nanoid';\nimport { DisplayedCard } from '@/types/displayedCard';\nimport constants from '@/utilities/constants';\nimport { EpicTabId } from '@/types/tabs';\nimport { ResourceType } from '@/types/resources';\nimport { getSprintKey } from '@/utilities/sprintKeys';\nimport { groupByOption } from '@/types/groupByOption';\nimport { toRaw } from 'vue';\nimport Fuse from 'fuse.js';\nimport { browserStorageSetItem, browserStorageGetItem } from '@/utilities/browser-storage.util';\nimport {\n listsExpandedKey,\n cardsSubGroupByOrderKey,\n boardSubGroupByKey,\n} from '@/utilities/localDrafts';\n\nconst setCardsFuse = (state: State) => {\n state.cardsFuse = new Fuse(Object.values(state.cards), {\n keys: ['title', 'board_id'],\n threshold: 0.1,\n ignoreLocation: true,\n });\n};\n\nconst mutations: MutationTree = {\n setCurrentBoardId(state, boardId = '') {\n state.currentBoardId = boardId;\n if (boardId !== '') state.lastOpenedBoardId = boardId;\n },\n\n setBoardListsFlat(state, lists = []) {\n lists?.forEach((l: any) => {\n if (l) state.lists[l.id] = l;\n });\n },\n\n addBoardListId(state, { boardId, listId, position }) {\n if (!state.boardsListsIds[boardId]) {\n state.boardsListsIds[boardId] = [listId];\n return;\n }\n if (position != null) {\n state.boardsListsIds[boardId].splice(position, 0, listId);\n return;\n }\n state.boardsListsIds[boardId].push(listId);\n },\n\n replaceBoardListId(state, { boardId, localId, listId }) {\n const index = state.boardsListsIds[boardId].indexOf(localId);\n state.boardsListsIds[boardId].splice(index, 1, listId);\n },\n\n moveBoardListId(state, { boardId, listId, newIndex, oldIndex }) {\n if (state.boardsListsIds[boardId]) {\n state.boardsListsIds[boardId].splice(oldIndex, 1);\n state.boardsListsIds[boardId].splice(newIndex, 0, listId);\n }\n },\n\n removeBoardListId(state, { boardId, id }) {\n const index = state.boardsListsIds[boardId].indexOf(id);\n state.boardsListsIds[boardId].splice(index, 1);\n },\n\n removeBoardList(state, listId) {\n delete state.lists[listId];\n },\n\n removeMultipleBoardLists(state, listIds) {\n listIds.forEach((listId: any) => {\n delete state.lists[listId];\n });\n },\n\n addBoardInBoards(state, board) {\n if (state.projectBoards[board.project_id]) {\n state.projectBoards[board.project_id].push(board.id);\n }\n state.flatBoards[board.id] = board;\n },\n\n removeBoardFromProjectBoards(state, board) {\n const projectBoards = state.projectBoards || {};\n const boardArray = projectBoards[board.project_id] || [];\n const boardIndex = boardArray.indexOf(board.id);\n if (boardIndex > -1) {\n projectBoards[board.project_id].splice(boardIndex, 1);\n }\n state.projectBoards = projectBoards;\n },\n\n setBoardsListsIds(state, boards) {\n boards.forEach((b: any) => {\n state.boardsListsIds[b.id] = b.list_order || [];\n });\n },\n\n setSprintsListsIds(state, { sprintId, list, projectId }) {\n // set sprint lists ids with board list ids together\n state.boardsListsIds[getSprintKey(projectId, sprintId)] = list;\n },\n\n setReportInfoData(state, { boardId, report }) {\n state.reportInfoData[boardId] = report;\n },\n\n setNewBoardProjectId(state, name) {\n state.newBoardProjectId = name;\n },\n\n setListDraftCardCreateView(state, listId) {\n state.listDraftCardCreateView = listId;\n },\n\n setRemovedBoardListPosition(state, { position, boardId, listId }) {\n state.removedListMeta = { position, boardId, listId };\n },\n\n setRemovedCardPosition(state, { position, cardId, boardId, listId }) {\n state.removedCardMeta = {\n position,\n cardId,\n boardId,\n listId,\n };\n },\n\n setTimeperoidOptions(state, value) {\n state.timeperiodOptions = value;\n },\n\n setDraggedEntity(state, payload) {\n state.draggedEntity = payload;\n },\n setDropTargetId(state, payload) {\n state.dropTargetId = payload;\n },\n\n toggleBoardQuickView(state, { boardId, value }) {\n state.expandedBoardIds[boardId] = value;\n },\n\n toggleProjectBoards(state, { value, projectId }) {\n const { projectBoards, expandedBoardIds } = state;\n const boards = projectBoards[projectId] || [];\n if (boards.length === 0) return;\n const newExpandedBoardIds = { ...expandedBoardIds };\n boards.forEach((boardId: any) => {\n if (!expandedBoardIds[boardId]) return;\n newExpandedBoardIds[boardId] = value;\n });\n state.expandedBoardIds = newExpandedBoardIds;\n },\n toggleBoardsInRow(state, { boardId, value, projectId }) {\n const { projectBoards, expandedBoardIds } = state;\n const boards = projectBoards[projectId] || [];\n if (boards.length === 0) return;\n\n const boardIndex = boards.findIndex((board: any) => board === boardId);\n if (boardIndex === -1) return;\n\n const otherBoardIndex = boardIndex % 2 === 0 ? boardIndex + 1 : boardIndex - 1;\n if (otherBoardIndex >= boards.length) return;\n\n const newExpandedBoardIds = { ...expandedBoardIds };\n const otherBoardId = boards[otherBoardIndex];\n\n newExpandedBoardIds[boardId] = value;\n newExpandedBoardIds[otherBoardId] = value;\n state.expandedBoardIds = newExpandedBoardIds;\n },\n\n loadingBoards(state, payload = false) {\n state.loadingBoards = payload;\n },\n\n setBoardListProp(state, { listId, propertyName, value }) {\n if (!state.lists[listId]) return;\n state.lists[listId][propertyName] = value;\n },\n\n setBoardViewNoDestroy(state, payload = false) {\n state.boardViewNoDestroy = payload;\n },\n\n setDraftListInputVisibleOnOpen(state, payload = false) {\n state.draftListInputVisibleOnOpen = payload;\n },\n\n localAddMemberToBoard(state, { memberToAdd, boardId }) {\n const board = state.flatBoards[boardId];\n\n if (board) {\n const members = [...board.members, memberToAdd];\n state.flatBoards[boardId].members = members;\n }\n },\n\n localRemoveMemberFromBoard(state, { memberToRemove, boardId }) {\n const board = state.flatBoards[boardId];\n\n if (board) {\n const members = [...board.members.filter((m: any) => m.user_id !== memberToRemove.user_id)];\n state.flatBoards[boardId].members = members;\n }\n },\n\n localAddMemberToCard(state, { cardId, memberToAdd }) {\n // add memeber to card if listCards object is not empty(if board view is opened)\n if (state.cards[cardId]) {\n const { members } = state.cards[cardId];\n const newMembers = [...(members || [])];\n if (members) {\n const alradyMember = members.find((m: any) => m.user_id === memberToAdd.user_id);\n if (alradyMember) return;\n newMembers.push(memberToAdd);\n state.cards[cardId].members = newMembers;\n }\n }\n },\n\n localRemoveMemberFromCardBoardView(state, { cardId, memberId }) {\n if (state.cards[cardId]) {\n const { members } = state.cards[cardId];\n const memberIndex = members.findIndex((m: any) => m.user_id === memberId);\n const newMembers = [...members];\n if (memberIndex > -1) {\n newMembers.splice(memberIndex, 1);\n state.cards[cardId].members = newMembers;\n }\n }\n },\n\n setBoardListView(state, value) {\n state.boardListView = value;\n },\n\n setCurrentTagForEdit(state, tagForEdit) {\n state.currentTagForEdit = tagForEdit;\n },\n\n localAddTagToCard(state, { cardId, tag }) {\n if (state.cards[cardId]) {\n if (!state.cards[cardId].tags) state.cards[cardId].tags = [];\n const alradyTag = state.cards[cardId].tags.find((t: any) => t.id === tag.id);\n if (alradyTag) return;\n state.cards[cardId].tags.push(tag);\n }\n },\n updateLocalCardTag(state, { cardId, tagId, tag }) {\n if (state.cards[cardId]) {\n const newCardTags = [...state.cards[cardId].tags];\n const listCardTagIndex = newCardTags.findIndex((t: any) => t.id === tagId);\n if (listCardTagIndex !== -1) {\n newCardTags.splice(listCardTagIndex, 1, tag);\n state.cards[cardId].tags = newCardTags;\n }\n }\n },\n localAddTagToBoard(state, { boardId, tag }) {\n if (state.flatBoards[boardId]) {\n const board = state.flatBoards[boardId];\n\n if (!board.tags) {\n state.flatBoards[boardId].tags = [];\n }\n\n board.tags.push(tag);\n }\n },\n localDeleteTagFromCard(state, { cardId, tagId }) {\n if (state.cards[cardId]) {\n if (state.cards[cardId].tags) {\n const tags = [...state.cards[cardId].tags];\n const tagIndex = tags.findIndex((t: any) => t.id === tagId);\n if (tagIndex > -1) {\n tags.splice(tagIndex, 1);\n state.cards[cardId].tags = tags;\n }\n }\n }\n },\n localDeleteTagFromCards(state, { tagId }) {\n Object.keys(state.cards).forEach((cardId: any) => {\n if (state.cards[cardId].tags) {\n const tags = [...state.cards[cardId].tags];\n const tagIndex = tags.findIndex((t: any) => t.id === tagId);\n if (tagIndex > -1) {\n tags.splice(tagIndex, 1);\n state.cards[cardId].tags = tags;\n }\n }\n });\n },\n setLinkedCardType(state, value) {\n state.linkedCardType = value;\n },\n setShowImageUploadPopup(state, value) {\n state.showImageUploadPopup = value;\n },\n setCurrentCardIdForActionEdit(state, cardId) {\n state.currentCardIdActionEdit = cardId;\n },\n setCurrentListIdForActionEdit(state, listId) {\n state.currentListIdActionEdit = listId;\n },\n setCardsLayout(state, { boardId, value }) {\n state.cardsLayout[boardId] = value;\n },\n replaceLocalChildCardIdInParentCard(state, { parentCardId, localId, newId }) {\n const parentCard = state.cards[parentCardId];\n if (!parentCard) return;\n\n // update card in parents child card order\n const childCardOrder = [...(parentCard.child_card_order || [])];\n const childCardOrderIndex = childCardOrder.findIndex((i: any) => i === localId);\n\n if (childCardOrderIndex > -1) {\n childCardOrder.splice(childCardOrderIndex, 1, newId);\n parentCard.child_card_order = childCardOrder;\n }\n\n // update card in parents child cards\n const childCards = [...(parentCard.child_cards || [])];\n const childCardIndex = childCards.findIndex((c: any) => c.local_id || c.card_id === localId);\n\n if (childCardIndex > -1) {\n const updatedChildCard = {\n ...childCards[childCardIndex],\n card_id: newId,\n };\n delete updatedChildCard.local_id;\n delete updatedChildCard.localCard;\n\n childCards.splice(childCardIndex, 1, updatedChildCard);\n parentCard.child_cards = childCards;\n }\n },\n\n localUpdateCardFields(\n state,\n { cardId, card, overwrite = false, timeUpdated = null, userIdUpdated = null }\n ) {\n if (state.cards[cardId]) {\n const newCard = overwrite ? card : { ...state.cards[cardId], ...card };\n if (timeUpdated) {\n newCard.time_updated = timeUpdated;\n }\n if (userIdUpdated) {\n newCard.user_id_updated = userIdUpdated;\n }\n state.cards[cardId] = newCard;\n }\n\n // Update Fuse index if title or board_id has changed\n if ('title' in card || 'board_id' in card) {\n setCardsFuse(state);\n }\n },\n\n localUpdateCardField(\n state,\n { cardId, fieldName, fieldValue, timeUpdated = null, userIdUpdated = null }\n ) {\n if (!state.cards?.[cardId]) return;\n state.cards[cardId][fieldName] = fieldValue;\n if (timeUpdated && userIdUpdated) {\n state.cards[cardId].time_updated = timeUpdated;\n state.cards[cardId].user_id_updated = userIdUpdated;\n }\n\n // Update Fuse index when title or other searchable fields change\n if (fieldName === 'title' || fieldName === 'board_id') {\n setCardsFuse(state);\n }\n },\n\n localUpdateCardFieldInMultipleCards(state, { cardIds, fieldName, fieldValue }) {\n cardIds.forEach((cardId: string | number) => {\n if (!state.cards[cardId]) return;\n state.cards[cardId][fieldName] = fieldValue;\n });\n },\n\n setAttachments(state, { files, id, prefix }) {\n const resourceId = `${prefix}-${id}`;\n state.attachments[resourceId] = files;\n },\n\n localAddAttachment(state, { attachment, id, prefix }) {\n const resourceId = `${prefix}-${id}`;\n if (!state.attachments[resourceId]) {\n state.attachments[resourceId] = [];\n }\n state.attachments[resourceId].splice(0, 0, attachment);\n },\n\n localRemoveAttachment(state, { attachmentId, id, prefix }) {\n const resourceId = `${prefix}-${id}`;\n const newAttachments = [...(state.attachments[resourceId] || [])];\n const index = newAttachments.findIndex((a: any) => a.local_id === attachmentId);\n\n if (index > -1) {\n newAttachments.splice(index, 1);\n state.attachments[resourceId] = newAttachments;\n }\n },\n\n addAttachmentUploadDetails(state, { id, localId, uploadDetails }) {\n const resourceId = `c-${id}`;\n const newAttachments = [...(state.attachments[resourceId] || [])];\n const attachmentIndex = newAttachments.findIndex(\n (attachment: any) => attachment.local_id === localId\n );\n\n if (attachmentIndex > -1) {\n newAttachments.splice(attachmentIndex, 1, {\n ...newAttachments[attachmentIndex],\n ...uploadDetails,\n });\n state.attachments[resourceId] = newAttachments;\n }\n },\n\n localRemoveFileFromCard(state, { fileId, cardId }: { fileId: string; cardId: string }) {\n const cId = `c-${cardId}`;\n const newCardAttachments = [...state.attachments[cId]];\n\n const fileIndex = newCardAttachments.findIndex((f: any) => f.id === fileId);\n if (fileIndex !== -1) {\n newCardAttachments.splice(fileIndex, 1);\n state.attachments[cId] = newCardAttachments;\n }\n },\n\n updateCardAttachmentId(state, { attachment, localId, cardId }) {\n const [file] = attachment;\n\n const resourceId = `c-${cardId}`;\n const newAttachemnts = [...state.attachments[resourceId]];\n const index = newAttachemnts.findIndex((a) => a.local_id === localId);\n if (index !== -1) {\n newAttachemnts.splice(index, 1, file);\n state.attachments[resourceId] = newAttachemnts;\n }\n },\n\n setUploadFailedFlag(state, { localId, file, cardId, value = true }) {\n const attachmentsKey = `c-${cardId}`;\n\n const newAttachemnts = [...state.attachments[attachmentsKey]];\n const index = newAttachemnts.findIndex((a) => a.local_id === localId);\n if (index !== -1) {\n const newFile = {\n ...newAttachemnts[index],\n failed: value,\n file,\n };\n newAttachemnts.splice(index, 1, newFile);\n state.attachments[attachmentsKey] = newAttachemnts;\n }\n },\n\n addCardFailedAttachment(state, attachment) {\n state.cardFailedAttachments.push(attachment);\n },\n\n resetBoardState(state) {\n Object.assign(state, getDefaultBoardState());\n },\n\n setCardAutoFocus(state, payload) {\n state.cardAutoFocus = payload;\n },\n\n setPreviewPopoverKey(state, payload) {\n state.previewPopoverKey = payload;\n },\n\n setAttachmentTargetCardId(state, id) {\n state.attachmentTargetCardId = id;\n },\n\n setCardAttachmentsLoaded(state, value) {\n state.cardAttachmentsLoaded = value;\n },\n setArchivedBoards(state, data = []) {\n state.archivedBoards = data;\n },\n\n setArchivedLists(state, data = []) {\n state.archivedLists = data;\n },\n\n setProjectPreviewBoards(state, { projectBoards = [], projectId }) {\n state.projectPreviewBoards[projectId] = projectBoards;\n },\n\n setArchivedCards(state, data = []) {\n state.archivedCards = data;\n },\n\n addArchivedListToIndex(state, { list, index }) {\n state.archivedLists.splice(index, 0, list);\n },\n\n setNewBoardTitle(state, title) {\n state.newBoardTitle = title;\n },\n\n clearProjectPreviewBoards(state) {\n state.projectPreviewBoards = {};\n },\n\n setProjectPreview(state, project = {}) {\n state.previewProject = project;\n },\n\n displayProjectPreviewBoards(state, payload = false) {\n state.displayProjectPreviewBoards = payload;\n },\n\n setCurrentCardIdMemberDropdown(state, cardId) {\n state.currentCardIdMemberDropdown = cardId;\n },\n\n setCurrentCardMembersDropdown(state, members) {\n state.currentCardMembersDropdown = members;\n },\n\n setCurrentCardIdForPopup(state, cardId) {\n state.currentCardIdForPopup = cardId;\n },\n\n setCardAttachmentUploadingId(state, cardId) {\n state.cardAttachmentUploadingId = cardId;\n },\n\n setShowDuplicateCardPopup(state, payload) {\n state.showDuplicateCardPopup = payload;\n },\n\n setShowSetParentCardPopup(state, payload) {\n state.showSetParentCardPopup = payload;\n },\n\n updateBoardPropertyInBoards(state, { boardId, propertyName, value }) {\n if (state.flatBoards[boardId]) {\n state.flatBoards[boardId][propertyName] = value;\n }\n if (state.currentBoardId === boardId) {\n state.currentBoard = value;\n }\n },\n\n setDraggingEnd(state, value) {\n state.draggingEnd = value;\n },\n\n setProjectBoards(state, { projectId, projectBoards }) {\n state.projectBoards[projectId] = projectBoards;\n },\n\n removeProjectBoard(state, { projectId, boardId }) {\n if (state.projectBoards[projectId]) {\n const index = state.projectBoards[projectId].indexOf(boardId);\n state.projectBoards[projectId].splice(index, 1);\n }\n },\n\n addProjectBoard(state, { projectId, boardId, position = -1 }) {\n if (position > -1) {\n state.projectBoards[projectId].splice(position, 0, boardId);\n return;\n }\n state.projectBoards[projectId].push(boardId);\n },\n\n setFlatBoards(state, boardsArray) {\n boardsArray.forEach((board: any) => {\n const fullyLoaded =\n state.flatBoards[board.id] &&\n (state.flatBoards[board.id].lists || []).length &&\n (state.flatBoards[board.id].lists || [])[0].cards != null;\n if (fullyLoaded) return;\n state.flatBoards[board.id] = board;\n });\n },\n\n setCards(state, cards) {\n Object.keys(cards).forEach((cardId) => {\n state.cards[cardId] = {\n ...(state.cards[cardId] || {}),\n ...cards[cardId],\n };\n });\n\n setCardsFuse(state);\n },\n\n setListCards(state, listCards) {\n for (const listId in listCards) {\n if (Object.prototype.hasOwnProperty.call(listCards, listId)) {\n state.listCards[listId] = listCards[listId];\n }\n }\n },\n\n setSingleListInListCards(state, { listId, value }) {\n state.listCards[listId] = value;\n },\n\n addCardToListCards(state, { listId, cardId }) {\n const newListCards = [...(state.listCards[listId] || [])];\n newListCards.push(cardId);\n state.listCards[listId] = newListCards;\n },\n\n removeCardFromListCards(state, { listId, cardId }) {\n if (state.listCards[listId]) {\n const index = state.listCards[listId].findIndex((id: any) => id === cardId);\n if (index > -1) {\n const newListCards = [...state.listCards[listId]];\n newListCards.splice(index, 1);\n state.listCards[listId] = newListCards;\n }\n }\n },\n\n addCardToCards(state, { card }) {\n const oldCard = state.cards[card.id] ?? {};\n let expired = true;\n if (oldCard?.collaboration?.token) {\n expired = isTokenExpired(oldCard.collaboration.token);\n }\n\n const newCard = {\n ...card,\n collaboration: expired ? toRaw(card.collaboration) : toRaw(oldCard.collaboration),\n };\n state.cards[card.id || card.localCardId] = newCard;\n },\n\n removeCardFromCards(state, cardId) {\n delete state.cards[cardId];\n },\n cardWsEventsUpdate(state, { change, cardId }) {\n const [cardProp, cardPropId, secondResource, thirdResource, fourthResource] = change.path;\n const card = state.cards[cardId];\n let cardIndex = -1;\n let cardTagIndex = -1;\n let checklistIndex = -1;\n if (Array.isArray(card[cardProp])) {\n cardIndex = card[cardProp].findIndex((c: any) => c.card_id === cardPropId);\n }\n\n switch (cardProp) {\n case 'hints':\n card.hints = change.to;\n break;\n case 'child_card_order':\n card.child_card_order = change.to || [];\n break;\n case 'tags':\n cardTagIndex = card.tags.findIndex((tag: any) => tag.id === cardPropId);\n if (card.tags[cardTagIndex]) {\n card.tags[cardTagIndex][secondResource] = change.to;\n }\n if (state.tags[cardPropId]) {\n state.tags[cardPropId][secondResource] = change.to;\n const newTags = { ...state.tags };\n state.tags = newTags;\n }\n break;\n case 'checklists':\n checklistIndex = card.checklists.findIndex((c: { id: any }) => c.id === cardPropId);\n if (change.path.includes('items')) {\n const itemId = thirdResource;\n const itemIndex = card.checklists[checklistIndex].items.findIndex(\n (item: any) => item.id === itemId\n );\n card.checklists[checklistIndex].items[itemIndex][fourthResource] = change.to;\n break;\n }\n card.checklists[checklistIndex][secondResource] = change.to;\n break;\n case 'checklist_item_order':\n card.checklist_item_order[cardPropId] = change.to;\n break;\n case 'icon':\n case 'epic':\n case 'parent_card':\n // title has been updated\n if (cardProp && cardPropId) {\n state.cards[cardId][cardProp][cardPropId] = change.to;\n break;\n }\n\n // parent/card removed\n if (change.from && !change.to) {\n delete state.cards[cardId][cardProp];\n break;\n }\n\n // parent/epic added\n if (change.to) {\n state.cards[cardId][cardProp] = change.to;\n break;\n }\n\n break;\n case 'linked_cards':\n if (card[cardProp][cardIndex]?.[secondResource]) {\n card[cardProp][cardIndex][secondResource] = change.to;\n }\n if (state.cards[cardPropId]?.[secondResource]) {\n state.cards[cardPropId][secondResource] = change.to;\n }\n break;\n case 'child_cards':\n if (card[cardProp][cardIndex]?.[secondResource]) {\n card[cardProp][cardIndex][secondResource] = change.to;\n }\n if (state.cards[cardPropId]?.[secondResource]) {\n state.cards[cardPropId][secondResource] = change.to;\n }\n if (secondResource === 'archived') {\n if (change.to) {\n state.cards[cardPropId].archived = change.to;\n } else {\n delete state.cards[cardPropId].archived;\n }\n }\n break;\n case 'external_links':\n break;\n default:\n // check if the property is a card property\n if (card[cardProp] !== undefined) {\n card[cardProp] = change.to;\n } else {\n const newCard = { ...state.cards[cardId], [cardProp]: change.to };\n state.cards[cardId] = newCard;\n }\n break;\n }\n // Update Fuse index if title was updated via websocket\n if (cardProp === 'title' || cardProp === 'board_id') {\n setCardsFuse(state);\n }\n },\n\n cardWsEventsCreate(state, { change, cardId, projectId, teamId }) {\n const [cardProp, cardPropId] = change.path;\n const card = state.cards[cardId];\n switch (cardProp) {\n case 'hints':\n card.hints = change.to;\n break;\n case 'checklists':\n if (change.path.includes('items')) {\n const checklistIndex = card.checklists.findIndex((c: { id: any }) => c.id === cardPropId);\n card.checklists[checklistIndex]?.items.push(change.to);\n } else if (change.to.id) {\n card.checklists.push(change.to);\n }\n break;\n case 'checklist_item_order':\n card.checklist_item_order[cardPropId] = change.to;\n break;\n case 'start_date':\n case 'due_date':\n case 'child_card_order':\n card[cardProp] = change.to;\n break;\n case 'tags':\n if (card[cardProp].findIndex((tag: any) => tag.id === change.to.id) === -1) {\n card[cardProp].push(change.to);\n }\n state.tags[change.to.id] = change.to;\n if (\n !state.projectTags[projectId]?.includes(change.to.id) &&\n !state.workspaceTags[teamId]?.includes(change.to.id)\n ) {\n state.projectTags[projectId]?.push(change.to.id);\n }\n break;\n case 'external_links':\n break;\n default:\n if (Array.isArray(card[cardProp])) {\n card[cardProp].push(change.to);\n }\n break;\n }\n },\n\n cardWsEventsDelete(state, { change, cardId }) {\n const [cardProp, cardPropId, , thirdResource] = change.path;\n const card = state.cards[cardId];\n switch (cardProp) {\n case 'hints':\n if (card.hints[cardPropId]) {\n card.hints.splice(cardPropId, 1);\n }\n break;\n case 'child_card_order':\n card.child_card_order = change.to || [];\n break;\n case 'tags':\n const tagId = change.from.id;\n const index = card.tags.findIndex((tag: any) => tag.id === tagId);\n card.tags.splice(index, 1);\n break;\n case 'checklists':\n if (change.path.includes('items')) {\n const itemId = thirdResource;\n if (card.checklists) {\n const checklistIndex = card.checklists.findIndex(\n (c: { id: any }) => c.id === cardPropId\n );\n const itemIndex = card.checklists[checklistIndex].items?.findIndex(\n (item: any) => item.id === itemId\n );\n card.checklists[checklistIndex].items?.splice(itemIndex, 1);\n }\n break;\n }\n const checklistId = change.from.id;\n const checklistIndex = card.checklists.findIndex(\n (checklist: any) => checklist.id === checklistId\n );\n card.checklists.splice(checklistIndex, 1);\n break;\n case 'members':\n const memberIndex = card.members.findIndex((member: any) => member.user_id === cardPropId);\n card.members.splice(memberIndex, 1);\n break;\n case 'start_date':\n card.start_date = 0;\n break;\n case 'due_date':\n card.due_date = 0;\n break;\n case 'child_cards':\n case 'linked_cards':\n const cardIndex = card[cardProp].findIndex((c: any) => c.card_id === cardPropId);\n card[cardProp].splice(cardIndex, 1);\n break;\n case 'external_links':\n break;\n }\n },\n\n /**\n * Intended behavior:\n * 1. By passing an empty array, we will clear the displayed cards.\n * 2. Cards passed in the payload will be displayed, overriding the currently displayed cards.\n * 3. If the payload contains an epic:\n * - The epic will be displayed, overriding the currently displayed epic.\n * - In case when there are multiple epics in the payload, the first one will be displayed.\n * - If there are no cards in the payload, only cards currently displayed in docked layout will be retained.\n * 4. If the payload does not contain an epic:\n * - Currently displayed epic will be retained.\n */\n setDisplayedCards(state, payload: DisplayedCard[]) {\n if (!payload.length) {\n state.displayedCards = [];\n return;\n }\n\n let epicToBeDisplayed = payload.find(\n (dc: DisplayedCard) => dc.resource_type === ResourceType.Epic\n );\n\n if (!epicToBeDisplayed) {\n epicToBeDisplayed = state.displayedCards.find(\n (dc: DisplayedCard) => dc.resource_type === ResourceType.Epic\n );\n }\n\n const cardsToBeDisplayed: DisplayedCard[] = [];\n\n payload.forEach((dc: DisplayedCard) => {\n if (dc.resource_type !== ResourceType.Epic) {\n cardsToBeDisplayed.push(dc);\n }\n });\n\n if (!cardsToBeDisplayed.length) {\n state.displayedCards.forEach((dc: DisplayedCard) => {\n if (\n dc.resource_type !== ResourceType.Epic &&\n (epicToBeDisplayed ? dc.layout === constants.docked : true)\n ) {\n cardsToBeDisplayed.push(dc);\n }\n });\n }\n\n state.displayedCards = [\n ...(epicToBeDisplayed ? [epicToBeDisplayed] : []),\n ...cardsToBeDisplayed,\n ];\n },\n\n addDisplayedCards(state, payload: DisplayedCard[]) {\n state.displayedCards.push(...payload);\n },\n\n removeDisplayedCards(state, payload: string[] | string) {\n state.displayedCards = state.displayedCards.filter((c) => !payload.includes(c.id));\n },\n\n removeDisplayedCardsByField(\n state,\n payload: { field: keyof DisplayedCard; value: string; shouldMatch: boolean }\n ) {\n state.displayedCards = state.displayedCards.filter(\n (c: DisplayedCard) => (payload.shouldMatch ?? true) !== (c[payload.field] === payload.value)\n );\n },\n\n setFieldOfDisplayedCard(state, payload: { id: string; value: any; field: keyof DisplayedCard }) {\n if (!payload.field) return;\n\n const idx = state.displayedCards.findIndex((c: DisplayedCard) => c.id === payload.id);\n if (idx === -1) return;\n\n const { field, value } = payload;\n state.displayedCards[idx][field] = value;\n },\n\n setFieldsOfDisplayedCard(\n state,\n { id, payload }: { id: string; payload: Array<{ field: keyof DisplayedCard; value: any }> }\n ) {\n const idx = state.displayedCards.findIndex((c: DisplayedCard) => c.id === id);\n if (idx === -1) return;\n\n payload.forEach(({ field, value }) => {\n state.displayedCards[idx][field] = value;\n });\n },\n\n setCurrentCardLayout(state, layout) {\n localStorage.setItem('cardLayout', layout);\n state.currentCardLayout = layout;\n },\n\n removeCardFromArchived(state, cardId) {\n const index = state.archivedCards.findIndex((c: any) => c.id === cardId);\n\n if (index > -1) {\n const newArchivedCards = [...state.archivedCards];\n\n newArchivedCards.splice(index, 1);\n state.archivedCards = newArchivedCards;\n }\n },\n\n setChecklistCollapsedIds(state, checklistIds) {\n state.collapsedChecklistIds = checklistIds;\n },\n\n setHiddenItemChecklistIds(state, checklistIds) {\n state.hiddenItemsChecklistIds = checklistIds;\n },\n\n setBoardFilters(state, { boardId, filters, teamId }) {\n state.boardsFilters[boardId] = filters;\n localStorage.setItem(`boardsFilters-${teamId}`, JSON.stringify(state.boardsFilters));\n },\n\n setBoardPills(state, { boardId, pills }) {\n state.boardsPills[boardId] = pills;\n },\n\n setTags(state, { tagsArray, teamId, projectId = null }) {\n const tags: { [key: string]: any } = {};\n let projectTags: any = [];\n let workspaceTags: any = [];\n\n tagsArray.forEach((tag: any) => {\n tags[tag.id] = tag;\n if (tag.project_id) {\n projectTags = [...(projectTags || []), tag.id];\n } else {\n workspaceTags = [...(workspaceTags || []), tag.id];\n }\n });\n\n const newTags = { ...state.tags, ...tags };\n state.tags = newTags;\n if (projectId) {\n state.projectTags[projectId] = projectTags;\n }\n state.workspaceTags[teamId] = workspaceTags;\n },\n\n deleteLocalTag(state, { tagId }) {\n const tag = state.tags[tagId];\n if (tag.project_id) {\n const projectTags = [...(state.projectTags[tag.project_id] || [])];\n const index = projectTags.indexOf(tagId);\n if (index > -1) {\n projectTags.splice(index, 1);\n state.projectTags[tag.project_id] = projectTags;\n }\n } else {\n const workspaceTags = [...(state.workspaceTags[tag.team_id] || [])];\n const index = workspaceTags.indexOf(tagId);\n if (index > -1) {\n workspaceTags.splice(index, 1);\n state.workspaceTags[tag.team_id] = workspaceTags;\n }\n }\n const newTags = { ...state.tags };\n delete newTags[tagId];\n state.tags = newTags;\n },\n\n addLocalTag(state, { tag }) {\n state.tags[tag.id] = tag;\n if (tag.project_id) {\n const projectTags = [...(state.projectTags[tag.project_id] || []), tag.id];\n state.projectTags[tag.project_id] = projectTags;\n } else {\n const workspaceTags = [...(state.workspaceTags[tag.team_id] || []), tag.id];\n state.workspaceTags[tag.team_id] = workspaceTags;\n }\n },\n\n updateLocalTag(state, { tagId, tag, cardId }) {\n if (state.tags[tagId]) {\n const updatedTag = { ...state.tags[tagId], ...tag };\n state.tags[tagId] = updatedTag;\n if (cardId) {\n const tagIndex = state.cards[cardId].tags.findIndex((tag: { id: any }) => tag.id === tagId);\n if (tagIndex !== -1) {\n state.cards[cardId].tags[tagIndex] = updatedTag;\n }\n } else {\n const cards = Object.values(state.cards);\n cards.forEach((card: any) => {\n const tagIndex = card?.tags?.findIndex?.((tag: { id: any }) => tag.id === tagId);\n if (tagIndex !== -1 && card?.tags) {\n card.tags[tagIndex] = updatedTag;\n }\n });\n }\n }\n },\n\n removeLocalPropFromTag(state, { tagId, prop }) {\n if (state.tags[tagId]) {\n const newTag = { ...state.tags[tagId] };\n delete newTag[prop];\n state.tags[tagId] = newTag;\n }\n },\n\n updateLocalTagId(state, { localTagId, tag }) {\n if (tag.project_id) {\n const projectTags = [...(state.projectTags[tag.project_id] || [])];\n const index = projectTags.indexOf(localTagId);\n if (index > -1) {\n projectTags.splice(index, 1, tag.id);\n state.projectTags[tag.project_id] = projectTags;\n }\n } else {\n const workspaceTags = [...(state.workspaceTags[tag.team_id] || [])];\n const index = workspaceTags.indexOf(localTagId);\n if (index > -1) {\n workspaceTags.splice(index, 1, tag.id);\n state.workspaceTags[tag.team_id] = workspaceTags;\n }\n }\n },\n\n setCardCommentAttachmentUploadPopup(state, value) {\n state.cardCommentAttachmentUploadPopup = value;\n },\n\n setCardDescriptionAttachmentUploadPopup(state, value) {\n state.cardDescriptionAttachmentUploadPopup = value;\n },\n\n setLastOpenedBoardId(state, boardId = '') {\n state.lastOpenedBoardId = boardId;\n },\n\n setBoardList(state, { listId, list }) {\n state.lists[listId] = list;\n },\n\n removeBoardFromBoards(state, boardId) {\n delete state.flatBoards[boardId];\n },\n\n removeBoardsListsIds(state, boardId) {\n delete state.boardsListsIds[boardId];\n },\n\n lastHoveredListId(state, listId) {\n state.lastHoveredListId = listId;\n },\n\n lastHoveredCardId(state, cardId) {\n state.lastHoveredCardId = cardId;\n },\n\n lastHoveredDisplayedCardId(state, cardId) {\n state.lastHoveredDisplayedCardId = cardId;\n },\n\n setSelectedCardId(state, cardId) {\n state.selectedCardId = cardId;\n },\n\n setBoardViewMouseSuspended(state, value) {\n state.boardViewMouseSuspended = value;\n },\n\n setChecklistInputActive(state, { checklistId, isActive }) {\n const tempActiveChecklists = { ...state.checklistInputActive };\n if (!isActive) {\n delete tempActiveChecklists[checklistId];\n state.checklistInputActive = tempActiveChecklists;\n } else {\n state.checklistInputActive[checklistId] = isActive;\n }\n },\n setChecklistItemInputActive(state, { checklistItemId, isActive }) {\n const tempActiveChecklistItems = { ...state.checklistItemInputActive };\n if (!isActive) {\n delete tempActiveChecklistItems[checklistItemId];\n state.checklistItemInputActive = tempActiveChecklistItems;\n } else {\n state.checklistItemInputActive[checklistItemId] = isActive;\n }\n },\n setCardOwnerId(state, { ownerId, cardId }: { ownerId: string; cardId: string }) {\n state.cards[cardId].owner_id = ownerId;\n },\n\n setCardTemplates(state, templatesArray) {\n const flatTemplates: { [key: string]: any } = {};\n templatesArray.forEach((template: any) => {\n flatTemplates[template.id] = template;\n });\n const newTemplates = { ...flatTemplates };\n state.cardTemplates = newTemplates;\n },\n\n setCardTemplate(state, template) {\n state.cardTemplates[template.id] = template;\n },\n\n replaceCardTemplateId(state, { localId, template }) {\n const newTemplates = { ...state.cardTemplates };\n delete newTemplates[localId];\n newTemplates[template.id] = template;\n state.cardTemplates = newTemplates;\n },\n\n deleteCardTemplate(state, templateId) {\n const newTemplates = { ...state.cardTemplates };\n delete newTemplates[templateId];\n state.cardTemplates = newTemplates;\n },\n\n setCardTemplateDraft(state, template) {\n const newTemplate = {\n card_board_id: template.card_board_id,\n card_content: template.card_content,\n card_list_id: template.card_list_id,\n card_members: template.card_members,\n card_priority: template.card_priority,\n card_tags: template.card_tags,\n card_title: template.card_title,\n card_child_cards: template.card_child_cards,\n icon: template.icon,\n project_ids: template.project_ids,\n title: template.title,\n };\n state.cardTemplateDraft = newTemplate;\n },\n\n setMembersToCardTemplate(state, value) {\n const { card_members } = state.cardTemplateDraft;\n let member = value;\n card_members.forEach((addedMember: any) => {\n if (value.user_id === addedMember.user_id) {\n card_members.splice(card_members.indexOf(addedMember), 1);\n member = {};\n }\n });\n if (member === value) card_members.push(value);\n },\n\n updateCardTemplateDraftField(state, { fieldName, value }) {\n state.cardTemplateDraft[fieldName] = value;\n },\n\n clearCardTemplateDraft(state) {\n state.cardTemplateDraft = {\n title: '',\n icon: {},\n project_ids: [],\n card_title: '',\n card_content: '',\n card_board_id: '',\n card_list_id: '',\n card_members: [],\n card_tags: [],\n card_priority: 0,\n card_child_cards: [],\n };\n },\n\n addTagToTemplate(state, tagId) {\n if (!state.cardTemplateDraft.card_tags.length) {\n state.cardTemplateDraft.card_tags?.push?.({ ids: [tagId] });\n return;\n }\n state.cardTemplateDraft.card_tags[0]?.ids?.push?.(tagId);\n },\n\n manageCardTemplateSelectedSpaces(state, spaceId) {\n const { project_ids } = state.cardTemplateDraft;\n const index = project_ids.indexOf(spaceId);\n if (index > -1) {\n project_ids.splice(index, 1);\n } else {\n project_ids.push(spaceId);\n }\n },\n\n toggleMemberTemplateChildCard(state, { index, member }) {\n const { card_child_cards } = state.cardTemplateDraft;\n if (!card_child_cards) return;\n const card = card_child_cards[index];\n if (!card) return;\n const memberIndex = card.members.findIndex((m: any) => m.user_id === member.user_id);\n if (memberIndex > -1) {\n card.members.splice(memberIndex, 1);\n } else {\n card.members.push(member);\n }\n },\n\n addChildCardToTemplate(state) {\n const { card_child_cards } = state.cardTemplateDraft;\n if (!card_child_cards) {\n state.cardTemplateDraft.card_child_cards = [];\n }\n const card = convertChildCardDraftToChildCard(state.quickChildCardObject);\n state.cardTemplateDraft.card_child_cards.push(card);\n },\n\n updateChildCardInTemplate(state, index) {\n const { card_child_cards } = state.cardTemplateDraft;\n if (!card_child_cards) return;\n const card = card_child_cards[index];\n if (!card) return;\n const newCard = convertChildCardDraftToChildCard(state.quickChildCardObject);\n card_child_cards[index] = newCard;\n },\n\n removeChildCardFromTemplate(state, index) {\n const { card_child_cards } = state.cardTemplateDraft;\n if (!card_child_cards) return;\n card_child_cards.splice(index, 1);\n },\n\n updateTemplateChildCardProperty(state, { fieldName, value, index }) {\n const { card_child_cards } = state.cardTemplateDraft;\n if (!card_child_cards) return;\n const card = card_child_cards[index];\n if (!card) return;\n card[fieldName] = value;\n },\n\n setTimelineZoom(state, zoom) {\n state.timelineZoom = zoom;\n },\n\n setTimelineSidebarWidth(state, width) {\n state.timelineSidebarWidth = width;\n },\n\n setCardWidth(state, width) {\n state.cardWidth = width;\n },\n\n closeCardUploadPopup(state) {\n state.cardCommentAttachmentUploadPopup = {};\n state.cardDescriptionAttachmentUploadPopup = {};\n },\n\n addQuickCardFileToUpdate(state, { file, isModal }) {\n const propertyName = getQuickCardFilesToUpdateName(isModal);\n state[propertyName].push(file);\n },\n\n removeQuickCardFilesToUpdate(state, isModal) {\n const propertyName = getQuickCardFilesToUpdateName(isModal);\n state[propertyName] = [];\n },\n\n setQuickCardTitle(state, { title, isModal }) {\n const propertyName = getQuickCardObjectName(isModal);\n state[propertyName].title = title;\n },\n\n setMembersToAddQuickCard(state, { value, isModal }) {\n const propertyName = getQuickCardObjectName(isModal);\n let member = value;\n state[propertyName].members.forEach((addedMember: any) => {\n if (value.user_id === addedMember.user_id) {\n state[propertyName].members.splice(state[propertyName].members.indexOf(addedMember), 1);\n member = {};\n }\n });\n if (member === value) state[propertyName].members.push(value);\n },\n\n setQuickCardField(state, { fieldName, value, isModal }) {\n const propertyName = getQuickCardObjectName(isModal);\n state[propertyName][fieldName] = value;\n },\n\n clearQuickCardObject(state, isModal) {\n const propertyName = getQuickCardObjectName(isModal);\n state[propertyName] = {\n localId: nanoid(6),\n title: '',\n content: '',\n tags: [],\n attachments: [],\n members: [],\n parentCard: {},\n projectId: '',\n priority: 0,\n board: {},\n hints: [],\n childCards: [],\n };\n },\n\n updateQuickCardChildCardProperty(state, { fieldName, value, index, isModal }) {\n const propertyName = getQuickCardObjectName(isModal);\n const { childCards } = state[propertyName];\n if (!childCards) return;\n const card = childCards[index];\n if (!card) return;\n card[fieldName] = value;\n },\n\n toggleMemberQuickCardChildCard(state, { index, member, isModal }) {\n const propertyName = getQuickCardObjectName(isModal);\n const { childCards } = state[propertyName];\n if (!childCards) return;\n const card = childCards[index];\n if (!card) return;\n const memberIndex = card.members.findIndex((m: any) => m.user_id === member.user_id);\n if (memberIndex > -1) {\n card.members.splice(memberIndex, 1);\n } else {\n card.members.push(member);\n }\n },\n\n setQuickCardProjectId(state, { projectId, isModal }) {\n const propertyName = getQuickCardObjectName(isModal);\n state[propertyName].projectId = projectId;\n },\n\n addTagToQuickCard(state, { tag, isModal }) {\n const propertyName = getQuickCardObjectName(isModal);\n state[propertyName].tags.push(tag);\n },\n\n removeTagFromQuickCard(state, { tagId, isModal }) {\n const propertyName = getQuickCardObjectName(isModal);\n const index = state[propertyName].tags.findIndex((t: any) => t.id === tagId);\n\n if (index >= 0) {\n state[propertyName].tags.splice(index, 1);\n }\n },\n\n addChildCardToQuickCard(state, isModal) {\n const propertyName = getQuickCardObjectName(isModal);\n const { childCards } = state[propertyName];\n if (!childCards) {\n state[propertyName].childCards = [];\n }\n const card = convertChildCardDraftToChildCard(state.quickChildCardObject);\n state[propertyName].childCards.push(card);\n },\n\n updateChildCardInQuickCard(state, { index, isModal }) {\n const propertyName = getQuickCardObjectName(isModal);\n const { childCards } = state[propertyName];\n if (!childCards) return;\n const card = childCards[index];\n if (!card) return;\n const newCard = convertChildCardDraftToChildCard(state.quickChildCardObject);\n childCards[index] = newCard;\n },\n\n removeChildCardFromQuickCard(state, { index, isModal }) {\n const propertyName = getQuickCardObjectName(isModal);\n const { childCards } = state[propertyName];\n if (!childCards) return;\n childCards.splice(index, 1);\n },\n\n setParentCardForQuickCard(state, parentCard) {\n state.quickCardObject.parentCard = parentCard;\n },\n\n setCardIdForMove(state, cardId) {\n state.cardIdForMove = cardId;\n },\n\n setBoardSortBy(state, { boardId, value, teamId }) {\n const boardSortBy = { ...state.boardSortBy };\n boardSortBy[boardId] = value;\n state.boardSortBy = boardSortBy;\n localStorage.setItem(`boardSortBy-${teamId}`, JSON.stringify(boardSortBy));\n },\n\n setBoardGroupBy(state, { boardId, value, teamId }) {\n const boardGroupBy = { ...state.boardGroupBy };\n boardGroupBy[boardId] = value;\n state.boardGroupBy = boardGroupBy;\n localStorage.setItem(`boardGroupBy-${teamId}`, JSON.stringify(boardGroupBy));\n },\n\n setChildCardCreation(state, value) {\n state.childCardCreation = value;\n },\n\n setCardInEpicCreation(state, value) {\n state.cardInEpicCreation = value;\n },\n\n setCardInNoteCreation(state, value) {\n state.cardInNoteCreation = value;\n },\n\n setQuickCardObject(state, { quickCardObject, isModal }) {\n const propertyName = getQuickCardObjectName(isModal);\n const quickCard = {\n ...quickCardObject,\n // add localId if it does not exist\n ...(!quickCardObject.localId && { localId: nanoid(6) }),\n };\n state[propertyName] = quickCard;\n },\n\n setQCSuggestions(state, suggestions) {\n state.quickCardObject.hints = suggestions;\n },\n\n setShowSuggestionsPlaceholder(state, showPlaceholder) {\n state.showSuggestionsPlaceholder = showPlaceholder;\n },\n setQCShowSuggestionsPlaceholder(state, showPlaceholder) {\n state.qcShowSuggestionsPlaceholder = showPlaceholder;\n },\n\n addGroupByList(state, { boardId, epicId, listId, groupBy, teamId }) {\n const isSpecialCaseListId =\n (listId === 'notags' && groupBy === 'tag') ||\n (listId === 'unassigned' && groupBy === 'assignee');\n const boardIds = [];\n\n if (boardId) {\n boardIds.push(boardId);\n }\n if (epicId) {\n boardIds.push(`${constants.inEpicBoardIdPrefix}-${epicId}`);\n }\n\n for (const bId of boardIds) {\n const lId = isSpecialCaseListId ? `${bId}-${listId}` : listId;\n\n const boardListGroupByOrder = { ...state.boardListGroupByOrder };\n if (!boardListGroupByOrder?.[bId]?.[groupBy]) continue;\n\n const existingList = boardListGroupByOrder[bId][groupBy].order.find((id: any) => id === lId);\n\n if (!existingList) {\n boardListGroupByOrder[bId][groupBy].order.push(lId);\n boardListGroupByOrder[bId][groupBy] = {\n ...boardListGroupByOrder[bId][groupBy],\n [lId]: { cardIds: [] },\n };\n state.boardListGroupByOrder = boardListGroupByOrder;\n localStorage.setItem(`groupByOrder-${teamId}`, JSON.stringify(boardListGroupByOrder));\n }\n }\n },\n\n removeCardFromGroupByList(state, { boardId, epicId, cardId, listId, groupBy, teamId }) {\n const isSpecialCaseListId =\n (listId === 'notags' && groupBy === 'tag') ||\n (listId === 'unassigned' && groupBy === 'assignee') ||\n (listId === 'noproject' && groupBy === 'epic');\n const boardIds = [];\n\n if (boardId) {\n boardIds.push(boardId);\n }\n\n if (epicId) {\n boardIds.push(`${constants.inEpicBoardIdPrefix}-${epicId}`);\n }\n\n for (const bId of boardIds) {\n const lId = isSpecialCaseListId ? `${bId}-${listId}` : listId;\n\n const boardListGroupByOrder = { ...state.boardListGroupByOrder };\n if (!boardListGroupByOrder[bId]?.[groupBy]?.[lId]) continue;\n\n const index = boardListGroupByOrder[bId][groupBy][lId].cardIds.findIndex(\n (id: any) => id === cardId\n );\n\n if (index > -1) {\n boardListGroupByOrder[bId][groupBy][lId]?.cardIds.splice(index, 1);\n }\n\n if (\n groupBy === groupByOption.space &&\n boardListGroupByOrder[bId][groupBy][lId].cardIds.length === 0\n ) {\n boardListGroupByOrder[bId][groupBy].order = boardListGroupByOrder[bId][\n groupBy\n ].order.filter((id: any) => id !== lId);\n delete boardListGroupByOrder[bId][groupBy][lId];\n }\n\n state.boardListGroupByOrder = boardListGroupByOrder;\n localStorage.setItem(`groupByOrder-${teamId}`, JSON.stringify(boardListGroupByOrder));\n }\n },\n\n updateGroupByListOrder(state, { boardId, listId, newIndex, oldIndex, groupBy, teamId }) {\n const boardListGroupByOrder = { ...state.boardListGroupByOrder };\n if (!boardListGroupByOrder[boardId]?.[groupBy]?.order) return;\n\n if (\n oldIndex < 0 ||\n oldIndex >= boardListGroupByOrder[boardId][groupBy].order.length ||\n newIndex < 0 ||\n newIndex >= boardListGroupByOrder[boardId][groupBy].order.length\n ) {\n return; // Return early if indexes are out of bounds\n }\n\n boardListGroupByOrder[boardId][groupBy].order.splice(oldIndex, 1);\n boardListGroupByOrder[boardId][groupBy].order.splice(newIndex, 0, listId);\n\n state.boardListGroupByOrder = boardListGroupByOrder;\n localStorage.setItem(`groupByOrder-${teamId}`, JSON.stringify(boardListGroupByOrder));\n },\n\n setListCardsGroupByOrder(state, { groupByOrder, teamId }) {\n state.boardListGroupByOrder = { ...state.boardListGroupByOrder, ...groupByOrder };\n localStorage.setItem(`groupByOrder-${teamId}`, JSON.stringify(state.boardListGroupByOrder));\n },\n\n reorderCardsGroupByList(state, { boardId, listId, cardId, newIndex, oldIndex, groupBy, teamId }) {\n if (!state.boardListGroupByOrder[boardId]?.[groupBy]?.[listId]) return;\n\n state.boardListGroupByOrder[boardId][groupBy][listId].cardIds.splice(oldIndex, 1);\n state.boardListGroupByOrder[boardId][groupBy][listId].cardIds.splice(newIndex, 0, cardId);\n\n localStorage.setItem(`groupByOrder-${teamId}`, JSON.stringify(state.boardListGroupByOrder));\n },\n\n updateCardsGroupByOrder(\n state,\n { boardId, originalListId, destinationListId, cardId, newIndex, groupBy, teamId }\n ) {\n if (!state.boardListGroupByOrder[boardId]?.[groupBy]) return;\n\n if (state.boardListGroupByOrder[boardId][groupBy][originalListId]) {\n const index =\n state.boardListGroupByOrder[boardId][groupBy][originalListId].cardIds.indexOf(cardId);\n if (index > -1) {\n state.boardListGroupByOrder[boardId][groupBy][originalListId].cardIds.splice(index, 1);\n }\n }\n\n if (state.boardListGroupByOrder[boardId][groupBy][destinationListId]) {\n const index =\n state.boardListGroupByOrder[boardId][groupBy][destinationListId].cardIds.indexOf(cardId);\n if (index > -1) {\n state.boardListGroupByOrder[boardId][groupBy][destinationListId].cardIds.splice(index, 1);\n }\n state.boardListGroupByOrder[boardId][groupBy][destinationListId].cardIds.splice(\n newIndex,\n 0,\n cardId\n );\n }\n\n localStorage.setItem(`groupByOrder-${teamId}`, JSON.stringify(state.boardListGroupByOrder));\n },\n\n setCurrentGroupByListIdCardActionEdit(state, listId) {\n state.currentGroupByListIdCardActionEdit = listId;\n },\n\n setCurrentCardUniqueRowId(state, uniqueRowId) {\n state.currentCardUniqueRowId = uniqueRowId;\n },\n\n setNewBoardObjectField(state, { fieldName, value }) {\n state.newBoardObject[fieldName] = value;\n },\n\n resetNewBoardObject(state) {\n state.newBoardObject = {};\n },\n\n setProjectSprintSettings(state, { projectId, settings }) {\n state.sprintSettings[projectId] = settings;\n },\n\n setSpaceSprints(state, { projectId, sprints }) {\n const oldSprints = state.spaceSprints[projectId] || {};\n const newSprints = { ...oldSprints, ...sprints };\n state.spaceSprints[projectId] = newSprints;\n },\n\n addSprintToSpaceSprints(state, { projectId, sprint }) {\n if (!state.spaceSprints[projectId]) {\n state.spaceSprints[projectId] = {};\n }\n state.spaceSprints[projectId][sprint.id] = sprint;\n },\n\n setSprintListsFlat(state, lists) {\n const newSprintLists = { ...state.sprintLists, ...lists };\n state.sprintLists = newSprintLists;\n },\n\n setSprintForEdit(state, item) {\n state.sprintForEditId = item;\n },\n\n localUpdateSprint(state, { projectId, sprintId, prop, value }) {\n const sprint = state.spaceSprints[projectId][sprintId];\n if (sprint) {\n sprint[prop] = value;\n }\n state.spaceSprints[projectId][sprintId] = sprint;\n\n state.flatBoards[sprint.id] = { ...sprint };\n },\n\n setEpicSelectedTabId(state, { cardId, tabId }: { cardId: string; tabId: any }) {\n if (Object.values(EpicTabId).indexOf(tabId) === -1) {\n tabId = EpicTabId.Details;\n }\n state.epicSelectedTabId[cardId] = tabId;\n },\n\n setBoardSubGroupBy(state, { boardId, value, teamId }) {\n state.boardSubGroupBy[boardId] = value;\n browserStorageSetItem(boardSubGroupByKey(teamId), state.boardSubGroupBy);\n },\n\n setCardsSubGroupByOrder(state, { subGroupByBoardObject, teamId }) {\n const cardsSubGroupByOrder = { ...state.cardsSubGroupByOrder, ...subGroupByBoardObject };\n\n state.cardsSubGroupByOrder = cardsSubGroupByOrder;\n browserStorageSetItem(cardsSubGroupByOrderKey(teamId), state.cardsSubGroupByOrder);\n },\n\n setListsExpanded(state, { teamSlug, boardId, listId, value }) {\n if (!state.listsExpanded) {\n state.listsExpanded = {};\n }\n if (!state.listsExpanded[boardId]) {\n state.listsExpanded[boardId] = {};\n }\n state.listsExpanded[boardId][listId] = value;\n\n const existingValues =\n (browserStorageGetItem(listsExpandedKey(teamSlug, boardId)) as Record) ?? {};\n\n const newValues = { ...existingValues, [listId]: value };\n\n browserStorageSetItem(listsExpandedKey(teamSlug, boardId), newValues);\n },\n\n addCardToGroup(state, payload) {\n const { boardId, epicId, cardId, listId, groupBy, teamId, parentListId, subGroupBy } = payload;\n const isSubGroupCase = subGroupBy !== undefined && parentListId !== undefined;\n\n const getBoardIds = () => {\n const ids = [];\n if (boardId) ids.push(boardId);\n if (epicId) ids.push(`${constants.inEpicBoardIdPrefix}-${epicId}`);\n return ids;\n };\n\n const shouldSkipBoard = () =>\n epicId && Object.keys(state.cards[cardId]?.parent_card || {}).length;\n\n const resolveListId = (bId: string) => {\n const specialCases = [\n listId === 'notags' && groupBy === 'tag',\n listId === 'unassigned' && groupBy === 'assignee',\n !isSubGroupCase && listId === 'noproject' && groupBy === 'epic',\n ];\n return specialCases.some(Boolean) ? `${bId}-${listId}` : listId;\n };\n\n const handleSubGroup = (bId: string, lId: string | number) => {\n const ensurePathExists = (obj: any, keys: string[], finalValue: any) => {\n let current = obj;\n for (let i = 0; i < keys.length; i++) {\n const key = keys[i];\n if (!current[key]) {\n current[key] = i === keys.length - 1 ? finalValue : {};\n }\n current = current[key];\n }\n };\n\n const path = [bId, groupBy, subGroupBy, parentListId, lId];\n ensurePathExists(state.cardsSubGroupByOrder, path, { cardIds: [] });\n\n const target = path.reduce((acc, key) => acc[key], state.cardsSubGroupByOrder);\n if (!target.cardIds.includes(cardId)) {\n target.cardIds.push(cardId);\n localStorage.setItem(\n `subGroupByOrder-${teamId}`,\n JSON.stringify(state.cardsSubGroupByOrder)\n );\n }\n };\n\n const handleRegularGroup = (bId: string, lId: string | number) => {\n if (!state.boardListGroupByOrder[bId]?.[groupBy]) return;\n\n const group = state.boardListGroupByOrder[bId][groupBy];\n if (!group[lId]) {\n group.order.push(lId);\n group[lId] = { cardIds: [] };\n }\n\n if (!group[lId].cardIds.includes(cardId)) {\n group[lId].cardIds.push(cardId);\n localStorage.setItem(`groupByOrder-${teamId}`, JSON.stringify(state.boardListGroupByOrder));\n }\n };\n\n getBoardIds().forEach((bId: string) => {\n if (shouldSkipBoard()) return;\n const lId = resolveListId(bId);\n\n isSubGroupCase ? handleSubGroup(bId, lId) : handleRegularGroup(bId, lId);\n });\n },\n\n removeCardFromSubGroupByList(\n state,\n { boardId, epicId, cardId, parentListId, listId, groupBy, subGroupBy, teamId }\n ) {\n const isSpecialCaseListId =\n (listId === 'notags' && groupBy === 'tag') ||\n (listId === 'unassigned' && groupBy === 'assignee');\n\n const boardIds = [boardId, epicId ? `${constants.inEpicBoardIdPrefix}-${epicId}` : null].filter(\n Boolean\n );\n\n for (const bId of boardIds) {\n if (epicId && Object.keys(state.cards[cardId]?.parent_card || {}).length) {\n continue;\n }\n\n const lId = isSpecialCaseListId ? `${bId}-${listId}` : listId;\n const subGroupByObject = state.cardsSubGroupByOrder?.[bId]?.[groupBy]?.[subGroupBy];\n\n if (!subGroupByObject?.[parentListId]?.[lId]) continue;\n\n const cardIds = subGroupByObject[parentListId][lId].cardIds;\n const index = cardIds.indexOf(cardId);\n if (index !== -1) cardIds.splice(index, 1);\n\n localStorage.setItem(`subGroupByOrder-${teamId}`, JSON.stringify(state.cardsSubGroupByOrder));\n }\n },\n};\n\nexport default mutations;\n","const getItemAndIndex = (itemsArray: any[], itemId: number, compareKey: string = 'id') => {\n let itemIndex: number = -1;\n const item = itemsArray.find((i: any, index: number) => {\n if (i[compareKey] && i[compareKey] === itemId) {\n itemIndex = index;\n return i;\n }\n return false;\n });\n\n return { item, itemIndex };\n};\n\nexport default getItemAndIndex;\n","import { CardHint } from '@superthread-com/api';\nimport { RemoveSuggestionPayload, SuggestionType } from '@/types/suggestions';\n\nexport default (payload: RemoveSuggestionPayload, suggestions: CardHint[]) => {\n const { type, card_id, tagName } = payload;\n let index = -1;\n switch (type) {\n case SuggestionType.relation:\n index = suggestions.findIndex(\n ({ relation }: CardHint) => relation?.card?.card_id === card_id\n );\n break;\n case SuggestionType.tag:\n index = suggestions.findIndex(\n ({ tag }: CardHint) => tagName?.toLowerCase() === tag?.name?.toLowerCase()\n );\n break;\n }\n\n if (index > -1) {\n suggestions.splice(index, 1);\n }\n\n return suggestions;\n};\n","import { ResourceType } from '@/types/resources';\nimport { DisplayedCard, DisplayedCardPayload } from '@/types/displayedCard';\nimport constants from '@/utilities/constants';\n\n// This utility function is used to normalize the payload\n// used for display card, it allows passing payload in different formats\nconst getNormalizedDisplayedCardPayload = (\n rs: any, // rootState\n payload: DisplayedCardPayload = []\n): DisplayedCard[] => {\n if (!payload.length) {\n return [];\n }\n\n if (typeof payload === 'string') {\n payload = [payload];\n }\n\n const getCardType = (cardId: string) => rs.boards.cards[cardId]?.type || ResourceType.Card;\n\n const getCardLayout = (cardId: string): string => {\n const isEpic = rs.boards.cards[cardId]?.type === ResourceType.Epic;\n return isEpic ? constants.fullScreen : rs.boards.currentCardLayout;\n };\n\n const normalizePayload = (cardId: string): DisplayedCard => {\n return {\n id: cardId,\n layout: getCardLayout(cardId),\n resource_type: getCardType(cardId),\n comment_activity_order: rs.commentsOrder || 'newest',\n comment_activity_filter: rs.cardCommentActivityFilter || 'all',\n };\n };\n\n const arrDisplayedCards: DisplayedCard[] = [];\n for (const c of payload) {\n if (typeof c === 'string') {\n arrDisplayedCards.push(normalizePayload(c));\n } else {\n // allow passing in custom values for displayed cards prop\n arrDisplayedCards.push({ ...normalizePayload(c.id), ...c });\n }\n }\n\n return arrDisplayedCards;\n};\n\nexport { getNormalizedDisplayedCardPayload };\n","/**\n * Boards module actions\n * @packageDocumentation\n * @category Store\n */\nimport { ActionTree } from 'vuex';\nimport { BoardState as State, CardsLayoutOption } from '@/types';\nimport { RemoveSuggestionPayload, SuggestionType } from '@/types/suggestions';\nimport { authGet, authPut, authPost, authDelete, authPatch, api } from '@/utilities/api';\nimport getItemAndIndex from '@/utilities/getItemAndIndex';\nimport { addCard } from '@/utilities/moveCard';\nimport constants from '@/utilities/constants';\nimport styleVariables from '@/assets/scss/variables.module.scss';\nimport {\n Board,\n ListBehavior,\n CardHint,\n GetCardResponse,\n GetEpicResponse,\n GetBoardResponse,\n GetEpicsResponse,\n CreateCardRequest,\n CreateEpicRequest,\n UpdateCardResponse,\n UpdateEpicResponse,\n CreateCardResponse,\n CreateEpicResponse,\n Card,\n List,\n Epic,\n EpicBrief,\n} from '@superthread-com/api';\nimport { nanoid } from 'nanoid';\nimport { groupByOption } from '@/types/groupByOption';\nimport { OnboardingActionType } from '@/types/onboardingActions';\nimport fnRemoveSuggestion from '@/utilities/removeSuggestion';\nimport { ResourceType } from '@/types/resources';\nimport { EpicsBoard, IEpic } from '@/types/epics';\nimport { defaultSprintStatuses, getCardStatus } from '@/utilities/defaultCardStatuses';\nimport { translate } from '@/utilities';\nimport { DisplayedCardPayload, DisplayedCard } from '@/types/displayedCard';\nimport { getNormalizedDisplayedCardPayload } from '@/utilities/displayCardUtil';\nimport { getSprintKey, getSprintListKey } from '@/utilities/sprintKeys';\nimport cardStatusType from '@/types/cardStatusType';\nimport { toRaw } from 'vue';\nimport cloneDeep from 'lodash/cloneDeep';\n\n// activePromisess is object with key type of structure and value of\n// object with key of id and value of promise:\n// This is used to reduce the number of requests to the server\nconst activePromises: { [key: string]: { [key: string]: Promise } } = {\n boards: {},\n lists: {},\n cards: {},\n tags: {},\n sprints: {},\n projectBoards: {},\n};\n\nconst actions: ActionTree = {\n setBoardsListsIds({ commit }, boards) {\n commit('setBoardsListsIds', boards);\n },\n /**\n * Action for loading a boards in current project.\n * https://api.superthread.com/v1/boards\n */\n loadBoards({ commit, getters }, projectIdParam) {\n let projectId = projectIdParam;\n if (activePromises.projectBoards[projectId] !== undefined) {\n return activePromises.projectBoards[projectId];\n }\n if (!projectIdParam) {\n projectId = getters.getCurrentProjectId;\n commit('loadingBoards', true);\n }\n\n activePromises.projectBoards[projectId] = api.boards\n .getBoards(getters.getTeamID, { project_id: projectId })\n .then(({ data }) => {\n const { boards, board_order: projectBoards } = data;\n commit('setProjectBoards', {\n projectId,\n projectBoards,\n });\n commit('setFlatBoards', boards);\n commit('setBoardsListsIds', boards);\n const boardLists: string | any[] = [];\n boards?.forEach((b: Board) => {\n boardLists.push(...(b.lists || []));\n });\n commit('setBoardListsFlat', boardLists);\n const listCards: any = {};\n boardLists.forEach((l: any) => {\n listCards[l.id] = [...(l.card_order || [])];\n });\n commit('setListCards', listCards);\n return data;\n })\n .catch(() => {})\n .finally(() => {\n if (getters.loadingBoards) {\n commit('loadingBoards', false);\n }\n delete activePromises.projectBoards[projectId];\n });\n return activePromises.projectBoards[projectId];\n },\n\n setProjectBoards({ commit }, payload) {\n commit('setProjectBoards', payload);\n },\n\n localUpdateProjectBoardsOrder({ commit }, { projectId, payload }) {\n commit('localUpdateProjectBoardsOrder', { projectId, payload });\n },\n\n removeProjectBoard({ commit }, payload) {\n commit('removeProjectBoard', payload);\n },\n\n /**\n * Action for getting a single board.\n * https://api.superthread.com/v1/boards/{board_id}\n */\n\n handleBoardCreated({ commit }, { board }) {\n commit('addBoardInBoards', board);\n commit('setFlatBoards', [board]);\n commit('setBoardsListsIds', [board]);\n if (board.lists) {\n commit('setBoardListsFlat', board.lists);\n }\n },\n\n /**\n * Fetch full board or epics board (roadmap).\n * https://api.superthread.com/v1/{team_id}/boards/{board_id}\n * https://api.superthread.com/v1/{team_id}/epics\n * @param {string} boardId - id of the board to fetch, in case of epic its hardcoded to 'epics'\n * @param {string} teamId - id of the team\n */\n fetchBoard({ getters, dispatch }, { boardId, teamId = getters.getTeamID }) {\n // prevent multiple same requests if request is already in progress\n const existingPromise = activePromises.boards[boardId];\n if (existingPromise !== undefined) return existingPromise;\n\n const isEpicsBoard = boardId === constants.epicsBoardId;\n const req = isEpicsBoard\n ? api.boards.getEpics(getters.getTeamID)\n : api.boards.getBoard(getters.getTeamID, boardId);\n\n const promise = req\n .then(({ data }: { data: GetBoardResponse | GetEpicsResponse }) => {\n const board = isEpicsBoard ? (data as EpicsBoard) : (data as GetBoardResponse).board;\n if (!board) throw new Error('Invalid response');\n\n if (isEpicsBoard) board.id = constants.epicsBoardId;\n if (teamId === getters.getTeamID) {\n dispatch('postFetchBoard', { board });\n }\n\n return { board };\n })\n .catch((error) => {\n const currentRouteName = getters.getCurrentRoute.name;\n if (\n error.response?.status === 403 &&\n (currentRouteName === constants.routeNames.board ||\n currentRouteName === constants.routeNames.boardCard) &&\n boardId === getters.currentBoardId\n ) {\n dispatch('itemNotFound', true);\n }\n if (!boardId?.includes('s')) {\n // if boardId is not a sprint board\n dispatch('addBoardInBoards', { id: `${boardId}_notFound`, notFound: true });\n }\n throw error;\n })\n .finally(() => {\n // remove promise from activePromises.boards\n delete activePromises.boards[boardId];\n });\n // add promise to activePromises.boards\n activePromises.boards[boardId] = promise;\n return promise;\n },\n\n postFetchBoard({ commit, getters }, { board }: { board: any }) {\n const isEpicsBoard = board.id === constants.epicsBoardId;\n\n if (isEpicsBoard) {\n board.lists?.forEach((l: List) => {\n l.board_id = constants.epicsBoardId;\n });\n }\n\n commit('setFlatBoards', [board]);\n commit('setBoardsListsIds', [board]);\n commit('setBoardListsFlat', board.lists);\n\n const listCards: any = {};\n const cards: any = {};\n board.lists?.forEach((l: any) => {\n listCards[l.id] = [...(l.card_order || [])];\n (isEpicsBoard ? l.epics : l.cards)?.forEach((c: any) => {\n if (c) {\n const stateCard = getters.getCards[c.id] || {};\n\n cards[c.id] = {\n ...toRaw(stateCard),\n ...toRaw(c),\n ...(c.type === ResourceType.Epic && { board_id: constants.epicsBoardId }),\n };\n }\n if (c?.child_cards?.length) {\n c.child_cards.forEach((child: any) => {\n if (!getters.getCards[child.card_id]) {\n child.partially_loaded = true;\n child.id = child.card_id;\n commit('addCardToCards', { card: child });\n }\n });\n }\n });\n });\n commit('setCards', cards);\n commit('setListCards', listCards);\n },\n\n /**\n * Archives the board with passed id.\n * https://api.superthread.com/v1/{team_id}/boards/{board_id}\n * @param {string} id\n */\n archiveBoard({ getters, dispatch }, { id, archived }) {\n return authPatch(`${getters.getRoutes.boards}/v1/${getters.getTeamID}/boards/${id}`, {\n archived,\n })\n .then(() => {\n const timeNow = Math.floor(Date.now() / 1000);\n dispatch('updateBoardPropertyInBoards', {\n boardId: id,\n propertyName: 'archived',\n value: {\n time_archived: timeNow,\n user_id: getters.getUserId,\n },\n });\n })\n .catch(() => {\n dispatch('updateBoardPropertyInBoards', {\n boardId: id,\n propertyName: 'archived',\n value: false,\n });\n });\n },\n /**\n * Load archived boards or lists or cards.\n * https://api.superthread.com/v1/{team_id}/boards?archived=true\n * https://api.superthread.com/v1/{team_id}/lists?archived=true\n * https://api.superthread.com/v1/{team_id}/cards?archived=true\n * @param {string} section\n */\n loadArchived({ commit, getters }, section) {\n return authGet(`${getters.getRoutes.boards}/v1/${getters.getTeamID}/${section}`, {\n params: {\n archived: true,\n },\n })\n .then((r) => r.data)\n .then(({ boards, lists, cards }) => {\n switch (section) {\n case 'boards':\n commit('setArchivedBoards', boards);\n commit('setFlatBoards', boards);\n commit('setBoardsListsIds', boards);\n // eslint-disable-next-line no-case-declarations\n const boardLists: string | any[] = [];\n boards.forEach((b: { lists: any }) => {\n boardLists.push(...(b.lists || []));\n });\n commit('setBoardListsFlat', boardLists);\n\n // eslint-disable-next-line no-case-declarations\n const listCards: any = {};\n boardLists.forEach((l: any) => {\n listCards[l.id] = [...(l.card_order || [])];\n });\n commit('setListCards', listCards);\n\n return boards;\n case 'lists':\n commit('setBoardListsFlat', lists);\n commit('setArchivedLists', lists);\n return lists;\n case 'cards':\n // eslint-disable-next-line no-case-declarations\n const newCards: any = {};\n cards.forEach((c: any) => {\n newCards[c.id] = c;\n });\n commit('setCards', newCards);\n\n commit('setArchivedCards', cards);\n return cards;\n default:\n return [];\n }\n });\n },\n /**\n * Archives a list with passed id.\n * https://api.superthread.com/v1/{team_id}/lists/{list_id}\n * @param {string} id\n */\n archiveList({ getters, dispatch, state, commit }, id) {\n const list = state.lists[id];\n const currentListOrder = [...state.boardsListsIds[list.board_id]];\n const newListOrder = [...currentListOrder];\n\n const index = newListOrder.indexOf(id);\n if (index > -1) {\n commit('removeBoardListId', {\n boardId: list.board_id,\n id,\n });\n }\n return authPatch(\n `${getters.getRoutes.lists}/v1/${getters.getTeamID}/boards/${list.board_id}/lists/${id}`,\n { archived: true }\n )\n .then((data) => {\n dispatch('addUiNotification', {\n message: translate('archiveSuccess', {\n name: list.title,\n type: translate(ResourceType.List).toLowerCase(),\n }),\n status: constants.uiNotificationStatuses.warning,\n icon: 'archive',\n duration: 4000,\n labels: [\n {\n text: translate('undo'),\n type: constants.uiNotificationElements.button,\n action: 'unarchiveList',\n buttonStyle: 'important',\n params: {\n id,\n passedList: list,\n },\n },\n ],\n });\n return data;\n })\n .catch(() => {\n if (index > -1) {\n commit('addBoardListId', {\n boardId: list.board_id,\n listId: id,\n });\n }\n });\n },\n\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n getList({ getters }, { teamId, listId, isEpicsList = false }) {\n const existingPromise = activePromises.lists[listId];\n if (existingPromise !== undefined) return existingPromise;\n\n const promise = api.boards\n .getList(teamId, listId)\n .then(({ data }) => {\n // epics list dont have board_id in resp\n if (isEpicsList && data.list) {\n data.list.board_id = constants.epicsBoardId;\n }\n\n return data;\n })\n .catch((error) => {\n throw error;\n })\n .finally(() => {\n delete activePromises.lists[listId];\n });\n\n activePromises.lists[listId] = promise;\n return promise;\n },\n\n unarchiveList({ getters, commit }, { id, passedList }) {\n const newArchivedBoardLists = getters.archivedLists;\n\n const { item: list, itemIndex: index } = getItemAndIndex(newArchivedBoardLists, id);\n\n newArchivedBoardLists.splice(index, 1);\n commit('setArchivedLists', newArchivedBoardLists);\n return authPatch(`${getters.getRoutes.lists}/v1/${getters.getTeamID}/lists/${id}`, {\n archived: false,\n })\n .then((data) => {\n commit('addBoardListId', {\n boardId: passedList.board_id,\n listId: id,\n });\n return data;\n })\n .catch((error) => {\n commit('addArchivedListToIndex', { list, index });\n throw error;\n });\n },\n /**\n * Sets lists to the state.\n * @param {any} data\n */\n setBoardListsFlat({ commit }, data) {\n commit('setBoardListsFlat', data);\n },\n\n addBoardListId({ commit }, payload) {\n commit('addBoardListId', payload);\n },\n\n replaceBoardListId({ commit }, payload) {\n commit('replaceBoardListId', payload);\n },\n\n removeBoardListId({ commit }, payload) {\n commit('removeBoardListId', payload);\n },\n\n moveBoardListId({ commit }, payload) {\n commit('moveBoardListId', payload);\n },\n\n removeBoardList({ commit }, listId) {\n commit('removeBoardList', listId);\n },\n\n /**\n * Sets passed board object as current on the state.\n * @param {Board} board\n */\n setCurrentBoardId({ commit }, board) {\n commit('setCurrentBoardId', board);\n },\n\n /**\n * Action for updating list.\n * @param {String} listId\n * @param {Object} list\n * https://api.superthread.com/v1/lists/{list_id}\n */\n updateList({ getters }, { boardId, listId, list }) {\n const isEpicsList = boardId === constants.epicsBoardId;\n const req = isEpicsList\n ? api.boards.updateEpicsList(getters.getTeamID, listId, list)\n : api.boards.updateList(getters.getTeamID, listId, list);\n return req;\n },\n /**\n * Publish list using passed board id.\n * @param {string} boardId\n * @param {string} list\n * https://api.superthread.com/v1/lists\n */\n createBoardList({ getters }, { boardId, list }) {\n const isEpicsList = boardId === constants.epicsBoardId;\n const req = isEpicsList\n ? api.boards.createEpicsList(getters.getTeamID, list)\n : api.boards.createList(getters.getTeamID, { ...list, board_id: boardId });\n return req\n .then(({ data }) => {\n if (isEpicsList && data.list) {\n data.list.board_id = constants.epicsBoardId;\n }\n return data;\n })\n .catch((error) => {\n throw error;\n });\n },\n\n /**\n * Sets list's cards to the state.\n * @param {any} data\n */\n /**\n * Creates a card/epic with passed title in specific list by using passed listId.\n * https://api.superthread.com/v1/{team_id}/cards\n * https://api.superthread.com/v1/{team_id}/epics\n * @param {object} card - object containning card/epic fields\n * @param {ResourceType} type - 'card' or 'epic'\n */\n createCard(\n { getters, dispatch },\n {\n card,\n type = ResourceType.Card,\n }: {\n card: CreateCardRequest | CreateEpicRequest;\n type?: ResourceType;\n }\n ): Promise {\n const isEpic = type === ResourceType.Epic;\n\n if (!card.list_id || !card.title)\n return Promise.reject(new Error(constants.missingCardTitleOrListIdErr));\n\n const params: CreateCardRequest | CreateEpicRequest = {\n ...card,\n schema: card.schema ?? getters.cardsSchema,\n };\n\n const req = isEpic\n ? api.boards.createEpic(getters.getTeamID, params as CreateEpicRequest)\n : api.boards.createCard(getters.getTeamID, params as CreateCardRequest);\n\n return req\n .then(({ data }: { data: CreateCardResponse | CreateEpicResponse }) => {\n const card = isEpic ? (data as CreateEpicResponse).epic : (data as CreateCardResponse).card;\n\n if (!card) throw new Error('Invalid response');\n dispatch('completeOnboardingActions', [OnboardingActionType.CreateCard]);\n\n //@ts-ignore\n if (isEpic) card.board_id = constants.epicsBoardId;\n\n return { card };\n })\n .catch((err) => err);\n },\n /**\n * Updates card/epic to the passed object.\n * https://api.superthread.com/v1/{team_id}/cards/{card_id} - EP for card\n * https://api.superthread.com/v1/{team_id}/epics/{epic_id} - EP for epic\n * @param {ResourceType} type - 'card' or 'epic'\n * @param {string} cardId - id of a card/epic to update\n * @param {object} card - object containning card/epic fields to update\n */\n updateCard(\n { getters, commit, dispatch },\n {\n cardId,\n card,\n type = ResourceType.Card,\n oldListId,\n }: {\n cardId: string;\n card: any;\n type?: ResourceType;\n oldListId: string;\n }\n ) {\n const isEpic = type === ResourceType.Epic;\n const movingCard = Boolean(card.list_id);\n const { getTeamID: teamId } = getters;\n const updateRequest = isEpic ? api.boards.updateEpic : api.boards.updateCard;\n\n const stateCard = getters.getCardById(cardId);\n const epicId = stateCard?.epic?.id;\n if (movingCard && !isEpic && epicId) {\n const { project_id, sprint_id, list_id } = card;\n const listId =\n sprint_id && project_id ? getSprintListKey(project_id, sprint_id, list_id) : list_id;\n\n const oldList = getters.lists[oldListId || ''];\n if (oldList) {\n commit('removeCardFromGroupByList', {\n epicId,\n cardId,\n listId: oldList.behavior || 'backlog',\n groupBy: 'statusType',\n teamId,\n });\n }\n\n const newList = getters.lists[listId];\n if (newList) {\n commit('addCardToGroup', {\n epicId,\n cardId,\n listId: newList.behavior || 'backlog',\n groupBy: 'statusType',\n teamId,\n });\n }\n }\n\n const positionUpdate = 'position' in card;\n\n if (isEpic) {\n card.board_id = constants.epicsBoardId;\n if (positionUpdate) {\n card.list_id = card.list_id ?? stateCard.list_id;\n }\n }\n\n return updateRequest(teamId, cardId, card)\n .then((resp: { data: UpdateCardResponse | UpdateEpicResponse }) => {\n if (movingCard || card.title) {\n dispatch('localUpdateChildParent', { card, cardId });\n }\n if (isEpic && positionUpdate) {\n dispatch('localUpdateCardField', {\n cardId,\n fieldName: 'list_id',\n fieldValue: card.list_id,\n });\n }\n return resp;\n })\n .catch((resp) => {\n if (typeof resp === 'string') return resp;\n\n const { response } = resp;\n const error = response.data;\n\n if (error.message === 'oldSchema') {\n // add ui notification\n commit('addUiNotification', {\n message: translate('updateAppToEditCard'),\n duration: 4000,\n id: nanoid(4),\n });\n }\n\n throw error;\n });\n },\n\n localUpdateChildParent({ getters, dispatch }, { card, cardId }) {\n const cardData = getters.getCards[cardId] || {};\n if (!cardData.child_cards?.length) return;\n\n const list = card.sprint_id\n ? getters.lists[getSprintListKey(card.project_id, card.sprint_id, card.list_id)]\n : getters.lists[card.list_id];\n\n cardData.child_cards?.forEach((childCard: any) => {\n const childCardData = getters.getCards[childCard.card_id] || {};\n if (!childCardData.parent_card) return;\n\n const parentCardData = {\n card_id: childCardData.parent_card.card_id,\n title: card.title || childCardData.parent_card.title,\n list_color: card.title ? childCardData.parent_card.list_color : list?.color,\n status: card.title ? childCardData.parent_card.status : list?.behavior,\n };\n\n dispatch('localUpdateCardField', {\n cardId: childCardData.id,\n fieldName: 'parent_card',\n fieldValue: parentCardData,\n });\n });\n },\n\n /**\n * Local update card on state\n * Update specific card with new values.\n * @param {string} cardId required\n * @param {object} card required (provide card fields to update)\n * @param {boolean} overwrite optional (default: false)\n * @param {string} timeUpdated optional (default: null)\n * @param {string} userIdUpdated optional (default: null)\n */\n localUpdateCardFields({ commit }, payload) {\n commit('localUpdateCardFields', { ...payload });\n },\n /**\n * Local update card on state\n * Update specific card's field with new value.\n * @param {string} cardId\n * @param {string} fieldName\n * @param {string} fieldValue\n */\n localUpdateCardField({ commit }, payload) {\n commit('localUpdateCardField', { ...payload });\n },\n\n /**\n * Update local card with patch request\n * @param {string} cardId\n * @param {object} card\n * @param {boolean} updateTime\n * @param {boolean} updateUserId\n * @returns {Promise}\n * @throws {Error}\n * @example\n * updateCardWithPatchRequest({ cardId: '1', card: { title: 'new title' } });\n * updateCardWithPatchRequest({ cardId: '2', card: { due_date: 1691160300, start_date: 1684161900 }, updateTime: false });\n **/\n updateCardWithPatchRequest(\n { getters, dispatch },\n { cardId, card, updateTime = true, updateUserId = true }\n ) {\n const { getCards, getUserId } = getters;\n const cards = getCards || {};\n const oldCard = cards[cardId];\n dispatch('localUpdateCardFields', {\n cardId,\n card,\n overwrite: false,\n ...(updateTime && { timeUpdated: Math.floor(Date.now() / 1000) }),\n ...(updateUserId && { userIdUpdated: getUserId }),\n });\n return dispatch('updateCard', { cardId, card }).catch((error) => {\n dispatch('localUpdateCardFields', {\n cardId,\n card: oldCard,\n overwrite: true,\n });\n throw error;\n });\n },\n\n localUpdateCardFieldInMultipleCards({ commit }, payload) {\n commit('localUpdateCardFieldInMultipleCards', payload);\n },\n\n /**\n * Creates published board.\n * https://api.superthread.com/v1/boards\n */\n createPublishedBoard({ getters }, { title = '', icon, color, project_id, layout }) {\n if (!getters.getNewBoardProjectId && !project_id) {\n const msg = 'No project selected';\n return Promise.reject(new Error(msg));\n }\n\n return api.boards\n .createBoard(getters.getTeamID, {\n project_id: project_id || getters.getNewBoardProjectId,\n title,\n icon,\n color,\n // @ts-ignore\n layout,\n lists: [\n {\n title: 'Backlog',\n behavior: ListBehavior.Backlog,\n icon: 'circle-dotted',\n color: styleVariables.gray400,\n },\n {\n title: 'To do',\n behavior: ListBehavior.Committed,\n icon: 'disc',\n color: styleVariables.gray700,\n },\n {\n title: 'Doing',\n behavior: ListBehavior.Started,\n icon: 'play-circle',\n color: styleVariables.stBlue,\n },\n {\n title: 'Done',\n behavior: ListBehavior.Completed,\n icon: 'check-circle',\n color: styleVariables.success400,\n },\n {\n title: 'Cancelled',\n behavior: ListBehavior.Cancelled,\n icon: 'x-circle',\n color: styleVariables.warning500,\n },\n ],\n })\n .then(({ data }) => {\n return data;\n })\n .catch((error) => {\n throw error;\n });\n },\n\n async createBoardCopy({ getters, dispatch }, { boardId, projectId, title }) {\n const resp = await api.boards.copyBoard(getters.getTeamID, boardId, {\n project_id: projectId,\n title,\n });\n\n if (resp.status < 200 || resp.status >= 300 || !resp.data.board) {\n throw new Error('failed to copy board');\n }\n\n const board = resp.data.board;\n dispatch('addBoardInBoards', board);\n dispatch('localAddProjectBoardOrder', {\n projectId: board.project_id,\n boardId: board.id,\n });\n\n return board;\n },\n\n /**\n * Update board\n * https://api.superthread.com/v1/boards/{board_id}\n */\n updateBoard({ getters }, { id, board }) {\n return api.boards.updateBoard(getters.getTeamID, id, board).catch((error) => {\n throw error;\n });\n },\n\n /**\n * Sets the id of a project to the state.\n * @param {string} name\n */\n setNewBoardProjectId({ commit }, name) {\n commit('setNewBoardProjectId', name);\n },\n /**\n * Loads details of the specific card by using passed cardId.\n * https://api.superthread.com/v1/{team_id}/cards/{card_id}\n * @param {string} cardId\n */\n\n /**\n * Creates a checklist in a certain card by using passed cardId.\n * https://api.superthread.com/v1/{team_id}/cards/{card_id}/checklists\n * @param {string} cardId\n * @param {string} checklistTitle\n */\n createChecklist({ getters }, { cardId, checklistTitle }) {\n if (!cardId || !checklistTitle) {\n return Promise.reject(new Error('Missing checklist title or card id'));\n }\n const { getRoutes, getTeamID } = getters;\n return authPost(`${getRoutes.checklists}/v1/${getTeamID}/cards/${cardId}/checklists`, {\n title: checklistTitle,\n })\n .then(({ data }) => data)\n .catch((error) => {\n throw error;\n });\n },\n /**\n * Updates checklist.\n * https://api.superthread.com/v1/{team_id}/cards/{card_id}/checklists/{checklist_id}\n * @param {object} payload { id: string, field_name: string, field_value: any }\n */\n updateChecklist({ getters }, { cardId, checklistId, payload }) {\n const { getRoutes, getTeamID } = getters;\n return authPatch(\n `${getRoutes.checklists}/v1/${getTeamID}/cards/${cardId}/checklists/${checklistId}`,\n { ...payload }\n ).catch((error) => {\n throw error;\n });\n },\n /**\n * Deletes a certain checklist by using passed id.\n * https://api.superthread.com/v1/{team_id}/cards/{card_id}/checklists/{checklist_id}\n * @param {string} id\n */\n deleteChecklist({ getters, commit, state, dispatch }, { id, cardId }) {\n const { getRoutes, getTeamID, getCardById } = getters;\n const card = getCardById(cardId);\n const oldCardChecklists = [...state.cards[cardId].checklists];\n const oldChecklistOrder = [...state.cards[cardId].checklist_order];\n const oldChecklistItemOrder = { ...state.cards[cardId].checklist_item_order };\n\n const cardChecklistIndex = oldCardChecklists.findIndex((c) => c.id === id);\n const cardChecklists = [...oldCardChecklists];\n cardChecklists.splice(cardChecklistIndex, 1);\n\n const checklistOrderIndex = card.checklist_order.findIndex((co: any) => co === id);\n const checklistOrder = [...card.checklist_order];\n checklistOrder.splice(checklistOrderIndex, 1);\n\n // remove checklist from current card checklists\n commit('localUpdateCardField', {\n cardId,\n fieldName: 'checklists',\n fieldValue: cardChecklists,\n });\n\n // remove checklist from current card checklist_order\n commit('localUpdateCardField', {\n cardId,\n fieldName: 'checklist_order',\n fieldValue: checklistOrder,\n });\n // remove checklist_item_order from current card\n dispatch('removeOrReplaceLocalCurrentCardChecklistItemOrder', {\n cardId,\n localId: id,\n });\n return authDelete(\n `${getRoutes.checklists}/v1/${getTeamID}/cards/${cardId}/checklists/${id}`\n ).catch((error) => {\n commit('localUpdateCardField', {\n cardId,\n fieldName: 'checklists',\n fieldValue: oldCardChecklists,\n });\n\n commit('localUpdateCardField', {\n cardId,\n fieldName: 'checklist_order',\n fieldValue: oldChecklistOrder,\n });\n\n commit('localUpdateCardField', {\n cardId,\n fieldName: 'checklist_item_order',\n fieldValue: oldChecklistItemOrder,\n });\n throw error;\n });\n },\n\n /**\n * Creates checklist item in a certain checklist by using passed checklistId.\n * https://api.superthread.com/v1/{team_id}/cards/{card_id}/checklists/{checklist_id}/items\n * @param {string} checklistId\n * @param {string} title\n */\n createPublishedChecklistItem({ getters }, { cardId, checklistId, title }) {\n const { getRoutes, getTeamID } = getters;\n const itemsBase = getRoutes.checklistitems;\n return authPost(\n `${itemsBase}/v1/${getTeamID}/cards/${cardId}/checklists/${checklistId}/items`,\n {\n title,\n checklist_id: checklistId,\n }\n )\n .then(({ data }) => data)\n .catch((error) => {\n throw error;\n });\n },\n /**\n * Deletes a certain checklist item by using passed checklistId and checklistItemId.\n * https://api.superthread.com/v1/{team_id}/checklists/{checklist_id}/items/{item_id}\n * @param {string} checklistId\n * @param {string} checklistItemId\n */\n deleteChecklistItem({ getters }, { checklistItem, cardId, checklistId }) {\n const { getRoutes, getTeamID } = getters;\n const { id } = checklistItem;\n const itemsUrl = getRoutes.checklistitems;\n\n return authDelete(\n `${itemsUrl}/v1/${getTeamID}/cards/${cardId}/checklists/${checklistId}/items/${id}`\n );\n },\n\n localDeleteChecklistItem({ commit, getters }, { cardId, checklistItem }) {\n const card = JSON.parse(JSON.stringify(getters.getCards[cardId]));\n\n if (card) {\n const { checklists } = card;\n const clIndex = checklists.findIndex((cl: any) => cl.id === checklistItem.checklist_id);\n if (clIndex > -1) {\n const itemIndex = checklists[clIndex].items.findIndex(\n (cli: any) => cli.id === checklistItem.id\n );\n\n if (itemIndex > -1) {\n checklists[clIndex].items.splice(itemIndex, 1);\n }\n }\n commit('localUpdateCardField', {\n cardId,\n fieldName: 'checklists',\n fieldValue: checklists,\n });\n }\n },\n /**\n * Archives a certain card by using passed cardId.\n * https://api.superthread.com/v1/{team_id}/cards/{card_id}\n * @param {string} cardId - id of the card to be archived/restored\n * @param {boolean} archived - true if card should be archived, false if card should be restored\n */\n archiveCard({ getters, dispatch }, { cardId, archived }) {\n const { getTeamID, getCards, getUserId } = getters;\n const card = getCards[cardId];\n const cardArchived = card.archived;\n const type = card.type || ResourceType.Card;\n\n // check if card is archived before trying to restore it\n if (!archived && !cardArchived) return;\n\n if (card.sprint_id) {\n dispatch('addUiNotification', {\n message: translate('cannotArchiveCardFromSprint'),\n status: constants.uiNotificationStatuses.warning,\n duration: 5000,\n });\n return;\n }\n\n if (archived) {\n dispatch('localUpdateCardField', {\n cardId,\n fieldName: 'archived',\n fieldValue: {\n time_archived: Math.round(new Date().getTime() / 1000),\n user_id: getUserId,\n },\n });\n dispatch('removeCardFromListCards', {\n listId: card.list_id,\n cardId,\n });\n dispatch('removeCardFromGroupByBoard', { boardId: card.board_id, card });\n } else {\n dispatch('localUpdateCardField', {\n cardId,\n fieldName: 'archived',\n fieldValue: false,\n });\n dispatch('addCardToListCards', {\n listId: card.list_id,\n cardId,\n });\n dispatch('removeCardFromArchived', cardId);\n }\n\n const interpolationData = {\n name: card.title,\n type: translate(type).toLowerCase(),\n };\n const successMsg = translate(archived ? 'archiveSuccess' : 'restoreSuccess', interpolationData);\n const errorMsg = translate(archived ? 'archiveError' : 'restoreError', interpolationData);\n\n const req =\n type == ResourceType.Epic\n ? api.boards.updateEpic(getTeamID, cardId, { archived })\n : api.boards.updateCard(getTeamID, cardId, { archived });\n\n return req\n .then(({ data }: { data: UpdateCardResponse | UpdateEpicResponse }) => {\n const isEpic = type == ResourceType.Epic;\n const card = isEpic\n ? ((data as UpdateEpicResponse).epic as IEpic)\n : (data as UpdateCardResponse).card;\n\n if (!card) throw new Error('Invalid response');\n if (isEpic) card.board_id = constants.epicsBoardId;\n\n dispatch('addUiNotification', {\n message: successMsg,\n status: constants.uiNotificationStatuses.warning,\n icon: 'archive',\n duration: 4000,\n // display undo button in toast notification only if card is being archived\n ...(archived && {\n labels: [\n {\n text: translate('undo'),\n type: constants.uiNotificationElements.button,\n action: 'archiveCard',\n buttonStyle: 'important',\n params: {\n cardId,\n archived: false,\n },\n },\n ],\n }),\n });\n\n if (!archived) {\n dispatch('addCardToGroupByBoard', { boardId: card.board_id, card });\n }\n\n dispatch('addCardToCards', { card });\n return { card };\n })\n .catch(() => {\n if (archived) {\n dispatch('localUpdateCardField', {\n cardId,\n fieldName: 'archived',\n fieldValue: false,\n });\n dispatch('addCardToListCards', {\n listId: card.list_id,\n cardId,\n });\n dispatch('removeCardFromArchived', cardId);\n } else {\n dispatch('localUpdateCardField', {\n cardId,\n fieldName: 'archived',\n fieldValue: cardArchived,\n });\n dispatch('removeCardFromListCards', {\n listId: card.list_id,\n cardId,\n });\n dispatch('removeCardFromGroupByBoard', { boardId: card.board_id, card });\n }\n dispatch('addUiNotification', {\n message: errorMsg,\n status: constants.uiNotificationStatuses.error,\n labels: [\n {\n text: translate('retry'),\n type: constants.uiNotificationElements.button,\n action: 'archiveCard',\n buttonStyle: 'important',\n params: {\n cardId,\n archived,\n },\n },\n ],\n });\n });\n },\n /**\n * Changes a parent card for a new one\n * * Triggering two requests be removed after adding a new endpoint\n * @param {Card} newParentCard - new parent card to add\n * @param {Card} childCard - card we add a parent to\n */\n changeParentCard({ getters, dispatch }, { newParentCard, childCard }) {\n if (!Object.keys(newParentCard || {}).length) {\n throw new Error('Missing new parent card when changing parent card');\n }\n\n if (!Object.keys(childCard || {}).length) {\n throw new Error('Missing child card when changing parent card');\n }\n\n const rawNewParent = toRaw(newParentCard);\n const newParent = cloneDeep(rawNewParent || {});\n const rawChild = toRaw(childCard);\n const child = cloneDeep(rawChild);\n const oldParent = JSON.parse(\n JSON.stringify(getters.getCards[child.parent_card?.card_id || ''] || {})\n );\n\n // locally add parent card to child\n dispatch('localUpdateCardField', {\n cardId: child.id,\n fieldName: 'parent_card',\n fieldValue: {\n card_id: newParent.id,\n title: newParent.title,\n list_color: newParent.list_color,\n status: newParent.status,\n },\n });\n // locally remove child card from old parent\n if (Object.keys(oldParent).length) {\n dispatch('localRemoveCardFromParent', {\n childCardId: child.id,\n card: oldParent,\n cardId: oldParent.id,\n });\n }\n // locally add child card to new parents child_card_order\n if (Object.keys(newParent).length) {\n dispatch('localAddCardToParent', {\n parentCard: newParent,\n childCard: child,\n });\n }\n // locally remove card from old epic and add it to new one\n if (Object.keys(child.epic || {}).length) {\n dispatch('localRemoveCardFromEpic', child.id);\n }\n if (Object.keys(newParent.epic || {}).length) {\n dispatch('localAddCardToEpic', { cardId: child.id, epicBrief: newParentCard.epic });\n }\n\n // remove child card from old parent card\n return (\n api.boards\n // make sure to use child.parent_card.card_id as we update child card locally before sending request\n .removeChildCard(getters.getTeamID, child.parent_card?.card_id, childCard.id)\n .then(() =>\n api.boards.addChildCard(getters.getTeamID, newParent.id, {\n card_id: childCard.id,\n })\n )\n .catch(() => {\n // rollback changes\n dispatch('localUpdateCardField', {\n cardId: child.id,\n fieldName: 'parent_card',\n fieldValue: {\n card_id: oldParent.id,\n title: oldParent.title,\n list_color: oldParent.list_color,\n status: oldParent.status,\n },\n });\n if (Object.keys(oldParent).length) {\n dispatch('localAddCardToParent', {\n parentCard: oldParent,\n childCard: child,\n });\n }\n if (Object.keys(newParent).length) {\n dispatch('localRemoveCardFromParent', {\n childCardId: child.id,\n card: newParent,\n cardId: newParent.id,\n });\n }\n // revert old epic changes\n if (Object.keys(newParent.epic || {}).length) {\n dispatch('localRemoveCardFromEpic', child.id);\n }\n if (Object.keys(child.epic || {}).length) {\n dispatch('localAddCardToEpic', { cardId: child.id, epicId: child.epic.id });\n }\n })\n );\n },\n /**\n * Removes a certain card from its parent by using passed cardId.\n * @param {string} childCardId\n * @param {string} cardId\n */\n removeCardFromParent({ getters, commit, dispatch }, { childCardId, card, cardId = card.id }) {\n // remove card locally\n const { getTeamID, getCards } = getters;\n const oldParentCard = JSON.parse(JSON.stringify(getCards[cardId]?.parent_card || {}));\n const childCard = JSON.parse(JSON.stringify(getCards[childCardId]));\n dispatch('localRemoveCardFromParent', { childCardId, cardId });\n\n if (Object.keys(childCard.epic || {}).length) {\n dispatch('localRemoveCardFromEpic', childCardId);\n }\n\n return api.boards\n .removeChildCard(getTeamID, cardId, childCardId)\n .then(({ data }) => data)\n .catch((error) => {\n if (Object.keys(card || {}).length > 0) {\n const oldChildCardOrder = [...card.child_card_order];\n commit('localUpdateCardField', {\n cardId: cardId,\n fieldName: 'child_card_order',\n fieldValue: oldChildCardOrder,\n });\n }\n commit('localUpdateCardField', {\n cardId: childCardId,\n fieldName: 'parent_card',\n fieldValue: oldParentCard,\n });\n if (Object.keys(childCard.epic || {}).length) {\n dispatch('localAddCardToEpic', { cardId: childCardId, epicId: childCard.epic.id });\n }\n dispatch('addUiNotification', {\n message: translate('removeChildCardFail'),\n status: constants.uiNotificationStatuses.error,\n labels: [\n {\n text: translate('retry'),\n type: constants.uiNotificationElements.button,\n action: 'removeCardFromParent',\n buttonStyle: 'important',\n params: { childCardId, card },\n },\n ],\n });\n throw error;\n });\n },\n /**\n * Removes a local child card from parent.\n * @param {string} childCardId\n * @param {string} cardId\n */\n localRemoveCardFromParent({ commit, getters }, { childCardId, cardId }) {\n const { getCards } = getters;\n const parentCard = getCards[cardId];\n const childCard = getCards[childCardId];\n\n if (parentCard) {\n const childCardOrder = parentCard?.child_card_order ?? [];\n const childCardIndex = childCardOrder.findIndex((id: string) => id === childCardId);\n\n if (childCardIndex > -1) {\n childCardOrder.splice(childCardIndex, 1);\n }\n commit('localUpdateCardField', {\n cardId,\n fieldName: 'child_card_order',\n fieldValue: childCardOrder,\n });\n }\n\n if (childCard?.parent_card?.card_id == cardId) {\n commit('localUpdateCardField', {\n cardId: childCardId,\n fieldName: 'parent_card',\n fieldValue: {},\n });\n }\n },\n\n /**\n * Delete a card/epic.\n * https://api.superthread.com/v1/{team_id}/epics/{epic_id}\n * https://api.superthread.com/v1/{team_id}/cards/{card_id}\n * @param {string} card - card/epic that is being deleted\n */\n async deleteCard(\n { getters, dispatch, commit },\n { cardId, cardType }: { cardId: string; cardType: string }\n ) {\n const card = getters.getCards[cardId] || {};\n const cardsByEpicId: (Card | IEpic)[] = Object.values(getters.getCardsByEpicId(cardId));\n\n if (Object.keys(card).length === 0) return Promise.reject(new Error('Card not found'));\n\n const { list_id: listId, board_id: boardId, sprint_id: sprintId } = card;\n const isEpic = card.type === ResourceType.Epic;\n const cardListId = sprintId ? getSprintListKey(card.project_id, sprintId, listId) : listId;\n const cardBoardId = sprintId ? getSprintKey(card.project_id, sprintId) : boardId;\n\n if (card.parent_card) {\n dispatch('localRemoveCardFromParent', {\n childCardId: cardId,\n cardId: card.parent_card.card_id,\n });\n }\n\n if (card.child_cards?.length > 0) {\n card.child_cards.forEach((childCard: any) => {\n dispatch('localUpdateCardField', {\n cardId: childCard.id,\n fieldName: 'parent_card',\n fieldValue: {},\n });\n });\n }\n\n // removing relation from all linked cards\n if (card.linked_cards?.length > 0) {\n card.linked_cards.forEach((linkedCard: any) => {\n const card = getters.getCards[linkedCard.card_id];\n if (!card) return;\n const linkedCards = card.linked_cards || [];\n const removeLinkedCardIndex = linkedCards.findIndex((c: any) => c.card_id === cardId);\n if (removeLinkedCardIndex > -1) {\n linkedCards.splice(removeLinkedCardIndex, 1);\n dispatch('localUpdateCardField', {\n cardId: linkedCard.card_id,\n fieldName: 'linked_cards',\n fieldValue: linkedCards,\n });\n }\n });\n }\n\n // remove epic field from all cards that have this epic\n for (const c of cardsByEpicId) {\n commit('localUpdateCardField', {\n cardId: c.id,\n fieldName: 'epic',\n fieldValue: {},\n });\n }\n\n if (card.epic) {\n dispatch('localRemoveCardFromEpic', cardId);\n }\n\n const oldListCards = cloneDeep(toRaw(getters.getListCards[cardListId]) || []);\n dispatch('removeCardFromCards', card.id);\n dispatch('removeCardFromListCards', { listId: cardListId, cardId });\n dispatch('removeCardFromGroupByBoard', { boardId: cardBoardId, card });\n\n const isFavourite = getters.isFavourite(cardId, card.type);\n const viewResult = getters.getViewResults;\n\n try {\n let response;\n if (isEpic) {\n response = await api.boards.deleteEpic(getters.getTeamID, cardId);\n } else {\n response = await api.boards.deleteCard(getters.getTeamID, cardId);\n const viewCardIndex = viewResult.findIndex((c: any) => c.id === cardId);\n if (viewCardIndex > -1) {\n viewResult.splice(viewCardIndex, 1);\n dispatch('setViewResults', viewResult);\n dispatch('currentViewTotalCount', viewResult.length);\n }\n }\n dispatch('removeFromElectronRecentlyViewed', {\n currentlyViewed: {\n id: cardId,\n type:\n cardType === constants.epicRoute.name\n ? constants.epicRoute.name\n : constants.routeNames.boardCard,\n },\n teamId: getters.getTeamID,\n });\n if (isFavourite) {\n dispatch('deleteUserFavourite', {\n resource_id: cardId,\n resource_type: card.type,\n title: card.title,\n });\n }\n return response;\n } catch (error) {\n dispatch('addCardToCards', { card });\n dispatch('setListCards', { [listId]: oldListCards });\n dispatch('addCardToGroupByBoard', { boardId: cardBoardId, card });\n dispatch('localAddCardToParent', {\n parentCard: card.parent_card.card_id,\n childCard: cardId,\n });\n if (card.child_cards.length > 0) {\n card.child_cards.forEach((childCard: any) => {\n dispatch('localUpdateCardField', {\n cardId: childCard.id,\n fieldName: 'parent_card',\n fieldValue: cardId,\n });\n });\n }\n for (const c of cardsByEpicId) {\n commit('localUpdateCardField', {\n cardId: c.id,\n fieldName: 'epic',\n fieldValue: {\n id: cardId,\n title: card.title,\n icon: card.icon || {},\n },\n });\n }\n if (card.epic) {\n dispatch('localAddCardToEpic', { cardId: card.id, epicId: card.epic.id });\n }\n throw error;\n }\n },\n\n /**\n * Toggles checklist item to passed checklist item.\n * @param {object} checklistItem\n * https://api.superthread.com/v1/{team_id}/cards/{card_id}/checklists/{checklist_id}/items/{item_id}\n */\n checklistItemToggle({ getters }, { checklistItem, checklistId, cardId }) {\n const { id, checked } = checklistItem;\n const { getTeamID, getRoutes } = getters;\n const itemsUrl = getRoutes.checklistitems;\n return authPatch(\n `${itemsUrl}/v1/${getTeamID}/cards/${cardId}/checklists/${checklistId}/items/${id}`,\n { checked: !checked }\n ).then(({ data }) => data);\n },\n\n /**\n * Update checklist item\n * https://api.superthread.com/v1/{team_id}/checklists/{checklist_id}/items/{item_id}\n */\n updateChecklistItem({ getters }, { checklistId, checklistItemId: id, item, cardId }) {\n const { getTeamID, getRoutes } = getters;\n const itemsUrl = getRoutes.checklistitems;\n return authPatch(\n `${itemsUrl}/v1/${getTeamID}/cards/${cardId}/checklists/${checklistId}/items/${id}`,\n { ...item }\n )\n .then(({ data }) => data)\n .catch((error) => {\n throw error;\n });\n },\n\n /**\n * Sets card's creating view to display on a certain list by using passed listId.\n * @param {string} listId\n */\n setListDraftCardCreateView({ commit }, listId = '') {\n commit('setListDraftCardCreateView', listId);\n },\n /**\n * Moves the board to a certain project.\n * @param {string} boardId\n * @param {string} projectId\n */\n moveBoardToProject({ getters, dispatch, commit }, { boardId, projectId, position = -1 }) {\n const board = getters.getFlatBoards[boardId];\n const projectBoardsPosition = getters.getProjectBoards(board.project_id).indexOf(boardId);\n const originalProjectId = getters.draggingEntityProjectFromId.replace('pr-', '');\n const newProjectBoardsLength = getters.getProjectBoards(projectId).length;\n\n dispatch('removeProjectBoard', { boardId, projectId: originalProjectId });\n dispatch('addProjectBoard', {\n boardId,\n projectId,\n ...(position > -1 && newProjectBoardsLength && { position }),\n });\n\n dispatch('updateBoardPropertyInBoards', {\n boardId,\n propertyName: 'project_id',\n value: projectId,\n });\n\n commit('localUpdateProjectBoardOrder', {\n projectToId: projectId,\n projectFromId: originalProjectId,\n boardId,\n ...(position > -1 && newProjectBoardsLength && { position }),\n });\n\n return dispatch('updateBoard', {\n id: boardId,\n board: {\n project_id: projectId,\n ...(position > -1 && newProjectBoardsLength && { position }),\n },\n })\n .then(() => {\n if (projectId !== originalProjectId) {\n // update project ids in cards belonging to moved board\n const boardCardIds: any[] = [];\n (board.lists || []).forEach((l: any) => boardCardIds.push(l.card_order));\n dispatch('localUpdateCardFieldInMultipleCards', {\n cardIds: boardCardIds,\n fieldName: 'project_id',\n fieldValue: projectId,\n });\n }\n })\n .catch(() => {\n dispatch('removeProjectBoard', { boardId, projectId });\n dispatch('addProjectBoard', {\n boardId,\n projectId: originalProjectId,\n position: projectBoardsPosition,\n });\n dispatch('updateBoardPropertyInBoards', {\n boardId,\n propertyName: 'project_id',\n value: originalProjectId,\n });\n throw new Error('Could not move board.');\n });\n },\n\n localUpdateProjectBoardOrder({ commit }, { projectToId, projectFromId, boardId, position }) {\n commit('localUpdateProjectBoardOrder', {\n projectToId,\n projectFromId,\n boardId,\n position,\n });\n },\n\n addProjectBoard({ commit }, payload) {\n commit('addProjectBoard', payload);\n },\n\n /**\n * Stores position of recently removed list with list and board ids.\n */\n setRemovedBoardListPosition({ commit }, { position, boardId, listId }) {\n commit('setRemovedBoardListPosition', { position, boardId, listId });\n },\n /**\n * Stores position of recently removed card with list, card and board ids.\n */\n setRemovedCardPosition({ commit }, { position, cardId, boardId, listId }) {\n commit('setRemovedCardPosition', {\n position,\n cardId,\n boardId,\n listId,\n });\n },\n /**\n * Sets draggend entity object to the state.\n * @param {object} payload\n */\n setDraggedEntity({ commit }, payload) {\n commit('setDraggedEntity', payload);\n },\n /**\n * Sets dropTargetId to id of element in which dragging was finished.\n * @param {object} payload\n */\n setDropTargetId({ commit }, payload) {\n commit('setDropTargetId', payload);\n },\n /**\n * Moves the card to its parent card at passed position.\n * @param {object} childCard\n */\n moveCardToParent({ dispatch }, { childCard, parentCard }) {\n const alreadyAdded = parentCard.child_card_order.some((i: any) => i === childCard.card_id);\n\n if (alreadyAdded) return Promise.resolve();\n dispatch('localAddCardToParent', { parentCard, childCard });\n return dispatch('addChildCardToParent', { parentCard, childCard });\n },\n /**\n * Adds parent card to a card.\n * @param {object} parentCard\n * @param {object} childCard\n */\n addParentToCard({ dispatch, getters }, { parentCard, childCard }) {\n // check if already added\n if (getters.getCards[childCard.id].parent_card?.card_id === parentCard.id) {\n return Promise.resolve();\n }\n\n dispatch('localAddCardToParent', { parentCard, childCard });\n return dispatch('addChildCardToParent', { parentCard, childCard, initiatedByAddParent: true });\n },\n /**\n * Adds local child card to parent card.\n * @param {object} parentCard\n * @param {object} childCard\n */\n localAddCardToParent({ commit, getters }, { parentCard, childCard }) {\n const stateParentCard = getters.getCards[parentCard.id];\n if (!stateParentCard) return;\n\n const newChildCards = [...(stateParentCard.child_cards || [])];\n const newChildCardsOrder = [...(stateParentCard.child_card_order || [])];\n newChildCards.push(childCard);\n newChildCardsOrder.push(childCard.id);\n\n commit('localUpdateCardField', {\n cardId: parentCard.id,\n fieldName: 'child_card_order',\n fieldValue: newChildCardsOrder,\n });\n commit('localUpdateCardField', {\n cardId: parentCard.id,\n fieldName: 'child_cards',\n fieldValue: newChildCards,\n });\n },\n /**\n * Adds child card to parent card.\n * @param {object} parentCard\n * @param {object} childCard\n * @param {string} localCardId\n * @param {boolean} initiatedByAddParent - indicates whether action was initiated by adding parent to card\n */\n addChildCardToParent(\n { getters, dispatch },\n { parentCard, childCard, localCardId, initiatedByAddParent = false }\n ) {\n const { getRoutes, getTeamID, getCards } = getters;\n const baseUrl = getRoutes.cards;\n const path = `v1/${getTeamID}/cards/${parentCard.id}/child_cards`;\n return authPost(`${baseUrl}/${path}`, { card_id: childCard.id })\n .then(({ data }) => {\n if (localCardId) {\n dispatch('replaceLocalChildCardIdInParentCard', {\n parentCardId: parentCard.id,\n localId: localCardId,\n newId: data.child_card.card_id,\n });\n }\n if (getCards[childCard.id] && childCard.parent_card?.card_id !== parentCard.id) {\n dispatch('localUpdateCardField', {\n cardId: childCard.id,\n fieldName: 'parent_card',\n fieldValue: {\n card_id: parentCard.id,\n title: parentCard.title,\n list_color: parentCard.list_color,\n status: parentCard.status,\n },\n });\n }\n if (childCard.epic?.id) {\n dispatch('localRemoveCardFromEpic', childCard.id);\n }\n if (parentCard.epic) {\n dispatch('localAddCardToEpic', { cardId: childCard.id, epicBrief: parentCard.epic });\n }\n if (!initiatedByAddParent) {\n dispatch('completeOnboardingActions', [OnboardingActionType.AddChildCard]);\n }\n })\n .catch(() => {\n dispatch('localRemoveCardFromParent', {\n childCardId: localCardId || childCard.id,\n cardId: parentCard.id,\n });\n dispatch('addUiNotification', {\n message: translate('addChildCardFail'),\n status: constants.uiNotificationStatuses.error,\n labels: [\n {\n text: translate('retry'),\n type: constants.uiNotificationElements.button,\n action: 'addChildCardToParent',\n buttonStyle: 'important',\n params: { parentCard, childCard },\n },\n ],\n });\n });\n },\n\n /**\n * Replace local child card id in parent card.\n * @param {string} parentCardId\n * @param {string} localId\n * @param {string} newId\n * @example replaceLocalChildCardIdInParentCard({ parentCardId: '1', localId: 'RMnuPy', newId: '3' });\n */\n replaceLocalChildCardIdInParentCard({ commit }, { parentCardId, localId, newId }) {\n commit('replaceLocalChildCardIdInParentCard', { parentCardId, localId, newId });\n },\n\n /**\n * Update child card in parent card after response. ()\n * @param {object} childCard\n */\n updateChildCardAfterResponse({ commit }, { childCard }) {\n commit('localupdateChildCardInCard', { childCard });\n },\n /**\n * Toggles flag for displaying board in quick view.\n * @param {string} boardId\n */\n toggleBoardQuickView({ getters, commit }, { boardId, value = !getters.boardExpanded(boardId) }) {\n commit('toggleBoardQuickView', { boardId, value });\n },\n\n /**\n * Toggle all boards from specific project in quick view.\n * @param {string} projectId\n * @param {boolean} value\n */\n toggleProjectBoards({ commit, getters }, { value, projectId = getters.getCurrentProjectId }) {\n commit('toggleProjectBoards', { value, projectId });\n },\n /**\n * Toggle boards in the same row as board with passed id.\n * In one row can be only two boards.\n * @param {string} boardId\n * @param {boolean} value\n * @param {string} projectId\n */\n toggleBoardsInRow({ commit, getters }, { boardId, value, projectId }) {\n const boards = getters.getProjectBoards(projectId);\n const boardLength = boards.length;\n const lastBoardId = boards[boardLength - 1];\n const isOdd = boardLength % 2 !== 0;\n if (boardLength === 1 || (isOdd && boardId === lastBoardId)) {\n commit('toggleBoardQuickView', { boardId, value });\n return;\n }\n commit('toggleBoardsInRow', { boardId, value, projectId });\n },\n /**\n * Sets the property of a certain list on board by using passed listId.\n * @param {string} listId\n * @param {string} propertyName\n * @param {string} value\n */\n setBoardListProp({ commit }, { listId, propertyName, value }) {\n commit('setBoardListProp', { listId, propertyName, value });\n },\n /**\n * Adds a new member to the board with passed id.\n * @param {string} memberId\n * @param {string} boardId\n */\n addMemberToBoard({ getters, commit, dispatch }, { memberToAdd, boardId }) {\n const { getRoutes, getTeamID, getFlatBoards } = getters;\n const board = getFlatBoards[boardId];\n\n // check if member is allready added to board,\n // or board is just created and user wants to join it\n if (board?.members) {\n const membersLength = board.members.length;\n for (let i = 0; i < membersLength; i += 1) {\n if (board.members[i].user_id === memberToAdd.user_id) {\n return Promise.resolve();\n }\n }\n commit('localAddMemberToBoard', { memberToAdd, boardId });\n } else {\n return Promise.resolve();\n }\n\n return authPost(`${getRoutes.boards}/v1/${getTeamID}/boards/${boardId}/members`, {\n user_id: memberToAdd.user_id,\n })\n .then(({ data }) => {\n dispatch('addMemberToProject', {\n membersToAdd: [memberToAdd],\n projectId: board.project_id,\n });\n return data;\n })\n .catch((err) => {\n commit('localRemoveMemberFromBoard', { memberToRemove: memberToAdd, boardId });\n return err;\n });\n },\n /**\n * Removes a member from the board with passed id\n * @param {string} memberId\n * @param {string} boardId\n */\n removeMemberFromBoard({ commit, getters }, { memberToRemove, boardId }) {\n const { getRoutes, getTeamID } = getters;\n const userId = memberToRemove.user_id;\n\n commit('localRemoveMemberFromBoard', { memberToRemove, boardId });\n return authDelete(\n `${getRoutes.boards}/v1/${getTeamID}/boards/${boardId}/members/${userId}`\n ).catch(() => {\n commit('localAddMemberToBoard', { memberToAdd: memberToRemove, boardId });\n });\n },\n\n localAddMemberToCard({ getters, dispatch, commit }, { cardId, memberToAdd }) {\n const { getTeamID } = getters;\n const cards = getters.getCards;\n const card = cards[cardId];\n const boardId = card.sprint_id ? getSprintKey(card.project_id, card.sprint_id) : card.board_id;\n\n if (card) {\n const alreadyMember = card.members?.find((m: any) => m.user_id === memberToAdd.user_id);\n if (alreadyMember) {\n return Promise.resolve();\n }\n } else {\n return Promise.resolve(`Card not found: ${cardId}`);\n }\n\n const currentMembers = [...(card.members || [])];\n const newMembers = [...currentMembers, memberToAdd];\n\n // add member to board\n dispatch('addMemberToBoard', { memberToAdd, boardId });\n\n commit('localUpdateCardField', {\n cardId,\n fieldName: 'members',\n fieldValue: newMembers,\n });\n\n commit('addGroupByList', {\n boardId,\n epicId: card.epic?.id,\n listId: memberToAdd.user_id,\n groupBy: groupByOption.assignee,\n teamId: getTeamID,\n });\n commit('removeCardFromGroupByList', {\n boardId,\n epicId: card.epic?.id,\n cardId: card.id,\n listId: 'unassigned',\n groupBy: groupByOption.assignee,\n teamId: getTeamID,\n });\n commit('addCardToGroup', {\n boardId,\n epicId: card.epic?.id,\n cardId: card.id,\n listId: memberToAdd.user_id,\n groupBy: groupByOption.assignee,\n teamId: getTeamID,\n });\n },\n /**\n * Adds a new member to the card with passed id.\n * @param {string} memberId\n * @param {string} cardId\n */\n addMemberToCard({ getters }, { memberToAdd, cardId }) {\n const { getRoutes, getTeamID } = getters;\n\n return authPost(`${getRoutes.cards}/v1/${getTeamID}/cards/${cardId}/members`, {\n user_id: memberToAdd.user_id,\n role: 'member',\n })\n .then(({ data }) => data)\n .catch((err: Error) => {\n return Promise.reject(err);\n });\n },\n localRemoveMemberFromCardBoardView({ commit }, { cardId, memberId }) {\n commit('localRemoveMemberFromCardBoardView', { cardId, memberId });\n },\n\n localRemoveMemberFromCard({ getters, commit }, { cardId, memberToRemove }) {\n const { getTeamID, getCards } = getters;\n const card = getCards[cardId];\n\n const memberId = memberToRemove?.user_id;\n\n if (!memberId) return;\n\n commit('localRemoveMemberFromCardBoardView', { cardId, memberId });\n\n commit('removeCardFromGroupByList', {\n boardId: card.board_id,\n epicId: card.epic?.id,\n cardId: card.id,\n listId: memberId,\n groupBy: groupByOption.assignee,\n teamId: getTeamID,\n });\n if (card.members.length === 0) {\n commit('addCardToGroup', {\n boardId: card.board_id,\n epicId: card.epic?.id,\n cardId: card.id,\n listId: 'unassigned',\n groupBy: groupByOption.assignee,\n teamId: getTeamID,\n });\n }\n },\n /**\n * Removes the member from a card.\n * @param {string} memberId\n * @param {string} cardId\n */\n removeMemberFromCard({ getters }, { memberToRemove, cardId }) {\n const { getTeamID, getRoutes } = getters;\n const memberId = memberToRemove?.user_id;\n if (!memberId) return;\n\n return authDelete(`${getRoutes.cards}/v1/${getTeamID}/cards/${cardId}/members/${memberId}`)\n .then(({ data }) => data)\n .catch((err: Error) => {\n return Promise.reject(err);\n });\n },\n /**\n * Sets flag for removing board's data.\n * @param {boolean} payload\n */\n setBoardViewNoDestroy({ commit }, payload) {\n commit('setBoardViewNoDestroy', payload);\n },\n /**\n * Sets flag for displaying draft list input when there aren't any lists on the board.\n * @param {boolean} payload\n */\n setDraftListInputVisibleOnOpen({ commit }, payload) {\n commit('setDraftListInputVisibleOnOpen', payload);\n },\n /**\n * Sets type of board list view(list or grid view)\n * @param {string} value\n */\n setBoardListView({ commit }, value) {\n commit('setBoardListView', value);\n },\n /**\n * Sets object of tag that needs to be edited\n * @param {object} tagForEdit\n */\n setCurrentTagForEdit({ commit }, tagForEdit) {\n commit('setCurrentTagForEdit', tagForEdit);\n },\n\n localAddChecklistItemToCard({ commit, getters }, { cardId, checklistItem, index }) {\n const card = JSON.parse(JSON.stringify(getters.getCards[cardId]));\n\n if (card) {\n const { checklists } = card;\n const clIndex = checklists.findIndex((cl: any) => cl.id === checklistItem.checklist_id);\n if (clIndex > -1) {\n checklists[clIndex].items.splice(index, 0, checklistItem);\n }\n commit('localUpdateCardField', {\n cardId,\n fieldName: 'checklists',\n fieldValue: checklists,\n });\n }\n },\n\n localUpdateChecklistItemIdInCard(\n { commit, getters },\n { localItem = false, cardId, checklistId, checklistItemId, ...rest }\n ) {\n const { checklists } = JSON.parse(JSON.stringify(getters.getCards[cardId]));\n const checklistIndex = checklists.findIndex((cl: any) => cl.id === checklistId);\n if (checklistIndex > -1) {\n const checklistItems = checklists[checklistIndex].items;\n if (!checklistItems) return;\n const key = localItem ? 'locaId' : 'id';\n const { item, itemIndex: index } = getItemAndIndex(checklistItems, checklistItemId, key);\n\n const newItem = { ...item, ...rest };\n checklistItems.splice(index, 1, newItem);\n commit('localUpdateCardField', {\n cardId,\n fieldName: 'checklists',\n fieldValue: checklists,\n });\n }\n },\n\n addTagToCard({ getters }, { cardId, tagId }) {\n const { getTeamID } = getters;\n\n return api.boards.addCardTags(getTeamID, cardId, { id: tagId }).catch((error) => {\n return error;\n });\n },\n\n removeCardTag({ getters }, { cardId, tagId }) {\n const { getTeamID } = getters;\n\n return api.boards.removeCardTag(getTeamID, cardId, tagId).catch((error) => {\n return error;\n });\n },\n localAddTagToCard({ commit, getters }, { cardId, tag }) {\n const { getCards, getTeamID } = getters;\n const card = getCards[cardId];\n const boardId = card.sprint_id ? getSprintKey(card.project_id, card.sprint_id) : card.board_id;\n\n commit('addGroupByList', {\n boardId,\n epicId: card.epic?.id,\n listId: tag.id,\n groupBy: groupByOption.tag,\n teamId: getTeamID,\n });\n commit('removeCardFromGroupByList', {\n boardId,\n epicId: card.epic?.id,\n cardId: card.id,\n listId: 'notags',\n groupBy: groupByOption.tag,\n teamId: getTeamID,\n });\n commit('addCardToGroup', {\n boardId,\n epicId: card.epic?.id,\n cardId: card.id,\n listId: tag.id,\n groupBy: groupByOption.tag,\n teamId: getTeamID,\n });\n commit('localAddTagToCard', { cardId, tag });\n },\n localAddTagToBoard({ commit }, { boardId, tag }) {\n commit('localAddTagToBoard', { boardId, tag });\n },\n\n setShowImageUploadPopup({ commit }, value) {\n commit('setShowImageUploadPopup', value);\n },\n /** Sets the card id for action edit.\n * @param {string} cardId\n */\n setCurrentCardIdForActionEdit({ commit }, cardId) {\n commit('setCurrentCardIdForActionEdit', cardId);\n },\n /**\n * Sets the list id for action edit.\n * @param {string} listId\n */\n setCurrentListIdForActionEdit({ commit }, listId) {\n commit('setCurrentListIdForActionEdit', listId);\n },\n /**\n * Sets type of board view\n * @param {string} value\n */\n setCardsLayout({ commit, getters }, { value, boardId = getters.currentBoardId }) {\n if (!boardId) return;\n\n if (!value) {\n const { value } = getters.cardsLayoutOptions.find(\n (option: CardsLayoutOption) => option.default\n );\n commit('setCardsLayout', { boardId, value });\n } else if (\n getters.cardsLayoutOptions.map((option: CardsLayoutOption) => option.value).includes(value)\n ) {\n commit('setCardsLayout', { boardId, value });\n }\n },\n\n addChecklistToListCards({ commit, getters }, { checklistId, checklistTitle, cardId }) {\n let cardChecklists = [...getters.getCards[cardId].checklists];\n let checklistOrder = [...(getters.getCards[cardId].checklist_order || [])];\n let checklistItemOrder = { ...(getters.getCards[cardId].checklist_item_order || {}) };\n const newChecklist = {\n id: checklistId,\n title: checklistTitle,\n items: [],\n };\n\n if (cardChecklists == null) {\n cardChecklists = [newChecklist];\n checklistOrder = [checklistId];\n checklistItemOrder = { [checklistId]: [] };\n } else {\n cardChecklists.push(newChecklist);\n checklistOrder.push(checklistId);\n checklistItemOrder[checklistId] = [];\n }\n\n commit('localUpdateCardField', {\n cardId,\n fieldName: 'checklists',\n fieldValue: cardChecklists,\n });\n\n commit('localUpdateCardField', {\n cardId,\n fieldName: 'checklist_order',\n fieldValue: checklistOrder,\n });\n\n commit('localUpdateCardField', {\n cardId,\n fieldName: 'checklist_item_order',\n fieldValue: checklistItemOrder,\n });\n },\n\n addBoardInBoards({ commit }, board) {\n commit('addBoardInBoards', board);\n },\n\n removeBoardFromProjectBoards({ commit }, board) {\n commit('removeBoardFromProjectBoards', board);\n },\n\n updateCardOrderInPreviewBoards({ commit }, { boardId, listId, order }) {\n commit('updateCardOrderInPreviewBoards', { boardId, listId, order });\n },\n\n setCurrentCardChecklistsOrder({ commit }, { checklistsOrder, cardId }) {\n commit('localUpdateCardField', {\n cardId,\n fieldName: 'checklist_order',\n fieldValue: checklistsOrder,\n });\n },\n\n setAttachments({ commit }, payload) {\n commit('setAttachments', { files: payload.files, id: payload.id, prefix: payload.prefix });\n },\n\n localAddAttachment({ commit }, { attachment, id, prefix = '' }) {\n commit('localAddAttachment', { attachment, id, prefix });\n },\n\n localRemoveAttachment({ commit }, { id, attachmentId, prefix = '' }) {\n commit('localRemoveAttachment', { id, attachmentId, prefix });\n },\n\n updateCardAttachmentId({ commit }, { attachment, localId, cardId }) {\n commit('updateCardAttachmentId', { attachment, localId, cardId });\n },\n\n setUploadFailedFlag({ commit }, { localId, file, cardId, value }) {\n commit('setUploadFailedFlag', { localId, file, cardId, value });\n },\n\n addCardFailedAttachment({ commit }, attachment) {\n commit('addCardFailedAttachment', attachment);\n },\n\n removeOrReplaceLocalCurrentCardChecklistItemOrder(\n { commit, getters },\n { cardId, localId, newId = null }\n ) {\n const checklistItemOrder = { ...(getters.getCards[cardId].checklist_item_order || []) };\n if (newId !== null) {\n checklistItemOrder[newId] = checklistItemOrder[localId];\n }\n delete checklistItemOrder[localId];\n\n commit('localUpdateCardField', {\n cardId,\n fieldName: 'checklist_item_order',\n fieldValue: checklistItemOrder,\n });\n },\n\n resetBoardState({ commit }) {\n commit('resetBoardState');\n },\n\n setCardAutoFocus({ commit }, payload) {\n commit('setCardAutoFocus', payload);\n },\n\n setPreviewPopoverKey({ commit }, payload) {\n commit('setPreviewPopoverKey', payload);\n },\n\n setAttachmentTargetCardId({ commit }, id) {\n commit('setAttachmentTargetCardId', id);\n },\n\n setCardAttachmentsLoaded({ commit }, value) {\n commit('setCardAttachmentsLoaded', value);\n },\n\n setProjectPreviewBoards({ commit }, { projectId, projectBoards }) {\n commit('setProjectPreviewBoards', { projectBoards, projectId });\n },\n\n clearProjectPreviewBoards({ commit }) {\n commit('clearProjectPreviewBoards');\n },\n\n setProjectPreview({ commit }, project) {\n commit('setProjectPreview', project);\n },\n\n displayProjectPreviewBoards({ commit }, payload) {\n commit('displayProjectPreviewBoards', payload);\n },\n\n setNewBoardTitle({ commit }, title) {\n commit('setNewBoardTitle', title);\n },\n\n setCurrentCardIdMemberDropdown({ commit }, cardId) {\n commit('setCurrentCardIdMemberDropdown', cardId);\n },\n\n setCurrentCardMembersDropdown({ commit }, members) {\n commit('setCurrentCardMembersDropdown', members);\n },\n\n setCurrentCardIdForPopup({ commit }, cardId) {\n commit('setCurrentCardIdForPopup', cardId);\n },\n\n updateCardTotalCommentsCount({ dispatch }, { cardId, currentCommentsCount, decrease = false }) {\n const value = decrease ? -1 : 1;\n dispatch('localUpdateCardField', {\n cardId,\n fieldName: 'total_comments',\n fieldValue: currentCommentsCount + value,\n });\n },\n\n setCardAttachmentUploadingId({ commit }, cardId) {\n commit('setCardAttachmentUploadingId', cardId);\n },\n\n /**\n * Update child cards\n * https://api.superthread.com/v1/{team_id}/cards/{card_id}/child_cards/{child_card_id}\n */\n updateChildCards({ getters, dispatch }, { childCardOrder, childCardId, item, cardId }) {\n const { getTeamID, getRoutes } = getters;\n const card = getters.getCardById(cardId);\n const oldChildCardOrder = [...card.child_card_order];\n const cardsUrl = getRoutes.cards;\n\n dispatch('localUpdateCardField', {\n cardId,\n fieldName: 'child_card_order',\n fieldValue: childCardOrder,\n });\n\n return authPatch(`${cardsUrl}/v1/${getTeamID}/cards/${cardId}/child_cards/${childCardId}`, {\n ...item,\n })\n .then(({ data }) => data)\n .catch((error) => {\n dispatch('localUpdateCardField', {\n cardId,\n fieldName: 'child_card_order',\n fieldValue: oldChildCardOrder,\n });\n\n dispatch('addUiNotification', {\n message: translate('moveChildCardFail'),\n status: constants.uiNotificationStatuses.error,\n labels: [\n {\n text: translate('retry'),\n type: constants.uiNotificationElements.button,\n action: 'updateChildCards',\n buttonStyle: 'important',\n params: { childCardOrder, childCardId, item },\n },\n ],\n });\n throw error;\n });\n },\n\n moveCardHandler(\n { getters, dispatch },\n {\n cardModel,\n cardId,\n destinationProjectId,\n destinationBoardId,\n destinationListId,\n destinationPosition,\n originalProjectId,\n originalBoardId,\n originalListId,\n originalPosition,\n route,\n }\n ) {\n addCard({\n cardModel,\n cardId,\n destinationProjectId,\n destinationBoardId,\n destinationListId,\n destinationPosition,\n originalProjectId,\n originalBoardId,\n originalListId,\n originalPosition,\n storeGetters: getters,\n storeDispatch: dispatch,\n route,\n });\n },\n /*\n * Sets flag that indicates is duplicate card popup opened\n * @param {boolean} payload\n */\n setShowDuplicateCardPopup({ commit }, payload) {\n commit('setShowDuplicateCardPopup', payload);\n },\n\n setShowDuplicateBoardPopup({ commit }, payload) {\n commit('setShowDuplicateBoardPopup', payload);\n },\n\n setShowSetParentCardPopup({ commit }, payload) {\n commit('setShowSetParentCardPopup', payload);\n },\n\n /**\n * Creates a duplicated card from passed cardId.\n * https://api.superthread.com/v1/{team_id}/cards/{card_id}\n * @param {object} { cardId: string, newCard: object }\n */\n duplicateCard({ getters, dispatch }, { cardId, newCard }) {\n const { getTeamID, cardsSchema } = getters;\n\n const copyCard = {\n ...(newCard.title && { title: newCard.title }),\n project_id: newCard.project_id,\n ...(newCard.board_id && { board_id: newCard.board_id }),\n ...(newCard.sprint_id && { sprint_id: newCard.sprint_id }),\n list_id: newCard.list_id,\n schema: newCard.schema ?? cardsSchema,\n };\n if (!copyCard.project_id) return Promise.reject(new Error('Missing card property project id'));\n if (!copyCard.board_id && !copyCard.sprint_id)\n return Promise.reject(new Error('Missing card property board_id and sprint_id'));\n if (!copyCard.list_id) return Promise.reject(new Error('Missing card property list id'));\n\n return api.boards\n .createCardCopy(getTeamID, cardId, copyCard)\n .then(({ data }) => {\n dispatch('completeOnboardingActions', [OnboardingActionType.CreateCard]);\n return data;\n })\n .catch((error) => {\n throw error;\n });\n },\n\n cardRelationships({ getters }, { body, cardId }) {\n return api.boards\n .addLinkedCard(getters.getTeamID, cardId, body)\n .then(({ data }) => data)\n .catch((error) => {\n throw error;\n });\n },\n\n removeCardRelationships(\n { getters },\n { linkedCardId, cardId }: { linkedCardId: string; cardId: string }\n ) {\n return api.boards\n .removeLinkedCard(getters.getTeamID, cardId, linkedCardId)\n .then(({ data }) => data)\n .catch((error) => {\n throw error;\n });\n },\n\n setLinkedCardType({ commit }, payload) {\n commit('setLinkedCardType', payload);\n },\n\n updateBoardPropertyInBoards({ commit }, { boardId, propertyName, value }) {\n commit('updateBoardPropertyInBoards', { boardId, propertyName, value });\n },\n\n handleCardCreated({ commit }, { card, listId }) {\n commit('addCardToCards', { card });\n const listIdToSet = card.sprint_id\n ? getSprintListKey(card.project_id, card.sprint_id, listId)\n : listId;\n commit('addCardToListCards', { listId: listIdToSet, cardId: card.id });\n },\n\n localUpdateCard({ commit, getters, dispatch }, { cardId, projectId, changes }) {\n const { displayProjectPreviewBoards } = getters;\n if (displayProjectPreviewBoards) return;\n\n const card = getters.getCards[cardId];\n const teamId = getters.getTeamID;\n if (!card) return;\n changes.forEach((change: any) => {\n if (change.path.includes('total_files')) {\n dispatch('getFiles', { card_id: cardId });\n }\n switch (change.type) {\n case 'create':\n commit('cardWsEventsCreate', { change, cardId, projectId, teamId });\n if (change.path[0] === 'child_cards') {\n const cardId = change.to?.card_id;\n const card = { ...change.to, id: cardId };\n const board = getters.getFlatBoards[card.board_id] || {};\n if (!board?.lists) {\n dispatch('fetchBoard', { boardId: card.board_id });\n }\n }\n break;\n case 'update':\n if (change.path[2] === 'archived') {\n const cardId = change.path[1];\n dispatch('archiveHandler', { cardId, change });\n }\n commit('cardWsEventsUpdate', { change, cardId });\n break;\n case 'delete':\n commit('cardWsEventsDelete', { change, cardId });\n break;\n }\n });\n },\n\n // todo: use getCardCollaboration instead on new API version\n refreshCardCollaboration({ commit, getters }, { id }) {\n const { getTeamID } = getters;\n return api.boards\n .getCard(getTeamID, id)\n .then(({ data }) => {\n commit('localUpdateCardField', {\n cardId: id,\n fieldName: 'collaboration',\n // @ts-ignore\n fieldValue: toRaw(data.card?.collaboration),\n });\n })\n .catch(() => {});\n },\n\n archiveHandler({ getters, dispatch }, { cardId, change }) {\n if (change.from) {\n //restoring card\n dispatch('fetchCard', { cardId }).then((card) => {\n if (!getters.getListCards[card.list_id]?.includes(cardId)) {\n dispatch('addCardToListCards', {\n listId: card.list_id,\n cardId: cardId,\n });\n if (card.board_id) {\n dispatch('fetchBoard', { boardId: card.board_id });\n }\n }\n });\n } else {\n //archiving card\n const card = getters.getCards[cardId];\n dispatch('removeCardFromListCards', {\n listId: card.list_id,\n cardId: cardId,\n });\n }\n },\n fetchReport({ getters, commit }, query) {\n const boardId = query.board_id;\n return api.reports\n .reportsDetail(getters.getTeamID, query)\n .then(({ data }) => {\n const { report } = data;\n commit('setReportInfoData', { boardId, report });\n })\n .catch((error) => {\n throw error;\n });\n },\n\n setTimeperoidOptions({ commit }, value) {\n commit('setTimeperoidOptions', value);\n },\n\n setCardDraggingEnd({ commit }, value) {\n commit('setCardDraggingEnd', value);\n },\n\n setSingleListInListCards({ commit }, { listId, value }) {\n commit('setSingleListInListCards', { listId, value });\n },\n\n addCardToListCards({ commit }, { listId, cardId }) {\n commit('addCardToListCards', { listId, cardId });\n },\n\n removeCardFromListCards({ commit }, { listId, cardId }) {\n commit('removeCardFromListCards', { listId, cardId });\n },\n\n addCardToCards({ commit }, { card }) {\n commit('addCardToCards', { card });\n },\n\n removeCardFromCards({ commit }, cardId) {\n commit('removeCardFromCards', cardId);\n },\n\n /**\n * Fetches card/epic depending on type passed by id\n * @param {string} cardId - id of card/epic\n * @param {string} teamId - id of team\n * @param {ResourceType} type - type of resource\n */\n fetchCard(\n { commit, getters, dispatch },\n {\n cardId,\n teamId = getters.getTeamID,\n type = ResourceType.Card,\n }: {\n cardId: string;\n teamId?: string;\n type?: ResourceType;\n }\n ): Promise {\n const existingPromise = activePromises.cards[cardId];\n if (existingPromise !== undefined) return existingPromise;\n\n const isEpic = type == ResourceType.Epic;\n const req = isEpic\n ? api.boards.getEpicCard(teamId, cardId)\n : api.boards.getCard(teamId, cardId);\n\n const promise = req\n .then(({ data }: { data: GetCardResponse | GetEpicResponse }) => {\n const card = isEpic\n ? ((data as GetEpicResponse).epic as IEpic)\n : (data as GetCardResponse).card;\n if (!card) throw new Error('Invalid response');\n\n if (isEpic) card.board_id = constants.epicsBoardId;\n if (card && !card.owner_id) card.owner_id = '';\n\n if (teamId === getters.getTeamID) {\n commit('addCardToCards', { card });\n }\n\n return card;\n })\n .catch((error) => {\n const currentRouteName = getters.getCurrentRoute.name;\n if (error.response?.status === 403 && currentRouteName === constants.routeNames.boardCard) {\n const isCardDisplayed = getters.getIsCardDisplayed(cardId);\n if (isCardDisplayed) {\n dispatch('removeDisplayedCardsByField', {\n field: 'id',\n value: cardId,\n });\n\n const isOnlyCardDisplayed = getters.getDisplayedCards.length === 1;\n if (isOnlyCardDisplayed) {\n dispatch('itemNotFound', true);\n }\n }\n }\n throw error;\n })\n .finally(() => {\n delete activePromises.cards[cardId];\n });\n\n activePromises.cards[cardId] = promise;\n return promise;\n },\n\n setDraggingEnd({ commit }, value) {\n commit('setDraggingEnd', value);\n },\n\n /**\n * Sets card(s) to be displayed, this will replace all currently displayed cards.\n * Passing an empty array or undefined will clear displayed cards.\n */\n setDisplayedCards({ commit, rootState }, payload: DisplayedCardPayload = []) {\n commit('setDisplayedCards', getNormalizedDisplayedCardPayload(rootState, payload));\n },\n\n /**\n * Adds card(s) to displayed cards, without replacing current ones.\n */\n addDisplayedCards({ commit, rootState }, payload: DisplayedCardPayload = []) {\n commit('addDisplayedCards', getNormalizedDisplayedCardPayload(rootState, payload));\n },\n\n /**\n * Removes card(s) from displayed cards.\n */\n removeDisplayedCards({ commit }, payload: string[] | string) {\n commit('removeDisplayedCards', payload);\n },\n\n /**\n * Removes card(s) from displayed cards by field\n * shouldMatch - if true, will remove cards that match the value, if false, will remove cards that do not match the value\n * E.g. removeDisplayedCardsByField({ field: 'layout', value: 'fullscreen' }) will remove all cards with layout 'fullscreen'\n * E.g. removeDisplayedCardsByField({ field: 'layout', value: 'fullscreen', shouldMatch: false}) will remove all cards with layout other than 'fullscreen'\n */\n removeDisplayedCardsByField({ commit }, { field, value, shouldMatch = true }) {\n commit('removeDisplayedCardsByField', { field, value, shouldMatch });\n },\n\n /**\n * Changes value of field of displayed card.\n */\n setFieldOfDisplayedCard(\n { commit },\n { id, value, field }: { id: string; value: any; field: keyof DisplayedCard }\n ) {\n commit('setFieldOfDisplayedCard', { id, value, field });\n },\n\n /**\n * Changes value of fields of displayed card.\n */\n setFieldsOfDisplayedCard(\n { commit },\n { id, payload }: { id: string; payload: Array<{ field: keyof DisplayedCard; value: any }> }\n ) {\n commit('setFieldsOfDisplayedCard', { id, payload });\n },\n\n /**\n * Sets the layout in which cards should be displayed by default to state and local storage.\n * @param layout - new layout ot be set\n */\n setCurrentCardLayout({ commit }, layout: string) {\n commit('setCurrentCardLayout', layout);\n },\n\n removeCardFromArchived({ commit }, cardId) {\n commit('removeCardFromArchived', cardId);\n },\n\n setChecklistCollapsedIds({ commit }, cheklistIds) {\n commit('setChecklistCollapsedIds', cheklistIds);\n },\n\n setHiddenItemChecklistIds({ commit }, cheklistIds) {\n commit('setHiddenItemChecklistIds', cheklistIds);\n },\n\n setBoardFilters({ commit, getters }, payload) {\n commit('setBoardFilters', { ...payload, teamId: getters.getTeamID });\n },\n\n setBoardPills({ commit }, payload) {\n commit('setBoardPills', payload);\n },\n\n fetchTags({ commit, getters }, { projectId }) {\n const existingPromise = activePromises.tags[projectId];\n if (existingPromise !== undefined) return existingPromise;\n\n const { getTeamID } = getters;\n const promise = api.boards\n .getTags(getTeamID, {\n project_id: projectId,\n })\n .then(({ data }) => {\n commit('setTags', {\n tagsArray: data.tags || [],\n projectId,\n teamId: getTeamID,\n });\n })\n .finally(() => {\n delete activePromises.tags[projectId];\n });\n\n activePromises.tags[projectId] = promise;\n return promise;\n },\n\n mergeTags({ getters }, tag) {\n return authPost(`${getters.getRoutes.cards}/v1/${getters.getTeamID}/tags/merge`, {\n name: tag.name,\n color: tag.color,\n }).then(({ data }) => data);\n },\n\n createTag({ getters }, { tag, projectId }) {\n return authPost(`${getters.getRoutes.cards}/v1/${getters.getTeamID}/tags`, {\n ...tag,\n ...(projectId && { project_id: projectId }),\n }).catch((error) => {\n throw error;\n });\n },\n\n updateTag({ getters }, { tagId, tag }) {\n return authPatch(`${getters.getRoutes.cards}/v1/${getters.getTeamID}/tags/${tagId}`, {\n ...tag,\n })\n .then(({ data }) => data)\n .catch((error) => {\n throw error;\n });\n },\n\n updateLocalCardTag({ commit }, { cardId, tagId, tag }) {\n commit('updateLocalCardTag', { cardId, tagId, tag });\n },\n\n updateLocalTag({ commit }, { tagId, tag, cardId }) {\n commit('updateLocalTag', { tagId, tag, cardId });\n },\n\n removeLocalPropFromTag({ commit }, { tagId, prop }) {\n commit('removeLocalPropFromTag', { tagId, prop });\n },\n\n deleteLocalTag({ commit }, { tagId }) {\n commit('deleteLocalTag', { tagId });\n },\n\n deleteTag({ getters }, { tagId }) {\n return authDelete(`${getters.getRoutes.cards}/v1/${getters.getTeamID}/tags/${tagId}`).catch(\n (error) => {\n throw error;\n }\n );\n },\n\n localDeleteTagFromCard({ commit, getters }, { cardId, tagId }) {\n const { getCards, getTeamID } = getters;\n const card = getCards[cardId];\n\n commit('removeCardFromGroupByList', {\n boardId: card.board_id,\n epicId: card.epic?.id,\n cardId: card.id,\n listId: tagId,\n groupBy: groupByOption.tag,\n teamId: getTeamID,\n });\n if (card.tags.length === 1) {\n commit('addCardToGroup', {\n boardId: card.board_id,\n epicId: card.epic?.id,\n cardId: card.id,\n listId: 'notags',\n groupBy: groupByOption.tag,\n teamId: getTeamID,\n });\n }\n\n commit('localDeleteTagFromCard', { cardId, tagId });\n },\n\n bulkDeleteTagFromCards({ commit }, { tagId }) {\n commit('localDeleteTagFromCards', { tagId });\n },\n\n addLocalTag({ commit }, { tag }) {\n commit('addLocalTag', { tag });\n },\n\n updateLocalTagId({ commit }, { localTagId, tag }) {\n commit('updateLocalTagId', { localTagId, tag });\n },\n\n setCardCommentAttachmentUploadPopup({ commit }, value) {\n commit('setCardCommentAttachmentUploadPopup', value);\n },\n\n /**\n * Sets a flag that indicates that the upload popup\n * has been triggered from a card description.\n */\n setCardDescriptionAttachmentUploadPopup({ commit }, value) {\n commit('setCardDescriptionAttachmentUploadPopup', value);\n },\n\n setLastOpenedBoardId({ commit }, boardId) {\n commit('setLastOpenedBoardId', boardId);\n },\n\n setBoardList({ commit }, { listId, list }) {\n commit('setBoardList', { listId, list });\n },\n\n removeBoardFromBoards({ commit }, boardId) {\n commit('removeBoardFromBoards', boardId);\n },\n\n removeBoardsListsIds({ commit }, boardId) {\n commit('removeBoardsListsIds', boardId);\n },\n\n removeMultipleBoardLists({ commit }, listIds) {\n commit('removeMultipleBoardLists', listIds);\n },\n setFlatBoards({ commit }, boards) {\n commit('setFlatBoards', boards);\n },\n\n lastHoveredListId({ commit }, listId) {\n commit('lastHoveredListId', listId);\n },\n\n lastHoveredDisplayedCardId({ commit }, cardId: string) {\n commit('lastHoveredDisplayedCardId', cardId);\n },\n\n lastHoveredCardId({ commit }, cardId) {\n commit('lastHoveredCardId', cardId);\n },\n\n setSelectedCardId({ commit }, cardId) {\n commit('setSelectedCardId', cardId);\n },\n\n setBoardViewMouseSuspended({ commit }, value) {\n commit('setBoardViewMouseSuspended', value);\n },\n\n setChecklistInputActive({ commit }, { checklistId, isActive }) {\n commit('setChecklistInputActive', { checklistId, isActive });\n },\n setChecklistItemInputActive({ commit }, { checklistItemId, isActive }) {\n commit('setChecklistItemInputActive', { checklistItemId, isActive });\n },\n\n setCardOwnerId({ commit }, { ownerId, cardId }: { ownerId: string; cardId: string }) {\n commit('setCardOwnerId', { ownerId, cardId });\n },\n\n addBoardToBookmarked({ commit }, board) {\n commit('addBoardToBookmarked', { ...board, is_bookmarked: true });\n },\n setListCards({ commit }, listCards) {\n commit('setListCards', listCards);\n },\n\n fetchCardTemplates({ commit, getters }, projectId) {\n return api.boards\n .getCardTemplates(getters.getTeamID, {\n ...(projectId && { project_id: projectId }),\n })\n .then(({ data }) => {\n commit('setCardTemplates', data.card_templates || []);\n return data;\n })\n .catch((error) => {\n throw error;\n });\n },\n\n fetchCardTemplate({ commit, getters }, templateId) {\n if (!templateId) return Promise.resolve({});\n\n return api.boards\n .getCardTemplate(getters.getTeamID, templateId)\n .then(({ data: { card_template: cardTemplate } }) => {\n commit('setCardTemplate', cardTemplate || {});\n return cardTemplate;\n })\n .catch((error) => {\n throw error;\n });\n },\n\n createCardTemplate({ commit, getters }, cardTemplate = getters.getCardTemplateDraft) {\n const tempId = nanoid(4);\n commit('setCardTemplate', {\n ...cardTemplate,\n id: tempId,\n user: { user_id: getters.getUserId },\n });\n\n return api.boards\n .createCardTemplate(getters.getTeamID, {\n ...cardTemplate,\n })\n .then(({ data }) => {\n commit('replaceCardTemplateId', { localId: tempId, template: data.card_template ?? {} });\n return data;\n })\n .catch((error) => {\n commit('deleteCardTemplate', tempId);\n throw error;\n });\n },\n\n updateCardTemplate(\n { commit, getters },\n {\n templateId,\n cardTemplate = getters.getCardTemplateDraft,\n user = { user_id: getters.getUserId },\n }\n ) {\n if (!templateId) return Promise.resolve({});\n\n const oldTemplate = getters.getCardTemplates[templateId];\n commit('setCardTemplate', {\n id: templateId,\n ...cardTemplate,\n user,\n user_updated: { user_id: getters.getUserId },\n });\n return api.boards\n .updateCardTemplate(getters.getTeamID, templateId, {\n ...cardTemplate,\n })\n .then(({ data }) => {\n commit('setCardTemplate', { id: templateId, ...data.card_template });\n return data;\n })\n .catch((error) => {\n commit('setCardTemplate', { id: templateId, ...oldTemplate });\n throw error;\n });\n },\n\n deleteCardTemplate({ commit, getters }, templateId) {\n if (!templateId) return Promise.resolve({});\n\n const oldTemplate = getters.getCardTemplates[templateId];\n commit('deleteCardTemplate', templateId);\n return api.boards.deleteCardTemplate(getters.getTeamID, templateId).catch((error) => {\n commit('setCardTemplate', { id: templateId, ...oldTemplate });\n throw error;\n });\n },\n\n setCardTemplateDraft({ commit }, template) {\n commit('setCardTemplateDraft', template);\n },\n\n setMembersToCardTemplate({ commit }, payload) {\n commit('setMembersToCardTemplate', payload);\n },\n\n updateCardTemplateDraftField({ commit }, { fieldName, value }) {\n commit('updateCardTemplateDraftField', { fieldName, value });\n },\n\n clearCardTemplateDraft({ commit }) {\n commit('clearCardTemplateDraft');\n },\n\n addTagToTemplate({ commit }, tagId) {\n commit('addTagToTemplate', tagId);\n },\n\n manageCardTemplateSelectedSpaces({ commit }, spaceId) {\n commit('manageCardTemplateSelectedSpaces', spaceId);\n },\n\n toggleMemberTemplateChildCard({ commit }, { index, member }) {\n commit('toggleMemberTemplateChildCard', { index, member });\n },\n\n addChildCardToTemplate({ commit }) {\n commit('addChildCardToTemplate');\n },\n\n updateChildCardInTemplate({ commit }, index) {\n commit('updateChildCardInTemplate', index);\n },\n\n removeChildCardFromTemplate({ commit }, index) {\n commit('removeChildCardFromTemplate', index);\n },\n\n updateTemplateChildCardProperty({ commit }, { fieldName, value, index }) {\n commit('updateTemplateChildCardProperty', { fieldName, value, index });\n },\n\n setTimelineZoom({ commit }, zoom) {\n commit('setTimelineZoom', zoom);\n },\n\n setTimelineSidebarWidth({ commit }, width) {\n commit('setTimelineSidebarWidth', width);\n },\n\n setCardWidth({ commit }, width) {\n commit('setCardWidth', width);\n },\n\n closeCardUploadPopup({ commit }) {\n commit('closeCardUploadPopup');\n },\n\n addQuickCardFileToUpdate({ commit }, { file, isModal = true }) {\n commit('addQuickCardFileToUpdate', { file, isModal });\n },\n\n removeQuickCardFilesToUpdate({ commit }, isModal = true) {\n commit('removeQuickCardFilesToUpdate', isModal);\n },\n\n setQuickCardTitle({ commit }, { title, isModal = true }) {\n commit('setQuickCardTitle', { title, isModal });\n },\n\n setCardIdForMove({ commit }, value) {\n commit('setCardIdForMove', value);\n },\n setMembersToAddQuickCard({ commit }, { value, isModal = true }) {\n commit('setMembersToAddQuickCard', { value, isModal });\n },\n\n setQuickCardField({ commit }, { fieldName, value, isModal = true }) {\n commit('setQuickCardField', { fieldName, value, isModal });\n },\n\n clearQuickCardObject({ commit }, isModal = true) {\n commit('clearQuickCardObject', isModal);\n },\n\n updateQuickCardChildCardProperty({ commit }, { fieldName, value, index, isModal = true }) {\n commit('updateQuickCardChildCardProperty', { fieldName, value, index, isModal });\n },\n\n toggleMemberQuickCardChildCard({ commit }, { index, member, isModal = true }) {\n commit('toggleMemberQuickCardChildCard', { index, member, isModal });\n },\n\n setQuickCardProjectId({ commit }, { projectId, isModal = true }) {\n commit('setQuickCardProjectId', { projectId, isModal });\n },\n\n addTagToQuickCard({ commit }, { tag, isModal = true }) {\n commit('addTagToQuickCard', { tag, isModal });\n },\n\n removeTagFromQuickCard({ commit }, { tagId, isModal = true }) {\n commit('removeTagFromQuickCard', { tagId, isModal });\n },\n\n addChildCardToQuickCard({ commit }, { isModal = true }) {\n commit('addChildCardToQuickCard', isModal);\n },\n\n updateChildCardInQuickCard({ commit }, { index, isModal = true }) {\n commit('updateChildCardInQuickCard', { index, isModal });\n },\n\n removeChildCardFromQuickCard({ commit }, { index, isModal = true }) {\n commit('removeChildCardFromQuickCard', { index, isModal });\n },\n\n setParentCardForQuickCard({ commit }, parentCard) {\n commit('setParentCardForQuickCard', parentCard);\n },\n\n addTagsToCard({ getters }, { cardId, ids }) {\n return api.boards.addCardTags(getters.getTeamID, cardId, {\n ids,\n });\n },\n\n setChildCardCreation({ commit }, value) {\n commit('setChildCardCreation', value);\n },\n\n setCardInEpicCreation({ commit }, value) {\n commit('setCardInEpicCreation', value);\n },\n\n setCardInNoteCreation({ commit }, value) {\n commit('setCardInNoteCreation', value);\n },\n\n setCardSliderActive({ commit }, value) {\n commit('setCardSliderActive', value);\n },\n\n setBoardSortBy({ commit, getters }, { value, boardId = getters.currentBoardId }) {\n const teamId = getters.getTeamID;\n\n if (!boardId) return;\n\n if (!value) {\n const { value } = getters.boardSortByOptions.find(\n (option: CardsLayoutOption) => option.default\n );\n commit('setBoardSortBy', { boardId, value, teamId });\n } else if (\n getters.boardSortByOptions.map((option: CardsLayoutOption) => option.value).includes(value)\n ) {\n commit('setBoardSortBy', { boardId, value, teamId });\n }\n },\n\n setBoardGroupBy(\n { commit, getters },\n { value, boardId = getters.currentBoardId, teamId = getters.getTeamID, mainGrpupBy = true }\n ) {\n if (!boardId) return;\n const mutationName = mainGrpupBy ? 'setBoardGroupBy' : 'setBoardSubGroupBy';\n\n if (!value) {\n const { value } = getters\n .boardGroupByOptions(boardId)\n .find((option: CardsLayoutOption) => option.default);\n commit(mutationName, { boardId, value, teamId });\n } else if (\n getters.boardGroupByOptions.map((option: CardsLayoutOption) => option.value).includes(value)\n ) {\n commit(mutationName, { boardId, value, teamId });\n }\n },\n\n setQuickCardObject({ commit }, { quickCardObject, isModal = true }) {\n commit('setQuickCardObject', { quickCardObject, isModal });\n },\n\n /**\n * Sets tag and duplicate card suggestions for card\n */\n setSuggestions({ commit }, { suggestions, cardId }: { suggestions: CardHint[]; cardId: string }) {\n commit('localUpdateCardField', {\n cardId,\n fieldName: 'hints',\n fieldValue: suggestions,\n });\n },\n\n /**\n * Sets tag and duplicate card suggestions for quickCard card\n */\n setQCSuggestions({ commit }, suggestions: CardHint[]) {\n commit('setQCSuggestions', suggestions);\n },\n\n /**\n * Removes a specifc suggestion from the list of suggestions for card and sends an API request to ignore it on the backend\n * Ignored suggestions will not be shown again for the same card\n */\n removeSuggestion(\n { getters, dispatch },\n { payload, cardId }: { payload: RemoveSuggestionPayload; cardId: string }\n ) {\n const oldSuggestions = getters.getSuggestions(cardId);\n const newSuggestions = fnRemoveSuggestion(payload, [...oldSuggestions]);\n\n if (oldSuggestions.length !== newSuggestions.length) {\n dispatch('setSuggestions', { suggestions: newSuggestions, cardId });\n const { card_id, tagName, type, ignoreSuggestion } = payload;\n\n if (!ignoreSuggestion) return;\n api.boards.updateTagHints(getters.getTeamID, cardId, {\n actions: [\n {\n type: 'ignore',\n ...(type === SuggestionType.tag && tagName && { tag_slug: tagName.toLowerCase() }),\n ...(type === SuggestionType.relation && card_id && { related_card_id: card_id }),\n },\n ],\n });\n }\n },\n\n /**\n * Removes a specifc suggestion from the list of suggestions for quick card\n */\n removeQCSuggestion({ getters, commit }, payload: RemoveSuggestionPayload) {\n const oldHints = getters.getQCSuggestions;\n const newHints = fnRemoveSuggestion(payload, oldHints);\n if (newHints.length !== oldHints.length) {\n commit('setQCSuggestions', newHints);\n }\n },\n\n /**\n * Sets flag that indicates is suggestions placeholder shown for card\n */\n setShowSuggestionsPlaceholder({ commit }, showPlaceholder: boolean) {\n commit('setShowSuggestionsPlaceholder', showPlaceholder);\n },\n\n /**\n * Sets flag that indicates is suggestions placeholder shown for quick card\n */\n setQCShowSuggestionsPlaceholder({ commit }, showPlaceholder: boolean) {\n commit('setQCShowSuggestionsPlaceholder', showPlaceholder);\n },\n\n addGroupByList({ commit, getters }, { boardId, epicId, listId, groupBy }) {\n const teamId = getters.getTeamID;\n commit('addGroupByList', { boardId, epicId, listId, groupBy, teamId });\n },\n\n updateGroupByListOrder({ commit, getters }, payload) {\n const teamId = getters.getTeamID;\n const groupBy = getters.getBoardGroupBy(payload.boardId);\n commit('updateGroupByListOrder', { ...payload, groupBy, teamId });\n },\n\n setListCardsGroupByOrder({ commit, getters }, groupByOrder) {\n const teamId = getters.getTeamID;\n commit('setListCardsGroupByOrder', { groupByOrder, teamId });\n },\n\n setCardsSubGroupByOrder({ commit, getters }, subGroupByBoardObject) {\n const teamId = getters.getTeamID;\n commit('setCardsSubGroupByOrder', { subGroupByBoardObject, teamId });\n },\n\n reorderCardsGroupByList({ commit, getters }, payload) {\n const teamId = getters.getTeamID;\n commit('reorderCardsGroupByList', { ...payload, teamId });\n },\n\n updateCardsGroupByOrder(\n { commit, getters },\n { boardId, originalListId, destinationListId, cardId, newIndex, groupBy }\n ) {\n const teamId = getters.getTeamID;\n commit('updateCardsGroupByOrder', {\n boardId,\n originalListId,\n destinationListId,\n cardId,\n newIndex,\n groupBy,\n teamId,\n });\n },\n\n addCardToGroupByList({ commit, getters }, { boardId, epicId, cardId, listId, groupBy }) {\n const teamId = getters.getTeamID;\n commit('addCardToGroup', {\n boardId,\n epicId,\n cardId,\n listId,\n groupBy,\n teamId,\n });\n },\n\n removeCardFromGroupByList(\n { commit, getters },\n { boardId, epicId, cardId, listId, groupBy = getters.getBoardGroupBy(boardId) }\n ) {\n const teamId = getters.getTeamID;\n commit('removeCardFromGroupByList', { boardId, epicId, cardId, listId, groupBy, teamId });\n },\n\n removeCardFromGroupByBoard({ commit, getters }, { boardId, card }) {\n const teamId = getters.getTeamID;\n\n // remove from tag list\n if (card.tags && card.tags.length > 0) {\n card.tags.forEach((tag: any) => {\n commit('removeCardFromGroupByList', {\n boardId,\n cardId: card.id,\n epicId: card.epic?.id,\n listId: tag.id,\n groupBy: 'tag',\n teamId,\n });\n });\n } else {\n commit('removeCardFromGroupByList', {\n boardId,\n cardId: card.id,\n epicId: card.epic?.id,\n listId: 'notags',\n groupBy: 'tag',\n teamId,\n });\n }\n\n // remove from member list\n if (card.members && card.members.length > 0) {\n card.members.forEach((member: any) => {\n commit('removeCardFromGroupByList', {\n boardId,\n cardId: card.id,\n epicId: card.epic?.id,\n listId: member.user_id,\n groupBy: 'assignee',\n teamId,\n });\n });\n } else {\n commit('removeCardFromGroupByList', {\n boardId,\n cardId: card.id,\n epicId: card.epic?.id,\n listId: 'unassigned',\n groupBy: 'assignee',\n teamId,\n });\n }\n\n // remove from priority\n commit('removeCardFromGroupByList', {\n boardId,\n epicId: card.epic?.id,\n cardId: card.id,\n listId: card?.priority || 0,\n groupBy: 'priority',\n teamId,\n });\n\n // remove from none\n commit('removeCardFromGroupByList', {\n boardId,\n epicId: card.epic?.id,\n cardId: card.id,\n listId: 'none',\n groupBy: 'none',\n teamId,\n });\n\n commit('removeCardFromGroupByList', {\n epicId: card.epic?.id,\n cardId: card.id,\n listId: card.status || 'backlog',\n groupBy: 'statusType',\n teamId,\n });\n },\n\n addCardToGroupByBoard({ commit, getters }, { boardId, card }) {\n const teamId = getters.getTeamID;\n\n // add to tag list\n if (card.tags && card.tags.length > 0) {\n card.tags.forEach((tag: any) => {\n commit('addCardToGroup', {\n boardId,\n epicId: card.epic?.id,\n cardId: card.id,\n listId: tag.id,\n groupBy: 'tag',\n teamId,\n });\n });\n } else {\n commit('addCardToGroup', {\n boardId,\n epicId: card.epic?.id,\n cardId: card.id,\n listId: 'notags',\n groupBy: 'tag',\n teamId,\n });\n }\n\n // add to member list\n if (card.members && card.members.length > 0) {\n card.members.forEach((member: any) => {\n commit('addCardToGroup', {\n boardId,\n epicId: card.epic?.id,\n cardId: card.id,\n listId: member.user_id,\n groupBy: 'assignee',\n teamId,\n });\n });\n } else {\n commit('addCardToGroup', {\n boardId,\n epicId: card.epic?.id,\n cardId: card.id,\n listId: 'unassigned',\n groupBy: 'assignee',\n teamId,\n });\n }\n\n commit('addCardToGroup', {\n boardId,\n epicId: card.epic?.id,\n cardId: card.id,\n listId: card?.priority || 0,\n groupBy: 'priority',\n teamId,\n });\n\n commit('addCardToGroup', {\n boardId,\n epicId: card.epic?.id,\n cardId: card.id,\n listId: 'none',\n groupBy: 'none',\n teamId,\n });\n\n // add card to status type group by list for in epic board\n commit('addCardToGroup', {\n epicId: card.epic?.id,\n cardId: card.id,\n listId: card.status || 'backlog',\n groupBy: 'statusType',\n teamId,\n });\n },\n\n setCurrentGroupByListIdCardActionEdit({ commit }, listId) {\n commit('setCurrentGroupByListIdCardActionEdit', listId);\n },\n\n setCurrentCardUniqueRowId({ commit }, uniqueRowId) {\n commit('setCurrentCardUniqueRowId', uniqueRowId);\n },\n\n setNewBoardObjectField({ commit }, { fieldName, value }) {\n commit('setNewBoardObjectField', { fieldName, value });\n },\n\n updateBoardProperty(\n { getters, dispatch },\n {\n boardId,\n propertyName,\n value,\n message = {\n success: translate('boardUpdated'),\n error: translate('actionFailed'),\n },\n }\n ) {\n return api.boards\n .updateBoard(getters.getTeamID, boardId, {\n [propertyName]: value,\n })\n .then(({ data }) => {\n dispatch('addUiNotification', {\n message: message.success,\n status: constants.uiNotificationStatuses.success,\n });\n return data;\n })\n .catch((error) => {\n dispatch('addUiNotification', {\n message: message.error,\n status: constants.uiNotificationStatuses.error,\n });\n throw error;\n });\n },\n\n resetNewBoardObject({ commit }) {\n commit('resetNewBoardObject');\n },\n\n setSprintSettings({ getters }, { projectId, settings }) {\n return authPut(\n `${getters.getRoutes.cards}/v1/${getters.getTeamID}/sprints/settings?project_id=${projectId}`,\n settings\n )\n .then(({ data }) => data)\n .catch((err) => {\n throw err;\n });\n },\n\n localSetSprintSettings({ commit }, { projectId, settings }) {\n commit('setProjectSprintSettings', { projectId, settings });\n },\n\n getSprintSettings({ getters, commit }, projectId) {\n return authGet(\n `${getters.getRoutes.cards}/v1/${getters.getTeamID}/sprints/settings?project_id=${projectId}`\n )\n .then(({ data }) => {\n const settings = data.sprint_settings.enabled\n ? data.sprint_settings\n : {\n enabled: false,\n start_day: 0,\n length: 7,\n cooldown: 0,\n statuses: defaultSprintStatuses,\n };\n commit('setProjectSprintSettings', { projectId, settings });\n return data.sprint_settings;\n })\n .catch((err) => {\n return err;\n });\n },\n\n createNewSprint({ getters, commit, dispatch }, payload) {\n return authPost(`${getters.getRoutes.cards}/v1/${getters.getTeamID}/sprints`, payload)\n .then(({ data }) => {\n const { sprint } = data;\n commit('localAddSprintToProject', {\n projectId: sprint.project_id,\n sprint: {\n id: sprint.id,\n title: sprint.title,\n start_date: sprint.start_date,\n end_date: sprint.end_date,\n },\n });\n dispatch('postFetchSprint', sprint);\n return data;\n })\n .catch((err) => {\n return err;\n });\n },\n\n getSprintsForProject({ getters, commit }, { projectId, untilDate }) {\n const existingPromise = activePromises.sprints[projectId];\n if (existingPromise !== undefined) return existingPromise;\n\n const until = untilDate ? `&until=${untilDate}` : '';\n return authGet(\n `${getters.getRoutes.cards}/v1/${getters.getTeamID}/sprints?project_id=${projectId}${until}`\n )\n .then(({ data }) => {\n const sprints: { [key: string]: any } = {};\n data.sprints.forEach((sprint: any) => {\n const rolledoverList = {\n id: 'rolledover',\n title: 'Rolled over',\n board_id: `${sprint.id}`,\n team_id: sprint.team_id,\n card_order: (sprint.unfinished_cards || []).map((c: any) => c.id),\n cards: sprint.unfinished_cards,\n behavior: 'rolledover',\n };\n if (sprint?.unfinished_cards?.length) {\n sprint.lists.push(rolledoverList);\n }\n if (sprint.lists && sprint.lists.length > 0) {\n const listCards: any = {};\n const sprintLists: any = {};\n const sprintListIds: string[] = [];\n sprint.lists.forEach((l: any) => {\n const sprintListKey = getSprintListKey(projectId, sprint.id, l.id);\n sprintListIds.push(sprintListKey);\n l.orginalId = l.id;\n l.id = sprintListKey;\n listCards[sprintListKey] = [...(l.card_order || [])];\n sprintLists[sprintListKey] = l;\n });\n commit('setSprintListsFlat', sprintLists);\n commit('setListCards', listCards);\n commit('setSprintsListsIds', { sprintId: sprint.id, list: sprintListIds, projectId });\n }\n commit('setBoardListsFlat', sprint.lists || []);\n const sprintKey = getSprintKey(projectId, sprint.id);\n sprints[sprintKey] = sprint;\n sprints[sprintKey].orginalId = sprint.id;\n sprints[sprintKey].id = sprintKey;\n });\n commit('setSpaceSprints', { projectId, sprints });\n commit('setFlatBoards', Object.values(sprints));\n return data;\n })\n .catch((err) => {\n return err;\n })\n .finally(() => {\n delete activePromises.sprints[projectId];\n });\n },\n\n setSprintsListsIds({ commit }, { sprintId, list, projectId }) {\n commit('setSprintsListsIds', { sprintId, list, projectId });\n },\n\n getSprint({ getters, dispatch }, { projectId, sprintId }) {\n const generatedSprintId = getSprintKey(projectId, sprintId);\n const existingPromise = activePromises.sprints[generatedSprintId];\n\n if (existingPromise !== undefined) return existingPromise;\n const promise = authGet(\n `${getters.getRoutes.cards}/v1/${getters.getTeamID}/sprints/${sprintId}?project_id=${projectId}`\n )\n .then(({ data }) => {\n const sprint = data.sprint;\n dispatch('postFetchSprint', sprint);\n return data;\n })\n .catch((err) => {\n return err;\n })\n .finally(() => {\n delete activePromises.sprints[generatedSprintId];\n });\n activePromises.sprints[generatedSprintId] = promise;\n return promise;\n },\n\n postFetchSprint({ getters, commit }, sprint) {\n const projectId = sprint.project_id;\n const sprintForSet = sprint;\n sprintForSet.orginalId = sprint.id;\n sprintForSet.id = getSprintKey(projectId, sprint.id);\n const listCards: any = {};\n const cards: any = {};\n const rolledoverList = {\n id: 'rolledover',\n title: 'Rolled over',\n board_id: `${sprintForSet.id}`,\n team_id: sprintForSet.team_id,\n card_order: (sprintForSet.unfinished_cards || []).map((c: any) => c.id),\n cards: sprintForSet.unfinished_cards,\n behavior: 'rolledover',\n };\n if (sprint?.unfinished_cards?.length) {\n sprintForSet.lists.push(rolledoverList);\n }\n\n const sprintLists: any[] = [];\n const sprintListIds: string[] = [];\n\n (sprintForSet?.lists || []).forEach((l: any) => {\n const sprintListId = getSprintListKey(projectId, sprintForSet.orginalId, l.id);\n sprintListIds.push(sprintListId);\n sprintLists.push({\n ...l,\n orginalId: l.id,\n id: sprintListId,\n board_id: `${sprintForSet.id}`,\n });\n\n listCards[sprintListId] = [...(l.card_order || [])];\n l.cards?.forEach((c: any) => {\n const cards = getters.getCards || {};\n const isRolledOverList = l.behavior === 'rolledover';\n const shouldAddRolledOverCard = !cards[c.id] || cards[c.id].partially_loaded;\n const shouldAddCardToState = !isRolledOverList || shouldAddRolledOverCard;\n\n if (!c || !shouldAddCardToState) return;\n\n const stateCard = cards[c.id] || {};\n // sometimes the card is already in the state, but not fully loaded\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n const { partially_loaded, ...restStateCard } = toRaw(stateCard);\n cards[c.id] = {\n ...toRaw(restStateCard),\n ...toRaw(c),\n };\n\n if (c?.child_cards?.length) {\n c.child_cards.forEach((child: any) => {\n if (!cards[child.card_id]) {\n child.partially_loaded = true;\n child.id = child.card_id;\n commit('addCardToCards', { card: child });\n }\n });\n }\n });\n });\n sprintForSet.lists = sprintLists;\n commit('addSprintToSpaceSprints', { projectId, sprint: sprintForSet });\n commit('setFlatBoards', [sprintForSet]);\n commit('setCards', cards);\n commit('setListCards', listCards);\n commit('setBoardListsFlat', sprintLists || []);\n commit('setSprintsListsIds', {\n sprintId: sprintForSet.orginalId,\n list: sprintListIds,\n projectId,\n });\n },\n\n setSprintForEdit({ commit }, item) {\n commit('setSprintForEdit', item);\n },\n\n localUpdateSprint({ commit }, { projectId, sprintId, prop, value }) {\n commit('localUpdateSprint', { projectId, sprintId, prop, value });\n },\n\n updateSprint({ getters }, { projectId, sprintId, payload }) {\n return authPatch(\n `${getters.getRoutes.cards}/v1/${getters.getTeamID}/sprints/${sprintId}?project_id=${projectId}`,\n payload\n )\n .then(({ data }) => data)\n .catch((err) => {\n throw err;\n });\n },\n\n localUpdateEpicInChildCards(\n { getters, commit, dispatch },\n { cardId = '', epicBrief = {} }: { cardId: string; epicBrief: EpicBrief }\n ) {\n if (!cardId) return;\n\n const card: Card = JSON.parse(JSON.stringify(getters.getCardById(cardId)));\n\n if (Object.keys(card || {}).length === 0) return;\n\n const childCards = card.child_cards || [];\n\n childCards.forEach((child: any) => {\n commit('localUpdateCardField', {\n cardId: child.card_id || child.id,\n fieldName: 'epic',\n fieldValue: epicBrief,\n });\n dispatch('localUpdateEpicInChildCards', {\n cardId: child.card_id || child.id,\n epicBrief,\n });\n });\n },\n\n localRemoveCardFromEpic({ getters, commit, dispatch }, cardId: string) {\n if (!cardId) return;\n\n const stateCard: Card = JSON.parse(JSON.stringify(getters.getCardById(cardId)));\n\n if (Object.keys(stateCard || {}).length === 0) return;\n\n commit('localUpdateCardField', {\n cardId,\n fieldName: 'epic',\n fieldValue: {},\n });\n\n dispatch('localUpdateEpicInChildCards', {\n cardId,\n epicBrief: {},\n });\n\n const stateEpic: IEpic = getters.getCardById(stateCard.epic?.id);\n if (Object.keys(stateEpic || {}).length > 0) {\n dispatch('localRemoveCardFromParent', {\n childCardId: stateCard.id,\n cardId: stateEpic.id,\n });\n dispatch('removeCardFromGroupByBoard', {\n card: stateCard,\n });\n }\n },\n\n localAddCardToEpic(\n { getters, commit, dispatch },\n { cardId, epicId, epicBrief = {} }: { cardId: string; epicId: string; epicBrief: any }\n ) {\n if (!epicBrief.id && !epicId) return;\n\n const rawCard = toRaw(getters.getCardById(cardId));\n const card: Card = cloneDeep(rawCard);\n\n if (Object.keys(card || {}).length === 0) return;\n\n const stateEpic = toRaw(getters.getCardById(epicId || epicBrief.id));\n card.epic = {\n id: epicId || epicBrief.id,\n title: stateEpic?.title || epicBrief.title,\n icon: stateEpic?.icon || epicBrief.icon,\n };\n\n commit('localUpdateCardField', {\n cardId,\n fieldName: 'epic',\n fieldValue: card.epic,\n });\n\n // add epic to all child cards\n if (card.child_cards && card.child_cards.length > 0) {\n dispatch('localUpdateEpicInChildCards', {\n cardId,\n epicBrief: card.epic,\n });\n }\n\n if (Object.keys(stateEpic || {}).length > 0) {\n dispatch('localAddCardToParent', {\n parentCard: stateEpic,\n childCard: card,\n });\n dispatch('addCardToGroupByBoard', {\n card,\n });\n }\n },\n\n removeCardFromEpic({ getters, dispatch, commit }, cardId: string) {\n const rawCard = toRaw(getters.getCardById(cardId));\n const card: Card = cloneDeep(rawCard);\n const epic: EpicBrief = card.epic ?? {};\n\n if (!epic?.id) {\n throw new Error('card is not added to an epic');\n }\n\n dispatch('localRemoveCardFromEpic', cardId);\n\n commit('removeCardFromGroupByList', {\n boardId: card.board_id,\n cardId,\n listId: epic.id,\n groupBy: groupByOption.epic,\n teamId: getters.getTeamID,\n });\n commit('addCardToGroup', {\n boardId: card.board_id,\n cardId,\n listId: 'noproject',\n groupBy: groupByOption.epic,\n teamId: getters.getTeamID,\n });\n\n return api.boards.removeCardFromEpic(getters.getTeamID, epic.id, cardId).catch(() => {\n dispatch('localAddCardToEpic', { cardId, epicId: epic.id });\n commit('addCardToGroup', {\n boardId: card.board_id,\n cardId,\n listId: 'noproject',\n groupBy: groupByOption.epic,\n teamId: getters.getTeamID,\n });\n commit('addCardToGroup', {\n boardId: card.board_id,\n cardId,\n listId: epic.id,\n groupBy: groupByOption.epic,\n teamId: getters.getTeamID,\n });\n });\n },\n\n addCardToEpic(\n { getters, dispatch, commit },\n { cardId, epicId }: { cardId: string; epicId: string }\n ) {\n const card: Card = cloneDeep(toRaw(getters.getCardById(cardId)));\n\n if (card.epic?.id) {\n throw new Error('card is already added to an epic');\n }\n\n dispatch('localAddCardToEpic', { cardId, epicId });\n commit('addCardToGroup', {\n boardId: card.board_id,\n cardId,\n listId: epicId,\n groupBy: groupByOption.epic,\n teamId: getters.getTeamID,\n });\n commit('removeCardFromGroupByList', {\n boardId: card.board_id,\n cardId,\n listId: 'noproject',\n groupBy: groupByOption.epic,\n teamId: getters.getTeamID,\n });\n return api.boards.addCardToEpic(getters.getTeamID, epicId, cardId).catch(() => {\n dispatch('localRemoveCardFromEpic', cardId);\n commit('removeCardFromGroupByList', {\n boardId: card.board_id,\n cardId,\n listId: epicId,\n groupBy: groupByOption.epic,\n teamId: getters.getTeamID,\n });\n commit('addCardToGroup', {\n boardId: card.board_id,\n cardId,\n listId: 'noproject',\n groupBy: groupByOption.epic,\n teamId: getters.getTeamID,\n });\n });\n },\n\n async deleteBoard({ getters, dispatch, commit }, { boardId, projectId }) {\n const board = getters.getBoardById(boardId) || {};\n\n if (Object.keys(board).length === 0) return Promise.reject(new Error('Board not found'));\n\n const projectIndex = getters.getTeamProjects.findIndex(\n (project: any) => project.id === projectId\n );\n if (projectIndex === -1) {\n return Promise.reject(new Error('Project not found'));\n }\n const oldBoardOrder = getters.getTeamProjects[projectIndex].board_order;\n const newBoardOrder = oldBoardOrder.filter((id: string) => id !== boardId);\n const flatBoard = getters.getFlatBoards[boardId];\n const allCards: any = [];\n\n if (flatBoard.lists?.length > 0) {\n flatBoard.lists.forEach((list: any) => {\n list.card_order.forEach((cardId: any) => {\n allCards.push(cardId);\n });\n });\n }\n\n dispatch('localUpdateProjectBoardsOrder', {\n projectId: projectId,\n payload: newBoardOrder,\n });\n\n const isFavourite = getters.isFavourite(boardId, ResourceType.Board);\n\n return await api.boards\n .deleteBoard(getters.getTeamID, boardId)\n .then(() => {\n // remove board from flat boards\n const flatBoards = getters.getFlatBoards;\n if (flatBoards?.hasOwnProperty(boardId)) {\n delete flatBoards[boardId];\n }\n const boardsArray = Object.values(flatBoards);\n commit('setFlatBoards', boardsArray);\n dispatch('addBoardInBoards', { id: `${boardId}_notFound`, notFound: true });\n\n dispatch('removeFromElectronRecentlyViewed', {\n currentlyViewed: {\n id: boardId,\n type: constants.routeNames.board,\n },\n teamId: getters.getTeamID,\n });\n\n dispatch('setProjectBoards', {\n projectId: projectId,\n projectBoards: newBoardOrder,\n });\n\n if (isFavourite) {\n dispatch('deleteUserFavourite', {\n resource_id: boardId,\n resource_type: ResourceType.Board,\n title: board.title,\n });\n }\n if (allCards.length) {\n // delete all cards of the deleted board from favourites and recently viewed\n allCards.forEach((cardId: any) => {\n if (getters.isFavourite(cardId, ResourceType.Card)) {\n dispatch('deleteUserFavourite', {\n resource_id: cardId,\n resource_type: ResourceType.Card,\n });\n }\n dispatch('removeFromElectronRecentlyViewed', {\n currentlyViewed: {\n id: cardId,\n type: constants.routeNames.boardCard,\n },\n teamId: getters.getTeamID,\n });\n });\n }\n })\n .catch(() => {\n dispatch('localUpdateProjectBoardsOrder', {\n projectId: projectId,\n payload: oldBoardOrder,\n });\n });\n },\n\n // /**\n // * Deletes a list from the board\n // * https://api.superthread.com/v1/{team_id}/lists/{list_id}\n // * @param {string} listId\n // */\n deleteList({ commit, getters, dispatch }, { listId }) {\n const list = getters.lists[listId];\n const listCards = getters.getListCards[listId];\n\n if (Object.keys(list).length === 0) return Promise.reject(new Error('List not found'));\n\n const currentListOrder = [...getters.boardsListsIds[list.board_id]];\n const newListOrder = [...currentListOrder];\n const index = newListOrder.indexOf(listId);\n\n return api.boards.deleteList(getters.getTeamID, listId).then(() => {\n // delete all cards of the deleted list from favourites and recently viewed\n listCards?.forEach((cardId: any) => {\n if (getters.isFavourite(cardId, ResourceType.Card)) {\n dispatch('deleteUserFavourite', {\n resource_id: cardId,\n resource_type: ResourceType.Card,\n });\n }\n dispatch('removeFromElectronRecentlyViewed', {\n currentlyViewed: {\n id: cardId,\n type: constants.routeNames.boardCard,\n },\n teamId: getters.getTeamID,\n });\n });\n if (index > -1) {\n commit('removeBoardListId', {\n boardId: list.board_id,\n id: listId,\n });\n }\n });\n },\n\n async createBranchAutomation({ getters }, { boardId, projectId, automation }) {\n try {\n if (boardId) {\n return await api.boards.createNewVcsBranchAutomation(getters.getTeamID, boardId, {\n name: automation.name,\n });\n }\n\n return await api.boards.createNewSprintVcsBranchAutomation(\n getters.getTeamID,\n { project_id: projectId },\n { name: automation.name }\n );\n } catch (error) {\n return Promise.reject(new Error('Failed to create branch specific automation'));\n }\n },\n\n async updateBranchAutomation({ getters }, { boardId, projectId, oldName, newName }) {\n try {\n if (boardId) {\n return await api.boards.updateBranchNameVcsBranchAutomation(\n getters.getTeamID,\n boardId,\n oldName,\n {\n branch: newName,\n }\n );\n }\n\n return await api.boards.updateBranchNameSprintVcsBranchAutomation(\n getters.getTeamID,\n oldName,\n { project_id: projectId },\n { branch: newName }\n );\n } catch (error) {\n return Promise.reject(new Error('Failed to update branch specific automation'));\n }\n },\n\n async deleteBranchAutomation({ getters }, { boardId, projectId, branch }) {\n try {\n if (boardId) {\n return await api.boards.deleteBoardVcsBranchAutomation(getters.getTeamID, boardId, branch);\n }\n\n return await api.boards.deleteSprintVcsBranchAutomation(getters.getTeamID, branch, {\n project_id: projectId,\n });\n } catch (error) {\n return Promise.reject(new Error('Failed to delete branch specific automation'));\n }\n },\n\n updateBoardEmail({ getters, dispatch }, { boardId, payload }) {\n return api.boards\n .updateBoardEmail(getters.getTeamID, boardId, payload)\n .then(({ data }) => {\n dispatch('updateBoardPropertyInBoards', {\n boardId,\n propertyName: 'email',\n value: payload.active ? { email: data?.email?.email, active: true } : null,\n });\n })\n .catch((error) => error);\n },\n\n constructInEpicBoard({ getters, dispatch }, epicId: string) {\n return api.boards.getAllCardsForEpic(getters.getTeamID, epicId).then(({ data }) => {\n const inEpicBoardId = `${constants.inEpicBoardIdPrefix}-${epicId}`;\n const inEpicBoardListId = `${inEpicBoardId}-list`;\n\n const inEpicBoard: any = {\n id: inEpicBoardId,\n lists: [\n {\n id: inEpicBoardListId,\n cards: [],\n card_order: [],\n },\n ],\n list_order: [inEpicBoardListId],\n };\n\n for (const c of data?.cards || []) {\n if (c.archived) continue;\n inEpicBoard.lists[0].cards.push(c);\n inEpicBoard.lists[0].card_order.push(c.id);\n }\n\n dispatch('postFetchBoard', { board: inEpicBoard });\n\n return inEpicBoard;\n });\n },\n\n setEpicSelectedTabId({ commit }, { cardId, tabId }) {\n commit('setEpicSelectedTabId', { cardId, tabId });\n },\n\n async convertCardToEpic({ getters, dispatch }, cardId) {\n if (!cardId) {\n throw new Error('No card id provided');\n }\n\n // make sure epics board is loaded\n if (!getters.getFlatBoards[constants.epicsBoardId]) {\n await dispatch('fetchBoard', { boardId: constants.epicsBoardId });\n }\n\n // get first epics board list\n const epicsBoard = getters.getFlatBoards[constants.epicsBoardId];\n const firstListId = epicsBoard?.list_order?.[0] || -1;\n\n if (firstListId < 0) {\n throw new Error(constants.noListsInEpicsBoardErr);\n }\n\n const oldCard = cloneDeep(getters.getCardById(cardId)); // we will use this to revert changes if needed\n const firstList = getters.lists[firstListId];\n const backlog = getCardStatus(cardStatusType.Backlog);\n const newEpic = {\n ...oldCard,\n type: ResourceType.Epic,\n board_id: constants.epicsBoardId,\n board_title: '',\n project_id: '',\n estimate: null,\n linked_cards: [],\n epic: {},\n parent_card: {},\n tags: oldCard.tags?.filter((tag: any) => !tag.project_id) || [],\n list_id: firstListId,\n status: firstList.behavior || backlog.id,\n list_color: firstList.color || backlog.color,\n list_title: firstList.title || '',\n sprint_id: null,\n sprint_title: '',\n };\n\n // update start date based on new lists status, if not already set\n // ? setting date might be off as the one from BE will differ\n // ? and it will be set after card is opened again\n\n // remove this card from all linked cards\n const oldLinkedCards: any = {};\n if (oldCard.linked_cards?.length > 0) {\n oldCard.linked_cards.forEach((linkedCard: any) => {\n const linkedCardState = getters.getCardById(linkedCard.card_id);\n if (linkedCardState.linked_cards) {\n oldLinkedCards[linkedCard.card_id] = linkedCardState.linked_cards;\n linkedCardState.linked_cards = linkedCardState.linked_cards.filter(\n (c: any) => c.card_id !== cardId\n );\n dispatch('localUpdateCardField', {\n cardId: linkedCard.card_id,\n fieldName: 'linked_cards',\n fieldValue: linkedCardState.linked_cards,\n });\n }\n });\n }\n\n const oldEpicLinkedCards = getters.getCardById(oldCard.epic?.id || '')?.linked_cards;\n // remove card from parent card\n if (oldCard.parent_card?.card_id) {\n dispatch('localRemoveCardFromParent', {\n childCardId: cardId,\n cardId: oldCard.parent_card.card_id,\n });\n } else if (oldCard.epic?.id) {\n // add current epic as related card\n dispatch('localUpdateCardField', {\n cardId,\n fieldName: 'linked_cards',\n fieldValue: [\n {\n card_id: oldCard.epic.id,\n linked_card_type: 'related',\n },\n ],\n });\n dispatch('localUpdateCardField', {\n cardId: oldCard.epic.id,\n fieldName: 'linked_cards',\n fieldValue: [\n {\n card_id: cardId,\n linked_card_type: 'related',\n },\n ],\n });\n }\n\n // update prop in child cards from parent_card to epic\n if (oldCard.child_cards?.length > 0) {\n dispatch('localUpdateEpicInChildCards', {\n cardId,\n epicBrief: {\n id: cardId,\n title: oldCard.title,\n },\n });\n\n oldCard.child_cards.forEach((child: any) => {\n dispatch('localUpdateCardField', {\n cardId: child.card_id || child.id,\n fieldName: 'parent_card',\n fieldValue: {},\n });\n });\n }\n\n // remove from old list\n const oldListId = oldCard.sprint_id\n ? getSprintListKey(oldCard.project_id, oldCard.sprint_id, oldCard.list_id)\n : oldCard.list_id;\n const oldListCards = cloneDeep(getters.getListCards[oldListId]);\n dispatch('removeCardFromListCards', { listId: oldListId, cardId });\n dispatch('removeCardFromGroupByBoard', { boardId: oldCard.board_id, card: oldCard });\n\n // overwrite card in state\n dispatch('addCardToCards', { card: newEpic });\n\n // add to new list, board and board groupby\n dispatch('addCardToListCards', { listId: firstListId, cardId });\n dispatch('addCardToGroupByBoard', { boardId: constants.epicsBoardId, card: newEpic });\n\n return api.boards\n .convertCardToEpic(getters.getTeamID, cardId)\n .then((/* { epic } */) => {\n // remove card from currently displayed view results\n const viewResults = getters.getViewResults;\n const viewCardIndex = viewResults.findIndex((c: any) => c.id === cardId);\n if (viewCardIndex > -1) {\n viewResults.splice(viewCardIndex, 1);\n dispatch('setViewResults', viewResults);\n dispatch('currentViewTotalCount', viewResults.length);\n }\n\n // update existing card in recently viewed\n dispatch('updateItemInElectronRecentlyViewed', {\n id: cardId,\n type: constants.routeNames.boardCard,\n toUpdate: {\n type: constants.epicRoute.name,\n additionalIcon: { src: constants.epicDefaultIcon },\n },\n });\n\n // remove from favourites\n //! will be changed after we implement it on BE (card in favourites will be updated instead)\n if (getters.isFavourite(cardId, ResourceType.Card)) {\n dispatch('deleteUserFavourite', {\n resource_id: cardId,\n resource_type: ResourceType.Card,\n title: oldCard.title,\n });\n }\n\n // we return locally adjusted epic instead of one from response\n // as certain fields are updated asynchrounously on BE\n return newEpic;\n })\n .catch((e: Error) => {\n dispatch('addCardToCards', { card: oldCard });\n dispatch('removeCardFromListCards', { listId: firstListId, cardId });\n dispatch('removeCardFromGroupByBoard', {\n boardId: constants.epicsBoardId,\n card: newEpic,\n });\n dispatch('setListCards', { [oldListId]: oldListCards });\n dispatch('addCardToGroupByBoard', { boardId: oldCard.board_id, card: oldCard });\n\n if (oldCard.linked_cards?.length > 0) {\n // revert old linked cards\n oldCard.linked_cards.forEach((linkedCard: any) => {\n const linkedCardState = getters.getCardById(linkedCard.card_id);\n if (linkedCardState.linked_cards) {\n dispatch('localUpdateCardField', {\n cardId: linkedCard.card_id,\n fieldName: 'linked_cards',\n fieldValue: oldLinkedCards[linkedCard.card_id] || [],\n });\n }\n });\n\n dispatch('localUpdateCardField', {\n cardId,\n fieldName: 'linked_cards',\n fieldValue: oldCard.linked_cards,\n });\n }\n\n if (oldCard.parent_card?.card_id) {\n dispatch('localAddCardToParent', {\n childCardId: cardId,\n cardId: oldCard.parent_card.card_id,\n });\n } else if (oldCard.epic?.id) {\n if ((oldCard.linked_cards ?? []).length === 0) {\n dispatch('localUpdateCardField', {\n cardId,\n fieldName: 'linked_cards',\n fieldValue: [],\n });\n }\n\n // revert old epics linked cards\n if (oldEpicLinkedCards) {\n dispatch('localUpdateCardField', {\n cardId: oldCard.epic.id,\n fieldName: 'linked_cards',\n fieldValue: oldEpicLinkedCards,\n });\n }\n }\n\n if (oldCard.child_cards?.length > 0) {\n oldCard.child_cards.forEach((child: any) => {\n dispatch('localUpdateCardField', {\n cardId: child.card_id || child.id,\n fieldName: 'parent_card',\n fieldValue: { id: cardId, title: oldCard.title },\n });\n });\n\n dispatch('localUpdateEpicInChildCards', {\n cardId,\n epicBrief: {},\n });\n }\n\n throw e; // re-throw to propagate it further\n });\n },\n\n setListsExpanded({ commit, getters }, { boardId, listId, value }) {\n const teamSlug = getters.getTeamSlug;\n commit('setListsExpanded', { teamSlug, boardId, listId, value });\n },\n\n addCardToSubGroupByList(\n { commit, getters },\n { boardId, epicId, cardId, parentListId, listId, groupBy, subGroupBy }\n ) {\n const teamId = getters.getTeamID;\n commit('addCardToGroup', {\n boardId,\n epicId,\n cardId,\n listId,\n groupBy,\n teamId,\n parentListId,\n subGroupBy,\n });\n },\n\n removeCardFromSubGroupByList(\n { commit, getters },\n { boardId, epicId, cardId, parentListId, listId, groupBy, subGroupBy }\n ) {\n const teamId = getters.getTeamID;\n commit('removeCardFromSubGroupByList', {\n boardId,\n epicId,\n cardId,\n parentListId,\n listId,\n groupBy,\n subGroupBy,\n teamId,\n });\n },\n};\n\nexport default actions;\n","import getDefaultBoardState from './getDefaultBoardState';\nimport getters from './getters';\nimport mutations from './mutations';\nimport actions from './actions';\n\nexport default {\n state: getDefaultBoardState(),\n getters,\n actions,\n mutations,\n};\n","import { PageState } from '@/types';\nimport { browserStorageGetItem } from '@/utilities/browser-storage.util';\nimport { getParentPageForAddKey } from '@/utilities/localDrafts';\n\nconst getDefaultPageState = (): PageState => ({\n pageVersions: [],\n currentPageID: '',\n currentPageMode: 'view',\n\n archivedPages: [],\n page: {},\n projectPages: {},\n pages: {},\n newPageCreating: false,\n\n pagesEntity: 'pages',\n loadingPages: true,\n pageCreating: false,\n imageUploadPopup: false,\n coverImageUploadPopup: false,\n pageIconUploadPopup: false,\n insertLinkPopup: false,\n inlineCommentPopup: false,\n lastSidebarItemAdded: '',\n parentPageIdForAdd: 'root',\n projectPagesTree: {},\n sidebarDraftPage:\n browserStorageGetItem(getParentPageForAddKey(browserStorageGetItem('currentTeamId') || '')) ??\n {},\n archivePages: {},\n archivePagesTree: {},\n parentPageExpanded: {},\n pageUploadPopup: {},\n pageRenamingId: '',\n commentsSchema: 1,\n pagesSchema: 1,\n quickPageFilesToUpdate: [],\n pageTemplates: {},\n highlightedPageLevelComments: [],\n pageLevelCommentInputActive: false,\n pageTemplateDraft: {\n title: '',\n icon: {},\n project_ids: [],\n page_title: '',\n page_content: '',\n },\n pageEditorDisplay: {},\n pageIdForMove: '',\n});\n\nexport default getDefaultPageState;\n","/* eslint-disable no-shadow */\n/**\n * Page module vuex getters\n * @packageDocumentation\n * @category Store\n */\nimport { GetterTree } from 'vuex';\nimport { PageState as State } from '@/types';\n\nconst getters: GetterTree = {\n archivedPages: (state) => state.archivedPages,\n\n getCurrentPageID: (state) => state.currentPageID || state.page.id,\n\n getCurrentPageMode: (state) => state.currentPageMode,\n\n getPageTitle: (state) => state.page.title,\n\n getPage: (state) => state.page,\n\n getCurentPage: (state) => state.pages[state.currentPageID || ''] || {},\n\n getPageContent: (state) => state.page.content,\n\n loadingPages: (state) => state.loadingPages,\n\n getPagesEntity: (state) => state.pagesEntity,\n\n pageCreating: (state) => state.pageCreating,\n\n showImageUploadPopup: (state) => state.imageUploadPopup,\n\n showCoverImageUploadPopup: (state) => state.coverImageUploadPopup,\n\n showPageIconUploadPopup: (state) => state.pageIconUploadPopup,\n\n showInsertLinkPopup: (state) => state.insertLinkPopup,\n\n pageVersions: (state) => state.pageVersions,\n\n getCurrentProjectPages: (state, _getters, rootState, rootGetters) =>\n state.projectPages[rootGetters.getCurrentProjectId] || [],\n\n getPageById: (state) => (pageId: string) => state.pages[pageId],\n\n getPages: (state) => state.pages,\n\n getNewPageCreating: (state) => state.newPageCreating,\n\n commentPopupVisible: (state) => state.inlineCommentPopup,\n\n getProjectPages: (state) => (projectId: string) => state.projectPages[projectId] || [],\n\n lastSidebarItemAdded: (state) => state.lastSidebarItemAdded || '',\n\n getParentPageIdForAdd: (state) => state.parentPageIdForAdd,\n\n /** Returns the pages tree for specific projectId. */\n getProjectPagesTree: (state) => (projectId: string | number) =>\n state.projectPagesTree[projectId] || {},\n\n getProjectPagesArchiveTree: (state) => (projectId: string | number) =>\n state.archivePagesTree[projectId] || {},\n\n sidebarDraftPage: (state) => state.sidebarDraftPage || {},\n\n getParentPageExpanded: (state) => (id: string) => state.parentPageExpanded[id] || false,\n\n getPageUploadPopup: (state) => state.pageUploadPopup,\n pageRenamingId: (state) => state.pageRenamingId,\n commentsSchema: (state) => state.commentsSchema,\n pagesSchema: (state) => state.pagesSchema,\n\n getQuickPageFilesToUpdate: (state) => state.quickPageFilesToUpdate,\n\n archivePages: (state) => state.archivePages,\n\n highlightedPageLevelComments: (state) => state.highlightedPageLevelComments,\n\n getPageLevelCommentInputActive: (state) => state.pageLevelCommentInputActive,\n\n getPageTemplates: (state) => state.pageTemplates,\n getPageTemplateDraft: (state) => state.pageTemplateDraft,\n\n getPageEditorDisplay: (state) => state.pageEditorDisplay,\n\n getPageIdForMove: (state) => state.pageIdForMove,\n};\n\nexport default getters;\n","/**\n * Page module vuex mutations\n * @packageDocumentation\n * @category Store\n */\nimport { MutationTree } from 'vuex';\nimport { PageState as State } from '@/types';\nimport getDefaultPageState from './getDefaultPageState';\nimport { browserStorageSetItem, browserStorageGetItem } from '@/utilities/browser-storage.util';\nimport { getParentPageForAddKey } from '@/utilities/localDrafts';\nimport { isTokenExpired } from '@/utilities/jwtUtilities';\nimport { toRaw } from 'vue';\n\nconst mutations: MutationTree = {\n setArchivedPages(state, data = []) {\n state.archivedPages = data;\n },\n\n addPageToArchivedPages(state, pageId) {\n state.archivedPages.push(pageId);\n },\n\n removePageFromArchivedPages(state, pageId) {\n const index = state.archivedPages.findIndex((id) => id === pageId);\n\n if (index > -1) {\n state.archivedPages.splice(index, 1);\n }\n },\n\n setPage(state, page = {}) {\n const existingPage = state.pages[page.id];\n let expired = true;\n if (existingPage?.collaboration?.token) {\n expired = isTokenExpired(existingPage.collaboration.token);\n }\n\n state.page = {\n ...existingPage,\n ...page,\n collaboration: expired ? toRaw(page.collaboration) : toRaw(existingPage.collaboration),\n };\n },\n\n updatePageMeta(state, page = {}) {\n state.page = {\n ...state.page,\n ...(page.bookmarked && { bookmarked: page.bookmarked }),\n ...(page.id && { id: page.id }),\n ...(page.is_public && { is_public: page.is_public }),\n ...(page.members && { members: page.members }),\n ...(page.project_id && { project_id: page.project_id }),\n ...(page.public_settings && { public_settings: page.public_settings }),\n ...(page.team_id && { team_id: page.team_id }),\n ...(page.time_created && { time_created: page.time_created }),\n ...(page.time_updated && { time_updated: page.time_updated }),\n ...(page.user_id && { user_id: page.user_id }),\n ...(page.icon && { icon: page.icon }),\n ...(page.cover_image && { cover_image: page.cover_image }),\n ...(page.collaboration && { collaboration: page.collaboration }),\n };\n\n const currentPageId = state.currentPageID;\n if (!state.pages[currentPageId]) {\n state.pages[currentPageId] = state.page;\n }\n state.pages[currentPageId] = {\n ...state.page,\n ...{\n bookmarked: page.bookmarked,\n id: page.id,\n is_public: page.is_public,\n members: page.members,\n project_id: page.project_id,\n public_settings: page.public_settings,\n team_id: page.team_id,\n time_created: page.time_created,\n time_updated: page.time_updated,\n user_id: page.user_id,\n cover_image: page.cover_image,\n icon: page.icon,\n },\n };\n },\n\n setCurrentPageID(state, id) {\n state.currentPageID = id;\n },\n\n setCurrentPageMode(state, mode) {\n state.currentPageMode = mode;\n },\n\n setPagesEntity(state, entity) {\n state.pagesEntity = entity;\n },\n\n loadingPages(state, payload) {\n state.loadingPages = payload;\n },\n\n removePageFromListByIndex(state, pageIndex) {\n if (state.pages[pageIndex]) {\n state.pages.splice(pageIndex, 1);\n }\n },\n\n pageCreating(state, payload) {\n state.pageCreating = payload;\n },\n\n setImageUploadPopup(state, payload) {\n state.imageUploadPopup = payload;\n },\n\n setCoverImageUploadPopup(state, payload) {\n state.coverImageUploadPopup = payload;\n },\n\n setPageIconUploadPopup(state, payload) {\n state.pageIconUploadPopup = payload;\n },\n\n setInsertLinkPopup(state, payload) {\n state.insertLinkPopup = payload;\n },\n\n resetPageState(state) {\n Object.assign(state, getDefaultPageState());\n },\n\n setPageVersions(state, payload) {\n state.pageVersions = payload;\n },\n\n setProjectPages(state, { projectId, pagesIds }) {\n state.projectPages[projectId] = pagesIds;\n },\n\n setPages(state, pages) {\n const updatedPages: any = {};\n Object.keys(pages).forEach((pageId) => {\n const page = pages[pageId];\n const existingPage = state.pages[pageId];\n if (!existingPage || page.time_updated > existingPage.time_updated) {\n updatedPages[pageId] = page;\n } else {\n updatedPages[pageId] = {\n ...existingPage,\n ...page,\n content: existingPage.content ?? page.content,\n time_updated: existingPage.time_updated ?? page.time_updated,\n };\n }\n });\n const newPages = { ...state.pages, ...updatedPages };\n\n state.pages = newPages;\n },\n\n addPageToProjectPages(state, { pageId, projectId }) {\n if (!state.projectPages[projectId]) {\n state.projectPages[projectId] = [];\n }\n state.projectPages[projectId].push(pageId);\n },\n\n setNewPageCreating(state, value) {\n state.newPageCreating = value;\n },\n\n localUpdatePageProp(state, { pageId, propertyName, value }) {\n if (state.page.id === pageId) {\n state.page[propertyName] = value;\n }\n if (state.pages[pageId]) {\n state.pages[pageId][propertyName] = value;\n }\n },\n\n removePageFormProjectPages(state, { pageId, projectId }) {\n if (state.projectPages[projectId]) {\n const index = state.projectPages[projectId].findIndex((id: any) => id === pageId);\n\n if (index > -1) {\n state.projectPages[projectId].splice(index, 1);\n }\n }\n },\n\n localRemovePageProp(state, { pageId, propertyName }) {\n if (state.page.id === pageId) {\n delete state.page[propertyName];\n }\n\n delete state.pages[pageId][propertyName];\n },\n\n addPageToPagesList(state, { page }) {\n const existingPage = state.pages[page.id];\n if (!existingPage || page.time_updated > existingPage.time_updated) {\n state.pages[page.id] = page;\n } else {\n state.pages[page.id] = {\n ...existingPage,\n ...page,\n content: existingPage.content ?? page.content,\n time_updated: existingPage.time_updated ?? page.time_updated,\n };\n }\n },\n\n deleteFromPages(state, { id }) {\n delete state.pages[id];\n },\n\n commentPopupVisible(state, payload) {\n state.inlineCommentPopup = payload;\n },\n\n addPageToFlatPages(state, page) {\n if (!state.pages[page.id]) {\n state.pages[page.id] = {};\n }\n const newPage = {\n ...page,\n ...{\n bookmarked: page.bookmarked,\n id: page.id,\n is_public: page.is_public,\n members: page.members,\n project_id: page.project_id,\n team_id: page.team_id,\n time_created: page.time_created,\n time_updated: page.time_updated,\n user_id: page.user_id,\n cover_image: page.cover_image,\n icon: page.icon,\n },\n };\n state.pages[page.id] = newPage;\n },\n\n setLastSidebarItemAdded(state, id) {\n state.lastSidebarItemAdded = id;\n },\n\n setParentPageIdForAdd(state, id) {\n state.parentPageIdForAdd = id;\n },\n\n setProjectPagesTree(state, { projectId, pagesTree }) {\n const draftPageProjectId = state.sidebarDraftPage?.projectId;\n const draftPageParentId = state.sidebarDraftPage?.parent;\n // Check if the project ID matches the ID of the currently selected draft page in the sidebar.\n if (projectId === draftPageProjectId) {\n // Get draft page if it exists in the local storage.\n const draftPage: any =\n browserStorageGetItem(\n getParentPageForAddKey(browserStorageGetItem('currentTeamId') || '')\n ) ?? {};\n // Update the project pages tree with the provided pages tree for the specified project ID.\n state.projectPagesTree[projectId] = {\n ...(state.projectPagesTree[projectId] ?? {}),\n ...(pagesTree ?? {}),\n };\n // Check if there are children in the draft page's parent in the current project pages tree.\n if (Object.keys(draftPage).length > 0) {\n const projecPagesTree = state.projectPagesTree?.[draftPageProjectId] ?? {};\n // Retrieve the current children of the draft page's parent.\n if (projecPagesTree) {\n const currentChildren =\n state.projectPagesTree?.[draftPageProjectId]?.[draftPageParentId]?.children ?? [];\n // Add the children of the draft page's parent to the current children and update the tree.\n state.projectPagesTree[draftPageProjectId][draftPageParentId] = {\n ...(state.projectPagesTree[draftPageProjectId][draftPageParentId] ?? {}),\n children: [...currentChildren, draftPage.id],\n };\n }\n }\n return;\n }\n state.projectPagesTree[projectId] = pagesTree;\n },\n\n setProjectPageOrderTree(state, { projectId, pagesTree }) {\n state.projectPagesTree[projectId] = pagesTree;\n },\n\n setProjectArchivedTree(state, { projectId, archiveTree }) {\n state.archivePagesTree[projectId] = archiveTree;\n },\n\n setProjectArchivePages(state, archivePages) {\n const newPages = { ...state.archivePages, ...archivePages };\n state.archivePages = newPages;\n },\n\n setProjectArchivePagesTree(state, { projectId, archivedPagesTree }) {\n state.archivePagesTree[projectId] = archivedPagesTree;\n },\n\n localUpdatePageOrderPosition(state, { projectId, parentId, newOrder }) {\n state.projectPagesTree[projectId][parentId].children = newOrder;\n },\n\n localAddPageInPageTree(state, { projectId, page, order, position = -1 }) {\n const newPageTree = {\n ...state.projectPagesTree[projectId],\n ...{ [page.id]: page },\n };\n state.projectPagesTree[projectId] = newPageTree;\n\n if (!order) return; // parent root order\n\n if (state.projectPagesTree[projectId][page.parent]) {\n if (state.projectPagesTree[projectId][page.parent]?.children?.includes(page.id)) return;\n if (state.projectPagesTree[projectId][page.parent].children) {\n if (position > -1) {\n state.projectPagesTree[projectId][page.parent].children.splice(position, 0, page.id);\n return;\n }\n state.projectPagesTree[projectId][page.parent].children.push(page.id);\n } else {\n state.projectPagesTree[projectId][page.parent].children = [page.id];\n }\n } else {\n // Check if the parent of the given page is not 'root'.\n if (page.parent !== 'root') {\n // Update the project pages tree for the specified project ID, adding the parent and its children.\n state.projectPagesTree[projectId] = {\n ...(state.projectPagesTree[projectId] ?? {}),\n [page.parent]: {\n ...(state.projectPagesTree[projectId][page.parent] ?? {}),\n children: [page.id],\n },\n };\n return;\n }\n const rootChildren = state.projectPagesTree[projectId]?.root?.children || [];\n if (rootChildren?.includes(page.id)) return;\n state.projectPagesTree[projectId] = {\n ...newPageTree,\n root: {\n id: 'root',\n children: [...rootChildren, page.id],\n },\n };\n }\n },\n\n localAddPageInArchivePageTree(state, { projectId, page }) {\n const newPageTree = {\n ...state.archivePagesTree[projectId],\n ...{ [page.id]: page },\n };\n\n const newPages = { ...state.archivePages, ...{ [page.id]: state.pages[page.id] } };\n state.archivePages = newPages;\n\n state.archivePagesTree[projectId] = newPageTree;\n\n if (state.archivePagesTree[projectId][page.parent]) {\n if (state.archivePagesTree[projectId][page.parent].children) {\n state.archivePagesTree[projectId][page.parent].children.push(page.id);\n } else {\n state.archivePagesTree[projectId][page.parent].children = [page.id];\n }\n } else {\n state.archivePagesTree[projectId] = {\n ...newPageTree,\n root: { id: 'root', children: [page.id] },\n };\n }\n },\n\n localRemovePagesFromTree(state, { projectId, pages }) {\n const pagesForDelete = pages;\n\n pagesForDelete.forEach((page: any) => {\n delete state.projectPagesTree[projectId][page.id];\n });\n },\n\n localRemovePagesFromArchiveTree(state, { projectId, pages }) {\n const pagesForDelete = pages;\n\n pagesForDelete.forEach((page: any) => {\n if (state.archivePagesTree[projectId] && page?.id) {\n delete state.archivePagesTree[projectId][page.id];\n }\n });\n },\n\n localRemovePageFromPageOrder(state, { projectId, pageId }) {\n if (!state.projectPagesTree[projectId]) return;\n const page = state.projectPagesTree[projectId][pageId];\n const pageParentId = page?.parent;\n const parentsPageChildren = state.projectPagesTree[projectId][pageParentId]?.children;\n if (!parentsPageChildren) return;\n if (!page) return;\n\n delete state.projectPagesTree[projectId][pageId];\n\n const pageForRemoveIndex = parentsPageChildren.findIndex((i: any) => i === pageId);\n if (pageForRemoveIndex > -1) {\n parentsPageChildren.splice(pageForRemoveIndex, 1);\n }\n if (parentsPageChildren.length === 0) {\n const newPageTree = {\n ...state.projectPagesTree[projectId],\n ...{\n [page.id]: {\n id: page.id,\n parent: pageParentId,\n },\n },\n };\n state.projectPagesTree[projectId] = newPageTree;\n }\n },\n\n removePageFromArchivedParentOrder(state, { projectId, pageParentId, pageId }) {\n const pageForRemoveIndex = state.archivePagesTree[projectId][pageParentId].children.findIndex(\n (i: any) => i === pageId\n );\n if (pageForRemoveIndex > -1) {\n state.archivePagesTree[projectId][pageParentId].children.splice(pageForRemoveIndex, 1);\n }\n },\n\n localRemovePageFromArchivedTree(state, { projectId, pageId }) {\n const page = state.archivePagesTree[projectId][pageId];\n if (!page) return;\n const pageParentId = page.parent;\n\n delete state.archivePagesTree[projectId][pageId];\n delete state.archivePages[pageId];\n\n const pageForRemoveIndex = state.archivePagesTree[projectId][pageParentId].children.findIndex(\n (i: any) => i === pageId\n );\n if (pageForRemoveIndex > -1) {\n state.archivePagesTree[projectId][pageParentId].children.splice(pageForRemoveIndex, 1);\n }\n if (state.archivePagesTree[projectId][pageParentId].children.length === 0) {\n const newPageTree = {\n ...state.archivePagesTree[projectId],\n ...{\n [page.id]: {\n id: page.id,\n parent: pageParentId,\n },\n },\n };\n state.archivePagesTree[projectId] = newPageTree;\n }\n },\n\n localAddPageToPageOrder(state, { projectId, pageId }) {\n const page = state.projectPagesTree[projectId][pageId];\n const pageParentId = page.parent;\n if (state.projectPagesTree[projectId][pageParentId].children.includes(pageId)) return;\n state.projectPagesTree[projectId][pageParentId].children.push(pageId);\n },\n\n localMovePageInPageTree(\n state,\n { projectIdTo, projectIdFrom, page, parentIdTo, parentIdFrom, position }\n ) {\n if (!state.projectPagesTree[projectIdTo]) return;\n if (\n !state.projectPagesTree[projectIdTo][parentIdTo] ||\n !state.projectPagesTree[projectIdFrom][parentIdFrom]\n )\n return;\n const pageForChange = page;\n const pagesObject = { ...state.projectPagesTree };\n delete pagesObject[projectIdFrom][page.id];\n state.projectPagesTree = pagesObject;\n const pageForRemoveIndex = state.projectPagesTree[projectIdFrom][\n parentIdFrom\n ].children.findIndex((i: any) => i === page.id);\n state.projectPagesTree[projectIdFrom][parentIdFrom].children.splice(pageForRemoveIndex, 1);\n\n pageForChange.parent = parentIdTo;\n state.projectPagesTree[projectIdTo] = {\n ...state.projectPagesTree[projectIdTo],\n [page.id]: pageForChange,\n };\n if (state.projectPagesTree[projectIdTo][parentIdTo]?.children) {\n state.projectPagesTree[projectIdTo][parentIdTo].children.splice(position, 0, page.id);\n } else {\n state.projectPagesTree[projectIdTo][parentIdTo].children = [page.id];\n }\n },\n\n localAddProjectInPageTree(state, projectId) {\n const newPageObje = {\n ...state.projectPagesTree[projectId],\n root: { id: 'root', children: [] },\n };\n state.projectPagesTree[projectId] = newPageObje;\n },\n\n setSidebarPageDraft(state, { draftPageItem, teamId }) {\n state.sidebarDraftPage = draftPageItem;\n browserStorageSetItem(getParentPageForAddKey(teamId), draftPageItem);\n },\n\n setSetParentPageExpand(state, { id, value }) {\n state.parentPageExpanded[id] = value;\n let existing = localStorage.getItem('parentPageExpanded');\n existing = existing ? JSON.parse(existing) : {};\n // @ts-ignore: Object is possibly 'null'.\n existing[id] = value;\n localStorage.setItem('parentPageExpanded', JSON.stringify(existing));\n },\n\n setPageUploadPopup(state, value) {\n state.pageUploadPopup = value;\n },\n\n removePageUploadPopup(state) {\n state.pageUploadPopup = {};\n },\n\n setPageRenamingId(state, value) {\n state.pageRenamingId = value;\n },\n\n addQuickPageFileToUpdate(state, file) {\n state.quickPageFilesToUpdate.push(file);\n },\n\n removeQuickPageFilesToUpdate(state) {\n state.quickPageFilesToUpdate = [];\n },\n\n setPageTemplates(state, templatesArray) {\n const flatTemplates: { [key: string]: any } = {};\n templatesArray.forEach((template: any) => {\n flatTemplates[template.id] = template;\n });\n const newTemplates = { ...flatTemplates };\n state.pageTemplates = newTemplates;\n },\n\n setPageTemplate(state, template) {\n state.pageTemplates[template.id] = template;\n },\n\n replacePageTemplateId(state, { localId, template }) {\n const newTemplates = { ...state.pageTemplates };\n delete newTemplates[localId];\n newTemplates[template.id] = template;\n state.pageTemplates = newTemplates;\n },\n\n deletePageTemplate(state, templateId) {\n const newTemplates = { ...state.pageTemplates };\n delete newTemplates[templateId];\n state.pageTemplates = newTemplates;\n },\n\n setPageTemplateDraft(state, template) {\n const newTemplate = {\n page_content: template.page_content,\n page_title: template.page_title,\n icon: template.icon,\n project_ids: template.project_ids,\n title: template.title,\n };\n state.pageTemplateDraft = newTemplate;\n },\n\n updatePageTemplateDraftField(state, { fieldName, value }) {\n state.pageTemplateDraft[fieldName] = value;\n },\n\n clearPageTemplateDraft(state) {\n state.pageTemplateDraft = {\n title: '',\n icon: {},\n project_ids: [],\n page_title: '',\n page_content: '',\n };\n },\n\n setHighlightedPageLevelComments(state, commentsIds) {\n state.highlightedPageLevelComments = commentsIds;\n },\n\n setPageLevelCommentInputActive(state, value) {\n state.pageLevelCommentInputActive = value;\n },\n\n managePageTemplateSelectedSpaces(state, spaceId) {\n const { project_ids } = state.pageTemplateDraft;\n const index = project_ids.indexOf(spaceId);\n if (index > -1) {\n project_ids.splice(index, 1);\n } else {\n project_ids.push(spaceId);\n }\n },\n\n setPageEditorDisplay(state, payload) {\n state.pageEditorDisplay = payload;\n },\n\n removePage(state, pageId) {\n delete state.pages[pageId];\n },\n\n setPageIdForMove(state, pageId) {\n state.pageIdForMove = pageId;\n },\n};\n\nexport default mutations;\n","/**\n * Pages module actions\n * @packageDocumentation\n * @category Store\n */\nimport { nanoid } from 'nanoid';\nimport { ActionTree } from 'vuex';\nimport { PageState as State } from '@/types';\nimport { authGet, authPut, authDelete, authPatch, api } from '@/utilities/api';\nimport { translate } from '@/utilities';\n\nconst activePromises: { [key: string]: { [key: string]: Promise } } = {\n pages: {},\n projectPages: {},\n};\nimport { OnboardingActionType } from '@/types/onboardingActions';\nimport { ResourceType } from '@/types/resources';\n\nconst actions: ActionTree = {\n loadArchivedPages({ commit, getters }) {\n return api.pages\n .getPages(getters.getTeamID, {\n archived: true,\n })\n .then((r) => r.data)\n .then(({ pages }) => {\n const pagesObject: any = {};\n const pagesIds: any = [];\n\n pages?.forEach((p: any) => {\n pagesIds.push(p.id);\n pagesObject[p.id] = p;\n });\n\n commit('setPages', pagesObject);\n commit('setArchivedPages', pagesIds);\n });\n },\n\n /**\n * Archive page\n * https://api.superthread.com/v1/{team_id}/pages/{page_id}\n */\n archivePage({ commit, getters }, { pageId, projectId }) {\n const { getRoutes, getTeamID } = getters;\n\n const timeNow = Math.floor(Date.now() / 1000);\n const page = getters.getPageById(pageId);\n const pageFromTree = getters.getProjectPagesTree(projectId)[page.id];\n\n commit('addPageToArchivedPages', pageId);\n\n commit('localUpdatePageProp', {\n pageId,\n propertyName: 'archived',\n value: {\n time_archived: timeNow,\n user_id: getters.getUserId,\n parent_page_id: pageFromTree.parent,\n },\n });\n\n commit('removePageFormProjectPages', {\n pageId,\n projectId,\n });\n\n commit('localAddPageInArchivePageTree', { projectId, page: pageFromTree });\n\n commit('localRemovePageFromPageOrder', { projectId, pageId });\n\n commit('localRemovePagesFromTree', { projectId, pages: [pageFromTree] });\n\n // remove page from team project\n commit('removeProjectPage', { pageId, projectId });\n\n return authPut(`${getRoutes.pages}/v1/${getTeamID}/pages/${pageId}/archive`).catch((error) => {\n commit('removePageFromArchivedPages', pageId);\n commit('localUpdatePageProp', {\n pageId,\n propertyName: 'archived',\n value: {\n time_archived: null,\n user_id: '',\n },\n });\n commit('addPageToProjectPages', {\n pageId,\n projectId,\n });\n // add page to team project\n commit('addProjectPage', { page: { id: pageId, title: page.title }, projectId });\n throw error;\n });\n },\n\n unarchivePage({ commit, getters }, { pageId, projectId }) {\n const { getRoutes, getTeamID } = getters;\n const page = getters.getPageById(pageId);\n const archivedTime = page.archived.time_archived;\n const parentPageId = page.archived.parent_page_id;\n\n commit('removePageFromArchivedPages', pageId);\n commit('localUpdatePageProp', {\n pageId,\n propertyName: 'archived',\n value: {\n time_archived: null,\n user_id: '',\n parent_page_id: parentPageId,\n },\n });\n commit('addPageToProjectPages', {\n pageId,\n projectId,\n });\n\n // add page to team project\n commit('addProjectPage', { page: { id: pageId, title: page.title }, projectId });\n\n return authDelete(`${getRoutes.pages}/v1/${getTeamID}/pages/${pageId}/archive`).catch(\n (error) => {\n commit('addPageToArchivedPages', pageId);\n commit('removePageFormProjectPages', {\n pageId,\n projectId,\n });\n commit('localUpdatePageProp', {\n pageId,\n propertyName: 'archived',\n value: {\n time_archived: archivedTime,\n user_id: getters.getUserId,\n parent_page_id: parentPageId,\n },\n });\n\n // remove page from team project\n commit('removeProjectPage', { pageId, projectId });\n throw error;\n }\n );\n },\n\n loadPages({ commit, getters }, projectIdParam) {\n let projectId = projectIdParam;\n if (!projectIdParam) {\n commit('loadingPages', true);\n projectId = getters.getCurrentProjectId;\n }\n if (activePromises.projectPages[projectId] !== undefined) {\n return activePromises.projectPages[projectId];\n }\n activePromises.projectPages[projectId] = api.pages\n .getPages(getters.getTeamID, {\n project_id: projectId,\n })\n .then((r) => r.data)\n .then(({ pages }) => {\n const pagesIds: any = [];\n const pagesObject: any = {};\n\n pages?.forEach((p: any) => {\n pagesIds.push(p.id);\n const newPage = {\n ...(getters.getPageById(p.id) || {}),\n ...p,\n };\n pagesObject[p.id] = newPage;\n });\n\n commit('setPages', pagesObject);\n commit('setProjectPages', { projectId, pagesIds });\n return pages;\n })\n .catch(() => {})\n .finally(() => {\n if (getters.loadingPages) {\n commit('loadingPages', false);\n }\n delete activePromises.projectPages[projectId];\n });\n return activePromises.projectPages[projectId];\n },\n\n fetchPage({ commit, getters }, pageId) {\n return api.pages.getPage(getters.getTeamID, pageId).then(({ data }) => {\n const { page } = data;\n\n if (!page?.id) return;\n\n commit('setPages', {\n [page.id]: page,\n });\n commit('setProjectPages', {\n projectId: page.project_id,\n pagesIds: [page.id],\n });\n\n return page;\n });\n },\n\n handlePageCreated({ commit, dispatch }, { page }) {\n commit('addPageToFlatPages', page);\n commit('addPageToProjectPages', {\n pageId: page.id,\n projectId: page.project_id,\n });\n dispatch('localAddPageInPageTree', {\n projectId: page.project_id,\n pageId: page.id,\n });\n dispatch('localAddPageInProject', {\n projectId: page.project_id,\n page,\n });\n },\n\n // https://api.superthread.com/v1/{team_id}/pages\n createNewPage({ getters, dispatch }, { page }) {\n const pageToCreate = {\n title: page.title || '',\n ...(page.content && { content: page.content }),\n ...(page.project_id && { project_id: page.project_id }),\n ...(getters.getParentPageIdForAdd !== '' && {\n parent_page_id: getters.sidebarDraftPage?.parent || getters.getParentPageIdForAdd,\n }),\n ...(page.cover_image && {\n ...(page.cover_image.src && { src: page.cover_image.src }),\n ...(page.cover_image.blurhash && { blurhash: page.cover_image.blurhash }),\n }),\n ...(page.icon && {\n ...(page.icon.src && { src: page.icon.src }),\n ...(page.icon.blurhash && { blurhash: page.icon.blurhash }),\n }),\n ...(page.user_id && { user_id: page.user_id }),\n ...(page.is_public && { is_public: page.is_public }),\n schema: page.schema ?? getters.pagesSchema,\n };\n\n return api.pages\n .createPage(getters.getTeamID, pageToCreate)\n .then(({ data }) => {\n dispatch('completeOnboardingActions', [OnboardingActionType.CreatePage]);\n return data;\n })\n .catch((error) => {\n dispatch('pageCreating', false);\n throw error;\n });\n },\n\n debounceUpdatePage({ getters, commit }, { pageId, payload }) {\n const { getTeamID } = getters;\n return api.pages\n .updatePage(getTeamID, pageId, payload)\n .then(({ data }) => {\n return data;\n })\n .catch(({ response }) => {\n const error = response.data;\n if (error.message === 'oldSchema') {\n // add ui notification\n commit('addUiNotification', {\n message: translate('updateAppToEditPage'),\n duration: 4000,\n id: nanoid(4),\n });\n }\n throw error;\n });\n },\n\n /**\n * Update existing page\n * https://api.superthread.com/v1/{team_id}/pages/{page_id}\n * @param page page object\n * @returns {Promise}\n */\n updatePageProps({ getters }, { pageId, page }) {\n const { getTeamID } = getters;\n return api.pages.updatePage(getTeamID, pageId, page).then((data) => {\n return data;\n });\n },\n\n // https://api.superthread.com/v1/{team_id}/pages/{page_id}\n loadPage({ state, getters, dispatch }, pageId = state.currentPageID) {\n return authGet(`${getters.getRoutes.pages}/v1/${getters.getTeamID}/pages/${pageId}`)\n .then(({ data }) => {\n dispatch('setCurrentPageMode', 'view');\n return data;\n })\n .catch((/* error */) => {\n dispatch('setCurrentPageMode', 'notfound');\n dispatch('setPage', {});\n });\n },\n fetchPageData({ getters, commit }, { teamId, resourceId }) {\n const existingPromise = activePromises.pages[resourceId];\n if (existingPromise !== undefined) return existingPromise;\n const promise = authGet(`${getters.getRoutes.pages}/v1/${teamId}/pages/${resourceId}`)\n .then(({ data }) => {\n if (teamId === getters.getTeamID) {\n commit('addPageToPagesList', { page: data.page });\n }\n return data.page;\n })\n .finally(() => {\n delete activePromises.pages[resourceId];\n });\n activePromises.pages[resourceId] = promise;\n return promise;\n },\n\n loadPageVersions({ state, getters, commit }) {\n return api.pages\n .getPageVersions(getters.getTeamID, state.currentPageID)\n .then(({ data }) => {\n commit('setPageVersions', data.pageVersions);\n })\n .catch((error) => {\n console.log('error ', error);\n });\n },\n\n setPageVersions({ commit }, payload) {\n commit('setPageVersions', payload);\n },\n\n setCurrentPageID({ commit }, pageId) {\n commit('setCurrentPageID', pageId);\n },\n\n setCurrentPageMode({ commit }, mode) {\n commit('setCurrentPageMode', mode);\n },\n\n setPage({ commit }, page) {\n commit('setPage', page);\n },\n\n updatePageMeta({ commit }, page) {\n commit('updatePageMeta', page);\n },\n\n setPagesEntity({ commit }, entity) {\n commit('setPagesEntity', entity);\n },\n\n localMovePageToProject({ commit }, { pageId, projectIdAdd, projectIdRemove }) {\n commit('removePageFormProjectPages', {\n pageId,\n projectId: projectIdRemove,\n });\n\n commit('addPageToProjectPages', {\n pageId,\n projectId: projectIdAdd,\n });\n\n commit('localUpdatePageProp', {\n pageId,\n propertyName: 'project_id',\n value: projectIdAdd,\n });\n\n commit('localRemoveBoardOrPageInProject', {\n projectId: projectIdRemove,\n itemId: pageId,\n section: 'pages',\n });\n },\n\n movePageToProject(\n { getters, dispatch },\n { pageId, projectId, currentProjectId, parentPageId = 'root', position = -1 }\n ) {\n const newProjectPagesLength = getters.getProjectPages(projectId).length;\n\n dispatch('localMovePageToProject', {\n pageId,\n projectIdAdd: projectId,\n projectIdRemove: currentProjectId,\n });\n\n return dispatch('updatePageProps', {\n pageId,\n page: {\n project_id: projectId,\n parent_page_id: parentPageId,\n ...(position > -1 && newProjectPagesLength && { position }),\n },\n }).catch(() => {\n dispatch('localMovePageToProject', {\n pageId,\n projectIdAdd: currentProjectId,\n projectIdRemove: projectId,\n });\n });\n },\n\n localMovePageInPageTree(\n { commit, dispatch },\n { projectIdTo, projectIdFrom, page, parentIdTo, parentIdFrom, position }\n ) {\n commit('localMovePageInPageTree', {\n projectIdTo,\n projectIdFrom,\n page,\n parentIdTo,\n parentIdFrom,\n position,\n });\n if (projectIdTo !== projectIdFrom) {\n dispatch('localMovePageToProject', {\n pageId: page.id,\n projectIdAdd: projectIdTo,\n projectIdRemove: projectIdFrom,\n });\n\n commit('localUpdatePageProp', {\n pageId: page.id,\n propertyName: 'project_id',\n value: projectIdTo,\n });\n }\n },\n\n /**\n * Set comments count in current page\n * @param {number} commentsCount\n */\n\n pageCreating({ commit }, payload) {\n commit('pageCreating', payload);\n },\n\n setImageUploadPopup({ commit }, payload) {\n commit('setImageUploadPopup', payload);\n },\n\n setCoverImageUploadPopup({ commit }, payload) {\n commit('setCoverImageUploadPopup', payload);\n },\n\n setPageIconUploadPopup({ commit }, payload) {\n commit('setPageIconUploadPopup', payload);\n },\n\n setInsertLinkPopup({ commit }, payload) {\n commit('setInsertLinkPopup', payload);\n },\n\n resetPageState({ commit }) {\n commit('resetPageState');\n },\n\n getPageTitleByTeamIdAndPageId({ getters }, { teamId, resourceId }) {\n return authGet(`${getters.getRoutes.pages}/v1/${teamId}/pages/${resourceId}`)\n .then(({ data }) => data.page)\n .catch((error) => {\n throw error;\n });\n },\n\n togglePagePublicFlag({ getters }, { isPublic, pageId }) {\n const { getTeamID } = getters;\n return authPatch(`${getters.getRoutes.pages}/v1/${getTeamID}/pages/${pageId}`, {\n is_public: isPublic,\n });\n },\n\n setPages({ commit }, pages) {\n commit('setPages', pages);\n },\n\n addPageToProjectPages({ commit }, { pageId, projectId }) {\n commit('addPageToProjectPages', { pageId, projectId });\n },\n\n setNewPageCreating({ commit }, value) {\n commit('setNewPageCreating', value);\n },\n\n localUpdatePageProp({ commit }, { pageId, propertyName, value }) {\n commit('localUpdatePageProp', {\n pageId,\n propertyName,\n value,\n });\n },\n\n duplicatePage({ getters }, { pageId, teamId, projectId, title, position = -1 }) {\n const { getParentPageIdForAdd } = getters;\n const page = {\n project_id: projectId,\n title,\n parent_page_id: getParentPageIdForAdd,\n ...(position > -1 && { position }),\n };\n return api.pages.copyPage(teamId, pageId, page).then(({ data }) => data);\n },\n addPageToPagesList({ commit }, { localId, page }) {\n commit('addPageToPagesList', {\n localId,\n page,\n });\n },\n deleteFromPages({ commit }, { id, page }) {\n commit('deleteFromPages', {\n id,\n page,\n });\n },\n\n commentPopupVisible({ commit }, payload) {\n commit('commentPopupVisible', payload);\n },\n\n addPageToFlatPages({ commit }, payload) {\n commit('addPageToFlatPages', payload);\n },\n setProjectPages({ commit }, { projectId, pagesIds }) {\n commit('setProjectPages', { projectId, pagesIds });\n },\n\n setLastSidebarItemAdded({ commit }, id) {\n commit('setLastSidebarItemAdded', id);\n },\n\n setParentPageIdForAdd({ commit }, id) {\n commit('setParentPageIdForAdd', id);\n },\n\n setProjectPagesTree({ commit }, payload) {\n commit('setProjectPagesTree', payload);\n },\n\n setProjectPageOrderTree({ commit }, { projectId, pagesTree }) {\n commit('setProjectPageOrderTree', { projectId, pagesTree });\n },\n\n setProjectArchivedTree({ commit }, payload) {\n commit('setProjectArchivedTree', payload);\n },\n\n setProjectArchivePages({ commit }, archivePages) {\n commit('setProjectArchivePages', archivePages);\n },\n\n setProjectArchivePagesTree({ commit }, { projectId, archivedPagesTree }) {\n commit('setProjectArchivePagesTree', { projectId, archivedPagesTree });\n },\n\n localAddPageInPageTree({ commit, getters }, { projectId, pageId, position = -1 }) {\n const parentPageId = getters.sidebarDraftPage?.id\n ? getters.sidebarDraftPage?.parent\n : getters.getParentPageIdForAdd;\n const page = {\n id: pageId,\n parent: parentPageId,\n };\n commit('localAddPageInPageTree', {\n projectId,\n page,\n order: true,\n position,\n });\n },\n\n localRemovePagesFromTree({ commit }, { projectId, pages, archiveTree = false }) {\n if (archiveTree) {\n commit('localRemovePagesFromArchiveTree', {\n projectId,\n pages,\n });\n return;\n }\n commit('localRemovePagesFromTree', {\n projectId,\n pages,\n });\n },\n\n removePageFromArchivedParentOrder({ commit }, { projectId, pageParentId, pageId }) {\n commit('removePageFromArchivedParentOrder', { projectId, pageParentId, pageId });\n },\n\n localRemovePageFromArchivedTree({ commit }, { projectId, pageId }) {\n commit('localRemovePageFromArchivedTree', {\n projectId,\n pageId,\n });\n },\n\n localAddPageInArchivePageTree({ commit }, { projectId, page }) {\n commit('localAddPageInArchivePageTree', {\n projectId,\n page,\n });\n },\n\n localAddPageInProjectPageTree({ commit }, { projectId, page, order = false }) {\n commit('localAddPageInPageTree', { projectId, page, order });\n },\n\n localUpdatePageOrderPosition({ commit }, { projectId, parentId, newOrder }) {\n commit('localUpdatePageOrderPosition', {\n projectId,\n parentId,\n newOrder,\n });\n },\n\n setSidebarPageDraft({ commit, getters }, draftPageItem) {\n const { getTeamID } = getters;\n commit('setSidebarPageDraft', { draftPageItem, teamId: getTeamID });\n },\n\n movePageHandler(\n { commit, getters, dispatch },\n {\n destinationProjectId,\n originalProjectId,\n destinationPages,\n originalPages,\n destinationPageOrder,\n originalPageOrder,\n }\n ) {\n const desinationPageTree: any = {};\n const orginalPageTree: any = {};\n const destinationPagesIds: any = [];\n\n [...(destinationPageOrder || [])].forEach((p) => {\n desinationPageTree[p.id] = p;\n });\n [...(originalPageOrder || [])].forEach((p) => {\n orginalPageTree[p.id] = p;\n });\n\n if (destinationPages?.length) {\n destinationPages.forEach((p: any) => {\n destinationPagesIds.push(p.id);\n commit('localUpdatePageProp', {\n pageId: p.id,\n propertyName: 'project_id',\n value: destinationProjectId,\n });\n });\n }\n if (destinationPageOrder?.length) {\n dispatch('localUpdateTeamProjectField', {\n projectId: destinationProjectId,\n fieldName: 'page_order',\n fieldValue: destinationPageOrder,\n });\n }\n\n if (originalPageOrder?.length) {\n dispatch('localUpdateTeamProjectField', {\n projectId: originalProjectId,\n fieldName: 'page_order',\n fieldValue: originalPageOrder,\n });\n }\n\n if (destinationPages != undefined) {\n dispatch('localUpdateTeamProjectField', {\n projectId: destinationProjectId,\n fieldName: 'pages',\n fieldValue: destinationPages,\n });\n }\n\n if (originalPages != undefined) {\n dispatch('localUpdateTeamProjectField', {\n projectId: originalProjectId,\n fieldName: 'pages',\n fieldValue: originalPages,\n });\n }\n\n commit('setProjectPagesTree', {\n projectId: destinationProjectId,\n pagesTree: { ...getters.getProjectPagesTree(destinationProjectId), ...desinationPageTree },\n });\n\n commit('setProjectPagesTree', {\n projectId: originalProjectId,\n pagesTree: { ...getters.getProjectPagesTree(originalProjectId), ...orginalPageTree },\n });\n },\n\n setSetParentPageExpand({ commit }, { id, value }) {\n commit('setSetParentPageExpand', { id, value });\n },\n\n removePageFromBookmarked({ commit }, pageId) {\n commit('removePageFromBookmarked', pageId);\n },\n\n setPageUploadPopup({ commit }, value) {\n commit('setPageUploadPopup', value);\n },\n\n removePageUploadPopup({ commit }) {\n commit('removePageUploadPopup');\n },\n\n setPageRenamingId({ commit }, value) {\n commit('setPageRenamingId', value);\n },\n\n refreshPageCollaboration({ commit, getters }, { id }) {\n if (id === 'newpage') return;\n const { getTeamID } = getters;\n return api.pages\n .getPageCollaboration(getTeamID, id)\n .then(({ data }) => {\n commit('localUpdatePageProp', {\n pageId: id,\n propertyName: 'collaboration',\n value: data.collaboration,\n });\n })\n .catch(() => {});\n },\n\n addQuickPageFileToUpdate({ commit }, file) {\n commit('addQuickPageFileToUpdate', file);\n },\n\n removeQuickPageFilesToUpdate({ commit }) {\n commit('removeQuickPageFilesToUpdate');\n },\n\n removePageIconOrCover({ getters, commit }, { page, propertyName }) {\n const value = page[propertyName];\n let query = propertyName;\n if (propertyName === 'cover_image') query = 'cover';\n commit('localUpdatePageProp', {\n pageId: page.id,\n propertyName,\n value: {\n src: '',\n blurhash: '',\n type: '',\n },\n });\n return authDelete(\n `${getters.getRoutes.pages}/v1/${getters.getTeamID}/pages/${page.id}/${query}`\n ).catch(() => {\n commit('localUpdatePageProp', {\n pageId: page.id,\n propertyName,\n value,\n });\n });\n },\n\n fetchPageTemplates({ commit, getters }, projectId) {\n return api.pages\n .getPageTemplates(getters.getTeamID, {\n ...(projectId && { project_id: projectId }),\n })\n .then(({ data }) => {\n commit('setPageTemplates', data.page_templates || []);\n return data;\n })\n .catch((error) => {\n throw error;\n });\n },\n\n fetchPageTemplate({ commit, getters }, templateId) {\n if (!templateId) return Promise.resolve({});\n\n return api.pages\n .getPageTemplate(getters.getTeamID, templateId)\n .then(({ data: { page_template: pageTemplate } }) => {\n commit('setPageTemplate', pageTemplate || {});\n return pageTemplate;\n })\n .catch((error) => {\n throw error;\n });\n },\n\n createPageTemplate({ commit, getters }, pageTemplate = getters.getPageTemplateDraft) {\n const tempId = nanoid(4);\n commit('setPageTemplate', {\n ...pageTemplate,\n id: tempId,\n user: { user_id: getters.getUserId },\n });\n\n return api.pages\n .createPageTemplate(getters.getTeamID, {\n ...pageTemplate,\n })\n .then(({ data }) => {\n commit('replacePageTemplateId', { localId: tempId, template: data.page_template ?? {} });\n return data;\n })\n .catch((error) => {\n commit('deletePageTemplate', tempId);\n throw error;\n });\n },\n\n updatePageTemplate(\n { commit, getters },\n {\n templateId,\n pageTemplate = getters.getPageTemplateDraft,\n user = { user_id: getters.getUserId },\n }\n ) {\n if (!templateId) return Promise.resolve({});\n\n const oldTemplate = getters.getPageTemplates[templateId];\n commit('setPageTemplate', {\n id: templateId,\n ...pageTemplate,\n user,\n user_updated: { user_id: getters.getUserId },\n });\n return api.pages\n .updatePageTemplate(getters.getTeamID, templateId, {\n ...pageTemplate,\n })\n .then(({ data }) => {\n commit('setPageTemplate', { id: templateId, ...data.page_template });\n return data;\n })\n .catch((error) => {\n commit('setPageTemplate', { id: templateId, ...oldTemplate });\n throw error;\n });\n },\n\n deletePageTemplate({ commit, getters }, templateId) {\n if (!templateId) return Promise.resolve({});\n\n const oldTemplate = getters.getPageTemplates[templateId];\n commit('deletePageTemplate', templateId);\n return api.pages.deletePageTemplate(getters.getTeamID, templateId).catch((error) => {\n commit('setPageTemplate', { id: templateId, ...oldTemplate });\n throw error;\n });\n },\n\n setPageTemplateDraft({ commit }, template) {\n commit('setPageTemplateDraft', template);\n },\n\n updatePageTemplateDraftField({ commit }, { fieldName, value }) {\n commit('updatePageTemplateDraftField', { fieldName, value });\n },\n\n clearPageTemplateDraft({ commit }) {\n commit('clearPageTemplateDraft');\n },\n\n setHighlightedPageLevelComments({ commit }, commentsIds) {\n commit('setHighlightedPageLevelComments', commentsIds);\n },\n\n setPageLevelCommentInputActive({ commit }, value) {\n commit('setPageLevelCommentInputActive', value);\n },\n\n managePageTemplateSelectedSpaces({ commit }, spaceId) {\n commit('managePageTemplateSelectedSpaces', spaceId);\n },\n\n setPageEditorDisplay({ commit }, payload) {\n commit('setPageEditorDisplay', payload);\n },\n\n async deletePage({ commit, getters, dispatch }, { pageId, projectId }) {\n const page = getters.getPageById(pageId);\n const pageFromTree = getters.getProjectPagesTree(projectId)[page.id];\n const pages = getters.getPages;\n\n if (Object.keys(page).length === 0) return Promise.reject(new Error('Page not found'));\n\n commit('removePageFormProjectPages', {\n pageId,\n projectId,\n });\n\n commit('localRemovePageFromPageOrder', { projectId, pageId });\n commit('localRemovePagesFromTree', { projectId, pages: [pageFromTree] });\n commit('removeProjectPage', { pageId, projectId });\n commit('removePage', pageId);\n\n const isFavourite = getters.isFavourite(pageId, ResourceType.Page);\n if (isFavourite) {\n dispatch('deleteUserFavourite', {\n resource_id: pageId,\n resource_type: ResourceType.Page,\n title: page.title,\n });\n }\n\n return await api.pages\n .deleteAPage(getters.getTeamID, pageId)\n .then(() => {\n // check if page has subpages and if they are favourite\n if (pageFromTree.children) {\n const subpages = Object.values(pageFromTree.children);\n subpages.forEach((subpage: any) => {\n if (getters.isFavourite(subpage, ResourceType.Page)) {\n dispatch('deleteUserFavourite', {\n resource_id: subpage,\n resource_type: ResourceType.Page,\n });\n }\n });\n pageFromTree.children.forEach((childId: any) => {\n if (pages.hasOwnProperty(childId)) {\n delete pages[childId];\n }\n });\n }\n dispatch('removeFromElectronRecentlyViewed', {\n currentlyViewed: { id: pageId, type: ResourceType.Page },\n teamId: getters.getTeamID,\n });\n if (pages?.hasOwnProperty(pageId)) {\n delete pages[pageId];\n }\n dispatch('setPages', pages);\n })\n .catch((error) => {\n commit('addPageToProjectPages', {\n pageId,\n projectId,\n });\n commit('addProjectPage', { page: { id: pageId, title: page.title }, projectId });\n dispatch('addFavourite', {\n resource_id: pageId,\n resource_type: ResourceType.Page,\n });\n throw error;\n });\n },\n\n removePage({ commit }, pageId) {\n commit('removePage', pageId);\n },\n\n setPageIdForMove({ commit }, pageId) {\n commit('setPageIdForMove', pageId);\n },\n};\n\nexport default actions;\n","import getDefaultPageState from './getDefaultPageState';\nimport getters from './getters';\nimport mutations from './mutations';\nimport actions from './actions';\n\nexport default {\n state: getDefaultPageState(),\n getters,\n actions,\n mutations,\n};\n","import { OnboardingState as IState } from '@/types';\n\nconst getDefaultOnboardingState = (): IState => ({\n userID: '',\n teamName: '',\n subdomain: '',\n invitationCode: '',\n errorMessage: '',\n projectName: '',\n currentTeamId: '',\n currentTeamName: '',\n workspaceErrorMessage: '',\n failedInvites: [],\n onboardingWorkspace: JSON.parse(localStorage['onboardingWorkspace'] || '{}'),\n signupAnswers: {},\n getStartedExpanded: true,\n getStartedShowAll: false,\n onboardingActions: [],\n});\n\nexport default getDefaultOnboardingState;\n","/**\n * Onboarding module getters\n * @packageDocumentation\n * @category Store\n */\nimport { GetterTree } from 'vuex';\nimport { OnboardingState as State } from '@/types';\n\nconst getters: GetterTree = {\n onboardingUserID: (state) => state.userID,\n onboardingTeamName: (state) => state.teamName,\n onboardingSubDomain: (state) => state.subdomain,\n onboardingWorkspace: (state) => state.onboardingWorkspace,\n onboardingErrorMessage: (state) => state.errorMessage,\n onboardingWorkspaceErrorMessage: (state) => state.workspaceErrorMessage,\n\n invitationCode: (state) => state.invitationCode,\n failedInvites: (state) => state.failedInvites,\n\n /** Returns the team id of the currently logged in user. */\n getTeamID: (state): string => state.currentTeamId,\n currentTeamName: (state) => state.currentTeamName,\n getSignupAnswers: (state) => state.signupAnswers,\n getGetStartedExpanded: (state) => state.getStartedExpanded,\n getGetStartedShowAll: (state) => state.getStartedShowAll,\n\n getOnboardingActions: (state) => state.onboardingActions || [],\n};\n\nexport default getters;\n","/**\n * Onboardig module mutations\n * @packageDocumentation\n * @category Store\n */\nimport { MutationTree } from 'vuex';\nimport { OnboardingState as State, Team } from '@/types';\nimport getDefaultOnboardingState from './state';\nimport { OnboardingAction, OnboardingActionStatus } from '@/types/onboardingActions';\n\nconst mutations: MutationTree = {\n setOnboardingUserID(state, userID: string) {\n state.userID = userID;\n },\n\n setOnboardingWorkspace(state, value?: Team) {\n if (value) {\n if (value.team_name && !value.sub_domain) {\n value.sub_domain = value.team_name.replace(/[\\W_]+/g, '').toLowerCase();\n }\n\n state.onboardingWorkspace = { ...state.onboardingWorkspace, ...value };\n localStorage.setItem('onboardingWorkspace', JSON.stringify(state.onboardingWorkspace));\n } else {\n state.onboardingWorkspace = {};\n localStorage.removeItem('onboardingWorkspace');\n }\n },\n\n setOnboardingErrorMessage(state, errorMessage: string) {\n state.errorMessage = errorMessage;\n },\n setWorkspaceErrorMessage(state, workspaceErrorMessage: string) {\n state.workspaceErrorMessage = workspaceErrorMessage;\n },\n\n setInvitationCode(state, invitationCode: string) {\n state.invitationCode = invitationCode;\n },\n\n setCurrentTeamId(state, teamId: string) {\n state.currentTeamId = teamId;\n localStorage.setItem('currentTeamId', teamId);\n },\n\n setCurrentTeamName(state, teamName: string) {\n state.currentTeamName = teamName;\n },\n\n setFailedInvites(state, failedInvites: string[]) {\n state.failedInvites = failedInvites;\n },\n\n resetOnboardingState(state) {\n Object.assign(state, getDefaultOnboardingState());\n },\n\n storeSignupAnswers(state, answers) {\n Object.assign(state.signupAnswers, answers);\n },\n\n setGetStartedExpanded(state, value) {\n localStorage.setItem('getStartedExpanded', value);\n state.getStartedExpanded = value;\n },\n\n setGetStartedShowAll(state, value) {\n localStorage.setItem('getStartedShowAll', value);\n state.getStartedShowAll = value;\n },\n\n setOnboardingActions(state, value) {\n state.onboardingActions = value;\n },\n\n completeOnboardingActions(state, actions) {\n actions.forEach((a: OnboardingAction) => {\n const index = state.onboardingActions.findIndex((sa: OnboardingAction) => sa.type === a.type);\n\n // set flag indicating that animation should be triggered\n state.onboardingActions[index] = {\n ...state.onboardingActions[index],\n animate_completion: true,\n };\n\n setTimeout(() => {\n // check if action has been dismissed during animation\n if (state.onboardingActions[index]?.status === OnboardingActionStatus.Dismissed) return;\n\n // update action with data from response and clear animation flag\n // action is now fully completed\n state.onboardingActions[index] = a;\n }, 2000);\n });\n },\n\n updateOnboardingActionsStatus(state, actions) {\n actions.forEach((a: OnboardingAction) => {\n const index = state.onboardingActions.findIndex((sa: OnboardingAction) => sa.type === a.type);\n state.onboardingActions[index] = a;\n });\n },\n};\n\nexport default mutations;\n","/**\n * Onboarding module actions\n * @packageDocumentation\n * @category Store\n */\nimport { ActionTree } from 'vuex';\nimport { basePost, api, authGet, authPost } from '@/utilities/api';\nimport { OnboardingState as State, Team } from '@/types';\nimport {\n OnboardingActionStatus,\n OnboardingActionType,\n OnboardingAction,\n} from '@/types/onboardingActions';\nimport constants from '@/utilities/constants';\n\nconst actions: ActionTree = {\n /**\n * Send a login code to a user's email. User is created if they don't already exist.\n * https://api.superthread.com/v1/auth/code/send\n */\n sendLoginCodeEmail({ getters }, { email } = {}) {\n return api.auth\n .sendLoginCodeEmail({\n email: getters.getEmail || email,\n })\n .catch((error) => {\n throw error;\n });\n },\n\n /**\n * Log user in via email and email code\n * https://api.superthread.com/v1/auth/code\n */\n loginWithEmailCode({ getters }, { email, code } = {}) {\n const { getEmail } = getters;\n return api.auth\n .loginWithCode({\n email: getEmail || email,\n code,\n })\n .catch((error) => {\n throw error;\n });\n },\n\n createOnboardingWorkspace({ getters, commit }) {\n const { team_name, company_name, sub_domain } = getters.onboardingWorkspace;\n\n return api.auth\n .createTeam({\n team_name,\n company_name,\n sub_domain,\n })\n .then(({ data }) => {\n commit('setOnboardingWorkspace', data.team);\n return data;\n })\n .catch((error) => {\n throw error;\n });\n },\n\n updateOnboardingWorkspaceDetails({ getters, commit }) {\n const { team_name, company_name, sub_domain } = getters.onboardingWorkspace;\n\n return api.auth\n .updateTeam(getters.onboardingWorkspace.id, {\n team_name,\n company_name,\n sub_domain,\n })\n .then(({ data }) => {\n commit('setOnboardingWorkspace', data.team);\n return data;\n })\n .catch((error) => {\n throw error;\n });\n },\n\n setOnboardingUserID({ commit }, userID: string) {\n commit('setOnboardingUserID', userID);\n },\n\n setOnboardingWorkspace({ commit }, value: Team) {\n commit('setOnboardingWorkspace', value);\n },\n\n setOnboardingErrorMessage({ commit }, errorMessage: string) {\n commit('setOnboardingErrorMessage', errorMessage);\n },\n\n setWorkspaceErrorMessage({ commit }, workspaceErrorMessage: string) {\n commit('setWorkspaceErrorMessage', workspaceErrorMessage);\n },\n\n setInvitationCode({ commit }, invitationCode: string) {\n commit('setInvitationCode', invitationCode);\n },\n\n setCurrentTeamId({ commit }, teamId) {\n commit('setCurrentTeamId', teamId);\n },\n\n setCurrentTeamName({ commit }, teamName) {\n commit('setCurrentTeamName', teamName);\n },\n\n /**\n * Get pending invites for a user\n * https://api.superthread.com/v1/users/{user_id}/pending_invites\n */\n getPendingInvities({ getters }) {\n return api.auth\n .getPendingInvites(getters.getUser.id)\n .then(({ data }) => data)\n .catch((error) => {\n throw error;\n });\n },\n\n /**\n * Add user to a new team\n * https://api.superthread.com/v1/users/{user_id}/teams/{team_id}\n */\n joinTeam({ getters }, teamId) {\n return api.auth.addUserTeam(getters.getUser.id, teamId).then(({ data }) => data);\n },\n\n resetOnboardingState({ commit }) {\n commit('resetOnboardingState');\n },\n\n /**\n * Log user in via a team invite link.\n * https://api.superthread.com/v1/auth/invite\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n loginWithInviteLink({ getters }, { inviteId, code }) {\n return api.auth\n .loginWithInvite({\n invite_id: inviteId,\n link_code: code,\n })\n .then((res) => res)\n .catch((error) => {\n throw error;\n });\n },\n\n /**\n * Resend the invite if it was expired/lost.\n * https://api.superthread.com/v1/auth/invite/send\n */\n resendInviteLink({ getters }, { inviteId }) {\n return basePost(`${getters.getRoutes.users}/v1/auth/invite/send`, {\n invite_id: inviteId,\n }).catch((error) => {\n throw error;\n });\n },\n\n /**\n * Passes the OAuth authorization code to the BE, code gets exchanged for the refresh token with google and BE sets auth cookies\n * @param {string} code\n * @param {string} redirect_uri - url that was used to obtain the OAuth authorization code\n */\n passAuthCode({ getters }, { code, redirect_uri }) {\n //! DONT USE REQUEST FROM GENERATED MODELS AS IT IS INCORRECT\n //! request should be POST (as configured in /auth service)\n //! while one in generated models is set as GET (by mistake I guess)\n //? swap to next line when model is fixed\n // return api.auth.loginOAuthCode('google', {\n return authPost(`${getters.getRoutes.users}/v1/auth/idp/google/code`, {\n code,\n redirect_uri,\n });\n },\n\n /**\n * Import onboarding resources\n * /v1/{team_id}/imports/onboard\n */\n importOnboardingResources({ getters }) {\n const { getTeamID, getRoutes } = getters;\n return authGet(`${getRoutes.users}/v1/${getTeamID}/imports/onboard`)\n .then((data) => data)\n .catch((error) => error);\n },\n\n sendSignupAnswers({ getters }) {\n return api.auth\n .submitSignupAnswers(getters.getUser.id, {\n signup_answers: getters.getSignupAnswers,\n })\n .catch((error) => {\n throw error;\n });\n },\n\n setFailedInvites({ commit }, failedInvites) {\n commit('setFailedInvites', failedInvites);\n },\n\n storeSignupAnswers({ commit }, answers) {\n commit('storeSignupAnswers', answers);\n },\n\n /**\n * Sets flag for expanding the 'Get started' section in sidebar\n */\n setGetStartedExpanded({ commit }, value: boolean) {\n commit('setGetStartedExpanded', value);\n },\n\n /**\n * Sets flag for showing all items in the 'Get started' section in sidebar\n */\n setGetStartedShowAll({ commit }, value: boolean) {\n commit('setGetStartedShowAll', value);\n },\n\n /**\n * Fetches onboarding actions for the user\n */\n fetchOnboardingActions() {\n return api.auth\n .getOnboardingActions('me')\n .then(({ data }) => data.onboarding_actions)\n .catch((error) => {\n throw error;\n });\n },\n\n /**\n * Sets onboarding actions for the user\n */\n setOnboardingActions({ commit }, actions: OnboardingAction[]) {\n commit('setOnboardingActions', actions);\n },\n\n /**\n * Completes multiple onboarding actions for the user\n * @param {OnboardingActionType[]} types - array of onboarding action types to complete\n */\n completeOnboardingActions({ commit, getters }, types: OnboardingActionType[]) {\n const userCreatedAfterOnboardingActionsRelease =\n getters.getUser.time_created > constants.onboardingActionsReleaseDate;\n\n /**\n * Prevent firing requests for users created before the release of onboarding actions,\n * except if it's the note onboarding action.\n */\n if (\n !userCreatedAfterOnboardingActionsRelease &&\n !types.includes(OnboardingActionType.GetStartedNotes)\n )\n return;\n\n const actionsToUpdate = types\n .filter((type) => {\n return (\n getters.getOnboardingActions.find((a: OnboardingAction) => a.type === type)?.status !==\n OnboardingActionStatus.Completed\n );\n })\n .map((type) => ({\n status: OnboardingActionStatus.Completed,\n type,\n }));\n\n if (!actionsToUpdate.length) return;\n\n return api.auth\n .updateOnboardingActions('me', { onboarding_actions: actionsToUpdate })\n .then(({ data }) => commit('completeOnboardingActions', data.onboarding_actions))\n .catch((error) => {\n throw error;\n });\n },\n\n /**\n * Dismisses a onboarding action for the user\n * @param {OnboardingActionType[]} types - array of onboarding action types to complete\n */\n dismissOnboardingAction({ commit }, type: OnboardingActionType) {\n return api.auth\n .updateOnboardingActions('me', {\n onboarding_actions: [\n {\n status: OnboardingActionStatus.Dismissed,\n type,\n },\n ],\n })\n .then(({ data }) => commit('updateOnboardingActionsStatus', data.onboarding_actions))\n .catch((error) => {\n throw error;\n });\n },\n\n setAsNotCompletedOnboardingAction({ commit }, actions: OnboardingAction[]) {\n return api.auth\n .updateOnboardingActions('me', {\n onboarding_actions: actions,\n })\n .then(({ data }) => commit('updateOnboardingActionsStatus', data.onboarding_actions))\n .catch((error) => {\n throw error;\n });\n },\n};\n\nexport default actions;\n","import getDefaultOnboardingState from './state';\nimport getters from './getters';\nimport mutations from './mutations';\nimport actions from './actions';\n\nexport default {\n state: getDefaultOnboardingState(),\n getters,\n actions,\n mutations,\n};\n","import EditorService from '@/components/editor/services/EditorService';\nimport { ResourceType } from '@/types/resources';\nimport { EditorUpload } from './types';\n\nexport type { EditorService };\nexport interface EditorState {\n editors: { [id: string]: EditorService };\n currentEditorId?: string;\n currentEditorResourceType?: ResourceType;\n persistedPageKeys?: Array;\n suggesterShown?: boolean;\n uploading: EditorUpload[];\n}\n\nexport default {\n editors: {},\n currentEditorId: undefined,\n currentEditorResourceType: undefined,\n persistedPageKeys: [],\n suggesterShown: false,\n uploading: [],\n} as EditorState;\n","import { GetterTree } from 'vuex';\nimport { EditorState, EditorService } from './state';\n\nexport default {\n editor:\n (state) =>\n (id: string): EditorService => {\n return state.editors[id];\n },\n\n currentEditor: (state): EditorService | void => {\n if (state.currentEditorId) {\n return state.editors[state.currentEditorId];\n }\n },\n\n getPersistedPagesKeys: (state) => state.persistedPageKeys || [],\n\n checkIfDbExists:\n (state) =>\n (dbName: string): boolean =>\n state.persistedPageKeys?.includes(dbName) || false,\n\n suggesterShown: (state) => state.suggesterShown,\n} as GetterTree;\n","import { MutationTree } from 'vuex';\nimport { EditorState, EditorService } from './state';\nimport { ResourceType } from '@/types/resources';\nimport { EditorUpload } from './types';\n\nexport default {\n setEditor(state, payload: EditorService) {\n state.editors[payload.id] = payload;\n },\n deleteEditor(state, id) {\n delete state.editors[id];\n },\n setCurrentEditorId(state, id) {\n state.currentEditorId = id;\n },\n setCurrentEditorResourceType(state, resourceType: ResourceType) {\n state.currentEditorResourceType = resourceType;\n },\n updateEditorId(state, { oldId = 'editor-page-newpage', newId, resourceId }) {\n let oldKey = oldId;\n if (oldId === 'editor-page-newpage') {\n oldKey = Object.keys(state.editors).find((key) => key.includes('-editor-page-newpage-'));\n }\n state.editors[oldKey]?.updateEditorId?.(newId);\n state.editors[oldKey]?.updateEditorResourceId?.(resourceId);\n state.editors[newId] = state.editors[oldKey];\n delete state.editors[oldKey];\n },\n\n setPersistedPagesKeys(state, keys) {\n state.persistedPageKeys = keys;\n },\n\n addPageKeyToPersistedKeys(state, key) {\n state.persistedPageKeys?.push(key);\n },\n setSuggesterShown(state, payload) {\n state.suggesterShown = payload;\n },\n insertOrUpdateEditorUpload(state, upload: EditorUpload) {\n const existingUpload = state.uploading.find((u) => u?.id === upload.id);\n if (!existingUpload) {\n state.uploading?.push(upload);\n } else {\n Object.assign(existingUpload, upload);\n }\n },\n removeEditorUpload(state, id: string) {\n const index = state.uploading?.findIndex((u) => u.id === id);\n if (index) {\n state.uploading?.splice(index, 1);\n }\n },\n} as MutationTree;\n","import { ActionTree } from 'vuex';\nimport { EditorState, EditorService } from './state';\nimport { EditorUpload } from './types';\n\nexport default {\n setEditor({ commit }, payload: EditorService): void {\n commit('setEditor', payload);\n },\n\n deleteEditor({ commit }, id: string): void {\n commit('deleteEditor', id);\n },\n\n setCurrentEditorId({ commit }, id) {\n commit('setCurrentEditorId', id);\n },\n\n setCurrentEditorResourceType({ commit }, resourceType) {\n commit('setCurrentEditorResourceType', resourceType);\n },\n\n updateEditorId(\n { commit },\n {\n oldId = 'editor-page-newpage',\n newId,\n resourceId,\n }: { oldId?: string; newId: string; resourceId: string }\n ) {\n commit('updateEditorId', { oldId, newId, resourceId });\n },\n\n setPersistedPagesKeys({ commit }, keys) {\n commit('setPersistedPagesKeys', keys);\n },\n\n addPageKeyToPersistedKeys({ commit, getters }, key) {\n if (!getters.checkIfDbExists(key)) {\n commit('addPageKeyToPersistedKeys', key);\n }\n },\n setSuggesterShown({ commit }, payload) {\n commit('setSuggesterShown', payload);\n },\n insertOrUpdateEditorUpload({ commit }, payload: EditorUpload) {\n commit('insertOrUpdateEditorUpload', payload);\n },\n removeEditorUpload({ commit }, payload: string) {\n commit('removeEditorUpload', payload);\n },\n} as ActionTree;\n","import state from './state';\nimport getters from './getters';\nimport mutations from './mutations';\nimport actions from './actions';\n\nexport default {\n state,\n getters,\n actions,\n mutations,\n};\n","export interface AttachmentPreviewState {\n previewAttachments: Array;\n previewAttachmentId: string;\n previewAttachmentResourceId: string;\n previewAttachmentIndex: number;\n attachmentPreviewFromInput: boolean;\n}\n\nexport default {\n previewAttachments: [],\n previewAttachmentId: '',\n previewAttachmentResourceId: '',\n previewAttachmentIndex: -1,\n attachmentPreviewFromInput: false,\n} as AttachmentPreviewState;\n","import { GetterTree } from 'vuex';\nimport { AttachmentPreviewState } from './attachmentPreviewState';\n\nexport default {\n getPreviewAttachmentIndex: (state) => state.previewAttachmentIndex,\n getPreviewAttachments: (state) => state.previewAttachments,\n getAttachmentPreviewFromInput: (state) => state.attachmentPreviewFromInput,\n getPreviewAttachmentId: (state) => state.previewAttachmentId,\n getPreviewAttachmentResourceId: (state) => state.previewAttachmentResourceId,\n} as GetterTree;\n","import { MutationTree } from 'vuex';\nimport { AttachmentPreviewState } from './attachmentPreviewState';\nimport attachmentPreviewable from '@/utilities/attachmentPreviewable';\n\nexport default {\n setPreviewAttachments(state, attachments) {\n state.previewAttachments = attachments.filter((attachment: any) =>\n attachmentPreviewable(attachment)\n );\n },\n\n setPreviewAttachmentId(state, { attachmentId, resourceId }) {\n const attachments = [...state.previewAttachments];\n\n const attachmentIndex = attachments.findIndex((a) => a.id === attachmentId);\n if (attachmentIndex !== -1) {\n state.previewAttachmentIndex = attachmentIndex;\n }\n state.previewAttachmentId = attachmentId;\n state.previewAttachmentResourceId = resourceId;\n },\n\n clearCardPreviewData(state) {\n state.previewAttachmentId = '';\n state.previewAttachmentIndex = -1;\n state.previewAttachments = [];\n },\n\n setNextAttachment(state) {\n const { length } = state.previewAttachments;\n const attachments = state.previewAttachments;\n\n if (state.previewAttachmentIndex === length - 1 || state.previewAttachmentIndex === length) {\n state.previewAttachmentIndex = 0;\n state.previewAttachmentId = attachments[0].id;\n return;\n }\n\n state.previewAttachmentIndex += 1;\n state.previewAttachmentId = attachments[state.previewAttachmentIndex].id;\n },\n\n setPreviousAttachment(state) {\n const { length } = state.previewAttachments;\n const attachments = state.previewAttachments;\n\n if (state.previewAttachmentIndex === 0) {\n state.previewAttachmentIndex = length - 1;\n state.previewAttachmentId = attachments[state.previewAttachmentIndex].id;\n return;\n }\n\n state.previewAttachmentIndex -= 1;\n state.previewAttachmentId = attachments[state.previewAttachmentIndex].id;\n },\n\n deleteAttachmentFromPreviewAttachments(state, fileId) {\n const index = state.previewAttachments.findIndex((att: any) => att.id === fileId);\n\n if (index > -1) {\n state.previewAttachments.splice(index, 1);\n }\n },\n\n setAttachmentPreviewFromInput(state, value) {\n state.attachmentPreviewFromInput = value;\n },\n} as MutationTree;\n","import { ActionTree } from 'vuex';\nimport { AttachmentPreviewState } from './attachmentPreviewState';\n\nexport default {\n setPreviewAttachmentId({ commit }, { attachmentId, resourceId }) {\n commit('setPreviewAttachmentId', { attachmentId, resourceId });\n },\n\n setPreviewAttachments({ commit }, attachements) {\n commit('setPreviewAttachments', attachements);\n },\n\n clearCardPreviewData({ commit }) {\n commit('clearCardPreviewData');\n },\n\n setNextAttachment({ commit }, id) {\n commit('setNextAttachment', id);\n },\n\n setPreviousAttachment({ commit }, id) {\n commit('setPreviousAttachment', id);\n },\n\n deleteAttachmentFromPreviewAttachments({ commit }, fileId) {\n commit('deleteAttachmentFromPreviewAttachments', fileId);\n },\n\n setAttachmentPreviewFromInput({ commit }, value) {\n commit('setAttachmentPreviewFromInput', value);\n },\n} as ActionTree;\n","import state from './attachmentPreviewState';\nimport getters from './attachmentPreviewGetters';\nimport mutations from './attachmentPreviewMutations';\nimport actions from './attachmentPreviewActions';\n\nexport default {\n state,\n getters,\n actions,\n mutations,\n};\n","import boards from './boards';\nimport pages from './pages';\nimport onboarding from './onboarding';\nimport editors from './editors';\nimport attachmentPreview from './attachmentPreview';\n\nexport default {\n boards,\n pages,\n onboarding,\n editors,\n attachmentPreview,\n};\n","import { createStore } from 'vuex';\n\nimport getDefaultState from './state';\nimport actions from './actions';\nimport mutations from './mutations';\nimport getters from './getters';\nimport modules from './modules';\n\nexport const store = createStore({\n strict: false,\n state: getDefaultState(),\n actions,\n mutations,\n getters,\n modules,\n});\n","export default {\n computed: {\n isAnyCardDisplayed() {\n return this.$store.getters.getIsAnyCardDisplayed;\n },\n isCardOpen() {\n return this.isAnyCardDisplayed;\n },\n },\n};\n","import styleVariables from '@/assets/scss/variables.module.scss';\nimport constants from './constants';\nimport { browserStorageGetItem } from './browser-storage.util';\n\nconst getRootElement = () => document.documentElement;\nconst getDarkElement = () => document.querySelector('.dark');\nconst getRootStyles = () => getComputedStyle(getRootElement());\nconst getRootStyle = (varName) => getRootStyles().getPropertyValue(varName);\nconst setRootStyle = (varName, value) => getRootElement().style.setProperty(varName, value);\nconst removeRootStyle = (varName) => getRootElement().style.removeProperty(varName);\n// varName is the css variable name. e.g. --iconDefault\nconst getThemeStyle = (varName) => {\n const darkModeElement = getDarkElement();\n\n if (darkModeElement) {\n return getComputedStyle(darkModeElement).getPropertyValue(varName);\n } else {\n return getRootStyle(varName);\n }\n};\n\nconst convertStyleToNumber = (value) => parseFloat(value) || 0;\nconst getSidebarWidthLocal = () =>\n convertStyleToNumber(browserStorageGetItem('sidebarWidth') || styleVariables.sidebarWidth);\nconst getDefaultSidebarWidth = () => convertStyleToNumber(styleVariables.sidebarWidth);\nconst getMaxSidebarWidth = () => convertStyleToNumber(styleVariables.sidebarMaxWidth);\nconst getMinSidebarWidth = () => convertStyleToNumber(styleVariables.sidebarMinWidth);\nconst getSidebarWidth = () => convertStyleToNumber(getRootStyle(constants.sidebarWidthRoot));\nconst getMaxChildPageItemInPageWidth = () =>\n convertStyleToNumber(styleVariables.childPageItemInPageMaxWidth);\nconst getPreviewChildPagesPaddingRight = () =>\n convertStyleToNumber(styleVariables.previewChildPagesPaddingRight);\nconst getBoardHeaderRightSideWidth = () =>\n convertStyleToNumber(styleVariables.boardHeaderRightSideWidth);\nconst getMobileBoardHeaderRightSideWidth = () =>\n convertStyleToNumber(styleVariables.mobileBoardHeaderRightSideWidth);\nconst getSpaceHeaderRightSideWidth = () =>\n convertStyleToNumber(styleVariables.spaceHeaderRightSideWidth);\nconst getMobileSpaceHeaderRightSideWidth = () =>\n convertStyleToNumber(styleVariables.mobileSpaceHeaderRightSideWidth);\nconst getPageBreadcrumbMaxWidth = () => convertStyleToNumber(styleVariables.pageBreadcrumbMaxWidth);\nconst getMobilePageBreadcrumbMaxWidth = () =>\n convertStyleToNumber(styleVariables.mobilePageBreadcrumbMaxWidth);\nconst getJoinProjectButtonWidth = () => convertStyleToNumber(styleVariables.joinProjectButtonWidth);\nconst getMobileSidebarWidth = () => convertStyleToNumber(styleVariables.mobileSidebarWidth);\nconst getTimelineSidebarWidthLocal = () =>\n convertStyleToNumber(\n browserStorageGetItem('timelineSidebarWidth') || styleVariables.timelineSidebarWidth\n );\nconst getDefaultTimelineSidebarWidth = () =>\n convertStyleToNumber(styleVariables.timelineSidebarWidth);\nconst getMinTimelineSidebarWidth = () =>\n convertStyleToNumber(styleVariables.timelineSidebarMinWidth);\nconst getMaxTimelineSidebarWidth = () =>\n convertStyleToNumber(styleVariables.timelineSidebarMaxWidth);\n\nconst getInboxListWidthLocal = () =>\n convertStyleToNumber(browserStorageGetItem('inboxListWidth') || styleVariables.inboxListWidth);\nconst getMinInboxListWidth = () => convertStyleToNumber(styleVariables.inboxListMinWidth);\nconst getMaxInboxListWidth = () => convertStyleToNumber(styleVariables.inboxListMaxWidth);\nconst getDefaultInboxListWidth = () => convertStyleToNumber(styleVariables.inboxListWidth);\nconst getDefaultLabelCutoffSidebarWidth = () =>\n convertStyleToNumber(styleVariables.defaultLabelCutoffSidebarWidth);\nconst getSearchLabelCutoffSidebarWidth = () =>\n convertStyleToNumber(styleVariables.searchLabelCutoffSidebarWidth);\nconst getStartedCountCutoffSidebarWidth = () =>\n convertStyleToNumber(styleVariables.getStartedCountCutoffSidebarWidth);\nconst getHeaderHeight = () => convertStyleToNumber(styleVariables.headerHeight);\n\nconst getCardWidthLocal = () =>\n convertStyleToNumber(browserStorageGetItem('cardWidthLocal') || styleVariables.cardWidthWidth);\nconst getMinCardWidthWidth = () => convertStyleToNumber(styleVariables.dockedCardMinWidth);\nconst getMaxCardWidthWidth = () => convertStyleToNumber(styleVariables.dockedCardMaxWidth);\nconst getDefaultCardWidthWidth = () => convertStyleToNumber(styleVariables.dockedCardWidth);\nconst getSmallCardTagMaxWidth = () => convertStyleToNumber(styleVariables.smallCardTagMaxWidth);\nconst getAiSourceItemMaxWidth = () => convertStyleToNumber(styleVariables.aiSourceItemMaxWidth);\n\nconst getSidebarHelpSectionHeight = () =>\n convertStyleToNumber(styleVariables.sidebarHelpSectionHeight);\nconst getSidebarHelpSectionPadding = () =>\n convertStyleToNumber(styleVariables.sidebarHelpSectionPadding);\n\nexport {\n getRootStyle,\n setRootStyle,\n removeRootStyle,\n getThemeStyle,\n convertStyleToNumber,\n getSidebarWidthLocal,\n getDefaultSidebarWidth,\n getMaxSidebarWidth,\n getMinSidebarWidth,\n getSidebarWidth,\n getMaxChildPageItemInPageWidth,\n getPreviewChildPagesPaddingRight,\n getPageBreadcrumbMaxWidth,\n getMobilePageBreadcrumbMaxWidth,\n getBoardHeaderRightSideWidth,\n getMobileBoardHeaderRightSideWidth,\n getJoinProjectButtonWidth,\n getSpaceHeaderRightSideWidth,\n getMobileSpaceHeaderRightSideWidth,\n getMobileSidebarWidth,\n getTimelineSidebarWidthLocal,\n getDefaultTimelineSidebarWidth,\n getMinTimelineSidebarWidth,\n getMaxTimelineSidebarWidth,\n getInboxListWidthLocal,\n getMinInboxListWidth,\n getMaxInboxListWidth,\n getDefaultInboxListWidth,\n getDefaultLabelCutoffSidebarWidth,\n getSearchLabelCutoffSidebarWidth,\n getStartedCountCutoffSidebarWidth,\n getHeaderHeight,\n getCardWidthLocal,\n getMinCardWidthWidth,\n getMaxCardWidthWidth,\n getDefaultCardWidthWidth,\n getSmallCardTagMaxWidth,\n getAiSourceItemMaxWidth,\n getSidebarHelpSectionHeight,\n getSidebarHelpSectionPadding,\n};\n","const capitalizeFirstLetter = (text: string = '') =>\n `${(text[0] || '').toUpperCase()}${text.slice(1)}`;\n\nexport default capitalizeFirstLetter;\n","import {\n browserStorageGetItem,\n browserStorageSetItem,\n browserStorageRemoveItem,\n} from './browser-storage.util';\n\nconst getDraftCardTitleKey = (\n teamID: string,\n projectId: string,\n boardId: string,\n listId: string,\n cardId: string\n) => `${teamID}-${projectId}-${boardId}-${listId}-${cardId}-title`;\n\nconst getDraftCardTitleKeyForList = (\n teamID: string,\n projectId: string,\n boardId: string,\n listId: string\n) => `${teamID}-${projectId}-${boardId}-${listId}-title`;\n\nconst getDraftCardDescriptionKey = (\n teamID: string,\n projectId: string,\n boardId: string,\n listId: string,\n cardId: string\n) => `${teamID}-${projectId}-${boardId}-${listId}-${cardId}-description`;\n\nconst getDraftCommentKey = (teamID: string, sectionId: string) =>\n `${teamID}-${sectionId}-create-comment`;\n\nconst getDraftEditCommentKey = (teamID: string, commentId: string, sectionId: string) =>\n `${teamID}-${sectionId}-${commentId}-edit-comment`;\n\nconst getDraftChecklistKey = (\n teamID: string,\n projectId: string,\n boardId: string,\n listId: string,\n cardId: string\n) => `${teamID}-p${projectId}-b${boardId}-l${listId}-c${cardId}-checklist`;\n\nconst getDraftEditChecklistKey = (\n teamID: string,\n projectId: string,\n boardId: string,\n listId: string,\n cardId: string,\n checklistId: string\n) => `${teamID}-p${projectId}-b${boardId}-l${listId}-c${cardId}-cl${checklistId}-edit-checklist`;\n\nconst getDraftChecklistItemKey = (\n teamID: string,\n projectId: string,\n boardId: string,\n listId: string,\n cardId: string,\n checklistId: string\n) => `${teamID}-p${projectId}-b${boardId}-l${listId}-c${cardId}-cl${checklistId}-new-checklistItem`;\n\nconst getDraftEditChecklistItemKey = (\n teamID: string,\n projectId: string,\n boardId: string,\n listId: string,\n cardId: string,\n checklistId: string,\n checklistItemId: string\n) =>\n `${teamID}-p${projectId}-b${boardId}-l${listId}-c${cardId}` +\n `-cl${checklistId}-cli${checklistItemId}-edit-checklistItem`;\n\nconst getChildCardCreationDraftKey = (teamID: string, parentCardId: string) =>\n `${teamID}-${parentCardId}-child-card-draft`;\n\n// used for child card creation inside template creation\nconst getTemplateChildCardCreationDraftKey = (\n teamID: string,\n templateID: string,\n isQuickCard: boolean = false\n) =>\n teamID +\n (templateID ? `-${templateID}` : '') +\n (isQuickCard ? '-quick-card' : '-template') +\n '-child-card-create-draft';\n\n// used for child card edit inside template creation\nconst getTemplateChildCardEditDraftKey = (\n teamID: string,\n templateID: string,\n index: string = '',\n isQuickCard: boolean = false\n) =>\n teamID +\n (templateID ? `-${templateID}` : '') +\n (isQuickCard ? '-quick-card' : '-template') +\n `-child-card-edit-draft-${index}`;\n\nconst getQuickCardCreationDraftKey = (teamID: string) => `${teamID}-quick-card-draft`;\nconst getCreateCardTemplateDraftKey = (teamID: string) => `${teamID}-create-card-template-draft`;\nconst getCreatePageTemplateDraftKey = (teamID: string) => `${teamID}-create-page-template-draft`;\nconst getCreateNoteTemplateDraftKey = (teamID: string) => `${teamID}-create-note-template-draft`;\n\nconst getParentPageForAddKey = (teamID: string) => `${teamID}-parent-page-for-add`;\n\nconst setDraft = (key: string, value: string) => {\n browserStorageSetItem(key, value);\n};\n\nconst getDraft = (key: string) => browserStorageGetItem(key);\n\nconst removeDraft = (key: string) => browserStorageRemoveItem(key);\n\nconst localBoardLayoutKey = (teamId: string) => `${teamId}-board-layout`;\n\nconst hideEmptyGroupByBoardKey = (teamId: string) => `${teamId}-hideEmptyGroupByBoard`;\nconst showWeekendsByBoardKey = (teamId: string) => `${teamId}-showWeekendsByBoard`;\n\nconst myWorkSortByKey = (teamId: string) => `${teamId}-myWorkSortBy`;\n\nconst subGroupByBoardKey = (teamId: string, boardId: string) =>\n `${teamId}-subGroupByBoard-${boardId}`;\n\nconst cardsSubGroupByOrderKey = (teamId: string) => `cardsSubGroupByOrder-${teamId}`;\nconst boardSubGroupByKey = (teamId: string) => `boardSubGroupBy-${teamId}`;\nconst listsExpandedKey = (teamId: string, boardId: string) => `${teamId}-listsExpanded-${boardId}`;\n\nexport {\n getDraftCardTitleKey,\n getDraftCardTitleKeyForList,\n getDraftCardDescriptionKey,\n getDraftCommentKey,\n getDraftEditCommentKey,\n getDraftChecklistKey,\n getDraftEditChecklistKey,\n getDraftChecklistItemKey,\n getDraftEditChecklistItemKey,\n setDraft,\n getDraft,\n removeDraft,\n getChildCardCreationDraftKey,\n getTemplateChildCardCreationDraftKey,\n getTemplateChildCardEditDraftKey,\n getQuickCardCreationDraftKey,\n getCreateCardTemplateDraftKey,\n getCreatePageTemplateDraftKey,\n getParentPageForAddKey,\n localBoardLayoutKey,\n hideEmptyGroupByBoardKey,\n showWeekendsByBoardKey,\n myWorkSortByKey,\n getCreateNoteTemplateDraftKey,\n subGroupByBoardKey,\n cardsSubGroupByOrderKey,\n boardSubGroupByKey,\n listsExpandedKey,\n};\n","/* eslint-disable no-console, no-undef */\n\nimport { register } from 'register-service-worker';\n\nif (process.env.NODE_ENV === 'production') {\n register(`${process.env.BASE_URL}service-worker.js`, {\n ready() {\n document.dispatchEvent(new CustomEvent('swReady'));\n },\n registered(reg) {\n setInterval(\n () => {\n reg.update();\n },\n 1000 * 60 * 60\n ); // e.g. hourly checks\n },\n cached() {},\n updatefound() {},\n updated(registration) {\n document.dispatchEvent(new CustomEvent('swUpdated', { detail: registration }));\n },\n offline() {},\n error() {},\n });\n}\n","import onPageLoad from '@/utilities/composables/useOnPageLoad';\n\nexport default {\n methods: {\n onPageLoad() {\n onPageLoad();\n },\n addLoader(loadingLabel = 'Loading') {\n const loader = document.createElement('div');\n loader.id = 'loading-wrapper';\n loader.innerHTML = `\n
\n
\n
\n ${loadingLabel}\n
\n
\n `;\n document.body.appendChild(loader);\n },\n },\n};\n","export default {\n computed: {\n isGuestRole() {\n return this.$store.getters.getCurrentRole === 'guest';\n },\n },\n};\n","import { render, createVNode } from 'vue';\nimport tippy from 'tippy.js';\nimport TooltipText from '@/components/tooltips/TooltipText.vue';\nimport isMobile from '@/utilities/isMobile';\nimport capitalizeFirstLetter from '@/utilities/capitalizeFirstLetter';\n\ntype DirectiveProps = {\n component: any;\n componentStyle: { [key: string]: any };\n componentClass: string[] | string;\n componentProps: { [key: string]: any };\n componentEvents: { [key: string]: Function };\n onShow: Function;\n onTrigger: Function;\n onUntrigger: Function;\n onHide: Function;\n tippyOptions: { [key: string]: any };\n disabled: boolean;\n tooltip: boolean;\n classOnShow: string;\n text: string;\n shouldStopPropagation: boolean;\n renderDelay: number;\n mobilePlacement: string; // this has to be one of the values from tippy.js https://atomiks.github.io/tippyjs/v6/all-props/#placement\n};\n\ntype DirectiveBinding = {\n value: DirectiveProps;\n oldValue: DirectiveProps;\n};\n\nfunction mountContent(el: any, vnode: any, value: DirectiveProps) {\n const {\n componentStyle = {},\n componentProps,\n componentEvents = {},\n text,\n component,\n componentClass = '',\n } = value;\n const tooltipContent = text ? TooltipText : component;\n\n // map listeners\n const listeners: any = {\n onEsc: () => {\n el._tippyInstance?.hide?.();\n },\n 'onClose-tippy': () => {\n el._tippyInstance?.hide?.();\n },\n };\n\n Object.keys(componentEvents).forEach((attr) => {\n // event listeners should be passed as onXxx\n if (attr.startsWith('on')) {\n listeners[attr] = componentEvents[attr];\n } else {\n // append on to the event name and camel case it\n listeners[`on${capitalizeFirstLetter(attr)}`] = componentEvents[attr];\n }\n });\n\n const vNode = createVNode(tooltipContent, {\n ref: 'tooltipContent',\n ...(text && { text }),\n ...componentProps,\n style: componentStyle,\n class: componentClass,\n ...listeners,\n });\n\n // @ts-ignore\n vNode.appContext = window.StVueApp?._context;\n\n if (el) {\n render(vNode, el);\n }\n el._tippyContentVm = vNode;\n\n return vNode;\n}\n\nconst createTippyInstance = (\n el: any,\n value: DirectiveProps,\n vnode: any,\n binding: DirectiveBinding\n) => {\n const {\n onShow,\n onHide,\n onTrigger,\n onUntrigger,\n tippyOptions = {},\n tooltip = true,\n classOnShow = '',\n renderDelay = 500,\n shouldStopPropagation = false,\n } = value;\n\n // try to preserve the horizontal placement on mobile (start, end)\n if (isMobile()) {\n // to override default behavior for mobile, use mobilePlacement\n if (value.mobilePlacement) {\n tippyOptions.placement = value.mobilePlacement;\n } else {\n const horizPlacement = tippyOptions.placement?.split('-')[1];\n tippyOptions.placement = horizPlacement ? `auto-${horizPlacement}` : 'auto';\n }\n }\n\n const createTippyCallback = () => {\n const tippyInstance: any = tippy(el, {\n ...tippyOptions,\n role: tooltip ? 'tooltip' : 'poper',\n // @ts-ignore\n content: mountContent(el, vnode, value).el,\n ...(!tippyOptions.placement && { placement: 'top' }),\n ...(!tippyOptions.duration && { duration: [300, 0] }),\n ...(!tippyOptions.interactive && { interactive: false }),\n ...(!tippyOptions.maxWidth && { maxWidth: 'none' }),\n onTrigger: (_, event: Event) => {\n if (shouldStopPropagation) {\n event.stopPropagation();\n }\n if (onTrigger) {\n onTrigger(event);\n }\n },\n onUntrigger: (_, event: Event) => {\n if (shouldStopPropagation) {\n event.stopPropagation();\n }\n if (onUntrigger) {\n onUntrigger(event);\n }\n },\n onShow: (instance) => {\n if (classOnShow) {\n el.classList.add(classOnShow);\n }\n\n // @ts-ignore\n binding.instance.activeTippyInstance = instance;\n\n if (onShow && typeof onShow === 'function') {\n return onShow(instance, el._tippyContentVm);\n }\n if (tooltip) {\n instance.popper.classList.add('tooltip', 'popover', 'black-tooltip');\n }\n\n // ass vnode.context can have multiple tippy instances\n // we need to attach flag to element to avoid it being overwrite in update hook\n //! this currently abuses fact that we can only bind a single tippy instance to HTML element\n el._forceUpdate = true;\n // trigger a re-render of the component to make sure it will contain the newest data\n // @ts-ignore\n binding.instance._?.ctx?.$forceUpdate?.();\n },\n onHide: (instance: any) => {\n // @ts-ignore\n if (instance.id === binding.instance.activeTippyInstance?.id) {\n // @ts-ignore\n binding.instance.activeTippyInstance = null;\n }\n if (onHide && typeof onHide === 'function') {\n onHide(el._tippyContentVm);\n }\n if (classOnShow) {\n el.classList?.remove?.(classOnShow);\n }\n },\n });\n\n el._tippyInstance = tippyInstance;\n };\n\n if (renderDelay && !tooltip) {\n el._renderTippyTimeout = setTimeout(createTippyCallback, renderDelay);\n return;\n }\n\n createTippyCallback();\n};\n\nconst tooltipDirective: any = {\n beforeMount(el: any, binding: DirectiveBinding, vnode: any) {\n const { value } = binding;\n const { disabled = false } = value;\n if (disabled) return;\n\n createTippyInstance(el, value, vnode, binding);\n },\n beforeUpdate(el: any, binding: DirectiveBinding, vnode: any) {\n const { value, oldValue } = binding;\n const { componentProps, disabled } = value;\n const { disabled: oldDisabled } = oldValue;\n\n if (el?._forceUpdate && el?._tippyInstance && el?._tippyContentVm) {\n el._forceUpdate = false;\n\n el._tippyContentVm.$el?.remove?.();\n el._tippyContentVm?.unmount?.();\n\n const newContentVm = mountContent(el, vnode, value);\n // @ts-ignore\n el._tippyInstance.setContent(newContentVm.$el);\n\n return;\n }\n\n if (!disabled && oldDisabled) {\n // create instance\n createTippyInstance(el, value, vnode, binding);\n }\n\n if (disabled && !oldDisabled) {\n // destroy instance\n el._tippyInstance?.destroy?.();\n el._tippyContentVm?.$destroy?.();\n return;\n }\n\n if (!componentProps || !el._tippyContentVm?.component?.props) return;\n Object.assign(el._tippyContentVm?.component?.props, componentProps);\n el._tippyContentVm.$forceUpdate?.(); // Force Vue to re-render the component\n },\n unmounted(el: any) {\n if (el._tippyInstance && !el._tippyInstance.state.isDestroyed) {\n el._tippyInstance.destroy();\n }\n if (el._tippyContentVm) {\n el._tippyContentVm.$destroy?.();\n }\n if (el._renderTippyTimeout) {\n clearTimeout(el._renderTippyTimeout);\n }\n },\n};\n\nexport default tooltipDirective;\n","import { ObjectDirective } from 'vue';\n\nconst directive: ObjectDirective = {\n mounted: (el, binding) => {\n if (!binding.value) return;\n setTimeout(() => {\n el.focus();\n }, 0);\n },\n};\n\nexport default directive;\n","import { ObjectDirective, DirectiveBinding, VNode } from 'vue';\n\ndeclare global {\n interface HTMLElement {\n vdraghover: {\n className: string;\n classAdded?: boolean;\n dragWatch?: () => void;\n mouseEnterHandler?: (event: MouseEvent) => void;\n mouseOverHandler?: (event: MouseEvent) => void;\n mouseLeaveHandler?: (event: MouseEvent) => void;\n };\n }\n}\n\nconst addClass = (el: HTMLElement, className: string) => {\n el.classList.add(className);\n el.vdraghover.classAdded = true;\n};\n\nconst removeClass = (el: HTMLElement, className: string) => {\n el.classList.remove(className);\n el.vdraghover.classAdded = false;\n el.vdraghover.dragWatch?.();\n};\n\nconst onMouseOver = (el: HTMLElement, context: any) => () => {\n if (el.vdraghover.classAdded) return;\n if (context?.draggingIsOn) {\n addClass(el, el.vdraghover.className);\n }\n};\n\nconst onMouseEnter = (el: HTMLElement, context: any) => () => {\n if (context?.draggingIsOn) {\n // Code to execute when draggingIsOn is true\n addClass(el, el.vdraghover.className);\n\n el.vdraghover.dragWatch = context?.$watch('draggingIsOn', (newValue: boolean) => {\n if (!newValue) {\n removeClass(el, el.vdraghover.className);\n }\n });\n }\n};\n\nconst onMouseLeave = (el: HTMLElement, context: any) => () => {\n if (!el.vdraghover.classAdded) return;\n if (context?.draggingIsOn) {\n // Code to execute when draggingIsOn is true\n removeClass(el, el.vdraghover.className);\n }\n};\n\nconst extractValues = (value: any) => {\n let className = '';\n let childDrag = false;\n\n if (typeof value === 'object') {\n if ('className' in value) {\n className = value.className as string;\n }\n if ('childDrag' in value) {\n childDrag = value.childDrag as boolean;\n }\n } else {\n className = value as string;\n }\n\n return { className, childDrag };\n};\n\nconst directive: ObjectDirective = {\n mounted: (el: HTMLElement, binding: DirectiveBinding) => {\n el.vdraghover = {\n className: '',\n };\n const { value, instance: context } = binding;\n\n const { className, childDrag } = extractValues(value);\n\n el.vdraghover.className = className;\n\n el.vdraghover.mouseOverHandler = onMouseOver(el, context);\n el.vdraghover.mouseEnterHandler = onMouseEnter(el, context);\n el.vdraghover.mouseLeaveHandler = onMouseLeave(el, context);\n\n if (childDrag) {\n // mouseenter will not fire when child element is dragged in el parent\n el.addEventListener('mousemove', el.vdraghover?.mouseOverHandler);\n }\n\n el.addEventListener('mouseenter', el.vdraghover.mouseEnterHandler);\n el.addEventListener('mouseleave', el.vdraghover.mouseLeaveHandler);\n },\n beforeUpdate: (el: HTMLElement, binding: DirectiveBinding) => {\n const { value, oldValue } = binding;\n const { childDrag } = extractValues(value);\n const { childDrag: oldChildDrag } = extractValues(oldValue);\n // CHECK IF draghover object has property mouseOverHandler\n if (!oldChildDrag && childDrag && el.vdraghover.mouseOverHandler) {\n el.removeEventListener('mousemove', el.vdraghover.mouseOverHandler);\n el.addEventListener('mousemove', el.vdraghover.mouseOverHandler);\n }\n },\n\n unmounted: (el) => {\n if (el.vdraghover.mouseOverHandler) {\n el.removeEventListener('mousemove', el.vdraghover.mouseOverHandler);\n }\n if (el.vdraghover.mouseEnterHandler) {\n el.removeEventListener('mouseenter', el.vdraghover.mouseEnterHandler);\n }\n if (el.vdraghover.mouseLeaveHandler) {\n el.removeEventListener('mouseleave', el.vdraghover.mouseLeaveHandler);\n }\n if (el.vdraghover.dragWatch) {\n el.vdraghover.dragWatch();\n }\n },\n};\n\nexport default directive;\n","import { ObjectDirective } from 'vue';\n\nconst addDragClass = (el: HTMLElement) => {\n if (el && !el.classList.contains('dragging')) {\n el.classList.add('dragging');\n }\n};\n\nconst removeDragClass = (el: HTMLElement) => {\n if (el) {\n el.classList.remove('dragging');\n }\n};\n\nconst directive: ObjectDirective = {\n mounted: (el: any, binding: any) => {\n let slider: Element = el;\n const [divPanel] = el.getElementsByClassName('__panel') ?? [];\n if (divPanel) {\n slider = divPanel;\n }\n let isDown = false;\n let startX: number = 0;\n let scrollLeft: number = 0;\n const filteredClasses = binding.value || [];\n const app = document.getElementById('app') as HTMLElement;\n slider.addEventListener('mousedown', (e) => {\n const element = e.target as HTMLElement;\n // check if element is a child of element with filteredClasses\n const closestElement = element.closest('.' + filteredClasses.join(',.'));\n\n if (filteredClasses.some((c: string) => element.classList.contains(c)) || closestElement) {\n return;\n }\n addDragClass(app);\n isDown = true;\n // @ts-ignore\n startX = e.pageX - slider.offsetLeft;\n scrollLeft = slider.scrollLeft;\n });\n slider.addEventListener('mouseleave', () => {\n removeDragClass(app);\n isDown = false;\n });\n slider.addEventListener('mouseup', () => {\n removeDragClass(app);\n isDown = false;\n });\n slider.addEventListener('mousemove', (e) => {\n // @ts-ignore\n const { alreadyDown } = e;\n if (alreadyDown !== undefined) {\n isDown = alreadyDown;\n }\n if (!isDown) return;\n e.preventDefault();\n // @ts-ignore\n const x = e.pageX - slider.offsetLeft;\n const walk = x - startX;\n slider.scrollLeft = scrollLeft - walk;\n });\n },\n};\n\nexport default directive;\n","import { createVNode, render } from 'vue';\nimport tippy from 'tippy.js';\nimport MemberHoverPreview from '@/components/widgets/MemberHoverPreview';\nimport { globalState } from '@/utilities/globalState';\nimport constants from '@/utilities/constants';\n\nconst CONSTANTS = {\n HIDE_DELAY: 700,\n DEFAULT_SHOW_DELAY: constants.showMemberHoverPreviewDelay,\n OFFSET: [0, 8],\n};\n\n// Single container and instances\nconst container = document.createElement('div');\nlet vnode = null;\nlet showTimeout = null;\n\nconst getMemberId = (member) => member.id || member.user_id || member.invitee_user_id || '';\n\nconst updateVNodeProps = (member, animationEnabled) => {\n if (vnode?.component) {\n vnode.component.props.member = member;\n vnode.component.props.class = { animation: animationEnabled };\n vnode.component.update();\n }\n};\n\nconst createVNodeWithProps = (member, animationEnabled) => {\n return createVNode(MemberHoverPreview, {\n member,\n class: { animation: animationEnabled },\n onViewWorkClick: () => {\n globalState.memberHoverTippyInstance?.hide?.();\n },\n });\n};\n\nconst initializeTippy = (el) => {\n if (globalState.memberHoverTippyInstance) return;\n globalState.memberHoverTippyInstance = tippy(document.createElement('div'), {\n content: container,\n appendTo: document.body,\n placement: 'top-start',\n role: 'poper',\n interactive: true,\n duration: 0,\n arrow: false,\n offset: CONSTANTS.OFFSET,\n triggerTarget: el,\n getReferenceClientRect: () => el.getBoundingClientRect(),\n onUntrigger: () => clearTimeout(showTimeout),\n onHide: () => {\n window.removeEventListener('keypress', globalState.memberHoverTippyInstance.hide);\n clearTimeout(globalState.currentGroupAvatarTimeout);\n globalState.currentGroupAvatarTimeout = setTimeout(() => {\n if (!globalState.memberHoverTippyInstance.state.isVisible) {\n globalState.currentGroupAvatarId = null;\n }\n }, CONSTANTS.HIDE_DELAY);\n globalState.memberHoverPreviewShown = false;\n },\n });\n};\n\nconst createShowTooltip = (el, binding) => {\n return () => {\n const groupAvatarId = binding.arg?.groupAvatarId;\n const delay =\n globalState.currentGroupAvatarId === groupAvatarId ? 0 : CONSTANTS.DEFAULT_SHOW_DELAY;\n\n // Update vnode props\n updateVNodeProps(binding.value, delay !== 0);\n\n // First time setup if needed\n if (!vnode?.component) {\n vnode = createVNodeWithProps(binding.value, delay);\n vnode.appContext = binding.instance.$.appContext;\n render(vnode, container);\n updateVNodeProps(binding.value, delay !== 0);\n }\n\n initializeTippy(el);\n\n // Update tippy instance\n globalState.memberHoverTippyInstance?.setProps?.({\n content: container,\n triggerTarget: el,\n getReferenceClientRect: () => el.getBoundingClientRect(),\n delay: [delay, 0],\n onShow: () => {\n if (!el.isConnected || binding.arg?.disabled) return false;\n window.addEventListener('keypress', globalState.memberHoverTippyInstance.hide);\n globalState.memberHoverPreviewShown = true;\n if (globalState.currentGroupAvatarTimeout) {\n clearTimeout(globalState.currentGroupAvatarTimeout);\n }\n return true;\n },\n });\n\n clearTimeout(showTimeout);\n globalState.currentGroupAvatarId = groupAvatarId;\n showTimeout = setTimeout(() => globalState.memberHoverTippyInstance?.show?.(), delay);\n };\n};\n\nexport default {\n mounted(el, binding) {\n const member = binding.value;\n const memberId = getMemberId(member);\n const disabled = binding.arg?.disabled;\n\n if (!memberId || !Object.keys(member).length || disabled) return;\n\n // Create single tippy instance if it doesn't exist\n if (!vnode || !vnode.component) {\n vnode = createVNodeWithProps(binding.value, false);\n vnode.appContext = binding.instance.$.appContext;\n }\n initializeTippy(el);\n\n const showTooltip = createShowTooltip(el, binding);\n el.addEventListener('mouseenter', showTooltip);\n el._tippyListeners = { mouseenter: showTooltip };\n },\n\n unmounted(el) {\n // Remove event listeners\n if (el._tippyListeners) {\n Object.entries(el._tippyListeners).forEach(([event, listener]) => {\n el.removeEventListener(event, listener);\n });\n delete el._tippyListeners;\n }\n },\n\n updated(el, binding) {\n const disabled = binding.arg?.disabled;\n\n if (disabled && el._tippyListeners) {\n // directive became disabled\n Object.entries(el._tippyListeners).forEach(([event, listener]) => {\n el.removeEventListener(event, listener);\n });\n delete el._tippyListeners;\n return;\n }\n\n const memberId = getMemberId(binding.value);\n if (!memberId || !Object.keys(binding.value).length) return;\n\n const attachListeners = () => {\n requestAnimationFrame(() => {\n // Create new showTooltip with updated member\n if (!vnode || !vnode.component) {\n vnode = createVNodeWithProps(binding.value, false);\n }\n const showTooltip = createShowTooltip(el, binding);\n el.addEventListener('mouseenter', showTooltip);\n el._tippyListeners = { mouseenter: showTooltip };\n });\n };\n\n if (binding.oldValue.id !== binding.value.id) {\n // when id of member changed, remove old event listener\n if (el._tippyListeners) {\n el.removeEventListener('mouseenter', el._tippyListeners?.mouseenter);\n }\n attachListeners();\n }\n\n // if member id is the same, bud directive became enabled\n if (binding.oldValue.id === binding.value.id && !disabled && !el._tippyListeners) {\n attachListeners();\n }\n },\n};\n","//./plugins/posthog.js\nimport posthog from 'posthog-js';\nimport constants from '@/utilities/constants';\n\nexport default {\n install(app, options) {\n app.config.globalProperties.$posthog = posthog.init(constants.postHogApiKey, {\n api_host: constants.postHogApiHost,\n person_profiles: 'identified_only',\n session_recording: {\n maskAllInputs: true,\n maskTextSelector: `\n .activity-user-name,\n .actor-name,\n .beautified-link--label *,\n .board-item-card-title,\n .board-title-in-list,\n .breadcrumb-item-text,\n .card-child-title,\n .card-project-label,\n .card-project-title,\n .card-title,\n .child-page-section-item *,\n .filter-dropdown-label span,\n .item-label,\n .list-title,\n .notification-text,\n .page-list-item-text,\n .page-list-title,\n .parent-card-title,\n .posted-by-user,\n .project-text,\n .resource-wrap,\n .resource-title,\n .st-editor-content *,\n .tag-name,\n .title *,\n .title-text,\n .toc-item\n `,\n },\n ...(options || {}),\n });\n },\n};\n","const changeLanguage = (i18nextInstance, language) => {\n const [lang] = language.split('-');\n if (i18nextInstance.languages.includes(lang)) {\n i18nextInstance.changeLanguage(lang);\n return Promise.resolve();\n } else {\n const importLanguage = async () =>\n import(`@superthread-com/localization/languages/${lang}/index.js`);\n return importLanguage()\n .then(({ default: translations }) => {\n i18nextInstance.addResources(lang, 'translation', translations);\n i18nextInstance.changeLanguage(lang);\n })\n .catch((error) => {\n if (!process.env.TEST) {\n console.log('Error loading translations:', error);\n }\n i18nextInstance.changeLanguage('en');\n });\n }\n};\n\nexport { changeLanguage };\n","import cons from '@/utilities/constants';\nimport isMob from '@/utilities/isMobile';\nimport { ref, reactive } from 'vue';\n\n/* eslint-disable no-param-reassign */\nfunction install(app, options) {\n // make reactive objects\n const breakpoints = ref({});\n\n let isMobile = reactive({ value: false });\n isMobile = isMob();\n\n const updateBreakpoints = (e, key) => {\n breakpoints[key] = e.matches;\n };\n\n const addMediaMatchers = () => {\n const matchers = {};\n Object.keys(cons.screens).forEach((key) => {\n matchers[key] = window.matchMedia(`(min-width: ${cons.screens[key]})`);\n matchers[key].addListener((e) => updateBreakpoints(e, key));\n updateBreakpoints(matchers[key], key);\n });\n };\n\n addMediaMatchers();\n\n // inject global component computed\n app.mixin({\n computed: {\n bps() {\n return breakpoints;\n },\n isAndroid() {\n return navigator?.userAgent.match(/android/i);\n },\n isMobile() {\n return isMobile;\n },\n isMobileScreen() {\n return !this.bps.sm;\n },\n isTabletScreen() {\n return this.bps.sm && this.bps.md && !this.bps.lg;\n },\n isDesktopScreen() {\n return this.bps.lg;\n },\n },\n });\n}\n\nconst BreakpointsPlugin = { install };\n\nexport default BreakpointsPlugin;\n","import constants from '@/utilities/constants';\n\nconst getBoardPropThreshold = (isSprint) =>\n isSprint\n ? constants.fullyLoadedSprintBoardPropThreshold\n : constants.fullyLoadedBoardPropThreshold;\n\nconst hasSufficientProperties = (object, threshold) => Object.keys(object).length > threshold;\n\nconst getBoardItemType = (boardId) => (boardId === constants.epicsBoardId ? 'epics' : 'cards');\n\nconst hasItemsInLists = (board) => {\n if (!board?.lists?.length) return false;\n\n const itemType = getBoardItemType(board.id);\n return board.lists.some((list) => {\n const items = list?.[itemType];\n return Array.isArray(items) && items.length > 0;\n });\n};\n\nexport const isBoardFullyLoaded = (board, isSprint = false) => {\n // *KNOWN BUG: boards with lists, where all lists do not contain any cards will be always fetched\n // TODO: to be fixed with this card: https://app.superthread.com/superthread/card-10112-isboardfullyloaded-check-not-working-properly\n if (!board) return false;\n\n const threshold = getBoardPropThreshold(isSprint);\n return hasSufficientProperties(board, threshold) && hasItemsInLists(board);\n};\n\nexport const isPageFullyLoaded = (page) => {\n if (!page) return false;\n\n const threshold = constants.fullyLoadedPagePropThreshold;\n return hasSufficientProperties(page, threshold);\n};\n","export default {\n ops: {\n rail: {\n opacity: 0,\n size: '6px',\n gutterOfSide: '8px',\n },\n bar: {\n background: 'rgba(69, 69, 69, 0.16)',\n opacity: 1,\n specifyBorderRadius: '4px',\n size: '6px',\n },\n },\n};\n","import 'vue-virtual-scroller/dist/vue-virtual-scroller.css';\nimport { createApp } from 'vue';\nimport App from '@/components/pages/App';\nimport router from './router';\nimport { store } from './store';\nimport './registerServiceWorker';\nimport './assets/scss/app.scss';\n\n// 3rd party libs\nimport i18next from 'i18next';\nimport I18NextVue from 'i18next-vue';\nimport en from '@superthread-com/localization/languages/en';\nimport PortalVue from 'portal-vue';\nimport VueTippy from 'vue-tippy';\nimport vuedraggable from 'vuedraggable';\nimport { ObserveVisibility } from 'vue-observe-visibility';\nimport { createHead, VueHeadMixin } from '@unhead/vue';\n\n// mixins\nimport removeLoader from '@/mixins/removeLoader';\nimport isGuestRoleMixin from '@/mixins/isGuestRoleMixin';\nimport isSafari from '@/mixins/isSafari';\nimport iconTypeMixin from '@/mixins/iconTypeMixin';\nimport draggingIsOn from '@/mixins/draggingIsOn';\nimport viewRouteCheckMixin from '@/mixins/viewRouteCheckMixin';\n\n// directives\nimport vtippy from '@/utilities/vtippy.directive';\nimport vClickOutside from 'v-click-outside';\nimport autofocus from '@/utilities/autofocus.directive';\nimport draghover from '@/utilities/draghover.directive';\nimport dragToScroll from '@/utilities/dragToScroll.directive';\nimport MemberHoverPreview from '@/utilities/member-hover-directive';\n\n// globals\nimport { MessageTypes } from '@/types/messageTypes';\nimport posthogPlugin from '@/utilities/posthog';\nimport { changeLanguage } from '@/utilities/languages';\nimport constants from '@/utilities/constants';\nimport breakpoints from '@/plugins/BreakpointsPlugin';\nimport capitalizeFirstLetter from '@/utilities/capitalizeFirstLetter';\nimport { isBoardFullyLoaded, isPageFullyLoaded } from '@/utilities/isFullyLoaded';\n\nimport vuescroll from 'vuescroll/dist/vuescroll-esm.js';\nimport vuescrollOptions from '@/utilities/vuescrollOptions';\n\nimport VueVirtualScroller from 'vue-virtual-scroller';\n\nconst metaManager = createHead();\n\nconst app = createApp(App);\napp.use(router);\napp.use(store);\napp.directive('autofocus', autofocus);\napp.directive('tippy', vtippy);\napp.directive('draghover', draghover);\napp.directive('dragtoscroll', dragToScroll);\napp.directive('observe-visibility', {\n beforeMount: (el, binding, vnode) => {\n // @ts-ignore\n vnode.context = binding.instance;\n ObserveVisibility.bind(el, binding, vnode);\n },\n // @ts-ignore\n update: ObserveVisibility.update,\n unmounted: ObserveVisibility.unbind,\n});\nconst { bind, unbind } = vClickOutside.directive;\napp.directive('click-outside', {\n mounted(el, bindling) {\n bind(el, { value: bindling.value });\n },\n beforeUnmount(el) {\n unbind(el);\n },\n});\napp.directive('member-hover-preview', MemberHoverPreview);\n\napp.use(VueTippy, {\n directive: 'tooltip',\n component: 'VPopover',\n defaultProps: {\n placement: 'bottom-start',\n duration: [300, 0],\n maxWidth: 'none',\n popperOptions: {\n modifiers: [\n {\n name: 'preventOverflow',\n options: {\n altAxis: true,\n },\n },\n ],\n },\n },\n});\napp.use(VueVirtualScroller);\napp.use(metaManager);\napp.use(posthogPlugin);\n// eslint-disable-next-line\napp.component('draggable', vuedraggable);\n// @ts-ignore\nwindow.StVueApp = app;\n\napp.use(I18NextVue, { i18next });\napp.use(PortalVue);\napp.mixin(VueHeadMixin);\napp.mixin(removeLoader);\napp.mixin(isSafari);\napp.mixin(isGuestRoleMixin);\napp.mixin(iconTypeMixin);\napp.mixin(draggingIsOn);\napp.mixin(viewRouteCheckMixin);\napp.use(breakpoints);\napp.use(vuescroll, vuescrollOptions);\n// add global properties\napp.config.globalProperties.$constants = constants;\napp.config.globalProperties.$cons = constants;\napp.config.globalProperties.$capitalizeFirstLetter = capitalizeFirstLetter;\napp.config.globalProperties.$messageTypes = MessageTypes;\napp.config.globalProperties.$isBoardFullyLoaded = isBoardFullyLoaded;\napp.config.globalProperties.$isPageFullyLoaded = isPageFullyLoaded;\napp.config.globalProperties.$blurhashWorker = new Worker(\n new URL(/* webpackChunkName: \"blurHashWorker\" */ './workers/blurhashWorker', import.meta.url),\n { type: 'module' }\n);\napp.config.globalProperties.translate = (\n key: string,\n interpolations: Record = {}\n) => {\n return i18next.t(key, { ...interpolations, interpolation: { escapeValue: false } });\n};\napp.config.globalProperties.changeLanguage = (language: string) =>\n changeLanguage(i18next, language);\n\ni18next.init({\n lng: 'en',\n fallbackLng: 'en',\n supportedLngs: ['en', 'fr', 'bs', 'de', 'pl'],\n resources: {\n en: {\n translation: en,\n },\n },\n interpolation: {\n prefix: '%{',\n suffix: '}',\n },\n});\n\napp.mount('#app');\n\nif (!['dev', 'local'].includes(`${process.env.VUE_APP_ENV}`)) {\n let sentryInited = false;\n const captureError = async (error: any) => {\n const { logError, initSentry } = await import(\n /* webpackChunkName: \"sentry\" */ './utilities/sentry'\n );\n if (!sentryInited) {\n sentryInited = true;\n initSentry(router, app);\n }\n logError(error);\n };\n window.onerror = (message, url, line, column, error) => captureError(error);\n window.onunhandledrejection = (event: any) => captureError(event?.reason);\n}\n","import { isImage, isVideo, isPdf } from './fileExtensions';\n\nconst attachmentPreviewable = (attachment) => {\n return (\n (isImage(attachment.type) &&\n !attachment.type.includes('heif') &&\n !attachment.type.includes('heic')) ||\n isVideo(attachment.type) ||\n isPdf(attachment.type)\n );\n};\n\nexport default attachmentPreviewable;\n","import useShortcutHandlers from '@/utilities/composables/useShortcutHandlers';\nimport isInViewport from '../utilities/isInViewport';\nimport EventBus from '../utilities/eventBus';\nimport checkPlatform from '@/mixins/checkPlatform';\nimport { isPublicPageApp } from '@/utilities/isPublicPageApp';\n\nexport default {\n mixins: [checkPlatform],\n setup() {\n if (!isPublicPageApp()) {\n const { quickCardShortcutHandler, quickPageShortcutHandler, quickNoteShortcutHandler } =\n useShortcutHandlers();\n return { quickCardShortcutHandler, quickPageShortcutHandler, quickNoteShortcutHandler };\n }\n return null;\n },\n data() {\n return {\n selectedIndex: -1,\n vh: window.innerHeight,\n fieldFocused: false,\n inputBottom: 0,\n suspendMouseEnter: false,\n scrollTop: false,\n enableSpaceKeySelect: false,\n scrolledOnMount: false,\n scrollOnMountTimeout: null,\n updateTimeout: null,\n };\n },\n computed: {\n searchResultsLength() {\n if (!Number.isNaN(parseFloat(this.searchResults?.length), 10)) {\n return this.searchResults.length;\n }\n return 0;\n },\n dropdownMaxHeight() {\n return this.vh - this.inputBottom;\n },\n membersDropdownShown() {\n return this.searchNotEmpty && this.fieldFocused;\n },\n dropdownCalcStyle() {\n // dropdown padding top + bottom = 32\n // viewport edge margin 8\n return { maxHeight: `${this.dropdownMaxHeight - 40}px` };\n },\n },\n\n mounted() {\n this.getInputYOffset();\n },\n\n methods: {\n checkKey(event) {\n if (event.target?.dataset?.hiddenInput) {\n if (this.shouldPreventDefault(event)) return;\n // support filtered event keys like shortcuts\n if (this.filteredOutKeyCodes.length) {\n if (this.filteredOutKeyCodes.includes(event.code)) {\n const item = this?.items?.find((i) => i.shortcutKeyCode === event.code);\n if (item) {\n this.selectSearchResult(item);\n }\n return;\n }\n }\n }\n event.stopPropagation();\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n this.changeSelection(event.key);\n }\n if (event.key === 'Tab') {\n event.preventDefault();\n this.changeSelection(event.key);\n }\n if (event.key === 'Enter') {\n event.preventDefault();\n this.changeSelection(event.key, event);\n }\n\n if (event.ctrlKey && event.key === '1') {\n event.preventDefault();\n this.hidePopup();\n }\n if (event.ctrlKey && event.key === '2') {\n event.preventDefault();\n this.hidePopup();\n }\n if (event.ctrlKey && event.key === '3') {\n event.preventDefault();\n this.hidePopup();\n }\n },\n checkDownKey(event) {\n if (event.key === 'ArrowDown' || event.key === 'ArrowUp') {\n event.preventDefault();\n }\n\n if (event.target.dataset.hiddenInput) {\n if (this.shouldPreventDefault(event)) return;\n // support filtered event keys like shortcuts\n if (this.filteredOutKeyCodes.length) {\n if (this.filteredOutKeyCodes.includes(event.code)) {\n const item = this?.items?.find((i) => i.shortcutKeyCode === event.code);\n if (item) {\n this.selectSearchResult(item);\n }\n return;\n }\n }\n }\n if (event.key === 'Tab') {\n event.preventDefault();\n }\n if (event.code === 'Space' && !event.shiftKey && this.searchResults.length > 0) {\n event.stopPropagation();\n if (this.searchValue === '' || this.enableSpaceKeySelect) {\n event.preventDefault();\n this.changeSelection(event.code);\n }\n }\n\n if (event.key === 'Escape') {\n event.preventDefault();\n this.handleEsc(event);\n }\n if ((this.isApple ? event.metaKey : event.ctrlKey) && this.shortcutKey(event.key)) {\n event.preventDefault();\n this.handleEsc(event);\n this.displaySearchModal();\n }\n\n event.stopPropagation();\n },\n shortcutKey(key) {\n return ['K', 'k'].includes(key);\n },\n changeSelection(arrowKey, event = null) {\n if (arrowKey === 'ArrowDown' || arrowKey === 'Tab') {\n this.enableSpaceKeySelect = true;\n this.disableMouseEnter();\n if (this.selectedIndex < this.searchResults?.length - 1) {\n this.selectedIndex += 1;\n return;\n }\n this.selectedIndex = 0;\n }\n if (arrowKey === 'ArrowUp') {\n this.enableSpaceKeySelect = true;\n this.disableMouseEnter();\n if (this.selectedIndex > 0) {\n this.selectedIndex -= 1;\n return;\n }\n this.selectedIndex = this.searchResults?.length - 1;\n }\n if (arrowKey === 'Enter') {\n if (this.selectedIndex > -1) {\n const result = this.searchResults[this.selectedIndex];\n if ((result || this.filterIsTextInput) && !result?.disabled) {\n // true for enter key\n this.selectSearchResult(result, this.selectedIndex, event, true);\n if (!result?.category && this.hideFilterPopup) {\n this.hideFilterPopup();\n }\n }\n }\n }\n if (arrowKey === 'Space') {\n if (this.selectedIndex > -1) {\n const result = this.searchResults[this.selectedIndex];\n if (result && !result.disabled) {\n if (!result.category && typeof this.selectOnlySearchResult === 'function') {\n this.selectOnlySearchResult(result);\n EventBus.$emit('enterFilterSelect', result);\n }\n if (\n !result.category &&\n (result.toggleButton ||\n result.radioButton ||\n result.toggleSection ||\n result.checkBox) &&\n typeof this.toggleItem === 'function'\n ) {\n this.toggleItem(result);\n }\n }\n }\n }\n },\n resultRef(index) {\n return `result-${index}`;\n },\n getInputYOffset() {\n this.$nextTick(() => {\n if (this.$refs.searchInput) {\n let clientRect;\n if (this.$refs.searchInput.$el) {\n clientRect = this.$refs.searchInput.$el.getBoundingClientRect();\n } else {\n clientRect = this.$refs.searchInput.getBoundingClientRect();\n }\n this.inputBottom = clientRect.bottom;\n }\n });\n },\n fieldFocus() {\n this.fieldFocused = true;\n },\n fieldBlur() {\n this.fieldFocused = false;\n },\n handleResize() {\n this.vh = window.innerHeight;\n this.getInputYOffset();\n },\n setSelectedIndex(index) {\n if (this.suspendMouseEnter) {\n return;\n }\n this.selectedIndex = index;\n },\n mouseMoveHandle() {\n this.suspendMouseEnter = false;\n },\n disableMouseEnter() {\n this.suspendMouseEnter = true;\n },\n scrollToTop() {\n this.scrollTop = true;\n },\n displaySearchModal() {\n this.$store.dispatch('setQuickCard', false);\n this.$store.dispatch('setDisplayMembersDropdownId', '');\n this.$store.dispatch('setCurrentCardIdForPopup', '');\n this.$store.dispatch('setQuickPage', false);\n this.$store.dispatch('toggleSearchModal', true);\n },\n\n compositionUpdate(event) {\n if (this.isMobile) {\n this.$nextTick(() => {\n clearTimeout(this.updateTimeout);\n this.updateTimeout = setTimeout(() => {\n this.searchValue = event.target.value;\n });\n });\n }\n },\n getDropdownElement(resultsRef, newIndex) {\n let el = null;\n const resultsIsVueComponent = resultsRef.every?.((i) => i._isVue);\n if (resultsIsVueComponent) {\n el = resultsRef.find((c) => +(c.$el?.dataset?.index || c.dataset?.index) === newIndex);\n } else {\n el = this.$refs[this.resultRef(newIndex)]?.[0];\n }\n return el;\n },\n\n scrollToSelectedItem(element, index) {\n const { vertical } = isInViewport(element, this.$refs.searchResultsScroll);\n if (!vertical) {\n if (index === 0 && this.scrollTop && this.$refs.searchResultsScroll) {\n this.$refs.searchResultsScroll.scrollTo({ y: '0%' }, 500);\n this.scrollTop = false;\n return;\n }\n\n if (!this.scrolledOnMount) {\n this.scrollOnMountTimeout = setTimeout(() => {\n element.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n }, 150);\n this.scrolledOnMount = true;\n } else {\n element.scrollIntoView({ behavior: 'smooth', block: 'nearest' });\n }\n }\n },\n\n shouldPreventDefault(event) {\n if (\n this.quickCardShortcutHandler?.(event) ||\n this.quickPageShortcutHandler?.(event) ||\n this.quickNoteShortcutHandler?.(event)\n ) {\n event.preventDefault();\n this.handleEsc(event);\n return true;\n }\n return false;\n },\n },\n\n watch: {\n selectedIndex(newIndex) {\n if (\n Object.prototype.hasOwnProperty.call(this.$refs, 'results') &&\n this.searchResultsLength > 0\n ) {\n const element = this.getDropdownElement(this.$refs.results, newIndex);\n if (!element || Object.keys(element).length === 0) return;\n\n if (!this.scrolledOnMount) {\n this.scrollOnMountTimeout = setTimeout(() => {\n this.scrollToSelectedItem(element);\n }, 150);\n this.scrolledOnMount = true;\n } else {\n this.scrollToSelectedItem(element);\n }\n }\n },\n searchValue(newValue) {\n if (this.enableSpaceKeySelect) this.enableSpaceKeySelect = false;\n\n if (newValue) {\n this.selectedIndex = 0;\n return;\n }\n },\n },\n created() {\n window.addEventListener('resize', this.handleResize);\n this.handleResize();\n },\n beforeUnmount() {\n clearTimeout(this.scrollOnMountTimeout);\n clearTimeout(this.updateTimeout);\n window.removeEventListener('resize', this.handleResize);\n },\n};\n","const isMobile = () =>\n /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator?.userAgent);\n\nexport default isMobile;\n","import { Store, useStore } from 'vuex';\nimport constants from '@/utilities/constants';\n\nexport const fetchCalendarEvents = (store: Store) => {\n const googleCalendarIntegration = store.getters.getIntegrationInstallations(\n constants.googleCalendarIntegration\n )[0];\n\n if (googleCalendarIntegration?.id) {\n store.dispatch('getUpcomingGoogleCalendarEvents', {\n installation_id: googleCalendarIntegration?.id,\n });\n }\n};\n\nexport default async function (\n {\n store = useStore(),\n fetchEvents = false,\n }: {\n store?: Store;\n fetchEvents?: boolean;\n } = {} as any\n) {\n await store.dispatch('getTeamIntegrationInstallations', {\n integration: constants.googleCalendarIntegration,\n });\n\n const { calendar_user_notes } = await store.dispatch(\n 'getTeamIntegrationsSettings',\n constants.calendarUserNotesSettings\n );\n\n if (calendar_user_notes) {\n await store.dispatch('setIntegrationSettings', {\n integration: constants.calendarUserNotesSettings,\n settings: calendar_user_notes,\n });\n }\n\n if (!fetchEvents) return;\n\n fetchCalendarEvents(store);\n}\n"],"names":["generateDefaultMyWorkFilters","userId","tabId","include","members","exclude","statuses","creators","onPageLoad","loader","document","getElementById","removeLoader","remove","cdnBase","generateSrcUrl","src","width","height","pageCover","arguments","length","undefined","includes","constants","UNSPLASH_BASE_URL","encoded","encodeURI","computed","isApple","checkIsApple","icons","colors","appColors","warning300","gray300","gray600","gray900","error600","getRouteAfterLogin","clearAfterGet","redirectRouteAfterLogin","browserStorageGetItem","browserStorageRemoveItem","IconType","useCurrentRole","store","useStore","currentRole","getters","getCurrentRole","isOwner","value","TeamMemberRole","Owner","isAdmin","Admin","isMember","Member","isGuest","Guest","isGuestReader","GuestReader","isElevated","iconsContext","require","methods","iconPath","name","extension","this","error","getCustomIconStyle","path","styleOptions","useMask","url","maskImage","webkitMaskImage","maskSize","webkitMaskSize","maskRepeat","webkitMaskRepeat","backgroundImage","backgroundSize","backgroundRepeat","isImage","type","_type$includes","call","isVideo","_type$includes2","isPdf","_type$includes3","isElectronApp","_navigator","navigator","userAgent","indexOf","useIsElectronApp","isInput","tagName","isContentEditable","activeElement","toLowerCase","isElectronQuickNote","routeName","electronNotesRoute","closeOtherPopups","modalToOpen","dispatch","QuickResourceType","QuickCard","getQuickCardIsOn","QuickResourceAction","setQuickCard","QuickPage","getQuickPage","setQuickPage","QuickNote","getQuickNote","setQuickNote","getDeletePopupId","showSearchModal","getEmojiPickerDisplayed","openQuickResource","resourceType","QuickResourceActions","quickCardShortcutHandlerFn","event","completeOnboardingActions","code","key","quickPageShortcutHandlerFn","quickNoteShortcutHandlerFn","hasPermissions","useShortcutHandlers","route","useRoute","translate","useTranslate","useOnboardingActions","quickCardShortcutHandler","ref","quickPageShortcutHandler","quickNoteShortcutHandler","copyGitBranchNameShortcutHandler","hasAllPermissions","useAudioTranscription","watch","String","cardId","_navigator$clipboard","_navigator$clipboard$","card","getCardById","branchName","getBranchName","title","clipboard","writeText","message","icon","duration","immediate","lastVisitedNoteIdKey","quickPageNoteKey","notesSidebarWidthKey","notesCalendarIntegrationReminderKey","notesCalendarUsedEventIdsKey","noteTranscriptPersistKey","noteAiTitlePrompt","NoteContentType","NoteTemplate","draggedEntity","$store","draggingIsOn","Object","keys","useDeleteResource","id","_getCurrentInstance","_this","getCurrentInstance","proxy","setAndOpenProject","setAndOpenAdjacentProject","useSetAndOpenProject","frozenTitle","deleteProject","async","currentProjId","getCurrentProjectId","deletingCurrentProject","catch","err","deleteCard","result","cardType","getIsCardDisplayed","EventBus","$emit","deleteView","deletingCurrentView","$route","$constants","routeNames","view","$router","push","views","params","dontFetch","viewId","shared","resource","deletePage","pageResource","pageFromTree","getProjectPagesTree","project_id","pageId","projectId","allChildren","collectAllChildren","page","children","forEach","childId","currentlyViewed","ResourceType","Page","teamId","getTeamID","childPage","isChildPageOpened","currentPageId","openedPage","teamSlug","currentProjectId","deleteBoard","boardId","currentBoardId","deleteList","listId","deleteResource","deleteFn","Project","View","Epic","Card","Board","List","Promise","reject","Error","resourceTitle","getProject","getProjectById","getView","getPrivateViews","getPublicViews","find","v","getCard","getCards","getPage","getPageById","getBoard","getFlatBoards","getList","lists","res","resTitle","getTeamSlug","getCurrentPageID","useAddCardInGroupByOrder","_this$proxy","dispatchCardAction","action","items","groupBy","defaultId","idKey","_card$epic2","item","_card$epic","board_id","epicId","epic","addCardInGroupByOrder","_card$epic3","_card$epic4","tagsToAdd","tags","priority","status","removeCardFromGroupByOrder","_card$epic5","isPublicPageApp","useTranslation","t","newProjectId","getAdjacentProjectId","openProject","openManageSpaces","isSettings","toRouteName","settingsManageSpacesRouteName","manageSpacesRouteName","resolve","tabName","projectPath","projectSlug","toRoutePath","useToggleSidebar","closeSidebar","breakpoint","window","screen","setRootStyle","sidebarWidthRoot","browserStorageSetItem","expandSidebar","convertStyleToNumber","getDefaultSidebarWidth","noteId","electronAPI","electron","transcriptionState","getTranscriptionState","startRecording","persistedNoteId","hasNoteTranscriptionFeatureFlag","newNoteId","newNote","createNote","transcriptionKeywords","getUser","transcription_keywords","memberKeywords","values","getTeamMembers","map","m","first_name","display_name","send","getUserSettings","transcription_language","nextTick","recording","alreadyRecorded","add","setupChannels","alreadyRecordedForCurrentNote","has","saveUnsavedTranscripts","_store$getters$getNot","unsavedTranscripts","getNotes","transcripts","filter","ongoing","source","content","interim_content","then","_ref","data","note","startRecordingForAnotherNote","currentTranscriptionNoteId","newNoteForRecording","stopRecording","persistNoteRecording","removeChannels","currentTranscriptionNoteTitle","_store$getters$getNot2","isRecordingPending","isRecordingStarted","isRecordingStopped","_store$getters$getNot3","hasTranscripts","Boolean","isTranscriptDone","is_final","test","trim","createInterimTranscript","transcript","local_id","nanoid","createFinalTranscript","processTranscript","notes","lastTranscriptIndex","slice","reverse","findIndex","ti","lastTranscript","newTranscriptIsDone","on","_","removeAllListeners","audioPermissionsCheck","perm","permission_status","JSON","parse","permissions","hasSystemAudioPermission","system","hasMicrophonePermission","microphone","isMicrophonePending","isSystemAudioPending","isMicrophoneAuthorized","isSystemAudioAuthorized","requestPermission","callback","permissionStatus","getPermission","getTranscriptContents","separator","noFormatting","join","reduce","acc","index","sourceFrom","NoteTranscriptSource","Author","prevTranscript","getTeamFeatureEnabled","featureFlagIds","noteAudioTranscription","interpolation","i18next","ResourceLoadedKey","isSafariCheck","isSafari","getListById","storeGetters","handleAddEventBoardView","_ref2","newIndex","oldIndex","originalListId","destinationBoardId","originalBoardId","storeDispatch","cardModel","order","getListCards","destinationBoard","originalBoard","isDestinationSprintBoard","newListObject","color","behavior","handleListUpdate","updateCardFields","updateBoardFields","fieldName","fieldValue","_ref3","originalList","newList","originalIndex","splice","_ref4","orginalId","_ref5","handleUpdateEventBoardView","_ref6","listCards","propertyName","addCard","_ref7","destinationProjectId","destinationListId","destinationPosition","originalProjectId","originalPosition","getSprintKey","sprintId","getSprintListKey","specialCharactersPattern","getDashedTitle","replaceAll","replace","str","text","charAt","toUpperCase","substring","LARGE_SCREEN_BREAKPOINT","useNotes","router","useRouter","debouncedUpdateNoteTitle","debouncedUpdateNoteContent","noteTemplates","getNoteTemplates","noteTemplatesFavourited","templates","favouritedTemplates","fromEntries","entries","is_favourited","autoEnhancedTemplate","AutoEnhanced","getNoteEditorId","debounceUpdateNoteTitle","clearTimeout","setTimeout","updateCorrectNoteContent","aiNoteId","fieldType","UserNotes","debounceUpdateNoteContent","clearUpdateNoteDebounceTimeout","calendarEvent","localId","isOnboardingNote","afterLocalNoteCreatedCallback","localNote","time_created","Date","now","meeting_time","start","meeting_metadata","links","meeting_links","noteIdToUpdate","oldEditorId","newEditorId","oldId","newId","resourceId","getNoteChronologicalAfterNoteId","notesList","noteIndex","noteBefore","noteAfter","deleteNote","updateNoteTitle","updateNoteContent","getNote","getAiNote","templateId","_getNote$NoteContentT","AiNotes","note_template_id","updateLastNoteTemplateId","last_note_template_id","getNoteHasAiNotes","_getNote$NoteContentT2","getLastNoteTemplate","_getNote","getPublicNoteUrl","_getNote$public_setti","public_settings","togglePublicNote","_updatedNote$public_s","isPublicNote","updatedNote","payload","is_public","getNoteMeetingLinkInfo","_getNote$meeting_meta","linkInfo","link","provider","getTextToTitleCase","usedEventIds","markEventAsUsed","eventId","getNoteTitleFromEvent","noteOnboardingEventId","eventStartDate","eventEndDate","end","formattedStartDate","convertTimeTo24Hours","formattedEndDate","toDateString","convertDateToDDMM","calendarEvents","getUpcomingGoogleCalendarEvents","createNoteFromEvent","e","createNoteFromOnboardingEvent","OnboardingActionType","GetStartedNotes","electronNotesOnboardingRoute","theme","getTheme","defaultStyle","background","styleVariables","white","gray800","border","gray500","gray200","gray400","parameterize","strings","compareTimeCreated","a","b","compareProjectOrder","projectOrder","aIndex","bIndex","sortProjects","projects","sortedProjects","sort","OnboardingActionStatus","getCurrentDateInSeconds","Math","round","getTime","isProject","inEpicBoard","notificationTypePage","getCurrentInboxResource","resource_type","isPage","isBoard","isSprints","sprintsRouteName","isSprint","sprint","isSprintInbox","isInbox","Sprint","isNewPage","isNewBoard","isAnyCardDisplayed","getIsAnyCardDisplayed","getChildCardCreation","isManageSpaces","isEpicsBoard","epicsBoardRoute","membersBasedOnRoute","_this$$store$getters$","selectedProjectId","getSelectedProjectId","getTeamProjectById","inactiveMembers","getInactiveTeamMembers","getCurrentMembers","member","user_id","currentBoard","inbox","isInViewport","elem","boundElem","boundingOffests","top","right","bottom","left","rect","getBoundingClientRect","rectAgainst","$el","boundOffsets","offsetedAgainstTop","offsetedAgainsBottom","vertical","horizontal","deltaH","deltaV","hideMemberDropdown","getCurrentCardIdMemberDropdown","hideCardActionsDropdown","getCurrentCardIdActionEdit","closeParentCardPopup","getShowSetParentCardPopup","closeDupicateCardPopup","getShowDuplicateCardPopup","closeEmojiPicker","closePageUploadPopup","getPageUploadPopup","closeRestOfCardDropdowns","hideManageProjectsDropdowns","hideAllDropdowns","MessageTypes","character","gitName","defaultConfig","withCredentials","withXSRFToken","httpClient","HttpClient","timeout","baseURL","http","instance","get","axiosBaseGet","axios","refereshPromise","refreshPending","authRefresh","client","post","createAxiosResponseInterceptor","interceptor","interceptors","response","use","errorResponse","_errorResponse$respon","isCancel","eject","config","method","pathname","location","getLoggedIn","href","history","pushState","finally","api","Api","authGet","endpoint","customConfig","authPut","putData","put","basePost","postData","authPost","authPatch","patchData","patch","authDelete","delete","validateEmail","email","SECOND","MINUTE","HOUR","DAY","MONTH","YEAR","UNSPLASH_URL","UNSPLASH_DOWNLOAD_URL","screens","sm","md","lg","xl","xxl","ST_PUBLIC_PAGE_BASE_URL","staticAssetsUrl","staticFilesUrl","fullScreen","docked","modal","postHogApiHost","postHogApiKey","emptyMarkdownInput","emptyEditor","profileImageSupportedFiles","cardSupportedFiles","userColors","editorSupportedFiles","videoVolumeDefault","videoVolumeStorageKey","videoMuteVolumeKey","addCardButton","epicsBoardId","inEpicBoardIdPrefix","epicRoute","newPage","newBoard","createSpaceRouteName","settingsCreateSpaceRouteName","settingsMemberRouteName","settingsSpaceRouteName","settingsBoardsRouteName","settingsSelectedBoardRouteName","settingsSprintsRouteName","settingsWorkspaceRouteName","settingsImportRouteName","settingsNotificationsRouteName","settingsRouteName","settingsTemplate","root","create","edit","memberRouteName","roles","owner","admin","guest","myWorkRouteName","hRx","internalLinkRegEx","projectsSlug","sidebarResizeSnapWidth","sidebarTogglePercentage","timelineSidebarResizeSnapWidth","inboxListResizeSnapWidth","updateCardCancel","smallCardMemberCountMax","openedCardMemberCountMax","stImageMinWidth","stImage","editorChecklistItem","newChecklistItem","dark","light","fromSection","blockAttributeName","filterTypes","quickCard","quickChildCard","projectsColumn","newListButton","integrationRoutes","github","dev","staging","release","production","zapier","searchGroupsOrder","stImageDefaultWidth","stImageDefaultHeight","stImagePlaceholder","corsProxyBaseUrl","redirectAfterGoogleSignInRoute","desktopRedirectRoutes","changelogUrl","uiNotificationStatuses","success","warning","uiNotificationLabelTypes","opne","update","retry","changelog","undo","uiNotificationElements","button","span","checkBox","uiNotificationMaxTitleLength","timelineHelperElementId","timelineArrowButtonOffset","timelineAnimatedScrollingSpeed","connectToDesktopAppUrls","timelineCardTitleMinWidth","timelineTooltipDateFormat","infoSidebarProject","emojiRegex","pageSyncTime","quickCardMaxTagsCount","fullyLoadedBoardPropThreshold","fullyLoadedSprintBoardPropThreshold","fullyLoadedPagePropThreshold","noSpaceName","showMemberHoverPreviewDelay","estimateSystems","fibonacci","label","labelAbbreviation","exponential","tshirt","valueAbbreviations","toggleButtonClass","defaultSuggestedTagsColors","bug","feature","aiAssistant","aiAgents","aiSuggestedActions","privateSpace","userPermissions","inviteMembers","publicPageIndexing","timelineLayout","limitIds","spaceLimit","iconPicker","createProject","manageProjects","sidebarProject","templateContent","epicSidebar","epicBoardView","templateDropdown","pageView","boardView","quickBoardView","quickCardModalView","quickPageModalView","updateEmailPopupTypes","reauthenticate","input","verify","timeline","list","calendarLayout","getStartedShowLessCount","projectPrivacyType","open","private","characterLimit","comment","knowledgeBaseUrls","mentionAnyting","childCards","organisePages","createPages","pageIconAndCoverImage","comments","boardsCardsAndStatuses","onboardingActionsReleaseDate","resolved","onboardingActionsVideoPrefix","searchResultsType","SearchModal","MentionList","openSpace","notificationsIntegrations","slackUser","notificationDigest","OAuthState","googleCalendar","googleCalendarRedirectUri","googleBaseUrl","slack","slackRedirectUri","googleCalendarIntegration","calendarUserNotesSettings","webhookIntegrations","slackChannel","defaultTimeInputValue","fullWidth","readOnly","epicDefaultIcon","resourceIconDefault","emptyEditorClass","cardDetailsSidebar","epicDetailsSidebar","editorContentBaseClass","rolledOverList","teamLogin","login","workspaces","newWorkspace","verifyEmail","onboardingInfo","board","space","boardCard","sprintCard","newView","billing","agents","newAgent","updateAgent","notesSettings","editor","sharedToWebClass","bottomGutterClass","arrowUpInFirstRow","arrowLeftAtDocStart","staticImages","staticVideos","downloadLinks","macArm64","macx64","contactMail","importerRadioNewProject","prStates","prStatusKeys","pr_draft","pr_open","pr_merged","pr_closed","gitBranchNameRegex","boardEmailDomain","prod","keyboardShortcutCheatsheetUrl","numberOfRecentWorkspaces","cardView","noListsInEpicsBoardErr","missingCardTitleOrListIdErr","userTypes","user","systemName","memberSearchKeys","memberSearchThreshold","pageCoverImage","msPerSecond","msPerMinute","msPerHour","msPerDay","msPerMonth","msPerYear","periods","labelPlural","labelSingular","shortFormat","monthsLabels","_translate","split","generateMonthsLabels","_translate2","generateLabel","periodIndex","period","getTimeDifferenceRecursion","elapsed","valuesArray","floor","rest","newPeriodIndex","timeDifference","time","depth","dueDate","current","array","finalString","loopLimit","i","getDayFromDate","date","getDay","convertTimeTo12Hours","toLocaleTimeString","hour12","hour","minute","convertToTwoDigits","convertTimestampToDate","getMonth","getDate","convertTimestampToDateSecondFormat","convertTimestampToDateSecondFormatWithDay","_translate3","days","day","at","convertTimestampToDDMlabelTime","currentDate","currentYear","getFullYear","year","hours","getHours","minutes","getMinutes","convertToHoursMinutes","timestampToFullDate","_translate4","d","months","month","timestampToFullDateShort","webpackIconsContext","useCustomIcon","SocketService","constructor","_defineProperty","authExpired","resubscribe","same_user","topic","handleCardArchivedRestored","body","handleResourceCreated","handleResourceUpdated","handleResourceDeleted","handleCardMoved","handlePageMoved","handleBoardMoved","handleResourceArchived","reason","handleAuthRefresh","connect","baseUrl","getRoutes","socket","openStateTimeout","subscriptions","subscribe","boards","sprints","cards","unsubscribe","unsubscribe_all","waitForConnection","interval","ws","readyState","clearInterval","stringify","WebSocket","onopen","onOpen","onmessage","onMessage","onerror","onError","onclose","onClose","disconnect","close","subscribedList","resourceIndex","clearUnsubscribeResources","s","addRemoveResource","resourceIds","addKey","removeKey","addList","removeList","updateSubscriptions","subscribeTo","unsubscribeFrom","logError","AgentPromptIteration","list_id","GoogleCalendarEvent","fetchCalendarEvents","Subscription","handleSubscriptionUpdated","changes","resource_id","hints","handleSprintUpdated","handleBoardDeleted","handlePageDeleted","handleCardDeleted","planIdChange","change","to","dismissible","dismissCallback","reload","labels","buttonStyle","getListId","original_sprint_id","original_list_id","destination_sprint_id","destination_list_id","getBoardId","original_project_id","original_board_id","destination_project_id","destination_board_id","card_id","destination_position","original_position","destination_project","original_project","destinationPages","pages","originalPages","destinationPageOrder","page_order","originalPageOrder","destinationBoardOrder","board_order","originalBoardOrder","archived","c","listCardsObj","viewResult","getViewResults","viewCardIndex","isCardDisplayed","field","isOnlyCardDisplayed","getDisplayedCards","flatBoards","hasOwnProperty","boardsArray","notFound","Team","globalState","reactive","memberHoverPreviewShown","memberHoverTippyInstance","currentGroupAvatarId","currentGroupAvatarTimeout","MyWorkTabId","EpicTabId","NoteTabId","invitee_user_id","storeMember","getMemberById","hidden","isGuestRole","hiddenStyle","backgroundColor","userHashColor","maskPosition","memberInTeamMembers","memberInitials","last_name","invitee_email","fallbackStyle","borderColor","thumbnail_image","profile_image","img","backgroundPosition","showUserColor","memberColor","listOfViewResults","getListOfViewResults","currentViewResultsCount","getCurrentViewTotalCount","cardCountLabel","cardLabel","isMobile","preloadNewViewResults","card_filters","getViewFilters","fetchNewViewResults","count","localAddViewResultsToList","postFetchViewResults","preloadViewResults","fetchViewResults","setViewResults","localViewResults","getViewResultsFromList","setViewResultsFromLocal","viewToSelect","sprint_id","fetchSprint","fetchBoard","flatBoard","$isBoardFullyLoaded","fetchTags","sprintKey","projectTags","refreshing","registration","updateExists","created","addEventListener","updateAvailable","once","detail","refreshApp","waiting","serviceWorker","postMessage","getRandomNumber","x","y","trunc","crypto","getRandomValues","Uint32Array","goToWorkspaceSettingsRoute","goToSettingsRoute","goToImportSettingsRoute","goToKeyboardShortcutRoute","ViewKeyboardShortcuts","goToNotificationsSettingsRoute","goToNotesRoute","showQuickCardModal","showQuickPageModal","routeRef","toRef","onboardingActionsDataMap","MentionAnything","onClick","openOnboardingActionsVideoPreview","tooltip","AddChildCard","CreateCard","CreatePage","AddWorkspaceLogo","CustomiseYourProfile","ImportTasks","ConnectSlack","userCreatedAfterOnboardingActionsRelease","getOnboardingActions","getNotDismissedOnboardingActions","Dismissed","getNotCompletedOnboardingActions","NotCompleted","getCompletionRunningOnboardingActions","animate_completion","getFullyCompletedOnboardingActions","Completed","dismissOnboardingAction","types","attachmentId","team","getTeam","teamLogo","_team$value","logo","userProfileImage","_user$value","shouldSkipOnboardingAction","getOnboardingAction","accumulator","onboardingActionsMap","_onboardingActionsMap","onboardingAction","fetchOnboardingActions","onboarding_actions","existingNotesOnboardingAction","onboardingActions","getGetStartedExpanded","toggleGetStartedExpanded","setGetStartedExpandedFromLS","isExpanded","localStorage","getItem","getGetStartedShowAll","toggleGetStartedShowAll","setGetStartedShowAllFromLS","showAll","setAllAsNotCompleted","ctrlKey","altKey","colorIndex","prev","curr","charCodeAt","$on","handler","emitter","$once","$off","_len","args","Array","_key","groupByOption","itemName","_window","valueToStore","setItem","_window2","_window3","removeItem","browserStorageGetAndSetItem","browserStorageRenameItem","oldKey","newKey","removeMultipleItemsByArrayPrefix","prefixes","prefix","_window6","startsWith","cardStatusType","Backlog","Rolledover","CardStatus","POLL_INTERVAL","RECENT_NOTES_COUNT","useNotesPoll","fetchNotes","getRecentNotes","setNotes","setupNotesPoll","setInterval","bundleID","processName","childBundleID","useRuntimeConfig","public","appId","getCardStatus","isEpic","getDefaultCardStatuses","backlog","committed","Committed","started","Started","completed","cancelled","Cancelled","rolledover","getBoardLists","defaultSprintStatuses","isLocalhost","hostname","isEnvDevOrLocal","initSentry","vueRouterRef","appInstance","Sentry","app","dsn","integrations","tracesSampleRate","environment","process","mixins","cardStatuses","recentlyViewedGenItemTimeout","displayedCards","gettersAndIconsMap","getter","getSelectedView","_page$icon","iconType","_page$icon2","getCurrentProject","project","_project$icon","_project$icon2","cardStatusIcon","additionalIcon","recentlyViewedLS","currentTeamIdLS","getPages","newVal","_newVal$params","_newVal$params2","_newVal$params3","generateItemForRecentlyViewedDropdown","oldVal","diff","nv","some","ov","newCard","addItemToRecentlyViewedDropdown","setRecentlyViewed","mounted","saveQuickCardCreatedToRecentlyViewed","saveQuickPageCreatedToRecentlyViewed","beforeUnmount","currentCardList","cardStatus","isInvalidItemForRecentlyViewed","getLabel","memberLabel","configIconType","_item$icon","_item$icon2","list_color","role","addToElectronRecentlyViewed","isResourceDeleted","handleNoteTitleChange","stateNote","component","meta","requiresAuth","beforeEnter","from","next","redirect","query","redirectQuery","team_subdomain","fullPath","state","redirect_uri","template","ga","q","popstateDetected","isLoggingIn","localLogin","removeLocalStorageItem","setUser","setTeam","sub_domain","getPendingInvities","pending_invites","teams","defaultTabName","getDefaultTabName","_user$teams","handleRedirectLogin","teamSubDomain","getTeamSubDomain","localCurrentTeamId","teamIndex","isAuthorizeRoute","getRouteAfterLoginData","trusted","redirectData","checkGuestAttempt","_store$getters$getTea","handleRedirect","currentTeamId","defaultTeam","tryFetchingUser","trustedRoutes","previousRoute","handleLogin","currentTabName","getCurrentTabName","loadProjects","pagesIds","pagesObject","pagesTree","archivePages","archivedPagesTree","p","archive_pages","archive_page_order","projectBoards","beforeEachGuard","_to$meta","getIsAnyCardDisplayedInLayout","getPreviousNextButtonClicked","replaceAfterIndex","getElectronBrowseHistoryIndex","getElectronBrowseHistory","anem","getFavouritesOpened","socketDeletedProjects","_to$params$projectIdP","toProjectId","projectIdParam","getMyProjectById","scrollPositions","popstate","afterEachGuard","makeCardRouteHandler","_to","_from","_to$params","_to$query","_to$query2","_to$query3","sessionStorage","previousPathByType","cons","isComingFromVerifyCode","reloadWithPreviousRoute","reloadWithoutPreviousRoute","cardOpenedFromSettings","toPath","selectedTabId","tabIdToAdd","endsWith","isCardMoved","cardMoved","cardOpenedFromNotes","usePush","isCardIdButtonClicked","cardIdButton","getIsSettingsOpen","_store$getters$getFla","boardTitle","routeItemName","dashedBoardTitle","nextRoute","cardsLayout","boardRouteWithoutCardsLayout","currentRoute","routerCommand","historyStateProps","back","replaceState","_from$params","_from$params2","boardIdFromRoute","notificationMessage","userNavigated","cardBeforeEnterHandler","cardRouteHandler","cardTitle","_store$getters$getUse","pass","allowed","disallowed","fail","BoardLayout","Timeline","failPath","roleCheck","checkRole","createRouter","createWebHistory","routes","authentication","integration","installation_id","workspace","currentProjectIdForWs","pathMatch","isArray","components","Settings","__","guestReaderCheck","redirectUri","origin","slack_team_unfurl","all","google_calendar_user_notes","getCalendarIntegration","fetchEvents","getSettingsCurrentProjectId","gitHubIntegrated","getIntegrationInstallations","firstBoardId","getSettingsCurrentBoardId","enabled","_to$params2","_to$params3","slackChannelWebhookIntegrated","_i$slack_channel_webh","slack_channel_webhook","slackCode","slackState","webhookInstallation","integrationId","slack_user","settings","props","boardViewBeforeEnter","unsplitParam","getItemNotFound","lastRoute","getEpicSelectedTabId","getUserId","beforeEach","afterEach","isViewOpen","electronHelpersMixin","displayOverlay","getOpenInDesktopAppLS","getOpenInDesktopApp","pathName","disableOpeningLinksInApp","openInAppHandler","isElectronAppRunning","installed","displayChooseToOpenInDesktopAppNotif","openCurrentRouteInDesktopApp","fetch","ok","json","URL","search","hash","setOpenInDesktopAppLS","notificationLabels","subtitle","iconEnum","Icon","emojiEnum","Emoji","imageEnum","Image","defaultLists","SuggestionType","getDefaultState","currentEditCommentID","commentToDeleteId","commentToDeleteParentId","commentToDeleteResourceType","commentsAreActive","userSettings","teamProjects","cardsCommentsAndActivities","commentsSection","loggedIn","popUpMessage","loginDetails","userName","password","teamID","teamSubDomains","emojiPickerDisplayed","local","host","users","reactions","checklists","checklistitems","files","editorSocket","helpPopupIsOn","commentListOrderBy","projectFormName","projectFormDescription","showAskAiNotesModal","searchResults","childSearchResults","lastSearchQuery","lastAskAiNotesSearchQuery","notificationType","darkMode","cachedComponents","boardsBackground","sidebarExpanded","addMemberPopupIsOn","addMembersTarget","displayMembersDropdownId","displayEditLinkPopup","displayEditorTooltip","editorID","show","commentLinkUrl","commentLinkText","displayInfoSidebar","teamMembers","notificationCount","notificationAlerts","teamMemberNotifications","publicViews","privateViews","selectedViewType","viewPreview","selectedView","viewFilters","sort_by","viewPills","viewResultsList","viewEditMode","boardsFilters","uiNotifications","favouritesOpened","openedFavouriteItem","membersSearchInput","headerMemberDropdownPosition","activeComment","socketConnected","displayVideoLinkPopup","installations","importProgressSteps","routeBeforeSettings","importProgressCurrentStep","settingsCurrentProjectId","settingsCurrentBoardId","integrationSettings","projectSidebarExpanded","projectsExpanded","favouritesExpanded","draggingEntityProjectFromId","draggingSidebarItem","pendingInvites","doubleCheckPopup","confirmationModal","localCardIds","colorsPopup","commentsOrder","membersToAddQuickCard","quickCardBoardId","quickPage","noteInQuickPage","quickNote","cardCommentActivityFilter","commentsInProgressPatch","commentsInProgressDelete","online","loadedFiles","projectPreviewLastScrollPos","favourites","favouritesFolderExpanded","newFolderInput","importHistory","favouriteFolderForRename","favouriteFolderTitle","showPeekSidebar","electronBrowseHistory","electronBrowseHistoryIndex","electronRecentlyViewed","themePreference","inviteeRole","inviteesProjectIds","redirectProjectId","currentInboxResource","inboxFilter","inboxListWidth","inboxListExpanded","showOnboarding","openInDesktopApp","showRedirectedToAppOverlay","membersDropdownInvitees","editorForCardLink","myWorkSelectedTabId","myWorkUserId","deletePopupId","itemNotFound","trashProjects","boardsColumnLayout","pagesColumnLayout","pressedEscCancelDragging","currentViewTotalCount","sidebarHovered","sidebarDragging","teamFeatures","showUpdateEmailPopup","showHideReplies","editorOpen","pageIconPickerDisplayed","hideEmptyGroups","hideEmptyGroupByBoardKey","showWeekends","showWeekendsByBoardKey","reconnectionCallbacks","previousNextButtonClicked","resolveInlineComment","notificationDigestSettings","boardEmbedPopup","isSettingsOpen","showUpgradePlanPopup","myWorkSortBy","recentWorkspaces","openWorkspaceThroughQuickSwitcher","sidebarSprintsExpanded","noteCreating","aiNoteGenerating","aiNoteGeneratingTitle","Set","resourceLoaded","spaceTags","epics","noteTemplateDraft","noteTemplateSections","agentRuns","currentAgentId","agentPromptIterations","upcomingGoogleCalendarEvents","teamSubscription","availablePlans","subGroupByEnabled","workspaceSectionExpanded","localUpdatePageProp","prop","updateBoardPropertyInBoards","updateBoard","newProject","_newProject$board_ord","is_bookmarked","updatePage","_newProject$pages","prop2","_project$pages","blurhash","copiedPages","pageIndex","updateArchivedPages","_storeGetters$getProj","parentPageId","parent","updateBoardPageTitle","basePath","newPageTree","newArchivePageTree","archiveTree","objectSet","object","decomposedPath","base","prototype","activePromises","abortSearchController","viewsPaginationCursor","notificationsPaginationCursor","notesPaginationCursor","actions","getEmail","getPassword","loginUsernamePass","setUserSettings","commit","oldSettings","auth","updateUserSettings","fetchUserSettings","loadUser","meUser","token_outdated","checkForTokenPrivileged","_ref8","token_privileged","sendCodeToNewEmail","_ref9","_ref10","resend","sendUpdateUserEmailCode","updateUserEmail","_ref11","_ref12","setLoggedIn","_ref13","setNotLoggedIn","_ref14","_ref15","addProject","_ref16","isPrivate","getProjectFormName","getProjectFormDescription","getTeamProjects","newTeamProjects","projectMembers","MemberRole","randomColorIndex","randomIconIndex","description","is_member","is_private","team_id","time_updated","total_members","total_members_online","_ref17","newProjctsOrder","getProjectOrder","addToSocketDeletedProjects","_ref18","clearSocketDeletedProjects","_ref19","localRemoveProject","_ref20","newProjectOrder","projectIndex","trashedProjects","getTrashProjects","localAddProjectToTeamProjects","_ref21","alreadyExists","_newProject$members","joinProject","_ref22","addProjectMember","loadTeamProjects","_ref23","existingPromise","promise","getProjects","_ref24","_ref25","project_order","oldBoardData","layout","setTeamProjects","_ref26","_ref27","setProjectOrder","_ref28","updateProject","_ref29","_ref30","projectData","skipCheck","currentProject","currentProjectTimeUpdated","timeUpdated","updateFields","fieldValueSource","forceUpdate","fieldsToUpdate","localUpdateTeamProjectField","_ref31","_ref32","setHelpPopupIsOn","_ref33","setCurrentProjectId","_ref34","setProjectFormDescription","_ref35","setProjectFormName","_ref36","setPreviousRoute","_ref37","setPassword","_ref38","setUserName","_ref39","username","setEmail","_ref40","setTeamSubDomain","_ref41","teamSubdomain","removeTeamSubDomain","_ref42","addLocalComment","_ref43","updateLocalCommentId","_ref44","_ref45","commentId","childCommentId","commentPayload","removeLocalComment","_ref46","_ref47","localCommentId","parentCommentId","localUpdateComment","_ref48","_ref49","addComment","_ref50","_ref51","_getters$getPage","context","isCard","page_id","totalCommentCount","parseInt","total_comments","schema","commentsSchema","createComment","_ref52","addChildComment","_ref53","_ref54","commentContent","createChildComment","_ref55","updateComment","_ref56","_ref57","childComment","updateChild","updateChildComment","updateParent","_ref58","updateCommentStatus","_ref59","_ref60","loadComments","_ref61","getComments","_ref62","loadComment","_ref63","getComment","_ref64","setCurrentEditCommentID","_ref65","setComments","_ref66","setCardCommentsAndActivities","_ref67","_ref68","deleteComment","_ref69","_ref70","commentType","currentRouteName","getCurrentRoute","commentIndex","CardComment","getCardCommentsAndActivities","getPageComments","oldComment","childCommentString","_ref71","setPopUpMessage","_ref72","setCurrentTabName","_ref73","setCommentsAreActive","_ref74","active","setCommentsSection","_ref75","section","fetchTeamMembers","_ref76","_ref77","invited","localeCompare","inactive","setTeamMembers","_ref78","setProjectMembers","_ref79","toggleSearchModal","_ref80","toggleAskAiNotes","_ref81","cancelSearch","abort","fetchSearchResults","_ref82","_ref83","advanceOptions","queryParams","grouped","fields","project_ids","spaces","parent_card","parentCard","AbortController","getSearch","signal","paramsSerializer","indexes","sendSearchQuery","_ref84","_ref85","childCard","resp","setSearchResults","_ref86","results","setLastSearchQuery","_ref87","setLastAskAiNotesSearchQuery","_ref88","setChildSearchResults","_ref89","updateUserProfile","_ref90","updateUser","_ref91","loadProjectDetails","_ref92","_ref93","setNotificationMessage","_ref94","setNotificationType","_ref95","toggleDarkMode","_ref96","setBoardsBackground","_ref97","setSidebarExpanded","_ref98","setDisplayEditLinkPopup","_ref99","setDisplayEditorTooltip","_ref100","setCommentLinkUrl","_ref101","_ref102","logOut","_ref103","_ref104","clear","logout_redirect_url","setAddMemberPopup","_ref105","setDisplayMembersDropdownId","_ref106","setMembersSearchInput","_ref107","setAddMembersTarget","_ref108","target","_ref109","localAddUserInWorkspace","_ref110","locaRemoveUserFromWorkspace","_ref111","archiveWorkspace","_ref112","updateTeam","_ref113","deleteWorkspace","_ref114","deleteTeam","_ref115","addCardIdForLocalId","_ref116","_ref117","uploadFiles","_ref118","_ref119","showActualFileSize","abortUploadController","headers","onUploadProgress","progressEvent","_id$startsWith","uploadProgress","loaded","total","progress","uploadDetails","fileSize","cancelUpload","_id$startsWith2","getFiles","_ref120","uploadInProgressCardId","getCardAttachmentUploadingId","_ref121","file","attachmentsInProgress","getAttachments","att","getFile","_ref122","_ref123","deleteFile","_ref124","_ref125","fileId","resetState","_ref126","addMemberToProject","_ref127","_ref128","membersToAdd","getRedirectProjectId","membersPayload","existingProjectMembers","isMe","memberToAdd","memberExist","memberAlreadyAdded","memberId","existingOrder","newOrder","membersToRemove","memberToRemove","addProjectMembers","_ref129","_ref130","newMembers","removeProjectMembers","_ref131","_ref132","memberIndex","removeMemberFromProject","_ref133","_ref134","deleteProjectMember","_ref135","transferSpaceOwnership","_ref136","_ref137","ownerId","setProjectOwner","setRedirectRouteAfterLogin","_ref138","loadNotificationCount","_ref139","_ref140","notifications","localUpdateNotificationCount","_ref141","loadTeamMemberNotifications","_ref142","_ref143","loadMore","activity","getNotifications","cursor","_ref144","n","getTeamMemberNotifications","updateTeamMemberNotification","_ref145","_ref146","read","interacted","localRemoveNotification","_ref147","notificationId","markAllReadSeen","_ref148","option","mostRecentNotificationId","read_up_to_id","seen","seen_up_to_id","setTeamMemberNotifications","_ref149","inviteUser","_ref150","_ref151","updateTeamDetails","_ref152","_ref153","workspaceId","updatedFields","setRedirectProjectId","_ref154","setInviteeRole","_ref155","setInviteesProjectIds","_ref156","loadViews","_ref157","_ref158","setSelectedViewType","_ref159","viewType","updateSelectedViewName","_ref160","viewName","_ref161","_ref162","hideAllReplies","_ref163","_ref164","_ref165","updateLocalViewId","_ref166","_ref167","_ref168","updateCountInViewResultsList","_ref169","createView","_ref170","_ref171","updateView","_ref172","updatingData","_ref173","_ref174","_ref175","_ref176","fetchMoreViewResults","_ref177","getViewEditMode","isMyWorkRoute","isMemberRoute","request","_ref178","fetchView","_ref179","_ref180","localAddViewToViewList","_ref181","setSelectedView","_ref182","setViewFilters","_ref183","filters","setViewPills","_ref184","setViewEditMode","_ref185","changed","localUpdateViewId","_ref186","_ref187","getAllTrashProjects","_ref188","trash","_ref189","_data$projects","_ref190","_ref191","rawFavourites","toRaw","getFavourites","cloneDeep","isFavourite","viewDelete","localDeleteView","_ref192","_ref193","fetchBoardsFilters","_ref194","_ref195","addUiNotification","_ref196","notification","newNotification","removeUiNotificationById","_ref197","setOpenedFavouriteItem","_ref198","favouriteItem","setHeaderMemberDropdownPosition","_ref199","setActiveComment","_ref200","setImportHistory","_ref201","watchResource","_ref202","_ref203","actionName","watchPage","_ref204","_ref205","localPageUpdatePayload","successHandler","errHandler","revertPayload","addPageWatcher","deletePageWatcher","watchCard","_ref206","_ref207","_getters$getCards$res","localCardUpdatePayload","isEpicCard","resourceCardName","addCardWatcher","deleteCardWatcher","watchBoard","_ref208","_ref209","localBoardUpdatePayload","addBoardWatcher","deleteBoardWatcher","watchList","_ref210","_ref211","localListUpdatePayload","addListWatcher","deleteListWatcher","fetchProjectData","_ref212","_ref213","_ref214","setFavouritesOpened","_ref215","moveBoardHandler","_ref216","_ref217","_getters$getFlatBoard","projectExpanded","getProjectExpanded","localAddPageInProject","_ref218","_ref219","projectForUpdate","localUpdateSprintInProject","_ref220","_ref221","unfinishedCards","cardIds","rolledoverList","card_order","localUpdateProject","_ref222","_ref223","projectString","setCurrentRoute","_ref224","setSocketConnected","_ref225","setDisplayVideoLinkPopup","_ref226","createBoardWebhookNotification","_ref227","_ref228","createWebhookNotification","destination_type","integration_id","_ref229","_data$board","webhook_notifications","deleteBoardWebhookNotification","_ref230","_ref231","webhookDestination","deleteWebhookNotification","createInstallationForIntegration","_ref232","_ref233","createIntegrationInstallation","deleteInstallationForIntegration","_ref234","_ref235","installationId","getTeamIntegrations","_ref236","_ref237","getTeamIntegrationInstallations","_ref238","_ref239","_ref240","toggleBoardWebhookNotificationOption","_ref241","_ref242","updateWebhookNotificationBoard","_ref243","_data$board2","toggleListWebhookNotificationOption","_ref244","_ref245","updateWebhookNotificationList","_ref246","_data$list","setUpImport","_ref247","importer","createImport","_ref248","import","updateImportSettings","_ref249","_ref250","importId","_ref251","startImportProcess","_ref252","getImportHistory","_ref253","_ref254","imports","setImportProgressSteps","_ref255","updateImportProgressSteps","_ref256","_ref257","step","setRouteBeforeSettings","_ref258","setImportProgressCurrentStep","_ref259","setSettingsCurrentProjectId","_ref260","setCachedComponents","_ref261","setSettingsCurrentBoardId","_ref262","getTeamIntegrationsSettings","_ref263","_ref264","updateIntegrationsSettings","_ref265","_ref266","_ref267","setIntegrationSettings","_ref268","_ref269","updateLocalIntegrationSettings","_ref270","_ref271","setUpcomingGoogleCalendarEvents","_ref272","events","_ref273","_ref274","getGcalEvents","_ref275","fetchIntegrationDetails","_ref276","_ref277","client_id","_ref278","setExpandedProject","_ref279","_ref280","setBoardsColumnLayout","_ref281","_ref282","fetchAgents","_ref283","ai","getAiAgents","_ref284","getAgentById","_ref285","agentId","getAiAgent","_ref286","agent","createAgent","_ref287","createAiAgent","_ref288","getAgents","_ref289","_ref290","updateAiAgent","_ref291","agentIndex","attachAgent","_ref292","_ref293","_ref294","detachAgent","_ref295","_ref296","_ref297","attached_resources","deleteAgent","_ref298","deleteAiAgent","setCurrentAgentId","_ref299","fetchAgentPromptIterations","_ref300","getAiAgentPromptIterations","_ref301","_data$agent_prompt","iterations","agent_prompt","sendMessageToPromptBuilderAssistant","_ref302","_ref303","addAiAgentPromptIteration","_ref304","getAgentPromptIterations","prompt_iteration","handleAgentPromptIteration","_ref305","agent_id","isAlreadyPresent","iteration","resetChatHistoryForAgent","_ref306","deleteAiAgentPromptHistory","fetchAgentRuns","_ref307","getAiAgentRuns","_ref308","runs","setPagesColumnLayout","_ref309","_ref310","setProjectsExpanded","_ref311","setFavouritesExpanded","_ref312","setDraggingEntityProjectFromId","_ref313","setDraggingSidebarItem","_ref314","localAddProjectBoardOrder","_ref315","_ref316","localAddPageInTree","_ref317","_ref318","setSelectedProjectId","_ref319","localRemovePageInTree","_ref320","_ref321","itemId","localRemoveBoardFromOrder","_ref322","_ref323","getTeamPendingInvities","_ref324","_ref325","deleteTeamInvite","_ref326","invitee_emails","_ref327","deleteTeamMember","_ref328","_ref329","updateTeamMember","_ref330","_ref331","_ref332","resendTeamInvite","_ref333","_ref334","oldProjectOrder","oldTrashedProjects","trashProject","_ref335","setCurrentRole","_ref336","setDoubleCheckPopup","_ref337","setConfirmationModal","_ref338","setColorsPopup","_ref339","setCommentsOrder","_ref340","loadActivity","_ref341","activityDetail","_ref342","closeEditor","_ref343","_ref344","_ref345","setQuickCardBoardId","_ref346","_ref347","setNoteInQuickPage","_ref348","_ref349","setCardCommentActivityFilter","_ref350","addCommentInProgressPatch","_ref351","removeCommentInProgressPatch","_ref352","addCommentInProgressDelete","_ref353","removeCommentInProgressDelete","_ref354","setOnline","_ref355","addLoadedFile","_ref356","setProjectPreviewLastScrollPos","_ref357","_ref358","scrollPosition","fetchFavourites","_ref359","_ref360","setFavourites","_ref361","addFavourite","_ref362","parent_id","position","SprintState","Active","_ref363","localRemoveFromFavourites","_ref364","_ref365","addInRootFavourite","_ref366","addInParentFavourite","_ref367","_ref368","parentId","deleteUserFavourite","_ref369","resourceIdForRequest","deleteFavourite","localUpdateResourceInFavourites","_ref370","updateFavourite","_ref371","_ref372","resourceForUpdateKey","resourceForUpdate","_ref373","setFavouritesFolderExpand","_ref374","_ref375","toggleCommentReaction","_ref376","reaction","removeProgressTimeout","unicode","native","variation","colons","createCommentReaction","removeCommentReaction","_ref377","deleteCommentReaction","setEmojiPickerDisplayed","_ref378","setNewFolderInput","_ref379","setFavouriteFolderForRename","_ref380","setFavouriteFolderTitle","_ref381","_ref382","setTheme","_ref383","addToElectronBrowseHistory","_ref384","setElectronBrowseHistory","_ref385","setElectronBrowseHistoryIndex","_ref386","setElectronRecentlyViewed","_ref387","_ref388","removeFromElectronRecentlyViewed","_ref389","updateItemInElectronRecentlyViewed","_ref390","setThemePreference","_ref391","setCurrentInboxResource","_ref392","setInboxFilters","_ref393","setInboxListWidth","_ref394","setInboxListExpanded","_ref395","setShowOnboarding","_ref396","setOpenInDesktopApp","_ref397","setShowRedirectedToAppOverlay","_ref398","updateFile","_ref399","_ref400","setMembersDropdownInvitees","_ref401","addMembersDropdownInvitee","_ref402","removeMembersDropdownInvitee","_ref403","setEditorForCardLink","_ref404","setMyWorkSelectedTabId","_ref405","_ref406","setMyWorkUserId","_ref407","fetchArchivedBoardsByWorkspace","_ref408","_ref409","archivedBoards","addCardToCurrentViewResults","_ref410","setPressedEscCancelDrag","_ref411","setSidebarHover","_ref412","setSidebarDragging","_ref413","setShowUpdateEmailPopup","_ref414","AiTask","_ref415","credentials","Accept","getAllTeamFeatures","_ref416","getTeamFeatures","_ref417","features","setTeamFeatures","_ref418","toggleTeamFeature","_ref419","_ref420","featureId","oldValue","getTeamFeature","_ref421","_ref422","updateTeamFeature","_ref423","_ref424","setPageIconPickerDisplayed","_ref425","setHideEmptyGroups","_ref426","_ref427","setShowWeekends","_ref428","addReconnectionCallback","_ref429","_ref430","callbackId","removeReconnectionCallback","_ref431","callReconnectionCallbacks","_ref432","getReconnectionCallbacks","_ref433","updateUserTimezoneId","_ref434","timezone_id","fetchNotificationDigest","_ref435","getNotificationDigest","_ref436","digest","updateNotificationDigest","_ref437","oldNotifDigest","fetchNotificationDigestSettings","_ref438","getNotificationDigestSettings","_ref439","updateNotificationDigestSettings","_ref440","oldNotifDigestSettings","setBoardEmbedPopup","_ref441","askQuestionAi","_ref442","localRemovePageFromPageOrder","_ref443","removeProjectPage","_ref444","updatePageInTeamProject","_ref445","_ref446","addPageToTeamProject","_ref447","_ref448","removePageFromTeamProject","_ref449","_ref450","setIsSettingsOpen","_ref451","setShowUpgradePlanPopup","_ref452","setMyWorkSortBy","_ref453","setMyWorkSortByForAllUsers","_ref454","localRemoveTeamMember","_ref455","setModal","_ref456","setRecentWorkspaces","_ref457","updateRecentWorkspace","_ref458","_ref459","setOpenWorkspaceThroughQuickSwitcher","_ref460","setSidebarSprintsExpanded","_ref461","_ref462","localAddSprintToProject","_ref463","_ref464","setNote","_ref465","fetchNotesForPoll","_ref466","_ref467","_ref468","_ref469","_ref470","_ref471","_ref472","recentlyViewed","getElectronRecentlyViewed","updatedItem","toUpdate","updateNote","_ref473","_ref474","updateAiNoteContent","_ref475","_ref476","updateEnhancedNote","createNewNote","_ref477","_ref478","noteFromCalendarEvent","google_calendar_event","_ref479","_data$note","fromCalendarEvent","_ref480","_ref481","_ref482","_ref483","_ref484","_ref485","localUpdateNoteProp","_ref486","_ref487","setAiNoteGenerating","_ref488","setAiNoteGeneratingTitle","_ref489","fetchNoteTemplates","_ref490","_ref491","setNoteTemplates","_ref492","applyNoteTemplate","_ref493","_ref494","setAiNote","_ref495","_ref496","aiNote","generateAiActions","_ref497","_ref498","createAiActions","note_id","_ref499","updateAiAction","_ref500","_ref501","actionId","_ref502","setAiActions","_ref503","_ref504","_ref505","_ref506","setSelectedNoteTabId","_ref507","_ref508","localCreateTranscript","_ref509","_ref510","localUpdateTranscript","_ref511","_ref512","localSetNoteTranscripts","_ref513","_ref514","createTranscript","_ref515","_ref516","setTranscriptionState","_ref517","setResourceLoaded","_ref518","_ref519","fetchNoteTemplate","_ref520","_ref521","note_template","createNoteTemplate","_ref522","noteTemplate","getNoteTemplateDraft","sections","tempId","_ref523","updateNoteTemplate","_ref524","_ref525","oldTemplate","_ref526","deleteNoteTemplate","_ref527","setNoteTemplateDraft","_ref528","updateNoteTemplateDraftField","_ref529","_ref530","clearNoteTemplateDraft","_ref531","setNoteTemplateSections","_ref532","favouriteNoteTemplate","_ref533","unfavouriteNoteTemplate","_ref534","fetchTeamSubscription","_ref535","getSubscription","subscription","fetchAvailablePlans","_ref536","getAvailablePlans","setSubGroupByEnabled","_ref537","_ref538","subGroupByBoardKey","setListsExpanded","_ref539","_ref540","setWorkspaceSectionExpanded","_ref541","mutations","existingTeam","isOn","setCommentListOrderBy","orderBy","setTrashProjects","parentCommentIndex","parentComment","cIndex","child_comments","childCommentIndex","childC","commentsArray","_comment$children","childIndex","parentResourceId","primaryCommentId","storeComment","newReaction","existingReaction","r","userAlreadyReacted","u","setCurrentMembers","setTeamProjectField","membersObj","_state$user","_state$user2","newState","assign","mIndex","setNotificationCount","setNotificationAlerts","currentNotifications","localUpdateNotifMarkAllAsRead","newNotificationList","setPublicViews","setPrivateViews","viewResults","newCount","pills","unshift","localAddView","setBoardsFilters","onlineStatus","updateProjectById","localUpdateFailRequest","leaveProject","setInstallations","addInstallation","installation","localRemoveBoardOrPageInProject","itemIndex","localUpdateProjectBoardOrder","projectToId","projectFromId","projectIndexTo","projectIndexFrom","boardForRemoveIndex","localUpdateProjectBoardsOrder","boardOrder","setPendingInvites","temp","processFavourite","original_resource_id","favouritesForSet","addInFavourites","parentIndex","f","favourite","j","existing","pop","alreadyAdded","invitee","Assigned","addProjectPage","setUserTimezoneId","myWorkSortByKey","localUpdateTeamMember","workspaceIndex","_state$notes$noteId","aiNoteIndex","_state$notes$noteId2","aiNotes","_note$NoteContentType","_note$NoteContentType2","_note$NoteContentType3","_n$actions","actionIndex","transcriptIndex","updatedTranscript","templatesArray","flatTemplates","newTemplates","setNoteTemplate","replaceNoteTemplateId","newTemplate","is_shared","setAgents","setPromptIterationsForAgent","setAgentRuns","setTeamSubscription","setAvailablePlans","plans","getUserName","getUserEmail","_getters","rootState","rootGetters","getUserTeams","getMySortedProjects","getTeamSortedProjects","globalGetters","activities","getCommentActivityOrderOfDisplayedCard","getCommentById","_state$cardsCommentsA","getCurrentEditCommentId","getPreviousRoute","getPreviousRouteName","getPreviousRoutePath","isPreviousRouteRoot","getPopUpMessage","getHelpPopupIsOn","getCommentListOrderBy","previousProjectIndex","getTrashProjectById","getCurrentProjectTitle","getCurrentProjectDescription","getCommentsAreActive","getCommentsSection","getLastSearchQuery","getLastAskAiNotesSearchQuery","currentTeam","getNotificationMessage","getNotificationType","getTeamSubDomains","getBoardsBackground","getAddMemberPopupIsOn","getDisplayMembersDropdownId","getAddMembersTarget","getDisplayEditLinkPopup","getDisplayEditorTooltip","currentProjecId","currentProjectPath","getRedirectRouteAfterLogin","getNotificationAlerts","getSelectedViewType","getViewPills","getBoardsFilters","getUiNotifications","getOpenedFavouriteItem","fav","_fav$children","child","getMembersSearchInput","getHeaderMemberDropdownPosition","getSocketConnected","getDisplayVideoLinkPopup","getImportProgressSteps","getRouteBeforeSettings","getImportProgressCurrentStep","getIntegrationSettings","getProjectsExpanded","getFavouritesExpanded","getSelectedProject","getSelectedProjectTitle","getSelectedProjectDescription","getPendingInvites","getDoubleCheckPopup","getConfirmationModal","getColorsPopup","getCommentsOrder","getNoteInQuickPage","getCardCommentActivityFilter","getCommentsInProgressPatch","getCommentsInProgressDelete","getOnline","getLoadedFiles","getProjectPreviewLastScrollPos","getFavouriteResource","getFavouritesFolderExpanded","getThemePreference","getInviteeRole","getInviteesProjectIds","inboxFilters","getInboxListWidth","getShowOnboarding","getCardIdForLocalCardId","getLocalCardIdForId","getShowRedirectedToAppOverlay","getMembersDropdownInvitees","getMyWorkSelectedTabId","getMyWorkUserId","getBoardsColumnLayout","getPagesColumnLayout","getCurrentProjectBoardColumnLayout","getCurrentProjectPageColumnLayout","getPressedEscCancelDragging","getEstimateSystemForProject","_getters$getProjectBy","estimate_system","sidebarHover","getSidebarDragging","_state$teamFeatures$f","getTeamFeatureAvailable","getTeamLimit","limitId","teamLimits","limit","getUserFeatureEnabled","_rootState","_state$teams$rootGett","_state$teams$rootGett2","flags","getSubscriptionPlan","_state$teams$rootGett3","subscription_plan_id","getShowUpdateEmailPopup","getPageIconPickerDisplayed","getHideEmptyGroups","getShowWeekends","getUserTimezoneId","getUserLocale","locale","getIsAutomaticTimezone","autodetect_timezone_id","getCachedComponents","getBoardEmbedPopup","getShowUpgradePlanPopup","getMyWorkSortBy","getModal","getIsModalDisplayed","_globalGetters$getPag","getBoardById","Space","getViewById","getWorkspaceOwner","teamOwner","getRecentWorkspaces","getOpenWorkspaceThroughQuickSwitcher","getSidebarSprintsExpanded","getCurrentAgentId","getNoteCreating","getAiNoteGenerating","getAiNoteGeneratingTitle","getResourceLoaded","getNoteTemplateSections","getTeamSubscription","getSubGroupByEnabled","getWorkspaceSectionExpanded","getDefaultBoardState","boardsListsIds","newBoardProjectId","draftCard","listDraftCardCreateView","listsDraftCard","dropTargetId","expandedBoardIds","loadingBoards","boardViewNoDestroy","draftListInputVisibleOnOpen","boardListView","currentTagForEdit","cardSidebarExpanded","showImageUploadPopup","currentCardIdActionEdit","currentListIdActionEdit","localBoardLayoutKey","cardsLayoutOptions","default","Calendar","removedListMeta","removedCardMeta","attachments","cardFailedAttachments","cardAutoFocus","previewPopoverKey","attachmentTargetCardId","cardAttachmentsLoaded","archivedLists","archivedCards","newBoardTitle","currentCardIdMemberDropdown","currentCardMembersDropdown","currentCardIdForPopup","projectPreviewBoards","displayProjectPreviewBoards","previewProject","cardAttachmentUploadingId","showDuplicateCardPopup","showSetParentCardPopup","checklistTitle","draggingEnd","currentCardId","currentCardLayout","linkedCardType","collapsedChecklistIds","hiddenItemsChecklistIds","boardsPills","boardViewMouseSuspended","workspaceTags","cardCommentAttachmentUploadPopup","cardDescriptionAttachmentUploadPopup","lastOpenedBoardId","lastHoveredListId","lastHoveredCardId","lastHoveredDisplayedCardId","selectedCardId","checklistInputActive","checklistItemInputActive","reportInfoData","timelineZoom","timelineSidebarWidth","cardTemplates","cardTemplateDraft","card_title","card_content","card_board_id","card_list_id","card_members","card_tags","card_priority","card_child_cards","cardsSchema","quickCardFilesToUpdate","cardIdForMove","quickCardObject","quickChildCardFilesToUpdate","quickChildCardObject","childCardCreation","cardInEpicCreation","cardInNoteCreation","boardSortByOptions","viewDefault","inEpicBoardDefault","boardSortBy","priorityDropdown","showCardPriorityPopup","boardGroupByOptions","boardGroupBy","boardListGroupByOrder","listCardsGroupByOrder","cardWidth","showSuggestionsPlaceholder","qcShowSuggestionsPlaceholder","currentGroupByListIdCardActionEdit","currentCardUniqueRowId","newBoardObject","sprintSettings","spaceSprints","sprintLists","sprintForEditId","epicSelectedTabId","cardsFuse","cardsSubGroupByOrder","cardsSubGroupByOrderKey","boardSubGroupBy","boardSubGroupByKey","listsExpanded","getProjectBoards","getNewBoardProjectId","publicviews","getListDraftCardCreateView","boardExpanded","getBoardListView","getCurrentTagForEdit","getShowImageUploadPopup","getCurrentListIdActionEdit","_state$flatBoards$boa","getCardsLayoutForBoard","_state$flatBoards$boa2","getLocalBoardLayoutForBoard","getCurrentCardActionEdit","currentCardForPopup","getAreAttachmentsUploading","getCardAutoFocus","getPreviewPopoverKey","getAttachmentTargetCardId","getCardAttachmentsLoaded","getNewBoardTitle","getCurrentCardMembersDropdown","getLinkedCardType","getReportInfoData","getTimeperoidOptions","timeperiodOptions","getDraggingEnd","getEpics","getLayoutOfDisplayedCard","_state$displayedCards","getCommentActivityFilterOfDisplayedCard","_state$displayedCards2","comment_activity_filter","_state$displayedCards3","comment_activity_order","getDisplayedCardListCards","_state$displayedCards4","list_cards","getCollapsedChecklistIds","getHiddenItemsChecklistIds","boardFilters","getTags","getProjectTags","getWorkspaceTags","getCardCommentAttachmentUploadPopup","getCardDescriptionAttachmentUploadPopup","getChecklistInputActive","checklistId","getChecklistsInputActive","getChecklistItemInputActive","checklistItemId","getChecklistItemsInputActive","getTimelineZoom","getTimelineSidebarWidth","getCardWidth","getCardIdForMove","getQuickCardFilesToUpdate","getMembersToAddQuickCard","getQuickCardProjectId","getQuickCard","getQuickChildCardFilesToUpdate","getMembersToAddQuickChildCard","getQuickChildCardProjectId","getQuickChildCard","getCardInEpicCreation","getCardInNoteCreation","getCardSliderActive","cardSliderActive","getBoardSortBy","sortBy","isInEpicBoard","getShowPriorityDropdown","getShowCardPriorityPopup","getBoardGroupBy","getCardsByCurrentBoardId","getCardsByEpicId","_state$cards$key$epic","getCardsByCurrentSprintId","boardsCardsIds","listIds","getBoardsCardsIdsByBoardId","getBoardListGroupByOrder","getListCardsGroupByOrder","getCurrentGroupByListIdCardActionEdit","getCurrentCardUniqueRowId","getCardTemplates","getCardTemplateDraft","getCardTemplateChildCards","getQCChildCards","getSuggestions","_state$cards$cardId","getQCSuggestions","_state$quickCardObjec","getTagSuggestions","_state$cards$cardId2","tag","getQCTagSuggestions","_state$quickCardObjec2","getDuplicateSuggestions","_state$cards$cardId3","relation","getQCDuplicateSuggestions","_state$quickCardObjec3","getShowSuggestionsPlaceholder","getQCShowSuggestionsPlaceholder","getNewBoardObject","getSprintSettings","getSpaceSprints","getSprints","getSprintLists","getSprintForEditId","Details","getBoardSubGroupBy","subGroupBy","getSubGroupByListOrder","subGroup","_state$cardsSubGroupB","getSubGroupByListCards","_state$cardsSubGroupB2","getSubGroupByBoardId","_state$cardsSubGroupB3","getListExpanded","_state$listsExpanded$","decodeToken","token","decodedToken","decodeJwt","isExpired","exp","expirationDate","isTokenExpired","getQuickCardObjectName","isModal","getQuickCardFilesToUpdateName","getDefaultChildCardDraftObject","convertChildCardDraftToChildCard","childCardDraft","boardIdValue","listIdValue","ids","setCardsFuse","Fuse","threshold","ignoreLocation","setCurrentBoardId","setBoardListsFlat","l","addBoardListId","replaceBoardListId","moveBoardListId","removeBoardListId","removeBoardList","removeMultipleBoardLists","addBoardInBoards","removeBoardFromProjectBoards","boardArray","boardIndex","setBoardsListsIds","list_order","setSprintsListsIds","setReportInfoData","report","setNewBoardProjectId","setListDraftCardCreateView","setRemovedBoardListPosition","setRemovedCardPosition","setTimeperoidOptions","setDraggedEntity","setDropTargetId","toggleBoardQuickView","toggleProjectBoards","newExpandedBoardIds","toggleBoardsInRow","otherBoardIndex","otherBoardId","setBoardListProp","setBoardViewNoDestroy","setDraftListInputVisibleOnOpen","localAddMemberToBoard","localRemoveMemberFromBoard","localAddMemberToCard","alradyMember","localRemoveMemberFromCardBoardView","setBoardListView","setCurrentTagForEdit","tagForEdit","localAddTagToCard","alradyTag","updateLocalCardTag","tagId","newCardTags","listCardTagIndex","localAddTagToBoard","localDeleteTagFromCard","tagIndex","localDeleteTagFromCards","setLinkedCardType","setShowImageUploadPopup","setCurrentCardIdForActionEdit","setCurrentListIdForActionEdit","setCardsLayout","replaceLocalChildCardIdInParentCard","parentCardId","childCardOrder","child_card_order","childCardOrderIndex","child_cards","childCardIndex","updatedChildCard","localCard","localUpdateCardFields","overwrite","userIdUpdated","user_id_updated","localUpdateCardField","_state$cards","localUpdateCardFieldInMultipleCards","setAttachments","localAddAttachment","attachment","localRemoveAttachment","newAttachments","addAttachmentUploadDetails","attachmentIndex","localRemoveFileFromCard","cId","newCardAttachments","fileIndex","updateCardAttachmentId","newAttachemnts","setUploadFailedFlag","attachmentsKey","newFile","failed","addCardFailedAttachment","resetBoardState","setCardAutoFocus","setPreviewPopoverKey","setAttachmentTargetCardId","setCardAttachmentsLoaded","setArchivedBoards","setArchivedLists","setProjectPreviewBoards","setArchivedCards","addArchivedListToIndex","setNewBoardTitle","clearProjectPreviewBoards","setProjectPreview","setCurrentCardIdMemberDropdown","setCurrentCardMembersDropdown","setCurrentCardIdForPopup","setCardAttachmentUploadingId","setShowDuplicateCardPopup","setShowSetParentCardPopup","setDraggingEnd","setProjectBoards","removeProjectBoard","addProjectBoard","setFlatBoards","fullyLoaded","setCards","setListCards","setSingleListInListCards","addCardToListCards","newListCards","removeCardFromListCards","addCardToCards","_oldCard$collaboratio","oldCard","expired","collaboration","localCardId","removeCardFromCards","cardWsEventsUpdate","_card$cardProp$cardIn","_state$cards$cardProp","_card$cardProp$cardIn2","_state$cards$cardProp2","cardProp","cardPropId","secondResource","thirdResource","fourthResource","cardIndex","cardTagIndex","checklistIndex","newTags","checklist_item_order","cardWsEventsCreate","_state$projectTags$pr","_state$workspaceTags$","_card$checklists$chec","_state$projectTags$pr2","cardWsEventsDelete","_card$checklists$chec2","_card$checklists$chec3","checklist","start_date","due_date","setDisplayedCards","epicToBeDisplayed","dc","cardsToBeDisplayed","addDisplayedCards","removeDisplayedCards","removeDisplayedCardsByField","shouldMatch","setFieldOfDisplayedCard","idx","setFieldsOfDisplayedCard","setCurrentCardLayout","removeCardFromArchived","newArchivedCards","setChecklistCollapsedIds","checklistIds","setHiddenItemChecklistIds","setBoardFilters","setBoardPills","setTags","tagsArray","deleteLocalTag","addLocalTag","updateLocalTag","updatedTag","_card$tags","_card$tags$findIndex","removeLocalPropFromTag","newTag","updateLocalTagId","localTagId","setCardCommentAttachmentUploadPopup","setCardDescriptionAttachmentUploadPopup","setLastOpenedBoardId","setBoardList","removeBoardFromBoards","removeBoardsListsIds","setSelectedCardId","setBoardViewMouseSuspended","setChecklistInputActive","isActive","tempActiveChecklists","setChecklistItemInputActive","tempActiveChecklistItems","setCardOwnerId","owner_id","setCardTemplates","setCardTemplate","replaceCardTemplateId","deleteCardTemplate","setCardTemplateDraft","setMembersToCardTemplate","addedMember","updateCardTemplateDraftField","clearCardTemplateDraft","addTagToTemplate","_state$cardTemplateDr3","_state$cardTemplateDr4","_state$cardTemplateDr","_state$cardTemplateDr2","manageCardTemplateSelectedSpaces","spaceId","toggleMemberTemplateChildCard","addChildCardToTemplate","updateChildCardInTemplate","removeChildCardFromTemplate","updateTemplateChildCardProperty","setTimelineZoom","zoom","setTimelineSidebarWidth","setCardWidth","closeCardUploadPopup","addQuickCardFileToUpdate","removeQuickCardFilesToUpdate","setQuickCardTitle","setMembersToAddQuickCard","setQuickCardField","clearQuickCardObject","updateQuickCardChildCardProperty","toggleMemberQuickCardChildCard","setQuickCardProjectId","addTagToQuickCard","removeTagFromQuickCard","addChildCardToQuickCard","updateChildCardInQuickCard","removeChildCardFromQuickCard","setParentCardForQuickCard","setCardIdForMove","setBoardSortBy","setBoardGroupBy","setChildCardCreation","setCardInEpicCreation","setCardInNoteCreation","setQuickCardObject","setQCSuggestions","suggestions","setShowSuggestionsPlaceholder","showPlaceholder","setQCShowSuggestionsPlaceholder","addGroupByList","isSpecialCaseListId","boardIds","bId","_boardListGroupByOrde","lId","existingList","removeCardFromGroupByList","_boardListGroupByOrde2","_boardListGroupByOrde3","updateGroupByListOrder","_boardListGroupByOrde4","setListCardsGroupByOrder","groupByOrder","reorderCardsGroupByList","_state$boardListGroup","updateCardsGroupByOrder","_state$boardListGroup2","setCurrentGroupByListIdCardActionEdit","setCurrentCardUniqueRowId","uniqueRowId","setNewBoardObjectField","resetNewBoardObject","setProjectSprintSettings","setSpaceSprints","oldSprints","newSprints","addSprintToSpaceSprints","setSprintListsFlat","newSprintLists","setSprintForEdit","localUpdateSprint","setEpicSelectedTabId","setBoardSubGroupBy","setCardsSubGroupByOrder","subGroupByBoardObject","existingValues","listsExpandedKey","newValues","addCardToGroup","parentListId","isSubGroupCase","getBoardIds","shouldSkipBoard","resolveListId","specialCases","handleSubGroup","ensurePathExists","obj","finalValue","handleRegularGroup","_state$boardListGroup3","group","removeCardFromSubGroupByList","_subGroupByObject$par","subGroupByObject","getItemAndIndex","itemsArray","compareKey","_relation$card","_tag$name","getNormalizedDisplayedCardPayload","rs","getCardType","_rs$boards$cards$card","getCardLayout","_rs$boards$cards$card2","normalizePayload","arrDisplayedCards","loadBoards","getBoards","boardLists","handleBoardCreated","req","_error$response","postFetchBoard","_board$lists2","_board$lists","_c$child_cards","stateCard","partially_loaded","archiveBoard","timeNow","time_archived","loadArchived","newCards","archiveList","currentListOrder","newListOrder","passedList","isEpicsList","unarchiveList","newArchivedBoardLists","updateList","updateEpicsList","createBoardList","createEpicsList","createList","createCard","createEpic","updateCard","_stateCard$epic","oldListId","movingCard","updateRequest","updateEpic","oldList","positionUpdate","localUpdateChildParent","_cardData$child_cards","_cardData$child_cards2","cardData","childCardData","parentCardData","updateCardWithPatchRequest","updateTime","updateUserId","createPublishedBoard","msg","createBoard","ListBehavior","gray700","stBlue","success400","warning500","createBoardCopy","copyBoard","createChecklist","updateChecklist","deleteChecklist","oldCardChecklists","oldChecklistOrder","checklist_order","oldChecklistItemOrder","cardChecklistIndex","cardChecklists","checklistOrderIndex","co","checklistOrder","createPublishedChecklistItem","itemsBase","checklist_id","deleteChecklistItem","checklistItem","itemsUrl","localDeleteChecklistItem","clIndex","cl","cli","archiveCard","cardArchived","interpolationData","successMsg","errorMsg","changeParentCard","_child$parent_card","_child$parent_card2","newParentCard","rawNewParent","newParent","rawChild","oldParent","childCardId","epicBrief","removeChildCard","addChildCard","removeCardFromParent","_getCards$cardId","oldParentCard","oldChildCardOrder","localRemoveCardFromParent","_childCard$parent_car","_card$child_cards","_card$linked_cards","cardsByEpicId","cardListId","cardBoardId","linked_cards","linkedCard","linkedCards","removeLinkedCardIndex","oldListCards","deleteEpic","checklistItemToggle","checked","updateChecklistItem","moveBoardToProject","projectBoardsPosition","newProjectBoardsLength","boardCardIds","moveCardToParent","addParentToCard","_getters$getCards$chi","initiatedByAddParent","localAddCardToParent","stateParentCard","newChildCards","newChildCardsOrder","addChildCardToParent","_childCard$parent_car2","_childCard$epic","child_card","updateChildCardAfterResponse","boardLength","lastBoardId","isOdd","addMemberToBoard","membersLength","removeMemberFromBoard","_card$members","alreadyMember","currentMembers","assignee","addMemberToCard","localRemoveMemberFromCard","removeMemberFromCard","localAddChecklistItemToCard","localUpdateChecklistItemIdInCard","localItem","checklistItems","newItem","addTagToCard","addCardTags","removeCardTag","_card$epic6","_card$epic7","_card$epic8","addChecklistToListCards","checklistItemOrder","newChecklist","updateCardOrderInPreviewBoards","setCurrentCardChecklistsOrder","checklistsOrder","removeOrReplaceLocalCurrentCardChecklistItemOrder","updateCardTotalCommentsCount","currentCommentsCount","decrease","updateChildCards","cardsUrl","moveCardHandler","setShowDuplicateBoardPopup","duplicateCard","copyCard","createCardCopy","cardRelationships","addLinkedCard","removeCardRelationships","linkedCardId","removeLinkedCard","handleCardCreated","listIdToSet","localUpdateCard","_change$to","refreshCardCollaboration","_data$card","archiveHandler","_getters$getListCards","fetchReport","reports","reportsDetail","setCardDraggingEnd","fetchCard","getEpicCard","_error$response2","cheklistIds","mergeTags","createTag","updateTag","deleteTag","_card$epic9","_card$epic10","bulkDeleteTagFromCards","addBoardToBookmarked","fetchCardTemplates","card_templates","fetchCardTemplate","getCardTemplate","card_template","cardTemplate","createCardTemplate","updateCardTemplate","user_updated","addTagsToCard","setCardSliderActive","mainGrpupBy","mutationName","setSuggestions","removeSuggestion","oldSuggestions","newSuggestions","fnRemoveSuggestion","ignoreSuggestion","updateTagHints","tag_slug","related_card_id","removeQCSuggestion","oldHints","newHints","addCardToGroupByList","removeCardFromGroupByBoard","_card$epic15","_card$epic16","_card$epic17","_card$epic12","_card$epic14","_card$epic11","_card$epic13","addCardToGroupByBoard","_card$epic22","_card$epic23","_card$epic24","_card$epic19","_card$epic21","_card$epic18","_card$epic20","updateBoardProperty","setSprintSettings","localSetSprintSettings","sprint_settings","start_day","cooldown","createNewSprint","end_date","getSprintsForProject","untilDate","until","_sprint$unfinished_ca","unfinished_cards","sprintListIds","sprintListKey","getSprint","generatedSprintId","postFetchSprint","_sprint$unfinished_ca2","sprintForSet","_l$cards","sprintListId","_c$child_cards2","isRolledOverList","shouldAddRolledOverCard","shouldAddCardToState","restStateCard","updateSprint","localUpdateEpicInChildCards","localRemoveCardFromEpic","_stateCard$epic2","stateEpic","localAddCardToEpic","rawCard","removeCardFromEpic","addCardToEpic","_card$epic25","_flatBoard$lists","oldBoardOrder","newBoardOrder","allCards","createBranchAutomation","automation","createNewVcsBranchAutomation","createNewSprintVcsBranchAutomation","updateBranchAutomation","oldName","newName","updateBranchNameVcsBranchAutomation","branch","updateBranchNameSprintVcsBranchAutomation","deleteBranchAutomation","deleteBoardVcsBranchAutomation","deleteSprintVcsBranchAutomation","updateBoardEmail","_data$email","constructInEpicBoard","getAllCardsForEpic","inEpicBoardId","inEpicBoardListId","convertCardToEpic","_epicsBoard$list_orde","_oldCard$tags","_oldCard$linked_cards","_getters$getCardById","_oldCard$epic","_oldCard$parent_card","_oldCard$epic2","_oldCard$child_cards","epicsBoard","firstListId","firstList","newEpic","board_title","estimate","list_title","sprint_title","oldLinkedCards","linkedCardState","oldEpicLinkedCards","linked_card_type","_oldCard$linked_cards2","_oldCard$parent_card2","_oldCard$epic3","_oldCard$child_cards2","addCardToSubGroupByList","getDefaultPageState","pageVersions","currentPageID","currentPageMode","archivedPages","projectPages","newPageCreating","pagesEntity","loadingPages","pageCreating","imageUploadPopup","coverImageUploadPopup","pageIconUploadPopup","insertLinkPopup","inlineCommentPopup","lastSidebarItemAdded","parentPageIdForAdd","projectPagesTree","sidebarDraftPage","getParentPageForAddKey","archivePagesTree","parentPageExpanded","pageUploadPopup","pageRenamingId","pagesSchema","quickPageFilesToUpdate","pageTemplates","highlightedPageLevelComments","pageLevelCommentInputActive","pageTemplateDraft","page_title","page_content","pageEditorDisplay","pageIdForMove","getCurrentPageMode","getPageTitle","getCurentPage","getPageContent","getPagesEntity","showCoverImageUploadPopup","showPageIconUploadPopup","showInsertLinkPopup","getCurrentProjectPages","getNewPageCreating","commentPopupVisible","getProjectPages","getParentPageIdForAdd","getProjectPagesArchiveTree","getParentPageExpanded","getQuickPageFilesToUpdate","getPageLevelCommentInputActive","getPageTemplates","getPageTemplateDraft","getPageEditorDisplay","getPageIdForMove","setArchivedPages","addPageToArchivedPages","removePageFromArchivedPages","setPage","_existingPage$collabo","existingPage","updatePageMeta","bookmarked","cover_image","setCurrentPageID","setCurrentPageMode","mode","setPagesEntity","entity","removePageFromListByIndex","setImageUploadPopup","setCoverImageUploadPopup","setPageIconUploadPopup","setInsertLinkPopup","resetPageState","setPageVersions","setProjectPages","setPages","updatedPages","newPages","addPageToProjectPages","setNewPageCreating","removePageFormProjectPages","localRemovePageProp","addPageToPagesList","deleteFromPages","addPageToFlatPages","setLastSidebarItemAdded","setParentPageIdForAdd","setProjectPagesTree","_state$sidebarDraftPa","_state$sidebarDraftPa2","draftPageProjectId","draftPageParentId","draftPage","_state$projectPagesTr","projecPagesTree","_state$projectPagesTr2","currentChildren","setProjectPageOrderTree","setProjectArchivedTree","setProjectArchivePages","setProjectArchivePagesTree","localUpdatePageOrderPosition","localAddPageInPageTree","_state$projectPagesTr3","_state$projectPagesTr4","rootChildren","localAddPageInArchivePageTree","localRemovePagesFromTree","pagesForDelete","localRemovePagesFromArchiveTree","_state$projectPagesTr5","pageParentId","parentsPageChildren","pageForRemoveIndex","removePageFromArchivedParentOrder","localRemovePageFromArchivedTree","localAddPageToPageOrder","localMovePageInPageTree","_state$projectPagesTr6","projectIdTo","projectIdFrom","parentIdTo","parentIdFrom","pageForChange","localAddProjectInPageTree","newPageObje","setSidebarPageDraft","draftPageItem","setSetParentPageExpand","setPageUploadPopup","removePageUploadPopup","setPageRenamingId","addQuickPageFileToUpdate","removeQuickPageFilesToUpdate","setPageTemplates","setPageTemplate","replacePageTemplateId","deletePageTemplate","setPageTemplateDraft","updatePageTemplateDraftField","clearPageTemplateDraft","setHighlightedPageLevelComments","commentsIds","setPageLevelCommentInputActive","managePageTemplateSelectedSpaces","setPageEditorDisplay","removePage","setPageIdForMove","loadArchivedPages","archivePage","parent_page_id","unarchivePage","archivedTime","loadPages","fetchPage","handlePageCreated","createNewPage","_getters$sidebarDraft","pageToCreate","createPage","debounceUpdatePage","updatePageProps","loadPage","fetchPageData","loadPageVersions","getPageVersions","console","log","localMovePageToProject","projectIdAdd","projectIdRemove","movePageToProject","newProjectPagesLength","getPageTitleByTeamIdAndPageId","togglePagePublicFlag","isPublic","duplicatePage","copyPage","_getters$sidebarDraft2","_getters$sidebarDraft3","localAddPageInProjectPageTree","movePageHandler","desinationPageTree","orginalPageTree","destinationPagesIds","removePageFromBookmarked","refreshPageCollaboration","getPageCollaboration","removePageIconOrCover","fetchPageTemplates","page_templates","fetchPageTemplate","getPageTemplate","page_template","pageTemplate","createPageTemplate","updatePageTemplate","deleteAPage","subpages","subpage","getDefaultOnboardingState","userID","teamName","subdomain","invitationCode","errorMessage","projectName","currentTeamName","workspaceErrorMessage","failedInvites","onboardingWorkspace","signupAnswers","getStartedExpanded","getStartedShowAll","onboardingUserID","onboardingTeamName","onboardingSubDomain","onboardingErrorMessage","onboardingWorkspaceErrorMessage","getSignupAnswers","setOnboardingUserID","setOnboardingWorkspace","team_name","setOnboardingErrorMessage","setWorkspaceErrorMessage","setInvitationCode","setCurrentTeamId","setCurrentTeamName","setFailedInvites","resetOnboardingState","storeSignupAnswers","answers","setGetStartedExpanded","setGetStartedShowAll","setOnboardingActions","sa","_state$onboardingActi","updateOnboardingActionsStatus","sendLoginCodeEmail","loginWithEmailCode","loginWithCode","createOnboardingWorkspace","company_name","createTeam","updateOnboardingWorkspaceDetails","joinTeam","addUserTeam","loginWithInviteLink","inviteId","loginWithInvite","invite_id","link_code","resendInviteLink","passAuthCode","importOnboardingResources","sendSignupAnswers","submitSignupAnswers","signup_answers","actionsToUpdate","_getters$getOnboardin","updateOnboardingActions","setAsNotCompletedOnboardingAction","editors","currentEditorId","currentEditorResourceType","persistedPageKeys","suggesterShown","uploading","currentEditor","getPersistedPagesKeys","checkIfDbExists","dbName","_state$persistedPageK","setEditor","deleteEditor","setCurrentEditorId","setCurrentEditorResourceType","updateEditorId","_state$editors$oldKey","_state$editors$oldKey2","_state$editors$oldKey3","_state$editors$oldKey4","updateEditorResourceId","setPersistedPagesKeys","addPageKeyToPersistedKeys","setSuggesterShown","insertOrUpdateEditorUpload","upload","existingUpload","_state$uploading","removeEditorUpload","_state$uploading2","_state$uploading3","previewAttachments","previewAttachmentId","previewAttachmentResourceId","previewAttachmentIndex","attachmentPreviewFromInput","getPreviewAttachmentIndex","getPreviewAttachments","getAttachmentPreviewFromInput","getPreviewAttachmentId","getPreviewAttachmentResourceId","setPreviewAttachments","attachmentPreviewable","setPreviewAttachmentId","clearCardPreviewData","setNextAttachment","setPreviousAttachment","deleteAttachmentFromPreviewAttachments","setAttachmentPreviewFromInput","attachements","onboarding","attachmentPreview","createStore","strict","modules","isCardOpen","getRootElement","documentElement","getRootStyles","getComputedStyle","getRootStyle","varName","getPropertyValue","style","setProperty","removeRootStyle","removeProperty","parseFloat","getSidebarWidthLocal","sidebarWidth","getMaxSidebarWidth","sidebarMaxWidth","getMinSidebarWidth","sidebarMinWidth","getSidebarWidth","getMaxChildPageItemInPageWidth","childPageItemInPageMaxWidth","getPreviewChildPagesPaddingRight","previewChildPagesPaddingRight","getBoardHeaderRightSideWidth","boardHeaderRightSideWidth","getMobileBoardHeaderRightSideWidth","mobileBoardHeaderRightSideWidth","getSpaceHeaderRightSideWidth","spaceHeaderRightSideWidth","getMobileSpaceHeaderRightSideWidth","mobileSpaceHeaderRightSideWidth","getPageBreadcrumbMaxWidth","pageBreadcrumbMaxWidth","getMobilePageBreadcrumbMaxWidth","mobilePageBreadcrumbMaxWidth","getJoinProjectButtonWidth","joinProjectButtonWidth","getMobileSidebarWidth","mobileSidebarWidth","getTimelineSidebarWidthLocal","getDefaultTimelineSidebarWidth","getMinTimelineSidebarWidth","timelineSidebarMinWidth","getMaxTimelineSidebarWidth","timelineSidebarMaxWidth","getInboxListWidthLocal","getMinInboxListWidth","inboxListMinWidth","getMaxInboxListWidth","inboxListMaxWidth","getDefaultInboxListWidth","getHeaderHeight","headerHeight","getCardWidthLocal","cardWidthWidth","getMinCardWidthWidth","dockedCardMinWidth","getMaxCardWidthWidth","dockedCardMaxWidth","getDefaultCardWidthWidth","dockedCardWidth","getSmallCardTagMaxWidth","smallCardTagMaxWidth","getAiSourceItemMaxWidth","aiSourceItemMaxWidth","getSidebarHelpSectionHeight","sidebarHelpSectionHeight","capitalizeFirstLetter","getDraftCardTitleKey","getDraftCommentKey","sectionId","getDraftEditCommentKey","getChildCardCreationDraftKey","getTemplateChildCardCreationDraftKey","templateID","isQuickCard","getTemplateChildCardEditDraftKey","getQuickCardCreationDraftKey","getCreateCardTemplateDraftKey","getCreatePageTemplateDraftKey","getCreateNoteTemplateDraftKey","setDraft","getDraft","removeDraft","register","ready","dispatchEvent","CustomEvent","registered","reg","cached","updatefound","updated","offline","addLoader","loadingLabel","createElement","innerHTML","appendChild","mountContent","el","vnode","_window$StVueApp","componentStyle","componentProps","componentEvents","componentClass","tooltipContent","TooltipText","listeners","onEsc","_el$_tippyInstance","_el$_tippyInstance$hi","_tippyInstance","hide","onClose-tippy","_el$_tippyInstance2","_el$_tippyInstance2$h","attr","vNode","createVNode","class","appContext","StVueApp","_context","render","_tippyContentVm","createTippyInstance","binding","onShow","onHide","onTrigger","onUntrigger","tippyOptions","classOnShow","renderDelay","shouldStopPropagation","mobilePlacement","placement","_tippyOptions$placeme","horizPlacement","createTippyCallback","tippyInstance","tippy","interactive","maxWidth","stopPropagation","_binding$instance$_","_binding$instance$_$$","classList","activeTippyInstance","popper","_forceUpdate","ctx","$forceUpdate","_binding$instance$act","_el$classList","_el$classList$remove","_renderTippyTimeout","tooltipDirective","beforeMount","disabled","beforeUpdate","_el$_tippyContentVm3","_el$_tippyContentVm4","_el$_tippyContentVm$$3","_el$_tippyContentVm5","oldDisabled","_el$_tippyContentVm$$","_el$_tippyContentVm$$2","_el$_tippyContentVm","_el$_tippyContentVm$u","unmount","newContentVm","setContent","_el$_tippyInstance3","_el$_tippyInstance3$d","_el$_tippyContentVm2","_el$_tippyContentVm2$","destroy","$destroy","unmounted","_el$_tippyContentVm$$4","_el$_tippyContentVm6","isDestroyed","directive","focus","addClass","className","vdraghover","classAdded","removeClass","_el$vdraghover$dragWa","_el$vdraghover","dragWatch","onMouseOver","onMouseEnter","$watch","newValue","onMouseLeave","extractValues","childDrag","_el$vdraghover2","mouseOverHandler","mouseEnterHandler","mouseLeaveHandler","oldChildDrag","removeEventListener","addDragClass","contains","removeDragClass","slider","divPanel","getElementsByClassName","isDown","startX","scrollLeft","filteredClasses","element","closestElement","closest","pageX","offsetLeft","alreadyDown","preventDefault","walk","CONSTANTS","HIDE_DELAY","DEFAULT_SHOW_DELAY","OFFSET","container","showTimeout","getMemberId","updateVNodeProps","animationEnabled","_vnode","animation","createVNodeWithProps","MemberHoverPreview","onViewWorkClick","_globalState$memberHo","_globalState$memberHo2","initializeTippy","appendTo","arrow","offset","triggerTarget","getReferenceClientRect","isVisible","createShowTooltip","_binding$arg","_vnode2","_globalState$memberHo3","_globalState$memberHo4","groupAvatarId","arg","delay","$","setProps","_binding$arg2","isConnected","_globalState$memberHo5","_globalState$memberHo6","_binding$arg3","showTooltip","_tippyListeners","mouseenter","listener","_binding$arg4","attachListeners","requestAnimationFrame","_el$_tippyListeners","install","options","globalProperties","$posthog","posthog","init","api_host","person_profiles","session_recording","maskAllInputs","maskTextSelector","changeLanguage","i18nextInstance","language","lang","languages","importLanguage","translations","addResources","TEST","breakpoints","isMob","updateBreakpoints","matches","addMediaMatchers","matchers","matchMedia","addListener","mixin","bps","isAndroid","match","isMobileScreen","isTabletScreen","isDesktopScreen","BreakpointsPlugin","getBoardPropThreshold","hasSufficientProperties","getBoardItemType","hasItemsInLists","itemType","isBoardFullyLoaded","isPageFullyLoaded","ops","rail","opacity","size","gutterOfSide","bar","specifyBorderRadius","metaManager","createHead","createApp","App","autofocus","vtippy","draghover","dragToScroll","ObserveVisibility","bind","unbind","vClickOutside","bindling","VueTippy","defaultProps","popperOptions","modifiers","altAxis","VueVirtualScroller","posthogPlugin","vuedraggable","I18NextVue","PortalVue","VueHeadMixin","isGuestRoleMixin","iconTypeMixin","viewRouteCheckMixin","vuescroll","vuescrollOptions","$cons","$capitalizeFirstLetter","$messageTypes","$isPageFullyLoaded","$blurhashWorker","Worker","interpolations","escapeValue","lng","fallbackLng","supportedLngs","resources","en","translation","suffix","mount","sentryInited","captureError","line","column","onunhandledrejection","checkPlatform","setup","selectedIndex","vh","innerHeight","fieldFocused","inputBottom","suspendMouseEnter","scrollTop","enableSpaceKeySelect","scrolledOnMount","scrollOnMountTimeout","updateTimeout","searchResultsLength","_this$searchResults","Number","isNaN","dropdownMaxHeight","membersDropdownShown","searchNotEmpty","dropdownCalcStyle","maxHeight","getInputYOffset","checkKey","_event$target","dataset","hiddenInput","shouldPreventDefault","filteredOutKeyCodes","_this$items","shortcutKeyCode","selectSearchResult","changeSelection","hidePopup","checkDownKey","_this$items2","shiftKey","searchValue","handleEsc","metaKey","shortcutKey","displaySearchModal","arrowKey","_this$searchResults2","disableMouseEnter","_this$searchResults3","filterIsTextInput","category","hideFilterPopup","selectOnlySearchResult","toggleButton","radioButton","toggleSection","toggleItem","resultRef","$nextTick","$refs","searchInput","clientRect","fieldFocus","fieldBlur","handleResize","setSelectedIndex","mouseMoveHandle","scrollToTop","compositionUpdate","getDropdownElement","resultsRef","_resultsRef$every","resultsIsVueComponent","every","_isVue","_this$$refs$this$resu","_c$$el","_c$dataset","scrollToSelectedItem","searchResultsScroll","scrollTo","scrollIntoView","block","_this$quickCardShortc","_this$quickPageShortc","_this$quickNoteShortc","calendar_user_notes"],"sourceRoot":""}