{"version":3,"sources":["App/cache.ts","shared/icons/Icon.tsx","shared/icons/Cross.tsx","shared/icons/Cog.tsx","shared/icons/Cogs.tsx","shared/icons/CheckCircleOutline.tsx","shared/icons/Briefcase.tsx","shared/icons/ListUnordered.tsx","shared/icons/ChevronRight.tsx","shared/icons/CaretDown.tsx","shared/icons/Eye.tsx","shared/icons/CaretRight.tsx","shared/icons/List.tsx","shared/icons/At.tsx","shared/icons/Smile.tsx","shared/icons/Paperclip.tsx","shared/icons/Calendar.tsx","shared/icons/Clone.tsx","shared/icons/Sort.tsx","shared/icons/Filter.tsx","shared/icons/DoubleChevronUp.tsx","shared/icons/Share.tsx","shared/icons/Crown.tsx","shared/icons/BarChart.tsx","shared/icons/UserPlus.tsx","shared/icons/Trash.tsx","shared/icons/CheckCircle.tsx","shared/icons/Clock.tsx","shared/icons/AccountPlus.tsx","shared/icons/CheckSquare.tsx","shared/icons/ArrowLeft.tsx","shared/icons/CheckSquareOutline.tsx","shared/icons/Square.tsx","shared/icons/Bolt.tsx","shared/icons/Plus.tsx","shared/icons/Bell.tsx","shared/icons/AngleLeft.tsx","shared/icons/AngleDown.tsx","shared/icons/Pencil.tsx","shared/icons/Checkmark.tsx","shared/icons/User.tsx","shared/icons/Lock.tsx","shared/icons/Taskcafe.tsx","shared/icons/Home.tsx","shared/icons/Exit.tsx","shared/icons/Ellipsis.tsx","shared/icons/ToggleOn.tsx","shared/icons/Tags.tsx","shared/icons/Star.tsx","shared/hooks/onOutsideClick.ts","shared/utils/noop.ts","App/ThemeStyles.ts","shared/utils/styles.ts","shared/components/ControlledInput/index.tsx","shared/components/PopupMenu/Styles.ts","shared/components/PopupMenu/index.tsx","App/NormalizeStyles.ts","App/BaseStyles.ts","Dashboard/index.tsx","shared/components/TaskAssignee/index.tsx","shared/components/Select/index.tsx","shared/generated/graphql.tsx","shared/components/Input/index.tsx","shared/components/Button/index.tsx","shared/components/Admin/index.tsx","shared/components/ProfileIcon/index.tsx","shared/components/TopNavbar/Styles.ts","shared/components/TopNavbar/index.tsx","shared/components/TopNavbar/LoggedOut.tsx","shared/components/DropdownMenu/Styles.ts","shared/components/DropdownMenu/index.tsx","App/context.ts","shared/components/MiniProfile/Styles.ts","shared/components/MiniProfile/index.tsx","shared/components/NotifcationPopup/index.tsx","shared/components/LoadingSpinner/Styles.ts","shared/components/LoadingSpinner/index.tsx","shared/hooks/useStickyState.ts","App/TopNavbar/ProjectFinder.tsx","App/TopNavbar/index.tsx","shared/utils/cache.ts","Admin/index.tsx","shared/constants/keyCodes.ts","shared/hooks/onEscapeKeyDown.ts","shared/components/Modal/Styles.ts","shared/components/Modal/index.tsx","shared/hooks/useWindowSize.ts","shared/icons/Task.tsx","shared/components/TaskDetails/Styles.ts","shared/components/TaskDetails/CommentCreator.tsx","shared/utils/editorTheme.ts","shared/components/Checklist/index.tsx","shared/utils/draggables.ts","shared/components/TaskDetails/onDragEnd.ts","shared/components/TaskDetails/remark.js","shared/components/TaskDetails/ActivityMessage.tsx","shared/components/TaskDetails/index.tsx","shared/components/TaskDetails/Loading.tsx","shared/components/Member/index.tsx","shared/components/MemberManager/Styles.ts","shared/components/MemberManager/index.tsx","shared/components/DueDateManager/Styles.ts","shared/components/DueDateManager/index.tsx","shared/utils/polling.ts","Projects/Project/Details/index.tsx","MyTasks/MyTasksSort.tsx","MyTasks/MyTasksStatus.tsx","MyTasks/TaskEntry.tsx","MyTasks/index.tsx","shared/undraw/AccessAccount.tsx","shared/components/Confirm/Styles.ts","shared/components/Confirm/index.tsx","Confirm/Styles.ts","Confirm/index.tsx","shared/components/NewProject/index.tsx","Projects/index.tsx","shared/components/ProjectSettings/index.tsx","App/TopNavbar/ProjectPopup.tsx","shared/hooks/useStateWithLocalStorage.ts","shared/utils/localStorage.ts","shared/components/QuickCardEditor/Styles.ts","shared/components/Card/Styles.ts","shared/components/Card/index.tsx","shared/utils/sorting.ts","shared/components/QuickCardEditor/index.tsx","shared/components/AddList/Styles.ts","shared/components/AddList/index.tsx","shared/components/ListActions/Styles.ts","shared/components/ListActions/index.tsx","shared/components/List/Styles.ts","shared/components/List/index.tsx","shared/components/CardComposer/Styles.ts","shared/components/CardComposer/index.tsx","shared/components/Lists/metaFilter.ts","shared/components/Lists/index.tsx","shared/components/Lists/Styles.ts","shared/components/EmptyBoard/index.tsx","shared/components/PopupMenu/LabelManager.tsx","shared/components/PopupMenu/LabelEditor.tsx","Projects/Project/LabelManagerEditor/index.tsx","shared/components/Chip/index.tsx","Projects/Project/Board/FilterStatus.tsx","Projects/Project/Board/FilterMeta.tsx","Projects/Project/Board/SortPopup.tsx","Projects/Project/Board/index.tsx","Projects/Project/UserManagementPopup/Styles.ts","Projects/Project/UserManagementPopup/OptionValue.tsx","Projects/Project/UserManagementPopup/UserOption.tsx","shared/utils/email.ts","Projects/Project/UserManagementPopup/fetchMembers.ts","Projects/Project/UserManagementPopup/index.tsx","Projects/Project/index.tsx","Teams/Members/index.tsx","Teams/Projects/index.tsx","Teams/index.tsx","shared/components/Login/Styles.ts","shared/components/Login/index.tsx","Auth/Styles.ts","Auth/index.tsx","shared/components/Register/Styles.ts","shared/components/Register/index.tsx","Register/Styles.ts","Register/index.tsx","shared/components/Settings/index.tsx","Profile/index.tsx","App/Routes.tsx","App/Toast.ts","App/index.tsx","index.tsx"],"names":["cache","InMemoryCache","Svg","styled","svg","props","theme","colors","text","primary","Icon","width","height","viewBox","className","onClick","children","e","xmlns","Cross","d","Cog","size","color","fill","Cogs","CheckCircleOutline","Briefcase","ListUnordered","ChevronRight","CaretDown","Eye","CaretRight","List","At","Smile","Paperclip","Calender","Clone","Sort","Filter","DoubleChevronUp","Share","Crown","BarChart","UserPlus","Trash","CheckCircle","Clock","AccountPlus","CheckSquare","ArrowLeft","CheckSquareOutline","Square","Bolt","Plus","Bell","AngleLeft","AngleDown","AngleDownOld","defaultProps","Checkmark","User","Lock","Taskcafe","innerColor","outerColor","stroke","strokeWidth","Exit","Ellipsis","vertical","ToggleOn","Tags","Star","filled","useOnOutsideClick","$ignoredElementRefs","isListening","onOutsideClick","$listeningElementRef","$mouseDownTargetRef","useRef","$ignoredElementRefsMemoized","flat","useEffect","handleMouseDown","event","current","target","handleMouseUp","isAnyIgnoredElementAncestorOfTarget","some","$elementRef","contains","button","$listeningElement","document","addEventListener","removeEventListener","NOOP","borderRadius","alternate","multiColors","secondary","success","danger","warning","dark","border","bg","font","mixin","darken","colorValue","amount","Color","string","lighten","rgba","opacity","alpha","boxShadowCard","css","boxShadowMedium","boxShadowDropdown","truncateText","clickable","hardwareAccelerate","cover","link","placeholderColor","InputWrapper","div","InputLabel","span","InputInput","input","borderColor","hasIcon","focusBg","hasValue","ControlledInput","variant","disabled","type","autocomplete","autoFocus","label","placeholder","icon","name","onChange","value","floatingLabel","defaultValue","id","$input","useState","setHasValue","focus","currentTarget","ref","autoComplete","Container","left","top","targetPadding","invert","invertY","Wrapper","padding","borders","Header","HeaderTitle","Content","LabelSearch","Section","SectionTitle","h4","Labels","ul","Label","li","CardLabel","active","CloseButton","LabelIcon","ActiveIcon","EditLabelForm","form","FieldLabel","FieldName","LabelBox","SaveButton","DeleteButton","CreateLabelButton","PreviousButton","ContainerDiamond","getPopupOptions","options","popupOptions","diamondColor","showDiamond","onClose","PopupContainer","$containerRef","currentTop","PopupContext","createContext","show","setTab","getCurrentTab","hide","usePopup","ctx","useContext","showPopup","hidePopup","Provider","canUseDOM","Consumer","window","createElement","defaultState","isOpen","currentTab","previousTab","content","PopupProvider","currentState","setState","portalTarget","body","bounds","getBoundingClientRect","innerHeight","innerWidth","newTab","prevState","produce","draftState","createPortal","Popup","title","tab","createGlobalStyle","Dashboard","to","AdminIcon","OwnerIcon","TaskDetailAssignee","backgroundURL","bgColor","hasClick","TaskAssignee","showRoleIcons","member","onMemberProfile","invited","$memberRef","profileIcon","url","initials","stopPropagation","undefined","role","code","getBackgroundColor","isDisabled","isSelected","isFocused","ActionLevel","ActionType","ActivityType","ActorType","EntityType","MyTasksSort","MyTasksStatus","ObjectType","RoleCode","RoleLevel","ShareStatus","colourStyles","control","styles","data","backgroundColor","isMenuOpen","boxShadow","menuIsOpen","borderWidth","borderStyle","borderImage","menu","dropdownIndicator","indicatorSeparator","option","cursor","clearIndicator","singleValue","editorColourStyles","indicatorsContainer","display","container","flex","minHeight","SelectContainer","SelectElement","classNamePrefix","defaultOptions","TaskFieldsFragmentDoc","gql","AssignTaskDocument","useAssignTaskMutation","baseOptions","Apollo","ClearProfileAvatarDocument","CreateProjectDocument","CreateProjectLabelDocument","CreateTaskGroupDocument","DeleteProjectLabelDocument","DeleteTaskDocument","useDeleteTaskMutation","DeleteTaskGroupDocument","FindProjectDocument","useFindProjectQuery","FindTaskDocument","GetProjectsDocument","useGetProjectsQuery","LabelsDocument","useLabelsQuery","MeDocument","MyTasksDocument","DeleteProjectDocument","DeleteInvitedProjectMemberDocument","DeleteProjectMemberDocument","InviteProjectMembersDocument","UpdateProjectMemberRoleDocument","CreateTaskDocument","useCreateTaskMutation","CreateTaskChecklistDocument","CreateTaskChecklistItemDocument","CreateTaskCommentDocument","DeleteTaskChecklistDocument","DeleteTaskChecklistItemDocument","DeleteTaskCommentDocument","SetTaskChecklistItemCompleteDocument","SetTaskCompleteDocument","useSetTaskCompleteMutation","UpdateTaskChecklistItemLocationDocument","UpdateTaskChecklistItemNameDocument","UpdateTaskChecklistLocationDocument","UpdateTaskChecklistNameDocument","UpdateTaskCommentDocument","DeleteTaskGroupTasksDocument","DuplicateTaskGroupDocument","SortTaskGroupDocument","UpdateTaskGroupNameDocument","CreateTeamDocument","CreateTeamMemberDocument","DeleteTeamDocument","DeleteTeamMemberDocument","GetTeamDocument","useGetTeamQuery","UpdateTeamMemberRoleDocument","ToggleProjectVisibilityDocument","ToggleTaskLabelDocument","useToggleTaskLabelMutation","TopNavbarDocument","UnassignTaskDocument","useUnassignTaskMutation","UpdateProjectLabelDocument","UpdateProjectNameDocument","UpdateTaskDescriptionDocument","UpdateTaskDueDateDocument","useUpdateTaskDueDateMutation","UpdateTaskGroupLocationDocument","UpdateTaskLocationDocument","UpdateTaskNameDocument","useUpdateTaskNameMutation","CreateUserAccountDocument","DeleteInvitedUserAccountDocument","DeleteUserAccountDocument","UpdateUserInfoDocument","UpdateUserPasswordDocument","UpdateUserRoleDocument","UsersDocument","Input","React","forwardRef","$ref","autoSelect","combinedRef","refs","targetRef","forEach","useCombinedRefs","select","Text","justifyTextContent","fontSize","Base","Filled","hoverVariant","Outline","Flat","LineX","LineDown","Gradient","Relief","Button","$button","handleClick","Error","UserSelect","Select","NewUserPassInput","InviteMemberButton","UserPassBar","UserPassConfirmButton","UserPassButton","MemberItemOptions","MemberItemOption","MemberList","MemberListItem","MemberListItemDetails","InviteIcon","MemberProfile","MemberItemName","p","MemberItemUsername","MemberListHeader","ListTitle","h3","ListDesc","FilterSearch","ListActions","MemberListWrapper","TabNav","TabNavContent","TabNavItem","TabNavItemButton","TabItemUser","TabNavItemSpan","TabNavLine","TabContentWrapper","TabContent","items","RoleCheckmark","permissions","description","RoleName","RoleDescription","MiniProfileActions","MiniProfileActionWrapper","MiniProfileActionItem","CurrentPermission","Separator","WarningText","DeleteDescription","TeamRoleManagerPopup","user","users","canChangeRole","onDeleteUser","updateUserPassword","onChangeRole","pass","passConfirm","userPass","deleteUser","setDeleteUser","hasOwned","owned","projects","length","teams","filter","map","perm","Owner","Admin","Member","v","u","fullName","NavItem","$item","pos","initialTab","onAddUser","onUpdateUserPassword","canInviteUser","onDeleteInvitedUser","invitedUsers","onInviteUser","setTop","$tabNav","useUpdateUserRoleMutation","updateUserRole","item","idx","$target","projectTotal","username","password","roleCode","variables","userID","email","charAt","ProfileIcon","onProfileClick","realSize","$profileRef","ProjectMember","zIndex","NavbarWrapper","ProjectMembers","NavbarHeader","header","ProjectInfo","ProjectSwitchInner","ProjectSwitch","ProjectActions","GlobalActions","NavbarLink","Link","IconContainerWrapper","ProjectMeta","small","nameOnly","ProjectTabs","ProjectTab","NavLink","ProjectName","h1","ProjectNameWrapper","ProjectNameSpan","ProjectNameTextarea","ProjectSettingsButton","InviteButton","ProjectFinder","SignIn","NavSeparator","LogoContainer","TaskcafeTitle","h2","TaskcafeLogo","IconContainer","$container","HomeDashboard","Home","ProjectHeading","onFavorite","initialProjectName","onSaveProjectName","canEditProjectName","onOpenSettings","isEditProjectName","setEditProjectName","projectName","setProjectName","$projectName","$settings","onKeyDown","key","preventDefault","blur","onBlur","spellCheck","NavBar","menuType","onChangeProjectOwner","onInvitedMemberProfile","onOpenProjectFinder","projectInvitedMembers","onSetTab","onSaveName","onRemoveFromBoard","onNotificationClick","onDashboardClick","onMyTasksClick","projectMembers","$finder","useHistory","exact","match","pathname","state","redirect","ActionsList","ActionItem","ActionTitle","ProfileMenu","showAdminConsole","onAdminConsole","onProfile","onLogout","UserContext","setUser","_user","useCurrentUser","Profile","bgUrl","ProfileInfo","InfoTitle","InfoUsername","InfoBio","RemoveMemberButton","MiniProfile","bio","onRemoveFromTask","Observer","ItemWrapper","ItemWrapperContent","ItemIconContainer","ItemTextContainer","ItemTextTitle","ItemTextDesc","ItemTimeAgo","NotificationItem","createdAt","date","component","NotificationHeader","NotificationHeaderTitle","NotificationFooter","NotificationPopup","LoadingSpinnerKeyframes","keyframes","LoadingSpinnerWrapper","borderSize","thickness","LoadingSpinner","useStickyState","stickyValue","localStorage","getItem","JSON","parse","setValue","setItem","stringify","TeamContainer","TeamTitle","TeamTitleText","TeamProjects","TeamProjectLink","TeamProjectBackground","Empty","TeamProjectAvatar","TeamProjectContent","TeamProjectTitle","TeamProjectContainer","Search","Minify","fetchPolicy","search","setSearch","minified","setMinified","trim","toLowerCase","startsWith","projectTeams","team","sort","a","b","localeCompare","project","isMinified","find","m","prev","LoggedInNavbar","teamID","popupContent","onRemoveInvitedFromBoard","useTopNavbarQuery","history","fetch","method","credentials","then","x","status","reset","replace","userIsTeamOrProjectAdmin","me","TopNavbar","$targetRef","memberID","notifications","notification","entity","actor","push","GlobalTopNavbar","useRouteMatch","projectID","LoggedOut","updateApolloCache","client","update","queryArgs","query","readQuery","newCache","writeQuery","CreateUserForm","CreateUserButton","AddUserInput","InputError","AddUserPopup","useForm","register","handleSubmit","errors","formState","onSubmit","required","message","rules","render","field","AdminRoute","useUsersQuery","loading","useDeleteInvitedUserAccountMutation","response","draftCache","deleteInvitedUserAccount","invitedUser","deleteInvitedUser","useDeleteUserAccountMutation","deleteUserAccount","userAccount","useCreateUserAccountMutation","createData","cacheData","newData","createUserAccount","createUser","invitedUserID","newOwnerID","userData","KeyCodes","TAB","ENTER","ESCAPE","SPACE","ARROW_LEFT","ARROW_UP","ARROW_RIGHT","ARROW_DOWN","M","useOnEscapeKeyDown","onEscapeKeyDown","handleKeyDown","keyCode","ScrollOverlay","ClickableOverlay","StyledModal","$root","getElementById","getAdjustedHeight","CloseIcon","InnerModal","tellParentToClose","renderContent","$modalRef","$clickableOverlayRef","setSize","useLayoutEffect","updateSize","useWindowSize","Modal","ReactDOM","Task","LeftSidebar","MarkCompleteButton","LeftSidebarContent","LeftSidebarSection","SidebarTitle","defaultBaseColor","defaultHighlightColor","skeletonKeyframes","SidebarButton","$loading","SidebarSkeleton","SidebarButtonText","ContentContainer","HeaderContainer","HeaderInnerContainer","HeaderLeft","TaskDetailsTitleWrapper","TaskDetailsTitle","TextareaAutosize","DueDateTitle","AssignedUsersSection","AssignUserIcon","AssignUsersButton","AssignUserLabel","ExtraActionsSection","ActionButton","HeaderRight","HeaderActionIcon","EditorContainer","InnerContentContainer","DescriptionContainer","MetaDetailContent","TaskDetailsAddLabelIcon","ChecklistSection","TaskDetailLabel","TaskMember","TabBarSection","TabBarItem","CommentContainer","CommentInnerWrapper","CommentEditorContainer","CommentProfile","CommentTextArea","$showCommentActions","CommentEditorActions","visible","CommentEditorActionIcon","CommentEditorSaveButton","ActivitySection","ActivityItemCommentAction","ActivityItem","ActivityItemHeader","editable","ActivityItemHeaderUser","ActivityItemHeaderTitle","ActivityItemHeaderTitleName","ActivityItemTimestamp","margin","ActivityItemCommentContainer","ActivityItemComment","ActivityItemCommentActions","ViewRawButton","TaskDetailsEditor","CommentCreator","onCreateComment","onCancelEdit","$commentWrapper","$comment","$emoji","$emojiCart","comment","setComment","showCommentActions","setShowCommentActions","onFocus","emoji","textToInsert","colons","cursorPosition","selectionStart","textBeforeCursorPosition","substring","textAfterCursorPosition","set","almostBlack","lightBlack","bgPrimary","almostWhite","white","white10","black","black10","greyLight","grey","greyMid","greyDark","base","fontFamily","fontFamilyMono","fontWeight","textSecondary","textLight","textHighlight","textHighlightForeground","selected","codeComment","codePunctuation","codeNumber","codeProperty","codeTag","codeString","codeSelector","codeAttr","codeEntity","codeKeyword","codeFunction","codeStatement","codePlaceholder","codeInserted","codeImportant","blockToolbarBackground","blockToolbarTrigger","blockToolbarTriggerIcon","blockToolbarItem","blockToolbarText","blockToolbarHoverBackground","blockToolbarDivider","blockToolbarIcon","blockToolbarIconSelected","blockToolbarTextSelected","noticeInfoBackground","noticeInfoText","noticeTipBackground","noticeTipText","noticeWarningBackground","noticeWarningText","background","divider","toolbarBackground","toolbarHoverBackground","toolbarInput","toolbarItem","tableDivider","tableSelected","tableSelectedBackground","quote","codeBackground","codeBorder","horizontalRule","imageErrorBackground","scrollbarBackground","scrollbarThumb","WindowTitle","WindowTitleIcon","WindowChecklistTitle","WindowTitleText","WindowOptions","ChecklistProgress","ChecklistProgressPercent","ChecklistProgressBar","ChecklistProgressBarCurrent","ChecklistItems","ChecklistItemUncheckedIcon","ChecklistIcon","ChecklistItemCheckedIcon","ChecklistItemDetails","ChecklistItemRow","ChecklistItemTextControls","ChecklistItemText","complete","ChecklistControls","ControlButton","ChecklistNameEditorWrapper","ChecklistNameEditor","AssignUserButton","ClockButton","TrashButton","ChecklistItemWrapper","EditControls","CancelButton","Spacer","EditableDeleteButton","NewItemButton","ChecklistNewItem","ChecklistItem","itemID","checklistID","wrapperProps","handleProps","onChangeName","onToggleItem","onDeleteItem","$editor","editting","setEditting","currentName","setCurrentName","AddNewItem","onAddItem","$wrapper","ChecklistTitleEditor","$name","onCancel","Checklist","onDeleteChecklist","onChangeItemName","reduce","percent","Math","floor","moveItemWithinArray","arr","newIndex","arrClone","oldIndex","findIndex","i","splice","getNewDraggablePosition","afterDropDraggables","draggableIndex","prevDraggable","nextDraggable","position","getSortedDraggables","draggables","isPositionChanged","source","destination","isSameList","droppableId","isSamePosition","index","getAfterDropDraggableList","beforeDropDraggables","droppedDraggable","isList","insertItemIntoArray","onDragEnd","task","onChecklistDrop","onChecklistItemDrop","draggableId","isChecklist","isSameChecklist","checklists","droppedGroup","taskGroup","checklist","newPosition","targetChecklist","droppedChecklistItem","newItem","taskChecklistID","RE_EMOJI","DEFAULT_SETTINGS","padSpaceAfter","emoticon","plugin","settings","pad","getEmoji","console","log","got","get","ReactDOMServer","renderToStaticMarkup","tree","visit","node","nodeIdx","tagName","getVariable","renderDate","timestamp","dayjs","format","ActivityMessage","TaskAdded","TaskMoved","TaskDueDateAdded","TaskDueDateRemoved","TaskDueDateChanged","TaskMarkedComplete","TaskMarkedIncomplete","StreamComment","onExtraActions","onUpdateComment","onCancelCommentEdit","$actions","createdBy","updatedAt","skipHtml","plugins","DOMPurify","sanitize","FORBID_TAGS","StreamActivity","activity","causedBy","ChecklistContainer","TaskLabelItem","$label","projectLabel","labelColor","colorHex","TaskDetails","editableComment","onTaskNameChange","onCommentShowActions","onOpenAddChecklistPopup","onChangeChecklistName","onToggleTaskComplete","onTaskDescriptionChange","onDeleteTask","onCloseModal","onOpenAddMemberPopup","onOpenAddLabelPopup","onOpenDueDatePopop","onToggleChecklistItem","taskName","setTaskName","editTaskDescription","setEditTaskDescription","saveTimeout","setSaveTimeout","showRaw","setShowRaw","taskDescriptionRef","$noMemberBtn","$addMemberBtn","$dueDateBtn","$detailsTitle","activityStream","time","comments","isAfter","saveDescription","dueDate","hasTime","assigned","labels","readOnly","clearTimeout","setTimeout","result","direction","dropProvided","droppableProps","innerRef","slice","provided","draggableProps","dragHandleProps","newName","n","lastItem","checklistDrop","itemIdx","itemDrop","stream","TaskDetailsLoading","CardCheckmark","CardMemberWrapper","CardMemberName","onCardMemberClick","taskID","showName","showCheckmark","MemberManagerWrapper","MemberManagerSearchWrapper","MemberManagerSearch","BoardMembersLabel","BoardMembersList","BoardMembersListItem","BoardMemberListItemContent","MemberManager","availableMembers","initialActiveMembers","activeMembers","onMemberChange","setActiveMembers","currentSearch","setCurrentSearch","isActive","AddDateRange","DateRangeInputs","ActionsSeparator","ActionsWrapper","ActionClock","ActionLabel","ActionIcon","ClearButton","HeaderSelectLabel","HeaderSelect","HeaderButton","HeaderActions","DueDateManager","onDueDateChange","onRemoveDueDate","currentDueDate","toDate","setError","startDate","setStartDate","enableTime","firstRun","debouncedFunctionRef","newDate","nowHasTime","debouncedChange","useCallback","_","debounce","years","range","getYear","Date","months","isRange","Array","isArray","popperClassName","dateFormat","disabledKeyboardNavigation","isClearable","placeholderText","useWeekdaysShort","renderCustomHeader","changeYear","changeMonth","decreaseMonth","increaseMonth","prevMonthButtonDisabled","nextMonthButtonDisabled","getMonth","indexOf","getFullYear","parseInt","inline","showTimeSelect","showTimeSelectOnly","timeIntervals","timeCaption","today","setHours","polling","PROJECTS","PROJECT","MEMBERS","TEAM_PROJECTS","TASK_DETAILS","WarningLabel","DeleteConfirm","TaskCommentActions","onDeleteComment","onEditComment","calculateChecklistBadge","total","next","innerPrev","_item","DeleteChecklistButton","CreateChecklistForm","CreateChecklistButton","CreateChecklistInput","CreateChecklistPopup","onCreateChecklist","Details","projectURL","refreshCache","useParams","useDeleteTaskCommentMutation","findTask","c","deleteTaskComment","commentID","useCreateTaskCommentMutation","createTaskComment","useUpdateTaskChecklistLocationMutation","updateTaskChecklistLocation","useUpdateTaskChecklistItemLocationMutation","updateTaskChecklistItemLocation","prevChecklistID","checklistItem","oldIdx","newIdx","useSetTaskChecklistItemCompleteMutation","badges","__typename","setTaskChecklistItemComplete","useDeleteTaskChecklistMutation","deleteData","deleteTaskChecklist","taskChecklist","useUpdateTaskChecklistItemNameMutation","updateTaskChecklistItemName","useCreateTaskChecklistMutation","createTaskChecklist","useUpdateTaskChecklistNameMutation","updateTaskChecklistName","useDeleteTaskChecklistItemMutation","deleteTaskChecklistItem","taskChecklistItem","targetIdx","useCreateTaskChecklistItemMutation","newTaskItem","createTaskChecklistItem","useFindTaskQuery","pollInterval","refetch","setTaskComplete","onCompleted","updateTaskDueDate","assignTask","unassignTask","useUpdateTaskCommentMutation","updateTaskComment","setEditableComment","optimisticResponse","taskChecklistItemID","itemName","ok","_task","checklistData","lastChecklist","t","newDueDate","MyTasksSortPopup","initialSort","onChangeSort","setSort","handleChangeSort","f","None","Project","DueDate","ActionExtraMenuContainer","ActionExtraMenu","ActionExtraMenuItem","ActionExtraMenuSeparator","MyTasksStatusPopup","initialStatus","onChangeStatus","setStatus","handleStatusChange","Incomplete","All","CompleteAll","CompleteToday","CompleteYesterday","CompleteOneWeek","CompleteTwoWeek","CompleteThreeWeek","TaskName","focused","DueDateCell","CellPlaceholder","DueDateCellDisplay","DueDateCellLabel","DueDateRemoveButton","TaskGroupItemCell","TaskGroupItem","TaskItemComplete","TaskDetailsButton","TaskDetailsArea","TaskDetailsWorkpace","TaskDetailsLabel","TaskDetailsChevron","TaskNameShadow","TaskNameInput","textarea","ProjectPill","ProjectPillContents","ProjectPillName","ProjectPillColor","TaskEntry","onToggleComplete","onEditName","onTaskDetails","initialName","onEditProject","onEditDueDate","leftRow","setFocused","setName","$projects","$dueDate","$nameInput","wrap","rows","focusable","prettyStatus","DueDateEditorLabel","ProjectBar","ProjectActionWrapper","ProjectActionText","ProjectAction","EditorPositioner","EditorPositionerContents","EditorCell","VerticalScoller","VerticalScollerInner","TableContents","TaskGroupContainer","TaskGroupHeader","TaskGroupItems","SingleValue","OptionWrapper","OptionLabel","OptionTitle","OptionSubTitle","Option","innerProps","TaskGroupHeaderContents","TaskGroupMinify","TaskGroupName","ScrollContainer","Row","RowHeaderLeft","RowHeaderLeftInner","RowHeaderLeftName","RowHeaderLeftNameText","RowHeaderRight","RowScrollable","RowScrollContent","RowHeaderRightContainer","ItemsContainer","ItemName","Projects","menuOpen","setMenuOpen","filters","setFilters","useMyTasksQuery","open","dateEditor","setDateEditor","projectEditor","setProjectEditor","right","$editorContents","$dateContents","toISOString","newTaskData","myTasks","tasks","unshift","createTask","updateTaskName","groups","group","Map","has","pTasks","first","second","isSame","components","onInputChange","action","path","updatedTask","newDescription","deletedTask","AccessAccount","transform","cx","cy","r","y","rx","points","Column","LoginFormWrapper","LoginFormContainer","Title","SubTitle","LogoTitle","LogoWrapper","Confirm","onConfirmUser","hasConfirmToken","hasFailed","setFailed","setHasFailed","LoginWrapper","UsersConfirm","location","useLocation","params","QueryString","confirmToken","json","catch","Overlay","ContainerContent","ProjectNameLabel","ProjectField","ProjectTeamField","CreateButton","NewProject","initialTeamID","onCreateProject","setTeam","CreateTeamFormContainer","CreateTeamButton","ErrorText","CreateTeamForm","onCreateTeam","ProjectAddTile","ProjectTile","ProjectTileFade","ProjectListItem","ProjectList","ProjectTileDetails","ProjectAddTileDetails","ProjectTileName","centered","ProjectSectionTitleWrapper","SectionActions","SectionAction","SectionActionLink","ProjectSectionTitle","ProjectsContainer","AddTeamButton","useCreateProjectMutation","newProject","createProject","showNewProject","setShowNewProject","useCreateTeamMutation","createTeam","organizationID","organizations","personalProjects","textA","toUpperCase","textB","teamName","ListActionsWrapper","ListActionItemWrapper","ListActionItem","TeamSettings","hr","onDeleteTeam","ConfirmWrapper","ConfirmDescription","DeleteList","DeleteListItem","ConfirmDeleteButton","DELETE_INFO","DELETE_PROJECTS","deletedItems","DELETE_TEAMS","onConfirmDelete","PublicConfirm","onConfirm","ProjectSettings","publicOn","onDeleteProject","onToggleProjectVisible","ProjectPopup","initialPublicOn","setPublicOn","useToggleProjectVisibilityMutation","toggleProjectVisibility","useDeleteProjectMutation","deleteProject","isPublic","useStateWithLocalStorage","localStorageKey","CARD_LABEL_VARIANT_STORAGE_KEY","fixed","FadeInAnimation","EditorButtons","EditorButton","CardMember","ClockIcon","EditorTextarea","ListCardBadges","ListCardBadge","DescriptionBadge","DueDateCardBadge","isPastDue","ListCardBadgeText","ListCardContainer","ListCardInnerContainer","ListCardDetails","labelVariantExpandAnimation","labelTextVariantExpandAnimation","labelVariantShrinkAnimation","labelTextVariantShrinkAnimation","ListCardLabelText","ListCardLabelsWrapper","ListCardLabel","ListCardLabels","toggleLabels","toggleDirection","ListCardOperation","CardTitle","CardTitleText","CardMembers","CompleteIcon","EditorContent","Card","$cardRef","onContextMenu","taskGroupID","setToggleLabels","watched","members","labelVariant","onCardLabelClick","onEditCard","onCardTitleChange","currentCardTitle","setCardTitle","$editorRef","setActive","$innerCardRef","onOpenComposer","onMouseEnter","onMouseLeave","Pencil","onAnimationEnd","formattedDate","displayName","TaskSortingType","TaskSortingDirection","QuickCardEditor","onCloseEditor","onOpenLabelsPopup","onOpenMembersPopup","onOpenDueDatePopup","onArchiveCard","$labelsRef","$membersRef","handleCloseEditor","bottom","l","editorOpen","AddListButton","Placeholder","AddIconWrapper","ListNameEditorWrapper","ListNameEditor","ListAddControls","CancelAdd","NameEditor","handleSave","onSave","buttonLabel","listName","setListName","AddList","setEditorOpen","$wrapperRef","sortString","sortTasks","taskSorting","TASK_TITLE","DUE_DATE","diff","COMPLETE","LABELS","aLabels","bLabels","aLabelsEmpty","bLabelsEmpty","aLabel","bLabel","aMembers","bMembers","aMember","bMember","ListSeparator","InnerContent","CopyWrapper","LabelManager","onDeleteTaskGroupTasks","onDuplicateTaskGroup","onArchiveTaskGroup","onSortTaskGroup","ASC","AddCardContainer","hidden","AddCardButton","HeaderEditTarget","isHidden","HeaderName","isEditing","AddCardButtonText","ListCards","ListExtraMenuButtonWrapper","isComposerOpen","headerProps","onExtraMenuOpen","isEditingTitle","setEditingTitle","$listNameRef","$extraActionsRef","CancelIconWrapper","CardComposerWrapper","ComposerControls","ComposerControlsSaveSection","ComposerControlsActionsSection","CardComposer","onCreateCard","cardName","setCardName","scrollIntoView","_taskGroupID","_taskID","ShouldFilter","TaskMeta","TaskMetaMatch","TaskStatus","TaskSince","DueDateFilterType","BoardContainer","BoardWrapper","shouldFilter","cond","VALID","NOT_VALID","initTaskStatusFilter","ALL","since","initTaskMetaFilters","MATCH_ANY","initTaskSorting","NONE","SimpleLists","taskGroups","onTaskDrop","onChangeTaskGroupName","onTaskGroupDrop","onTaskClick","onCreateTask","onQuickEditorOpen","onCreateTaskGroup","cardLabelVariant","taskStatusFilter","taskMetaFilters","currentComposer","setCurrentComposer","setToggleDirection","curTaskGroup","targetTaskGroup","droppedTask","newTask","columnDragProvided","columnDropProvided","snapshot","INCOMPLETE","completedAt","REFERENCE","TODAY","clone","startOf","YESTERDAY","subtract","isSameOrAfter","ONE_WEEK","TWO_WEEKS","THREE_WEEKS","shouldStatusFilter","isFiltered","NO_FILTER","NO_DUE_DATE","start","end","taskDueDate","OVERDUE","isBefore","TOMORROW","add","endOf","THIS_WEEK","weekday","isBetween","NEXT_WEEK","shouldMetaFilter","taskIndex","isDragDisabled","taskProvided","EmptyBoard","taskLabels","onLabelToggle","onLabelEdit","onLabelCreate","currentLabel","setCurrentLabel","WhiteCheckmark","labelColors","onLabelDelete","$fieldName","currentColor","setCurrentColor","LabelManagerEditor","taskLabelsRef","toggleTaskLabel","useCreateProjectLabelMutation","projectLabelID","createProjectLabel","newLabelData","findProject","useUpdateProjectLabelMutation","updateProjectLabel","useDeleteProjectLabelMutation","deleteProjectLabel","currentTaskLabels","setCurrentTaskLabels","labelId","newProjectLabel","assignedDate","LabelEditor","labelColorID","labelID","_labelId","LabelText","Chip","FilterStatus","onChangeTaskStatusFilter","currentFilter","setFilter","handleFilterChange","handleCompleteClick","s","FilterMember","ActionItemSeparator","ItemIcon","ActionItemLine","FilterMeta","onChangeTaskMetaFilter","currentFilters","nameFilter","setNameFilter","handleSetFilters","handleSetDueDate","filterType","draftFilters","nFilter","draftMember","Calendar","SortPopup","sorting","onChangeTaskSorting","setSorting","handleSetSorting","FilterChip","renderMetaFilters","filterChips","TITLE","memberFilter","MEMBER","labelFilter","LABEL","initialQuickCardEditorState","BoardLoading","ProjectBoard","labelsRef","membersRef","quickCardEditor","setQuickCardEditor","useUpdateTaskGroupLocationMutation","updateTaskGroupLocation","setTaskStatusFilter","setTaskMetaFilters","setTaskSorting","useSortTaskGroupMutation","toast","sortTaskGroup","useDeleteTaskGroupMutation","deletedTaskGroupData","deleteTaskGroup","useCreateTaskGroupMutation","newTaskGroupData","createTaskGroup","useUpdateTaskGroupNameMutation","updateTaskGroupName","useDeleteTaskGroupTasksMutation","resp","deleteTaskGroupTasks","useDuplicateTaskGroupMutation","duplicateTaskGroup","useUpdateTaskLocationMutation","updateTaskLocation","previousTaskGroupID","oldTaskGroupIdx","newTaskGroupIdx","previousTask","deleteTask","newTaskLabel","currentQuickTask","targetGroup","meta","droppedTaskGroup","lastTask","ceil","round","random","lastColumn","currentTask","taskSort","prevTasks","prevPos","newPos","tgID","_listId","cardId","OptionContent","quiet","OptionValueWrapper","OptionValueLabel","OptionValueRemove","InviteContainer","OptionValue","removeProps","UserOption","RFC2822_EMAIL","isValidEmail","test","cb","res","results","emails","searchMembers","UserManagementPopup","onInviteProjectMembers","useApolloClient","setInvitedUsers","getOptionValue","noOptionsMessage","isMulti","cacheOptions","defaultOption","MultiValue","IndicatorSeparator","DropdownIndicator","loadOptions","fetchMembers","useUpdateTaskDescriptionMutation","updateTaskDescription","useUpdateProjectMemberRoleMutation","updateProjectMemberRole","error","taskGroupIdx","tg","useUpdateProjectNameMutation","updateProjectName","useInviteProjectMembersMutation","inviteProjectMembers","invitedMembers","useDeleteInvitedProjectMemberMutation","deleteInvitedProjectMember","invitedMember","useDeleteProjectMemberMutation","deleteProjectMember","Board","SearchInput","UserMember","TeamMemberList","teamMembers","onAddTeamMember","subject","currentUserID","onRemoveFromTeam","orphanedProjectOwner","setOrphanedProjectOwner","FilterTab","FilterTabItems","FilterTabItem","FilterTabTitle","MemberContainer","Members","useCreateTeamMemberMutation","findTeam","createTeamMember","teamMember","useUpdateTeamMemberRoleMutation","updateTeamMemberRole","useDeleteTeamMemberMutation","deleteTeamMember","ProjectListWrapper","OuterWrapper","TeamPopup","useDeleteTeamMutation","deleteTeam","Teams","setCurrentTab","Form","FormLabel","FormTextInput","FormIcon","FormError","LoginButton","ActionButtons","RegisterButton","Login","isComplete","setComplete","htmlFor","Auth","invalidLoginAttempt","setInvalidLoginAttempt","valid","EMAIL_PATTERN","INITIALS_PATTERN","Register","registered","pattern","password_confirm","UsersRegister","setRegistered","fullname","setup","PasswordInput","UserInfoInput","ProfileContainer","AvatarContainer","AvatarMask","AvatarImg","img","UploadButton","RemoveButton","ImgLabel","AvatarInitials","AvatarSettings","profile","onProfileAvatarChange","onProfileAvatarRemove","alt","src","SettingActions","Tab","ResetPasswordTab","onResetPassword","done","passwordConfirm","UserInfoTab","onChangeUserInfo","Settings","$fileUpload","useClearProfileAvatarMutation","clearProfileAvatar","useUpdateUserInfoMutation","updateUserInfo","useUpdateUserPasswordMutation","useMeQuery","style","files","fileData","FormData","append","axios","post","withCredentials","click","MainContent","UserRequiredRoute","Routes","setLoading","MyTasks","ToastedContainer","ToastContainer","attrs","App","NormalizeStyles","BaseStyles","Toast","autoClose","hideProgressBar","newestOnTop","closeOnClick","rtl","pauseOnFocusLoss","draggable","pauseOnHover","limit","enableMapSet","extend","customParseFormat","updateLocale","week","dow","doy","ApolloClient","uri","ApolloProvider"],"mappings":"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","file":"static/js/main.530204df.chunk.js","sourcesContent":["import { InMemoryCache } from '@apollo/client';\n\nconst cache = new InMemoryCache();\n\nexport default cache;\n","import React from 'react';\nimport styled from 'styled-components/macro';\n\nexport type IconProps = {\n width: number | string;\n height: number | string;\n className?: string;\n onClick?: () => void;\n};\n\ntype Props = {\n width: number | string;\n height: number | string;\n viewBox: string;\n className?: string;\n onClick?: () => void;\n};\n\nconst Svg = styled.svg`\n fill: ${props => props.theme.colors.text.primary};\n stroke: ${props => props.theme.colors.text.primary};\n`;\n\nconst Icon: React.FC = ({ width, height, viewBox, className, onClick, children }) => {\n return (\n {\n if (onClick) {\n onClick();\n }\n }}\n className={className}\n width={width}\n height={height}\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox={viewBox}\n >\n {children}\n \n );\n};\n\nexport default Icon;\n","import React from 'react';\nimport Icon, { IconProps } from './Icon';\n\nconst Cross: React.FC = ({ width = '16px', height = '16px', className, onClick }) => {\n return (\n \n \n \n );\n};\n\nexport default Cross;\n","import React from 'react';\n\ntype Props = {\n size: number | string;\n color: string;\n};\n\nconst Cog = ({ size, color }: Props) => {\n return (\n \n \n \n );\n};\n\nexport default Cog;\n","import React from 'react';\nimport Icon, { IconProps } from './Icon';\n\nconst Cogs: React.FC = ({ width = '16px', height = '16px', className }) => {\n return (\n \n \n \n );\n};\n\nexport default Cogs;\n","import React from 'react';\nimport Icon, { IconProps } from './Icon';\n\nconst CheckCircleOutline: React.FC = ({ width = '16px', height = '16px', className }) => {\n return (\n \n \n \n );\n};\n\nexport default CheckCircleOutline;\n","import React from 'react';\nimport Icon, { IconProps } from './Icon';\n\nconst Briefcase: React.FC = ({ width = '16px', height = '16px', className }) => {\n return (\n \n \n \n );\n};\n\nexport default Briefcase;\n","import React from 'react';\nimport Icon, { IconProps } from './Icon';\n\nconst ListUnordered: React.FC = ({ width = '16px', height = '16px', className }) => {\n return (\n \n \n \n );\n};\n\nexport default ListUnordered;\n","import React from 'react';\nimport Icon, { IconProps } from './Icon';\n\nconst ChevronRight: React.FC = ({ width = '16px', height = '16px', className }) => {\n return (\n \n \n \n );\n};\n\nexport default ChevronRight;\n","import React from 'react';\nimport Icon, { IconProps } from './Icon';\n\nconst CaretDown: React.FC = ({ width = '16px', height = '16px', className }) => {\n return (\n \n \n \n );\n};\n\nexport default CaretDown;\n","import React from 'react';\nimport Icon, { IconProps } from './Icon';\n\nconst Eye: React.FC = ({ width = '16px', height = '16px', className }) => {\n return (\n \n \n \n );\n};\n\nexport default Eye;\n","import React from 'react';\nimport Icon, { IconProps } from './Icon';\n\nconst CaretRight: React.FC = ({ width = '16px', height = '16px', className }) => {\n return (\n \n \n \n );\n};\n\nexport default CaretRight;\n","import React from 'react';\nimport Icon, { IconProps } from './Icon';\n\nconst List: React.FC = ({ width = '16px', height = '16px', className }) => {\n return (\n \n \n \n );\n};\n\nexport default List;\n","import React from 'react';\nimport Icon, { IconProps } from './Icon';\n\nconst At: React.FC = ({ width = '16px', height = '16px', className }) => {\n return (\n \n \n \n );\n};\n\nexport default At;\n","import React from 'react';\nimport Icon, { IconProps } from './Icon';\n\nconst Smile: React.FC = ({ width = '16px', height = '16px', className }) => {\n return (\n \n \n \n );\n};\n\nexport default Smile;\n","import React from 'react';\nimport Icon, { IconProps } from './Icon';\n\nconst Paperclip: React.FC = ({ width = '16px', height = '16px', className }) => {\n return (\n \n \n \n );\n};\n\nexport default Paperclip;\n","import React from 'react';\nimport Icon, { IconProps } from './Icon';\n\nconst Calender: React.FC = ({ width = '16px', height = '16px', className }) => {\n return (\n \n \n \n );\n};\n\nexport default Calender;\n","import React from 'react';\nimport Icon, { IconProps } from './Icon';\n\nconst Clone: React.FC = ({ width = '16px', height = '16px', className }) => {\n return (\n \n \n \n );\n};\n\nexport default Clone;\n","import React from 'react';\nimport Icon, { IconProps } from './Icon';\n\nconst Sort: React.FC = ({ width = '16px', height = '16px', className }) => {\n return (\n \n \n \n );\n};\n\nexport default Sort;\n","import React from 'react';\nimport Icon, { IconProps } from './Icon';\n\nconst Filter: React.FC = ({ width = '16px', height = '16px', className }) => {\n return (\n \n \n \n );\n};\n\nexport default Filter;\n","import React from 'react';\nimport Icon, { IconProps } from './Icon';\n\nconst DoubleChevronUp: React.FC = ({ width = '16px', height = '16px', onClick, className }) => {\n return (\n \n \n \n \n );\n};\n\nexport default DoubleChevronUp;\n","import React from 'react';\nimport Icon, { IconProps } from './Icon';\n\nconst Share: React.FC = ({ width = '16px', height = '16px', className }) => {\n return (\n \n \n \n );\n};\n\nexport default Share;\n","import React from 'react';\nimport Icon, { IconProps } from './Icon';\n\nconst Crown: React.FC = ({ width = '16px', height = '16px', onClick, className }) => {\n return (\n \n \n \n );\n};\n\nexport default Crown;\n","import React from 'react';\nimport Icon, { IconProps } from './Icon';\n\nconst BarChart: React.FC = ({ width = '16px', height = '16px', className }) => {\n return (\n \n \n \n );\n};\n\nexport default BarChart;\n","import React from 'react';\nimport Icon, { IconProps } from './Icon';\n\nconst UserPlus: React.FC = ({ width = '16px', height = '16px', onClick, className }) => {\n return (\n \n \n \n );\n};\n\nexport default UserPlus;\n","import React from 'react';\nimport Icon, { IconProps } from './Icon';\n\nconst Trash: React.FC = ({ width = '16px', height = '16px', className }) => {\n return (\n \n \n \n );\n};\n\nexport default Trash;\n","import React from 'react';\nimport Icon, { IconProps } from './Icon';\n\nconst CheckCircle: React.FC = ({ width = '16px', height = '16px', className }) => {\n return (\n \n \n \n );\n};\n\nexport default CheckCircle;\n","import React from 'react';\nimport Icon, { IconProps } from './Icon';\n\nconst Clock: React.FC = ({ width = '16px', height = '16px', className }) => {\n return (\n \n \n \n );\n};\n\nexport default Clock;\n","import React from 'react';\nimport Icon, { IconProps } from './Icon';\n\nconst AccountPlus: React.FC = ({ width = '16px', height = '16px', className }) => {\n return (\n \n \n \n );\n};\n\nexport default AccountPlus;\n","import React from 'react';\nimport Icon, { IconProps } from './Icon';\n\nconst CheckSquare: React.FC = ({ width = '16px', height = '16px', onClick, className }) => {\n return (\n \n \n \n );\n};\n\nexport default CheckSquare;\n","import React from 'react';\n\ntype Props = {\n width: number | string;\n height: number | string;\n color: string;\n};\n\nconst ArrowLeft = ({ width, height, color }: Props) => {\n return (\n \n \n \n );\n};\n\nexport default ArrowLeft;\n","import React from 'react';\nimport Icon, { IconProps } from './Icon';\n\nconst CheckSquareOutline: React.FC = ({ width = '16px', height = '16px', className }) => {\n return (\n \n \n \n );\n};\n\nexport default CheckSquareOutline;\n","import React from 'react';\nimport Icon, { IconProps } from './Icon';\n\nconst Square: React.FC = ({ width = '16px', height = '16px', className, onClick }) => {\n return (\n \n \n \n );\n};\n\nexport default Square;\n","import React from 'react';\nimport Icon, { IconProps } from './Icon';\n\nconst Bolt: React.FC = ({ width = '16px', height = '16px' }) => {\n return (\n \n \n \n );\n};\n\nexport default Bolt;\n","import React from 'react';\nimport Icon, { IconProps } from './Icon';\n\nconst Plus: React.FC = ({ width = '16px', height = '16px', className }) => {\n return (\n \n \n \n );\n};\n\nexport default Plus;\n","import React from 'react';\n\ntype Props = {\n size: number | string;\n color: string;\n};\n\nconst Bell = ({ size, color }: Props) => {\n return (\n \n \n \n );\n};\n\nexport default Bell;\n","import React from 'react';\n\ntype Props = {\n size: number | string;\n color: string;\n};\n\nconst AngleLeft = ({ size, color }: Props) => {\n return (\n \n \n \n );\n};\n\nexport default AngleLeft;\n","import React from 'react';\nimport Icon, { IconProps } from './Icon';\n\nexport const AngleDown: React.FC = ({ width = '16px', height = '16px', className }) => {\n return (\n \n \n \n );\n};\n\ntype Props = {\n width?: number | string;\n height?: number | string;\n color?: string;\n};\n\nconst AngleDownOld = ({ width, height, color }: Props) => {\n return (\n \n \n \n );\n};\n\nAngleDownOld.defaultProps = {\n width: 24,\n height: 16,\n color: '#000',\n};\n\nexport default AngleDownOld;\n","import React from 'react';\nimport Icon, { IconProps } from './Icon';\n\nconst Sort: React.FC = ({ width = '16px', height = '16px', className }) => {\n return (\n \n \n \n );\n};\n\nexport default Sort;\n","import React from 'react';\nimport Icon, { IconProps } from './Icon';\n\nconst Checkmark: React.FC = ({ width = '16px', height = '16px', className }) => {\n return (\n \n \n \n );\n};\n\nexport default Checkmark;\n","import React from 'react';\nimport Icon, { IconProps } from './Icon';\n\nconst User: React.FC = ({ width = '16px', height = '16px', className, onClick }) => {\n return (\n \n \n \n );\n};\n\nexport default User;\n","import React from 'react';\nimport Icon, { IconProps } from './Icon';\n\nconst Lock: React.FC = ({ width = '16px', height = '16px', className }) => {\n return (\n \n \n \n );\n};\n\nexport default Lock;\n","import React from 'react';\nimport Icon, { IconProps } from './Icon';\n\ntype TaskcafeProps = {\n innerColor?: string;\n outerColor?: string;\n} & IconProps;\n\nconst Taskcafe: React.FC = ({\n innerColor = '#262c49',\n outerColor = '#7367f0',\n width = '16px',\n height = '16px',\n className,\n}) => {\n return (\n \n \n \n \n \n \n \n \n );\n};\n\nexport default Taskcafe;\n","import React from 'react';\nimport Icon, { IconProps } from './Icon';\n\nconst Checkmark: React.FC = ({ width = '16px', height = '16px', className }) => {\n return (\n \n \n \n );\n};\n\nexport default Checkmark;\n","import React from 'react';\n\ntype Props = {\n size: number | string;\n color: string;\n};\n\nconst Exit = ({ size, color }: Props) => {\n return (\n \n \n \n );\n};\n\nexport default Exit;\n","import React from 'react';\n\ntype Props = {\n size: number | string;\n color: string;\n vertical: boolean;\n};\n\nconst Ellipsis = ({ size, color, vertical }: Props) => {\n if (vertical) {\n return (\n \n \n \n );\n }\n return (\n \n \n \n );\n};\n\nexport default Ellipsis;\n","import React from 'react';\n\nimport Icon, { IconProps } from './Icon';\n\nconst ToggleOn: React.FC = ({ width = '16px', height = '16px' }) => {\n return (\n \n \n \n );\n};\n\nexport default ToggleOn;\n","import React from 'react';\nimport Icon, { IconProps } from './Icon';\n\nconst Tags: React.FC = ({ width = '16px', height = '16px' }) => {\n return (\n \n \n \n );\n};\n\nexport default Tags;\n","import React from 'react';\n\ntype Props = {\n width: number | string;\n height: number | string;\n color: string;\n filled: boolean;\n};\n\nconst Star = ({ width, height, color, filled }: Props) => {\n return (\n \n {filled ? (\n \n ) : (\n \n )}\n \n );\n};\n\nexport default Star;\n","import { useEffect, useRef } from 'react';\n\nconst useOnOutsideClick = (\n $ignoredElementRefs: any,\n isListening: boolean,\n onOutsideClick: () => void,\n $listeningElementRef: any,\n) => {\n const $mouseDownTargetRef = useRef();\n const $ignoredElementRefsMemoized = [$ignoredElementRefs].flat();\n\n useEffect(() => {\n const handleMouseDown = (event: any) => {\n $mouseDownTargetRef.current = event.target;\n };\n\n const handleMouseUp = (event: any) => {\n if (typeof $ignoredElementRefsMemoized !== 'undefined') {\n const isAnyIgnoredElementAncestorOfTarget = $ignoredElementRefsMemoized.some(($elementRef: any) => {\n if ($elementRef && $elementRef.current) {\n return (\n $elementRef.current.contains($mouseDownTargetRef.current) || $elementRef.current.contains(event.target)\n );\n }\n return false;\n });\n if (event.button === 0 && !isAnyIgnoredElementAncestorOfTarget) {\n onOutsideClick();\n }\n }\n };\n\n const $listeningElement = ($listeningElementRef || {}).current || document;\n\n if (isListening) {\n $listeningElement.addEventListener('mousedown', handleMouseDown);\n $listeningElement.addEventListener('mouseup', handleMouseUp);\n }\n return () => {\n $listeningElement.removeEventListener('mousedown', handleMouseDown);\n $listeningElement.removeEventListener('mouseup', handleMouseUp);\n };\n }, [$ignoredElementRefsMemoized, $listeningElementRef, isListening, onOutsideClick]);\n};\n\nexport default useOnOutsideClick;\n","export default function NOOP() {} // eslint-disable-line @typescript-eslint/no-empty-function\n","import { DefaultTheme } from 'styled-components';\nimport Color from 'color';\n\nconst theme: DefaultTheme = {\n borderRadius: {\n primary: '3x',\n alternate: '6px',\n },\n colors: {\n multiColors: ['#e362e3', '#7a6ff0', '#37c5ab', '#aa62e3', '#e8384f'],\n primary: 'rgb(115, 103, 240)',\n secondary: 'rgb(216, 93, 216)',\n alternate: 'rgb(65, 69, 97)',\n success: 'rgb(40, 199, 111)',\n danger: 'rgb(234, 84, 85)',\n warning: 'rgb(255, 159, 67)',\n dark: 'rgb(30, 30, 30)',\n text: {\n primary: 'rgb(194, 198, 220)',\n secondary: 'rgb(255, 255, 255)',\n },\n border: 'rgb(65, 69, 97)',\n bg: {\n primary: 'rgb(16, 22, 58)',\n secondary: 'rgb(38, 44, 73)',\n },\n },\n};\n\nexport default theme;\n","import { css } from 'styled-components';\nimport Color from 'color';\n\nexport const color = {\n primary: '#0052cc', // Blue\n success: '#0B875B', // green\n danger: '#E13C3C', // red\n warning: '#F89C1C', // orange\n secondary: '#F4F5F7', // light grey\n\n textDarkest: '#172b4d',\n textDark: '#42526E',\n textMedium: '#5E6C84',\n textLight: '#8993a4',\n textLink: '#0052cc',\n\n backgroundDarkPrimary: '#0747A6',\n backgroundMedium: '#dfe1e6',\n backgroundLight: '#ebecf0',\n backgroundLightest: '#F4F5F7',\n backgroundLightPrimary: '#D2E5FE',\n backgroundLightSuccess: '#E4FCEF',\n\n borderLightest: '#dfe1e6',\n borderLight: '#C1C7D0',\n borderInputFocus: '#4c9aff',\n};\n\nexport const font = {\n regular: 'font-family: \"Open Sans\", Roboto, sans-serif; font-weight: normal;',\n size: (size: number) => `font-size: ${size}px;`,\n bold: 'font-family: \"Open Sans\", Roboto, sans-serif; font-weight: normal;',\n medium: 'font-family: \"Open Sans\", Roboto, sans-serif; font-weight: normal;',\n};\n\nexport const mixin = {\n darken: (colorValue: string, amount: number) =>\n Color(colorValue)\n .darken(amount)\n .string(),\n lighten: (colorValue: string, amount: number) =>\n Color(colorValue)\n .lighten(amount)\n .string(),\n rgba: (colorValue: string, opacity: number) =>\n Color(colorValue)\n .alpha(opacity)\n .string(),\n boxShadowCard: css`\n box-shadow: rgba(9, 30, 66, 0.25) 0px 1px 2px 0px;\n `,\n boxShadowMedium: css`\n box-shadow: 0 5px 10px 0 rgba(0, 0, 0, 0.1);\n `,\n boxShadowDropdown: css`\n box-shadow: rgba(9, 30, 66, 0.25) 0px 4px 8px -2px, rgba(9, 30, 66, 0.31) 0px 0px 1px;\n `,\n truncateText: css`\n overflow: hidden;\n white-space: nowrap;\n text-overflow: ellipsis;\n `,\n clickable: css`\n cursor: pointer;\n user-select: none;\n `,\n hardwareAccelerate: css`\n transform: translateZ(0);\n `,\n cover: css`\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n `,\n link: (colorValue = color.textLink) => css`\n cursor: pointer;\n color: ${colorValue};\n ${font.medium}\n &:hover, &:visited, &:active {\n color: ${colorValue};\n }\n &:hover {\n text-decoration: underline;\n }\n `,\n\n placeholderColor: (colorValue: string) => css`\n ::-webkit-input-placeholder {\n color: ${colorValue} !important;\n opacity: 1 !important;\n }\n :-moz-placeholder {\n color: ${colorValue} !important;\n opacity: 1 !important;\n }\n ::-moz-placeholder {\n color: ${colorValue} !important;\n opacity: 1 !important;\n }\n :-ms-input-placeholder {\n color: ${colorValue} !important;\n opacity: 1 !important;\n }\n `,\n};\n","import React, { useState, useEffect, useRef } from 'react';\nimport styled, { css } from 'styled-components/macro';\nimport theme from '../../../App/ThemeStyles';\n\nconst InputWrapper = styled.div<{ width: string }>`\n position: relative;\n width: auto;\n display: flex;\n align-items: flex-start;\n flex-direction: column;\n position: relative;\n justify-content: center;\n\n margin-bottom: 2.2rem;\n margin-top: 24px;\n`;\n\nconst InputLabel = styled.span<{ width: string }>`\n width: ${(props) => props.width};\n padding: 0.7rem !important;\n color: #c2c6dc;\n left: 0;\n top: 0;\n transition: all 0.2s ease;\n position: absolute;\n border-radius: 5px;\n overflow: hidden;\n font-size: 0.85rem;\n cursor: text;\n font-size: 12px;\n user-select: none;\n pointer-events: none;\n}\n`;\n\nconst InputInput = styled.input<{\n hasValue: boolean;\n hasIcon: boolean;\n width: string;\n focusBg: string;\n borderColor: string;\n}>`\n width: ${(props) => props.width};\n font-size: 14px;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-color: ${(props) => props.borderColor};\n background: #262c49;\n box-shadow: 0 0 0 0 rgba(0, 0, 0, 0.15);\n ${(props) => (props.hasIcon ? 'padding: 0.7rem 1rem 0.7rem 3rem;' : 'padding: 0.7rem;')}\n line-height: 16px;\n color: #c2c6dc;\n position: relative;\n border-radius: 5px;\n transition: all 0.3s ease;\n &:focus {\n box-shadow: 0 3px 10px 0 rgba(0, 0, 0, 0.15);\n border: 1px solid rgba(115, 103, 240);\n background: ${(props) => props.focusBg};\n }\n &:focus ~ ${InputLabel} {\n color: ${(props) => props.theme.colors.primary};\n transform: translate(-3px, -90%);\n }\n ${(props) =>\n props.hasValue &&\n css`\n & ~ ${InputLabel} {\n color: ${props.theme.colors.primary};\n transform: translate(-3px, -90%);\n }\n `}\n`;\n\nconst Icon = styled.div`\n display: flex;\n left: 16px;\n position: absolute;\n`;\n\ntype ControlledInputProps = {\n variant?: 'normal' | 'alternate';\n label?: string;\n width?: string;\n floatingLabel?: boolean;\n placeholder?: string;\n icon?: JSX.Element;\n type?: string;\n autocomplete?: boolean;\n autoFocus?: boolean;\n id?: string;\n name?: string;\n className?: string;\n defaultValue?: string;\n onChange?: (e: React.ChangeEvent) => void;\n value?: string;\n onClick?: (e: React.MouseEvent) => void;\n disabled?: boolean;\n};\n\nconst ControlledInput = ({\n width = 'auto',\n variant = 'normal',\n disabled = false,\n type = 'text',\n autocomplete,\n autoFocus = false,\n label,\n placeholder,\n icon,\n name,\n className,\n onChange,\n value,\n onClick,\n floatingLabel = false,\n defaultValue,\n id,\n}: ControlledInputProps) => {\n const $input = useRef(null);\n const [hasValue, setHasValue] = useState(false);\n const borderColor = variant === 'normal' ? 'rgba(0, 0, 0, 0.2)' : theme.colors.alternate;\n const focusBg = variant === 'normal' ? theme.colors.bg.secondary : theme.colors.bg.primary;\n useEffect(() => {\n if (autoFocus && $input && $input.current) {\n $input.current.focus();\n }\n }, []);\n return (\n \n {\n if (onChange) {\n setHasValue(e.currentTarget.value !== '' || floatingLabel);\n onChange(e);\n }\n }}\n value={value}\n id={id}\n type={type}\n name={name}\n ref={$input}\n onClick={onClick}\n autoComplete={autocomplete ? 'on' : 'off'}\n defaultValue={defaultValue}\n hasIcon={typeof icon !== 'undefined'}\n width={width}\n placeholder={placeholder}\n focusBg={focusBg}\n borderColor={borderColor}\n />\n {label && {label}}\n {icon && icon}\n \n );\n};\n\nexport default ControlledInput;\n","import styled, { css } from 'styled-components';\nimport { mixin } from 'shared/utils/styles';\nimport ControlledInput from 'shared/components/ControlledInput';\nimport theme from 'App/ThemeStyles';\n\nexport const Container = styled.div<{\n invertY: boolean;\n invert: boolean;\n targetPadding: string;\n top: number;\n left: number;\n ref: any;\n width: number | string;\n}>`\n left: ${props => props.left}px;\n top: ${props => props.top}px;\n display: block;\n position: absolute;\n width: ${props => props.width}px;\n padding-top: ${props => props.targetPadding};\n height: auto;\n z-index: 40000;\n ${props =>\n props.invert &&\n css`\n transform: translate(-100%);\n `}\n ${props =>\n props.invertY &&\n css`\n top: auto;\n padding-top: 0;\n padding-bottom: ${props.targetPadding};\n bottom: ${props.top}px;\n `}\n`;\n\nexport const Wrapper = styled.div<{ padding: boolean; borders: boolean }>`\n ${props =>\n props.padding &&\n css`\n padding: 5px;\n padding-top: 8px;\n `}\n border-radius: 5px;\n box-shadow: 0 5px 25px 0 rgba(0, 0, 0, 0.1);\n position: relative;\n margin: 0;\n\n color: #c2c6dc;\n background: #262c49;\n ${props =>\n props.borders &&\n css`\n border: 1px solid rgba(0, 0, 0, 0.1);\n border-color: #414561;\n `}\n`;\n\nexport const Header = styled.div`\n height: 40px;\n position: relative;\n margin-bottom: 8px;\n text-align: center;\n`;\n\nexport const HeaderTitle = styled.span`\n box-sizing: border-box;\n color: #c2c6dc;\n display: block;\n border-bottom: 1px solid #414561;\n margin: 0 12px;\n overflow: hidden;\n padding: 0 32px;\n position: relative;\n text-overflow: ellipsis;\n white-space: nowrap;\n z-index: 1;\n\n height: 40px;\n line-height: 18px;\n font-size: 16px;\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nexport const Content = styled.div`\n max-height: 632px;\n overflow-y: auto;\n overflow-x: hidden;\n &::-webkit-scrollbar-track-piece {\n background: ${props => props.theme.colors.bg.primary};\n border-radius: 20px;\n }\n`;\n\nexport const LabelSearch = styled(ControlledInput)`\n margin: 12px 12px 0 12px;\n`;\n\nexport const Section = styled.div`\n margin-top: 12px;\n margin: 12px 12px 0 12px;\n`;\n\nexport const SectionTitle = styled.h4`\n color: #c2c6dc;\n font-size: 12px;\n font-weight: 500;\n letter-spacing: 0.04em;\n line-height: 16px;\n margin-top: 16px;\n text-transform: uppercase;\n`;\n\nexport const Labels = styled.ul`\n list-style: none;\n margin: 0;\n padding: 0;\n margin-bottom: 8px;\n`;\n\nexport const Label = styled.li`\n padding-right: 36px;\n position: relative;\n`;\nexport const CardLabel = styled.span<{ active: boolean; color: string }>`\n ${props =>\n props.active &&\n css`\n margin-left: 4px;\n box-shadow: -8px 0 ${mixin.darken(props.color, 0.12)};\n border-radius: 3px;\n `}\n\n cursor: pointer;\n font-weight: 700;\n margin: 0 0 4px;\n min-height: 20px;\n padding: 6px 12px;\n position: relative;\n transition: padding 85ms, margin 85ms, box-shadow 85ms;\n background-color: ${props => props.color};\n color: #fff;\n display: block;\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n min-height: 31px;\n`;\n\nexport const CloseButton = styled.div`\n padding: 18px 18px 14px 12px;\n position: absolute;\n top: 0;\n right: 0;\n z-index: 2;\n\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 40;\n cursor: pointer;\n`;\n\nexport const LabelIcon = styled.div`\n border-radius: 3px;\n padding: 6px;\n position: absolute;\n top: 0;\n right: 0;\n\n display: flex;\n align-items: center;\n justify-content: center;\n\n height: 100%;\n font-size: 16px;\n line-height: 20px;\n width: auto;\n cursor: pointer;\n\n &:hover {\n background: ${props => props.theme.colors.primary};\n }\n`;\n\nexport const ActiveIcon = styled.div`\n padding: 6px;\n display: flex;\n align-items: center;\n justify-content: center;\n position: absolute;\n top: 0;\n right: 0;\n opacity: 0.85;\n\n font-size: 16px;\n line-height: 20px;\n width: 20px;\n`;\n\nexport const EditLabelForm = styled.form`\n display: flex;\n flex-direction: column;\n`;\n\nexport const FieldLabel = styled.label`\n font-weight: 700;\n color: #5e6c84;\n font-size: 12px;\n line-height: 16px;\n margin-top: 12px;\n margin-bottom: 4px;\n display: block;\n`;\n\nexport const FieldName = styled.input`\n margin: 4px 0 12px;\n width: 100%;\n box-sizing: border-box;\n display: block;\n line-height: 20px;\n margin-bottom: 12px;\n padding: 8px 12px;\n background: #262c49;\n outline: none;\n color: #c2c6dc;\n\n border-radius: 3px;\n border-width: 1px;\n border-style: solid;\n border-color: transparent;\n border-image: initial;\n border-color: #414561;\n\n font-size: 12px;\n font-weight: 400;\n\n &:focus {\n box-shadow: ${props => props.theme.colors.primary} 0px 0px 0px 1px;\n background: ${mixin.darken(theme.colors.bg.secondary, 0.15)};\n }\n`;\n\nexport const LabelBox = styled.span<{ color: string }>`\n float: left;\n height: 32px;\n margin: 0 8px 8px 0;\n padding: 0;\n width: 48px;\n\n cursor: pointer;\n background-color: ${props => props.color};\n border-radius: 4px;\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: center;\n &:hover {\n opacity: 0.8;\n }\n`;\n\nexport const SaveButton = styled.input`\n background: ${props => props.theme.colors.primary};\n box-shadow: none;\n border: none;\n color: #fff;\n cursor: pointer;\n display: inline-block;\n font-weight: 400;\n line-height: 20px;\n margin-right: 4px;\n padding: 6px 12px;\n text-align: center;\n border-radius: 3px;\n`;\n\nexport const DeleteButton = styled.input`\n float: right;\n outline: none;\n border: none;\n line-height: 20px;\n padding: 6px 12px;\n background-color: transparent;\n text-align: center;\n color: #c2c6dc;\n font-weight: 400;\n line-height: 20px;\n cursor: pointer;\n\n margin: 0 0 0 8px;\n\n border-radius: 3px;\n border-width: 1px;\n border-style: solid;\n border-color: transparent;\n border-image: initial;\n border-color: #414561;\n\n &:hover {\n color: #fff;\n background: ${props => props.theme.colors.primary};\n border-color: transparent;\n }\n`;\n\nexport const CreateLabelButton = styled.button`\n outline: none;\n border: none;\n width: 100%;\n border-radius: 3px;\n line-height: 20px;\n margin-bottom: 8px;\n padding: 6px 12px;\n background-color: none;\n text-align: center;\n color: #c2c6dc;\n margin: 8px 4px 0 0;\n font-size: 14px;\n cursor: pointer;\n\n &:hover {\n background: ${props => props.theme.colors.primary};\n }\n`;\n\nexport const PreviousButton = styled.div`\n padding: 18px 18px 14px 12px;\n position: absolute;\n top: 0;\n left: 0;\n z-index: 2;\n\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 40;\n cursor: pointer;\n`;\n\nexport const ContainerDiamond = styled.div<{ borders: boolean; color: string; invert: boolean; invertY: boolean }>`\n ${props => (props.invert ? 'right: 10px; ' : 'left: 15px;')}\n position: absolute;\n width: 10px;\n height: 10px;\n display: block;\n ${props =>\n props.invertY\n ? css`\n bottom: 0;\n border-bottom: 1px solid rgba(0, 0, 0, 0.1);\n border-right: 1px solid rgba(0, 0, 0, 0.1);\n `\n : css`\n top: 10px;\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n border-left: 1px solid rgba(0, 0, 0, 0.1);\n `}\n transform: rotate(45deg) translate(-7px);\n z-index: 10;\n\n background: ${props => props.color};\n ${props =>\n props.borders &&\n css`\n border-color: #414561;\n `}\n`;\n","import React, { useRef, createContext, RefObject, useState, useContext, useEffect } from 'react';\nimport { Cross, AngleLeft } from 'shared/icons';\nimport useOnOutsideClick from 'shared/hooks/onOutsideClick';\nimport { createPortal } from 'react-dom';\nimport NOOP from 'shared/utils/noop';\nimport produce from 'immer';\nimport theme from 'App/ThemeStyles';\nimport {\n Container,\n ContainerDiamond,\n Header,\n HeaderTitle,\n Content,\n CloseButton,\n PreviousButton,\n Wrapper,\n} from './Styles';\n\nfunction getPopupOptions(options?: PopupOptions) {\n const popupOptions: PopupOptionsInternal = {\n borders: true,\n diamondColor: theme.colors.bg.secondary,\n targetPadding: '10px',\n showDiamond: true,\n width: 316,\n };\n if (options) {\n if (options.borders) {\n popupOptions.borders = options.borders;\n }\n if (options.width) {\n popupOptions.width = options.width;\n }\n if (options.targetPadding) {\n popupOptions.targetPadding = options.targetPadding;\n }\n if (typeof options.showDiamond !== 'undefined' && options.showDiamond !== null) {\n popupOptions.showDiamond = options.showDiamond;\n }\n if (options.diamondColor) {\n popupOptions.diamondColor = options.diamondColor;\n }\n if (options.onClose) {\n popupOptions.onClose = options.onClose;\n }\n }\n return popupOptions;\n}\n\ntype PopupContextState = {\n show: (target: RefObject, content: JSX.Element, options?: PopupOptions) => void;\n setTab: (newTab: number, options?: PopupOptions) => void;\n getCurrentTab: () => number;\n hide: () => void;\n};\n\ntype PopupProps = {\n title: string | null;\n onClose?: () => void;\n tab: number;\n padding?: boolean;\n borders?: boolean;\n diamondColor?: string;\n};\n\ntype PopupContainerProps = {\n top: number;\n left: number;\n invert: boolean;\n targetPadding: string;\n invertY: boolean;\n onClose: () => void;\n width?: string | number;\n};\n\nconst PopupContainer: React.FC = ({\n width,\n top,\n left,\n onClose,\n children,\n invert,\n invertY,\n targetPadding,\n}) => {\n const $containerRef = useRef(null);\n const [currentTop, setCurrentTop] = useState(top);\n useOnOutsideClick($containerRef, true, onClose, null);\n return (\n \n {children}\n \n );\n};\n\nPopupContainer.defaultProps = {\n width: 316,\n};\n\nconst PopupContext = createContext({\n show: NOOP,\n setTab: NOOP,\n getCurrentTab: () => 0,\n hide: NOOP,\n});\n\nexport const usePopup = () => {\n const ctx = useContext(PopupContext);\n return { showPopup: ctx.show, setTab: ctx.setTab, getCurrentTab: ctx.getCurrentTab, hidePopup: ctx.hide };\n};\n\ntype PopupState = {\n isOpen: boolean;\n left: number;\n top: number;\n invertY: boolean;\n invert: boolean;\n currentTab: number;\n previousTab: number;\n content: JSX.Element | null;\n options: PopupOptionsInternal | null;\n};\n\nconst { Provider, Consumer } = PopupContext;\n\nconst canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\n\ntype PopupOptionsInternal = {\n width: number;\n borders: boolean;\n targetPadding: string;\n diamondColor: string;\n showDiamond: boolean;\n onClose?: () => void;\n};\n\ntype PopupOptions = {\n targetPadding?: string | null;\n showDiamond?: boolean | null;\n width?: number | null;\n borders?: boolean | null;\n diamondColor?: string | null;\n onClose?: () => void;\n};\nconst defaultState = {\n isOpen: false,\n left: 0,\n top: 0,\n invert: false,\n invertY: false,\n currentTab: 0,\n previousTab: 0,\n content: null,\n options: null,\n};\n\nexport const PopupProvider: React.FC = ({ children }) => {\n const [currentState, setState] = useState(defaultState);\n const show = (target: RefObject, content: JSX.Element, options?: PopupOptions) => {\n if (target && target.current) {\n const bounds = target.current.getBoundingClientRect();\n let top = bounds.top + bounds.height;\n let invertY = false;\n if (window.innerHeight / 2 < top) {\n top = window.innerHeight - bounds.top;\n invertY = true;\n }\n const popupOptions = getPopupOptions(options);\n if (bounds.left + 304 + 30 > window.innerWidth) {\n setState({\n isOpen: true,\n left: bounds.left + bounds.width,\n top,\n invertY,\n invert: true,\n currentTab: 0,\n previousTab: 0,\n content,\n options: popupOptions,\n });\n } else {\n setState({\n isOpen: true,\n left: bounds.left,\n top,\n invert: false,\n invertY,\n currentTab: 0,\n previousTab: 0,\n content,\n options: popupOptions,\n });\n }\n }\n };\n const hide = () => {\n setState({\n isOpen: false,\n left: 0,\n top: 0,\n invert: true,\n invertY: false,\n currentTab: 0,\n previousTab: 0,\n content: null,\n options: null,\n });\n };\n const portalTarget = canUseDOM ? document.body : null; // appease flow\n\n const setTab = (newTab: number, options?: PopupOptions) => {\n setState((prevState: PopupState) =>\n produce(prevState, (draftState) => {\n draftState.previousTab = currentState.currentTab;\n draftState.currentTab = newTab;\n if (options) {\n draftState.options = getPopupOptions(options);\n }\n }),\n );\n };\n\n const getCurrentTab = () => {\n return currentState.currentTab;\n };\n\n return (\n \n {portalTarget &&\n currentState.isOpen &&\n currentState.options &&\n createPortal(\n {\n if (currentState.options && currentState.options.onClose) {\n currentState.options.onClose();\n }\n setState(defaultState);\n }}\n width={currentState.options.width}\n >\n {currentState.content}\n {currentState.options.showDiamond && (\n \n )}\n ,\n portalTarget,\n )}\n {children}\n \n );\n};\n\ntype Props = {\n title: string | null;\n top: number;\n left: number;\n onClose: () => void;\n onPrevious?: () => void | null;\n noHeader?: boolean | null;\n width?: string | number;\n};\n\nconst PopupMenu: React.FC = ({ width, title, top, left, onClose, noHeader, children, onPrevious }) => {\n const $containerRef = useRef(null);\n useOnOutsideClick($containerRef, true, onClose, null);\n\n return (\n \n \n {onPrevious && (\n \n \n \n )}\n {noHeader ? (\n onClose()}>\n \n \n ) : (\n
\n {title}\n onClose()}>\n \n \n
\n )}\n {children}\n
\n \n );\n};\n\nexport const Popup: React.FC = ({ borders = true, padding = true, title, onClose, tab, children }) => {\n const { getCurrentTab, setTab } = usePopup();\n if (getCurrentTab() !== tab) {\n return null;\n }\n\n return (\n <>\n \n {tab > 0 && (\n {\n setTab(0);\n }}\n >\n \n \n )}\n {title && (\n
\n {title}\n
\n )}\n {onClose && (\n onClose()}>\n \n \n )}\n {children}\n
\n \n );\n};\n\nexport default PopupMenu;\n","import { createGlobalStyle } from 'styled-components';\n\n/** DO NOT ALTER THIS FILE. It is a copy of https://necolas.github.io/normalize.css/ */\n\nexport default createGlobalStyle`\n html {\n line-height: 1.15;\n -webkit-text-size-adjust: 100%;\n }\n body {\n margin: 0;\n }\n main {\n display: block;\n }\n h1 {\n font-size: 2em;\n margin: 0.67em 0;\n }\n hr {\n box-sizing: content-box;\n height: 0;\n overflow: visible;\n }\n pre {\n font-family: monospace, monospace;\n font-size: 1em;\n }\n a {\n background-color: transparent;\n }\n abbr[title] {\n border-bottom: none;\n text-decoration: underline;\n text-decoration: underline dotted;\n }\n b,\n strong {\n font-weight: bolder;\n }\n code,\n kbd,\n samp {\n font-family: monospace, monospace;\n font-size: 1em;\n }\n small {\n font-size: 80%;\n }\n sub,\n sup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n }\n sub {\n bottom: -0.25em;\n }\n sup {\n top: -0.5em;\n }\n img {\n border-style: none;\n }\n button,\n input,\n optgroup,\n select,\n textarea {\n font-family: inherit;\n font-size: 100%;\n line-height: 1.15;\n margin: 0;\n }\n button,\n input {\n overflow: visible;\n }\n button,\n select {\n text-transform: none;\n }\n button,\n [type=\"button\"],\n [type=\"reset\"],\n [type=\"submit\"] {\n -webkit-appearance: button;\n }\n button::-moz-focus-inner,\n [type=\"button\"]::-moz-focus-inner,\n [type=\"reset\"]::-moz-focus-inner,\n [type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n }\n button:-moz-focusring,\n [type=\"button\"]:-moz-focusring,\n [type=\"reset\"]:-moz-focusring,\n [type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n }\n fieldset {\n padding: 0.35em 0.75em 0.625em;\n }\n legend {\n box-sizing: border-box;\n color: inherit;\n display: table;\n max-width: 100%;\n padding: 0;\n white-space: normal;\n }\n progress {\n vertical-align: baseline;\n }\n textarea {\n overflow: auto;\n }\n [type=\"checkbox\"],\n [type=\"radio\"] {\n box-sizing: border-box;\n padding: 0;\n }\n [type=\"number\"]::-webkit-inner-spin-button,\n [type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n }\n [type=\"search\"] {\n -webkit-appearance: textfield;\n outline-offset: -2px;\n }\n [type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n }\n ::-webkit-file-upload-button {\n -webkit-appearance: button;\n font: inherit;\n }\n details {\n display: block;\n }\n summary {\n display: list-item;\n }\n template {\n display: none;\n }\n [hidden] {\n display: none;\n }\n`;\n","import { createGlobalStyle } from 'styled-components';\n\nimport { color, font, mixin } from 'shared/utils/styles';\n\nexport default createGlobalStyle`\n html, body, #root {\n height: 100%;\n min-height: 100%;\n min-width: 768px;\n background: #262c49;\n }\n\n body {\n color: ${color.textDarkest};\n -webkit-tap-highlight-color: transparent;\n line-height: 1.2;\n ${font.size(16)}\n ${font.regular}\n }\n\n #root {\n display: flex;\n flex-direction: column;\n }\n\n button,\n input,\n optgroup,\n select,\n textarea {\n ${font.regular}\n }\n\n *, *:after, *:before, input[type=\"search\"] {\n box-sizing: border-box;\n }\n\n a {\n color: inherit;\n text-decoration: none;\n }\n\n ul {\n list-style: none;\n }\n\n ul, li, ol, dd, h1, h2, h3, h4, h5, h6, p {\n padding: 0;\n margin: 0;\n }\n\n h1, h2, h3, h4, h5, h6, strong {\n ${font.bold}\n }\n\n button {\n background: none;\n border: none;\n }\n\n /* Workaround for IE11 focus highlighting for select elements */\n select::-ms-value {\n background: none;\n color: #42413d;\n }\n\n [role=\"button\"], button, input, select, textarea {\n outline: none;\n &:focus {\n outline: none;\n }\n &:disabled {\n opacity: 0.5;\n }\n }\n [role=\"button\"], button, input, textarea {\n appearance: none;\n }\n select:-moz-focusring {\n color: transparent;\n text-shadow: 0 0 0 #000;\n }\n select::-ms-expand {\n display: none;\n }\n select option {\n color: ${color.textDarkest};\n }\n\n p {\n line-height: 1.4285;\n a {\n ${mixin.link()}\n }\n }\n\n textarea {\n line-height: 1.4285;\n }\n\n body, select {\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n }\n\n html {\n touch-action: manipulation;\n }\n\n textarea {\n resize: none;\n }\n\n ::-webkit-scrollbar {\n width: 10px;\n }\n\n ::-webkit-scrollbar-track {\n background: #262c49;\n border-radius: 20px;\n }\n\n ::-webkit-scrollbar-thumb {\n background: #7367f0;\n border-radius: 20px;\n }\n\n ${mixin.placeholderColor(color.textLight)}\n\n .picker-hidden {\n display: none;\n }\n`;\n","import React from 'react';\nimport { Redirect } from 'react-router';\n\nconst Dashboard: React.FC = () => {\n return ;\n};\n\nexport default Dashboard;\n","import React, { useRef } from 'react';\nimport styled, { css } from 'styled-components';\nimport { DoubleChevronUp, Crown } from 'shared/icons';\n\nexport const AdminIcon = styled(DoubleChevronUp)`\n bottom: 0;\n right: 1px;\n position: absolute;\n fill: #c377e0;\n`;\n\nexport const OwnerIcon = styled(Crown)`\n bottom: 0;\n right: 1px;\n position: absolute;\n fill: #c8b928;\n`;\n\nconst TaskDetailAssignee = styled.div`\n cursor: pointer;\n border-radius: 50%;\n display: flex;\n align-items: center;\n position: relative;\n`;\n\nexport const Wrapper = styled.div<{\n size: number | string;\n bgColor: string | null;\n backgroundURL: string | null;\n hasClick: boolean;\n}>`\n width: ${props => props.size}px;\n height: ${props => props.size}px;\n border-radius: 9999px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: ${props => (props.backgroundURL ? props.theme.colors.text.primary : 'rgb(0,0,0)')};\n background: ${props => (props.backgroundURL ? `url(${props.backgroundURL})` : props.bgColor)};\n background-position: center;\n background-size: contain;\n font-size: 14px;\n font-weight: 400;\n ${props =>\n props.hasClick &&\n css`\n &:hover {\n opacity: 0.8;\n }\n `}\n`;\n\ntype TaskAssigneeProps = {\n size: number | string;\n showRoleIcons?: boolean;\n member: TaskUser;\n invited?: boolean;\n onMemberProfile?: ($targetRef: React.RefObject, memberID: string) => void;\n className?: string;\n};\n\nconst TaskAssignee: React.FC = ({\n showRoleIcons,\n member,\n invited,\n onMemberProfile,\n size,\n className,\n}) => {\n const $memberRef = useRef(null);\n let profileIcon: ProfileIcon = {\n url: null,\n bgColor: null,\n initials: null,\n };\n if (member.profileIcon) {\n profileIcon = member.profileIcon;\n }\n return (\n {\n e.stopPropagation();\n if (onMemberProfile) {\n onMemberProfile($memberRef, member.id);\n }\n }}\n key={member.id}\n >\n \n {(!profileIcon.url && profileIcon.initials) ?? ''}\n \n {showRoleIcons && member.role && member.role.code === 'admin' && }\n {showRoleIcons && member.role && member.role.code === 'owner' && }\n \n );\n};\n\nexport default TaskAssignee;\n","import React from 'react';\nimport Select from 'react-select';\nimport styled from 'styled-components';\nimport { mixin } from 'shared/utils/styles';\nimport theme from 'App/ThemeStyles';\n\nfunction getBackgroundColor(isDisabled: boolean, isSelected: boolean, isFocused: boolean) {\n if (isDisabled) {\n return null;\n }\n if (isSelected) {\n return mixin.darken(theme.colors.bg.secondary, 0.25);\n }\n if (isFocused) {\n return mixin.darken(theme.colors.bg.secondary, 0.15);\n }\n return null;\n}\n\nexport const colourStyles = {\n control: (styles: any, data: any) => {\n return {\n ...styles,\n backgroundColor: data.isMenuOpen ? mixin.darken(theme.colors.bg.secondary, 0.15) : theme.colors.bg.secondary,\n boxShadow: data.menuIsOpen ? `${theme.colors.primary} 0px 0px 0px 1px` : 'none',\n borderRadius: '3px',\n borderWidth: '1px',\n borderStyle: 'solid',\n borderImage: 'initial',\n borderColor: theme.colors.alternate,\n ':hover': {\n boxShadow: `${theme.colors.primary} 0px 0px 0px 1px`,\n borderRadius: '3px',\n borderWidth: '1px',\n borderStyle: 'solid',\n borderImage: 'initial',\n borderColor: theme.colors.alternate,\n },\n ':active': {\n boxShadow: `${theme.colors.primary} 0px 0px 0px 1px`,\n borderRadius: '3px',\n borderWidth: '1px',\n borderStyle: 'solid',\n borderImage: 'initial',\n borderColor: `${theme.colors.primary}`,\n },\n };\n },\n menu: (styles: any) => {\n return {\n ...styles,\n backgroundColor: mixin.darken(theme.colors.bg.secondary, 0.15),\n };\n },\n dropdownIndicator: (styles: any) => ({ ...styles, color: '#c2c6dc', ':hover': { color: '#c2c6dc' } }),\n indicatorSeparator: (styles: any) => ({ ...styles, color: '#c2c6dc' }),\n option: (styles: any, { data, isDisabled, isFocused, isSelected }: any) => {\n return {\n ...styles,\n backgroundColor: getBackgroundColor(isDisabled, isSelected, isFocused),\n color: isDisabled ? '#ccc' : isSelected ? '#fff' : '#c2c6dc', // eslint-disable-line\n cursor: isDisabled ? 'not-allowed' : 'default',\n ':active': {\n ...styles[':active'],\n backgroundColor: !isDisabled && (isSelected ? mixin.darken(theme.colors.bg.secondary, 0.25) : '#fff'),\n },\n ':hover': {\n ...styles[':hover'],\n backgroundColor: !isDisabled && (isSelected ? theme.colors.primary : theme.colors.primary),\n },\n };\n },\n placeholder: (styles: any) => ({ ...styles, color: '#c2c6dc' }),\n clearIndicator: (styles: any) => ({ ...styles, color: '#c2c6dc', ':hover': { color: '#c2c6dc' } }),\n input: (styles: any) => ({\n ...styles,\n color: '#fff',\n }),\n singleValue: (styles: any) => {\n return {\n ...styles,\n color: '#fff',\n };\n },\n};\n\nexport const editorColourStyles = {\n ...colourStyles,\n input: (styles: any) => ({\n ...styles,\n color: '#000',\n }),\n singleValue: (styles: any) => {\n return {\n ...styles,\n color: '#000',\n };\n },\n menu: (styles: any) => {\n return {\n ...styles,\n backgroundColor: '#fff',\n };\n },\n indicatorsContainer: (styles: any) => {\n return {\n ...styles,\n display: 'none',\n };\n },\n container: (styles: any) => {\n return {\n ...styles,\n display: 'flex',\n flex: '1 1',\n };\n },\n control: (styles: any, data: any) => {\n return {\n ...styles,\n flex: '1 1',\n backgroundColor: 'transparent',\n boxShadow: 'none',\n borderRadius: '0',\n minHeight: '35px',\n border: '0',\n ':hover': {\n boxShadow: 'none',\n borderRadius: '0',\n },\n ':active': {\n boxShadow: 'none',\n borderRadius: '0',\n },\n };\n },\n};\n\nconst InputLabel = styled.span<{ width: string }>`\nwidth: ${props => props.width};\npadding-left: 0.7rem;\ncolor: ${props => props.theme.colors.primary};\nleft: 0;\ntop: 0;\ntransition: all 0.2s ease;\nposition: absolute;\nborder-radius: 5px;\noverflow: hidden;\nfont-size: 0.85rem;\ncursor: text;\nfont-size: 12px;\nuser-select: none;\npointer-events: none;\n}\n`;\n\nconst SelectContainer = styled.div`\n position: relative;\n padding-top: 24px;\n`;\n\ntype SelectProps = {\n label?: string;\n onChange: (e: any) => void;\n value: any;\n options: Array;\n className?: string;\n};\n\nconst SelectElement: React.FC = ({ onChange, value, options, label, className }) => {\n return (\n \n {\n onChange(e);\n }}\n value={value}\n styles={colourStyles}\n classNamePrefix=\"teamSelect\"\n options={options}\n />\n {label && {label}}\n \n );\n};\n\nexport default SelectElement;\n","import { gql } from '@apollo/client';\nimport * as Apollo from '@apollo/client';\nexport type Maybe = T | null;\nexport type Exact = { [K in keyof T]: T[K] };\nexport type MakeOptional = Omit & { [SubKey in K]?: Maybe };\nexport type MakeMaybe = Omit & { [SubKey in K]: Maybe };\nconst defaultOptions = {}\n/** All built-in and custom scalars, mapped to their actual values */\nexport type Scalars = {\n ID: string;\n String: string;\n Boolean: boolean;\n Int: number;\n Float: number;\n Time: any;\n UUID: string;\n Upload: any;\n};\n\n\n\nexport enum ActionLevel {\n Org = 'ORG',\n Team = 'TEAM',\n Project = 'PROJECT'\n}\n\nexport enum ActionType {\n TaskMemberAdded = 'TASK_MEMBER_ADDED'\n}\n\nexport enum ActivityType {\n TaskAdded = 'TASK_ADDED',\n TaskMoved = 'TASK_MOVED',\n TaskMarkedComplete = 'TASK_MARKED_COMPLETE',\n TaskMarkedIncomplete = 'TASK_MARKED_INCOMPLETE',\n TaskDueDateChanged = 'TASK_DUE_DATE_CHANGED',\n TaskDueDateAdded = 'TASK_DUE_DATE_ADDED',\n TaskDueDateRemoved = 'TASK_DUE_DATE_REMOVED',\n TaskChecklistChanged = 'TASK_CHECKLIST_CHANGED',\n TaskChecklistAdded = 'TASK_CHECKLIST_ADDED',\n TaskChecklistRemoved = 'TASK_CHECKLIST_REMOVED'\n}\n\nexport enum ActorType {\n User = 'USER'\n}\n\nexport type AddTaskLabelInput = {\n taskID: Scalars['UUID'];\n projectLabelID: Scalars['UUID'];\n};\n\nexport type AssignTaskInput = {\n taskID: Scalars['UUID'];\n userID: Scalars['UUID'];\n};\n\nexport type CausedBy = {\n __typename?: 'CausedBy';\n id: Scalars['ID'];\n fullName: Scalars['String'];\n profileIcon?: Maybe;\n};\n\nexport type ChecklistBadge = {\n __typename?: 'ChecklistBadge';\n complete: Scalars['Int'];\n total: Scalars['Int'];\n};\n\nexport type CreateTaskChecklist = {\n taskID: Scalars['UUID'];\n name: Scalars['String'];\n position: Scalars['Float'];\n};\n\nexport type CreateTaskChecklistItem = {\n taskChecklistID: Scalars['UUID'];\n name: Scalars['String'];\n position: Scalars['Float'];\n};\n\nexport type CreateTaskComment = {\n taskID: Scalars['UUID'];\n message: Scalars['String'];\n};\n\nexport type CreateTaskCommentPayload = {\n __typename?: 'CreateTaskCommentPayload';\n taskID: Scalars['UUID'];\n comment: TaskComment;\n};\n\nexport type CreateTeamMember = {\n userID: Scalars['UUID'];\n teamID: Scalars['UUID'];\n};\n\nexport type CreateTeamMemberPayload = {\n __typename?: 'CreateTeamMemberPayload';\n team: Team;\n teamMember: Member;\n};\n\nexport type CreatedBy = {\n __typename?: 'CreatedBy';\n id: Scalars['ID'];\n fullName: Scalars['String'];\n profileIcon: ProfileIcon;\n};\n\nexport type DeleteInvitedProjectMember = {\n projectID: Scalars['UUID'];\n email: Scalars['String'];\n};\n\nexport type DeleteInvitedProjectMemberPayload = {\n __typename?: 'DeleteInvitedProjectMemberPayload';\n invitedMember: InvitedMember;\n};\n\nexport type DeleteInvitedUserAccount = {\n invitedUserID: Scalars['UUID'];\n};\n\nexport type DeleteInvitedUserAccountPayload = {\n __typename?: 'DeleteInvitedUserAccountPayload';\n invitedUser: InvitedUserAccount;\n};\n\nexport type DeleteProject = {\n projectID: Scalars['UUID'];\n};\n\nexport type DeleteProjectLabel = {\n projectLabelID: Scalars['UUID'];\n};\n\nexport type DeleteProjectMember = {\n projectID: Scalars['UUID'];\n userID: Scalars['UUID'];\n};\n\nexport type DeleteProjectMemberPayload = {\n __typename?: 'DeleteProjectMemberPayload';\n ok: Scalars['Boolean'];\n member: Member;\n projectID: Scalars['UUID'];\n};\n\nexport type DeleteProjectPayload = {\n __typename?: 'DeleteProjectPayload';\n ok: Scalars['Boolean'];\n project: Project;\n};\n\nexport type DeleteTaskChecklist = {\n taskChecklistID: Scalars['UUID'];\n};\n\nexport type DeleteTaskChecklistItem = {\n taskChecklistItemID: Scalars['UUID'];\n};\n\nexport type DeleteTaskChecklistItemPayload = {\n __typename?: 'DeleteTaskChecklistItemPayload';\n ok: Scalars['Boolean'];\n taskChecklistItem: TaskChecklistItem;\n};\n\nexport type DeleteTaskChecklistPayload = {\n __typename?: 'DeleteTaskChecklistPayload';\n ok: Scalars['Boolean'];\n taskChecklist: TaskChecklist;\n};\n\nexport type DeleteTaskComment = {\n commentID: Scalars['UUID'];\n};\n\nexport type DeleteTaskCommentPayload = {\n __typename?: 'DeleteTaskCommentPayload';\n taskID: Scalars['UUID'];\n commentID: Scalars['UUID'];\n};\n\nexport type DeleteTaskGroupInput = {\n taskGroupID: Scalars['UUID'];\n};\n\nexport type DeleteTaskGroupPayload = {\n __typename?: 'DeleteTaskGroupPayload';\n ok: Scalars['Boolean'];\n affectedRows: Scalars['Int'];\n taskGroup: TaskGroup;\n};\n\nexport type DeleteTaskGroupTasks = {\n taskGroupID: Scalars['UUID'];\n};\n\nexport type DeleteTaskGroupTasksPayload = {\n __typename?: 'DeleteTaskGroupTasksPayload';\n taskGroupID: Scalars['UUID'];\n tasks: Array;\n};\n\nexport type DeleteTaskInput = {\n taskID: Scalars['UUID'];\n};\n\nexport type DeleteTaskPayload = {\n __typename?: 'DeleteTaskPayload';\n taskID: Scalars['UUID'];\n};\n\nexport type DeleteTeam = {\n teamID: Scalars['UUID'];\n};\n\nexport type DeleteTeamMember = {\n teamID: Scalars['UUID'];\n userID: Scalars['UUID'];\n newOwnerID?: Maybe;\n};\n\nexport type DeleteTeamMemberPayload = {\n __typename?: 'DeleteTeamMemberPayload';\n teamID: Scalars['UUID'];\n userID: Scalars['UUID'];\n affectedProjects: Array;\n};\n\nexport type DeleteTeamPayload = {\n __typename?: 'DeleteTeamPayload';\n ok: Scalars['Boolean'];\n team: Team;\n projects: Array;\n};\n\nexport type DeleteUserAccount = {\n userID: Scalars['UUID'];\n newOwnerID?: Maybe;\n};\n\nexport type DeleteUserAccountPayload = {\n __typename?: 'DeleteUserAccountPayload';\n ok: Scalars['Boolean'];\n userAccount: UserAccount;\n};\n\nexport type DuplicateTaskGroup = {\n projectID: Scalars['UUID'];\n taskGroupID: Scalars['UUID'];\n name: Scalars['String'];\n position: Scalars['Float'];\n};\n\nexport type DuplicateTaskGroupPayload = {\n __typename?: 'DuplicateTaskGroupPayload';\n taskGroup: TaskGroup;\n};\n\nexport enum EntityType {\n Task = 'TASK'\n}\n\nexport type FindProject = {\n projectID: Scalars['UUID'];\n};\n\nexport type FindTask = {\n taskID: Scalars['UUID'];\n};\n\nexport type FindTeam = {\n teamID: Scalars['UUID'];\n};\n\nexport type FindUser = {\n userID: Scalars['UUID'];\n};\n\nexport type InviteProjectMembers = {\n projectID: Scalars['UUID'];\n members: Array;\n};\n\nexport type InviteProjectMembersPayload = {\n __typename?: 'InviteProjectMembersPayload';\n ok: Scalars['Boolean'];\n projectID: Scalars['UUID'];\n members: Array;\n invitedMembers: Array;\n};\n\nexport type InvitedMember = {\n __typename?: 'InvitedMember';\n email: Scalars['String'];\n invitedOn: Scalars['Time'];\n};\n\nexport type InvitedUserAccount = {\n __typename?: 'InvitedUserAccount';\n id: Scalars['ID'];\n email: Scalars['String'];\n invitedOn: Scalars['Time'];\n member: MemberList;\n};\n\nexport type LabelColor = {\n __typename?: 'LabelColor';\n id: Scalars['ID'];\n name: Scalars['String'];\n position: Scalars['Float'];\n colorHex: Scalars['String'];\n};\n\nexport type LogoutUser = {\n userID: Scalars['UUID'];\n};\n\nexport type MePayload = {\n __typename?: 'MePayload';\n user: UserAccount;\n organization?: Maybe;\n teamRoles: Array;\n projectRoles: Array;\n};\n\nexport type Member = {\n __typename?: 'Member';\n id: Scalars['ID'];\n role: Role;\n fullName: Scalars['String'];\n username: Scalars['String'];\n profileIcon: ProfileIcon;\n owned: OwnedList;\n member: MemberList;\n};\n\nexport type MemberInvite = {\n userID?: Maybe;\n email?: Maybe;\n};\n\nexport type MemberList = {\n __typename?: 'MemberList';\n teams: Array;\n projects: Array;\n};\n\nexport type MemberSearchFilter = {\n searchFilter: Scalars['String'];\n projectID?: Maybe;\n};\n\nexport type MemberSearchResult = {\n __typename?: 'MemberSearchResult';\n similarity: Scalars['Int'];\n id: Scalars['String'];\n user?: Maybe;\n status: ShareStatus;\n};\n\nexport type Mutation = {\n __typename?: 'Mutation';\n addTaskLabel: Task;\n assignTask: Task;\n clearProfileAvatar: UserAccount;\n createProject: Project;\n createProjectLabel: ProjectLabel;\n createTask: Task;\n createTaskChecklist: TaskChecklist;\n createTaskChecklistItem: TaskChecklistItem;\n createTaskComment: CreateTaskCommentPayload;\n createTaskGroup: TaskGroup;\n createTeam: Team;\n createTeamMember: CreateTeamMemberPayload;\n createUserAccount: UserAccount;\n deleteInvitedProjectMember: DeleteInvitedProjectMemberPayload;\n deleteInvitedUserAccount: DeleteInvitedUserAccountPayload;\n deleteProject: DeleteProjectPayload;\n deleteProjectLabel: ProjectLabel;\n deleteProjectMember: DeleteProjectMemberPayload;\n deleteTask: DeleteTaskPayload;\n deleteTaskChecklist: DeleteTaskChecklistPayload;\n deleteTaskChecklistItem: DeleteTaskChecklistItemPayload;\n deleteTaskComment: DeleteTaskCommentPayload;\n deleteTaskGroup: DeleteTaskGroupPayload;\n deleteTaskGroupTasks: DeleteTaskGroupTasksPayload;\n deleteTeam: DeleteTeamPayload;\n deleteTeamMember: DeleteTeamMemberPayload;\n deleteUserAccount: DeleteUserAccountPayload;\n duplicateTaskGroup: DuplicateTaskGroupPayload;\n inviteProjectMembers: InviteProjectMembersPayload;\n logoutUser: Scalars['Boolean'];\n removeTaskLabel: Task;\n setTaskChecklistItemComplete: TaskChecklistItem;\n setTaskComplete: Task;\n sortTaskGroup: SortTaskGroupPayload;\n toggleProjectVisibility: ToggleProjectVisibilityPayload;\n toggleTaskLabel: ToggleTaskLabelPayload;\n unassignTask: Task;\n updateProjectLabel: ProjectLabel;\n updateProjectLabelColor: ProjectLabel;\n updateProjectLabelName: ProjectLabel;\n updateProjectMemberRole: UpdateProjectMemberRolePayload;\n updateProjectName: Project;\n updateTaskChecklistItemLocation: UpdateTaskChecklistItemLocationPayload;\n updateTaskChecklistItemName: TaskChecklistItem;\n updateTaskChecklistLocation: UpdateTaskChecklistLocationPayload;\n updateTaskChecklistName: TaskChecklist;\n updateTaskComment: UpdateTaskCommentPayload;\n updateTaskDescription: Task;\n updateTaskDueDate: Task;\n updateTaskGroupLocation: TaskGroup;\n updateTaskGroupName: TaskGroup;\n updateTaskLocation: UpdateTaskLocationPayload;\n updateTaskName: Task;\n updateTeamMemberRole: UpdateTeamMemberRolePayload;\n updateUserInfo: UpdateUserInfoPayload;\n updateUserPassword: UpdateUserPasswordPayload;\n updateUserRole: UpdateUserRolePayload;\n};\n\n\nexport type MutationAddTaskLabelArgs = {\n input?: Maybe;\n};\n\n\nexport type MutationAssignTaskArgs = {\n input?: Maybe;\n};\n\n\nexport type MutationCreateProjectArgs = {\n input: NewProject;\n};\n\n\nexport type MutationCreateProjectLabelArgs = {\n input: NewProjectLabel;\n};\n\n\nexport type MutationCreateTaskArgs = {\n input: NewTask;\n};\n\n\nexport type MutationCreateTaskChecklistArgs = {\n input: CreateTaskChecklist;\n};\n\n\nexport type MutationCreateTaskChecklistItemArgs = {\n input: CreateTaskChecklistItem;\n};\n\n\nexport type MutationCreateTaskCommentArgs = {\n input?: Maybe;\n};\n\n\nexport type MutationCreateTaskGroupArgs = {\n input: NewTaskGroup;\n};\n\n\nexport type MutationCreateTeamArgs = {\n input: NewTeam;\n};\n\n\nexport type MutationCreateTeamMemberArgs = {\n input: CreateTeamMember;\n};\n\n\nexport type MutationCreateUserAccountArgs = {\n input: NewUserAccount;\n};\n\n\nexport type MutationDeleteInvitedProjectMemberArgs = {\n input: DeleteInvitedProjectMember;\n};\n\n\nexport type MutationDeleteInvitedUserAccountArgs = {\n input: DeleteInvitedUserAccount;\n};\n\n\nexport type MutationDeleteProjectArgs = {\n input: DeleteProject;\n};\n\n\nexport type MutationDeleteProjectLabelArgs = {\n input: DeleteProjectLabel;\n};\n\n\nexport type MutationDeleteProjectMemberArgs = {\n input: DeleteProjectMember;\n};\n\n\nexport type MutationDeleteTaskArgs = {\n input: DeleteTaskInput;\n};\n\n\nexport type MutationDeleteTaskChecklistArgs = {\n input: DeleteTaskChecklist;\n};\n\n\nexport type MutationDeleteTaskChecklistItemArgs = {\n input: DeleteTaskChecklistItem;\n};\n\n\nexport type MutationDeleteTaskCommentArgs = {\n input?: Maybe;\n};\n\n\nexport type MutationDeleteTaskGroupArgs = {\n input: DeleteTaskGroupInput;\n};\n\n\nexport type MutationDeleteTaskGroupTasksArgs = {\n input: DeleteTaskGroupTasks;\n};\n\n\nexport type MutationDeleteTeamArgs = {\n input: DeleteTeam;\n};\n\n\nexport type MutationDeleteTeamMemberArgs = {\n input: DeleteTeamMember;\n};\n\n\nexport type MutationDeleteUserAccountArgs = {\n input: DeleteUserAccount;\n};\n\n\nexport type MutationDuplicateTaskGroupArgs = {\n input: DuplicateTaskGroup;\n};\n\n\nexport type MutationInviteProjectMembersArgs = {\n input: InviteProjectMembers;\n};\n\n\nexport type MutationLogoutUserArgs = {\n input: LogoutUser;\n};\n\n\nexport type MutationRemoveTaskLabelArgs = {\n input?: Maybe;\n};\n\n\nexport type MutationSetTaskChecklistItemCompleteArgs = {\n input: SetTaskChecklistItemComplete;\n};\n\n\nexport type MutationSetTaskCompleteArgs = {\n input: SetTaskComplete;\n};\n\n\nexport type MutationSortTaskGroupArgs = {\n input: SortTaskGroup;\n};\n\n\nexport type MutationToggleProjectVisibilityArgs = {\n input: ToggleProjectVisibility;\n};\n\n\nexport type MutationToggleTaskLabelArgs = {\n input: ToggleTaskLabelInput;\n};\n\n\nexport type MutationUnassignTaskArgs = {\n input?: Maybe;\n};\n\n\nexport type MutationUpdateProjectLabelArgs = {\n input: UpdateProjectLabel;\n};\n\n\nexport type MutationUpdateProjectLabelColorArgs = {\n input: UpdateProjectLabelColor;\n};\n\n\nexport type MutationUpdateProjectLabelNameArgs = {\n input: UpdateProjectLabelName;\n};\n\n\nexport type MutationUpdateProjectMemberRoleArgs = {\n input: UpdateProjectMemberRole;\n};\n\n\nexport type MutationUpdateProjectNameArgs = {\n input?: Maybe;\n};\n\n\nexport type MutationUpdateTaskChecklistItemLocationArgs = {\n input: UpdateTaskChecklistItemLocation;\n};\n\n\nexport type MutationUpdateTaskChecklistItemNameArgs = {\n input: UpdateTaskChecklistItemName;\n};\n\n\nexport type MutationUpdateTaskChecklistLocationArgs = {\n input: UpdateTaskChecklistLocation;\n};\n\n\nexport type MutationUpdateTaskChecklistNameArgs = {\n input: UpdateTaskChecklistName;\n};\n\n\nexport type MutationUpdateTaskCommentArgs = {\n input?: Maybe;\n};\n\n\nexport type MutationUpdateTaskDescriptionArgs = {\n input: UpdateTaskDescriptionInput;\n};\n\n\nexport type MutationUpdateTaskDueDateArgs = {\n input: UpdateTaskDueDate;\n};\n\n\nexport type MutationUpdateTaskGroupLocationArgs = {\n input: NewTaskGroupLocation;\n};\n\n\nexport type MutationUpdateTaskGroupNameArgs = {\n input: UpdateTaskGroupName;\n};\n\n\nexport type MutationUpdateTaskLocationArgs = {\n input: NewTaskLocation;\n};\n\n\nexport type MutationUpdateTaskNameArgs = {\n input: UpdateTaskName;\n};\n\n\nexport type MutationUpdateTeamMemberRoleArgs = {\n input: UpdateTeamMemberRole;\n};\n\n\nexport type MutationUpdateUserInfoArgs = {\n input: UpdateUserInfo;\n};\n\n\nexport type MutationUpdateUserPasswordArgs = {\n input: UpdateUserPassword;\n};\n\n\nexport type MutationUpdateUserRoleArgs = {\n input: UpdateUserRole;\n};\n\nexport type MyTasks = {\n status: MyTasksStatus;\n sort: MyTasksSort;\n};\n\nexport type MyTasksPayload = {\n __typename?: 'MyTasksPayload';\n tasks: Array;\n projects: Array;\n};\n\nexport enum MyTasksSort {\n None = 'NONE',\n Project = 'PROJECT',\n DueDate = 'DUE_DATE'\n}\n\nexport enum MyTasksStatus {\n All = 'ALL',\n Incomplete = 'INCOMPLETE',\n CompleteAll = 'COMPLETE_ALL',\n CompleteToday = 'COMPLETE_TODAY',\n CompleteYesterday = 'COMPLETE_YESTERDAY',\n CompleteOneWeek = 'COMPLETE_ONE_WEEK',\n CompleteTwoWeek = 'COMPLETE_TWO_WEEK',\n CompleteThreeWeek = 'COMPLETE_THREE_WEEK'\n}\n\nexport type NewProject = {\n teamID?: Maybe;\n name: Scalars['String'];\n};\n\nexport type NewProjectLabel = {\n projectID: Scalars['UUID'];\n labelColorID: Scalars['UUID'];\n name?: Maybe;\n};\n\nexport type NewTask = {\n taskGroupID: Scalars['UUID'];\n name: Scalars['String'];\n position: Scalars['Float'];\n assigned?: Maybe>;\n};\n\nexport type NewTaskGroup = {\n projectID: Scalars['UUID'];\n name: Scalars['String'];\n position: Scalars['Float'];\n};\n\nexport type NewTaskGroupLocation = {\n taskGroupID: Scalars['UUID'];\n position: Scalars['Float'];\n};\n\nexport type NewTaskLocation = {\n taskID: Scalars['UUID'];\n taskGroupID: Scalars['UUID'];\n position: Scalars['Float'];\n};\n\nexport type NewTeam = {\n name: Scalars['String'];\n organizationID: Scalars['UUID'];\n};\n\nexport type NewUserAccount = {\n username: Scalars['String'];\n email: Scalars['String'];\n fullName: Scalars['String'];\n initials: Scalars['String'];\n password: Scalars['String'];\n roleCode: Scalars['String'];\n};\n\nexport type Notification = {\n __typename?: 'Notification';\n id: Scalars['ID'];\n entity: NotificationEntity;\n actionType: ActionType;\n actor: NotificationActor;\n read: Scalars['Boolean'];\n createdAt: Scalars['Time'];\n};\n\nexport type NotificationActor = {\n __typename?: 'NotificationActor';\n id: Scalars['UUID'];\n type: ActorType;\n name: Scalars['String'];\n};\n\nexport type NotificationEntity = {\n __typename?: 'NotificationEntity';\n id: Scalars['UUID'];\n type: EntityType;\n name: Scalars['String'];\n};\n\nexport enum ObjectType {\n Org = 'ORG',\n Team = 'TEAM',\n Project = 'PROJECT',\n Task = 'TASK',\n TaskGroup = 'TASK_GROUP',\n TaskChecklist = 'TASK_CHECKLIST',\n TaskChecklistItem = 'TASK_CHECKLIST_ITEM'\n}\n\nexport type Organization = {\n __typename?: 'Organization';\n id: Scalars['ID'];\n name: Scalars['String'];\n};\n\nexport type OwnedList = {\n __typename?: 'OwnedList';\n teams: Array;\n projects: Array;\n};\n\nexport type OwnersList = {\n __typename?: 'OwnersList';\n projects: Array;\n teams: Array;\n};\n\nexport type ProfileIcon = {\n __typename?: 'ProfileIcon';\n url?: Maybe;\n initials?: Maybe;\n bgColor?: Maybe;\n};\n\nexport type Project = {\n __typename?: 'Project';\n id: Scalars['ID'];\n createdAt: Scalars['Time'];\n name: Scalars['String'];\n team?: Maybe;\n taskGroups: Array;\n members: Array;\n invitedMembers: Array;\n publicOn?: Maybe;\n permission: ProjectPermission;\n labels: Array;\n};\n\nexport type ProjectLabel = {\n __typename?: 'ProjectLabel';\n id: Scalars['ID'];\n createdDate: Scalars['Time'];\n labelColor: LabelColor;\n name?: Maybe;\n};\n\nexport type ProjectPermission = {\n __typename?: 'ProjectPermission';\n team: RoleCode;\n project: RoleCode;\n org: RoleCode;\n};\n\nexport type ProjectRole = {\n __typename?: 'ProjectRole';\n projectID: Scalars['UUID'];\n roleCode: RoleCode;\n};\n\nexport type ProjectTaskMapping = {\n __typename?: 'ProjectTaskMapping';\n projectID: Scalars['UUID'];\n taskID: Scalars['UUID'];\n};\n\nexport type ProjectsFilter = {\n teamID?: Maybe;\n};\n\nexport type Query = {\n __typename?: 'Query';\n findProject: Project;\n findTask: Task;\n findTeam: Team;\n findUser: UserAccount;\n invitedUsers: Array;\n labelColors: Array;\n me?: Maybe;\n myTasks: MyTasksPayload;\n notifications: Array;\n organizations: Array;\n projects: Array;\n searchMembers: Array;\n taskGroups: Array;\n teams: Array;\n users: Array;\n};\n\n\nexport type QueryFindProjectArgs = {\n input: FindProject;\n};\n\n\nexport type QueryFindTaskArgs = {\n input: FindTask;\n};\n\n\nexport type QueryFindTeamArgs = {\n input: FindTeam;\n};\n\n\nexport type QueryFindUserArgs = {\n input: FindUser;\n};\n\n\nexport type QueryMyTasksArgs = {\n input: MyTasks;\n};\n\n\nexport type QueryProjectsArgs = {\n input?: Maybe;\n};\n\n\nexport type QuerySearchMembersArgs = {\n input: MemberSearchFilter;\n};\n\nexport type RemoveTaskLabelInput = {\n taskID: Scalars['UUID'];\n taskLabelID: Scalars['UUID'];\n};\n\nexport type Role = {\n __typename?: 'Role';\n code: Scalars['String'];\n name: Scalars['String'];\n};\n\nexport enum RoleCode {\n Owner = 'owner',\n Admin = 'admin',\n Member = 'member',\n Observer = 'observer'\n}\n\nexport enum RoleLevel {\n Admin = 'ADMIN',\n Member = 'MEMBER'\n}\n\nexport type SetTaskChecklistItemComplete = {\n taskChecklistItemID: Scalars['UUID'];\n complete: Scalars['Boolean'];\n};\n\nexport type SetTaskComplete = {\n taskID: Scalars['UUID'];\n complete: Scalars['Boolean'];\n};\n\nexport enum ShareStatus {\n Invited = 'INVITED',\n Joined = 'JOINED'\n}\n\nexport type SortTaskGroup = {\n taskGroupID: Scalars['UUID'];\n tasks: Array;\n};\n\nexport type SortTaskGroupPayload = {\n __typename?: 'SortTaskGroupPayload';\n taskGroupID: Scalars['UUID'];\n tasks: Array;\n};\n\nexport type Task = {\n __typename?: 'Task';\n id: Scalars['ID'];\n taskGroup: TaskGroup;\n createdAt: Scalars['Time'];\n name: Scalars['String'];\n position: Scalars['Float'];\n description?: Maybe;\n dueDate?: Maybe;\n hasTime: Scalars['Boolean'];\n complete: Scalars['Boolean'];\n completedAt?: Maybe;\n assigned: Array;\n labels: Array;\n checklists: Array;\n badges: TaskBadges;\n activity: Array;\n comments: Array;\n};\n\nexport type TaskActivity = {\n __typename?: 'TaskActivity';\n id: Scalars['ID'];\n type: ActivityType;\n data: Array;\n causedBy: CausedBy;\n createdAt: Scalars['Time'];\n};\n\nexport type TaskActivityData = {\n __typename?: 'TaskActivityData';\n name: Scalars['String'];\n value: Scalars['String'];\n};\n\nexport type TaskBadges = {\n __typename?: 'TaskBadges';\n checklist?: Maybe;\n};\n\nexport type TaskChecklist = {\n __typename?: 'TaskChecklist';\n id: Scalars['ID'];\n name: Scalars['String'];\n position: Scalars['Float'];\n items: Array;\n};\n\nexport type TaskChecklistItem = {\n __typename?: 'TaskChecklistItem';\n id: Scalars['ID'];\n name: Scalars['String'];\n taskChecklistID: Scalars['UUID'];\n complete: Scalars['Boolean'];\n position: Scalars['Float'];\n dueDate: Scalars['Time'];\n};\n\nexport type TaskComment = {\n __typename?: 'TaskComment';\n id: Scalars['ID'];\n createdAt: Scalars['Time'];\n updatedAt?: Maybe;\n message: Scalars['String'];\n createdBy: CreatedBy;\n pinned: Scalars['Boolean'];\n};\n\nexport type TaskGroup = {\n __typename?: 'TaskGroup';\n id: Scalars['ID'];\n projectID: Scalars['String'];\n createdAt: Scalars['Time'];\n name: Scalars['String'];\n position: Scalars['Float'];\n tasks: Array;\n};\n\nexport type TaskLabel = {\n __typename?: 'TaskLabel';\n id: Scalars['ID'];\n projectLabel: ProjectLabel;\n assignedDate: Scalars['Time'];\n};\n\nexport type TaskPositionUpdate = {\n taskID: Scalars['UUID'];\n position: Scalars['Float'];\n};\n\nexport type Team = {\n __typename?: 'Team';\n id: Scalars['ID'];\n createdAt: Scalars['Time'];\n name: Scalars['String'];\n permission: TeamPermission;\n members: Array;\n};\n\nexport type TeamPermission = {\n __typename?: 'TeamPermission';\n team: RoleCode;\n org: RoleCode;\n};\n\nexport type TeamRole = {\n __typename?: 'TeamRole';\n teamID: Scalars['UUID'];\n roleCode: RoleCode;\n};\n\n\nexport type ToggleProjectVisibility = {\n projectID: Scalars['UUID'];\n isPublic: Scalars['Boolean'];\n};\n\nexport type ToggleProjectVisibilityPayload = {\n __typename?: 'ToggleProjectVisibilityPayload';\n project: Project;\n};\n\nexport type ToggleTaskLabelInput = {\n taskID: Scalars['UUID'];\n projectLabelID: Scalars['UUID'];\n};\n\nexport type ToggleTaskLabelPayload = {\n __typename?: 'ToggleTaskLabelPayload';\n active: Scalars['Boolean'];\n task: Task;\n};\n\n\nexport type UnassignTaskInput = {\n taskID: Scalars['UUID'];\n userID: Scalars['UUID'];\n};\n\nexport type UpdateProjectLabel = {\n projectLabelID: Scalars['UUID'];\n labelColorID: Scalars['UUID'];\n name: Scalars['String'];\n};\n\nexport type UpdateProjectLabelColor = {\n projectLabelID: Scalars['UUID'];\n labelColorID: Scalars['UUID'];\n};\n\nexport type UpdateProjectLabelName = {\n projectLabelID: Scalars['UUID'];\n name: Scalars['String'];\n};\n\nexport type UpdateProjectMemberRole = {\n projectID: Scalars['UUID'];\n userID: Scalars['UUID'];\n roleCode: RoleCode;\n};\n\nexport type UpdateProjectMemberRolePayload = {\n __typename?: 'UpdateProjectMemberRolePayload';\n ok: Scalars['Boolean'];\n member: Member;\n};\n\nexport type UpdateProjectName = {\n projectID: Scalars['UUID'];\n name: Scalars['String'];\n};\n\nexport type UpdateTaskChecklistItemLocation = {\n taskChecklistID: Scalars['UUID'];\n taskChecklistItemID: Scalars['UUID'];\n position: Scalars['Float'];\n};\n\nexport type UpdateTaskChecklistItemLocationPayload = {\n __typename?: 'UpdateTaskChecklistItemLocationPayload';\n taskChecklistID: Scalars['UUID'];\n prevChecklistID: Scalars['UUID'];\n checklistItem: TaskChecklistItem;\n};\n\nexport type UpdateTaskChecklistItemName = {\n taskChecklistItemID: Scalars['UUID'];\n name: Scalars['String'];\n};\n\nexport type UpdateTaskChecklistLocation = {\n taskChecklistID: Scalars['UUID'];\n position: Scalars['Float'];\n};\n\nexport type UpdateTaskChecklistLocationPayload = {\n __typename?: 'UpdateTaskChecklistLocationPayload';\n checklist: TaskChecklist;\n};\n\nexport type UpdateTaskChecklistName = {\n taskChecklistID: Scalars['UUID'];\n name: Scalars['String'];\n};\n\nexport type UpdateTaskComment = {\n commentID: Scalars['UUID'];\n message: Scalars['String'];\n};\n\nexport type UpdateTaskCommentPayload = {\n __typename?: 'UpdateTaskCommentPayload';\n taskID: Scalars['UUID'];\n comment: TaskComment;\n};\n\nexport type UpdateTaskDescriptionInput = {\n taskID: Scalars['UUID'];\n description: Scalars['String'];\n};\n\nexport type UpdateTaskDueDate = {\n taskID: Scalars['UUID'];\n hasTime: Scalars['Boolean'];\n dueDate?: Maybe;\n};\n\nexport type UpdateTaskGroupName = {\n taskGroupID: Scalars['UUID'];\n name: Scalars['String'];\n};\n\nexport type UpdateTaskLocationPayload = {\n __typename?: 'UpdateTaskLocationPayload';\n previousTaskGroupID: Scalars['UUID'];\n task: Task;\n};\n\nexport type UpdateTaskName = {\n taskID: Scalars['UUID'];\n name: Scalars['String'];\n};\n\nexport type UpdateTeamMemberRole = {\n teamID: Scalars['UUID'];\n userID: Scalars['UUID'];\n roleCode: RoleCode;\n};\n\nexport type UpdateTeamMemberRolePayload = {\n __typename?: 'UpdateTeamMemberRolePayload';\n ok: Scalars['Boolean'];\n teamID: Scalars['UUID'];\n member: Member;\n};\n\nexport type UpdateUserInfo = {\n name: Scalars['String'];\n initials: Scalars['String'];\n email: Scalars['String'];\n bio: Scalars['String'];\n};\n\nexport type UpdateUserInfoPayload = {\n __typename?: 'UpdateUserInfoPayload';\n user: UserAccount;\n};\n\nexport type UpdateUserPassword = {\n userID: Scalars['UUID'];\n password: Scalars['String'];\n};\n\nexport type UpdateUserPasswordPayload = {\n __typename?: 'UpdateUserPasswordPayload';\n ok: Scalars['Boolean'];\n user: UserAccount;\n};\n\nexport type UpdateUserRole = {\n userID: Scalars['UUID'];\n roleCode: RoleCode;\n};\n\nexport type UpdateUserRolePayload = {\n __typename?: 'UpdateUserRolePayload';\n user: UserAccount;\n};\n\n\nexport type UserAccount = {\n __typename?: 'UserAccount';\n id: Scalars['ID'];\n email: Scalars['String'];\n createdAt: Scalars['Time'];\n fullName: Scalars['String'];\n initials: Scalars['String'];\n bio: Scalars['String'];\n role: Role;\n username: Scalars['String'];\n profileIcon: ProfileIcon;\n owned: OwnedList;\n member: MemberList;\n};\n\nexport type AssignTaskMutationVariables = Exact<{\n taskID: Scalars['UUID'];\n userID: Scalars['UUID'];\n}>;\n\n\nexport type AssignTaskMutation = (\n { __typename?: 'Mutation' }\n & { assignTask: (\n { __typename?: 'Task' }\n & Pick\n & { assigned: Array<(\n { __typename?: 'Member' }\n & Pick\n )> }\n ) }\n);\n\nexport type ClearProfileAvatarMutationVariables = Exact<{ [key: string]: never; }>;\n\n\nexport type ClearProfileAvatarMutation = (\n { __typename?: 'Mutation' }\n & { clearProfileAvatar: (\n { __typename?: 'UserAccount' }\n & Pick\n & { profileIcon: (\n { __typename?: 'ProfileIcon' }\n & Pick\n ) }\n ) }\n);\n\nexport type CreateProjectMutationVariables = Exact<{\n teamID?: Maybe;\n name: Scalars['String'];\n}>;\n\n\nexport type CreateProjectMutation = (\n { __typename?: 'Mutation' }\n & { createProject: (\n { __typename?: 'Project' }\n & Pick\n & { team?: Maybe<(\n { __typename?: 'Team' }\n & Pick\n )> }\n ) }\n);\n\nexport type CreateProjectLabelMutationVariables = Exact<{\n projectID: Scalars['UUID'];\n labelColorID: Scalars['UUID'];\n name: Scalars['String'];\n}>;\n\n\nexport type CreateProjectLabelMutation = (\n { __typename?: 'Mutation' }\n & { createProjectLabel: (\n { __typename?: 'ProjectLabel' }\n & Pick\n & { labelColor: (\n { __typename?: 'LabelColor' }\n & Pick\n ) }\n ) }\n);\n\nexport type CreateTaskGroupMutationVariables = Exact<{\n projectID: Scalars['UUID'];\n name: Scalars['String'];\n position: Scalars['Float'];\n}>;\n\n\nexport type CreateTaskGroupMutation = (\n { __typename?: 'Mutation' }\n & { createTaskGroup: (\n { __typename?: 'TaskGroup' }\n & Pick\n ) }\n);\n\nexport type DeleteProjectLabelMutationVariables = Exact<{\n projectLabelID: Scalars['UUID'];\n}>;\n\n\nexport type DeleteProjectLabelMutation = (\n { __typename?: 'Mutation' }\n & { deleteProjectLabel: (\n { __typename?: 'ProjectLabel' }\n & Pick\n ) }\n);\n\nexport type DeleteTaskMutationVariables = Exact<{\n taskID: Scalars['UUID'];\n}>;\n\n\nexport type DeleteTaskMutation = (\n { __typename?: 'Mutation' }\n & { deleteTask: (\n { __typename?: 'DeleteTaskPayload' }\n & Pick\n ) }\n);\n\nexport type DeleteTaskGroupMutationVariables = Exact<{\n taskGroupID: Scalars['UUID'];\n}>;\n\n\nexport type DeleteTaskGroupMutation = (\n { __typename?: 'Mutation' }\n & { deleteTaskGroup: (\n { __typename?: 'DeleteTaskGroupPayload' }\n & Pick\n & { taskGroup: (\n { __typename?: 'TaskGroup' }\n & Pick\n & { tasks: Array<(\n { __typename?: 'Task' }\n & Pick\n )> }\n ) }\n ) }\n);\n\nexport type FindProjectQueryVariables = Exact<{\n projectID: Scalars['UUID'];\n}>;\n\n\nexport type FindProjectQuery = (\n { __typename?: 'Query' }\n & { findProject: (\n { __typename?: 'Project' }\n & Pick\n & { team?: Maybe<(\n { __typename?: 'Team' }\n & Pick\n )>, members: Array<(\n { __typename?: 'Member' }\n & Pick\n & { role: (\n { __typename?: 'Role' }\n & Pick\n ), profileIcon: (\n { __typename?: 'ProfileIcon' }\n & Pick\n ) }\n )>, invitedMembers: Array<(\n { __typename?: 'InvitedMember' }\n & Pick\n )>, labels: Array<(\n { __typename?: 'ProjectLabel' }\n & Pick\n & { labelColor: (\n { __typename?: 'LabelColor' }\n & Pick\n ) }\n )>, taskGroups: Array<(\n { __typename?: 'TaskGroup' }\n & Pick\n & { tasks: Array<(\n { __typename?: 'Task' }\n & TaskFieldsFragment\n )> }\n )> }\n ), labelColors: Array<(\n { __typename?: 'LabelColor' }\n & Pick\n )>, users: Array<(\n { __typename?: 'UserAccount' }\n & Pick\n & { role: (\n { __typename?: 'Role' }\n & Pick\n ), profileIcon: (\n { __typename?: 'ProfileIcon' }\n & Pick\n ), owned: (\n { __typename?: 'OwnedList' }\n & { teams: Array<(\n { __typename?: 'Team' }\n & Pick\n )>, projects: Array<(\n { __typename?: 'Project' }\n & Pick\n )> }\n ), member: (\n { __typename?: 'MemberList' }\n & { teams: Array<(\n { __typename?: 'Team' }\n & Pick\n )>, projects: Array<(\n { __typename?: 'Project' }\n & Pick\n )> }\n ) }\n )> }\n);\n\nexport type FindTaskQueryVariables = Exact<{\n taskID: Scalars['UUID'];\n}>;\n\n\nexport type FindTaskQuery = (\n { __typename?: 'Query' }\n & { findTask: (\n { __typename?: 'Task' }\n & Pick\n & { taskGroup: (\n { __typename?: 'TaskGroup' }\n & Pick\n ), comments: Array<(\n { __typename?: 'TaskComment' }\n & Pick\n & { createdBy: (\n { __typename?: 'CreatedBy' }\n & Pick\n & { profileIcon: (\n { __typename?: 'ProfileIcon' }\n & Pick\n ) }\n ) }\n )>, activity: Array<(\n { __typename?: 'TaskActivity' }\n & Pick\n & { causedBy: (\n { __typename?: 'CausedBy' }\n & Pick\n & { profileIcon?: Maybe<(\n { __typename?: 'ProfileIcon' }\n & Pick\n )> }\n ), data: Array<(\n { __typename?: 'TaskActivityData' }\n & Pick\n )> }\n )>, badges: (\n { __typename?: 'TaskBadges' }\n & { checklist?: Maybe<(\n { __typename?: 'ChecklistBadge' }\n & Pick\n )> }\n ), checklists: Array<(\n { __typename?: 'TaskChecklist' }\n & Pick\n & { items: Array<(\n { __typename?: 'TaskChecklistItem' }\n & Pick\n )> }\n )>, labels: Array<(\n { __typename?: 'TaskLabel' }\n & Pick\n & { projectLabel: (\n { __typename?: 'ProjectLabel' }\n & Pick\n & { labelColor: (\n { __typename?: 'LabelColor' }\n & Pick\n ) }\n ) }\n )>, assigned: Array<(\n { __typename?: 'Member' }\n & Pick\n & { profileIcon: (\n { __typename?: 'ProfileIcon' }\n & Pick\n ) }\n )> }\n ), me?: Maybe<(\n { __typename?: 'MePayload' }\n & { user: (\n { __typename?: 'UserAccount' }\n & Pick\n & { profileIcon: (\n { __typename?: 'ProfileIcon' }\n & Pick\n ) }\n ) }\n )> }\n);\n\nexport type TaskFieldsFragment = (\n { __typename?: 'Task' }\n & Pick\n & { badges: (\n { __typename?: 'TaskBadges' }\n & { checklist?: Maybe<(\n { __typename?: 'ChecklistBadge' }\n & Pick\n )> }\n ), taskGroup: (\n { __typename?: 'TaskGroup' }\n & Pick\n ), labels: Array<(\n { __typename?: 'TaskLabel' }\n & Pick\n & { projectLabel: (\n { __typename?: 'ProjectLabel' }\n & Pick\n & { labelColor: (\n { __typename?: 'LabelColor' }\n & Pick\n ) }\n ) }\n )>, assigned: Array<(\n { __typename?: 'Member' }\n & Pick\n & { profileIcon: (\n { __typename?: 'ProfileIcon' }\n & Pick\n ) }\n )> }\n);\n\nexport type GetProjectsQueryVariables = Exact<{ [key: string]: never; }>;\n\n\nexport type GetProjectsQuery = (\n { __typename?: 'Query' }\n & { organizations: Array<(\n { __typename?: 'Organization' }\n & Pick\n )>, teams: Array<(\n { __typename?: 'Team' }\n & Pick\n )>, projects: Array<(\n { __typename?: 'Project' }\n & Pick\n & { team?: Maybe<(\n { __typename?: 'Team' }\n & Pick\n )> }\n )> }\n);\n\nexport type LabelsQueryVariables = Exact<{\n projectID: Scalars['UUID'];\n}>;\n\n\nexport type LabelsQuery = (\n { __typename?: 'Query' }\n & { findProject: (\n { __typename?: 'Project' }\n & { labels: Array<(\n { __typename?: 'ProjectLabel' }\n & Pick\n & { labelColor: (\n { __typename?: 'LabelColor' }\n & Pick\n ) }\n )> }\n ), labelColors: Array<(\n { __typename?: 'LabelColor' }\n & Pick\n )> }\n);\n\nexport type MeQueryVariables = Exact<{ [key: string]: never; }>;\n\n\nexport type MeQuery = (\n { __typename?: 'Query' }\n & { me?: Maybe<(\n { __typename?: 'MePayload' }\n & { user: (\n { __typename?: 'UserAccount' }\n & Pick\n & { profileIcon: (\n { __typename?: 'ProfileIcon' }\n & Pick\n ) }\n ), teamRoles: Array<(\n { __typename?: 'TeamRole' }\n & Pick\n )>, projectRoles: Array<(\n { __typename?: 'ProjectRole' }\n & Pick\n )> }\n )> }\n);\n\nexport type MyTasksQueryVariables = Exact<{\n status: MyTasksStatus;\n sort: MyTasksSort;\n}>;\n\n\nexport type MyTasksQuery = (\n { __typename?: 'Query' }\n & { projects: Array<(\n { __typename?: 'Project' }\n & Pick\n )>, myTasks: (\n { __typename?: 'MyTasksPayload' }\n & { tasks: Array<(\n { __typename?: 'Task' }\n & Pick\n & { taskGroup: (\n { __typename?: 'TaskGroup' }\n & Pick\n ) }\n )>, projects: Array<(\n { __typename?: 'ProjectTaskMapping' }\n & Pick\n )> }\n ) }\n);\n\nexport type DeleteProjectMutationVariables = Exact<{\n projectID: Scalars['UUID'];\n}>;\n\n\nexport type DeleteProjectMutation = (\n { __typename?: 'Mutation' }\n & { deleteProject: (\n { __typename?: 'DeleteProjectPayload' }\n & Pick\n & { project: (\n { __typename?: 'Project' }\n & Pick\n ) }\n ) }\n);\n\nexport type DeleteInvitedProjectMemberMutationVariables = Exact<{\n projectID: Scalars['UUID'];\n email: Scalars['String'];\n}>;\n\n\nexport type DeleteInvitedProjectMemberMutation = (\n { __typename?: 'Mutation' }\n & { deleteInvitedProjectMember: (\n { __typename?: 'DeleteInvitedProjectMemberPayload' }\n & { invitedMember: (\n { __typename?: 'InvitedMember' }\n & Pick\n ) }\n ) }\n);\n\nexport type DeleteProjectMemberMutationVariables = Exact<{\n projectID: Scalars['UUID'];\n userID: Scalars['UUID'];\n}>;\n\n\nexport type DeleteProjectMemberMutation = (\n { __typename?: 'Mutation' }\n & { deleteProjectMember: (\n { __typename?: 'DeleteProjectMemberPayload' }\n & Pick\n & { member: (\n { __typename?: 'Member' }\n & Pick\n ) }\n ) }\n);\n\nexport type InviteProjectMembersMutationVariables = Exact<{\n projectID: Scalars['UUID'];\n members: Array | MemberInvite;\n}>;\n\n\nexport type InviteProjectMembersMutation = (\n { __typename?: 'Mutation' }\n & { inviteProjectMembers: (\n { __typename?: 'InviteProjectMembersPayload' }\n & Pick\n & { invitedMembers: Array<(\n { __typename?: 'InvitedMember' }\n & Pick\n )>, members: Array<(\n { __typename?: 'Member' }\n & Pick\n & { profileIcon: (\n { __typename?: 'ProfileIcon' }\n & Pick\n ), role: (\n { __typename?: 'Role' }\n & Pick\n ) }\n )> }\n ) }\n);\n\nexport type UpdateProjectMemberRoleMutationVariables = Exact<{\n projectID: Scalars['UUID'];\n userID: Scalars['UUID'];\n roleCode: RoleCode;\n}>;\n\n\nexport type UpdateProjectMemberRoleMutation = (\n { __typename?: 'Mutation' }\n & { updateProjectMemberRole: (\n { __typename?: 'UpdateProjectMemberRolePayload' }\n & Pick\n & { member: (\n { __typename?: 'Member' }\n & Pick\n & { role: (\n { __typename?: 'Role' }\n & Pick\n ) }\n ) }\n ) }\n);\n\nexport type CreateTaskMutationVariables = Exact<{\n taskGroupID: Scalars['UUID'];\n name: Scalars['String'];\n position: Scalars['Float'];\n assigned?: Maybe | Scalars['UUID']>;\n}>;\n\n\nexport type CreateTaskMutation = (\n { __typename?: 'Mutation' }\n & { createTask: (\n { __typename?: 'Task' }\n & TaskFieldsFragment\n ) }\n);\n\nexport type CreateTaskChecklistMutationVariables = Exact<{\n taskID: Scalars['UUID'];\n name: Scalars['String'];\n position: Scalars['Float'];\n}>;\n\n\nexport type CreateTaskChecklistMutation = (\n { __typename?: 'Mutation' }\n & { createTaskChecklist: (\n { __typename?: 'TaskChecklist' }\n & Pick\n & { items: Array<(\n { __typename?: 'TaskChecklistItem' }\n & Pick\n )> }\n ) }\n);\n\nexport type CreateTaskChecklistItemMutationVariables = Exact<{\n taskChecklistID: Scalars['UUID'];\n name: Scalars['String'];\n position: Scalars['Float'];\n}>;\n\n\nexport type CreateTaskChecklistItemMutation = (\n { __typename?: 'Mutation' }\n & { createTaskChecklistItem: (\n { __typename?: 'TaskChecklistItem' }\n & Pick\n ) }\n);\n\nexport type CreateTaskCommentMutationVariables = Exact<{\n taskID: Scalars['UUID'];\n message: Scalars['String'];\n}>;\n\n\nexport type CreateTaskCommentMutation = (\n { __typename?: 'Mutation' }\n & { createTaskComment: (\n { __typename?: 'CreateTaskCommentPayload' }\n & Pick\n & { comment: (\n { __typename?: 'TaskComment' }\n & Pick\n & { createdBy: (\n { __typename?: 'CreatedBy' }\n & Pick\n & { profileIcon: (\n { __typename?: 'ProfileIcon' }\n & Pick\n ) }\n ) }\n ) }\n ) }\n);\n\nexport type DeleteTaskChecklistMutationVariables = Exact<{\n taskChecklistID: Scalars['UUID'];\n}>;\n\n\nexport type DeleteTaskChecklistMutation = (\n { __typename?: 'Mutation' }\n & { deleteTaskChecklist: (\n { __typename?: 'DeleteTaskChecklistPayload' }\n & Pick\n & { taskChecklist: (\n { __typename?: 'TaskChecklist' }\n & Pick\n ) }\n ) }\n);\n\nexport type DeleteTaskChecklistItemMutationVariables = Exact<{\n taskChecklistItemID: Scalars['UUID'];\n}>;\n\n\nexport type DeleteTaskChecklistItemMutation = (\n { __typename?: 'Mutation' }\n & { deleteTaskChecklistItem: (\n { __typename?: 'DeleteTaskChecklistItemPayload' }\n & Pick\n & { taskChecklistItem: (\n { __typename?: 'TaskChecklistItem' }\n & Pick\n ) }\n ) }\n);\n\nexport type DeleteTaskCommentMutationVariables = Exact<{\n commentID: Scalars['UUID'];\n}>;\n\n\nexport type DeleteTaskCommentMutation = (\n { __typename?: 'Mutation' }\n & { deleteTaskComment: (\n { __typename?: 'DeleteTaskCommentPayload' }\n & Pick\n ) }\n);\n\nexport type SetTaskChecklistItemCompleteMutationVariables = Exact<{\n taskChecklistItemID: Scalars['UUID'];\n complete: Scalars['Boolean'];\n}>;\n\n\nexport type SetTaskChecklistItemCompleteMutation = (\n { __typename?: 'Mutation' }\n & { setTaskChecklistItemComplete: (\n { __typename?: 'TaskChecklistItem' }\n & Pick\n ) }\n);\n\nexport type SetTaskCompleteMutationVariables = Exact<{\n taskID: Scalars['UUID'];\n complete: Scalars['Boolean'];\n}>;\n\n\nexport type SetTaskCompleteMutation = (\n { __typename?: 'Mutation' }\n & { setTaskComplete: (\n { __typename?: 'Task' }\n & TaskFieldsFragment\n ) }\n);\n\nexport type UpdateTaskChecklistItemLocationMutationVariables = Exact<{\n taskChecklistID: Scalars['UUID'];\n taskChecklistItemID: Scalars['UUID'];\n position: Scalars['Float'];\n}>;\n\n\nexport type UpdateTaskChecklistItemLocationMutation = (\n { __typename?: 'Mutation' }\n & { updateTaskChecklistItemLocation: (\n { __typename?: 'UpdateTaskChecklistItemLocationPayload' }\n & Pick\n & { checklistItem: (\n { __typename?: 'TaskChecklistItem' }\n & Pick\n ) }\n ) }\n);\n\nexport type UpdateTaskChecklistItemNameMutationVariables = Exact<{\n taskChecklistItemID: Scalars['UUID'];\n name: Scalars['String'];\n}>;\n\n\nexport type UpdateTaskChecklistItemNameMutation = (\n { __typename?: 'Mutation' }\n & { updateTaskChecklistItemName: (\n { __typename?: 'TaskChecklistItem' }\n & Pick\n ) }\n);\n\nexport type UpdateTaskChecklistLocationMutationVariables = Exact<{\n taskChecklistID: Scalars['UUID'];\n position: Scalars['Float'];\n}>;\n\n\nexport type UpdateTaskChecklistLocationMutation = (\n { __typename?: 'Mutation' }\n & { updateTaskChecklistLocation: (\n { __typename?: 'UpdateTaskChecklistLocationPayload' }\n & { checklist: (\n { __typename?: 'TaskChecklist' }\n & Pick\n ) }\n ) }\n);\n\nexport type UpdateTaskChecklistNameMutationVariables = Exact<{\n taskChecklistID: Scalars['UUID'];\n name: Scalars['String'];\n}>;\n\n\nexport type UpdateTaskChecklistNameMutation = (\n { __typename?: 'Mutation' }\n & { updateTaskChecklistName: (\n { __typename?: 'TaskChecklist' }\n & Pick\n & { items: Array<(\n { __typename?: 'TaskChecklistItem' }\n & Pick\n )> }\n ) }\n);\n\nexport type UpdateTaskCommentMutationVariables = Exact<{\n commentID: Scalars['UUID'];\n message: Scalars['String'];\n}>;\n\n\nexport type UpdateTaskCommentMutation = (\n { __typename?: 'Mutation' }\n & { updateTaskComment: (\n { __typename?: 'UpdateTaskCommentPayload' }\n & { comment: (\n { __typename?: 'TaskComment' }\n & Pick\n ) }\n ) }\n);\n\nexport type DeleteTaskGroupTasksMutationVariables = Exact<{\n taskGroupID: Scalars['UUID'];\n}>;\n\n\nexport type DeleteTaskGroupTasksMutation = (\n { __typename?: 'Mutation' }\n & { deleteTaskGroupTasks: (\n { __typename?: 'DeleteTaskGroupTasksPayload' }\n & Pick\n ) }\n);\n\nexport type DuplicateTaskGroupMutationVariables = Exact<{\n taskGroupID: Scalars['UUID'];\n name: Scalars['String'];\n position: Scalars['Float'];\n projectID: Scalars['UUID'];\n}>;\n\n\nexport type DuplicateTaskGroupMutation = (\n { __typename?: 'Mutation' }\n & { duplicateTaskGroup: (\n { __typename?: 'DuplicateTaskGroupPayload' }\n & { taskGroup: (\n { __typename?: 'TaskGroup' }\n & Pick\n & { tasks: Array<(\n { __typename?: 'Task' }\n & TaskFieldsFragment\n )> }\n ) }\n ) }\n);\n\nexport type SortTaskGroupMutationVariables = Exact<{\n tasks: Array | TaskPositionUpdate;\n taskGroupID: Scalars['UUID'];\n}>;\n\n\nexport type SortTaskGroupMutation = (\n { __typename?: 'Mutation' }\n & { sortTaskGroup: (\n { __typename?: 'SortTaskGroupPayload' }\n & Pick\n & { tasks: Array<(\n { __typename?: 'Task' }\n & Pick\n )> }\n ) }\n);\n\nexport type UpdateTaskGroupNameMutationVariables = Exact<{\n taskGroupID: Scalars['UUID'];\n name: Scalars['String'];\n}>;\n\n\nexport type UpdateTaskGroupNameMutation = (\n { __typename?: 'Mutation' }\n & { updateTaskGroupName: (\n { __typename?: 'TaskGroup' }\n & Pick\n ) }\n);\n\nexport type CreateTeamMutationVariables = Exact<{\n name: Scalars['String'];\n organizationID: Scalars['UUID'];\n}>;\n\n\nexport type CreateTeamMutation = (\n { __typename?: 'Mutation' }\n & { createTeam: (\n { __typename?: 'Team' }\n & Pick\n ) }\n);\n\nexport type CreateTeamMemberMutationVariables = Exact<{\n userID: Scalars['UUID'];\n teamID: Scalars['UUID'];\n}>;\n\n\nexport type CreateTeamMemberMutation = (\n { __typename?: 'Mutation' }\n & { createTeamMember: (\n { __typename?: 'CreateTeamMemberPayload' }\n & { team: (\n { __typename?: 'Team' }\n & Pick\n ), teamMember: (\n { __typename?: 'Member' }\n & Pick\n & { role: (\n { __typename?: 'Role' }\n & Pick\n ), profileIcon: (\n { __typename?: 'ProfileIcon' }\n & Pick\n ) }\n ) }\n ) }\n);\n\nexport type DeleteTeamMutationVariables = Exact<{\n teamID: Scalars['UUID'];\n}>;\n\n\nexport type DeleteTeamMutation = (\n { __typename?: 'Mutation' }\n & { deleteTeam: (\n { __typename?: 'DeleteTeamPayload' }\n & Pick\n & { team: (\n { __typename?: 'Team' }\n & Pick\n ) }\n ) }\n);\n\nexport type DeleteTeamMemberMutationVariables = Exact<{\n teamID: Scalars['UUID'];\n userID: Scalars['UUID'];\n newOwnerID?: Maybe;\n}>;\n\n\nexport type DeleteTeamMemberMutation = (\n { __typename?: 'Mutation' }\n & { deleteTeamMember: (\n { __typename?: 'DeleteTeamMemberPayload' }\n & Pick\n ) }\n);\n\nexport type GetTeamQueryVariables = Exact<{\n teamID: Scalars['UUID'];\n}>;\n\n\nexport type GetTeamQuery = (\n { __typename?: 'Query' }\n & { findTeam: (\n { __typename?: 'Team' }\n & Pick\n & { members: Array<(\n { __typename?: 'Member' }\n & Pick\n & { role: (\n { __typename?: 'Role' }\n & Pick\n ), profileIcon: (\n { __typename?: 'ProfileIcon' }\n & Pick\n ), owned: (\n { __typename?: 'OwnedList' }\n & { teams: Array<(\n { __typename?: 'Team' }\n & Pick\n )>, projects: Array<(\n { __typename?: 'Project' }\n & Pick\n )> }\n ), member: (\n { __typename?: 'MemberList' }\n & { teams: Array<(\n { __typename?: 'Team' }\n & Pick\n )>, projects: Array<(\n { __typename?: 'Project' }\n & Pick\n )> }\n ) }\n )> }\n ), projects: Array<(\n { __typename?: 'Project' }\n & Pick\n & { team?: Maybe<(\n { __typename?: 'Team' }\n & Pick\n )> }\n )>, users: Array<(\n { __typename?: 'UserAccount' }\n & Pick\n & { role: (\n { __typename?: 'Role' }\n & Pick\n ), profileIcon: (\n { __typename?: 'ProfileIcon' }\n & Pick\n ), owned: (\n { __typename?: 'OwnedList' }\n & { teams: Array<(\n { __typename?: 'Team' }\n & Pick\n )>, projects: Array<(\n { __typename?: 'Project' }\n & Pick\n )> }\n ), member: (\n { __typename?: 'MemberList' }\n & { teams: Array<(\n { __typename?: 'Team' }\n & Pick\n )>, projects: Array<(\n { __typename?: 'Project' }\n & Pick\n )> }\n ) }\n )> }\n);\n\nexport type UpdateTeamMemberRoleMutationVariables = Exact<{\n teamID: Scalars['UUID'];\n userID: Scalars['UUID'];\n roleCode: RoleCode;\n}>;\n\n\nexport type UpdateTeamMemberRoleMutation = (\n { __typename?: 'Mutation' }\n & { updateTeamMemberRole: (\n { __typename?: 'UpdateTeamMemberRolePayload' }\n & Pick\n & { member: (\n { __typename?: 'Member' }\n & Pick\n & { role: (\n { __typename?: 'Role' }\n & Pick\n ) }\n ) }\n ) }\n);\n\nexport type ToggleProjectVisibilityMutationVariables = Exact<{\n projectID: Scalars['UUID'];\n isPublic: Scalars['Boolean'];\n}>;\n\n\nexport type ToggleProjectVisibilityMutation = (\n { __typename?: 'Mutation' }\n & { toggleProjectVisibility: (\n { __typename?: 'ToggleProjectVisibilityPayload' }\n & { project: (\n { __typename?: 'Project' }\n & Pick\n ) }\n ) }\n);\n\nexport type ToggleTaskLabelMutationVariables = Exact<{\n taskID: Scalars['UUID'];\n projectLabelID: Scalars['UUID'];\n}>;\n\n\nexport type ToggleTaskLabelMutation = (\n { __typename?: 'Mutation' }\n & { toggleTaskLabel: (\n { __typename?: 'ToggleTaskLabelPayload' }\n & Pick\n & { task: (\n { __typename?: 'Task' }\n & Pick\n & { labels: Array<(\n { __typename?: 'TaskLabel' }\n & Pick\n & { projectLabel: (\n { __typename?: 'ProjectLabel' }\n & Pick\n & { labelColor: (\n { __typename?: 'LabelColor' }\n & Pick\n ) }\n ) }\n )> }\n ) }\n ) }\n);\n\nexport type TopNavbarQueryVariables = Exact<{ [key: string]: never; }>;\n\n\nexport type TopNavbarQuery = (\n { __typename?: 'Query' }\n & { notifications: Array<(\n { __typename?: 'Notification' }\n & Pick\n & { entity: (\n { __typename?: 'NotificationEntity' }\n & Pick\n ), actor: (\n { __typename?: 'NotificationActor' }\n & Pick\n ) }\n )>, me?: Maybe<(\n { __typename?: 'MePayload' }\n & { user: (\n { __typename?: 'UserAccount' }\n & Pick\n & { profileIcon: (\n { __typename?: 'ProfileIcon' }\n & Pick\n ) }\n ), teamRoles: Array<(\n { __typename?: 'TeamRole' }\n & Pick\n )>, projectRoles: Array<(\n { __typename?: 'ProjectRole' }\n & Pick\n )> }\n )> }\n);\n\nexport type UnassignTaskMutationVariables = Exact<{\n taskID: Scalars['UUID'];\n userID: Scalars['UUID'];\n}>;\n\n\nexport type UnassignTaskMutation = (\n { __typename?: 'Mutation' }\n & { unassignTask: (\n { __typename?: 'Task' }\n & Pick\n & { assigned: Array<(\n { __typename?: 'Member' }\n & Pick\n )> }\n ) }\n);\n\nexport type UpdateProjectLabelMutationVariables = Exact<{\n projectLabelID: Scalars['UUID'];\n labelColorID: Scalars['UUID'];\n name: Scalars['String'];\n}>;\n\n\nexport type UpdateProjectLabelMutation = (\n { __typename?: 'Mutation' }\n & { updateProjectLabel: (\n { __typename?: 'ProjectLabel' }\n & Pick\n & { labelColor: (\n { __typename?: 'LabelColor' }\n & Pick\n ) }\n ) }\n);\n\nexport type UpdateProjectNameMutationVariables = Exact<{\n projectID: Scalars['UUID'];\n name: Scalars['String'];\n}>;\n\n\nexport type UpdateProjectNameMutation = (\n { __typename?: 'Mutation' }\n & { updateProjectName: (\n { __typename?: 'Project' }\n & Pick\n ) }\n);\n\nexport type UpdateTaskDescriptionMutationVariables = Exact<{\n taskID: Scalars['UUID'];\n description: Scalars['String'];\n}>;\n\n\nexport type UpdateTaskDescriptionMutation = (\n { __typename?: 'Mutation' }\n & { updateTaskDescription: (\n { __typename?: 'Task' }\n & Pick\n ) }\n);\n\nexport type UpdateTaskDueDateMutationVariables = Exact<{\n taskID: Scalars['UUID'];\n dueDate?: Maybe;\n hasTime: Scalars['Boolean'];\n}>;\n\n\nexport type UpdateTaskDueDateMutation = (\n { __typename?: 'Mutation' }\n & { updateTaskDueDate: (\n { __typename?: 'Task' }\n & Pick\n ) }\n);\n\nexport type UpdateTaskGroupLocationMutationVariables = Exact<{\n taskGroupID: Scalars['UUID'];\n position: Scalars['Float'];\n}>;\n\n\nexport type UpdateTaskGroupLocationMutation = (\n { __typename?: 'Mutation' }\n & { updateTaskGroupLocation: (\n { __typename?: 'TaskGroup' }\n & Pick\n ) }\n);\n\nexport type UpdateTaskLocationMutationVariables = Exact<{\n taskID: Scalars['UUID'];\n taskGroupID: Scalars['UUID'];\n position: Scalars['Float'];\n}>;\n\n\nexport type UpdateTaskLocationMutation = (\n { __typename?: 'Mutation' }\n & { updateTaskLocation: (\n { __typename?: 'UpdateTaskLocationPayload' }\n & Pick\n & { task: (\n { __typename?: 'Task' }\n & Pick\n & { taskGroup: (\n { __typename?: 'TaskGroup' }\n & Pick\n ) }\n ) }\n ) }\n);\n\nexport type UpdateTaskNameMutationVariables = Exact<{\n taskID: Scalars['UUID'];\n name: Scalars['String'];\n}>;\n\n\nexport type UpdateTaskNameMutation = (\n { __typename?: 'Mutation' }\n & { updateTaskName: (\n { __typename?: 'Task' }\n & Pick\n ) }\n);\n\nexport type CreateUserAccountMutationVariables = Exact<{\n username: Scalars['String'];\n roleCode: Scalars['String'];\n email: Scalars['String'];\n fullName: Scalars['String'];\n initials: Scalars['String'];\n password: Scalars['String'];\n}>;\n\n\nexport type CreateUserAccountMutation = (\n { __typename?: 'Mutation' }\n & { createUserAccount: (\n { __typename?: 'UserAccount' }\n & Pick\n & { profileIcon: (\n { __typename?: 'ProfileIcon' }\n & Pick\n ), role: (\n { __typename?: 'Role' }\n & Pick\n ), owned: (\n { __typename?: 'OwnedList' }\n & { teams: Array<(\n { __typename?: 'Team' }\n & Pick\n )>, projects: Array<(\n { __typename?: 'Project' }\n & Pick\n )> }\n ), member: (\n { __typename?: 'MemberList' }\n & { teams: Array<(\n { __typename?: 'Team' }\n & Pick\n )>, projects: Array<(\n { __typename?: 'Project' }\n & Pick\n )> }\n ) }\n ) }\n);\n\nexport type DeleteInvitedUserAccountMutationVariables = Exact<{\n invitedUserID: Scalars['UUID'];\n}>;\n\n\nexport type DeleteInvitedUserAccountMutation = (\n { __typename?: 'Mutation' }\n & { deleteInvitedUserAccount: (\n { __typename?: 'DeleteInvitedUserAccountPayload' }\n & { invitedUser: (\n { __typename?: 'InvitedUserAccount' }\n & Pick\n ) }\n ) }\n);\n\nexport type DeleteUserAccountMutationVariables = Exact<{\n userID: Scalars['UUID'];\n newOwnerID?: Maybe;\n}>;\n\n\nexport type DeleteUserAccountMutation = (\n { __typename?: 'Mutation' }\n & { deleteUserAccount: (\n { __typename?: 'DeleteUserAccountPayload' }\n & Pick\n & { userAccount: (\n { __typename?: 'UserAccount' }\n & Pick\n ) }\n ) }\n);\n\nexport type UpdateUserInfoMutationVariables = Exact<{\n name: Scalars['String'];\n initials: Scalars['String'];\n email: Scalars['String'];\n bio: Scalars['String'];\n}>;\n\n\nexport type UpdateUserInfoMutation = (\n { __typename?: 'Mutation' }\n & { updateUserInfo: (\n { __typename?: 'UpdateUserInfoPayload' }\n & { user: (\n { __typename?: 'UserAccount' }\n & Pick\n & { profileIcon: (\n { __typename?: 'ProfileIcon' }\n & Pick\n ) }\n ) }\n ) }\n);\n\nexport type UpdateUserPasswordMutationVariables = Exact<{\n userID: Scalars['UUID'];\n password: Scalars['String'];\n}>;\n\n\nexport type UpdateUserPasswordMutation = (\n { __typename?: 'Mutation' }\n & { updateUserPassword: (\n { __typename?: 'UpdateUserPasswordPayload' }\n & Pick\n ) }\n);\n\nexport type UpdateUserRoleMutationVariables = Exact<{\n userID: Scalars['UUID'];\n roleCode: RoleCode;\n}>;\n\n\nexport type UpdateUserRoleMutation = (\n { __typename?: 'Mutation' }\n & { updateUserRole: (\n { __typename?: 'UpdateUserRolePayload' }\n & { user: (\n { __typename?: 'UserAccount' }\n & Pick\n & { role: (\n { __typename?: 'Role' }\n & Pick\n ) }\n ) }\n ) }\n);\n\nexport type UsersQueryVariables = Exact<{ [key: string]: never; }>;\n\n\nexport type UsersQuery = (\n { __typename?: 'Query' }\n & { invitedUsers: Array<(\n { __typename?: 'InvitedUserAccount' }\n & Pick\n )>, users: Array<(\n { __typename?: 'UserAccount' }\n & Pick\n & { role: (\n { __typename?: 'Role' }\n & Pick\n ), profileIcon: (\n { __typename?: 'ProfileIcon' }\n & Pick\n ), owned: (\n { __typename?: 'OwnedList' }\n & { teams: Array<(\n { __typename?: 'Team' }\n & Pick\n )>, projects: Array<(\n { __typename?: 'Project' }\n & Pick\n )> }\n ), member: (\n { __typename?: 'MemberList' }\n & { teams: Array<(\n { __typename?: 'Team' }\n & Pick\n )>, projects: Array<(\n { __typename?: 'Project' }\n & Pick\n )> }\n ) }\n )> }\n);\n\nexport const TaskFieldsFragmentDoc = gql`\n fragment TaskFields on Task {\n id\n name\n description\n dueDate\n hasTime\n complete\n completedAt\n position\n badges {\n checklist {\n complete\n total\n }\n }\n taskGroup {\n id\n name\n position\n }\n labels {\n id\n assignedDate\n projectLabel {\n id\n name\n createdDate\n labelColor {\n id\n colorHex\n position\n name\n }\n }\n }\n assigned {\n id\n fullName\n profileIcon {\n url\n initials\n bgColor\n }\n }\n}\n `;\nexport const AssignTaskDocument = gql`\n mutation assignTask($taskID: UUID!, $userID: UUID!) {\n assignTask(input: {taskID: $taskID, userID: $userID}) {\n id\n assigned {\n id\n fullName\n }\n }\n}\n `;\nexport type AssignTaskMutationFn = Apollo.MutationFunction;\n\n/**\n * __useAssignTaskMutation__\n *\n * To run a mutation, you first call `useAssignTaskMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useAssignTaskMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [assignTaskMutation, { data, loading, error }] = useAssignTaskMutation({\n * variables: {\n * taskID: // value for 'taskID'\n * userID: // value for 'userID'\n * },\n * });\n */\nexport function useAssignTaskMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(AssignTaskDocument, options);\n }\nexport type AssignTaskMutationHookResult = ReturnType;\nexport type AssignTaskMutationResult = Apollo.MutationResult;\nexport type AssignTaskMutationOptions = Apollo.BaseMutationOptions;\nexport const ClearProfileAvatarDocument = gql`\n mutation clearProfileAvatar {\n clearProfileAvatar {\n id\n fullName\n profileIcon {\n initials\n bgColor\n url\n }\n }\n}\n `;\nexport type ClearProfileAvatarMutationFn = Apollo.MutationFunction;\n\n/**\n * __useClearProfileAvatarMutation__\n *\n * To run a mutation, you first call `useClearProfileAvatarMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useClearProfileAvatarMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [clearProfileAvatarMutation, { data, loading, error }] = useClearProfileAvatarMutation({\n * variables: {\n * },\n * });\n */\nexport function useClearProfileAvatarMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(ClearProfileAvatarDocument, options);\n }\nexport type ClearProfileAvatarMutationHookResult = ReturnType;\nexport type ClearProfileAvatarMutationResult = Apollo.MutationResult;\nexport type ClearProfileAvatarMutationOptions = Apollo.BaseMutationOptions;\nexport const CreateProjectDocument = gql`\n mutation createProject($teamID: UUID, $name: String!) {\n createProject(input: {teamID: $teamID, name: $name}) {\n id\n name\n team {\n id\n name\n }\n }\n}\n `;\nexport type CreateProjectMutationFn = Apollo.MutationFunction;\n\n/**\n * __useCreateProjectMutation__\n *\n * To run a mutation, you first call `useCreateProjectMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useCreateProjectMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [createProjectMutation, { data, loading, error }] = useCreateProjectMutation({\n * variables: {\n * teamID: // value for 'teamID'\n * name: // value for 'name'\n * },\n * });\n */\nexport function useCreateProjectMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(CreateProjectDocument, options);\n }\nexport type CreateProjectMutationHookResult = ReturnType;\nexport type CreateProjectMutationResult = Apollo.MutationResult;\nexport type CreateProjectMutationOptions = Apollo.BaseMutationOptions;\nexport const CreateProjectLabelDocument = gql`\n mutation createProjectLabel($projectID: UUID!, $labelColorID: UUID!, $name: String!) {\n createProjectLabel(\n input: {projectID: $projectID, labelColorID: $labelColorID, name: $name}\n ) {\n id\n createdDate\n labelColor {\n id\n colorHex\n name\n position\n }\n name\n }\n}\n `;\nexport type CreateProjectLabelMutationFn = Apollo.MutationFunction;\n\n/**\n * __useCreateProjectLabelMutation__\n *\n * To run a mutation, you first call `useCreateProjectLabelMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useCreateProjectLabelMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [createProjectLabelMutation, { data, loading, error }] = useCreateProjectLabelMutation({\n * variables: {\n * projectID: // value for 'projectID'\n * labelColorID: // value for 'labelColorID'\n * name: // value for 'name'\n * },\n * });\n */\nexport function useCreateProjectLabelMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(CreateProjectLabelDocument, options);\n }\nexport type CreateProjectLabelMutationHookResult = ReturnType;\nexport type CreateProjectLabelMutationResult = Apollo.MutationResult;\nexport type CreateProjectLabelMutationOptions = Apollo.BaseMutationOptions;\nexport const CreateTaskGroupDocument = gql`\n mutation createTaskGroup($projectID: UUID!, $name: String!, $position: Float!) {\n createTaskGroup(\n input: {projectID: $projectID, name: $name, position: $position}\n ) {\n id\n name\n position\n }\n}\n `;\nexport type CreateTaskGroupMutationFn = Apollo.MutationFunction;\n\n/**\n * __useCreateTaskGroupMutation__\n *\n * To run a mutation, you first call `useCreateTaskGroupMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useCreateTaskGroupMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [createTaskGroupMutation, { data, loading, error }] = useCreateTaskGroupMutation({\n * variables: {\n * projectID: // value for 'projectID'\n * name: // value for 'name'\n * position: // value for 'position'\n * },\n * });\n */\nexport function useCreateTaskGroupMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(CreateTaskGroupDocument, options);\n }\nexport type CreateTaskGroupMutationHookResult = ReturnType;\nexport type CreateTaskGroupMutationResult = Apollo.MutationResult;\nexport type CreateTaskGroupMutationOptions = Apollo.BaseMutationOptions;\nexport const DeleteProjectLabelDocument = gql`\n mutation deleteProjectLabel($projectLabelID: UUID!) {\n deleteProjectLabel(input: {projectLabelID: $projectLabelID}) {\n id\n }\n}\n `;\nexport type DeleteProjectLabelMutationFn = Apollo.MutationFunction;\n\n/**\n * __useDeleteProjectLabelMutation__\n *\n * To run a mutation, you first call `useDeleteProjectLabelMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useDeleteProjectLabelMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [deleteProjectLabelMutation, { data, loading, error }] = useDeleteProjectLabelMutation({\n * variables: {\n * projectLabelID: // value for 'projectLabelID'\n * },\n * });\n */\nexport function useDeleteProjectLabelMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(DeleteProjectLabelDocument, options);\n }\nexport type DeleteProjectLabelMutationHookResult = ReturnType;\nexport type DeleteProjectLabelMutationResult = Apollo.MutationResult;\nexport type DeleteProjectLabelMutationOptions = Apollo.BaseMutationOptions;\nexport const DeleteTaskDocument = gql`\n mutation deleteTask($taskID: UUID!) {\n deleteTask(input: {taskID: $taskID}) {\n taskID\n }\n}\n `;\nexport type DeleteTaskMutationFn = Apollo.MutationFunction;\n\n/**\n * __useDeleteTaskMutation__\n *\n * To run a mutation, you first call `useDeleteTaskMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useDeleteTaskMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [deleteTaskMutation, { data, loading, error }] = useDeleteTaskMutation({\n * variables: {\n * taskID: // value for 'taskID'\n * },\n * });\n */\nexport function useDeleteTaskMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(DeleteTaskDocument, options);\n }\nexport type DeleteTaskMutationHookResult = ReturnType;\nexport type DeleteTaskMutationResult = Apollo.MutationResult;\nexport type DeleteTaskMutationOptions = Apollo.BaseMutationOptions;\nexport const DeleteTaskGroupDocument = gql`\n mutation deleteTaskGroup($taskGroupID: UUID!) {\n deleteTaskGroup(input: {taskGroupID: $taskGroupID}) {\n ok\n affectedRows\n taskGroup {\n id\n tasks {\n id\n name\n }\n }\n }\n}\n `;\nexport type DeleteTaskGroupMutationFn = Apollo.MutationFunction;\n\n/**\n * __useDeleteTaskGroupMutation__\n *\n * To run a mutation, you first call `useDeleteTaskGroupMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useDeleteTaskGroupMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [deleteTaskGroupMutation, { data, loading, error }] = useDeleteTaskGroupMutation({\n * variables: {\n * taskGroupID: // value for 'taskGroupID'\n * },\n * });\n */\nexport function useDeleteTaskGroupMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(DeleteTaskGroupDocument, options);\n }\nexport type DeleteTaskGroupMutationHookResult = ReturnType;\nexport type DeleteTaskGroupMutationResult = Apollo.MutationResult;\nexport type DeleteTaskGroupMutationOptions = Apollo.BaseMutationOptions;\nexport const FindProjectDocument = gql`\n query findProject($projectID: UUID!) {\n findProject(input: {projectID: $projectID}) {\n name\n publicOn\n team {\n id\n }\n members {\n id\n fullName\n username\n role {\n code\n name\n }\n profileIcon {\n url\n initials\n bgColor\n }\n }\n invitedMembers {\n email\n invitedOn\n }\n labels {\n id\n createdDate\n name\n labelColor {\n id\n name\n colorHex\n position\n }\n }\n taskGroups {\n id\n name\n position\n tasks {\n ...TaskFields\n }\n }\n }\n labelColors {\n id\n position\n colorHex\n name\n }\n users {\n id\n email\n fullName\n username\n role {\n code\n name\n }\n profileIcon {\n url\n initials\n bgColor\n }\n owned {\n teams {\n id\n name\n }\n projects {\n id\n name\n }\n }\n member {\n teams {\n id\n name\n }\n projects {\n id\n name\n }\n }\n }\n}\n ${TaskFieldsFragmentDoc}`;\n\n/**\n * __useFindProjectQuery__\n *\n * To run a query within a React component, call `useFindProjectQuery` and pass it any options that fit your needs.\n * When your component renders, `useFindProjectQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useFindProjectQuery({\n * variables: {\n * projectID: // value for 'projectID'\n * },\n * });\n */\nexport function useFindProjectQuery(baseOptions: Apollo.QueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useQuery(FindProjectDocument, options);\n }\nexport function useFindProjectLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useLazyQuery(FindProjectDocument, options);\n }\nexport type FindProjectQueryHookResult = ReturnType;\nexport type FindProjectLazyQueryHookResult = ReturnType;\nexport type FindProjectQueryResult = Apollo.QueryResult;\nexport const FindTaskDocument = gql`\n query findTask($taskID: UUID!) {\n findTask(input: {taskID: $taskID}) {\n id\n name\n description\n dueDate\n position\n complete\n hasTime\n taskGroup {\n id\n name\n }\n comments {\n id\n pinned\n message\n createdAt\n updatedAt\n createdBy {\n id\n fullName\n profileIcon {\n initials\n bgColor\n url\n }\n }\n }\n activity {\n id\n type\n causedBy {\n id\n fullName\n profileIcon {\n initials\n bgColor\n url\n }\n }\n createdAt\n data {\n name\n value\n }\n }\n badges {\n checklist {\n total\n complete\n }\n }\n checklists {\n id\n name\n position\n items {\n id\n name\n taskChecklistID\n complete\n position\n }\n }\n labels {\n id\n assignedDate\n projectLabel {\n id\n name\n createdDate\n labelColor {\n id\n colorHex\n position\n name\n }\n }\n }\n assigned {\n id\n fullName\n profileIcon {\n url\n initials\n bgColor\n }\n }\n }\n me {\n user {\n id\n fullName\n profileIcon {\n initials\n bgColor\n url\n }\n }\n }\n}\n `;\n\n/**\n * __useFindTaskQuery__\n *\n * To run a query within a React component, call `useFindTaskQuery` and pass it any options that fit your needs.\n * When your component renders, `useFindTaskQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useFindTaskQuery({\n * variables: {\n * taskID: // value for 'taskID'\n * },\n * });\n */\nexport function useFindTaskQuery(baseOptions: Apollo.QueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useQuery(FindTaskDocument, options);\n }\nexport function useFindTaskLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useLazyQuery(FindTaskDocument, options);\n }\nexport type FindTaskQueryHookResult = ReturnType;\nexport type FindTaskLazyQueryHookResult = ReturnType;\nexport type FindTaskQueryResult = Apollo.QueryResult;\nexport const GetProjectsDocument = gql`\n query getProjects {\n organizations {\n id\n name\n }\n teams {\n id\n name\n createdAt\n }\n projects {\n id\n name\n team {\n id\n name\n }\n }\n}\n `;\n\n/**\n * __useGetProjectsQuery__\n *\n * To run a query within a React component, call `useGetProjectsQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetProjectsQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetProjectsQuery({\n * variables: {\n * },\n * });\n */\nexport function useGetProjectsQuery(baseOptions?: Apollo.QueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useQuery(GetProjectsDocument, options);\n }\nexport function useGetProjectsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useLazyQuery(GetProjectsDocument, options);\n }\nexport type GetProjectsQueryHookResult = ReturnType;\nexport type GetProjectsLazyQueryHookResult = ReturnType;\nexport type GetProjectsQueryResult = Apollo.QueryResult;\nexport const LabelsDocument = gql`\n query labels($projectID: UUID!) {\n findProject(input: {projectID: $projectID}) {\n labels {\n id\n createdDate\n name\n labelColor {\n id\n name\n colorHex\n position\n }\n }\n }\n labelColors {\n id\n position\n colorHex\n name\n }\n}\n `;\n\n/**\n * __useLabelsQuery__\n *\n * To run a query within a React component, call `useLabelsQuery` and pass it any options that fit your needs.\n * When your component renders, `useLabelsQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useLabelsQuery({\n * variables: {\n * projectID: // value for 'projectID'\n * },\n * });\n */\nexport function useLabelsQuery(baseOptions: Apollo.QueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useQuery(LabelsDocument, options);\n }\nexport function useLabelsLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useLazyQuery(LabelsDocument, options);\n }\nexport type LabelsQueryHookResult = ReturnType;\nexport type LabelsLazyQueryHookResult = ReturnType;\nexport type LabelsQueryResult = Apollo.QueryResult;\nexport const MeDocument = gql`\n query me {\n me {\n user {\n id\n fullName\n username\n email\n bio\n profileIcon {\n initials\n bgColor\n url\n }\n }\n teamRoles {\n teamID\n roleCode\n }\n projectRoles {\n projectID\n roleCode\n }\n }\n}\n `;\n\n/**\n * __useMeQuery__\n *\n * To run a query within a React component, call `useMeQuery` and pass it any options that fit your needs.\n * When your component renders, `useMeQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useMeQuery({\n * variables: {\n * },\n * });\n */\nexport function useMeQuery(baseOptions?: Apollo.QueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useQuery(MeDocument, options);\n }\nexport function useMeLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useLazyQuery(MeDocument, options);\n }\nexport type MeQueryHookResult = ReturnType;\nexport type MeLazyQueryHookResult = ReturnType;\nexport type MeQueryResult = Apollo.QueryResult;\nexport const MyTasksDocument = gql`\n query myTasks($status: MyTasksStatus!, $sort: MyTasksSort!) {\n projects {\n id\n name\n }\n myTasks(input: {status: $status, sort: $sort}) {\n tasks {\n id\n taskGroup {\n id\n name\n }\n name\n dueDate\n hasTime\n complete\n completedAt\n }\n projects {\n projectID\n taskID\n }\n }\n}\n `;\n\n/**\n * __useMyTasksQuery__\n *\n * To run a query within a React component, call `useMyTasksQuery` and pass it any options that fit your needs.\n * When your component renders, `useMyTasksQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useMyTasksQuery({\n * variables: {\n * status: // value for 'status'\n * sort: // value for 'sort'\n * },\n * });\n */\nexport function useMyTasksQuery(baseOptions: Apollo.QueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useQuery(MyTasksDocument, options);\n }\nexport function useMyTasksLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useLazyQuery(MyTasksDocument, options);\n }\nexport type MyTasksQueryHookResult = ReturnType;\nexport type MyTasksLazyQueryHookResult = ReturnType;\nexport type MyTasksQueryResult = Apollo.QueryResult;\nexport const DeleteProjectDocument = gql`\n mutation deleteProject($projectID: UUID!) {\n deleteProject(input: {projectID: $projectID}) {\n ok\n project {\n id\n }\n }\n}\n `;\nexport type DeleteProjectMutationFn = Apollo.MutationFunction;\n\n/**\n * __useDeleteProjectMutation__\n *\n * To run a mutation, you first call `useDeleteProjectMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useDeleteProjectMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [deleteProjectMutation, { data, loading, error }] = useDeleteProjectMutation({\n * variables: {\n * projectID: // value for 'projectID'\n * },\n * });\n */\nexport function useDeleteProjectMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(DeleteProjectDocument, options);\n }\nexport type DeleteProjectMutationHookResult = ReturnType;\nexport type DeleteProjectMutationResult = Apollo.MutationResult;\nexport type DeleteProjectMutationOptions = Apollo.BaseMutationOptions;\nexport const DeleteInvitedProjectMemberDocument = gql`\n mutation deleteInvitedProjectMember($projectID: UUID!, $email: String!) {\n deleteInvitedProjectMember(input: {projectID: $projectID, email: $email}) {\n invitedMember {\n email\n }\n }\n}\n `;\nexport type DeleteInvitedProjectMemberMutationFn = Apollo.MutationFunction;\n\n/**\n * __useDeleteInvitedProjectMemberMutation__\n *\n * To run a mutation, you first call `useDeleteInvitedProjectMemberMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useDeleteInvitedProjectMemberMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [deleteInvitedProjectMemberMutation, { data, loading, error }] = useDeleteInvitedProjectMemberMutation({\n * variables: {\n * projectID: // value for 'projectID'\n * email: // value for 'email'\n * },\n * });\n */\nexport function useDeleteInvitedProjectMemberMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(DeleteInvitedProjectMemberDocument, options);\n }\nexport type DeleteInvitedProjectMemberMutationHookResult = ReturnType;\nexport type DeleteInvitedProjectMemberMutationResult = Apollo.MutationResult;\nexport type DeleteInvitedProjectMemberMutationOptions = Apollo.BaseMutationOptions;\nexport const DeleteProjectMemberDocument = gql`\n mutation deleteProjectMember($projectID: UUID!, $userID: UUID!) {\n deleteProjectMember(input: {projectID: $projectID, userID: $userID}) {\n ok\n member {\n id\n }\n projectID\n }\n}\n `;\nexport type DeleteProjectMemberMutationFn = Apollo.MutationFunction;\n\n/**\n * __useDeleteProjectMemberMutation__\n *\n * To run a mutation, you first call `useDeleteProjectMemberMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useDeleteProjectMemberMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [deleteProjectMemberMutation, { data, loading, error }] = useDeleteProjectMemberMutation({\n * variables: {\n * projectID: // value for 'projectID'\n * userID: // value for 'userID'\n * },\n * });\n */\nexport function useDeleteProjectMemberMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(DeleteProjectMemberDocument, options);\n }\nexport type DeleteProjectMemberMutationHookResult = ReturnType;\nexport type DeleteProjectMemberMutationResult = Apollo.MutationResult;\nexport type DeleteProjectMemberMutationOptions = Apollo.BaseMutationOptions;\nexport const InviteProjectMembersDocument = gql`\n mutation inviteProjectMembers($projectID: UUID!, $members: [MemberInvite!]!) {\n inviteProjectMembers(input: {projectID: $projectID, members: $members}) {\n ok\n invitedMembers {\n email\n invitedOn\n }\n members {\n id\n fullName\n profileIcon {\n url\n initials\n bgColor\n }\n username\n role {\n code\n name\n }\n }\n }\n}\n `;\nexport type InviteProjectMembersMutationFn = Apollo.MutationFunction;\n\n/**\n * __useInviteProjectMembersMutation__\n *\n * To run a mutation, you first call `useInviteProjectMembersMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useInviteProjectMembersMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [inviteProjectMembersMutation, { data, loading, error }] = useInviteProjectMembersMutation({\n * variables: {\n * projectID: // value for 'projectID'\n * members: // value for 'members'\n * },\n * });\n */\nexport function useInviteProjectMembersMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(InviteProjectMembersDocument, options);\n }\nexport type InviteProjectMembersMutationHookResult = ReturnType;\nexport type InviteProjectMembersMutationResult = Apollo.MutationResult;\nexport type InviteProjectMembersMutationOptions = Apollo.BaseMutationOptions;\nexport const UpdateProjectMemberRoleDocument = gql`\n mutation updateProjectMemberRole($projectID: UUID!, $userID: UUID!, $roleCode: RoleCode!) {\n updateProjectMemberRole(\n input: {projectID: $projectID, userID: $userID, roleCode: $roleCode}\n ) {\n ok\n member {\n id\n role {\n code\n name\n }\n }\n }\n}\n `;\nexport type UpdateProjectMemberRoleMutationFn = Apollo.MutationFunction;\n\n/**\n * __useUpdateProjectMemberRoleMutation__\n *\n * To run a mutation, you first call `useUpdateProjectMemberRoleMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useUpdateProjectMemberRoleMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [updateProjectMemberRoleMutation, { data, loading, error }] = useUpdateProjectMemberRoleMutation({\n * variables: {\n * projectID: // value for 'projectID'\n * userID: // value for 'userID'\n * roleCode: // value for 'roleCode'\n * },\n * });\n */\nexport function useUpdateProjectMemberRoleMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(UpdateProjectMemberRoleDocument, options);\n }\nexport type UpdateProjectMemberRoleMutationHookResult = ReturnType;\nexport type UpdateProjectMemberRoleMutationResult = Apollo.MutationResult;\nexport type UpdateProjectMemberRoleMutationOptions = Apollo.BaseMutationOptions;\nexport const CreateTaskDocument = gql`\n mutation createTask($taskGroupID: UUID!, $name: String!, $position: Float!, $assigned: [UUID!]) {\n createTask(\n input: {taskGroupID: $taskGroupID, name: $name, position: $position, assigned: $assigned}\n ) {\n ...TaskFields\n }\n}\n ${TaskFieldsFragmentDoc}`;\nexport type CreateTaskMutationFn = Apollo.MutationFunction;\n\n/**\n * __useCreateTaskMutation__\n *\n * To run a mutation, you first call `useCreateTaskMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useCreateTaskMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [createTaskMutation, { data, loading, error }] = useCreateTaskMutation({\n * variables: {\n * taskGroupID: // value for 'taskGroupID'\n * name: // value for 'name'\n * position: // value for 'position'\n * assigned: // value for 'assigned'\n * },\n * });\n */\nexport function useCreateTaskMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(CreateTaskDocument, options);\n }\nexport type CreateTaskMutationHookResult = ReturnType;\nexport type CreateTaskMutationResult = Apollo.MutationResult;\nexport type CreateTaskMutationOptions = Apollo.BaseMutationOptions;\nexport const CreateTaskChecklistDocument = gql`\n mutation createTaskChecklist($taskID: UUID!, $name: String!, $position: Float!) {\n createTaskChecklist(input: {taskID: $taskID, name: $name, position: $position}) {\n id\n name\n position\n items {\n id\n name\n taskChecklistID\n complete\n position\n }\n }\n}\n `;\nexport type CreateTaskChecklistMutationFn = Apollo.MutationFunction;\n\n/**\n * __useCreateTaskChecklistMutation__\n *\n * To run a mutation, you first call `useCreateTaskChecklistMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useCreateTaskChecklistMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [createTaskChecklistMutation, { data, loading, error }] = useCreateTaskChecklistMutation({\n * variables: {\n * taskID: // value for 'taskID'\n * name: // value for 'name'\n * position: // value for 'position'\n * },\n * });\n */\nexport function useCreateTaskChecklistMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(CreateTaskChecklistDocument, options);\n }\nexport type CreateTaskChecklistMutationHookResult = ReturnType;\nexport type CreateTaskChecklistMutationResult = Apollo.MutationResult;\nexport type CreateTaskChecklistMutationOptions = Apollo.BaseMutationOptions;\nexport const CreateTaskChecklistItemDocument = gql`\n mutation createTaskChecklistItem($taskChecklistID: UUID!, $name: String!, $position: Float!) {\n createTaskChecklistItem(\n input: {taskChecklistID: $taskChecklistID, name: $name, position: $position}\n ) {\n id\n name\n taskChecklistID\n position\n complete\n }\n}\n `;\nexport type CreateTaskChecklistItemMutationFn = Apollo.MutationFunction;\n\n/**\n * __useCreateTaskChecklistItemMutation__\n *\n * To run a mutation, you first call `useCreateTaskChecklistItemMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useCreateTaskChecklistItemMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [createTaskChecklistItemMutation, { data, loading, error }] = useCreateTaskChecklistItemMutation({\n * variables: {\n * taskChecklistID: // value for 'taskChecklistID'\n * name: // value for 'name'\n * position: // value for 'position'\n * },\n * });\n */\nexport function useCreateTaskChecklistItemMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(CreateTaskChecklistItemDocument, options);\n }\nexport type CreateTaskChecklistItemMutationHookResult = ReturnType;\nexport type CreateTaskChecklistItemMutationResult = Apollo.MutationResult;\nexport type CreateTaskChecklistItemMutationOptions = Apollo.BaseMutationOptions;\nexport const CreateTaskCommentDocument = gql`\n mutation createTaskComment($taskID: UUID!, $message: String!) {\n createTaskComment(input: {taskID: $taskID, message: $message}) {\n taskID\n comment {\n id\n message\n pinned\n createdAt\n updatedAt\n createdBy {\n id\n fullName\n profileIcon {\n initials\n bgColor\n url\n }\n }\n }\n }\n}\n `;\nexport type CreateTaskCommentMutationFn = Apollo.MutationFunction;\n\n/**\n * __useCreateTaskCommentMutation__\n *\n * To run a mutation, you first call `useCreateTaskCommentMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useCreateTaskCommentMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [createTaskCommentMutation, { data, loading, error }] = useCreateTaskCommentMutation({\n * variables: {\n * taskID: // value for 'taskID'\n * message: // value for 'message'\n * },\n * });\n */\nexport function useCreateTaskCommentMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(CreateTaskCommentDocument, options);\n }\nexport type CreateTaskCommentMutationHookResult = ReturnType;\nexport type CreateTaskCommentMutationResult = Apollo.MutationResult;\nexport type CreateTaskCommentMutationOptions = Apollo.BaseMutationOptions;\nexport const DeleteTaskChecklistDocument = gql`\n mutation deleteTaskChecklist($taskChecklistID: UUID!) {\n deleteTaskChecklist(input: {taskChecklistID: $taskChecklistID}) {\n ok\n taskChecklist {\n id\n }\n }\n}\n `;\nexport type DeleteTaskChecklistMutationFn = Apollo.MutationFunction;\n\n/**\n * __useDeleteTaskChecklistMutation__\n *\n * To run a mutation, you first call `useDeleteTaskChecklistMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useDeleteTaskChecklistMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [deleteTaskChecklistMutation, { data, loading, error }] = useDeleteTaskChecklistMutation({\n * variables: {\n * taskChecklistID: // value for 'taskChecklistID'\n * },\n * });\n */\nexport function useDeleteTaskChecklistMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(DeleteTaskChecklistDocument, options);\n }\nexport type DeleteTaskChecklistMutationHookResult = ReturnType;\nexport type DeleteTaskChecklistMutationResult = Apollo.MutationResult;\nexport type DeleteTaskChecklistMutationOptions = Apollo.BaseMutationOptions;\nexport const DeleteTaskChecklistItemDocument = gql`\n mutation deleteTaskChecklistItem($taskChecklistItemID: UUID!) {\n deleteTaskChecklistItem(input: {taskChecklistItemID: $taskChecklistItemID}) {\n ok\n taskChecklistItem {\n id\n taskChecklistID\n }\n }\n}\n `;\nexport type DeleteTaskChecklistItemMutationFn = Apollo.MutationFunction;\n\n/**\n * __useDeleteTaskChecklistItemMutation__\n *\n * To run a mutation, you first call `useDeleteTaskChecklistItemMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useDeleteTaskChecklistItemMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [deleteTaskChecklistItemMutation, { data, loading, error }] = useDeleteTaskChecklistItemMutation({\n * variables: {\n * taskChecklistItemID: // value for 'taskChecklistItemID'\n * },\n * });\n */\nexport function useDeleteTaskChecklistItemMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(DeleteTaskChecklistItemDocument, options);\n }\nexport type DeleteTaskChecklistItemMutationHookResult = ReturnType;\nexport type DeleteTaskChecklistItemMutationResult = Apollo.MutationResult;\nexport type DeleteTaskChecklistItemMutationOptions = Apollo.BaseMutationOptions;\nexport const DeleteTaskCommentDocument = gql`\n mutation deleteTaskComment($commentID: UUID!) {\n deleteTaskComment(input: {commentID: $commentID}) {\n commentID\n }\n}\n `;\nexport type DeleteTaskCommentMutationFn = Apollo.MutationFunction;\n\n/**\n * __useDeleteTaskCommentMutation__\n *\n * To run a mutation, you first call `useDeleteTaskCommentMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useDeleteTaskCommentMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [deleteTaskCommentMutation, { data, loading, error }] = useDeleteTaskCommentMutation({\n * variables: {\n * commentID: // value for 'commentID'\n * },\n * });\n */\nexport function useDeleteTaskCommentMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(DeleteTaskCommentDocument, options);\n }\nexport type DeleteTaskCommentMutationHookResult = ReturnType;\nexport type DeleteTaskCommentMutationResult = Apollo.MutationResult;\nexport type DeleteTaskCommentMutationOptions = Apollo.BaseMutationOptions;\nexport const SetTaskChecklistItemCompleteDocument = gql`\n mutation setTaskChecklistItemComplete($taskChecklistItemID: UUID!, $complete: Boolean!) {\n setTaskChecklistItemComplete(\n input: {taskChecklistItemID: $taskChecklistItemID, complete: $complete}\n ) {\n id\n complete\n }\n}\n `;\nexport type SetTaskChecklistItemCompleteMutationFn = Apollo.MutationFunction;\n\n/**\n * __useSetTaskChecklistItemCompleteMutation__\n *\n * To run a mutation, you first call `useSetTaskChecklistItemCompleteMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useSetTaskChecklistItemCompleteMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [setTaskChecklistItemCompleteMutation, { data, loading, error }] = useSetTaskChecklistItemCompleteMutation({\n * variables: {\n * taskChecklistItemID: // value for 'taskChecklistItemID'\n * complete: // value for 'complete'\n * },\n * });\n */\nexport function useSetTaskChecklistItemCompleteMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(SetTaskChecklistItemCompleteDocument, options);\n }\nexport type SetTaskChecklistItemCompleteMutationHookResult = ReturnType;\nexport type SetTaskChecklistItemCompleteMutationResult = Apollo.MutationResult;\nexport type SetTaskChecklistItemCompleteMutationOptions = Apollo.BaseMutationOptions;\nexport const SetTaskCompleteDocument = gql`\n mutation setTaskComplete($taskID: UUID!, $complete: Boolean!) {\n setTaskComplete(input: {taskID: $taskID, complete: $complete}) {\n ...TaskFields\n }\n}\n ${TaskFieldsFragmentDoc}`;\nexport type SetTaskCompleteMutationFn = Apollo.MutationFunction;\n\n/**\n * __useSetTaskCompleteMutation__\n *\n * To run a mutation, you first call `useSetTaskCompleteMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useSetTaskCompleteMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [setTaskCompleteMutation, { data, loading, error }] = useSetTaskCompleteMutation({\n * variables: {\n * taskID: // value for 'taskID'\n * complete: // value for 'complete'\n * },\n * });\n */\nexport function useSetTaskCompleteMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(SetTaskCompleteDocument, options);\n }\nexport type SetTaskCompleteMutationHookResult = ReturnType;\nexport type SetTaskCompleteMutationResult = Apollo.MutationResult;\nexport type SetTaskCompleteMutationOptions = Apollo.BaseMutationOptions;\nexport const UpdateTaskChecklistItemLocationDocument = gql`\n mutation updateTaskChecklistItemLocation($taskChecklistID: UUID!, $taskChecklistItemID: UUID!, $position: Float!) {\n updateTaskChecklistItemLocation(\n input: {taskChecklistID: $taskChecklistID, taskChecklistItemID: $taskChecklistItemID, position: $position}\n ) {\n taskChecklistID\n prevChecklistID\n checklistItem {\n id\n taskChecklistID\n position\n }\n }\n}\n `;\nexport type UpdateTaskChecklistItemLocationMutationFn = Apollo.MutationFunction;\n\n/**\n * __useUpdateTaskChecklistItemLocationMutation__\n *\n * To run a mutation, you first call `useUpdateTaskChecklistItemLocationMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useUpdateTaskChecklistItemLocationMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [updateTaskChecklistItemLocationMutation, { data, loading, error }] = useUpdateTaskChecklistItemLocationMutation({\n * variables: {\n * taskChecklistID: // value for 'taskChecklistID'\n * taskChecklistItemID: // value for 'taskChecklistItemID'\n * position: // value for 'position'\n * },\n * });\n */\nexport function useUpdateTaskChecklistItemLocationMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(UpdateTaskChecklistItemLocationDocument, options);\n }\nexport type UpdateTaskChecklistItemLocationMutationHookResult = ReturnType;\nexport type UpdateTaskChecklistItemLocationMutationResult = Apollo.MutationResult;\nexport type UpdateTaskChecklistItemLocationMutationOptions = Apollo.BaseMutationOptions;\nexport const UpdateTaskChecklistItemNameDocument = gql`\n mutation updateTaskChecklistItemName($taskChecklistItemID: UUID!, $name: String!) {\n updateTaskChecklistItemName(\n input: {taskChecklistItemID: $taskChecklistItemID, name: $name}\n ) {\n id\n name\n }\n}\n `;\nexport type UpdateTaskChecklistItemNameMutationFn = Apollo.MutationFunction;\n\n/**\n * __useUpdateTaskChecklistItemNameMutation__\n *\n * To run a mutation, you first call `useUpdateTaskChecklistItemNameMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useUpdateTaskChecklistItemNameMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [updateTaskChecklistItemNameMutation, { data, loading, error }] = useUpdateTaskChecklistItemNameMutation({\n * variables: {\n * taskChecklistItemID: // value for 'taskChecklistItemID'\n * name: // value for 'name'\n * },\n * });\n */\nexport function useUpdateTaskChecklistItemNameMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(UpdateTaskChecklistItemNameDocument, options);\n }\nexport type UpdateTaskChecklistItemNameMutationHookResult = ReturnType;\nexport type UpdateTaskChecklistItemNameMutationResult = Apollo.MutationResult;\nexport type UpdateTaskChecklistItemNameMutationOptions = Apollo.BaseMutationOptions;\nexport const UpdateTaskChecklistLocationDocument = gql`\n mutation updateTaskChecklistLocation($taskChecklistID: UUID!, $position: Float!) {\n updateTaskChecklistLocation(\n input: {taskChecklistID: $taskChecklistID, position: $position}\n ) {\n checklist {\n id\n position\n }\n }\n}\n `;\nexport type UpdateTaskChecklistLocationMutationFn = Apollo.MutationFunction;\n\n/**\n * __useUpdateTaskChecklistLocationMutation__\n *\n * To run a mutation, you first call `useUpdateTaskChecklistLocationMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useUpdateTaskChecklistLocationMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [updateTaskChecklistLocationMutation, { data, loading, error }] = useUpdateTaskChecklistLocationMutation({\n * variables: {\n * taskChecklistID: // value for 'taskChecklistID'\n * position: // value for 'position'\n * },\n * });\n */\nexport function useUpdateTaskChecklistLocationMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(UpdateTaskChecklistLocationDocument, options);\n }\nexport type UpdateTaskChecklistLocationMutationHookResult = ReturnType;\nexport type UpdateTaskChecklistLocationMutationResult = Apollo.MutationResult;\nexport type UpdateTaskChecklistLocationMutationOptions = Apollo.BaseMutationOptions;\nexport const UpdateTaskChecklistNameDocument = gql`\n mutation updateTaskChecklistName($taskChecklistID: UUID!, $name: String!) {\n updateTaskChecklistName(input: {taskChecklistID: $taskChecklistID, name: $name}) {\n id\n name\n position\n items {\n id\n name\n taskChecklistID\n complete\n position\n }\n }\n}\n `;\nexport type UpdateTaskChecklistNameMutationFn = Apollo.MutationFunction;\n\n/**\n * __useUpdateTaskChecklistNameMutation__\n *\n * To run a mutation, you first call `useUpdateTaskChecklistNameMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useUpdateTaskChecklistNameMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [updateTaskChecklistNameMutation, { data, loading, error }] = useUpdateTaskChecklistNameMutation({\n * variables: {\n * taskChecklistID: // value for 'taskChecklistID'\n * name: // value for 'name'\n * },\n * });\n */\nexport function useUpdateTaskChecklistNameMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(UpdateTaskChecklistNameDocument, options);\n }\nexport type UpdateTaskChecklistNameMutationHookResult = ReturnType;\nexport type UpdateTaskChecklistNameMutationResult = Apollo.MutationResult;\nexport type UpdateTaskChecklistNameMutationOptions = Apollo.BaseMutationOptions;\nexport const UpdateTaskCommentDocument = gql`\n mutation updateTaskComment($commentID: UUID!, $message: String!) {\n updateTaskComment(input: {commentID: $commentID, message: $message}) {\n comment {\n id\n updatedAt\n message\n }\n }\n}\n `;\nexport type UpdateTaskCommentMutationFn = Apollo.MutationFunction;\n\n/**\n * __useUpdateTaskCommentMutation__\n *\n * To run a mutation, you first call `useUpdateTaskCommentMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useUpdateTaskCommentMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [updateTaskCommentMutation, { data, loading, error }] = useUpdateTaskCommentMutation({\n * variables: {\n * commentID: // value for 'commentID'\n * message: // value for 'message'\n * },\n * });\n */\nexport function useUpdateTaskCommentMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(UpdateTaskCommentDocument, options);\n }\nexport type UpdateTaskCommentMutationHookResult = ReturnType;\nexport type UpdateTaskCommentMutationResult = Apollo.MutationResult;\nexport type UpdateTaskCommentMutationOptions = Apollo.BaseMutationOptions;\nexport const DeleteTaskGroupTasksDocument = gql`\n mutation deleteTaskGroupTasks($taskGroupID: UUID!) {\n deleteTaskGroupTasks(input: {taskGroupID: $taskGroupID}) {\n tasks\n taskGroupID\n }\n}\n `;\nexport type DeleteTaskGroupTasksMutationFn = Apollo.MutationFunction;\n\n/**\n * __useDeleteTaskGroupTasksMutation__\n *\n * To run a mutation, you first call `useDeleteTaskGroupTasksMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useDeleteTaskGroupTasksMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [deleteTaskGroupTasksMutation, { data, loading, error }] = useDeleteTaskGroupTasksMutation({\n * variables: {\n * taskGroupID: // value for 'taskGroupID'\n * },\n * });\n */\nexport function useDeleteTaskGroupTasksMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(DeleteTaskGroupTasksDocument, options);\n }\nexport type DeleteTaskGroupTasksMutationHookResult = ReturnType;\nexport type DeleteTaskGroupTasksMutationResult = Apollo.MutationResult;\nexport type DeleteTaskGroupTasksMutationOptions = Apollo.BaseMutationOptions;\nexport const DuplicateTaskGroupDocument = gql`\n mutation duplicateTaskGroup($taskGroupID: UUID!, $name: String!, $position: Float!, $projectID: UUID!) {\n duplicateTaskGroup(\n input: {projectID: $projectID, taskGroupID: $taskGroupID, name: $name, position: $position}\n ) {\n taskGroup {\n id\n name\n position\n tasks {\n ...TaskFields\n }\n }\n }\n}\n ${TaskFieldsFragmentDoc}`;\nexport type DuplicateTaskGroupMutationFn = Apollo.MutationFunction;\n\n/**\n * __useDuplicateTaskGroupMutation__\n *\n * To run a mutation, you first call `useDuplicateTaskGroupMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useDuplicateTaskGroupMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [duplicateTaskGroupMutation, { data, loading, error }] = useDuplicateTaskGroupMutation({\n * variables: {\n * taskGroupID: // value for 'taskGroupID'\n * name: // value for 'name'\n * position: // value for 'position'\n * projectID: // value for 'projectID'\n * },\n * });\n */\nexport function useDuplicateTaskGroupMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(DuplicateTaskGroupDocument, options);\n }\nexport type DuplicateTaskGroupMutationHookResult = ReturnType;\nexport type DuplicateTaskGroupMutationResult = Apollo.MutationResult;\nexport type DuplicateTaskGroupMutationOptions = Apollo.BaseMutationOptions;\nexport const SortTaskGroupDocument = gql`\n mutation sortTaskGroup($tasks: [TaskPositionUpdate!]!, $taskGroupID: UUID!) {\n sortTaskGroup(input: {taskGroupID: $taskGroupID, tasks: $tasks}) {\n taskGroupID\n tasks {\n id\n position\n }\n }\n}\n `;\nexport type SortTaskGroupMutationFn = Apollo.MutationFunction;\n\n/**\n * __useSortTaskGroupMutation__\n *\n * To run a mutation, you first call `useSortTaskGroupMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useSortTaskGroupMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [sortTaskGroupMutation, { data, loading, error }] = useSortTaskGroupMutation({\n * variables: {\n * tasks: // value for 'tasks'\n * taskGroupID: // value for 'taskGroupID'\n * },\n * });\n */\nexport function useSortTaskGroupMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(SortTaskGroupDocument, options);\n }\nexport type SortTaskGroupMutationHookResult = ReturnType;\nexport type SortTaskGroupMutationResult = Apollo.MutationResult;\nexport type SortTaskGroupMutationOptions = Apollo.BaseMutationOptions;\nexport const UpdateTaskGroupNameDocument = gql`\n mutation updateTaskGroupName($taskGroupID: UUID!, $name: String!) {\n updateTaskGroupName(input: {taskGroupID: $taskGroupID, name: $name}) {\n id\n name\n }\n}\n `;\nexport type UpdateTaskGroupNameMutationFn = Apollo.MutationFunction;\n\n/**\n * __useUpdateTaskGroupNameMutation__\n *\n * To run a mutation, you first call `useUpdateTaskGroupNameMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useUpdateTaskGroupNameMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [updateTaskGroupNameMutation, { data, loading, error }] = useUpdateTaskGroupNameMutation({\n * variables: {\n * taskGroupID: // value for 'taskGroupID'\n * name: // value for 'name'\n * },\n * });\n */\nexport function useUpdateTaskGroupNameMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(UpdateTaskGroupNameDocument, options);\n }\nexport type UpdateTaskGroupNameMutationHookResult = ReturnType;\nexport type UpdateTaskGroupNameMutationResult = Apollo.MutationResult;\nexport type UpdateTaskGroupNameMutationOptions = Apollo.BaseMutationOptions;\nexport const CreateTeamDocument = gql`\n mutation createTeam($name: String!, $organizationID: UUID!) {\n createTeam(input: {name: $name, organizationID: $organizationID}) {\n id\n createdAt\n name\n }\n}\n `;\nexport type CreateTeamMutationFn = Apollo.MutationFunction;\n\n/**\n * __useCreateTeamMutation__\n *\n * To run a mutation, you first call `useCreateTeamMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useCreateTeamMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [createTeamMutation, { data, loading, error }] = useCreateTeamMutation({\n * variables: {\n * name: // value for 'name'\n * organizationID: // value for 'organizationID'\n * },\n * });\n */\nexport function useCreateTeamMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(CreateTeamDocument, options);\n }\nexport type CreateTeamMutationHookResult = ReturnType;\nexport type CreateTeamMutationResult = Apollo.MutationResult;\nexport type CreateTeamMutationOptions = Apollo.BaseMutationOptions;\nexport const CreateTeamMemberDocument = gql`\n mutation createTeamMember($userID: UUID!, $teamID: UUID!) {\n createTeamMember(input: {userID: $userID, teamID: $teamID}) {\n team {\n id\n }\n teamMember {\n id\n username\n fullName\n role {\n code\n name\n }\n profileIcon {\n url\n initials\n bgColor\n }\n }\n }\n}\n `;\nexport type CreateTeamMemberMutationFn = Apollo.MutationFunction;\n\n/**\n * __useCreateTeamMemberMutation__\n *\n * To run a mutation, you first call `useCreateTeamMemberMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useCreateTeamMemberMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [createTeamMemberMutation, { data, loading, error }] = useCreateTeamMemberMutation({\n * variables: {\n * userID: // value for 'userID'\n * teamID: // value for 'teamID'\n * },\n * });\n */\nexport function useCreateTeamMemberMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(CreateTeamMemberDocument, options);\n }\nexport type CreateTeamMemberMutationHookResult = ReturnType;\nexport type CreateTeamMemberMutationResult = Apollo.MutationResult;\nexport type CreateTeamMemberMutationOptions = Apollo.BaseMutationOptions;\nexport const DeleteTeamDocument = gql`\n mutation deleteTeam($teamID: UUID!) {\n deleteTeam(input: {teamID: $teamID}) {\n ok\n team {\n id\n }\n }\n}\n `;\nexport type DeleteTeamMutationFn = Apollo.MutationFunction;\n\n/**\n * __useDeleteTeamMutation__\n *\n * To run a mutation, you first call `useDeleteTeamMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useDeleteTeamMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [deleteTeamMutation, { data, loading, error }] = useDeleteTeamMutation({\n * variables: {\n * teamID: // value for 'teamID'\n * },\n * });\n */\nexport function useDeleteTeamMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(DeleteTeamDocument, options);\n }\nexport type DeleteTeamMutationHookResult = ReturnType;\nexport type DeleteTeamMutationResult = Apollo.MutationResult;\nexport type DeleteTeamMutationOptions = Apollo.BaseMutationOptions;\nexport const DeleteTeamMemberDocument = gql`\n mutation deleteTeamMember($teamID: UUID!, $userID: UUID!, $newOwnerID: UUID) {\n deleteTeamMember(\n input: {teamID: $teamID, userID: $userID, newOwnerID: $newOwnerID}\n ) {\n teamID\n userID\n }\n}\n `;\nexport type DeleteTeamMemberMutationFn = Apollo.MutationFunction;\n\n/**\n * __useDeleteTeamMemberMutation__\n *\n * To run a mutation, you first call `useDeleteTeamMemberMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useDeleteTeamMemberMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [deleteTeamMemberMutation, { data, loading, error }] = useDeleteTeamMemberMutation({\n * variables: {\n * teamID: // value for 'teamID'\n * userID: // value for 'userID'\n * newOwnerID: // value for 'newOwnerID'\n * },\n * });\n */\nexport function useDeleteTeamMemberMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(DeleteTeamMemberDocument, options);\n }\nexport type DeleteTeamMemberMutationHookResult = ReturnType;\nexport type DeleteTeamMemberMutationResult = Apollo.MutationResult;\nexport type DeleteTeamMemberMutationOptions = Apollo.BaseMutationOptions;\nexport const GetTeamDocument = gql`\n query getTeam($teamID: UUID!) {\n findTeam(input: {teamID: $teamID}) {\n id\n createdAt\n name\n members {\n id\n fullName\n username\n role {\n code\n name\n }\n profileIcon {\n url\n initials\n bgColor\n }\n owned {\n teams {\n id\n name\n }\n projects {\n id\n name\n }\n }\n member {\n teams {\n id\n name\n }\n projects {\n id\n name\n }\n }\n }\n }\n projects(input: {teamID: $teamID}) {\n id\n name\n team {\n id\n name\n }\n }\n users {\n id\n email\n fullName\n username\n role {\n code\n name\n }\n profileIcon {\n url\n initials\n bgColor\n }\n owned {\n teams {\n id\n name\n }\n projects {\n id\n name\n }\n }\n member {\n teams {\n id\n name\n }\n projects {\n id\n name\n }\n }\n }\n}\n `;\n\n/**\n * __useGetTeamQuery__\n *\n * To run a query within a React component, call `useGetTeamQuery` and pass it any options that fit your needs.\n * When your component renders, `useGetTeamQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useGetTeamQuery({\n * variables: {\n * teamID: // value for 'teamID'\n * },\n * });\n */\nexport function useGetTeamQuery(baseOptions: Apollo.QueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useQuery(GetTeamDocument, options);\n }\nexport function useGetTeamLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useLazyQuery(GetTeamDocument, options);\n }\nexport type GetTeamQueryHookResult = ReturnType;\nexport type GetTeamLazyQueryHookResult = ReturnType;\nexport type GetTeamQueryResult = Apollo.QueryResult;\nexport const UpdateTeamMemberRoleDocument = gql`\n mutation updateTeamMemberRole($teamID: UUID!, $userID: UUID!, $roleCode: RoleCode!) {\n updateTeamMemberRole(\n input: {teamID: $teamID, userID: $userID, roleCode: $roleCode}\n ) {\n member {\n id\n role {\n code\n name\n }\n }\n teamID\n }\n}\n `;\nexport type UpdateTeamMemberRoleMutationFn = Apollo.MutationFunction;\n\n/**\n * __useUpdateTeamMemberRoleMutation__\n *\n * To run a mutation, you first call `useUpdateTeamMemberRoleMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useUpdateTeamMemberRoleMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [updateTeamMemberRoleMutation, { data, loading, error }] = useUpdateTeamMemberRoleMutation({\n * variables: {\n * teamID: // value for 'teamID'\n * userID: // value for 'userID'\n * roleCode: // value for 'roleCode'\n * },\n * });\n */\nexport function useUpdateTeamMemberRoleMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(UpdateTeamMemberRoleDocument, options);\n }\nexport type UpdateTeamMemberRoleMutationHookResult = ReturnType;\nexport type UpdateTeamMemberRoleMutationResult = Apollo.MutationResult;\nexport type UpdateTeamMemberRoleMutationOptions = Apollo.BaseMutationOptions;\nexport const ToggleProjectVisibilityDocument = gql`\n mutation toggleProjectVisibility($projectID: UUID!, $isPublic: Boolean!) {\n toggleProjectVisibility(input: {projectID: $projectID, isPublic: $isPublic}) {\n project {\n id\n publicOn\n }\n }\n}\n `;\nexport type ToggleProjectVisibilityMutationFn = Apollo.MutationFunction;\n\n/**\n * __useToggleProjectVisibilityMutation__\n *\n * To run a mutation, you first call `useToggleProjectVisibilityMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useToggleProjectVisibilityMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [toggleProjectVisibilityMutation, { data, loading, error }] = useToggleProjectVisibilityMutation({\n * variables: {\n * projectID: // value for 'projectID'\n * isPublic: // value for 'isPublic'\n * },\n * });\n */\nexport function useToggleProjectVisibilityMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(ToggleProjectVisibilityDocument, options);\n }\nexport type ToggleProjectVisibilityMutationHookResult = ReturnType;\nexport type ToggleProjectVisibilityMutationResult = Apollo.MutationResult;\nexport type ToggleProjectVisibilityMutationOptions = Apollo.BaseMutationOptions;\nexport const ToggleTaskLabelDocument = gql`\n mutation toggleTaskLabel($taskID: UUID!, $projectLabelID: UUID!) {\n toggleTaskLabel(input: {taskID: $taskID, projectLabelID: $projectLabelID}) {\n active\n task {\n id\n labels {\n id\n assignedDate\n projectLabel {\n id\n createdDate\n labelColor {\n id\n colorHex\n name\n position\n }\n name\n }\n }\n }\n }\n}\n `;\nexport type ToggleTaskLabelMutationFn = Apollo.MutationFunction;\n\n/**\n * __useToggleTaskLabelMutation__\n *\n * To run a mutation, you first call `useToggleTaskLabelMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useToggleTaskLabelMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [toggleTaskLabelMutation, { data, loading, error }] = useToggleTaskLabelMutation({\n * variables: {\n * taskID: // value for 'taskID'\n * projectLabelID: // value for 'projectLabelID'\n * },\n * });\n */\nexport function useToggleTaskLabelMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(ToggleTaskLabelDocument, options);\n }\nexport type ToggleTaskLabelMutationHookResult = ReturnType;\nexport type ToggleTaskLabelMutationResult = Apollo.MutationResult;\nexport type ToggleTaskLabelMutationOptions = Apollo.BaseMutationOptions;\nexport const TopNavbarDocument = gql`\n query topNavbar {\n notifications {\n createdAt\n read\n id\n entity {\n id\n type\n name\n }\n actor {\n id\n type\n name\n }\n actionType\n }\n me {\n user {\n id\n fullName\n profileIcon {\n initials\n bgColor\n url\n }\n }\n teamRoles {\n teamID\n roleCode\n }\n projectRoles {\n projectID\n roleCode\n }\n }\n}\n `;\n\n/**\n * __useTopNavbarQuery__\n *\n * To run a query within a React component, call `useTopNavbarQuery` and pass it any options that fit your needs.\n * When your component renders, `useTopNavbarQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useTopNavbarQuery({\n * variables: {\n * },\n * });\n */\nexport function useTopNavbarQuery(baseOptions?: Apollo.QueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useQuery(TopNavbarDocument, options);\n }\nexport function useTopNavbarLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useLazyQuery(TopNavbarDocument, options);\n }\nexport type TopNavbarQueryHookResult = ReturnType;\nexport type TopNavbarLazyQueryHookResult = ReturnType;\nexport type TopNavbarQueryResult = Apollo.QueryResult;\nexport const UnassignTaskDocument = gql`\n mutation unassignTask($taskID: UUID!, $userID: UUID!) {\n unassignTask(input: {taskID: $taskID, userID: $userID}) {\n assigned {\n id\n fullName\n }\n id\n }\n}\n `;\nexport type UnassignTaskMutationFn = Apollo.MutationFunction;\n\n/**\n * __useUnassignTaskMutation__\n *\n * To run a mutation, you first call `useUnassignTaskMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useUnassignTaskMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [unassignTaskMutation, { data, loading, error }] = useUnassignTaskMutation({\n * variables: {\n * taskID: // value for 'taskID'\n * userID: // value for 'userID'\n * },\n * });\n */\nexport function useUnassignTaskMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(UnassignTaskDocument, options);\n }\nexport type UnassignTaskMutationHookResult = ReturnType;\nexport type UnassignTaskMutationResult = Apollo.MutationResult;\nexport type UnassignTaskMutationOptions = Apollo.BaseMutationOptions;\nexport const UpdateProjectLabelDocument = gql`\n mutation updateProjectLabel($projectLabelID: UUID!, $labelColorID: UUID!, $name: String!) {\n updateProjectLabel(\n input: {projectLabelID: $projectLabelID, labelColorID: $labelColorID, name: $name}\n ) {\n id\n createdDate\n labelColor {\n id\n colorHex\n name\n position\n }\n name\n }\n}\n `;\nexport type UpdateProjectLabelMutationFn = Apollo.MutationFunction;\n\n/**\n * __useUpdateProjectLabelMutation__\n *\n * To run a mutation, you first call `useUpdateProjectLabelMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useUpdateProjectLabelMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [updateProjectLabelMutation, { data, loading, error }] = useUpdateProjectLabelMutation({\n * variables: {\n * projectLabelID: // value for 'projectLabelID'\n * labelColorID: // value for 'labelColorID'\n * name: // value for 'name'\n * },\n * });\n */\nexport function useUpdateProjectLabelMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(UpdateProjectLabelDocument, options);\n }\nexport type UpdateProjectLabelMutationHookResult = ReturnType;\nexport type UpdateProjectLabelMutationResult = Apollo.MutationResult;\nexport type UpdateProjectLabelMutationOptions = Apollo.BaseMutationOptions;\nexport const UpdateProjectNameDocument = gql`\n mutation updateProjectName($projectID: UUID!, $name: String!) {\n updateProjectName(input: {projectID: $projectID, name: $name}) {\n id\n name\n }\n}\n `;\nexport type UpdateProjectNameMutationFn = Apollo.MutationFunction;\n\n/**\n * __useUpdateProjectNameMutation__\n *\n * To run a mutation, you first call `useUpdateProjectNameMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useUpdateProjectNameMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [updateProjectNameMutation, { data, loading, error }] = useUpdateProjectNameMutation({\n * variables: {\n * projectID: // value for 'projectID'\n * name: // value for 'name'\n * },\n * });\n */\nexport function useUpdateProjectNameMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(UpdateProjectNameDocument, options);\n }\nexport type UpdateProjectNameMutationHookResult = ReturnType;\nexport type UpdateProjectNameMutationResult = Apollo.MutationResult;\nexport type UpdateProjectNameMutationOptions = Apollo.BaseMutationOptions;\nexport const UpdateTaskDescriptionDocument = gql`\n mutation updateTaskDescription($taskID: UUID!, $description: String!) {\n updateTaskDescription(input: {taskID: $taskID, description: $description}) {\n id\n description\n }\n}\n `;\nexport type UpdateTaskDescriptionMutationFn = Apollo.MutationFunction;\n\n/**\n * __useUpdateTaskDescriptionMutation__\n *\n * To run a mutation, you first call `useUpdateTaskDescriptionMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useUpdateTaskDescriptionMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [updateTaskDescriptionMutation, { data, loading, error }] = useUpdateTaskDescriptionMutation({\n * variables: {\n * taskID: // value for 'taskID'\n * description: // value for 'description'\n * },\n * });\n */\nexport function useUpdateTaskDescriptionMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(UpdateTaskDescriptionDocument, options);\n }\nexport type UpdateTaskDescriptionMutationHookResult = ReturnType;\nexport type UpdateTaskDescriptionMutationResult = Apollo.MutationResult;\nexport type UpdateTaskDescriptionMutationOptions = Apollo.BaseMutationOptions;\nexport const UpdateTaskDueDateDocument = gql`\n mutation updateTaskDueDate($taskID: UUID!, $dueDate: Time, $hasTime: Boolean!) {\n updateTaskDueDate(\n input: {taskID: $taskID, dueDate: $dueDate, hasTime: $hasTime}\n ) {\n id\n dueDate\n hasTime\n }\n}\n `;\nexport type UpdateTaskDueDateMutationFn = Apollo.MutationFunction;\n\n/**\n * __useUpdateTaskDueDateMutation__\n *\n * To run a mutation, you first call `useUpdateTaskDueDateMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useUpdateTaskDueDateMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [updateTaskDueDateMutation, { data, loading, error }] = useUpdateTaskDueDateMutation({\n * variables: {\n * taskID: // value for 'taskID'\n * dueDate: // value for 'dueDate'\n * hasTime: // value for 'hasTime'\n * },\n * });\n */\nexport function useUpdateTaskDueDateMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(UpdateTaskDueDateDocument, options);\n }\nexport type UpdateTaskDueDateMutationHookResult = ReturnType;\nexport type UpdateTaskDueDateMutationResult = Apollo.MutationResult;\nexport type UpdateTaskDueDateMutationOptions = Apollo.BaseMutationOptions;\nexport const UpdateTaskGroupLocationDocument = gql`\n mutation updateTaskGroupLocation($taskGroupID: UUID!, $position: Float!) {\n updateTaskGroupLocation(input: {taskGroupID: $taskGroupID, position: $position}) {\n id\n position\n }\n}\n `;\nexport type UpdateTaskGroupLocationMutationFn = Apollo.MutationFunction;\n\n/**\n * __useUpdateTaskGroupLocationMutation__\n *\n * To run a mutation, you first call `useUpdateTaskGroupLocationMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useUpdateTaskGroupLocationMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [updateTaskGroupLocationMutation, { data, loading, error }] = useUpdateTaskGroupLocationMutation({\n * variables: {\n * taskGroupID: // value for 'taskGroupID'\n * position: // value for 'position'\n * },\n * });\n */\nexport function useUpdateTaskGroupLocationMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(UpdateTaskGroupLocationDocument, options);\n }\nexport type UpdateTaskGroupLocationMutationHookResult = ReturnType;\nexport type UpdateTaskGroupLocationMutationResult = Apollo.MutationResult;\nexport type UpdateTaskGroupLocationMutationOptions = Apollo.BaseMutationOptions;\nexport const UpdateTaskLocationDocument = gql`\n mutation updateTaskLocation($taskID: UUID!, $taskGroupID: UUID!, $position: Float!) {\n updateTaskLocation(\n input: {taskID: $taskID, taskGroupID: $taskGroupID, position: $position}\n ) {\n previousTaskGroupID\n task {\n id\n createdAt\n name\n position\n taskGroup {\n id\n }\n }\n }\n}\n `;\nexport type UpdateTaskLocationMutationFn = Apollo.MutationFunction;\n\n/**\n * __useUpdateTaskLocationMutation__\n *\n * To run a mutation, you first call `useUpdateTaskLocationMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useUpdateTaskLocationMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [updateTaskLocationMutation, { data, loading, error }] = useUpdateTaskLocationMutation({\n * variables: {\n * taskID: // value for 'taskID'\n * taskGroupID: // value for 'taskGroupID'\n * position: // value for 'position'\n * },\n * });\n */\nexport function useUpdateTaskLocationMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(UpdateTaskLocationDocument, options);\n }\nexport type UpdateTaskLocationMutationHookResult = ReturnType;\nexport type UpdateTaskLocationMutationResult = Apollo.MutationResult;\nexport type UpdateTaskLocationMutationOptions = Apollo.BaseMutationOptions;\nexport const UpdateTaskNameDocument = gql`\n mutation updateTaskName($taskID: UUID!, $name: String!) {\n updateTaskName(input: {taskID: $taskID, name: $name}) {\n id\n name\n position\n }\n}\n `;\nexport type UpdateTaskNameMutationFn = Apollo.MutationFunction;\n\n/**\n * __useUpdateTaskNameMutation__\n *\n * To run a mutation, you first call `useUpdateTaskNameMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useUpdateTaskNameMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [updateTaskNameMutation, { data, loading, error }] = useUpdateTaskNameMutation({\n * variables: {\n * taskID: // value for 'taskID'\n * name: // value for 'name'\n * },\n * });\n */\nexport function useUpdateTaskNameMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(UpdateTaskNameDocument, options);\n }\nexport type UpdateTaskNameMutationHookResult = ReturnType;\nexport type UpdateTaskNameMutationResult = Apollo.MutationResult;\nexport type UpdateTaskNameMutationOptions = Apollo.BaseMutationOptions;\nexport const CreateUserAccountDocument = gql`\n mutation createUserAccount($username: String!, $roleCode: String!, $email: String!, $fullName: String!, $initials: String!, $password: String!) {\n createUserAccount(\n input: {roleCode: $roleCode, username: $username, email: $email, fullName: $fullName, initials: $initials, password: $password}\n ) {\n id\n email\n fullName\n initials\n username\n bio\n profileIcon {\n url\n initials\n bgColor\n }\n role {\n code\n name\n }\n owned {\n teams {\n id\n name\n }\n projects {\n id\n name\n }\n }\n member {\n teams {\n id\n name\n }\n projects {\n id\n name\n }\n }\n }\n}\n `;\nexport type CreateUserAccountMutationFn = Apollo.MutationFunction;\n\n/**\n * __useCreateUserAccountMutation__\n *\n * To run a mutation, you first call `useCreateUserAccountMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useCreateUserAccountMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [createUserAccountMutation, { data, loading, error }] = useCreateUserAccountMutation({\n * variables: {\n * username: // value for 'username'\n * roleCode: // value for 'roleCode'\n * email: // value for 'email'\n * fullName: // value for 'fullName'\n * initials: // value for 'initials'\n * password: // value for 'password'\n * },\n * });\n */\nexport function useCreateUserAccountMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(CreateUserAccountDocument, options);\n }\nexport type CreateUserAccountMutationHookResult = ReturnType;\nexport type CreateUserAccountMutationResult = Apollo.MutationResult;\nexport type CreateUserAccountMutationOptions = Apollo.BaseMutationOptions;\nexport const DeleteInvitedUserAccountDocument = gql`\n mutation deleteInvitedUserAccount($invitedUserID: UUID!) {\n deleteInvitedUserAccount(input: {invitedUserID: $invitedUserID}) {\n invitedUser {\n id\n }\n }\n}\n `;\nexport type DeleteInvitedUserAccountMutationFn = Apollo.MutationFunction;\n\n/**\n * __useDeleteInvitedUserAccountMutation__\n *\n * To run a mutation, you first call `useDeleteInvitedUserAccountMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useDeleteInvitedUserAccountMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [deleteInvitedUserAccountMutation, { data, loading, error }] = useDeleteInvitedUserAccountMutation({\n * variables: {\n * invitedUserID: // value for 'invitedUserID'\n * },\n * });\n */\nexport function useDeleteInvitedUserAccountMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(DeleteInvitedUserAccountDocument, options);\n }\nexport type DeleteInvitedUserAccountMutationHookResult = ReturnType;\nexport type DeleteInvitedUserAccountMutationResult = Apollo.MutationResult;\nexport type DeleteInvitedUserAccountMutationOptions = Apollo.BaseMutationOptions;\nexport const DeleteUserAccountDocument = gql`\n mutation deleteUserAccount($userID: UUID!, $newOwnerID: UUID) {\n deleteUserAccount(input: {userID: $userID, newOwnerID: $newOwnerID}) {\n ok\n userAccount {\n id\n }\n }\n}\n `;\nexport type DeleteUserAccountMutationFn = Apollo.MutationFunction;\n\n/**\n * __useDeleteUserAccountMutation__\n *\n * To run a mutation, you first call `useDeleteUserAccountMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useDeleteUserAccountMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [deleteUserAccountMutation, { data, loading, error }] = useDeleteUserAccountMutation({\n * variables: {\n * userID: // value for 'userID'\n * newOwnerID: // value for 'newOwnerID'\n * },\n * });\n */\nexport function useDeleteUserAccountMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(DeleteUserAccountDocument, options);\n }\nexport type DeleteUserAccountMutationHookResult = ReturnType;\nexport type DeleteUserAccountMutationResult = Apollo.MutationResult;\nexport type DeleteUserAccountMutationOptions = Apollo.BaseMutationOptions;\nexport const UpdateUserInfoDocument = gql`\n mutation updateUserInfo($name: String!, $initials: String!, $email: String!, $bio: String!) {\n updateUserInfo(\n input: {name: $name, initials: $initials, email: $email, bio: $bio}\n ) {\n user {\n id\n email\n fullName\n bio\n profileIcon {\n initials\n }\n }\n }\n}\n `;\nexport type UpdateUserInfoMutationFn = Apollo.MutationFunction;\n\n/**\n * __useUpdateUserInfoMutation__\n *\n * To run a mutation, you first call `useUpdateUserInfoMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useUpdateUserInfoMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [updateUserInfoMutation, { data, loading, error }] = useUpdateUserInfoMutation({\n * variables: {\n * name: // value for 'name'\n * initials: // value for 'initials'\n * email: // value for 'email'\n * bio: // value for 'bio'\n * },\n * });\n */\nexport function useUpdateUserInfoMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(UpdateUserInfoDocument, options);\n }\nexport type UpdateUserInfoMutationHookResult = ReturnType;\nexport type UpdateUserInfoMutationResult = Apollo.MutationResult;\nexport type UpdateUserInfoMutationOptions = Apollo.BaseMutationOptions;\nexport const UpdateUserPasswordDocument = gql`\n mutation updateUserPassword($userID: UUID!, $password: String!) {\n updateUserPassword(input: {userID: $userID, password: $password}) {\n ok\n }\n}\n `;\nexport type UpdateUserPasswordMutationFn = Apollo.MutationFunction;\n\n/**\n * __useUpdateUserPasswordMutation__\n *\n * To run a mutation, you first call `useUpdateUserPasswordMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useUpdateUserPasswordMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [updateUserPasswordMutation, { data, loading, error }] = useUpdateUserPasswordMutation({\n * variables: {\n * userID: // value for 'userID'\n * password: // value for 'password'\n * },\n * });\n */\nexport function useUpdateUserPasswordMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(UpdateUserPasswordDocument, options);\n }\nexport type UpdateUserPasswordMutationHookResult = ReturnType;\nexport type UpdateUserPasswordMutationResult = Apollo.MutationResult;\nexport type UpdateUserPasswordMutationOptions = Apollo.BaseMutationOptions;\nexport const UpdateUserRoleDocument = gql`\n mutation updateUserRole($userID: UUID!, $roleCode: RoleCode!) {\n updateUserRole(input: {userID: $userID, roleCode: $roleCode}) {\n user {\n id\n role {\n code\n name\n }\n }\n }\n}\n `;\nexport type UpdateUserRoleMutationFn = Apollo.MutationFunction;\n\n/**\n * __useUpdateUserRoleMutation__\n *\n * To run a mutation, you first call `useUpdateUserRoleMutation` within a React component and pass it any options that fit your needs.\n * When your component renders, `useUpdateUserRoleMutation` returns a tuple that includes:\n * - A mutate function that you can call at any time to execute the mutation\n * - An object with fields that represent the current status of the mutation's execution\n *\n * @param baseOptions options that will be passed into the mutation, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options-2;\n *\n * @example\n * const [updateUserRoleMutation, { data, loading, error }] = useUpdateUserRoleMutation({\n * variables: {\n * userID: // value for 'userID'\n * roleCode: // value for 'roleCode'\n * },\n * });\n */\nexport function useUpdateUserRoleMutation(baseOptions?: Apollo.MutationHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useMutation(UpdateUserRoleDocument, options);\n }\nexport type UpdateUserRoleMutationHookResult = ReturnType;\nexport type UpdateUserRoleMutationResult = Apollo.MutationResult;\nexport type UpdateUserRoleMutationOptions = Apollo.BaseMutationOptions;\nexport const UsersDocument = gql`\n query users {\n invitedUsers {\n id\n email\n invitedOn\n }\n users {\n id\n email\n fullName\n username\n role {\n code\n name\n }\n profileIcon {\n url\n initials\n bgColor\n }\n owned {\n teams {\n id\n name\n }\n projects {\n id\n name\n }\n }\n member {\n teams {\n id\n name\n }\n projects {\n id\n name\n }\n }\n }\n}\n `;\n\n/**\n * __useUsersQuery__\n *\n * To run a query within a React component, call `useUsersQuery` and pass it any options that fit your needs.\n * When your component renders, `useUsersQuery` returns an object from Apollo Client that contains loading, error, and data properties\n * you can use to render your UI.\n *\n * @param baseOptions options that will be passed into the query, supported options are listed on: https://www.apollographql.com/docs/react/api/react-hooks/#options;\n *\n * @example\n * const { data, loading, error } = useUsersQuery({\n * variables: {\n * },\n * });\n */\nexport function useUsersQuery(baseOptions?: Apollo.QueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useQuery(UsersDocument, options);\n }\nexport function useUsersLazyQuery(baseOptions?: Apollo.LazyQueryHookOptions) {\n const options = {...defaultOptions, ...baseOptions}\n return Apollo.useLazyQuery(UsersDocument, options);\n }\nexport type UsersQueryHookResult = ReturnType;\nexport type UsersLazyQueryHookResult = ReturnType;\nexport type UsersQueryResult = Apollo.QueryResult;","import React, { useState, useEffect, useRef } from 'react';\nimport styled, { css } from 'styled-components/macro';\nimport theme from '../../../App/ThemeStyles';\n\nconst InputWrapper = styled.div<{ width: string }>`\n position: relative;\n width: ${props => props.width};\n display: flex;\n align-items: flex-start;\n flex-direction: column;\n position: relative;\n justify-content: center;\n\n margin-bottom: 2.2rem;\n margin-top: 24px;\n`;\n\nconst InputLabel = styled.span<{ width: string }>`\n width: ${props => props.width};\n padding: 0.7rem !important;\n color: #c2c6dc;\n left: 0;\n top: 0;\n transition: all 0.2s ease;\n position: absolute;\n border-radius: 5px;\n overflow: hidden;\n font-size: 0.85rem;\n cursor: text;\n font-size: 12px;\n user-select: none;\n pointer-events: none;\n}\n`;\n\nconst InputInput = styled.input<{\n hasValue: boolean;\n hasIcon: boolean;\n width: string;\n focusBg: string;\n borderColor: string;\n}>`\n width: ${props => props.width};\n font-size: 14px;\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-color: ${props => props.borderColor};\n background: #262c49;\n box-shadow: 0 0 0 0 rgba(0, 0, 0, 0.15);\n ${props => (props.hasIcon ? 'padding: 0.7rem 1rem 0.7rem 3rem;' : 'padding: 0.7rem;')}\n line-height: 16px;\n color: #c2c6dc;\n position: relative;\n border-radius: 5px;\n transition: all 0.3s ease;\n &:focus {\n box-shadow: 0 3px 10px 0 rgba(0, 0, 0, 0.15);\n border: 1px solid ${props => props.theme.colors.primary};\n background: ${props => props.focusBg};\n }\n &:focus ~ ${InputLabel} {\n color: ${props => props.theme.colors.primary};\n transform: translate(-3px, -90%);\n }\n ${props =>\n props.hasValue &&\n css`\n & ~ ${InputLabel} {\n color: ${props.theme.colors.primary};\n transform: translate(-3px, -90%);\n }\n `}\n`;\n\nconst Icon = styled.div`\n display: flex;\n left: 16px;\n position: absolute;\n`;\n\ntype InputProps = {\n variant?: 'normal' | 'alternate';\n disabled?: boolean;\n label?: string;\n width?: string;\n floatingLabel?: boolean;\n placeholder?: string;\n icon?: JSX.Element;\n type?: string;\n autocomplete?: boolean;\n autoFocus?: boolean;\n autoSelect?: boolean;\n id?: string;\n name?: string;\n className?: string;\n defaultValue?: string;\n value?: string;\n onClick?: (e: React.MouseEvent) => void;\n};\n\nfunction useCombinedRefs(...refs: any) {\n const targetRef = React.useRef();\n\n React.useEffect(() => {\n refs.forEach((ref: any) => {\n if (!ref) return;\n\n if (typeof ref === 'function') {\n ref(targetRef.current);\n } else {\n ref.current = targetRef.current;\n }\n });\n }, [refs]);\n\n return targetRef;\n}\n\nconst Input = React.forwardRef(\n (\n {\n disabled = false,\n width = 'auto',\n variant = 'normal',\n type = 'text',\n autoFocus = false,\n autoSelect = false,\n autocomplete,\n label,\n placeholder,\n icon,\n name,\n className,\n onClick,\n floatingLabel,\n defaultValue,\n value,\n id,\n }: InputProps,\n $ref: any,\n ) => {\n const [hasValue, setHasValue] = useState(defaultValue !== '');\n const borderColor = variant === 'normal' ? 'rgba(0,0,0,0.2)' : theme.colors.alternate;\n const focusBg = variant === 'normal' ? theme.colors.bg.secondary : theme.colors.bg.primary;\n\n // Merge forwarded ref and internal ref in order to be able to access the ref in the useEffect\n // The forwarded ref is not accessible by itself, which is what the innerRef & combined ref is for\n // TODO(jordanknott): This is super ugly, find a better approach?\n const $innerRef = React.useRef(null);\n const combinedRef: any = useCombinedRefs($ref, $innerRef);\n useEffect(() => {\n if (combinedRef && combinedRef.current) {\n if (autoFocus) {\n combinedRef.current.focus();\n }\n if (autoSelect) {\n combinedRef.current.select();\n }\n }\n }, []);\n return (\n \n {\n setHasValue((e.currentTarget.value !== '' || floatingLabel) ?? false);\n }}\n disabled={disabled}\n hasValue={hasValue}\n ref={combinedRef}\n id={id}\n type={type}\n name={name}\n onClick={onClick}\n autoComplete={autocomplete ? 'on' : 'off'}\n defaultValue={defaultValue}\n value={value}\n hasIcon={typeof icon !== 'undefined'}\n width={width}\n placeholder={placeholder}\n focusBg={focusBg}\n borderColor={borderColor}\n />\n {label && {label}}\n {icon && icon}\n \n );\n },\n);\n\nexport default Input;\n","import React, { useRef } from 'react';\nimport styled, { css } from 'styled-components/macro';\nimport { mixin } from '../../utils/styles';\n\nconst Text = styled.span<{ fontSize: string; justifyTextContent: string; hasIcon?: boolean }>`\n position: relative;\n display: flex;\n align-items: center;\n justify-content: ${props => props.justifyTextContent};\n transition: all 0.2s ease;\n font-size: ${props => props.fontSize};\n color: ${props => props.theme.colors.text.secondary};\n ${props =>\n props.hasIcon &&\n css`\n padding-left: 4px;\n `}\n`;\n\nconst Base = styled.button<{ color: string; disabled: boolean }>`\n transition: all 0.2s ease;\n position: relative;\n border: none;\n cursor: pointer;\n padding: 0.75rem 2rem;\n border-radius: ${props => props.theme.borderRadius.alternate};\n display: flex;\n align-items: center;\n\n ${props =>\n props.disabled &&\n css`\n opacity: 0.5;\n cursor: default;\n pointer-events: none;\n `}\n`;\n\nconst Filled = styled(Base)<{ hoverVariant: HoverVariant }>`\n background: ${props => props.theme.colors[props.color]};\n ${props =>\n props.hoverVariant === 'boxShadow' &&\n css`\n &:hover {\n box-shadow: 0 8px 25px -8px ${props.theme.colors[props.color]};\n }\n `}\n`;\n\nconst Outline = styled(Base)<{ invert: boolean }>`\n border: 1px solid ${props => props.theme.colors[props.color]};\n background: transparent;\n ${props =>\n props.invert\n ? css`\n background: ${props.theme.colors[props.color]});\n & ${Text} {\n color: ${props.theme.colors.text.secondary});\n }\n &:hover {\n background: ${mixin.rgba(props.theme.colors[props.color], 0.8)};\n }\n `\n : css`\n & ${Text} {\n color: ${props.theme.colors[props.color]});\n }\n &:hover {\n background: ${mixin.rgba(props.theme.colors[props.color], 0.08)};\n }\n `}\n`;\n\nconst Flat = styled(Base)`\n background: transparent;\n &:hover {\n background: ${props => mixin.rgba(props.theme.colors[props.color], 0.2)};\n }\n`;\n\nconst LineX = styled.span<{ color: string }>`\n transition: all 0.2s ease;\n position: absolute;\n height: 2px;\n width: 0;\n top: auto;\n bottom: -2px;\n left: 50%;\n transform: translate(-50%);\n background: ${props => mixin.rgba(props.theme.colors[props.color], 1)};\n`;\n\nconst LineDown = styled(Base)`\n background: transparent;\n border-radius: 0;\n border-width: 0;\n border-style: solid;\n border-bottom-width: 2px;\n border-color: ${props => mixin.rgba(props.theme.colors[props.color], 0.2)};\n\n &:hover ${LineX} {\n width: 100%;\n }\n &:hover ${Text} {\n transform: translateY(2px);\n }\n`;\n\nconst Gradient = styled(Base)`\n background: linear-gradient(\n 30deg,\n ${props => mixin.rgba(props.theme.colors[props.color], 1)},\n ${props => mixin.rgba(props.theme.colors[props.color], 0.5)}\n );\n text-shadow: 1px 2px 4px rgba(0, 0, 0, 0.3);\n &:hover {\n transform: translateY(-2px);\n }\n`;\n\nconst Relief = styled(Base)`\n background: ${props => mixin.rgba(props.theme.colors[props.color], 1)};\n -webkit-box-shadow: 0 -3px 0 0 rgba(0, 0, 0, 0.2) inset;\n box-shadow: inset 0 -3px 0 0 rgba(0, 0, 0, 0.2);\n\n &:active {\n transform: translateY(3px);\n box-shadow: none !important;\n }\n`;\n\ntype HoverVariant = 'boxShadow' | 'none';\ntype ButtonProps = {\n fontSize?: string;\n variant?: 'filled' | 'outline' | 'flat' | 'lineDown' | 'gradient' | 'relief';\n hoverVariant?: HoverVariant;\n color?: 'primary' | 'danger' | 'success' | 'warning' | 'dark';\n disabled?: boolean;\n type?: 'button' | 'submit';\n icon?: JSX.Element;\n invert?: boolean;\n className?: string;\n onClick?: ($target: React.RefObject) => void;\n justifyTextContent?: string;\n};\n\nconst Button: React.FC = ({\n disabled = false,\n fontSize = '14px',\n invert = false,\n color = 'primary',\n variant = 'filled',\n hoverVariant = 'boxShadow',\n type = 'button',\n justifyTextContent = 'center',\n icon,\n onClick,\n className,\n children,\n}) => {\n const $button = useRef(null);\n const handleClick = () => {\n if (onClick) {\n onClick($button);\n }\n };\n switch (variant) {\n case 'filled':\n return (\n \n {icon && icon}\n \n {children}\n \n \n );\n case 'outline':\n return (\n \n \n {children}\n \n \n );\n case 'flat':\n return (\n \n \n {children}\n \n \n );\n case 'lineDown':\n return (\n \n \n {children}\n \n \n \n );\n case 'gradient':\n return (\n \n \n {children}\n \n \n );\n case 'relief':\n return (\n \n \n {children}\n \n \n );\n default:\n throw new Error('not a valid variant');\n }\n};\n\nexport default Button;\n","import React, { useState, useRef } from 'react';\nimport styled, { css } from 'styled-components';\nimport TaskAssignee from 'shared/components/TaskAssignee';\nimport Select from 'shared/components/Select';\nimport { User, UserPlus, Checkmark } from 'shared/icons';\nimport { usePopup, Popup } from 'shared/components/PopupMenu';\nimport { RoleCode, useUpdateUserRoleMutation } from 'shared/generated/graphql';\nimport Input from 'shared/components/Input';\nimport Button from 'shared/components/Button';\nimport NOOP from 'shared/utils/noop';\nimport { mixin } from 'shared/utils/styles';\n\nconst UserSelect = styled(Select)`\n margin: 8px 0;\n padding: 8px 0;\n`;\n\nconst NewUserPassInput = styled(Input)`\n margin: 8px 0;\n`;\n\nconst InviteMemberButton = styled(Button)`\n padding: 7px 12px;\n`;\n\nconst UserPassBar = styled.div`\n display: flex;\n padding-top: 8px;\n`;\n\nconst UserPassConfirmButton = styled(Button)`\n width: 100%;\n padding: 7px 12px;\n`;\n\nconst UserPassButton = styled(Button)`\n width: 50%;\n padding: 7px 12px;\n & ~ & {\n margin-left: 6px;\n }\n`;\n\nconst MemberItemOptions = styled.div``;\n\nconst MemberItemOption = styled(Button)`\n padding: 7px 9px;\n margin: 4px 0 4px 8px;\n float: left;\n min-width: 95px;\n`;\n\nconst MemberList = styled.div`\n border-top: 1px solid ${(props) => props.theme.colors.border};\n`;\n\nconst MemberListItem = styled.div`\n display: flex;\n flex-flow: row wrap;\n justify-content: space-between;\n border-bottom: 1px solid ${(props) => props.theme.colors.border};\n min-height: 40px;\n padding: 12px 0 12px 40px;\n position: relative;\n`;\n\nconst MemberListItemDetails = styled.div`\n float: left;\n flex: 1 0 auto;\n padding-left: 8px;\n`;\n\nconst InviteIcon = styled(UserPlus)`\n padding-right: 4px;\n`;\n\nconst MemberProfile = styled(TaskAssignee)`\n position: absolute;\n top: 16px;\n left: 0;\n margin: 0;\n`;\n\nconst MemberItemName = styled.p`\n color: ${(props) => props.theme.colors.text.secondary};\n`;\n\nconst MemberItemUsername = styled.p`\n color: ${(props) => props.theme.colors.text.primary};\n`;\n\nconst MemberListHeader = styled.div`\n display: flex;\n flex-direction: column;\n`;\nconst ListTitle = styled.h3`\n font-size: 18px;\n color: ${(props) => props.theme.colors.text.secondary};\n margin-bottom: 12px;\n`;\nconst ListDesc = styled.span`\n font-size: 16px;\n color: ${(props) => props.theme.colors.text.primary};\n`;\nconst FilterSearch = styled(Input)`\n margin: 0;\n`;\n\nconst ListActions = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 8px;\n margin-bottom: 18px;\n`;\n\nconst MemberListWrapper = styled.div`\n flex: 1 1;\n`;\n\nconst Container = styled.div`\n padding: 2.2rem;\n display: flex;\n width: 100%;\n max-width: 1400px;\n position: relative;\n margin: 0 auto;\n`;\n\nconst TabNav = styled.div`\n float: left;\n width: 220px;\n height: 100%;\n display: block;\n position: relative;\n`;\n\nconst TabNavContent = styled.ul`\n display: block;\n width: auto;\n border-bottom: 0 !important;\n border-right: 1px solid rgba(0, 0, 0, 0.05);\n`;\n\nconst TabNavItem = styled.li`\n padding: 0.35rem 0.3rem;\n height: 48px;\n display: block;\n position: relative;\n`;\n\nconst TabNavItemButton = styled.button<{ active: boolean }>`\n cursor: pointer;\n display: flex;\n align-items: center;\n\n padding-top: 10px !important;\n padding-bottom: 10px !important;\n padding-left: 12px !important;\n padding-right: 8px !important;\n width: 100%;\n position: relative;\n\n color: ${(props) => (props.active ? `${props.theme.colors.secondary}` : props.theme.colors.text.primary)};\n &:hover {\n color: ${(props) => `${props.theme.colors.primary}`};\n }\n &:hover svg {\n fill: ${(props) => props.theme.colors.primary};\n }\n`;\nconst TabItemUser = styled(User)<{ active: boolean }>`\nfill: ${(props) => (props.active ? `${props.theme.colors.primary}` : props.theme.colors.text.primary)}\nstroke: ${(props) => (props.active ? `${props.theme.colors.primary}` : props.theme.colors.text.primary)}\n`;\n\nconst TabNavItemSpan = styled.span`\n text-align: left;\n padding-left: 9px;\n font-size: 14px;\n`;\n\nconst TabNavLine = styled.span<{ top: number }>`\n left: auto;\n right: 0;\n width: 2px;\n height: 48px;\n transform: scaleX(1);\n top: ${(props) => props.top}px;\n\n background: linear-gradient(\n 30deg,\n ${(props) => props.theme.colors.primary},\n ${(props) => props.theme.colors.primary}\n );\n box-shadow: 0 0 8px 0 ${(props) => props.theme.colors.primary};\n display: block;\n position: absolute;\n transition: all 0.2s ease;\n`;\n\nconst TabContentWrapper = styled.div`\n position: relative;\n display: block;\n overflow: hidden;\n width: 100%;\n margin-left: 1rem;\n`;\n\nconst TabContent = styled.div`\n position: relative;\n width: 100%;\n display: block;\n padding: 0;\n padding: 1.5rem;\n background-color: #10163a;\n border-radius: 0.5rem;\n`;\n\nconst items = [{ name: 'Members' }];\n\nexport const RoleCheckmark = styled(Checkmark)`\n padding-left: 4px;\n`;\n\nconst permissions = [\n {\n code: 'owner',\n name: 'Owner',\n description:\n 'Can view, create and edit team projects, and change settings for the team. Will have admin rights on all projects in this team. Can delete the team and all team projects.',\n },\n {\n code: 'admin',\n name: 'Admin',\n description:\n 'Can view, create and edit team projects, and change settings for the team. Will have admin rights on all projects in this team.',\n },\n\n { code: 'member', name: 'Member', description: 'Can view, create, and edit team projects, but not change settings.' },\n];\n\nexport const RoleName = styled.div`\n font-size: 14px;\n font-weight: 700;\n`;\nexport const RoleDescription = styled.div`\n margin-top: 4px;\n font-size: 14px;\n`;\n\nexport const MiniProfileActions = styled.ul`\n list-style-type: none;\n`;\n\nexport const MiniProfileActionWrapper = styled.li``;\n\nexport const MiniProfileActionItem = styled.span<{ disabled?: boolean }>`\n color: #c2c6dc;\n display: block;\n font-weight: 400;\n padding: 6px 12px;\n position: relative;\n text-decoration: none;\n\n ${(props) =>\n props.disabled\n ? css`\n user-select: none;\n pointer-events: none;\n color: ${mixin.rgba(props.theme.colors.text.primary, 0.4)};\n `\n : css`\n cursor: pointer;\n &:hover {\n background: ${props.theme.colors.primary};\n }\n `}\n`;\n\nexport const Content = styled.div`\n padding: 0 12px 12px;\n`;\n\nexport const CurrentPermission = styled.span`\n margin-left: 4px;\n color: ${(props) => mixin.rgba(props.theme.colors.text.secondary, 0.4)};\n`;\n\nexport const Separator = styled.div`\n height: 1px;\n border-top: 1px solid #414561;\n margin: 0.25rem !important;\n`;\n\nexport const WarningText = styled.span`\n display: flex;\n color: ${(props) => mixin.rgba(props.theme.colors.text.primary, 0.4)};\n padding: 6px;\n`;\n\nexport const DeleteDescription = styled.div`\n font-size: 14px;\n color: ${(props) => props.theme.colors.text.primary};\n`;\n\nexport const RemoveMemberButton = styled(Button)`\n margin-top: 16px;\n padding: 6px 12px;\n width: 100%;\n`;\n\ntype TeamRoleManagerPopupProps = {\n user: User;\n users: Array;\n warning?: string | null;\n canChangeRole?: boolean;\n onChangeRole?: (roleCode: RoleCode) => void;\n updateUserPassword?: (user: TaskUser, password: string) => void;\n onDeleteUser?: (userID: string, newOwnerID: string | null) => void;\n};\n\nconst TeamRoleManagerPopup: React.FC = ({\n warning,\n user,\n users,\n canChangeRole,\n onDeleteUser,\n updateUserPassword,\n onChangeRole,\n}) => {\n const { hidePopup, setTab } = usePopup();\n const [userPass] = useState({ pass: '', passConfirm: '' });\n const [deleteUser, setDeleteUser] = useState<{ label: string; value: string } | null>(null);\n const hasOwned = user.owned.projects.length !== 0 || user.owned.teams.length !== 0;\n return (\n <>\n \n \n \n {user.role && (\n {\n setTab(1);\n }}\n >\n Change permissions...\n {`(${user.role.name})`}\n \n )}\n {\n setTab(3);\n }}\n >\n Reset password...\n \n setTab(2)}>Remove from organzation...\n \n \n {warning && (\n <>\n \n {warning}\n \n )}\n \n hidePopup()} tab={1}>\n \n \n {permissions\n .filter((p) => (user.role && user.role.code === 'owner') || p.code !== 'owner')\n .map((perm) => (\n {\n if (onChangeRole && user.role && perm.code !== user.role.code) {\n switch (perm.code) {\n case 'owner':\n onChangeRole(RoleCode.Owner);\n break;\n case 'admin':\n onChangeRole(RoleCode.Admin);\n break;\n case 'member':\n onChangeRole(RoleCode.Member);\n break;\n default:\n break;\n }\n hidePopup();\n }\n }}\n >\n \n {perm.name}\n {user.role && perm.code === user.role.code && }\n \n {perm.description}\n \n ))}\n \n {user.role && user.role.code === 'owner' && (\n <>\n \n You can not change roles because there must be an owner.\n \n )}\n \n \n hidePopup()} tab={2}>\n \n \n Removing this user from the organzation will remove them from assigned tasks, projects, and teams.\n \n {hasOwned && (\n <>\n {`The user is the owner of ${user.owned.projects.length} projects & ${user.owned.teams.length} teams.`}\n \n Choose a new user to take over ownership of the users teams & projects.\n \n setDeleteUser(v)}\n value={deleteUser}\n options={users.map((u) => ({ label: u.fullName, value: u.id }))}\n />\n \n )}\n {\n if (onDeleteUser) {\n if (!hasOwned || (hasOwned && deleteUser)) {\n onDeleteUser(user.id, deleteUser ? deleteUser.value : null);\n }\n }\n }}\n color=\"danger\"\n >\n Delete user\n \n \n \n hidePopup()} tab={4}>\n \n \n Removing this user from the organzation will remove them from assigned tasks, projects, and teams.\n \n {`The user is the owner of ${user.owned.projects.length} projects & ${user.owned.teams.length} teams.`}\n ({ label: u.fullName, value: u.id }))} />\n {\n // onDeleteUser();\n }}\n color=\"danger\"\n >\n Delete user\n \n \n \n hidePopup()} tab={3}>\n \n \n You can either set the users new password directly or send the user an email allowing them to reset their\n own password.\n \n \n setTab(4)} color=\"warning\">\n Set password...\n \n \n Send reset link\n \n \n \n \n hidePopup()} tab={4}>\n \n \n \n {\n if (userPass.pass === userPass.passConfirm && updateUserPassword) {\n updateUserPassword(user, userPass.pass);\n }\n }}\n color=\"danger\"\n >\n Set password\n \n \n \n \n );\n};\n\ntype NavItemProps = {\n active: boolean;\n name: string;\n tab: number;\n onClick: (tab: number, top: number) => void;\n};\nconst NavItem: React.FC = ({ active, name, tab, onClick }) => {\n const $item = useRef(null);\n return (\n {\n if ($item && $item.current) {\n const pos = $item.current.getBoundingClientRect();\n onClick(tab, pos.top);\n }\n }}\n >\n \n \n {name}\n \n \n );\n};\n\ntype AdminProps = {\n initialTab: number;\n onAddUser: ($target: React.RefObject) => void;\n onDeleteUser: (userID: string, newOwnerID: string | null) => void;\n onInviteUser: ($target: React.RefObject) => void;\n users: Array;\n invitedUsers: Array;\n canInviteUser: boolean;\n onUpdateUserPassword: (user: TaskUser, password: string) => void;\n onDeleteInvitedUser: (invitedUserID: string) => void;\n};\n\nconst Admin: React.FC = ({\n initialTab,\n onAddUser,\n onUpdateUserPassword,\n canInviteUser,\n onDeleteUser,\n onDeleteInvitedUser,\n onInviteUser,\n invitedUsers,\n users,\n}) => {\n const warning =\n 'You can’t leave because you are the only admin. To make another user an admin, click their avatar, select “Change permissions…”, and select “Admin”.';\n const [currentTop, setTop] = useState(initialTab * 48);\n const [currentTab, setTab] = useState(initialTab);\n const { showPopup } = usePopup();\n const $tabNav = useRef(null);\n\n const [updateUserRole] = useUpdateUserRoleMutation();\n return (\n \n \n \n {items.map((item, idx) => (\n {\n if ($tabNav && $tabNav.current) {\n const pos = $tabNav.current.getBoundingClientRect();\n setTab(tab);\n setTop(top - pos.top);\n }\n }}\n name={item.name}\n tab={idx}\n active={idx === currentTab}\n />\n ))}\n \n \n \n \n \n \n \n {`Members (${users.length + invitedUsers.length})`}\n \n Organization admins can create / manage / delete all projects & teams. Members only have access to teams\n or projects they have been added to.\n \n \n \n {canInviteUser && (\n {\n onAddUser($target);\n }}\n >\n \n New Member\n \n )}\n \n \n \n {users.map((member) => {\n const projectTotal = member.owned.projects.length + member.member.projects.length;\n return (\n \n \n \n {member.fullName}\n {`@${member.username}`}\n \n \n {`On ${projectTotal} projects`}\n {\n showPopup(\n $target,\n {\n onUpdateUserPassword(user, password);\n }}\n canChangeRole={(member.role && member.role.code !== 'owner') ?? false}\n onChangeRole={(roleCode) => {\n updateUserRole({ variables: { userID: member.id, roleCode } });\n }}\n onDeleteUser={onDeleteUser}\n />,\n );\n }}\n >\n Manage\n \n \n \n );\n })}\n {invitedUsers.map((member) => {\n return (\n \n \n \n {member.email}\n Invited\n \n \n {\n showPopup(\n $target,\n {\n onDeleteInvitedUser(member.id);\n }}\n />,\n );\n }}\n >\n Manage\n \n \n \n );\n })}\n \n \n \n \n \n );\n};\n\nexport default Admin;\n","import React, { useRef } from 'react';\nimport styled from 'styled-components';\n\nexport const Container = styled.div<{ size: number | string; bgColor: string | null; backgroundURL: string | null }>`\n width: ${(props) => props.size}px;\n height: ${(props) => props.size}px;\n border-radius: 9999px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #fff;\n font-weight: 700;\n background: ${(props) => (props.backgroundURL ? `url(${props.backgroundURL})` : props.bgColor)};\n background-position: center;\n background-size: contain;\n`;\n\ntype ProfileIconProps = {\n user: TaskUser;\n onProfileClick: ($target: React.RefObject, user: TaskUser) => void;\n size: number | string;\n};\n\nconst ProfileIcon: React.FC = ({ user, onProfileClick, size }) => {\n let realSize = size;\n if (size === null) {\n realSize = 28;\n }\n const $profileRef = useRef(null);\n return (\n {\n onProfileClick($profileRef, user);\n }}\n size={realSize}\n backgroundURL={user.profileIcon.url ?? null}\n bgColor={user.profileIcon.bgColor ?? null}\n >\n {(!user.profileIcon.url && user.profileIcon.initials) ?? ''}\n \n );\n};\n\nexport default ProfileIcon;\n","import styled, { css } from 'styled-components';\nimport { mixin } from 'shared/utils/styles';\nimport Button from 'shared/components/Button';\nimport { Taskcafe } from 'shared/icons';\nimport { NavLink, Link } from 'react-router-dom';\nimport TaskAssignee from 'shared/components/TaskAssignee';\n\nexport const ProjectMember = styled(TaskAssignee)<{ zIndex: number }>`\n z-index: ${props => props.zIndex};\n position: relative;\n\n box-shadow: 0 0 0 2px ${props => props.theme.colors.bg.primary},\n inset 0 0 0 1px ${props => mixin.rgba(props.theme.colors.bg.primary, 0.07)};\n`;\n\nexport const NavbarWrapper = styled.div`\n width: 100%;\n`;\n\nexport const ProjectMembers = styled.div`\n display: flex;\n align-items: center;\n`;\nexport const NavbarHeader = styled.header`\n height: 80px;\n padding: 0 1.75rem;\n display: flex;\n align-items: center;\n justify-content: space-between;\n background: ${props => props.theme.colors.bg.primary};\n box-shadow: 0 4px 20px 0 rgba(0, 0, 0, 0.05);\n border-bottom: 1px solid ${props => mixin.rgba(props.theme.colors.alternate, 0.65)};\n`;\nexport const Breadcrumbs = styled.div`\n color: rgb(94, 108, 132);\n font-size: 15px;\n`;\nexport const BreadcrumpSeparator = styled.span`\n position: relative;\n top: 2px;\n font-size: 18px;\n margin: 0px 10px;\n`;\nexport const ProjectInfo = styled.div`\n display: flex;\n flex-direction: column;\n flex: 1;\n`;\n\nexport const ProjectSwitchInner = styled.div`\n border-radius: 12px;\n height: 48px;\n width: 48px;\n box-shadow: inset 0 -2px rgba(0, 0, 0, 0.05);\n align-items: center;\n background: #cbd4db;\n display: flex;\n flex: 0 0 auto;\n flex-direction: column;\n justify-content: center;\n\n background-color: ${props => props.theme.colors.primary};\n`;\n\nexport const ProjectSwitch = styled.div`\n align-self: center;\n position: relative;\n margin-right: 16px;\n cursor: pointer;\n &::after {\n border-radius: 12px;\n bottom: 0;\n content: '';\n left: 0;\n pointer-events: none;\n position: absolute;\n right: 0;\n top: 0;\n }\n &:hover::after {\n background-color: rgba(0, 0, 0, 0.05);\n }\n`;\n\nexport const ProjectActions = styled.div`\n flex: 1;\n align-items: flex-start;\n display: flex;\n min-width: 1px;\n`;\n\nexport const GlobalActions = styled.div`\n display: flex;\n align-items: center;\n`;\n\nexport const ProfileContainer = styled.div`\n display: flex;\n align-items: center;\n`;\n\nexport const ProfileNameWrapper = styled.div`\n text-align: right;\n line-height: 1.25;\n`;\n\nexport const NavbarLink = styled(Link)`\n margin-right: 20px;\n cursor: pointer;\n`;\n\nexport const IconContainerWrapper = styled.div<{ disabled?: boolean }>`\n margin-right: 20px;\n cursor: pointer;\n ${props =>\n props.disabled &&\n css`\n opacity: 0.5;\n cursor: default;\n pointer-events: none;\n `}\n`;\n\nexport const ProfileNamePrimary = styled.div`\n color: #c2c6dc;\n font-weight: 600;\n`;\n\nexport const ProfileNameSecondary = styled.small`\n color: #c2c6dc;\n`;\n\nexport const ProfileIcon = styled.div<{\n bgColor: string | null;\n backgroundURL: string | null;\n}>`\n width: 40px;\n height: 40px;\n border-radius: 9999px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #fff;\n font-weight: 700;\n background: ${props => (props.backgroundURL ? `url(${props.backgroundURL})` : props.bgColor)};\n background-position: center;\n background-size: contain;\n`;\n\nexport const ProjectMeta = styled.div<{ nameOnly?: boolean }>`\n display: flex;\n ${props => !props.nameOnly && 'padding-top: 9px;'}\n margin-left: -6px;\n align-items: center;\n max-width: 100%;\n min-height: 51px;\n`;\n\nexport const ProjectTabs = styled.div`\n align-items: flex-end;\n align-self: stretch;\n display: flex;\n flex: 1 0 auto;\n justify-content: flex-start;\n max-width: 100%;\n`;\n\nexport const ProjectTab = styled(NavLink)`\n font-size: 80%;\n color: ${props => props.theme.colors.text.primary};\n font-size: 15px;\n cursor: pointer;\n display: flex;\n line-height: normal;\n min-width: 1px;\n transition-duration: 0.2s;\n transition-property: box-shadow, color;\n white-space: nowrap;\n flex: 0 1 auto;\n padding-bottom: 12px;\n\n &:not(:last-child) {\n margin-right: 20px;\n }\n\n &:hover {\n box-shadow: inset 0 -2px ${props => props.theme.colors.text.secondary};\n color: ${props => props.theme.colors.text.secondary};\n }\n\n &.active {\n box-shadow: inset 0 -2px ${props => props.theme.colors.secondary};\n color: ${props => props.theme.colors.secondary};\n }\n &.active:hover {\n box-shadow: inset 0 -2px ${props => props.theme.colors.secondary};\n color: ${props => props.theme.colors.secondary};\n }\n`;\n\nexport const ProjectName = styled.h1`\n color: ${props => props.theme.colors.text.primary};\n font-weight: 600;\n font-size: 20px;\n padding: 3px 10px 3px 8px;\n margin: -4px 0;\n`;\n\nexport const ProjectNameWrapper = styled.div`\n position: relative;\n`;\nexport const ProjectNameSpan = styled.div`\n padding: 3px 10px 3px 8px;\n font-weight: 600;\n font-size: 20px;\n`;\nexport const ProjectNameTextarea = styled.input`\n position: absolute;\n width: 100%;\n left: 0;\n top: 0;\n border: none;\n resize: none;\n overflow: hidden;\n overflow-wrap: break-word;\n background: transparent;\n border-radius: 3px;\n box-shadow: none;\n margin: 0;\n\n letter-spacing: normal;\n word-spacing: normal;\n text-transform: none;\n text-indent: 0px;\n text-shadow: none;\n flex-direction: column;\n text-align: start;\n\n color: #c2c6dc;\n font-weight: 600;\n font-size: 20px;\n padding: 3px 10px 3px 8px;\n &:focus {\n box-shadow: ${props => props.theme.colors.primary} 0px 0px 0px 1px;\n }\n`;\n\nexport const ProjectSwitcher = styled.button`\n font-size: 20px;\n\n outline: none;\n border: none;\n width: 100px;\n border-radius: 3px;\n line-height: 20px;\n padding: 6px 4px;\n background-color: none;\n text-align: center;\n color: #c2c6dc;\n cursor: pointer;\n &:hover {\n background: ${props => props.theme.colors.primary};\n }\n`;\n\nexport const Separator = styled.div`\n color: #c2c6dc;\n font-size: 20px;\n padding-left: 4px;\n padding-right: 4px;\n`;\n\nexport const ProjectSettingsButton = styled.button`\n outline: none;\n border: none;\n border-radius: 3px;\n line-height: 20px;\n width: 28px;\n height: 28px;\n background-color: none;\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n &:hover {\n background: ${props => props.theme.colors.primary};\n }\n`;\n\nexport const InviteButton = styled(Button)`\n margin: 0 0 0 8px;\n padding: 6px 12px;\n`;\n\nexport const ProjectFinder = styled(Button)`\n margin-right: 20px;\n padding: 6px 12px;\n`;\n\nexport const SignUp = styled(Button)`\n margin-right: 8px;\n padding: 6px 12px;\n`;\n\nexport const SignIn = styled(Button)`\n margin-right: 20px;\n padding: 6px 12px;\n`;\n\nexport const NavSeparator = styled.div`\n width: 1px;\n background: ${props => props.theme.colors.border};\n height: 34px;\n margin: 0 20px;\n`;\n\nexport const LogoContainer = styled(Link)`\n display: block;\n left: 50%;\n right: 50%;\n position: absolute;\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nexport const TaskcafeTitle = styled.h2`\n margin-left: 5px;\n color: ${props => props.theme.colors.text.primary};\n font-size: 20px;\n`;\n\nexport const TaskcafeLogo = styled(Taskcafe)`\n fill: ${props => props.theme.colors.text.primary};\n stroke: ${props => props.theme.colors.text.primary};\n`;\n","import React, { useRef, useState, useEffect } from 'react';\nimport { Home, Star, Bell, AngleDown, BarChart, CheckCircle, ListUnordered } from 'shared/icons';\nimport styled from 'styled-components';\nimport ProfileIcon from 'shared/components/ProfileIcon';\nimport { usePopup } from 'shared/components/PopupMenu';\nimport { RoleCode } from 'shared/generated/graphql';\nimport NOOP from 'shared/utils/noop';\nimport { useHistory } from 'react-router';\nimport {\n ProjectInfo,\n NavbarLink,\n TaskcafeLogo,\n TaskcafeTitle,\n ProjectFinder,\n LogoContainer,\n NavSeparator,\n IconContainerWrapper,\n ProjectSwitch,\n ProjectNameWrapper,\n ProjectNameSpan,\n ProjectNameTextarea,\n InviteButton,\n GlobalActions,\n ProjectActions,\n ProjectMeta,\n ProjectName,\n ProjectTabs,\n ProjectTab,\n NavbarWrapper,\n NavbarHeader,\n ProjectSettingsButton,\n ProfileContainer,\n ProfileNameWrapper,\n ProfileNamePrimary,\n ProfileNameSecondary,\n ProjectMember,\n ProjectMembers,\n ProjectSwitchInner,\n} from './Styles';\n\ntype IconContainerProps = {\n disabled?: boolean;\n onClick?: ($target: React.RefObject) => void;\n};\n\nconst IconContainer: React.FC = ({ onClick, disabled = false, children }) => {\n const $container = useRef(null);\n return (\n {\n if (onClick) {\n onClick($container);\n }\n }}\n >\n {children}\n \n );\n};\n\nconst HomeDashboard = styled(Home)``;\n\ntype ProjectHeadingProps = {\n onFavorite?: () => void;\n name: string;\n canEditProjectName: boolean;\n onSaveProjectName?: (projectName: string) => void;\n onOpenSettings: ($target: React.RefObject) => void;\n};\n\nconst ProjectHeading: React.FC = ({\n onFavorite,\n name: initialProjectName,\n onSaveProjectName,\n canEditProjectName,\n onOpenSettings,\n}) => {\n const [isEditProjectName, setEditProjectName] = useState(false);\n const [projectName, setProjectName] = useState(initialProjectName);\n const $projectName = useRef(null);\n useEffect(() => {\n if (isEditProjectName && $projectName && $projectName.current) {\n $projectName.current.focus();\n $projectName.current.select();\n }\n }, [isEditProjectName]);\n useEffect(() => {\n setProjectName(initialProjectName);\n }, [initialProjectName]);\n\n const onProjectNameChange = (event: React.FormEvent): void => {\n setProjectName(event.currentTarget.value);\n };\n const onProjectNameBlur = () => {\n if (onSaveProjectName) {\n onSaveProjectName(projectName);\n }\n setEditProjectName(false);\n };\n const onProjectNameKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n if ($projectName && $projectName.current) {\n $projectName.current.blur();\n }\n }\n };\n\n const $settings = useRef(null);\n return (\n <>\n {isEditProjectName ? (\n \n {projectName}\n \n \n ) : (\n {\n if (canEditProjectName) {\n setEditProjectName(true);\n }\n }}\n >\n {projectName}\n \n )}\n {\n onOpenSettings($settings);\n }}\n ref={$settings}\n >\n \n \n {onFavorite && (\n onFavorite()}>\n \n \n )}\n \n );\n};\n\nexport type MenuItem = {\n name: string;\n link: string;\n};\ntype MenuTypes = {\n [key: string]: Array;\n};\n\nexport const MENU_TYPES: MenuTypes = {\n PROJECT_MENU: ['Board', 'Timeline', 'Calender'],\n TEAM_MENU: ['Projects', 'Members', 'Settings'],\n};\n\ntype NavBarProps = {\n menuType?: Array | null;\n name: string | null;\n currentTab?: number;\n onSetTab?: (tab: number) => void;\n onOpenProjectFinder: ($target: React.RefObject) => void;\n onChangeProjectOwner?: (userID: string) => void;\n onChangeRole?: (userID: string, roleCode: RoleCode) => void;\n onFavorite?: () => void;\n onProfileClick: ($target: React.RefObject) => void;\n onSaveName?: (name: string) => void;\n onNotificationClick: ($target: React.RefObject) => void;\n canEditProjectName?: boolean;\n canInviteUser?: boolean;\n onInviteUser?: ($target: React.RefObject) => void;\n onDashboardClick: () => void;\n user: TaskUser | null;\n onOpenSettings: ($target: React.RefObject) => void;\n projectMembers?: Array | null;\n projectInvitedMembers?: Array | null;\n\n onRemoveFromBoard?: (userID: string) => void;\n onMemberProfile?: ($targetRef: React.RefObject, memberID: string) => void;\n onInvitedMemberProfile?: ($targetRef: React.RefObject, email: string) => void;\n onMyTasksClick: () => void;\n};\n\nconst NavBar: React.FC = ({\n menuType,\n canInviteUser = false,\n onInviteUser,\n onChangeProjectOwner,\n currentTab,\n onMemberProfile,\n onInvitedMemberProfile,\n canEditProjectName = false,\n onOpenProjectFinder,\n onFavorite,\n onSetTab,\n projectInvitedMembers,\n onChangeRole,\n name,\n onRemoveFromBoard,\n onSaveName,\n onProfileClick,\n onNotificationClick,\n onDashboardClick,\n onMyTasksClick,\n user,\n projectMembers,\n onOpenSettings,\n}) => {\n const handleProfileClick = ($target: React.RefObject) => {\n if ($target && $target.current) {\n onProfileClick($target);\n }\n };\n const history = useHistory();\n const { showPopup } = usePopup();\n const $finder = useRef(null);\n return (\n \n \n \n onOpenProjectFinder($finder)}>\n \n \n \n \n \n \n {name && (\n \n )}\n \n {name && (\n \n {menuType &&\n menuType.map((menu, idx) => {\n return (\n {\n // TODO\n }}\n >\n {menu.name}\n \n );\n })}\n \n )}\n \n \n \n Taskcafé\n \n \n {projectMembers && projectInvitedMembers && onMemberProfile && onInvitedMemberProfile && (\n <>\n \n {projectMembers.map((member, idx) => (\n \n ))}\n {projectInvitedMembers.map((member, idx) => (\n \n ))}\n {canInviteUser && (\n {\n if (onInviteUser) {\n onInviteUser($target);\n }\n }}\n variant=\"outline\"\n >\n Invite\n \n )}\n \n \n \n )}\n \n Projects\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n {user && (\n \n \n \n )}\n \n \n \n );\n};\n\nexport default NavBar;\n","import React, { useRef, useState, useEffect } from 'react';\nimport { Home, Star, Bell, AngleDown, BarChart, CheckCircle, ListUnordered } from 'shared/icons';\nimport { Link } from 'react-router-dom';\nimport { RoleCode } from 'shared/generated/graphql';\nimport * as S from './Styles';\n\nexport type MenuItem = {\n name: string;\n link: string;\n};\n\ntype NavBarProps = {\n menuType?: Array | null;\n name: string | null;\n match: string;\n};\n\nconst NavBar: React.FC = ({ menuType, name, match }) => {\n return (\n \n \n \n \n \n \n \n \n \n {name && {name}}\n {name && (\n \n {menuType &&\n menuType.map((menu, idx) => {\n return (\n {\n // TODO\n }}\n >\n {menu.name}\n \n );\n })}\n \n )}\n \n \n \n Taskcafé\n \n \n \n Sign In\n \n \n \n \n );\n};\n\nexport default NavBar;\n","import styled from 'styled-components/macro';\n\nexport const Container = styled.div<{ left: number; top: number }>`\n position: absolute;\n left: ${props => props.left}px;\n top: ${props => props.top}px;\n position: absolute;\n padding-top: 10px;\n height: auto;\n width: auto;\n transform: translate(-100%);\n transition: opacity 0.25s, transform 0.25s, width 0.3s ease;\n z-index: 40000;\n`;\n\nexport const Wrapper = styled.div`\n padding: 5px;\n padding-top: 8px;\n border-radius: 5px;\n box-shadow: 0 5px 25px 0 rgba(0, 0, 0, 0.1);\n position: relative;\n margin: 0;\n\n color: #c2c6dc;\n background: #262c49;\n border: 1px solid rgba(0, 0, 0, 0.1);\n border-color: #414561;\n`;\n\nexport const WrapperDiamond = styled.div`\n top: 10px;\n right: 10px;\n position: absolute;\n width: 10px;\n height: 10px;\n display: block;\n transform: rotate(45deg) translate(-7px);\n border-top: 1px solid rgba(0, 0, 0, 0.1);\n border-left: 1px solid rgba(0, 0, 0, 0.1);\n z-index: 10;\n\n background: #262c49;\n border-color: #414561;\n`;\n\nexport const ActionsList = styled.ul`\n min-width: 9rem;\n margin: 0;\n padding: 0;\n`;\n\nexport const ActionItem = styled.li`\n padding-left: 1rem;\n padding-right: 1rem;\n padding-top: 0.5rem !important;\n padding-bottom: 0.5rem !important;\n cursor: pointer;\n display: flex;\n align-items: center;\n font-size: 14px;\n &:hover {\n background: ${props => props.theme.colors.primary};\n }\n`;\n\nexport const ActionTitle = styled.span`\n margin-left: 0.5rem;\n`;\n\nexport const Separator = styled.div`\n height: 1px;\n border-top: 1px solid #414561;\n margin: 0.25rem !important;\n`;\n","import React, { useRef } from 'react';\nimport useOnOutsideClick from 'shared/hooks/onOutsideClick';\nimport { Exit, User, Cog } from 'shared/icons';\nimport { Separator, Container, WrapperDiamond, Wrapper, ActionsList, ActionItem, ActionTitle } from './Styles';\n\ntype DropdownMenuProps = {\n left: number;\n top: number;\n onLogout: () => void;\n onCloseDropdown: () => void;\n onAdminConsole: () => void;\n};\n\nconst DropdownMenu: React.FC = ({ left, top, onLogout, onCloseDropdown, onAdminConsole }) => {\n const $containerRef = useRef(null);\n useOnOutsideClick($containerRef, true, onCloseDropdown, null);\n return (\n \n \n \n \n Profile\n \n \n \n \n \n Logout\n \n \n \n \n \n );\n};\n\ntype ProfileMenuProps = {\n onProfile: () => void;\n onLogout: () => void;\n showAdminConsole: boolean;\n onAdminConsole: () => void;\n};\n\nconst ProfileMenu: React.FC = ({ showAdminConsole, onAdminConsole, onProfile, onLogout }) => {\n return (\n <>\n {showAdminConsole && (\n <>\n \n \n Admin Console\n \n \n \n )}\n \n \n Profile\n \n \n \n \n Logout\n \n \n \n );\n};\n\nexport { ProfileMenu };\n\nexport default DropdownMenu;\n","import React, { useContext } from 'react';\n\ntype UserContextState = {\n user: string | null;\n setUser: (user: string | null) => void;\n};\n\nexport const UserContext = React.createContext({\n user: null,\n setUser: _user => null,\n});\n\nexport const useCurrentUser = () => {\n const { user, setUser } = useContext(UserContext);\n return {\n user,\n setUser,\n };\n};\n\nexport default UserContext;\n","import styled, { css } from 'styled-components';\nimport Button from 'shared/components/Button';\nimport { Checkmark } from 'shared/icons';\nimport { mixin } from 'shared/utils/styles';\n\nexport const RoleCheckmark = styled(Checkmark)`\n padding-left: 4px;\n`;\nexport const Profile = styled.div`\n margin: 8px 0;\n min-height: 56px;\n position: relative;\n`;\n\nexport const ProfileIcon = styled.div<{ bgUrl: string | null; bgColor: string }>`\n float: left;\n margin: 2px;\n background: ${props => (props.bgUrl ? `url(${props.bgUrl})` : props.bgColor)};\n background-position: center;\n background-size: contain;\n border-radius: 25em;\n font-size: 16px;\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: center;\n height: 50px;\n overflow: hidden;\n position: relative;\n width: 50px;\n z-index: 1;\n`;\n\nexport const ProfileInfo = styled.div`\n color: #c2c6dc;\n margin: 0 0 0 64px;\n word-wrap: break-word;\n`;\n\nexport const InfoTitle = styled.h3`\n margin: 0 40px 0 0;\n font-size: 16px;\n font-weight: 600;\n line-height: 20px;\n color: #c2c6dc;\n`;\n\nexport const InfoUsername = styled.p`\n color: #c2c6dc;\n font-size: 14px;\n line-height: 20px;\n`;\n\nexport const InfoBio = styled.p`\n font-size: 14px;\n line-height: 20px;\n color: #c2c6dc;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n margin: 0;\n padding: 0;\n`;\n\nexport const MiniProfileActions = styled.ul`\n list-style-type: none;\n`;\n\nexport const MiniProfileActionWrapper = styled.li``;\n\nexport const MiniProfileActionItem = styled.span<{ disabled?: boolean }>`\n color: #c2c6dc;\n display: block;\n font-weight: 400;\n padding: 6px 12px;\n position: relative;\n text-decoration: none;\n\n ${props =>\n props.disabled\n ? css`\n user-select: none;\n pointer-events: none;\n color: ${mixin.rgba(props.theme.colors.text.primary, 0.4)};\n `\n : css`\n cursor: pointer;\n &:hover {\n background: ${props.theme.colors.primary};\n }\n `}\n`;\n\nexport const CurrentPermission = styled.span`\n margin-left: 4px;\n color: ${props => mixin.rgba(props.theme.colors.text.secondary, 0.4)};\n`;\n\nexport const Separator = styled.div`\n height: 1px;\n border-top: 1px solid ${props => props.theme.colors.alternate};\n margin: 0.25rem !important;\n`;\n\nexport const WarningText = styled.span`\n display: flex;\n color: ${props => mixin.rgba(props.theme.colors.text.primary, 0.4)};\n padding: 6px;\n`;\n\nexport const DeleteDescription = styled.div`\n font-size: 14px;\n color: ${props => props.theme.colors.text.primary};\n`;\n\nexport const RemoveMemberButton = styled(Button)`\n margin-top: 16px;\n padding: 6px 12px;\n width: 100%;\n`;\n\nexport const Content = styled.div`\n padding: 0 12px 12px;\n`;\n\nexport const RoleName = styled.div`\n font-size: 14px;\n font-weight: 700;\n`;\nexport const RoleDescription = styled.div`\n margin-top: 4px;\n font-size: 14px;\n`;\n","import React from 'react';\nimport { Popup, usePopup } from 'shared/components/PopupMenu';\nimport { RoleCode } from 'shared/generated/graphql';\n\nimport {\n RoleCheckmark,\n RoleName,\n RoleDescription,\n Profile,\n Content,\n DeleteDescription,\n RemoveMemberButton,\n WarningText,\n ProfileIcon,\n Separator,\n ProfileInfo,\n InfoTitle,\n InfoUsername,\n InfoBio,\n CurrentPermission,\n MiniProfileActions,\n MiniProfileActionWrapper,\n MiniProfileActionItem,\n} from './Styles';\n\nconst permissions = [\n {\n code: 'owner',\n name: 'Owner',\n description:\n 'Can view and edit cards, remove members, and change all settings for the project. Can delete the project.',\n },\n {\n code: 'admin',\n name: 'Admin',\n description: 'Can view and edit cards, remove members, and change all settings for the project.',\n },\n\n { code: 'member', name: 'Member', description: \"Can view and edit cards. Can't change settings.\" },\n {\n code: 'observer',\n name: 'Observer',\n description: \"Can view, comment, and vote on cards. Can't move or edit cards or change settings.\",\n },\n];\n\ntype MiniProfileProps = {\n bio: string;\n user: TaskUser;\n invited?: boolean;\n onRemoveFromTask?: () => void;\n onChangeRole?: (roleCode: RoleCode) => void;\n onRemoveFromBoard?: () => void;\n warning?: string | null;\n canChangeRole?: boolean;\n};\nconst MiniProfile: React.FC = ({\n user,\n bio,\n invited,\n canChangeRole,\n onRemoveFromTask,\n onChangeRole,\n onRemoveFromBoard,\n warning,\n}) => {\n const { hidePopup, setTab } = usePopup();\n return (\n <>\n hidePopup()} tab={0}>\n \n {user.profileIcon && (\n \n {user.profileIcon.url === null && user.profileIcon.initials}\n \n )}\n \n {user.fullName}\n {invited ? Invited : {`@${user.username}`}}\n {bio}\n \n \n \n \n {onRemoveFromTask && (\n {\n onRemoveFromTask();\n }}\n >\n Remove from card\n \n )}\n {onChangeRole && user.role && (\n {\n setTab(1);\n }}\n >\n Change permissions...\n {`(${user.role.name})`}\n \n )}\n {onRemoveFromBoard && (\n {\n setTab(2);\n }}\n >\n Remove from board...\n \n )}\n \n \n {warning && (\n <>\n \n {warning}\n \n )}\n \n\n hidePopup()} tab={1}>\n \n \n {permissions\n .filter(p => (user.role && user.role.code === 'owner') || p.code !== 'owner')\n .map(perm => (\n {\n if (onChangeRole && user.role && perm.code !== user.role.code) {\n switch (perm.code) {\n case 'owner':\n onChangeRole(RoleCode.Owner);\n break;\n case 'admin':\n onChangeRole(RoleCode.Admin);\n break;\n case 'member':\n onChangeRole(RoleCode.Member);\n break;\n case 'observer':\n onChangeRole(RoleCode.Observer);\n break;\n default:\n break;\n }\n hidePopup();\n }\n }}\n >\n \n {perm.name}\n {user.role && perm.code === user.role.code && }\n \n {perm.description}\n \n ))}\n \n {user.role && user.role.code === 'owner' && (\n <>\n \n You can not change roles because there must be an owner.\n \n )}\n \n \n hidePopup()} tab={2}>\n \n \n The member will be removed from all cards on this project. They will receive a notification.\n \n {\n if (onRemoveFromBoard) {\n onRemoveFromBoard();\n }\n }}\n >\n Remove Member\n \n \n \n \n );\n};\n\nexport default MiniProfile;\n","import React from 'react';\nimport styled from 'styled-components';\nimport TimeAgo from 'react-timeago';\n\nimport { Popup } from 'shared/components/PopupMenu';\n\nconst ItemWrapper = styled.div`\n cursor: pointer;\n border-bottom: 1px solid #414561;\n padding-left: 1rem;\n padding-right: 1rem;\n padding-top: 1rem;\n padding-bottom: 1rem;\n justify-content: space-between;\n display: flex;\n\n &:hover {\n background: #10163a;\n }\n`;\nconst ItemWrapperContent = styled.div`\n display: flex;\n align-items: flex-start;\n`;\n\nconst ItemIconContainer = styled.span`\n position: relative;\n display: inline-flex;\n align-items: center;\n`;\n\nconst ItemTextContainer = styled.div`\n margin-left: 0.5rem;\n margin-right: 0.5rem;\n`;\n\nconst ItemTextTitle = styled.span`\n font-weight: 500;\n display: block;\n color: ${props => props.theme.colors.primary};\n font-size: 14px;\n`;\nconst ItemTextDesc = styled.span`\n font-size: 12px;\n`;\n\nconst ItemTimeAgo = styled.span`\n margin-top: 0.25rem;\n white-space: nowrap;\n font-size: 11px;\n`;\n\ntype NotificationItemProps = {\n title: string;\n description: string;\n createdAt: string;\n};\n\nexport const NotificationItem: React.FC = ({ title, description, createdAt }) => {\n return (\n \n \n \n \n {title}\n {description}\n \n \n \n \n );\n};\n\nconst NotificationHeader = styled.div`\n padding: 0.75rem;\n text-align: center;\n border-top-left-radius: 6px;\n border-top-right-radius: 6px;\n background: ${props => props.theme.colors.primary};\n`;\n\nconst NotificationHeaderTitle = styled.span`\n font-size: 14px;\n color: ${props => props.theme.colors.text.secondary};\n`;\n\nconst NotificationFooter = styled.div`\n cursor: pointer;\n padding: 0.5rem;\n text-align: center;\n color: ${props => props.theme.colors.primary};\n &:hover {\n background: ${props => props.theme.colors.bg.primary};\n }\n border-bottom-left-radius: 6px;\n border-bottom-right-radius: 6px;\n`;\n\nconst NotificationPopup: React.FC = ({ children }) => {\n return (\n \n \n Notifications\n \n
    {children}
\n View All\n
\n );\n};\n\nexport default NotificationPopup;\n","import styled, { keyframes } from 'styled-components';\n\nconst LoadingSpinnerKeyframes = keyframes`\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n`;\n\nexport const LoadingSpinnerWrapper = styled.div<{ color: string; size: string; borderSize: string; thickness: string }>`\n display: inline-block;\n position: relative;\n width: ${props => props.borderSize};\n height: ${props => props.borderSize};\n\n & > div {\n box-sizing: border-box;\n display: block;\n position: absolute;\n width: ${props => props.size};\n height: ${props => props.size};\n margin: ${props => props.thickness};\n border: ${props => props.thickness} solid ${props => props.theme.colors[props.color]};\n border-radius: 50%;\n animation: 1.2s ${LoadingSpinnerKeyframes} cubic-bezier(0.5, 0, 0.5, 1) infinite;\n border-color: ${props => props.theme.colors[props.color]} transparent transparent transparent;\n }\n\n & > div:nth-child(1) {\n animation-delay: -0.45s;\n }\n & > div:nth-child(2) {\n animation-delay: -0.3s;\n }\n & > div:nth-child(3) {\n animation-delay: -0.15s;\n }\n`;\n\nexport default LoadingSpinnerWrapper;\n","import React from 'react';\n\nimport { LoadingSpinnerWrapper } from './Styles';\n\ntype LoadingSpinnerProps = {\n color?: 'primary' | 'danger' | 'success' | 'warning' | 'dark';\n size?: string;\n borderSize?: string;\n thickness?: string;\n};\n\n/**\n * The default parameters may not be applicable to every scenario\n *\n * While borderSize and size should be a single prop,\n * it is currently not as such because it would require math to be done to strings\n * e.g \"80px - 16\"\n *\n *\n * @param color\n * @param size The size of the spinner. It is recommended to be at least 16 px less than the borderSize\n * @param thickness\n * @param borderSize Border size affects the size of the border which if is too small may break the spinner.\n * @constructor\n */\nconst LoadingSpinner: React.FC = ({\n color = 'primary',\n size = '64px',\n thickness = '8px',\n borderSize = '80px',\n}) => {\n return (\n \n
\n
\n
\n \n );\n};\n\nexport default LoadingSpinner;\n","import React from 'react';\n\nfunction useStickyState(defaultValue: any, key: string): [T, React.Dispatch>] {\n const [value, setValue] = React.useState(() => {\n const stickyValue = window.localStorage.getItem(key);\n return stickyValue !== null ? JSON.parse(stickyValue) : defaultValue;\n });\n React.useEffect(() => {\n window.localStorage.setItem(key, JSON.stringify(value));\n }, [key, value]);\n return [value, setValue];\n}\n\nexport default useStickyState;\n","import React, { useState } from 'react';\nimport styled from 'styled-components/macro';\nimport { useGetProjectsQuery } from 'shared/generated/graphql';\nimport { Link } from 'react-router-dom';\nimport LoadingSpinner from 'shared/components/LoadingSpinner';\nimport ControlledInput from 'shared/components/ControlledInput';\nimport { CaretDown, CaretRight } from 'shared/icons';\nimport useStickyState from 'shared/hooks/useStickyState';\nimport { usePopup } from 'shared/components/PopupMenu';\n\nconst TeamContainer = styled.div`\n display: flex;\n flex-direction: column;\n margin: 0 4px;\n`;\n\nconst TeamTitle = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n`;\n\nconst TeamTitleText = styled.span`\n font-size: 14px;\n font-weight: 700;\n`;\n\nconst TeamProjects = styled.div`\n display: flex;\n flex-direction: column;\n margin-top: 8px;\n margin-bottom: 4px;\n`;\n\nconst TeamProjectLink = styled(Link)`\n display: flex;\n font-weight: 700;\n height: 36px;\n overflow: hidden;\n padding: 0;\n position: relative;\n text-decoration: none;\n user-select: none;\n`;\n\nconst TeamProjectBackground = styled.div<{ idx: number }>`\n background-image: url(null);\n background-color: ${props => props.theme.colors.multiColors[props.idx % 5]};\n\n background-size: cover;\n background-position: 50%;\n position: absolute;\n width: 100%;\n height: 36px;\n opacity: 1;\n border-radius: 3px;\n &:before {\n background: ${props => props.theme.colors.bg.secondary};\n bottom: 0;\n content: '';\n left: 0;\n opacity: 0.88;\n position: absolute;\n right: 0;\n top: 0;\n }\n`;\nconst Empty = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nconst TeamProjectAvatar = styled.div<{ idx: number }>`\n background-image: url(null);\n background-color: ${props => props.theme.colors.multiColors[props.idx % 5]};\n\n display: inline-block;\n flex: 0 0 auto;\n background-size: cover;\n border-radius: 3px 0 0 3px;\n height: 36px;\n width: 36px;\n position: relative;\n opacity: 0.7;\n`;\n\nconst TeamProjectContent = styled.div`\n display: flex;\n position: relative;\n flex: 1;\n width: 100%;\n padding: 9px 0 9px 10px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`;\n\nconst TeamProjectTitle = styled.div`\n font-weight: 700;\n display: block;\n padding-right: 12px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`;\n\nconst TeamProjectContainer = styled.div`\n box-sizing: border-box;\n border-radius: 3px;\n position: relative;\n margin: 0 4px 4px 0;\n min-width: 0;\n &:hover ${TeamProjectTitle} {\n color: ${props => props.theme.colors.text.secondary};\n }\n &:hover ${TeamProjectAvatar} {\n opacity: 1;\n }\n &:hover ${TeamProjectBackground}:before {\n opacity: 0.78;\n }\n`;\nconst Search = styled(ControlledInput)`\n margin: 0 4px 4px 4px;\n & input {\n width: 100%;\n }\n`;\n\nconst Minify = styled.div`\n height: 28px;\n min-height: 28px;\n min-width: 28px;\n width: 28px;\n border-radius: 6px;\n user-select: none;\n\n margin-right: 4px;\n\n align-items: center;\n box-sizing: border-box;\n display: inline-flex;\n justify-content: center;\n transition-duration: 0.2s;\n transition-property: background, border, box-shadow, fill;\n cursor: pointer;\n svg {\n fill: ${props => props.theme.colors.text.primary};\n transition-duration: 0.2s;\n transition-property: background, border, box-shadow, fill;\n }\n\n &:hover svg {\n fill: ${props => props.theme.colors.text.secondary};\n }\n`;\n\nconst ProjectFinder = () => {\n const { data } = useGetProjectsQuery({ fetchPolicy: 'cache-and-network' });\n const [search, setSearch] = useState('');\n const [minified, setMinified] = useStickyState>([], 'project_finder_minified');\n const { hidePopup } = usePopup();\n if (data) {\n const { teams } = data;\n const projects = data.projects.filter(p => {\n if (search.trim() === '') return true;\n return p.name.toLowerCase().startsWith(search.trim().toLowerCase());\n });\n const personalProjects = projects.filter(p => p.team === null);\n const projectTeams = [\n { id: 'personal', name: 'Personal', projects: personalProjects.sort((a, b) => a.name.localeCompare(b.name)) },\n ...teams.map(team => {\n return {\n id: team.id,\n name: team.name,\n projects: projects\n .filter(project => project.team && project.team.id === team.id)\n .sort((a, b) => a.name.localeCompare(b.name)),\n };\n }),\n ];\n return (\n <>\n setSearch(e.currentTarget.value)}\n placeholder=\"Find projects by name...\"\n />\n {projectTeams.map(team => {\n const isMinified = minified.find(m => m === team.id);\n if (team.projects.length === 0) return null;\n return (\n \n \n {team.name}\n {isMinified ? (\n setMinified(prev => prev.filter(m => m !== team.id))}>\n \n \n ) : (\n setMinified(prev => [...prev, team.id])}>\n \n \n )}\n \n {!isMinified && (\n \n {team.projects.map((project, idx) => (\n \n hidePopup()} to={`/projects/${project.id}`}>\n \n \n \n {project.name}\n \n \n \n ))}\n \n )}\n \n );\n })}\n \n );\n }\n return (\n \n \n \n );\n};\n\nexport default ProjectFinder;\n","import React from 'react';\nimport TopNavbar, { MenuItem } from 'shared/components/TopNavbar';\nimport LoggedOutNavbar from 'shared/components/TopNavbar/LoggedOut';\nimport { ProfileMenu } from 'shared/components/DropdownMenu';\nimport { useHistory, useRouteMatch } from 'react-router';\nimport { useCurrentUser } from 'App/context';\nimport { RoleCode, useTopNavbarQuery } from 'shared/generated/graphql';\nimport { usePopup, Popup } from 'shared/components/PopupMenu';\nimport MiniProfile from 'shared/components/MiniProfile';\nimport cache from 'App/cache';\nimport NotificationPopup, { NotificationItem } from 'shared/components/NotifcationPopup';\nimport theme from 'App/ThemeStyles';\nimport ProjectFinder from './ProjectFinder';\n\n// TODO: Move to context based navbar?\n\ntype GlobalTopNavbarProps = {\n nameOnly?: boolean;\n projectID: string | null;\n teamID?: string | null;\n onChangeProjectOwner?: (userID: string) => void;\n name: string | null;\n currentTab?: number;\n popupContent?: JSX.Element;\n menuType?: Array;\n onChangeRole?: (userID: string, roleCode: RoleCode) => void;\n projectMembers?: null | Array;\n projectInvitedMembers?: null | Array;\n onSaveProjectName?: (projectName: string) => void;\n onInviteUser?: ($target: React.RefObject) => void;\n onSetTab?: (tab: number) => void;\n onRemoveFromBoard?: (userID: string) => void;\n onRemoveInvitedFromBoard?: (email: string) => void;\n};\n\nconst LoggedInNavbar: React.FC = ({\n currentTab,\n onSetTab,\n menuType,\n teamID,\n onChangeProjectOwner,\n onChangeRole,\n name,\n popupContent,\n projectMembers,\n projectInvitedMembers,\n onInviteUser,\n onSaveProjectName,\n onRemoveInvitedFromBoard,\n onRemoveFromBoard,\n}) => {\n const { data } = useTopNavbarQuery();\n const { showPopup, hidePopup } = usePopup();\n const { setUser } = useCurrentUser();\n const history = useHistory();\n const onLogout = () => {\n fetch('/auth/logout', {\n method: 'POST',\n credentials: 'include',\n }).then(async x => {\n const { status } = x;\n if (status === 200) {\n cache.reset();\n history.replace('/login');\n setUser(null);\n hidePopup();\n }\n });\n };\n const onProfileClick = ($target: React.RefObject) => {\n showPopup(\n $target,\n \n {\n history.push('/admin');\n hidePopup();\n }}\n onProfile={() => {\n history.push('/profile');\n hidePopup();\n }}\n />\n ,\n { width: 195 },\n );\n };\n\n const onOpenSettings = ($target: React.RefObject) => {\n if (popupContent) {\n showPopup($target, popupContent, { width: 185 });\n }\n };\n\n const onNotificationClick = ($target: React.RefObject) => {\n if (data) {\n showPopup(\n $target,\n \n {data.notifications.map(notification => (\n \n ))}\n ,\n { width: 415, borders: false, diamondColor: theme.colors.primary },\n );\n }\n };\n\n // TODO: readd permision check\n // const userIsTeamOrProjectAdmin = user.isAdmin(PermissionLevel.TEAM, PermissionObjectType.TEAM, teamID);\n const userIsTeamOrProjectAdmin = true;\n const onInvitedMemberProfile = ($targetRef: React.RefObject, email: string) => {\n const member = projectInvitedMembers ? projectInvitedMembers.find(u => u.email === email) : null;\n if (member) {\n showPopup(\n $targetRef,\n {\n if (onRemoveInvitedFromBoard) {\n onRemoveInvitedFromBoard(member.email);\n }\n }}\n invited\n user={{\n id: member.email,\n fullName: member.email,\n bio: 'Invited',\n profileIcon: {\n bgColor: '#000',\n url: null,\n initials: member.email.charAt(0),\n },\n }}\n bio=\"\"\n />,\n );\n }\n };\n\n const onMemberProfile = ($targetRef: React.RefObject, memberID: string) => {\n const member = projectMembers ? projectMembers.find(u => u.id === memberID) : null;\n const warning =\n 'You can’t leave because you are the only admin. To make another user an admin, click their avatar, select “Change permissions…”, and select “Admin”.';\n if (member) {\n showPopup(\n $targetRef,\n {\n if (onChangeRole) {\n onChangeRole(member.id, roleCode);\n }\n }}\n onRemoveFromBoard={\n member.role && member.role.code === 'owner'\n ? undefined\n : () => {\n if (onRemoveFromBoard) {\n onRemoveFromBoard(member.id);\n }\n }\n }\n user={member}\n bio=\"\"\n />,\n );\n }\n };\n\n const user = data ? data.me?.user : null;\n\n return (\n <>\n {\n showPopup(\n $target,\n \n \n ,\n );\n }}\n currentTab={currentTab}\n user={user ?? null}\n canEditProjectName={userIsTeamOrProjectAdmin}\n canInviteUser={userIsTeamOrProjectAdmin}\n onMemberProfile={onMemberProfile}\n onInvitedMemberProfile={onInvitedMemberProfile}\n onInviteUser={onInviteUser}\n onChangeRole={onChangeRole}\n onChangeProjectOwner={onChangeProjectOwner}\n onNotificationClick={onNotificationClick}\n onSetTab={onSetTab}\n onRemoveFromBoard={onRemoveFromBoard}\n onDashboardClick={() => {\n history.push('/');\n }}\n onMyTasksClick={() => {\n history.push('/tasks');\n }}\n projectMembers={projectMembers}\n projectInvitedMembers={projectInvitedMembers}\n onProfileClick={onProfileClick}\n onSaveName={onSaveProjectName}\n onOpenSettings={onOpenSettings}\n />\n \n );\n};\n\nconst GlobalTopNavbar: React.FC = ({\n currentTab,\n onSetTab,\n menuType,\n teamID,\n onChangeProjectOwner,\n onChangeRole,\n name,\n popupContent,\n projectMembers,\n projectInvitedMembers,\n onInviteUser,\n onSaveProjectName,\n onRemoveInvitedFromBoard,\n onRemoveFromBoard,\n}) => {\n const { user } = useCurrentUser();\n const match = useRouteMatch();\n if (user) {\n return (\n \n );\n }\n return ;\n};\n\nexport default GlobalTopNavbar;\n","import { DataProxy } from '@apollo/client';\nimport { DocumentNode } from 'graphql';\n\ntype UpdateCacheFn = (cache: T) => T;\n\nexport function updateApolloCache(\n client: DataProxy,\n document: DocumentNode,\n update: UpdateCacheFn,\n variables?: any,\n) {\n let queryArgs: DataProxy.Query;\n if (variables) {\n queryArgs = {\n query: document,\n variables,\n };\n } else {\n queryArgs = {\n query: document,\n };\n }\n const cache: T | null = client.readQuery(queryArgs);\n if (cache) {\n const newCache = update(cache);\n client.writeQuery({\n ...queryArgs,\n data: newCache,\n });\n }\n}\n\nexport default updateApolloCache;\n","import React, { useEffect } from 'react';\nimport Admin from 'shared/components/Admin';\nimport Select from 'shared/components/Select';\nimport GlobalTopNavbar from 'App/TopNavbar';\nimport {\n useUsersQuery,\n useDeleteUserAccountMutation,\n useDeleteInvitedUserAccountMutation,\n useCreateUserAccountMutation,\n UsersDocument,\n UsersQuery,\n} from 'shared/generated/graphql';\nimport styled from 'styled-components';\nimport Button from 'shared/components/Button';\nimport { useForm, Controller } from 'react-hook-form';\nimport { usePopup, Popup } from 'shared/components/PopupMenu';\nimport produce from 'immer';\nimport updateApolloCache from 'shared/utils/cache';\nimport { useCurrentUser } from 'App/context';\nimport { Redirect } from 'react-router';\nimport NOOP from 'shared/utils/noop';\nimport ControlledInput from 'shared/components/ControlledInput';\n\nconst DeleteUserWrapper = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nconst DeleteUserDescription = styled.p`\n font-size: 14px;\n`;\n\nconst DeleteUserButton = styled(Button)`\n margin-top: 6px;\n padding: 6px 12px;\n width: 100%;\n`;\n\ntype DeleteUserPopupProps = {\n onDeleteUser: () => void;\n};\n\nconst DeleteUserPopup: React.FC = ({ onDeleteUser }) => {\n return (\n \n Deleting this user will remove all user related data.\n onDeleteUser()} color=\"danger\">\n Delete user\n \n \n );\n};\n\ntype RoleCodeOption = {\n label: string;\n value: string;\n};\n\ntype CreateUserData = {\n email: string;\n username: string;\n fullName: string;\n initials: string;\n password: string;\n roleCode: RoleCodeOption;\n};\n\nconst CreateUserForm = styled.form`\n display: flex;\n flex-direction: column;\n margin: 0 12px;\n`;\n\nconst CreateUserButton = styled(Button)`\n margin-top: 8px;\n padding: 6px 12px;\n width: 100%;\n`;\n\nconst AddUserInput = styled(ControlledInput)`\n margin-bottom: 8px;\n`;\n\nconst InputError = styled.span`\n color: ${(props) => props.theme.colors.danger};\n font-size: 12px;\n`;\n\ntype AddUserPopupProps = {\n onAddUser: (user: CreateUserData) => void;\n};\n\nconst AddUserPopup: React.FC = ({ onAddUser }) => {\n const {\n register,\n handleSubmit,\n formState: { errors },\n control,\n } = useForm();\n\n const createUser = (data: CreateUserData) => {\n onAddUser(data);\n };\n return (\n \n \n {errors.fullName && {errors.fullName.message}}\n \n (\n \n )}\n />\n {errors.roleCode && errors.roleCode.value && {errors.roleCode.value.message}}\n \n {errors.username && {errors.username.message}}\n \n {errors.initials && {errors.initials.message}}\n \n {errors.password && {errors.password.message}}\n Create\n \n );\n};\n\nconst AdminRoute = () => {\n useEffect(() => {\n document.title = 'Admin | Taskcafé';\n }, []);\n const { loading, data } = useUsersQuery({ fetchPolicy: 'cache-and-network' });\n const { showPopup, hidePopup } = usePopup();\n const { user } = useCurrentUser();\n const [deleteInvitedUser] = useDeleteInvitedUserAccountMutation({\n update: (client, response) => {\n updateApolloCache(client, UsersDocument, (cache) =>\n produce(cache, (draftCache) => {\n draftCache.invitedUsers = cache.invitedUsers.filter(\n (u) => u.id !== response.data?.deleteInvitedUserAccount.invitedUser.id,\n );\n }),\n );\n },\n });\n const [deleteUser] = useDeleteUserAccountMutation({\n update: (client, response) => {\n updateApolloCache(client, UsersDocument, (cache) =>\n produce(cache, (draftCache) => {\n draftCache.users = cache.users.filter((u) => u.id !== response.data?.deleteUserAccount.userAccount.id);\n }),\n );\n },\n });\n const [createUser] = useCreateUserAccountMutation({\n update: (client, createData) => {\n const cacheData: any = client.readQuery({\n query: UsersDocument,\n });\n const newData = produce(cacheData, (draftState: any) => {\n draftState.users = [...draftState.users, { ...createData.data?.createUserAccount }];\n });\n\n client.writeQuery({\n query: UsersDocument,\n data: {\n ...newData,\n },\n });\n },\n });\n if (data && user) {\n /*\nTODO: add permision check\n if (user.roles.org !== 'admin') {\n return ;\n }\n */\n return (\n <>\n \n {\n hidePopup();\n }}\n onDeleteInvitedUser={(invitedUserID) => {\n deleteInvitedUser({ variables: { invitedUserID } });\n hidePopup();\n }}\n onDeleteUser={(userID, newOwnerID) => {\n deleteUser({ variables: { userID, newOwnerID } });\n hidePopup();\n }}\n onAddUser={($target) => {\n showPopup(\n $target,\n hidePopup()}>\n {\n const { roleCode, ...userData } = u;\n createUser({ variables: { ...userData, roleCode: roleCode.value } });\n hidePopup();\n }}\n />\n ,\n );\n }}\n />\n \n );\n }\n return ;\n};\n\nexport default AdminRoute;\n","const KeyCodes = {\n TAB: 9,\n ENTER: 13,\n ESCAPE: 27,\n SPACE: 32,\n ARROW_LEFT: 37,\n ARROW_UP: 38,\n ARROW_RIGHT: 39,\n ARROW_DOWN: 40,\n M: 77,\n};\n\nexport default KeyCodes;\n","import { useEffect } from 'react';\nimport KeyCodes from 'shared/constants/keyCodes';\n\nconst useOnEscapeKeyDown = (isListening: boolean, onEscapeKeyDown: () => void) => {\n useEffect(() => {\n const handleKeyDown = (event: any) => {\n if (event.keyCode === KeyCodes.ESCAPE) {\n onEscapeKeyDown();\n }\n };\n if (isListening) {\n document.addEventListener('keydown', handleKeyDown);\n }\n return () => {\n document.removeEventListener('keydown', handleKeyDown);\n };\n }, [isListening, onEscapeKeyDown]);\n};\nexport default useOnEscapeKeyDown;\n","import styled from 'styled-components';\nimport { mixin } from 'shared/utils/styles';\n\nexport const ScrollOverlay = styled.div`\n z-index: 3000;\n position: fixed;\n top: 0;\n left: 0;\n height: 100%;\n width: 100%;\n overflow-x: hidden;\n overflow-y: auto;\n`;\n\nexport const ClickableOverlay = styled.div`\n min-height: 100%;\n background: rgba(0, 0, 0, 0.4);\n`;\n\nexport const StyledModal = styled.div<{ width: number; height: number }>`\n position: relative;\n width: ${props => props.width}px;\n height: ${props => props.height}px;\n left: 0;\n right: 0;\n top: 48px;\n bottom: 16px;\n margin: auto;\n\n background: #262c49;\n vertical-align: middle;\n border-radius: 6px;\n ${mixin.boxShadowMedium}\n`;\n","import React, { useRef, useEffect, useState } from 'react';\nimport ReactDOM from 'react-dom';\nimport useOnOutsideClick from 'shared/hooks/onOutsideClick';\nimport useOnEscapeKeyDown from 'shared/hooks/onEscapeKeyDown';\nimport useWindowSize from 'shared/hooks/useWindowSize';\nimport styled from 'styled-components';\nimport { Cross } from 'shared/icons';\nimport { ScrollOverlay, ClickableOverlay, StyledModal } from './Styles';\n\nconst $root: HTMLElement = document.getElementById('root')!; // eslint-disable-line @typescript-eslint/no-non-null-assertion\n\ntype ModalProps = {\n width: number;\n onClose: () => void;\n renderContent: () => JSX.Element;\n};\n\nfunction getAdjustedHeight(height: number) {\n if (height >= 900) {\n return height - 150;\n }\n if (height >= 800) {\n return height - 125;\n }\n return height - 70;\n}\n\nconst CloseIcon = styled(Cross)`\n position: absolute;\n top: 16px;\n right: -32px;\n cursor: pointer;\n fill: ${props => props.theme.colors.text.primary};\n &:hover {\n fill: ${props => props.theme.colors.text.secondary};\n }\n`;\n\nconst InnerModal: React.FC = ({ width, onClose: tellParentToClose, renderContent }) => {\n const $modalRef = useRef(null);\n const $clickableOverlayRef = useRef(null);\n const [_width, height] = useWindowSize();\n\n useOnOutsideClick($modalRef, true, tellParentToClose, $clickableOverlayRef);\n useOnEscapeKeyDown(true, tellParentToClose);\n\n return (\n \n \n \n {renderContent()}\n tellParentToClose()} width={20} height={20} />\n \n \n \n );\n};\n\nconst Modal: React.FC = ({ width, onClose: tellParentToClose, renderContent }) => {\n return ReactDOM.createPortal(\n ,\n $root,\n );\n};\n\nexport default Modal;\n","import { useLayoutEffect, useState } from 'react';\n\nexport default function useWindowSize() {\n const [size, setSize] = useState([0, 0]);\n useLayoutEffect(() => {\n function updateSize() {\n setSize([window.innerWidth, window.innerHeight]);\n }\n window.addEventListener('resize', updateSize);\n updateSize();\n return () => window.removeEventListener('resize', updateSize);\n }, []);\n return size;\n}\n","import React from 'react';\nimport Icon, { IconProps } from './Icon';\n\nconst Task: React.FC = ({ width = '16px', height = '16px', className }) => {\n return (\n \n \n \n );\n};\n\nexport default Task;\n","import styled, { css, keyframes } from 'styled-components';\nimport TextareaAutosize from 'react-autosize-textarea';\nimport { mixin } from 'shared/utils/styles';\nimport Button from 'shared/components/Button';\nimport TaskAssignee from 'shared/components/TaskAssignee';\nimport theme from 'App/ThemeStyles';\n\nexport const Container = styled.div`\n display: flex;\n height: 100%;\n`;\n\nexport const LeftSidebar = styled.div`\n display: flex;\n flex-direction: column;\n width: 300px;\n background: #222740;\n`;\n\nexport const MarkCompleteButton = styled.button<{ invert: boolean; disabled?: boolean }>`\n padding: 4px 8px;\n position: relative;\n border: none;\n cursor: pointer;\n border-radius: ${props => props.theme.borderRadius.alternate};\n display: flex;\n align-items: center;\n background: transparent;\n & span {\n margin-left: 4px;\n }\n ${props =>\n props.invert\n ? css`\n background: ${props.theme.colors.success};\n & svg {\n fill: ${props.theme.colors.text.secondary};\n }\n & span {\n color: ${props.theme.colors.text.secondary};\n }\n &:hover {\n background: ${mixin.rgba(props.theme.colors.success, 0.8)};\n }\n `\n : css`\n background: none;\n border: 1px solid ${props.theme.colors.text.secondary};\n & svg {\n fill: ${props.theme.colors.text.secondary};\n }\n & span {\n color: ${props.theme.colors.text.secondary};\n }\n &:hover {\n background: ${mixin.rgba(props.theme.colors.success, 0.08)};\n border: 1px solid ${props.theme.colors.success};\n }\n &:hover svg {\n fill: ${props.theme.colors.success};\n }\n &:hover span {\n color: ${props.theme.colors.success};\n }\n `}\n ${props =>\n props.invert &&\n css`\n opacity: 0.6;\n `}\n`;\n\nexport const LeftSidebarContent = styled.div`\n padding-top: 32px;\n display: flex;\n flex-direction: column;\n`;\n\nexport const LeftSidebarSection = styled.div`\n display: flex;\n flex-direction: column;\n padding-left: 32px;\n padding-right: 32px;\n padding-bottom: 16px;\n border-bottom: 1px solid #414561;\n`;\n\nexport const SidebarTitle = styled.div`\n font-size: 12px;\n min-height: 24px;\n margin-left: 8px;\n color: ${props => mixin.rgba(props.theme.colors.text.primary, 0.75)};\n padding-top: 4px;\n letter-spacing: 0.5px;\n text-transform: uppercase;\n`;\n\nexport const defaultBaseColor = theme.colors.bg.primary;\n\nexport const defaultHighlightColor = mixin.lighten(theme.colors.bg.primary, 0.25);\n\nexport const skeletonKeyframes = keyframes`\n 0% {\n background-position: -200px 0;\n }\n 100% {\n background-position: calc(200px + 100%) 0;\n }\n `;\n\nexport const SidebarButton = styled.div<{ $loading?: boolean }>`\n font-size: 14px;\n color: ${props => props.theme.colors.text.primary};\n min-height: 32px;\n width: 100%;\n border-radius: 6px;\n\n ${props =>\n props.$loading\n ? css`\n background: ${props.theme.colors.bg.primary};\n `\n : css`\n padding: 9px 8px 7px 8px;\n cursor: pointer;\n border-color: transparent;\n border-width: 1px;\n border-style: solid;\n &:hover {\n border-color: #414561;\n }\n `};\n\n display: inline-block;\n outline: 0;\n`;\n\nexport const SidebarSkeleton = styled.div`\n background-image: linear-gradient(90deg, ${defaultBaseColor}, ${defaultHighlightColor}, ${defaultBaseColor});\n background-size: 200px 100%;\n background-repeat: no-repeat;\n border-radius: 6px;\n padding: 1px;\n animation: ${skeletonKeyframes} 1.2s ease-in-out infinite;\n width: 100%;\n height: 100%;\n`;\n\nexport const SidebarButtonText = styled.span`\n min-height: 16px;\n flex: 1 1 auto;\n display: flex;\n justify-content: flex-start;\n`;\n\nexport const ContentContainer = styled.div`\n display: flex;\n flex-direction: column;\n flex: 1;\n padding-top: 32px;\n overflow: auto;\n`;\n\nexport const HeaderContainer = styled.div`\n flex: 0 0 auto;\n padding: 0px 32px 0px 24px;\n`;\n\nexport const HeaderInnerContainer = styled.div`\n display: flex;\n justify-content: space-between;\n margin: 0 0 0 0;\n padding: 0 0 0 4px;\n`;\n\nexport const HeaderLeft = styled.div`\n display: flex;\n justify-content: flex-start;\n`;\n\nexport const TaskDetailsTitleWrapper = styled.div<{ $loading?: boolean }>`\n width: 100%;\n margin: 8px 0 4px 0;\n display: flex;\n border-radius: 6px;\n ${props => props.$loading && `background: ${props.theme.colors.bg.primary};`}\n`;\n\nexport const TaskDetailsTitle = styled(TextareaAutosize)<{ $loading?: boolean }>`\n padding: 9px 8px 7px 8px;\n border-color: transparent;\n border-radius: 6px;\n width: 100%;\n color: #c2c6dc;\n display: inline-block;\n outline: 0;\n font-size: 24px;\n font-weight: 700;\n background: none;\n\n &:disabled {\n opacity: 1;\n }\n ${props =>\n props.$loading\n ? css`\n background-image: linear-gradient(90deg, ${defaultBaseColor}, ${defaultHighlightColor}, ${defaultBaseColor});\n background-size: 200px 100%;\n background-repeat: no-repeat;\n animation: ${skeletonKeyframes} 1.2s ease-in-out infinite;\n `\n : css`\n &:not(:disabled):hover {\n border-color: #414561;\n border-width: 1px;\n border-style: solid;\n }\n\n &:focus {\n border-color: ${props.theme.colors.primary};\n }\n `}\n`;\n\nexport const DueDateTitle = styled.div`\n font-size: 12px;\n min-height: 24px;\n margin-left: 8px;\n color: ${props => mixin.rgba(props.theme.colors.text.primary, 0.75)};\n padding-top: 8px;\n letter-spacing: 0.5px;\n text-transform: uppercase;\n`;\n\nexport const AssignedUsersSection = styled.div`\n padding-left: 32px;\n padding-right: 32px;\n padding-top: 24px;\n padding-bottom: 24px;\n border-bottom: 1px solid ${props => props.theme.colors.alternate};\n display: flex;\n flex-direction: column;\n`;\n\nexport const AssignUserIcon = styled.div`\n cursor: pointer;\n height: 32px;\n width: 32px;\n position: relative;\n border-radius: 50%;\n border: 1px dashed #414561;\n margin-right: 8px;\n display: flex;\n flex-shrink: 0;\n justify-content: center;\n align-items: center;\n &:hover {\n border: 1px solid ${props => mixin.rgba(props.theme.colors.text.secondary, 0.75)};\n }\n &:hover svg {\n fill: ${props => mixin.rgba(props.theme.colors.text.secondary, 0.75)};\n }\n`;\n\nexport const AssignUsersButton = styled.div`\n cursor: pointer;\n display: inline-flex;\n flex: 1 1 auto;\n height: 40px;\n padding: 4px 16px 4px 8px;\n margin-left: -1px;\n border-radius: 6px;\n align-items: center;\n border: 1px solid transparent;\n &:hover {\n border: 1px solid ${props => mixin.darken(props.theme.colors.alternate, 0.15)};\n }\n &:hover ${AssignUserIcon} {\n border: 1px solid ${props => props.theme.colors.alternate};\n }\n`;\n\nexport const AssignUserLabel = styled.span`\n flex: 1 1 auto;\n line-height: 15px;\n color: ${props => mixin.rgba(props.theme.colors.text.primary, 0.75)};\n`;\n\nexport const ExtraActionsSection = styled.div`\n padding-left: 32px;\n padding-right: 32px;\n padding-top: 24px;\n display: flex;\n flex-direction: column;\n`;\n\nexport const ActionButtonsTitle = styled.h3`\n color: ${props => props.theme.colors.text.primary};\n font-size: 12px;\n font-weight: 500;\n letter-spacing: 0.04em;\n`;\n\nexport const ActionButton = styled(Button)`\n margin-top: 8px;\n margin-left: -10px;\n padding: 8px 16px;\n background: ${props => mixin.rgba(props.theme.colors.bg.primary, 0.5)};\n text-align: left;\n transition: transform 0.2s ease;\n & span {\n justify-content: flex-start;\n }\n &:hover {\n box-shadow: none;\n transform: translateX(4px);\n background: ${props => mixin.rgba(props.theme.colors.bg.primary, 0.75)};\n }\n`;\n\nexport const HeaderRight = styled.div`\n display: flex;\n justify-content: center;\n align-items: center;\n`;\n\nexport const HeaderActionIcon = styled.div`\n padding: 4px 4px 4px 4px;\n margin: 0 4px 0 4px;\n display: flex;\n justify-content: center;\n align-items: center;\n\n cursor: pointer;\n svg {\n fill: ${props => mixin.rgba(props.theme.colors.text.primary, 0.75)};\n }\n &:hover svg {\n fill: ${props => mixin.rgba(props.theme.colors.primary, 0.75)});\n }\n`;\n\nexport const EditorContainer = styled.div`\n margin-left: 32px;\n margin-right: 32px;\n\n padding: 9px 8px 7px 8px;\n border-color: transparent;\n border-radius: 6px;\n border-width: 1px;\n border-style: solid;\n outline: 0;\n background: none;\n\n ul {\n list-style-type: disc;\n }\n\n ul.checkbox_list input[type='checkbox'] {\n border-radius: 6px;\n border-width: 1px;\n border-style: solid;\n border-color: #414561;\n }\n`;\n\nexport const InnerContentContainer = styled.div`\n overflow: auto;\n position: relative;\n`;\n\nexport const DescriptionContainer = styled.div`\n position: relative;\n display: flex;\n flex-direction: column;\n`;\n\nexport const DescriptionActionButton = styled(Button)`\n padding: 8px 16px;\n`;\n\nexport const Labels = styled.div`\n display: flex;\n padding-left: 9px;\n margin: 0 0 8px 0;\n`;\n\nexport const MetaDetail = styled.div`\n display: block;\n float: left;\n margin: 0 16px 8px 0;\n max-width: 100%;\n`;\n\nexport const MetaDetailTitle = styled.h3`\n color: ${props => props.theme.colors.text.primary};\n font-size: 12px;\n font-weight: 500;\n letter-spacing: 0.04em;\n margin-top: 16px;\n text-transform: uppercase;\n display: block;\n line-height: 20px;\n margin: 0 8px 4px 0;\n white-space: nowrap;\n text-overflow: ellipsis;\n overflow: hidden;\n`;\n\nexport const MetaDetailContent = styled.div`\n display: flex;\n`;\nexport const TaskDetailsAddLabel = styled.div`\n border-radius: 3px;\n background: ${props => mixin.darken(props.theme.colors.bg.secondary, 0.15)};\n cursor: pointer;\n &:hover {\n opacity: 0.8;\n }\n`;\n\nexport const TaskDetailsAddLabelIcon = styled.div`\n float: left;\n height: 32px;\n width: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 3px;\n background: ${props => mixin.darken(props.theme.colors.bg.secondary, 0.15)};\n cursor: pointer;\n &:hover {\n opacity: 0.8;\n }\n`;\n\nexport const ChecklistSection = styled.div`\n margin-top: 8px;\n padding: 0 24px;\n`;\n\nexport const TaskDetailLabel = styled.div<{ color: string }>`\n &:hover {\n opacity: 0.8;\n }\n background-color: ${props => props.color};\n color: #fff;\n cursor: pointer;\n display: flex;\n align-items: center;\n border-radius: 3px;\n box-sizing: border-box;\n display: block;\n float: left;\n font-weight: 600;\n height: 32px;\n line-height: 32px;\n margin: 0 4px 0 0;\n min-width: 40px;\n padding: 0 12px;\n width: auto;\n`;\n\nexport const MemberList = styled.div`\n display: flex;\n align-items: center;\n padding: 4px 16px 4px 8px;\n margin-left: -1px;\n`;\n\nexport const TaskMember = styled(TaskAssignee)`\n margin-right: 4px;\n`;\n\nexport const ActionButtonIcon = styled.div``;\n\nexport const EditorActions = styled.div`\n display: flex;\n align-items: center;\n\n margin-left: 32px;\n margin-right: 32px;\n padding: 9px 8px 7px 8px;\n`;\n\nexport const CancelIcon = styled.div`\n width: 32px;\n height: 32p;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-left: 4px;\n`;\n\nexport const TabBarSection = styled.div`\n margin-top: 2px;\n padding-left: 23px;\n display: flex;\n text-transform: uppercase;\n min-height: 35px;\n border-bottom: 1px solid #414561;\n`;\n\nexport const TabBarItem = styled.div`\n box-shadow: inset 0 -2px ${props => props.theme.colors.primary};\n padding: 12px 7px 14px 7px;\n margin-bottom: -1px;\n margin-right: 36px;\n color: ${props => props.theme.colors.text.primary};\n`;\n\nexport const CommentContainer = styled.div`\n flex: 0 0 auto;\n margin-top: auto;\n padding: 15px 26px;\n background: #1f243e;\n`;\n\nexport const CommentInnerWrapper = styled.div`\n display: flex;\n position: relative;\n`;\n\nexport const CommentEditorContainer = styled.div`\n flex: 1;\n border-radius: 6px;\n border: 1px solid #414561;\n display: flex;\n flex-direction: column;\n background: #1f243e;\n`;\nexport const CommentProfile = styled(TaskAssignee)`\n margin-right: 8px;\n position: relative;\n top: 0;\n padding-top: 3px;\n align-items: normal;\n`;\n\nexport const CommentTextArea = styled(TextareaAutosize)<{ $showCommentActions: boolean }>`\n width: 100%;\n line-height: 28px;\n padding: 4px 6px;\n border-radius: 6px;\n color: ${props => props.theme.colors.text.primary};\n background: #1f243e;\n border: none;\n transition: max-height 200ms, height 200ms, min-height 200ms;\n min-height: 36px;\n max-height: 36px;\n ${props =>\n props.$showCommentActions\n ? css`\n min-height: 80px;\n max-height: none;\n line-height: 20px;\n `\n : css`\n height: 36px;\n `}\n`;\n\nexport const CommentEditorActions = styled.div<{ visible: boolean }>`\n display: ${props => (props.visible ? 'flex' : 'none')};\n align-items: center;\n padding: 5px 5px 5px 9px;\n border-top: 1px solid #414561;\n`;\n\nexport const CommentEditorActionIcon = styled.div`\n width: 32px;\n height: 32px;\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nexport const CommentEditorSaveButton = styled(Button)`\n margin-left: auto;\n padding: 8px 16px;\n`;\n\nexport const ActivitySection = styled.div`\n overflow-x: hidden;\n\n padding: 8px 26px;\n display: flex;\n flex-direction: column-reverse;\n`;\n\nexport const ActivityItemCommentAction = styled.div`\n display: none;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n svg {\n fill: ${props => props.theme.colors.text.primary} !important;\n }\n`;\n\nexport const ActivityItem = styled.div`\n padding: 8px 0;\n position: relative;\n overflow-wrap: break-word;\n word-wrap: break-word;\n word-break: break-word;\n display: flex;\n &:hover ${ActivityItemCommentAction} {\n display: flex;\n }\n`;\n\nexport const ActivityItemHeader = styled.div<{ editable?: boolean }>`\n display: flex;\n flex-direction: column;\n padding-left: 8px;\n ${props => props.editable && 'width: 100%;'}\n`;\nexport const ActivityItemHeaderUser = styled(TaskAssignee)`\n align-items: start;\n`;\n\nexport const ActivityItemHeaderTitle = styled.div`\n display: flex;\n align-items: center;\n color: ${props => props.theme.colors.text.primary};\n padding-bottom: 2px;\n`;\n\nexport const ActivityItemHeaderTitleName = styled.span`\n font-weight: 500;\n padding-right: 3px;\n`;\n\nexport const ActivityItemTimestamp = styled.span<{ margin: number }>`\n font-size: 12px;\n color: ${props => mixin.rgba(props.theme.colors.text.primary, 0.65)};\n margin-left: ${props => props.margin}px;\n`;\n\nexport const ActivityItemDetails = styled.div`\n margin-left: 32px;\n`;\n\nexport const ActivityItemCommentContainer = styled.div``;\nexport const ActivityItemComment = styled.div<{ editable: boolean }>`\n display: inline-flex;\n flex-direction: column;\n border-radius: 3px;\n ${mixin.boxShadowCard}\n position: relative;\n color: ${props => props.theme.colors.text.primary};\n padding: 8px 12px;\n margin: 4px 0;\n background-color: ${props => mixin.darken(props.theme.colors.alternate, 0.1)};\n ${props => props.editable && 'width: 100%;'}\n\n & span {\n display: inline-flex;\n align-items: center;\n }\n & ul {\n list-style-type: disc;\n margin: 8px 0;\n }\n & ul > li {\n margin: 8px 8px 8px 24px;\n margin-inline-start: 24px;\n margin-inline-end: 8px;\n }\n & ul > li ul > li {\n list-style: circle;\n }\n`;\n\nexport const ActivityItemCommentActions = styled.div`\n display: flex;\n align-items: center;\n position: absolute;\n top: 8px;\n right: 0;\n`;\n\nexport const ActivityItemLog = styled.span`\n margin-left: 2px;\n color: ${props => props.theme.colors.text.primary};\n`;\n\nexport const ViewRawButton = styled.button`\n border-radius: 3px;\n padding: 8px 12px;\n display: flex;\n position: absolute;\n right: 4px;\n bottom: -24px;\n cursor: pointer;\n color: ${props => mixin.rgba(props.theme.colors.text.primary, 0.25)};\n &:hover {\n color: ${props => props.theme.colors.text.primary};\n }\n`;\n\nexport const TaskDetailsEditor = styled(TextareaAutosize)`\n min-height: 108px;\n color: #c2c6dc;\n background: #262c49;\n border-radius: 3px;\n line-height: 20px;\n margin-left: 32px;\n margin-right: 32px;\n padding: 9px 8px 7px 8px;\n outline: none;\n border: none;\n`;\n","import React, { useRef, useState, useEffect } from 'react';\nimport { usePopup } from 'shared/components/PopupMenu';\nimport useOnOutsideClick from 'shared/hooks/onOutsideClick';\nimport { At, Paperclip, Smile } from 'shared/icons';\nimport { Picker, Emoji } from 'emoji-mart';\nimport Task from 'shared/icons/Task';\nimport {\n CommentTextArea,\n CommentEditorContainer,\n CommentEditorActions,\n CommentEditorActionIcon,\n CommentEditorSaveButton,\n CommentProfile,\n CommentInnerWrapper,\n} from './Styles';\n\ntype CommentCreatorProps = {\n me?: TaskUser;\n autoFocus?: boolean;\n onMemberProfile?: ($targetRef: React.RefObject, memberID: string) => void;\n message?: string | null;\n onCreateComment: (message: string) => void;\n onCancelEdit?: () => void;\n disabled?: boolean;\n};\n\nconst CommentCreator: React.FC = ({\n me,\n disabled = false,\n message,\n onMemberProfile,\n onCreateComment,\n onCancelEdit,\n autoFocus = false,\n}) => {\n const $commentWrapper = useRef(null);\n const $comment = useRef(null);\n const $emoji = useRef(null);\n const $emojiCart = useRef(null);\n const [comment, setComment] = useState(message ?? '');\n const [showCommentActions, setShowCommentActions] = useState(autoFocus);\n const { showPopup, hidePopup } = usePopup();\n useEffect(() => {\n if (autoFocus && $comment && $comment.current) {\n $comment.current.select();\n }\n }, []);\n useOnOutsideClick(\n [$commentWrapper, $emojiCart],\n showCommentActions,\n () => {\n if (onCancelEdit) {\n onCancelEdit();\n }\n setShowCommentActions(false);\n },\n null,\n );\n return (\n \n {me && onMemberProfile && (\n {\n onMemberProfile($target, me.id);\n }}\n />\n )}\n \n setComment(e.currentTarget.value)}\n onFocus={() => {\n setShowCommentActions(true);\n }}\n />\n \n \n \n \n \n \n \n {\n showPopup(\n $emoji,\n
\n {\n if ($comment && $comment.current) {\n const textToInsert = `${emoji.colons} `;\n const cursorPosition = $comment.current.selectionStart;\n const textBeforeCursorPosition = $comment.current.value.substring(0, cursorPosition);\n const textAfterCursorPosition = $comment.current.value.substring(\n cursorPosition,\n $comment.current.value.length,\n );\n setComment(textBeforeCursorPosition + textToInsert + textAfterCursorPosition);\n }\n hidePopup();\n }}\n set=\"google\"\n />\n
,\n );\n }}\n >\n \n \n \n \n \n {\n setShowCommentActions(false);\n onCreateComment(comment);\n setComment('');\n }}\n >\n Save\n \n
\n
\n
\n );\n};\n\nexport default CommentCreator;\n","import theme from 'App/ThemeStyles';\n\nconst colors = {\n almostBlack: 'rgb(38, 44, 73)',\n lightBlack: 'rgb(16, 22, 58)',\n bgPrimary: 'rgb(16, 22, 58)',\n almostWhite: 'rgb(194, 198, 220)',\n white: '#FFF',\n white10: 'rgb(194, 198, 220)',\n black: '#000',\n black10: 'rgba(0, 0, 0, 0.1)',\n primary: 'rgb(115, 103, 240)',\n greyLight: '#F4F7FA',\n grey: '#E8EBED',\n greyMid: '#C5CCD3',\n greyDark: '#DAE1E9',\n};\n\nexport const base = {\n ...colors,\n fontFamily: 'Open Sans',\n fontFamilyMono: \"'SFMono-Regular',Consolas,'Liberation Mono', Menlo, Courier,monospace\",\n fontWeight: 400,\n zIndex: 1000000,\n link: colors.primary,\n placeholder: '#B1BECC',\n textSecondary: '#fff',\n textLight: colors.white,\n textHighlight: '#b3e7ff',\n textHighlightForeground: colors.white,\n selected: colors.primary,\n codeComment: '#6a737d',\n codePunctuation: '#5e6687',\n codeNumber: '#d73a49',\n codeProperty: '#c08b30',\n codeTag: '#3d8fd1',\n codeString: '#032f62',\n codeSelector: '#6679cc',\n codeAttr: '#c76b29',\n codeEntity: '#22a2c9',\n codeKeyword: '#d73a49',\n codeFunction: '#6f42c1',\n codeStatement: '#22a2c9',\n codePlaceholder: '#3d8fd1',\n codeInserted: '#202746',\n codeImportant: '#c94922',\n\n blockToolbarBackground: colors.bgPrimary,\n blockToolbarTrigger: colors.primary,\n blockToolbarTriggerIcon: colors.white,\n blockToolbarItem: colors.white,\n blockToolbarText: colors.white,\n blockToolbarHoverBackground: colors.primary,\n blockToolbarDivider: colors.almostWhite,\n\n blockToolbarIcon: undefined,\n blockToolbarIconSelected: colors.white,\n blockToolbarTextSelected: colors.white,\n\n noticeInfoBackground: '#F5BE31',\n noticeInfoText: colors.almostBlack,\n noticeTipBackground: '#9E5CF7',\n noticeTipText: colors.white,\n noticeWarningBackground: '#FF5C80',\n noticeWarningText: colors.white,\n};\n\nexport const BASE_TWO = {\n ...colors,\n fontFamily:\n \"-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,Oxygen, Ubuntu,Cantarell,'Open Sans','Helvetica Neue',sans-serif\",\n fontFamilyMono: \"'SFMono-Regular',Consolas,'Liberation Mono', Menlo, Courier,monospace\",\n fontWeight: 400,\n zIndex: 1000000,\n link: colors.primary,\n placeholder: '#B1BECC',\n textSecondary: '#fff',\n textLight: colors.white,\n textHighlight: '#b3e7ff',\n textHighlightForeground: colors.white,\n selected: colors.primary,\n codeComment: '#6a737d',\n codePunctuation: '#5e6687',\n codeNumber: '#d73a49',\n codeProperty: '#c08b30',\n codeTag: '#3d8fd1',\n codeString: '#032f62',\n codeSelector: '#6679cc',\n codeAttr: '#c76b29',\n codeEntity: '#22a2c9',\n codeKeyword: '#d73a49',\n codeFunction: '#6f42c1',\n codeStatement: '#22a2c9',\n codePlaceholder: '#3d8fd1',\n codeInserted: '#202746',\n codeImportant: '#c94922',\n\n blockToolbarBackground: colors.bgPrimary,\n blockToolbarTrigger: colors.white,\n blockToolbarTriggerIcon: colors.white,\n blockToolbarItem: colors.white,\n blockToolbarText: colors.white,\n blockToolbarHoverBackground: colors.primary,\n blockToolbarDivider: colors.almostWhite,\n\n blockToolbarIcon: undefined,\n blockToolbarIconSelected: colors.black,\n blockToolbarTextSelected: colors.black,\n\n noticeInfoBackground: '#F5BE31',\n noticeInfoText: colors.almostBlack,\n noticeTipBackground: '#9E5CF7',\n noticeTipText: colors.white,\n noticeWarningBackground: '#FF5C80',\n noticeWarningText: colors.white,\n};\n\nexport const dark = {\n ...base,\n background: colors.almostBlack,\n text: colors.almostWhite,\n code: colors.almostWhite,\n cursor: colors.white,\n divider: '#4E5C6E',\n placeholder: '#52657A',\n\n toolbarBackground: colors.bgPrimary,\n toolbarHoverBackground: colors.primary,\n toolbarInput: colors.almostWhite,\n toolbarItem: colors.white,\n\n tableDivider: colors.lightBlack,\n tableSelected: colors.primary,\n tableSelectedBackground: '#002333',\n\n quote: colors.greyDark,\n codeBackground: colors.black,\n codeBorder: colors.lightBlack,\n codeString: '#3d8fd1',\n horizontalRule: colors.lightBlack,\n imageErrorBackground: 'rgba(0, 0, 0, 0.5)',\n\n scrollbarBackground: colors.black,\n scrollbarThumb: colors.lightBlack,\n};\n\nexport default dark;\n","import React, { useState, useRef, useEffect } from 'react';\nimport styled from 'styled-components';\nimport { CheckSquare, Trash, Square, CheckSquareOutline, Clock, Cross, AccountPlus } from 'shared/icons';\nimport { DragDropContext, Droppable, Draggable, DropResult } from 'react-beautiful-dnd';\nimport {\n isPositionChanged,\n getSortedDraggables,\n getNewDraggablePosition,\n getAfterDropDraggableList,\n} from 'shared/utils/draggables';\nimport Button from 'shared/components/Button';\nimport TextareaAutosize from 'react-autosize-textarea';\nimport Control from 'react-select/src/components/Control';\nimport useOnOutsideClick from 'shared/hooks/onOutsideClick';\nimport { mixin } from 'shared/utils/styles';\n\nconst Wrapper = styled.div`\n margin-bottom: 24px;\n`;\n\nconst WindowTitle = styled.div`\n padding: 8px 0;\n position: relative;\n margin: 0 0 4px 40px;\n`;\n\nconst WindowTitleIcon = styled(CheckSquareOutline)`\n top: 10px;\n left: -32px;\n position: absolute;\n`;\n\nconst WindowChecklistTitle = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-flow: row wrap;\n`;\n\nconst WindowTitleText = styled.h3`\n cursor: pointer;\n color: ${props => props.theme.colors.text.primary};\n margin: 6px 0;\n display: inline-block;\n width: auto;\n min-height: 18px;\n font-size: 16px;\n line-height: 20px;\n min-width: 40px;\n`;\n\nconst WindowOptions = styled.div`\n margin: 0 2px 0 auto;\n float: right;\n`;\n\nconst DeleteButton = styled(Button)`\n padding: 6px 12px;\n`;\n\nconst ChecklistProgress = styled.div`\n margin-bottom: 6px;\n position: relative;\n`;\nconst ChecklistProgressPercent = styled.span`\n color: #5e6c84;\n font-size: 11px;\n line-height: 10px;\n position: absolute;\n left: 5px;\n top: -1px;\n text-align: center;\n width: 32px;\n`;\n\nconst ChecklistProgressBar = styled.div`\n background: ${props => props.theme.colors.bg.primary};\n border-radius: 4px;\n clear: both;\n height: 8px;\n margin: 0 0 0 40px;\n overflow: hidden;\n position: relative;\n`;\nconst ChecklistProgressBarCurrent = styled.div<{ width: number }>`\n width: ${props => props.width}%;\n background: ${props => (props.width === 100 ? props.theme.colors.success : props.theme.colors.primary)};\n bottom: 0;\n left: 0;\n position: absolute;\n top: 0;\n transition: width 0.14s ease-in, background 0.14s ease-in;\n`;\n\nexport const ChecklistItems = styled.div`\n min-height: 8px;\n`;\n\nconst ChecklistItemUncheckedIcon = styled(Square)``;\n\nconst ChecklistIcon = styled.div`\n cursor: pointer;\n position: absolute;\n left: 0;\n top: 0;\n margin: 10px;\n text-align: center;\n\n &:hover {\n opacity: 0.8;\n }\n`;\n\nconst ChecklistItemCheckedIcon = styled(CheckSquare)`\n fill: ${props => props.theme.colors.primary};\n`;\n\nconst ChecklistItemDetails = styled.div`\n word-break: break-word;\n word-wrap: break-word;\n overflow-wrap: break-word;\n`;\nconst ChecklistItemRow = styled.div`\n cursor: pointer;\n display: flex;\n flex-direction: row;\n`;\n\nconst ChecklistItemTextControls = styled.div`\n padding: 6px 0;\n width: 100%;\n display: inline-flex;\n align-items: center;\n`;\n\nconst ChecklistItemText = styled.span<{ complete: boolean }>`\n color: ${props => (props.complete ? '#5e6c84' : `${props.theme.colors.text.primary}`)};\n ${props => props.complete && 'text-decoration: line-through;'}\n line-height: 20px;\n font-size: 16px;\n\n min-height: 20px;\n margin-bottom: 0;\n align-self: center;\n flex: 1;\n`;\n\nconst ChecklistControls = styled.div`\n display: inline-flex;\n flex-direction: row;\n float: right;\n`;\n\nconst ControlButton = styled.div`\n opacity: 0;\n margin-left: 4px;\n padding: 4px 6px;\n border-radius: 6px;\n background-color: ${props => mixin.rgba(props.theme.colors.bg.primary, 0.8)};\n display: flex;\n width: 32px;\n height: 32px;\n align-items: center;\n justify-content: center;\n &:hover {\n background-color: ${props => mixin.rgba(props.theme.colors.primary, 1)};\n }\n`;\n\nconst ChecklistNameEditorWrapper = styled.div`\n display: block;\n float: left;\n padding-top: 6px;\n padding-bottom: 8px;\n z-index: 50;\n width: 100%;\n`;\nexport const ChecklistNameEditor = styled(TextareaAutosize)`\n overflow: hidden;\n overflow-wrap: break-word;\n resize: none;\n height: 54px;\n width: 100%;\n\n background: none;\n border: none;\n box-shadow: none;\n max-height: 162px;\n min-height: 54px;\n padding: 8px 12px;\n font-size: 16px;\n line-height: 20px;\n border: 1px solid ${props => props.theme.colors.primary};\n border-radius: 3px;\n color: ${props => props.theme.colors.text.primary};\n\n border-color: ${props => props.theme.colors.border};\n background-color: ${props => mixin.rgba(props.theme.colors.bg.primary, 0.4)};\n &:focus {\n border-color: ${props => props.theme.colors.primary};\n }\n`;\n\nconst AssignUserButton = styled(AccountPlus)`\n fill: ${props => props.theme.colors.text.primary};\n`;\n\nconst ClockButton = styled(Clock)`\n fill: ${props => props.theme.colors.text.primary};\n`;\n\nconst TrashButton = styled(Trash)`\n fill: ${props => props.theme.colors.text.primary};\n`;\n\nconst ChecklistItemWrapper = styled.div<{ ref: any }>`\n user-select: none;\n clear: both;\n padding-left: 40px;\n position: relative;\n border-radius: 6px;\n\n & ${ControlButton}:last-child {\n margin-right: 4px;\n }\n\n &:hover {\n background-color: ${props => mixin.rgba(props.theme.colors.bg.primary, 0.4)};\n }\n &:hover ${ControlButton} {\n opacity: 1;\n }\n`;\n\nconst EditControls = styled.div`\n clear: both;\n display: flex;\n padding-bottom: 9px;\n flex-direction: row;\n`;\n\nconst SaveButton = styled(Button)`\n margin-right: 4px;\n padding: 6px 12px;\n`;\nconst CancelButton = styled.div`\n cursor: pointer;\n margin: 5px;\n & svg {\n fill: ${props => props.theme.colors.text.primary};\n }\n &:hover svg {\n fill: ${props => props.theme.colors.text.secondary};\n }\n`;\n\nconst Spacer = styled.div`\n flex: 1;\n`;\n\nconst EditableDeleteButton = styled.button`\n cursor: pointer;\n display: flex;\n margin: 0 2px;\n padding: 6px 8px;\n border-radius: 3px;\n\n &:hover {\n background: ${props => mixin.rgba(props.theme.colors.primary, 0.8)};\n }\n`;\n\nconst NewItemButton = styled(Button)`\n padding: 6px 8px;\n`;\n\nconst ChecklistNewItem = styled.div`\n margin: 8px 0;\n margin-left: 40px;\n`;\n\ntype ChecklistItemProps = {\n itemID: string;\n checklistID: string;\n complete: boolean;\n name: string;\n onChangeName: (itemID: string, currentName: string) => void;\n wrapperProps: any;\n handleProps: any;\n onToggleItem: (itemID: string, complete: boolean) => void;\n onDeleteItem: (checklistIDID: string, itemID: string) => void;\n};\n\nexport const ChecklistItem = React.forwardRef(\n (\n {\n itemID,\n checklistID,\n complete,\n name,\n wrapperProps,\n handleProps,\n onChangeName,\n onToggleItem,\n onDeleteItem,\n }: ChecklistItemProps,\n $item,\n ) => {\n const $editor = useRef(null);\n const [editting, setEditting] = useState(false);\n const [currentName, setCurrentName] = useState(name);\n useEffect(() => {\n if (editting && $editor && $editor.current) {\n $editor.current.focus();\n $editor.current.select();\n }\n }, [editting]);\n // useOnOutsideClick($item, true, () => setEditting(false), null);\n return (\n \n {\n e.stopPropagation();\n onToggleItem(itemID, !complete);\n }}\n >\n {complete ? (\n \n ) : (\n \n )}\n \n {editting ? (\n <>\n \n {\n if (e.key === 'Enter') {\n onChangeName(itemID, currentName);\n setEditting(false);\n }\n }}\n onChange={e => {\n setCurrentName(e.currentTarget.value);\n }}\n value={currentName}\n />\n \n \n {\n onChangeName(itemID, currentName);\n setEditting(false);\n }}\n variant=\"relief\"\n >\n Save\n \n {\n e.stopPropagation();\n setEditting(false);\n }}\n >\n \n \n \n {\n e.stopPropagation();\n setEditting(false);\n onDeleteItem(checklistID, itemID);\n }}\n >\n \n \n \n \n ) : (\n {\n setEditting(true);\n }}\n >\n \n \n {name}\n \n \n \n \n \n \n \n {\n e.stopPropagation();\n onDeleteItem(checklistID, itemID);\n }}\n >\n \n \n \n \n \n \n )}\n \n );\n },\n);\n\ntype AddNewItemProps = {\n onAddItem: (name: string) => void;\n};\n\nconst AddNewItem: React.FC = ({ onAddItem }) => {\n const $editor = useRef(null);\n const $wrapper = useRef(null);\n const [currentName, setCurrentName] = useState('');\n const [editting, setEditting] = useState(false);\n useEffect(() => {\n if (editting && $editor && $editor.current) {\n $editor.current.focus();\n $editor.current.select();\n }\n }, [editting]);\n useOnOutsideClick($wrapper, true, () => setEditting(false), null);\n return (\n \n {editting ? (\n <>\n \n {\n if (e.key === 'Enter') {\n e.preventDefault();\n onAddItem(currentName);\n setCurrentName('');\n }\n }}\n onChange={e => {\n setCurrentName(e.currentTarget.value);\n }}\n value={currentName}\n />\n \n \n {\n onAddItem(currentName);\n setCurrentName('');\n if (editting && $editor && $editor.current) {\n $editor.current.focus();\n $editor.current.select();\n }\n }}\n variant=\"relief\"\n >\n Save\n \n {\n e.stopPropagation();\n setEditting(false);\n }}\n >\n \n \n \n \n ) : (\n setEditting(true)}>Add an item\n )}\n \n );\n};\n\ntype ChecklistTitleEditorProps = {\n name: string;\n onChangeName: (item: string) => void;\n onCancel: () => void;\n};\n\nconst ChecklistTitleEditor = React.forwardRef(\n ({ name, onChangeName, onCancel }: ChecklistTitleEditorProps, $name: any) => {\n const [currentName, setCurrentName] = useState(name);\n return (\n <>\n {\n setCurrentName(e.currentTarget.value);\n }}\n onKeyDown={e => {\n if (e.key === 'Enter') {\n onChangeName(currentName);\n }\n }}\n />\n \n {\n onChangeName(currentName);\n }}\n variant=\"relief\"\n >\n Save\n \n {\n e.stopPropagation();\n onCancel();\n }}\n >\n \n \n \n \n );\n },\n);\ntype ChecklistProps = {\n checklistID: string;\n onDeleteChecklist: ($target: React.RefObject, checklistID: string) => void;\n name: string;\n children: React.ReactNode;\n onChangeName: (item: string) => void;\n onToggleItem: (taskID: string, complete: boolean) => void;\n onChangeItemName: (itemID: string, currentName: string) => void;\n wrapperProps: any;\n handleProps: any;\n onDeleteItem: (checklistID: string, itemID: string) => void;\n onAddItem: (itemName: string) => void;\n items: Array;\n};\n\nconst Checklist = React.forwardRef(\n (\n {\n checklistID,\n children,\n onDeleteChecklist,\n name,\n items,\n wrapperProps,\n handleProps,\n onToggleItem,\n onAddItem,\n onChangeItemName,\n onChangeName,\n onDeleteItem,\n }: ChecklistProps,\n $container,\n ) => {\n const $name = useRef(null);\n const complete = items.reduce((prev, item) => prev + (item.complete ? 1 : 0), 0);\n const percent = items.length === 0 ? 0 : Math.floor((complete / items.length) * 100);\n const [editting, setEditting] = useState(false);\n // useOnOutsideClick($name, true, () => setEditting(false), null);\n useEffect(() => {\n if (editting && $name && $name.current) {\n $name.current.focus();\n $name.current.select();\n }\n }, [editting]);\n return (\n \n \n \n {editting ? (\n {\n onChangeName(currentName);\n setEditting(false);\n }}\n onCancel={() => {\n setEditting(false);\n }}\n />\n ) : (\n \n setEditting(true)}>{name}\n \n {\n onDeleteChecklist($target, checklistID);\n }}\n color=\"danger\"\n variant=\"outline\"\n >\n Delete\n \n \n \n )}\n \n \n {`${percent}%`}\n \n \n \n \n {children}\n \n \n );\n },\n);\n/*\n \n {items\n .slice()\n .sort((a, b) => a.position - b.position)\n .map((item, idx) => (\n \n ))}\n\n \n */\nexport default Checklist;\n","import { DraggableLocation } from 'react-beautiful-dnd';\n\nexport const moveItemWithinArray = (arr: Array, item: DraggableElement, newIndex: number) => {\n const arrClone = [...arr];\n const oldIndex = arrClone.findIndex(i => i.id === item.id);\n arrClone.splice(newIndex, 0, arrClone.splice(oldIndex, 1)[0]);\n return arrClone;\n};\n\nexport const insertItemIntoArray = (arr: Array, item: DraggableElement, index: number) => {\n const arrClone = [...arr];\n arrClone.splice(index, 0, item);\n return arrClone;\n};\n\nexport const updateArrayItemById = (arr: Array, itemId: string, fields: any) => {\n const arrClone = [...arr];\n const item = arrClone.find(({ id }) => id === itemId);\n if (item) {\n const itemIndex = arrClone.indexOf(item);\n arrClone.splice(itemIndex, 1, { ...item, ...fields });\n }\n return arrClone;\n};\n\nexport const getNewDraggablePosition = (afterDropDraggables: Array, draggableIndex: number) => {\n const prevDraggable = afterDropDraggables[draggableIndex - 1];\n const nextDraggable = afterDropDraggables[draggableIndex + 1];\n if (!prevDraggable && !nextDraggable) {\n return 65535;\n }\n if (!prevDraggable) {\n return nextDraggable.position / 2.0;\n }\n if (!nextDraggable) {\n return prevDraggable.position * 2.0;\n }\n const newPos = (prevDraggable.position + nextDraggable.position) / 2.0;\n return newPos;\n};\n\nexport const getSortedDraggables = (draggables: Array) => {\n return draggables.sort((a: any, b: any) => a.position - b.position);\n};\n\nexport const isPositionChanged = (source: DraggableLocation, destination: DraggableLocation) => {\n if (!destination) return false;\n const isSameList = destination.droppableId === source.droppableId;\n const isSamePosition = destination.index === source.index;\n return !isSameList || !isSamePosition;\n};\n\nexport const getAfterDropDraggableList = (\n beforeDropDraggables: Array,\n droppedDraggable: DraggableElement,\n isList: boolean,\n isSameList: boolean,\n destination: DraggableLocation,\n) => {\n if (isList) {\n return moveItemWithinArray(beforeDropDraggables, droppedDraggable, destination.index);\n }\n return isSameList\n ? moveItemWithinArray(beforeDropDraggables, droppedDraggable, destination.index)\n : insertItemIntoArray(beforeDropDraggables, droppedDraggable, destination.index);\n};\n","import {\n getSortedDraggables,\n isPositionChanged,\n getNewDraggablePosition,\n getAfterDropDraggableList,\n} from 'shared/utils/draggables';\nimport { DropResult } from 'react-beautiful-dnd';\n\ntype OnChecklistDropFn = (checklist: TaskChecklist) => void;\ntype OnChecklistItemDropFn = (prevChecklistID: string, checklistID: string, checklistItem: TaskChecklistItem) => void;\n\nconst onDragEnd = (\n { draggableId, source, destination, type }: DropResult,\n task: Task,\n onChecklistDrop: OnChecklistDropFn,\n onChecklistItemDrop: OnChecklistItemDropFn,\n) => {\n if (typeof destination === 'undefined') return;\n if (!isPositionChanged(source, destination)) return;\n\n const isChecklist = type === 'checklist';\n const isSameChecklist = destination.droppableId === source.droppableId;\n let droppedDraggable: DraggableElement | null = null;\n let beforeDropDraggables: Array | null = null;\n\n if (!task.checklists) return;\n if (isChecklist) {\n const droppedGroup = task.checklists.find(taskGroup => taskGroup.id === draggableId);\n if (droppedGroup) {\n droppedDraggable = {\n id: draggableId,\n position: droppedGroup.position,\n };\n beforeDropDraggables = getSortedDraggables(\n task.checklists.map(checklist => {\n return { id: checklist.id, position: checklist.position };\n }),\n );\n if (droppedDraggable === null || beforeDropDraggables === null) {\n throw new Error('before drop draggables is null');\n }\n const afterDropDraggables = getAfterDropDraggableList(\n beforeDropDraggables,\n droppedDraggable,\n isChecklist,\n isSameChecklist,\n destination,\n );\n const newPosition = getNewDraggablePosition(afterDropDraggables, destination.index);\n onChecklistDrop({ ...droppedGroup, position: newPosition });\n } else {\n throw new Error('task group can not be found');\n }\n } else {\n const targetChecklist = task.checklists.findIndex(\n checklist => checklist.items.findIndex(item => item.id === draggableId) !== -1,\n );\n const droppedChecklistItem = task.checklists[targetChecklist].items.find(item => item.id === draggableId);\n\n if (droppedChecklistItem) {\n droppedDraggable = {\n id: draggableId,\n position: droppedChecklistItem.position,\n };\n beforeDropDraggables = getSortedDraggables(\n task.checklists[targetChecklist].items.map(item => {\n return { id: item.id, position: item.position };\n }),\n );\n if (droppedDraggable === null || beforeDropDraggables === null) {\n throw new Error('before drop draggables is null');\n }\n const afterDropDraggables = getAfterDropDraggableList(\n beforeDropDraggables,\n droppedDraggable,\n isChecklist,\n isSameChecklist,\n destination,\n );\n const newPosition = getNewDraggablePosition(afterDropDraggables, destination.index);\n const newItem = {\n ...droppedChecklistItem,\n position: newPosition,\n };\n onChecklistItemDrop(droppedChecklistItem.taskChecklistID, destination.droppableId, newItem);\n }\n }\n};\n\nexport default onDragEnd;\n","import { visit } from 'unist-util-visit';\nimport emoji from 'node-emoji';\nimport { emoticon } from 'emoticon';\nimport { Emoji } from 'emoji-mart';\nimport React from 'react';\n\nimport ReactDOMServer from 'react-dom/server';\n\nconst RE_EMOJI = /:\\+1:|:-1:|:[\\w-]+:/g;\nconst RE_SHORT = /[$@|*'\",;.=:\\-)([\\]\\\\/<>038BOopPsSdDxXzZ]{2,5}/g;\n\nconst DEFAULT_SETTINGS = {\n padSpaceAfter: false,\n emoticon: false,\n};\n\nfunction plugin(options) {\n const settings = { ...DEFAULT_SETTINGS, ...options };\n const pad = !!settings.padSpaceAfter;\n const emoticonEnable = !!settings.emoticon;\n\n function getEmojiByShortCode(match) {\n // find emoji by shortcode - full match or with-out last char as it could be from text e.g. :-),\n const iconFull = emoticon.find((e) => e.emoticons.includes(match)); // full match\n const iconPart = emoticon.find((e) => e.emoticons.includes(match.slice(0, -1))); // second search pattern\n const trimmedChar = iconPart ? match.slice(-1) : '';\n const addPad = pad ? ' ' : '';\n const icon = iconFull ? iconFull.emoji + addPad : iconPart && iconPart.emoji + addPad + trimmedChar;\n return icon || match;\n }\n\n function getEmoji(match) {\n console.log(match);\n const got = emoji.get(match);\n if (pad && got !== match) {\n return `${got} `;\n }\n\n console.log(got);\n return ReactDOMServer.renderToStaticMarkup();\n }\n\n function transformer(tree) {\n visit(tree, 'paragraph', function (node) {\n console.log(tree);\n // node.value = node.value.replace(RE_EMOJI, getEmoji);\n // jnode.type = 'html';\n // jnode.tagName = 'div';\n // jnode.value = '';\n for (let nodeIdx = 0; nodeIdx < node.children.length; nodeIdx++) {\n if (node.children[nodeIdx].type === 'text') {\n node.children[nodeIdx].type = 'html';\n node.children[nodeIdx].tagName = 'div';\n node.children[nodeIdx].value = node.children[nodeIdx].value.replace(RE_EMOJI, getEmoji);\n }\n }\n\n if (emoticonEnable) {\n // node.value = node.value.replace(RE_SHORT, getEmojiByShortCode);\n }\n console.log(node);\n });\n }\n\n return transformer;\n}\n\nexport default plugin;\n","import React from 'react';\nimport styled from 'styled-components';\nimport { TaskActivityData, ActivityType } from 'shared/generated/graphql';\nimport dayjs from 'dayjs';\n\ntype ActivityMessageProps = {\n type: ActivityType;\n data: Array;\n};\n\nfunction getVariable(data: Array, name: string) {\n const target = data.find(d => d.name === name);\n return target ? target.value : null;\n}\n\nfunction renderDate(timestamp: string | null) {\n if (timestamp) {\n return dayjs(timestamp).format('MMM D [at] h:mm A');\n }\n return null;\n}\n\nconst ActivityMessage: React.FC = ({ type, data }) => {\n let message = '';\n switch (type) {\n case ActivityType.TaskAdded:\n message = `added this task to ${getVariable(data, 'TaskGroup')}`;\n break;\n case ActivityType.TaskMoved:\n message = `moved this task from ${getVariable(data, 'PrevTaskGroup')} to ${getVariable(data, 'CurTaskGroup')}`;\n break;\n case ActivityType.TaskDueDateAdded:\n message = `set this task to be due ${renderDate(getVariable(data, 'DueDate'))}`;\n break;\n case ActivityType.TaskDueDateRemoved:\n message = `removed the due date from this task`;\n break;\n case ActivityType.TaskDueDateChanged:\n message = `changed the due date of this task to ${renderDate(getVariable(data, 'CurDueDate'))}`;\n break;\n case ActivityType.TaskMarkedComplete:\n message = `marked this task complete`;\n break;\n case ActivityType.TaskMarkedIncomplete:\n message = `marked this task incomplete`;\n break;\n default:\n message = '';\n }\n return <>{message};\n};\n\nexport default ActivityMessage;\n","import React, { useState, useRef } from 'react';\nimport { useCurrentUser } from 'App/context';\nimport {\n Plus,\n User,\n Trash,\n Paperclip,\n Clone,\n Share,\n Tags,\n Checkmark,\n CheckSquareOutline,\n At,\n Smile,\n} from 'shared/icons';\nimport { toArray } from 'react-emoji-render';\nimport DOMPurify from 'dompurify';\nimport TaskAssignee from 'shared/components/TaskAssignee';\nimport useOnOutsideClick from 'shared/hooks/onOutsideClick';\nimport { usePopup } from 'shared/components/PopupMenu';\nimport CommentCreator from 'shared/components/TaskDetails/CommentCreator';\nimport { AngleDown } from 'shared/icons/AngleDown';\nimport Editor from 'rich-markdown-editor';\nimport dark from 'shared/utils/editorTheme';\nimport styled from 'styled-components';\nimport ReactMarkdown from 'react-markdown';\nimport { Picker, Emoji } from 'emoji-mart';\nimport 'emoji-mart/css/emoji-mart.css';\nimport { DragDropContext, Droppable, Draggable } from 'react-beautiful-dnd';\nimport dayjs from 'dayjs';\nimport Task from 'shared/icons/Task';\nimport {\n ActivityItemHeader,\n ActivityItemTimestamp,\n ActivityItem,\n ActivityItemCommentAction,\n ActivityItemCommentActions,\n TaskDetailLabel,\n CommentContainer,\n ActivityItemCommentContainer,\n MetaDetailContent,\n TaskDetailsAddLabelIcon,\n ActionButton,\n AssignUserIcon,\n AssignUserLabel,\n AssignUsersButton,\n AssignedUsersSection,\n ViewRawButton,\n DueDateTitle,\n Container,\n LeftSidebar,\n ContentContainer,\n LeftSidebarContent,\n LeftSidebarSection,\n SidebarTitle,\n SidebarButton,\n SidebarButtonText,\n MarkCompleteButton,\n HeaderContainer,\n HeaderLeft,\n HeaderInnerContainer,\n TaskDetailsTitleWrapper,\n TaskDetailsTitle,\n ExtraActionsSection,\n HeaderRight,\n HeaderActionIcon,\n EditorContainer,\n InnerContentContainer,\n DescriptionContainer,\n Labels,\n ChecklistSection,\n MemberList,\n TaskMember,\n TabBarSection,\n TabBarItem,\n ActivitySection,\n TaskDetailsEditor,\n ActivityItemHeaderUser,\n ActivityItemHeaderTitle,\n ActivityItemHeaderTitleName,\n ActivityItemComment,\n} from './Styles';\nimport Checklist, { ChecklistItem, ChecklistItems } from '../Checklist';\nimport onDragEnd from './onDragEnd';\nimport plugin from './remark';\nimport ActivityMessage from './ActivityMessage';\n\nconst parseEmojis = (value: string) => {\n const emojisArray = toArray(value);\n\n // toArray outputs React elements for emojis and strings for other\n const newValue = emojisArray.reduce((previous: any, current: any) => {\n if (typeof current === 'string') {\n return previous + current;\n }\n return previous + current.props.children;\n }, '');\n\n return newValue;\n};\n\ntype StreamCommentProps = {\n comment?: TaskComment | null;\n onUpdateComment: (message: string) => void;\n onExtraActions: (commentID: string, $target: React.RefObject) => void;\n onCancelCommentEdit: () => void;\n editable: boolean;\n};\nconst StreamComment: React.FC = ({\n comment,\n onExtraActions,\n editable,\n onUpdateComment,\n onCancelCommentEdit,\n}) => {\n const $actions = useRef(null);\n if (comment) {\n return (\n \n \n \n \n {comment.createdBy.fullName}\n \n {dayjs(comment.createdAt).format('MMM D [at] h:mm A')}\n {comment.updatedAt && ' (edited)'}\n \n \n \n \n {editable ? (\n \n ) : (\n \n {DOMPurify.sanitize(comment.message, { FORBID_TAGS: ['style', 'img'] })}\n \n )}\n \n \n {\n onExtraActions(comment.id, $actions);\n }}\n >\n \n \n \n \n \n \n );\n }\n return null;\n};\n\ntype StreamActivityProps = {\n activity?: TaskActivity | null;\n};\nconst StreamActivity: React.FC = ({ activity }) => {\n if (activity) {\n return (\n \n \n \n \n {activity.causedBy.fullName}\n \n \n \n {dayjs(activity.createdAt).format('MMM D [at] h:mm A')}\n \n \n \n );\n }\n return null;\n};\n\nconst ChecklistContainer = styled.div``;\n\ntype TaskLabelProps = {\n label: TaskLabel;\n onClick: ($target: React.RefObject) => void;\n};\n\nconst TaskLabelItem: React.FC = ({ label, onClick }) => {\n const $label = useRef(null);\n return (\n {\n onClick($label);\n }}\n ref={$label}\n color={label.projectLabel.labelColor.colorHex}\n >\n {label.projectLabel.name}\n \n );\n};\n\ntype DetailsEditorProps = {\n description: string;\n onTaskDescriptionChange: (newDescription: string) => void;\n onCancel: () => void;\n};\n\ntype TaskDetailsProps = {\n task: Task;\n me?: TaskUser | null;\n onTaskNameChange: (task: Task, newName: string) => void;\n onTaskDescriptionChange: (task: Task, newDescription: string) => void;\n onDeleteTask: (task: Task) => void;\n onAddItem: (checklistID: string, name: string, position: number) => void;\n onDeleteItem: (checklistID: string, itemID: string) => void;\n onChangeItemName: (itemID: string, itemName: string) => void;\n onToggleTaskComplete: (task: Task) => void;\n onToggleChecklistItem: (itemID: string, complete: boolean) => void;\n onOpenAddMemberPopup: (task: Task, $targetRef: React.RefObject) => void;\n onOpenAddLabelPopup: (task: Task, $targetRef: React.RefObject) => void;\n onOpenDueDatePopop: (task: Task, $targetRef: React.RefObject) => void;\n onOpenAddChecklistPopup: (task: Task, $targetRef: React.RefObject) => void;\n onCreateComment: (task: Task, message: string) => void;\n onCommentShowActions: (commentID: string, $targetRef: React.RefObject) => void;\n onMemberProfile: ($targetRef: React.RefObject, memberID: string) => void;\n onCancelCommentEdit: () => void;\n onUpdateComment: (commentID: string, message: string) => void;\n onChangeChecklistName: (checklistID: string, name: string) => void;\n editableComment?: string | null;\n onDeleteChecklist: ($target: React.RefObject, checklistID: string) => void;\n onCloseModal: () => void;\n onChecklistDrop: (checklist: TaskChecklist) => void;\n onChecklistItemDrop: (prevChecklistID: string, checklistID: string, checklistItem: TaskChecklistItem) => void;\n};\n\nconst TaskDetails: React.FC = ({\n me,\n onCancelCommentEdit,\n task,\n editableComment = null,\n onDeleteChecklist,\n onTaskNameChange,\n onCommentShowActions,\n onOpenAddChecklistPopup,\n onChangeChecklistName,\n onCreateComment,\n onChecklistDrop,\n onChecklistItemDrop,\n onToggleTaskComplete,\n onTaskDescriptionChange,\n onChangeItemName,\n onDeleteItem,\n onDeleteTask,\n onCloseModal,\n onUpdateComment,\n onOpenAddMemberPopup,\n onOpenAddLabelPopup,\n onOpenDueDatePopop,\n onAddItem,\n onToggleChecklistItem,\n onMemberProfile,\n}) => {\n const { user } = useCurrentUser();\n const [taskName, setTaskName] = useState(task.name);\n const [editTaskDescription, setEditTaskDescription] = useState(() => {\n if (task.description) {\n if (task.description.trim() === '' || task.description.trim() === '\\\\') {\n return true;\n }\n return false;\n }\n return true;\n });\n const [saveTimeout, setSaveTimeout] = useState(null);\n const [showRaw, setShowRaw] = useState(false);\n const taskDescriptionRef = useRef(task.description ?? '');\n const $noMemberBtn = useRef(null);\n const $addMemberBtn = useRef(null);\n const $dueDateBtn = useRef(null);\n const $detailsTitle = useRef(null);\n\n const activityStream: Array<{ id: string; data: { time: string; type: 'comment' | 'activity' } }> = [];\n\n if (task.activity) {\n task.activity.forEach((activity) => {\n activityStream.push({\n id: activity.id,\n data: {\n time: activity.createdAt,\n type: 'activity',\n },\n });\n });\n }\n\n if (task.comments) {\n task.comments.forEach((comment) => {\n activityStream.push({\n id: comment.id,\n data: {\n time: comment.createdAt,\n type: 'comment',\n },\n });\n });\n }\n activityStream.sort((a, b) => (dayjs(a.data.time).isAfter(dayjs(b.data.time)) ? 1 : -1));\n\n const saveDescription = () => {\n onTaskDescriptionChange(task, taskDescriptionRef.current);\n };\n return (\n \n \n \n \n TASK GROUP\n \n {task.taskGroup.name}\n \n DUE DATE\n {\n if (user) {\n onOpenDueDatePopop(task, $dueDateBtn);\n }\n }}\n >\n {task.dueDate ? (\n \n {dayjs(task.dueDate).format(task.hasTime ? 'MMM D [at] h:mm A' : 'MMMM D')}\n \n ) : (\n No due date\n )}\n \n \n \n MEMBERS\n {task.assigned && task.assigned.length !== 0 ? (\n \n {task.assigned.map((m) => (\n {\n if (user) {\n onMemberProfile($target, m.id);\n }\n }}\n />\n ))}\n {\n if (user) {\n onOpenAddMemberPopup(task, $addMemberBtn);\n }\n }}\n >\n \n \n \n ) : (\n {\n if (user) {\n onOpenAddMemberPopup(task, $noMemberBtn);\n }\n }}\n >\n \n \n \n No members\n \n )}\n \n {user && (\n \n ACTIONS\n {\n onOpenAddLabelPopup(task, $target);\n }}\n icon={}\n >\n Labels\n \n {\n onOpenAddChecklistPopup(task, $target);\n }}\n icon={}\n >\n Checklist\n \n Cover\n \n )}\n \n \n \n \n \n \n {\n if (user) {\n onToggleTaskComplete(task);\n }\n }}\n >\n \n {task.complete ? 'Completed' : 'Mark complete'}\n \n \n {user && (\n \n \n \n \n \n \n \n \n \n \n onDeleteTask(task)}>\n \n \n \n )}\n \n \n {\n if (e.keyCode === 13) {\n e.preventDefault();\n if ($detailsTitle && $detailsTitle.current) {\n $detailsTitle.current.blur();\n }\n }\n }}\n onChange={(e) => {\n setTaskName(e.currentTarget.value);\n }}\n onBlur={() => {\n if (taskName !== task.name) {\n onTaskNameChange(task, taskName);\n }\n }}\n />\n \n \n {task.labels.length !== 0 && (\n \n {task.labels.map((label) => {\n return (\n {\n onOpenAddLabelPopup(task, $target);\n }}\n />\n );\n })}\n \n \n \n \n )}\n \n \n \n \n {showRaw ? (\n \n ) : (\n {\n if (!editTaskDescription) {\n setEditTaskDescription(true);\n }\n }}\n >\n {\n setSaveTimeout(() => {\n clearTimeout(saveTimeout);\n return setTimeout(saveDescription, 2000);\n });\n const text = value();\n taskDescriptionRef.current = text;\n }}\n />\n \n )}\n\n setShowRaw(!showRaw)}>{showRaw ? 'Show editor' : 'Show raw'}\n \n \n onDragEnd(result, task, onChecklistDrop, onChecklistItemDrop)}>\n \n {(dropProvided) => (\n \n {task.checklists &&\n task.checklists\n .slice()\n .sort((a, b) => a.position - b.position)\n .map((checklist, idx) => (\n \n {(provided) => (\n onChangeChecklistName(checklist.id, newName)}\n onToggleItem={onToggleChecklistItem}\n onDeleteItem={onDeleteItem}\n onAddItem={(n) => {\n if (task.checklists) {\n let position = 65535;\n const [lastItem] = checklist.items\n .sort((a, b) => a.position - b.position)\n .slice(-1);\n if (lastItem) {\n position = lastItem.position * 2 + 1;\n }\n onAddItem(checklist.id, n, position);\n }\n }}\n onChangeItemName={onChangeItemName}\n >\n \n {(checklistDrop) => (\n <>\n \n {checklist.items\n .slice()\n .sort((a, b) => a.position - b.position)\n .map((item, itemIdx) => (\n \n {(itemDrop) => (\n {\n onToggleChecklistItem(item.id, complete);\n }}\n />\n )}\n \n ))}\n \n {checklistDrop.placeholder}\n \n )}\n \n \n )}\n \n ))}\n {dropProvided.placeholder}\n \n )}\n \n \n \n \n Activity\n \n \n {activityStream.map((stream) =>\n stream.data.type === 'comment' ? (\n onUpdateComment(stream.id, message)}\n editable={stream.id === editableComment}\n comment={task.comments && task.comments.find((comment) => comment.id === stream.id)}\n />\n ) : (\n activity.id === stream.id)}\n />\n ),\n )}\n \n \n {me && (\n \n onCreateComment(task, message)}\n onMemberProfile={onMemberProfile}\n />\n \n )}\n \n \n );\n};\n\nexport default TaskDetails;\n","import React, { useState, useRef } from 'react';\nimport {\n Plus,\n User,\n Trash,\n Paperclip,\n Clone,\n Share,\n Tags,\n Checkmark,\n CheckSquareOutline,\n At,\n Smile,\n} from 'shared/icons';\nimport { toArray } from 'react-emoji-render';\nimport { useCurrentUser } from 'App/context';\nimport DOMPurify from 'dompurify';\nimport TaskAssignee from 'shared/components/TaskAssignee';\nimport useOnOutsideClick from 'shared/hooks/onOutsideClick';\nimport { usePopup } from 'shared/components/PopupMenu';\nimport CommentCreator from 'shared/components/TaskDetails/CommentCreator';\nimport { AngleDown } from 'shared/icons/AngleDown';\nimport Editor from 'rich-markdown-editor';\nimport dark from 'shared/utils/editorTheme';\nimport styled from 'styled-components';\nimport ReactMarkdown from 'react-markdown';\nimport { Picker, Emoji } from 'emoji-mart';\nimport 'emoji-mart/css/emoji-mart.css';\nimport { DragDropContext, Droppable, Draggable } from 'react-beautiful-dnd';\nimport dayjs from 'dayjs';\nimport Task from 'shared/icons/Task';\nimport {\n ActivityItemHeader,\n ActivityItemTimestamp,\n ActivityItem,\n ActivityItemCommentAction,\n ActivityItemCommentActions,\n TaskDetailLabel,\n CommentContainer,\n ActivityItemCommentContainer,\n MetaDetailContent,\n TaskDetailsAddLabelIcon,\n ActionButton,\n AssignUserIcon,\n AssignUserLabel,\n AssignUsersButton,\n AssignedUsersSection,\n ViewRawButton,\n DueDateTitle,\n Container,\n LeftSidebar,\n SidebarSkeleton,\n ContentContainer,\n LeftSidebarContent,\n LeftSidebarSection,\n SidebarTitle,\n SidebarButton,\n SidebarButtonText,\n MarkCompleteButton,\n HeaderContainer,\n HeaderLeft,\n HeaderInnerContainer,\n TaskDetailsTitleWrapper,\n TaskDetailsTitle,\n ExtraActionsSection,\n HeaderRight,\n HeaderActionIcon,\n EditorContainer,\n InnerContentContainer,\n DescriptionContainer,\n Labels,\n ChecklistSection,\n MemberList,\n TaskMember,\n TabBarSection,\n TabBarItem,\n ActivitySection,\n TaskDetailsEditor,\n ActivityItemHeaderUser,\n ActivityItemHeaderTitle,\n ActivityItemHeaderTitleName,\n ActivityItemComment,\n} from './Styles';\n\nconst TaskDetailsLoading: React.FC = () => {\n const { user } = useCurrentUser();\n return (\n \n \n \n \n TASK GROUP\n \n \n \n DUE DATE\n \n \n \n \n \n MEMBERS\n \n \n \n \n {user && (\n \n ACTIONS\n }>\n Labels\n \n }>\n Checklist\n \n Cover\n \n )}\n \n \n \n \n \n \n \n \n Mark complete\n \n \n {user && (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n )}\n \n \n \n \n \n \n \n \n Activity\n \n \n \n {user && (\n \n null} onMemberProfile={() => null} />\n \n )}\n \n \n );\n};\n\nexport default TaskDetailsLoading;\n","import React, { useRef } from 'react';\nimport styled from 'styled-components';\nimport TaskAssignee from 'shared/components/TaskAssignee';\nimport { Checkmark } from 'shared/icons';\nimport NOOP from 'shared/utils/noop';\n\nconst CardCheckmark = styled(Checkmark)`\n position: absolute;\n top: 0;\n right: 0;\n margin: 11px;\n`;\nconst CardMember = styled.div<{ bgColor: string }>`\n height: 28px;\n width: 28px;\n float: right;\n margin: 0 0 4px 4px;\n\n background-color: ${props => props.bgColor};\n color: #fff;\n border-radius: 25em;\n cursor: pointer;\n display: block;\n overflow: visible;\n position: relative;\n text-decoration: none;\n z-index: 0;\n`;\n\nconst CardMemberInitials = styled.div`\n height: 28px;\n width: 28px;\n display: flex;\n align-items: center;\n justify-content: center;\n font-size: 14px;\n font-weight: 400;\n`;\n\ntype MemberProps = {\n onCardMemberClick?: OnCardMemberClick;\n taskID?: string;\n member: TaskUser;\n showName?: boolean;\n className?: string;\n showCheckmark?: boolean;\n size?: number;\n};\n\nconst CardMemberWrapper = styled.div<{ ref: any }>`\n display: flex;\n align-items: center;\n`;\n\nconst CardMemberName = styled.span`\n font-size: 16px;\n padding-left: 8px;\n`;\n\nconst Member: React.FC = ({\n onCardMemberClick,\n taskID,\n member,\n showName,\n showCheckmark = false,\n className,\n size = 28,\n}) => {\n const $targetRef = useRef();\n return (\n {\n if (onCardMemberClick) {\n e.stopPropagation();\n onCardMemberClick($targetRef, taskID ?? '', member.id);\n }\n }}\n >\n \n {showName && {member.fullName}}\n {showCheckmark && }\n \n );\n};\n\nexport default Member;\n","import styled from 'styled-components';\nimport TextareaAutosize from 'react-autosize-textarea/lib';\nimport { mixin } from 'shared/utils/styles';\nimport Member from '../Member';\n\nexport const MemberManagerWrapper = styled.div``;\n\nexport const MemberManagerSearchWrapper = styled.div`\n width: 100%;\n display: flex;\n`;\n\nexport const MemberManagerSearch = styled(TextareaAutosize)`\n margin: 4px 0 12px;\n width: 100%;\n border: 1px solid rgba(0, 0, 0, 0.1);\n border-radius: 3px;\n line-height: 20px;\n padding: 8px 12px;\n font-size: 14px;\n font-weight: 400;\n\n background: ${props => props.theme.colors.bg.secondary};\n outline: none;\n color: ${props => props.theme.colors.text.primary};\n border-color: ${props => props.theme.colors.border};\n\n &:focus {\n box-shadow: ${props => props.theme.colors.primary} 0px 0px 0px 1px;\n background: ${props => mixin.darken(props.theme.colors.bg.secondary, 0.15)};\n }\n`;\n\nexport const BoardMembersLabel = styled.h4`\n color: #c2c6dc;\n font-size: 12px;\n font-weight: 500;\n letter-spacing: 0.04em;\n line-height: 16px;\n text-transform: uppercase;\n`;\n\nexport const BoardMembersList = styled.ul`\n margin: 0;\n padding: 0;\n list-style-type: none;\n`;\n\nexport const BoardMembersListItem = styled.li``;\n\nexport const BoardMemberListItemContent = styled(Member)`\n background-color: rgba(9, 30, 66, 0.04);\n padding-right: 28px;\n border-radius: 3px;\n display: flex;\n height: 40px;\n overflow: hidden;\n cursor: pointer;\n align-items: center;\n position: relative;\n text-overflow: ellipsis;\n text-decoration: none;\n white-space: nowrap;\n padding: 4px;\n margin-bottom: 2px;\n color: #c2c6dc;\n\n &:hover {\n background-color: ${props => props.theme.colors.primary};\n color: ${props => props.theme.colors.text.secondary};\n }\n`;\n\nexport const ProfileIcon = styled.div`\n width: 32px;\n height: 32px;\n border-radius: 9999px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: #c2c6dc;\n font-weight: 700;\n background: ${props => props.theme.colors.primary};\n cursor: pointer;\n margin-right: 6px;\n`;\n\nexport const MemberName = styled.span`\n font-size: 14px;\n`;\n\nexport const ActiveIconWrapper = styled.div`\n position: absolute;\n top: 0;\n right: 0;\n padding: 11px;\n`;\n","import React, { useState } from 'react';\nimport { Checkmark } from 'shared/icons';\nimport Member from 'shared/components/Member';\nimport {\n MemberName,\n ProfileIcon,\n MemberManagerWrapper,\n MemberManagerSearchWrapper,\n MemberManagerSearch,\n BoardMembersLabel,\n BoardMembersList,\n BoardMembersListItem,\n BoardMemberListItemContent,\n ActiveIconWrapper,\n} from './Styles';\n\ntype MemberManagerProps = {\n availableMembers: Array;\n activeMembers: Array;\n onMemberChange: (member: TaskUser, isActive: boolean) => void;\n};\nconst MemberManager: React.FC = ({\n availableMembers,\n activeMembers: initialActiveMembers,\n onMemberChange,\n}) => {\n const [activeMembers, setActiveMembers] = useState(initialActiveMembers);\n const [currentSearch, setCurrentSearch] = useState('');\n return (\n \n \n ) => {\n setCurrentSearch(e.currentTarget.value);\n }}\n />\n \n Board Members\n \n {availableMembers\n .filter(\n member => currentSearch === '' || member.fullName.toLowerCase().startsWith(currentSearch.toLowerCase()),\n )\n .map(member => {\n return (\n \n m.id === member.id) !== -1}\n onCardMemberClick={() => {\n const isActive = activeMembers.findIndex(m => m.id === member.id) !== -1;\n if (isActive) {\n setActiveMembers(activeMembers.filter(m => m.id !== member.id));\n } else {\n setActiveMembers([...activeMembers, member]);\n }\n onMemberChange(member, !isActive);\n }}\n />\n \n );\n })}\n \n \n );\n};\nexport default MemberManager;\n","import styled from 'styled-components';\nimport Button from 'shared/components/Button';\nimport { mixin } from 'shared/utils/styles';\nimport Input from 'shared/components/Input';\nimport ControlledInput from 'shared/components/ControlledInput';\nimport { Clock } from 'shared/icons';\n\nexport const Wrapper = styled.div`\ndisplay: flex\n flex-direction: column;\n & .react-datepicker {\n background: #262c49;\n border: none;\n }\n & .react-datepicker__triangle {\n display: none;\n }\n & .react-datepicker-popper {\n z-index: 10000;\n margin-top: 0;\n }\n & .react-datepicker__close-icon::after {\n background: none;\n font-size: 16px;\n color: ${props => props.theme.colors.text.primary};\n }\n\n & .react-datepicker-time__header {\n color: ${props => props.theme.colors.text.primary};\n }\n & .react-datepicker__time-list-item {\n color: ${props => props.theme.colors.text.primary};\n }\n & .react-datepicker__time-container .react-datepicker__time\n .react-datepicker__time-box ul.react-datepicker__time-list\n li.react-datepicker__time-list-item:hover {\n color: ${props => props.theme.colors.text.secondary};\n background: ${props => props.theme.colors.bg.secondary};\n }\n & .react-datepicker__time-container .react-datepicker__time {\n background: ${props => props.theme.colors.bg.primary};\n }\n & .react-datepicker--time-only {\n background: ${props => props.theme.colors.bg.primary};\n border: 1px solid ${props => props.theme.colors.border};\n }\n\n & .react-datepicker * {\n box-sizing: content-box;\n }\n & .react-datepicker__day-name {\n color: #c2c6dc;\n outline: none;\n box-shadow: none;\n padding: 4px;\n font-size: 12px40px\n line-height: 40px;\n }\n & .react-datepicker__day-name:hover {\n background: #10163a;\n }\n & .react-datepicker__month {\n margin: 0;\n }\n\n & .react-datepicker__day,\n & .react-datepicker__time-name {\n color: #c2c6dc;\n outline: none;\n box-shadow: none;\n padding: 4px;\n font-size: 14px;\n }\n\n & .react-datepicker__day--outside-month {\n opacity: 0.6;\n }\n\n & .react-datepicker__day:hover {\n border-radius: 50%;\n background: #10163a;\n }\n & .react-datepicker__day--selected {\n border-radius: 50%;\n background: ${props => props.theme.colors.primary};\n color: #fff;\n }\n & .react-datepicker__day--selected:hover {\n border-radius: 50%;\n background: ${props => props.theme.colors.primary};\n color: #fff;\n }\n & .react-datepicker__header {\n background: none;\n border: none;\n }\n & .react-datepicker__header--time {\n border-bottom: 1px solid ${props => props.theme.colors.border};\n }\n\n & .react-datepicker__input-container input {\n border: 1px solid rgba(0, 0, 0, 0.2);\n border-color: ${props => props.theme.colors.alternate};\n background: #262c49;\n box-shadow: 0 0 0 0 rgba(0, 0, 0, 0.15);\npadding: 0.7rem;\n color: #c2c6dc;\n position: relative;\n border-radius: 5px;\n transition: all 0.3s ease;\n font-size: 13px;\n line-height: 20px;\n padding: 0 12px;\n &:focus {\n box-shadow: 0 3px 10px 0 rgba(0, 0, 0, 0.15);\n border: 1px solid rgba(115, 103, 240);\n background: ${props => props.theme.colors.bg.primary};\n }\n`;\n\nexport const DueDatePickerWrapper = styled.div`\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n`;\n\nexport const ConfirmAddDueDate = styled(Button)`\n margin: 0 4px 0 0;\n padding: 6px 12px;\n`;\n\nexport const RemoveDueDate = styled(Button)`\n padding: 6px 12px;\n margin: 0 0 0 4px;\n`;\n\nexport const AddDateRange = styled.div`\n opacity: 0.6;\n display: flex;\n align-items: center;\n width: 100%;\n font-size: 12px;\n line-height: 16px;\n color: ${props => mixin.rgba(props.theme.colors.primary, 0.8)};\n &:hover {\n color: ${props => mixin.rgba(props.theme.colors.primary, 1)};\n text-decoration: underline;\n }\n`;\n\nexport const DateRangeInputs = styled.div`\n display: flex;\n flex-wrap: wrap;\n justify-content: center;\n margin-left: -4px;\n & > div:first-child,\n & > div:last-child {\n flex: 1 1 92px;\n margin-bottom: 4px;\n margin-left: 4px;\n min-width: 92px;\n width: initial;\n }\n & > ${AddDateRange} {\n margin-left: 4px;\n padding-left: 4px;\n }\n & > .react-datepicker-wrapper input {\n padding-bottom: 4px;\n padding-top: 4px;\n width: 100%;\n }\n`;\n\nexport const CancelDueDate = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n height: 32px;\n width: 32px;\n cursor: pointer;\n`;\n\nexport const DueDateInput = styled(ControlledInput)`\n margin-top: 15px;\n margin-bottom: 5px;\n padding-right: 10px;\n`;\n\nexport const ActionsSeparator = styled.div`\n margin-top: 8px;\n height: 1px;\n width: 100%;\n background: #414561;\n display: flex;\n`;\nexport const ActionsWrapper = styled.div`\n margin-top: 8px;\n display: flex;\n align-items: center;\n & .react-datepicker-wrapper {\n margin-left: auto;\n width: 82px;\n }\n & .react-datepicker__input-container input {\n padding-bottom: 4px;\n padding-top: 4px;\n width: 100%;\n }\n`;\n\nexport const ActionClock = styled(Clock)`\n align-self: center;\n fill: ${props => props.theme.colors.primary};\n margin: 0 8px;\n flex: 0 0 auto;\n`;\n\nexport const ActionLabel = styled.div`\n font-size: 12px;\n line-height: 14px;\n`;\n\nexport const ActionIcon = styled.div`\n height: 36px;\n min-height: 36px;\n min-width: 36px;\n width: 36px;\n border-radius: 6px;\n background: transparent;\n cursor: pointer;\n margin-right: 8px;\n svg {\n fill: ${props => props.theme.colors.text.primary};\n transition-duration: 0.2s;\n transition-property: background, border, box-shadow, fill;\n }\n &:hover svg {\n fill: ${props => props.theme.colors.text.secondary};\n }\n\n align-items: center;\n display: inline-flex;\n justify-content: center;\n`;\n\nexport const ClearButton = styled.div`\n font-weight: 500;\n font-size: 13px;\n height: 36px;\n line-height: 36px;\n padding: 0 12px;\n margin-left: auto;\n cursor: pointer;\n align-items: center;\n border-radius: 6px;\n display: inline-flex;\n flex-shrink: 0;\n justify-content: center;\n transition-duration: 0.2s;\n transition-property: background, border, box-shadow, color, fill;\n color: ${props => props.theme.colors.text.primary};\n &:hover {\n color: ${props => props.theme.colors.text.secondary};\n }\n`;\n","import React, { useState, useEffect, forwardRef, useRef, useCallback } from 'react';\nimport dayjs from 'dayjs';\nimport styled from 'styled-components';\nimport DatePicker from 'react-datepicker';\nimport _ from 'lodash';\nimport 'react-datepicker/dist/react-datepicker.css';\nimport { getYear, getMonth } from 'date-fns';\nimport { useForm, Controller } from 'react-hook-form';\nimport NOOP from 'shared/utils/noop';\nimport { Clock, Cross } from 'shared/icons';\nimport Select from 'react-select/src/Select';\n\nimport {\n Wrapper,\n RemoveDueDate,\n DueDateInput,\n DueDatePickerWrapper,\n ConfirmAddDueDate,\n DateRangeInputs,\n AddDateRange,\n ActionIcon,\n ActionsWrapper,\n ClearButton,\n ActionsSeparator,\n ActionClock,\n ActionLabel,\n} from './Styles';\n\ntype DueDateManagerProps = {\n task: Task;\n onDueDateChange: (task: Task, newDueDate: Date, hasTime: boolean) => void;\n onRemoveDueDate: (task: Task) => void;\n onCancel: () => void;\n};\n\nconst Form = styled.form`\n padding-top: 25px;\n`;\n\nconst FormField = styled.div`\n width: 50%;\n display: inline-block;\n`;\nconst HeaderSelectLabel = styled.div`\n display: inline-block;\n position: relative;\n z-index: 9999;\n border-radius: 3px;\n cursor: pointer;\n padding: 6px 10px;\n text-decoration: underline;\n margin: 6px 0;\n font-size: 14px;\n line-height: 16px;\n margin-left: 0;\n margin-right: 0;\n padding-left: 4px;\n padding-right: 4px;\n color: #c2c6dc;\n\n &:hover {\n background: ${(props) => props.theme.colors.primary};\n color: #c2c6dc;\n }\n`;\n\nconst HeaderSelect = styled.select`\n text-decoration: underline;\n font-size: 14px;\n text-align: center;\n background: none;\n outline: none;\n border: none;\n border-radius: 3px;\n appearance: none;\n width: 100%;\n display: inline-block;\n\n & option {\n color: #c2c6dc;\n background: ${(props) => props.theme.colors.bg.primary};\n }\n\n & option:hover {\n background: ${(props) => props.theme.colors.bg.secondary};\n border: 1px solid ${(props) => props.theme.colors.primary};\n outline: none !important;\n box-shadow: none;\n color: #c2c6dc;\n }\n\n &::-ms-expand {\n display: none;\n }\n\n cursor: pointer;\n position: absolute;\n z-index: 9998;\n margin: 0;\n left: 0;\n top: 5px;\n opacity: 0;\n`;\n\nconst HeaderButton = styled.button`\n cursor: pointer;\n color: #c2c6dc;\n text-decoration: underline;\n font-size: 14px;\n text-align: center;\n padding: 6px 10px;\n margin: 6px 0;\n background: none;\n outline: none;\n border: none;\n border-radius: 3px;\n &:hover {\n background: ${(props) => props.theme.colors.primary};\n color: #fff;\n }\n`;\n\nconst HeaderActions = styled.div`\n position: relative;\n text-align: center;\n & > button:first-child {\n float: left;\n }\n & > button:last-child {\n float: right;\n }\n`;\n\nconst DueDateManager: React.FC = ({ task, onDueDateChange, onRemoveDueDate, onCancel }) => {\n const currentDueDate = task.dueDate ? dayjs(task.dueDate).toDate() : null;\n const {\n register,\n handleSubmit,\n setValue,\n setError,\n formState: { errors },\n control,\n } = useForm();\n\n const [startDate, setStartDate] = useState(currentDueDate);\n const [endDate, setEndDate] = useState(currentDueDate);\n const [hasTime, enableTime] = useState(task.hasTime ?? false);\n const firstRun = useRef(true);\n\n const debouncedFunctionRef = useRef((newDate: Date | null, nowHasTime: boolean) => {\n if (!firstRun.current) {\n if (newDate) {\n onDueDateChange(task, newDate, nowHasTime);\n } else {\n onRemoveDueDate(task);\n enableTime(false);\n }\n } else {\n firstRun.current = false;\n }\n });\n const debouncedChange = useCallback(\n _.debounce((newDate, nowHasTime) => debouncedFunctionRef.current(newDate, nowHasTime), 500),\n [],\n );\n\n useEffect(() => {\n debouncedChange(startDate, hasTime);\n }, [startDate, hasTime]);\n const years = _.range(2010, getYear(new Date()) + 10, 1);\n const months = [\n 'January',\n 'February',\n 'March',\n 'April',\n 'May',\n 'June',\n 'July',\n 'August',\n 'September',\n 'October',\n 'November',\n 'December',\n ];\n\n const onChange = (dates: any) => {\n const [start, end] = dates;\n setStartDate(start);\n setEndDate(end);\n };\n const [isRange, setIsRange] = useState(false);\n\n return (\n \n \n {\n if (!Array.isArray(date)) {\n setStartDate(date);\n }\n }}\n popperClassName=\"picker-hidden\"\n dateFormat=\"yyyy-MM-dd\"\n disabledKeyboardNavigation\n isClearable\n placeholderText=\"Select due date\"\n />\n {isRange ? (\n {\n if (!Array.isArray(date)) {\n setStartDate(date);\n }\n }}\n popperClassName=\"picker-hidden\"\n dateFormat=\"yyyy-MM-dd\"\n placeholderText=\"Select from date\"\n />\n ) : (\n Add date range\n )}\n \n {\n if (!Array.isArray(date)) {\n setStartDate(date);\n }\n }}\n startDate={startDate}\n useWeekdaysShort\n renderCustomHeader={({\n date,\n changeYear,\n changeMonth,\n decreaseMonth,\n increaseMonth,\n prevMonthButtonDisabled,\n nextMonthButtonDisabled,\n }) => (\n \n \n Prev\n \n \n {months[date.getMonth()]}\n changeMonth(months.indexOf(value))}\n >\n {months.map((option) => (\n \n ))}\n \n \n \n {date.getFullYear()}\n changeYear(parseInt(value, 10))}>\n {years.map((option) => (\n \n ))}\n \n \n\n \n Next\n \n \n )}\n inline\n />\n \n {hasTime && (\n \n \n Due Time\n {\n if (!Array.isArray(date)) {\n setStartDate(date);\n }\n }}\n showTimeSelect\n showTimeSelectOnly\n timeIntervals={15}\n timeCaption=\"Time\"\n dateFormat=\"h:mm aa\"\n />\n enableTime(false)}>\n \n \n \n )}\n \n {!hasTime && (\n {\n if (startDate === null) {\n const today = new Date();\n today.setHours(12, 30, 0);\n setStartDate(today);\n }\n enableTime(true);\n }}\n >\n \n \n )}\n setStartDate(null)}>{hasTime ? 'Clear all' : 'Clear'}\n \n \n );\n};\n\nexport default DueDateManager;\n","function resolve(interval: number) {\n if (process.env.REACT_APP_ENABLE_POLLING === 'true') return interval;\n return 0;\n}\nconst polling = {\n PROJECTS: resolve(3000),\n PROJECT: resolve(3000),\n MEMBERS: resolve(3000),\n TEAM_PROJECTS: resolve(3000),\n TASK_DETAILS: resolve(3000),\n};\n\nexport default polling;\n","import React, { useState } from 'react';\nimport Modal from 'shared/components/Modal';\nimport TaskDetails from 'shared/components/TaskDetails';\nimport TaskDetailsLoading from 'shared/components/TaskDetails/Loading';\nimport { Popup, usePopup } from 'shared/components/PopupMenu';\nimport MemberManager from 'shared/components/MemberManager';\nimport { useRouteMatch, useHistory, useParams } from 'react-router';\nimport {\n useDeleteTaskChecklistMutation,\n useUpdateTaskChecklistNameMutation,\n useUpdateTaskChecklistItemLocationMutation,\n useCreateTaskChecklistMutation,\n useFindTaskQuery,\n useUpdateTaskDueDateMutation,\n useSetTaskCompleteMutation,\n useAssignTaskMutation,\n useUnassignTaskMutation,\n useSetTaskChecklistItemCompleteMutation,\n useUpdateTaskChecklistLocationMutation,\n useDeleteTaskChecklistItemMutation,\n useUpdateTaskChecklistItemNameMutation,\n useCreateTaskChecklistItemMutation,\n FindTaskDocument,\n FindTaskQuery,\n useCreateTaskCommentMutation,\n useDeleteTaskCommentMutation,\n useUpdateTaskCommentMutation,\n} from 'shared/generated/graphql';\nimport { useCurrentUser } from 'App/context';\nimport MiniProfile from 'shared/components/MiniProfile';\nimport DueDateManager from 'shared/components/DueDateManager';\nimport produce from 'immer';\nimport styled from 'styled-components';\nimport Button from 'shared/components/Button';\nimport Input from 'shared/components/Input';\nimport { useForm } from 'react-hook-form';\nimport updateApolloCache from 'shared/utils/cache';\nimport NOOP from 'shared/utils/noop';\nimport polling from 'shared/utils/polling';\n\nexport const ActionsList = styled.ul`\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n`;\n\nexport const ActionItem = styled.li`\n position: relative;\n padding-left: 4px;\n padding-right: 4px;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n cursor: pointer;\n display: flex;\n align-items: center;\n font-size: 14px;\n &:hover {\n background: ${(props) => props.theme.colors.primary};\n }\n`;\n\nexport const ActionTitle = styled.span`\n margin-left: 20px;\n`;\n\nconst WarningLabel = styled.p`\n font-size: 14px;\n margin: 8px 12px;\n`;\nconst DeleteConfirm = styled(Button)`\n width: 100%;\n padding: 8px 12px;\n margin-bottom: 6px;\n`;\n\ntype TaskCommentActionsProps = {\n onDeleteComment: () => void;\n onEditComment: () => void;\n};\nconst TaskCommentActions: React.FC = ({ onDeleteComment, onEditComment }) => {\n const { setTab } = usePopup();\n return (\n <>\n \n \n \n Pin to top\n \n onEditComment()}>\n Edit comment\n \n setTab(1)}>\n Delete comment\n \n \n \n \n Deleting a comment can not be undone.\n onDeleteComment()} color=\"danger\">\n Delete comment\n \n \n \n );\n};\n\nconst calculateChecklistBadge = (checklists: Array) => {\n const total = checklists.reduce((prev: any, next: any) => {\n return (\n prev +\n next.items.reduce((innerPrev: any, _item: any) => {\n return innerPrev + 1;\n }, 0)\n );\n }, 0);\n const complete = checklists.reduce(\n (prev: any, next: any) =>\n prev +\n next.items.reduce((innerPrev: any, item: any) => {\n return innerPrev + (item.complete ? 1 : 0);\n }, 0),\n 0,\n );\n return { total, complete };\n};\n\nconst DeleteChecklistButton = styled(Button)`\n width: 100%;\n padding: 6px 12px;\n margin-top: 8px;\n`;\ntype CreateChecklistData = {\n name: string;\n};\nconst CreateChecklistForm = styled.form`\n display: flex;\n flex-direction: column;\n`;\n\nconst CreateChecklistButton = styled(Button)`\n margin-top: 8px;\n padding: 6px 12px;\n width: 100%;\n`;\n\nconst CreateChecklistInput = styled(Input)`\n margin-bottom: 8px;\n`;\n\ntype CreateChecklistPopupProps = {\n onCreateChecklist: (data: CreateChecklistData) => void;\n};\n\nconst CreateChecklistPopup: React.FC = ({ onCreateChecklist }) => {\n const { register, handleSubmit } = useForm();\n const createUser = (data: CreateChecklistData) => {\n onCreateChecklist(data);\n };\n return (\n \n \n Create\n \n );\n};\n\ntype DetailsProps = {\n projectURL: string;\n onTaskNameChange: (task: Task, newName: string) => void;\n onTaskDescriptionChange: (task: Task, newDescription: string) => void;\n onDeleteTask: (task: Task) => void;\n onOpenAddLabelPopup: (task: Task, $targetRef: React.RefObject) => void;\n availableMembers: Array;\n refreshCache: () => void;\n};\n\nconst initialMemberPopupState = { taskID: '', isOpen: false, top: 0, left: 0 };\n\nconst Details: React.FC = ({\n projectURL,\n onTaskNameChange,\n onTaskDescriptionChange,\n onDeleteTask,\n onOpenAddLabelPopup,\n availableMembers,\n refreshCache,\n}) => {\n const { user } = useCurrentUser();\n const { taskID } = useParams<{ taskID: string }>();\n const { showPopup, hidePopup } = usePopup();\n const history = useHistory();\n const [deleteTaskComment] = useDeleteTaskCommentMutation({\n update: (client, response) => {\n updateApolloCache(\n client,\n FindTaskDocument,\n (cache) =>\n produce(cache, (draftCache) => {\n if (response.data) {\n draftCache.findTask.comments = cache.findTask.comments.filter(\n (c) => c.id !== response.data?.deleteTaskComment.commentID,\n );\n }\n }),\n { taskID },\n );\n },\n });\n const [createTaskComment] = useCreateTaskCommentMutation({\n update: (client, response) => {\n updateApolloCache(\n client,\n FindTaskDocument,\n (cache) =>\n produce(cache, (draftCache) => {\n if (response.data) {\n draftCache.findTask.comments.push({\n ...response.data.createTaskComment.comment,\n });\n }\n }),\n { taskID },\n );\n },\n });\n const [updateTaskChecklistLocation] = useUpdateTaskChecklistLocationMutation();\n const [updateTaskChecklistItemLocation] = useUpdateTaskChecklistItemLocationMutation({\n update: (client, response) => {\n updateApolloCache(\n client,\n FindTaskDocument,\n (cache) =>\n produce(cache, (draftCache) => {\n if (response.data) {\n const { prevChecklistID, taskChecklistID, checklistItem } = response.data.updateTaskChecklistItemLocation;\n if (taskChecklistID !== prevChecklistID) {\n const oldIdx = cache.findTask.checklists.findIndex((c) => c.id === prevChecklistID);\n const newIdx = cache.findTask.checklists.findIndex((c) => c.id === taskChecklistID);\n if (oldIdx > -1 && newIdx > -1) {\n const item = cache.findTask.checklists[oldIdx].items.find((i) => i.id === checklistItem.id);\n if (item) {\n draftCache.findTask.checklists[oldIdx].items = cache.findTask.checklists[oldIdx].items.filter(\n (i) => i.id !== checklistItem.id,\n );\n draftCache.findTask.checklists[newIdx].items.push({\n ...item,\n position: checklistItem.position,\n taskChecklistID,\n });\n }\n }\n }\n }\n }),\n { taskID },\n );\n },\n });\n const [setTaskChecklistItemComplete] = useSetTaskChecklistItemCompleteMutation({\n update: (client) => {\n updateApolloCache(\n client,\n FindTaskDocument,\n (cache) =>\n produce(cache, (draftCache) => {\n const { complete, total } = calculateChecklistBadge(draftCache.findTask.checklists);\n draftCache.findTask.badges.checklist = {\n __typename: 'ChecklistBadge',\n complete,\n total,\n };\n }),\n { taskID },\n );\n },\n });\n const [deleteTaskChecklist] = useDeleteTaskChecklistMutation({\n update: (client, deleteData) => {\n updateApolloCache(\n client,\n FindTaskDocument,\n (cache) =>\n produce(cache, (draftCache) => {\n const { checklists } = cache.findTask;\n draftCache.findTask.checklists = checklists.filter(\n (c) => c.id !== deleteData.data?.deleteTaskChecklist.taskChecklist.id,\n );\n const { complete, total } = calculateChecklistBadge(draftCache.findTask.checklists);\n draftCache.findTask.badges.checklist = {\n __typename: 'ChecklistBadge',\n complete,\n total,\n };\n if (complete === 0 && total === 0) {\n draftCache.findTask.badges.checklist = null;\n }\n }),\n { taskID },\n );\n },\n });\n const [updateTaskChecklistItemName] = useUpdateTaskChecklistItemNameMutation();\n const [createTaskChecklist] = useCreateTaskChecklistMutation({\n update: (client, createData) => {\n updateApolloCache(\n client,\n FindTaskDocument,\n (cache) =>\n produce(cache, (draftCache) => {\n if (createData.data) {\n const item = createData.data.createTaskChecklist;\n draftCache.findTask.checklists.push({ ...item });\n }\n }),\n { taskID },\n );\n },\n });\n const [updateTaskChecklistName] = useUpdateTaskChecklistNameMutation();\n const [deleteTaskChecklistItem] = useDeleteTaskChecklistItemMutation({\n update: (client, deleteData) => {\n updateApolloCache(\n client,\n FindTaskDocument,\n (cache) =>\n produce(cache, (draftCache) => {\n if (deleteData.data) {\n const item = deleteData.data.deleteTaskChecklistItem.taskChecklistItem;\n const targetIdx = cache.findTask.checklists.findIndex((c) => c.id === item.taskChecklistID);\n if (targetIdx > -1) {\n draftCache.findTask.checklists[targetIdx].items = cache.findTask.checklists[targetIdx].items.filter(\n (c) => item.id !== c.id,\n );\n }\n const { complete, total } = calculateChecklistBadge(draftCache.findTask.checklists);\n draftCache.findTask.badges.checklist = {\n __typename: 'ChecklistBadge',\n complete,\n total,\n };\n }\n }),\n { taskID },\n );\n },\n });\n const [createTaskChecklistItem] = useCreateTaskChecklistItemMutation({\n update: (client, newTaskItem) => {\n updateApolloCache(\n client,\n FindTaskDocument,\n (cache) =>\n produce(cache, (draftCache) => {\n if (newTaskItem.data) {\n const item = newTaskItem.data.createTaskChecklistItem;\n const { checklists } = cache.findTask;\n const idx = checklists.findIndex((c) => c.id === item.taskChecklistID);\n if (idx !== -1) {\n draftCache.findTask.checklists[idx].items.push({ ...item });\n const { complete, total } = calculateChecklistBadge(draftCache.findTask.checklists);\n draftCache.findTask.badges.checklist = {\n __typename: 'ChecklistBadge',\n complete,\n total,\n };\n }\n }\n }),\n { taskID },\n );\n },\n });\n const { loading, data, refetch } = useFindTaskQuery({\n variables: { taskID },\n pollInterval: polling.TASK_DETAILS,\n fetchPolicy: 'cache-and-network',\n });\n const [setTaskComplete] = useSetTaskCompleteMutation();\n const [updateTaskDueDate] = useUpdateTaskDueDateMutation({\n onCompleted: () => {\n refetch();\n refreshCache();\n },\n });\n const [assignTask] = useAssignTaskMutation({\n onCompleted: () => {\n refetch();\n refreshCache();\n },\n });\n const [unassignTask] = useUnassignTaskMutation({\n onCompleted: () => {\n refetch();\n refreshCache();\n },\n });\n const [updateTaskComment] = useUpdateTaskCommentMutation();\n const [editableComment, setEditableComment] = useState(null);\n const isLoading = true;\n return (\n <>\n {\n history.push(projectURL);\n hidePopup();\n }}\n renderContent={() => {\n return data ? (\n setEditableComment(null)}\n onUpdateComment={(commentID, message) => {\n updateTaskComment({ variables: { commentID, message } });\n }}\n editableComment={editableComment}\n me={data.me ? data.me.user : null}\n onCommentShowActions={(commentID, $targetRef) => {\n showPopup(\n $targetRef,\n {\n deleteTaskComment({ variables: { commentID } });\n hidePopup();\n }}\n onEditComment={() => {\n setEditableComment(commentID);\n hidePopup();\n }}\n />,\n );\n }}\n task={data.findTask}\n onCreateComment={(task, message) => {\n createTaskComment({ variables: { taskID: task.id, message } });\n }}\n onChecklistDrop={(checklist) => {\n updateTaskChecklistLocation({\n variables: { taskChecklistID: checklist.id, position: checklist.position },\n\n optimisticResponse: {\n __typename: 'Mutation',\n updateTaskChecklistLocation: {\n __typename: 'UpdateTaskChecklistLocationPayload',\n checklist: {\n __typename: 'TaskChecklist',\n position: checklist.position,\n id: checklist.id,\n },\n },\n },\n });\n }}\n onChecklistItemDrop={(prevChecklistID, taskChecklistID, checklistItem) => {\n updateTaskChecklistItemLocation({\n variables: {\n taskChecklistID,\n taskChecklistItemID: checklistItem.id,\n position: checklistItem.position,\n },\n optimisticResponse: {\n __typename: 'Mutation',\n updateTaskChecklistItemLocation: {\n __typename: 'UpdateTaskChecklistItemLocationPayload',\n prevChecklistID,\n taskChecklistID,\n checklistItem: {\n __typename: 'TaskChecklistItem',\n position: checklistItem.position,\n id: checklistItem.id,\n taskChecklistID,\n },\n },\n },\n });\n }}\n onTaskNameChange={onTaskNameChange}\n onTaskDescriptionChange={onTaskDescriptionChange}\n onToggleTaskComplete={(task) => {\n setTaskComplete({ variables: { taskID: task.id, complete: !task.complete } });\n }}\n onDeleteTask={onDeleteTask}\n onChangeItemName={(itemID, itemName) => {\n updateTaskChecklistItemName({ variables: { taskChecklistItemID: itemID, name: itemName } });\n }}\n onCloseModal={() => history.push(projectURL)}\n onChangeChecklistName={(checklistID, newName) => {\n updateTaskChecklistName({ variables: { taskChecklistID: checklistID, name: newName } });\n }}\n onDeleteItem={(checklistID, itemID) => {\n deleteTaskChecklistItem({\n variables: { taskChecklistItemID: itemID },\n optimisticResponse: {\n __typename: 'Mutation',\n deleteTaskChecklistItem: {\n __typename: 'DeleteTaskChecklistItemPayload',\n ok: true,\n taskChecklistItem: {\n __typename: 'TaskChecklistItem',\n id: itemID,\n taskChecklistID: checklistID,\n },\n },\n },\n });\n }}\n onToggleChecklistItem={(itemID, complete) => {\n setTaskChecklistItemComplete({\n variables: { taskChecklistItemID: itemID, complete },\n optimisticResponse: {\n __typename: 'Mutation',\n setTaskChecklistItemComplete: {\n __typename: 'TaskChecklistItem',\n id: itemID,\n complete,\n },\n },\n });\n }}\n onAddItem={(taskChecklistID, name, position) => {\n createTaskChecklistItem({ variables: { taskChecklistID, name, position } });\n }}\n onMemberProfile={($targetRef, memberID) => {\n const member = data.findTask.assigned.find((m) => m.id === memberID);\n if (member) {\n showPopup(\n $targetRef,\n \n {\n if (user) {\n unassignTask({ variables: { taskID: data.findTask.id, userID: user ?? '' } });\n }\n }}\n />\n ,\n );\n }\n }}\n onOpenAddMemberPopup={(_task, $targetRef) => {\n showPopup(\n $targetRef,\n \n {\n if (user) {\n if (isActive) {\n assignTask({ variables: { taskID: data.findTask.id, userID: member.id } });\n } else {\n unassignTask({ variables: { taskID: data.findTask.id, userID: member.id } });\n }\n }\n }}\n />\n ,\n );\n }}\n onOpenAddLabelPopup={onOpenAddLabelPopup}\n onOpenAddChecklistPopup={(_task, $target) => {\n showPopup(\n $target,\n {\n hidePopup();\n }}\n >\n {\n let position = 65535;\n if (data.findTask.checklists) {\n const [lastChecklist] = data.findTask.checklists.slice(-1);\n if (lastChecklist) {\n position = lastChecklist.position * 2 + 1;\n }\n }\n createTaskChecklist({\n variables: {\n taskID: data.findTask.id,\n name: checklistData.name,\n position,\n },\n });\n hidePopup();\n }}\n />\n ,\n );\n }}\n onDeleteChecklist={($target, checklistID) => {\n showPopup(\n $target,\n hidePopup()}>\n

Deleting a checklist is permanent and there is no way to get it back.

\n {\n deleteTaskChecklist({ variables: { taskChecklistID: checklistID } });\n hidePopup();\n }}\n >\n Delete Checklist\n \n
,\n );\n }}\n onOpenDueDatePopop={(task, $targetRef) => {\n showPopup(\n $targetRef,\n {\n hidePopup();\n }}\n >\n {\n updateTaskDueDate({ variables: { taskID: t.id, dueDate: null, hasTime: false } });\n // hidePopup();\n }}\n onDueDateChange={(t, newDueDate, hasTime) => {\n updateTaskDueDate({ variables: { taskID: t.id, dueDate: newDueDate, hasTime } });\n // hidePopup();\n }}\n onCancel={NOOP}\n />\n ,\n { showDiamond: false, targetPadding: '0' },\n );\n }}\n />\n ) : (\n \n );\n }}\n />\n \n );\n};\n\nexport default Details;\n","import React, { useState, useEffect } from 'react';\nimport styled, { css } from 'styled-components';\nimport { Checkmark, User, Calendar, Tags, Clock } from 'shared/icons';\nimport { TaskMetaFilters, TaskMeta, TaskMetaMatch, DueDateFilterType } from 'shared/components/Lists';\nimport Input from 'shared/components/ControlledInput';\nimport { Popup, usePopup } from 'shared/components/PopupMenu';\nimport produce from 'immer';\nimport { mixin } from 'shared/utils/styles';\nimport Member from 'shared/components/Member';\nimport { MyTasksSort } from 'shared/generated/graphql';\n\nconst FilterMember = styled(Member)`\n margin: 2px 0;\n &:hover {\n cursor: pointer;\n background: ${props => props.theme.colors.primary};\n }\n`;\n\nexport const Labels = styled.ul`\n list-style: none;\n margin: 0 8px;\n padding: 0;\n margin-bottom: 8px;\n`;\n\nexport const Label = styled.li`\n position: relative;\n`;\n\nexport const CardLabel = styled.span<{ active: boolean; color: string }>`\n ${props =>\n props.active &&\n css`\n margin-left: 4px;\n box-shadow: -8px 0 ${mixin.darken(props.color, 0.12)};\n border-radius: 3px;\n `}\n\n cursor: pointer;\n font-weight: 700;\n margin: 0 0 4px;\n min-height: 20px;\n padding: 6px 12px;\n position: relative;\n transition: padding 85ms, margin 85ms, box-shadow 85ms;\n background-color: ${props => props.color};\n color: #fff;\n display: block;\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n min-height: 31px;\n`;\n\nexport const ActionsList = styled.ul`\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n`;\n\nexport const ActionItem = styled.li`\n position: relative;\n padding-left: 4px;\n padding-right: 4px;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n cursor: pointer;\n display: flex;\n align-items: center;\n font-size: 14px;\n &:hover {\n background: ${props => props.theme.colors.primary};\n }\n`;\n\nexport const ActionTitle = styled.span`\n margin-left: 20px;\n`;\n\nconst ActionItemSeparator = styled.li`\n color: ${props => mixin.rgba(props.theme.colors.text.primary, 0.4)};\n font-size: 12px;\n padding-left: 4px;\n padding-right: 4px;\n padding-top: 0.75rem;\n padding-bottom: 0.25rem;\n`;\n\nconst ActiveIcon = styled(Checkmark)`\n position: absolute;\n right: 4px;\n`;\n\nconst ItemIcon = styled.div`\n position: absolute;\n`;\n\nconst TaskNameInput = styled(Input)`\n margin: 0;\n`;\n\nconst ActionItemLine = styled.div`\n height: 1px;\n border-top: 1px solid #414561;\n margin: 0.25rem !important;\n`;\n\ntype MyTasksSortProps = {\n sort: MyTasksSort;\n onChangeSort: (sort: MyTasksSort) => void;\n};\n\nconst MyTasksSortPopup: React.FC = ({ sort: initialSort, onChangeSort }) => {\n const [sort, setSort] = useState(initialSort);\n const handleChangeSort = (f: MyTasksSort) => {\n setSort(f);\n onChangeSort(f);\n };\n\n return (\n <>\n \n \n handleChangeSort(MyTasksSort.None)}>\n {sort === MyTasksSort.None && }\n None\n \n handleChangeSort(MyTasksSort.Project)}>\n {sort === MyTasksSort.Project && }\n Project\n \n handleChangeSort(MyTasksSort.DueDate)}>\n {sort === MyTasksSort.DueDate && }\n Due Date\n \n \n \n \n );\n};\n\nexport default MyTasksSortPopup;\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\nimport { Checkmark } from 'shared/icons';\nimport { TaskStatusFilter, TaskStatus, TaskSince } from 'shared/components/Lists';\nimport { MyTasksStatus } from 'shared/generated/graphql';\nimport { Popup } from 'shared/components/PopupMenu';\n\nexport const ActionsList = styled.ul`\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n`;\n\nexport const ActionExtraMenuContainer = styled.div`\n visibility: hidden;\n position: absolute;\n left: 100%;\n top: -4px;\n padding-left: 2px;\n width: 100%;\n`;\n\nexport const ActionItem = styled.li`\n position: relative;\n padding-left: 4px;\n padding-right: 4px;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n cursor: pointer;\n display: flex;\n align-items: center;\n font-size: 14px;\n &:hover {\n background: ${props => props.theme.colors.primary};\n }\n &:hover ${ActionExtraMenuContainer} {\n visibility: visible;\n }\n`;\n\nexport const ActionTitle = styled.span`\n margin-left: 20px;\n`;\n\nexport const ActionExtraMenu = styled.ul`\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n\n padding: 5px;\n padding-top: 8px;\n border-radius: 5px;\n box-shadow: 0 5px 25px 0 rgba(0, 0, 0, 0.1);\n\n color: #c2c6dc;\n background: #262c49;\n border: 1px solid rgba(0, 0, 0, 0.1);\n border-color: #414561;\n`;\n\nexport const ActionExtraMenuItem = styled.li`\n position: relative;\n padding-left: 4px;\n padding-right: 4px;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n cursor: pointer;\n display: flex;\n align-items: center;\n font-size: 14px;\n &:hover {\n background: ${props => props.theme.colors.primary};\n }\n`;\nconst ActionExtraMenuSeparator = styled.li`\n color: ${props => props.theme.colors.text.primary};\n font-size: 12px;\n padding-left: 4px;\n padding-right: 4px;\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n`;\n\nconst ActiveIcon = styled(Checkmark)`\n position: absolute;\n`;\n\ntype MyTasksStatusProps = {\n status: MyTasksStatus;\n onChangeStatus: (status: MyTasksStatus) => void;\n};\n\nconst MyTasksStatusPopup: React.FC = ({ status: initialStatus, onChangeStatus }) => {\n const [status, setStatus] = useState(initialStatus);\n const handleStatusChange = (f: MyTasksStatus) => {\n setStatus(f);\n onChangeStatus(f);\n };\n return (\n \n \n handleStatusChange(MyTasksStatus.Incomplete)}>\n {status === MyTasksStatus.Incomplete && }\n Incomplete Tasks\n \n \n {status !== MyTasksStatus.Incomplete && status !== MyTasksStatus.All && }\n Compelete Tasks\n \n \n handleStatusChange(MyTasksStatus.CompleteAll)}>\n {status === MyTasksStatus.CompleteAll && }\n All completed tasks\n \n Marked complete since\n handleStatusChange(MyTasksStatus.CompleteToday)}>\n {status === MyTasksStatus.CompleteToday && }\n Today\n \n handleStatusChange(MyTasksStatus.CompleteYesterday)}>\n {status === MyTasksStatus.CompleteYesterday && }\n\n Yesterday\n \n handleStatusChange(MyTasksStatus.CompleteOneWeek)}>\n {status === MyTasksStatus.CompleteOneWeek && }\n 1 week\n \n handleStatusChange(MyTasksStatus.CompleteTwoWeek)}>\n {status === MyTasksStatus.CompleteTwoWeek && }\n 2 weeks\n \n handleStatusChange(MyTasksStatus.CompleteThreeWeek)}>\n {status === MyTasksStatus.CompleteThreeWeek && }\n 3 weeks\n \n \n \n \n handleStatusChange(MyTasksStatus.All)}>\n {status === MyTasksStatus.All && }\n All Tasks\n \n \n \n );\n};\n\nexport default MyTasksStatusPopup;\n","import React, { useState, useRef, useEffect } from 'react';\nimport styled, { css } from 'styled-components/macro';\nimport dayjs from 'dayjs';\nimport { CheckCircleOutline, CheckCircle, Cross, Briefcase, ChevronRight } from 'shared/icons';\nimport { mixin } from 'shared/utils/styles';\n\nconst RIGHT_ROW_WIDTH = 327;\nconst TaskName = styled.div<{ focused: boolean }>`\n flex: 0 1 auto;\n min-width: 1px;\n overflow: hidden;\n margin-right: 4px;\n background: transparent;\n border: 1px solid transparent;\n border-radius: 2px;\n height: 20px;\n padding: 0 1px;\n\n max-height: 100%;\n position: relative;\n &:hover {\n ${props =>\n !props.focused &&\n css`\n border-color: #9ca6af !important;\n border: 1px solid ${props.theme.colors.primary} !important;\n `}\n }\n`;\n\nconst DueDateCell = styled.div`\n align-items: center;\n align-self: stretch;\n display: flex;\n flex-grow: 1;\n`;\n\nconst CellPlaceholder = styled.div<{ width: number }>`\n min-width: ${p => p.width}px;\n width: ${p => p.width}px;\n`;\nconst DueDateCellDisplay = styled.div`\n align-items: center;\n cursor: pointer;\n display: flex;\n flex-grow: 1;\n height: 100%;\n`;\n\nconst DueDateCellLabel = styled.div`\n align-items: center;\n color: ${props => props.theme.colors.text.primary};\n\n font-size: 11px;\n flex: 0 1 auto;\n min-width: 1px;\n overflow: hidden;\n text-overflow: ellipsis;\n display: flex;\n flex-flow: row wrap;\n white-space: pre-wrap;\n`;\n\nconst DueDateRemoveButton = styled.div`\n align-items: center;\n bottom: 0;\n cursor: pointer;\n display: flex;\n height: 100%;\n padding-left: 4px;\n padding-right: 8px;\n position: absolute;\n right: 0;\n top: 0;\n visibility: hidden;\n svg {\n fill: ${props => props.theme.colors.text.primary};\n }\n &:hover svg {\n fill: ${props => props.theme.colors.text.secondary};\n }\n`;\nconst TaskGroupItemCell = styled.div<{ width: number; focused: boolean }>`\n width: ${p => p.width}px;\n background: transparent;\n position: relative;\n\n border: 1px solid #414561;\n justify-content: space-between;\n margin-right: -1px;\n z-index: 0;\n padding: 0 8px;\n align-items: center;\n display: flex;\n height: 37px;\n overflow: hidden;\n &:hover ${DueDateRemoveButton} {\n visibility: visible;\n }\n &:hover ${TaskName} {\n ${props =>\n !props.focused &&\n css`\n background: ${props.theme.colors.bg.secondary};\n border: 1px solid ${mixin.darken(props.theme.colors.bg.secondary, 0.25)};\n border-radius: 2px;\n cursor: text;\n `}\n }\n`;\n\nconst TaskGroupItem = styled.div`\n padding-right: 24px;\n contain: style;\n display: flex;\n margin-bottom: -1px;\n margin-top: -1px;\n height: 37px;\n &:hover {\n background-color: #161d31;\n }\n & ${TaskGroupItemCell}:first-child {\n position: absolute;\n padding: 0 4px 0 0;\n margin-left: 24px;\n left: 0;\n flex: 1 1 auto;\n min-width: 1px;\n border-right: 0;\n border-left: 0;\n }\n & ${TaskGroupItemCell}:last-child {\n border-right: 0;\n }\n`;\n\nconst TaskItemComplete = styled.div`\n flex: 0 0 auto;\n margin: 0 3px 0 0;\n align-items: center;\n box-sizing: border-box;\n display: inline-flex;\n height: 16px;\n justify-content: center;\n overflow: visible;\n width: 16px;\n cursor: pointer;\n svg {\n transition: all 0.2 ease;\n }\n &:hover svg {\n fill: ${props => props.theme.colors.primary};\n }\n`;\n\nconst TaskDetailsButton = styled.div`\n align-items: center;\n cursor: pointer;\n display: flex;\n font-size: 12px;\n height: 100%;\n justify-content: flex-end;\n margin-left: auto;\n opacity: 0;\n padding-left: 4px;\n color: ${props => props.theme.colors.text.primary};\n svg {\n fill: ${props => props.theme.colors.text.primary};\n }\n`;\n\nconst TaskDetailsArea = styled.div`\n align-items: center;\n cursor: pointer;\n display: flex;\n flex: 1 0 auto;\n height: 100%;\n margin-right: 24px;\n &:hover ${TaskDetailsButton} {\n opacity: 1;\n }\n`;\n\nconst TaskDetailsWorkpace = styled(Briefcase)`\n flex: 0 0 auto;\n margin-right: 8px;\n`;\nconst TaskDetailsLabel = styled.div`\n display: flex;\n align-items: center;\n`;\n\nconst TaskDetailsChevron = styled(ChevronRight)`\n margin-left: 4px;\n flex: 0 0 auto;\n`;\n\nconst TaskNameShadow = styled.div`\n box-sizing: border-box;\n min-height: 1em;\n overflow: hidden;\n visibility: hidden;\n white-space: pre;\n border: 0;\n font-size: 13px;\n line-height: 20px;\n margin: 0;\n min-width: 20px;\n padding: 0 4px;\n text-rendering: optimizeSpeed;\n`;\n\nconst TaskNameInput = styled.textarea`\n white-space: pre;\n background: transparent;\n border-radius: 0;\n display: block;\n color: ${props => props.theme.colors.text.primary};\n height: 100%;\n outline: 0;\n overflow: hidden;\n position: absolute;\n resize: none;\n top: 0;\n width: 100%;\n border: 0;\n font-size: 13px;\n line-height: 20px;\n margin: 0;\n min-width: 20px;\n padding: 0 4px;\n text-rendering: optimizeSpeed;\n`;\n\nconst ProjectPill = styled.div`\n background-color: ${props => props.theme.colors.bg.primary};\n text-overflow: ellipsis;\n border-radius: 10px;\n box-sizing: border-box;\n display: block;\n font-size: 12px;\n font-weight: 400;\n height: 20px;\n line-height: 20px;\n overflow: hidden;\n padding: 0 8px;\n text-align: left;\n white-space: nowrap;\n`;\n\nconst ProjectPillContents = styled.div`\n align-items: center;\n display: flex;\n`;\n\nconst ProjectPillName = styled.span`\n flex: 0 1 auto;\n min-width: 1px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: ${props => props.theme.colors.text.primary};\n`;\n\nconst ProjectPillColor = styled.svg`\n overflow: hidden;\n flex: 0 0 auto;\n margin-right: 4px;\n fill: #0064fb;\n height: 12px;\n width: 12px;\n`;\n\ntype TaskEntryProps = {\n name: string;\n dueDate?: string | null;\n onEditName: (name: string) => void;\n project: string;\n hasTime: boolean;\n autoFocus?: boolean;\n onEditProject: ($target: React.RefObject) => void;\n onToggleComplete: (complete: boolean) => void;\n complete: boolean;\n onEditDueDate: ($target: React.RefObject) => void;\n onTaskDetails: () => void;\n onRemoveDueDate: () => void;\n};\n\nconst TaskEntry: React.FC = ({\n autoFocus = false,\n onToggleComplete,\n onEditName,\n onTaskDetails,\n name: initialName,\n complete,\n project,\n dueDate,\n hasTime,\n onEditProject,\n onEditDueDate,\n onRemoveDueDate,\n}) => {\n const leftRow = window.innerWidth - RIGHT_ROW_WIDTH;\n const [focused, setFocused] = useState(autoFocus);\n const [name, setName] = useState(initialName);\n useEffect(() => {\n setName(initialName);\n }, [initialName]);\n const $projects = useRef(null);\n const $dueDate = useRef(null);\n const $nameInput = useRef(null);\n return (\n \n \n onToggleComplete(!complete)}>\n {complete ? : }\n \n \n {name}\n setFocused(true)}\n ref={$nameInput}\n onBlur={() => {\n setFocused(false);\n onEditName(name);\n }}\n onKeyDown={e => {\n if (e.keyCode === 13) {\n e.preventDefault();\n if ($nameInput.current) {\n $nameInput.current.blur();\n }\n }\n }}\n onChange={e => setName(e.currentTarget.value)}\n wrap=\"off\"\n value={name}\n rows={1}\n />\n \n onTaskDetails()}>\n \n \n \n Details\n \n \n \n \n \n \n \n onEditDueDate($dueDate)}>\n \n \n {dueDate ? dayjs(dueDate).format(hasTime ? 'MMM D [at] h:mm A' : 'MMM D') : ''}\n \n \n \n {dueDate && (\n onRemoveDueDate()}>\n \n \n )}\n \n \n {\n onEditProject($projects);\n }}\n >\n \n \n \n \n {project}\n \n \n \n \n \n );\n};\nexport default TaskEntry;\ntype NewTaskEntryProps = {\n onClick: () => void;\n};\nconst AddTaskLabel = styled.span`\n font-size: 14px;\n position: relative;\n\n color: ${props => props.theme.colors.text.primary};\n\n justify-content: space-between;\n z-index: 0;\n padding: 0 8px;\n align-items: center;\n display: flex;\n height: 37px;\n flex: 1 1;\n cursor: pointer;\n margin-left: 24px;\n`;\n\nconst NewTaskEntry: React.FC = ({ onClick }) => {\n const leftRow = window.innerWidth - RIGHT_ROW_WIDTH;\n return (\n \n Add task...\n \n );\n};\n\nexport { NewTaskEntry };\n","import React, { useState, useEffect, useRef } from 'react';\nimport styled, { css } from 'styled-components/macro';\nimport GlobalTopNavbar from 'App/TopNavbar';\nimport Details from 'Projects/Project/Details';\nimport {\n useMyTasksQuery,\n MyTasksSort,\n MyTasksStatus,\n useCreateTaskMutation,\n MyTasksQuery,\n MyTasksDocument,\n useUpdateTaskNameMutation,\n useSetTaskCompleteMutation,\n useUpdateTaskDueDateMutation,\n} from 'shared/generated/graphql';\n\nimport { Route, useRouteMatch, useHistory, RouteComponentProps } from 'react-router-dom';\nimport { usePopup, Popup } from 'shared/components/PopupMenu';\nimport updateApolloCache from 'shared/utils/cache';\nimport produce from 'immer';\nimport NOOP from 'shared/utils/noop';\nimport { Sort, Cogs, CaretDown, CheckCircle, CaretRight, CheckCircleOutline } from 'shared/icons';\nimport Select from 'react-select';\nimport { editorColourStyles } from 'shared/components/Select';\nimport useOnOutsideClick from 'shared/hooks/onOutsideClick';\nimport DueDateManager from 'shared/components/DueDateManager';\nimport dayjs from 'dayjs';\nimport useStickyState from 'shared/hooks/useStickyState';\nimport { StaticContext } from 'react-router';\nimport MyTasksSortPopup from './MyTasksSort';\nimport MyTasksStatusPopup from './MyTasksStatus';\nimport TaskEntry from './TaskEntry';\n\ntype TaskRouteProps = {\n taskID: string;\n};\n\nfunction prettyStatus(status: MyTasksStatus) {\n switch (status) {\n case MyTasksStatus.All:\n return 'All tasks';\n case MyTasksStatus.Incomplete:\n return 'Incomplete tasks';\n case MyTasksStatus.CompleteAll:\n return 'All completed tasks';\n case MyTasksStatus.CompleteToday:\n return 'Completed tasks: today';\n case MyTasksStatus.CompleteYesterday:\n return 'Completed tasks: yesterday';\n case MyTasksStatus.CompleteOneWeek:\n return 'Completed tasks: 1 week';\n case MyTasksStatus.CompleteTwoWeek:\n return 'Completed tasks: 2 weeks';\n case MyTasksStatus.CompleteThreeWeek:\n return 'Completed tasks: 3 weeks';\n default:\n return 'unknown tasks';\n }\n}\n\nfunction prettySort(sort: MyTasksSort) {\n if (sort === MyTasksSort.None) {\n return 'Sort';\n }\n return `Sort: ${sort.charAt(0) + sort.slice(1).toLowerCase().replace(/_/gi, ' ')}`;\n}\n\ntype Group = {\n id: string;\n name: string | null;\n tasks: Array;\n};\nconst DueDateEditorLabel = styled.div`\n align-items: center;\n color: ${(props) => props.theme.colors.text.primary};\n\n font-size: 11px;\n padding: 0 8px;\n flex: 0 1 auto;\n min-width: 1px;\n overflow: hidden;\n text-overflow: ellipsis;\n display: flex;\n flex-flow: row wrap;\n white-space: pre-wrap;\n height: 35px;\n`;\n\nconst ProjectBar = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n height: 40px;\n padding: 0 12px;\n`;\n\nconst ProjectActions = styled.div`\n display: flex;\n align-items: center;\n`;\n\nconst ProjectActionWrapper = styled.div<{ disabled?: boolean }>`\n cursor: pointer;\n display: flex;\n align-items: center;\n font-size: 15px;\n color: ${(props) => props.theme.colors.text.primary};\n\n &:not(:last-of-type) {\n margin-right: 16px;\n }\n\n &:hover {\n color: ${(props) => props.theme.colors.text.secondary};\n }\n ${(props) =>\n props.disabled &&\n css`\n opacity: 0.5;\n cursor: default;\n pointer-events: none;\n `}\n`;\n\nconst ProjectActionText = styled.span`\n padding-left: 4px;\n`;\n\ntype ProjectActionProps = {\n onClick?: (target: React.RefObject) => void;\n disabled?: boolean;\n};\n\nconst ProjectAction: React.FC = ({ onClick, disabled = false, children }) => {\n const $container = useRef(null);\n const handleClick = () => {\n if (onClick) {\n onClick($container);\n }\n };\n return (\n \n {children}\n \n );\n};\n\nconst EditorPositioner = styled.div<{ top: number; left: number }>`\n position: absolute;\n top: ${(p) => p.top}px;\n justify-content: flex-end;\n margin-left: -100vw;\n z-index: 10000;\n align-items: flex-start;\n display: flex;\n font-size: 13px;\n height: 0;\n position: fixed;\n width: 100vw;\n left: ${(p) => p.left}px;\n`;\n\nconst EditorPositionerContents = styled.div`\n position: relative;\n`;\n\nconst EditorContainer = styled.div<{ width: number }>`\n border: 1px solid ${(props) => props.theme.colors.primary};\n background: ${(props) => props.theme.colors.bg.secondary};\n position: relative;\n width: ${(p) => p.width}px;\n`;\n\nconst EditorCell = styled.div<{ width: number }>`\n display: flex;\n width: ${(p) => p.width}px;\n`;\n\n// TABLE\nconst VerticalScoller = styled.div`\n contain: strict;\n flex: 1 1 auto;\n overflow-x: hidden;\n padding-bottom: 1px;\n position: relative;\n\n min-height: 1px;\n overflow-y: auto;\n`;\n\nconst VerticalScollerInner = styled.div`\n min-height: 100%;\n overflow-y: hidden;\n min-width: 1px;\n overflow-x: auto;\n`;\n\nconst VerticalScollerInnerBar = styled.div`\n display: flex;\n margin: 0 24px;\n margin-bottom: 1px;\n border-top: 1px solid #414561;\n`;\n\nconst TableContents = styled.div`\n box-sizing: border-box;\n display: inline-block;\n margin-bottom: 32px;\n min-width: 100%;\n`;\n\nconst TaskGroupContainer = styled.div``;\n\nconst TaskGroupHeader = styled.div`\n height: 50px;\n width: 100%;\n`;\n\nconst TaskGroupItems = styled.div`\n overflow: unset;\n`;\n\nconst ProjectPill = styled.div`\n background-color: ${(props) => props.theme.colors.bg.primary};\n text-overflow: ellipsis;\n border-radius: 10px;\n box-sizing: border-box;\n display: block;\n font-size: 12px;\n font-weight: 400;\n height: 20px;\n line-height: 20px;\n overflow: hidden;\n padding: 0 8px;\n text-align: left;\n white-space: nowrap;\n`;\n\nconst ProjectPillContents = styled.div`\n align-items: center;\n display: flex;\n`;\n\nconst ProjectPillName = styled.span`\n flex: 0 1 auto;\n min-width: 1px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n color: ${(props) => props.theme.colors.text.primary};\n`;\n\nconst ProjectPillColor = styled.svg`\n overflow: hidden;\n flex: 0 0 auto;\n margin-right: 4px;\n fill: #0064fb;\n height: 12px;\n width: 12px;\n`;\n\nconst SingleValue = ({ children, ...props }: any) => {\n return (\n \n \n \n \n \n {children}\n \n \n );\n};\n\nconst OptionWrapper = styled.div`\n align-items: center;\n display: flex;\n height: 40px;\n padding: 0 16px;\n cursor: pointer;\n &:hover {\n background: #414561;\n }\n`;\n\nconst OptionLabel = styled.div`\n align-items: baseline;\n display: flex;\n min-width: 1px;\n`;\n\nconst OptionTitle = styled.div`\n min-width: 50px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`;\nconst OptionSubTitle = styled.div`\n color: ${(props) => props.theme.colors.text.primary};\n font-size: 11px;\n margin-left: 8px;\n min-width: 50px;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n`;\nconst Option = ({ innerProps, data }: any) => {\n return (\n \n \n {data.label}\n {data.label}\n \n \n );\n};\n\nconst TaskGroupHeaderContents = styled.div<{ width: number }>`\n width: ${(p) => p.width}px;\n left: 0;\n position: absolute;\n font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Helvetica, Arial, sans-serif;\n font-size: 16px;\n font-weight: 500;\n margin-left: 24px;\n line-height: 20px;\n align-items: center;\n box-sizing: border-box;\n display: flex;\n flex: 1 1 auto;\n min-height: 30px;\n padding-right: 32px;\n position: relative;\n border-bottom: 1px solid transparent;\n border-top: 1px solid transparent;\n`;\n\nconst TaskGroupMinify = styled.div`\n height: 28px;\n min-height: 28px;\n min-width: 28px;\n width: 28px;\n border-radius: 6px;\n user-select: none;\n\n margin-right: 4px;\n\n align-items: center;\n box-sizing: border-box;\n display: inline-flex;\n justify-content: center;\n transition-duration: 0.2s;\n transition-property: background, border, box-shadow, fill;\n cursor: pointer;\n svg {\n fill: ${(props) => props.theme.colors.text.primary};\n transition-duration: 0.2s;\n transition-property: background, border, box-shadow, fill;\n }\n\n &:hover svg {\n fill: ${(props) => props.theme.colors.text.secondary};\n }\n`;\nconst TaskGroupName = styled.div`\n flex-grow: 1;\n align-items: center;\n display: flex;\n height: 50px;\n min-width: 1px;\n color: ${(props) => props.theme.colors.text.secondary};\n font-weight: 400;\n`;\n\n// HEADER\nconst ScrollContainer = styled.div`\n display: flex;\n flex: 1 1 auto;\n flex-direction: column;\n min-height: 1px;\n position: relative;\n width: 100%;\n`;\n\nconst Row = styled.div`\n box-sizing: border-box;\n flex: 0 0 auto;\n height: 37px;\n position: relative;\n`;\n\nconst RowHeaderLeft = styled.div<{ width: number }>`\n width: ${(p) => p.width}px;\n\n align-items: stretch;\n display: flex;\n flex-direction: column;\n height: 37px;\n left: 0;\n position: absolute;\n z-index: 100;\n`;\nconst RowHeaderLeftInner = styled.div`\n align-items: stretch;\n color: ${(props) => props.theme.colors.text.primary};\n display: flex;\n flex: 1 0 auto;\n font-size: 12px;\n margin-right: -1px;\n padding-left: 24px;\n`;\nconst RowHeaderLeftName = styled.div`\n position: relative;\n align-items: center;\n border-right: 1px solid #414561;\n border-top: 1px solid #414561;\n border-bottom: 1px solid #414561;\n display: flex;\n flex: 1 0 auto;\n justify-content: space-between;\n`;\n\nconst RowHeaderLeftNameText = styled.div`\n align-items: center;\n display: flex;\n`;\n\nconst RowHeaderRight = styled.div<{ left: number }>`\n left: ${(p) => p.left}px;\n right: 0px;\n height: 37px;\n position: absolute;\n`;\n\nconst RowScrollable = styled.div`\n min-width: 1px;\n overflow-x: auto;\n overflow-y: hidden;\n width: 100%;\n`;\n\nconst RowScrollContent = styled.div`\n align-items: center;\n display: inline-flex;\n height: 37px;\n width: 100%;\n`;\n\nconst RowHeaderRightContainer = styled.div`\n padding-right: 24px;\n\n align-items: stretch;\n display: flex;\n flex: 1 0 auto;\n height: 37px;\n justify-content: flex-end;\n margin: -1px 0;\n`;\n\nconst ItemWrapper = styled.div<{ width: number }>`\n width: ${(p) => p.width}px;\n align-items: center;\n border: 1px solid #414561;\n border-bottom: 0;\n box-sizing: border-box;\n cursor: pointer;\n display: inline-flex;\n flex: 0 0 auto;\n font-size: 12px;\n justify-content: space-between;\n margin-right: -1px;\n padding: 0 8px;\n position: relative;\n color: ${(props) => props.theme.colors.text.primary};\n border-bottom: 1px solid #414561;\n &:hover {\n background: ${(props) => props.theme.colors.primary};\n color: ${(props) => props.theme.colors.text.secondary};\n }\n`;\nconst ItemsContainer = styled.div`\n display: flex;\n flex-direction: row;\n height: 100%;\n width: 100%;\n & ${ItemWrapper}:last-child {\n border-right: 0;\n }\n`;\n\nconst ItemName = styled.div`\n align-items: center;\n display: flex;\n overflow: hidden;\n`;\ntype DateEditorState = {\n open: boolean;\n pos: { top: number; left: number } | null;\n task: null | Task;\n};\n\ntype ProjectEditorState = {\n open: boolean;\n pos: { top: number; left: number } | null;\n task: null | Task;\n};\nconst RIGHT_ROW_WIDTH = 327;\n\nconst Projects = () => {\n const leftRow = window.innerWidth - RIGHT_ROW_WIDTH;\n const [menuOpen, setMenuOpen] = useState(false);\n const [filters, setFilters] = useStickyState<{ sort: MyTasksSort; status: MyTasksStatus }>(\n { sort: MyTasksSort.None, status: MyTasksStatus.All },\n 'my_tasks_filter',\n );\n const { data } = useMyTasksQuery({\n variables: { sort: filters.sort, status: filters.status },\n fetchPolicy: 'cache-and-network',\n });\n const [dateEditor, setDateEditor] = useState({ open: false, pos: null, task: null });\n const onEditDueDate = (task: Task, $target: React.RefObject) => {\n if ($target && $target.current && data) {\n const pos = $target.current.getBoundingClientRect();\n setDateEditor({\n open: true,\n pos: {\n top: pos.top,\n left: pos.right,\n },\n task,\n });\n }\n };\n const [newTask, setNewTask] = useState<{ open: boolean }>({ open: false });\n const match = useRouteMatch();\n const history = useHistory();\n const [projectEditor, setProjectEditor] = useState({ open: false, pos: null, task: null });\n const onEditProject = ($target: React.RefObject) => {\n if ($target && $target.current) {\n const pos = $target.current.getBoundingClientRect();\n setProjectEditor({\n open: true,\n pos: {\n top: pos.top,\n left: pos.right,\n },\n task: null,\n });\n }\n };\n const { showPopup, hidePopup } = usePopup();\n const [updateTaskDueDate] = useUpdateTaskDueDateMutation();\n const $editorContents = useRef(null);\n const $dateContents = useRef(null);\n useEffect(() => {\n if (dateEditor.open && $dateContents.current && dateEditor.task) {\n showPopup(\n $dateContents,\n \n null}\n onDueDateChange={(task, dueDate, hasTime) => {\n if (dateEditor.task) {\n updateTaskDueDate({ variables: { taskID: dateEditor.task.id, dueDate, hasTime } });\n setDateEditor((prev) => ({ ...prev, task: { ...task, dueDate: dueDate.toISOString(), hasTime } }));\n }\n }}\n onRemoveDueDate={(task) => {\n if (dateEditor.task) {\n updateTaskDueDate({ variables: { taskID: dateEditor.task.id, dueDate: null, hasTime: false } });\n setDateEditor((prev) => ({ ...prev, task: { ...task, hasTime: false } }));\n }\n }}\n />\n ,\n { onClose: () => setDateEditor({ open: false, task: null, pos: null }) },\n );\n }\n }, [dateEditor]);\n\n const [createTask] = useCreateTaskMutation({\n update: (client, newTaskData) => {\n updateApolloCache(\n client,\n MyTasksDocument,\n (cache) =>\n produce(cache, (draftCache) => {\n if (newTaskData.data) {\n draftCache.myTasks.tasks.unshift(newTaskData.data.createTask);\n }\n }),\n { status: MyTasksStatus.All, sort: MyTasksSort.None },\n );\n },\n });\n\n const [setTaskComplete] = useSetTaskCompleteMutation();\n const [updateTaskName] = useUpdateTaskNameMutation();\n const [minified, setMinified] = useStickyState>([], 'my_tasks_minified');\n useOnOutsideClick(\n $editorContents,\n projectEditor.open,\n () =>\n setProjectEditor({\n open: false,\n task: null,\n pos: null,\n }),\n null,\n );\n if (data) {\n const groups: Array = [];\n if (filters.sort === MyTasksSort.None) {\n groups.push({\n id: 'recently-assigned',\n name: 'Recently Assigned',\n tasks: data.myTasks.tasks.map((task) => ({\n ...task,\n labels: [],\n position: 0,\n })),\n });\n } else {\n let { tasks } = data.myTasks;\n if (filters.sort === MyTasksSort.DueDate) {\n const group: Group = { id: 'due_date', name: null, tasks: [] };\n data.myTasks.tasks.forEach((task) => {\n if (task.dueDate) {\n group.tasks.push({ ...task, labels: [], position: 0 });\n }\n });\n groups.push(group);\n tasks = tasks.filter((t) => t.dueDate === null);\n }\n const projects = new Map>();\n data.myTasks.projects.forEach((p) => {\n if (!projects.has(p.projectID)) {\n projects.set(p.projectID, []);\n }\n const prev = projects.get(p.projectID);\n const task = tasks.find((t) => t.id === p.taskID);\n if (prev && task) {\n projects.set(p.projectID, [...prev, { ...task, labels: [], position: 0 }]);\n }\n });\n for (const [id, pTasks] of projects) {\n const project = data.projects.find((c) => c.id === id);\n if (pTasks.length === 0) continue;\n if (project) {\n groups.push({\n id,\n name: project.name,\n tasks: pTasks.sort((a, b) => {\n if (a.dueDate === null && b.dueDate === null) return 0;\n if (a.dueDate === null && b.dueDate !== null) return 1;\n if (a.dueDate !== null && b.dueDate === null) return -1;\n const first = dayjs(a.dueDate);\n const second = dayjs(b.dueDate);\n if (first.isSame(second, 'minute')) return 0;\n if (first.isAfter(second)) return -1;\n return 1;\n }),\n });\n }\n }\n groups.sort((a, b) => {\n if (a.name === null && b.name === null) return 0;\n if (a.name === null) return -1;\n if (b.name === null) return 1;\n return a.name.localeCompare(b.name);\n });\n }\n return (\n <>\n \n \n \n \n {\n showPopup(\n $target,\n {\n setFilters((prev) => ({ ...prev, status }));\n hidePopup();\n }}\n />,\n { width: 185 },\n );\n }}\n >\n \n {prettyStatus(filters.status)}\n \n {\n showPopup(\n $target,\n {\n setFilters((prev) => ({ ...prev, sort }));\n hidePopup();\n }}\n />,\n { width: 185 },\n );\n }}\n >\n \n {prettySort(filters.sort)}\n \n \n \n Customize\n \n \n \n \n \n \n \n \n Task name\n \n \n \n \n \n \n \n \n \n Due date\n \n \n Project\n \n \n \n \n \n \n \n \n \n \n \n {groups.map((group) => {\n const isMinified = minified.find((m) => m === group.id) ?? false;\n return (\n \n {group.name && (\n \n \n {\n setMinified((prev) => {\n if (isMinified) {\n return prev.filter((c) => c !== group.id);\n }\n return [...prev, group.id];\n });\n }}\n >\n {isMinified ? (\n \n ) : (\n \n )}\n \n {group.name}\n \n \n )}\n \n {!isMinified &&\n group.tasks.map((task) => {\n const projectID = data.myTasks.projects.find((t) => t.taskID === task.id)?.projectID;\n const projectName = data.projects.find((p) => p.id === projectID)?.name;\n return (\n {\n setTaskComplete({ variables: { taskID: task.id, complete } });\n }}\n onTaskDetails={() => {\n history.push(`${match.url}/c/${task.id}`);\n }}\n onRemoveDueDate={() => {\n updateTaskDueDate({ variables: { taskID: task.id, dueDate: null, hasTime: false } });\n }}\n project={projectName ?? 'none'}\n dueDate={task.dueDate}\n hasTime={task.hasTime ?? false}\n name={task.name}\n onEditName={(name) => updateTaskName({ variables: { taskID: task.id, name } })}\n onEditProject={onEditProject}\n onEditDueDate={($target) =>\n onEditDueDate({ ...task, position: 0, labels: [] }, $target)\n }\n />\n );\n })}\n \n \n );\n })}\n \n \n \n \n {dateEditor.open && dateEditor.pos !== null && dateEditor.task && (\n \n \n \n \n \n {dateEditor.task.dueDate\n ? dayjs(dateEditor.task.dueDate).format(dateEditor.task.hasTime ? 'MMM D [at] h:mm A' : 'MMM D')\n : ''}\n \n \n \n \n \n )}\n {projectEditor.open && projectEditor.pos !== null && (\n \n \n \n \n {\n if (action === 'input-change') {\n setMenuOpen(true);\n }\n }}\n onChange={() => setMenuOpen(false)}\n onBlur={() => setMenuOpen(false)}\n menuIsOpen={menuOpen}\n />\n \n \n \n \n )}\n {\n return (\n {\n updateTaskName({ variables: { taskID: updatedTask.id, name: newName } });\n }}\n onTaskDescriptionChange={(updatedTask, newDescription) => {\n /*\n updateTaskDescription({\n variables: { taskID: updatedTask.id, description: newDescription },\n optimisticResponse: {\n __typename: 'Mutation',\n updateTaskDescription: {\n __typename: 'Task',\n id: updatedTask.id,\n description: newDescription,\n },\n },\n });\n */\n }}\n onDeleteTask={(deletedTask) => {\n // deleteTask({ variables: { taskID: deletedTask.id } });\n history.push(`${match.url}`);\n }}\n onOpenAddLabelPopup={(task, $targetRef) => {\n /*\n taskLabelsRef.current = task.labels;\n showPopup(\n $targetRef,\n {\n toggleTaskLabel({ variables: { taskID: task.id, projectLabelID: labelID } });\n }}\n labelColors={data.labelColors}\n labels={labelsRef}\n taskLabels={taskLabelsRef}\n projectID={projectID}\n />,\n );\n */\n }}\n />\n );\n }}\n />\n \n );\n }\n return null;\n};\n\nexport default Projects;\n","import React from 'react';\n\ntype Props = {\n width: number;\n height: number;\n};\n\nconst AccessAccount = ({ width, height }: Props) => {\n return (\n \n access_account\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\nexport default AccessAccount;\n","import styled from 'styled-components';\nimport Button from 'shared/components/Button';\n\nexport const Wrapper = styled.div`\n background: #eff2f7;\n display: flex;\n justify-content: center;\n align-items: center;\n flex-wrap: wrap;\n`;\n\nexport const Column = styled.div`\n width: 50%;\n display: flex;\n justify-content: center;\n align-items: center;\n`;\n\nexport const LoginFormWrapper = styled.div`\n background: #10163a;\n width: 100%;\n`;\n\nexport const LoginFormContainer = styled.div`\n min-height: 505px;\n padding: 2rem;\n`;\n\nexport const Title = styled.h1`\n color: #ebeefd;\n font-size: 18px;\n margin-bottom: 14px;\n`;\n\nexport const SubTitle = styled.h2`\n color: #c2c6dc;\n font-size: 14px;\n margin-bottom: 14px;\n`;\nexport const Form = styled.form`\n display: flex;\n flex-direction: column;\n`;\n\nexport const FormLabel = styled.label`\n color: #c2c6dc;\n font-size: 12px;\n position: relative;\n margin-top: 14px;\n`;\n\nexport const FormTextInput = styled.input`\n width: 100%;\n background: #262c49;\n border: 1px solid rgba(0, 0, 0, 0.2);\n margin-top: 4px;\n padding: 0.7rem 1rem 0.7rem 3rem;\n font-size: 1rem;\n color: #c2c6dc;\n border-radius: 5px;\n`;\n\nexport const FormIcon = styled.div`\n top: 30px;\n left: 16px;\n position: absolute;\n`;\n\nexport const FormError = styled.span`\n font-size: 0.875rem;\n color: rgb(234, 84, 85);\n`;\n\nexport const LoginButton = styled(Button)``;\n\nexport const ActionButtons = styled.div`\n margin-top: 17.5px;\n display: flex;\n justify-content: space-between;\n`;\n\nexport const RegisterButton = styled(Button)``;\n\nexport const LogoTitle = styled.div`\n font-size: 24px;\n font-weight: 600;\n margin-left: 12px;\n transition: visibility, opacity, transform 0.25s ease;\n color: #7367f0;\n`;\n\nexport const LogoWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: row;\n position: relative;\n width: 100%;\n padding-bottom: 16px;\n margin-bottom: 24px;\n color: rgb(222, 235, 255);\n border-bottom: 1px solid rgba(65, 69, 97, 0.65);\n`;\n","import React, { useState, useEffect } from 'react';\nimport AccessAccount from 'shared/undraw/AccessAccount';\nimport { User, Lock, Taskcafe } from 'shared/icons';\nimport { useForm } from 'react-hook-form';\nimport LoadingSpinner from 'shared/components/LoadingSpinner';\nimport {\n Form,\n LogoWrapper,\n LogoTitle,\n ActionButtons,\n RegisterButton,\n FormError,\n FormIcon,\n FormLabel,\n FormTextInput,\n Wrapper,\n Column,\n LoginFormWrapper,\n LoginFormContainer,\n Title,\n SubTitle,\n} from './Styles';\n\nconst Confirm = ({ onConfirmUser, hasConfirmToken }: ConfirmProps) => {\n const [hasFailed, setFailed] = useState(false);\n const setHasFailed = () => {\n setFailed(true);\n };\n useEffect(() => {\n onConfirmUser(setHasFailed);\n });\n return (\n \n \n \n \n \n \n \n \n \n Taskcafé\n \n {hasConfirmToken ? (\n <>\n Confirming user...\n {hasFailed ? There was an error while confirming your user : }\n \n ) : (\n <>\n There is no confirmation token\n There seems to have been an error.\n \n )}\n \n \n \n \n );\n};\n\nexport default Confirm;\n","import styled from 'styled-components';\n\nexport const Container = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100vw;\n height: 100vh;\n`;\n\nexport const LoginWrapper = styled.div`\n width: 60%;\n`;\n","import React from 'react';\nimport Confirm from 'shared/components/Confirm';\nimport { useHistory, useLocation } from 'react-router';\nimport * as QueryString from 'query-string';\nimport { useCurrentUser } from 'App/context';\nimport { Container, LoginWrapper } from './Styles';\n\nconst UsersConfirm = () => {\n const history = useHistory();\n const location = useLocation();\n const params = QueryString.parse(location.search);\n const { setUser } = useCurrentUser();\n return (\n \n \n {\n fetch('/auth/confirm', {\n method: 'POST',\n body: JSON.stringify({\n confirmToken: params.confirmToken,\n }),\n })\n .then(async x => {\n const { status } = x;\n if (status === 200) {\n const response = await x.json();\n const { userID } = response;\n setUser(userID);\n history.push('/');\n } else {\n setFailed();\n }\n })\n .catch(() => {\n setFailed();\n });\n }}\n />\n \n \n );\n};\n\nexport default UsersConfirm;\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\nimport { mixin } from 'shared/utils/styles';\nimport Select from 'react-select';\nimport { ArrowLeft, Cross } from 'shared/icons';\nimport theme from '../../../App/ThemeStyles';\n\nfunction getBackgroundColor(isDisabled: boolean, isSelected: boolean, isFocused: boolean) {\n if (isDisabled) {\n return null;\n }\n if (isSelected) {\n return mixin.darken(theme.colors.bg.secondary, 0.25);\n }\n if (isFocused) {\n return mixin.darken(theme.colors.bg.secondary, 0.15);\n }\n return null;\n}\n\nconst Overlay = styled.div`\n z-index: 10000;\n background: #262c49;\n bottom: 0;\n color: #fff;\n left: 0;\n position: fixed;\n right: 0;\n top: 0;\n`;\n\nconst Content = styled.div`\n display: flex;\n flex-direction: column;\n height: 100%;\n`;\nconst Header = styled.div`\n height: 64px;\n padding: 0 24px;\n align-items: center;\n display: flex;\n flex: 0 0 auto;\n justify-content: space-between;\n transition: box-shadow 250ms;\n`;\n\nconst HeaderLeft = styled.div`\n align-items: center;\n display: flex;\n cursor: pointer;\n`;\nconst HeaderRight = styled.div`\n cursor: pointer;\n align-items: center;\n display: flex;\n`;\n\nconst Container = styled.div`\n padding: 32px 0;\n align-items: center;\n display: flex;\n flex-direction: column;\n`;\n\nconst ContainerContent = styled.div`\n width: 520px;\n display: flex;\n flex-direction: column;\n`;\n\nconst Title = styled.h1`\n font-size: 24px;\n font-weight: 500;\n color: #c2c6dc;\n margin-bottom: 25px;\n`;\n\nconst ProjectName = styled.input`\n margin: 0 0 12px;\n width: 100%;\n box-sizing: border-box;\n display: block;\n line-height: 20px;\n margin-bottom: 12px;\n padding: 8px 12px;\n background: #262c49;\n outline: none;\n color: #c2c6dc;\n\n border-radius: 3px;\n border-width: 1px;\n border-style: solid;\n border-color: transparent;\n border-image: initial;\n border-color: #414561;\n\n font-size: 16px;\n font-weight: 400;\n\n &:focus {\n background: ${(props) => mixin.darken(props.theme.colors.bg.secondary, 0.15)};\n box-shadow: ${(props) => props.theme.colors.primary} 0px 0px 0px 1px;\n }\n`;\nconst ProjectNameLabel = styled.label`\n color: #c2c6dc;\n font-size: 12px;\n margin-bottom: 4px;\n`;\nconst ProjectInfo = styled.div`\n display: flex;\n`;\n\nconst ProjectField = styled.div`\n display: flex;\n flex-direction: column;\n margin-right: 15px;\n flex-grow: 1;\n`;\nconst ProjectTeamField = styled.div`\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n`;\n\nconst colourStyles = {\n control: (styles: any, data: any) => {\n return {\n ...styles,\n backgroundColor: data.isMenuOpen ? mixin.darken(theme.colors.bg.secondary, 0.15) : theme.colors.bg.secondary,\n boxShadow: data.menuIsOpen ? `${theme.colors.primary} 0px 0px 0px 1px` : 'none',\n borderRadius: '3px',\n borderWidth: '1px',\n borderStyle: 'solid',\n borderImage: 'initial',\n borderColor: theme.colors.alternate,\n ':hover': {\n boxShadow: `${theme.colors.primary} 0px 0px 0px 1px`,\n borderRadius: '3px',\n borderWidth: '1px',\n borderStyle: 'solid',\n borderImage: 'initial',\n borderColor: theme.colors.alternate,\n },\n ':active': {\n boxShadow: `${theme.colors.primary} 0px 0px 0px 1px`,\n borderRadius: '3px',\n borderWidth: '1px',\n borderStyle: 'solid',\n borderImage: 'initial',\n borderColor: `${theme.colors.primary}`,\n },\n };\n },\n menu: (styles: any) => {\n return {\n ...styles,\n backgroundColor: mixin.darken(theme.colors.bg.secondary, 0.15),\n };\n },\n dropdownIndicator: (styles: any) => ({ ...styles, color: '#c2c6dc', ':hover': { color: '#c2c6dc' } }),\n indicatorSeparator: (styles: any) => ({ ...styles, color: '#c2c6dc' }),\n option: (styles: any, { data, isDisabled, isFocused, isSelected }: any) => {\n return {\n ...styles,\n backgroundColor: getBackgroundColor(isDisabled, isSelected, isFocused),\n color: isDisabled ? '#ccc' : isSelected ? '#fff' : '#c2c6dc', // eslint-disable-line\n cursor: isDisabled ? 'not-allowed' : 'default',\n ':active': {\n ...styles[':active'],\n backgroundColor: !isDisabled && (isSelected ? mixin.darken(theme.colors.bg.secondary, 0.25) : '#fff'),\n },\n ':hover': {\n ...styles[':hover'],\n backgroundColor: !isDisabled && (isSelected ? theme.colors.primary : theme.colors.primary),\n },\n };\n },\n placeholder: (styles: any) => ({ ...styles, color: '#c2c6dc' }),\n clearIndicator: (styles: any) => ({ ...styles, color: '#c2c6dc', ':hover': { color: '#c2c6dc' } }),\n input: (styles: any) => ({\n ...styles,\n color: '#fff',\n }),\n singleValue: (styles: any) => {\n return {\n ...styles,\n color: '#fff',\n };\n },\n};\nconst CreateButton = styled.button`\n outline: none;\n border: none;\n width: 100%;\n line-height: 20px;\n padding: 6px 12px;\n background-color: none;\n text-align: center;\n color: #c2c6dc;\n font-size: 14px;\n cursor: pointer;\n\n border-radius: 3px;\n border-width: 1px;\n border-style: solid;\n border-color: transparent;\n border-image: initial;\n border-color: #414561;\n\n &:hover {\n color: #fff;\n background: ${(props) => props.theme.colors.primary};\n border-color: ${(props) => props.theme.colors.primary};\n }\n`;\ntype NewProjectProps = {\n initialTeamID: string | null;\n teams: Array;\n onClose: () => void;\n onCreateProject: (projectName: string, teamID: string | null) => void;\n};\n\nconst NewProject: React.FC = ({ initialTeamID, teams, onClose, onCreateProject }) => {\n const [projectName, setProjectName] = useState('');\n const [team, setTeam] = useState(initialTeamID);\n const options = [{ label: 'No team', value: 'no-team' }, ...teams.map((t) => ({ label: t.name, value: t.id }))];\n return (\n \n \n
\n {\n onClose();\n }}\n >\n \n \n {\n onClose();\n }}\n >\n \n \n
\n \n \n Add project details\n \n \n Project name\n {\n setProjectName(e.currentTarget.value);\n }}\n />\n \n \n Team\n {\n setTeam(e.value);\n }}\n value={options.find((d) => d.value === team)}\n styles={colourStyles}\n classNamePrefix=\"teamSelect\"\n options={options}\n />\n \n \n {\n if (projectName !== '') {\n onCreateProject(projectName, team === 'no-team' ? null : team);\n }\n }}\n >\n Create project\n \n \n \n
\n
\n );\n};\n\nexport default NewProject;\n","import React, { useState, useEffect } from 'react';\nimport styled from 'styled-components/macro';\nimport GlobalTopNavbar from 'App/TopNavbar';\nimport Empty from 'shared/undraw/Empty';\nimport {\n useCreateTeamMutation,\n useGetProjectsQuery,\n useCreateProjectMutation,\n GetProjectsDocument,\n GetProjectsQuery,\n} from 'shared/generated/graphql';\n\nimport { Link } from 'react-router-dom';\nimport NewProject from 'shared/components/NewProject';\nimport { useCurrentUser } from 'App/context';\nimport Button from 'shared/components/Button';\nimport { usePopup, Popup } from 'shared/components/PopupMenu';\nimport { useForm } from 'react-hook-form';\nimport ControlledInput from 'shared/components/ControlledInput';\nimport updateApolloCache from 'shared/utils/cache';\nimport produce from 'immer';\nimport NOOP from 'shared/utils/noop';\nimport theme from 'App/ThemeStyles';\nimport polling from 'shared/utils/polling';\nimport { mixin } from '../shared/utils/styles';\n\ntype CreateTeamData = { name: string };\n\ntype CreateTeamFormProps = {\n onCreateTeam: (teamName: string) => void;\n};\n\nconst CreateTeamFormContainer = styled.form``;\n\nconst CreateTeamButton = styled(Button)`\n width: 100%;\n`;\n\nconst ErrorText = styled.span`\n font-size: 14px;\n color: ${(props) => props.theme.colors.danger};\n`;\nconst CreateTeamForm: React.FC = ({ onCreateTeam }) => {\n const {\n register,\n handleSubmit,\n formState: { errors },\n } = useForm();\n const createTeam = (data: CreateTeamData) => {\n onCreateTeam(data.name);\n };\n return (\n \n {errors.name && {errors.name.message}}\n \n Create\n \n );\n};\n\nconst ProjectAddTile = styled.div`\n background-color: ${(props) => mixin.rgba(props.theme.colors.bg.primary, 0.4)};\n background-size: cover;\n background-position: 50%;\n color: #fff;\n line-height: 20px;\n padding: 8px;\n position: relative;\n text-decoration: none;\n\n border-radius: 3px;\n display: block;\n`;\n\nconst ProjectTile = styled(Link)<{ color: string }>`\n background-color: ${(props) => props.color};\n background-size: cover;\n background-position: 50%;\n color: #fff;\n line-height: 20px;\n padding: 8px;\n position: relative;\n text-decoration: none;\n\n border-radius: 3px;\n display: block;\n`;\n\nconst ProjectTileFade = styled.div`\n background-color: rgba(0, 0, 0, 0.15);\n bottom: 0;\n left: 0;\n position: absolute;\n right: 0;\n top: 0;\n`;\n\nconst ProjectListItem = styled.li`\n width: 23.5%;\n padding: 0;\n margin: 0 2% 2% 0;\n\n box-sizing: border-box;\n position: relative;\n cursor: pointer;\n\n &:hover ${ProjectTileFade} {\n background-color: rgba(0, 0, 0, 0.25);\n }\n`;\n\nconst ProjectList = styled.ul`\n display: flex;\n flex-wrap: wrap;\n\n & ${ProjectListItem}:nth-of-type(4n) {\n margin-right: 0;\n }\n`;\n\nconst ProjectTileDetails = styled.div`\n display: flex;\n height: 80px;\n position: relative;\n flex-direction: column;\n justify-content: space-between;\n`;\n\nconst ProjectAddTileDetails = styled.div`\n display: flex;\n height: 80px;\n position: relative;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n`;\n\nconst ProjectTileName = styled.div<{ centered?: boolean }>`\n flex: 0 0 auto;\n font-size: 16px;\n font-weight: 700;\n display: inline-block;\n overflow: hidden;\n max-height: 40px;\n width: 100%;\n word-wrap: break-word;\n ${(props) => props.centered && 'text-align: center;'}\n`;\n\nconst Wrapper = styled.div`\n position: relative;\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n justify-content: center;\n overflow-y: auto;\n`;\n\nconst ProjectSectionTitleWrapper = styled.div`\n align-items: center;\n display: flex;\n justify-content: space-between;\n height: 32px;\n margin-bottom: 24px;\n padding: 8px 0;\n position: relative;\n margin-top: 16px;\n`;\n\nconst SectionActions = styled.div`\n display: flex;\n align-items: center;\n`;\n\nconst SectionAction = styled(Button)`\n padding: 6px 12px;\n`;\n\nconst SectionActionLink = styled(Link)`\n margin-right: 8px;\n`;\n\nconst ProjectSectionTitle = styled.h3`\n font-size: 16px;\n color: ${(props) => props.theme.colors.text.primary};\n`;\n\nconst ProjectsContainer = styled.div`\n margin: 40px 16px 0;\n width: 100%;\n max-width: 825px;\n min-width: 288px;\n`;\n\nconst AddTeamButton = styled(Button)`\n padding: 6px 12px;\n position: absolute;\n top: 6px;\n right: 12px;\n`;\n\ntype ShowNewProject = {\n open: boolean;\n initialTeamID: null | string;\n};\n\nconst Projects = () => {\n const { showPopup, hidePopup } = usePopup();\n const { loading, data } = useGetProjectsQuery({ pollInterval: polling.PROJECTS, fetchPolicy: 'cache-and-network' });\n useEffect(() => {\n document.title = 'Taskcafé';\n }, []);\n const [createProject] = useCreateProjectMutation({\n update: (client, newProject) => {\n updateApolloCache(client, GetProjectsDocument, (cache) =>\n produce(cache, (draftCache) => {\n if (newProject.data) {\n draftCache.projects.push({ ...newProject.data.createProject });\n }\n }),\n );\n },\n });\n\n const [showNewProject, setShowNewProject] = useState({ open: false, initialTeamID: null });\n const { user } = useCurrentUser();\n const [createTeam] = useCreateTeamMutation({\n update: (client, createData) => {\n updateApolloCache(client, GetProjectsDocument, (cache) =>\n produce(cache, (draftCache) => {\n if (createData.data) {\n draftCache.teams.push({ ...createData.data?.createTeam });\n }\n }),\n );\n },\n });\n\n const colors = theme.colors.multiColors;\n if (data && user) {\n const { projects, teams, organizations } = data;\n const organizationID = organizations[0].id ?? null;\n const personalProjects = projects\n .filter((p) => p.team === null)\n .sort((a, b) => {\n const textA = a.name.toUpperCase();\n const textB = b.name.toUpperCase();\n return textA < textB ? -1 : textA > textB ? 1 : 0; // eslint-disable-line no-nested-ternary\n });\n const projectTeams = teams\n .sort((a, b) => {\n const textA = a.name.toUpperCase();\n const textB = b.name.toUpperCase();\n return textA < textB ? -1 : textA > textB ? 1 : 0; // eslint-disable-line no-nested-ternary\n })\n .map((team) => {\n return {\n id: team.id,\n name: team.name,\n projects: projects\n .filter((project) => project.team && project.team.id === team.id)\n .sort((a, b) => {\n const textA = a.name.toUpperCase();\n const textB = b.name.toUpperCase();\n return textA < textB ? -1 : textA > textB ? 1 : 0; // eslint-disable-line no-nested-ternary\n }),\n };\n });\n return (\n <>\n \n \n \n {true && ( // TODO: add permision check\n {\n showPopup(\n $target,\n {\n hidePopup();\n }}\n >\n {\n if (organizationID) {\n createTeam({ variables: { name: teamName, organizationID } });\n hidePopup();\n }\n }}\n />\n ,\n );\n }}\n >\n Add Team\n \n )}\n
\n \n Personal Projects\n \n \n {personalProjects.map((project, idx) => (\n \n \n \n \n {project.name}\n \n \n \n ))}\n \n {\n setShowNewProject({ open: true, initialTeamID: 'no-team' });\n }}\n >\n \n \n Create new project\n \n \n \n \n
\n {projectTeams.map((team) => {\n return (\n
\n \n {team.name}\n {true && ( // TODO: add permision check\n \n \n Projects\n \n \n Members\n \n \n Settings\n \n \n )}\n \n \n {team.projects.map((project, idx) => (\n \n \n \n \n {project.name}\n \n \n \n ))}\n {true && ( // TODO: add permision check\n \n {\n setShowNewProject({ open: true, initialTeamID: team.id });\n }}\n >\n \n \n Create new project\n \n \n \n )}\n \n
\n );\n })}\n {showNewProject.open && (\n {\n if (user) {\n createProject({ variables: { teamID, name } });\n setShowNewProject({ open: false, initialTeamID: null });\n }\n }}\n onClose={() => {\n setShowNewProject({ open: false, initialTeamID: null });\n }}\n teams={teams}\n />\n )}\n
\n
\n \n );\n }\n return ;\n};\n\nexport default Projects;\n","import React from 'react';\n\nimport styled from 'styled-components';\nimport Button from 'shared/components/Button';\n\nexport const ListActionsWrapper = styled.ul`\n list-style-type: none;\n margin: 0 12px;\n padding: 0;\n`;\n\nexport const ListActionItemWrapper = styled.li`\n margin: 0;\n padding: 0;\n`;\nexport const ListActionItem = styled.span`\n cursor: pointer;\n display: block;\n font-size: 14px;\n color: #c2c6dc;\n font-weight: 400;\n padding: 6px 12px;\n position: relative;\n margin: 0 -12px;\n text-decoration: none;\n &:hover {\n background: ${props => props.theme.colors.primary};\n }\n`;\n\nexport const ListSeparator = styled.hr`\n background-color: #414561;\n border: 0;\n height: 1px;\n margin: 8px 0;\n padding: 0;\n width: 100%;\n`;\n\ntype Props = {\n publicOn: null | string;\n onDeleteProject: () => void;\n onToggleProjectVisible: (visible: boolean) => void;\n};\nconst ProjectSettings: React.FC = ({ publicOn, onDeleteProject, onToggleProjectVisible }) => {\n return (\n <>\n \n onToggleProjectVisible(publicOn === null)}>\n {`Make ${publicOn === null ? 'public' : 'private'}`}\n \n onDeleteProject()}>\n Delete Project\n \n \n \n );\n};\n\ntype TeamSettingsProps = {\n onDeleteTeam: () => void;\n};\nexport const TeamSettings: React.FC = ({ onDeleteTeam }) => {\n return (\n <>\n \n onDeleteTeam()}>\n Delete Team\n \n \n \n );\n};\n\nconst ConfirmWrapper = styled.div``;\n\nconst ConfirmSubTitle = styled.h3`\n font-size: 14px;\n`;\n\nconst ConfirmDescription = styled.div`\n margin: 0 12px;\n font-size: 14px;\n`;\n\nconst DeleteList = styled.ul`\n margin-bottom: 12px;\n`;\nconst DeleteListItem = styled.li`\n padding: 6px 0;\n list-style: disc;\n margin-left: 16px;\n`;\n\nconst ConfirmDeleteButton = styled(Button)`\n width: 100%;\n padding: 6px 12px;\n`;\n\ntype DeleteConfirmProps = {\n description: string;\n deletedItems: Array;\n onConfirmDelete: () => void;\n};\n\nexport const DELETE_INFO = {\n DELETE_PROJECTS: {\n description: 'Deleting the project will also delete the following:',\n deletedItems: ['Task groups and tasks'],\n },\n DELETE_TEAMS: {\n description: 'Deleting the team will also delete the following:',\n deletedItems: ['Projects under the team', 'All task groups & tasks associated with the team projects'],\n },\n};\n\nconst DeleteConfirm: React.FC = ({ description, deletedItems, onConfirmDelete }) => {\n return (\n \n \n {description}\n \n {deletedItems.map(item => (\n {item}\n ))}\n \n \n onConfirmDelete()} color=\"danger\">\n Delete\n \n \n );\n};\n\ntype PublicConfirmProps = {\n onConfirm: () => void;\n};\n\nconst PublicConfirm: React.FC = ({ onConfirm }) => {\n return (\n \n Public projects can be accessed by anyone with a link to the project.\n onConfirm()}>Make public\n \n );\n};\n\nexport { DeleteConfirm, PublicConfirm };\nexport default ProjectSettings;\n","import React, { useState } from 'react';\nimport ProjectSettings, { DeleteConfirm, DELETE_INFO, PublicConfirm } from 'shared/components/ProjectSettings';\nimport {\n useDeleteProjectMutation,\n GetProjectsDocument,\n useToggleProjectVisibilityMutation,\n} from 'shared/generated/graphql';\nimport { usePopup, Popup } from 'shared/components/PopupMenu';\nimport produce from 'immer';\n\ntype ProjectPopupProps = {\n history: any;\n name: string;\n publicOn: string | null;\n projectID: string;\n};\n\nconst ProjectPopup: React.FC = ({ history, name, projectID, publicOn: initialPublicOn }) => {\n const { hidePopup, setTab } = usePopup();\n const [publicOn, setPublicOn] = useState(initialPublicOn);\n const [toggleProjectVisibility] = useToggleProjectVisibilityMutation({\n onCompleted: data => {\n setPublicOn(data.toggleProjectVisibility.project.publicOn);\n },\n });\n const [deleteProject] = useDeleteProjectMutation({\n update: (client, deleteData) => {\n const cacheData: any = client.readQuery({\n query: GetProjectsDocument,\n });\n\n const newData = produce(cacheData, (draftState: any) => {\n draftState.projects = draftState.projects.filter(\n (project: any) => project.id !== deleteData.data?.deleteProject.project.id,\n );\n });\n\n client.writeQuery({\n query: GetProjectsDocument,\n data: {\n ...newData,\n },\n });\n },\n });\n return (\n <>\n \n {\n if (visible) {\n setTab(2, { width: 300 });\n } else {\n toggleProjectVisibility({ variables: { projectID, isPublic: false } });\n }\n }}\n onDeleteProject={() => {\n setTab(1, { width: 300 });\n }}\n />\n \n \n {\n if (projectID) {\n toggleProjectVisibility({ variables: { projectID, isPublic: true } });\n }\n }}\n />\n \n \n {\n if (projectID) {\n deleteProject({ variables: { projectID } });\n hidePopup();\n history.push('/projects');\n }\n }}\n />\n \n \n );\n};\n\nexport default ProjectPopup;\n","import React from 'react';\n\nconst useStateWithLocalStorage = (localStorageKey: string): [string, React.Dispatch>] => {\n const [value, setValue] = React.useState(localStorage.getItem(localStorageKey) || '');\n\n React.useEffect(() => {\n localStorage.setItem(localStorageKey, value);\n }, [value]);\n\n return [value, setValue];\n};\n\nexport default useStateWithLocalStorage;\n","const localStorage = {\n CARD_LABEL_VARIANT_STORAGE_KEY: 'card_label_variant',\n};\n\nexport default localStorage;\n","import styled, { keyframes, css } from 'styled-components';\n\nexport const Wrapper = styled.div<{ open: boolean }>`\n background: rgba(0, 0, 0, 0.55);\n bottom: 0;\n color: #fff;\n left: 0;\n position: fixed;\n right: 0;\n top: 0;\n z-index: 100;\n visibility: ${props => (props.open ? 'show' : 'hidden')};\n`;\n\nexport const Container = styled.div<{ fixed: boolean; width: number; top: number; left: number }>`\n position: absolute;\n width: ${props => props.width}px;\n top: ${props => props.top}px;\n left: ${props => props.left}px;\n\n ${props =>\n props.fixed &&\n css`\n top: auto;\n bottom: ${props.top}px;\n `}\n`;\n\nexport const SaveButton = styled.button`\n cursor: pointer;\n background: ${props => props.theme.colors.primary};\n box-shadow: none;\n border: none;\n color: #fff;\n font-weight: 400;\n line-height: 20px;\n margin-top: 8px;\n margin-right: 4px;\n padding: 6px 24px;\n text-align: center;\n border-radius: 3px;\n`;\n\nexport const FadeInAnimation = keyframes`\nfrom { opacity: 0; transform: translateX(-20px); }\nto { opacity: 1; transform: translateX(0); }\n`;\n\nexport const EditorButtons = styled.div<{ fixed: boolean }>`\n left: 100%;\n position: absolute;\n top: 0;\n width: 240px;\n z-index: 0;\n animation: ${FadeInAnimation} 85ms ease-in 1;\n ${props =>\n props.fixed &&\n css`\n top: auto;\n bottom: 8px;\n `}\n`;\n\nexport const EditorButton = styled.div`\n cursor: pointer;\n background: rgba(0, 0, 0, 0.6);\n border-radius: 3px;\n clear: both;\n color: #c2c6dc;\n display: block;\n float: left;\n margin: 0 0 4px 8px;\n padding: 6px 12px 6px 8px;\n text-decoration: none;\n transition: all 85ms ease-in;\n\n &:hover {\n transform: translateX(5px);\n background: rgba(0, 0, 0, 1);\n color: #fff;\n }\n`;\n\nexport const CloseButton = styled.div`\n padding: 9px;\n position: absolute;\n right: 0;\n top: 0;\n\n display: flex;\n align-items: center;\n justify-content: center;\n border-radius: 3px;\n opacity: 0.8;\n z-index: 40;\n cursor: pointer;\n`;\n","import styled, { css, keyframes } from 'styled-components';\nimport { mixin } from 'shared/utils/styles';\nimport TextareaAutosize from 'react-autosize-textarea';\nimport { CheckCircle, CheckSquareOutline, Clock } from 'shared/icons';\nimport TaskAssignee from 'shared/components/TaskAssignee';\n\nexport const CardMember = styled(TaskAssignee)<{ zIndex: number }>`\n box-shadow: 0 0 0 2px ${props => props.theme.colors.bg.secondary},\n inset 0 0 0 1px ${props => mixin.rgba(props.theme.colors.bg.secondary, 0.07)};\n z-index: ${props => props.zIndex};\n position: relative;\n`;\n\nexport const ChecklistIcon = styled(CheckSquareOutline)<{ color: 'success' | 'normal' }>`\n ${props =>\n props.color === 'success' &&\n css`\n fill: ${props.theme.colors.success};\n stroke: ${props.theme.colors.success};\n `}\n`;\n\nexport const ClockIcon = styled(Clock)<{ color: string }>`\n fill: ${props => props.color};\n`;\n\nexport const EditorTextarea = styled(TextareaAutosize)`\n overflow: hidden;\n overflow-wrap: break-word;\n resize: none;\n height: 54px;\n width: 100%;\n\n background: none;\n border: none;\n box-shadow: none;\n margin-bottom: 4px;\n max-height: 162px;\n min-height: 54px;\n padding: 0;\n font-size: 14px;\n line-height: 18px;\n color: ${props => props.theme.colors.text.primary};\n &:focus {\n border: none;\n outline: none;\n }\n`;\n\nexport const ListCardBadges = styled.div`\n float: left;\n display: flex;\n max-width: 100%;\n margin-left: -2px;\n`;\n\nexport const ListCardBadge = styled.div`\n color: #5e6c84;\n display: flex;\n align-items: center;\n margin: 0 6px 4px 0;\n font-size: 12px;\n max-width: 100%;\n min-height: 20px;\n overflow: hidden;\n position: relative;\n padding: 2px;\n text-decoration: none;\n text-overflow: ellipsis;\n vertical-align: top;\n`;\n\nexport const DescriptionBadge = styled(ListCardBadge)`\n padding-right: 6px;\n`;\n\nexport const DueDateCardBadge = styled(ListCardBadge)<{ isPastDue: boolean }>`\n font-size: 12px;\n ${props =>\n props.isPastDue &&\n css`\n padding-left: 4px;\n background-color: #ec9488;\n border-radius: 3px;\n color: #fff;\n `}\n`;\n\nexport const ListCardBadgeText = styled.span<{ color?: 'success' | 'normal' }>`\n font-size: 12px;\n padding: 0 4px 0 6px;\n vertical-align: top;\n white-space: nowrap;\n ${props => props.color === 'success' && `color: ${props.theme.colors.success};`}\n`;\n\nexport const ListCardContainer = styled.div<{ isActive: boolean; editable: boolean }>`\n max-width: 256px;\n margin-bottom: 8px;\n border-radius: 3px;\n ${mixin.boxShadowCard}\n cursor: pointer !important;\n position: relative;\n\n background-color: ${props =>\n props.isActive && !props.editable\n ? mixin.darken(props.theme.colors.bg.secondary, 0.1)\n : `${props.theme.colors.bg.secondary}`};\n`;\n\nexport const ListCardInnerContainer = styled.div`\n width: 100%;\n height: 100%;\n`;\n\nexport const ListCardDetails = styled.div<{ complete: boolean }>`\n overflow: hidden;\n padding: 6px 8px 2px;\n position: relative;\n z-index: 10;\n\n ${props => props.complete && 'opacity: 0.6;'}\n`;\n\nconst labelVariantExpandAnimation = keyframes`\n 0% {min-width: 40px; width: 40px; height: 8px;}\n 50% {min-width: 56px; width: auto; height: 8px;}\n 100% {min-width: 56px; width: auto; height: 16px;}\n`;\n\nconst labelTextVariantExpandAnimation = keyframes`\n 0% {transform: scale(0); visibility: hidden; pointer-events: none;}\n 75% {transform: scale(0); visibility: hidden; pointer-events: none;}\n 100% {transform: scale(1); visibility: visible; pointer-events: all;}\n`;\n\nconst labelVariantShrinkAnimation = keyframes`\n 0% {min-width: 56px; width: auto; height: 16px;}\n 50% {min-width: 56px; width: auto; height: 8px;}\n 100% {min-width: 40px; width: 40px; height: 8px;}\n`;\n\nconst labelTextVariantShrinkAnimation = keyframes`\n 0% {transform: scale(1); visibility: visible; pointer-events: all;}\n 75% {transform: scale(0); visibility: hidden; pointer-events: none;}\n 100% {transform: scale(0); visibility: hidden; pointer-events: none;}\n`;\nexport const ListCardLabelText = styled.span`\n font-size: 12px;\n font-weight: 700;\n line-height: 16px;\n`;\n\nexport const ListCardLabelsWrapper = styled.div`\n overflow: auto;\n position: relative;\n`;\n\nexport const ListCardLabel = styled.span<{ variant: 'small' | 'large' }>`\n ${props =>\n props.variant === 'small'\n ? css`\n height: 8px;\n min-width: 40px;\n width: 40px;\n & ${ListCardLabelText} {\n transform: scale(0);\n visibility: hidden;\n pointer-events: none;\n }\n `\n : css`\n height: 16px;\n min-width: 56px;\n width: auto;\n `}\n\n padding: 0 8px;\n max-width: 198px;\n float: left;\n margin: 0 4px 4px 0;\n border-radius: 4px;\n color: #fff;\n display: flex;\n position: relative;\n background-color: ${props => props.color};\n`;\n\nexport const ListCardLabels = styled.div<{ toggleLabels: boolean; toggleDirection: 'expand' | 'shrink' }>`\n &:hover {\n opacity: 0.8;\n }\n ${props =>\n props.toggleLabels &&\n props.toggleDirection === 'expand' &&\n css`\n & ${ListCardLabel} {\n animation: ${labelVariantExpandAnimation} 0.45s ease-out;\n }\n & ${ListCardLabelText} {\n animation: ${labelTextVariantExpandAnimation} 0.45s ease-out;\n }\n `}\n ${props =>\n props.toggleLabels &&\n props.toggleDirection === 'shrink' &&\n css`\n & ${ListCardLabel} {\n animation: ${labelVariantShrinkAnimation} 0.45s ease-out;\n }\n & ${ListCardLabelText} {\n animation: ${labelTextVariantShrinkAnimation} 0.45s ease-out;\n }\n `}\n`;\nexport const ListCardOperation = styled.span`\n display: flex;\n align-content: center;\n justify-content: center;\n border-radius: 3px;\n opacity: 0.8;\n padding: 6px;\n position: absolute;\n right: 2px;\n top: 2px;\n z-index: 100;\n &:hover {\n background-color: ${props => mixin.darken(props.theme.colors.bg.secondary, 0.25)};\n }\n`;\n\nexport const CardTitle = styled.div`\n clear: both;\n margin: 0 0 4px;\n overflow: hidden;\n text-decoration: none;\n color: ${props => props.theme.colors.text.primary};\n display: block;\n align-items: center;\n`;\nexport const CardTitleText = styled.span`\n word-wrap: break-word;\n line-height: 18px;\n font-size: 14px;\n`;\n\nexport const CardMembers = styled.div`\n float: right;\n margin: 0 -2px 4px 0;\n display: flex;\n`;\n\nexport const CompleteIcon = styled(CheckCircle)`\n fill: ${props => props.theme.colors.success};\n margin-right: 4px;\n flex-shrink: 0;\n margin-bottom: -2px;\n`;\n\nexport const EditorContent = styled.div`\n display: flex;\n`;\n","import React, { useState, useRef, useEffect } from 'react';\nimport { Pencil, Eye, List } from 'shared/icons';\nimport {\n EditorTextarea,\n CardMember,\n EditorContent,\n ChecklistIcon,\n CompleteIcon,\n DescriptionBadge,\n DueDateCardBadge,\n ListCardBadges,\n ListCardBadge,\n ListCardBadgeText,\n ListCardContainer,\n ListCardInnerContainer,\n ListCardDetails,\n ClockIcon,\n ListCardLabels,\n ListCardLabel,\n ListCardLabelText,\n ListCardLabelsWrapper,\n ListCardOperation,\n CardTitle,\n CardMembers,\n CardTitleText,\n} from './Styles';\n\ntype DueDate = {\n isPastDue: boolean;\n formattedDate: string;\n};\n\ntype Checklist = {\n complete: number;\n total: number;\n};\n\ntype Props = {\n title: string;\n taskID: string;\n taskGroupID: string;\n complete?: boolean;\n position?: string | number;\n onContextMenu?: ($target: React.RefObject, taskID: string, taskGroupID: string) => void;\n onClick?: (e: React.MouseEvent) => void;\n description?: null | string;\n dueDate?: DueDate;\n checklists?: Checklist | null;\n labels?: Array;\n watched?: boolean;\n wrapperProps?: any;\n members?: Array | null;\n onCardLabelClick?: () => void;\n onCardMemberClick?: OnCardMemberClick;\n editable?: boolean;\n setToggleLabels?: (toggle: false) => void;\n onEditCard?: (taskGroupID: string, taskID: string, cardName: string) => void;\n onCardTitleChange?: (name: string) => void;\n labelVariant?: CardLabelVariant;\n toggleLabels?: boolean;\n isPublic?: boolean;\n toggleDirection?: 'shrink' | 'expand';\n};\n\nconst Card = React.forwardRef(\n (\n {\n isPublic = false,\n wrapperProps,\n onContextMenu,\n taskID,\n taskGroupID,\n complete,\n toggleLabels = false,\n toggleDirection = 'shrink',\n setToggleLabels,\n onClick,\n labels,\n title,\n dueDate,\n description,\n checklists,\n position,\n watched,\n members,\n labelVariant,\n onCardMemberClick,\n editable,\n onCardLabelClick,\n onEditCard,\n onCardTitleChange,\n }: Props,\n $cardRef: any,\n ) => {\n const [currentCardTitle, setCardTitle] = useState(title);\n const $editorRef: any = useRef();\n\n useEffect(() => {\n setCardTitle(title);\n }, [title]);\n\n useEffect(() => {\n if ($editorRef && $editorRef.current) {\n $editorRef.current.focus();\n $editorRef.current.select();\n }\n }, []);\n\n const handleKeyDown = (e: any) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n if (onEditCard) {\n onEditCard(taskGroupID, taskID, currentCardTitle);\n }\n }\n };\n const [isActive, setActive] = useState(false);\n const $innerCardRef: any = useRef(null);\n const onOpenComposer = () => {\n if (onContextMenu) {\n onContextMenu($innerCardRef, taskID, taskGroupID);\n }\n };\n const onTaskContext = (e: React.MouseEvent) => {\n if (!isPublic) {\n e.preventDefault();\n e.stopPropagation();\n onOpenComposer();\n }\n };\n const onOperationClick = (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n onOpenComposer();\n };\n return (\n setActive(true)}\n onMouseLeave={() => setActive(false)}\n ref={$cardRef}\n onClick={e => {\n if (onClick) {\n onClick(e);\n }\n }}\n onContextMenu={onTaskContext}\n isActive={isActive}\n editable={editable}\n {...wrapperProps}\n >\n \n {!isPublic && isActive && !editable && (\n {\n e.stopPropagation();\n if (onContextMenu) {\n onContextMenu($innerCardRef, taskID, taskGroupID);\n }\n }}\n >\n \n \n )}\n \n {labels && labels.length !== 0 && (\n \n {\n e.stopPropagation();\n if (onCardLabelClick) {\n onCardLabelClick();\n }\n }}\n >\n {labels\n .slice()\n .sort((a, b) => a.labelColor.position - b.labelColor.position)\n .map(label => (\n {\n if (setToggleLabels) {\n setToggleLabels(false);\n }\n }}\n variant={labelVariant ?? 'large'}\n color={label.labelColor.colorHex}\n key={label.id}\n >\n {label.name}\n \n ))}\n \n \n )}\n {editable ? (\n \n {complete && }\n {\n setCardTitle(e.currentTarget.value);\n if (onCardTitleChange) {\n onCardTitleChange(e.currentTarget.value);\n }\n }}\n onClick={e => {\n e.stopPropagation();\n }}\n onKeyDown={handleKeyDown}\n value={currentCardTitle}\n ref={$editorRef}\n />\n \n ) : (\n \n {complete && }\n {`${title}${position ? ` - ${position}` : ''}`}\n \n )}\n \n {watched && (\n \n \n \n )}\n {dueDate && (\n \n \n {dueDate.formattedDate}\n \n )}\n {description && (\n \n \n \n )}\n {checklists && (\n \n \n \n {`${checklists.complete}/${checklists.total}`}\n \n \n )}\n \n \n {members &&\n members.map((member, idx) => (\n {\n if (onCardMemberClick) {\n onCardMemberClick($target, taskID, member.id);\n }\n }}\n />\n ))}\n \n \n \n \n );\n },\n);\n\nCard.displayName = 'Card';\n\nexport default Card;\n","import dayjs from 'dayjs';\n\nexport enum TaskSortingType {\n NONE,\n COMPLETE,\n DUE_DATE,\n MEMBERS,\n LABELS,\n TASK_TITLE,\n}\n\nexport enum TaskSortingDirection {\n ASC,\n DESC,\n}\n\nexport type TaskSorting = {\n type: TaskSortingType;\n direction: TaskSortingDirection;\n};\n\nexport function sortString(a: string, b: string) {\n if (a < b) {\n return -1;\n }\n if (a > b) {\n return 1;\n }\n return 0;\n}\n\nexport function sortTasks(a: Task, b: Task, taskSorting: TaskSorting) {\n if (taskSorting.type === TaskSortingType.TASK_TITLE) {\n if (a.name < b.name) {\n return -1;\n }\n if (a.name > b.name) {\n return 1;\n }\n return 0;\n }\n if (taskSorting.type === TaskSortingType.DUE_DATE) {\n if (a.dueDate && !b.dueDate) {\n return -1;\n }\n if (b.dueDate && !a.dueDate) {\n return 1;\n }\n return dayjs(a.dueDate).diff(dayjs(b.dueDate));\n }\n if (taskSorting.type === TaskSortingType.COMPLETE) {\n if (a.complete && !b.complete) {\n return -1;\n }\n if (b.complete && !a.complete) {\n return 1;\n }\n return 0;\n }\n if (taskSorting.type === TaskSortingType.LABELS) {\n // sorts non-empty labels by name, then by empty label color name\n let aLabels = [];\n let bLabels = [];\n let aLabelsEmpty = [];\n let bLabelsEmpty = [];\n if (a.labels) {\n for (const aLabel of a.labels) {\n if (aLabel.projectLabel.name && aLabel.projectLabel.name !== '') {\n aLabels.push(aLabel.projectLabel.name);\n } else {\n aLabelsEmpty.push(aLabel.projectLabel.labelColor.name);\n }\n }\n }\n if (b.labels) {\n for (const bLabel of b.labels) {\n if (bLabel.projectLabel.name && bLabel.projectLabel.name !== '') {\n bLabels.push(bLabel.projectLabel.name);\n } else {\n bLabelsEmpty.push(bLabel.projectLabel.labelColor.name);\n }\n }\n }\n aLabels = aLabels.sort((aLabel, bLabel) => sortString(aLabel, bLabel));\n bLabels = bLabels.sort((aLabel, bLabel) => sortString(aLabel, bLabel));\n aLabelsEmpty = aLabelsEmpty.sort((aLabel, bLabel) => sortString(aLabel, bLabel));\n bLabelsEmpty = bLabelsEmpty.sort((aLabel, bLabel) => sortString(aLabel, bLabel));\n if (aLabelsEmpty.length !== 0 || bLabelsEmpty.length !== 0) {\n if (aLabelsEmpty.length > bLabelsEmpty.length) {\n if (bLabels.length !== 0) {\n return 1;\n }\n return -1;\n }\n }\n if (aLabels.length < bLabels.length) {\n return 1;\n }\n if (aLabels.length > bLabels.length) {\n return -1;\n }\n return 0;\n }\n if (taskSorting.type === TaskSortingType.MEMBERS) {\n let aMembers = [];\n let bMembers = [];\n if (a.assigned) {\n for (const aMember of a.assigned) {\n if (aMember.fullName) {\n aMembers.push(aMember.fullName);\n }\n }\n }\n if (b.assigned) {\n for (const bMember of b.assigned) {\n if (bMember.fullName) {\n bMembers.push(bMember.fullName);\n }\n }\n }\n aMembers = aMembers.sort((aMember, bMember) => sortString(aMember, bMember));\n bMembers = bMembers.sort((aMember, bMember) => sortString(aMember, bMember));\n if (aMembers.length < bMembers.length) {\n return 1;\n }\n if (aMembers.length > bMembers.length) {\n return -1;\n }\n return 0;\n }\n return 0;\n}\n","import React, { useRef, useState } from 'react';\nimport Cross from 'shared/icons/Cross';\nimport styled from 'styled-components';\nimport { Wrapper, Container, EditorButtons, SaveButton, EditorButton, CloseButton } from './Styles';\nimport Card from '../Card';\n\nexport const CardMembers = styled.div`\n position: absolute;\n right: 0;\n bottom: 0;\n`;\n\ntype Props = {\n task: Task;\n onCloseEditor: () => void;\n onEditCard: (taskGroupID: string, taskID: string, cardName: string) => void;\n onToggleComplete: (task: Task) => void;\n onOpenLabelsPopup: ($targetRef: React.RefObject, task: Task) => void;\n onOpenMembersPopup: ($targetRef: React.RefObject, task: Task) => void;\n onOpenDueDatePopup: ($targetRef: React.RefObject, task: Task) => void;\n onArchiveCard: (taskGroupID: string, taskID: string) => void;\n onCardMemberClick?: OnCardMemberClick;\n target: React.RefObject;\n};\n\nconst QuickCardEditor = ({\n task,\n onCloseEditor,\n onOpenLabelsPopup,\n onOpenMembersPopup,\n onOpenDueDatePopup,\n onToggleComplete,\n onCardMemberClick,\n onArchiveCard,\n onEditCard,\n target: $target,\n}: Props) => {\n const [currentCardTitle, setCardTitle] = useState(task.name);\n const $labelsRef: any = useRef();\n const $dueDate: any = useRef();\n const $membersRef: any = useRef();\n\n const handleCloseEditor = (e: any) => {\n e.stopPropagation();\n onCloseEditor();\n };\n\n const height = 180;\n const saveCardButtonBarHeight = 48;\n let top = 0;\n let left = 0;\n let width = 272;\n let fixed = false;\n if ($target && $target.current) {\n const pos = $target.current.getBoundingClientRect();\n top = pos.top;\n left = pos.left;\n width = pos.width;\n const isFixed = window.innerHeight / 2 < pos.top;\n if (isFixed) {\n top = window.innerHeight - pos.bottom - saveCardButtonBarHeight;\n fixed = true;\n }\n }\n\n return (\n \n \n \n \n \n {\n onEditCard(taskGroupID, taskID, name);\n onCloseEditor();\n }}\n complete={task.complete ?? false}\n members={task.assigned}\n taskID={task.id}\n taskGroupID={task.taskGroup.id}\n labels={task.labels.map(l => l.projectLabel)}\n />\n onEditCard(task.taskGroup.id, task.id, currentCardTitle)}>Save\n \n {\n e.stopPropagation();\n onToggleComplete(task);\n }}\n >\n {task.complete ? 'Mark Incomplete' : 'Mark Complete'}\n \n {\n e.stopPropagation();\n onOpenMembersPopup($membersRef, task);\n }}\n >\n Edit Assigned\n \n {\n e.stopPropagation();\n onOpenDueDatePopup($labelsRef, task);\n }}\n >\n Edit Due Date\n \n {\n e.stopPropagation();\n onOpenLabelsPopup($labelsRef, task);\n }}\n >\n Edit Labels\n \n {\n e.stopPropagation();\n onArchiveCard(task.taskGroup.id, task.id);\n onCloseEditor();\n }}\n >\n Archive\n \n \n \n \n );\n};\n\nexport default QuickCardEditor;\n","import styled, { css } from 'styled-components';\nimport TextareaAutosize from 'react-autosize-textarea';\nimport { mixin } from 'shared/utils/styles';\nimport Button from 'shared/components/Button';\n\nexport const Container = styled.div`\n width: 272px;\n margin: 0 4px;\n height: 100%;\n box-sizing: border-box;\n display: inline-block;\n vertical-align: top;\n white-space: nowrap;\n`;\n\nexport const Wrapper = styled.div<{ editorOpen: boolean }>`\n display: inline-block;\n background-color: hsla(0, 0%, 100%, 0.24);\n cursor: pointer;\n border-radius: 3px;\n height: auto;\n min-height: 32px;\n padding: 4px;\n transition: background 85ms ease-in, opacity 40ms ease-in, border-color 85ms ease-in;\n width: 272px;\n margin: 0 4px;\n margin-right: 8px;\n\n ${props =>\n !props.editorOpen &&\n css`\n &:hover {\n background-color: hsla(0, 0%, 100%, 0.32);\n }\n `}\n\n ${props =>\n props.editorOpen &&\n css`\n background-color: #10163a;\n border-radius: 3px;\n height: auto;\n min-height: 32px;\n padding: 8px;\n transition: background 85ms ease-in, opacity 40ms ease-in, border-color 85ms ease-in;\n `}\n`;\n\nexport const AddListButton = styled(Button)`\n padding: 6px 12px;\n`;\n\nexport const Placeholder = styled.span`\n color: #c2c6dc;\n display: flex;\n align-items: center;\n padding: 6px 8px;\n transition: color 85ms ease-in;\n`;\n\nexport const AddIconWrapper = styled.div`\n color: #fff;\n margin-right: 6px;\n`;\n\nexport const ListNameEditorWrapper = styled.div`\n display: flex;\n`;\nexport const ListNameEditor = styled(TextareaAutosize)`\n background-color: ${props => mixin.lighten(props.theme.colors.bg.secondary, 0.05)};\n border: none;\n box-shadow: inset 0 0 0 2px #0079bf;\n transition: margin 85ms ease-in, background 85ms ease-in;\n line-height: 20px;\n padding: 8px 12px;\n\n overflow: hidden;\n overflow-wrap: break-word;\n resize: none;\n height: 54px;\n width: 100%;\n\n border: none;\n border-radius: 3px;\n box-shadow: none;\n margin-bottom: 4px;\n max-height: 162px;\n min-height: 54px;\n font-size: 14px;\n line-height: 20px;\n\n color: #c2c6dc;\n l &:focus {\n background-color: ${props => mixin.lighten(props.theme.colors.bg.secondary, 0.05)};\n }\n`;\n\nexport const ListAddControls = styled.div`\n height: 32px;\n transition: margin 85ms ease-in, height 85ms ease-in;\n overflow: hidden;\n margin: 4px 0 0;\n`;\n\nexport const CancelAdd = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n height: 32px;\n width: 32px;\n cursor: pointer;\n`;\n","import React, { useState, useRef, useEffect } from 'react';\nimport { Plus, Cross } from 'shared/icons';\nimport useOnOutsideClick from 'shared/hooks/onOutsideClick';\nimport Button from 'shared/components/Button';\n\nimport {\n Container,\n Wrapper,\n Placeholder,\n AddIconWrapper,\n AddListButton,\n ListNameEditor,\n ListAddControls,\n CancelAdd,\n ListNameEditorWrapper,\n} from './Styles';\n\ntype NameEditorProps = {\n buttonLabel?: string;\n onSave: (listName: string) => void;\n onCancel: () => void;\n};\n\nexport const NameEditor: React.FC = ({ onSave: handleSave, onCancel, buttonLabel = 'Save' }) => {\n const $editorRef = useRef(null);\n const [listName, setListName] = useState('');\n useEffect(() => {\n if ($editorRef && $editorRef.current) {\n $editorRef.current.focus();\n }\n });\n const onSave = (newName: string) => {\n if (newName.replace(/\\s+/g, '') !== '') {\n handleSave(newName);\n }\n };\n const onKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n onSave(listName);\n setListName('');\n if ($editorRef && $editorRef.current) {\n $editorRef.current.focus();\n }\n }\n };\n return (\n <>\n \n ) => setListName(e.currentTarget.value)}\n placeholder=\"Enter a title for this list...\"\n />\n \n \n {\n onSave(listName);\n setListName('');\n if ($editorRef && $editorRef.current) {\n $editorRef.current.focus();\n }\n }}\n >\n {buttonLabel}\n \n onCancel()}>\n \n \n \n \n );\n};\n\ntype AddListProps = {\n onSave: (listName: string) => void;\n};\n\nconst AddList: React.FC = ({ onSave }) => {\n const [editorOpen, setEditorOpen] = useState(false);\n const $wrapperRef = useRef(null);\n const onOutsideClick = () => {\n setEditorOpen(false);\n };\n useOnOutsideClick($wrapperRef, editorOpen, onOutsideClick, null);\n\n return (\n \n {\n if (!editorOpen) {\n setEditorOpen(true);\n }\n }}\n >\n {editorOpen ? (\n setEditorOpen(false)} onSave={onSave} />\n ) : (\n \n \n \n \n Add another list\n \n )}\n \n \n );\n};\n\nexport default AddList;\n","import styled from 'styled-components';\n\nexport const ListActionsWrapper = styled.ul`\n list-style-type: none;\n margin: 0;\n padding: 0;\n`;\n\nexport const ListActionItemWrapper = styled.li`\n margin: 0;\n padding: 0;\n`;\nexport const ListActionItem = styled.span`\n cursor: pointer;\n display: block;\n font-size: 14px;\n color: #c2c6dc;\n font-weight: 400;\n padding: 6px 12px;\n position: relative;\n margin: 0 -12px;\n text-decoration: none;\n &:hover {\n background: ${props => props.theme.colors.primary};\n }\n`;\n\nexport const ListSeparator = styled.hr`\n background-color: #414561;\n border: 0;\n height: 1px;\n margin: 8px 0;\n padding: 0;\n width: 100%;\n`;\n\nexport const InnerContent = styled.div`\n margin: 0 12px;\n`;\n","import React from 'react';\nimport { usePopup, Popup } from 'shared/components/PopupMenu';\nimport { NameEditor } from 'shared/components/AddList';\nimport NOOP from 'shared/utils/noop';\nimport styled from 'styled-components';\nimport { TaskSorting, TaskSortingDirection, TaskSortingType } from 'shared/utils/sorting';\nimport { InnerContent, ListActionsWrapper, ListActionItemWrapper, ListActionItem, ListSeparator } from './Styles';\n\nconst CopyWrapper = styled.div`\n margin: 0 12px;\n`;\n\ntype Props = {\n taskGroupID: string;\n onDuplicateTaskGroup: (newTaskGroupName: string) => void;\n onDeleteTaskGroupTasks: () => void;\n onArchiveTaskGroup: (taskGroupID: string) => void;\n onSortTaskGroup: (taskSorting: TaskSorting) => void;\n};\n\nconst LabelManager: React.FC = ({\n taskGroupID,\n onDeleteTaskGroupTasks,\n onDuplicateTaskGroup,\n onArchiveTaskGroup,\n onSortTaskGroup,\n}) => {\n const { setTab } = usePopup();\n return (\n <>\n \n \n \n setTab(1)}>\n Duplicate\n \n setTab(2)}>\n Sort\n \n \n \n \n onDeleteTaskGroupTasks()}>\n Delete All Tasks\n \n \n \n \n onArchiveTaskGroup(taskGroupID)}>\n Delete\n \n \n \n \n \n \n {\n onDuplicateTaskGroup(listName);\n }}\n buttonLabel=\"Duplicate\"\n />\n \n \n \n \n \n onSortTaskGroup({ type: TaskSortingType.TASK_TITLE, direction: TaskSortingDirection.ASC })}\n >\n Task title\n \n onSortTaskGroup({ type: TaskSortingType.TASK_TITLE, direction: TaskSortingDirection.ASC })}\n >\n Due date\n \n onSortTaskGroup({ type: TaskSortingType.COMPLETE, direction: TaskSortingDirection.ASC })}\n >\n Complete\n \n onSortTaskGroup({ type: TaskSortingType.LABELS, direction: TaskSortingDirection.ASC })}\n >\n Labels\n \n onSortTaskGroup({ type: TaskSortingType.MEMBERS, direction: TaskSortingDirection.ASC })}\n >\n Members\n \n \n \n \n \n );\n};\nexport default LabelManager;\n","import styled, { css } from 'styled-components';\nimport TextareaAutosize from 'react-autosize-textarea';\n\nexport const Container = styled.div`\n width: 272px;\n margin: 0 4px;\n height: 100%;\n box-sizing: border-box;\n display: inline-block;\n vertical-align: top;\n white-space: nowrap;\n`;\n\nexport const AddCardContainer = styled.div`\n min-height: 38px;\n max-height: 38px;\n display: ${props => (props.hidden ? 'none' : 'flex')};\n justify-content: space-between;\n`;\n\nexport const AddCardButton = styled.a`\n border-radius: 3px;\n color: #c2c6dc;\n display: flex;\n align-items: center;\n cursor: pointer;\n flex: 1 0 auto;\n margin: 2px 8px 8px 8px;\n padding: 4px 8px;\n position: relative;\n text-decoration: none;\n user-select: none;\n &:hover {\n color: #c2c6dc;\n text-decoration: none;\n background: ${props => props.theme.colors.primary};\n }\n`;\nexport const Wrapper = styled.div`\n // background-color: #ebecf0;\n // background: rgb(244, 245, 247);\n background: #10163a;\n color: #c2c6dc;\n\n border-radius: 5px;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n max-height: 100%;\n position: relative;\n white-space: normal;\n`;\n\nexport const HeaderEditTarget = styled.div<{ isHidden: boolean }>`\n cursor: pointer;\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n display: ${props => (props.isHidden ? 'none' : 'block')};\n`;\n\nexport const HeaderName = styled(TextareaAutosize)`\n font-size: 14px;\n border: none;\n resize: none;\n overflow: hidden;\n overflow-wrap: break-word;\n background: transparent;\n border-radius: 3px;\n box-shadow: none;\n font-weight: 600;\n margin: -4px 0;\n &:disabled {\n opacity: 1;\n }\n\n letter-spacing: normal;\n word-spacing: normal;\n text-transform: none;\n text-indent: 0px;\n text-shadow: none;\n flex-direction: column;\n text-align: start;\n\n color: #c2c6dc;\n`;\n\nexport const Header = styled.div<{ isEditing: boolean }>`\n flex: 0 0 auto;\n padding: 10px 8px;\n position: relative;\n min-height: 20px;\n padding-right: 36px;\n\n ${props =>\n props.isEditing &&\n css`\n & ${HeaderName} {\n box-shadow: ${props.theme.colors.primary} 0px 0px 0px 1px;\n }\n `}\n`;\n\nexport const AddCardButtonText = styled.span`\n padding-left: 5px;\n`;\n\nexport const ListCards = styled.div`\n margin: 0 4px;\n padding: 0 4px;\n flex: 1 1 auto;\n min-height: 45px;\n overflow-y: auto;\n overflow-x: hidden;\n`;\n\nexport const ListExtraMenuButtonWrapper = styled.div`\n cursor: pointer;\n position: absolute;\n right: 4px;\n top: 4px;\n z-index: 1;\n padding: 6px;\n padding-bottom: 0;\n`;\n","import React, { useState, useRef } from 'react';\nimport useOnEscapeKeyDown from 'shared/hooks/onEscapeKeyDown';\nimport { Plus, Ellipsis } from 'shared/icons';\n\nimport {\n Container,\n Wrapper,\n Header,\n HeaderName,\n HeaderEditTarget,\n AddCardContainer,\n AddCardButton,\n AddCardButtonText,\n ListCards,\n ListExtraMenuButtonWrapper,\n} from './Styles';\n\ntype Props = {\n children: React.ReactNode;\n id: string;\n name: string;\n onSaveName: (name: string) => void;\n isComposerOpen: boolean;\n onOpenComposer: (id: string) => void;\n wrapperProps?: any;\n headerProps?: any;\n isPublic: boolean;\n index?: number;\n onExtraMenuOpen: (taskGroupID: string, $targetRef: React.RefObject) => void;\n};\n\nconst List = React.forwardRef(\n (\n {\n id,\n name,\n onSaveName,\n isComposerOpen,\n onOpenComposer,\n children,\n isPublic,\n wrapperProps,\n headerProps,\n onExtraMenuOpen,\n }: Props,\n $wrapperRef: any,\n ) => {\n const [listName, setListName] = useState(name);\n const [isEditingTitle, setEditingTitle] = useState(false);\n const $listNameRef = useRef(null);\n const $extraActionsRef = useRef(null);\n\n const onClick = () => {\n setEditingTitle(true);\n if ($listNameRef && $listNameRef.current) {\n $listNameRef.current.select();\n }\n };\n const onBlur = () => {\n setEditingTitle(false);\n onSaveName(listName);\n };\n const onEscape = () => {\n if ($listNameRef && $listNameRef.current) {\n $listNameRef.current.blur();\n }\n };\n const onChange = (event: React.FormEvent): void => {\n setListName(event.currentTarget.value);\n };\n const onKeyDown = (e: React.KeyboardEvent) => {\n if (e.key === 'Enter') {\n e.preventDefault();\n if ($listNameRef && $listNameRef.current) {\n $listNameRef.current.blur();\n }\n }\n };\n\n const handleExtraMenuOpen = () => {\n if ($extraActionsRef && $extraActionsRef.current) {\n onExtraMenuOpen(id, $extraActionsRef);\n }\n };\n useOnEscapeKeyDown(isEditingTitle, onEscape);\n\n return (\n \n \n
\n {!isPublic && }\n \n {!isPublic && (\n \n \n \n )}\n
\n {children && children}\n {!isPublic && (\n \n )}\n
\n
\n );\n },\n);\n\nList.displayName = 'List';\nexport default List;\n\nexport { ListCards };\n","import styled from 'styled-components';\nimport Button from 'shared/components/Button';\nimport TextareaAutosize from 'react-autosize-textarea';\nimport { mixin } from 'shared/utils/styles';\n\nexport const CancelIconWrapper = styled.div`\n opacity: 0.8;\n cursor: pointer;\n font-size: 1.25em;\n padding-left: 5px;\n`;\n\nexport const CardComposerWrapper = styled.div<{ isOpen: boolean }>`\n padding-bottom: 8px;\n display: ${props => (props.isOpen ? 'flex' : 'none')};\n flex-direction: column;\n`;\n\nexport const ComposerControls = styled.div``;\n\nexport const ComposerControlsSaveSection = styled.div`\n display: flex;\n float: left;\n align-items: center;\n justify-content: center;\n`;\nexport const ComposerControlsActionsSection = styled.div`\n float: right;\n`;\nexport const AddCardButton = styled(Button)`\n margin-right: 4px;\n padding: 6px 12px;\n border-radius: 3px;\n`;\n","import React, { useState, useRef, useEffect } from 'react';\nimport PropTypes from 'prop-types';\nimport useOnEscapeKeyDown from 'shared/hooks/onEscapeKeyDown';\nimport useOnOutsideClick from 'shared/hooks/onOutsideClick';\nimport { Cross } from 'shared/icons';\n\nimport {\n CardComposerWrapper,\n CancelIconWrapper,\n AddCardButton,\n ComposerControls,\n ComposerControlsSaveSection,\n ComposerControlsActionsSection,\n} from './Styles';\nimport Card from '../Card';\n\ntype Props = {\n isOpen: boolean;\n onCreateCard: (cardName: string) => void;\n onClose: () => void;\n};\n\nconst CardComposer = ({ isOpen, onCreateCard, onClose }: Props) => {\n const [cardName, setCardName] = useState('');\n const $cardRef = useRef(null);\n useOnOutsideClick($cardRef, true, onClose, null);\n useOnEscapeKeyDown(isOpen, onClose);\n useEffect(() => {\n if ($cardRef.current) {\n $cardRef.current.scrollIntoView();\n }\n });\n return (\n \n {\n if (cardName.trim() !== '') {\n onCreateCard(name.trim());\n setCardName('');\n }\n }}\n onCardTitleChange={name => {\n setCardName(name);\n }}\n />\n \n \n {\n if (cardName.trim() !== '') {\n onCreateCard(cardName.trim());\n setCardName('');\n }\n }}\n >\n Add Card\n \n onClose()}>\n \n \n \n \n \n \n );\n};\n\nCardComposer.propTypes = {\n isOpen: PropTypes.bool,\n onClose: PropTypes.func.isRequired,\n onCreateCard: PropTypes.func.isRequired,\n};\nCardComposer.defaultProps = {\n isOpen: true,\n};\n\nexport default CardComposer;\n","import { TaskMetaFilters, DueDateFilterType } from 'shared/components/Lists';\nimport dayjs from 'dayjs';\n\nenum ShouldFilter {\n NO_FILTER,\n VALID,\n NOT_VALID,\n}\n\nfunction shouldFilter(cond: boolean) {\n return cond ? ShouldFilter.VALID : ShouldFilter.NOT_VALID;\n}\n\nexport default function shouldMetaFilter(task: Task, filters: TaskMetaFilters) {\n let isFiltered = ShouldFilter.NO_FILTER;\n if (filters.taskName) {\n isFiltered = shouldFilter(task.name.toLowerCase().startsWith(filters.taskName.name.toLowerCase()));\n }\n if (filters.dueDate) {\n if (isFiltered === ShouldFilter.NO_FILTER) {\n isFiltered = ShouldFilter.NOT_VALID;\n }\n if (filters.dueDate.type === DueDateFilterType.NO_DUE_DATE) {\n isFiltered = shouldFilter(!(task.dueDate && task.dueDate !== null));\n }\n if (task.dueDate) {\n const taskDueDate = dayjs(task.dueDate);\n const today = dayjs();\n let start;\n let end;\n switch (filters.dueDate.type) {\n case DueDateFilterType.OVERDUE:\n isFiltered = shouldFilter(taskDueDate.isBefore(today));\n break;\n case DueDateFilterType.TODAY:\n isFiltered = shouldFilter(taskDueDate.isSame(today, 'day'));\n break;\n case DueDateFilterType.TOMORROW:\n isFiltered = shouldFilter(\n taskDueDate.isBefore(\n today\n .clone()\n .add(1, 'day')\n .endOf('day'),\n ),\n );\n break;\n case DueDateFilterType.THIS_WEEK:\n start = today\n .clone()\n .weekday(0)\n .startOf('day');\n end = today\n .clone()\n .weekday(6)\n .endOf('day');\n isFiltered = shouldFilter(taskDueDate.isBetween(start, end));\n break;\n case DueDateFilterType.NEXT_WEEK:\n start = today\n .clone()\n .weekday(0)\n .add(7, 'day')\n .startOf('day');\n end = today\n .clone()\n .weekday(6)\n .add(7, 'day')\n .endOf('day');\n isFiltered = shouldFilter(taskDueDate.isBetween(start, end));\n break;\n case DueDateFilterType.ONE_WEEK:\n start = today.clone().startOf('day');\n end = today\n .clone()\n .add(7, 'day')\n .endOf('day');\n isFiltered = shouldFilter(taskDueDate.isBetween(start, end));\n break;\n case DueDateFilterType.TWO_WEEKS:\n start = today.clone().startOf('day');\n end = today\n .clone()\n .add(14, 'day')\n .endOf('day');\n isFiltered = shouldFilter(taskDueDate.isBetween(start, end));\n break;\n case DueDateFilterType.THREE_WEEKS:\n start = today.clone().startOf('day');\n end = today\n .clone()\n .add(21, 'day')\n .endOf('day');\n isFiltered = shouldFilter(taskDueDate.isBetween(start, end));\n break;\n default:\n isFiltered = ShouldFilter.NOT_VALID;\n }\n }\n }\n if (filters.members.length !== 0) {\n if (isFiltered === ShouldFilter.NO_FILTER) {\n isFiltered = ShouldFilter.NOT_VALID;\n }\n for (const member of filters.members) {\n if (task.assigned) {\n if (task.assigned.findIndex(m => m.id === member.id) !== -1) {\n isFiltered = ShouldFilter.VALID;\n }\n }\n }\n }\n if (filters.labels.length !== 0) {\n if (isFiltered === ShouldFilter.NO_FILTER) {\n isFiltered = ShouldFilter.NOT_VALID;\n }\n for (const label of filters.labels) {\n if (task.labels) {\n if (task.labels.findIndex(m => m.projectLabel.id === label.id) !== -1) {\n isFiltered = ShouldFilter.VALID;\n }\n }\n }\n }\n if (isFiltered === ShouldFilter.NO_FILTER) {\n return true;\n }\n if (isFiltered === ShouldFilter.VALID) {\n return true;\n }\n return false;\n}\n","import React, { useState } from 'react';\nimport { DragDropContext, Droppable, Draggable, DropResult } from 'react-beautiful-dnd';\nimport List, { ListCards } from 'shared/components/List';\nimport Card from 'shared/components/Card';\nimport CardComposer from 'shared/components/CardComposer';\nimport AddList from 'shared/components/AddList';\nimport {\n isPositionChanged,\n getSortedDraggables,\n getNewDraggablePosition,\n getAfterDropDraggableList,\n} from 'shared/utils/draggables';\nimport dayjs from 'dayjs';\nimport { TaskSorting, TaskSortingType, TaskSortingDirection, sortTasks } from 'shared/utils/sorting';\n\nimport { Container, BoardContainer, BoardWrapper } from './Styles';\nimport shouldMetaFilter from './metaFilter';\n\nexport enum TaskMeta {\n NONE,\n TITLE,\n MEMBER,\n LABEL,\n DUE_DATE,\n}\n\nexport enum TaskMetaMatch {\n MATCH_ANY,\n MATCH_ALL,\n}\n\nexport enum TaskStatus {\n ALL,\n COMPLETE,\n INCOMPLETE,\n}\n\nexport enum TaskSince {\n ALL,\n TODAY,\n YESTERDAY,\n ONE_WEEK,\n TWO_WEEKS,\n THREE_WEEKS,\n}\n\nexport type TaskStatusFilter = {\n status: TaskStatus;\n since: TaskSince;\n};\n\nexport interface TaskMetaFilterName {\n meta: TaskMeta;\n value?: string | dayjs.Dayjs | null;\n id?: string | null;\n}\n\nexport type TaskNameMetaFilter = {\n name: string;\n};\n\nexport enum DueDateFilterType {\n TODAY,\n TOMORROW,\n THIS_WEEK,\n NEXT_WEEK,\n ONE_WEEK,\n TWO_WEEKS,\n THREE_WEEKS,\n OVERDUE,\n NO_DUE_DATE,\n}\n\nexport type DueDateMetaFilter = {\n type: DueDateFilterType;\n label: string;\n};\n\nexport type MemberMetaFilter = {\n id: string;\n username: string;\n};\n\nexport type LabelMetaFilter = {\n id: string;\n name: string;\n color: string;\n};\n\nexport type TaskMetaFilters = {\n match: TaskMetaMatch;\n dueDate: DueDateMetaFilter | null;\n taskName: TaskNameMetaFilter | null;\n members: Array;\n labels: Array;\n};\n\nfunction shouldStatusFilter(task: Task, filter: TaskStatusFilter) {\n if (filter.status === TaskStatus.ALL) {\n return true;\n }\n\n if (filter.status === TaskStatus.INCOMPLETE && task.complete === false) {\n return true;\n }\n if (filter.status === TaskStatus.COMPLETE && task.completedAt && task.complete === true) {\n const completedAt = dayjs(task.completedAt);\n const REFERENCE = dayjs();\n switch (filter.since) {\n case TaskSince.TODAY:\n const TODAY = REFERENCE.clone().startOf('day');\n return completedAt.isSame(TODAY, 'd');\n case TaskSince.YESTERDAY:\n const YESTERDAY = REFERENCE.clone()\n .subtract(1, 'day')\n .startOf('day');\n return completedAt.isSameOrAfter(YESTERDAY, 'd');\n case TaskSince.ONE_WEEK:\n const ONE_WEEK = REFERENCE.clone()\n .subtract(7, 'day')\n .startOf('day');\n return completedAt.isSameOrAfter(ONE_WEEK, 'd');\n case TaskSince.TWO_WEEKS:\n const TWO_WEEKS = REFERENCE.clone()\n .subtract(14, 'day')\n .startOf('day');\n return completedAt.isSameOrAfter(TWO_WEEKS, 'd');\n case TaskSince.THREE_WEEKS:\n const THREE_WEEKS = REFERENCE.clone()\n .subtract(21, 'day')\n .startOf('day');\n return completedAt.isSameOrAfter(THREE_WEEKS, 'd');\n default:\n return true;\n }\n }\n return false;\n}\n\ninterface SimpleProps {\n taskGroups: Array;\n onTaskDrop: (task: Task, previousTaskGroupID: string) => void;\n onTaskGroupDrop: (taskGroup: TaskGroup) => void;\n\n onTaskClick: (task: Task) => void;\n onCreateTask: (taskGroupID: string, name: string) => void;\n onChangeTaskGroupName: (taskGroupID: string, name: string) => void;\n onQuickEditorOpen: ($target: React.RefObject, taskID: string, taskGroupID: string) => void;\n onCreateTaskGroup: (listName: string) => void;\n onExtraMenuOpen: (taskGroupID: string, $targetRef: React.RefObject) => void;\n onCardMemberClick: OnCardMemberClick;\n onCardLabelClick: () => void;\n cardLabelVariant: CardLabelVariant;\n isPublic?: boolean;\n taskStatusFilter?: TaskStatusFilter;\n taskMetaFilters?: TaskMetaFilters;\n taskSorting?: TaskSorting;\n}\n\nconst initTaskStatusFilter: TaskStatusFilter = {\n status: TaskStatus.ALL,\n since: TaskSince.ALL,\n};\n\nconst initTaskMetaFilters: TaskMetaFilters = {\n match: TaskMetaMatch.MATCH_ANY,\n dueDate: null,\n taskName: null,\n labels: [],\n members: [],\n};\n\nconst initTaskSorting: TaskSorting = {\n type: TaskSortingType.NONE,\n direction: TaskSortingDirection.ASC,\n};\n\nconst SimpleLists: React.FC = ({\n taskGroups,\n onTaskDrop,\n onChangeTaskGroupName,\n onCardLabelClick,\n onTaskGroupDrop,\n onTaskClick,\n onCreateTask,\n onQuickEditorOpen,\n onCreateTaskGroup,\n cardLabelVariant,\n onExtraMenuOpen,\n onCardMemberClick,\n taskStatusFilter = initTaskStatusFilter,\n isPublic = false,\n taskMetaFilters = initTaskMetaFilters,\n taskSorting = initTaskSorting,\n}) => {\n const onDragEnd = ({ draggableId, source, destination, type }: DropResult) => {\n if (typeof destination === 'undefined') return;\n if (!isPositionChanged(source, destination)) return;\n\n const isList = type === 'column';\n const isSameList = destination.droppableId === source.droppableId;\n let droppedDraggable: DraggableElement | null = null;\n let beforeDropDraggables: Array | null = null;\n\n if (isList) {\n const droppedGroup = taskGroups.find(taskGroup => taskGroup.id === draggableId);\n if (droppedGroup) {\n droppedDraggable = {\n id: draggableId,\n position: droppedGroup.position,\n };\n beforeDropDraggables = getSortedDraggables(\n taskGroups.map(taskGroup => {\n return { id: taskGroup.id, position: taskGroup.position };\n }),\n );\n if (droppedDraggable === null || beforeDropDraggables === null) {\n throw new Error('before drop draggables is null');\n }\n const afterDropDraggables = getAfterDropDraggableList(\n beforeDropDraggables,\n droppedDraggable,\n isList,\n isSameList,\n destination,\n );\n const newPosition = getNewDraggablePosition(afterDropDraggables, destination.index);\n onTaskGroupDrop({\n ...droppedGroup,\n position: newPosition,\n });\n } else {\n throw new Error('task group can not be found');\n }\n } else {\n const curTaskGroup = taskGroups.findIndex(\n taskGroup => taskGroup.tasks.findIndex(task => task.id === draggableId) !== -1,\n );\n let targetTaskGroup = curTaskGroup;\n if (!isSameList) {\n targetTaskGroup = taskGroups.findIndex(taskGroup => taskGroup.id === destination.droppableId);\n }\n const droppedTask = taskGroups[curTaskGroup].tasks.find(task => task.id === draggableId);\n\n if (droppedTask) {\n droppedDraggable = {\n id: draggableId,\n position: droppedTask.position,\n };\n beforeDropDraggables = getSortedDraggables(\n taskGroups[targetTaskGroup].tasks.map(task => {\n return { id: task.id, position: task.position };\n }),\n );\n if (droppedDraggable === null || beforeDropDraggables === null) {\n throw new Error('before drop draggables is null');\n }\n const afterDropDraggables = getAfterDropDraggableList(\n beforeDropDraggables,\n droppedDraggable,\n isList,\n isSameList,\n destination,\n );\n const newPosition = getNewDraggablePosition(afterDropDraggables, destination.index);\n const newTask = {\n ...droppedTask,\n position: newPosition,\n taskGroup: {\n id: destination.droppableId,\n },\n };\n onTaskDrop(newTask, droppedTask.taskGroup.id);\n }\n }\n };\n\n const [currentComposer, setCurrentComposer] = useState('');\n const [toggleLabels, setToggleLabels] = useState(false);\n const [toggleDirection, setToggleDirection] = useState<'shrink' | 'expand'>(\n cardLabelVariant === 'large' ? 'shrink' : 'expand',\n );\n\n return (\n \n \n \n \n {provided => (\n \n {taskGroups\n .slice()\n .sort((a: any, b: any) => a.position - b.position)\n .map((taskGroup: TaskGroup, index: number) => {\n return (\n \n {columnDragProvided => (\n \n {(columnDropProvided, snapshot) => (\n setCurrentComposer(id)}\n isComposerOpen={currentComposer === taskGroup.id}\n onSaveName={name => onChangeTaskGroupName(taskGroup.id, name)}\n isPublic={isPublic}\n ref={columnDragProvided.innerRef}\n wrapperProps={columnDragProvided.draggableProps}\n headerProps={columnDragProvided.dragHandleProps}\n onExtraMenuOpen={onExtraMenuOpen}\n id={taskGroup.id}\n key={taskGroup.id}\n index={index}\n >\n \n {taskGroup.tasks\n .slice()\n .filter(t => shouldStatusFilter(t, taskStatusFilter))\n .filter(t => shouldMetaFilter(t, taskMetaFilters))\n .sort((a: any, b: any) => a.position - b.position)\n .sort((a: any, b: any) => sortTasks(a, b, taskSorting))\n .map((task: Task, taskIndex: any) => {\n return (\n \n {taskProvided => {\n return (\n {\n setToggleLabels(true);\n setToggleDirection(\n cardLabelVariant === 'large' ? 'shrink' : 'expand',\n );\n if (onCardLabelClick) {\n onCardLabelClick();\n }\n }}\n ref={taskProvided.innerRef}\n taskID={task.id}\n complete={task.complete ?? false}\n taskGroupID={taskGroup.id}\n description=\"\"\n labels={task.labels.map(label => label.projectLabel)}\n dueDate={\n task.dueDate\n ? {\n isPastDue: false,\n formattedDate: dayjs(task.dueDate).format('MMM D, YYYY'),\n }\n : undefined\n }\n title={task.name}\n members={task.assigned}\n onClick={() => {\n onTaskClick(task);\n }}\n checklists={task.badges && task.badges.checklist}\n onCardMemberClick={onCardMemberClick}\n onContextMenu={onQuickEditorOpen}\n />\n );\n }}\n \n );\n })}\n {columnDropProvided.placeholder}\n {currentComposer === taskGroup.id && (\n {\n setCurrentComposer('');\n }}\n onCreateCard={name => {\n onCreateTask(taskGroup.id, name);\n }}\n isOpen\n />\n )}\n \n \n )}\n \n )}\n \n );\n })}\n {provided.placeholder}\n \n )}\n \n \n {!isPublic && (\n {\n onCreateTaskGroup(listName);\n }}\n />\n )}\n \n \n );\n};\n\nexport default SimpleLists;\n","import styled from 'styled-components';\n\nexport const Container = styled.div`\n user-select: none;\n white-space: nowrap;\n\n ::-webkit-scrollbar {\n height: 10px;\n }\n ::-webkit-scrollbar-thumb {\n background: #7367f0;\n border-radius: 6px;\n }\n\n ::-webkit-scrollbar-track {\n background: #10163a;\n border-radius: 6px;\n }\n`;\n\nexport const BoardContainer = styled.div`\n position: relative;\n overflow-y: auto;\n outline: none;\n flex-grow: 1;\n`;\n\nexport const BoardWrapper = styled.div`\n display: flex;\n\n user-select: none;\n white-space: nowrap;\n overflow-x: auto;\n overflow-y: hidden;\n padding-bottom: 4px;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n`;\nexport default Container;\n","import React from 'react';\nimport styled, { keyframes } from 'styled-components/macro';\nimport { mixin } from 'shared/utils/styles';\nimport theme from '../../../App/ThemeStyles';\n\nexport const BoardContainer = styled.div`\n position: relative;\n overflow-y: auto;\n outline: none;\n flex-grow: 1;\n`;\n\nexport const BoardWrapper = styled.div`\n display: flex;\n\n user-select: none;\n white-space: nowrap;\n margin-bottom: 8px;\n overflow-x: auto;\n overflow-y: hidden;\n padding-bottom: 8px;\n position: absolute;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n`;\nexport const Container = styled.div`\n width: 272px;\n margin: 0 4px;\n height: 100%;\n box-sizing: border-box;\n display: inline-block;\n vertical-align: top;\n white-space: nowrap;\n`;\n\nexport const defaultBaseColor = theme.colors.bg.primary;\n\nexport const defaultHighlightColor = mixin.lighten(theme.colors.bg.primary, 0.25);\n\nexport const skeletonKeyframes = keyframes`\n 0% {\n background-position: -200px 0;\n }\n 100% {\n background-position: calc(200px + 100%) 0;\n }\n `;\n\nexport const Wrapper = styled.div`\n // background-color: #ebecf0;\n // background: rgb(244, 245, 247);\n min-height: 120px;\n opacity: 0.8;\n background: #10163a;\n color: #c2c6dc;\n\n border-radius: 5px;\n box-sizing: border-box;\n display: flex;\n flex-direction: column;\n max-height: 100%;\n position: relative;\n white-space: normal;\n\n background-image: linear-gradient(90deg, ${defaultBaseColor}, ${defaultHighlightColor}, ${defaultBaseColor});\n background-size: 200px 100%;\n background-repeat: no-repeat;\n\n animation: ${skeletonKeyframes} 1.2s ease-in-out infinite;\n`;\n\nconst EmptyBoard: React.FC = () => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default EmptyBoard;\n","import React, { useState, useEffect, useRef } from 'react';\nimport { Pencil, Checkmark } from 'shared/icons';\n\nimport {\n LabelSearch,\n ActiveIcon,\n Labels,\n Label,\n CardLabel,\n Section,\n SectionTitle,\n LabelIcon,\n CreateLabelButton,\n} from './Styles';\n\ntype Props = {\n labels?: Array;\n taskLabels?: Array;\n onLabelToggle: (labelId: string) => void;\n onLabelEdit: (labelId: string) => void;\n onLabelCreate: () => void;\n};\n\nconst LabelManager: React.FC = ({ labels, taskLabels, onLabelToggle, onLabelEdit, onLabelCreate }) => {\n const [currentLabel, setCurrentLabel] = useState('');\n const [currentSearch, setCurrentSearch] = useState('');\n return (\n <>\n setCurrentSearch(e.currentTarget.value)}\n type=\"text\"\n placeholder=\"search labels...\"\n />\n
\n Labels\n \n {labels &&\n labels\n .filter(\n label =>\n currentSearch === '' ||\n (label.name && label.name.toLowerCase().startsWith(currentSearch.toLowerCase())),\n )\n .map(label => (\n \n ))}\n \n {\n onLabelCreate();\n }}\n >\n Create a new label\n \n
\n \n );\n};\nexport default LabelManager;\n","import React, { useState, useEffect, useRef } from 'react';\nimport { Checkmark } from 'shared/icons';\nimport styled from 'styled-components';\nimport { SaveButton, DeleteButton, LabelBox, EditLabelForm, FieldLabel, FieldName } from './Styles';\n\nconst WhiteCheckmark = styled(Checkmark)`\n fill: ${props => props.theme.colors.text.secondary};\n`;\ntype Props = {\n labelColors: Array;\n label: ProjectLabel | null;\n onLabelEdit: (labelId: string | null, labelName: string, labelColor: LabelColor) => void;\n onLabelDelete?: (labelId: string) => void;\n};\n\nconst LabelManager = ({ labelColors, label, onLabelEdit, onLabelDelete }: Props) => {\n const $fieldName = useRef(null);\n const [currentLabel, setCurrentLabel] = useState(label ? label.name : '');\n const [currentColor, setCurrentColor] = useState(label ? label.labelColor : null);\n\n useEffect(() => {\n if ($fieldName.current) {\n $fieldName.current.focus();\n }\n }, []);\n\n return (\n \n Name\n {\n setCurrentLabel(e.currentTarget.value);\n }}\n value={currentLabel ?? ''}\n />\n Select a color\n
\n {labelColors\n .filter(l => l.name !== 'no_color')\n .map((labelColor: LabelColor) => (\n {\n setCurrentColor(labelColor);\n }}\n >\n {currentColor && labelColor.id === currentColor.id && }\n \n ))}\n
\n
\n {\n e.preventDefault();\n if (currentColor) {\n onLabelEdit(label ? label.id : null, currentLabel ?? '', currentColor);\n }\n }}\n />\n {label && onLabelDelete && (\n {\n e.preventDefault();\n onLabelDelete(label.id);\n }}\n />\n )}\n
\n
\n );\n};\nexport default LabelManager;\n","import React, { useState } from 'react';\nimport updateApolloCache from 'shared/utils/cache';\nimport { usePopup, Popup } from 'shared/components/PopupMenu';\nimport produce from 'immer';\nimport {\n useUpdateProjectLabelMutation,\n useDeleteProjectLabelMutation,\n FindProjectDocument,\n useCreateProjectLabelMutation,\n FindProjectQuery,\n useToggleTaskLabelMutation,\n useLabelsQuery,\n} from 'shared/generated/graphql';\nimport LabelManager from 'shared/components/PopupMenu/LabelManager';\nimport LabelEditor from 'shared/components/PopupMenu/LabelEditor';\n\ntype LabelManagerEditorProps = {\n taskID?: string;\n taskLabels: null | React.RefObject>;\n projectID: string;\n labelColors: Array;\n onLabelToggle?: (labelId: string) => void;\n};\n\nconst LabelManagerEditor: React.FC = ({\n taskID,\n projectID,\n labelColors,\n onLabelToggle,\n taskLabels: taskLabelsRef,\n}) => {\n const [currentLabel, setCurrentLabel] = useState('');\n const { setTab, hidePopup } = usePopup();\n const [toggleTaskLabel] = useToggleTaskLabelMutation();\n const [createProjectLabel] = useCreateProjectLabelMutation({\n onCompleted: (data) => {\n if (taskID) {\n toggleTaskLabel({ variables: { taskID, projectLabelID: data.createProjectLabel.id } });\n }\n },\n update: (client, newLabelData) => {\n updateApolloCache(\n client,\n FindProjectDocument,\n (cache) =>\n produce(cache, (draftCache) => {\n if (newLabelData.data) {\n draftCache.findProject.labels.push({ ...newLabelData.data.createProjectLabel });\n }\n }),\n {\n projectID,\n },\n );\n },\n });\n const [updateProjectLabel] = useUpdateProjectLabelMutation();\n const [deleteProjectLabel] = useDeleteProjectLabelMutation({\n update: (client, newLabelData) => {\n updateApolloCache(\n client,\n FindProjectDocument,\n (cache) =>\n produce(cache, (draftCache) => {\n draftCache.findProject.labels = cache.findProject.labels.filter(\n (label) => label.id !== newLabelData.data?.deleteProjectLabel.id,\n );\n }),\n { projectID },\n );\n },\n });\n const { data } = useLabelsQuery({ variables: { projectID } });\n const labels = data ? data.findProject.labels : [];\n const taskLabels = taskLabelsRef && taskLabelsRef.current ? taskLabelsRef.current : [];\n const [currentTaskLabels, setCurrentTaskLabels] = useState(taskLabels);\n return (\n <>\n hidePopup()}>\n {\n setTab(2);\n }}\n onLabelEdit={(labelId) => {\n setCurrentLabel(labelId);\n setTab(1);\n }}\n onLabelToggle={(labelId) => {\n if (onLabelToggle) {\n if (currentTaskLabels.find((t) => t.projectLabel.id === labelId)) {\n setCurrentTaskLabels(currentTaskLabels.filter((t) => t.projectLabel.id !== labelId));\n } else if (data) {\n const newProjectLabel = data.findProject.labels.find((l) => l.id === labelId);\n if (newProjectLabel) {\n setCurrentTaskLabels([\n ...currentTaskLabels,\n { id: '', assignedDate: '', projectLabel: { ...newProjectLabel } },\n ]);\n }\n }\n setCurrentLabel(labelId);\n onLabelToggle(labelId);\n } else {\n setCurrentLabel(labelId);\n setTab(1);\n }\n }}\n />\n \n hidePopup()} title=\"Edit label\" tab={1}>\n label.id === currentLabel) ?? null}\n onLabelEdit={(projectLabelID, name, color) => {\n if (projectLabelID) {\n updateProjectLabel({ variables: { projectLabelID, labelColorID: color.id, name: name ?? '' } });\n }\n setTab(0);\n }}\n onLabelDelete={(labelID) => {\n deleteProjectLabel({ variables: { projectLabelID: labelID } });\n setTab(0);\n }}\n />\n \n hidePopup()} title=\"Create new label\" tab={2}>\n {\n createProjectLabel({ variables: { projectID, labelColorID: color.id, name: name ?? '' } });\n setTab(0);\n }}\n />\n \n \n );\n};\n\nexport default LabelManagerEditor;\n","import React from 'react';\nimport styled, { css } from 'styled-components';\nimport { Cross } from 'shared/icons';\n\nconst LabelText = styled.span`\n margin-left: 10px;\n display: flex;\n align-items: center;\n justify-content: center;\n color: ${props => props.theme.colors.text.primary};\n`;\n\nconst Container = styled.div<{ color?: string }>`\n min-height: 26px;\n min-width: 26px;\n font-size: 0.8rem;\n border-radius: 20px;\n position: relative;\n display: flex;\n align-items: center;\n justify-content: center;\n ${props =>\n props.color\n ? css`\n background: ${props.color};\n & ${LabelText} {\n color: ${props.theme.colors.text.secondary};\n }\n `\n : css`\n background: ${props.theme.colors.bg.primary};\n `}\n`;\n\nconst CloseButton = styled.button`\n cursor: pointer;\n width: 20px;\n height: 20px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 0;\n margin: 0 4px;\n background: rgba(0, 0, 0, 0.15);\n &:hover {\n background: rgba(0, 0, 0, 0.25);\n }\n`;\n\ntype ChipProps = {\n label: string;\n onClose?: () => void;\n color?: string;\n className?: string;\n};\n\nconst Chip: React.FC = ({ label, onClose, color, className }) => {\n return (\n \n {label}\n {onClose && (\n onClose()}>\n \n \n )}\n \n );\n};\n\nexport default Chip;\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\nimport { Checkmark } from 'shared/icons';\nimport { TaskStatusFilter, TaskStatus, TaskSince } from 'shared/components/Lists';\n\nexport const ActionsList = styled.ul`\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n`;\n\nexport const ActionExtraMenuContainer = styled.div`\n visibility: hidden;\n position: absolute;\n left: 100%;\n top: -4px;\n padding-left: 2px;\n width: 100%;\n`;\n\nexport const ActionItem = styled.li`\n position: relative;\n padding-left: 4px;\n padding-right: 4px;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n cursor: pointer;\n display: flex;\n align-items: center;\n font-size: 14px;\n &:hover {\n background: ${props => props.theme.colors.primary};\n }\n &:hover ${ActionExtraMenuContainer} {\n visibility: visible;\n }\n`;\n\nexport const ActionTitle = styled.span`\n margin-left: 20px;\n`;\n\nexport const ActionExtraMenu = styled.ul`\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n\n padding: 5px;\n padding-top: 8px;\n border-radius: 5px;\n box-shadow: 0 5px 25px 0 rgba(0, 0, 0, 0.1);\n\n color: #c2c6dc;\n background: #262c49;\n border: 1px solid rgba(0, 0, 0, 0.1);\n border-color: #414561;\n`;\n\nexport const ActionExtraMenuItem = styled.li`\n position: relative;\n padding-left: 4px;\n padding-right: 4px;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n cursor: pointer;\n display: flex;\n align-items: center;\n font-size: 14px;\n &:hover {\n background: ${props => props.theme.colors.primary};\n }\n`;\nconst ActionExtraMenuSeparator = styled.li`\n color: ${props => props.theme.colors.text.primary};\n font-size: 12px;\n padding-left: 4px;\n padding-right: 4px;\n padding-top: 0.25rem;\n padding-bottom: 0.25rem;\n`;\n\nconst ActiveIcon = styled(Checkmark)`\n position: absolute;\n`;\n\ntype FilterStatusProps = {\n filter: TaskStatusFilter;\n onChangeTaskStatusFilter: (filter: TaskStatusFilter) => void;\n};\n\nconst FilterStatus: React.FC = ({ filter, onChangeTaskStatusFilter }) => {\n const [currentFilter, setFilter] = useState(filter);\n const handleFilterChange = (f: TaskStatusFilter) => {\n setFilter(f);\n onChangeTaskStatusFilter(f);\n };\n const handleCompleteClick = (s: TaskSince) => {\n handleFilterChange({ status: TaskStatus.COMPLETE, since: s });\n };\n return (\n \n handleFilterChange({ status: TaskStatus.INCOMPLETE, since: TaskSince.ALL })}>\n {currentFilter.status === TaskStatus.INCOMPLETE && }\n Incomplete Tasks\n \n \n {currentFilter.status === TaskStatus.COMPLETE && }\n Compelete Tasks\n \n \n handleCompleteClick(TaskSince.ALL)}>\n {currentFilter.since === TaskSince.ALL && }\n All completed tasks\n \n Marked complete since\n handleCompleteClick(TaskSince.TODAY)}>\n {currentFilter.since === TaskSince.TODAY && }\n Today\n \n handleCompleteClick(TaskSince.YESTERDAY)}>\n {currentFilter.since === TaskSince.YESTERDAY && }\n Yesterday\n \n handleCompleteClick(TaskSince.ONE_WEEK)}>\n {currentFilter.since === TaskSince.ONE_WEEK && }\n 1 week\n \n handleCompleteClick(TaskSince.TWO_WEEKS)}>\n {currentFilter.since === TaskSince.TWO_WEEKS && }\n 2 weeks\n \n handleCompleteClick(TaskSince.THREE_WEEKS)}>\n {currentFilter.since === TaskSince.THREE_WEEKS && }\n 3 weeks\n \n \n \n \n handleFilterChange({ status: TaskStatus.ALL, since: TaskSince.ALL })}>\n {currentFilter.status === TaskStatus.ALL && }\n All Tasks\n \n \n );\n};\n\nexport default FilterStatus;\n","import React, { useState, useEffect } from 'react';\nimport styled, { css } from 'styled-components';\nimport { Checkmark, User, Calendar, Tags, Clock } from 'shared/icons';\nimport { TaskMetaFilters, TaskMeta, TaskMetaMatch, DueDateFilterType } from 'shared/components/Lists';\nimport Input from 'shared/components/ControlledInput';\nimport { Popup, usePopup } from 'shared/components/PopupMenu';\nimport produce from 'immer';\nimport { mixin } from 'shared/utils/styles';\nimport Member from 'shared/components/Member';\nimport { useLabelsQuery } from 'shared/generated/graphql';\n\nconst FilterMember = styled(Member)`\n margin: 2px 0;\n &:hover {\n cursor: pointer;\n background: ${(props) => props.theme.colors.primary};\n }\n`;\n\nexport const Labels = styled.ul`\n list-style: none;\n margin: 0 8px;\n padding: 0;\n margin-bottom: 8px;\n`;\n\nexport const Label = styled.li`\n position: relative;\n`;\n\nexport const CardLabel = styled.span<{ active: boolean; color: string }>`\n ${(props) =>\n props.active &&\n css`\n margin-left: 4px;\n box-shadow: -8px 0 ${mixin.darken(props.color, 0.12)};\n border-radius: 3px;\n `}\n\n cursor: pointer;\n font-weight: 700;\n margin: 0 0 4px;\n min-height: 20px;\n padding: 6px 12px;\n position: relative;\n transition: padding 85ms, margin 85ms, box-shadow 85ms;\n background-color: ${(props) => props.color};\n color: #fff;\n display: block;\n max-width: 100%;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n min-height: 31px;\n`;\n\nexport const ActionsList = styled.ul`\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n`;\n\nexport const ActionItem = styled.li`\n position: relative;\n padding-left: 4px;\n padding-right: 4px;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n cursor: pointer;\n display: flex;\n align-items: center;\n font-size: 14px;\n &:hover {\n background: ${(props) => props.theme.colors.primary};\n }\n`;\n\nexport const ActionTitle = styled.span`\n margin-left: 20px;\n`;\n\nconst ActionItemSeparator = styled.li`\n color: ${(props) => mixin.rgba(props.theme.colors.text.primary, 0.4)};\n font-size: 12px;\n padding-left: 4px;\n padding-right: 4px;\n padding-top: 0.75rem;\n padding-bottom: 0.25rem;\n`;\n\nconst ActiveIcon = styled(Checkmark)`\n position: absolute;\n right: 4px;\n`;\n\nconst ItemIcon = styled.div`\n position: absolute;\n`;\n\nconst TaskNameInput = styled(Input)`\n margin: 0;\n`;\n\nconst ActionItemLine = styled.div`\n height: 1px;\n border-top: 1px solid #414561;\n margin: 0.25rem !important;\n`;\n\ntype FilterMetaProps = {\n filters: TaskMetaFilters;\n userID: string;\n projectID: string;\n members: React.RefObject>;\n onChangeTaskMetaFilter: (filters: TaskMetaFilters) => void;\n};\n\nconst FilterMeta: React.FC = ({ filters, onChangeTaskMetaFilter, userID, projectID, members }) => {\n const [currentFilters, setFilters] = useState(filters);\n const [nameFilter, setNameFilter] = useState(filters.taskName ? filters.taskName.name : '');\n const [currentLabel, setCurrentLabel] = useState('');\n const { data } = useLabelsQuery({ variables: { projectID } });\n\n const handleSetFilters = (f: TaskMetaFilters) => {\n setFilters(f);\n onChangeTaskMetaFilter(f);\n };\n\n const handleNameChange = (nFilter: string) => {\n handleSetFilters(\n produce(currentFilters, (draftFilters) => {\n draftFilters.taskName = nFilter !== '' ? { name: nFilter } : null;\n }),\n );\n setNameFilter(nFilter);\n };\n\n const { setTab } = usePopup();\n\n const handleSetDueDate = (filterType: DueDateFilterType, label: string) => {\n handleSetFilters(\n produce(currentFilters, (draftFilters) => {\n if (draftFilters.dueDate && draftFilters.dueDate.type === filterType) {\n draftFilters.dueDate = null;\n } else {\n draftFilters.dueDate = {\n label,\n type: filterType,\n };\n }\n }),\n );\n };\n\n return (\n <>\n \n \n handleNameChange(e.currentTarget.value)}\n value={nameFilter}\n autoFocus\n variant=\"alternate\"\n placeholder=\"Task name...\"\n />\n QUICK ADD\n {\n handleSetFilters(\n produce(currentFilters, (draftFilters) => {\n if (members.current) {\n const member = members.current.find((m) => m.id === userID);\n const draftMember = draftFilters.members.find((m) => m.id === userID);\n if (member && !draftMember) {\n draftFilters.members.push({ id: userID, username: member.username ? member.username : '' });\n } else {\n draftFilters.members = draftFilters.members.filter((m) => m.id !== userID);\n }\n }\n }),\n );\n }}\n >\n \n \n \n Just my tasks\n {currentFilters.members.find((m) => m.id === userID) && }\n \n handleSetDueDate(DueDateFilterType.THIS_WEEK, 'Due this week')}>\n \n \n \n Due this week\n {currentFilters.dueDate && currentFilters.dueDate.type === DueDateFilterType.THIS_WEEK && (\n \n )}\n \n handleSetDueDate(DueDateFilterType.NEXT_WEEK, 'Due next week')}>\n \n \n \n Due next week\n {currentFilters.dueDate && currentFilters.dueDate.type === DueDateFilterType.NEXT_WEEK && (\n \n )}\n \n \n setTab(1)}>\n \n \n \n By Label\n \n setTab(2)}>\n \n \n \n By Member\n \n setTab(3)}>\n \n \n \n By Due Date\n \n \n \n \n \n {data &&\n data.findProject.labels\n // .filter(label => '' === '' || (label.name && label.name.toLowerCase().startsWith(''.toLowerCase())))\n .map((label) => (\n \n ))}\n \n \n \n \n {members.current &&\n members.current.map((member) => (\n {\n handleSetFilters(\n produce(currentFilters, (draftFilters) => {\n if (draftFilters.members.find((m) => m.id === member.id)) {\n draftFilters.members = draftFilters.members.filter((m) => m.id !== member.id);\n } else {\n draftFilters.members.push({ id: member.id, username: member.username ?? '' });\n }\n }),\n );\n }}\n />\n ))}\n \n \n \n \n handleSetDueDate(DueDateFilterType.TODAY, 'Today')}>\n Today\n \n handleSetDueDate(DueDateFilterType.THIS_WEEK, 'Due this week')}>\n This week\n \n handleSetDueDate(DueDateFilterType.NEXT_WEEK, 'Due next week')}>\n Next week\n \n handleSetDueDate(DueDateFilterType.OVERDUE, 'Overdue')}>\n Overdue\n \n \n handleSetDueDate(DueDateFilterType.TOMORROW, 'In the next day')}>\n In the next day\n \n handleSetDueDate(DueDateFilterType.ONE_WEEK, 'In the next week')}>\n In the next week\n \n handleSetDueDate(DueDateFilterType.TWO_WEEKS, 'In the next two weeks')}>\n In the next two weeks\n \n handleSetDueDate(DueDateFilterType.THREE_WEEKS, 'In the next three weeks')}>\n In the next three weeks\n \n handleSetDueDate(DueDateFilterType.NO_DUE_DATE, 'Has no due date')}>\n Has no due date\n \n \n \n \n );\n};\n\nexport default FilterMeta;\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\nimport { TaskSorting, TaskSortingType, TaskSortingDirection } from 'shared/utils/sorting';\nimport { mixin } from 'shared/utils/styles';\n\nexport const ActionsList = styled.ul`\n margin: 0;\n padding: 0;\n display: flex;\n flex-direction: column;\n`;\n\nexport const ActionItem = styled.li`\n position: relative;\n padding-left: 4px;\n padding-right: 4px;\n padding-top: 0.5rem;\n padding-bottom: 0.5rem;\n cursor: pointer;\n display: flex;\n align-items: center;\n font-size: 14px;\n &:hover {\n background: ${props => props.theme.colors.primary};\n }\n`;\n\nexport const ActionTitle = styled.span`\n margin-left: 20px;\n`;\n\nconst ActionItemSeparator = styled.li`\n color: ${props => mixin.rgba(props.theme.colors.text.primary, 0.4)};\n font-size: 12px;\n padding-left: 4px;\n padding-right: 4px;\n padding-top: 0.75rem;\n padding-bottom: 0.25rem;\n`;\n\ntype SortPopupProps = {\n sorting: TaskSorting;\n onChangeTaskSorting: (taskSorting: TaskSorting) => void;\n};\n\nconst SortPopup: React.FC = ({ sorting, onChangeTaskSorting }) => {\n const [currentSorting, setSorting] = useState(sorting);\n const handleSetSorting = (s: TaskSorting) => {\n setSorting(s);\n onChangeTaskSorting(s);\n };\n return (\n \n handleSetSorting({ type: TaskSortingType.NONE, direction: TaskSortingDirection.ASC })}>\n None\n \n handleSetSorting({ type: TaskSortingType.DUE_DATE, direction: TaskSortingDirection.ASC })}\n >\n Due date\n \n handleSetSorting({ type: TaskSortingType.MEMBERS, direction: TaskSortingDirection.ASC })}\n >\n Members\n \n handleSetSorting({ type: TaskSortingType.LABELS, direction: TaskSortingDirection.ASC })}\n >\n Labels\n \n handleSetSorting({ type: TaskSortingType.TASK_TITLE, direction: TaskSortingDirection.ASC })}\n >\n Task title\n \n handleSetSorting({ type: TaskSortingType.COMPLETE, direction: TaskSortingDirection.ASC })}\n >\n Complete\n \n \n );\n};\n\nexport default SortPopup;\n","import React, { useState, useRef } from 'react';\nimport updateApolloCache from 'shared/utils/cache';\nimport styled, { css } from 'styled-components/macro';\nimport { Bolt, ToggleOn, Tags, CheckCircle, Sort, Filter } from 'shared/icons';\nimport { usePopup, Popup } from 'shared/components/PopupMenu';\nimport { useRouteMatch, useHistory } from 'react-router-dom';\nimport {\n useSetTaskCompleteMutation,\n useToggleTaskLabelMutation,\n useFindProjectQuery,\n useSortTaskGroupMutation,\n useUpdateTaskGroupNameMutation,\n useUpdateTaskNameMutation,\n useCreateTaskMutation,\n useDeleteTaskMutation,\n useUpdateTaskLocationMutation,\n useUpdateTaskGroupLocationMutation,\n useCreateTaskGroupMutation,\n useDeleteTaskGroupMutation,\n useAssignTaskMutation,\n FindProjectDocument,\n useUnassignTaskMutation,\n useUpdateTaskDueDateMutation,\n FindProjectQuery,\n useDuplicateTaskGroupMutation,\n DuplicateTaskGroupMutation,\n DuplicateTaskGroupDocument,\n useDeleteTaskGroupTasksMutation,\n} from 'shared/generated/graphql';\n\nimport QuickCardEditor from 'shared/components/QuickCardEditor';\nimport ListActions from 'shared/components/ListActions';\nimport MemberManager from 'shared/components/MemberManager';\nimport SimpleLists, {\n TaskStatus,\n TaskSince,\n TaskStatusFilter,\n TaskMeta,\n TaskMetaMatch,\n TaskMetaFilters,\n} from 'shared/components/Lists';\nimport { TaskSorting, TaskSortingType, TaskSortingDirection, sortTasks } from 'shared/utils/sorting';\nimport produce from 'immer';\nimport MiniProfile from 'shared/components/MiniProfile';\nimport DueDateManager from 'shared/components/DueDateManager';\nimport EmptyBoard from 'shared/components/EmptyBoard';\nimport NOOP from 'shared/utils/noop';\nimport LabelManagerEditor from 'Projects/Project/LabelManagerEditor';\nimport Chip from 'shared/components/Chip';\nimport { toast } from 'react-toastify';\nimport { useCurrentUser } from 'App/context';\nimport FilterStatus from './FilterStatus';\nimport FilterMeta from './FilterMeta';\nimport SortPopup from './SortPopup';\n\nconst FilterChip = styled(Chip)`\n margin-right: 4px;\n`;\n\ntype MetaFilterCloseFn = (meta: TaskMeta, key: string) => void;\n\nconst renderTaskSortingLabel = (sorting: TaskSorting) => {\n if (sorting.type === TaskSortingType.TASK_TITLE) {\n return 'Sort: Card title';\n }\n if (sorting.type === TaskSortingType.MEMBERS) {\n return 'Sort: Members';\n }\n if (sorting.type === TaskSortingType.DUE_DATE) {\n return 'Sort: Due Date';\n }\n if (sorting.type === TaskSortingType.LABELS) {\n return 'Sort: Labels';\n }\n return 'Sort';\n};\n\nconst renderMetaFilters = (filters: TaskMetaFilters, onClose: MetaFilterCloseFn) => {\n const filterChips = [];\n if (filters.taskName) {\n filterChips.push(\n onClose(TaskMeta.TITLE, 'task-name')}\n />,\n );\n }\n\n if (filters.dueDate) {\n filterChips.push(\n onClose(TaskMeta.DUE_DATE, 'due-date')}\n />,\n );\n }\n for (const memberFilter of filters.members) {\n filterChips.push(\n onClose(TaskMeta.MEMBER, memberFilter.id)}\n />,\n );\n }\n for (const labelFilter of filters.labels) {\n filterChips.push(\n onClose(TaskMeta.LABEL, labelFilter.id)}\n />,\n );\n }\n return filterChips;\n};\n\nconst ProjectBar = styled.div`\n display: flex;\n align-items: center;\n justify-content: space-between;\n height: 40px;\n padding: 0 12px;\n`;\n\nconst ProjectActions = styled.div`\n display: flex;\n align-items: center;\n`;\n\nconst ProjectActionWrapper = styled.div<{ disabled?: boolean }>`\n cursor: pointer;\n display: flex;\n align-items: center;\n font-size: 15px;\n color: ${(props) => props.theme.colors.text.primary};\n\n &:not(:last-of-type) {\n margin-right: 16px;\n }\n\n &:hover {\n color: ${(props) => props.theme.colors.text.secondary};\n }\n ${(props) =>\n props.disabled &&\n css`\n opacity: 0.5;\n cursor: default;\n pointer-events: none;\n `}\n`;\n\nconst ProjectActionText = styled.span`\n padding-left: 4px;\n`;\n\ntype ProjectActionProps = {\n onClick?: (target: React.RefObject) => void;\n disabled?: boolean;\n};\n\nconst ProjectAction: React.FC = ({ onClick, disabled = false, children }) => {\n const $container = useRef(null);\n const handleClick = () => {\n if (onClick) {\n onClick($container);\n }\n };\n return (\n \n {children}\n \n );\n};\n\ninterface QuickCardEditorState {\n isOpen: boolean;\n target: React.RefObject | null;\n taskID: string | null;\n taskGroupID: string | null;\n}\n\nconst initialQuickCardEditorState: QuickCardEditorState = {\n taskID: null,\n taskGroupID: null,\n isOpen: false,\n target: null,\n};\n\ntype ProjectBoardProps = {\n onCardLabelClick?: () => void;\n cardLabelVariant?: CardLabelVariant;\n projectID: string;\n};\n\nexport const BoardLoading = () => {\n const { user } = useCurrentUser();\n return (\n <>\n \n \n \n \n All Tasks\n \n \n \n Sort\n \n \n \n Filter\n \n \n {user && (\n \n \n \n Labels\n \n \n \n Fields\n \n \n \n Rules\n \n \n )}\n \n \n \n );\n};\n\nconst initTaskStatusFilter: TaskStatusFilter = {\n status: TaskStatus.ALL,\n since: TaskSince.ALL,\n};\n\nconst initTaskMetaFilters: TaskMetaFilters = {\n match: TaskMetaMatch.MATCH_ANY,\n dueDate: null,\n taskName: null,\n labels: [],\n members: [],\n};\n\nconst initTaskSorting: TaskSorting = {\n type: TaskSortingType.NONE,\n direction: TaskSortingDirection.ASC,\n};\n\nconst ProjectBoard: React.FC = ({ projectID, onCardLabelClick, cardLabelVariant }) => {\n const [assignTask] = useAssignTaskMutation();\n const [unassignTask] = useUnassignTaskMutation();\n const match = useRouteMatch();\n const labelsRef = useRef>([]);\n const membersRef = useRef>([]);\n const { showPopup, hidePopup } = usePopup();\n const taskLabelsRef = useRef>([]);\n const [quickCardEditor, setQuickCardEditor] = useState(initialQuickCardEditorState);\n const [updateTaskGroupLocation] = useUpdateTaskGroupLocationMutation({});\n const [taskStatusFilter, setTaskStatusFilter] = useState(initTaskStatusFilter);\n const [taskMetaFilters, setTaskMetaFilters] = useState(initTaskMetaFilters);\n const [taskSorting, setTaskSorting] = useState(initTaskSorting);\n const history = useHistory();\n const [sortTaskGroup] = useSortTaskGroupMutation({\n onCompleted: () => {\n toast('List was sorted');\n },\n });\n const [deleteTaskGroup] = useDeleteTaskGroupMutation({\n update: (client, deletedTaskGroupData) => {\n updateApolloCache(\n client,\n FindProjectDocument,\n (cache) =>\n produce(cache, (draftCache) => {\n draftCache.findProject.taskGroups = draftCache.findProject.taskGroups.filter(\n (taskGroup: TaskGroup) => taskGroup.id !== deletedTaskGroupData.data?.deleteTaskGroup.taskGroup.id,\n );\n }),\n { projectID },\n );\n },\n });\n const [updateTaskName] = useUpdateTaskNameMutation();\n const [createTask] = useCreateTaskMutation({\n update: (client, newTaskData) => {\n updateApolloCache(\n client,\n FindProjectDocument,\n (cache) =>\n produce(cache, (draftCache) => {\n const { taskGroups } = cache.findProject;\n const idx = taskGroups.findIndex((taskGroup) => taskGroup.id === newTaskData.data?.createTask.taskGroup.id);\n if (idx !== -1) {\n if (newTaskData.data) {\n draftCache.findProject.taskGroups[idx].tasks.push({ ...newTaskData.data.createTask });\n }\n }\n }),\n { projectID },\n );\n },\n });\n\n const [createTaskGroup] = useCreateTaskGroupMutation({\n update: (client, newTaskGroupData) => {\n updateApolloCache(\n client,\n FindProjectDocument,\n (cache) =>\n produce(cache, (draftCache) => {\n if (newTaskGroupData.data) {\n draftCache.findProject.taskGroups.push({ ...newTaskGroupData.data.createTaskGroup, tasks: [] });\n }\n }),\n { projectID },\n );\n },\n });\n\n const [updateTaskGroupName] = useUpdateTaskGroupNameMutation({});\n const { loading, data } = useFindProjectQuery({\n variables: { projectID },\n });\n const [deleteTaskGroupTasks] = useDeleteTaskGroupTasksMutation({\n update: (client, resp) =>\n updateApolloCache(\n client,\n FindProjectDocument,\n (cache) =>\n produce(cache, (draftCache) => {\n const idx = cache.findProject.taskGroups.findIndex(\n (t) => t.id === resp.data?.deleteTaskGroupTasks.taskGroupID,\n );\n if (idx !== -1) {\n draftCache.findProject.taskGroups[idx].tasks = [];\n }\n }),\n { projectID },\n ),\n });\n const [duplicateTaskGroup] = useDuplicateTaskGroupMutation({\n update: (client, resp) => {\n updateApolloCache(\n client,\n FindProjectDocument,\n (cache) =>\n produce(cache, (draftCache) => {\n if (resp.data) {\n draftCache.findProject.taskGroups.push(resp.data.duplicateTaskGroup.taskGroup);\n }\n }),\n { projectID },\n );\n },\n });\n\n const [updateTaskDueDate] = useUpdateTaskDueDateMutation();\n const [setTaskComplete] = useSetTaskCompleteMutation();\n const [updateTaskLocation] = useUpdateTaskLocationMutation({\n update: (client, newTask) => {\n updateApolloCache(\n client,\n FindProjectDocument,\n (cache) =>\n produce(cache, (draftCache) => {\n if (newTask.data) {\n const { previousTaskGroupID, task } = newTask.data.updateTaskLocation;\n if (previousTaskGroupID !== task.taskGroup.id) {\n const { taskGroups } = cache.findProject;\n const oldTaskGroupIdx = taskGroups.findIndex((t: TaskGroup) => t.id === previousTaskGroupID);\n const newTaskGroupIdx = taskGroups.findIndex((t: TaskGroup) => t.id === task.taskGroup.id);\n if (oldTaskGroupIdx !== -1 && newTaskGroupIdx !== -1) {\n const previousTask = cache.findProject.taskGroups[oldTaskGroupIdx].tasks.find(\n (t) => t.id === task.id,\n );\n draftCache.findProject.taskGroups[oldTaskGroupIdx].tasks = taskGroups[oldTaskGroupIdx].tasks.filter(\n (t: Task) => t.id !== task.id,\n );\n if (previousTask) {\n draftCache.findProject.taskGroups[newTaskGroupIdx].tasks = [\n ...taskGroups[newTaskGroupIdx].tasks,\n { ...previousTask },\n ];\n }\n }\n }\n }\n }),\n { projectID },\n );\n },\n });\n const { user } = useCurrentUser();\n const [deleteTask] = useDeleteTaskMutation();\n const [toggleTaskLabel] = useToggleTaskLabelMutation({\n onCompleted: (newTaskLabel) => {\n taskLabelsRef.current = newTaskLabel.toggleTaskLabel.task.labels;\n },\n });\n\n const onCreateTask = (taskGroupID: string, name: string) => {\n if (data) {\n const taskGroup = data.findProject.taskGroups.find((t) => t.id === taskGroupID);\n if (taskGroup) {\n let position = 65535;\n if (taskGroup.tasks.length !== 0) {\n const [lastTask] = taskGroup.tasks\n .slice()\n .sort((a: any, b: any) => a.position - b.position)\n .slice(-1);\n position = Math.ceil(lastTask.position) * 2 + 1;\n }\n\n createTask({\n variables: { taskGroupID, name, position },\n optimisticResponse: {\n __typename: 'Mutation',\n createTask: {\n __typename: 'Task',\n id: `${Math.round(Math.random() * -1000000)}`,\n name,\n complete: false,\n completedAt: null,\n hasTime: false,\n taskGroup: {\n __typename: 'TaskGroup',\n id: taskGroup.id,\n name: taskGroup.name,\n position: taskGroup.position,\n },\n badges: {\n __typename: 'TaskBadges',\n checklist: null,\n },\n position,\n dueDate: null,\n description: null,\n labels: [],\n assigned: [],\n },\n },\n });\n }\n }\n };\n\n const onCreateList = (listName: string) => {\n if (data && projectID) {\n const [lastColumn] = data.findProject.taskGroups.sort((a, b) => a.position - b.position).slice(-1);\n let position = 65535;\n if (lastColumn) {\n position = lastColumn.position * 2 + 1;\n }\n createTaskGroup({ variables: { projectID, name: listName, position } });\n }\n };\n\n const getTaskStatusFilterLabel = (filter: TaskStatusFilter) => {\n if (filter.status === TaskStatus.COMPLETE) {\n return 'Complete';\n }\n if (filter.status === TaskStatus.INCOMPLETE) {\n return 'Incomplete';\n }\n return 'All Tasks';\n };\n\n if (data) {\n labelsRef.current = data.findProject.labels;\n membersRef.current = data.findProject.members;\n const onQuickEditorOpen = ($target: React.RefObject, taskID: string, taskGroupID: string) => {\n const taskGroup = data.findProject.taskGroups.find((t) => t.id === taskGroupID);\n const currentTask = taskGroup ? taskGroup.tasks.find((t) => t.id === taskID) : null;\n if (currentTask) {\n setQuickCardEditor({\n target: $target,\n isOpen: true,\n taskID: currentTask.id,\n taskGroupID: currentTask.taskGroup.id,\n });\n }\n };\n let currentQuickTask = null;\n if (quickCardEditor.taskID && quickCardEditor.taskGroupID) {\n const targetGroup = data.findProject.taskGroups.find((t) => t.id === quickCardEditor.taskGroupID);\n if (targetGroup) {\n currentQuickTask = targetGroup.tasks.find((t) => t.id === quickCardEditor.taskID);\n }\n }\n return (\n <>\n \n \n {\n showPopup(\n target,\n \n {\n setTaskStatusFilter(filter);\n hidePopup();\n }}\n />\n ,\n { width: 185 },\n );\n }}\n >\n \n {getTaskStatusFilterLabel(taskStatusFilter)}\n \n {\n showPopup(\n target,\n \n {\n setTaskSorting(sorting);\n }}\n />\n ,\n { width: 185 },\n );\n }}\n >\n \n {renderTaskSortingLabel(taskSorting)}\n \n {\n showPopup(\n target,\n {\n setTaskMetaFilters(filter);\n }}\n userID={user ?? ''}\n projectID={projectID}\n members={membersRef}\n />,\n { width: 200 },\n );\n }}\n >\n \n Filter\n \n {renderMetaFilters(taskMetaFilters, (meta, id) => {\n setTaskMetaFilters(\n produce(taskMetaFilters, (draftFilters) => {\n if (meta === TaskMeta.MEMBER) {\n draftFilters.members = draftFilters.members.filter((m) => m.id !== id);\n } else if (meta === TaskMeta.LABEL) {\n draftFilters.labels = draftFilters.labels.filter((m) => m.id !== id);\n } else if (meta === TaskMeta.TITLE) {\n draftFilters.taskName = null;\n } else if (meta === TaskMeta.DUE_DATE) {\n draftFilters.dueDate = null;\n }\n }),\n );\n })}\n \n {user && (\n \n {\n showPopup(\n $labelsRef,\n ,\n );\n }}\n >\n \n Labels\n \n \n \n Fields\n \n \n \n Rules\n \n \n )}\n \n {\n history.push(`${match.url}/c/${task.id}`);\n }}\n onCardLabelClick={onCardLabelClick ?? NOOP}\n cardLabelVariant={cardLabelVariant ?? 'large'}\n onTaskDrop={(droppedTask, previousTaskGroupID) => {\n updateTaskLocation({\n variables: {\n taskID: droppedTask.id,\n taskGroupID: droppedTask.taskGroup.id,\n position: droppedTask.position,\n },\n optimisticResponse: {\n __typename: 'Mutation',\n updateTaskLocation: {\n __typename: 'UpdateTaskLocationPayload',\n previousTaskGroupID,\n task: {\n ...droppedTask,\n __typename: 'Task',\n name: droppedTask.name,\n id: droppedTask.id,\n position: droppedTask.position,\n taskGroup: {\n id: droppedTask.taskGroup.id,\n __typename: 'TaskGroup',\n },\n createdAt: '',\n },\n },\n },\n });\n }}\n onTaskGroupDrop={(droppedTaskGroup) => {\n updateTaskGroupLocation({\n variables: { taskGroupID: droppedTaskGroup.id, position: droppedTaskGroup.position },\n optimisticResponse: {\n __typename: 'Mutation',\n updateTaskGroupLocation: {\n id: droppedTaskGroup.id,\n position: droppedTaskGroup.position,\n __typename: 'TaskGroup',\n },\n },\n });\n }}\n taskGroups={data.findProject.taskGroups}\n taskStatusFilter={taskStatusFilter}\n taskMetaFilters={taskMetaFilters}\n taskSorting={taskSorting}\n onCreateTask={onCreateTask}\n onCreateTaskGroup={onCreateList}\n onCardMemberClick={($targetRef, _taskID, memberID) => {\n const member = data.findProject.members.find((m) => m.id === memberID);\n if (member) {\n showPopup(\n $targetRef,\n {\n /* unassignTask({ variables: { taskID: data.findTask.id, userID: userID ?? '' } }); */\n }}\n />,\n );\n }\n }}\n onChangeTaskGroupName={(taskGroupID, name) => {\n updateTaskGroupName({ variables: { taskGroupID, name } });\n }}\n onQuickEditorOpen={onQuickEditorOpen}\n onExtraMenuOpen={(taskGroupID: string, $targetRef: any) => {\n showPopup(\n $targetRef,\n {\n deleteTaskGroupTasks({ variables: { taskGroupID } });\n hidePopup();\n }}\n onSortTaskGroup={(taskSort) => {\n const taskGroup = data.findProject.taskGroups.find((t) => t.id === taskGroupID);\n if (taskGroup) {\n const tasks: Array<{ taskID: string; position: number }> = taskGroup.tasks\n .sort((a, b) => sortTasks(a, b, taskSort))\n .reduce((prevTasks: Array<{ taskID: string; position: number }>, t, idx) => {\n prevTasks.push({ taskID: t.id, position: (idx + 1) * 2048 });\n return tasks;\n }, []);\n sortTaskGroup({ variables: { taskGroupID, tasks } });\n hidePopup();\n }\n }}\n onDuplicateTaskGroup={(newName) => {\n const idx = data.findProject.taskGroups.findIndex((t) => t.id === taskGroupID);\n if (idx !== -1) {\n const taskGroups = data.findProject.taskGroups.sort((a, b) => a.position - b.position);\n const prevPos = taskGroups[idx].position;\n const next = taskGroups[idx + 1];\n let newPos = prevPos * 2;\n if (next) {\n newPos = (prevPos + next.position) / 2.0;\n }\n duplicateTaskGroup({ variables: { projectID, taskGroupID, name: newName, position: newPos } });\n hidePopup();\n }\n }}\n onArchiveTaskGroup={(tgID) => {\n deleteTaskGroup({ variables: { taskGroupID: tgID } });\n hidePopup();\n }}\n />,\n );\n }}\n />\n {quickCardEditor.isOpen && currentQuickTask && quickCardEditor.target && (\n setQuickCardEditor(initialQuickCardEditorState)}\n onEditCard={(_taskGroupID: string, taskID: string, cardName: string) => {\n updateTaskName({ variables: { taskID, name: cardName } });\n }}\n onOpenMembersPopup={($targetRef, task) => {\n showPopup(\n $targetRef,\n hidePopup()}>\n {\n if (isActive) {\n assignTask({ variables: { taskID: task.id, userID: member.id } });\n } else {\n unassignTask({ variables: { taskID: task.id, userID: member.id } });\n }\n }}\n />\n ,\n );\n }}\n onCardMemberClick={($targetRef, _taskID, memberID) => {\n const member = data.findProject.members.find((m) => m.id === memberID);\n if (member) {\n showPopup(\n $targetRef,\n {\n /* unassignTask({ variables: { taskID: data.findTask.id, userID: userID ?? '' } }); */\n }}\n />,\n );\n }\n }}\n onOpenLabelsPopup={($targetRef, task) => {\n taskLabelsRef.current = task.labels;\n showPopup(\n $targetRef,\n {\n toggleTaskLabel({ variables: { taskID: task.id, projectLabelID: labelID } });\n }}\n taskID={task.id}\n labelColors={data.labelColors}\n taskLabels={taskLabelsRef}\n projectID={projectID ?? ''}\n />,\n );\n }}\n onArchiveCard={(_listId: string, cardId: string) => {\n return deleteTask({\n variables: { taskID: cardId },\n update: (client) => {\n updateApolloCache(\n client,\n FindProjectDocument,\n (cache) =>\n produce(cache, (draftCache) => {\n draftCache.findProject.taskGroups = cache.findProject.taskGroups.map((taskGroup) => ({\n ...taskGroup,\n tasks: taskGroup.tasks.filter((t) => t.id !== cardId),\n }));\n }),\n { projectID },\n );\n },\n });\n }}\n onOpenDueDatePopup={($targetRef, task) => {\n showPopup(\n $targetRef,\n hidePopup()}>\n {\n updateTaskDueDate({ variables: { taskID: t.id, dueDate: null, hasTime: false } });\n // hidePopup();\n }}\n onDueDateChange={(t, newDueDate, hasTime) => {\n updateTaskDueDate({ variables: { taskID: t.id, dueDate: newDueDate, hasTime } });\n // hidePopup();\n }}\n onCancel={NOOP}\n />\n ,\n );\n }}\n onToggleComplete={(task) => {\n setTaskComplete({ variables: { taskID: task.id, complete: !task.complete } });\n }}\n target={quickCardEditor.target}\n />\n )}\n \n );\n }\n\n return ;\n};\n\nexport default ProjectBoard;\n","import styled from 'styled-components';\nimport Button from 'shared/components/Button';\n\nexport const OptionWrapper = styled.div<{ isFocused: boolean }>`\n cursor: pointer;\n padding: 4px 8px;\n ${props => props.isFocused && `background: rgba(${props.theme.colors.primary});`}\n display: flex;\n align-items: center;\n`;\n\nexport const OptionContent = styled.div`\n display: flex;\n flex-direction: column;\n margin-left: 12px;\n`;\n\nexport const OptionLabel = styled.span<{ fontSize: number; quiet: boolean }>`\n display: flex;\n align-items: center;\n font-size: ${p => p.fontSize}px;\n color: rgba(${p => (p.quiet ? p.theme.colors.text.primary : p.theme.colors.text.primary)});\n`;\n\nexport const OptionValueWrapper = styled.div`\n background: rgba(${props => props.theme.colors.bg.primary});\n border-radius: 4px;\n margin: 2px;\n padding: 3px 6px 3px 4px;\n display: flex;\n align-items: center;\n`;\n\nexport const OptionValueLabel = styled.span`\n font-size: 12px;\n color: rgba(${props => props.theme.colors.text.secondary});\n`;\n\nexport const OptionValueRemove = styled.button`\n cursor: pointer;\n display: flex;\n align-items: center;\n justify-content: center;\n background: none;\n border: none;\n outline: none;\n padding: 0;\n margin: 0;\n margin-left: 4px;\n`;\n\nexport const InviteButton = styled(Button)`\n margin-top: 12px;\n height: 32px;\n padding: 4px 12px;\n width: 100%;\n justify-content: center;\n`;\n\nexport const InviteContainer = styled.div`\n min-height: 300px;\n display: flex;\n flex-direction: column;\n`;\n","import React from 'react';\nimport { Cross } from 'shared/icons';\nimport * as S from './Styles';\n\nconst OptionValue = ({ data, removeProps }: any) => {\n return (\n \n {data.label}\n \n \n \n \n );\n};\n\nexport default OptionValue;\n","import React from 'react';\nimport TaskAssignee from 'shared/components/TaskAssignee';\nimport * as S from './Styles';\n\ntype UserOptionProps = {\n innerProps: any;\n isDisabled: boolean;\n isFocused: boolean;\n label: string;\n data: any;\n getValue: any;\n};\n\nconst UserOption: React.FC = ({ isDisabled, isFocused, innerProps, label, data }) => {\n return !isDisabled ? (\n \n \n \n \n {label}\n \n {data.value.type === 2 && (\n \n Joined\n \n )}\n \n \n ) : null;\n};\n\nexport default UserOption;\n","const RFC2822_EMAIL = /[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/;\n\nexport default function isValidEmail(target: string) {\n return RFC2822_EMAIL.test(target);\n}\n","import gql from 'graphql-tag';\nimport isValidEmail from 'shared/utils/email';\n\ntype MemberFilterOptions = {\n projectID?: null | string;\n teamID?: null | string;\n organization?: boolean;\n};\n\nexport default async function(client: any, projectID: string, options: MemberFilterOptions, input: string, cb: any) {\n if (input && input.trim().length < 3) {\n return [];\n }\n const res = await client.query({\n query: gql`\n query {\n searchMembers(input: {searchFilter:\"${input}\", projectID:\"${projectID}\"}) {\n id\n similarity\n status\n user {\n id\n fullName\n email\n profileIcon {\n url\n initials\n bgColor\n }\n }\n }\n }\n `,\n });\n\n let results: any = [];\n const emails: Array = [];\n if (res.data && res.data.searchMembers) {\n results = [\n ...res.data.searchMembers.map((m: any) => {\n if (m.status === 'INVITED') {\n return {\n label: m.id,\n value: {\n id: m.id,\n type: 2,\n profileIcon: {\n bgColor: '#ccc',\n initials: m.id.charAt(0),\n },\n },\n };\n }\n\n emails.push(m.user.email);\n return {\n label: m.user.fullName,\n value: { id: m.user.id, type: 0, profileIcon: m.user.profileIcon },\n };\n }),\n ];\n }\n\n if (isValidEmail(input) && !emails.find(e => e === input)) {\n results = [\n ...results,\n {\n label: input,\n value: {\n id: input,\n type: 1,\n profileIcon: {\n bgColor: '#ccc',\n initials: input.charAt(0),\n },\n },\n },\n ];\n }\n\n return results;\n}\n","import React, { useState } from 'react';\nimport AsyncSelect from 'react-select/async';\nimport { useApolloClient } from '@apollo/react-hooks';\nimport { colourStyles } from 'shared/components/Select';\nimport { Popup } from 'shared/components/PopupMenu';\nimport OptionValue from './OptionValue';\nimport UserOption from './UserOption';\nimport fetchMembers from './fetchMembers';\nimport * as S from './Styles';\n\ntype InviteUserData = {\n email?: string;\n userID?: string;\n};\n\ntype UserManagementPopupProps = {\n projectID: string;\n users: Array;\n projectMembers: Array;\n onInviteProjectMembers: (data: Array) => void;\n};\n\nconst UserManagementPopup: React.FC = ({\n projectID,\n users,\n projectMembers,\n onInviteProjectMembers,\n}) => {\n const client = useApolloClient();\n const [invitedUsers, setInvitedUsers] = useState | null>(null);\n return (\n \n \n option.value.id}\n placeholder=\"Email address or username\"\n noOptionsMessage={() => null}\n onChange={(e: any) => {\n setInvitedUsers(e);\n }}\n isMulti\n autoFocus\n cacheOptions\n styles={colourStyles}\n defaultOption\n components={{\n MultiValue: OptionValue,\n Option: UserOption,\n IndicatorSeparator: null,\n DropdownIndicator: null,\n }}\n loadOptions={(i, cb) => fetchMembers(client, projectID, {}, i, cb)}\n />\n \n {\n if (invitedUsers) {\n onInviteProjectMembers(\n invitedUsers.map(user => {\n if (user.value.type === 0) {\n return {\n userID: user.value.id,\n };\n }\n return {\n email: user.value.id,\n };\n }),\n );\n }\n }}\n disabled={invitedUsers === null}\n hoverVariant=\"none\"\n fontSize=\"16px\"\n >\n Send Invite\n \n \n );\n};\n\nexport default UserManagementPopup;\n","// LOC830\nimport React, { useRef, useEffect } from 'react';\nimport updateApolloCache from 'shared/utils/cache';\nimport GlobalTopNavbar from 'App/TopNavbar';\nimport ProjectPopup from 'App/TopNavbar/ProjectPopup';\nimport { usePopup } from 'shared/components/PopupMenu';\nimport {\n useParams,\n Route,\n useRouteMatch,\n useHistory,\n RouteComponentProps,\n useLocation,\n Redirect,\n} from 'react-router-dom';\nimport {\n useUpdateProjectMemberRoleMutation,\n useInviteProjectMembersMutation,\n useDeleteProjectMemberMutation,\n useToggleTaskLabelMutation,\n useUpdateProjectNameMutation,\n useFindProjectQuery,\n useDeleteInvitedProjectMemberMutation,\n useUpdateTaskNameMutation,\n useDeleteTaskMutation,\n useUpdateTaskDescriptionMutation,\n FindProjectDocument,\n FindProjectQuery,\n} from 'shared/generated/graphql';\nimport produce from 'immer';\nimport NOOP from 'shared/utils/noop';\nimport useStateWithLocalStorage from 'shared/hooks/useStateWithLocalStorage';\nimport localStorage from 'shared/utils/localStorage';\nimport polling from 'shared/utils/polling';\nimport Board, { BoardLoading } from './Board';\nimport Details from './Details';\nimport LabelManagerEditor from './LabelManagerEditor';\nimport UserManagementPopup from './UserManagementPopup';\n\ntype TaskRouteProps = {\n taskID: string;\n};\n\ninterface ProjectParams {\n projectID: string;\n}\n\nconst Project = () => {\n const { projectID } = useParams();\n const history = useHistory();\n const match = useRouteMatch();\n const location = useLocation();\n\n const { showPopup, hidePopup } = usePopup();\n const labelsRef = useRef>([]);\n const [value, setValue] = useStateWithLocalStorage(localStorage.CARD_LABEL_VARIANT_STORAGE_KEY);\n const taskLabelsRef = useRef>([]);\n\n const [updateTaskDescription] = useUpdateTaskDescriptionMutation();\n const [updateProjectMemberRole] = useUpdateProjectMemberRoleMutation();\n const [updateTaskName] = useUpdateTaskNameMutation();\n const { data, error } = useFindProjectQuery({\n variables: { projectID },\n pollInterval: polling.PROJECT,\n });\n const [toggleTaskLabel] = useToggleTaskLabelMutation({\n onCompleted: (newTaskLabel) => {\n taskLabelsRef.current = newTaskLabel.toggleTaskLabel.task.labels;\n },\n });\n const [deleteTask] = useDeleteTaskMutation({\n update: (client, resp) =>\n updateApolloCache(\n client,\n FindProjectDocument,\n (cache) =>\n produce(cache, (draftCache) => {\n if (resp.data) {\n const taskGroupIdx = draftCache.findProject.taskGroups.findIndex(\n (tg) => tg.tasks.findIndex((t) => t.id === resp.data?.deleteTask.taskID) !== -1,\n );\n\n if (taskGroupIdx !== -1) {\n draftCache.findProject.taskGroups[taskGroupIdx].tasks = cache.findProject.taskGroups[\n taskGroupIdx\n ].tasks.filter((t) => t.id !== resp.data?.deleteTask.taskID);\n }\n }\n }),\n { projectID },\n ),\n });\n\n const [updateProjectName] = useUpdateProjectNameMutation({\n update: (client, newName) => {\n updateApolloCache(\n client,\n FindProjectDocument,\n (cache) =>\n produce(cache, (draftCache) => {\n draftCache.findProject.name = newName.data?.updateProjectName.name ?? '';\n }),\n { projectID },\n );\n },\n });\n\n const [inviteProjectMembers] = useInviteProjectMembersMutation({\n update: (client, response) => {\n updateApolloCache(\n client,\n FindProjectDocument,\n (cache) =>\n produce(cache, (draftCache) => {\n if (response.data) {\n draftCache.findProject.members = [\n ...cache.findProject.members,\n ...response.data.inviteProjectMembers.members,\n ];\n draftCache.findProject.invitedMembers = [\n ...cache.findProject.invitedMembers,\n ...response.data.inviteProjectMembers.invitedMembers,\n ];\n }\n }),\n { projectID },\n );\n },\n });\n const [deleteInvitedProjectMember] = useDeleteInvitedProjectMemberMutation({\n update: (client, response) => {\n updateApolloCache(\n client,\n FindProjectDocument,\n (cache) =>\n produce(cache, (draftCache) => {\n draftCache.findProject.invitedMembers = cache.findProject.invitedMembers.filter(\n (m) => m.email !== response.data?.deleteInvitedProjectMember.invitedMember.email ?? '',\n );\n }),\n { projectID },\n );\n },\n });\n const [deleteProjectMember] = useDeleteProjectMemberMutation({\n update: (client, response) => {\n updateApolloCache(\n client,\n FindProjectDocument,\n (cache) =>\n produce(cache, (draftCache) => {\n draftCache.findProject.members = cache.findProject.members.filter(\n (m) => m.id !== response.data?.deleteProjectMember.member.id,\n );\n }),\n { projectID },\n );\n },\n });\n\n useEffect(() => {\n if (data) {\n document.title = `${data.findProject.name} | Taskcafé`;\n }\n }, [data]);\n\n if (data) {\n labelsRef.current = data.findProject.labels;\n\n return (\n <>\n {\n updateProjectMemberRole({ variables: { userID, roleCode, projectID } });\n }}\n onChangeProjectOwner={() => {\n hidePopup();\n }}\n onRemoveFromBoard={(userID) => {\n deleteProjectMember({ variables: { userID, projectID } });\n hidePopup();\n }}\n onRemoveInvitedFromBoard={(email) => {\n deleteInvitedProjectMember({ variables: { projectID, email } });\n hidePopup();\n }}\n onSaveProjectName={(projectName) => {\n updateProjectName({ variables: { projectID, name: projectName } });\n }}\n onInviteUser={($target) => {\n showPopup(\n $target,\n {\n inviteProjectMembers({ variables: { projectID, members } });\n hidePopup();\n }}\n users={data.users}\n projectMembers={data.findProject.members}\n />,\n );\n }}\n popupContent={\n \n }\n menuType={[{ name: 'Board', link: location.pathname }]}\n currentTab={0}\n projectMembers={data.findProject.members}\n projectInvitedMembers={data.findProject.invitedMembers}\n projectID={projectID}\n teamID={data.findProject.team ? data.findProject.team.id : null}\n name={data.findProject.name}\n />\n } />\n (\n {\n const variant = value === 'small' ? 'large' : 'small';\n setValue(() => variant);\n }}\n projectID={projectID}\n />\n )}\n />\n {\n return (\n {\n updateTaskName({ variables: { taskID: updatedTask.id, name: newName } });\n }}\n onTaskDescriptionChange={(updatedTask, newDescription) => {\n updateTaskDescription({\n variables: { taskID: updatedTask.id, description: newDescription },\n optimisticResponse: {\n __typename: 'Mutation',\n updateTaskDescription: {\n __typename: 'Task',\n id: updatedTask.id,\n description: newDescription,\n },\n },\n });\n }}\n onDeleteTask={(deletedTask) => {\n deleteTask({ variables: { taskID: deletedTask.id } });\n history.push(`${match.url}/board`);\n }}\n onOpenAddLabelPopup={(task, $targetRef) => {\n taskLabelsRef.current = task.labels;\n showPopup(\n $targetRef,\n {\n toggleTaskLabel({ variables: { taskID: task.id, projectLabelID: labelID } });\n }}\n taskID={task.id}\n labelColors={data.labelColors}\n taskLabels={taskLabelsRef}\n projectID={projectID}\n />,\n );\n }}\n />\n );\n }}\n />\n \n );\n }\n return (\n <>\n \n \n \n );\n};\n\nexport default Project;\n","import React, { useState } from 'react';\nimport Input from 'shared/components/Input';\nimport updateApolloCache from 'shared/utils/cache';\nimport produce from 'immer';\nimport polling from 'shared/utils/polling';\nimport Button from 'shared/components/Button';\nimport { useCurrentUser } from 'App/context';\nimport Select from 'shared/components/Select';\nimport {\n useGetTeamQuery,\n RoleCode,\n useCreateTeamMemberMutation,\n useDeleteTeamMemberMutation,\n useUpdateTeamMemberRoleMutation,\n GetTeamQuery,\n GetTeamDocument,\n} from 'shared/generated/graphql';\nimport { UserPlus, Checkmark } from 'shared/icons';\nimport styled, { css } from 'styled-components/macro';\nimport { usePopup, Popup } from 'shared/components/PopupMenu';\nimport TaskAssignee from 'shared/components/TaskAssignee';\nimport Member from 'shared/components/Member';\nimport ControlledInput from 'shared/components/ControlledInput';\nimport NOOP from 'shared/utils/noop';\nimport { mixin } from 'shared/utils/styles';\n\nconst MemberListWrapper = styled.div`\n flex: 1 1;\n`;\n\nconst SearchInput = styled(ControlledInput)`\n margin: 0 12px;\n`;\n\nconst UserMember = styled(Member)`\n padding: 4px 0;\n cursor: pointer;\n &:hover {\n background: ${(props) => mixin.rgba(props.theme.colors.bg.primary, 0.4)};\n }\n border-radius: 6px;\n`;\n\nconst TeamMemberList = styled.div`\n margin: 8px 12px;\n`;\n\ntype UserManagementPopupProps = {\n users: Array;\n teamMembers: Array;\n onAddTeamMember: (userID: string) => void;\n};\n\nconst UserManagementPopup: React.FC = ({ users, teamMembers, onAddTeamMember }) => {\n return (\n \n \n \n {users\n .filter((u) => u.id !== teamMembers.find((p) => p.id === u.id)?.id)\n .map((user) => (\n onAddTeamMember(user.id)}\n showName\n member={user}\n taskID=\"\"\n />\n ))}\n \n \n );\n};\n\nexport const RoleCheckmark = styled(Checkmark)`\n padding-left: 4px;\n`;\n\nconst permissions = [\n {\n code: 'owner',\n name: 'Owner',\n description:\n 'Can view, create and edit team projects, and change settings for the team. Will have admin rights on all projects in this team. Can delete the team and all team projects.',\n },\n {\n code: 'admin',\n name: 'Admin',\n description:\n 'Can view, create and edit team projects, and change settings for the team. Will have admin rights on all projects in this team.',\n },\n\n { code: 'member', name: 'Member', description: 'Can view, create, and edit team projects, but not change settings.' },\n];\n\nexport const RoleName = styled.div`\n font-size: 14px;\n font-weight: 700;\n`;\nexport const RoleDescription = styled.div`\n margin-top: 4px;\n font-size: 14px;\n`;\n\nexport const MiniProfileActions = styled.ul`\n list-style-type: none;\n`;\n\nexport const MiniProfileActionWrapper = styled.li``;\n\nexport const MiniProfileActionItem = styled.span<{ disabled?: boolean }>`\n color: #c2c6dc;\n display: block;\n font-weight: 400;\n padding: 6px 12px;\n position: relative;\n text-decoration: none;\n\n ${(props) =>\n props.disabled\n ? css`\n user-select: none;\n pointer-events: none;\n color: ${mixin.rgba(props.theme.colors.text.primary, 0.4)};\n `\n : css`\n cursor: pointer;\n &:hover {\n background: ${props.theme.colors.primary};\n }\n `}\n`;\n\nexport const Content = styled.div`\n padding: 0 12px 12px;\n`;\n\nexport const CurrentPermission = styled.span`\n margin-left: 4px;\n color: ${(props) => mixin.rgba(props.theme.colors.text.secondary, 0.4)};\n`;\n\nexport const Separator = styled.div`\n height: 1px;\n border-top: 1px solid #414561;\n margin: 0.25rem !important;\n`;\n\nexport const WarningText = styled.span`\n display: flex;\n color: ${(props) => mixin.rgba(props.theme.colors.text.primary, 0.4)};\n padding: 6px;\n`;\n\nexport const DeleteDescription = styled.div`\n font-size: 14px;\n color: ${(props) => props.theme.colors.text.primary};\n`;\n\nexport const RemoveMemberButton = styled(Button)`\n margin-top: 16px;\n padding: 6px 12px;\n width: 100%;\n`;\n\ntype TeamRoleManagerPopupProps = {\n currentUserID: string;\n subject: User;\n members: Array;\n warning?: string | null;\n canChangeRole: boolean;\n onChangeRole: (roleCode: RoleCode) => void;\n onRemoveFromTeam?: (newOwnerID: string | null) => void;\n};\n\nconst TeamRoleManagerPopup: React.FC = ({\n members,\n warning,\n subject,\n currentUserID,\n canChangeRole,\n onRemoveFromTeam,\n onChangeRole,\n}) => {\n const { hidePopup, setTab } = usePopup();\n const [orphanedProjectOwner, setOrphanedProjectOwner] = useState<{ label: string; value: string } | null>(null);\n return (\n <>\n \n \n \n {subject.role && (\n {\n setTab(1);\n }}\n >\n Change permissions...\n {`(${subject.role.name})`}\n \n )}\n {onRemoveFromTeam && (\n {\n setTab(2);\n }}\n >\n {currentUserID === subject.id ? 'Leave team...' : 'Remove from team...'}\n \n )}\n \n \n {warning && (\n <>\n \n {warning}\n \n )}\n \n hidePopup()} tab={1}>\n \n \n {permissions\n .filter((p) => (subject.role && subject.role.code === 'owner') || p.code !== 'owner')\n .map((perm) => (\n {\n if (subject.role && perm.code !== subject.role.code) {\n switch (perm.code) {\n case 'owner':\n onChangeRole(RoleCode.Owner);\n break;\n case 'admin':\n onChangeRole(RoleCode.Admin);\n break;\n case 'member':\n onChangeRole(RoleCode.Member);\n break;\n default:\n break;\n }\n hidePopup();\n }\n }}\n >\n \n {perm.name}\n {subject.role && perm.code === subject.role.code && }\n \n {perm.description}\n \n ))}\n \n {subject.role && subject.role.code === 'owner' && (\n <>\n \n You can not change roles because there must be an owner.\n \n )}\n \n \n hidePopup()} tab={2}>\n \n \n The member will be removed from all team project tasks. They will receive a notification.\n \n {subject.owned && subject.owned.projects.length !== 0 && (\n <>\n \n {`The member is the owner of ${subject.owned.projects.length} project${\n subject.owned.projects.length > 1 ? 's' : ''\n }. You can give the projects a new owner but it is not needed`}\n \n setOrphanedProjectOwner(value)}\n options={members.filter((m) => m.id !== subject.id).map((m) => ({ label: m.fullName, value: m.id }))}\n />\n \n )}\n {\n if (onRemoveFromTeam) {\n onRemoveFromTeam(orphanedProjectOwner ? orphanedProjectOwner.value : null);\n }\n }}\n >\n Remove Member\n \n \n \n \n );\n};\n\nconst MemberItemOptions = styled.div``;\n\nconst MemberItemOption = styled(Button)`\n padding: 7px 9px;\n margin: 4px 0 2px 8px;\n float: left;\n min-width: 95px;\n`;\n\nconst MemberList = styled.div`\n border-top: 1px solid ${(props) => props.theme.colors.border};\n`;\n\nconst MemberListItem = styled.div`\n display: flex;\n flex-flow: row wrap;\n justify-content: space-between;\n border-bottom: 1px solid ${(props) => props.theme.colors.border};\n min-height: 40px;\n padding: 12px 0 12px 40px;\n position: relative;\n`;\n\nconst MemberListItemDetails = styled.div`\n float: left;\n flex: 1 0 auto;\n padding-left: 8px;\n`;\n\nconst InviteIcon = styled(UserPlus)`\n padding-right: 4px;\n`;\n\nconst MemberProfile = styled(TaskAssignee)`\n position: absolute;\n top: 16px;\n left: 0;\n margin: 0;\n`;\n\nconst MemberItemName = styled.p`\n color: ${(props) => props.theme.colors.text.secondary};\n`;\n\nconst MemberItemUsername = styled.p`\n color: ${(props) => props.theme.colors.text.primary};\n`;\n\nconst MemberListHeader = styled.div`\n display: flex;\n flex-direction: column;\n`;\nconst ListTitle = styled.h3`\n font-size: 18px;\n color: ${(props) => props.theme.colors.text.secondary};\n margin-bottom: 12px;\n`;\nconst ListDesc = styled.span`\n font-size: 16px;\n color: ${(props) => props.theme.colors.text.primary};\n`;\nconst FilterSearch = styled(Input)`\n margin: 0;\n`;\n\nconst ListActions = styled.div`\n display: flex;\n justify-content: space-between;\n align-items: center;\n margin-top: 8px;\n margin-bottom: 18px;\n`;\n\nconst InviteMemberButton = styled(Button)`\n padding: 6px 12px;\n`;\nconst FilterTab = styled.div`\n max-width: 240px;\n flex: 0 0 240px;\n margin: 0;\n padding-right: 32px;\n`;\n\nconst FilterTabItems = styled.ul``;\nconst FilterTabItem = styled.li`\n cursor: pointer;\n border-radius: 3px;\n display: block;\n font-weight: 700;\n text-decoration: none;\n padding: 6px 8px;\n color: ${(props) => props.theme.colors.text.primary};\n &:hover {\n border-radius: 6px;\n background: ${(props) => props.theme.colors.primary};\n color: ${(props) => props.theme.colors.text.secondary};\n }\n`;\n\nconst FilterTabTitle = styled.h2`\n color: #5e6c84;\n font-size: 12px;\n font-weight: 500;\n letter-spacing: 0.04em;\n line-height: 16px;\n margin-top: 16px;\n text-transform: uppercase;\n padding: 8px;\n margin: 0;\n`;\n\nconst MemberContainer = styled.div`\n margin-top: 45px;\n display: flex;\n width: 100%;\n`;\n\ntype MembersProps = {\n teamID: string;\n};\n\nconst Members: React.FC = ({ teamID }) => {\n const { showPopup, hidePopup } = usePopup();\n const { loading, data } = useGetTeamQuery({\n variables: { teamID },\n fetchPolicy: 'cache-and-network',\n pollInterval: polling.MEMBERS,\n });\n const { user } = useCurrentUser();\n const warning =\n 'You can’t leave because you are the only admin. To make another user an admin, click their avatar, select “Change permissions…”, and select “Admin”.';\n const [createTeamMember] = useCreateTeamMemberMutation({\n update: (client, response) => {\n updateApolloCache(\n client,\n GetTeamDocument,\n (cache) =>\n produce(cache, (draftCache) => {\n if (response.data) {\n draftCache.findTeam.members.push({\n ...response.data.createTeamMember.teamMember,\n member: { __typename: 'MemberList', projects: [], teams: [] },\n owned: { __typename: 'OwnedList', projects: [], teams: [] },\n });\n }\n }),\n { teamID },\n );\n },\n });\n const [updateTeamMemberRole] = useUpdateTeamMemberRoleMutation();\n const [deleteTeamMember] = useDeleteTeamMemberMutation({\n update: (client, response) => {\n updateApolloCache(\n client,\n GetTeamDocument,\n (cache) =>\n produce(cache, (draftCache) => {\n draftCache.findTeam.members = cache.findTeam.members.filter(\n (member) => member.id !== response.data?.deleteTeamMember.userID,\n );\n }),\n { teamID },\n );\n },\n });\n\n if (data && user) {\n return (\n \n \n MEMBERS OF TEAM PROJECTS\n \n {`Team Members (${data.findTeam.members.length})`}\n Observers\n \n \n \n \n {`Team Members (${data.findTeam.members.length})`}\n \n Team members can view and join all Team Visible boards and create new boards in the team.\n \n \n \n {true && ( // TODO: add permission check\n {\n showPopup(\n $target,\n {\n createTeamMember({ variables: { userID, teamID } });\n }}\n />,\n );\n }}\n >\n \n Invite Team Members\n \n )}\n \n \n \n {data.findTeam.members.map((member) => (\n \n \n \n {member.fullName}\n {`@${member.username}`}\n \n \n On 2 projects\n {\n showPopup(\n $target,\n {\n updateTeamMemberRole({ variables: { userID: member.id, teamID, roleCode } });\n }}\n onRemoveFromTeam={\n member.role && member.role.code === 'owner'\n ? undefined\n : (newOwnerID) => {\n deleteTeamMember({ variables: { teamID, newOwnerID, userID: member.id } });\n hidePopup();\n }\n }\n />,\n );\n }}\n >\n Manage\n \n \n \n ))}\n \n \n \n );\n }\n\n return
loading
;\n};\n\nexport default Members;\n","import React from 'react';\nimport styled, { css } from 'styled-components/macro';\nimport {\n useGetTeamQuery,\n useDeleteTeamMutation,\n GetProjectsDocument,\n GetProjectsQuery,\n} from 'shared/generated/graphql';\nimport { Link } from 'react-router-dom';\nimport Input from 'shared/components/Input';\nimport theme from 'App/ThemeStyles';\nimport polling from 'shared/utils/polling';\n\nconst FilterSearch = styled(Input)`\n margin: 0;\n`;\n\nconst ProjectsContainer = styled.div`\n margin-top: 45px;\n display: flex;\n width: 100%;\n`;\n\nconst FilterTab = styled.div`\n max-width: 240px;\n flex: 0 0 240px;\n margin: 0;\n padding-right: 32px;\n`;\n\nconst FilterTabItems = styled.ul``;\nconst FilterTabItem = styled.li`\n cursor: pointer;\n border-radius: 3px;\n display: block;\n font-weight: 700;\n text-decoration: none;\n padding: 6px 8px;\n color: ${props => props.theme.colors.text.primary};\n &:hover {\n border-radius: 6px;\n background: ${props => props.theme.colors.primary};\n color: ${props => props.theme.colors.text.secondary};\n }\n`;\n\nconst FilterTabTitle = styled.h2`\n color: #5e6c84;\n font-size: 12px;\n font-weight: 500;\n letter-spacing: 0.04em;\n line-height: 16px;\n margin-top: 16px;\n text-transform: uppercase;\n padding: 8px;\n margin: 0;\n`;\n\nconst ProjectAddTile = styled.div`\n background-color: ${props => props.theme.colors.bg.primary};\n background-size: cover;\n background-position: 50%;\n color: #fff;\n line-height: 20px;\n padding: 8px;\n position: relative;\n text-decoration: none;\n\n border-radius: 3px;\n display: block;\n`;\n\nconst ProjectTile = styled(Link)<{ color: string }>`\n background-color: ${props => props.color};\n background-size: cover;\n background-position: 50%;\n color: #fff;\n line-height: 20px;\n padding: 8px;\n position: relative;\n text-decoration: none;\n\n border-radius: 3px;\n display: block;\n`;\n\nconst ProjectTileFade = styled.div`\n background-color: rgba(0, 0, 0, 0.15);\n bottom: 0;\n left: 0;\n position: absolute;\n right: 0;\n top: 0;\n`;\n\nconst ProjectListItem = styled.li`\n width: 23.5%;\n padding: 0;\n margin: 0 2% 2% 0;\n\n box-sizing: border-box;\n position: relative;\n cursor: pointer;\n\n &:hover ${ProjectTileFade} {\n background-color: rgba(0, 0, 0, 0.25);\n }\n`;\n\nconst ProjectList = styled.ul`\n display: flex;\n flex-wrap: wrap;\n padding-top: 16px;\n\n & ${ProjectListItem}:nth-of-type(4n) {\n margin-right: 0;\n }\n`;\n\nconst ProjectTileDetails = styled.div`\n display: flex;\n height: 80px;\n position: relative;\n flex-direction: column;\n justify-content: space-between;\n`;\n\nconst ProjectAddTileDetails = styled.div`\n display: flex;\n height: 80px;\n position: relative;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n`;\n\nconst ProjectTileName = styled.div<{ centered?: boolean }>`\n flex: 0 0 auto;\n font-size: 16px;\n font-weight: 700;\n display: inline-block;\n overflow: hidden;\n max-height: 40px;\n width: 100%;\n word-wrap: break-word;\n ${props => props.centered && 'text-align: center;'}\n`;\nconst ProjectListWrapper = styled.div`\n flex: 1 1;\n`;\n\nconst colors = theme.colors.multiColors;\n\ntype TeamProjectsProps = {\n teamID: string;\n};\n\nconst TeamProjects: React.FC = ({ teamID }) => {\n const { loading, data } = useGetTeamQuery({\n variables: { teamID },\n fetchPolicy: 'cache-and-network',\n pollInterval: polling.TEAM_PROJECTS,\n });\n if (data) {\n return (\n \n \n \n SORT\n \n Most Recently Active\n Number of Members\n Number of Stars\n Alphabetical\n \n \n \n \n {data.projects.map((project, idx) => (\n \n \n \n \n {project.name}\n \n \n \n ))}\n \n \n \n );\n }\n return loading;\n};\n\nexport default TeamProjects;\n","import React, { useState, useEffect } from 'react';\nimport styled from 'styled-components/macro';\nimport GlobalTopNavbar from 'App/TopNavbar';\nimport updateApolloCache from 'shared/utils/cache';\nimport { Route, Switch, useRouteMatch, Redirect, useParams, useHistory } from 'react-router';\nimport {\n useGetTeamQuery,\n useDeleteTeamMutation,\n GetProjectsDocument,\n GetProjectsQuery,\n} from 'shared/generated/graphql';\nimport { usePopup, Popup } from 'shared/components/PopupMenu';\nimport { History } from 'history';\nimport produce from 'immer';\nimport { TeamSettings, DeleteConfirm, DELETE_INFO } from 'shared/components/ProjectSettings';\nimport { useCurrentUser } from 'App/context';\nimport NOOP from 'shared/utils/noop';\nimport Members from './Members';\nimport Projects from './Projects';\n\nconst OuterWrapper = styled.div`\n display: flex;\n justify-content: center;\n`;\n\nconst Wrapper = styled.div`\n display: flex;\n flex-direction: row;\n align-items: flex-start;\n justify-content: center;\n max-width: 1400px;\n width: 100%;\n`;\n\ntype TeamPopupProps = {\n history: History;\n name: string;\n teamID: string;\n};\n\nexport const TeamPopup: React.FC = ({ history, name, teamID }) => {\n const { hidePopup, setTab } = usePopup();\n const [deleteTeam] = useDeleteTeamMutation({\n update: (client, deleteData) => {\n updateApolloCache(client, GetProjectsDocument, cache =>\n produce(cache, draftCache => {\n draftCache.teams = cache.teams.filter((team: any) => team.id !== deleteData.data?.deleteTeam.team.id);\n draftCache.projects = cache.projects.filter(\n (project: any) => project.team.id !== deleteData.data?.deleteTeam.team.id,\n );\n }),\n );\n },\n });\n return (\n <>\n \n {\n setTab(1, { width: 340 });\n }}\n />\n \n hidePopup()}>\n {\n if (teamID) {\n deleteTeam({ variables: { teamID } });\n hidePopup();\n history.push('/projects');\n }\n }}\n />\n \n \n );\n};\n\ntype TeamsRouteProps = {\n teamID: string;\n};\n\nconst Teams = () => {\n const { teamID } = useParams();\n const history = useHistory();\n const { loading, data } = useGetTeamQuery({\n variables: { teamID },\n onCompleted: resp => {\n document.title = `${resp.findTeam.name} | Taskcafé`;\n },\n });\n const { user } = useCurrentUser();\n const [currentTab, setCurrentTab] = useState(0);\n const match = useRouteMatch();\n if (data && user) {\n /*\nTODO: re-add permission check\n if (!user.isVisible(PermissionLevel.TEAM, PermissionObjectType.TEAM, teamID)) {\n return ;\n }\n */\n return (\n <>\n {\n setCurrentTab(tab);\n }}\n popupContent={}\n onSaveProjectName={NOOP}\n projectID={null}\n name={data.findTeam.name}\n />\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n }\n return (\n {\n setCurrentTab(tab);\n }}\n onSaveProjectName={NOOP}\n projectID={null}\n name={null}\n />\n );\n};\n\nexport default Teams;\n","import styled from 'styled-components';\nimport Button from 'shared/components/Button';\nimport { mixin } from 'shared/utils/styles';\n\nexport const Wrapper = styled.div`\n background: #eff2f7;\n display: flex;\n justify-content: center;\n align-items: center;\n flex-wrap: wrap;\n`;\n\nexport const Column = styled.div`\n width: 50%;\n display: flex;\n justify-content: center;\n align-items: center;\n`;\n\nexport const LoginFormWrapper = styled.div`\n background: #10163a;\n width: 100%;\n`;\n\nexport const LoginFormContainer = styled.div`\n min-height: 505px;\n padding: 2rem;\n`;\n\nexport const Title = styled.h1`\n color: #ebeefd;\n font-size: 18px;\n margin-bottom: 14px;\n`;\n\nexport const SubTitle = styled.h2`\n color: #c2c6dc;\n font-size: 14px;\n margin-bottom: 14px;\n`;\nexport const Form = styled.form`\n display: flex;\n flex-direction: column;\n`;\n\nexport const FormLabel = styled.label`\n color: #c2c6dc;\n font-size: 12px;\n position: relative;\n margin-top: 14px;\n`;\n\nexport const FormTextInput = styled.input`\n width: 100%;\n background: #262c49;\n border: 1px solid rgba(0, 0, 0, 0.2);\n margin-top: 4px;\n padding: 0.7rem 1rem 0.7rem 3rem;\n font-size: 1rem;\n color: #c2c6dc;\n border-radius: 5px;\n`;\n\nexport const FormIcon = styled.div`\n top: 30px;\n left: 16px;\n position: absolute;\n`;\n\nexport const FormError = styled.span`\n font-size: 0.875rem;\n color: ${props => props.theme.colors.danger};\n`;\n\nexport const LoginButton = styled(Button)``;\n\nexport const ActionButtons = styled.div`\n margin-top: 17.5px;\n display: flex;\n justify-content: space-between;\n`;\n\nexport const RegisterButton = styled(Button)``;\n\nexport const LogoTitle = styled.div`\n font-size: 24px;\n font-weight: 600;\n margin-left: 12px;\n transition: visibility, opacity, transform 0.25s ease;\n color: #7367f0;\n`;\n\nexport const LogoWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: row;\n position: relative;\n width: 100%;\n padding-bottom: 16px;\n margin-bottom: 24px;\n color: rgb(222, 235, 255);\n border-bottom: 1px solid ${props => mixin.rgba(props.theme.colors.alternate, 0.65)};\n`;\n","import React, { useState } from 'react';\nimport AccessAccount from 'shared/undraw/AccessAccount';\nimport { User, Lock, Taskcafe } from 'shared/icons';\nimport { useForm } from 'react-hook-form';\n\nimport LoadingSpinner from 'shared/components/LoadingSpinner';\nimport {\n Form,\n LogoWrapper,\n LogoTitle,\n ActionButtons,\n RegisterButton,\n LoginButton,\n FormError,\n FormIcon,\n FormLabel,\n FormTextInput,\n Wrapper,\n Column,\n LoginFormWrapper,\n LoginFormContainer,\n Title,\n SubTitle,\n} from './Styles';\n\nconst Login = ({ onSubmit }: LoginProps) => {\n const [isComplete, setComplete] = useState(true);\n const {\n register,\n handleSubmit,\n setError,\n formState: { errors },\n } = useForm();\n const loginSubmit = (data: LoginFormData) => {\n setComplete(false);\n onSubmit(data, setComplete, setError);\n };\n return (\n \n \n \n \n \n \n \n \n \n Taskcafé\n \n Login\n Welcome back, please login into your account.\n
\n \n Username\n \n \n \n \n \n {errors.username && {errors.username.message}}\n \n Password\n \n \n \n \n \n {errors.password && {errors.password.message}}\n\n \n Register\n {!isComplete && }\n \n Login\n \n \n
\n
\n
\n
\n
\n );\n};\n\nexport default Login;\n","import styled from 'styled-components';\n\nexport const Container = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100vw;\n height: 100vh;\n`;\n\nexport const LoginWrapper = styled.div`\n width: 60%;\n`;\n","import React, { useState, useEffect, useContext } from 'react';\nimport { useHistory, useLocation } from 'react-router';\nimport Login from 'shared/components/Login';\nimport UserContext from 'App/context';\nimport { Container, LoginWrapper } from './Styles';\n\nconst Auth = () => {\n const [invalidLoginAttempt, setInvalidLoginAttempt] = useState(0);\n const history = useHistory();\n const location = useLocation<{ redirect: string } | undefined>();\n const { setUser } = useContext(UserContext);\n console.log('auth');\n const login = (\n data: LoginFormData,\n setComplete: (val: boolean) => void,\n setError: (name: 'username' | 'password', error: ErrorOption) => void,\n ) => {\n fetch('/auth/login', {\n credentials: 'include',\n method: 'POST',\n body: JSON.stringify({\n username: data.username,\n password: data.password,\n }),\n }).then(async (x) => {\n if (x.status === 401) {\n setInvalidLoginAttempt(invalidLoginAttempt + 1);\n setError('username', { type: 'error', message: 'Invalid username' });\n setError('password', { type: 'error', message: 'Invalid password' });\n setComplete(true);\n } else {\n const response = await x.json();\n const { userID } = response;\n setUser(userID);\n if (location.state && location.state.redirect) {\n history.push(location.state.redirect);\n } else {\n history.push('/');\n }\n }\n });\n };\n\n useEffect(() => {\n fetch('/auth/validate', {\n method: 'POST',\n credentials: 'include',\n }).then(async (x) => {\n const response = await x.json();\n const { valid, userID } = response;\n if (valid) {\n setUser(userID);\n history.replace('/projects');\n }\n });\n }, []);\n\n return (\n \n \n \n \n \n );\n};\n\nexport default Auth;\n","import styled from 'styled-components';\nimport Button from 'shared/components/Button';\nimport { mixin } from 'shared/utils/styles';\n\nexport const Wrapper = styled.div`\n background: #eff2f7;\n display: flex;\n justify-content: center;\n align-items: center;\n flex-wrap: wrap;\n`;\n\nexport const Column = styled.div`\n width: 50%;\n display: flex;\n justify-content: center;\n align-items: center;\n`;\n\nexport const LoginFormWrapper = styled.div`\n background: #10163a;\n width: 100%;\n`;\n\nexport const LoginFormContainer = styled.div`\n min-height: 505px;\n padding: 2rem;\n`;\n\nexport const Title = styled.h1`\n color: #ebeefd;\n font-size: 18px;\n margin-bottom: 14px;\n`;\n\nexport const SubTitle = styled.h2`\n color: #c2c6dc;\n font-size: 14px;\n margin-bottom: 14px;\n`;\nexport const Form = styled.form`\n display: flex;\n flex-direction: column;\n`;\n\nexport const FormLabel = styled.label`\n color: #c2c6dc;\n font-size: 12px;\n position: relative;\n margin-top: 14px;\n`;\n\nexport const FormTextInput = styled.input`\n width: 100%;\n background: #262c49;\n border: 1px solid rgba(0, 0, 0, 0.2);\n margin-top: 4px;\n padding: 0.7rem 1rem 0.7rem 3rem;\n font-size: 1rem;\n color: #c2c6dc;\n border-radius: 5px;\n`;\n\nexport const FormIcon = styled.div`\n top: 30px;\n left: 16px;\n position: absolute;\n`;\n\nexport const FormError = styled.span`\n font-size: 0.875rem;\n color: ${props => props.theme.colors.danger};\n`;\n\nexport const LoginButton = styled(Button)``;\n\nexport const ActionButtons = styled.div`\n margin-top: 17.5px;\n display: flex;\n justify-content: space-between;\n`;\n\nexport const RegisterButton = styled(Button)``;\n\nexport const LogoTitle = styled.div`\n font-size: 24px;\n font-weight: 600;\n margin-left: 12px;\n transition: visibility, opacity, transform 0.25s ease;\n color: #7367f0;\n`;\n\nexport const LogoWrapper = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n flex-direction: row;\n position: relative;\n width: 100%;\n padding-bottom: 16px;\n margin-bottom: 24px;\n color: rgb(222, 235, 255);\n border-bottom: 1px solid ${props => mixin.rgba(props.theme.colors.alternate, 0.65)};\n`;\n","import React, { useState } from 'react';\nimport AccessAccount from 'shared/undraw/AccessAccount';\nimport { User, Lock, Taskcafe } from 'shared/icons';\nimport { useForm } from 'react-hook-form';\n\nimport {\n Form,\n LogoWrapper,\n LogoTitle,\n ActionButtons,\n RegisterButton,\n FormError,\n FormIcon,\n FormLabel,\n FormTextInput,\n Wrapper,\n Column,\n LoginFormWrapper,\n LoginFormContainer,\n Title,\n SubTitle,\n} from './Styles';\n\nconst EMAIL_PATTERN = /[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/i;\nconst INITIALS_PATTERN = /[a-zA-Z]{2,3}/i;\n\nconst Register = ({ onSubmit, registered = false }: RegisterProps) => {\n const [isComplete, setComplete] = useState(true);\n const {\n register,\n handleSubmit,\n formState: { errors },\n setError,\n } = useForm();\n const loginSubmit = (data: RegisterFormData) => {\n setComplete(false);\n onSubmit(data, setComplete, setError);\n };\n return (\n \n \n \n \n \n \n \n \n \n Taskcafé\n \n {registered ? (\n <>\n Thanks for registering\n Please check your inbox for a confirmation email.\n \n ) : (\n <>\n Register\n Please create your user\n
\n \n Full name\n \n \n \n \n \n {errors.username && {errors.username.message}}\n \n Username\n \n \n \n \n \n {errors.username && {errors.username.message}}\n \n Email\n \n \n \n \n \n {errors.email && {errors.email.message}}\n \n Initials\n \n \n \n \n \n {errors.initials && {errors.initials.message}}\n \n Password\n \n \n \n \n \n {errors.password && {errors.password.message}}\n \n Password (Confirm)\n \n \n \n \n \n {errors.password_confirm && {errors.password_confirm.message}}\n\n \n \n Register\n \n \n
\n \n )}\n
\n
\n
\n
\n );\n};\n\nexport default Register;\n","import styled from 'styled-components';\n\nexport const Container = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100vw;\n height: 100vh;\n`;\n\nexport const LoginWrapper = styled.div`\n width: 60%;\n`;\n","import React, { useState } from 'react';\nimport axios from 'axios';\nimport Register from 'shared/components/Register';\nimport { useHistory, useLocation } from 'react-router';\nimport * as QueryString from 'query-string';\nimport { toast } from 'react-toastify';\nimport { Container, LoginWrapper } from './Styles';\n\nconst UsersRegister = () => {\n const history = useHistory();\n const location = useLocation();\n const [registered, setRegistered] = useState(false);\n const params = QueryString.parse(location.search);\n return (\n \n \n {\n if (data.password !== data.password_confirm) {\n setError('password', { type: 'error', message: 'Passwords must match' });\n setError('password_confirm', { type: 'error', message: 'Passwords must match' });\n } else {\n // TODO: change to fetch?\n fetch('/auth/register', {\n method: 'POST',\n body: JSON.stringify({\n user: {\n username: data.username,\n roleCode: 'admin',\n email: data.email,\n password: data.password,\n initials: data.initials,\n fullname: data.fullname,\n },\n }),\n })\n .then(async (x) => {\n const response = await x.json();\n const { setup } = response;\n console.log(response);\n if (setup) {\n history.replace(`/confirm?confirmToken=xxxx`);\n } else if (params.confirmToken) {\n history.replace(`/confirm?confirmToken=${params.confirmToken}`);\n } else {\n setRegistered(true);\n }\n })\n .catch(() => {\n toast('There was an issue trying to register');\n });\n }\n setComplete(true);\n }}\n />\n \n \n );\n};\n\nexport default UsersRegister;\n","import React, { useState, useRef } from 'react';\nimport styled from 'styled-components';\nimport { User } from 'shared/icons';\nimport Button from 'shared/components/Button';\nimport { useForm } from 'react-hook-form';\nimport ControlledInput from 'shared/components/ControlledInput';\n\nconst PasswordInput = styled(ControlledInput)`\n margin-top: 30px;\n margin-bottom: 0;\n`;\n\nconst UserInfoInput = styled(ControlledInput)`\n margin-top: 30px;\n margin-bottom: 0;\n`;\n\nconst FormError = styled.span`\n font-size: 12px;\n color: ${(props) => props.theme.colors.warning};\n`;\n\nconst ProfileContainer = styled.div`\n display: flex;\n align-items: center;\n margin-bottom: 2.2rem !important;\n`;\n\nconst AvatarContainer = styled.div`\n width: 70px;\n height: 70px;\n border-radius: 50%;\n position: relative;\n cursor: pointer;\n display: inline-block;\n margin: 5px;\n margin-bottom: 1rem;\n margin-right: 1rem;\n`;\nconst AvatarMask = styled.div<{ background: string }>`\n position: absolute;\n width: 100%;\n height: 100%;\n overflow: hidden;\n background: ${(props) => props.background};\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nconst AvatarImg = styled.img<{ src: string }>`\n display: block;\n width: 100%;\n height: 100%;\n`;\n\nconst ActionButtons = styled.div`\n display: flex;\n flex-wrap: wrap;\n align-items: center;\n`;\nconst UploadButton = styled(Button)`\n margin-right: 1rem;\n display: inline-block;\n`;\n\nconst RemoveButton = styled(Button)`\n display: inline-block;\n`;\n\nconst ImgLabel = styled.p`\n color: #c2c6dc;\n margin-top: 0.5rem;\n font-size: 12.25px;\n width: 100%;\n`;\n\nconst AvatarInitials = styled.span`\n font-size: 32px;\n color: #fff;\n`;\n\ntype AvatarSettingsProps = {\n onProfileAvatarChange: () => void;\n onProfileAvatarRemove: () => void;\n profile: ProfileIcon;\n};\n\nconst AvatarSettings: React.FC = ({ profile, onProfileAvatarChange, onProfileAvatarRemove }) => {\n return (\n \n \n onProfileAvatarChange()}\n >\n {profile.url ? (\n \n ) : (\n {profile.initials}\n )}\n \n \n \n onProfileAvatarChange()}>Upload photo\n onProfileAvatarRemove()}>\n Remove\n \n Allowed JPG, GIF or PNG. Max size of 800kB\n \n \n );\n};\n\nconst Container = styled.div`\n padding: 2.2rem;\n display: flex;\n width: 100%;\n position: relative;\n`;\n\nconst TabNav = styled.div`\n float: left;\n width: 220px;\n height: 100%;\n display: block;\n position: relative;\n`;\n\nconst TabNavContent = styled.ul`\n display: block;\n width: auto;\n border-bottom: 0 !important;\n border-right: 1px solid rgba(0, 0, 0, 0.05);\n`;\n\nconst TabNavItem = styled.li`\n padding: 0.35rem 0.3rem;\n display: block;\n position: relative;\n`;\nconst TabNavItemButton = styled.button<{ active: boolean }>`\n cursor: pointer;\n display: flex;\n align-items: center;\n\n padding-top: 10px !important;\n padding-bottom: 10px !important;\n padding-left: 12px !important;\n padding-right: 8px !important;\n width: 100%;\n position: relative;\n\n color: ${(props) => (props.active ? `${props.theme.colors.primary}` : '#c2c6dc')};\n &:hover {\n color: ${(props) => props.theme.colors.primary};\n }\n &:hover svg {\n fill: ${(props) => props.theme.colors.primary};\n }\n`;\n\nconst TabNavItemSpan = styled.span`\n text-align: left;\n padding-left: 9px;\n font-size: 14px;\n`;\n\nconst TabNavLine = styled.span<{ top: number }>`\n left: auto;\n right: 0;\n width: 2px;\n height: 48px;\n transform: scaleX(1);\n top: ${(props) => props.top}px;\n\n background: linear-gradient(\n 30deg,\n ${(props) => props.theme.colors.primary},\n ${(props) => props.theme.colors.primary}\n );\n box-shadow: 0 0 8px 0 ${(props) => props.theme.colors.primary};\n display: block;\n position: absolute;\n transition: all 0.2s ease;\n`;\n\nconst TabContentWrapper = styled.div`\n margin-left: 1rem;\n position: relative;\n display: block;\n overflow: hidden;\n width: 100%;\n`;\n\nconst TabContent = styled.div`\n position: relative;\n width: 100%;\n display: block;\n padding: 0;\n padding: 1.5rem;\n background-color: #10163a;\n border-radius: 0.5rem;\n`;\n\nconst TabContentInner = styled.div``;\n\nconst items = [{ name: 'General' }, { name: 'Change Password' }, { name: 'Info' }, { name: 'Notifications' }];\ntype NavItemProps = {\n active: boolean;\n name: string;\n tab: number;\n onClick: (tab: number, top: number) => void;\n};\nconst NavItem: React.FC = ({ active, name, tab, onClick }) => {\n const $item = useRef(null);\n return (\n {\n if ($item && $item.current) {\n const pos = $item.current.getBoundingClientRect();\n onClick(tab, pos.top);\n }\n }}\n >\n \n \n {name}\n \n \n );\n};\n\nconst SettingActions = styled.div`\n display: flex;\n align-items: center;\n justify-content: flex-end;\n margin-top: 12px;\n`;\n\nconst SaveButton = styled(Button)`\n margin-right: 1rem;\n display: inline-block;\n`;\n\ntype SettingsProps = {\n onProfileAvatarChange: () => void;\n onProfileAvatarRemove: () => void;\n onChangeUserInfo: (data: UserInfoData, done: () => void) => void;\n onResetPassword: (password: string, done: () => void) => void;\n profile: TaskUser;\n};\n\ntype TabProps = {\n tab: number;\n currentTab: number;\n};\n\nconst Tab: React.FC = ({ tab, currentTab, children }) => {\n if (tab !== currentTab) {\n return null;\n }\n return {children};\n};\n\ntype ResetPasswordTabProps = {\n onResetPassword: (password: string, done: () => void) => void;\n};\nconst ResetPasswordTab: React.FC = ({ onResetPassword }) => {\n const [active, setActive] = useState(true);\n const {\n register,\n handleSubmit,\n formState: { errors },\n setError,\n reset,\n } = useForm<{ password: string; passwordConfirm: string }>();\n const done = () => {\n reset();\n setActive(true);\n };\n return (\n {\n if (data.password !== data.passwordConfirm) {\n setError('password', { message: 'Passwords must match!', type: 'error' });\n setError('passwordConfirm', { message: 'Passwords must match!', type: 'error' });\n } else {\n onResetPassword(data.password, done);\n }\n })}\n >\n \n {errors.password && {errors.password.message}}\n \n {errors.passwordConfirm && {errors.passwordConfirm.message}}\n \n \n Save Change\n \n \n \n );\n};\n\ntype UserInfoData = {\n fullName: string;\n bio: string;\n initials: string;\n email: string;\n};\ntype UserInfoTabProps = {\n profile: TaskUser;\n onProfileAvatarChange: () => void;\n onProfileAvatarRemove: () => void;\n onChangeUserInfo: (data: UserInfoData, done: () => void) => void;\n};\n\nconst EMAIL_PATTERN = /[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/i;\nconst INITIALS_PATTERN = /^[a-zA-Z]{2,3}$/i;\n\nconst UserInfoTab: React.FC = ({\n profile,\n onProfileAvatarRemove,\n onProfileAvatarChange,\n onChangeUserInfo,\n}) => {\n const [active, setActive] = useState(true);\n const {\n register,\n handleSubmit,\n formState: { errors },\n } = useForm();\n const done = () => {\n setActive(true);\n };\n return (\n <>\n \n {\n setActive(false);\n onChangeUserInfo(data, done);\n })}\n >\n \n {errors.fullName && {errors.fullName.message}}\n \n {errors.initials && {errors.initials.message}}\n \n \n {errors.email && {errors.email.message}}\n \n {errors.bio && {errors.bio.message}}\n \n \n Save Change\n \n \n \n \n );\n};\n\nconst Settings: React.FC = ({\n onProfileAvatarRemove,\n onProfileAvatarChange,\n onChangeUserInfo,\n onResetPassword,\n profile,\n}) => {\n const [currentTab, setTab] = useState(0);\n const [currentTop, setTop] = useState(0);\n const $tabNav = useRef(null);\n return (\n \n \n \n {items.map((item, idx) => (\n {\n if ($tabNav && $tabNav.current) {\n const pos = $tabNav.current.getBoundingClientRect();\n setTab(tab);\n setTop(top - pos.top);\n }\n }}\n name={item.name}\n tab={idx}\n active={idx === currentTab}\n />\n ))}\n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default Settings;\n","import React, { useRef, useEffect } from 'react';\nimport styled from 'styled-components/macro';\nimport GlobalTopNavbar from 'App/TopNavbar';\nimport Settings from 'shared/components/Settings';\nimport {\n useMeQuery,\n useClearProfileAvatarMutation,\n useUpdateUserPasswordMutation,\n useUpdateUserInfoMutation,\n MeQuery,\n MeDocument,\n} from 'shared/generated/graphql';\nimport axios from 'axios';\nimport { useCurrentUser } from 'App/context';\nimport NOOP from 'shared/utils/noop';\nimport { toast } from 'react-toastify';\nimport updateApolloCache from 'shared/utils/cache';\nimport produce from 'immer';\n\nconst MainContent = styled.div`\n padding: 0 0 50px 80px;\n height: 100%;\n background: #262c49;\n`;\n\nconst Projects = () => {\n const $fileUpload = useRef(null);\n const [clearProfileAvatar] = useClearProfileAvatarMutation();\n const { user } = useCurrentUser();\n const [updateUserInfo] = useUpdateUserInfoMutation();\n const [updateUserPassword] = useUpdateUserPasswordMutation();\n const { loading, data, refetch } = useMeQuery();\n useEffect(() => {\n document.title = 'Profile | Taskcafé';\n }, []);\n if (!user) {\n return null;\n }\n\n return (\n <>\n {\n if (e.target.files) {\n const fileData = new FormData();\n fileData.append('file', e.target.files[0]);\n axios\n .post('/users/me/avatar', fileData, {\n withCredentials: true,\n })\n .then((res) => {\n if ($fileUpload && $fileUpload.current) {\n $fileUpload.current.value = '';\n refetch();\n }\n });\n }\n }}\n />\n \n {!loading && data && data.me && (\n {\n if ($fileUpload && $fileUpload.current) {\n $fileUpload.current.click();\n }\n }}\n onResetPassword={(password, done) => {\n updateUserPassword({ variables: { userID: user, password } });\n toast('Password was changed!');\n done();\n }}\n onChangeUserInfo={(d, done) => {\n updateUserInfo({\n variables: { name: d.fullName, bio: d.bio, email: d.email, initials: d.initials },\n });\n toast('User info was saved!');\n done();\n }}\n onProfileAvatarRemove={() => {\n clearProfileAvatar();\n }}\n />\n )}\n \n );\n};\n\nexport default Projects;\n","import React, { useEffect, useState } from 'react';\nimport { Switch, Route, useHistory, useLocation, Redirect } from 'react-router-dom';\nimport * as H from 'history';\n\nimport Dashboard from 'Dashboard';\nimport Admin from 'Admin';\nimport MyTasks from 'MyTasks';\nimport Confirm from 'Confirm';\nimport Projects from 'Projects';\nimport Project from 'Projects/Project';\nimport Teams from 'Teams';\nimport Login from 'Auth';\nimport Register from 'Register';\nimport Profile from 'Profile';\nimport styled from 'styled-components';\nimport { useCurrentUser } from 'App/context';\n\nconst MainContent = styled.div`\n padding: 0 0 0 0;\n background: #262c49;\n height: 100%;\n display: flex;\n flex-direction: column;\n flex-grow: 1;\n`;\n\ntype ValidateTokenResponse = {\n valid: boolean;\n userID: string;\n};\n\nconst UserRequiredRoute: React.FC = ({ children }) => {\n const { user } = useCurrentUser();\n const location = useLocation();\n console.log('user required', user);\n if (user) {\n return children;\n }\n return (\n \n );\n};\n\nconst Routes: React.FC = () => {\n const [loading, setLoading] = useState(true);\n const { setUser } = useCurrentUser();\n useEffect(() => {\n fetch('/auth/validate', {\n method: 'POST',\n credentials: 'include',\n }).then(async (x) => {\n const response: ValidateTokenResponse = await x.json();\n const { valid, userID } = response;\n if (valid) {\n setUser(userID);\n }\n setLoading(false);\n });\n }, []);\n console.log('loading', loading);\n if (loading) return null;\n return (\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default Routes;\n","import styled from 'styled-components';\nimport { ToastContainer } from 'react-toastify';\n\nconst ToastedContainer = styled(ToastContainer).attrs({\n // custom props\n})`\n .Toastify__toast-container {\n }\n .Toastify__toast {\n padding: 5px;\n margin-left: 5px;\n margin-right: 5px;\n border-radius: 10px;\n background: #7367f0;\n color: #fff;\n }\n .Toastify__toast--error {\n background: ${props => props.theme.colors.danger};\n }\n .Toastify__toast--warning {\n background: ${props => props.theme.colors.warning};\n }\n .Toastify__toast--success {\n background: ${props => props.theme.colors.success};\n }\n .Toastify__toast-body {\n }\n .Toastify__progress-bar {\n }\n .Toastify__close-button {\n display: none;\n }\n`;\n\nexport default ToastedContainer;\n","import React, { useState, useEffect } from 'react';\nimport { BrowserRouter } from 'react-router-dom';\nimport { PopupProvider } from 'shared/components/PopupMenu';\nimport styled, { ThemeProvider } from 'styled-components';\nimport NormalizeStyles from './NormalizeStyles';\nimport BaseStyles from './BaseStyles';\nimport theme from './ThemeStyles';\nimport Routes from './Routes';\nimport ToastedContainer from './Toast';\nimport { UserContext } from './context';\n\nimport 'react-toastify/dist/ReactToastify.css';\nimport './fonts.css';\n\nconst App = () => {\n const [user, setUser] = useState(null);\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default App;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { ApolloClient } from '@apollo/client';\nimport { ApolloProvider } from '@apollo/client/react';\n\nimport { enableMapSet } from 'immer';\nimport dayjs from 'dayjs';\nimport updateLocale from 'dayjs/plugin/updateLocale';\nimport isSameOrAfter from 'dayjs/plugin/isSameOrAfter';\nimport customParseFormat from 'dayjs/plugin/customParseFormat';\nimport isBetween from 'dayjs/plugin/isBetween';\nimport weekday from 'dayjs/plugin/weekday';\nimport cache from './App/cache';\nimport App from './App';\n\n// https://able.bio/AnasT/apollo-graphql-async-access-token-refresh--470t1c8\n\nenableMapSet();\n\ndayjs.extend(isSameOrAfter);\ndayjs.extend(weekday);\ndayjs.extend(isBetween);\ndayjs.extend(customParseFormat);\ndayjs.extend(updateLocale);\ndayjs.updateLocale('en', {\n week: {\n dow: 1, // First day of week is Monday\n doy: 7, // First week of year must contain 1 January (7 + 1 - 1)\n },\n});\n\nconst client = new ApolloClient({ uri: '/graphql', cache });\nconsole.log('cloient', client);\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root'),\n);\n"],"sourceRoot":""}