diff --git a/package-lock.json b/package-lock.json index f775d5f8ad..d5a991ec25 100644 --- a/package-lock.json +++ b/package-lock.json @@ -6633,6 +6633,33 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/lodash.foreach": { + "version": "4.5.9", + "resolved": "https://registry.npmjs.org/@types/lodash.foreach/-/lodash.foreach-4.5.9.tgz", + "integrity": "sha512-vmq0p/FK66PsALXRmK/qsnlLlCpnudvozWYrxJImHujHhXMADdeoPEY10zwmu26437w85wCvdxUqpFi+ALtkiQ==", + "dev": true, + "dependencies": { + "@types/lodash": "*" + } + }, + "node_modules/@types/lodash.groupby": { + "version": "4.6.9", + "resolved": "https://registry.npmjs.org/@types/lodash.groupby/-/lodash.groupby-4.6.9.tgz", + "integrity": "sha512-z2xtCX2ko7GrqORnnYea4+ksT7jZNAvaOcLd6mP9M7J09RHvJs06W8BGdQQAX8ARef09VQLdeRilSOcfHlDQJQ==", + "dev": true, + "dependencies": { + "@types/lodash": "*" + } + }, + "node_modules/@types/lodash.merge": { + "version": "4.6.9", + "resolved": "https://registry.npmjs.org/@types/lodash.merge/-/lodash.merge-4.6.9.tgz", + "integrity": "sha512-23sHDPmzd59kUgWyKGiOMO2Qb9YtqRO/x4IhkgNUiPQ1+5MUVqi6bCZeq9nBJ17msjIMbEIO5u+XW4Kz6aGUhQ==", + "dev": true, + "dependencies": { + "@types/lodash": "*" + } + }, "node_modules/@types/mdast": { "version": "3.0.11", "license": "MIT", @@ -13300,12 +13327,24 @@ }, "node_modules/lodash": { "version": "4.17.21", - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true }, "node_modules/lodash.debounce": { "version": "4.0.8", "license": "MIT" }, + "node_modules/lodash.foreach": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", + "integrity": "sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==" + }, + "node_modules/lodash.groupby": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.groupby/-/lodash.groupby-4.6.0.tgz", + "integrity": "sha512-5dcWxm23+VAoz+awKmBaiBvzox8+RqMgFhi7UvX9DHZr2HdxHXM/Wrf8cfKpsW37RNrvtPn6hSwNqurSILbmJw==" + }, "node_modules/lodash.isequal": { "version": "4.5.0", "dev": true, @@ -13318,7 +13357,6 @@ }, "node_modules/lodash.merge": { "version": "4.6.2", - "dev": true, "license": "MIT" }, "node_modules/log-symbols": { @@ -20385,7 +20423,6 @@ "@tiptap/extension-underline": "^2.0.3", "@tiptap/pm": "^2.0.3", "hast-util-from-dom": "^4.2.0", - "lodash": "^4.17.21", "prosemirror-model": "^1.18.3", "prosemirror-state": "^1.4.3", "prosemirror-tables": "^1.3.4", @@ -20407,7 +20444,6 @@ }, "devDependencies": { "@types/hast": "^2.3.4", - "@types/lodash": "^4.14.179", "@types/uuid": "^8.3.4", "eslint": "^8.10.0", "jsdom": "^21.1.0", @@ -20596,7 +20632,9 @@ "@tippyjs/react": "^4.2.6", "@tiptap/core": "^2.0.3", "@tiptap/react": "^2.0.3", - "lodash": "^4.17.21", + "lodash.foreach": "^4.5.0", + "lodash.groupby": "^4.6.0", + "lodash.merge": "^4.6.2", "react": "^18", "react-dom": "^18.2.0", "react-icons": "^4.3.1", @@ -20604,6 +20642,9 @@ "use-prefers-color-scheme": "^1.1.3" }, "devDependencies": { + "@types/lodash.foreach": "^4.5.9", + "@types/lodash.groupby": "^4.6.9", + "@types/lodash.merge": "^4.6.9", "@types/react": "^18.0.25", "@types/react-dom": "^18.0.9", "@vitejs/plugin-react": "^4.0.4", @@ -21205,13 +21246,15 @@ } }, "packages/website/node_modules/y-partykit": { - "version": "0.0.0-4d484bc", - "license": "ISC", + "version": "0.0.10", + "resolved": "https://registry.npmjs.org/y-partykit/-/y-partykit-0.0.10.tgz", + "integrity": "sha512-DFzaQbbgUm4jZx8oj3uHigRUKw0sYvq7QQlw/Kq+yOrci+AD0b38cgyWEs5TWYQDCC2a7Wqs33oiJ5YgOCDqVg==", "dependencies": { - "lib0": "^0.2.60", + "lib0": "^0.2.86", "lodash.debounce": "^4.0.8", - "y-protocols": "^1.0.5", - "yjs": "^13.5.44" + "react": "^18.2.0", + "y-protocols": "^1.0.6", + "yjs": "^13.6.8" } }, "tests": { diff --git a/packages/core/package.json b/packages/core/package.json index e0b4fb33e8..aeb2147afa 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -73,7 +73,6 @@ "@tiptap/extension-underline": "^2.0.3", "@tiptap/pm": "^2.0.3", "hast-util-from-dom": "^4.2.0", - "lodash": "^4.17.21", "prosemirror-model": "^1.18.3", "prosemirror-state": "^1.4.3", "prosemirror-transform": "^1.7.2", @@ -82,7 +81,7 @@ "rehype-parse": "^8.0.4", "rehype-remark": "^9.1.2", "rehype-stringify": "^9.0.3", - "rehype-format":"^5.0.0", + "rehype-format": "^5.0.0", "remark-gfm": "^3.0.1", "remark-parse": "^10.0.1", "remark-rehype": "^10.1.0", @@ -95,7 +94,6 @@ }, "devDependencies": { "@types/hast": "^2.3.4", - "@types/lodash": "^4.14.179", "@types/uuid": "^8.3.4", "eslint": "^8.10.0", "jsdom": "^21.1.0", diff --git a/packages/react/package.json b/packages/react/package.json index 370b078135..0bab9c6025 100644 --- a/packages/react/package.json +++ b/packages/react/package.json @@ -57,7 +57,9 @@ "@tippyjs/react": "^4.2.6", "@tiptap/core": "^2.0.3", "@tiptap/react": "^2.0.3", - "lodash": "^4.17.21", + "lodash.foreach": "^4.5.0", + "lodash.groupby": "^4.6.0", + "lodash.merge": "^4.6.2", "react": "^18", "react-dom": "^18.2.0", "react-icons": "^4.3.1", @@ -67,6 +69,9 @@ "devDependencies": { "@types/react": "^18.0.25", "@types/react-dom": "^18.0.9", + "@types/lodash.groupby": "^4.6.9", + "@types/lodash.merge": "^4.6.9", + "@types/lodash.foreach": "^4.5.9", "@vitejs/plugin-react": "^4.0.4", "eslint": "^8.10.0", "prettier": "^2.7.1", diff --git a/packages/react/src/BlockNoteTheme.ts b/packages/react/src/BlockNoteTheme.ts index 156eaced8a..3a8a8d3436 100644 --- a/packages/react/src/BlockNoteTheme.ts +++ b/packages/react/src/BlockNoteTheme.ts @@ -1,5 +1,5 @@ import { CSSObject, MantineThemeOverride } from "@mantine/core"; -import _ from "lodash"; +import merge from "lodash.merge"; export type CombinedColor = { text: string; @@ -106,7 +106,7 @@ export const blockNoteToMantineTheme = (theme: Theme): MantineThemeOverride => { // Slash Menu, Formatting Toolbar dropdown, color picker dropdown Menu: { styles: () => ({ - dropdown: _.merge( + dropdown: merge( { backgroundColor: theme.colors.menu.background, border: border, @@ -137,7 +137,7 @@ export const blockNoteToMantineTheme = (theme: Theme): MantineThemeOverride => { }, TableHandle: { styles: () => ({ - root: _.merge( + root: merge( { display: "flex", alignItems: "center", @@ -158,7 +158,7 @@ export const blockNoteToMantineTheme = (theme: Theme): MantineThemeOverride => { }, TableHandleMenu: { styles: () => ({ - root: _.merge( + root: merge( { ".mantine-Menu-item": { fontSize: "12px", @@ -171,7 +171,7 @@ export const blockNoteToMantineTheme = (theme: Theme): MantineThemeOverride => { }, Tabs: { styles: () => ({ - root: _.merge( + root: merge( { width: "100%", backgroundColor: theme.colors.menu.background, @@ -249,7 +249,7 @@ export const blockNoteToMantineTheme = (theme: Theme): MantineThemeOverride => { }, ColorIcon: { styles: () => ({ - root: _.merge( + root: merge( { border: border, borderRadius: innerBorderRadius, @@ -260,7 +260,7 @@ export const blockNoteToMantineTheme = (theme: Theme): MantineThemeOverride => { }, DragHandleMenu: { styles: () => ({ - root: _.merge( + root: merge( { ".mantine-Menu-item": { fontSize: "12px", @@ -273,7 +273,7 @@ export const blockNoteToMantineTheme = (theme: Theme): MantineThemeOverride => { }, Editor: { styles: () => ({ - root: _.merge( + root: merge( { ".ProseMirror": { backgroundColor: theme.colors.editor.background, @@ -315,7 +315,7 @@ export const blockNoteToMantineTheme = (theme: Theme): MantineThemeOverride => { }, Toolbar: { styles: () => ({ - root: _.merge( + root: merge( { backgroundColor: theme.colors.menu.background, boxShadow: shadow, @@ -373,7 +373,7 @@ export const blockNoteToMantineTheme = (theme: Theme): MantineThemeOverride => { }, ToolbarInputDropdown: { styles: () => ({ - root: _.merge( + root: merge( { backgroundColor: theme.colors.menu.background, border: border, @@ -418,7 +418,7 @@ export const blockNoteToMantineTheme = (theme: Theme): MantineThemeOverride => { }, Tooltip: { styles: () => ({ - root: _.merge( + root: merge( { backgroundColor: theme.colors.tooltip.background, border: border, @@ -437,7 +437,7 @@ export const blockNoteToMantineTheme = (theme: Theme): MantineThemeOverride => { }, SlashMenu: { styles: () => ({ - root: _.merge( + root: merge( { position: "relative", ".mantine-Menu-item": { @@ -470,7 +470,7 @@ export const blockNoteToMantineTheme = (theme: Theme): MantineThemeOverride => { }, SideMenu: { styles: () => ({ - root: _.merge( + root: merge( { backgroundColor: "transparent", ".mantine-UnstyledButton-root": { diff --git a/packages/react/src/SlashMenu/components/DefaultSlashMenu.tsx b/packages/react/src/SlashMenu/components/DefaultSlashMenu.tsx index 382b6c8964..7c890768b2 100644 --- a/packages/react/src/SlashMenu/components/DefaultSlashMenu.tsx +++ b/packages/react/src/SlashMenu/components/DefaultSlashMenu.tsx @@ -1,9 +1,10 @@ import { createStyles, Menu } from "@mantine/core"; -import * as _ from "lodash"; +import foreach from "lodash.foreach"; +import groupBy from "lodash.groupby"; +import { BlockSchema } from "@blocknote/core"; import { SlashMenuItem } from "./SlashMenuItem"; import { SlashMenuProps } from "./SlashMenuPositioner"; -import { BlockSchema } from "@blocknote/core"; export function DefaultSlashMenu( props: SlashMenuProps @@ -14,9 +15,9 @@ export function DefaultSlashMenu( const renderedItems: any[] = []; let index = 0; - const groups = _.groupBy(props.filteredItems, (i) => i.group); + const groups = groupBy(props.filteredItems, (i) => i.group); - _.forEach(groups, (groupedItems) => { + foreach(groups, (groupedItems) => { renderedItems.push( {groupedItems[0].group}