📄(frontend) remove AI feature when MIT
AI feature is under AGPL license, so it is removed when the project is under MIT license. NEXT_PUBLIC_PUBLISH_AS_MIT manage this.
This commit is contained in:
@@ -121,7 +121,7 @@ test.describe('Language', () => {
|
||||
LANGUAGE_CODE: 'en-us',
|
||||
});
|
||||
|
||||
await createDoc(page, 'doc-toolbar', browserName, 1);
|
||||
await createDoc(page, 'doc-translations-slash', browserName, 1);
|
||||
|
||||
const { editor, suggestionMenu } = await openSuggestionMenu({ page });
|
||||
await expect(
|
||||
|
||||
@@ -4,6 +4,7 @@ import {
|
||||
getAIExtension,
|
||||
getDefaultAIMenuItems,
|
||||
} from '@blocknote/xl-ai';
|
||||
import '@blocknote/xl-ai/style.css';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
import { css } from 'styled-components';
|
||||
|
||||
|
||||
@@ -1,2 +1,25 @@
|
||||
export * from './AIUI';
|
||||
export * from './useAI';
|
||||
/**
|
||||
* To import AI modules you must import from the index file.
|
||||
* This is to ensure that the AI modules are only loaded when
|
||||
* the application is not published as MIT.
|
||||
*/
|
||||
import * as XLAI from '@blocknote/xl-ai';
|
||||
import * as localesAI from '@blocknote/xl-ai/locales';
|
||||
|
||||
import * as AIUI from './AIUI';
|
||||
import * as useAI from './useAI';
|
||||
|
||||
let modulesAI = undefined;
|
||||
if (process.env.NEXT_PUBLIC_PUBLISH_AS_MIT === 'false') {
|
||||
modulesAI = {
|
||||
...XLAI,
|
||||
...AIUI,
|
||||
localesAI: localesAI,
|
||||
...useAI,
|
||||
};
|
||||
}
|
||||
|
||||
type ModulesAI = typeof XLAI &
|
||||
typeof AIUI & { localesAI: typeof localesAI } & typeof useAI;
|
||||
|
||||
export default modulesAI as ModulesAI;
|
||||
|
||||
+21
-10
@@ -12,9 +12,6 @@ import * as locales from '@blocknote/core/locales';
|
||||
import { BlockNoteView } from '@blocknote/mantine';
|
||||
import '@blocknote/mantine/style.css';
|
||||
import { useCreateBlockNote } from '@blocknote/react';
|
||||
import { AIMenuController } from '@blocknote/xl-ai';
|
||||
import { en as aiEn } from '@blocknote/xl-ai/locales';
|
||||
import '@blocknote/xl-ai/style.css';
|
||||
import { HocuspocusProvider } from '@hocuspocus/provider';
|
||||
import { useEffect, useMemo, useRef } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
@@ -39,7 +36,7 @@ import { cssEditor } from '../styles';
|
||||
import { DocsBlockNoteEditor } from '../types';
|
||||
import { randomColor } from '../utils';
|
||||
|
||||
import { AIMenu, useAI } from './AI';
|
||||
import BlockNoteAI from './AI';
|
||||
import { BlockNoteSuggestionMenu } from './BlockNoteSuggestionMenu';
|
||||
import { BlockNoteToolbar } from './BlockNoteToolBar/BlockNoteToolbar';
|
||||
import { cssComments, useComments } from './comments/';
|
||||
@@ -49,6 +46,11 @@ import {
|
||||
PdfBlock,
|
||||
UploadLoaderBlock,
|
||||
} from './custom-blocks';
|
||||
|
||||
const AIMenu = BlockNoteAI?.AIMenu;
|
||||
const AIMenuController = BlockNoteAI?.AIMenuController;
|
||||
const useAI = BlockNoteAI?.useAI;
|
||||
const localesAI = BlockNoteAI?.localesAI;
|
||||
import {
|
||||
InterlinkingLinkInlineContent,
|
||||
InterlinkingSearchInlineContent,
|
||||
@@ -87,7 +89,6 @@ interface BlockNoteEditorProps {
|
||||
export const BlockNoteEditor = ({ doc, provider }: BlockNoteEditorProps) => {
|
||||
const { user } = useAuth();
|
||||
const { setEditor } = useEditorStore();
|
||||
const { t } = useTranslation();
|
||||
const { themeTokens } = useCunninghamTheme();
|
||||
const { isSynced: isConnectedToCollabServer } = useProviderStore();
|
||||
const refEditorContainer = useRef<HTMLDivElement>(null);
|
||||
@@ -96,14 +97,14 @@ export const BlockNoteEditor = ({ doc, provider }: BlockNoteEditorProps) => {
|
||||
const showComments = canSeeComment;
|
||||
|
||||
useSaveDoc(doc.id, provider.document, isConnectedToCollabServer);
|
||||
const { i18n } = useTranslation();
|
||||
const { i18n, t } = useTranslation();
|
||||
let lang = i18n.resolvedLanguage;
|
||||
if (!lang || !(lang in locales)) {
|
||||
lang = 'en';
|
||||
}
|
||||
|
||||
const { uploadFile, errorAttachment } = useUploadFile(doc.id);
|
||||
const aiExtension = useAI(doc.id);
|
||||
const aiExtension = useAI?.(doc.id);
|
||||
|
||||
const collabName = user?.full_name || user?.email;
|
||||
const cursorName = collabName || t('Anonymous');
|
||||
@@ -173,7 +174,7 @@ export const BlockNoteEditor = ({ doc, provider }: BlockNoteEditorProps) => {
|
||||
...(multiColumnLocales && {
|
||||
multi_column:
|
||||
multiColumnLocales[lang as keyof typeof multiColumnLocales],
|
||||
ai: aiEn,
|
||||
ai: localesAI?.[lang as keyof typeof localesAI],
|
||||
}),
|
||||
},
|
||||
pasteHandler: ({ event, defaultPasteHandler }) => {
|
||||
@@ -209,7 +210,15 @@ export const BlockNoteEditor = ({ doc, provider }: BlockNoteEditorProps) => {
|
||||
uploadFile,
|
||||
schema: blockNoteSchema,
|
||||
},
|
||||
[cursorName, lang, provider, uploadFile, threadStore, resolveUsers],
|
||||
[
|
||||
aiExtension,
|
||||
cursorName,
|
||||
lang,
|
||||
provider,
|
||||
uploadFile,
|
||||
threadStore,
|
||||
resolveUsers,
|
||||
],
|
||||
);
|
||||
|
||||
useHeadings(editor);
|
||||
@@ -252,7 +261,9 @@ export const BlockNoteEditor = ({ doc, provider }: BlockNoteEditorProps) => {
|
||||
comments={showComments}
|
||||
aria-label={t('Document editor')}
|
||||
>
|
||||
{aiExtension && <AIMenuController aiMenu={AIMenu} />}
|
||||
{aiExtension && AIMenuController && AIMenu && (
|
||||
<AIMenuController aiMenu={AIMenu} />
|
||||
)}
|
||||
<BlockNoteSuggestionMenu />
|
||||
<BlockNoteToolbar />
|
||||
</BlockNoteView>
|
||||
|
||||
+6
-2
@@ -8,7 +8,6 @@ import {
|
||||
useBlockNoteEditor,
|
||||
useDictionary,
|
||||
} from '@blocknote/react';
|
||||
import { getAISlashMenuItems } from '@blocknote/xl-ai';
|
||||
import React, { useMemo } from 'react';
|
||||
import { useTranslation } from 'react-i18next';
|
||||
|
||||
@@ -20,6 +19,7 @@ import {
|
||||
DocsStyleSchema,
|
||||
} from '../types';
|
||||
|
||||
import BlockNoteAI from './AI';
|
||||
import {
|
||||
getCalloutReactSlashMenuItems,
|
||||
getPdfReactSlashMenuItems,
|
||||
@@ -30,6 +30,8 @@ import XLMultiColumn from './xl-multi-column';
|
||||
const getMultiColumnSlashMenuItems =
|
||||
XLMultiColumn?.getMultiColumnSlashMenuItems;
|
||||
|
||||
const getAISlashMenuItems = BlockNoteAI?.getAISlashMenuItems;
|
||||
|
||||
export const BlockNoteSuggestionMenu = () => {
|
||||
const editor = useBlockNoteEditor<
|
||||
DocsBlockSchema,
|
||||
@@ -54,7 +56,9 @@ export const BlockNoteSuggestionMenu = () => {
|
||||
getMultiColumnSlashMenuItems?.(editor) || [],
|
||||
getPdfReactSlashMenuItems(editor, t, fileBlocksName),
|
||||
getCalloutReactSlashMenuItems(editor, t, basicBlocksName),
|
||||
conf?.AI_FEATURE_ENABLED ? getAISlashMenuItems(editor) : [],
|
||||
conf?.AI_FEATURE_ENABLED && getAISlashMenuItems
|
||||
? getAISlashMenuItems(editor)
|
||||
: [],
|
||||
);
|
||||
|
||||
const index = combinedMenu.findIndex(
|
||||
|
||||
+4
-2
@@ -10,7 +10,7 @@ import { useTranslation } from 'react-i18next';
|
||||
|
||||
import { useConfig } from '@/core/config/api';
|
||||
|
||||
import { AIToolbarButton } from '../AI';
|
||||
import BlockNoteAI from '../AI';
|
||||
import { CommentToolbarButton } from '../comments/CommentToolbarButton';
|
||||
import { getCalloutFormattingToolbarItems } from '../custom-blocks';
|
||||
|
||||
@@ -18,6 +18,8 @@ import { FileDownloadButton } from './FileDownloadButton';
|
||||
import { MarkdownButton } from './MarkdownButton';
|
||||
import { ModalConfirmDownloadUnsafe } from './ModalConfirmDownloadUnsafe';
|
||||
|
||||
const AIToolbarButton = BlockNoteAI?.AIToolbarButton;
|
||||
|
||||
export const BlockNoteToolbar = () => {
|
||||
const dict = useDictionary();
|
||||
const [confirmOpen, setIsConfirmOpen] = useState(false);
|
||||
@@ -69,7 +71,7 @@ export const BlockNoteToolbar = () => {
|
||||
const formattingToolbar = useCallback(() => {
|
||||
return (
|
||||
<FormattingToolbar>
|
||||
{conf?.AI_FEATURE_ENABLED && <AIToolbarButton />}
|
||||
{conf?.AI_FEATURE_ENABLED && AIToolbarButton && <AIToolbarButton />}
|
||||
|
||||
<CommentToolbarButton />
|
||||
|
||||
|
||||
Reference in New Issue
Block a user