From 2b7282c6e86330b1737fa464b8c975d64d15ba48 Mon Sep 17 00:00:00 2001 From: Aaryan Khandelwal Date: Wed, 30 Nov 2022 21:28:45 +0530 Subject: [PATCH] feat: bulk issue deletion, colours to labels --- apps/app/components/command-palette/index.tsx | 76 ++- .../app/components}/lexical/config.ts | 0 .../app/components}/lexical/editor.tsx | 2 + .../app/components}/lexical/helpers/editor.ts | 0 .../app/components}/lexical/helpers/node.ts | 0 .../lexical/plugins/code-highlight.tsx | 0 .../components}/lexical/plugins/read-only.tsx | 0 .../app/components}/lexical/theme.ts | 0 .../lexical/toolbar/block-type-select.tsx | 0 .../lexical/toolbar/floating-link-editor.tsx | 0 .../app/components}/lexical/toolbar/index.tsx | 0 .../app/components}/lexical/viewer.tsx | 2 + .../project/issues/BoardView/SingleBoard.tsx | 89 ++- .../CreateUpdateIssueModal/SelectCycles.tsx | 12 +- .../issue-detail/IssueDetailSidebar.tsx | 633 ++++++++++-------- .../issues/issue-detail/activity/index.tsx | 48 +- apps/app/constants/api-routes.ts | 7 + apps/app/lib/services/api.service.ts | 3 +- apps/app/lib/services/issues.services.ts | 27 + apps/app/package.json | 3 + apps/app/pages/invitations.tsx | 25 +- .../projects/[projectId]/issues/[issueId].tsx | 39 +- .../public/favicon/android-chrome-192x192.png | Bin 2663 -> 2222 bytes .../public/favicon/android-chrome-512x512.png | Bin 11416 -> 3832 bytes apps/app/public/favicon/apple-touch-icon.png | Bin 2324 -> 2176 bytes apps/app/public/favicon/favicon-16x16.png | Bin 287 -> 1625 bytes apps/app/public/favicon/favicon-32x32.png | Bin 366 -> 1617 bytes apps/app/styles/globals.css | 7 + apps/app/types/issues.d.ts | 3 + turbo.json | 46 +- yarn.lock | 285 ++++---- 31 files changed, 726 insertions(+), 581 deletions(-) rename {components => apps/app/components}/lexical/config.ts (100%) rename {components => apps/app/components}/lexical/editor.tsx (95%) rename {components => apps/app/components}/lexical/helpers/editor.ts (100%) rename {components => apps/app/components}/lexical/helpers/node.ts (100%) rename {components => apps/app/components}/lexical/plugins/code-highlight.tsx (100%) rename {components => apps/app/components}/lexical/plugins/read-only.tsx (100%) rename {components => apps/app/components}/lexical/theme.ts (100%) rename {components => apps/app/components}/lexical/toolbar/block-type-select.tsx (100%) rename {components => apps/app/components}/lexical/toolbar/floating-link-editor.tsx (100%) rename {components => apps/app/components}/lexical/toolbar/index.tsx (100%) rename {components => apps/app/components}/lexical/viewer.tsx (94%) diff --git a/apps/app/components/command-palette/index.tsx b/apps/app/components/command-palette/index.tsx index b626eac7a..16053564f 100644 --- a/apps/app/components/command-palette/index.tsx +++ b/apps/app/components/command-palette/index.tsx @@ -1,6 +1,10 @@ import React, { useState, useCallback, useEffect } from "react"; // next import { useRouter } from "next/router"; +// swr +import { mutate } from "swr"; +// react hook form +import { SubmitHandler, useForm } from "react-hook-form"; // headless ui import { Combobox, Dialog, Transition } from "@headlessui/react"; // hooks @@ -22,9 +26,11 @@ import CreateProjectModal from "components/project/CreateProjectModal"; import CreateUpdateIssuesModal from "components/project/issues/CreateUpdateIssueModal"; import CreateUpdateCycleModal from "components/project/cycles/CreateUpdateCyclesModal"; // types -import { IIssue } from "types"; +import { IIssue, IProject, IssueResponse } from "types"; import { Button } from "ui"; -import { SubmitHandler, useForm } from "react-hook-form"; +import issuesServices from "lib/services/issues.services"; +// fetch keys +import { PROJECTS_LIST, PROJECT_ISSUES_LIST } from "constants/fetch-keys"; type ItemType = { name: string; @@ -33,7 +39,7 @@ type ItemType = { }; type FormInput = { - issue: string[]; + issue_ids: string[]; }; const CommandPalette: React.FC = () => { @@ -47,7 +53,7 @@ const CommandPalette: React.FC = () => { const [isShortcutsModalOpen, setIsShortcutsModalOpen] = useState(false); const [isCreateCycleModalOpen, setIsCreateCycleModalOpen] = useState(false); - const { issues, activeProject } = useUser(); + const { activeWorkspace, activeProject, issues, cycles } = useUser(); const { toggleCollapsed } = useTheme(); @@ -59,6 +65,14 @@ const CommandPalette: React.FC = () => { : issues?.results.filter((issue) => issue.name.toLowerCase().includes(query.toLowerCase())) ?? []; + const { + register, + formState: { errors, isSubmitting }, + handleSubmit, + reset, + setError, + } = useForm(); + const quickActions = [ { name: "Add new issue...", @@ -81,6 +95,7 @@ const CommandPalette: React.FC = () => { const handleCommandPaletteClose = () => { setIsPaletteOpen(false); setQuery(""); + reset(); }; const handleKeyDown = useCallback( @@ -127,21 +142,42 @@ const CommandPalette: React.FC = () => { [toggleCollapsed, setToastAlert, router] ); - const { - register, - formState: { errors, isSubmitting }, - handleSubmit, - reset, - setError, - control, - } = useForm(); - const handleDelete: SubmitHandler = (data) => { - console.log("Deleting... " + JSON.stringify(data)); + if (activeWorkspace && activeProject && data.issue_ids) { + issuesServices + .bulkDeleteIssues(activeWorkspace.slug, activeProject.id, data) + .then((res) => { + mutate( + PROJECT_ISSUES_LIST(activeWorkspace.slug, activeProject.id), + (prevData) => { + return { + ...(prevData as IssueResponse), + count: (prevData?.results ?? []).filter( + (p) => !data.issue_ids.some((id) => p.id === id) + ).length, + results: (prevData?.results ?? []).filter( + (p) => !data.issue_ids.some((id) => p.id === id) + ), + }; + }, + false + ); + }) + .catch((e) => { + console.log(e); + }); + } }; const handleAddToCycle: SubmitHandler = (data) => { - console.log("Adding to cycle..."); + if (activeWorkspace && activeProject && data.issue_ids) { + issuesServices + .bulkAddIssuesToCycle(activeWorkspace.slug, activeProject.id, "", data) + .then((res) => {}) + .catch((e) => { + console.log(e); + }); + } }; useEffect(() => { @@ -254,10 +290,16 @@ const CommandPalette: React.FC = () => { /> */} - {issue.name} + {active && ( Jump to... diff --git a/components/lexical/config.ts b/apps/app/components/lexical/config.ts similarity index 100% rename from components/lexical/config.ts rename to apps/app/components/lexical/config.ts diff --git a/components/lexical/editor.tsx b/apps/app/components/lexical/editor.tsx similarity index 95% rename from components/lexical/editor.tsx rename to apps/app/components/lexical/editor.tsx index e4e9ef359..3685de22e 100644 --- a/components/lexical/editor.tsx +++ b/apps/app/components/lexical/editor.tsx @@ -19,6 +19,7 @@ import { LexicalToolbar } from "./toolbar"; import { initialConfig } from "./config"; // helpers import { getValidatedValue } from "./helpers/editor"; +import LexicalErrorBoundary from "@lexical/react/LexicalErrorBoundary"; export interface RichTextEditorProps { onChange: (state: string) => void; @@ -51,6 +52,7 @@ const RichTextEditor: FC = (props) => { contentEditable={ } + ErrorBoundary={LexicalErrorBoundary} placeholder={
Enter some text... diff --git a/components/lexical/helpers/editor.ts b/apps/app/components/lexical/helpers/editor.ts similarity index 100% rename from components/lexical/helpers/editor.ts rename to apps/app/components/lexical/helpers/editor.ts diff --git a/components/lexical/helpers/node.ts b/apps/app/components/lexical/helpers/node.ts similarity index 100% rename from components/lexical/helpers/node.ts rename to apps/app/components/lexical/helpers/node.ts diff --git a/components/lexical/plugins/code-highlight.tsx b/apps/app/components/lexical/plugins/code-highlight.tsx similarity index 100% rename from components/lexical/plugins/code-highlight.tsx rename to apps/app/components/lexical/plugins/code-highlight.tsx diff --git a/components/lexical/plugins/read-only.tsx b/apps/app/components/lexical/plugins/read-only.tsx similarity index 100% rename from components/lexical/plugins/read-only.tsx rename to apps/app/components/lexical/plugins/read-only.tsx diff --git a/components/lexical/theme.ts b/apps/app/components/lexical/theme.ts similarity index 100% rename from components/lexical/theme.ts rename to apps/app/components/lexical/theme.ts diff --git a/components/lexical/toolbar/block-type-select.tsx b/apps/app/components/lexical/toolbar/block-type-select.tsx similarity index 100% rename from components/lexical/toolbar/block-type-select.tsx rename to apps/app/components/lexical/toolbar/block-type-select.tsx diff --git a/components/lexical/toolbar/floating-link-editor.tsx b/apps/app/components/lexical/toolbar/floating-link-editor.tsx similarity index 100% rename from components/lexical/toolbar/floating-link-editor.tsx rename to apps/app/components/lexical/toolbar/floating-link-editor.tsx diff --git a/components/lexical/toolbar/index.tsx b/apps/app/components/lexical/toolbar/index.tsx similarity index 100% rename from components/lexical/toolbar/index.tsx rename to apps/app/components/lexical/toolbar/index.tsx diff --git a/components/lexical/viewer.tsx b/apps/app/components/lexical/viewer.tsx similarity index 94% rename from components/lexical/viewer.tsx rename to apps/app/components/lexical/viewer.tsx index bad4f41c7..83be573c0 100644 --- a/components/lexical/viewer.tsx +++ b/apps/app/components/lexical/viewer.tsx @@ -14,6 +14,7 @@ import ReadOnlyPlugin from "./plugins/read-only"; import { initialConfig } from "./config"; // helpers import { getValidatedValue } from "./helpers/editor"; +import LexicalErrorBoundary from "@lexical/react/LexicalErrorBoundary"; export interface RichTextViewerProps { id: string; @@ -38,6 +39,7 @@ const RichTextViewer: FC = (props) => { contentEditable={ } + ErrorBoundary={LexicalErrorBoundary} placeholder={
Enter some text... diff --git a/apps/app/components/project/issues/BoardView/SingleBoard.tsx b/apps/app/components/project/issues/BoardView/SingleBoard.tsx index 4f2c3b1d6..928261f64 100644 --- a/apps/app/components/project/issues/BoardView/SingleBoard.tsx +++ b/apps/app/components/project/issues/BoardView/SingleBoard.tsx @@ -55,9 +55,6 @@ const SingleBoard: React.FC = ({ // Collapse/Expand const [show, setState] = useState(true); - // Edit state name - const [showInput, setInput] = useState(false); - if (selectedGroup === "priority") groupTitle === "high" ? (bgColor = "#dc2626") @@ -80,57 +77,52 @@ const SingleBoard: React.FC = ({
- {showInput ? null : ( -
- -
+ +
+ { - // setInput(true); + /> +

- -

- {groupTitle === null || groupTitle === "null" - ? "None" - : createdBy - ? createdBy - : addSpaceIfCamelCase(groupTitle)} -

- - {groupedByIssues[groupTitle].length} - -

+ {groupTitle === null || groupTitle === "null" + ? "None" + : createdBy + ? createdBy + : addSpaceIfCamelCase(groupTitle)} + + + {groupedByIssues[groupTitle].length} +
- )} +
- -
- {sidebarOptions.map((item) => ( -
-
- -

{item.label}

-
-
- ( - { - if (item.name === "cycle") handleCycleChange(value); - else submitChanges({ [item.name]: value }); - }} - className="flex-shrink-0" - > - {({ open }) => ( -
- - - {value - ? Array.isArray(value) - ? value - .map( - (i: any) => - item.options?.find((option) => option.value === i)?.label - ) - .join(", ") || item.label - : item.options?.find((option) => option.value === value)?.label - : "None"} - - - - - - -
- {item.options ? ( - item.options.length > 0 ? ( - item.options.map((option) => ( - - `${ - active || selected - ? "text-white bg-theme" - : "text-gray-900" - } ${ - item.label === "Priority" && "capitalize" - } cursor-pointer select-none relative p-2 rounded-md truncate` - } - value={option.value} - > - {option.label} - - )) - ) : ( -
No {item.label}s found
- ) - ) : ( - - )} -
-
-
-
+
+
+

+ {activeProject?.identifier}-{issueDetail?.sequence_id} +

+
+ + +
+
+
+ {sidebarSections.map((section, index) => ( +
+ {section.map((item) => ( +
+
+ +

{item.label}

+
+
+ {item.name === "target_date" ? ( + ( + { + submitChanges({ target_date: e.target.value }); + onChange(e.target.value); + }} + className="hover:bg-gray-100 border rounded-md shadow-sm px-2 py-1 cursor-pointer focus:outline-none focus:ring-1 focus:ring-indigo-500 focus:border-indigo-500 text-xs duration-300" + /> )} - - )} - /> -
-
- ))} -
-
- - -
-
-
-
- -

Label

-
-
- ( - submitChanges({ labels_list: value })} - className="flex-shrink-0" - > - {({ open }) => ( - <> - Label -
- - - {value && value.length > 0 - ? value - .map( - (i: string) => - issueLabels?.find((option) => option.id === i)?.name - ) - .join(", ") - : "None"} - - - + /> + ) : ( + ( + { + if (item.name === "cycle") handleCycleChange(value); + else submitChanges({ [item.name]: value }); + }} + className="flex-shrink-0" + > + {({ open }) => ( +
+ + + {value + ? Array.isArray(value) + ? value + .map( + (i: any) => + item.options?.find((option) => option.value === i) + ?.label + ) + .join(", ") || item.label + : item.options?.find((option) => option.value === value) + ?.label + : "None"} + + + - - -
- {issueLabels ? ( - issueLabels.length > 0 ? ( - issueLabels.map((label: any) => ( - - `${ - active || selected - ? "text-white bg-theme" - : "text-gray-900" - } cursor-pointer select-none relative p-2 rounded-md truncate` - } - value={label.id} - > - {label.name} - - )) - ) : ( -
No labels found
- ) - ) : ( - - )} -
-
-
-
- + + +
+ {item.options ? ( + item.options.length > 0 ? ( + item.options.map((option) => ( + + `${ + active || selected + ? "text-white bg-theme" + : "text-gray-900" + } ${ + item.label === "Priority" && "capitalize" + } cursor-pointer select-none relative p-2 rounded-md truncate` + } + value={option.value} + > + {option.label} + + )) + ) : ( +
No {item.label}s found
+ ) + ) : ( + + )} +
+
+
+
+ )} +
+ )} + /> + )} +
+
+ ))} +
+ ))} +
+
+
Add new label
+
+
+ + {({ open }) => ( + <> + + {watch("colour") && watch("colour") !== "" && ( + )} - - )} - /> -
+ + + + + + ( + onChange(value.hex)} /> + )} + /> + + + + )} + +
+ + + +
+
+ +

