Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 11 additions & 15 deletions apps/web/core/components/editor/document/editor.tsx
Original file line number Diff line number Diff line change
@@ -1,22 +1,27 @@
import React, { forwardRef } from "react";
// plane imports
import { DocumentEditorWithRef, type EditorRefApi, type IDocumentEditorProps, type TFileHandler } from "@plane/editor";
import {
DocumentEditorWithRef,
IEditorPropsExtended,
type EditorRefApi,
type IDocumentEditorProps,
type TFileHandler,
} from "@plane/editor";
import { MakeOptional, TSearchEntityRequestPayload, TSearchResponse } from "@plane/types";
import { cn } from "@plane/utils";
// hooks
import { useEditorConfig, useEditorMention } from "@/hooks/editor";
import { useMember } from "@/hooks/store/use-member";
// plane web hooks
import { useEditorFlagging } from "@/plane-web/hooks/use-editor-flagging";
import { useIssueEmbed } from "@/plane-web/hooks/use-issue-embed";
// local imports
import { EditorMentionsRoot } from "../embeds/mentions";

type DocumentEditorWrapperProps = MakeOptional<
Omit<IDocumentEditorProps, "fileHandler" | "mentionHandler" | "embedHandler" | "user" | "extendedEditorProps">,
Omit<IDocumentEditorProps, "fileHandler" | "mentionHandler" | "user" | "extendedEditorProps">,
"disabledExtensions" | "editable" | "flaggedExtensions"
> & {
embedHandler?: Partial<IDocumentEditorProps["embedHandler"]>;
extendedEditorProps?: Partial<IEditorPropsExtended>;
workspaceSlug: string;
workspaceId: string;
projectId?: string;
Expand All @@ -35,7 +40,7 @@ export const DocumentEditor = forwardRef<EditorRefApi, DocumentEditorWrapperProp
const {
containerClassName,
editable,
embedHandler,
extendedEditorProps,
workspaceSlug,
workspaceId,
projectId,
Expand All @@ -54,11 +59,6 @@ export const DocumentEditor = forwardRef<EditorRefApi, DocumentEditorWrapperProp
});
// editor config
const { getEditorFileHandlers } = useEditorConfig();
// issue-embed
const { issueEmbedProps } = useIssueEmbed({
projectId,
workspaceSlug,
});

