From a908bf9edddc045d716f33de1130fced8fe02d74 Mon Sep 17 00:00:00 2001 From: "M. Palanikannan" <73993394+Palanikannan1437@users.noreply.github.com> Date: Wed, 15 Jan 2025 20:23:09 +0530 Subject: [PATCH] [PE-232] chore: management of disabled extensions (#6317) * chore: added mobile editor required changes * fix: turbo.json --------- Co-authored-by: Lakhan --- .../src/ce/extensions/document-extensions.tsx | 32 ++++++++++++------- .../src/ce/extensions/slash-commands.tsx | 2 +- .../slash-commands/command-items-list.tsx | 11 ++----- .../core/extensions/slash-commands/root.tsx | 4 +-- 4 files changed, 27 insertions(+), 22 deletions(-) diff --git a/packages/editor/src/ce/extensions/document-extensions.tsx b/packages/editor/src/ce/extensions/document-extensions.tsx index 35d7c0f3d..445f5e0f8 100644 --- a/packages/editor/src/ce/extensions/document-extensions.tsx +++ b/packages/editor/src/ce/extensions/document-extensions.tsx @@ -1,5 +1,6 @@ import { HocuspocusProvider } from "@hocuspocus/provider"; import { Extensions } from "@tiptap/core"; +import { AnyExtension } from "@tiptap/core"; import { SlashCommands } from "@/extensions"; // plane editor types import { TIssueEmbedConfig } from "@/plane-editor/types"; @@ -13,15 +14,24 @@ type Props = { userDetails: TUserDetails; }; -export const DocumentEditorAdditionalExtensions = (_props: Props) => { - const { disabledExtensions } = _props; - const extensions: Extensions = disabledExtensions?.includes("slash-commands") - ? [] - : [ - SlashCommands({ - disabledExtensions, - }), - ]; - - return extensions; +type ExtensionConfig = { + isEnabled: (disabledExtensions: TExtensions[]) => boolean; + getExtension: (props: Props) => AnyExtension; +}; + +const extensionRegistry: ExtensionConfig[] = [ + { + isEnabled: (disabledExtensions) => !disabledExtensions.includes("slash-commands"), + getExtension: () => SlashCommands({}), + }, +]; + +export const DocumentEditorAdditionalExtensions = (_props: Props) => { + const { disabledExtensions = [] } = _props; + + const documentExtensions = extensionRegistry + .filter((config) => config.isEnabled(disabledExtensions)) + .map((config) => config.getExtension(_props)); + + return documentExtensions; }; diff --git a/packages/editor/src/ce/extensions/slash-commands.tsx b/packages/editor/src/ce/extensions/slash-commands.tsx index 6eabee082..faefa7452 100644 --- a/packages/editor/src/ce/extensions/slash-commands.tsx +++ b/packages/editor/src/ce/extensions/slash-commands.tsx @@ -4,7 +4,7 @@ import { TSlashCommandAdditionalOption } from "@/extensions"; import { TExtensions } from "@/types"; type Props = { - disabledExtensions: TExtensions[]; + disabledExtensions?: TExtensions[]; }; export const coreEditorAdditionalSlashCommandOptions = (props: Props): TSlashCommandAdditionalOption[] => { diff --git a/packages/editor/src/core/extensions/slash-commands/command-items-list.tsx b/packages/editor/src/core/extensions/slash-commands/command-items-list.tsx index 1efb72901..034d3d897 100644 --- a/packages/editor/src/core/extensions/slash-commands/command-items-list.tsx +++ b/packages/editor/src/core/extensions/slash-commands/command-items-list.tsx @@ -39,11 +39,11 @@ import { setText, } from "@/helpers/editor-commands"; // types -import { CommandProps, ISlashCommandItem, TExtensions, TSlashCommandSectionKeys } from "@/types"; +import { CommandProps, ISlashCommandItem, TSlashCommandSectionKeys } from "@/types"; // plane editor extensions import { coreEditorAdditionalSlashCommandOptions } from "@/plane-editor/extensions"; // local types -import { TSlashCommandAdditionalOption } from "./root"; +import { TExtensionProps } from "./root"; export type TSlashCommandSection = { key: TSlashCommandSectionKeys; @@ -51,13 +51,8 @@ export type TSlashCommandSection = { items: ISlashCommandItem[]; }; -type TArgs = { - additionalOptions?: TSlashCommandAdditionalOption[]; - disabledExtensions: TExtensions[]; -}; - export const getSlashCommandFilteredSections = - (args: TArgs) => + (args: TExtensionProps) => ({ query }: { query: string }): TSlashCommandSection[] => { const { additionalOptions, disabledExtensions } = args; const SLASH_COMMAND_SECTIONS: TSlashCommandSection[] = [ diff --git a/packages/editor/src/core/extensions/slash-commands/root.tsx b/packages/editor/src/core/extensions/slash-commands/root.tsx index 5e12c997f..28aaebb85 100644 --- a/packages/editor/src/core/extensions/slash-commands/root.tsx +++ b/packages/editor/src/core/extensions/slash-commands/root.tsx @@ -103,9 +103,9 @@ const renderItems = () => { }; }; -type TExtensionProps = { +export type TExtensionProps = { additionalOptions?: TSlashCommandAdditionalOption[]; - disabledExtensions: TExtensions[]; + disabledExtensions?: TExtensions[]; }; export const SlashCommands = (props: TExtensionProps) =>