From 08813c8075ce7692348a9db6df6050075f3a7378 Mon Sep 17 00:00:00 2001 From: yousefed Date: Mon, 4 Dec 2023 10:52:06 +0100 Subject: [PATCH 1/6] refactor directory structure --- .eslintrc.js | 12 +++ .../src/{shared => @util}/EventEmitter.ts | 0 packages/core/src/@util/README.md | 3 + .../src/{shared/utils.ts => @util/browser.ts} | 12 +-- packages/core/src/@util/typescript.ts | 5 ++ packages/core/src/api/README.md | 8 ++ .../blockManipulation.test.ts | 6 +- .../blockManipulation/blockManipulation.ts | 10 +-- .../core/src/api/exporters/copyExtension.ts | 8 +- .../exporters/html/externalHTMLExporter.ts | 11 +-- .../api/exporters/html/htmlConversion.test.ts | 19 ++-- .../exporters/html/internalHTMLSerializer.ts | 11 +-- .../html/util/sharedHTMLConversion.ts | 8 +- .../markdown/markdownExporter.test.ts | 21 ++--- .../helpers => api}/getBlockInfoFromPos.ts | 0 .../nodeConversions/nodeConversions.test.ts | 12 +-- .../api/nodeConversions/nodeConversions.ts | 13 +-- packages/core/src/api/{util => }/nodeUtil.ts | 0 .../core/src/api/parsers/html/parseHTML.ts | 4 +- .../core/src/api/parsers/pasteExtension.ts | 8 +- packages/core/src/api/testCases/index.ts | 20 ----- .../cases/customBlocks.ts | 19 ++-- .../cases/customInlineContent.ts | 12 +-- .../cases/customStyles.ts | 15 ++-- .../cases/defaultSchema.ts | 8 +- packages/core/src/api/testUtil/index.ts | 17 ++++ .../partialBlockTestUtil.ts} | 8 +- .../HeadingBlockContent.ts | 6 +- .../ImageBlockContent/ImageBlockContent.ts | 14 +-- .../uploadToTmpFilesDotOrg_DEV_ONLY.ts | 0 .../BulletListItemBlockContent.ts | 6 +- .../ListItemKeyboardShortcuts.ts | 2 +- .../NumberedListIndexingPlugin.ts | 2 +- .../NumberedListItemBlockContent.ts | 6 +- .../ParagraphBlockContent.ts | 4 +- packages/core/src/blocks/README.md | 3 + .../TableBlockContent/TableBlockContent.ts | 4 +- .../TableBlockContent/TableExtension.ts | 0 .../defaultBlockHelpers.ts | 12 +-- .../Blocks/api => blocks}/defaultBlocks.ts | 28 +++--- .../Blocks/api => blocks}/defaultProps.ts | 2 +- .../Blocks/nodes => editor}/Block.css | 0 .../src/{ => editor}/BlockNoteEditor.test.ts | 2 +- .../core/src/{ => editor}/BlockNoteEditor.ts | 71 +++++++-------- .../src/{ => editor}/BlockNoteExtensions.ts | 24 +++--- packages/core/src/editor/README.md | 3 + .../api => editor}/cursorPositionTypes.ts | 6 +- packages/core/src/{ => editor}/editor.css | 2 +- packages/core/src/editor/selectionTypes.ts | 11 +++ .../core/src/{ => editor}/transformPasted.ts | 0 .../@util}/BaseUiElementTypes.ts | 0 .../@util}/suggestion/SuggestionItem.ts | 0 .../@util}/suggestion/SuggestionPlugin.ts | 16 ++-- .../BackgroundColorExtension.ts | 2 +- .../BackgroundColor/BackgroundColorMark.ts | 2 +- .../extensions/Blocks/api/selectionTypes.ts | 11 --- .../extensions/Blocks/helpers/findBlock.ts | 5 -- packages/core/src/extensions/Blocks/index.ts | 8 -- .../Blocks/nodes/BlockAttributes.ts | 10 --- .../FormattingToolbarPlugin.ts | 12 +-- .../HyperlinkToolbarPlugin.ts | 12 +-- .../ImageToolbar/ImageToolbarPlugin.ts | 12 +-- .../NonEditableBlockPlugin.ts | 0 .../PreviousBlockTypePlugin.ts | 0 packages/core/src/extensions/README.md | 3 + .../src/extensions/SideMenu/SideMenuPlugin.ts | 14 +-- .../extensions/SlashMenu/BaseSlashMenuItem.ts | 10 +-- .../extensions/SlashMenu/SlashMenuPlugin.ts | 12 +-- .../SlashMenu/defaultSlashMenuItems.ts | 10 +-- .../TableHandles/TableHandlesPlugin.ts | 2 +- .../TextColor/TextColorExtension.ts | 2 +- .../src/extensions/TextColor/TextColorMark.ts | 2 +- packages/core/src/index.ts | 37 ++++---- .../nodes => pm-nodes}/BlockContainer.ts | 29 ++++--- .../Blocks/nodes => pm-nodes}/BlockGroup.ts | 4 +- packages/core/src/pm-nodes/Doc.ts | 7 ++ .../pm-nodes/README.md} | 5 ++ packages/core/src/pm-nodes/index.ts | 3 + packages/core/src/schema/README.md | 3 + .../api => schema}/blocks/createSpec.ts | 2 +- .../Blocks/api => schema}/blocks/internal.ts | 10 +-- .../Blocks/api => schema}/blocks/types.ts | 2 +- packages/core/src/schema/index.ts | 9 ++ .../inlineContent/createSpec.ts | 2 +- .../api => schema}/inlineContent/internal.ts | 0 .../api => schema}/inlineContent/types.ts | 0 .../api => schema}/styles/createSpec.ts | 2 +- .../Blocks/api => schema}/styles/internal.ts | 0 .../Blocks/api => schema}/styles/types.ts | 0 packages/core/src/shared/EditorElement.ts | 0 .../@shared/ColorPicker}/ColorIcon.tsx | 0 .../@shared/ColorPicker}/ColorPicker.tsx | 0 .../@shared/Toolbar}/Toolbar.tsx | 0 .../@shared/Toolbar}/ToolbarButton.tsx | 2 +- .../@shared/Toolbar}/ToolbarDropdown.tsx | 0 .../@shared/Toolbar}/ToolbarDropdownItem.tsx | 0 .../Toolbar}/ToolbarDropdownTarget.tsx | 0 .../@shared/Toolbar}/ToolbarInputDropdown.tsx | 0 .../Toolbar}/ToolbarInputDropdownButton.tsx | 0 .../Toolbar}/ToolbarInputDropdownItem.tsx | 0 .../@shared/Tooltip}/TooltipContent.tsx | 0 .../DefaultButtons/ColorStyleButton.tsx | 6 +- .../DefaultButtons/CreateLinkButton.tsx | 8 +- .../DefaultButtons/ImageCaptionButton.tsx | 8 +- .../DefaultButtons/NestBlockButtons.tsx | 4 +- .../DefaultButtons/ReplaceImageButton.tsx | 4 +- .../DefaultButtons/TextAlignButton.tsx | 2 +- .../DefaultButtons/ToggledStyleButton.tsx | 4 +- .../DefaultDropdowns/BlockTypeDropdown.tsx | 4 +- .../DefaultFormattingToolbar.tsx | 2 +- .../FormattingToolbarPositioner.tsx | 0 .../DefaultHyperlinkToolbar.tsx | 4 +- .../components/EditHyperlinkMenu.tsx | 4 +- .../HyperlinkToolbarPositioner.tsx | 0 .../ImageToolbar}/DefaultImageToolbar.tsx | 2 +- .../ImageToolbar}/ImageToolbarPositioner.tsx | 0 .../DefaultButtons/AddBlockButton.tsx | 0 .../SideMenu}/DefaultButtons/DragHandle.tsx | 0 .../SideMenu}/DefaultSideMenu.tsx | 0 .../DefaultButtons/BlockColorsButton.tsx | 2 +- .../DefaultButtons/RemoveBlockButton.tsx | 0 .../DragHandleMenu/DefaultDragHandleMenu.tsx | 0 .../DragHandleMenu/DragHandleMenu.tsx | 0 .../DragHandleMenu/DragHandleMenuItem.tsx | 0 .../SideMenu}/SideMenu.tsx | 0 .../SideMenu}/SideMenuButton.tsx | 0 .../SideMenu}/SideMenuPositioner.tsx | 0 .../SlashMenu}/DefaultSlashMenu.tsx | 0 .../SlashMenu}/SlashMenuItem.tsx | 0 .../SlashMenu}/SlashMenuPositioner.tsx | 2 +- .../TableHandles}/DefaultTableHandle.tsx | 0 .../TableHandles}/TableHandle.tsx | 0 .../DefaultButtons/AddButton.tsx | 0 .../DefaultButtons/DeleteButton.tsx | 0 .../DefaultTableHandleMenu.tsx | 0 .../TableHandleMenu/TableHandleMenu.tsx | 0 .../TableHandleMenu/TableHandleMenuItem.tsx | 0 .../TableHandles}/TableHandlePositioner.tsx | 2 +- .../react/src/{ => editor}/BlockNoteTheme.ts | 0 .../react/src/{ => editor}/BlockNoteView.tsx | 12 +-- .../src/{Editor => editor}/EditorContent.tsx | 0 .../react/src/{ => editor}/defaultThemes.ts | 2 +- packages/react/src/hooks/useBlockNote.ts | 2 +- packages/react/src/index.ts | 86 +++++++++---------- .../src/{ => schema/@util}/ReactRenderUtil.ts | 0 .../react/src/{ => schema}/ReactBlockSpec.tsx | 2 +- .../{ => schema}/ReactInlineContentSpec.tsx | 2 +- .../react/src/{ => schema}/ReactStyleSpec.tsx | 2 +- .../ReactSlashMenuItem.ts | 0 .../defaultReactSlashMenuItems.tsx | 2 +- .../src/test/testCases/customReactBlocks.tsx | 2 +- .../testCases/customReactInlineContent.tsx | 2 +- .../src/test/testCases/customReactStyles.tsx | 2 +- packages/react/src/utils.ts | 13 --- 154 files changed, 469 insertions(+), 458 deletions(-) rename packages/core/src/{shared => @util}/EventEmitter.ts (100%) create mode 100644 packages/core/src/@util/README.md rename packages/core/src/{shared/utils.ts => @util/browser.ts} (56%) create mode 100644 packages/core/src/@util/typescript.ts create mode 100644 packages/core/src/api/README.md rename packages/core/src/{extensions/Blocks/helpers => api}/getBlockInfoFromPos.ts (100%) rename packages/core/src/api/{util => }/nodeUtil.ts (100%) delete mode 100644 packages/core/src/api/testCases/index.ts rename packages/core/src/api/{testCases => testUtil}/cases/customBlocks.ts (90%) rename packages/core/src/api/{testCases => testUtil}/cases/customInlineContent.ts (81%) rename packages/core/src/api/{testCases => testUtil}/cases/customStyles.ts (78%) rename packages/core/src/api/{testCases => testUtil}/cases/defaultSchema.ts (96%) create mode 100644 packages/core/src/api/testUtil/index.ts rename packages/core/src/api/{nodeConversions/testUtil.ts => testUtil/partialBlockTestUtil.ts} (94%) rename packages/core/src/{extensions/Blocks/nodes/BlockContent => blocks}/HeadingBlockContent/HeadingBlockContent.ts (95%) rename packages/core/src/{extensions/Blocks/nodes/BlockContent => blocks}/ImageBlockContent/ImageBlockContent.ts (96%) rename packages/core/src/{extensions/Blocks/nodes/BlockContent => blocks}/ImageBlockContent/uploadToTmpFilesDotOrg_DEV_ONLY.ts (100%) rename packages/core/src/{extensions/Blocks/nodes/BlockContent => blocks}/ListItemBlockContent/BulletListItemBlockContent/BulletListItemBlockContent.ts (95%) rename packages/core/src/{extensions/Blocks/nodes/BlockContent => blocks}/ListItemBlockContent/ListItemKeyboardShortcuts.ts (94%) rename packages/core/src/{extensions/Blocks/nodes/BlockContent => blocks}/ListItemBlockContent/NumberedListItemBlockContent/NumberedListIndexingPlugin.ts (97%) rename packages/core/src/{extensions/Blocks/nodes/BlockContent => blocks}/ListItemBlockContent/NumberedListItemBlockContent/NumberedListItemBlockContent.ts (95%) rename packages/core/src/{extensions/Blocks/nodes/BlockContent => blocks}/ParagraphBlockContent/ParagraphBlockContent.ts (90%) create mode 100644 packages/core/src/blocks/README.md rename packages/core/src/{extensions/Blocks/nodes/BlockContent => blocks}/TableBlockContent/TableBlockContent.ts (94%) rename packages/core/src/{extensions/Blocks/nodes/BlockContent => blocks}/TableBlockContent/TableExtension.ts (100%) rename packages/core/src/{extensions/Blocks/nodes/BlockContent => blocks}/defaultBlockHelpers.ts (87%) rename packages/core/src/{extensions/Blocks/api => blocks}/defaultBlocks.ts (59%) rename packages/core/src/{extensions/Blocks/api => blocks}/defaultProps.ts (90%) rename packages/core/src/{extensions/Blocks/nodes => editor}/Block.css (100%) rename packages/core/src/{ => editor}/BlockNoteEditor.test.ts (80%) rename packages/core/src/{ => editor}/BlockNoteEditor.ts (94%) rename packages/core/src/{ => editor}/BlockNoteExtensions.ts (84%) create mode 100644 packages/core/src/editor/README.md rename packages/core/src/{extensions/Blocks/api => editor}/cursorPositionTypes.ts (58%) rename packages/core/src/{ => editor}/editor.css (98%) create mode 100644 packages/core/src/editor/selectionTypes.ts rename packages/core/src/{ => editor}/transformPasted.ts (100%) rename packages/core/src/{shared => extensions/@util}/BaseUiElementTypes.ts (100%) rename packages/core/src/{shared/plugins => extensions/@util}/suggestion/SuggestionItem.ts (100%) rename packages/core/src/{shared/plugins => extensions/@util}/suggestion/SuggestionPlugin.ts (97%) delete mode 100644 packages/core/src/extensions/Blocks/api/selectionTypes.ts delete mode 100644 packages/core/src/extensions/Blocks/helpers/findBlock.ts delete mode 100644 packages/core/src/extensions/Blocks/index.ts delete mode 100644 packages/core/src/extensions/Blocks/nodes/BlockAttributes.ts rename packages/core/src/extensions/{Blocks => NonEditableBlocks}/NonEditableBlockPlugin.ts (100%) rename packages/core/src/extensions/{Blocks => PreviousBlockType}/PreviousBlockTypePlugin.ts (100%) create mode 100644 packages/core/src/extensions/README.md rename packages/core/src/{extensions/Blocks/nodes => pm-nodes}/BlockContainer.ts (96%) rename packages/core/src/{extensions/Blocks/nodes => pm-nodes}/BlockGroup.ts (91%) create mode 100644 packages/core/src/pm-nodes/Doc.ts rename packages/core/{ARCHITECTURE.md => src/pm-nodes/README.md} (93%) create mode 100644 packages/core/src/pm-nodes/index.ts create mode 100644 packages/core/src/schema/README.md rename packages/core/src/{extensions/Blocks/api => schema}/blocks/createSpec.ts (99%) rename packages/core/src/{extensions/Blocks/api => schema}/blocks/internal.ts (96%) rename packages/core/src/{extensions/Blocks/api => schema}/blocks/types.ts (99%) create mode 100644 packages/core/src/schema/index.ts rename packages/core/src/{extensions/Blocks/api => schema}/inlineContent/createSpec.ts (97%) rename packages/core/src/{extensions/Blocks/api => schema}/inlineContent/internal.ts (100%) rename packages/core/src/{extensions/Blocks/api => schema}/inlineContent/types.ts (100%) rename packages/core/src/{extensions/Blocks/api => schema}/styles/createSpec.ts (97%) rename packages/core/src/{extensions/Blocks/api => schema}/styles/internal.ts (100%) rename packages/core/src/{extensions/Blocks/api => schema}/styles/types.ts (100%) delete mode 100644 packages/core/src/shared/EditorElement.ts rename packages/react/src/{SharedComponents/ColorPicker/components => components/@shared/ColorPicker}/ColorIcon.tsx (100%) rename packages/react/src/{SharedComponents/ColorPicker/components => components/@shared/ColorPicker}/ColorPicker.tsx (100%) rename packages/react/src/{SharedComponents/Toolbar/components => components/@shared/Toolbar}/Toolbar.tsx (100%) rename packages/react/src/{SharedComponents/Toolbar/components => components/@shared/Toolbar}/ToolbarButton.tsx (96%) rename packages/react/src/{SharedComponents/Toolbar/components => components/@shared/Toolbar}/ToolbarDropdown.tsx (100%) rename packages/react/src/{SharedComponents/Toolbar/components => components/@shared/Toolbar}/ToolbarDropdownItem.tsx (100%) rename packages/react/src/{SharedComponents/Toolbar/components => components/@shared/Toolbar}/ToolbarDropdownTarget.tsx (100%) rename packages/react/src/{SharedComponents/Toolbar/components => components/@shared/Toolbar}/ToolbarInputDropdown.tsx (100%) rename packages/react/src/{SharedComponents/Toolbar/components => components/@shared/Toolbar}/ToolbarInputDropdownButton.tsx (100%) rename packages/react/src/{SharedComponents/Toolbar/components => components/@shared/Toolbar}/ToolbarInputDropdownItem.tsx (100%) rename packages/react/src/{SharedComponents/Tooltip/components => components/@shared/Tooltip}/TooltipContent.tsx (100%) rename packages/react/src/{FormattingToolbar/components => components/FormattingToolbar}/DefaultButtons/ColorStyleButton.tsx (90%) rename packages/react/src/{FormattingToolbar/components => components/FormattingToolbar}/DefaultButtons/CreateLinkButton.tsx (79%) rename packages/react/src/{FormattingToolbar/components => components/FormattingToolbar}/DefaultButtons/ImageCaptionButton.tsx (87%) rename packages/react/src/{FormattingToolbar/components => components/FormattingToolbar}/DefaultButtons/NestBlockButtons.tsx (90%) rename packages/react/src/{FormattingToolbar/components => components/FormattingToolbar}/DefaultButtons/ReplaceImageButton.tsx (86%) rename packages/react/src/{FormattingToolbar/components => components/FormattingToolbar}/DefaultButtons/TextAlignButton.tsx (95%) rename packages/react/src/{FormattingToolbar/components => components/FormattingToolbar}/DefaultButtons/ToggledStyleButton.tsx (93%) rename packages/react/src/{FormattingToolbar/components => components/FormattingToolbar}/DefaultDropdowns/BlockTypeDropdown.tsx (95%) rename packages/react/src/{FormattingToolbar/components => components/FormattingToolbar}/DefaultFormattingToolbar.tsx (96%) rename packages/react/src/{FormattingToolbar/components => components/FormattingToolbar}/FormattingToolbarPositioner.tsx (100%) rename packages/react/src/{HyperlinkToolbar/components => components/HyperlinkToolbar}/DefaultHyperlinkToolbar.tsx (91%) rename packages/react/src/{HyperlinkToolbar/components => components/HyperlinkToolbar}/EditHyperlinkMenu/components/EditHyperlinkMenu.tsx (90%) rename packages/react/src/{HyperlinkToolbar/components => components/HyperlinkToolbar}/HyperlinkToolbarPositioner.tsx (100%) rename packages/react/src/{ImageToolbar/components => components/ImageToolbar}/DefaultImageToolbar.tsx (98%) rename packages/react/src/{ImageToolbar/components => components/ImageToolbar}/ImageToolbarPositioner.tsx (100%) rename packages/react/src/{SideMenu/components => components/SideMenu}/DefaultButtons/AddBlockButton.tsx (100%) rename packages/react/src/{SideMenu/components => components/SideMenu}/DefaultButtons/DragHandle.tsx (100%) rename packages/react/src/{SideMenu/components => components/SideMenu}/DefaultSideMenu.tsx (100%) rename packages/react/src/{SideMenu/components => components/SideMenu}/DragHandleMenu/DefaultButtons/BlockColorsButton.tsx (97%) rename packages/react/src/{SideMenu/components => components/SideMenu}/DragHandleMenu/DefaultButtons/RemoveBlockButton.tsx (100%) rename packages/react/src/{SideMenu/components => components/SideMenu}/DragHandleMenu/DefaultDragHandleMenu.tsx (100%) rename packages/react/src/{SideMenu/components => components/SideMenu}/DragHandleMenu/DragHandleMenu.tsx (100%) rename packages/react/src/{SideMenu/components => components/SideMenu}/DragHandleMenu/DragHandleMenuItem.tsx (100%) rename packages/react/src/{SideMenu/components => components/SideMenu}/SideMenu.tsx (100%) rename packages/react/src/{SideMenu/components => components/SideMenu}/SideMenuButton.tsx (100%) rename packages/react/src/{SideMenu/components => components/SideMenu}/SideMenuPositioner.tsx (100%) rename packages/react/src/{SlashMenu/components => components/SlashMenu}/DefaultSlashMenu.tsx (100%) rename packages/react/src/{SlashMenu/components => components/SlashMenu}/SlashMenuItem.tsx (100%) rename packages/react/src/{SlashMenu/components => components/SlashMenu}/SlashMenuPositioner.tsx (97%) rename packages/react/src/{TableHandles/components => components/TableHandles}/DefaultTableHandle.tsx (100%) rename packages/react/src/{TableHandles/components => components/TableHandles}/TableHandle.tsx (100%) rename packages/react/src/{TableHandles/components => components/TableHandles}/TableHandleMenu/DefaultButtons/AddButton.tsx (100%) rename packages/react/src/{TableHandles/components => components/TableHandles}/TableHandleMenu/DefaultButtons/DeleteButton.tsx (100%) rename packages/react/src/{TableHandles/components => components/TableHandles}/TableHandleMenu/DefaultTableHandleMenu.tsx (100%) rename packages/react/src/{TableHandles/components => components/TableHandles}/TableHandleMenu/TableHandleMenu.tsx (100%) rename packages/react/src/{TableHandles/components => components/TableHandles}/TableHandleMenu/TableHandleMenuItem.tsx (100%) rename packages/react/src/{TableHandles/components => components/TableHandles}/TableHandlePositioner.tsx (98%) rename packages/react/src/{ => editor}/BlockNoteTheme.ts (100%) rename packages/react/src/{ => editor}/BlockNoteView.tsx (83%) rename packages/react/src/{Editor => editor}/EditorContent.tsx (100%) rename packages/react/src/{ => editor}/defaultThemes.ts (99%) rename packages/react/src/{ => schema/@util}/ReactRenderUtil.ts (100%) rename packages/react/src/{ => schema}/ReactBlockSpec.tsx (99%) rename packages/react/src/{ => schema}/ReactInlineContentSpec.tsx (98%) rename packages/react/src/{ => schema}/ReactStyleSpec.tsx (96%) rename packages/react/src/{SlashMenu => slashMenuItems}/ReactSlashMenuItem.ts (100%) rename packages/react/src/{SlashMenu => slashMenuItems}/defaultReactSlashMenuItems.tsx (97%) delete mode 100644 packages/react/src/utils.ts diff --git a/.eslintrc.js b/.eslintrc.js index 5065a58c4b..e623220163 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -23,5 +23,17 @@ module.exports = { "@typescript-eslint/no-non-null-assertion": "off", "@typescript-eslint/no-explicit-any": "off", "@typescript-eslint/ban-ts-comment": "off", + "import/no-restricted-paths": [ + "error", + { + zones: [ + { + target: "types/**/*", + from: "src/**/*", + message: "Import from this module to types is not allowed.", + }, + ], + }, + ], }, }; diff --git a/packages/core/src/shared/EventEmitter.ts b/packages/core/src/@util/EventEmitter.ts similarity index 100% rename from packages/core/src/shared/EventEmitter.ts rename to packages/core/src/@util/EventEmitter.ts diff --git a/packages/core/src/@util/README.md b/packages/core/src/@util/README.md new file mode 100644 index 0000000000..4fe456fd0e --- /dev/null +++ b/packages/core/src/@util/README.md @@ -0,0 +1,3 @@ +### @blocknote/core/src/@util + +Contains generic utility files with helper functions / classes. \ No newline at end of file diff --git a/packages/core/src/shared/utils.ts b/packages/core/src/@util/browser.ts similarity index 56% rename from packages/core/src/shared/utils.ts rename to packages/core/src/@util/browser.ts index e421f9f5aa..d32090c334 100644 --- a/packages/core/src/shared/utils.ts +++ b/packages/core/src/@util/browser.ts @@ -1,7 +1,8 @@ export const isAppleOS = () => - /Mac/.test(navigator.platform) || - (/AppleWebKit/.test(navigator.userAgent) && - /Mobile\/\w+/.test(navigator.userAgent)); + typeof navigator !== "undefined" && + (/Mac/.test(navigator.platform) || + (/AppleWebKit/.test(navigator.userAgent) && + /Mobile\/\w+/.test(navigator.userAgent))); export function formatKeyboardShortcut(shortcut: string) { if (isAppleOS()) { @@ -15,8 +16,3 @@ export function mergeCSSClasses(...classes: string[]) { return classes.filter((c) => c).join(" "); } -export class UnreachableCaseError extends Error { - constructor(val: never) { - super(`Unreachable case: ${val}`); - } -} diff --git a/packages/core/src/@util/typescript.ts b/packages/core/src/@util/typescript.ts new file mode 100644 index 0000000000..93b94f8b51 --- /dev/null +++ b/packages/core/src/@util/typescript.ts @@ -0,0 +1,5 @@ +export class UnreachableCaseError extends Error { + constructor(val: never) { + super(`Unreachable case: ${val}`); + } +} \ No newline at end of file diff --git a/packages/core/src/api/README.md b/packages/core/src/api/README.md new file mode 100644 index 0000000000..2f7465ed67 --- /dev/null +++ b/packages/core/src/api/README.md @@ -0,0 +1,8 @@ +### @blocknote/core/src/api + +Implements the BlockNote API surface + +- `blockManipulation`: API to insert / update / remove blocks +- `exporters`: exporting to HTML / markdown / other formats +- `nodeConversions`: internal API for converting between BlockNote Schema (Blocks) and Prosemirror (Nodes) +- `parsers`: importing from HTML / markdown / other formats \ No newline at end of file diff --git a/packages/core/src/api/blockManipulation/blockManipulation.test.ts b/packages/core/src/api/blockManipulation/blockManipulation.test.ts index 3f8acaa97b..dba67ebd8e 100644 --- a/packages/core/src/api/blockManipulation/blockManipulation.test.ts +++ b/packages/core/src/api/blockManipulation/blockManipulation.test.ts @@ -1,11 +1,11 @@ import { afterEach, beforeEach, describe, expect, it } from "vitest"; -import { BlockNoteEditor } from "../../BlockNoteEditor"; -import { Block, PartialBlock } from "../../extensions/Blocks/api/blocks/types"; +import { BlockNoteEditor } from "../../editor/BlockNoteEditor"; import { DefaultBlockSchema, DefaultInlineContentSchema, DefaultStyleSchema, -} from "../../extensions/Blocks/api/defaultBlocks"; +} from "../../blocks/defaultBlocks"; +import { Block, PartialBlock } from "../../schema/blocks/types"; let editor: BlockNoteEditor; diff --git a/packages/core/src/api/blockManipulation/blockManipulation.ts b/packages/core/src/api/blockManipulation/blockManipulation.ts index 1054e0e35b..45d03dda93 100644 --- a/packages/core/src/api/blockManipulation/blockManipulation.ts +++ b/packages/core/src/api/blockManipulation/blockManipulation.ts @@ -1,16 +1,16 @@ import { Editor } from "@tiptap/core"; import { Node } from "prosemirror-model"; -import { BlockNoteEditor } from "../../BlockNoteEditor"; +import { BlockNoteEditor } from "../../editor/BlockNoteEditor"; import { BlockIdentifier, BlockSchema, PartialBlock, -} from "../../extensions/Blocks/api/blocks/types"; -import { InlineContentSchema } from "../../extensions/Blocks/api/inlineContent/types"; -import { StyleSchema } from "../../extensions/Blocks/api/styles/types"; +} from "../../schema/blocks/types"; +import { InlineContentSchema } from "../../schema/inlineContent/types"; +import { StyleSchema } from "../../schema/styles/types"; import { blockToNode } from "../nodeConversions/nodeConversions"; -import { getNodeById } from "../util/nodeUtil"; +import { getNodeById } from "../nodeUtil"; export function insertBlocks< BSchema extends BlockSchema, diff --git a/packages/core/src/api/exporters/copyExtension.ts b/packages/core/src/api/exporters/copyExtension.ts index 4b580b1f86..facea76d9f 100644 --- a/packages/core/src/api/exporters/copyExtension.ts +++ b/packages/core/src/api/exporters/copyExtension.ts @@ -1,10 +1,10 @@ import { Extension } from "@tiptap/core"; import { Plugin } from "prosemirror-state"; -import { BlockNoteEditor } from "../../BlockNoteEditor"; -import { BlockSchema } from "../../extensions/Blocks/api/blocks/types"; -import { InlineContentSchema } from "../../extensions/Blocks/api/inlineContent/types"; -import { StyleSchema } from "../../extensions/Blocks/api/styles/types"; +import { BlockNoteEditor } from "../../editor/BlockNoteEditor"; +import { BlockSchema } from "../../schema/blocks/types"; +import { InlineContentSchema } from "../../schema/inlineContent/types"; +import { StyleSchema } from "../../schema/styles/types"; import { createExternalHTMLExporter } from "./html/externalHTMLExporter"; import { createInternalHTMLSerializer } from "./html/internalHTMLSerializer"; import { cleanHTMLToMarkdown } from "./markdown/markdownExporter"; diff --git a/packages/core/src/api/exporters/html/externalHTMLExporter.ts b/packages/core/src/api/exporters/html/externalHTMLExporter.ts index 8d62dd587c..5da74e65dd 100644 --- a/packages/core/src/api/exporters/html/externalHTMLExporter.ts +++ b/packages/core/src/api/exporters/html/externalHTMLExporter.ts @@ -3,13 +3,10 @@ import rehypeParse from "rehype-parse"; import rehypeStringify from "rehype-stringify"; import { unified } from "unified"; -import { BlockNoteEditor } from "../../../BlockNoteEditor"; -import { - BlockSchema, - PartialBlock, -} from "../../../extensions/Blocks/api/blocks/types"; -import { InlineContentSchema } from "../../../extensions/Blocks/api/inlineContent/types"; -import { StyleSchema } from "../../../extensions/Blocks/api/styles/types"; +import { BlockNoteEditor } from "../../../editor/BlockNoteEditor"; +import { BlockSchema, PartialBlock } from "../../../schema/blocks/types"; +import { InlineContentSchema } from "../../../schema/inlineContent/types"; +import { StyleSchema } from "../../../schema/styles/types"; import { blockToNode } from "../../nodeConversions/nodeConversions"; import { serializeNodeInner, diff --git a/packages/core/src/api/exporters/html/htmlConversion.test.ts b/packages/core/src/api/exporters/html/htmlConversion.test.ts index cf018e6c10..6671037f19 100644 --- a/packages/core/src/api/exporters/html/htmlConversion.test.ts +++ b/packages/core/src/api/exporters/html/htmlConversion.test.ts @@ -1,17 +1,14 @@ import { afterEach, beforeEach, describe, expect, it } from "vitest"; -import { BlockNoteEditor } from "../../../BlockNoteEditor"; +import { BlockNoteEditor } from "../../../editor/BlockNoteEditor"; import { addIdsToBlocks, partialBlocksToBlocksForTesting } from "../../.."; -import { - BlockSchema, - PartialBlock, -} from "../../../extensions/Blocks/api/blocks/types"; -import { InlineContentSchema } from "../../../extensions/Blocks/api/inlineContent/types"; -import { StyleSchema } from "../../../extensions/Blocks/api/styles/types"; -import { customBlocksTestCases } from "../../testCases/cases/customBlocks"; -import { customInlineContentTestCases } from "../../testCases/cases/customInlineContent"; -import { customStylesTestCases } from "../../testCases/cases/customStyles"; -import { defaultSchemaTestCases } from "../../testCases/cases/defaultSchema"; +import { BlockSchema, PartialBlock } from "../../../schema/blocks/types"; +import { InlineContentSchema } from "../../../schema/inlineContent/types"; +import { StyleSchema } from "../../../schema/styles/types"; +import { customBlocksTestCases } from "../../testUtil/cases/customBlocks"; +import { customInlineContentTestCases } from "../../testUtil/cases/customInlineContent"; +import { customStylesTestCases } from "../../testUtil/cases/customStyles"; +import { defaultSchemaTestCases } from "../../testUtil/cases/defaultSchema"; import { createExternalHTMLExporter } from "./externalHTMLExporter"; import { createInternalHTMLSerializer } from "./internalHTMLSerializer"; diff --git a/packages/core/src/api/exporters/html/internalHTMLSerializer.ts b/packages/core/src/api/exporters/html/internalHTMLSerializer.ts index 77785dd0ac..b113fda025 100644 --- a/packages/core/src/api/exporters/html/internalHTMLSerializer.ts +++ b/packages/core/src/api/exporters/html/internalHTMLSerializer.ts @@ -1,11 +1,8 @@ import { DOMSerializer, Fragment, Node, Schema } from "prosemirror-model"; -import { BlockNoteEditor } from "../../../BlockNoteEditor"; -import { - BlockSchema, - PartialBlock, -} from "../../../extensions/Blocks/api/blocks/types"; -import { InlineContentSchema } from "../../../extensions/Blocks/api/inlineContent/types"; -import { StyleSchema } from "../../../extensions/Blocks/api/styles/types"; +import { BlockNoteEditor } from "../../../editor/BlockNoteEditor"; +import { BlockSchema, PartialBlock } from "../../../schema/blocks/types"; +import { InlineContentSchema } from "../../../schema/inlineContent/types"; +import { StyleSchema } from "../../../schema/styles/types"; import { blockToNode } from "../../nodeConversions/nodeConversions"; import { serializeNodeInner, diff --git a/packages/core/src/api/exporters/html/util/sharedHTMLConversion.ts b/packages/core/src/api/exporters/html/util/sharedHTMLConversion.ts index 03f45db17f..d9fca237f0 100644 --- a/packages/core/src/api/exporters/html/util/sharedHTMLConversion.ts +++ b/packages/core/src/api/exporters/html/util/sharedHTMLConversion.ts @@ -1,9 +1,9 @@ import { DOMSerializer, Fragment, Node } from "prosemirror-model"; -import { BlockNoteEditor } from "../../../../BlockNoteEditor"; -import { BlockSchema } from "../../../../extensions/Blocks/api/blocks/types"; -import { InlineContentSchema } from "../../../../extensions/Blocks/api/inlineContent/types"; -import { StyleSchema } from "../../../../extensions/Blocks/api/styles/types"; +import { BlockNoteEditor } from "../../../../editor/BlockNoteEditor"; +import { BlockSchema } from "../../../../schema/blocks/types"; +import { InlineContentSchema } from "../../../../schema/inlineContent/types"; +import { StyleSchema } from "../../../../schema/styles/types"; import { nodeToBlock } from "../../../nodeConversions/nodeConversions"; function doc(options: { document?: Document }) { diff --git a/packages/core/src/api/exporters/markdown/markdownExporter.test.ts b/packages/core/src/api/exporters/markdown/markdownExporter.test.ts index 11cafad595..a4f391bc11 100644 --- a/packages/core/src/api/exporters/markdown/markdownExporter.test.ts +++ b/packages/core/src/api/exporters/markdown/markdownExporter.test.ts @@ -1,18 +1,15 @@ import fs from "node:fs"; import path from "node:path"; import { afterEach, beforeEach, describe, expect, it } from "vitest"; -import { BlockNoteEditor } from "../../../BlockNoteEditor"; -import { - BlockSchema, - PartialBlock, -} from "../../../extensions/Blocks/api/blocks/types"; -import { InlineContentSchema } from "../../../extensions/Blocks/api/inlineContent/types"; -import { StyleSchema } from "../../../extensions/Blocks/api/styles/types"; -import { partialBlocksToBlocksForTesting } from "../../nodeConversions/testUtil"; -import { customBlocksTestCases } from "../../testCases/cases/customBlocks"; -import { customInlineContentTestCases } from "../../testCases/cases/customInlineContent"; -import { customStylesTestCases } from "../../testCases/cases/customStyles"; -import { defaultSchemaTestCases } from "../../testCases/cases/defaultSchema"; +import { BlockNoteEditor } from "../../../editor/BlockNoteEditor"; +import { BlockSchema, PartialBlock } from "../../../schema/blocks/types"; +import { InlineContentSchema } from "../../../schema/inlineContent/types"; +import { StyleSchema } from "../../../schema/styles/types"; +import { partialBlocksToBlocksForTesting } from "../../testUtil/partialBlockTestUtil"; +import { customBlocksTestCases } from "../../testUtil/cases/customBlocks"; +import { customInlineContentTestCases } from "../../testUtil/cases/customInlineContent"; +import { customStylesTestCases } from "../../testUtil/cases/customStyles"; +import { defaultSchemaTestCases } from "../../testUtil/cases/defaultSchema"; async function convertToMarkdownAndCompareSnapshots< B extends BlockSchema, diff --git a/packages/core/src/extensions/Blocks/helpers/getBlockInfoFromPos.ts b/packages/core/src/api/getBlockInfoFromPos.ts similarity index 100% rename from packages/core/src/extensions/Blocks/helpers/getBlockInfoFromPos.ts rename to packages/core/src/api/getBlockInfoFromPos.ts diff --git a/packages/core/src/api/nodeConversions/nodeConversions.test.ts b/packages/core/src/api/nodeConversions/nodeConversions.test.ts index be1d1cfaf2..68d583dd55 100644 --- a/packages/core/src/api/nodeConversions/nodeConversions.test.ts +++ b/packages/core/src/api/nodeConversions/nodeConversions.test.ts @@ -1,12 +1,12 @@ import { afterEach, beforeEach, describe, expect, it } from "vitest"; -import { BlockNoteEditor } from "../../BlockNoteEditor"; -import { PartialBlock } from "../../extensions/Blocks/api/blocks/types"; -import { customInlineContentTestCases } from "../testCases/cases/customInlineContent"; -import { customStylesTestCases } from "../testCases/cases/customStyles"; -import { defaultSchemaTestCases } from "../testCases/cases/defaultSchema"; +import { BlockNoteEditor } from "../../editor/BlockNoteEditor"; +import { PartialBlock } from "../../schema/blocks/types"; +import { customInlineContentTestCases } from "../testUtil/cases/customInlineContent"; +import { customStylesTestCases } from "../testUtil/cases/customStyles"; +import { defaultSchemaTestCases } from "../testUtil/cases/defaultSchema"; import { blockToNode, nodeToBlock } from "./nodeConversions"; -import { addIdsToBlock, partialBlockToBlockForTesting } from "./testUtil"; +import { addIdsToBlock, partialBlockToBlockForTesting } from "../testUtil/partialBlockTestUtil"; function validateConversion( block: PartialBlock, diff --git a/packages/core/src/api/nodeConversions/nodeConversions.ts b/packages/core/src/api/nodeConversions/nodeConversions.ts index 391fbe1e5d..0935dc1594 100644 --- a/packages/core/src/api/nodeConversions/nodeConversions.ts +++ b/packages/core/src/api/nodeConversions/nodeConversions.ts @@ -1,12 +1,14 @@ import { Mark } from "@tiptap/pm/model"; import { Node, Schema } from "prosemirror-model"; +import { getBlockInfo } from "../getBlockInfoFromPos"; +import UniqueID from "../../extensions/UniqueID/UniqueID"; import { Block, BlockSchema, PartialBlock, PartialTableContent, TableContent, -} from "../../extensions/Blocks/api/blocks/types"; +} from "../../schema/blocks/types"; import { CustomInlineContentConfig, CustomInlineContentFromConfig, @@ -20,11 +22,10 @@ import { isLinkInlineContent, isPartialLinkInlineContent, isStyledTextInlineContent, -} from "../../extensions/Blocks/api/inlineContent/types"; -import { StyleSchema, Styles } from "../../extensions/Blocks/api/styles/types"; -import { getBlockInfo } from "../../extensions/Blocks/helpers/getBlockInfoFromPos"; -import UniqueID from "../../extensions/UniqueID/UniqueID"; -import { UnreachableCaseError } from "../../shared/utils"; +} from "../../schema/inlineContent/types"; +import { StyleSchema, Styles } from "../../schema/styles/types"; + +import {UnreachableCaseError} from "../../@util/typescript"; /** * Convert a StyledText inline element to a diff --git a/packages/core/src/api/util/nodeUtil.ts b/packages/core/src/api/nodeUtil.ts similarity index 100% rename from packages/core/src/api/util/nodeUtil.ts rename to packages/core/src/api/nodeUtil.ts diff --git a/packages/core/src/api/parsers/html/parseHTML.ts b/packages/core/src/api/parsers/html/parseHTML.ts index 11aca3f787..dfd802157d 100644 --- a/packages/core/src/api/parsers/html/parseHTML.ts +++ b/packages/core/src/api/parsers/html/parseHTML.ts @@ -1,7 +1,7 @@ import { DOMParser, Schema } from "prosemirror-model"; import { Block, BlockSchema, nodeToBlock } from "../../.."; -import { InlineContentSchema } from "../../../extensions/Blocks/api/inlineContent/types"; -import { StyleSchema } from "../../../extensions/Blocks/api/styles/types"; +import { InlineContentSchema } from "../../../schema/inlineContent/types"; +import { StyleSchema } from "../../../schema/styles/types"; import { nestedListsToBlockNoteStructure } from "./util/nestedLists"; export async function HTMLToBlocks< diff --git a/packages/core/src/api/parsers/pasteExtension.ts b/packages/core/src/api/parsers/pasteExtension.ts index f0dec4f86d..787630c1a7 100644 --- a/packages/core/src/api/parsers/pasteExtension.ts +++ b/packages/core/src/api/parsers/pasteExtension.ts @@ -1,10 +1,10 @@ import { Extension } from "@tiptap/core"; import { Plugin } from "prosemirror-state"; -import { BlockNoteEditor } from "../../BlockNoteEditor"; -import { BlockSchema } from "../../extensions/Blocks/api/blocks/types"; -import { InlineContentSchema } from "../../extensions/Blocks/api/inlineContent/types"; -import { StyleSchema } from "../../extensions/Blocks/api/styles/types"; +import { BlockNoteEditor } from "../../editor/BlockNoteEditor"; +import { BlockSchema } from "../../schema/blocks/types"; +import { InlineContentSchema } from "../../schema/inlineContent/types"; +import { StyleSchema } from "../../schema/styles/types"; import { nestedListsToBlockNoteStructure } from "./html/util/nestedLists"; const acceptedMIMETypes = [ diff --git a/packages/core/src/api/testCases/index.ts b/packages/core/src/api/testCases/index.ts deleted file mode 100644 index 90e1f06005..0000000000 --- a/packages/core/src/api/testCases/index.ts +++ /dev/null @@ -1,20 +0,0 @@ -import { BlockNoteEditor } from "../../BlockNoteEditor"; -import { - BlockSchema, - PartialBlock, -} from "../../extensions/Blocks/api/blocks/types"; -import { InlineContentSchema } from "../../extensions/Blocks/api/inlineContent/types"; -import { StyleSchema } from "../../extensions/Blocks/api/styles/types"; - -export type EditorTestCases< - B extends BlockSchema, - I extends InlineContentSchema, - S extends StyleSchema -> = { - name: string; - createEditor: () => BlockNoteEditor; - documents: Array<{ - name: string; - blocks: PartialBlock[]; - }>; -}; diff --git a/packages/core/src/api/testCases/cases/customBlocks.ts b/packages/core/src/api/testUtil/cases/customBlocks.ts similarity index 90% rename from packages/core/src/api/testCases/cases/customBlocks.ts rename to packages/core/src/api/testUtil/cases/customBlocks.ts index 1c435a5254..4c278ea408 100644 --- a/packages/core/src/api/testCases/cases/customBlocks.ts +++ b/packages/core/src/api/testUtil/cases/customBlocks.ts @@ -1,22 +1,19 @@ -import { EditorTestCases } from ".."; +import { EditorTestCases } from "../index"; -import { BlockNoteEditor } from "../../../BlockNoteEditor"; -import { createBlockSpec } from "../../../extensions/Blocks/api/blocks/createSpec"; -import { - BlockSchemaFromSpecs, - BlockSpecs, -} from "../../../extensions/Blocks/api/blocks/types"; +import { BlockNoteEditor } from "../../../editor/BlockNoteEditor"; import { DefaultInlineContentSchema, DefaultStyleSchema, defaultBlockSpecs, -} from "../../../extensions/Blocks/api/defaultBlocks"; -import { defaultProps } from "../../../extensions/Blocks/api/defaultProps"; +} from "../../../blocks/defaultBlocks"; +import { defaultProps } from "../../../blocks/defaultProps"; import { imagePropSchema, renderImage, -} from "../../../extensions/Blocks/nodes/BlockContent/ImageBlockContent/ImageBlockContent"; -import { uploadToTmpFilesDotOrg_DEV_ONLY } from "../../../extensions/Blocks/nodes/BlockContent/ImageBlockContent/uploadToTmpFilesDotOrg_DEV_ONLY"; +} from "../../../blocks/ImageBlockContent/ImageBlockContent"; +import { uploadToTmpFilesDotOrg_DEV_ONLY } from "../../../blocks/ImageBlockContent/uploadToTmpFilesDotOrg_DEV_ONLY"; +import { createBlockSpec } from "../../../schema/blocks/createSpec"; +import { BlockSchemaFromSpecs, BlockSpecs } from "../../../schema/blocks/types"; // This is a modified version of the default image block that does not implement // a `serialize` function. It's used to test if the custom serializer by default diff --git a/packages/core/src/api/testCases/cases/customInlineContent.ts b/packages/core/src/api/testUtil/cases/customInlineContent.ts similarity index 81% rename from packages/core/src/api/testCases/cases/customInlineContent.ts rename to packages/core/src/api/testUtil/cases/customInlineContent.ts index e1d725ef08..737cab3db9 100644 --- a/packages/core/src/api/testCases/cases/customInlineContent.ts +++ b/packages/core/src/api/testUtil/cases/customInlineContent.ts @@ -1,17 +1,17 @@ -import { EditorTestCases } from ".."; +import { EditorTestCases } from "../index"; -import { BlockNoteEditor } from "../../../BlockNoteEditor"; +import { BlockNoteEditor } from "../../../editor/BlockNoteEditor"; import { DefaultBlockSchema, DefaultStyleSchema, defaultInlineContentSpecs, -} from "../../../extensions/Blocks/api/defaultBlocks"; -import { createInlineContentSpec } from "../../../extensions/Blocks/api/inlineContent/createSpec"; +} from "../../../blocks/defaultBlocks"; +import { uploadToTmpFilesDotOrg_DEV_ONLY } from "../../../blocks/ImageBlockContent/uploadToTmpFilesDotOrg_DEV_ONLY"; +import { createInlineContentSpec } from "../../../schema/inlineContent/createSpec"; import { InlineContentSchemaFromSpecs, InlineContentSpecs, -} from "../../../extensions/Blocks/api/inlineContent/types"; -import { uploadToTmpFilesDotOrg_DEV_ONLY } from "../../../extensions/Blocks/nodes/BlockContent/ImageBlockContent/uploadToTmpFilesDotOrg_DEV_ONLY"; +} from "../../../schema/inlineContent/types"; const mention = createInlineContentSpec( { diff --git a/packages/core/src/api/testCases/cases/customStyles.ts b/packages/core/src/api/testUtil/cases/customStyles.ts similarity index 78% rename from packages/core/src/api/testCases/cases/customStyles.ts rename to packages/core/src/api/testUtil/cases/customStyles.ts index e7a4390e63..cd19064a99 100644 --- a/packages/core/src/api/testCases/cases/customStyles.ts +++ b/packages/core/src/api/testUtil/cases/customStyles.ts @@ -1,17 +1,14 @@ -import { EditorTestCases } from ".."; +import { EditorTestCases } from "../index"; -import { BlockNoteEditor } from "../../../BlockNoteEditor"; +import { BlockNoteEditor } from "../../../editor/BlockNoteEditor"; import { DefaultBlockSchema, DefaultInlineContentSchema, defaultStyleSpecs, -} from "../../../extensions/Blocks/api/defaultBlocks"; -import { createStyleSpec } from "../../../extensions/Blocks/api/styles/createSpec"; -import { - StyleSchemaFromSpecs, - StyleSpecs, -} from "../../../extensions/Blocks/api/styles/types"; -import { uploadToTmpFilesDotOrg_DEV_ONLY } from "../../../extensions/Blocks/nodes/BlockContent/ImageBlockContent/uploadToTmpFilesDotOrg_DEV_ONLY"; +} from "../../../blocks/defaultBlocks"; +import { uploadToTmpFilesDotOrg_DEV_ONLY } from "../../../blocks/ImageBlockContent/uploadToTmpFilesDotOrg_DEV_ONLY"; +import { createStyleSpec } from "../../../schema/styles/createSpec"; +import { StyleSchemaFromSpecs, StyleSpecs } from "../../../schema/styles/types"; const small = createStyleSpec( { diff --git a/packages/core/src/api/testCases/cases/defaultSchema.ts b/packages/core/src/api/testUtil/cases/defaultSchema.ts similarity index 96% rename from packages/core/src/api/testCases/cases/defaultSchema.ts rename to packages/core/src/api/testUtil/cases/defaultSchema.ts index 87aa6b01b1..0b9f1f2f5c 100644 --- a/packages/core/src/api/testCases/cases/defaultSchema.ts +++ b/packages/core/src/api/testUtil/cases/defaultSchema.ts @@ -1,12 +1,12 @@ -import { EditorTestCases } from ".."; +import { EditorTestCases } from "../index"; -import { BlockNoteEditor } from "../../../BlockNoteEditor"; +import { BlockNoteEditor } from "../../../editor/BlockNoteEditor"; import { DefaultBlockSchema, DefaultInlineContentSchema, DefaultStyleSchema, -} from "../../../extensions/Blocks/api/defaultBlocks"; -import { uploadToTmpFilesDotOrg_DEV_ONLY } from "../../../extensions/Blocks/nodes/BlockContent/ImageBlockContent/uploadToTmpFilesDotOrg_DEV_ONLY"; +} from "../../../blocks/defaultBlocks"; +import { uploadToTmpFilesDotOrg_DEV_ONLY } from "../../../blocks/ImageBlockContent/uploadToTmpFilesDotOrg_DEV_ONLY"; export const defaultSchemaTestCases: EditorTestCases< DefaultBlockSchema, diff --git a/packages/core/src/api/testUtil/index.ts b/packages/core/src/api/testUtil/index.ts new file mode 100644 index 0000000000..d3269f3e86 --- /dev/null +++ b/packages/core/src/api/testUtil/index.ts @@ -0,0 +1,17 @@ +import { BlockNoteEditor } from "../../editor/BlockNoteEditor"; +import { BlockSchema, PartialBlock } from "../../schema/blocks/types"; +import { InlineContentSchema } from "../../schema/inlineContent/types"; +import { StyleSchema } from "../../schema/styles/types"; + +export type EditorTestCases< + B extends BlockSchema, + I extends InlineContentSchema, + S extends StyleSchema +> = { + name: string; + createEditor: () => BlockNoteEditor; + documents: Array<{ + name: string; + blocks: PartialBlock[]; + }>; +}; diff --git a/packages/core/src/api/nodeConversions/testUtil.ts b/packages/core/src/api/testUtil/partialBlockTestUtil.ts similarity index 94% rename from packages/core/src/api/nodeConversions/testUtil.ts rename to packages/core/src/api/testUtil/partialBlockTestUtil.ts index 3398e19d2d..6d91a204f3 100644 --- a/packages/core/src/api/nodeConversions/testUtil.ts +++ b/packages/core/src/api/testUtil/partialBlockTestUtil.ts @@ -1,9 +1,10 @@ +import UniqueID from "../../extensions/UniqueID/UniqueID"; import { Block, BlockSchema, PartialBlock, TableContent, -} from "../../extensions/Blocks/api/blocks/types"; +} from "../../schema/blocks/types"; import { InlineContent, InlineContentSchema, @@ -11,9 +12,8 @@ import { StyledText, isPartialLinkInlineContent, isStyledTextInlineContent, -} from "../../extensions/Blocks/api/inlineContent/types"; -import { StyleSchema } from "../../extensions/Blocks/api/styles/types"; -import UniqueID from "../../extensions/UniqueID/UniqueID"; +} from "../../schema/inlineContent/types"; +import { StyleSchema } from "../../schema/styles/types"; function textShorthandToStyledText( content: string | StyledText[] = "" diff --git a/packages/core/src/extensions/Blocks/nodes/BlockContent/HeadingBlockContent/HeadingBlockContent.ts b/packages/core/src/blocks/HeadingBlockContent/HeadingBlockContent.ts similarity index 95% rename from packages/core/src/extensions/Blocks/nodes/BlockContent/HeadingBlockContent/HeadingBlockContent.ts rename to packages/core/src/blocks/HeadingBlockContent/HeadingBlockContent.ts index 50a0b74197..3b7062e832 100644 --- a/packages/core/src/extensions/Blocks/nodes/BlockContent/HeadingBlockContent/HeadingBlockContent.ts +++ b/packages/core/src/blocks/HeadingBlockContent/HeadingBlockContent.ts @@ -2,9 +2,9 @@ import { InputRule } from "@tiptap/core"; import { createBlockSpecFromStronglyTypedTiptapNode, createStronglyTypedTiptapNode, -} from "../../../api/blocks/internal"; -import { PropSchema } from "../../../api/blocks/types"; -import { defaultProps } from "../../../api/defaultProps"; +} from "../../schema/blocks/internal"; +import { PropSchema } from "../../schema/blocks/types"; +import { defaultProps } from "../defaultProps"; import { createDefaultBlockDOMOutputSpec } from "../defaultBlockHelpers"; export const headingPropSchema = { diff --git a/packages/core/src/extensions/Blocks/nodes/BlockContent/ImageBlockContent/ImageBlockContent.ts b/packages/core/src/blocks/ImageBlockContent/ImageBlockContent.ts similarity index 96% rename from packages/core/src/extensions/Blocks/nodes/BlockContent/ImageBlockContent/ImageBlockContent.ts rename to packages/core/src/blocks/ImageBlockContent/ImageBlockContent.ts index eb296183f5..3289c725f1 100644 --- a/packages/core/src/extensions/Blocks/nodes/BlockContent/ImageBlockContent/ImageBlockContent.ts +++ b/packages/core/src/blocks/ImageBlockContent/ImageBlockContent.ts @@ -1,18 +1,18 @@ -import { BlockNoteEditor } from "../../../../../BlockNoteEditor"; -import { imageToolbarPluginKey } from "../../../../ImageToolbar/ImageToolbarPlugin"; +import { BlockNoteEditor } from "../../editor/BlockNoteEditor"; +import { imageToolbarPluginKey } from "../../extensions/ImageToolbar/ImageToolbarPlugin"; import { CustomBlockConfig, createBlockSpec, -} from "../../../api/blocks/createSpec"; +} from "../../schema/blocks/createSpec"; import { BlockFromConfig, BlockSchemaWithBlock, PropSchema, -} from "../../../api/blocks/types"; -import { defaultProps } from "../../../api/defaultProps"; -import { InlineContentSchema } from "../../../api/inlineContent/types"; -import { StyleSchema } from "../../../api/styles/types"; +} from "../../schema/blocks/types"; +import { InlineContentSchema } from "../../schema/inlineContent/types"; +import { StyleSchema } from "../../schema/styles/types"; +import { defaultProps } from "../defaultProps"; export const imagePropSchema = { textAlignment: defaultProps.textAlignment, diff --git a/packages/core/src/extensions/Blocks/nodes/BlockContent/ImageBlockContent/uploadToTmpFilesDotOrg_DEV_ONLY.ts b/packages/core/src/blocks/ImageBlockContent/uploadToTmpFilesDotOrg_DEV_ONLY.ts similarity index 100% rename from packages/core/src/extensions/Blocks/nodes/BlockContent/ImageBlockContent/uploadToTmpFilesDotOrg_DEV_ONLY.ts rename to packages/core/src/blocks/ImageBlockContent/uploadToTmpFilesDotOrg_DEV_ONLY.ts diff --git a/packages/core/src/extensions/Blocks/nodes/BlockContent/ListItemBlockContent/BulletListItemBlockContent/BulletListItemBlockContent.ts b/packages/core/src/blocks/ListItemBlockContent/BulletListItemBlockContent/BulletListItemBlockContent.ts similarity index 95% rename from packages/core/src/extensions/Blocks/nodes/BlockContent/ListItemBlockContent/BulletListItemBlockContent/BulletListItemBlockContent.ts rename to packages/core/src/blocks/ListItemBlockContent/BulletListItemBlockContent/BulletListItemBlockContent.ts index 602510ade1..377ce9985d 100644 --- a/packages/core/src/extensions/Blocks/nodes/BlockContent/ListItemBlockContent/BulletListItemBlockContent/BulletListItemBlockContent.ts +++ b/packages/core/src/blocks/ListItemBlockContent/BulletListItemBlockContent/BulletListItemBlockContent.ts @@ -2,9 +2,9 @@ import { InputRule } from "@tiptap/core"; import { createBlockSpecFromStronglyTypedTiptapNode, createStronglyTypedTiptapNode, -} from "../../../../api/blocks/internal"; -import { PropSchema } from "../../../../api/blocks/types"; -import { defaultProps } from "../../../../api/defaultProps"; +} from "../../../schema/blocks/internal"; +import { PropSchema } from "../../../schema/blocks/types"; +import { defaultProps } from "../../defaultProps"; import { createDefaultBlockDOMOutputSpec } from "../../defaultBlockHelpers"; import { handleEnter } from "../ListItemKeyboardShortcuts"; diff --git a/packages/core/src/extensions/Blocks/nodes/BlockContent/ListItemBlockContent/ListItemKeyboardShortcuts.ts b/packages/core/src/blocks/ListItemBlockContent/ListItemKeyboardShortcuts.ts similarity index 94% rename from packages/core/src/extensions/Blocks/nodes/BlockContent/ListItemBlockContent/ListItemKeyboardShortcuts.ts rename to packages/core/src/blocks/ListItemBlockContent/ListItemKeyboardShortcuts.ts index 01f7474eab..b51c6b5294 100644 --- a/packages/core/src/extensions/Blocks/nodes/BlockContent/ListItemBlockContent/ListItemKeyboardShortcuts.ts +++ b/packages/core/src/blocks/ListItemBlockContent/ListItemKeyboardShortcuts.ts @@ -1,5 +1,5 @@ import { Editor } from "@tiptap/core"; -import { getBlockInfoFromPos } from "../../../helpers/getBlockInfoFromPos"; +import { getBlockInfoFromPos } from "../../api/getBlockInfoFromPos"; export const handleEnter = (editor: Editor) => { const { node, contentType } = getBlockInfoFromPos( diff --git a/packages/core/src/extensions/Blocks/nodes/BlockContent/ListItemBlockContent/NumberedListItemBlockContent/NumberedListIndexingPlugin.ts b/packages/core/src/blocks/ListItemBlockContent/NumberedListItemBlockContent/NumberedListIndexingPlugin.ts similarity index 97% rename from packages/core/src/extensions/Blocks/nodes/BlockContent/ListItemBlockContent/NumberedListItemBlockContent/NumberedListIndexingPlugin.ts rename to packages/core/src/blocks/ListItemBlockContent/NumberedListItemBlockContent/NumberedListIndexingPlugin.ts index 95c7dd4e9e..5ee327fbbc 100644 --- a/packages/core/src/extensions/Blocks/nodes/BlockContent/ListItemBlockContent/NumberedListItemBlockContent/NumberedListIndexingPlugin.ts +++ b/packages/core/src/blocks/ListItemBlockContent/NumberedListItemBlockContent/NumberedListIndexingPlugin.ts @@ -1,5 +1,5 @@ import { Plugin, PluginKey } from "prosemirror-state"; -import { getBlockInfoFromPos } from "../../../../helpers/getBlockInfoFromPos"; +import { getBlockInfoFromPos } from "../../../api/getBlockInfoFromPos"; // ProseMirror Plugin which automatically assigns indices to ordered list items per nesting level. const PLUGIN_KEY = new PluginKey(`numbered-list-indexing`); diff --git a/packages/core/src/extensions/Blocks/nodes/BlockContent/ListItemBlockContent/NumberedListItemBlockContent/NumberedListItemBlockContent.ts b/packages/core/src/blocks/ListItemBlockContent/NumberedListItemBlockContent/NumberedListItemBlockContent.ts similarity index 95% rename from packages/core/src/extensions/Blocks/nodes/BlockContent/ListItemBlockContent/NumberedListItemBlockContent/NumberedListItemBlockContent.ts rename to packages/core/src/blocks/ListItemBlockContent/NumberedListItemBlockContent/NumberedListItemBlockContent.ts index e8db16998f..18afba0ee6 100644 --- a/packages/core/src/extensions/Blocks/nodes/BlockContent/ListItemBlockContent/NumberedListItemBlockContent/NumberedListItemBlockContent.ts +++ b/packages/core/src/blocks/ListItemBlockContent/NumberedListItemBlockContent/NumberedListItemBlockContent.ts @@ -2,9 +2,9 @@ import { InputRule } from "@tiptap/core"; import { createBlockSpecFromStronglyTypedTiptapNode, createStronglyTypedTiptapNode, -} from "../../../../api/blocks/internal"; -import { PropSchema } from "../../../../api/blocks/types"; -import { defaultProps } from "../../../../api/defaultProps"; +} from "../../../schema/blocks/internal"; +import { PropSchema } from "../../../schema/blocks/types"; +import { defaultProps } from "../../defaultProps"; import { createDefaultBlockDOMOutputSpec } from "../../defaultBlockHelpers"; import { handleEnter } from "../ListItemKeyboardShortcuts"; import { NumberedListIndexingPlugin } from "./NumberedListIndexingPlugin"; diff --git a/packages/core/src/extensions/Blocks/nodes/BlockContent/ParagraphBlockContent/ParagraphBlockContent.ts b/packages/core/src/blocks/ParagraphBlockContent/ParagraphBlockContent.ts similarity index 90% rename from packages/core/src/extensions/Blocks/nodes/BlockContent/ParagraphBlockContent/ParagraphBlockContent.ts rename to packages/core/src/blocks/ParagraphBlockContent/ParagraphBlockContent.ts index 8c826f413e..e15d171854 100644 --- a/packages/core/src/extensions/Blocks/nodes/BlockContent/ParagraphBlockContent/ParagraphBlockContent.ts +++ b/packages/core/src/blocks/ParagraphBlockContent/ParagraphBlockContent.ts @@ -1,8 +1,8 @@ import { createBlockSpecFromStronglyTypedTiptapNode, createStronglyTypedTiptapNode, -} from "../../../api/blocks/internal"; -import { defaultProps } from "../../../api/defaultProps"; +} from "../../schema/blocks/internal"; +import { defaultProps } from "../defaultProps"; import { createDefaultBlockDOMOutputSpec } from "../defaultBlockHelpers"; export const paragraphPropSchema = { diff --git a/packages/core/src/blocks/README.md b/packages/core/src/blocks/README.md new file mode 100644 index 0000000000..b5a8581591 --- /dev/null +++ b/packages/core/src/blocks/README.md @@ -0,0 +1,3 @@ +### @blocknote/core/src/blocks + +The default built-in blocks that ship with BlockNote \ No newline at end of file diff --git a/packages/core/src/extensions/Blocks/nodes/BlockContent/TableBlockContent/TableBlockContent.ts b/packages/core/src/blocks/TableBlockContent/TableBlockContent.ts similarity index 94% rename from packages/core/src/extensions/Blocks/nodes/BlockContent/TableBlockContent/TableBlockContent.ts rename to packages/core/src/blocks/TableBlockContent/TableBlockContent.ts index eb173f5889..04f80e09ae 100644 --- a/packages/core/src/extensions/Blocks/nodes/BlockContent/TableBlockContent/TableBlockContent.ts +++ b/packages/core/src/blocks/TableBlockContent/TableBlockContent.ts @@ -5,8 +5,8 @@ import { TableRow } from "@tiptap/extension-table-row"; import { createBlockSpecFromStronglyTypedTiptapNode, createStronglyTypedTiptapNode, -} from "../../../api/blocks/internal"; -import { defaultProps } from "../../../api/defaultProps"; +} from "../../schema/blocks/internal"; +import { defaultProps } from "../defaultProps"; import { createDefaultBlockDOMOutputSpec } from "../defaultBlockHelpers"; import { TableExtension } from "./TableExtension"; diff --git a/packages/core/src/extensions/Blocks/nodes/BlockContent/TableBlockContent/TableExtension.ts b/packages/core/src/blocks/TableBlockContent/TableExtension.ts similarity index 100% rename from packages/core/src/extensions/Blocks/nodes/BlockContent/TableBlockContent/TableExtension.ts rename to packages/core/src/blocks/TableBlockContent/TableExtension.ts diff --git a/packages/core/src/extensions/Blocks/nodes/BlockContent/defaultBlockHelpers.ts b/packages/core/src/blocks/defaultBlockHelpers.ts similarity index 87% rename from packages/core/src/extensions/Blocks/nodes/BlockContent/defaultBlockHelpers.ts rename to packages/core/src/blocks/defaultBlockHelpers.ts index b5ade2c570..7f479a141e 100644 --- a/packages/core/src/extensions/Blocks/nodes/BlockContent/defaultBlockHelpers.ts +++ b/packages/core/src/blocks/defaultBlockHelpers.ts @@ -1,9 +1,9 @@ -import { BlockNoteEditor } from "../../../../BlockNoteEditor"; -import { blockToNode } from "../../../../api/nodeConversions/nodeConversions"; -import { mergeCSSClasses } from "../../../../shared/utils"; -import { Block, BlockSchema } from "../../api/blocks/types"; -import { InlineContentSchema } from "../../api/inlineContent/types"; -import { StyleSchema } from "../../api/styles/types"; +import { BlockNoteEditor } from "../editor/BlockNoteEditor"; +import { blockToNode } from "../api/nodeConversions/nodeConversions"; +import { Block, BlockSchema } from "../schema/blocks/types"; +import { InlineContentSchema } from "../schema/inlineContent/types"; +import { StyleSchema } from "../schema/styles/types"; +import { mergeCSSClasses } from "../@util/browser"; // Function that creates a ProseMirror `DOMOutputSpec` for a default block. // Since all default blocks have the same structure (`blockContent` div with a diff --git a/packages/core/src/extensions/Blocks/api/defaultBlocks.ts b/packages/core/src/blocks/defaultBlocks.ts similarity index 59% rename from packages/core/src/extensions/Blocks/api/defaultBlocks.ts rename to packages/core/src/blocks/defaultBlocks.ts index dd15f12f74..166c20da66 100644 --- a/packages/core/src/extensions/Blocks/api/defaultBlocks.ts +++ b/packages/core/src/blocks/defaultBlocks.ts @@ -3,23 +3,23 @@ import Code from "@tiptap/extension-code"; import Italic from "@tiptap/extension-italic"; import Strike from "@tiptap/extension-strike"; import Underline from "@tiptap/extension-underline"; -import { BackgroundColor } from "../../BackgroundColor/BackgroundColorMark"; -import { TextColor } from "../../TextColor/TextColorMark"; -import { Heading } from "../nodes/BlockContent/HeadingBlockContent/HeadingBlockContent"; -import { Image } from "../nodes/BlockContent/ImageBlockContent/ImageBlockContent"; -import { BulletListItem } from "../nodes/BlockContent/ListItemBlockContent/BulletListItemBlockContent/BulletListItemBlockContent"; -import { NumberedListItem } from "../nodes/BlockContent/ListItemBlockContent/NumberedListItemBlockContent/NumberedListItemBlockContent"; -import { Paragraph } from "../nodes/BlockContent/ParagraphBlockContent/ParagraphBlockContent"; -import { Table } from "../nodes/BlockContent/TableBlockContent/TableBlockContent"; -import { getBlockSchemaFromSpecs } from "./blocks/internal"; -import { BlockSpecs } from "./blocks/types"; -import { getInlineContentSchemaFromSpecs } from "./inlineContent/internal"; -import { InlineContentSpecs } from "./inlineContent/types"; +import { getBlockSchemaFromSpecs } from "../schema/blocks/internal"; +import { BlockSpecs } from "../schema/blocks/types"; +import { getInlineContentSchemaFromSpecs } from "../schema/inlineContent/internal"; +import { InlineContentSpecs } from "../schema/inlineContent/types"; import { createStyleSpecFromTipTapMark, getStyleSchemaFromSpecs, -} from "./styles/internal"; -import { StyleSpecs } from "./styles/types"; +} from "../schema/styles/internal"; +import { StyleSpecs } from "../schema/styles/types"; +import { BackgroundColor } from "../extensions/BackgroundColor/BackgroundColorMark"; +import { TextColor } from "../extensions/TextColor/TextColorMark"; +import { Heading } from "./HeadingBlockContent/HeadingBlockContent"; +import { Image } from "./ImageBlockContent/ImageBlockContent"; +import { BulletListItem } from "./ListItemBlockContent/BulletListItemBlockContent/BulletListItemBlockContent"; +import { NumberedListItem } from "./ListItemBlockContent/NumberedListItemBlockContent/NumberedListItemBlockContent"; +import { Paragraph } from "./ParagraphBlockContent/ParagraphBlockContent"; +import { Table } from "./TableBlockContent/TableBlockContent"; export const defaultBlockSpecs = { paragraph: Paragraph, diff --git a/packages/core/src/extensions/Blocks/api/defaultProps.ts b/packages/core/src/blocks/defaultProps.ts similarity index 90% rename from packages/core/src/extensions/Blocks/api/defaultProps.ts rename to packages/core/src/blocks/defaultProps.ts index 43f36d7a6b..70ebd770cf 100644 --- a/packages/core/src/extensions/Blocks/api/defaultProps.ts +++ b/packages/core/src/blocks/defaultProps.ts @@ -1,4 +1,4 @@ -import { Props, PropSchema } from "./blocks/types"; +import { Props, PropSchema } from "../schema/blocks/types"; export const defaultProps = { backgroundColor: { diff --git a/packages/core/src/extensions/Blocks/nodes/Block.css b/packages/core/src/editor/Block.css similarity index 100% rename from packages/core/src/extensions/Blocks/nodes/Block.css rename to packages/core/src/editor/Block.css diff --git a/packages/core/src/BlockNoteEditor.test.ts b/packages/core/src/editor/BlockNoteEditor.test.ts similarity index 80% rename from packages/core/src/BlockNoteEditor.test.ts rename to packages/core/src/editor/BlockNoteEditor.test.ts index f295c76fab..b4c1e26558 100644 --- a/packages/core/src/BlockNoteEditor.test.ts +++ b/packages/core/src/editor/BlockNoteEditor.test.ts @@ -1,6 +1,6 @@ import { expect, it } from "vitest"; import { BlockNoteEditor } from "./BlockNoteEditor"; -import { getBlockInfoFromPos } from "./extensions/Blocks/helpers/getBlockInfoFromPos"; +import { getBlockInfoFromPos } from "../api/getBlockInfoFromPos"; /** * @vitest-environment jsdom diff --git a/packages/core/src/BlockNoteEditor.ts b/packages/core/src/editor/BlockNoteEditor.ts similarity index 94% rename from packages/core/src/BlockNoteEditor.ts rename to packages/core/src/editor/BlockNoteEditor.ts index 6cda27b315..fe63398e1e 100644 --- a/packages/core/src/BlockNoteEditor.ts +++ b/packages/core/src/editor/BlockNoteEditor.ts @@ -9,12 +9,23 @@ import { removeBlocks, replaceBlocks, updateBlock, -} from "./api/blockManipulation/blockManipulation"; +} from "../api/blockManipulation/blockManipulation"; import { blockToNode, nodeToBlock, -} from "./api/nodeConversions/nodeConversions"; -import { getNodeById } from "./api/util/nodeUtil"; +} from "../api/nodeConversions/nodeConversions"; +import { getNodeById } from "../api/nodeUtil"; +import { + DefaultBlockSchema, + DefaultInlineContentSchema, + DefaultStyleSchema, + defaultBlockSchema, + defaultBlockSpecs, + defaultInlineContentSpecs, + defaultStyleSpecs, +} from "../blocks/defaultBlocks"; +import { Selection } from "./selectionTypes"; +import { getBlockInfoFromPos } from "../api/getBlockInfoFromPos"; import { Block, BlockIdentifier, @@ -24,52 +35,42 @@ import { BlockSchemaWithBlock, BlockSpecs, PartialBlock, -} from "./extensions/Blocks/api/blocks/types"; -import { - DefaultBlockSchema, - DefaultInlineContentSchema, - DefaultStyleSchema, - defaultBlockSchema, - defaultBlockSpecs, - defaultInlineContentSpecs, - defaultStyleSpecs, -} from "./extensions/Blocks/api/defaultBlocks"; -import { Selection } from "./extensions/Blocks/api/selectionTypes"; +} from "../schema/blocks/types"; import { StyleSchema, StyleSchemaFromSpecs, StyleSpecs, Styles, -} from "./extensions/Blocks/api/styles/types"; -import { getBlockInfoFromPos } from "./extensions/Blocks/helpers/getBlockInfoFromPos"; +} from "../schema/styles/types"; import "prosemirror-tables/style/tables.css"; -import { createExternalHTMLExporter } from "./api/exporters/html/externalHTMLExporter"; -import { blocksToMarkdown } from "./api/exporters/markdown/markdownExporter"; -import { HTMLToBlocks } from "./api/parsers/html/parseHTML"; -import { markdownToBlocks } from "./api/parsers/markdown/parseMarkdown"; +import { createExternalHTMLExporter } from "../api/exporters/html/externalHTMLExporter"; +import { blocksToMarkdown } from "../api/exporters/markdown/markdownExporter"; +import { HTMLToBlocks } from "../api/parsers/html/parseHTML"; +import { markdownToBlocks } from "../api/parsers/markdown/parseMarkdown"; import "./editor.css"; -import { getBlockSchemaFromSpecs } from "./extensions/Blocks/api/blocks/internal"; -import { TextCursorPosition } from "./extensions/Blocks/api/cursorPositionTypes"; -import { getInlineContentSchemaFromSpecs } from "./extensions/Blocks/api/inlineContent/internal"; +import { TextCursorPosition } from "./cursorPositionTypes"; +import { FormattingToolbarProsemirrorPlugin } from "../extensions/FormattingToolbar/FormattingToolbarPlugin"; +import { HyperlinkToolbarProsemirrorPlugin } from "../extensions/HyperlinkToolbar/HyperlinkToolbarPlugin"; +import { ImageToolbarProsemirrorPlugin } from "../extensions/ImageToolbar/ImageToolbarPlugin"; +import { SideMenuProsemirrorPlugin } from "../extensions/SideMenu/SideMenuPlugin"; +import { BaseSlashMenuItem } from "../extensions/SlashMenu/BaseSlashMenuItem"; +import { SlashMenuProsemirrorPlugin } from "../extensions/SlashMenu/SlashMenuPlugin"; +import { getDefaultSlashMenuItems } from "../extensions/SlashMenu/defaultSlashMenuItems"; +import { TableHandlesProsemirrorPlugin } from "../extensions/TableHandles/TableHandlesPlugin"; +import { UniqueID } from "../extensions/UniqueID/UniqueID"; +import { getBlockSchemaFromSpecs } from "../schema/blocks/internal"; +import { getInlineContentSchemaFromSpecs } from "../schema/inlineContent/internal"; import { InlineContentSchema, InlineContentSchemaFromSpecs, InlineContentSpecs, -} from "./extensions/Blocks/api/inlineContent/types"; -import { getStyleSchemaFromSpecs } from "./extensions/Blocks/api/styles/internal"; -import { FormattingToolbarProsemirrorPlugin } from "./extensions/FormattingToolbar/FormattingToolbarPlugin"; -import { HyperlinkToolbarProsemirrorPlugin } from "./extensions/HyperlinkToolbar/HyperlinkToolbarPlugin"; -import { ImageToolbarProsemirrorPlugin } from "./extensions/ImageToolbar/ImageToolbarPlugin"; -import { SideMenuProsemirrorPlugin } from "./extensions/SideMenu/SideMenuPlugin"; -import { BaseSlashMenuItem } from "./extensions/SlashMenu/BaseSlashMenuItem"; -import { SlashMenuProsemirrorPlugin } from "./extensions/SlashMenu/SlashMenuPlugin"; -import { getDefaultSlashMenuItems } from "./extensions/SlashMenu/defaultSlashMenuItems"; -import { TableHandlesProsemirrorPlugin } from "./extensions/TableHandles/TableHandlesPlugin"; -import { UniqueID } from "./extensions/UniqueID/UniqueID"; -import { UnreachableCaseError, mergeCSSClasses } from "./shared/utils"; +} from "../schema/inlineContent/types"; +import { getStyleSchemaFromSpecs } from "../schema/styles/internal"; +import { mergeCSSClasses } from "../@util/browser"; import { transformPasted } from "./transformPasted"; +import {UnreachableCaseError} from "../@util/typescript"; export type BlockNoteEditorOptions< BSpecs extends BlockSpecs, diff --git a/packages/core/src/BlockNoteExtensions.ts b/packages/core/src/editor/BlockNoteExtensions.ts similarity index 84% rename from packages/core/src/BlockNoteExtensions.ts rename to packages/core/src/editor/BlockNoteExtensions.ts index e7c52358fd..1d58f3b76f 100644 --- a/packages/core/src/BlockNoteExtensions.ts +++ b/packages/core/src/editor/BlockNoteExtensions.ts @@ -11,25 +11,25 @@ import { History } from "@tiptap/extension-history"; import { Link } from "@tiptap/extension-link"; import { Text } from "@tiptap/extension-text"; import * as Y from "yjs"; -import { createCopyToClipboardExtension } from "./api/exporters/copyExtension"; -import { createPasteFromClipboardExtension } from "./api/parsers/pasteExtension"; -import { BackgroundColorExtension } from "./extensions/BackgroundColor/BackgroundColorExtension"; -import { BlockContainer, BlockGroup, Doc } from "./extensions/Blocks"; +import { createCopyToClipboardExtension } from "../api/exporters/copyExtension"; +import { createPasteFromClipboardExtension } from "../api/parsers/pasteExtension"; +import { BackgroundColorExtension } from "../extensions/BackgroundColor/BackgroundColorExtension"; +import { BlockContainer, BlockGroup, Doc } from "../pm-nodes"; +import { Placeholder } from "../extensions/Placeholder/PlaceholderExtension"; +import { TextAlignmentExtension } from "../extensions/TextAlignment/TextAlignmentExtension"; +import { TextColorExtension } from "../extensions/TextColor/TextColorExtension"; +import { TrailingNode } from "../extensions/TrailingNode/TrailingNodeExtension"; +import UniqueID from "../extensions/UniqueID/UniqueID"; import { BlockNoteDOMAttributes, BlockSchema, BlockSpecs, -} from "./extensions/Blocks/api/blocks/types"; +} from "../schema/blocks/types"; import { InlineContentSchema, InlineContentSpecs, -} from "./extensions/Blocks/api/inlineContent/types"; -import { StyleSchema, StyleSpecs } from "./extensions/Blocks/api/styles/types"; -import { Placeholder } from "./extensions/Placeholder/PlaceholderExtension"; -import { TextAlignmentExtension } from "./extensions/TextAlignment/TextAlignmentExtension"; -import { TextColorExtension } from "./extensions/TextColor/TextColorExtension"; -import { TrailingNode } from "./extensions/TrailingNode/TrailingNodeExtension"; -import UniqueID from "./extensions/UniqueID/UniqueID"; +} from "../schema/inlineContent/types"; +import { StyleSchema, StyleSpecs } from "../schema/styles/types"; /** * Get all the Tiptap extensions BlockNote is configured with by default diff --git a/packages/core/src/editor/README.md b/packages/core/src/editor/README.md new file mode 100644 index 0000000000..f87722a4e9 --- /dev/null +++ b/packages/core/src/editor/README.md @@ -0,0 +1,3 @@ +### @blocknote/core/src/editor + +Contains main functions to set up the editor \ No newline at end of file diff --git a/packages/core/src/extensions/Blocks/api/cursorPositionTypes.ts b/packages/core/src/editor/cursorPositionTypes.ts similarity index 58% rename from packages/core/src/extensions/Blocks/api/cursorPositionTypes.ts rename to packages/core/src/editor/cursorPositionTypes.ts index ce21cda6f4..be6435d742 100644 --- a/packages/core/src/extensions/Blocks/api/cursorPositionTypes.ts +++ b/packages/core/src/editor/cursorPositionTypes.ts @@ -1,6 +1,6 @@ -import { Block, BlockSchema } from "./blocks/types"; -import { InlineContentSchema } from "./inlineContent/types"; -import { StyleSchema } from "./styles/types"; +import { Block, BlockSchema } from "../schema/blocks/types"; +import { InlineContentSchema } from "../schema/inlineContent/types"; +import { StyleSchema } from "../schema/styles/types"; export type TextCursorPosition< BSchema extends BlockSchema, diff --git a/packages/core/src/editor.css b/packages/core/src/editor/editor.css similarity index 98% rename from packages/core/src/editor.css rename to packages/core/src/editor/editor.css index 2dac0db661..9e5761a45b 100644 --- a/packages/core/src/editor.css +++ b/packages/core/src/editor/editor.css @@ -1,4 +1,4 @@ -@import url("./assets/fonts-inter.css"); +@import url("../assets/fonts-inter.css"); .bn-editor { outline: none; diff --git a/packages/core/src/editor/selectionTypes.ts b/packages/core/src/editor/selectionTypes.ts new file mode 100644 index 0000000000..b79da970fc --- /dev/null +++ b/packages/core/src/editor/selectionTypes.ts @@ -0,0 +1,11 @@ +import { Block, BlockSchema } from "../schema/blocks/types"; +import { InlineContentSchema } from "../schema/inlineContent/types"; +import { StyleSchema } from "../schema/styles/types"; + +export type Selection< + BSchema extends BlockSchema, + I extends InlineContentSchema, + S extends StyleSchema +> = { + blocks: Block[]; +}; diff --git a/packages/core/src/transformPasted.ts b/packages/core/src/editor/transformPasted.ts similarity index 100% rename from packages/core/src/transformPasted.ts rename to packages/core/src/editor/transformPasted.ts diff --git a/packages/core/src/shared/BaseUiElementTypes.ts b/packages/core/src/extensions/@util/BaseUiElementTypes.ts similarity index 100% rename from packages/core/src/shared/BaseUiElementTypes.ts rename to packages/core/src/extensions/@util/BaseUiElementTypes.ts diff --git a/packages/core/src/shared/plugins/suggestion/SuggestionItem.ts b/packages/core/src/extensions/@util/suggestion/SuggestionItem.ts similarity index 100% rename from packages/core/src/shared/plugins/suggestion/SuggestionItem.ts rename to packages/core/src/extensions/@util/suggestion/SuggestionItem.ts diff --git a/packages/core/src/shared/plugins/suggestion/SuggestionPlugin.ts b/packages/core/src/extensions/@util/suggestion/SuggestionPlugin.ts similarity index 97% rename from packages/core/src/shared/plugins/suggestion/SuggestionPlugin.ts rename to packages/core/src/extensions/@util/suggestion/SuggestionPlugin.ts index 480d935db3..411c63f3cc 100644 --- a/packages/core/src/shared/plugins/suggestion/SuggestionPlugin.ts +++ b/packages/core/src/extensions/@util/suggestion/SuggestionPlugin.ts @@ -1,12 +1,16 @@ import { EditorState, Plugin, PluginKey } from "prosemirror-state"; import { Decoration, DecorationSet, EditorView } from "prosemirror-view"; -import { BlockNoteEditor } from "../../../BlockNoteEditor"; -import { BlockSchema } from "../../../extensions/Blocks/api/blocks/types"; -import { InlineContentSchema } from "../../../extensions/Blocks/api/inlineContent/types"; -import { StyleSchema } from "../../../extensions/Blocks/api/styles/types"; -import { findBlock } from "../../../extensions/Blocks/helpers/findBlock"; -import { BaseUiElementState } from "../../BaseUiElementTypes"; +import { BlockNoteEditor } from "../../../editor/BlockNoteEditor"; +import { BlockSchema } from "../../../schema/blocks/types"; +import { InlineContentSchema } from "../../../schema/inlineContent/types"; +import { StyleSchema } from "../../../schema/styles/types"; +import { BaseUiElementState } from "../BaseUiElementTypes"; import { SuggestionItem } from "./SuggestionItem"; +import {findParentNode} from "@tiptap/core"; + +const findBlock = findParentNode( + (node) => node.type.name === "blockContainer" +); export type SuggestionsMenuState = BaseUiElementState & { diff --git a/packages/core/src/extensions/BackgroundColor/BackgroundColorExtension.ts b/packages/core/src/extensions/BackgroundColor/BackgroundColorExtension.ts index 3f24ecdfea..3f74150ec0 100644 --- a/packages/core/src/extensions/BackgroundColor/BackgroundColorExtension.ts +++ b/packages/core/src/extensions/BackgroundColor/BackgroundColorExtension.ts @@ -1,5 +1,5 @@ import { Extension } from "@tiptap/core"; -import { defaultProps } from "../Blocks/api/defaultProps"; +import { defaultProps } from "../../blocks/defaultProps"; export const BackgroundColorExtension = Extension.create({ name: "blockBackgroundColor", diff --git a/packages/core/src/extensions/BackgroundColor/BackgroundColorMark.ts b/packages/core/src/extensions/BackgroundColor/BackgroundColorMark.ts index df4b257588..857e083dbf 100644 --- a/packages/core/src/extensions/BackgroundColor/BackgroundColorMark.ts +++ b/packages/core/src/extensions/BackgroundColor/BackgroundColorMark.ts @@ -1,5 +1,5 @@ import { Mark } from "@tiptap/core"; -import { createStyleSpecFromTipTapMark } from "../Blocks/api/styles/internal"; +import { createStyleSpecFromTipTapMark } from "../../schema/styles/internal"; const BackgroundColorMark = Mark.create({ name: "backgroundColor", diff --git a/packages/core/src/extensions/Blocks/api/selectionTypes.ts b/packages/core/src/extensions/Blocks/api/selectionTypes.ts deleted file mode 100644 index 61d8086ed4..0000000000 --- a/packages/core/src/extensions/Blocks/api/selectionTypes.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { Block, BlockSchema } from "./blocks/types"; -import { InlineContentSchema } from "./inlineContent/types"; -import { StyleSchema } from "./styles/types"; - -export type Selection< - BSchema extends BlockSchema, - I extends InlineContentSchema, - S extends StyleSchema -> = { - blocks: Block[]; -}; diff --git a/packages/core/src/extensions/Blocks/helpers/findBlock.ts b/packages/core/src/extensions/Blocks/helpers/findBlock.ts deleted file mode 100644 index 8aa24cc90c..0000000000 --- a/packages/core/src/extensions/Blocks/helpers/findBlock.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { findParentNode } from "@tiptap/core"; - -export const findBlock = findParentNode( - (node) => node.type.name === "blockContainer" -); diff --git a/packages/core/src/extensions/Blocks/index.ts b/packages/core/src/extensions/Blocks/index.ts deleted file mode 100644 index 4df0534a64..0000000000 --- a/packages/core/src/extensions/Blocks/index.ts +++ /dev/null @@ -1,8 +0,0 @@ -import { Node } from "@tiptap/core"; -export { BlockContainer } from "./nodes/BlockContainer"; -export { BlockGroup } from "./nodes/BlockGroup"; -export const Doc = Node.create({ - name: "doc", - topNode: true, - content: "blockGroup", -}); diff --git a/packages/core/src/extensions/Blocks/nodes/BlockAttributes.ts b/packages/core/src/extensions/Blocks/nodes/BlockAttributes.ts deleted file mode 100644 index 4109c7bb6e..0000000000 --- a/packages/core/src/extensions/Blocks/nodes/BlockAttributes.ts +++ /dev/null @@ -1,10 +0,0 @@ -// Object containing all possible block attributes. -const BlockAttributes: Record = { - blockColor: "data-block-color", - blockStyle: "data-block-style", - id: "data-id", - depth: "data-depth", - depthChange: "data-depth-change", -}; - -export default BlockAttributes; diff --git a/packages/core/src/extensions/FormattingToolbar/FormattingToolbarPlugin.ts b/packages/core/src/extensions/FormattingToolbar/FormattingToolbarPlugin.ts index 645d90b59b..5e66ddfc51 100644 --- a/packages/core/src/extensions/FormattingToolbar/FormattingToolbarPlugin.ts +++ b/packages/core/src/extensions/FormattingToolbar/FormattingToolbarPlugin.ts @@ -2,15 +2,15 @@ import { isNodeSelection, posToDOMRect } from "@tiptap/core"; import { EditorState, Plugin, PluginKey } from "prosemirror-state"; import { EditorView } from "prosemirror-view"; -import { BlockNoteEditor } from "../../BlockNoteEditor"; +import { BlockNoteEditor } from "../../editor/BlockNoteEditor"; +import { BlockSchema } from "../../schema/blocks/types"; +import { InlineContentSchema } from "../../schema/inlineContent/types"; +import { StyleSchema } from "../../schema/styles/types"; import { BaseUiElementCallbacks, BaseUiElementState, -} from "../../shared/BaseUiElementTypes"; -import { EventEmitter } from "../../shared/EventEmitter"; -import { BlockSchema } from "../Blocks/api/blocks/types"; -import { InlineContentSchema } from "../Blocks/api/inlineContent/types"; -import { StyleSchema } from "../Blocks/api/styles/types"; +} from "../@util/BaseUiElementTypes"; +import { EventEmitter } from "../../@util/EventEmitter"; export type FormattingToolbarCallbacks = BaseUiElementCallbacks; diff --git a/packages/core/src/extensions/HyperlinkToolbar/HyperlinkToolbarPlugin.ts b/packages/core/src/extensions/HyperlinkToolbar/HyperlinkToolbarPlugin.ts index abdd1f4cab..be0223e630 100644 --- a/packages/core/src/extensions/HyperlinkToolbar/HyperlinkToolbarPlugin.ts +++ b/packages/core/src/extensions/HyperlinkToolbar/HyperlinkToolbarPlugin.ts @@ -2,12 +2,12 @@ import { getMarkRange, posToDOMRect, Range } from "@tiptap/core"; import { EditorView } from "@tiptap/pm/view"; import { Mark } from "prosemirror-model"; import { Plugin, PluginKey } from "prosemirror-state"; -import { BlockNoteEditor } from "../../BlockNoteEditor"; -import { BaseUiElementState } from "../../shared/BaseUiElementTypes"; -import { EventEmitter } from "../../shared/EventEmitter"; -import { BlockSchema } from "../Blocks/api/blocks/types"; -import { InlineContentSchema } from "../Blocks/api/inlineContent/types"; -import { StyleSchema } from "../Blocks/api/styles/types"; +import { BlockNoteEditor } from "../../editor/BlockNoteEditor"; +import { BlockSchema } from "../../schema/blocks/types"; +import { InlineContentSchema } from "../../schema/inlineContent/types"; +import { StyleSchema } from "../../schema/styles/types"; +import { BaseUiElementState } from "../@util/BaseUiElementTypes"; +import { EventEmitter } from "../../@util/EventEmitter"; export type HyperlinkToolbarState = BaseUiElementState & { // The hovered hyperlink's URL, and the text it's displayed with in the diff --git a/packages/core/src/extensions/ImageToolbar/ImageToolbarPlugin.ts b/packages/core/src/extensions/ImageToolbar/ImageToolbarPlugin.ts index 9ecb162d3a..83baa43827 100644 --- a/packages/core/src/extensions/ImageToolbar/ImageToolbarPlugin.ts +++ b/packages/core/src/extensions/ImageToolbar/ImageToolbarPlugin.ts @@ -1,15 +1,15 @@ import { EditorState, Plugin, PluginKey } from "prosemirror-state"; import { EditorView } from "prosemirror-view"; -import { BlockNoteEditor } from "../../BlockNoteEditor"; +import { BlockNoteEditor } from "../../editor/BlockNoteEditor"; +import { BlockSchema, SpecificBlock } from "../../schema"; +import { InlineContentSchema } from "../../schema"; +import { StyleSchema } from "../../schema"; import { BaseUiElementCallbacks, BaseUiElementState, -} from "../../shared/BaseUiElementTypes"; -import { EventEmitter } from "../../shared/EventEmitter"; -import { BlockSchema, SpecificBlock } from "../Blocks/api/blocks/types"; -import { InlineContentSchema } from "../Blocks/api/inlineContent/types"; -import { StyleSchema } from "../Blocks/api/styles/types"; +} from "../@util/BaseUiElementTypes"; +import { EventEmitter } from "../../@util/EventEmitter"; export type ImageToolbarCallbacks = BaseUiElementCallbacks; export type ImageToolbarState< diff --git a/packages/core/src/extensions/Blocks/NonEditableBlockPlugin.ts b/packages/core/src/extensions/NonEditableBlocks/NonEditableBlockPlugin.ts similarity index 100% rename from packages/core/src/extensions/Blocks/NonEditableBlockPlugin.ts rename to packages/core/src/extensions/NonEditableBlocks/NonEditableBlockPlugin.ts diff --git a/packages/core/src/extensions/Blocks/PreviousBlockTypePlugin.ts b/packages/core/src/extensions/PreviousBlockType/PreviousBlockTypePlugin.ts similarity index 100% rename from packages/core/src/extensions/Blocks/PreviousBlockTypePlugin.ts rename to packages/core/src/extensions/PreviousBlockType/PreviousBlockTypePlugin.ts diff --git a/packages/core/src/extensions/README.md b/packages/core/src/extensions/README.md new file mode 100644 index 0000000000..9272867e4f --- /dev/null +++ b/packages/core/src/extensions/README.md @@ -0,0 +1,3 @@ +### @blocknote/core/src/extensions + +All extra extensions for TipTap / Prosemirror needed to implement the Prosemirror UX and editor behavior. \ No newline at end of file diff --git a/packages/core/src/extensions/SideMenu/SideMenuPlugin.ts b/packages/core/src/extensions/SideMenu/SideMenuPlugin.ts index ed87b5df07..b111b83ea4 100644 --- a/packages/core/src/extensions/SideMenu/SideMenuPlugin.ts +++ b/packages/core/src/extensions/SideMenu/SideMenuPlugin.ts @@ -2,16 +2,16 @@ import { PluginView } from "@tiptap/pm/state"; import { Node } from "prosemirror-model"; import { NodeSelection, Plugin, PluginKey, Selection } from "prosemirror-state"; import { EditorView } from "prosemirror-view"; -import { BlockNoteEditor } from "../../BlockNoteEditor"; +import { BlockNoteEditor } from "../../editor/BlockNoteEditor"; import { createExternalHTMLExporter } from "../../api/exporters/html/externalHTMLExporter"; import { createInternalHTMLSerializer } from "../../api/exporters/html/internalHTMLSerializer"; import { cleanHTMLToMarkdown } from "../../api/exporters/markdown/markdownExporter"; -import { BaseUiElementState } from "../../shared/BaseUiElementTypes"; -import { EventEmitter } from "../../shared/EventEmitter"; -import { Block, BlockSchema } from "../Blocks/api/blocks/types"; -import { InlineContentSchema } from "../Blocks/api/inlineContent/types"; -import { StyleSchema } from "../Blocks/api/styles/types"; -import { getBlockInfoFromPos } from "../Blocks/helpers/getBlockInfoFromPos"; +import { Block, BlockSchema } from "../../schema/blocks/types"; +import { InlineContentSchema } from "../../schema/inlineContent/types"; +import { StyleSchema } from "../../schema/styles/types"; +import { BaseUiElementState } from "../@util/BaseUiElementTypes"; +import { EventEmitter } from "../../@util/EventEmitter"; +import { getBlockInfoFromPos } from "../../api/getBlockInfoFromPos"; import { slashMenuPluginKey } from "../SlashMenu/SlashMenuPlugin"; import { MultipleNodeSelection } from "./MultipleNodeSelection"; diff --git a/packages/core/src/extensions/SlashMenu/BaseSlashMenuItem.ts b/packages/core/src/extensions/SlashMenu/BaseSlashMenuItem.ts index 6bcfd8c361..5910ea0a13 100644 --- a/packages/core/src/extensions/SlashMenu/BaseSlashMenuItem.ts +++ b/packages/core/src/extensions/SlashMenu/BaseSlashMenuItem.ts @@ -1,8 +1,8 @@ -import { BlockNoteEditor } from "../../BlockNoteEditor"; -import { SuggestionItem } from "../../shared/plugins/suggestion/SuggestionItem"; -import { BlockSchema } from "../Blocks/api/blocks/types"; -import { InlineContentSchema } from "../Blocks/api/inlineContent/types"; -import { StyleSchema } from "../Blocks/api/styles/types"; +import { BlockNoteEditor } from "../../editor/BlockNoteEditor"; +import { BlockSchema } from "../../schema/blocks/types"; +import { InlineContentSchema } from "../../schema/inlineContent/types"; +import { StyleSchema } from "../../schema/styles/types"; +import { SuggestionItem } from "../@util/suggestion/SuggestionItem"; export type BaseSlashMenuItem< BSchema extends BlockSchema, diff --git a/packages/core/src/extensions/SlashMenu/SlashMenuPlugin.ts b/packages/core/src/extensions/SlashMenu/SlashMenuPlugin.ts index 67aec3cdb0..d9e50de47f 100644 --- a/packages/core/src/extensions/SlashMenu/SlashMenuPlugin.ts +++ b/packages/core/src/extensions/SlashMenu/SlashMenuPlugin.ts @@ -1,14 +1,14 @@ import { Plugin, PluginKey } from "prosemirror-state"; -import { BlockNoteEditor } from "../../BlockNoteEditor"; -import { EventEmitter } from "../../shared/EventEmitter"; +import { BlockNoteEditor } from "../../editor/BlockNoteEditor"; +import { BlockSchema } from "../../schema/blocks/types"; +import { InlineContentSchema } from "../../schema/inlineContent/types"; +import { StyleSchema } from "../../schema/styles/types"; +import { EventEmitter } from "../../@util/EventEmitter"; import { SuggestionsMenuState, setupSuggestionsMenu, -} from "../../shared/plugins/suggestion/SuggestionPlugin"; -import { BlockSchema } from "../Blocks/api/blocks/types"; -import { InlineContentSchema } from "../Blocks/api/inlineContent/types"; -import { StyleSchema } from "../Blocks/api/styles/types"; +} from "../@util/suggestion/SuggestionPlugin"; import { BaseSlashMenuItem } from "./BaseSlashMenuItem"; export const slashMenuPluginKey = new PluginKey("SlashMenuPlugin"); diff --git a/packages/core/src/extensions/SlashMenu/defaultSlashMenuItems.ts b/packages/core/src/extensions/SlashMenu/defaultSlashMenuItems.ts index c5f8d29e2c..76bbc6a721 100644 --- a/packages/core/src/extensions/SlashMenu/defaultSlashMenuItems.ts +++ b/packages/core/src/extensions/SlashMenu/defaultSlashMenuItems.ts @@ -1,11 +1,11 @@ -import { BlockNoteEditor } from "../../BlockNoteEditor"; -import { Block, BlockSchema, PartialBlock } from "../Blocks/api/blocks/types"; -import { defaultBlockSchema } from "../Blocks/api/defaultBlocks"; +import { BlockNoteEditor } from "../../editor/BlockNoteEditor"; +import { Block, BlockSchema, PartialBlock } from "../../schema/blocks/types"; import { InlineContentSchema, isStyledTextInlineContent, -} from "../Blocks/api/inlineContent/types"; -import { StyleSchema } from "../Blocks/api/styles/types"; +} from "../../schema/inlineContent/types"; +import { StyleSchema } from "../../schema/styles/types"; +import { defaultBlockSchema } from "../../blocks/defaultBlocks"; import { imageToolbarPluginKey } from "../ImageToolbar/ImageToolbarPlugin"; import { BaseSlashMenuItem } from "./BaseSlashMenuItem"; diff --git a/packages/core/src/extensions/TableHandles/TableHandlesPlugin.ts b/packages/core/src/extensions/TableHandles/TableHandlesPlugin.ts index f600bbf4d4..832917db4e 100644 --- a/packages/core/src/extensions/TableHandles/TableHandlesPlugin.ts +++ b/packages/core/src/extensions/TableHandles/TableHandlesPlugin.ts @@ -13,7 +13,7 @@ import { getDraggableBlockFromCoords, nodeToBlock, } from "../.."; -import { EventEmitter } from "../../shared/EventEmitter"; +import { EventEmitter } from "../../@util/EventEmitter"; let dragImageElement: HTMLElement | undefined; diff --git a/packages/core/src/extensions/TextColor/TextColorExtension.ts b/packages/core/src/extensions/TextColor/TextColorExtension.ts index 09a5d894f4..6fe0d0f810 100644 --- a/packages/core/src/extensions/TextColor/TextColorExtension.ts +++ b/packages/core/src/extensions/TextColor/TextColorExtension.ts @@ -1,5 +1,5 @@ import { Extension } from "@tiptap/core"; -import { defaultProps } from "../Blocks/api/defaultProps"; +import { defaultProps } from "../../blocks/defaultProps"; export const TextColorExtension = Extension.create({ name: "blockTextColor", diff --git a/packages/core/src/extensions/TextColor/TextColorMark.ts b/packages/core/src/extensions/TextColor/TextColorMark.ts index c18ab0b374..f57a8a7f05 100644 --- a/packages/core/src/extensions/TextColor/TextColorMark.ts +++ b/packages/core/src/extensions/TextColor/TextColorMark.ts @@ -1,5 +1,5 @@ import { Mark } from "@tiptap/core"; -import { createStyleSpecFromTipTapMark } from "../Blocks/api/styles/internal"; +import { createStyleSpecFromTipTapMark } from "../../schema/styles/internal"; const TextColorMark = Mark.create({ name: "textColor", diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 41637442bb..6939281ae8 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -1,22 +1,13 @@ -export * from "./BlockNoteEditor"; -export * from "./BlockNoteExtensions"; +export * from "./editor/BlockNoteEditor"; +export * from "./editor/BlockNoteExtensions"; export * from "./api/exporters/html/externalHTMLExporter"; export * from "./api/exporters/html/internalHTMLSerializer"; -export * from "./api/testCases/index"; -export * from "./extensions/Blocks/api/blocks/createSpec"; -export * from "./extensions/Blocks/api/blocks/internal"; -export * from "./extensions/Blocks/api/blocks/types"; -export * from "./extensions/Blocks/api/defaultBlocks"; -export * from "./extensions/Blocks/api/defaultProps"; -export * from "./extensions/Blocks/api/inlineContent/createSpec"; -export * from "./extensions/Blocks/api/inlineContent/internal"; -export * from "./extensions/Blocks/api/inlineContent/types"; -export * from "./extensions/Blocks/api/selectionTypes"; -export * from "./extensions/Blocks/api/styles/createSpec"; -export * from "./extensions/Blocks/api/styles/internal"; -export * from "./extensions/Blocks/api/styles/types"; -export * as blockStyles from "./extensions/Blocks/nodes/Block.css"; -export * from "./extensions/Blocks/nodes/BlockContent/ImageBlockContent/uploadToTmpFilesDotOrg_DEV_ONLY"; +export * from "./api/testUtil"; +export * from "./blocks/defaultBlocks"; +export * from "./blocks/defaultProps"; +export * from "./editor/selectionTypes"; +export * as blockStyles from "./editor/Block.css"; +export * from "./blocks/ImageBlockContent/uploadToTmpFilesDotOrg_DEV_ONLY"; export * from "./extensions/FormattingToolbar/FormattingToolbarPlugin"; export * from "./extensions/HyperlinkToolbar/HyperlinkToolbarPlugin"; export * from "./extensions/ImageToolbar/ImageToolbarPlugin"; @@ -25,11 +16,13 @@ export * from "./extensions/SlashMenu/BaseSlashMenuItem"; export * from "./extensions/SlashMenu/SlashMenuPlugin"; export { getDefaultSlashMenuItems } from "./extensions/SlashMenu/defaultSlashMenuItems"; export * from "./extensions/TableHandles/TableHandlesPlugin"; -export * from "./shared/BaseUiElementTypes"; -export type { SuggestionItem } from "./shared/plugins/suggestion/SuggestionItem"; -export * from "./shared/plugins/suggestion/SuggestionPlugin"; -export * from "./shared/utils"; +export * from "./schema"; +export * from "./extensions/@util/BaseUiElementTypes"; +export type { SuggestionItem } from "./extensions/@util/suggestion/SuggestionItem"; +export * from "./extensions/@util/suggestion/SuggestionPlugin"; +export * from "./@util/browser"; // for testing from react (TODO: move): export * from "./api/nodeConversions/nodeConversions"; -export * from "./api/nodeConversions/testUtil"; +export * from "./api/testUtil/partialBlockTestUtil"; export * from "./extensions/UniqueID/UniqueID"; +export {UnreachableCaseError} from "./@util/typescript"; diff --git a/packages/core/src/extensions/Blocks/nodes/BlockContainer.ts b/packages/core/src/pm-nodes/BlockContainer.ts similarity index 96% rename from packages/core/src/extensions/Blocks/nodes/BlockContainer.ts rename to packages/core/src/pm-nodes/BlockContainer.ts index bba83b4308..c3ba709306 100644 --- a/packages/core/src/extensions/Blocks/nodes/BlockContainer.ts +++ b/packages/core/src/pm-nodes/BlockContainer.ts @@ -2,24 +2,33 @@ import { Node } from "@tiptap/core"; import { Fragment, Node as PMNode, Slice } from "prosemirror-model"; import { NodeSelection, TextSelection } from "prosemirror-state"; -import { BlockNoteEditor } from "../../../BlockNoteEditor"; +import { BlockNoteEditor } from "../editor/BlockNoteEditor"; import { blockToNode, inlineContentToNodes, tableContentToNodes, -} from "../../../api/nodeConversions/nodeConversions"; -import { UnreachableCaseError, mergeCSSClasses } from "../../../shared/utils"; -import { NonEditableBlockPlugin } from "../NonEditableBlockPlugin"; -import { PreviousBlockTypePlugin } from "../PreviousBlockTypePlugin"; +} from "../api/nodeConversions/nodeConversions"; import { BlockNoteDOMAttributes, BlockSchema, PartialBlock, -} from "../api/blocks/types"; -import { InlineContentSchema } from "../api/inlineContent/types"; -import { StyleSchema } from "../api/styles/types"; -import { getBlockInfoFromPos } from "../helpers/getBlockInfoFromPos"; -import BlockAttributes from "./BlockAttributes"; +} from "../schema/blocks/types"; +import { InlineContentSchema } from "../schema/inlineContent/types"; +import { StyleSchema } from "../schema/styles/types"; +import { mergeCSSClasses } from "../@util/browser"; +import { NonEditableBlockPlugin } from "../extensions/NonEditableBlocks/NonEditableBlockPlugin"; +import { PreviousBlockTypePlugin } from "../extensions/PreviousBlockType/PreviousBlockTypePlugin"; +import { getBlockInfoFromPos } from "../api/getBlockInfoFromPos"; +import {UnreachableCaseError} from "../@util/typescript"; + +// Object containing all possible block attributes. +const BlockAttributes: Record = { + blockColor: "data-block-color", + blockStyle: "data-block-style", + id: "data-id", + depth: "data-depth", + depthChange: "data-depth-change", +}; declare module "@tiptap/core" { interface Commands { diff --git a/packages/core/src/extensions/Blocks/nodes/BlockGroup.ts b/packages/core/src/pm-nodes/BlockGroup.ts similarity index 91% rename from packages/core/src/extensions/Blocks/nodes/BlockGroup.ts rename to packages/core/src/pm-nodes/BlockGroup.ts index 88f4a3025c..4b4863e6f0 100644 --- a/packages/core/src/extensions/Blocks/nodes/BlockGroup.ts +++ b/packages/core/src/pm-nodes/BlockGroup.ts @@ -1,6 +1,6 @@ import { Node } from "@tiptap/core"; -import { mergeCSSClasses } from "../../../shared/utils"; -import { BlockNoteDOMAttributes } from "../api/blocks/types"; +import { BlockNoteDOMAttributes } from "../schema/blocks/types"; +import { mergeCSSClasses } from "../@util/browser"; export const BlockGroup = Node.create<{ domAttributes?: BlockNoteDOMAttributes; diff --git a/packages/core/src/pm-nodes/Doc.ts b/packages/core/src/pm-nodes/Doc.ts new file mode 100644 index 0000000000..69d086b5d4 --- /dev/null +++ b/packages/core/src/pm-nodes/Doc.ts @@ -0,0 +1,7 @@ +import {Node} from "@tiptap/core"; + +export const Doc = Node.create({ + name: "doc", + topNode: true, + content: "blockGroup", +}); diff --git a/packages/core/ARCHITECTURE.md b/packages/core/src/pm-nodes/README.md similarity index 93% rename from packages/core/ARCHITECTURE.md rename to packages/core/src/pm-nodes/README.md index ee07f25ea3..83ea63c6f4 100644 --- a/packages/core/ARCHITECTURE.md +++ b/packages/core/src/pm-nodes/README.md @@ -1,3 +1,8 @@ +### @blocknote/core/src/pm-nodes + +Defines the prosemirror nodes and base node structure. See below: + + # Node structure We use a Prosemirror document structure where every element is a `block` with 1 `content` element and one optional group of children (`blockgroup`). diff --git a/packages/core/src/pm-nodes/index.ts b/packages/core/src/pm-nodes/index.ts new file mode 100644 index 0000000000..bcda2eecc7 --- /dev/null +++ b/packages/core/src/pm-nodes/index.ts @@ -0,0 +1,3 @@ +export { BlockContainer } from "./BlockContainer"; +export { BlockGroup } from "./BlockGroup"; +export { Doc } from "./Doc"; \ No newline at end of file diff --git a/packages/core/src/schema/README.md b/packages/core/src/schema/README.md new file mode 100644 index 0000000000..0aaf329fa1 --- /dev/null +++ b/packages/core/src/schema/README.md @@ -0,0 +1,3 @@ +### @blocknote/core/src/schema + +The BlockNote Schema consists of Blocks, InlineContent and Styles. \ No newline at end of file diff --git a/packages/core/src/extensions/Blocks/api/blocks/createSpec.ts b/packages/core/src/schema/blocks/createSpec.ts similarity index 99% rename from packages/core/src/extensions/Blocks/api/blocks/createSpec.ts rename to packages/core/src/schema/blocks/createSpec.ts index de292f228a..7aa250869e 100644 --- a/packages/core/src/extensions/Blocks/api/blocks/createSpec.ts +++ b/packages/core/src/schema/blocks/createSpec.ts @@ -1,5 +1,5 @@ import { ParseRule } from "@tiptap/pm/model"; -import { BlockNoteEditor } from "../../../../BlockNoteEditor"; +import { BlockNoteEditor } from "../../editor/BlockNoteEditor"; import { InlineContentSchema } from "../inlineContent/types"; import { StyleSchema } from "../styles/types"; import { diff --git a/packages/core/src/extensions/Blocks/api/blocks/internal.ts b/packages/core/src/schema/blocks/internal.ts similarity index 96% rename from packages/core/src/extensions/Blocks/api/blocks/internal.ts rename to packages/core/src/schema/blocks/internal.ts index 302f23ab8f..067c5ae962 100644 --- a/packages/core/src/extensions/Blocks/api/blocks/internal.ts +++ b/packages/core/src/schema/blocks/internal.ts @@ -6,10 +6,10 @@ import { Node, NodeConfig, } from "@tiptap/core"; -import { BlockNoteEditor } from "../../../../BlockNoteEditor"; -import { mergeCSSClasses } from "../../../../shared/utils"; -import { defaultBlockToHTML } from "../../nodes/BlockContent/defaultBlockHelpers"; -import { inheritedProps } from "../defaultProps"; +import { BlockNoteEditor } from "../../editor/BlockNoteEditor"; +import { inheritedProps } from "../../blocks/defaultProps"; +import { defaultBlockToHTML } from "../../blocks/defaultBlockHelpers"; +import { mergeCSSClasses } from "../../@util/browser"; import { InlineContentSchema } from "../inlineContent/types"; import { StyleSchema } from "../styles/types"; import { @@ -18,8 +18,8 @@ import { BlockSchemaWithBlock, BlockSpec, BlockSpecs, - Props, PropSchema, + Props, SpecificBlock, TiptapBlockImplementation, } from "./types"; diff --git a/packages/core/src/extensions/Blocks/api/blocks/types.ts b/packages/core/src/schema/blocks/types.ts similarity index 99% rename from packages/core/src/extensions/Blocks/api/blocks/types.ts rename to packages/core/src/schema/blocks/types.ts index 29b4acfe79..177031b1b3 100644 --- a/packages/core/src/extensions/Blocks/api/blocks/types.ts +++ b/packages/core/src/schema/blocks/types.ts @@ -1,7 +1,7 @@ /** Define the main block types **/ import { Extension, Node } from "@tiptap/core"; -import { BlockNoteEditor } from "../../../../BlockNoteEditor"; +import { BlockNoteEditor } from "../../editor/BlockNoteEditor"; import { InlineContent, InlineContentSchema, diff --git a/packages/core/src/schema/index.ts b/packages/core/src/schema/index.ts new file mode 100644 index 0000000000..fa1c1ef4ac --- /dev/null +++ b/packages/core/src/schema/index.ts @@ -0,0 +1,9 @@ +export * from "./blocks/createSpec"; +export * from "./blocks/internal"; +export * from "./blocks/types"; +export * from "./inlineContent/createSpec"; +export * from "./inlineContent/internal"; +export * from "./inlineContent/types"; +export * from "./styles/createSpec"; +export * from "./styles/internal"; +export * from "./styles/types"; \ No newline at end of file diff --git a/packages/core/src/extensions/Blocks/api/inlineContent/createSpec.ts b/packages/core/src/schema/inlineContent/createSpec.ts similarity index 97% rename from packages/core/src/extensions/Blocks/api/inlineContent/createSpec.ts rename to packages/core/src/schema/inlineContent/createSpec.ts index 3528f080fb..102c0a7ce5 100644 --- a/packages/core/src/extensions/Blocks/api/inlineContent/createSpec.ts +++ b/packages/core/src/schema/inlineContent/createSpec.ts @@ -1,6 +1,6 @@ import { Node } from "@tiptap/core"; import { ParseRule } from "@tiptap/pm/model"; -import { nodeToCustomInlineContent } from "../../../../api/nodeConversions/nodeConversions"; +import { nodeToCustomInlineContent } from "../../api/nodeConversions/nodeConversions"; import { propsToAttributes } from "../blocks/internal"; import { Props } from "../blocks/types"; import { StyleSchema } from "../styles/types"; diff --git a/packages/core/src/extensions/Blocks/api/inlineContent/internal.ts b/packages/core/src/schema/inlineContent/internal.ts similarity index 100% rename from packages/core/src/extensions/Blocks/api/inlineContent/internal.ts rename to packages/core/src/schema/inlineContent/internal.ts diff --git a/packages/core/src/extensions/Blocks/api/inlineContent/types.ts b/packages/core/src/schema/inlineContent/types.ts similarity index 100% rename from packages/core/src/extensions/Blocks/api/inlineContent/types.ts rename to packages/core/src/schema/inlineContent/types.ts diff --git a/packages/core/src/extensions/Blocks/api/styles/createSpec.ts b/packages/core/src/schema/styles/createSpec.ts similarity index 97% rename from packages/core/src/extensions/Blocks/api/styles/createSpec.ts rename to packages/core/src/schema/styles/createSpec.ts index 49015a30df..caecabd6f4 100644 --- a/packages/core/src/extensions/Blocks/api/styles/createSpec.ts +++ b/packages/core/src/schema/styles/createSpec.ts @@ -1,12 +1,12 @@ import { Mark } from "@tiptap/core"; import { ParseRule } from "@tiptap/pm/model"; -import { UnreachableCaseError } from "../../../../shared/utils"; import { addStyleAttributes, createInternalStyleSpec, stylePropsToAttributes, } from "./internal"; import { StyleConfig, StyleSpec } from "./types"; +import {UnreachableCaseError} from "../../@util/typescript"; export type CustomStyleImplementation = { render: T["propSchema"] extends "boolean" diff --git a/packages/core/src/extensions/Blocks/api/styles/internal.ts b/packages/core/src/schema/styles/internal.ts similarity index 100% rename from packages/core/src/extensions/Blocks/api/styles/internal.ts rename to packages/core/src/schema/styles/internal.ts diff --git a/packages/core/src/extensions/Blocks/api/styles/types.ts b/packages/core/src/schema/styles/types.ts similarity index 100% rename from packages/core/src/extensions/Blocks/api/styles/types.ts rename to packages/core/src/schema/styles/types.ts diff --git a/packages/core/src/shared/EditorElement.ts b/packages/core/src/shared/EditorElement.ts deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/packages/react/src/SharedComponents/ColorPicker/components/ColorIcon.tsx b/packages/react/src/components/@shared/ColorPicker/ColorIcon.tsx similarity index 100% rename from packages/react/src/SharedComponents/ColorPicker/components/ColorIcon.tsx rename to packages/react/src/components/@shared/ColorPicker/ColorIcon.tsx diff --git a/packages/react/src/SharedComponents/ColorPicker/components/ColorPicker.tsx b/packages/react/src/components/@shared/ColorPicker/ColorPicker.tsx similarity index 100% rename from packages/react/src/SharedComponents/ColorPicker/components/ColorPicker.tsx rename to packages/react/src/components/@shared/ColorPicker/ColorPicker.tsx diff --git a/packages/react/src/SharedComponents/Toolbar/components/Toolbar.tsx b/packages/react/src/components/@shared/Toolbar/Toolbar.tsx similarity index 100% rename from packages/react/src/SharedComponents/Toolbar/components/Toolbar.tsx rename to packages/react/src/components/@shared/Toolbar/Toolbar.tsx diff --git a/packages/react/src/SharedComponents/Toolbar/components/ToolbarButton.tsx b/packages/react/src/components/@shared/Toolbar/ToolbarButton.tsx similarity index 96% rename from packages/react/src/SharedComponents/Toolbar/components/ToolbarButton.tsx rename to packages/react/src/components/@shared/Toolbar/ToolbarButton.tsx index ef55f69c1b..d964859c29 100644 --- a/packages/react/src/SharedComponents/Toolbar/components/ToolbarButton.tsx +++ b/packages/react/src/components/@shared/Toolbar/ToolbarButton.tsx @@ -1,7 +1,7 @@ import { ActionIcon, Button } from "@mantine/core"; import Tippy from "@tippyjs/react"; import { ForwardedRef, forwardRef, MouseEvent } from "react"; -import { TooltipContent } from "../../Tooltip/components/TooltipContent"; +import { TooltipContent } from "../Tooltip/TooltipContent"; import { IconType } from "react-icons"; export type ToolbarButtonProps = { diff --git a/packages/react/src/SharedComponents/Toolbar/components/ToolbarDropdown.tsx b/packages/react/src/components/@shared/Toolbar/ToolbarDropdown.tsx similarity index 100% rename from packages/react/src/SharedComponents/Toolbar/components/ToolbarDropdown.tsx rename to packages/react/src/components/@shared/Toolbar/ToolbarDropdown.tsx diff --git a/packages/react/src/SharedComponents/Toolbar/components/ToolbarDropdownItem.tsx b/packages/react/src/components/@shared/Toolbar/ToolbarDropdownItem.tsx similarity index 100% rename from packages/react/src/SharedComponents/Toolbar/components/ToolbarDropdownItem.tsx rename to packages/react/src/components/@shared/Toolbar/ToolbarDropdownItem.tsx diff --git a/packages/react/src/SharedComponents/Toolbar/components/ToolbarDropdownTarget.tsx b/packages/react/src/components/@shared/Toolbar/ToolbarDropdownTarget.tsx similarity index 100% rename from packages/react/src/SharedComponents/Toolbar/components/ToolbarDropdownTarget.tsx rename to packages/react/src/components/@shared/Toolbar/ToolbarDropdownTarget.tsx diff --git a/packages/react/src/SharedComponents/Toolbar/components/ToolbarInputDropdown.tsx b/packages/react/src/components/@shared/Toolbar/ToolbarInputDropdown.tsx similarity index 100% rename from packages/react/src/SharedComponents/Toolbar/components/ToolbarInputDropdown.tsx rename to packages/react/src/components/@shared/Toolbar/ToolbarInputDropdown.tsx diff --git a/packages/react/src/SharedComponents/Toolbar/components/ToolbarInputDropdownButton.tsx b/packages/react/src/components/@shared/Toolbar/ToolbarInputDropdownButton.tsx similarity index 100% rename from packages/react/src/SharedComponents/Toolbar/components/ToolbarInputDropdownButton.tsx rename to packages/react/src/components/@shared/Toolbar/ToolbarInputDropdownButton.tsx diff --git a/packages/react/src/SharedComponents/Toolbar/components/ToolbarInputDropdownItem.tsx b/packages/react/src/components/@shared/Toolbar/ToolbarInputDropdownItem.tsx similarity index 100% rename from packages/react/src/SharedComponents/Toolbar/components/ToolbarInputDropdownItem.tsx rename to packages/react/src/components/@shared/Toolbar/ToolbarInputDropdownItem.tsx diff --git a/packages/react/src/SharedComponents/Tooltip/components/TooltipContent.tsx b/packages/react/src/components/@shared/Tooltip/TooltipContent.tsx similarity index 100% rename from packages/react/src/SharedComponents/Tooltip/components/TooltipContent.tsx rename to packages/react/src/components/@shared/Tooltip/TooltipContent.tsx diff --git a/packages/react/src/FormattingToolbar/components/DefaultButtons/ColorStyleButton.tsx b/packages/react/src/components/FormattingToolbar/DefaultButtons/ColorStyleButton.tsx similarity index 90% rename from packages/react/src/FormattingToolbar/components/DefaultButtons/ColorStyleButton.tsx rename to packages/react/src/components/FormattingToolbar/DefaultButtons/ColorStyleButton.tsx index 65c5c068a8..b9446f7bca 100644 --- a/packages/react/src/FormattingToolbar/components/DefaultButtons/ColorStyleButton.tsx +++ b/packages/react/src/components/FormattingToolbar/DefaultButtons/ColorStyleButton.tsx @@ -7,9 +7,9 @@ import { import { Menu } from "@mantine/core"; import { useCallback, useMemo, useState } from "react"; -import { ColorIcon } from "../../../SharedComponents/ColorPicker/components/ColorIcon"; -import { ColorPicker } from "../../../SharedComponents/ColorPicker/components/ColorPicker"; -import { ToolbarButton } from "../../../SharedComponents/Toolbar/components/ToolbarButton"; +import { ColorIcon } from "../../@shared/ColorPicker/ColorIcon"; +import { ColorPicker } from "../../@shared/ColorPicker/ColorPicker"; +import { ToolbarButton } from "../../@shared/Toolbar/ToolbarButton"; import { useEditorChange } from "../../../hooks/useEditorChange"; import { usePreventMenuOverflow } from "../../../hooks/usePreventMenuOverflow"; import { useSelectedBlocks } from "../../../hooks/useSelectedBlocks"; diff --git a/packages/react/src/FormattingToolbar/components/DefaultButtons/CreateLinkButton.tsx b/packages/react/src/components/FormattingToolbar/DefaultButtons/CreateLinkButton.tsx similarity index 79% rename from packages/react/src/FormattingToolbar/components/DefaultButtons/CreateLinkButton.tsx rename to packages/react/src/components/FormattingToolbar/DefaultButtons/CreateLinkButton.tsx index 188a3bf32c..15867b008a 100644 --- a/packages/react/src/FormattingToolbar/components/DefaultButtons/CreateLinkButton.tsx +++ b/packages/react/src/components/FormattingToolbar/DefaultButtons/CreateLinkButton.tsx @@ -2,12 +2,12 @@ import { useCallback, useMemo, useState } from "react"; import { BlockNoteEditor, BlockSchema } from "@blocknote/core"; import { RiLink } from "react-icons/ri"; -import { ToolbarInputDropdownButton } from "../../../SharedComponents/Toolbar/components/ToolbarInputDropdownButton"; -import { ToolbarButton } from "../../../SharedComponents/Toolbar/components/ToolbarButton"; -import { EditHyperlinkMenu } from "../../../HyperlinkToolbar/components/EditHyperlinkMenu/components/EditHyperlinkMenu"; +import { ToolbarInputDropdownButton } from "../../@shared/Toolbar/ToolbarInputDropdownButton"; +import { ToolbarButton } from "../../@shared/Toolbar/ToolbarButton"; +import { EditHyperlinkMenu } from "../../HyperlinkToolbar/EditHyperlinkMenu/components/EditHyperlinkMenu"; import { useSelectedBlocks } from "../../../hooks/useSelectedBlocks"; import { useEditorChange } from "../../../hooks/useEditorChange"; -import { formatKeyboardShortcut } from "../../../utils"; +import { formatKeyboardShortcut } from "@blocknote/core"; export const CreateLinkButton = (props: { editor: BlockNoteEditor; diff --git a/packages/react/src/FormattingToolbar/components/DefaultButtons/ImageCaptionButton.tsx b/packages/react/src/components/FormattingToolbar/DefaultButtons/ImageCaptionButton.tsx similarity index 87% rename from packages/react/src/FormattingToolbar/components/DefaultButtons/ImageCaptionButton.tsx rename to packages/react/src/components/FormattingToolbar/DefaultButtons/ImageCaptionButton.tsx index cf2dd29e2b..a806ede4b3 100644 --- a/packages/react/src/FormattingToolbar/components/DefaultButtons/ImageCaptionButton.tsx +++ b/packages/react/src/components/FormattingToolbar/DefaultButtons/ImageCaptionButton.tsx @@ -9,10 +9,10 @@ import { } from "react"; import { RiText } from "react-icons/ri"; -import { ToolbarButton } from "../../../SharedComponents/Toolbar/components/ToolbarButton"; -import { ToolbarInputDropdown } from "../../../SharedComponents/Toolbar/components/ToolbarInputDropdown"; -import { ToolbarInputDropdownButton } from "../../../SharedComponents/Toolbar/components/ToolbarInputDropdownButton"; -import { ToolbarInputDropdownItem } from "../../../SharedComponents/Toolbar/components/ToolbarInputDropdownItem"; +import { ToolbarButton } from "../../@shared/Toolbar/ToolbarButton"; +import { ToolbarInputDropdown } from "../../@shared/Toolbar/ToolbarInputDropdown"; +import { ToolbarInputDropdownButton } from "../../@shared/Toolbar/ToolbarInputDropdownButton"; +import { ToolbarInputDropdownItem } from "../../@shared/Toolbar/ToolbarInputDropdownItem"; import { useSelectedBlocks } from "../../../hooks/useSelectedBlocks"; export const ImageCaptionButton = (props: { diff --git a/packages/react/src/FormattingToolbar/components/DefaultButtons/NestBlockButtons.tsx b/packages/react/src/components/FormattingToolbar/DefaultButtons/NestBlockButtons.tsx similarity index 90% rename from packages/react/src/FormattingToolbar/components/DefaultButtons/NestBlockButtons.tsx rename to packages/react/src/components/FormattingToolbar/DefaultButtons/NestBlockButtons.tsx index 68a12d2ddd..6c9d2a7647 100644 --- a/packages/react/src/FormattingToolbar/components/DefaultButtons/NestBlockButtons.tsx +++ b/packages/react/src/components/FormattingToolbar/DefaultButtons/NestBlockButtons.tsx @@ -2,9 +2,9 @@ import { useCallback, useState } from "react"; import { BlockNoteEditor, BlockSchema } from "@blocknote/core"; import { RiIndentDecrease, RiIndentIncrease } from "react-icons/ri"; -import { ToolbarButton } from "../../../SharedComponents/Toolbar/components/ToolbarButton"; +import { ToolbarButton } from "../../@shared/Toolbar/ToolbarButton"; import { useEditorChange } from "../../../hooks/useEditorChange"; -import { formatKeyboardShortcut } from "../../../utils"; +import { formatKeyboardShortcut } from "@blocknote/core"; export const NestBlockButton = (props: { editor: BlockNoteEditor; diff --git a/packages/react/src/FormattingToolbar/components/DefaultButtons/ReplaceImageButton.tsx b/packages/react/src/components/FormattingToolbar/DefaultButtons/ReplaceImageButton.tsx similarity index 86% rename from packages/react/src/FormattingToolbar/components/DefaultButtons/ReplaceImageButton.tsx rename to packages/react/src/components/FormattingToolbar/DefaultButtons/ReplaceImageButton.tsx index 2169e3ff7e..7a5b69090d 100644 --- a/packages/react/src/FormattingToolbar/components/DefaultButtons/ReplaceImageButton.tsx +++ b/packages/react/src/components/FormattingToolbar/DefaultButtons/ReplaceImageButton.tsx @@ -3,8 +3,8 @@ import Tippy from "@tippyjs/react"; import { useEffect, useState } from "react"; import { RiImageEditFill } from "react-icons/ri"; -import { DefaultImageToolbar } from "../../../ImageToolbar/components/DefaultImageToolbar"; -import { ToolbarButton } from "../../../SharedComponents/Toolbar/components/ToolbarButton"; +import { DefaultImageToolbar } from "../../ImageToolbar/DefaultImageToolbar"; +import { ToolbarButton } from "../../@shared/Toolbar/ToolbarButton"; import { useSelectedBlocks } from "../../../hooks/useSelectedBlocks"; export const ReplaceImageButton = (props: { diff --git a/packages/react/src/FormattingToolbar/components/DefaultButtons/TextAlignButton.tsx b/packages/react/src/components/FormattingToolbar/DefaultButtons/TextAlignButton.tsx similarity index 95% rename from packages/react/src/FormattingToolbar/components/DefaultButtons/TextAlignButton.tsx rename to packages/react/src/components/FormattingToolbar/DefaultButtons/TextAlignButton.tsx index c56c8ecc30..5915c30db3 100644 --- a/packages/react/src/FormattingToolbar/components/DefaultButtons/TextAlignButton.tsx +++ b/packages/react/src/components/FormattingToolbar/DefaultButtons/TextAlignButton.tsx @@ -13,7 +13,7 @@ import { RiAlignRight, } from "react-icons/ri"; -import { ToolbarButton } from "../../../SharedComponents/Toolbar/components/ToolbarButton"; +import { ToolbarButton } from "../../@shared/Toolbar/ToolbarButton"; import { useSelectedBlocks } from "../../../hooks/useSelectedBlocks"; type TextAlignment = DefaultProps["textAlignment"]; diff --git a/packages/react/src/FormattingToolbar/components/DefaultButtons/ToggledStyleButton.tsx b/packages/react/src/components/FormattingToolbar/DefaultButtons/ToggledStyleButton.tsx similarity index 93% rename from packages/react/src/FormattingToolbar/components/DefaultButtons/ToggledStyleButton.tsx rename to packages/react/src/components/FormattingToolbar/DefaultButtons/ToggledStyleButton.tsx index 95895d32db..99e552168f 100644 --- a/packages/react/src/FormattingToolbar/components/DefaultButtons/ToggledStyleButton.tsx +++ b/packages/react/src/components/FormattingToolbar/DefaultButtons/ToggledStyleButton.tsx @@ -13,10 +13,10 @@ import { } from "react-icons/ri"; import { StyleSchema } from "@blocknote/core"; -import { ToolbarButton } from "../../../SharedComponents/Toolbar/components/ToolbarButton"; +import { ToolbarButton } from "../../@shared/Toolbar/ToolbarButton"; import { useEditorChange } from "../../../hooks/useEditorChange"; import { useSelectedBlocks } from "../../../hooks/useSelectedBlocks"; -import { formatKeyboardShortcut } from "../../../utils"; +import { formatKeyboardShortcut } from "@blocknote/core"; const shortcuts = { bold: "Mod+B", diff --git a/packages/react/src/FormattingToolbar/components/DefaultDropdowns/BlockTypeDropdown.tsx b/packages/react/src/components/FormattingToolbar/DefaultDropdowns/BlockTypeDropdown.tsx similarity index 95% rename from packages/react/src/FormattingToolbar/components/DefaultDropdowns/BlockTypeDropdown.tsx rename to packages/react/src/components/FormattingToolbar/DefaultDropdowns/BlockTypeDropdown.tsx index 4d15de5be6..761e8eeb3d 100644 --- a/packages/react/src/FormattingToolbar/components/DefaultDropdowns/BlockTypeDropdown.tsx +++ b/packages/react/src/components/FormattingToolbar/DefaultDropdowns/BlockTypeDropdown.tsx @@ -10,8 +10,8 @@ import { RiText, } from "react-icons/ri"; -import { ToolbarDropdown } from "../../../SharedComponents/Toolbar/components/ToolbarDropdown"; -import { ToolbarDropdownItemProps } from "../../../SharedComponents/Toolbar/components/ToolbarDropdownItem"; +import { ToolbarDropdown } from "../../@shared/Toolbar/ToolbarDropdown"; +import { ToolbarDropdownItemProps } from "../../@shared/Toolbar/ToolbarDropdownItem"; import { useEditorChange } from "../../../hooks/useEditorChange"; import { useSelectedBlocks } from "../../../hooks/useSelectedBlocks"; diff --git a/packages/react/src/FormattingToolbar/components/DefaultFormattingToolbar.tsx b/packages/react/src/components/FormattingToolbar/DefaultFormattingToolbar.tsx similarity index 96% rename from packages/react/src/FormattingToolbar/components/DefaultFormattingToolbar.tsx rename to packages/react/src/components/FormattingToolbar/DefaultFormattingToolbar.tsx index 7843311293..0431d650fe 100644 --- a/packages/react/src/FormattingToolbar/components/DefaultFormattingToolbar.tsx +++ b/packages/react/src/components/FormattingToolbar/DefaultFormattingToolbar.tsx @@ -1,7 +1,7 @@ import { BlockSchema } from "@blocknote/core"; import { FormattingToolbarProps } from "./FormattingToolbarPositioner"; -import { Toolbar } from "../../SharedComponents/Toolbar/components/Toolbar"; +import { Toolbar } from "../@shared/Toolbar/Toolbar"; import { BlockTypeDropdown, BlockTypeDropdownItem, diff --git a/packages/react/src/FormattingToolbar/components/FormattingToolbarPositioner.tsx b/packages/react/src/components/FormattingToolbar/FormattingToolbarPositioner.tsx similarity index 100% rename from packages/react/src/FormattingToolbar/components/FormattingToolbarPositioner.tsx rename to packages/react/src/components/FormattingToolbar/FormattingToolbarPositioner.tsx diff --git a/packages/react/src/HyperlinkToolbar/components/DefaultHyperlinkToolbar.tsx b/packages/react/src/components/HyperlinkToolbar/DefaultHyperlinkToolbar.tsx similarity index 91% rename from packages/react/src/HyperlinkToolbar/components/DefaultHyperlinkToolbar.tsx rename to packages/react/src/components/HyperlinkToolbar/DefaultHyperlinkToolbar.tsx index 269de59419..a1b7b26ceb 100644 --- a/packages/react/src/HyperlinkToolbar/components/DefaultHyperlinkToolbar.tsx +++ b/packages/react/src/components/HyperlinkToolbar/DefaultHyperlinkToolbar.tsx @@ -3,8 +3,8 @@ import { useRef, useState } from "react"; import { RiExternalLinkFill, RiLinkUnlink } from "react-icons/ri"; import { StyleSchema } from "@blocknote/core"; -import { Toolbar } from "../../SharedComponents/Toolbar/components/Toolbar"; -import { ToolbarButton } from "../../SharedComponents/Toolbar/components/ToolbarButton"; +import { Toolbar } from "../@shared/Toolbar/Toolbar"; +import { ToolbarButton } from "../@shared/Toolbar/ToolbarButton"; import { EditHyperlinkMenu } from "./EditHyperlinkMenu/components/EditHyperlinkMenu"; import { HyperlinkToolbarProps } from "./HyperlinkToolbarPositioner"; diff --git a/packages/react/src/HyperlinkToolbar/components/EditHyperlinkMenu/components/EditHyperlinkMenu.tsx b/packages/react/src/components/HyperlinkToolbar/EditHyperlinkMenu/components/EditHyperlinkMenu.tsx similarity index 90% rename from packages/react/src/HyperlinkToolbar/components/EditHyperlinkMenu/components/EditHyperlinkMenu.tsx rename to packages/react/src/components/HyperlinkToolbar/EditHyperlinkMenu/components/EditHyperlinkMenu.tsx index 96a936206b..b6ec78c11a 100644 --- a/packages/react/src/HyperlinkToolbar/components/EditHyperlinkMenu/components/EditHyperlinkMenu.tsx +++ b/packages/react/src/components/HyperlinkToolbar/EditHyperlinkMenu/components/EditHyperlinkMenu.tsx @@ -8,8 +8,8 @@ import { useState, } from "react"; import { RiLink, RiText } from "react-icons/ri"; -import { ToolbarInputDropdown } from "../../../../SharedComponents/Toolbar/components/ToolbarInputDropdown"; -import { ToolbarInputDropdownItem } from "../../../../SharedComponents/Toolbar/components/ToolbarInputDropdownItem"; +import { ToolbarInputDropdown } from "../../../@shared/Toolbar/ToolbarInputDropdown"; +import { ToolbarInputDropdownItem } from "../../../@shared/Toolbar/ToolbarInputDropdownItem"; export type EditHyperlinkMenuProps = { url: string; diff --git a/packages/react/src/HyperlinkToolbar/components/HyperlinkToolbarPositioner.tsx b/packages/react/src/components/HyperlinkToolbar/HyperlinkToolbarPositioner.tsx similarity index 100% rename from packages/react/src/HyperlinkToolbar/components/HyperlinkToolbarPositioner.tsx rename to packages/react/src/components/HyperlinkToolbar/HyperlinkToolbarPositioner.tsx diff --git a/packages/react/src/ImageToolbar/components/DefaultImageToolbar.tsx b/packages/react/src/components/ImageToolbar/DefaultImageToolbar.tsx similarity index 98% rename from packages/react/src/ImageToolbar/components/DefaultImageToolbar.tsx rename to packages/react/src/components/ImageToolbar/DefaultImageToolbar.tsx index 49260e289a..774a5f5372 100644 --- a/packages/react/src/ImageToolbar/components/DefaultImageToolbar.tsx +++ b/packages/react/src/components/ImageToolbar/DefaultImageToolbar.tsx @@ -15,7 +15,7 @@ import { useEffect, useState, } from "react"; -import { Toolbar } from "../../SharedComponents/Toolbar/components/Toolbar"; +import { Toolbar } from "../@shared/Toolbar/Toolbar"; import { ImageToolbarProps } from "./ImageToolbarPositioner"; export const DefaultImageToolbar = ( diff --git a/packages/react/src/ImageToolbar/components/ImageToolbarPositioner.tsx b/packages/react/src/components/ImageToolbar/ImageToolbarPositioner.tsx similarity index 100% rename from packages/react/src/ImageToolbar/components/ImageToolbarPositioner.tsx rename to packages/react/src/components/ImageToolbar/ImageToolbarPositioner.tsx diff --git a/packages/react/src/SideMenu/components/DefaultButtons/AddBlockButton.tsx b/packages/react/src/components/SideMenu/DefaultButtons/AddBlockButton.tsx similarity index 100% rename from packages/react/src/SideMenu/components/DefaultButtons/AddBlockButton.tsx rename to packages/react/src/components/SideMenu/DefaultButtons/AddBlockButton.tsx diff --git a/packages/react/src/SideMenu/components/DefaultButtons/DragHandle.tsx b/packages/react/src/components/SideMenu/DefaultButtons/DragHandle.tsx similarity index 100% rename from packages/react/src/SideMenu/components/DefaultButtons/DragHandle.tsx rename to packages/react/src/components/SideMenu/DefaultButtons/DragHandle.tsx diff --git a/packages/react/src/SideMenu/components/DefaultSideMenu.tsx b/packages/react/src/components/SideMenu/DefaultSideMenu.tsx similarity index 100% rename from packages/react/src/SideMenu/components/DefaultSideMenu.tsx rename to packages/react/src/components/SideMenu/DefaultSideMenu.tsx diff --git a/packages/react/src/SideMenu/components/DragHandleMenu/DefaultButtons/BlockColorsButton.tsx b/packages/react/src/components/SideMenu/DragHandleMenu/DefaultButtons/BlockColorsButton.tsx similarity index 97% rename from packages/react/src/SideMenu/components/DragHandleMenu/DefaultButtons/BlockColorsButton.tsx rename to packages/react/src/components/SideMenu/DragHandleMenu/DefaultButtons/BlockColorsButton.tsx index e198ebf46e..f2c1cb0f23 100644 --- a/packages/react/src/SideMenu/components/DragHandleMenu/DefaultButtons/BlockColorsButton.tsx +++ b/packages/react/src/components/SideMenu/DragHandleMenu/DefaultButtons/BlockColorsButton.tsx @@ -3,7 +3,7 @@ import { Box, Menu } from "@mantine/core"; import { ReactNode, useCallback, useRef, useState } from "react"; import { HiChevronRight } from "react-icons/hi"; -import { ColorPicker } from "../../../../SharedComponents/ColorPicker/components/ColorPicker"; +import { ColorPicker } from "../../../@shared/ColorPicker/ColorPicker"; import { usePreventMenuOverflow } from "../../../../hooks/usePreventMenuOverflow"; import { DragHandleMenuProps } from "../DragHandleMenu"; import { DragHandleMenuItem } from "../DragHandleMenuItem"; diff --git a/packages/react/src/SideMenu/components/DragHandleMenu/DefaultButtons/RemoveBlockButton.tsx b/packages/react/src/components/SideMenu/DragHandleMenu/DefaultButtons/RemoveBlockButton.tsx similarity index 100% rename from packages/react/src/SideMenu/components/DragHandleMenu/DefaultButtons/RemoveBlockButton.tsx rename to packages/react/src/components/SideMenu/DragHandleMenu/DefaultButtons/RemoveBlockButton.tsx diff --git a/packages/react/src/SideMenu/components/DragHandleMenu/DefaultDragHandleMenu.tsx b/packages/react/src/components/SideMenu/DragHandleMenu/DefaultDragHandleMenu.tsx similarity index 100% rename from packages/react/src/SideMenu/components/DragHandleMenu/DefaultDragHandleMenu.tsx rename to packages/react/src/components/SideMenu/DragHandleMenu/DefaultDragHandleMenu.tsx diff --git a/packages/react/src/SideMenu/components/DragHandleMenu/DragHandleMenu.tsx b/packages/react/src/components/SideMenu/DragHandleMenu/DragHandleMenu.tsx similarity index 100% rename from packages/react/src/SideMenu/components/DragHandleMenu/DragHandleMenu.tsx rename to packages/react/src/components/SideMenu/DragHandleMenu/DragHandleMenu.tsx diff --git a/packages/react/src/SideMenu/components/DragHandleMenu/DragHandleMenuItem.tsx b/packages/react/src/components/SideMenu/DragHandleMenu/DragHandleMenuItem.tsx similarity index 100% rename from packages/react/src/SideMenu/components/DragHandleMenu/DragHandleMenuItem.tsx rename to packages/react/src/components/SideMenu/DragHandleMenu/DragHandleMenuItem.tsx diff --git a/packages/react/src/SideMenu/components/SideMenu.tsx b/packages/react/src/components/SideMenu/SideMenu.tsx similarity index 100% rename from packages/react/src/SideMenu/components/SideMenu.tsx rename to packages/react/src/components/SideMenu/SideMenu.tsx diff --git a/packages/react/src/SideMenu/components/SideMenuButton.tsx b/packages/react/src/components/SideMenu/SideMenuButton.tsx similarity index 100% rename from packages/react/src/SideMenu/components/SideMenuButton.tsx rename to packages/react/src/components/SideMenu/SideMenuButton.tsx diff --git a/packages/react/src/SideMenu/components/SideMenuPositioner.tsx b/packages/react/src/components/SideMenu/SideMenuPositioner.tsx similarity index 100% rename from packages/react/src/SideMenu/components/SideMenuPositioner.tsx rename to packages/react/src/components/SideMenu/SideMenuPositioner.tsx diff --git a/packages/react/src/SlashMenu/components/DefaultSlashMenu.tsx b/packages/react/src/components/SlashMenu/DefaultSlashMenu.tsx similarity index 100% rename from packages/react/src/SlashMenu/components/DefaultSlashMenu.tsx rename to packages/react/src/components/SlashMenu/DefaultSlashMenu.tsx diff --git a/packages/react/src/SlashMenu/components/SlashMenuItem.tsx b/packages/react/src/components/SlashMenu/SlashMenuItem.tsx similarity index 100% rename from packages/react/src/SlashMenu/components/SlashMenuItem.tsx rename to packages/react/src/components/SlashMenu/SlashMenuItem.tsx diff --git a/packages/react/src/SlashMenu/components/SlashMenuPositioner.tsx b/packages/react/src/components/SlashMenu/SlashMenuPositioner.tsx similarity index 97% rename from packages/react/src/SlashMenu/components/SlashMenuPositioner.tsx rename to packages/react/src/components/SlashMenu/SlashMenuPositioner.tsx index 6c084ad245..fa3a5247a0 100644 --- a/packages/react/src/SlashMenu/components/SlashMenuPositioner.tsx +++ b/packages/react/src/components/SlashMenu/SlashMenuPositioner.tsx @@ -9,7 +9,7 @@ import Tippy from "@tippyjs/react"; import { FC, useEffect, useMemo, useRef, useState } from "react"; import { usePreventMenuOverflow } from "../../hooks/usePreventMenuOverflow"; -import { ReactSlashMenuItem } from "../ReactSlashMenuItem"; +import { ReactSlashMenuItem } from "../../slashMenuItems/ReactSlashMenuItem"; import { DefaultSlashMenu } from "./DefaultSlashMenu"; export type SlashMenuProps = diff --git a/packages/react/src/TableHandles/components/DefaultTableHandle.tsx b/packages/react/src/components/TableHandles/DefaultTableHandle.tsx similarity index 100% rename from packages/react/src/TableHandles/components/DefaultTableHandle.tsx rename to packages/react/src/components/TableHandles/DefaultTableHandle.tsx diff --git a/packages/react/src/TableHandles/components/TableHandle.tsx b/packages/react/src/components/TableHandles/TableHandle.tsx similarity index 100% rename from packages/react/src/TableHandles/components/TableHandle.tsx rename to packages/react/src/components/TableHandles/TableHandle.tsx diff --git a/packages/react/src/TableHandles/components/TableHandleMenu/DefaultButtons/AddButton.tsx b/packages/react/src/components/TableHandles/TableHandleMenu/DefaultButtons/AddButton.tsx similarity index 100% rename from packages/react/src/TableHandles/components/TableHandleMenu/DefaultButtons/AddButton.tsx rename to packages/react/src/components/TableHandles/TableHandleMenu/DefaultButtons/AddButton.tsx diff --git a/packages/react/src/TableHandles/components/TableHandleMenu/DefaultButtons/DeleteButton.tsx b/packages/react/src/components/TableHandles/TableHandleMenu/DefaultButtons/DeleteButton.tsx similarity index 100% rename from packages/react/src/TableHandles/components/TableHandleMenu/DefaultButtons/DeleteButton.tsx rename to packages/react/src/components/TableHandles/TableHandleMenu/DefaultButtons/DeleteButton.tsx diff --git a/packages/react/src/TableHandles/components/TableHandleMenu/DefaultTableHandleMenu.tsx b/packages/react/src/components/TableHandles/TableHandleMenu/DefaultTableHandleMenu.tsx similarity index 100% rename from packages/react/src/TableHandles/components/TableHandleMenu/DefaultTableHandleMenu.tsx rename to packages/react/src/components/TableHandles/TableHandleMenu/DefaultTableHandleMenu.tsx diff --git a/packages/react/src/TableHandles/components/TableHandleMenu/TableHandleMenu.tsx b/packages/react/src/components/TableHandles/TableHandleMenu/TableHandleMenu.tsx similarity index 100% rename from packages/react/src/TableHandles/components/TableHandleMenu/TableHandleMenu.tsx rename to packages/react/src/components/TableHandles/TableHandleMenu/TableHandleMenu.tsx diff --git a/packages/react/src/TableHandles/components/TableHandleMenu/TableHandleMenuItem.tsx b/packages/react/src/components/TableHandles/TableHandleMenu/TableHandleMenuItem.tsx similarity index 100% rename from packages/react/src/TableHandles/components/TableHandleMenu/TableHandleMenuItem.tsx rename to packages/react/src/components/TableHandles/TableHandleMenu/TableHandleMenuItem.tsx diff --git a/packages/react/src/TableHandles/components/TableHandlePositioner.tsx b/packages/react/src/components/TableHandles/TableHandlePositioner.tsx similarity index 98% rename from packages/react/src/TableHandles/components/TableHandlePositioner.tsx rename to packages/react/src/components/TableHandles/TableHandlePositioner.tsx index 95e2ea70e4..fd2ac9b7e0 100644 --- a/packages/react/src/TableHandles/components/TableHandlePositioner.tsx +++ b/packages/react/src/components/TableHandles/TableHandlePositioner.tsx @@ -10,7 +10,7 @@ import { } from "@blocknote/core"; import Tippy, { tippy } from "@tippyjs/react"; import { DragEvent, FC, useEffect, useMemo, useRef, useState } from "react"; -import { DragHandleMenuProps } from "../../SideMenu/components/DragHandleMenu/DragHandleMenu"; +import { DragHandleMenuProps } from "../SideMenu/DragHandleMenu/DragHandleMenu"; import { DefaultTableHandle } from "./DefaultTableHandle"; export type TableHandleProps< diff --git a/packages/react/src/BlockNoteTheme.ts b/packages/react/src/editor/BlockNoteTheme.ts similarity index 100% rename from packages/react/src/BlockNoteTheme.ts rename to packages/react/src/editor/BlockNoteTheme.ts diff --git a/packages/react/src/BlockNoteView.tsx b/packages/react/src/editor/BlockNoteView.tsx similarity index 83% rename from packages/react/src/BlockNoteView.tsx rename to packages/react/src/editor/BlockNoteView.tsx index c65cbc9b26..30606ae4ac 100644 --- a/packages/react/src/BlockNoteView.tsx +++ b/packages/react/src/editor/BlockNoteView.tsx @@ -10,12 +10,12 @@ import { EditorContent } from "@tiptap/react"; import { HTMLAttributes, ReactNode, useMemo } from "react"; import usePrefersColorScheme from "use-prefers-color-scheme"; import { Theme, blockNoteToMantineTheme } from "./BlockNoteTheme"; -import { FormattingToolbarPositioner } from "./FormattingToolbar/components/FormattingToolbarPositioner"; -import { HyperlinkToolbarPositioner } from "./HyperlinkToolbar/components/HyperlinkToolbarPositioner"; -import { ImageToolbarPositioner } from "./ImageToolbar/components/ImageToolbarPositioner"; -import { SideMenuPositioner } from "./SideMenu/components/SideMenuPositioner"; -import { SlashMenuPositioner } from "./SlashMenu/components/SlashMenuPositioner"; -import { TableHandlesPositioner } from "./TableHandles/components/TableHandlePositioner"; +import { FormattingToolbarPositioner } from "../components/FormattingToolbar/FormattingToolbarPositioner"; +import { HyperlinkToolbarPositioner } from "../components/HyperlinkToolbar/HyperlinkToolbarPositioner"; +import { ImageToolbarPositioner } from "../components/ImageToolbar/ImageToolbarPositioner"; +import { SideMenuPositioner } from "../components/SideMenu/SideMenuPositioner"; +import { SlashMenuPositioner } from "../components/SlashMenu/SlashMenuPositioner"; +import { TableHandlesPositioner } from "../components/TableHandles/TableHandlePositioner"; import { darkDefaultTheme, lightDefaultTheme } from "./defaultThemes"; // Renders the editor as well as all menus & toolbars using default styles. diff --git a/packages/react/src/Editor/EditorContent.tsx b/packages/react/src/editor/EditorContent.tsx similarity index 100% rename from packages/react/src/Editor/EditorContent.tsx rename to packages/react/src/editor/EditorContent.tsx diff --git a/packages/react/src/defaultThemes.ts b/packages/react/src/editor/defaultThemes.ts similarity index 99% rename from packages/react/src/defaultThemes.ts rename to packages/react/src/editor/defaultThemes.ts index 1a08ac5ed5..639221f057 100644 --- a/packages/react/src/defaultThemes.ts +++ b/packages/react/src/editor/defaultThemes.ts @@ -1,4 +1,4 @@ -import { Theme } from "./index"; +import { Theme } from "../index"; export const defaultColorScheme = [ "#FFFFFF", diff --git a/packages/react/src/hooks/useBlockNote.ts b/packages/react/src/hooks/useBlockNote.ts index 6d467987fc..2cf1f213e8 100644 --- a/packages/react/src/hooks/useBlockNote.ts +++ b/packages/react/src/hooks/useBlockNote.ts @@ -13,7 +13,7 @@ import { getBlockSchemaFromSpecs, } from "@blocknote/core"; import { DependencyList, useMemo, useRef } from "react"; -import { getDefaultReactSlashMenuItems } from "../SlashMenu/defaultReactSlashMenuItems"; +import { getDefaultReactSlashMenuItems } from "../slashMenuItems/defaultReactSlashMenuItems"; const initEditor = < BSpecs extends BlockSpecs, diff --git a/packages/react/src/index.ts b/packages/react/src/index.ts index 2748d2cd74..fb9938356f 100644 --- a/packages/react/src/index.ts +++ b/packages/react/src/index.ts @@ -1,44 +1,44 @@ // TODO: review directories -export * from "./BlockNoteTheme"; -export * from "./BlockNoteView"; -export * from "./defaultThemes"; - -export * from "./FormattingToolbar/components/DefaultButtons/ColorStyleButton"; -export * from "./FormattingToolbar/components/DefaultButtons/CreateLinkButton"; -export * from "./FormattingToolbar/components/DefaultButtons/NestBlockButtons"; -export * from "./FormattingToolbar/components/DefaultButtons/TextAlignButton"; -export * from "./FormattingToolbar/components/DefaultButtons/ToggledStyleButton"; -export * from "./FormattingToolbar/components/DefaultDropdowns/BlockTypeDropdown"; -export * from "./FormattingToolbar/components/DefaultFormattingToolbar"; -export * from "./FormattingToolbar/components/FormattingToolbarPositioner"; - -export * from "./HyperlinkToolbar/components/HyperlinkToolbarPositioner"; - -export * from "./SideMenu/components/DefaultButtons/AddBlockButton"; -export * from "./SideMenu/components/DefaultButtons/DragHandle"; -export * from "./SideMenu/components/DefaultSideMenu"; -export * from "./SideMenu/components/SideMenu"; -export * from "./SideMenu/components/SideMenuButton"; -export * from "./SideMenu/components/SideMenuPositioner"; - -export * from "./SideMenu/components/DragHandleMenu/DefaultButtons/BlockColorsButton"; -export * from "./SideMenu/components/DragHandleMenu/DefaultButtons/RemoveBlockButton"; -export * from "./SideMenu/components/DragHandleMenu/DefaultDragHandleMenu"; -export * from "./SideMenu/components/DragHandleMenu/DragHandleMenu"; -export * from "./SideMenu/components/DragHandleMenu/DragHandleMenuItem"; - -export * from "./SlashMenu/ReactSlashMenuItem"; -export * from "./SlashMenu/components/DefaultSlashMenu"; -export * from "./SlashMenu/components/SlashMenuItem"; -export * from "./SlashMenu/components/SlashMenuPositioner"; -export * from "./SlashMenu/defaultReactSlashMenuItems"; - -export * from "./ImageToolbar/components/DefaultImageToolbar"; -export * from "./ImageToolbar/components/ImageToolbarPositioner"; - -export * from "./SharedComponents/Toolbar/components/Toolbar"; -export * from "./SharedComponents/Toolbar/components/ToolbarButton"; -export * from "./SharedComponents/Toolbar/components/ToolbarDropdown"; +export * from "./editor/BlockNoteTheme"; +export * from "./editor/BlockNoteView"; +export * from "./editor/defaultThemes"; + +export * from "./components/FormattingToolbar/DefaultButtons/ColorStyleButton"; +export * from "./components/FormattingToolbar/DefaultButtons/CreateLinkButton"; +export * from "./components/FormattingToolbar/DefaultButtons/NestBlockButtons"; +export * from "./components/FormattingToolbar/DefaultButtons/TextAlignButton"; +export * from "./components/FormattingToolbar/DefaultButtons/ToggledStyleButton"; +export * from "./components/FormattingToolbar/DefaultDropdowns/BlockTypeDropdown"; +export * from "./components/FormattingToolbar/DefaultFormattingToolbar"; +export * from "./components/FormattingToolbar/FormattingToolbarPositioner"; + +export * from "./components/HyperlinkToolbar/HyperlinkToolbarPositioner"; + +export * from "./components/SideMenu/DefaultButtons/AddBlockButton"; +export * from "./components/SideMenu/DefaultButtons/DragHandle"; +export * from "./components/SideMenu/DefaultSideMenu"; +export * from "./components/SideMenu/SideMenu"; +export * from "./components/SideMenu/SideMenuButton"; +export * from "./components/SideMenu/SideMenuPositioner"; + +export * from "./components/SideMenu/DragHandleMenu/DefaultButtons/BlockColorsButton"; +export * from "./components/SideMenu/DragHandleMenu/DefaultButtons/RemoveBlockButton"; +export * from "./components/SideMenu/DragHandleMenu/DefaultDragHandleMenu"; +export * from "./components/SideMenu/DragHandleMenu/DragHandleMenu"; +export * from "./components/SideMenu/DragHandleMenu/DragHandleMenuItem"; + +export * from "./slashMenuItems/ReactSlashMenuItem"; +export * from "./components/SlashMenu/DefaultSlashMenu"; +export * from "./components/SlashMenu/SlashMenuItem"; +export * from "./components/SlashMenu/SlashMenuPositioner"; +export * from "./slashMenuItems/defaultReactSlashMenuItems"; + +export * from "./components/ImageToolbar/DefaultImageToolbar"; +export * from "./components/ImageToolbar/ImageToolbarPositioner"; + +export * from "./components/@shared/Toolbar/Toolbar"; +export * from "./components/@shared/Toolbar/ToolbarButton"; +export * from "./components/@shared/Toolbar/ToolbarDropdown"; export * from "./hooks/useActiveStyles"; export * from "./hooks/useBlockNote"; @@ -48,6 +48,6 @@ export * from "./hooks/useEditorForceUpdate"; export * from "./hooks/useEditorSelectionChange"; export * from "./hooks/useSelectedBlocks"; -export * from "./ReactBlockSpec"; -export * from "./ReactInlineContentSpec"; -export * from "./ReactStyleSpec"; +export * from "./schema/ReactBlockSpec"; +export * from "./schema/ReactInlineContentSpec"; +export * from "./schema/ReactStyleSpec"; diff --git a/packages/react/src/ReactRenderUtil.ts b/packages/react/src/schema/@util/ReactRenderUtil.ts similarity index 100% rename from packages/react/src/ReactRenderUtil.ts rename to packages/react/src/schema/@util/ReactRenderUtil.ts diff --git a/packages/react/src/ReactBlockSpec.tsx b/packages/react/src/schema/ReactBlockSpec.tsx similarity index 99% rename from packages/react/src/ReactBlockSpec.tsx rename to packages/react/src/schema/ReactBlockSpec.tsx index 634c707eb7..77e7e398d1 100644 --- a/packages/react/src/ReactBlockSpec.tsx +++ b/packages/react/src/schema/ReactBlockSpec.tsx @@ -24,7 +24,7 @@ import { ReactNodeViewRenderer, } from "@tiptap/react"; import { FC } from "react"; -import { renderToDOMSpec } from "./ReactRenderUtil"; +import { renderToDOMSpec } from "./@util/ReactRenderUtil"; // this file is mostly analogoues to `customBlocks.ts`, but for React blocks diff --git a/packages/react/src/ReactInlineContentSpec.tsx b/packages/react/src/schema/ReactInlineContentSpec.tsx similarity index 98% rename from packages/react/src/ReactInlineContentSpec.tsx rename to packages/react/src/schema/ReactInlineContentSpec.tsx index e5a40056c4..f8f8318ed1 100644 --- a/packages/react/src/ReactInlineContentSpec.tsx +++ b/packages/react/src/schema/ReactInlineContentSpec.tsx @@ -22,7 +22,7 @@ import { } from "@tiptap/react"; // import { useReactNodeView } from "@tiptap/react/dist/packages/react/src/useReactNodeView"; import { FC } from "react"; -import { renderToDOMSpec } from "./ReactRenderUtil"; +import { renderToDOMSpec } from "./@util/ReactRenderUtil"; // this file is mostly analogoues to `customBlocks.ts`, but for React blocks diff --git a/packages/react/src/ReactStyleSpec.tsx b/packages/react/src/schema/ReactStyleSpec.tsx similarity index 96% rename from packages/react/src/ReactStyleSpec.tsx rename to packages/react/src/schema/ReactStyleSpec.tsx index 5711c6c561..63f3242a06 100644 --- a/packages/react/src/ReactStyleSpec.tsx +++ b/packages/react/src/schema/ReactStyleSpec.tsx @@ -7,7 +7,7 @@ import { } from "@blocknote/core"; import { Mark } from "@tiptap/react"; import { FC } from "react"; -import { renderToDOMSpec } from "./ReactRenderUtil"; +import { renderToDOMSpec } from "./@util/ReactRenderUtil"; // this file is mostly analogoues to `customBlocks.ts`, but for React blocks diff --git a/packages/react/src/SlashMenu/ReactSlashMenuItem.ts b/packages/react/src/slashMenuItems/ReactSlashMenuItem.ts similarity index 100% rename from packages/react/src/SlashMenu/ReactSlashMenuItem.ts rename to packages/react/src/slashMenuItems/ReactSlashMenuItem.ts diff --git a/packages/react/src/SlashMenu/defaultReactSlashMenuItems.tsx b/packages/react/src/slashMenuItems/defaultReactSlashMenuItems.tsx similarity index 97% rename from packages/react/src/SlashMenu/defaultReactSlashMenuItems.tsx rename to packages/react/src/slashMenuItems/defaultReactSlashMenuItems.tsx index 66411dda62..d252b8b605 100644 --- a/packages/react/src/SlashMenu/defaultReactSlashMenuItems.tsx +++ b/packages/react/src/slashMenuItems/defaultReactSlashMenuItems.tsx @@ -17,7 +17,7 @@ import { RiTable2, RiText, } from "react-icons/ri"; -import { formatKeyboardShortcut } from "../utils"; +import { formatKeyboardShortcut } from "@blocknote/core"; import { ReactSlashMenuItem } from "./ReactSlashMenuItem"; const extraFields: Record< diff --git a/packages/react/src/test/testCases/customReactBlocks.tsx b/packages/react/src/test/testCases/customReactBlocks.tsx index 8dd528f74d..c93beab64d 100644 --- a/packages/react/src/test/testCases/customReactBlocks.tsx +++ b/packages/react/src/test/testCases/customReactBlocks.tsx @@ -9,7 +9,7 @@ import { defaultProps, uploadToTmpFilesDotOrg_DEV_ONLY, } from "@blocknote/core"; -import { createReactBlockSpec } from "../../ReactBlockSpec"; +import { createReactBlockSpec } from "../../schema/ReactBlockSpec"; const ReactCustomParagraph = createReactBlockSpec( { diff --git a/packages/react/src/test/testCases/customReactInlineContent.tsx b/packages/react/src/test/testCases/customReactInlineContent.tsx index f9a90dff65..f211c45236 100644 --- a/packages/react/src/test/testCases/customReactInlineContent.tsx +++ b/packages/react/src/test/testCases/customReactInlineContent.tsx @@ -8,7 +8,7 @@ import { defaultInlineContentSpecs, uploadToTmpFilesDotOrg_DEV_ONLY, } from "@blocknote/core"; -import { createReactInlineContentSpec } from "../../ReactInlineContentSpec"; +import { createReactInlineContentSpec } from "../../schema/ReactInlineContentSpec"; const mention = createReactInlineContentSpec( { diff --git a/packages/react/src/test/testCases/customReactStyles.tsx b/packages/react/src/test/testCases/customReactStyles.tsx index ea7126d6ce..0992b791a4 100644 --- a/packages/react/src/test/testCases/customReactStyles.tsx +++ b/packages/react/src/test/testCases/customReactStyles.tsx @@ -8,7 +8,7 @@ import { defaultStyleSpecs, uploadToTmpFilesDotOrg_DEV_ONLY, } from "@blocknote/core"; -import { createReactStyleSpec } from "../../ReactStyleSpec"; +import { createReactStyleSpec } from "../../schema/ReactStyleSpec"; const small = createReactStyleSpec( { diff --git a/packages/react/src/utils.ts b/packages/react/src/utils.ts deleted file mode 100644 index e1f633eb61..0000000000 --- a/packages/react/src/utils.ts +++ /dev/null @@ -1,13 +0,0 @@ -export const isAppleOS = () => - typeof navigator !== "undefined" && - (/Mac/.test(navigator.platform) || - (/AppleWebKit/.test(navigator.userAgent) && - /Mobile\/\w+/.test(navigator.userAgent))); - -export function formatKeyboardShortcut(shortcut: string) { - if (isAppleOS()) { - return shortcut.replace("Mod", "⌘"); - } else { - return shortcut.replace("Mod", "Ctrl"); - } -} From 9d6e7965c15377f2ff0560bf5826ab4a2134e33b Mon Sep 17 00:00:00 2001 From: yousefed Date: Mon, 4 Dec 2023 11:18:19 +0100 Subject: [PATCH 2/6] rename --- .../src/extensions/{@util => @shared}/BaseUiElementTypes.ts | 0 .../{@util => @shared}/suggestion/SuggestionItem.ts | 0 .../{@util => @shared}/suggestion/SuggestionPlugin.ts | 0 .../extensions/FormattingToolbar/FormattingToolbarPlugin.ts | 2 +- .../extensions/HyperlinkToolbar/HyperlinkToolbarPlugin.ts | 2 +- .../core/src/extensions/ImageToolbar/ImageToolbarPlugin.ts | 2 +- packages/core/src/extensions/SideMenu/SideMenuPlugin.ts | 2 +- packages/core/src/extensions/SlashMenu/BaseSlashMenuItem.ts | 2 +- packages/core/src/extensions/SlashMenu/SlashMenuPlugin.ts | 2 +- packages/core/src/index.ts | 6 +++--- 10 files changed, 9 insertions(+), 9 deletions(-) rename packages/core/src/extensions/{@util => @shared}/BaseUiElementTypes.ts (100%) rename packages/core/src/extensions/{@util => @shared}/suggestion/SuggestionItem.ts (100%) rename packages/core/src/extensions/{@util => @shared}/suggestion/SuggestionPlugin.ts (100%) diff --git a/packages/core/src/extensions/@util/BaseUiElementTypes.ts b/packages/core/src/extensions/@shared/BaseUiElementTypes.ts similarity index 100% rename from packages/core/src/extensions/@util/BaseUiElementTypes.ts rename to packages/core/src/extensions/@shared/BaseUiElementTypes.ts diff --git a/packages/core/src/extensions/@util/suggestion/SuggestionItem.ts b/packages/core/src/extensions/@shared/suggestion/SuggestionItem.ts similarity index 100% rename from packages/core/src/extensions/@util/suggestion/SuggestionItem.ts rename to packages/core/src/extensions/@shared/suggestion/SuggestionItem.ts diff --git a/packages/core/src/extensions/@util/suggestion/SuggestionPlugin.ts b/packages/core/src/extensions/@shared/suggestion/SuggestionPlugin.ts similarity index 100% rename from packages/core/src/extensions/@util/suggestion/SuggestionPlugin.ts rename to packages/core/src/extensions/@shared/suggestion/SuggestionPlugin.ts diff --git a/packages/core/src/extensions/FormattingToolbar/FormattingToolbarPlugin.ts b/packages/core/src/extensions/FormattingToolbar/FormattingToolbarPlugin.ts index 5e66ddfc51..548984f78c 100644 --- a/packages/core/src/extensions/FormattingToolbar/FormattingToolbarPlugin.ts +++ b/packages/core/src/extensions/FormattingToolbar/FormattingToolbarPlugin.ts @@ -9,7 +9,7 @@ import { StyleSchema } from "../../schema/styles/types"; import { BaseUiElementCallbacks, BaseUiElementState, -} from "../@util/BaseUiElementTypes"; +} from "../@shared/BaseUiElementTypes"; import { EventEmitter } from "../../@util/EventEmitter"; export type FormattingToolbarCallbacks = BaseUiElementCallbacks; diff --git a/packages/core/src/extensions/HyperlinkToolbar/HyperlinkToolbarPlugin.ts b/packages/core/src/extensions/HyperlinkToolbar/HyperlinkToolbarPlugin.ts index be0223e630..e9853c55e8 100644 --- a/packages/core/src/extensions/HyperlinkToolbar/HyperlinkToolbarPlugin.ts +++ b/packages/core/src/extensions/HyperlinkToolbar/HyperlinkToolbarPlugin.ts @@ -6,7 +6,7 @@ import { BlockNoteEditor } from "../../editor/BlockNoteEditor"; import { BlockSchema } from "../../schema/blocks/types"; import { InlineContentSchema } from "../../schema/inlineContent/types"; import { StyleSchema } from "../../schema/styles/types"; -import { BaseUiElementState } from "../@util/BaseUiElementTypes"; +import { BaseUiElementState } from "../@shared/BaseUiElementTypes"; import { EventEmitter } from "../../@util/EventEmitter"; export type HyperlinkToolbarState = BaseUiElementState & { diff --git a/packages/core/src/extensions/ImageToolbar/ImageToolbarPlugin.ts b/packages/core/src/extensions/ImageToolbar/ImageToolbarPlugin.ts index 83baa43827..4fc8bee1a2 100644 --- a/packages/core/src/extensions/ImageToolbar/ImageToolbarPlugin.ts +++ b/packages/core/src/extensions/ImageToolbar/ImageToolbarPlugin.ts @@ -8,7 +8,7 @@ import { StyleSchema } from "../../schema"; import { BaseUiElementCallbacks, BaseUiElementState, -} from "../@util/BaseUiElementTypes"; +} from "../@shared/BaseUiElementTypes"; import { EventEmitter } from "../../@util/EventEmitter"; export type ImageToolbarCallbacks = BaseUiElementCallbacks; diff --git a/packages/core/src/extensions/SideMenu/SideMenuPlugin.ts b/packages/core/src/extensions/SideMenu/SideMenuPlugin.ts index b111b83ea4..2fb2b9e792 100644 --- a/packages/core/src/extensions/SideMenu/SideMenuPlugin.ts +++ b/packages/core/src/extensions/SideMenu/SideMenuPlugin.ts @@ -9,7 +9,7 @@ import { cleanHTMLToMarkdown } from "../../api/exporters/markdown/markdownExport import { Block, BlockSchema } from "../../schema/blocks/types"; import { InlineContentSchema } from "../../schema/inlineContent/types"; import { StyleSchema } from "../../schema/styles/types"; -import { BaseUiElementState } from "../@util/BaseUiElementTypes"; +import { BaseUiElementState } from "../@shared/BaseUiElementTypes"; import { EventEmitter } from "../../@util/EventEmitter"; import { getBlockInfoFromPos } from "../../api/getBlockInfoFromPos"; import { slashMenuPluginKey } from "../SlashMenu/SlashMenuPlugin"; diff --git a/packages/core/src/extensions/SlashMenu/BaseSlashMenuItem.ts b/packages/core/src/extensions/SlashMenu/BaseSlashMenuItem.ts index 5910ea0a13..f3efcf0066 100644 --- a/packages/core/src/extensions/SlashMenu/BaseSlashMenuItem.ts +++ b/packages/core/src/extensions/SlashMenu/BaseSlashMenuItem.ts @@ -2,7 +2,7 @@ import { BlockNoteEditor } from "../../editor/BlockNoteEditor"; import { BlockSchema } from "../../schema/blocks/types"; import { InlineContentSchema } from "../../schema/inlineContent/types"; import { StyleSchema } from "../../schema/styles/types"; -import { SuggestionItem } from "../@util/suggestion/SuggestionItem"; +import { SuggestionItem } from "../@shared/suggestion/SuggestionItem"; export type BaseSlashMenuItem< BSchema extends BlockSchema, diff --git a/packages/core/src/extensions/SlashMenu/SlashMenuPlugin.ts b/packages/core/src/extensions/SlashMenu/SlashMenuPlugin.ts index d9e50de47f..eacaf33abe 100644 --- a/packages/core/src/extensions/SlashMenu/SlashMenuPlugin.ts +++ b/packages/core/src/extensions/SlashMenu/SlashMenuPlugin.ts @@ -8,7 +8,7 @@ import { EventEmitter } from "../../@util/EventEmitter"; import { SuggestionsMenuState, setupSuggestionsMenu, -} from "../@util/suggestion/SuggestionPlugin"; +} from "../@shared/suggestion/SuggestionPlugin"; import { BaseSlashMenuItem } from "./BaseSlashMenuItem"; export const slashMenuPluginKey = new PluginKey("SlashMenuPlugin"); diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 6939281ae8..ea6ec99041 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -17,9 +17,9 @@ export * from "./extensions/SlashMenu/SlashMenuPlugin"; export { getDefaultSlashMenuItems } from "./extensions/SlashMenu/defaultSlashMenuItems"; export * from "./extensions/TableHandles/TableHandlesPlugin"; export * from "./schema"; -export * from "./extensions/@util/BaseUiElementTypes"; -export type { SuggestionItem } from "./extensions/@util/suggestion/SuggestionItem"; -export * from "./extensions/@util/suggestion/SuggestionPlugin"; +export * from "./extensions/@shared/BaseUiElementTypes"; +export type { SuggestionItem } from "./extensions/@shared/suggestion/SuggestionItem"; +export * from "./extensions/@shared/suggestion/SuggestionPlugin"; export * from "./@util/browser"; // for testing from react (TODO: move): export * from "./api/nodeConversions/nodeConversions"; From c19b3de60b6dd5aa13a24e2ef079ff78cb2035e7 Mon Sep 17 00:00:00 2001 From: yousefed Date: Mon, 4 Dec 2023 13:57:48 +0100 Subject: [PATCH 3/6] fix import/no-cycle lint --- .eslintrc.js | 42 +++++++++++++------ .../blockManipulation.test.ts | 2 +- .../blockManipulation/blockManipulation.ts | 4 +- .../core/src/api/exporters/copyExtension.ts | 2 +- .../exporters/html/externalHTMLExporter.ts | 2 +- .../exporters/html/internalHTMLSerializer.ts | 2 +- .../html/util/sharedHTMLConversion.ts | 2 +- .../exporters/markdown/markdownExporter.ts | 6 +-- .../core/src/api/parsers/html/parseHTML.ts | 12 ++++-- .../src/api/parsers/markdown/parseMarkdown.ts | 7 +++- .../core/src/api/parsers/pasteExtension.ts | 2 +- .../ImageBlockContent/ImageBlockContent.ts | 2 +- .../core/src/blocks/defaultBlockHelpers.ts | 4 +- .../core/src/editor/BlockNoteExtensions.ts | 4 +- .../@shared/suggestion/SuggestionPlugin.ts | 8 ++-- .../FormattingToolbarPlugin.ts | 4 +- .../HyperlinkToolbarPlugin.ts | 4 +- .../ImageToolbar/ImageToolbarPlugin.ts | 13 +++--- .../src/extensions/SideMenu/SideMenuPlugin.ts | 6 +-- .../extensions/SlashMenu/BaseSlashMenuItem.ts | 2 +- .../extensions/SlashMenu/SlashMenuPlugin.ts | 4 +- .../SlashMenu/defaultSlashMenuItems.ts | 4 +- .../TableHandles/TableHandlesPlugin.ts | 12 +++--- packages/core/src/pm-nodes/BlockContainer.ts | 22 +++++----- packages/core/src/schema/blocks/createSpec.ts | 2 +- packages/core/src/schema/blocks/internal.ts | 6 +-- packages/core/src/schema/blocks/types.ts | 36 +--------------- .../core/src/schema/inlineContent/types.ts | 2 +- packages/core/src/schema/propTypes.ts | 32 ++++++++++++++ .../DefaultDropdowns/BlockTypeDropdown.tsx | 4 +- .../DefaultFormattingToolbar.tsx | 18 ++++---- .../DefaultHyperlinkToolbar.tsx | 2 +- .../ImageToolbar/DefaultImageToolbar.tsx | 2 +- .../DefaultButtons/AddBlockButton.tsx | 2 +- .../SideMenu/DefaultButtons/DragHandle.tsx | 2 +- .../components/SideMenu/DefaultSideMenu.tsx | 2 +- .../DefaultButtons/BlockColorsButton.tsx | 4 +- .../DefaultButtons/RemoveBlockButton.tsx | 2 +- .../components/SlashMenu/DefaultSlashMenu.tsx | 4 +- .../TableHandles/DefaultTableHandle.tsx | 2 +- .../components/TableHandles/TableHandle.tsx | 2 +- packages/react/src/editor/defaultThemes.ts | 2 +- packages/react/src/hooks/useEditorChange.ts | 2 +- .../react/src/hooks/useEditorContentChange.ts | 2 +- .../src/hooks/useEditorSelectionChange.ts | 2 +- 45 files changed, 166 insertions(+), 138 deletions(-) create mode 100644 packages/core/src/schema/propTypes.ts diff --git a/.eslintrc.js b/.eslintrc.js index e623220163..983f7ae31e 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,3 +1,7 @@ +const typeScriptExtensions = [".ts", ".cts", ".mts", ".tsx"]; + +const allExtensions = [...typeScriptExtensions, ".js", ".jsx"]; + module.exports = { root: true, extends: [ @@ -8,6 +12,18 @@ module.exports = { ], parser: "@typescript-eslint/parser", plugins: ["import", "@typescript-eslint"], + settings: { + "import/extensions": allExtensions, + "import/external-module-folders": ["node_modules", "node_modules/@types"], + "import/parsers": { + "@typescript-eslint/parser": typeScriptExtensions, + }, + "import/resolver": { + node: { + extensions: allExtensions, + }, + }, + }, rules: { curly: 1, "import/no-extraneous-dependencies": [ @@ -23,17 +39,19 @@ module.exports = { "@typescript-eslint/no-non-null-assertion": "off", "@typescript-eslint/no-explicit-any": "off", "@typescript-eslint/ban-ts-comment": "off", - "import/no-restricted-paths": [ - "error", - { - zones: [ - { - target: "types/**/*", - from: "src/**/*", - message: "Import from this module to types is not allowed.", - }, - ], - }, - ], + "import/no-cycle": "error", + // doesn't work: + // "import/no-restricted-paths": [ + // "error", + // { + // zones: [ + // { + // target: "./src/**/*", + // from: "./types/**/*", + // message: "Import from this module to types is not allowed.", + // }, + // ], + // }, + // ], }, }; diff --git a/packages/core/src/api/blockManipulation/blockManipulation.test.ts b/packages/core/src/api/blockManipulation/blockManipulation.test.ts index dba67ebd8e..c706ca2b51 100644 --- a/packages/core/src/api/blockManipulation/blockManipulation.test.ts +++ b/packages/core/src/api/blockManipulation/blockManipulation.test.ts @@ -1,10 +1,10 @@ import { afterEach, beforeEach, describe, expect, it } from "vitest"; -import { BlockNoteEditor } from "../../editor/BlockNoteEditor"; import { DefaultBlockSchema, DefaultInlineContentSchema, DefaultStyleSchema, } from "../../blocks/defaultBlocks"; +import type { BlockNoteEditor } from "../../editor/BlockNoteEditor"; import { Block, PartialBlock } from "../../schema/blocks/types"; let editor: BlockNoteEditor; diff --git a/packages/core/src/api/blockManipulation/blockManipulation.ts b/packages/core/src/api/blockManipulation/blockManipulation.ts index 45d03dda93..f891042a0b 100644 --- a/packages/core/src/api/blockManipulation/blockManipulation.ts +++ b/packages/core/src/api/blockManipulation/blockManipulation.ts @@ -1,12 +1,12 @@ import { Editor } from "@tiptap/core"; import { Node } from "prosemirror-model"; -import { BlockNoteEditor } from "../../editor/BlockNoteEditor"; import { BlockIdentifier, BlockSchema, PartialBlock, -} from "../../schema/blocks/types"; +} from "../../../types/src/schema/blocks/types"; +import type { BlockNoteEditor } from "../../editor/BlockNoteEditor"; import { InlineContentSchema } from "../../schema/inlineContent/types"; import { StyleSchema } from "../../schema/styles/types"; import { blockToNode } from "../nodeConversions/nodeConversions"; diff --git a/packages/core/src/api/exporters/copyExtension.ts b/packages/core/src/api/exporters/copyExtension.ts index facea76d9f..bb67edede4 100644 --- a/packages/core/src/api/exporters/copyExtension.ts +++ b/packages/core/src/api/exporters/copyExtension.ts @@ -1,7 +1,7 @@ import { Extension } from "@tiptap/core"; import { Plugin } from "prosemirror-state"; -import { BlockNoteEditor } from "../../editor/BlockNoteEditor"; +import type { BlockNoteEditor } from "../../editor/BlockNoteEditor"; import { BlockSchema } from "../../schema/blocks/types"; import { InlineContentSchema } from "../../schema/inlineContent/types"; import { StyleSchema } from "../../schema/styles/types"; diff --git a/packages/core/src/api/exporters/html/externalHTMLExporter.ts b/packages/core/src/api/exporters/html/externalHTMLExporter.ts index 5da74e65dd..8b4c8853bb 100644 --- a/packages/core/src/api/exporters/html/externalHTMLExporter.ts +++ b/packages/core/src/api/exporters/html/externalHTMLExporter.ts @@ -3,7 +3,7 @@ import rehypeParse from "rehype-parse"; import rehypeStringify from "rehype-stringify"; import { unified } from "unified"; -import { BlockNoteEditor } from "../../../editor/BlockNoteEditor"; +import type { BlockNoteEditor } from "../../../editor/BlockNoteEditor"; import { BlockSchema, PartialBlock } from "../../../schema/blocks/types"; import { InlineContentSchema } from "../../../schema/inlineContent/types"; import { StyleSchema } from "../../../schema/styles/types"; diff --git a/packages/core/src/api/exporters/html/internalHTMLSerializer.ts b/packages/core/src/api/exporters/html/internalHTMLSerializer.ts index b113fda025..5129be70f7 100644 --- a/packages/core/src/api/exporters/html/internalHTMLSerializer.ts +++ b/packages/core/src/api/exporters/html/internalHTMLSerializer.ts @@ -1,5 +1,5 @@ import { DOMSerializer, Fragment, Node, Schema } from "prosemirror-model"; -import { BlockNoteEditor } from "../../../editor/BlockNoteEditor"; +import type { BlockNoteEditor } from "../../../editor/BlockNoteEditor"; import { BlockSchema, PartialBlock } from "../../../schema/blocks/types"; import { InlineContentSchema } from "../../../schema/inlineContent/types"; import { StyleSchema } from "../../../schema/styles/types"; diff --git a/packages/core/src/api/exporters/html/util/sharedHTMLConversion.ts b/packages/core/src/api/exporters/html/util/sharedHTMLConversion.ts index d9fca237f0..a7265bd8b0 100644 --- a/packages/core/src/api/exporters/html/util/sharedHTMLConversion.ts +++ b/packages/core/src/api/exporters/html/util/sharedHTMLConversion.ts @@ -1,6 +1,6 @@ import { DOMSerializer, Fragment, Node } from "prosemirror-model"; -import { BlockNoteEditor } from "../../../../editor/BlockNoteEditor"; +import type { BlockNoteEditor } from "../../../../editor/BlockNoteEditor"; import { BlockSchema } from "../../../../schema/blocks/types"; import { InlineContentSchema } from "../../../../schema/inlineContent/types"; import { StyleSchema } from "../../../../schema/styles/types"; diff --git a/packages/core/src/api/exporters/markdown/markdownExporter.ts b/packages/core/src/api/exporters/markdown/markdownExporter.ts index 0c39d0d2e9..841ff6381e 100644 --- a/packages/core/src/api/exporters/markdown/markdownExporter.ts +++ b/packages/core/src/api/exporters/markdown/markdownExporter.ts @@ -4,14 +4,14 @@ import rehypeRemark from "rehype-remark"; import remarkGfm from "remark-gfm"; import remarkStringify from "remark-stringify"; import { unified } from "unified"; +import type { BlockNoteEditor } from "../../../editor/BlockNoteEditor"; import { Block, - BlockNoteEditor, BlockSchema, InlineContentSchema, StyleSchema, - createExternalHTMLExporter, -} from "../../.."; +} from "../../../schema"; +import { createExternalHTMLExporter } from "../html/externalHTMLExporter"; import { removeUnderlines } from "./removeUnderlinesRehypePlugin"; export function cleanHTMLToMarkdown(cleanHTMLString: string) { diff --git a/packages/core/src/api/parsers/html/parseHTML.ts b/packages/core/src/api/parsers/html/parseHTML.ts index dfd802157d..dad025f9dc 100644 --- a/packages/core/src/api/parsers/html/parseHTML.ts +++ b/packages/core/src/api/parsers/html/parseHTML.ts @@ -1,9 +1,13 @@ import { DOMParser, Schema } from "prosemirror-model"; -import { Block, BlockSchema, nodeToBlock } from "../../.."; -import { InlineContentSchema } from "../../../schema/inlineContent/types"; -import { StyleSchema } from "../../../schema/styles/types"; -import { nestedListsToBlockNoteStructure } from "./util/nestedLists"; +import { + Block, + BlockSchema, + InlineContentSchema, + StyleSchema, +} from "../../../schema"; +import { nodeToBlock } from "../../nodeConversions/nodeConversions"; +import { nestedListsToBlockNoteStructure } from "./util/nestedLists"; export async function HTMLToBlocks< BSchema extends BlockSchema, I extends InlineContentSchema, diff --git a/packages/core/src/api/parsers/markdown/parseMarkdown.ts b/packages/core/src/api/parsers/markdown/parseMarkdown.ts index 0bf367f166..6e4fab74e2 100644 --- a/packages/core/src/api/parsers/markdown/parseMarkdown.ts +++ b/packages/core/src/api/parsers/markdown/parseMarkdown.ts @@ -4,7 +4,12 @@ import remarkGfm from "remark-gfm"; import remarkParse from "remark-parse"; import remarkRehype, { defaultHandlers } from "remark-rehype"; import { unified } from "unified"; -import { Block, BlockSchema, InlineContentSchema, StyleSchema } from "../../.."; +import { + Block, + BlockSchema, + InlineContentSchema, + StyleSchema, +} from "../../../schema"; import { HTMLToBlocks } from "../html/parseHTML"; // modified version of https://github.com/syntax-tree/mdast-util-to-hast/blob/main/lib/handlers/code.js diff --git a/packages/core/src/api/parsers/pasteExtension.ts b/packages/core/src/api/parsers/pasteExtension.ts index 787630c1a7..1cb49e0cda 100644 --- a/packages/core/src/api/parsers/pasteExtension.ts +++ b/packages/core/src/api/parsers/pasteExtension.ts @@ -1,7 +1,7 @@ import { Extension } from "@tiptap/core"; import { Plugin } from "prosemirror-state"; -import { BlockNoteEditor } from "../../editor/BlockNoteEditor"; +import type { BlockNoteEditor } from "../../editor/BlockNoteEditor"; import { BlockSchema } from "../../schema/blocks/types"; import { InlineContentSchema } from "../../schema/inlineContent/types"; import { StyleSchema } from "../../schema/styles/types"; diff --git a/packages/core/src/blocks/ImageBlockContent/ImageBlockContent.ts b/packages/core/src/blocks/ImageBlockContent/ImageBlockContent.ts index 3289c725f1..0528c276fe 100644 --- a/packages/core/src/blocks/ImageBlockContent/ImageBlockContent.ts +++ b/packages/core/src/blocks/ImageBlockContent/ImageBlockContent.ts @@ -1,4 +1,4 @@ -import { BlockNoteEditor } from "../../editor/BlockNoteEditor"; +import type { BlockNoteEditor } from "../../editor/BlockNoteEditor"; import { imageToolbarPluginKey } from "../../extensions/ImageToolbar/ImageToolbarPlugin"; import { diff --git a/packages/core/src/blocks/defaultBlockHelpers.ts b/packages/core/src/blocks/defaultBlockHelpers.ts index 7f479a141e..b4d0ece881 100644 --- a/packages/core/src/blocks/defaultBlockHelpers.ts +++ b/packages/core/src/blocks/defaultBlockHelpers.ts @@ -1,9 +1,9 @@ -import { BlockNoteEditor } from "../editor/BlockNoteEditor"; +import { mergeCSSClasses } from "../@util/browser"; import { blockToNode } from "../api/nodeConversions/nodeConversions"; +import type { BlockNoteEditor } from "../editor/BlockNoteEditor"; import { Block, BlockSchema } from "../schema/blocks/types"; import { InlineContentSchema } from "../schema/inlineContent/types"; import { StyleSchema } from "../schema/styles/types"; -import { mergeCSSClasses } from "../@util/browser"; // Function that creates a ProseMirror `DOMOutputSpec` for a default block. // Since all default blocks have the same structure (`blockContent` div with a diff --git a/packages/core/src/editor/BlockNoteExtensions.ts b/packages/core/src/editor/BlockNoteExtensions.ts index 1d58f3b76f..da2da4e033 100644 --- a/packages/core/src/editor/BlockNoteExtensions.ts +++ b/packages/core/src/editor/BlockNoteExtensions.ts @@ -1,6 +1,6 @@ import { Extensions, extensions } from "@tiptap/core"; -import { BlockNoteEditor } from "./BlockNoteEditor"; +import type { BlockNoteEditor } from "./BlockNoteEditor"; import Collaboration from "@tiptap/extension-collaboration"; import CollaborationCursor from "@tiptap/extension-collaboration-cursor"; @@ -14,12 +14,12 @@ import * as Y from "yjs"; import { createCopyToClipboardExtension } from "../api/exporters/copyExtension"; import { createPasteFromClipboardExtension } from "../api/parsers/pasteExtension"; import { BackgroundColorExtension } from "../extensions/BackgroundColor/BackgroundColorExtension"; -import { BlockContainer, BlockGroup, Doc } from "../pm-nodes"; import { Placeholder } from "../extensions/Placeholder/PlaceholderExtension"; import { TextAlignmentExtension } from "../extensions/TextAlignment/TextAlignmentExtension"; import { TextColorExtension } from "../extensions/TextColor/TextColorExtension"; import { TrailingNode } from "../extensions/TrailingNode/TrailingNodeExtension"; import UniqueID from "../extensions/UniqueID/UniqueID"; +import { BlockContainer, BlockGroup, Doc } from "../pm-nodes"; import { BlockNoteDOMAttributes, BlockSchema, diff --git a/packages/core/src/extensions/@shared/suggestion/SuggestionPlugin.ts b/packages/core/src/extensions/@shared/suggestion/SuggestionPlugin.ts index 411c63f3cc..1f776d57ce 100644 --- a/packages/core/src/extensions/@shared/suggestion/SuggestionPlugin.ts +++ b/packages/core/src/extensions/@shared/suggestion/SuggestionPlugin.ts @@ -1,16 +1,14 @@ +import { findParentNode } from "@tiptap/core"; import { EditorState, Plugin, PluginKey } from "prosemirror-state"; import { Decoration, DecorationSet, EditorView } from "prosemirror-view"; -import { BlockNoteEditor } from "../../../editor/BlockNoteEditor"; +import type { BlockNoteEditor } from "../../../editor/BlockNoteEditor"; import { BlockSchema } from "../../../schema/blocks/types"; import { InlineContentSchema } from "../../../schema/inlineContent/types"; import { StyleSchema } from "../../../schema/styles/types"; import { BaseUiElementState } from "../BaseUiElementTypes"; import { SuggestionItem } from "./SuggestionItem"; -import {findParentNode} from "@tiptap/core"; -const findBlock = findParentNode( - (node) => node.type.name === "blockContainer" -); +const findBlock = findParentNode((node) => node.type.name === "blockContainer"); export type SuggestionsMenuState = BaseUiElementState & { diff --git a/packages/core/src/extensions/FormattingToolbar/FormattingToolbarPlugin.ts b/packages/core/src/extensions/FormattingToolbar/FormattingToolbarPlugin.ts index 548984f78c..54d47c4fb9 100644 --- a/packages/core/src/extensions/FormattingToolbar/FormattingToolbarPlugin.ts +++ b/packages/core/src/extensions/FormattingToolbar/FormattingToolbarPlugin.ts @@ -2,7 +2,8 @@ import { isNodeSelection, posToDOMRect } from "@tiptap/core"; import { EditorState, Plugin, PluginKey } from "prosemirror-state"; import { EditorView } from "prosemirror-view"; -import { BlockNoteEditor } from "../../editor/BlockNoteEditor"; +import { EventEmitter } from "../../@util/EventEmitter"; +import type { BlockNoteEditor } from "../../editor/BlockNoteEditor"; import { BlockSchema } from "../../schema/blocks/types"; import { InlineContentSchema } from "../../schema/inlineContent/types"; import { StyleSchema } from "../../schema/styles/types"; @@ -10,7 +11,6 @@ import { BaseUiElementCallbacks, BaseUiElementState, } from "../@shared/BaseUiElementTypes"; -import { EventEmitter } from "../../@util/EventEmitter"; export type FormattingToolbarCallbacks = BaseUiElementCallbacks; diff --git a/packages/core/src/extensions/HyperlinkToolbar/HyperlinkToolbarPlugin.ts b/packages/core/src/extensions/HyperlinkToolbar/HyperlinkToolbarPlugin.ts index e9853c55e8..f6976cfddb 100644 --- a/packages/core/src/extensions/HyperlinkToolbar/HyperlinkToolbarPlugin.ts +++ b/packages/core/src/extensions/HyperlinkToolbar/HyperlinkToolbarPlugin.ts @@ -2,12 +2,12 @@ import { getMarkRange, posToDOMRect, Range } from "@tiptap/core"; import { EditorView } from "@tiptap/pm/view"; import { Mark } from "prosemirror-model"; import { Plugin, PluginKey } from "prosemirror-state"; -import { BlockNoteEditor } from "../../editor/BlockNoteEditor"; +import { EventEmitter } from "../../@util/EventEmitter"; +import type { BlockNoteEditor } from "../../editor/BlockNoteEditor"; import { BlockSchema } from "../../schema/blocks/types"; import { InlineContentSchema } from "../../schema/inlineContent/types"; import { StyleSchema } from "../../schema/styles/types"; import { BaseUiElementState } from "../@shared/BaseUiElementTypes"; -import { EventEmitter } from "../../@util/EventEmitter"; export type HyperlinkToolbarState = BaseUiElementState & { // The hovered hyperlink's URL, and the text it's displayed with in the diff --git a/packages/core/src/extensions/ImageToolbar/ImageToolbarPlugin.ts b/packages/core/src/extensions/ImageToolbar/ImageToolbarPlugin.ts index 4fc8bee1a2..b6fff728a5 100644 --- a/packages/core/src/extensions/ImageToolbar/ImageToolbarPlugin.ts +++ b/packages/core/src/extensions/ImageToolbar/ImageToolbarPlugin.ts @@ -1,15 +1,18 @@ import { EditorState, Plugin, PluginKey } from "prosemirror-state"; import { EditorView } from "prosemirror-view"; -import { BlockNoteEditor } from "../../editor/BlockNoteEditor"; -import { BlockSchema, SpecificBlock } from "../../schema"; -import { InlineContentSchema } from "../../schema"; -import { StyleSchema } from "../../schema"; +import { EventEmitter } from "../../@util/EventEmitter"; +import type { BlockNoteEditor } from "../../editor/BlockNoteEditor"; +import { + BlockSchema, + InlineContentSchema, + SpecificBlock, + StyleSchema, +} from "../../schema"; import { BaseUiElementCallbacks, BaseUiElementState, } from "../@shared/BaseUiElementTypes"; -import { EventEmitter } from "../../@util/EventEmitter"; export type ImageToolbarCallbacks = BaseUiElementCallbacks; export type ImageToolbarState< diff --git a/packages/core/src/extensions/SideMenu/SideMenuPlugin.ts b/packages/core/src/extensions/SideMenu/SideMenuPlugin.ts index 2fb2b9e792..29b57c4a7c 100644 --- a/packages/core/src/extensions/SideMenu/SideMenuPlugin.ts +++ b/packages/core/src/extensions/SideMenu/SideMenuPlugin.ts @@ -2,16 +2,16 @@ import { PluginView } from "@tiptap/pm/state"; import { Node } from "prosemirror-model"; import { NodeSelection, Plugin, PluginKey, Selection } from "prosemirror-state"; import { EditorView } from "prosemirror-view"; -import { BlockNoteEditor } from "../../editor/BlockNoteEditor"; +import { EventEmitter } from "../../@util/EventEmitter"; import { createExternalHTMLExporter } from "../../api/exporters/html/externalHTMLExporter"; import { createInternalHTMLSerializer } from "../../api/exporters/html/internalHTMLSerializer"; import { cleanHTMLToMarkdown } from "../../api/exporters/markdown/markdownExporter"; +import { getBlockInfoFromPos } from "../../api/getBlockInfoFromPos"; +import type { BlockNoteEditor } from "../../editor/BlockNoteEditor"; import { Block, BlockSchema } from "../../schema/blocks/types"; import { InlineContentSchema } from "../../schema/inlineContent/types"; import { StyleSchema } from "../../schema/styles/types"; import { BaseUiElementState } from "../@shared/BaseUiElementTypes"; -import { EventEmitter } from "../../@util/EventEmitter"; -import { getBlockInfoFromPos } from "../../api/getBlockInfoFromPos"; import { slashMenuPluginKey } from "../SlashMenu/SlashMenuPlugin"; import { MultipleNodeSelection } from "./MultipleNodeSelection"; diff --git a/packages/core/src/extensions/SlashMenu/BaseSlashMenuItem.ts b/packages/core/src/extensions/SlashMenu/BaseSlashMenuItem.ts index f3efcf0066..4b585abc50 100644 --- a/packages/core/src/extensions/SlashMenu/BaseSlashMenuItem.ts +++ b/packages/core/src/extensions/SlashMenu/BaseSlashMenuItem.ts @@ -1,4 +1,4 @@ -import { BlockNoteEditor } from "../../editor/BlockNoteEditor"; +import type { BlockNoteEditor } from "../../editor/BlockNoteEditor"; import { BlockSchema } from "../../schema/blocks/types"; import { InlineContentSchema } from "../../schema/inlineContent/types"; import { StyleSchema } from "../../schema/styles/types"; diff --git a/packages/core/src/extensions/SlashMenu/SlashMenuPlugin.ts b/packages/core/src/extensions/SlashMenu/SlashMenuPlugin.ts index eacaf33abe..4df6d519be 100644 --- a/packages/core/src/extensions/SlashMenu/SlashMenuPlugin.ts +++ b/packages/core/src/extensions/SlashMenu/SlashMenuPlugin.ts @@ -1,10 +1,10 @@ import { Plugin, PluginKey } from "prosemirror-state"; -import { BlockNoteEditor } from "../../editor/BlockNoteEditor"; +import { EventEmitter } from "../../@util/EventEmitter"; +import type { BlockNoteEditor } from "../../editor/BlockNoteEditor"; import { BlockSchema } from "../../schema/blocks/types"; import { InlineContentSchema } from "../../schema/inlineContent/types"; import { StyleSchema } from "../../schema/styles/types"; -import { EventEmitter } from "../../@util/EventEmitter"; import { SuggestionsMenuState, setupSuggestionsMenu, diff --git a/packages/core/src/extensions/SlashMenu/defaultSlashMenuItems.ts b/packages/core/src/extensions/SlashMenu/defaultSlashMenuItems.ts index 76bbc6a721..07fab6864d 100644 --- a/packages/core/src/extensions/SlashMenu/defaultSlashMenuItems.ts +++ b/packages/core/src/extensions/SlashMenu/defaultSlashMenuItems.ts @@ -1,11 +1,11 @@ -import { BlockNoteEditor } from "../../editor/BlockNoteEditor"; +import { defaultBlockSchema } from "../../blocks/defaultBlocks"; +import type { BlockNoteEditor } from "../../editor/BlockNoteEditor"; import { Block, BlockSchema, PartialBlock } from "../../schema/blocks/types"; import { InlineContentSchema, isStyledTextInlineContent, } from "../../schema/inlineContent/types"; import { StyleSchema } from "../../schema/styles/types"; -import { defaultBlockSchema } from "../../blocks/defaultBlocks"; import { imageToolbarPluginKey } from "../ImageToolbar/ImageToolbarPlugin"; import { BaseSlashMenuItem } from "./BaseSlashMenuItem"; diff --git a/packages/core/src/extensions/TableHandles/TableHandlesPlugin.ts b/packages/core/src/extensions/TableHandles/TableHandlesPlugin.ts index 832917db4e..bd1b04a6ab 100644 --- a/packages/core/src/extensions/TableHandles/TableHandlesPlugin.ts +++ b/packages/core/src/extensions/TableHandles/TableHandlesPlugin.ts @@ -1,19 +1,19 @@ import { Plugin, PluginKey, PluginView } from "prosemirror-state"; import { Decoration, DecorationSet, EditorView } from "prosemirror-view"; +import { EventEmitter } from "../../@util/EventEmitter"; +import { nodeToBlock } from "../../api/nodeConversions/nodeConversions"; +import { DefaultBlockSchema } from "../../blocks/defaultBlocks"; +import type { BlockNoteEditor } from "../../editor/BlockNoteEditor"; import { Block, BlockFromConfigNoChildren, - BlockNoteEditor, BlockSchemaWithBlock, - DefaultBlockSchema, InlineContentSchema, PartialBlock, SpecificBlock, StyleSchema, - getDraggableBlockFromCoords, - nodeToBlock, -} from "../.."; -import { EventEmitter } from "../../@util/EventEmitter"; +} from "../../schema"; +import { getDraggableBlockFromCoords } from "../SideMenu/SideMenuPlugin"; let dragImageElement: HTMLElement | undefined; diff --git a/packages/core/src/pm-nodes/BlockContainer.ts b/packages/core/src/pm-nodes/BlockContainer.ts index c3ba709306..5bbf888c57 100644 --- a/packages/core/src/pm-nodes/BlockContainer.ts +++ b/packages/core/src/pm-nodes/BlockContainer.ts @@ -2,12 +2,17 @@ import { Node } from "@tiptap/core"; import { Fragment, Node as PMNode, Slice } from "prosemirror-model"; import { NodeSelection, TextSelection } from "prosemirror-state"; -import { BlockNoteEditor } from "../editor/BlockNoteEditor"; +import { mergeCSSClasses } from "../@util/browser"; +import { UnreachableCaseError } from "../@util/typescript"; +import { getBlockInfoFromPos } from "../api/getBlockInfoFromPos"; import { blockToNode, inlineContentToNodes, tableContentToNodes, } from "../api/nodeConversions/nodeConversions"; +import type { BlockNoteEditor } from "../editor/BlockNoteEditor"; +import { NonEditableBlockPlugin } from "../extensions/NonEditableBlocks/NonEditableBlockPlugin"; +import { PreviousBlockTypePlugin } from "../extensions/PreviousBlockType/PreviousBlockTypePlugin"; import { BlockNoteDOMAttributes, BlockSchema, @@ -15,19 +20,14 @@ import { } from "../schema/blocks/types"; import { InlineContentSchema } from "../schema/inlineContent/types"; import { StyleSchema } from "../schema/styles/types"; -import { mergeCSSClasses } from "../@util/browser"; -import { NonEditableBlockPlugin } from "../extensions/NonEditableBlocks/NonEditableBlockPlugin"; -import { PreviousBlockTypePlugin } from "../extensions/PreviousBlockType/PreviousBlockTypePlugin"; -import { getBlockInfoFromPos } from "../api/getBlockInfoFromPos"; -import {UnreachableCaseError} from "../@util/typescript"; // Object containing all possible block attributes. const BlockAttributes: Record = { - blockColor: "data-block-color", - blockStyle: "data-block-style", - id: "data-id", - depth: "data-depth", - depthChange: "data-depth-change", + blockColor: "data-block-color", + blockStyle: "data-block-style", + id: "data-id", + depth: "data-depth", + depthChange: "data-depth-change", }; declare module "@tiptap/core" { diff --git a/packages/core/src/schema/blocks/createSpec.ts b/packages/core/src/schema/blocks/createSpec.ts index 7aa250869e..eee2ac6788 100644 --- a/packages/core/src/schema/blocks/createSpec.ts +++ b/packages/core/src/schema/blocks/createSpec.ts @@ -1,5 +1,5 @@ import { ParseRule } from "@tiptap/pm/model"; -import { BlockNoteEditor } from "../../editor/BlockNoteEditor"; +import type { BlockNoteEditor } from "../../editor/BlockNoteEditor"; import { InlineContentSchema } from "../inlineContent/types"; import { StyleSchema } from "../styles/types"; import { diff --git a/packages/core/src/schema/blocks/internal.ts b/packages/core/src/schema/blocks/internal.ts index 067c5ae962..2fb32975ed 100644 --- a/packages/core/src/schema/blocks/internal.ts +++ b/packages/core/src/schema/blocks/internal.ts @@ -6,10 +6,10 @@ import { Node, NodeConfig, } from "@tiptap/core"; -import { BlockNoteEditor } from "../../editor/BlockNoteEditor"; -import { inheritedProps } from "../../blocks/defaultProps"; -import { defaultBlockToHTML } from "../../blocks/defaultBlockHelpers"; import { mergeCSSClasses } from "../../@util/browser"; +import { defaultBlockToHTML } from "../../blocks/defaultBlockHelpers"; +import { inheritedProps } from "../../blocks/defaultProps"; +import type { BlockNoteEditor } from "../../editor/BlockNoteEditor"; import { InlineContentSchema } from "../inlineContent/types"; import { StyleSchema } from "../styles/types"; import { diff --git a/packages/core/src/schema/blocks/types.ts b/packages/core/src/schema/blocks/types.ts index 177031b1b3..8601846be6 100644 --- a/packages/core/src/schema/blocks/types.ts +++ b/packages/core/src/schema/blocks/types.ts @@ -1,12 +1,13 @@ /** Define the main block types **/ import { Extension, Node } from "@tiptap/core"; -import { BlockNoteEditor } from "../../editor/BlockNoteEditor"; +import type { BlockNoteEditor } from "../../editor/BlockNoteEditor"; import { InlineContent, InlineContentSchema, PartialInlineContent, } from "../inlineContent/types"; +import { PropSchema } from "../propTypes"; import { StyleSchema } from "../styles/types"; export type BlockNoteDOMElement = @@ -20,39 +21,6 @@ export type BlockNoteDOMAttributes = Partial<{ [DOMElement in BlockNoteDOMElement]: Record; }>; -// Defines a single prop spec, which includes the default value the prop should -// take and possible values it can take. -export type PropSpec = { - values?: readonly PType[]; - default: PType; -}; - -// Defines multiple block prop specs. The key of each prop is the name of the -// prop, while the value is a corresponding prop spec. This should be included -// in a block config or schema. From a prop schema, we can derive both the props' -// internal implementation (as TipTap node attributes) and the type information -// for the external API. -export type PropSchema = Record>; - -// Defines Props objects for use in Block objects in the external API. Converts -// each prop spec into a union type of its possible values, or a string if no -// values are specified. -export type Props = { - [PName in keyof PSchema]: PSchema[PName]["default"] extends boolean - ? PSchema[PName]["values"] extends readonly boolean[] - ? PSchema[PName]["values"][number] - : boolean - : PSchema[PName]["default"] extends number - ? PSchema[PName]["values"] extends readonly number[] - ? PSchema[PName]["values"][number] - : number - : PSchema[PName]["default"] extends string - ? PSchema[PName]["values"] extends readonly string[] - ? PSchema[PName]["values"][number] - : string - : never; -}; - // BlockConfig contains the "schema" info about a Block type // i.e. what props it supports, what content it supports, etc. export type BlockConfig = { diff --git a/packages/core/src/schema/inlineContent/types.ts b/packages/core/src/schema/inlineContent/types.ts index b50622816d..eb4c852ab3 100644 --- a/packages/core/src/schema/inlineContent/types.ts +++ b/packages/core/src/schema/inlineContent/types.ts @@ -1,5 +1,5 @@ import { Node } from "@tiptap/core"; -import { PropSchema, Props } from "../blocks/types"; +import { PropSchema, Props } from "../propTypes"; import { StyleSchema, Styles } from "../styles/types"; export type CustomInlineContentConfig = { diff --git a/packages/core/src/schema/propTypes.ts b/packages/core/src/schema/propTypes.ts new file mode 100644 index 0000000000..2bf3e6dfc4 --- /dev/null +++ b/packages/core/src/schema/propTypes.ts @@ -0,0 +1,32 @@ +// Defines a single prop spec, which includes the default value the prop should +// take and possible values it can take. +export type PropSpec = { + values?: readonly PType[]; + default: PType; +}; + +// Defines multiple block prop specs. The key of each prop is the name of the +// prop, while the value is a corresponding prop spec. This should be included +// in a block config or schema. From a prop schema, we can derive both the props' +// internal implementation (as TipTap node attributes) and the type information +// for the external API. +export type PropSchema = Record>; + +// Defines Props objects for use in Block objects in the external API. Converts +// each prop spec into a union type of its possible values, or a string if no +// values are specified. +export type Props = { + [PName in keyof PSchema]: PSchema[PName]["default"] extends boolean + ? PSchema[PName]["values"] extends readonly boolean[] + ? PSchema[PName]["values"][number] + : boolean + : PSchema[PName]["default"] extends number + ? PSchema[PName]["values"] extends readonly number[] + ? PSchema[PName]["values"][number] + : number + : PSchema[PName]["default"] extends string + ? PSchema[PName]["values"] extends readonly string[] + ? PSchema[PName]["values"][number] + : string + : never; +}; diff --git a/packages/react/src/components/FormattingToolbar/DefaultDropdowns/BlockTypeDropdown.tsx b/packages/react/src/components/FormattingToolbar/DefaultDropdowns/BlockTypeDropdown.tsx index 761e8eeb3d..b92bf5fa91 100644 --- a/packages/react/src/components/FormattingToolbar/DefaultDropdowns/BlockTypeDropdown.tsx +++ b/packages/react/src/components/FormattingToolbar/DefaultDropdowns/BlockTypeDropdown.tsx @@ -10,10 +10,10 @@ import { RiText, } from "react-icons/ri"; -import { ToolbarDropdown } from "../../@shared/Toolbar/ToolbarDropdown"; -import { ToolbarDropdownItemProps } from "../../@shared/Toolbar/ToolbarDropdownItem"; import { useEditorChange } from "../../../hooks/useEditorChange"; import { useSelectedBlocks } from "../../../hooks/useSelectedBlocks"; +import { ToolbarDropdown } from "../../@shared/Toolbar/ToolbarDropdown"; +import type { ToolbarDropdownItemProps } from "../../@shared/Toolbar/ToolbarDropdownItem"; export type BlockTypeDropdownItem = { name: string; diff --git a/packages/react/src/components/FormattingToolbar/DefaultFormattingToolbar.tsx b/packages/react/src/components/FormattingToolbar/DefaultFormattingToolbar.tsx index 0431d650fe..b4bf79ff8b 100644 --- a/packages/react/src/components/FormattingToolbar/DefaultFormattingToolbar.tsx +++ b/packages/react/src/components/FormattingToolbar/DefaultFormattingToolbar.tsx @@ -1,21 +1,21 @@ import { BlockSchema } from "@blocknote/core"; -import { FormattingToolbarProps } from "./FormattingToolbarPositioner"; import { Toolbar } from "../@shared/Toolbar/Toolbar"; -import { - BlockTypeDropdown, - BlockTypeDropdownItem, -} from "./DefaultDropdowns/BlockTypeDropdown"; -import { ToggledStyleButton } from "./DefaultButtons/ToggledStyleButton"; -import { TextAlignButton } from "./DefaultButtons/TextAlignButton"; import { ColorStyleButton } from "./DefaultButtons/ColorStyleButton"; +import { CreateLinkButton } from "./DefaultButtons/CreateLinkButton"; +import { ImageCaptionButton } from "./DefaultButtons/ImageCaptionButton"; import { NestBlockButton, UnnestBlockButton, } from "./DefaultButtons/NestBlockButtons"; -import { CreateLinkButton } from "./DefaultButtons/CreateLinkButton"; import { ReplaceImageButton } from "./DefaultButtons/ReplaceImageButton"; -import { ImageCaptionButton } from "./DefaultButtons/ImageCaptionButton"; +import { TextAlignButton } from "./DefaultButtons/TextAlignButton"; +import { ToggledStyleButton } from "./DefaultButtons/ToggledStyleButton"; +import { + BlockTypeDropdown, + BlockTypeDropdownItem, +} from "./DefaultDropdowns/BlockTypeDropdown"; +import type { FormattingToolbarProps } from "./FormattingToolbarPositioner"; export const DefaultFormattingToolbar = ( props: FormattingToolbarProps & { diff --git a/packages/react/src/components/HyperlinkToolbar/DefaultHyperlinkToolbar.tsx b/packages/react/src/components/HyperlinkToolbar/DefaultHyperlinkToolbar.tsx index a1b7b26ceb..b070b08e96 100644 --- a/packages/react/src/components/HyperlinkToolbar/DefaultHyperlinkToolbar.tsx +++ b/packages/react/src/components/HyperlinkToolbar/DefaultHyperlinkToolbar.tsx @@ -6,7 +6,7 @@ import { StyleSchema } from "@blocknote/core"; import { Toolbar } from "../@shared/Toolbar/Toolbar"; import { ToolbarButton } from "../@shared/Toolbar/ToolbarButton"; import { EditHyperlinkMenu } from "./EditHyperlinkMenu/components/EditHyperlinkMenu"; -import { HyperlinkToolbarProps } from "./HyperlinkToolbarPositioner"; +import type { HyperlinkToolbarProps } from "./HyperlinkToolbarPositioner"; export const DefaultHyperlinkToolbar = < BSchema extends BlockSchema, diff --git a/packages/react/src/components/ImageToolbar/DefaultImageToolbar.tsx b/packages/react/src/components/ImageToolbar/DefaultImageToolbar.tsx index 774a5f5372..dbaa6f99d8 100644 --- a/packages/react/src/components/ImageToolbar/DefaultImageToolbar.tsx +++ b/packages/react/src/components/ImageToolbar/DefaultImageToolbar.tsx @@ -16,7 +16,7 @@ import { useState, } from "react"; import { Toolbar } from "../@shared/Toolbar/Toolbar"; -import { ImageToolbarProps } from "./ImageToolbarPositioner"; +import type { ImageToolbarProps } from "./ImageToolbarPositioner"; export const DefaultImageToolbar = ( props: ImageToolbarProps diff --git a/packages/react/src/components/SideMenu/DefaultButtons/AddBlockButton.tsx b/packages/react/src/components/SideMenu/DefaultButtons/AddBlockButton.tsx index 0dadb3aac2..ea7fba393f 100644 --- a/packages/react/src/components/SideMenu/DefaultButtons/AddBlockButton.tsx +++ b/packages/react/src/components/SideMenu/DefaultButtons/AddBlockButton.tsx @@ -1,7 +1,7 @@ import { BlockSchema } from "@blocknote/core"; import { AiOutlinePlus } from "react-icons/ai"; import { SideMenuButton } from "../SideMenuButton"; -import { SideMenuProps } from "../SideMenuPositioner"; +import type { SideMenuProps } from "../SideMenuPositioner"; export const AddBlockButton = ( props: SideMenuProps diff --git a/packages/react/src/components/SideMenu/DefaultButtons/DragHandle.tsx b/packages/react/src/components/SideMenu/DefaultButtons/DragHandle.tsx index 908b2a653c..7570405c33 100644 --- a/packages/react/src/components/SideMenu/DefaultButtons/DragHandle.tsx +++ b/packages/react/src/components/SideMenu/DefaultButtons/DragHandle.tsx @@ -3,7 +3,7 @@ import { Menu } from "@mantine/core"; import { MdDragIndicator } from "react-icons/md"; import { DefaultDragHandleMenu } from "../DragHandleMenu/DefaultDragHandleMenu"; import { SideMenuButton } from "../SideMenuButton"; -import { SideMenuProps } from "../SideMenuPositioner"; +import type { SideMenuProps } from "../SideMenuPositioner"; export const DragHandle = ( props: SideMenuProps diff --git a/packages/react/src/components/SideMenu/DefaultSideMenu.tsx b/packages/react/src/components/SideMenu/DefaultSideMenu.tsx index 1ae3fcb99e..9bdf66991e 100644 --- a/packages/react/src/components/SideMenu/DefaultSideMenu.tsx +++ b/packages/react/src/components/SideMenu/DefaultSideMenu.tsx @@ -4,7 +4,7 @@ import { StyleSchema } from "@blocknote/core"; import { AddBlockButton } from "./DefaultButtons/AddBlockButton"; import { DragHandle } from "./DefaultButtons/DragHandle"; import { SideMenu } from "./SideMenu"; -import { SideMenuProps } from "./SideMenuPositioner"; +import type { SideMenuProps } from "./SideMenuPositioner"; export const DefaultSideMenu = < BSchema extends BlockSchema, diff --git a/packages/react/src/components/SideMenu/DragHandleMenu/DefaultButtons/BlockColorsButton.tsx b/packages/react/src/components/SideMenu/DragHandleMenu/DefaultButtons/BlockColorsButton.tsx index f2c1cb0f23..8c9762d5e7 100644 --- a/packages/react/src/components/SideMenu/DragHandleMenu/DefaultButtons/BlockColorsButton.tsx +++ b/packages/react/src/components/SideMenu/DragHandleMenu/DefaultButtons/BlockColorsButton.tsx @@ -3,9 +3,9 @@ import { Box, Menu } from "@mantine/core"; import { ReactNode, useCallback, useRef, useState } from "react"; import { HiChevronRight } from "react-icons/hi"; -import { ColorPicker } from "../../../@shared/ColorPicker/ColorPicker"; import { usePreventMenuOverflow } from "../../../../hooks/usePreventMenuOverflow"; -import { DragHandleMenuProps } from "../DragHandleMenu"; +import { ColorPicker } from "../../../@shared/ColorPicker/ColorPicker"; +import type { DragHandleMenuProps } from "../DragHandleMenu"; import { DragHandleMenuItem } from "../DragHandleMenuItem"; export const BlockColorsButton = ( diff --git a/packages/react/src/components/SideMenu/DragHandleMenu/DefaultButtons/RemoveBlockButton.tsx b/packages/react/src/components/SideMenu/DragHandleMenu/DefaultButtons/RemoveBlockButton.tsx index 1b05fff510..1be12bd629 100644 --- a/packages/react/src/components/SideMenu/DragHandleMenu/DefaultButtons/RemoveBlockButton.tsx +++ b/packages/react/src/components/SideMenu/DragHandleMenu/DefaultButtons/RemoveBlockButton.tsx @@ -1,7 +1,7 @@ import { BlockSchema } from "@blocknote/core"; import { ReactNode } from "react"; -import { DragHandleMenuProps } from "../DragHandleMenu"; +import type { DragHandleMenuProps } from "../DragHandleMenu"; import { DragHandleMenuItem } from "../DragHandleMenuItem"; export const RemoveBlockButton = ( diff --git a/packages/react/src/components/SlashMenu/DefaultSlashMenu.tsx b/packages/react/src/components/SlashMenu/DefaultSlashMenu.tsx index 382b6c8964..f78e356cc1 100644 --- a/packages/react/src/components/SlashMenu/DefaultSlashMenu.tsx +++ b/packages/react/src/components/SlashMenu/DefaultSlashMenu.tsx @@ -1,9 +1,9 @@ import { createStyles, Menu } from "@mantine/core"; import * as _ from "lodash"; -import { SlashMenuItem } from "./SlashMenuItem"; -import { SlashMenuProps } from "./SlashMenuPositioner"; import { BlockSchema } from "@blocknote/core"; +import { SlashMenuItem } from "./SlashMenuItem"; +import type { SlashMenuProps } from "./SlashMenuPositioner"; export function DefaultSlashMenu( props: SlashMenuProps diff --git a/packages/react/src/components/TableHandles/DefaultTableHandle.tsx b/packages/react/src/components/TableHandles/DefaultTableHandle.tsx index e7e98d4f1b..ead2db25dd 100644 --- a/packages/react/src/components/TableHandles/DefaultTableHandle.tsx +++ b/packages/react/src/components/TableHandles/DefaultTableHandle.tsx @@ -1,7 +1,7 @@ import { BlockSchemaWithBlock, DefaultBlockSchema } from "@blocknote/core"; import { MdDragIndicator } from "react-icons/md"; import { TableHandle } from "./TableHandle"; -import { TableHandleProps } from "./TableHandlePositioner"; +import type { TableHandleProps } from "./TableHandlePositioner"; export const DefaultTableHandle = < BSchema extends BlockSchemaWithBlock<"table", DefaultBlockSchema["table"]> diff --git a/packages/react/src/components/TableHandles/TableHandle.tsx b/packages/react/src/components/TableHandles/TableHandle.tsx index aca6b9fbe5..8b0213adbc 100644 --- a/packages/react/src/components/TableHandles/TableHandle.tsx +++ b/packages/react/src/components/TableHandles/TableHandle.tsx @@ -2,7 +2,7 @@ import { BlockSchemaWithBlock, DefaultBlockSchema } from "@blocknote/core"; import { Menu, createStyles } from "@mantine/core"; import { ReactNode, useState } from "react"; import { DefaultTableHandleMenu } from "./TableHandleMenu/DefaultTableHandleMenu"; -import { TableHandleProps } from "./TableHandlePositioner"; +import type { TableHandleProps } from "./TableHandlePositioner"; export const TableHandle = < BSchema extends BlockSchemaWithBlock<"table", DefaultBlockSchema["table"]> diff --git a/packages/react/src/editor/defaultThemes.ts b/packages/react/src/editor/defaultThemes.ts index 639221f057..919b33586e 100644 --- a/packages/react/src/editor/defaultThemes.ts +++ b/packages/react/src/editor/defaultThemes.ts @@ -1,4 +1,4 @@ -import { Theme } from "../index"; +import { Theme } from "./BlockNoteTheme"; export const defaultColorScheme = [ "#FFFFFF", diff --git a/packages/react/src/hooks/useEditorChange.ts b/packages/react/src/hooks/useEditorChange.ts index 207c8fcd83..517f980205 100644 --- a/packages/react/src/hooks/useEditorChange.ts +++ b/packages/react/src/hooks/useEditorChange.ts @@ -1,4 +1,4 @@ -import { BlockNoteEditor } from "@blocknote/core"; +import type { BlockNoteEditor } from "@blocknote/core"; import { useEditorContentChange } from "./useEditorContentChange"; import { useEditorSelectionChange } from "./useEditorSelectionChange"; diff --git a/packages/react/src/hooks/useEditorContentChange.ts b/packages/react/src/hooks/useEditorContentChange.ts index ab98072142..2922258a60 100644 --- a/packages/react/src/hooks/useEditorContentChange.ts +++ b/packages/react/src/hooks/useEditorContentChange.ts @@ -1,4 +1,4 @@ -import { BlockNoteEditor } from "@blocknote/core"; +import type { BlockNoteEditor } from "@blocknote/core"; import { useEffect } from "react"; export function useEditorContentChange( diff --git a/packages/react/src/hooks/useEditorSelectionChange.ts b/packages/react/src/hooks/useEditorSelectionChange.ts index 000f12b060..dab5c227cf 100644 --- a/packages/react/src/hooks/useEditorSelectionChange.ts +++ b/packages/react/src/hooks/useEditorSelectionChange.ts @@ -1,4 +1,4 @@ -import { BlockNoteEditor } from "@blocknote/core"; +import type { BlockNoteEditor } from "@blocknote/core"; import { useEffect } from "react"; export function useEditorSelectionChange( From 125aae46944897e3922ad6bdad5ed9e537b21d74 Mon Sep 17 00:00:00 2001 From: yousefed Date: Mon, 4 Dec 2023 14:18:37 +0100 Subject: [PATCH 4/6] rename dirs --- .../core/src/api/nodeConversions/nodeConversions.ts | 2 +- packages/core/src/blocks/defaultBlockHelpers.ts | 2 +- packages/core/src/editor/BlockNoteEditor.ts | 4 ++-- .../BaseUiElementTypes.ts | 0 packages/core/src/extensions-shared/README.md | 3 +++ .../suggestion/SuggestionItem.ts | 0 .../suggestion/SuggestionPlugin.ts | 8 ++++---- .../FormattingToolbar/FormattingToolbarPlugin.ts | 4 ++-- .../HyperlinkToolbar/HyperlinkToolbarPlugin.ts | 4 ++-- .../src/extensions/ImageToolbar/ImageToolbarPlugin.ts | 4 ++-- .../core/src/extensions/SideMenu/SideMenuPlugin.ts | 4 ++-- .../core/src/extensions/SlashMenu/BaseSlashMenuItem.ts | 2 +- .../core/src/extensions/SlashMenu/SlashMenuPlugin.ts | 4 ++-- .../src/extensions/TableHandles/TableHandlesPlugin.ts | 2 +- packages/core/src/index.ts | 10 +++++----- packages/core/src/pm-nodes/BlockContainer.ts | 4 ++-- packages/core/src/pm-nodes/BlockGroup.ts | 2 +- packages/core/src/schema/blocks/internal.ts | 2 +- packages/core/src/schema/styles/createSpec.ts | 2 +- packages/core/src/{@util => util}/EventEmitter.ts | 0 packages/core/src/{@util => util}/README.md | 0 packages/core/src/{@util => util}/browser.ts | 0 packages/core/src/{@util => util}/typescript.ts | 0 .../ColorPicker/ColorIcon.tsx | 0 .../ColorPicker/ColorPicker.tsx | 0 .../@shared => components-shared}/Toolbar/Toolbar.tsx | 0 .../Toolbar/ToolbarButton.tsx | 0 .../Toolbar/ToolbarDropdown.tsx | 2 +- .../Toolbar/ToolbarDropdownItem.tsx | 0 .../Toolbar/ToolbarDropdownTarget.tsx | 0 .../Toolbar/ToolbarInputDropdown.tsx | 0 .../Toolbar/ToolbarInputDropdownButton.tsx | 0 .../Toolbar/ToolbarInputDropdownItem.tsx | 0 .../Tooltip/TooltipContent.tsx | 0 .../DefaultButtons/ColorStyleButton.tsx | 6 +++--- .../DefaultButtons/CreateLinkButton.tsx | 4 ++-- .../DefaultButtons/ImageCaptionButton.tsx | 8 ++++---- .../DefaultButtons/NestBlockButtons.tsx | 2 +- .../DefaultButtons/ReplaceImageButton.tsx | 2 +- .../DefaultButtons/TextAlignButton.tsx | 2 +- .../DefaultButtons/ToggledStyleButton.tsx | 2 +- .../DefaultDropdowns/BlockTypeDropdown.tsx | 4 ++-- .../FormattingToolbar/DefaultFormattingToolbar.tsx | 2 +- .../HyperlinkToolbar/DefaultHyperlinkToolbar.tsx | 4 ++-- .../EditHyperlinkMenu/components/EditHyperlinkMenu.tsx | 4 ++-- .../components/ImageToolbar/DefaultImageToolbar.tsx | 2 +- .../DefaultButtons/BlockColorsButton.tsx | 2 +- packages/react/src/index.ts | 6 +++--- 48 files changed, 59 insertions(+), 56 deletions(-) rename packages/core/src/{extensions/@shared => extensions-shared}/BaseUiElementTypes.ts (100%) create mode 100644 packages/core/src/extensions-shared/README.md rename packages/core/src/{extensions/@shared => extensions-shared}/suggestion/SuggestionItem.ts (100%) rename packages/core/src/{extensions/@shared => extensions-shared}/suggestion/SuggestionPlugin.ts (98%) rename packages/core/src/{@util => util}/EventEmitter.ts (100%) rename packages/core/src/{@util => util}/README.md (100%) rename packages/core/src/{@util => util}/browser.ts (100%) rename packages/core/src/{@util => util}/typescript.ts (100%) rename packages/react/src/{components/@shared => components-shared}/ColorPicker/ColorIcon.tsx (100%) rename packages/react/src/{components/@shared => components-shared}/ColorPicker/ColorPicker.tsx (100%) rename packages/react/src/{components/@shared => components-shared}/Toolbar/Toolbar.tsx (100%) rename packages/react/src/{components/@shared => components-shared}/Toolbar/ToolbarButton.tsx (100%) rename packages/react/src/{components/@shared => components-shared}/Toolbar/ToolbarDropdown.tsx (93%) rename packages/react/src/{components/@shared => components-shared}/Toolbar/ToolbarDropdownItem.tsx (100%) rename packages/react/src/{components/@shared => components-shared}/Toolbar/ToolbarDropdownTarget.tsx (100%) rename packages/react/src/{components/@shared => components-shared}/Toolbar/ToolbarInputDropdown.tsx (100%) rename packages/react/src/{components/@shared => components-shared}/Toolbar/ToolbarInputDropdownButton.tsx (100%) rename packages/react/src/{components/@shared => components-shared}/Toolbar/ToolbarInputDropdownItem.tsx (100%) rename packages/react/src/{components/@shared => components-shared}/Tooltip/TooltipContent.tsx (100%) diff --git a/packages/core/src/api/nodeConversions/nodeConversions.ts b/packages/core/src/api/nodeConversions/nodeConversions.ts index 0935dc1594..7e6e1321a1 100644 --- a/packages/core/src/api/nodeConversions/nodeConversions.ts +++ b/packages/core/src/api/nodeConversions/nodeConversions.ts @@ -25,7 +25,7 @@ import { } from "../../schema/inlineContent/types"; import { StyleSchema, Styles } from "../../schema/styles/types"; -import {UnreachableCaseError} from "../../@util/typescript"; +import {UnreachableCaseError} from "../../util/typescript"; /** * Convert a StyledText inline element to a diff --git a/packages/core/src/blocks/defaultBlockHelpers.ts b/packages/core/src/blocks/defaultBlockHelpers.ts index b4d0ece881..12a2d098af 100644 --- a/packages/core/src/blocks/defaultBlockHelpers.ts +++ b/packages/core/src/blocks/defaultBlockHelpers.ts @@ -1,4 +1,4 @@ -import { mergeCSSClasses } from "../@util/browser"; +import { mergeCSSClasses } from "../util/browser"; import { blockToNode } from "../api/nodeConversions/nodeConversions"; import type { BlockNoteEditor } from "../editor/BlockNoteEditor"; import { Block, BlockSchema } from "../schema/blocks/types"; diff --git a/packages/core/src/editor/BlockNoteEditor.ts b/packages/core/src/editor/BlockNoteEditor.ts index fe63398e1e..7e7f5f5e7e 100644 --- a/packages/core/src/editor/BlockNoteEditor.ts +++ b/packages/core/src/editor/BlockNoteEditor.ts @@ -68,9 +68,9 @@ import { InlineContentSpecs, } from "../schema/inlineContent/types"; import { getStyleSchemaFromSpecs } from "../schema/styles/internal"; -import { mergeCSSClasses } from "../@util/browser"; +import { mergeCSSClasses } from "../util/browser"; import { transformPasted } from "./transformPasted"; -import {UnreachableCaseError} from "../@util/typescript"; +import {UnreachableCaseError} from "../util/typescript"; export type BlockNoteEditorOptions< BSpecs extends BlockSpecs, diff --git a/packages/core/src/extensions/@shared/BaseUiElementTypes.ts b/packages/core/src/extensions-shared/BaseUiElementTypes.ts similarity index 100% rename from packages/core/src/extensions/@shared/BaseUiElementTypes.ts rename to packages/core/src/extensions-shared/BaseUiElementTypes.ts diff --git a/packages/core/src/extensions-shared/README.md b/packages/core/src/extensions-shared/README.md new file mode 100644 index 0000000000..89c300fd7d --- /dev/null +++ b/packages/core/src/extensions-shared/README.md @@ -0,0 +1,3 @@ +### @blocknote/core/src/extensions-shared + +Helper functions / base plugins for @blocknote/core/src/extensions \ No newline at end of file diff --git a/packages/core/src/extensions/@shared/suggestion/SuggestionItem.ts b/packages/core/src/extensions-shared/suggestion/SuggestionItem.ts similarity index 100% rename from packages/core/src/extensions/@shared/suggestion/SuggestionItem.ts rename to packages/core/src/extensions-shared/suggestion/SuggestionItem.ts diff --git a/packages/core/src/extensions/@shared/suggestion/SuggestionPlugin.ts b/packages/core/src/extensions-shared/suggestion/SuggestionPlugin.ts similarity index 98% rename from packages/core/src/extensions/@shared/suggestion/SuggestionPlugin.ts rename to packages/core/src/extensions-shared/suggestion/SuggestionPlugin.ts index 1f776d57ce..522a0ad8b6 100644 --- a/packages/core/src/extensions/@shared/suggestion/SuggestionPlugin.ts +++ b/packages/core/src/extensions-shared/suggestion/SuggestionPlugin.ts @@ -1,10 +1,10 @@ import { findParentNode } from "@tiptap/core"; import { EditorState, Plugin, PluginKey } from "prosemirror-state"; import { Decoration, DecorationSet, EditorView } from "prosemirror-view"; -import type { BlockNoteEditor } from "../../../editor/BlockNoteEditor"; -import { BlockSchema } from "../../../schema/blocks/types"; -import { InlineContentSchema } from "../../../schema/inlineContent/types"; -import { StyleSchema } from "../../../schema/styles/types"; +import type { BlockNoteEditor } from "../../editor/BlockNoteEditor"; +import { BlockSchema } from "../../schema/blocks/types"; +import { InlineContentSchema } from "../../schema/inlineContent/types"; +import { StyleSchema } from "../../schema/styles/types"; import { BaseUiElementState } from "../BaseUiElementTypes"; import { SuggestionItem } from "./SuggestionItem"; diff --git a/packages/core/src/extensions/FormattingToolbar/FormattingToolbarPlugin.ts b/packages/core/src/extensions/FormattingToolbar/FormattingToolbarPlugin.ts index 54d47c4fb9..9ab9095bf8 100644 --- a/packages/core/src/extensions/FormattingToolbar/FormattingToolbarPlugin.ts +++ b/packages/core/src/extensions/FormattingToolbar/FormattingToolbarPlugin.ts @@ -2,7 +2,7 @@ import { isNodeSelection, posToDOMRect } from "@tiptap/core"; import { EditorState, Plugin, PluginKey } from "prosemirror-state"; import { EditorView } from "prosemirror-view"; -import { EventEmitter } from "../../@util/EventEmitter"; +import { EventEmitter } from "../../util/EventEmitter"; import type { BlockNoteEditor } from "../../editor/BlockNoteEditor"; import { BlockSchema } from "../../schema/blocks/types"; import { InlineContentSchema } from "../../schema/inlineContent/types"; @@ -10,7 +10,7 @@ import { StyleSchema } from "../../schema/styles/types"; import { BaseUiElementCallbacks, BaseUiElementState, -} from "../@shared/BaseUiElementTypes"; +} from "../../extensions-shared/BaseUiElementTypes"; export type FormattingToolbarCallbacks = BaseUiElementCallbacks; diff --git a/packages/core/src/extensions/HyperlinkToolbar/HyperlinkToolbarPlugin.ts b/packages/core/src/extensions/HyperlinkToolbar/HyperlinkToolbarPlugin.ts index f6976cfddb..e60a9d8f7e 100644 --- a/packages/core/src/extensions/HyperlinkToolbar/HyperlinkToolbarPlugin.ts +++ b/packages/core/src/extensions/HyperlinkToolbar/HyperlinkToolbarPlugin.ts @@ -2,12 +2,12 @@ import { getMarkRange, posToDOMRect, Range } from "@tiptap/core"; import { EditorView } from "@tiptap/pm/view"; import { Mark } from "prosemirror-model"; import { Plugin, PluginKey } from "prosemirror-state"; -import { EventEmitter } from "../../@util/EventEmitter"; +import { EventEmitter } from "../../util/EventEmitter"; import type { BlockNoteEditor } from "../../editor/BlockNoteEditor"; import { BlockSchema } from "../../schema/blocks/types"; import { InlineContentSchema } from "../../schema/inlineContent/types"; import { StyleSchema } from "../../schema/styles/types"; -import { BaseUiElementState } from "../@shared/BaseUiElementTypes"; +import { BaseUiElementState } from "../../extensions-shared/BaseUiElementTypes"; export type HyperlinkToolbarState = BaseUiElementState & { // The hovered hyperlink's URL, and the text it's displayed with in the diff --git a/packages/core/src/extensions/ImageToolbar/ImageToolbarPlugin.ts b/packages/core/src/extensions/ImageToolbar/ImageToolbarPlugin.ts index b6fff728a5..98fe041755 100644 --- a/packages/core/src/extensions/ImageToolbar/ImageToolbarPlugin.ts +++ b/packages/core/src/extensions/ImageToolbar/ImageToolbarPlugin.ts @@ -1,7 +1,7 @@ import { EditorState, Plugin, PluginKey } from "prosemirror-state"; import { EditorView } from "prosemirror-view"; -import { EventEmitter } from "../../@util/EventEmitter"; +import { EventEmitter } from "../../util/EventEmitter"; import type { BlockNoteEditor } from "../../editor/BlockNoteEditor"; import { BlockSchema, @@ -12,7 +12,7 @@ import { import { BaseUiElementCallbacks, BaseUiElementState, -} from "../@shared/BaseUiElementTypes"; +} from "../../extensions-shared/BaseUiElementTypes"; export type ImageToolbarCallbacks = BaseUiElementCallbacks; export type ImageToolbarState< diff --git a/packages/core/src/extensions/SideMenu/SideMenuPlugin.ts b/packages/core/src/extensions/SideMenu/SideMenuPlugin.ts index 29b57c4a7c..80467f42e7 100644 --- a/packages/core/src/extensions/SideMenu/SideMenuPlugin.ts +++ b/packages/core/src/extensions/SideMenu/SideMenuPlugin.ts @@ -2,7 +2,7 @@ import { PluginView } from "@tiptap/pm/state"; import { Node } from "prosemirror-model"; import { NodeSelection, Plugin, PluginKey, Selection } from "prosemirror-state"; import { EditorView } from "prosemirror-view"; -import { EventEmitter } from "../../@util/EventEmitter"; +import { EventEmitter } from "../../util/EventEmitter"; import { createExternalHTMLExporter } from "../../api/exporters/html/externalHTMLExporter"; import { createInternalHTMLSerializer } from "../../api/exporters/html/internalHTMLSerializer"; import { cleanHTMLToMarkdown } from "../../api/exporters/markdown/markdownExporter"; @@ -11,7 +11,7 @@ import type { BlockNoteEditor } from "../../editor/BlockNoteEditor"; import { Block, BlockSchema } from "../../schema/blocks/types"; import { InlineContentSchema } from "../../schema/inlineContent/types"; import { StyleSchema } from "../../schema/styles/types"; -import { BaseUiElementState } from "../@shared/BaseUiElementTypes"; +import { BaseUiElementState } from "../../extensions-shared/BaseUiElementTypes"; import { slashMenuPluginKey } from "../SlashMenu/SlashMenuPlugin"; import { MultipleNodeSelection } from "./MultipleNodeSelection"; diff --git a/packages/core/src/extensions/SlashMenu/BaseSlashMenuItem.ts b/packages/core/src/extensions/SlashMenu/BaseSlashMenuItem.ts index 4b585abc50..2f9695a800 100644 --- a/packages/core/src/extensions/SlashMenu/BaseSlashMenuItem.ts +++ b/packages/core/src/extensions/SlashMenu/BaseSlashMenuItem.ts @@ -2,7 +2,7 @@ import type { BlockNoteEditor } from "../../editor/BlockNoteEditor"; import { BlockSchema } from "../../schema/blocks/types"; import { InlineContentSchema } from "../../schema/inlineContent/types"; import { StyleSchema } from "../../schema/styles/types"; -import { SuggestionItem } from "../@shared/suggestion/SuggestionItem"; +import { SuggestionItem } from "../../extensions-shared/suggestion/SuggestionItem"; export type BaseSlashMenuItem< BSchema extends BlockSchema, diff --git a/packages/core/src/extensions/SlashMenu/SlashMenuPlugin.ts b/packages/core/src/extensions/SlashMenu/SlashMenuPlugin.ts index 4df6d519be..560bc4dc5b 100644 --- a/packages/core/src/extensions/SlashMenu/SlashMenuPlugin.ts +++ b/packages/core/src/extensions/SlashMenu/SlashMenuPlugin.ts @@ -1,6 +1,6 @@ import { Plugin, PluginKey } from "prosemirror-state"; -import { EventEmitter } from "../../@util/EventEmitter"; +import { EventEmitter } from "../../util/EventEmitter"; import type { BlockNoteEditor } from "../../editor/BlockNoteEditor"; import { BlockSchema } from "../../schema/blocks/types"; import { InlineContentSchema } from "../../schema/inlineContent/types"; @@ -8,7 +8,7 @@ import { StyleSchema } from "../../schema/styles/types"; import { SuggestionsMenuState, setupSuggestionsMenu, -} from "../@shared/suggestion/SuggestionPlugin"; +} from "../../extensions-shared/suggestion/SuggestionPlugin"; import { BaseSlashMenuItem } from "./BaseSlashMenuItem"; export const slashMenuPluginKey = new PluginKey("SlashMenuPlugin"); diff --git a/packages/core/src/extensions/TableHandles/TableHandlesPlugin.ts b/packages/core/src/extensions/TableHandles/TableHandlesPlugin.ts index bd1b04a6ab..9a8f03615e 100644 --- a/packages/core/src/extensions/TableHandles/TableHandlesPlugin.ts +++ b/packages/core/src/extensions/TableHandles/TableHandlesPlugin.ts @@ -1,6 +1,6 @@ import { Plugin, PluginKey, PluginView } from "prosemirror-state"; import { Decoration, DecorationSet, EditorView } from "prosemirror-view"; -import { EventEmitter } from "../../@util/EventEmitter"; +import { EventEmitter } from "../../util/EventEmitter"; import { nodeToBlock } from "../../api/nodeConversions/nodeConversions"; import { DefaultBlockSchema } from "../../blocks/defaultBlocks"; import type { BlockNoteEditor } from "../../editor/BlockNoteEditor"; diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index ea6ec99041..1215911200 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -17,12 +17,12 @@ export * from "./extensions/SlashMenu/SlashMenuPlugin"; export { getDefaultSlashMenuItems } from "./extensions/SlashMenu/defaultSlashMenuItems"; export * from "./extensions/TableHandles/TableHandlesPlugin"; export * from "./schema"; -export * from "./extensions/@shared/BaseUiElementTypes"; -export type { SuggestionItem } from "./extensions/@shared/suggestion/SuggestionItem"; -export * from "./extensions/@shared/suggestion/SuggestionPlugin"; -export * from "./@util/browser"; +export * from "./extensions-shared/BaseUiElementTypes"; +export type { SuggestionItem } from "./extensions-shared/suggestion/SuggestionItem"; +export * from "./extensions-shared/suggestion/SuggestionPlugin"; +export * from "./util/browser"; // for testing from react (TODO: move): export * from "./api/nodeConversions/nodeConversions"; export * from "./api/testUtil/partialBlockTestUtil"; export * from "./extensions/UniqueID/UniqueID"; -export {UnreachableCaseError} from "./@util/typescript"; +export {UnreachableCaseError} from "./util/typescript"; diff --git a/packages/core/src/pm-nodes/BlockContainer.ts b/packages/core/src/pm-nodes/BlockContainer.ts index 5bbf888c57..a06edc621e 100644 --- a/packages/core/src/pm-nodes/BlockContainer.ts +++ b/packages/core/src/pm-nodes/BlockContainer.ts @@ -2,8 +2,8 @@ import { Node } from "@tiptap/core"; import { Fragment, Node as PMNode, Slice } from "prosemirror-model"; import { NodeSelection, TextSelection } from "prosemirror-state"; -import { mergeCSSClasses } from "../@util/browser"; -import { UnreachableCaseError } from "../@util/typescript"; +import { mergeCSSClasses } from "../util/browser"; +import { UnreachableCaseError } from "../util/typescript"; import { getBlockInfoFromPos } from "../api/getBlockInfoFromPos"; import { blockToNode, diff --git a/packages/core/src/pm-nodes/BlockGroup.ts b/packages/core/src/pm-nodes/BlockGroup.ts index 4b4863e6f0..eeb7e159f8 100644 --- a/packages/core/src/pm-nodes/BlockGroup.ts +++ b/packages/core/src/pm-nodes/BlockGroup.ts @@ -1,6 +1,6 @@ import { Node } from "@tiptap/core"; import { BlockNoteDOMAttributes } from "../schema/blocks/types"; -import { mergeCSSClasses } from "../@util/browser"; +import { mergeCSSClasses } from "../util/browser"; export const BlockGroup = Node.create<{ domAttributes?: BlockNoteDOMAttributes; diff --git a/packages/core/src/schema/blocks/internal.ts b/packages/core/src/schema/blocks/internal.ts index 2fb32975ed..ee37f82d83 100644 --- a/packages/core/src/schema/blocks/internal.ts +++ b/packages/core/src/schema/blocks/internal.ts @@ -6,7 +6,7 @@ import { Node, NodeConfig, } from "@tiptap/core"; -import { mergeCSSClasses } from "../../@util/browser"; +import { mergeCSSClasses } from "../../util/browser"; import { defaultBlockToHTML } from "../../blocks/defaultBlockHelpers"; import { inheritedProps } from "../../blocks/defaultProps"; import type { BlockNoteEditor } from "../../editor/BlockNoteEditor"; diff --git a/packages/core/src/schema/styles/createSpec.ts b/packages/core/src/schema/styles/createSpec.ts index caecabd6f4..37d7424d28 100644 --- a/packages/core/src/schema/styles/createSpec.ts +++ b/packages/core/src/schema/styles/createSpec.ts @@ -6,7 +6,7 @@ import { stylePropsToAttributes, } from "./internal"; import { StyleConfig, StyleSpec } from "./types"; -import {UnreachableCaseError} from "../../@util/typescript"; +import {UnreachableCaseError} from "../../util/typescript"; export type CustomStyleImplementation = { render: T["propSchema"] extends "boolean" diff --git a/packages/core/src/@util/EventEmitter.ts b/packages/core/src/util/EventEmitter.ts similarity index 100% rename from packages/core/src/@util/EventEmitter.ts rename to packages/core/src/util/EventEmitter.ts diff --git a/packages/core/src/@util/README.md b/packages/core/src/util/README.md similarity index 100% rename from packages/core/src/@util/README.md rename to packages/core/src/util/README.md diff --git a/packages/core/src/@util/browser.ts b/packages/core/src/util/browser.ts similarity index 100% rename from packages/core/src/@util/browser.ts rename to packages/core/src/util/browser.ts diff --git a/packages/core/src/@util/typescript.ts b/packages/core/src/util/typescript.ts similarity index 100% rename from packages/core/src/@util/typescript.ts rename to packages/core/src/util/typescript.ts diff --git a/packages/react/src/components/@shared/ColorPicker/ColorIcon.tsx b/packages/react/src/components-shared/ColorPicker/ColorIcon.tsx similarity index 100% rename from packages/react/src/components/@shared/ColorPicker/ColorIcon.tsx rename to packages/react/src/components-shared/ColorPicker/ColorIcon.tsx diff --git a/packages/react/src/components/@shared/ColorPicker/ColorPicker.tsx b/packages/react/src/components-shared/ColorPicker/ColorPicker.tsx similarity index 100% rename from packages/react/src/components/@shared/ColorPicker/ColorPicker.tsx rename to packages/react/src/components-shared/ColorPicker/ColorPicker.tsx diff --git a/packages/react/src/components/@shared/Toolbar/Toolbar.tsx b/packages/react/src/components-shared/Toolbar/Toolbar.tsx similarity index 100% rename from packages/react/src/components/@shared/Toolbar/Toolbar.tsx rename to packages/react/src/components-shared/Toolbar/Toolbar.tsx diff --git a/packages/react/src/components/@shared/Toolbar/ToolbarButton.tsx b/packages/react/src/components-shared/Toolbar/ToolbarButton.tsx similarity index 100% rename from packages/react/src/components/@shared/Toolbar/ToolbarButton.tsx rename to packages/react/src/components-shared/Toolbar/ToolbarButton.tsx diff --git a/packages/react/src/components/@shared/Toolbar/ToolbarDropdown.tsx b/packages/react/src/components-shared/Toolbar/ToolbarDropdown.tsx similarity index 93% rename from packages/react/src/components/@shared/Toolbar/ToolbarDropdown.tsx rename to packages/react/src/components-shared/Toolbar/ToolbarDropdown.tsx index 176c72faa3..890d4734dd 100644 --- a/packages/react/src/components/@shared/Toolbar/ToolbarDropdown.tsx +++ b/packages/react/src/components-shared/Toolbar/ToolbarDropdown.tsx @@ -4,7 +4,7 @@ import { ToolbarDropdownItemProps, } from "./ToolbarDropdownItem"; import { ToolbarDropdownTarget } from "./ToolbarDropdownTarget"; -import { usePreventMenuOverflow } from "../../../hooks/usePreventMenuOverflow"; +import { usePreventMenuOverflow } from "../../hooks/usePreventMenuOverflow"; export type ToolbarDropdownProps = { items: ToolbarDropdownItemProps[]; diff --git a/packages/react/src/components/@shared/Toolbar/ToolbarDropdownItem.tsx b/packages/react/src/components-shared/Toolbar/ToolbarDropdownItem.tsx similarity index 100% rename from packages/react/src/components/@shared/Toolbar/ToolbarDropdownItem.tsx rename to packages/react/src/components-shared/Toolbar/ToolbarDropdownItem.tsx diff --git a/packages/react/src/components/@shared/Toolbar/ToolbarDropdownTarget.tsx b/packages/react/src/components-shared/Toolbar/ToolbarDropdownTarget.tsx similarity index 100% rename from packages/react/src/components/@shared/Toolbar/ToolbarDropdownTarget.tsx rename to packages/react/src/components-shared/Toolbar/ToolbarDropdownTarget.tsx diff --git a/packages/react/src/components/@shared/Toolbar/ToolbarInputDropdown.tsx b/packages/react/src/components-shared/Toolbar/ToolbarInputDropdown.tsx similarity index 100% rename from packages/react/src/components/@shared/Toolbar/ToolbarInputDropdown.tsx rename to packages/react/src/components-shared/Toolbar/ToolbarInputDropdown.tsx diff --git a/packages/react/src/components/@shared/Toolbar/ToolbarInputDropdownButton.tsx b/packages/react/src/components-shared/Toolbar/ToolbarInputDropdownButton.tsx similarity index 100% rename from packages/react/src/components/@shared/Toolbar/ToolbarInputDropdownButton.tsx rename to packages/react/src/components-shared/Toolbar/ToolbarInputDropdownButton.tsx diff --git a/packages/react/src/components/@shared/Toolbar/ToolbarInputDropdownItem.tsx b/packages/react/src/components-shared/Toolbar/ToolbarInputDropdownItem.tsx similarity index 100% rename from packages/react/src/components/@shared/Toolbar/ToolbarInputDropdownItem.tsx rename to packages/react/src/components-shared/Toolbar/ToolbarInputDropdownItem.tsx diff --git a/packages/react/src/components/@shared/Tooltip/TooltipContent.tsx b/packages/react/src/components-shared/Tooltip/TooltipContent.tsx similarity index 100% rename from packages/react/src/components/@shared/Tooltip/TooltipContent.tsx rename to packages/react/src/components-shared/Tooltip/TooltipContent.tsx diff --git a/packages/react/src/components/FormattingToolbar/DefaultButtons/ColorStyleButton.tsx b/packages/react/src/components/FormattingToolbar/DefaultButtons/ColorStyleButton.tsx index b9446f7bca..3fad508d24 100644 --- a/packages/react/src/components/FormattingToolbar/DefaultButtons/ColorStyleButton.tsx +++ b/packages/react/src/components/FormattingToolbar/DefaultButtons/ColorStyleButton.tsx @@ -7,9 +7,9 @@ import { import { Menu } from "@mantine/core"; import { useCallback, useMemo, useState } from "react"; -import { ColorIcon } from "../../@shared/ColorPicker/ColorIcon"; -import { ColorPicker } from "../../@shared/ColorPicker/ColorPicker"; -import { ToolbarButton } from "../../@shared/Toolbar/ToolbarButton"; +import { ColorIcon } from "../../../components-shared/ColorPicker/ColorIcon"; +import { ColorPicker } from "../../../components-shared/ColorPicker/ColorPicker"; +import { ToolbarButton } from "../../../components-shared/Toolbar/ToolbarButton"; import { useEditorChange } from "../../../hooks/useEditorChange"; import { usePreventMenuOverflow } from "../../../hooks/usePreventMenuOverflow"; import { useSelectedBlocks } from "../../../hooks/useSelectedBlocks"; diff --git a/packages/react/src/components/FormattingToolbar/DefaultButtons/CreateLinkButton.tsx b/packages/react/src/components/FormattingToolbar/DefaultButtons/CreateLinkButton.tsx index 15867b008a..df3cdb0a90 100644 --- a/packages/react/src/components/FormattingToolbar/DefaultButtons/CreateLinkButton.tsx +++ b/packages/react/src/components/FormattingToolbar/DefaultButtons/CreateLinkButton.tsx @@ -2,8 +2,8 @@ import { useCallback, useMemo, useState } from "react"; import { BlockNoteEditor, BlockSchema } from "@blocknote/core"; import { RiLink } from "react-icons/ri"; -import { ToolbarInputDropdownButton } from "../../@shared/Toolbar/ToolbarInputDropdownButton"; -import { ToolbarButton } from "../../@shared/Toolbar/ToolbarButton"; +import { ToolbarInputDropdownButton } from "../../../components-shared/Toolbar/ToolbarInputDropdownButton"; +import { ToolbarButton } from "../../../components-shared/Toolbar/ToolbarButton"; import { EditHyperlinkMenu } from "../../HyperlinkToolbar/EditHyperlinkMenu/components/EditHyperlinkMenu"; import { useSelectedBlocks } from "../../../hooks/useSelectedBlocks"; import { useEditorChange } from "../../../hooks/useEditorChange"; diff --git a/packages/react/src/components/FormattingToolbar/DefaultButtons/ImageCaptionButton.tsx b/packages/react/src/components/FormattingToolbar/DefaultButtons/ImageCaptionButton.tsx index a806ede4b3..509e54e0a1 100644 --- a/packages/react/src/components/FormattingToolbar/DefaultButtons/ImageCaptionButton.tsx +++ b/packages/react/src/components/FormattingToolbar/DefaultButtons/ImageCaptionButton.tsx @@ -9,10 +9,10 @@ import { } from "react"; import { RiText } from "react-icons/ri"; -import { ToolbarButton } from "../../@shared/Toolbar/ToolbarButton"; -import { ToolbarInputDropdown } from "../../@shared/Toolbar/ToolbarInputDropdown"; -import { ToolbarInputDropdownButton } from "../../@shared/Toolbar/ToolbarInputDropdownButton"; -import { ToolbarInputDropdownItem } from "../../@shared/Toolbar/ToolbarInputDropdownItem"; +import { ToolbarButton } from "../../../components-shared/Toolbar/ToolbarButton"; +import { ToolbarInputDropdown } from "../../../components-shared/Toolbar/ToolbarInputDropdown"; +import { ToolbarInputDropdownButton } from "../../../components-shared/Toolbar/ToolbarInputDropdownButton"; +import { ToolbarInputDropdownItem } from "../../../components-shared/Toolbar/ToolbarInputDropdownItem"; import { useSelectedBlocks } from "../../../hooks/useSelectedBlocks"; export const ImageCaptionButton = (props: { diff --git a/packages/react/src/components/FormattingToolbar/DefaultButtons/NestBlockButtons.tsx b/packages/react/src/components/FormattingToolbar/DefaultButtons/NestBlockButtons.tsx index 6c9d2a7647..57f72124c3 100644 --- a/packages/react/src/components/FormattingToolbar/DefaultButtons/NestBlockButtons.tsx +++ b/packages/react/src/components/FormattingToolbar/DefaultButtons/NestBlockButtons.tsx @@ -2,7 +2,7 @@ import { useCallback, useState } from "react"; import { BlockNoteEditor, BlockSchema } from "@blocknote/core"; import { RiIndentDecrease, RiIndentIncrease } from "react-icons/ri"; -import { ToolbarButton } from "../../@shared/Toolbar/ToolbarButton"; +import { ToolbarButton } from "../../../components-shared/Toolbar/ToolbarButton"; import { useEditorChange } from "../../../hooks/useEditorChange"; import { formatKeyboardShortcut } from "@blocknote/core"; diff --git a/packages/react/src/components/FormattingToolbar/DefaultButtons/ReplaceImageButton.tsx b/packages/react/src/components/FormattingToolbar/DefaultButtons/ReplaceImageButton.tsx index 7a5b69090d..c684b03770 100644 --- a/packages/react/src/components/FormattingToolbar/DefaultButtons/ReplaceImageButton.tsx +++ b/packages/react/src/components/FormattingToolbar/DefaultButtons/ReplaceImageButton.tsx @@ -4,7 +4,7 @@ import { useEffect, useState } from "react"; import { RiImageEditFill } from "react-icons/ri"; import { DefaultImageToolbar } from "../../ImageToolbar/DefaultImageToolbar"; -import { ToolbarButton } from "../../@shared/Toolbar/ToolbarButton"; +import { ToolbarButton } from "../../../components-shared/Toolbar/ToolbarButton"; import { useSelectedBlocks } from "../../../hooks/useSelectedBlocks"; export const ReplaceImageButton = (props: { diff --git a/packages/react/src/components/FormattingToolbar/DefaultButtons/TextAlignButton.tsx b/packages/react/src/components/FormattingToolbar/DefaultButtons/TextAlignButton.tsx index 5915c30db3..145711e522 100644 --- a/packages/react/src/components/FormattingToolbar/DefaultButtons/TextAlignButton.tsx +++ b/packages/react/src/components/FormattingToolbar/DefaultButtons/TextAlignButton.tsx @@ -13,7 +13,7 @@ import { RiAlignRight, } from "react-icons/ri"; -import { ToolbarButton } from "../../@shared/Toolbar/ToolbarButton"; +import { ToolbarButton } from "../../../components-shared/Toolbar/ToolbarButton"; import { useSelectedBlocks } from "../../../hooks/useSelectedBlocks"; type TextAlignment = DefaultProps["textAlignment"]; diff --git a/packages/react/src/components/FormattingToolbar/DefaultButtons/ToggledStyleButton.tsx b/packages/react/src/components/FormattingToolbar/DefaultButtons/ToggledStyleButton.tsx index 99e552168f..53a51ca958 100644 --- a/packages/react/src/components/FormattingToolbar/DefaultButtons/ToggledStyleButton.tsx +++ b/packages/react/src/components/FormattingToolbar/DefaultButtons/ToggledStyleButton.tsx @@ -13,7 +13,7 @@ import { } from "react-icons/ri"; import { StyleSchema } from "@blocknote/core"; -import { ToolbarButton } from "../../@shared/Toolbar/ToolbarButton"; +import { ToolbarButton } from "../../../components-shared/Toolbar/ToolbarButton"; import { useEditorChange } from "../../../hooks/useEditorChange"; import { useSelectedBlocks } from "../../../hooks/useSelectedBlocks"; import { formatKeyboardShortcut } from "@blocknote/core"; diff --git a/packages/react/src/components/FormattingToolbar/DefaultDropdowns/BlockTypeDropdown.tsx b/packages/react/src/components/FormattingToolbar/DefaultDropdowns/BlockTypeDropdown.tsx index b92bf5fa91..613c3cf513 100644 --- a/packages/react/src/components/FormattingToolbar/DefaultDropdowns/BlockTypeDropdown.tsx +++ b/packages/react/src/components/FormattingToolbar/DefaultDropdowns/BlockTypeDropdown.tsx @@ -12,8 +12,8 @@ import { import { useEditorChange } from "../../../hooks/useEditorChange"; import { useSelectedBlocks } from "../../../hooks/useSelectedBlocks"; -import { ToolbarDropdown } from "../../@shared/Toolbar/ToolbarDropdown"; -import type { ToolbarDropdownItemProps } from "../../@shared/Toolbar/ToolbarDropdownItem"; +import { ToolbarDropdown } from "../../../components-shared/Toolbar/ToolbarDropdown"; +import type { ToolbarDropdownItemProps } from "../../../components-shared/Toolbar/ToolbarDropdownItem"; export type BlockTypeDropdownItem = { name: string; diff --git a/packages/react/src/components/FormattingToolbar/DefaultFormattingToolbar.tsx b/packages/react/src/components/FormattingToolbar/DefaultFormattingToolbar.tsx index b4bf79ff8b..ca0cffbc06 100644 --- a/packages/react/src/components/FormattingToolbar/DefaultFormattingToolbar.tsx +++ b/packages/react/src/components/FormattingToolbar/DefaultFormattingToolbar.tsx @@ -1,6 +1,6 @@ import { BlockSchema } from "@blocknote/core"; -import { Toolbar } from "../@shared/Toolbar/Toolbar"; +import { Toolbar } from "../../components-shared/Toolbar/Toolbar"; import { ColorStyleButton } from "./DefaultButtons/ColorStyleButton"; import { CreateLinkButton } from "./DefaultButtons/CreateLinkButton"; import { ImageCaptionButton } from "./DefaultButtons/ImageCaptionButton"; diff --git a/packages/react/src/components/HyperlinkToolbar/DefaultHyperlinkToolbar.tsx b/packages/react/src/components/HyperlinkToolbar/DefaultHyperlinkToolbar.tsx index b070b08e96..4e9e72f1ce 100644 --- a/packages/react/src/components/HyperlinkToolbar/DefaultHyperlinkToolbar.tsx +++ b/packages/react/src/components/HyperlinkToolbar/DefaultHyperlinkToolbar.tsx @@ -3,8 +3,8 @@ import { useRef, useState } from "react"; import { RiExternalLinkFill, RiLinkUnlink } from "react-icons/ri"; import { StyleSchema } from "@blocknote/core"; -import { Toolbar } from "../@shared/Toolbar/Toolbar"; -import { ToolbarButton } from "../@shared/Toolbar/ToolbarButton"; +import { Toolbar } from "../../components-shared/Toolbar/Toolbar"; +import { ToolbarButton } from "../../components-shared/Toolbar/ToolbarButton"; import { EditHyperlinkMenu } from "./EditHyperlinkMenu/components/EditHyperlinkMenu"; import type { HyperlinkToolbarProps } from "./HyperlinkToolbarPositioner"; diff --git a/packages/react/src/components/HyperlinkToolbar/EditHyperlinkMenu/components/EditHyperlinkMenu.tsx b/packages/react/src/components/HyperlinkToolbar/EditHyperlinkMenu/components/EditHyperlinkMenu.tsx index b6ec78c11a..82ecb898dd 100644 --- a/packages/react/src/components/HyperlinkToolbar/EditHyperlinkMenu/components/EditHyperlinkMenu.tsx +++ b/packages/react/src/components/HyperlinkToolbar/EditHyperlinkMenu/components/EditHyperlinkMenu.tsx @@ -8,8 +8,8 @@ import { useState, } from "react"; import { RiLink, RiText } from "react-icons/ri"; -import { ToolbarInputDropdown } from "../../../@shared/Toolbar/ToolbarInputDropdown"; -import { ToolbarInputDropdownItem } from "../../../@shared/Toolbar/ToolbarInputDropdownItem"; +import { ToolbarInputDropdown } from "../../../../components-shared/Toolbar/ToolbarInputDropdown"; +import { ToolbarInputDropdownItem } from "../../../../components-shared/Toolbar/ToolbarInputDropdownItem"; export type EditHyperlinkMenuProps = { url: string; diff --git a/packages/react/src/components/ImageToolbar/DefaultImageToolbar.tsx b/packages/react/src/components/ImageToolbar/DefaultImageToolbar.tsx index dbaa6f99d8..ad639076b6 100644 --- a/packages/react/src/components/ImageToolbar/DefaultImageToolbar.tsx +++ b/packages/react/src/components/ImageToolbar/DefaultImageToolbar.tsx @@ -15,7 +15,7 @@ import { useEffect, useState, } from "react"; -import { Toolbar } from "../@shared/Toolbar/Toolbar"; +import { Toolbar } from "../../components-shared/Toolbar/Toolbar"; import type { ImageToolbarProps } from "./ImageToolbarPositioner"; export const DefaultImageToolbar = ( diff --git a/packages/react/src/components/SideMenu/DragHandleMenu/DefaultButtons/BlockColorsButton.tsx b/packages/react/src/components/SideMenu/DragHandleMenu/DefaultButtons/BlockColorsButton.tsx index 8c9762d5e7..7800df7b97 100644 --- a/packages/react/src/components/SideMenu/DragHandleMenu/DefaultButtons/BlockColorsButton.tsx +++ b/packages/react/src/components/SideMenu/DragHandleMenu/DefaultButtons/BlockColorsButton.tsx @@ -4,7 +4,7 @@ import { ReactNode, useCallback, useRef, useState } from "react"; import { HiChevronRight } from "react-icons/hi"; import { usePreventMenuOverflow } from "../../../../hooks/usePreventMenuOverflow"; -import { ColorPicker } from "../../../@shared/ColorPicker/ColorPicker"; +import { ColorPicker } from "../../../../components-shared/ColorPicker/ColorPicker"; import type { DragHandleMenuProps } from "../DragHandleMenu"; import { DragHandleMenuItem } from "../DragHandleMenuItem"; diff --git a/packages/react/src/index.ts b/packages/react/src/index.ts index fb9938356f..cce489d53c 100644 --- a/packages/react/src/index.ts +++ b/packages/react/src/index.ts @@ -36,9 +36,9 @@ export * from "./slashMenuItems/defaultReactSlashMenuItems"; export * from "./components/ImageToolbar/DefaultImageToolbar"; export * from "./components/ImageToolbar/ImageToolbarPositioner"; -export * from "./components/@shared/Toolbar/Toolbar"; -export * from "./components/@shared/Toolbar/ToolbarButton"; -export * from "./components/@shared/Toolbar/ToolbarDropdown"; +export * from "./components-shared/Toolbar/Toolbar"; +export * from "./components-shared/Toolbar/ToolbarButton"; +export * from "./components-shared/Toolbar/ToolbarDropdown"; export * from "./hooks/useActiveStyles"; export * from "./hooks/useBlockNote"; From 7e5b124db2e49ce1dbc6b1180bdb7c11e45635b5 Mon Sep 17 00:00:00 2001 From: yousefed Date: Mon, 4 Dec 2023 14:38:19 +0100 Subject: [PATCH 5/6] fix build --- .../blockManipulation.test.ts | 2 +- .../blockManipulation/blockManipulation.ts | 8 +++--- .../core/src/api/exporters/copyExtension.ts | 4 +-- .../exporters/html/externalHTMLExporter.ts | 9 ++++--- .../exporters/html/internalHTMLSerializer.ts | 9 ++++--- .../html/util/sharedHTMLConversion.ts | 8 +++--- .../api/nodeConversions/nodeConversions.ts | 25 ++++++++++--------- .../core/src/api/parsers/pasteExtension.ts | 4 +-- .../HeadingBlockContent.ts | 6 ++--- .../ImageBlockContent/ImageBlockContent.ts | 12 ++++----- .../BulletListItemBlockContent.ts | 6 ++--- .../NumberedListItemBlockContent.ts | 6 ++--- .../ParagraphBlockContent.ts | 4 +-- .../TableBlockContent/TableBlockContent.ts | 4 +-- .../core/src/blocks/defaultBlockHelpers.ts | 11 +++++--- packages/core/src/blocks/defaultBlocks.ts | 16 ++++++------ packages/core/src/blocks/defaultProps.ts | 5 +++- packages/core/src/editor/BlockNoteEditor.ts | 24 ++++++++---------- .../core/src/editor/BlockNoteExtensions.ts | 7 +++--- .../core/src/editor/cursorPositionTypes.ts | 9 ++++--- packages/core/src/editor/selectionTypes.ts | 9 ++++--- .../suggestion/SuggestionPlugin.ts | 4 +-- .../BackgroundColor/BackgroundColorMark.ts | 2 +- .../FormattingToolbarPlugin.ts | 6 ++--- .../HyperlinkToolbarPlugin.ts | 6 ++--- .../src/extensions/SideMenu/SideMenuPlugin.ts | 11 +++++--- .../extensions/SlashMenu/BaseSlashMenuItem.ts | 4 +-- .../extensions/SlashMenu/SlashMenuPlugin.ts | 6 ++--- .../SlashMenu/defaultSlashMenuItems.ts | 8 +++--- .../src/extensions/TextColor/TextColorMark.ts | 2 +- packages/core/src/index.ts | 17 +++++++------ packages/core/src/pm-nodes/BlockContainer.ts | 10 ++++---- packages/core/src/pm-nodes/BlockGroup.ts | 2 +- packages/core/src/schema/blocks/internal.ts | 10 +++----- packages/core/src/schema/blocks/types.ts | 2 +- packages/core/src/schema/index.ts | 3 ++- .../src/schema/inlineContent/createSpec.ts | 2 +- .../core/src/schema/inlineContent/internal.ts | 5 ++-- packages/core/src/util/string.ts | 3 +++ 39 files changed, 150 insertions(+), 141 deletions(-) create mode 100644 packages/core/src/util/string.ts diff --git a/packages/core/src/api/blockManipulation/blockManipulation.test.ts b/packages/core/src/api/blockManipulation/blockManipulation.test.ts index c706ca2b51..f7d0521e2a 100644 --- a/packages/core/src/api/blockManipulation/blockManipulation.test.ts +++ b/packages/core/src/api/blockManipulation/blockManipulation.test.ts @@ -4,7 +4,7 @@ import { DefaultInlineContentSchema, DefaultStyleSchema, } from "../../blocks/defaultBlocks"; -import type { BlockNoteEditor } from "../../editor/BlockNoteEditor"; +import { BlockNoteEditor } from "../../editor/BlockNoteEditor"; import { Block, PartialBlock } from "../../schema/blocks/types"; let editor: BlockNoteEditor; diff --git a/packages/core/src/api/blockManipulation/blockManipulation.ts b/packages/core/src/api/blockManipulation/blockManipulation.ts index f891042a0b..6f528b9b14 100644 --- a/packages/core/src/api/blockManipulation/blockManipulation.ts +++ b/packages/core/src/api/blockManipulation/blockManipulation.ts @@ -1,14 +1,14 @@ import { Editor } from "@tiptap/core"; import { Node } from "prosemirror-model"; +import type { BlockNoteEditor } from "../../editor/BlockNoteEditor"; import { BlockIdentifier, BlockSchema, + InlineContentSchema, PartialBlock, -} from "../../../types/src/schema/blocks/types"; -import type { BlockNoteEditor } from "../../editor/BlockNoteEditor"; -import { InlineContentSchema } from "../../schema/inlineContent/types"; -import { StyleSchema } from "../../schema/styles/types"; + StyleSchema, +} from "../../schema"; import { blockToNode } from "../nodeConversions/nodeConversions"; import { getNodeById } from "../nodeUtil"; diff --git a/packages/core/src/api/exporters/copyExtension.ts b/packages/core/src/api/exporters/copyExtension.ts index bb67edede4..0326e24b5c 100644 --- a/packages/core/src/api/exporters/copyExtension.ts +++ b/packages/core/src/api/exporters/copyExtension.ts @@ -2,9 +2,7 @@ import { Extension } from "@tiptap/core"; import { Plugin } from "prosemirror-state"; import type { BlockNoteEditor } from "../../editor/BlockNoteEditor"; -import { BlockSchema } from "../../schema/blocks/types"; -import { InlineContentSchema } from "../../schema/inlineContent/types"; -import { StyleSchema } from "../../schema/styles/types"; +import { BlockSchema, InlineContentSchema, StyleSchema } from "../../schema"; import { createExternalHTMLExporter } from "./html/externalHTMLExporter"; import { createInternalHTMLSerializer } from "./html/internalHTMLSerializer"; import { cleanHTMLToMarkdown } from "./markdown/markdownExporter"; diff --git a/packages/core/src/api/exporters/html/externalHTMLExporter.ts b/packages/core/src/api/exporters/html/externalHTMLExporter.ts index 8b4c8853bb..43b591b610 100644 --- a/packages/core/src/api/exporters/html/externalHTMLExporter.ts +++ b/packages/core/src/api/exporters/html/externalHTMLExporter.ts @@ -4,9 +4,12 @@ import rehypeStringify from "rehype-stringify"; import { unified } from "unified"; import type { BlockNoteEditor } from "../../../editor/BlockNoteEditor"; -import { BlockSchema, PartialBlock } from "../../../schema/blocks/types"; -import { InlineContentSchema } from "../../../schema/inlineContent/types"; -import { StyleSchema } from "../../../schema/styles/types"; +import { + BlockSchema, + InlineContentSchema, + PartialBlock, + StyleSchema, +} from "../../../schema"; import { blockToNode } from "../../nodeConversions/nodeConversions"; import { serializeNodeInner, diff --git a/packages/core/src/api/exporters/html/internalHTMLSerializer.ts b/packages/core/src/api/exporters/html/internalHTMLSerializer.ts index 5129be70f7..a635819caa 100644 --- a/packages/core/src/api/exporters/html/internalHTMLSerializer.ts +++ b/packages/core/src/api/exporters/html/internalHTMLSerializer.ts @@ -1,8 +1,11 @@ import { DOMSerializer, Fragment, Node, Schema } from "prosemirror-model"; import type { BlockNoteEditor } from "../../../editor/BlockNoteEditor"; -import { BlockSchema, PartialBlock } from "../../../schema/blocks/types"; -import { InlineContentSchema } from "../../../schema/inlineContent/types"; -import { StyleSchema } from "../../../schema/styles/types"; +import { + BlockSchema, + InlineContentSchema, + PartialBlock, + StyleSchema, +} from "../../../schema"; import { blockToNode } from "../../nodeConversions/nodeConversions"; import { serializeNodeInner, diff --git a/packages/core/src/api/exporters/html/util/sharedHTMLConversion.ts b/packages/core/src/api/exporters/html/util/sharedHTMLConversion.ts index a7265bd8b0..4c89a45ebe 100644 --- a/packages/core/src/api/exporters/html/util/sharedHTMLConversion.ts +++ b/packages/core/src/api/exporters/html/util/sharedHTMLConversion.ts @@ -1,9 +1,11 @@ import { DOMSerializer, Fragment, Node } from "prosemirror-model"; import type { BlockNoteEditor } from "../../../../editor/BlockNoteEditor"; -import { BlockSchema } from "../../../../schema/blocks/types"; -import { InlineContentSchema } from "../../../../schema/inlineContent/types"; -import { StyleSchema } from "../../../../schema/styles/types"; +import { + BlockSchema, + InlineContentSchema, + StyleSchema, +} from "../../../../schema"; import { nodeToBlock } from "../../../nodeConversions/nodeConversions"; function doc(options: { document?: Document }) { diff --git a/packages/core/src/api/nodeConversions/nodeConversions.ts b/packages/core/src/api/nodeConversions/nodeConversions.ts index 7e6e1321a1..3f82377c5a 100644 --- a/packages/core/src/api/nodeConversions/nodeConversions.ts +++ b/packages/core/src/api/nodeConversions/nodeConversions.ts @@ -1,31 +1,32 @@ -import { Mark } from "@tiptap/pm/model"; -import { Node, Schema } from "prosemirror-model"; -import { getBlockInfo } from "../getBlockInfoFromPos"; +import { Mark, Node, Schema } from "@tiptap/pm/model"; + import UniqueID from "../../extensions/UniqueID/UniqueID"; -import { +import type { Block, BlockSchema, - PartialBlock, - PartialTableContent, - TableContent, -} from "../../schema/blocks/types"; -import { CustomInlineContentConfig, CustomInlineContentFromConfig, InlineContent, InlineContentFromConfig, InlineContentSchema, + PartialBlock, PartialCustomInlineContentFromConfig, PartialInlineContent, PartialLink, + PartialTableContent, + StyleSchema, StyledText, + Styles, + TableContent, +} from "../../schema"; +import { getBlockInfo } from "../getBlockInfoFromPos"; + +import { isLinkInlineContent, isPartialLinkInlineContent, isStyledTextInlineContent, } from "../../schema/inlineContent/types"; -import { StyleSchema, Styles } from "../../schema/styles/types"; - -import {UnreachableCaseError} from "../../util/typescript"; +import { UnreachableCaseError } from "../../util/typescript"; /** * Convert a StyledText inline element to a diff --git a/packages/core/src/api/parsers/pasteExtension.ts b/packages/core/src/api/parsers/pasteExtension.ts index 1cb49e0cda..0b0a027405 100644 --- a/packages/core/src/api/parsers/pasteExtension.ts +++ b/packages/core/src/api/parsers/pasteExtension.ts @@ -2,9 +2,7 @@ import { Extension } from "@tiptap/core"; import { Plugin } from "prosemirror-state"; import type { BlockNoteEditor } from "../../editor/BlockNoteEditor"; -import { BlockSchema } from "../../schema/blocks/types"; -import { InlineContentSchema } from "../../schema/inlineContent/types"; -import { StyleSchema } from "../../schema/styles/types"; +import { BlockSchema, InlineContentSchema, StyleSchema } from "../../schema"; import { nestedListsToBlockNoteStructure } from "./html/util/nestedLists"; const acceptedMIMETypes = [ diff --git a/packages/core/src/blocks/HeadingBlockContent/HeadingBlockContent.ts b/packages/core/src/blocks/HeadingBlockContent/HeadingBlockContent.ts index 3b7062e832..9b38c720f7 100644 --- a/packages/core/src/blocks/HeadingBlockContent/HeadingBlockContent.ts +++ b/packages/core/src/blocks/HeadingBlockContent/HeadingBlockContent.ts @@ -1,11 +1,11 @@ import { InputRule } from "@tiptap/core"; import { + PropSchema, createBlockSpecFromStronglyTypedTiptapNode, createStronglyTypedTiptapNode, -} from "../../schema/blocks/internal"; -import { PropSchema } from "../../schema/blocks/types"; -import { defaultProps } from "../defaultProps"; +} from "../../schema"; import { createDefaultBlockDOMOutputSpec } from "../defaultBlockHelpers"; +import { defaultProps } from "../defaultProps"; export const headingPropSchema = { ...defaultProps, diff --git a/packages/core/src/blocks/ImageBlockContent/ImageBlockContent.ts b/packages/core/src/blocks/ImageBlockContent/ImageBlockContent.ts index 0528c276fe..deecfe6a76 100644 --- a/packages/core/src/blocks/ImageBlockContent/ImageBlockContent.ts +++ b/packages/core/src/blocks/ImageBlockContent/ImageBlockContent.ts @@ -1,17 +1,15 @@ import type { BlockNoteEditor } from "../../editor/BlockNoteEditor"; import { imageToolbarPluginKey } from "../../extensions/ImageToolbar/ImageToolbarPlugin"; -import { - CustomBlockConfig, - createBlockSpec, -} from "../../schema/blocks/createSpec"; import { BlockFromConfig, BlockSchemaWithBlock, + CustomBlockConfig, + InlineContentSchema, PropSchema, -} from "../../schema/blocks/types"; -import { InlineContentSchema } from "../../schema/inlineContent/types"; -import { StyleSchema } from "../../schema/styles/types"; + StyleSchema, + createBlockSpec, +} from "../../schema"; import { defaultProps } from "../defaultProps"; export const imagePropSchema = { diff --git a/packages/core/src/blocks/ListItemBlockContent/BulletListItemBlockContent/BulletListItemBlockContent.ts b/packages/core/src/blocks/ListItemBlockContent/BulletListItemBlockContent/BulletListItemBlockContent.ts index 377ce9985d..c6daafbcce 100644 --- a/packages/core/src/blocks/ListItemBlockContent/BulletListItemBlockContent/BulletListItemBlockContent.ts +++ b/packages/core/src/blocks/ListItemBlockContent/BulletListItemBlockContent/BulletListItemBlockContent.ts @@ -1,11 +1,11 @@ import { InputRule } from "@tiptap/core"; import { + PropSchema, createBlockSpecFromStronglyTypedTiptapNode, createStronglyTypedTiptapNode, -} from "../../../schema/blocks/internal"; -import { PropSchema } from "../../../schema/blocks/types"; -import { defaultProps } from "../../defaultProps"; +} from "../../../schema"; import { createDefaultBlockDOMOutputSpec } from "../../defaultBlockHelpers"; +import { defaultProps } from "../../defaultProps"; import { handleEnter } from "../ListItemKeyboardShortcuts"; export const bulletListItemPropSchema = { diff --git a/packages/core/src/blocks/ListItemBlockContent/NumberedListItemBlockContent/NumberedListItemBlockContent.ts b/packages/core/src/blocks/ListItemBlockContent/NumberedListItemBlockContent/NumberedListItemBlockContent.ts index 18afba0ee6..7e8752a27e 100644 --- a/packages/core/src/blocks/ListItemBlockContent/NumberedListItemBlockContent/NumberedListItemBlockContent.ts +++ b/packages/core/src/blocks/ListItemBlockContent/NumberedListItemBlockContent/NumberedListItemBlockContent.ts @@ -1,11 +1,11 @@ import { InputRule } from "@tiptap/core"; import { + PropSchema, createBlockSpecFromStronglyTypedTiptapNode, createStronglyTypedTiptapNode, -} from "../../../schema/blocks/internal"; -import { PropSchema } from "../../../schema/blocks/types"; -import { defaultProps } from "../../defaultProps"; +} from "../../../schema"; import { createDefaultBlockDOMOutputSpec } from "../../defaultBlockHelpers"; +import { defaultProps } from "../../defaultProps"; import { handleEnter } from "../ListItemKeyboardShortcuts"; import { NumberedListIndexingPlugin } from "./NumberedListIndexingPlugin"; diff --git a/packages/core/src/blocks/ParagraphBlockContent/ParagraphBlockContent.ts b/packages/core/src/blocks/ParagraphBlockContent/ParagraphBlockContent.ts index e15d171854..fcb532a8af 100644 --- a/packages/core/src/blocks/ParagraphBlockContent/ParagraphBlockContent.ts +++ b/packages/core/src/blocks/ParagraphBlockContent/ParagraphBlockContent.ts @@ -1,9 +1,9 @@ import { createBlockSpecFromStronglyTypedTiptapNode, createStronglyTypedTiptapNode, -} from "../../schema/blocks/internal"; -import { defaultProps } from "../defaultProps"; +} from "../../schema"; import { createDefaultBlockDOMOutputSpec } from "../defaultBlockHelpers"; +import { defaultProps } from "../defaultProps"; export const paragraphPropSchema = { ...defaultProps, diff --git a/packages/core/src/blocks/TableBlockContent/TableBlockContent.ts b/packages/core/src/blocks/TableBlockContent/TableBlockContent.ts index 04f80e09ae..d2bb8c0217 100644 --- a/packages/core/src/blocks/TableBlockContent/TableBlockContent.ts +++ b/packages/core/src/blocks/TableBlockContent/TableBlockContent.ts @@ -5,9 +5,9 @@ import { TableRow } from "@tiptap/extension-table-row"; import { createBlockSpecFromStronglyTypedTiptapNode, createStronglyTypedTiptapNode, -} from "../../schema/blocks/internal"; -import { defaultProps } from "../defaultProps"; +} from "../../schema"; import { createDefaultBlockDOMOutputSpec } from "../defaultBlockHelpers"; +import { defaultProps } from "../defaultProps"; import { TableExtension } from "./TableExtension"; export const tablePropSchema = { diff --git a/packages/core/src/blocks/defaultBlockHelpers.ts b/packages/core/src/blocks/defaultBlockHelpers.ts index 12a2d098af..710ca57aa0 100644 --- a/packages/core/src/blocks/defaultBlockHelpers.ts +++ b/packages/core/src/blocks/defaultBlockHelpers.ts @@ -1,9 +1,12 @@ -import { mergeCSSClasses } from "../util/browser"; import { blockToNode } from "../api/nodeConversions/nodeConversions"; import type { BlockNoteEditor } from "../editor/BlockNoteEditor"; -import { Block, BlockSchema } from "../schema/blocks/types"; -import { InlineContentSchema } from "../schema/inlineContent/types"; -import { StyleSchema } from "../schema/styles/types"; +import type { + Block, + BlockSchema, + InlineContentSchema, + StyleSchema, +} from "../schema"; +import { mergeCSSClasses } from "../util/browser"; // Function that creates a ProseMirror `DOMOutputSpec` for a default block. // Since all default blocks have the same structure (`blockContent` div with a diff --git a/packages/core/src/blocks/defaultBlocks.ts b/packages/core/src/blocks/defaultBlocks.ts index 166c20da66..36ebc50f7d 100644 --- a/packages/core/src/blocks/defaultBlocks.ts +++ b/packages/core/src/blocks/defaultBlocks.ts @@ -3,17 +3,17 @@ import Code from "@tiptap/extension-code"; import Italic from "@tiptap/extension-italic"; import Strike from "@tiptap/extension-strike"; import Underline from "@tiptap/extension-underline"; -import { getBlockSchemaFromSpecs } from "../schema/blocks/internal"; -import { BlockSpecs } from "../schema/blocks/types"; -import { getInlineContentSchemaFromSpecs } from "../schema/inlineContent/internal"; -import { InlineContentSpecs } from "../schema/inlineContent/types"; +import { BackgroundColor } from "../extensions/BackgroundColor/BackgroundColorMark"; +import { TextColor } from "../extensions/TextColor/TextColorMark"; import { + BlockSpecs, + InlineContentSpecs, + StyleSpecs, createStyleSpecFromTipTapMark, + getBlockSchemaFromSpecs, + getInlineContentSchemaFromSpecs, getStyleSchemaFromSpecs, -} from "../schema/styles/internal"; -import { StyleSpecs } from "../schema/styles/types"; -import { BackgroundColor } from "../extensions/BackgroundColor/BackgroundColorMark"; -import { TextColor } from "../extensions/TextColor/TextColorMark"; +} from "../schema"; import { Heading } from "./HeadingBlockContent/HeadingBlockContent"; import { Image } from "./ImageBlockContent/ImageBlockContent"; import { BulletListItem } from "./ListItemBlockContent/BulletListItemBlockContent/BulletListItemBlockContent"; diff --git a/packages/core/src/blocks/defaultProps.ts b/packages/core/src/blocks/defaultProps.ts index 70ebd770cf..da9add88dd 100644 --- a/packages/core/src/blocks/defaultProps.ts +++ b/packages/core/src/blocks/defaultProps.ts @@ -1,4 +1,7 @@ -import { Props, PropSchema } from "../schema/blocks/types"; +import type { Props, PropSchema } from "../schema"; + +// TODO: this system should probably be moved / refactored. +// The dependency from schema on this file doesn't make sense export const defaultProps = { backgroundColor: { diff --git a/packages/core/src/editor/BlockNoteEditor.ts b/packages/core/src/editor/BlockNoteEditor.ts index 7e7f5f5e7e..a97a6d7cfa 100644 --- a/packages/core/src/editor/BlockNoteEditor.ts +++ b/packages/core/src/editor/BlockNoteEditor.ts @@ -3,13 +3,13 @@ import { Node } from "prosemirror-model"; // import "./blocknote.css"; import { Editor as TiptapEditor } from "@tiptap/core/dist/packages/core/src/Editor"; import * as Y from "yjs"; -import { getBlockNoteExtensions } from "./BlockNoteExtensions"; import { insertBlocks, removeBlocks, replaceBlocks, updateBlock, } from "../api/blockManipulation/blockManipulation"; +import { getBlockInfoFromPos } from "../api/getBlockInfoFromPos"; import { blockToNode, nodeToBlock, @@ -24,8 +24,6 @@ import { defaultInlineContentSpecs, defaultStyleSpecs, } from "../blocks/defaultBlocks"; -import { Selection } from "./selectionTypes"; -import { getBlockInfoFromPos } from "../api/getBlockInfoFromPos"; import { Block, BlockIdentifier, @@ -35,13 +33,13 @@ import { BlockSchemaWithBlock, BlockSpecs, PartialBlock, -} from "../schema/blocks/types"; -import { StyleSchema, StyleSchemaFromSpecs, StyleSpecs, Styles, -} from "../schema/styles/types"; +} from "../schema"; +import { getBlockNoteExtensions } from "./BlockNoteExtensions"; +import { Selection } from "./selectionTypes"; import "prosemirror-tables/style/tables.css"; @@ -49,8 +47,6 @@ import { createExternalHTMLExporter } from "../api/exporters/html/externalHTMLEx import { blocksToMarkdown } from "../api/exporters/markdown/markdownExporter"; import { HTMLToBlocks } from "../api/parsers/html/parseHTML"; import { markdownToBlocks } from "../api/parsers/markdown/parseMarkdown"; -import "./editor.css"; -import { TextCursorPosition } from "./cursorPositionTypes"; import { FormattingToolbarProsemirrorPlugin } from "../extensions/FormattingToolbar/FormattingToolbarPlugin"; import { HyperlinkToolbarProsemirrorPlugin } from "../extensions/HyperlinkToolbar/HyperlinkToolbarPlugin"; import { ImageToolbarProsemirrorPlugin } from "../extensions/ImageToolbar/ImageToolbarPlugin"; @@ -60,17 +56,19 @@ import { SlashMenuProsemirrorPlugin } from "../extensions/SlashMenu/SlashMenuPlu import { getDefaultSlashMenuItems } from "../extensions/SlashMenu/defaultSlashMenuItems"; import { TableHandlesProsemirrorPlugin } from "../extensions/TableHandles/TableHandlesPlugin"; import { UniqueID } from "../extensions/UniqueID/UniqueID"; -import { getBlockSchemaFromSpecs } from "../schema/blocks/internal"; -import { getInlineContentSchemaFromSpecs } from "../schema/inlineContent/internal"; import { InlineContentSchema, InlineContentSchemaFromSpecs, InlineContentSpecs, -} from "../schema/inlineContent/types"; -import { getStyleSchemaFromSpecs } from "../schema/styles/internal"; + getBlockSchemaFromSpecs, + getInlineContentSchemaFromSpecs, + getStyleSchemaFromSpecs, +} from "../schema"; import { mergeCSSClasses } from "../util/browser"; +import { UnreachableCaseError } from "../util/typescript"; +import { TextCursorPosition } from "./cursorPositionTypes"; +import "./editor.css"; import { transformPasted } from "./transformPasted"; -import {UnreachableCaseError} from "../util/typescript"; export type BlockNoteEditorOptions< BSpecs extends BlockSpecs, diff --git a/packages/core/src/editor/BlockNoteExtensions.ts b/packages/core/src/editor/BlockNoteExtensions.ts index da2da4e033..ec2277e5b9 100644 --- a/packages/core/src/editor/BlockNoteExtensions.ts +++ b/packages/core/src/editor/BlockNoteExtensions.ts @@ -24,12 +24,11 @@ import { BlockNoteDOMAttributes, BlockSchema, BlockSpecs, -} from "../schema/blocks/types"; -import { InlineContentSchema, InlineContentSpecs, -} from "../schema/inlineContent/types"; -import { StyleSchema, StyleSpecs } from "../schema/styles/types"; + StyleSchema, + StyleSpecs, +} from "../schema"; /** * Get all the Tiptap extensions BlockNote is configured with by default diff --git a/packages/core/src/editor/cursorPositionTypes.ts b/packages/core/src/editor/cursorPositionTypes.ts index be6435d742..b7fa932475 100644 --- a/packages/core/src/editor/cursorPositionTypes.ts +++ b/packages/core/src/editor/cursorPositionTypes.ts @@ -1,6 +1,9 @@ -import { Block, BlockSchema } from "../schema/blocks/types"; -import { InlineContentSchema } from "../schema/inlineContent/types"; -import { StyleSchema } from "../schema/styles/types"; +import { + Block, + BlockSchema, + InlineContentSchema, + StyleSchema, +} from "../schema"; export type TextCursorPosition< BSchema extends BlockSchema, diff --git a/packages/core/src/editor/selectionTypes.ts b/packages/core/src/editor/selectionTypes.ts index b79da970fc..aef65b5f08 100644 --- a/packages/core/src/editor/selectionTypes.ts +++ b/packages/core/src/editor/selectionTypes.ts @@ -1,6 +1,9 @@ -import { Block, BlockSchema } from "../schema/blocks/types"; -import { InlineContentSchema } from "../schema/inlineContent/types"; -import { StyleSchema } from "../schema/styles/types"; +import { + Block, + BlockSchema, + InlineContentSchema, + StyleSchema, +} from "../schema"; export type Selection< BSchema extends BlockSchema, diff --git a/packages/core/src/extensions-shared/suggestion/SuggestionPlugin.ts b/packages/core/src/extensions-shared/suggestion/SuggestionPlugin.ts index 522a0ad8b6..23ff2ad1b6 100644 --- a/packages/core/src/extensions-shared/suggestion/SuggestionPlugin.ts +++ b/packages/core/src/extensions-shared/suggestion/SuggestionPlugin.ts @@ -2,9 +2,7 @@ import { findParentNode } from "@tiptap/core"; import { EditorState, Plugin, PluginKey } from "prosemirror-state"; import { Decoration, DecorationSet, EditorView } from "prosemirror-view"; import type { BlockNoteEditor } from "../../editor/BlockNoteEditor"; -import { BlockSchema } from "../../schema/blocks/types"; -import { InlineContentSchema } from "../../schema/inlineContent/types"; -import { StyleSchema } from "../../schema/styles/types"; +import { BlockSchema, InlineContentSchema, StyleSchema } from "../../schema"; import { BaseUiElementState } from "../BaseUiElementTypes"; import { SuggestionItem } from "./SuggestionItem"; diff --git a/packages/core/src/extensions/BackgroundColor/BackgroundColorMark.ts b/packages/core/src/extensions/BackgroundColor/BackgroundColorMark.ts index 857e083dbf..647705acdc 100644 --- a/packages/core/src/extensions/BackgroundColor/BackgroundColorMark.ts +++ b/packages/core/src/extensions/BackgroundColor/BackgroundColorMark.ts @@ -1,5 +1,5 @@ import { Mark } from "@tiptap/core"; -import { createStyleSpecFromTipTapMark } from "../../schema/styles/internal"; +import { createStyleSpecFromTipTapMark } from "../../schema"; const BackgroundColorMark = Mark.create({ name: "backgroundColor", diff --git a/packages/core/src/extensions/FormattingToolbar/FormattingToolbarPlugin.ts b/packages/core/src/extensions/FormattingToolbar/FormattingToolbarPlugin.ts index 9ab9095bf8..0dcdf50262 100644 --- a/packages/core/src/extensions/FormattingToolbar/FormattingToolbarPlugin.ts +++ b/packages/core/src/extensions/FormattingToolbar/FormattingToolbarPlugin.ts @@ -2,15 +2,13 @@ import { isNodeSelection, posToDOMRect } from "@tiptap/core"; import { EditorState, Plugin, PluginKey } from "prosemirror-state"; import { EditorView } from "prosemirror-view"; -import { EventEmitter } from "../../util/EventEmitter"; import type { BlockNoteEditor } from "../../editor/BlockNoteEditor"; -import { BlockSchema } from "../../schema/blocks/types"; -import { InlineContentSchema } from "../../schema/inlineContent/types"; -import { StyleSchema } from "../../schema/styles/types"; import { BaseUiElementCallbacks, BaseUiElementState, } from "../../extensions-shared/BaseUiElementTypes"; +import { BlockSchema, InlineContentSchema, StyleSchema } from "../../schema"; +import { EventEmitter } from "../../util/EventEmitter"; export type FormattingToolbarCallbacks = BaseUiElementCallbacks; diff --git a/packages/core/src/extensions/HyperlinkToolbar/HyperlinkToolbarPlugin.ts b/packages/core/src/extensions/HyperlinkToolbar/HyperlinkToolbarPlugin.ts index e60a9d8f7e..30aa623af3 100644 --- a/packages/core/src/extensions/HyperlinkToolbar/HyperlinkToolbarPlugin.ts +++ b/packages/core/src/extensions/HyperlinkToolbar/HyperlinkToolbarPlugin.ts @@ -2,12 +2,10 @@ import { getMarkRange, posToDOMRect, Range } from "@tiptap/core"; import { EditorView } from "@tiptap/pm/view"; import { Mark } from "prosemirror-model"; import { Plugin, PluginKey } from "prosemirror-state"; -import { EventEmitter } from "../../util/EventEmitter"; import type { BlockNoteEditor } from "../../editor/BlockNoteEditor"; -import { BlockSchema } from "../../schema/blocks/types"; -import { InlineContentSchema } from "../../schema/inlineContent/types"; -import { StyleSchema } from "../../schema/styles/types"; import { BaseUiElementState } from "../../extensions-shared/BaseUiElementTypes"; +import { BlockSchema, InlineContentSchema, StyleSchema } from "../../schema"; +import { EventEmitter } from "../../util/EventEmitter"; export type HyperlinkToolbarState = BaseUiElementState & { // The hovered hyperlink's URL, and the text it's displayed with in the diff --git a/packages/core/src/extensions/SideMenu/SideMenuPlugin.ts b/packages/core/src/extensions/SideMenu/SideMenuPlugin.ts index 80467f42e7..9332b15c36 100644 --- a/packages/core/src/extensions/SideMenu/SideMenuPlugin.ts +++ b/packages/core/src/extensions/SideMenu/SideMenuPlugin.ts @@ -2,16 +2,19 @@ import { PluginView } from "@tiptap/pm/state"; import { Node } from "prosemirror-model"; import { NodeSelection, Plugin, PluginKey, Selection } from "prosemirror-state"; import { EditorView } from "prosemirror-view"; -import { EventEmitter } from "../../util/EventEmitter"; import { createExternalHTMLExporter } from "../../api/exporters/html/externalHTMLExporter"; import { createInternalHTMLSerializer } from "../../api/exporters/html/internalHTMLSerializer"; import { cleanHTMLToMarkdown } from "../../api/exporters/markdown/markdownExporter"; import { getBlockInfoFromPos } from "../../api/getBlockInfoFromPos"; import type { BlockNoteEditor } from "../../editor/BlockNoteEditor"; -import { Block, BlockSchema } from "../../schema/blocks/types"; -import { InlineContentSchema } from "../../schema/inlineContent/types"; -import { StyleSchema } from "../../schema/styles/types"; import { BaseUiElementState } from "../../extensions-shared/BaseUiElementTypes"; +import { + Block, + BlockSchema, + InlineContentSchema, + StyleSchema, +} from "../../schema"; +import { EventEmitter } from "../../util/EventEmitter"; import { slashMenuPluginKey } from "../SlashMenu/SlashMenuPlugin"; import { MultipleNodeSelection } from "./MultipleNodeSelection"; diff --git a/packages/core/src/extensions/SlashMenu/BaseSlashMenuItem.ts b/packages/core/src/extensions/SlashMenu/BaseSlashMenuItem.ts index 2f9695a800..42d42bebbd 100644 --- a/packages/core/src/extensions/SlashMenu/BaseSlashMenuItem.ts +++ b/packages/core/src/extensions/SlashMenu/BaseSlashMenuItem.ts @@ -1,8 +1,6 @@ import type { BlockNoteEditor } from "../../editor/BlockNoteEditor"; -import { BlockSchema } from "../../schema/blocks/types"; -import { InlineContentSchema } from "../../schema/inlineContent/types"; -import { StyleSchema } from "../../schema/styles/types"; import { SuggestionItem } from "../../extensions-shared/suggestion/SuggestionItem"; +import { BlockSchema, InlineContentSchema, StyleSchema } from "../../schema"; export type BaseSlashMenuItem< BSchema extends BlockSchema, diff --git a/packages/core/src/extensions/SlashMenu/SlashMenuPlugin.ts b/packages/core/src/extensions/SlashMenu/SlashMenuPlugin.ts index 560bc4dc5b..c58a32cbce 100644 --- a/packages/core/src/extensions/SlashMenu/SlashMenuPlugin.ts +++ b/packages/core/src/extensions/SlashMenu/SlashMenuPlugin.ts @@ -1,14 +1,12 @@ import { Plugin, PluginKey } from "prosemirror-state"; -import { EventEmitter } from "../../util/EventEmitter"; import type { BlockNoteEditor } from "../../editor/BlockNoteEditor"; -import { BlockSchema } from "../../schema/blocks/types"; -import { InlineContentSchema } from "../../schema/inlineContent/types"; -import { StyleSchema } from "../../schema/styles/types"; import { SuggestionsMenuState, setupSuggestionsMenu, } from "../../extensions-shared/suggestion/SuggestionPlugin"; +import { BlockSchema, InlineContentSchema, StyleSchema } from "../../schema"; +import { EventEmitter } from "../../util/EventEmitter"; import { BaseSlashMenuItem } from "./BaseSlashMenuItem"; export const slashMenuPluginKey = new PluginKey("SlashMenuPlugin"); diff --git a/packages/core/src/extensions/SlashMenu/defaultSlashMenuItems.ts b/packages/core/src/extensions/SlashMenu/defaultSlashMenuItems.ts index 07fab6864d..b6b3aa0115 100644 --- a/packages/core/src/extensions/SlashMenu/defaultSlashMenuItems.ts +++ b/packages/core/src/extensions/SlashMenu/defaultSlashMenuItems.ts @@ -1,11 +1,13 @@ import { defaultBlockSchema } from "../../blocks/defaultBlocks"; import type { BlockNoteEditor } from "../../editor/BlockNoteEditor"; -import { Block, BlockSchema, PartialBlock } from "../../schema/blocks/types"; import { + Block, + BlockSchema, InlineContentSchema, + PartialBlock, + StyleSchema, isStyledTextInlineContent, -} from "../../schema/inlineContent/types"; -import { StyleSchema } from "../../schema/styles/types"; +} from "../../schema"; import { imageToolbarPluginKey } from "../ImageToolbar/ImageToolbarPlugin"; import { BaseSlashMenuItem } from "./BaseSlashMenuItem"; diff --git a/packages/core/src/extensions/TextColor/TextColorMark.ts b/packages/core/src/extensions/TextColor/TextColorMark.ts index f57a8a7f05..c4538f0c94 100644 --- a/packages/core/src/extensions/TextColor/TextColorMark.ts +++ b/packages/core/src/extensions/TextColor/TextColorMark.ts @@ -1,5 +1,5 @@ import { Mark } from "@tiptap/core"; -import { createStyleSpecFromTipTapMark } from "../../schema/styles/internal"; +import { createStyleSpecFromTipTapMark } from "../../schema"; const TextColorMark = Mark.create({ name: "textColor", diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 1215911200..00fd0ed90f 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -1,13 +1,16 @@ -export * from "./editor/BlockNoteEditor"; -export * from "./editor/BlockNoteExtensions"; export * from "./api/exporters/html/externalHTMLExporter"; export * from "./api/exporters/html/internalHTMLSerializer"; export * from "./api/testUtil"; +export * from "./blocks/ImageBlockContent/uploadToTmpFilesDotOrg_DEV_ONLY"; export * from "./blocks/defaultBlocks"; export * from "./blocks/defaultProps"; -export * from "./editor/selectionTypes"; export * as blockStyles from "./editor/Block.css"; -export * from "./blocks/ImageBlockContent/uploadToTmpFilesDotOrg_DEV_ONLY"; +export * from "./editor/BlockNoteEditor"; +export * from "./editor/BlockNoteExtensions"; +export * from "./editor/selectionTypes"; +export * from "./extensions-shared/BaseUiElementTypes"; +export type { SuggestionItem } from "./extensions-shared/suggestion/SuggestionItem"; +export * from "./extensions-shared/suggestion/SuggestionPlugin"; export * from "./extensions/FormattingToolbar/FormattingToolbarPlugin"; export * from "./extensions/HyperlinkToolbar/HyperlinkToolbarPlugin"; export * from "./extensions/ImageToolbar/ImageToolbarPlugin"; @@ -17,12 +20,10 @@ export * from "./extensions/SlashMenu/SlashMenuPlugin"; export { getDefaultSlashMenuItems } from "./extensions/SlashMenu/defaultSlashMenuItems"; export * from "./extensions/TableHandles/TableHandlesPlugin"; export * from "./schema"; -export * from "./extensions-shared/BaseUiElementTypes"; -export type { SuggestionItem } from "./extensions-shared/suggestion/SuggestionItem"; -export * from "./extensions-shared/suggestion/SuggestionPlugin"; export * from "./util/browser"; +export * from "./util/string"; // for testing from react (TODO: move): export * from "./api/nodeConversions/nodeConversions"; export * from "./api/testUtil/partialBlockTestUtil"; export * from "./extensions/UniqueID/UniqueID"; -export {UnreachableCaseError} from "./util/typescript"; +export { UnreachableCaseError } from "./util/typescript"; diff --git a/packages/core/src/pm-nodes/BlockContainer.ts b/packages/core/src/pm-nodes/BlockContainer.ts index a06edc621e..016ac4444e 100644 --- a/packages/core/src/pm-nodes/BlockContainer.ts +++ b/packages/core/src/pm-nodes/BlockContainer.ts @@ -2,8 +2,6 @@ import { Node } from "@tiptap/core"; import { Fragment, Node as PMNode, Slice } from "prosemirror-model"; import { NodeSelection, TextSelection } from "prosemirror-state"; -import { mergeCSSClasses } from "../util/browser"; -import { UnreachableCaseError } from "../util/typescript"; import { getBlockInfoFromPos } from "../api/getBlockInfoFromPos"; import { blockToNode, @@ -16,10 +14,12 @@ import { PreviousBlockTypePlugin } from "../extensions/PreviousBlockType/Previou import { BlockNoteDOMAttributes, BlockSchema, + InlineContentSchema, PartialBlock, -} from "../schema/blocks/types"; -import { InlineContentSchema } from "../schema/inlineContent/types"; -import { StyleSchema } from "../schema/styles/types"; + StyleSchema, +} from "../schema"; +import { mergeCSSClasses } from "../util/browser"; +import { UnreachableCaseError } from "../util/typescript"; // Object containing all possible block attributes. const BlockAttributes: Record = { diff --git a/packages/core/src/pm-nodes/BlockGroup.ts b/packages/core/src/pm-nodes/BlockGroup.ts index eeb7e159f8..ab2f771c21 100644 --- a/packages/core/src/pm-nodes/BlockGroup.ts +++ b/packages/core/src/pm-nodes/BlockGroup.ts @@ -1,5 +1,5 @@ import { Node } from "@tiptap/core"; -import { BlockNoteDOMAttributes } from "../schema/blocks/types"; +import { BlockNoteDOMAttributes } from "../schema"; import { mergeCSSClasses } from "../util/browser"; export const BlockGroup = Node.create<{ diff --git a/packages/core/src/schema/blocks/internal.ts b/packages/core/src/schema/blocks/internal.ts index ee37f82d83..7ab8b1d4c5 100644 --- a/packages/core/src/schema/blocks/internal.ts +++ b/packages/core/src/schema/blocks/internal.ts @@ -6,11 +6,13 @@ import { Node, NodeConfig, } from "@tiptap/core"; -import { mergeCSSClasses } from "../../util/browser"; import { defaultBlockToHTML } from "../../blocks/defaultBlockHelpers"; import { inheritedProps } from "../../blocks/defaultProps"; import type { BlockNoteEditor } from "../../editor/BlockNoteEditor"; +import { mergeCSSClasses } from "../../util/browser"; +import { camelToDataKebab } from "../../util/string"; import { InlineContentSchema } from "../inlineContent/types"; +import { PropSchema, Props } from "../propTypes"; import { StyleSchema } from "../styles/types"; import { BlockConfig, @@ -18,16 +20,10 @@ import { BlockSchemaWithBlock, BlockSpec, BlockSpecs, - PropSchema, - Props, SpecificBlock, TiptapBlockImplementation, } from "./types"; -export function camelToDataKebab(str: string): string { - return "data-" + str.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase(); -} - // Function that uses the 'propSchema' of a blockConfig to create a TipTap // node's `addAttributes` property. // TODO: extract function diff --git a/packages/core/src/schema/blocks/types.ts b/packages/core/src/schema/blocks/types.ts index 8601846be6..65b231c3a9 100644 --- a/packages/core/src/schema/blocks/types.ts +++ b/packages/core/src/schema/blocks/types.ts @@ -7,7 +7,7 @@ import { InlineContentSchema, PartialInlineContent, } from "../inlineContent/types"; -import { PropSchema } from "../propTypes"; +import { PropSchema, Props } from "../propTypes"; import { StyleSchema } from "../styles/types"; export type BlockNoteDOMElement = diff --git a/packages/core/src/schema/index.ts b/packages/core/src/schema/index.ts index fa1c1ef4ac..29b85a42cc 100644 --- a/packages/core/src/schema/index.ts +++ b/packages/core/src/schema/index.ts @@ -4,6 +4,7 @@ export * from "./blocks/types"; export * from "./inlineContent/createSpec"; export * from "./inlineContent/internal"; export * from "./inlineContent/types"; +export * from "./propTypes"; export * from "./styles/createSpec"; export * from "./styles/internal"; -export * from "./styles/types"; \ No newline at end of file +export * from "./styles/types"; diff --git a/packages/core/src/schema/inlineContent/createSpec.ts b/packages/core/src/schema/inlineContent/createSpec.ts index 102c0a7ce5..693fdc7b9e 100644 --- a/packages/core/src/schema/inlineContent/createSpec.ts +++ b/packages/core/src/schema/inlineContent/createSpec.ts @@ -2,7 +2,7 @@ import { Node } from "@tiptap/core"; import { ParseRule } from "@tiptap/pm/model"; import { nodeToCustomInlineContent } from "../../api/nodeConversions/nodeConversions"; import { propsToAttributes } from "../blocks/internal"; -import { Props } from "../blocks/types"; +import { Props } from "../propTypes"; import { StyleSchema } from "../styles/types"; import { addInlineContentAttributes, diff --git a/packages/core/src/schema/inlineContent/internal.ts b/packages/core/src/schema/inlineContent/internal.ts index 1e0106f520..c1b70a28c0 100644 --- a/packages/core/src/schema/inlineContent/internal.ts +++ b/packages/core/src/schema/inlineContent/internal.ts @@ -1,6 +1,7 @@ import { KeyboardShortcutCommand, Node } from "@tiptap/core"; -import { camelToDataKebab } from "../blocks/internal"; -import { PropSchema, Props } from "../blocks/types"; + +import { camelToDataKebab } from "../../util/string"; +import { PropSchema, Props } from "../propTypes"; import { CustomInlineContentConfig, InlineContentConfig, diff --git a/packages/core/src/util/string.ts b/packages/core/src/util/string.ts new file mode 100644 index 0000000000..d08881ca37 --- /dev/null +++ b/packages/core/src/util/string.ts @@ -0,0 +1,3 @@ +export function camelToDataKebab(str: string): string { + return "data-" + str.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase(); +} From 53f4ddfb5df353a73e176160bf925ecf8c846082 Mon Sep 17 00:00:00 2001 From: yousefed Date: Mon, 4 Dec 2023 14:53:37 +0100 Subject: [PATCH 6/6] clean css imports --- packages/core/src/editor/BlockNoteEditor.ts | 49 +++++++++++---------- packages/core/src/index.ts | 1 - 2 files changed, 25 insertions(+), 25 deletions(-) diff --git a/packages/core/src/editor/BlockNoteEditor.ts b/packages/core/src/editor/BlockNoteEditor.ts index a97a6d7cfa..c888a0f670 100644 --- a/packages/core/src/editor/BlockNoteEditor.ts +++ b/packages/core/src/editor/BlockNoteEditor.ts @@ -9,12 +9,16 @@ import { replaceBlocks, updateBlock, } from "../api/blockManipulation/blockManipulation"; +import { createExternalHTMLExporter } from "../api/exporters/html/externalHTMLExporter"; +import { blocksToMarkdown } from "../api/exporters/markdown/markdownExporter"; import { getBlockInfoFromPos } from "../api/getBlockInfoFromPos"; import { blockToNode, nodeToBlock, } from "../api/nodeConversions/nodeConversions"; import { getNodeById } from "../api/nodeUtil"; +import { HTMLToBlocks } from "../api/parsers/html/parseHTML"; +import { markdownToBlocks } from "../api/parsers/markdown/parseMarkdown"; import { DefaultBlockSchema, DefaultInlineContentSchema, @@ -24,29 +28,6 @@ import { defaultInlineContentSpecs, defaultStyleSpecs, } from "../blocks/defaultBlocks"; -import { - Block, - BlockIdentifier, - BlockNoteDOMAttributes, - BlockSchema, - BlockSchemaFromSpecs, - BlockSchemaWithBlock, - BlockSpecs, - PartialBlock, - StyleSchema, - StyleSchemaFromSpecs, - StyleSpecs, - Styles, -} from "../schema"; -import { getBlockNoteExtensions } from "./BlockNoteExtensions"; -import { Selection } from "./selectionTypes"; - -import "prosemirror-tables/style/tables.css"; - -import { createExternalHTMLExporter } from "../api/exporters/html/externalHTMLExporter"; -import { blocksToMarkdown } from "../api/exporters/markdown/markdownExporter"; -import { HTMLToBlocks } from "../api/parsers/html/parseHTML"; -import { markdownToBlocks } from "../api/parsers/markdown/parseMarkdown"; import { FormattingToolbarProsemirrorPlugin } from "../extensions/FormattingToolbar/FormattingToolbarPlugin"; import { HyperlinkToolbarProsemirrorPlugin } from "../extensions/HyperlinkToolbar/HyperlinkToolbarPlugin"; import { ImageToolbarProsemirrorPlugin } from "../extensions/ImageToolbar/ImageToolbarPlugin"; @@ -57,19 +38,39 @@ import { getDefaultSlashMenuItems } from "../extensions/SlashMenu/defaultSlashMe import { TableHandlesProsemirrorPlugin } from "../extensions/TableHandles/TableHandlesPlugin"; import { UniqueID } from "../extensions/UniqueID/UniqueID"; import { + Block, + BlockIdentifier, + BlockNoteDOMAttributes, + BlockSchema, + BlockSchemaFromSpecs, + BlockSchemaWithBlock, + BlockSpecs, InlineContentSchema, InlineContentSchemaFromSpecs, InlineContentSpecs, + PartialBlock, + StyleSchema, + StyleSchemaFromSpecs, + StyleSpecs, + Styles, getBlockSchemaFromSpecs, getInlineContentSchemaFromSpecs, getStyleSchemaFromSpecs, } from "../schema"; import { mergeCSSClasses } from "../util/browser"; import { UnreachableCaseError } from "../util/typescript"; + +import { getBlockNoteExtensions } from "./BlockNoteExtensions"; import { TextCursorPosition } from "./cursorPositionTypes"; -import "./editor.css"; + +import { Selection } from "./selectionTypes"; import { transformPasted } from "./transformPasted"; +// CSS +import "prosemirror-tables/style/tables.css"; +import "./Block.css"; +import "./editor.css"; + export type BlockNoteEditorOptions< BSpecs extends BlockSpecs, ISpecs extends InlineContentSpecs, diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index 00fd0ed90f..9678ae5a55 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -4,7 +4,6 @@ export * from "./api/testUtil"; export * from "./blocks/ImageBlockContent/uploadToTmpFilesDotOrg_DEV_ONLY"; export * from "./blocks/defaultBlocks"; export * from "./blocks/defaultProps"; -export * as blockStyles from "./editor/Block.css"; export * from "./editor/BlockNoteEditor"; export * from "./editor/BlockNoteExtensions"; export * from "./editor/selectionTypes";