return (
<DocumentEditorWithRef
Expand All @@ -81,11 +81,7 @@ export const DocumentEditor = forwardRef<EditorRefApi, DocumentEditorWrapperProp
renderComponent: EditorMentionsRoot,
getMentionedEntityDetails: (id: string) => ({ display_name: getUserDetails(id)?.display_name ?? "" }),
}}
embedHandler={{
issue: issueEmbedProps,
...embedHandler,
}}
extendedEditorProps={{}}
extendedEditorProps={extendedEditorProps}
{...rest}
containerClassName={cn("relative pl-3 pb-3", containerClassName)}
/>
Expand Down
16 changes: 2 additions & 14 deletions apps/web/core/components/pages/editor/editor-body.tsx
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import { Dispatch, SetStateAction, useCallback, useMemo } from "react";
import { observer } from "mobx-react";
// plane imports
import { LIVE_BASE_PATH, LIVE_BASE_URL } from "@plane/constants";
import {
CollaborativeDocumentEditorWithRef,
Expand All @@ -22,16 +23,11 @@ import { useMember } from "@/hooks/store/use-member";
import { useWorkspace } from "@/hooks/store/use-workspace";
import { useUser } from "@/hooks/store/user";
import { usePageFilters } from "@/hooks/use-page-filters";
// plane web components
// plane web imports
import { EditorAIMenu } from "@/plane-web/components/pages";
// plane web types
import type { TExtendedEditorExtensionsConfig } from "@/plane-web/hooks/pages";
// plane web store
import { EPageStoreType } from "@/plane-web/hooks/store";
// plane web hooks
import { useEditorFlagging } from "@/plane-web/hooks/use-editor-flagging";

import { useIssueEmbed } from "@/plane-web/hooks/use-issue-embed";
// store
import type { TPageInstance } from "@/store/pages/base-page";
// local imports
Expand Down Expand Up @@ -96,11 +92,6 @@ export const PageEditorBody: React.FC<Props> = observer((props) => {
editor: { editorRef, updateAssetsList },
} = page;
const workspaceId = getWorkspaceBySlug(workspaceSlug)?.id ?? "";
// issue-embed
const { issueEmbedProps } = useIssueEmbed({
fetchEmbedSuggestions: handlers.fetchEntity,
workspaceSlug,
});
// use editor mention
const { fetchMentions } = useEditorMention({
searchEntity: handlers.fetchEntity,
Expand Down Expand Up @@ -244,9 +235,6 @@ export const PageEditorBody: React.FC<Props> = observer((props) => {
renderComponent: (props) => <EditorMentionsRoot {...props} />,
getMentionedEntityDetails: (id: string) => ({ display_name: getUserDetails(id)?.display_name ?? "" }),
}}
embedHandler={{
issue: issueEmbedProps,
}}
realtimeConfig={realtimeConfig}
serverHandler={serverHandler}
user={userConfig}
Expand Down
2 changes: 1 addition & 1 deletion packages/editor/src/ce/extensions/core/extensions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ import type { IEditorProps } from "@/types";

export type TCoreAdditionalExtensionsProps = Pick<
IEditorProps,
"disabledExtensions" | "flaggedExtensions" | "fileHandler" | "embedHandler"
"disabledExtensions" | "flaggedExtensions" | "fileHandler" | "extendedEditorProps"
>;

export const CoreEditorAdditionalExtensions = (props: TCoreAdditionalExtensionsProps): Extensions => {
Expand Down
5 changes: 1 addition & 4 deletions packages/editor/src/ce/extensions/document-extensions.tsx
Original file line number Diff line number Diff line change
@@ -1,16 +1,13 @@
import type { HocuspocusProvider } from "@hocuspocus/provider";
import type { AnyExtension } from "@tiptap/core";
import { SlashCommands } from "@/extensions";
// plane editor types
import type { TEmbedConfig } from "@/plane-editor/types";
// types
import type { IEditorProps, TExtensions, TUserDetails } from "@/types";

export type TDocumentEditorAdditionalExtensionsProps = Pick<
IEditorProps,
"disabledExtensions" | "flaggedExtensions" | "fileHandler"
"disabledExtensions" | "flaggedExtensions" | "fileHandler" | "extendedEditorProps"
> & {
embedConfig: TEmbedConfig | undefined;
isEditable: boolean;
provider?: HocuspocusProvider;
userDetails: TUserDetails;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
import type { Extensions } from "@tiptap/core";
import React, { useMemo } from "react";
import React from "react";
// plane imports
import { cn } from "@plane/utils";
// components
import { PageRenderer } from "@/components/editors";
// constants
import { DEFAULT_DISPLAY_CONFIG } from "@/constants/config";
// extensions
import { WorkItemEmbedExtension } from "@/extensions";
// helpers
import { getEditorClassNames } from "@/helpers/common";
// hooks
Expand All @@ -23,14 +20,13 @@ const CollaborativeDocumentEditor: React.FC<ICollaborativeDocumentEditorProps> =
bubbleMenuEnabled = true,
containerClassName,
documentLoaderClassName,
extensions: externalExtensions = [],
extensions = [],
disabledExtensions,
displayConfig = DEFAULT_DISPLAY_CONFIG,
editable,
editorClassName = "",
editorProps,
extendedEditorProps,
embedHandler,
fileHandler,
flaggedExtensions,
forwardedRef,
Expand All @@ -50,27 +46,13 @@ const CollaborativeDocumentEditor: React.FC<ICollaborativeDocumentEditorProps> =
user,
} = props;

const extensions: Extensions = useMemo(() => {
const allExtensions = [...externalExtensions];

if (embedHandler?.issue) {
allExtensions.push(
WorkItemEmbedExtension({
widgetCallback: embedHandler.issue.widgetCallback,
})
);
}

return allExtensions;
}, [externalExtensions, embedHandler.issue]);

// use document editor
const { editor, hasServerConnectionFailed, hasServerSynced } = useCollaborativeEditor({
disabledExtensions,
editable,
editorClassName,
editorProps,
embedHandler,
extendedEditorProps,
extensions,
fileHandler,
flaggedExtensions,
Expand Down
15 changes: 4 additions & 11 deletions packages/editor/src/core/components/editors/document/editor.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { PageRenderer } from "@/components/editors";
// constants
import { DEFAULT_DISPLAY_CONFIG } from "@/constants/config";
// extensions
import { HeadingListExtension, WorkItemEmbedExtension, SideMenuExtension } from "@/extensions";
import { HeadingListExtension, SideMenuExtension } from "@/extensions";
// helpers
import { getEditorClassNames } from "@/helpers/common";
// hooks
Expand All @@ -25,7 +25,7 @@ const DocumentEditor = (props: IDocumentEditorProps) => {
displayConfig = DEFAULT_DISPLAY_CONFIG,
editable,
editorClassName = "",
embedHandler,
extendedEditorProps,
fileHandler,
flaggedExtensions,
forwardedRef,
Expand All @@ -39,13 +39,6 @@ const DocumentEditor = (props: IDocumentEditorProps) => {
} = props;
const extensions: Extensions = useMemo(() => {
const additionalExtensions: Extensions = [];
if (embedHandler?.issue) {
additionalExtensions.push(
WorkItemEmbedExtension({
widgetCallback: embedHandler.issue.widgetCallback,
})
);
}
additionalExtensions.push(
SideMenuExtension({
aiEnabled: !disabledExtensions?.includes("ai"),
Expand All @@ -54,7 +47,7 @@ const DocumentEditor = (props: IDocumentEditorProps) => {
HeadingListExtension,
...DocumentEditorAdditionalExtensions({
disabledExtensions,
embedConfig: embedHandler,
extendedEditorProps,
flaggedExtensions,
isEditable: editable,
fileHandler,
Expand All @@ -73,6 +66,7 @@ const DocumentEditor = (props: IDocumentEditorProps) => {
editable,
editorClassName,
enableHistory: true,
extendedEditorProps,
extensions,
fileHandler,
flaggedExtensions,
Expand All @@ -82,7 +76,6 @@ const DocumentEditor = (props: IDocumentEditorProps) => {
initialValue: value,
mentionHandler,
onChange,
embedHandler,
});

const editorContainerClassName = getEditorClassNames({
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ export const EditorWrapper: React.FC<Props> = (props) => {
editable,
editorClassName = "",
editorProps,
extendedEditorProps,
extensions,
id,
initialValue,
Expand All @@ -41,7 +42,6 @@ export const EditorWrapper: React.FC<Props> = (props) => {
placeholder,
tabIndex,
value,
embedHandler,
} = props;

const editor = useEditor({
Expand All @@ -50,6 +50,7 @@ export const EditorWrapper: React.FC<Props> = (props) => {
editorClassName,
editorProps,
enableHistory: true,
extendedEditorProps,
extensions,
fileHandler,
flaggedExtensions,
Expand All @@ -66,7 +67,6 @@ export const EditorWrapper: React.FC<Props> = (props) => {
placeholder,
tabIndex,
value,
embedHandler,
});

const editorContainerClassName = getEditorClassNames({
Expand Down
9 changes: 4 additions & 5 deletions packages/editor/src/core/extensions/extensions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ import {
// plane editor extensions
import { CoreEditorAdditionalExtensions } from "@/plane-editor/extensions";
// types
import type { IEditorProps, TEmbedConfig } from "@/types";
import type { IEditorProps } from "@/types";
// local imports
import { CustomImageExtension } from "./custom-image/extension";
import { EmojiExtension } from "./emoji/extension";
Expand All @@ -45,11 +45,10 @@ type TArguments = Pick<
| "mentionHandler"
| "placeholder"
| "tabIndex"
| "embedHandler"
| "extendedEditorProps"
> & {
enableHistory: boolean;
editable: boolean;
embedHandler?: TEmbedConfig;
};

export const CoreEditorExtensions = (args: TArguments): Extensions => {
Expand All @@ -62,8 +61,8 @@ export const CoreEditorExtensions = (args: TArguments): Extensions => {
mentionHandler,
placeholder,
tabIndex,
embedHandler,
editable,
extendedEditorProps,
} = args;

const extensions = [
Expand Down Expand Up @@ -118,7 +117,7 @@ export const CoreEditorExtensions = (args: TArguments): Extensions => {
disabledExtensions,
flaggedExtensions,
fileHandler,
embedHandler,
extendedEditorProps,
}),
];

Expand Down
6 changes: 3 additions & 3 deletions packages/editor/src/core/hooks/use-collaborative-editor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ export const useCollaborativeEditor = (props: TCollaborativeEditorHookProps) =>
editable,
editorClassName = "",
editorProps = {},
embedHandler,
extendedEditorProps,
extensions = [],
fileHandler,
flaggedExtensions,
Expand Down Expand Up @@ -80,8 +80,8 @@ export const useCollaborativeEditor = (props: TCollaborativeEditorHookProps) =>
);

const editor = useEditor({
embedHandler,
disabledExtensions,
extendedEditorProps,
id,
editable,
editorProps,
Expand All @@ -99,7 +99,7 @@ export const useCollaborativeEditor = (props: TCollaborativeEditorHookProps) =>
...extensions,
...DocumentEditorAdditionalExtensions({
disabledExtensions,
embedConfig: embedHandler,
extendedEditorProps,
fileHandler,
flaggedExtensions,
isEditable: editable,
Expand Down
6 changes: 3 additions & 3 deletions packages/editor/src/core/hooks/use-editor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ export const useEditor = (props: TEditorHookProps) => {
editorClassName = "",
editorProps = {},
enableHistory,
extendedEditorProps,
extensions = [],
fileHandler,
flaggedExtensions,
Expand All @@ -32,7 +33,6 @@ export const useEditor = (props: TEditorHookProps) => {
onAssetChange,
onChange,
onEditorFocus,
embedHandler,
onTransaction,
placeholder,
provider,
Expand All @@ -55,16 +55,16 @@ export const useEditor = (props: TEditorHookProps) => {
},
extensions: [
...CoreEditorExtensions({
editable,
disabledExtensions,
editable,
enableHistory,
extendedEditorProps,
fileHandler,
flaggedExtensions,
isTouchDevice,
mentionHandler,
placeholder,
tabIndex,
embedHandler,
}),
...extensions,
],
Expand Down
Loading
Loading