Label

+
+
+ ( + submitChanges({ labels_list: value })} + className="flex-shrink-0" + > + {({ open }) => ( + <> + Label +
+ + + {value && value.length > 0 + ? value + .map( + (i: string) => + issueLabels?.find((option) => option.id === i)?.name + ) + .join(", ") + : "None"} + + + + + + +
+ {issueLabels ? ( + issueLabels.length > 0 ? ( + issueLabels.map((label: IIssueLabels) => ( + + `${ + active || selected + ? "text-white bg-theme" + : "text-gray-900" + } flex items-center gap-2 cursor-pointer select-none relative p-2 rounded-md truncate` + } + value={label.id} + > + + {label.name} + + )) + ) : ( +
No labels found
+ ) + ) : ( + + )} +
+
+
+
+ + )} +
+ )} + />
diff --git a/apps/app/components/project/issues/issue-detail/activity/index.tsx b/apps/app/components/project/issues/issue-detail/activity/index.tsx index 45965ca24..ab80eb9c3 100644 --- a/apps/app/components/project/issues/issue-detail/activity/index.tsx +++ b/apps/app/components/project/issues/issue-detail/activity/index.tsx @@ -1,6 +1,7 @@ // next import Image from "next/image"; import { + CalendarDaysIcon, ChartBarIcon, ChatBubbleBottomCenterTextIcon, Squares2X2Icon, @@ -19,6 +20,7 @@ const activityIcons = { priority: , name: , description: , + target_date: , }; const IssueActivitySection: React.FC = ({ issueActivities, states }) => { @@ -64,43 +66,41 @@ const IssueActivitySection: React.FC = ({ issueActivities, states }) => {
)} -
+

- {activity.actor_detail.first_name} {activity.actor_detail.last_name}{" "} + + {activity.actor_detail.first_name} {activity.actor_detail.last_name} + {" "} {activity.verb}{" "} {activity.verb !== "created" ? ( {activity.field ?? "commented"} ) : ( " this issue" )} + {timeAgo(activity.created_at)}

-

{timeAgo(activity.created_at)}

{activity.verb !== "created" && ( -
+
- From:{" "} - - {activity.field === "state" - ? activity.old_value - ? addSpaceIfCamelCase( - states?.find((s) => s.id === activity.old_value)?.name ?? "" - ) - : "None" - : activity.old_value} - + From: + {activity.field === "state" + ? activity.old_value + ? addSpaceIfCamelCase( + states?.find((s) => s.id === activity.old_value)?.name ?? "" + ) + : "None" + : activity.old_value}
- To:{" "} - - {activity.field === "state" - ? activity.new_value - ? addSpaceIfCamelCase( - states?.find((s) => s.id === activity.new_value)?.name ?? "" - ) - : "None" - : activity.new_value} - + To: + {activity.field === "state" + ? activity.new_value + ? addSpaceIfCamelCase( + states?.find((s) => s.id === activity.new_value)?.name ?? "" + ) + : "None" + : activity.new_value}
)} diff --git a/apps/app/constants/api-routes.ts b/apps/app/constants/api-routes.ts index ea22163f7..136e13d3b 100644 --- a/apps/app/constants/api-routes.ts +++ b/apps/app/constants/api-routes.ts @@ -103,6 +103,13 @@ export const ISSUE_LABELS = (workspaceSlug: string, projectId: string) => export const FILTER_STATE_ISSUES = (workspaceSlug: string, projectId: string, state: string) => `/api/workspaces/${workspaceSlug}/projects/${projectId}/issues/?state=${state}`; +export const BULK_DELETE_ISSUES = (workspaceSlug: string, projectId: string) => + `/api/workspaces/${workspaceSlug}/projects/${projectId}/bulk-delete-issues/`; +export const BULK_ADD_ISSUES_TO_CYCLE = ( + workspaceSlug: string, + projectId: string, + cycleId: string +) => `/api/workspaces/${workspaceSlug}/projects/${projectId}/cycles/${cycleId}/bulk-assign-issues/`; // states export const STATES_ENDPOINT = (workspaceSlug: string, projectId: string) => diff --git a/apps/app/lib/services/api.service.ts b/apps/app/lib/services/api.service.ts index 9a5d98bc3..112a87f9e 100644 --- a/apps/app/lib/services/api.service.ts +++ b/apps/app/lib/services/api.service.ts @@ -78,10 +78,11 @@ abstract class APIService { }); } - delete(url: string, config = {}): Promise { + delete(url: string, data?: any, config = {}): Promise { return axios({ method: "delete", url: this.baseURL + url, + data: data, headers: this.getAccessToken() ? this.getHeaders() : {}, ...config, }); diff --git a/apps/app/lib/services/issues.services.ts b/apps/app/lib/services/issues.services.ts index 7024072fc..0e285602e 100644 --- a/apps/app/lib/services/issues.services.ts +++ b/apps/app/lib/services/issues.services.ts @@ -8,6 +8,8 @@ import { ISSUE_PROPERTIES_ENDPOINT, CYCLE_DETAIL, ISSUE_LABELS, + BULK_DELETE_ISSUES, + BULK_ADD_ISSUES_TO_CYCLE, } from "constants/api-routes"; // services import APIService from "lib/services/api.service"; @@ -235,6 +237,31 @@ class ProjectIssuesServices extends APIService { throw error?.response?.data; }); } + + async bulkDeleteIssues(workspace_slug: string, projectId: string, data: any): Promise { + return this.delete(BULK_DELETE_ISSUES(workspace_slug, projectId), data) + .then((response) => { + return response?.data; + }) + .catch((error) => { + throw error?.response?.data; + }); + } + + async bulkAddIssuesToCycle( + workspace_slug: string, + projectId: string, + cycleId: string, + data: any + ): Promise { + return this.post(BULK_ADD_ISSUES_TO_CYCLE(workspace_slug, projectId, cycleId), data) + .then((response) => { + return response?.data; + }) + .catch((error) => { + throw error?.response?.data; + }); + } } export default new ProjectIssuesServices(); diff --git a/apps/app/package.json b/apps/app/package.json index fc3e645d6..a596ca4b9 100644 --- a/apps/app/package.json +++ b/apps/app/package.json @@ -11,6 +11,9 @@ "dependencies": { "@headlessui/react": "^1.7.3", "@heroicons/react": "^2.0.12", + "@lexical/list": "^0.6.4", + "@lexical/react": "^0.6.4", + "@lexical/utils": "^0.6.4", "axios": "^1.1.3", "js-cookie": "^3.0.1", "lexical": "^0.6.4", diff --git a/apps/app/pages/invitations.tsx b/apps/app/pages/invitations.tsx index 5c9f334d5..25bb7d324 100644 --- a/apps/app/pages/invitations.tsx +++ b/apps/app/pages/invitations.tsx @@ -21,11 +21,7 @@ import { Button, Spinner, EmptySpace, EmptySpaceItem } from "ui"; import { CubeIcon, PlusIcon } from "@heroicons/react/24/outline"; // types import type { IWorkspaceInvitation } from "types"; -<<<<<<< Updated upstream -import { CubeIcon, PlusIcon } from "@heroicons/react/24/outline"; -import { EmptySpace, EmptySpaceItem } from "ui/EmptySpace"; -======= ->>>>>>> Stashed changes +import Link from "next/link"; const OnBoard: NextPage = () => { const router = useRouter(); @@ -71,16 +67,9 @@ const OnBoard: NextPage = () => { }); }; - useEffect(() => { -<<<<<<< Updated upstream - userService.updateUserOnBoard().then((response) => { - console.log(response); - }); - }, []); -======= - if (workspaces && workspaces.length === 0) setCanRedirect(false); - }, [workspaces]); ->>>>>>> Stashed changes + // useEffect(() => { + // if (workspaces && workspaces.length === 0) setCanRedirect(false); + // }, [workspaces]); return ( {
{invitations && workspaces ? ( invitations.length > 0 ? ( -<<<<<<< Updated upstream

Join your workspaces

@@ -141,11 +129,6 @@ const OnBoard: NextPage = () => {
))}
-======= -
-
- ->>>>>>> Stashed changes

Workspace Invitations

diff --git a/apps/app/pages/projects/[projectId]/issues/[issueId].tsx b/apps/app/pages/projects/[projectId]/issues/[issueId].tsx index 4d98b33c5..740529415 100644 --- a/apps/app/pages/projects/[projectId]/issues/[issueId].tsx +++ b/apps/app/pages/projects/[projectId]/issues/[issueId].tsx @@ -53,7 +53,19 @@ const IssueDetail: NextPage = () => { handleSubmit, reset, control, - } = useForm({}); + } = useForm({ + defaultValues: { + name: "", + description: "", + state: "", + assignees_list: [], + priority: "low", + blockers_list: [], + blocked_list: [], + target_date: new Date().toString(), + cycle: "", + }, + }); const { data: issueActivities } = useSWR( activeWorkspace && projectId && issueId ? PROJECT_ISSUES_ACTIVITY : null, @@ -150,21 +162,18 @@ const IssueDetail: NextPage = () => { />

- - - -
-

{`${activeProject?.name ?? "Project"}/${ - activeProject?.identifier ?? "..." - }-${issueDetail?.sequence_id ?? "..."}`}

+ + + +
KMgMi8^65XES(?OpG-tGnalZfqCrZH|k~pwX^$4rRM#27LckuYv^A?Reoxrqkd^nAUqfI*4GHEH|$ z-tYbXzyH@u_tXZfmMmVm7(tLFfogvpe1BrycisV?b?0LX;cJmv{iKc{cNJUr0^~sF z3Iw@*xfrT9>e12HF53qU^z@diya{6g=1#Crh%b z4@AZ4Rt;=!4TkvEM&2!8>%3@1f`J4QFgP?J#bljHc(61t1IN}hfuU)L(dfZ8SO(F0 zwifj%8bDn(66ZLfUK3SARAkg*|jkH`!0|h>hQ{!4JZCv095CamB4IN^sJXVb=hN4H6 zf1u7UUuOV@mSyucZm30)@+NenvKhLO4ag1AdZX2P$*7&O+0nIIL|ITw{lRNC06%8{4+gUa^F`qfGDJ}fMKiShA=1e>$PAQK z1ToxlBdF8O(C+J?uw(?z;BE>QcqXi95(ga?B`yL8RgPe2K8%b{i76U14AnWVoe%hY zwVDzZV{k#QtJ;VLDt#`>?Q-FE8M*M< z+1A+%nzEyqh^EVh;drYJJQ#1~9|%}>TD;{5WN6JOfTaIY7a5qYgbkC^z=jBn)=le< zfZ_?OVKaUZe|Isxc1?5V;PAw-hWVoke&i23Aj1<*gGX7k^ySqEQs52vH-r+Mmy`WR zzK*XNn4WTf|Mu82dJnx5+ugAfEgUQDc=Ykq`i)!Hy@W=8s8J6eTCaY9f9xNhL_fOc z;0|UIW$M$4)5RgYYH8amh3gL>)y0T-8_FUF z7q!s~I_^il`hO>ny)jtOGkEb{VzhrY8sBzhA8XE>{gdcAX^!t2e543#OO1`adhzvV zN++Lpw+?(a+)J}Vn-+dsh|Qm(y{Wr@{qp#B?}^mxrSs$WO$7VAqgOATDk-U&syC;m zXC{)vyMp^h-j`h7wp}%^DI+b%eve(*7oX}J+4@vscK_aUbaESYIXJX`(9yHEc=vpS zEyKC|=Zf|b_02BXvwfmH@Q>d z&E(T7p~&g(S@Rvy+4|X;={4>21Iy;K*m9XTxBaI>HT}WEJ!`B#ia=%1|K7%DU;GP+ C)#N__ literal 2663 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 literal 11416 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 B1vCHv literal 2324 zcmd^>{X5h9AIFE$Y;LwlS}aUECoGa;BKFzb6*}%~;o^{MapnH&E}c?iLr^HT6NdgfB;bfCS! zaVUCk{#oSK(|LVz&<8hhU+imKVbhthj?P*GLQhv{4Qnv?(EZ|1yQC=f7VYZe{3S6V z>zcojI>ndOu*qF>(wI|edFbggi>D|^12K<4af{NtXW z`Il|@C#R&#%F6uBG%ieyomh)(RKUEbQ}c$uG?ezNbP5h}2yG5MG(xO5B&Ba%K(C&^ z#C=+Sf2X*@m8|k<1SZUG)S95(5e;JgHAo03<;NGIUo;rh7HUdkL}ZgD{7eepV%xvB z23{U)6+@{%U|rF>*3HXw{fI-+V^ONHltSmS{Gf?HT@cj+^p3z5hEqp{UHFEl99!m zqDf>F=T~1903FS?K!p*>ly$+iwOlxoSu(Q{hX&AWJHwJ83Lm10rSpy=kW9;jBODCH zRzQxo7*FLx7W=ydXS7WKyRNAfTZ%22?rY1EXCll=D7vZ6KQy|qhxTS~Oxem3xnSw6 zBBNRXZ*Rrej@}f8av4xvNO{o4py`MA2AzyCxO3voU6~v0btquJS>B z_&l<8mp(ZO2#{B-1;Ljgx0;EeRsph1M3e2#Xo?QonwE8s3g8)|gmS*SKs~LTFMUSO zJo~m2RBM{VN6lpN5nAqGnMQtOTU_hD=%yqk!3IJx z;KmHuKJ|xEDfJmuGR_%iHk0}=)lDf0c_4~i}_B&NE_tP5uoi^s{q?7*{U>`Vp;V#VI`8O{T z{|itBjPda)lT+O2tmGf|HaFB$eOU^IPMw(gIZ48{YjTKc#7 z`T3usj81|x5$bfFw*LL%eCINzL06#4X#_YIV*Tu1T}6i>`rnkeS1yhjMc zTmC-Gu3B#~|HZJu*g`irDMem^+8Umau<1w+F+FK$c>NqQr8|5Ml3!4e?8_26lJjC} zE>kS}1}g95Xz}4v72Tf9#S!R@JwIjY+IvNppvSu4=dtzFw>@=eHpj0HEMJ6MCI7k^n##I z{hvh#xO&i7D5tSwL^*^|{&9>k_c}Jw%cIJJ$vTkNjj8vzvGoiz{d&p0A?g<)ZLzY* zwoCw^{H4dp%SUTO`rAN7IH_)r-xS^iZ2$i^W!BXZvYYa~bWD PZw|=8#+g_J_}%>v2*4z6 diff --git a/apps/app/public/favicon/favicon-16x16.png b/apps/app/public/favicon/favicon-16x16.png index 8cfc4a279366d1185ce2487bd58f4e93d376d981..8ddbd49c043e06b87fe4c980588a8cba97bfe94e 100644 GIT binary patch literal 1625 zcmbVMTWB0r7#@k$UTm-wY!D>Fqy>wanKQGqyP0FgxYE0q{BiG8hxx|_*ElwBI0ALrN)c1i|EP;P%p-Zff?S*^&}dz^?nG+57&dI(5Ap9V*6vm` zcN0!0M!0Q_D*DqJcG#v9&ZVR5*=_0P=otJiol0bTUeNytg1)vbd#1T_pMgEA_MdoN zpa0>Lvnbua>C}stkMbW)>su0S7v9ZHKz}CMzE?TRd_RRgJ+!o3c^up;0RWssSLSEF z{%Ns|uH!R%ySKh!&lWc*U!A<`rOhwTZhUR`lh1hHd|Sxna-)ZTzxDXRGu=;}zU{#2 zbA;Wfq1rcUUkSry=u~!PoRRTpXth=I&-^*l>~!!vH(&-wdUJh%lqB z0U&4JeZdU2m5c2^11CEqe6KuYVK{Xg;vKv$=w8pkaOf&4SbSlk^ACm~ONd|BpI~K} zw}*oc1{}P?!f@{;6WAtBHUCj}9Nxef7y!VvwU6wfF3MyJ!^0#BZ| z-}C#w{|}_5;=MhO^-vVmn@q%}$xM4=?S16$R4TubX`PkW?NHSH4|&5!9eJydqV9b} zPtUn?@-tAy2B&B^gSe7m5i~`Oj+HD$okuR6K{?%&n49M=Ftn~o%xp*ovK2*nJyEgI zOl2yqR_4`+#*95hkCq@IFp#UzC8JW3L?Hn&eA`u>lyeP5+!8&ErRZ6Vs473?y$Wd+Ga&>Id9;1@M3$DZvO`9edR)^Mf zT5ci^<4cOg3mouFY5+C0gR>UwLPNNw@~D6eWV#N)3LUJK$1ZmA_+O|y*S82Du9fAE zjN9sB7#$IgJGqyb(Q?Rb(N4N-A$}S;c)?cDJIbyLGd=ZRGhP)u==#E__wcnNF(qy+&AK^PRD1R)pzO{k1DJzM@KRD=LP5!?bL zDWfT_a!0VH!YsB8g&3?GN)GXsnPcdV8(|a|uuTLL?EC}>HIG-AUhcqz?vSXKTctCDo@=cNI^9SYsHk2U zNQ~;mA8AbMSifrzG--=@L`eT5FPbn1XWgP=qwyT^)*bVXC(83)!8YyS|88RAZdGx& z;iO}D%TB8zn@+PsCh2fCX=Rm1^Usqucr6(lPtWaFSL*e#&z`>LxbMRkzVgw)Kl& zPrpp=H$A&@V|L5ii}j6%PF}A{xeM=2%#8GW|KlIuoI7(&XTnnL%lao*7yH@Ny8YBg z4-du<^{)A}dZM6AJ}>0}H{<=D_;U7dRUW@l7nmUeHHSE@n5x%_Xv6WwPK{>>?y>66VXFf07v% zLI}<|SZm?EM<0W8j-n_agaB)rCKzM-h#SR_Qi5r%LtiKVNq^8P!IV;AkmG*`%>ZNt zJ{|D%DoD3B+g)Q)rf-@I@bbQs###8t-qdxvy{m*G1CVO5 lUo6f5!?$LGH>X3l=U-gqL10p?j70zd002ovPDHLkV1jTunMeQt diff --git a/apps/app/styles/globals.css b/apps/app/styles/globals.css index d8e81c69c..9506a208f 100644 --- a/apps/app/styles/globals.css +++ b/apps/app/styles/globals.css @@ -14,6 +14,13 @@ margin: 0; padding: 0; box-sizing: border-box; + -webkit-text-size-adjust: 100%; + -ms-text-size-adjust: 100%; + font-variant-ligatures: none; + -webkit-font-variant-ligatures: none; + text-rendering: optimizeLegibility; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; } /* Scrollbar style */ diff --git a/apps/app/types/issues.d.ts b/apps/app/types/issues.d.ts index 50936c776..4f93f97f6 100644 --- a/apps/app/types/issues.d.ts +++ b/apps/app/types/issues.d.ts @@ -45,6 +45,7 @@ export interface IIssue { blockers: any[]; blocked_issue_details: any[]; sprints: string | null; + cycle: string | null; } export interface BlockeIssue { @@ -118,8 +119,10 @@ export interface IIssueLabels { updated_at: Date; name: string; description: string; + colour: string; created_by: string; updated_by: string; project: string; workspace: string; + parent: string | null; } diff --git a/turbo.json b/turbo.json index 5edf72e67..c99b00d9e 100644 --- a/turbo.json +++ b/turbo.json @@ -1,25 +1,25 @@ { - "$schema": "https://turbo.build/schema.json", - "pipeline": { - "build": { - "dependsOn": ["^build"], - "outputs": [".next/**", "dist/**"] - }, - "test": { - "dependsOn": ["^build"], - "outputs": [] - }, - "lint": { - "outputs": [] - }, - "dev": { - "cache": false - }, - "start": { - "cache": false - }, - "clean": { - "cache": false - } + "$schema": "https://turbo.build/schema.json", + "pipeline": { + "build": { + "dependsOn": ["^build"], + "outputs": [".next/**", "dist/**"] + }, + "test": { + "dependsOn": ["^build"], + "outputs": [] + }, + "lint": { + "outputs": [] + }, + "dev": { + "cache": false + }, + "start": { + "cache": false + }, + "clean": { + "cache": false } - } \ No newline at end of file + } +} diff --git a/yarn.lock b/yarn.lock index 25d004aa9..d54aa4b32 100644 --- a/yarn.lock +++ b/yarn.lock @@ -10,7 +10,7 @@ core-js-pure "^3.25.1" regenerator-runtime "^0.13.11" -"@babel/runtime@^7.10.2", "@babel/runtime@^7.15.4", "@babel/runtime@^7.18.9", "@babel/runtime@^7.9.2": +"@babel/runtime@^7.10.2", "@babel/runtime@^7.12.5", "@babel/runtime@^7.15.4", "@babel/runtime@^7.18.9", "@babel/runtime@^7.9.2": version "7.20.6" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.20.6.tgz#facf4879bfed9b5326326273a64220f099b0fce3" integrity sha512-Q+8MqP7TiHMWzSfwiJwXCjyf4GYA4Dgw3emg/7xmwsdLJOZUp+nMqcOwOzzYheuM1rhDu8FSj2l0aoMygEuXuA== @@ -77,186 +77,158 @@ resolved "https://registry.yarnpkg.com/@icons/material/-/material-0.2.4.tgz#e90c9f71768b3736e76d7dd6783fc6c2afa88bc8" integrity sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw== -"@lexical/clipboard@0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@lexical/clipboard/-/clipboard-0.5.0.tgz#3d835289c0e1543a13a5fd032294aa2614e4373a" - integrity sha512-JFvdH4N/80GxC0jhaiO/fdUOeYcX8pMFrcrpBDeNIcBN/9eF8Rn/czvoPLLNB9Kcbz8d8XXqabKEGCz2hFL//w== +"@lexical/clipboard@0.6.4": + version "0.6.4" + resolved "https://registry.yarnpkg.com/@lexical/clipboard/-/clipboard-0.6.4.tgz#fdbe763bd0fde6f08f1f6fc2cad40d9977127941" + integrity sha512-pbJmbR1B9d3l4Ey/NrNfvLibA9CzGBamf3HanDtSEcXTDwKoSkUoPDgY9worUYdz9vnQlefntIRrOGjaDbFOxA== dependencies: - "@lexical/html" "0.5.0" - "@lexical/list" "0.5.0" - "@lexical/selection" "0.5.0" - "@lexical/utils" "0.5.0" + "@lexical/html" "0.6.4" + "@lexical/list" "0.6.4" + "@lexical/selection" "0.6.4" + "@lexical/utils" "0.6.4" -"@lexical/code@0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@lexical/code/-/code-0.5.0.tgz#05c92e3b077af3148a494b44f5663dea14f7631f" - integrity sha512-GmqRaQ8EBtlu13ObSZYiGDzIsrkwRyyqI2HRVBrPo2iszLBpby+7uIncAVQVkxt1JNYOKE2n4JfxK8TSYyMtYQ== +"@lexical/code@0.6.4": + version "0.6.4" + resolved "https://registry.yarnpkg.com/@lexical/code/-/code-0.6.4.tgz#9cdbcaf395248f8e194e3c3edde4c17f8511dd0f" + integrity sha512-fsGLvY6BgLSuKRn4/xqbZMnJSrY3u1b2htk7AKVOBxSeEENjLClMkdomVvbWF6CkGMX1c1wkP93MmeOe9VmF/g== dependencies: - "@lexical/utils" "0.5.0" + "@lexical/utils" "0.6.4" prismjs "^1.27.0" -"@lexical/dragon@0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@lexical/dragon/-/dragon-0.5.0.tgz#54ec8812e3fb907af5913c5d0436b8d28fa4efe8" - integrity sha512-Gf0jN8hjlF8E71wAsvbRpR1u9oS6RUjUw3VWp/Qa+IrtjBFFVzdTUloUs3cjMX9E/MFRJgt3wPsaKx2IuLBWQw== +"@lexical/dragon@0.6.4": + version "0.6.4" + resolved "https://registry.yarnpkg.com/@lexical/dragon/-/dragon-0.6.4.tgz#a69aeaf5ab89187cf2ff3d1ac92631c91a0dec0c" + integrity sha512-6M7rtmZck1CxHsKCpUaSUNIzU0zDfus77RWEKbdBAdvFROqQoOKmBJnBRjlghqDPpi5lz8pL+70eXfcfJepwlw== -"@lexical/hashtag@0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@lexical/hashtag/-/hashtag-0.5.0.tgz#dfe39ea73d1c4658c724419ef1113e27fb75a7f3" - integrity sha512-3MT72y72BmK4q7Rtb9gP3n83UL4vWC078T9io4zyPxKEI1Mh3UAVuRwh6Ypn0FeH94XvmuZAGVdoOC/nTd1now== +"@lexical/hashtag@0.6.4": + version "0.6.4" + resolved "https://registry.yarnpkg.com/@lexical/hashtag/-/hashtag-0.6.4.tgz#3d670b1c933db254a6fa027c798da0e1fa06829d" + integrity sha512-xB2/Es9PsDdtEHtcOxZk5AtqSEAkzbgadSJC7iYFssc+ltX1ZGOLqXHREZCwL8c++kUnuwr+tALL7iRuLpVouA== dependencies: - "@lexical/utils" "0.5.0" + "@lexical/utils" "0.6.4" -"@lexical/history@0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@lexical/history/-/history-0.5.0.tgz#5a13077e012f27f783beadca1c3fe545a2968f20" - integrity sha512-DCQgh1aQ1KS5JVYPU6GYr52BN0MQqmoXfFtf5uYCX9CbSAC0hDSK8ZPqwFW7jINqe6GwXxy7bo32j7E0A5023A== +"@lexical/history@0.6.4": + version "0.6.4" + resolved "https://registry.yarnpkg.com/@lexical/history/-/history-0.6.4.tgz#52ec268b3769663d6fd8d573018ef0a67f96d18e" + integrity sha512-NdFxuwNdnFFihHsawewy1tQTW3M0ubzxmkAHZNYnEnjTcF77NxetM24jdUbNS84aLckCJnc4uM84/B0N6P3H2Q== dependencies: - "@lexical/utils" "0.5.0" + "@lexical/utils" "0.6.4" -"@lexical/html@0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@lexical/html/-/html-0.5.0.tgz#5eb2ccb9ffb7c24fff097db369d81431d7a98833" - integrity sha512-uJAof6gXTLOH9JnmPJ+wxILFtu7I/eCebFyVMjV53sqaeLsQ3pDfBTUe4RO+NciC+XBQ1WVpZgCM8Yx5c5cMmQ== +"@lexical/html@0.6.4": + version "0.6.4" + resolved "https://registry.yarnpkg.com/@lexical/html/-/html-0.6.4.tgz#d9e26779f5dc816289643ebac2beb3f42fe47d97" + integrity sha512-NVW70XFd9Ekfe4t/FwZc2EuT2axC8wYxNQ3NI9FXnqAWvLP3F6caDUa0Qn58Gdyx8QQGKRa6GL0BFEXqaD3cxw== dependencies: - "@lexical/selection" "0.5.0" + "@lexical/selection" "0.6.4" -"@lexical/link@0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@lexical/link/-/link-0.5.0.tgz#fa5f3baa1122eb2a1be12ac7a30977eb4c557e1e" - integrity sha512-XB8e+UPI9jeqsi7+Wr0n9SToljiS+gZmJ5gXANtR6lSZPtpcSUPs1iJZU2A2dNKXdvsZwSPCFdPL6ogFaaRvvQ== +"@lexical/link@0.6.4": + version "0.6.4" + resolved "https://registry.yarnpkg.com/@lexical/link/-/link-0.6.4.tgz#e7c1ab092d8281cc4ccf0d371e407b3aed4a2e7d" + integrity sha512-4ergNX/GOKyRFUIf2daflB1LzU96UAi4mGH3QdkvfDBo+a4eFj7GYXCf98ktilhvGlC7El4cgLVCq/BoidjS/w== dependencies: - "@lexical/utils" "0.5.0" + "@lexical/utils" "0.6.4" -"@lexical/link@^0.6.3": - version "0.6.3" - resolved "https://registry.yarnpkg.com/@lexical/link/-/link-0.6.3.tgz#e09b670e69be7ea4509654aacec87e74b834d84f" - integrity sha512-duP+8OYEsIJ5AZLO5Y/cND+oNajvlc0geggmzrJ/XRcFiQAWXJ9BsmEeg6KZFzl2+Whkz3Zdkfu/1h80qllktA== +"@lexical/list@0.6.4", "@lexical/list@^0.6.4": + version "0.6.4" + resolved "https://registry.yarnpkg.com/@lexical/list/-/list-0.6.4.tgz#ad1f89401bc3104130baffa260c9607240f1d30a" + integrity sha512-2WjQTABK4Zckup0YXp/UpAuCul4Ay8yTTUNEhsPpZegeYyglURugx5uYsh811+wN6acUZwFhkYRyyzxU9cDPsg== dependencies: - "@lexical/utils" "0.6.3" + "@lexical/utils" "0.6.4" -"@lexical/list@0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@lexical/list/-/list-0.5.0.tgz#6ab4e1789d037af43f3d01012d2533c7c94daf15" - integrity sha512-TYXe4FtNL7Lk3XDEhPyUbT0Pb1TU58qZywGCdrtuRjPnF4oDvRXgg9EhYWfHzYwdsyhNgaHId+Fq41CjrwTMYg== +"@lexical/mark@0.6.4": + version "0.6.4" + resolved "https://registry.yarnpkg.com/@lexical/mark/-/mark-0.6.4.tgz#d9c9d284a6a3f236290023b39f68647756c659cb" + integrity sha512-2Hpc21i2VmAHilnAevbuUlQijiRd6KVoIEJldx2+oK0vsXQnYnAF4T/RdZO3BStPVdSW3KnIa2TNqsmMJHqG2g== dependencies: - "@lexical/utils" "0.5.0" + "@lexical/utils" "0.6.4" -"@lexical/list@0.6.3": - version "0.6.3" - resolved "https://registry.yarnpkg.com/@lexical/list/-/list-0.6.3.tgz#6389d051549860b53b93f53d537e116150ba20c7" - integrity sha512-zrQwX9J9hmLRjh4VkDykiv4P7et86ez85wAcvcoZNSwRGdLRMDxJLOyzJI6njr3CrebEKzHWVCsEcpn5T8bZcw== +"@lexical/markdown@0.6.4": + version "0.6.4" + resolved "https://registry.yarnpkg.com/@lexical/markdown/-/markdown-0.6.4.tgz#884a91028ee303e3446b817c3d8b284c9038b808" + integrity sha512-9kg+BsP4ePCztrK7UYW8a+8ad1/h/OLziJkMZkl3YAkfhJudkHoj4ljCTJZcLuXHtVXmvLZhyGZktitcJImnOg== dependencies: - "@lexical/utils" "0.6.3" + "@lexical/code" "0.6.4" + "@lexical/link" "0.6.4" + "@lexical/list" "0.6.4" + "@lexical/rich-text" "0.6.4" + "@lexical/text" "0.6.4" + "@lexical/utils" "0.6.4" -"@lexical/mark@0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@lexical/mark/-/mark-0.5.0.tgz#59c2a2a9f0ecfa063d48ce6f4a50e6d8bc6fcae1" - integrity sha512-leeqegWD4hqUdfYNsxB5iwsWozX2oc6mnJzcJfR4UB3Ksr0zH2xHc/z3Zp+CTeGuK5Tzppq5yGS+4cQ5xNpVgQ== +"@lexical/offset@0.6.4": + version "0.6.4" + resolved "https://registry.yarnpkg.com/@lexical/offset/-/offset-0.6.4.tgz#06fdf49e8e18135e82c9925c6b168e7e012a5420" + integrity sha512-IdB1GL5yRRDQPOedXG4zT7opdjHGx+7DqLKOQwcSMWo/XprnJxIq8zpFew3XCp/nBKp+hyUsdf98vmEaG3XctQ== + +"@lexical/overflow@0.6.4": + version "0.6.4" + resolved "https://registry.yarnpkg.com/@lexical/overflow/-/overflow-0.6.4.tgz#0f0139a54916d3ff8e0a6fadb55804a45d2afa5e" + integrity sha512-Mdcpi2PyWTaDpEfTBAGSEX+5E0v/okSTLoIg1eDO3Q3VgGEkr5++FrJH8rVGIl6KIJeAa1WVM0vcu/W4O6y5ng== + +"@lexical/plain-text@0.6.4": + version "0.6.4" + resolved "https://registry.yarnpkg.com/@lexical/plain-text/-/plain-text-0.6.4.tgz#003e8f712d49e117d55a8add31516277757b384a" + integrity sha512-VB1zKqyef+3Vs8SVwob1HvCGRRfn4bypyKUyk93kk6LQDpjiGC6Go2OyuPX0EuJeFnQBYmYd3Bi205k/nVjfZA== + +"@lexical/react@^0.6.4": + version "0.6.4" + resolved "https://registry.yarnpkg.com/@lexical/react/-/react-0.6.4.tgz#80e524701ec83797fd66b89d1bc04c63afc0d9fc" + integrity sha512-KAbNF/H5TzwCBFe5zuxz9ZSxj6a9ol8a2JkhACriO4HqWM0mURsxrXU8g3hySFpp4W7tdjpGSWsHLTdnaovHzw== dependencies: - "@lexical/utils" "0.5.0" + "@lexical/clipboard" "0.6.4" + "@lexical/code" "0.6.4" + "@lexical/dragon" "0.6.4" + "@lexical/hashtag" "0.6.4" + "@lexical/history" "0.6.4" + "@lexical/link" "0.6.4" + "@lexical/list" "0.6.4" + "@lexical/mark" "0.6.4" + "@lexical/markdown" "0.6.4" + "@lexical/overflow" "0.6.4" + "@lexical/plain-text" "0.6.4" + "@lexical/rich-text" "0.6.4" + "@lexical/selection" "0.6.4" + "@lexical/table" "0.6.4" + "@lexical/text" "0.6.4" + "@lexical/utils" "0.6.4" + "@lexical/yjs" "0.6.4" + react-error-boundary "^3.1.4" -"@lexical/markdown@0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@lexical/markdown/-/markdown-0.5.0.tgz#3424a98e8600bc719f99bb4ab2484f0cf0e3c0f7" - integrity sha512-02RLx7PdVzvYxvx65FTbXkW6KcjQZ1waAaMDNKdtBV9r9Mv2Y2XunCUjErYHQ1JN9JkGGv0+JuliRT7qZTsF+Q== +"@lexical/rich-text@0.6.4": + version "0.6.4" + resolved "https://registry.yarnpkg.com/@lexical/rich-text/-/rich-text-0.6.4.tgz#d00e2621d0113ed842178f505618060cde2f2b0f" + integrity sha512-GUTAEUPmSKzL1kldvdHqM9IgiAJC1qfMeDQFyUS2xwWKQnid0nVeUZXNxyBwxZLyOcyDkx5dXp9YiEO6X4x+TQ== + +"@lexical/selection@0.6.4": + version "0.6.4" + resolved "https://registry.yarnpkg.com/@lexical/selection/-/selection-0.6.4.tgz#2a3c8537c1e9e8bf492ccd6fbaafcfb02fea231a" + integrity sha512-dmrIQCQJOKARS7VRyE9WEKRaqP8SG9Xtzm8Bsk6+P0up1yWzlUvww+2INKr0bUUeQmI7DJxo5PX68qcoLeTAUg== + +"@lexical/table@0.6.4": + version "0.6.4" + resolved "https://registry.yarnpkg.com/@lexical/table/-/table-0.6.4.tgz#a07b642899e40c5981ab81b6ac541944bfef19ed" + integrity sha512-PjmRd5w5Gy4ht4i3IpQag/bsOi5V3/Fd0RQaD2gFaTFCh49NsYWrJcV6K1tH7xpO4PDJFibC5At2EiVKwhMyFA== dependencies: - "@lexical/code" "0.5.0" - "@lexical/link" "0.5.0" - "@lexical/list" "0.5.0" - "@lexical/rich-text" "0.5.0" - "@lexical/text" "0.5.0" - "@lexical/utils" "0.5.0" + "@lexical/utils" "0.6.4" -"@lexical/offset@0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@lexical/offset/-/offset-0.5.0.tgz#445aae1c74198dd4ed7d59669735925621139e0a" - integrity sha512-ie4AFbvtt0CFBqaMcb0/gUuhoTt+YwbFXPFo1hW+oDVpmo3rJsEJKVsHhftBvHIP+/G5QlgPIhVmnlcSvEteTw== +"@lexical/text@0.6.4": + version "0.6.4" + resolved "https://registry.yarnpkg.com/@lexical/text/-/text-0.6.4.tgz#49267e7a9395720b6361ca12631e0370c118c03a" + integrity sha512-gCANONCi3J2zf+yxv2CPEj2rsxpUBgQuR4TymGjsoVFsHqjRc3qHF5lNlbpWjPL5bJDSHFJySwn4/P20GNWggg== -"@lexical/overflow@0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@lexical/overflow/-/overflow-0.5.0.tgz#70daabdb96a3de9bf2f052ab2e38917aaf6e3b18" - integrity sha512-N+BQvgODU9lS7VK4FlxIRhGeASwsxfdkECtZ5iomHfqqNEI0WPLHbCTCkwS10rjfH1NrkXC314Y0SG2F7Ncv9Q== - -"@lexical/plain-text@0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@lexical/plain-text/-/plain-text-0.5.0.tgz#385ac7c67b34116578e45fe34cca41e9f62cbcad" - integrity sha512-t1rnVnSXbPs9jLN/36/xZLNAlF9jwv8rSh6GHsjRIYiWX/MovNmgPmhNq/nkc+gRFZ2FKTFjdz3UeAUF4xQZMw== - -"@lexical/react@^0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@lexical/react/-/react-0.5.0.tgz#f227dd71f95e49bf817d648b9ffd5a31850876bc" - integrity sha512-bba0KXslxjf6M8XXJhx1rsrq9UV/6eo73WCZel2K+tGz8NEn1HCRTebQoebmRikzEQatEa3SoB6R47drMlk7Yw== +"@lexical/utils@0.6.4", "@lexical/utils@^0.6.4": + version "0.6.4" + resolved "https://registry.yarnpkg.com/@lexical/utils/-/utils-0.6.4.tgz#7e1d79dd112efbcc048088714a3dc8e403b5aee5" + integrity sha512-JPFC+V65Eu+YTfThzV+LEGWj/QXre91Yq6c+P3VMWNfck4ZC1Enc6v7ntP9UI7FYFyM5NfwvWTzjUGEOYGajwg== dependencies: - "@lexical/clipboard" "0.5.0" - "@lexical/code" "0.5.0" - "@lexical/dragon" "0.5.0" - "@lexical/hashtag" "0.5.0" - "@lexical/history" "0.5.0" - "@lexical/link" "0.5.0" - "@lexical/list" "0.5.0" - "@lexical/mark" "0.5.0" - "@lexical/markdown" "0.5.0" - "@lexical/overflow" "0.5.0" - "@lexical/plain-text" "0.5.0" - "@lexical/rich-text" "0.5.0" - "@lexical/selection" "0.5.0" - "@lexical/table" "0.5.0" - "@lexical/text" "0.5.0" - "@lexical/utils" "0.5.0" - "@lexical/yjs" "0.5.0" + "@lexical/list" "0.6.4" + "@lexical/table" "0.6.4" -"@lexical/rich-text@0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@lexical/rich-text/-/rich-text-0.5.0.tgz#9b7ddacdd74a49761f15486ed2846c5117a55d14" - integrity sha512-JhgMn70K410j3T/2WefPpEswZ+hWF3aJMNu7zkrCf2wB+KdrrGYoeNSZUzg2r4e6BuJgS117KlD99+MDnokCuw== - -"@lexical/selection@0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@lexical/selection/-/selection-0.5.0.tgz#fe94f06fb17d9f5848921a0bbce10774398d3486" - integrity sha512-6I5qlqkYDIbDZPGwSOuvpWQUrqMY6URaKwrWsijQZMnNNKscGpC7IKb7sSDKn6YkLm7tuqig3hf2p+6hshkyWg== - -"@lexical/table@0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@lexical/table/-/table-0.5.0.tgz#cf33fac7c2e0b520ab4747f9322cce434d117cb6" - integrity sha512-VNHWSsTFDSHNzLdQOR9qgKx4tvTuiDz6w0GfwBnMP4Ro2iKKtNowmZO4wDEZtVlUHvLMuOGuYqipOtKEDKbD4w== +"@lexical/yjs@0.6.4": + version "0.6.4" + resolved "https://registry.yarnpkg.com/@lexical/yjs/-/yjs-0.6.4.tgz#0773a7a7abbd3d32bb16e7ff84d9f89ee2284996" + integrity sha512-QlhB/gIB+/3d9nP5zgnR8oJZ++14vw1VxgjBjXs1pW+32ho4ET4Wa+E0OHuVSwozEhJsC4wT1Q1C38oX+yRHdQ== dependencies: - "@lexical/utils" "0.5.0" - -"@lexical/table@0.6.3": - version "0.6.3" - resolved "https://registry.yarnpkg.com/@lexical/table/-/table-0.6.3.tgz#10eb7f1edd0269da18352145854ba0fc41d709f1" - integrity sha512-7ces57Y9wBwr2UXccXguyFC87QF6epdp2EZybb8yVEoWvMM5z51CnWELEbADYv5lnevPS2LC8LtJV3v1iSPZbA== - dependencies: - "@lexical/utils" "0.6.3" - -"@lexical/text@0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@lexical/text/-/text-0.5.0.tgz#803e34d9b1e2430e8062d2db50c7452d4e03c86e" - integrity sha512-RqhOBU2Ecg0WVW8p1d3OB2a8sQyvh3suADdr7We50+Dn/k1M+jhKVWiQnf07ve4/yqYTj6/9/8AAg7kuNS2P/A== - -"@lexical/utils@0.5.0", "@lexical/utils@^0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@lexical/utils/-/utils-0.5.0.tgz#4f03e8090e65cde5e81801ab08a2450e2e03733a" - integrity sha512-FhQ+thPFTOyBxyRGcd3yJuYh/rvD8ro43DaelWD1KpSlwQ/YuWpdxsSuMqJ32ERpl+bmPPFP2kjkBofxSw1Quw== - dependencies: - "@lexical/list" "0.5.0" - "@lexical/table" "0.5.0" - -"@lexical/utils@0.6.3": - version "0.6.3" - resolved "https://registry.yarnpkg.com/@lexical/utils/-/utils-0.6.3.tgz#85276f9ef095d23634cb3f2d059f5781cee656ec" - integrity sha512-LijfKzH9Fdl30eZ/fWDigLsRPs/rz8sZAnRg6UsJGKR1SS3PeWLoO4RRWhnNzpMypVX8UdvbKv1DxMjQn3d/kw== - dependencies: - "@lexical/list" "0.6.3" - "@lexical/table" "0.6.3" - -"@lexical/yjs@0.5.0": - version "0.5.0" - resolved "https://registry.yarnpkg.com/@lexical/yjs/-/yjs-0.5.0.tgz#a6a6e12f5eceaa5a37ae7999b97ba8ce217987b6" - integrity sha512-2io4GqnRoSh6Nu9bzsDOlwPFJYjXZ9SdgU4ZioH2VvyW4wVstd+ZF2QVcUJlhuwgQr6DzuvM/pqN914IufLzpw== - dependencies: - "@lexical/offset" "0.5.0" + "@lexical/offset" "0.6.4" "@next/env@12.2.2": version "12.2.2" @@ -2302,6 +2274,13 @@ react-dropzone@^14.2.3: file-selector "^0.6.0" prop-types "^15.8.1" +react-error-boundary@^3.1.4: + version "3.1.4" + resolved "https://registry.yarnpkg.com/react-error-boundary/-/react-error-boundary-3.1.4.tgz#255db92b23197108757a888b01e5b729919abde0" + integrity sha512-uM9uPzZJTF6wRQORmSrvOIgt4lJ9MC1sNgEOj2XGsDTRE4kmpWxg7ENK9EWNKJRMAOY9z0MuF4yIfl6gp4sotA== + dependencies: + "@babel/runtime" "^7.12.5" + react-hook-form@^7.38.0: version "7.39.7" resolved "https://registry.yarnpkg.com/react-hook-form/-/react-hook-form-7.39.7.tgz#8eabf2dbb9fce5baccfa60f401f6ef99c4e17fb4"