@blocknote/mantine 0.14.6 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"builtAt":1720035573115,"assets":[{"name":"blocknote-mantine.umd.cjs","size":30335},{"name":"blocknote-mantine.umd.cjs.map","size":354186}],"chunks":[{"id":"ec22802","entry":true,"initial":true,"files":["blocknote-mantine.umd.cjs"],"names":["index"]}],"modules":[{"name":"../../node_modules/react/jsx-runtime.js?commonjs-module","size":31,"chunks":["ec22802"]},{"name":"../../node_modules/react/cjs/react-jsx-runtime.production.min.js?commonjs-exports","size":40,"chunks":["ec22802"]},{"name":"../../node_modules/react/cjs/react-jsx-runtime.production.min.js","size":1200,"chunks":["ec22802"]},{"name":"../../node_modules/react/cjs/react-jsx-runtime.development.js?commonjs-exports","size":37,"chunks":["ec22802"]},{"name":"../../node_modules/react/cjs/react-jsx-runtime.development.js","size":44073,"chunks":["ec22802"]},{"name":"../../node_modules/react/jsx-runtime.js","size":225,"chunks":["ec22802"]},{"name":"./src/BlockNoteTheme.ts","size":2185,"chunks":["ec22802"]},{"name":"./src/form/TextInput.tsx","size":582,"chunks":["ec22802"]},{"name":"../../node_modules/react-icons/lib/iconContext.mjs","size":251,"chunks":["ec22802"]},{"name":"../../node_modules/react-icons/lib/iconBase.mjs","size":4014,"chunks":["ec22802"]},{"name":"../../node_modules/react-icons/hi/index.mjs","size":744,"chunks":["ec22802"]},{"name":"./src/menu/Menu.tsx","size":4155,"chunks":["ec22802"]},{"name":"./src/panel/Panel.tsx","size":1057,"chunks":["ec22802"]},{"name":"./src/panel/PanelButton.tsx","size":352,"chunks":["ec22802"]},{"name":"./src/panel/PanelFileInput.tsx","size":374,"chunks":["ec22802"]},{"name":"./src/panel/PanelTab.tsx","size":216,"chunks":["ec22802"]},{"name":"./src/panel/PanelTextInput.tsx","size":399,"chunks":["ec22802"]},{"name":"./src/popover/Popover.tsx","size":759,"chunks":["ec22802"]},{"name":"./src/sideMenu/SideMenu.tsx","size":316,"chunks":["ec22802"]},{"name":"./src/sideMenu/SideMenuButton.tsx","size":787,"chunks":["ec22802"]},{"name":"./src/suggestionMenu/SuggestionMenu.tsx","size":314,"chunks":["ec22802"]},{"name":"./src/suggestionMenu/SuggestionMenuEmptyItem.tsx","size":352,"chunks":["ec22802"]},{"name":"./src/suggestionMenu/SuggestionMenuItem.tsx","size":1806,"chunks":["ec22802"]},{"name":"./src/suggestionMenu/SuggestionMenuLabel.tsx","size":234,"chunks":["ec22802"]},{"name":"./src/suggestionMenu/SuggestionMenuLoader.tsx","size":290,"chunks":["ec22802"]},{"name":"./src/tableHandle/TableHandle.tsx","size":459,"chunks":["ec22802"]},{"name":"./src/toolbar/Toolbar.tsx","size":569,"chunks":["ec22802"]},{"name":"./src/toolbar/ToolbarButton.tsx","size":2278,"chunks":["ec22802"]},{"name":"./src/toolbar/ToolbarSelect.tsx","size":1841,"chunks":["ec22802"]},{"name":"./src/style.css","size":17,"chunks":["ec22802"]},{"name":"./src/defaultThemes.ts","size":3405,"chunks":["ec22802"]},{"name":"./src/index.tsx","size":2536,"chunks":["ec22802"]}]}
1
+ {"builtAt":1721046970849,"assets":[{"name":"blocknote-mantine.umd.cjs","size":31449},{"name":"blocknote-mantine.umd.cjs.map","size":359785}],"chunks":[{"id":"ec22802","entry":true,"initial":true,"files":["blocknote-mantine.umd.cjs"],"names":["index"]}],"modules":[{"name":"../../node_modules/react/jsx-runtime.js?commonjs-module","size":31,"chunks":["ec22802"]},{"name":"../../node_modules/react/cjs/react-jsx-runtime.production.min.js?commonjs-exports","size":40,"chunks":["ec22802"]},{"name":"../../node_modules/react/cjs/react-jsx-runtime.production.min.js","size":1200,"chunks":["ec22802"]},{"name":"../../node_modules/react/cjs/react-jsx-runtime.development.js?commonjs-exports","size":37,"chunks":["ec22802"]},{"name":"../../node_modules/react/cjs/react-jsx-runtime.development.js","size":44073,"chunks":["ec22802"]},{"name":"../../node_modules/react/jsx-runtime.js","size":225,"chunks":["ec22802"]},{"name":"./src/BlockNoteTheme.ts","size":2185,"chunks":["ec22802"]},{"name":"./src/suggestionMenu/gridSuggestionMenu/GridSuggestionMenu.tsx","size":368,"chunks":["ec22802"]},{"name":"./src/suggestionMenu/gridSuggestionMenu/GridSuggestionMenuEmptyItem.tsx","size":450,"chunks":["ec22802"]},{"name":"./src/suggestionMenu/gridSuggestionMenu/GridSuggestionMenuItem.tsx","size":792,"chunks":["ec22802"]},{"name":"./src/suggestionMenu/gridSuggestionMenu/GridSuggestionMenuLoader.tsx","size":392,"chunks":["ec22802"]},{"name":"../../node_modules/react-icons/lib/iconContext.mjs","size":251,"chunks":["ec22802"]},{"name":"../../node_modules/react-icons/lib/iconBase.mjs","size":4014,"chunks":["ec22802"]},{"name":"../../node_modules/react-icons/hi/index.mjs","size":744,"chunks":["ec22802"]},{"name":"./src/menu/Menu.tsx","size":4155,"chunks":["ec22802"]},{"name":"./src/panel/Panel.tsx","size":1057,"chunks":["ec22802"]},{"name":"./src/panel/PanelButton.tsx","size":352,"chunks":["ec22802"]},{"name":"./src/panel/PanelFileInput.tsx","size":374,"chunks":["ec22802"]},{"name":"./src/panel/PanelTab.tsx","size":216,"chunks":["ec22802"]},{"name":"./src/panel/PanelTextInput.tsx","size":399,"chunks":["ec22802"]},{"name":"./src/popover/Popover.tsx","size":759,"chunks":["ec22802"]},{"name":"./src/sideMenu/SideMenu.tsx","size":316,"chunks":["ec22802"]},{"name":"./src/sideMenu/SideMenuButton.tsx","size":787,"chunks":["ec22802"]},{"name":"./src/suggestionMenu/SuggestionMenu.tsx","size":314,"chunks":["ec22802"]},{"name":"./src/suggestionMenu/SuggestionMenuEmptyItem.tsx","size":352,"chunks":["ec22802"]},{"name":"./src/suggestionMenu/SuggestionMenuItem.tsx","size":1806,"chunks":["ec22802"]},{"name":"./src/suggestionMenu/SuggestionMenuLabel.tsx","size":234,"chunks":["ec22802"]},{"name":"./src/suggestionMenu/SuggestionMenuLoader.tsx","size":290,"chunks":["ec22802"]},{"name":"./src/tableHandle/TableHandle.tsx","size":459,"chunks":["ec22802"]},{"name":"./src/form/TextInput.tsx","size":582,"chunks":["ec22802"]},{"name":"./src/toolbar/Toolbar.tsx","size":569,"chunks":["ec22802"]},{"name":"./src/toolbar/ToolbarButton.tsx","size":2278,"chunks":["ec22802"]},{"name":"./src/toolbar/ToolbarSelect.tsx","size":1841,"chunks":["ec22802"]},{"name":"./src/style.css","size":17,"chunks":["ec22802"]},{"name":"./src/defaultThemes.ts","size":3405,"chunks":["ec22802"]},{"name":"./src/index.tsx","size":2710,"chunks":["ec22802"]}]}
package/package.json CHANGED
@@ -6,7 +6,7 @@
6
6
  "*.css"
7
7
  ],
8
8
  "license": "MPL-2.0",
9
- "version": "0.14.6",
9
+ "version": "0.15.0",
10
10
  "files": [
11
11
  "dist",
12
12
  "types",
@@ -51,8 +51,8 @@
51
51
  "clean": "rimraf dist && rimraf types"
52
52
  },
53
53
  "dependencies": {
54
- "@blocknote/core": "^0.14.5",
55
- "@blocknote/react": "^0.14.6",
54
+ "@blocknote/core": "^0.15.0",
55
+ "@blocknote/react": "^0.15.0",
56
56
  "@mantine/core": "^7.10.1",
57
57
  "@mantine/hooks": "^7.10.1",
58
58
  "@mantine/utils": "^6.0.21",
@@ -86,5 +86,5 @@
86
86
  "access": "public",
87
87
  "registry": "https://registry.npmjs.org/"
88
88
  },
89
- "gitHead": "6e2a3326c56573a35039433fcee7c0d63bb5ef64"
89
+ "gitHead": "acd5683d0b1dca70013e16ce360ebc9fd6f50716"
90
90
  }
package/src/index.tsx CHANGED
@@ -19,7 +19,10 @@ import {
19
19
  applyBlockNoteCSSVariablesFromTheme,
20
20
  removeBlockNoteCSSVariables,
21
21
  } from "./BlockNoteTheme";
22
- import { TextInput } from "./form/TextInput";
22
+ import { GridSuggestionMenu } from "./suggestionMenu/gridSuggestionMenu/GridSuggestionMenu";
23
+ import { GridSuggestionMenuEmptyItem } from "./suggestionMenu/gridSuggestionMenu/GridSuggestionMenuEmptyItem";
24
+ import { GridSuggestionMenuItem } from "./suggestionMenu/gridSuggestionMenu/GridSuggestionMenuItem";
25
+ import { GridSuggestionMenuLoader } from "./suggestionMenu/gridSuggestionMenu/GridSuggestionMenuLoader";
23
26
  import {
24
27
  Menu,
25
28
  MenuDivider,
@@ -42,10 +45,10 @@ import { SuggestionMenuItem } from "./suggestionMenu/SuggestionMenuItem";
42
45
  import { SuggestionMenuLabel } from "./suggestionMenu/SuggestionMenuLabel";
43
46
  import { SuggestionMenuLoader } from "./suggestionMenu/SuggestionMenuLoader";
44
47
  import { TableHandle } from "./tableHandle/TableHandle";
48
+ import { TextInput } from "./form/TextInput";
45
49
  import { Toolbar } from "./toolbar/Toolbar";
46
50
  import { ToolbarButton } from "./toolbar/ToolbarButton";
47
51
  import { ToolbarSelect } from "./toolbar/ToolbarSelect";
48
-
49
52
  import "./style.css";
50
53
 
51
54
  export * from "./BlockNoteTheme";
@@ -64,6 +67,12 @@ export const components: Components = {
64
67
  TabPanel: PanelTab,
65
68
  TextInput: PanelTextInput,
66
69
  },
70
+ GridSuggestionMenu: {
71
+ Root: GridSuggestionMenu,
72
+ Item: GridSuggestionMenuItem,
73
+ EmptyItem: GridSuggestionMenuEmptyItem,
74
+ Loader: GridSuggestionMenuLoader,
75
+ },
67
76
  LinkToolbar: {
68
77
  Root: Toolbar,
69
78
  Button: ToolbarButton,
package/src/style.css CHANGED
@@ -299,6 +299,7 @@
299
299
  box-shadow: var(--bn-shadow-medium);
300
300
  box-sizing: border-box;
301
301
  color: var(--bn-colors-menu-text);
302
+ height: fit-content;
302
303
  overflow-y: auto;
303
304
  padding: 2px;
304
305
  }
@@ -362,6 +363,52 @@
362
363
  background-color: var(--bn-colors-side-menu);
363
364
  }
364
365
 
366
+ .bn-mantine .bn-grid-suggestion-menu {
367
+ background: var(--bn-colors-menu-background);
368
+ border-radius: var(--bn-border-radius-large);
369
+ box-shadow: var(--bn-shadow-medium);
370
+ display: grid;
371
+ gap: 7px;
372
+ height: fit-content;
373
+ justify-items: center;
374
+ max-height: min(500px, 100%);
375
+ overflow-y: auto;
376
+ padding: 20px;
377
+ }
378
+
379
+ .bn-mantine .bn-grid-suggestion-menu-item {
380
+ align-items: center;
381
+ border-radius: var(--bn-border-radius-large);
382
+ cursor: pointer;
383
+ display: flex;
384
+ font-size: 24px;
385
+ height: 32px;
386
+ justify-content: center;
387
+ margin: 2px;
388
+ padding: 4px;
389
+ width: 32px;
390
+ }
391
+
392
+ .bn-mantine .bn-grid-suggestion-menu-item[aria-selected="true"],
393
+ .bn-mantine .bn-grid-suggestion-menu-item:hover {
394
+ background-color: var(--bn-colors-hovered-background);
395
+ }
396
+
397
+ .bn-mantine .bn-grid-suggestion-menu-empty-item,
398
+ .bn-mantine .bn-grid-suggestion-menu-loader{
399
+ align-items: center;
400
+ color: var(--bn-colors-menu-text);
401
+ display: flex;
402
+ font-size: 14px;
403
+ font-weight: 500;
404
+ height: 32px;
405
+ justify-content: center;
406
+ }
407
+
408
+ .bn-mantine .bn-grid-suggestion-menu-loader span {
409
+ background-color: var(--bn-colors-side-menu);
410
+ }
411
+
365
412
  /* Side Menu styling */
366
413
  .bn-mantine .bn-side-menu {
367
414
  background-color: transparent;
@@ -0,0 +1,23 @@
1
+ import { assertEmpty } from "@blocknote/core";
2
+ import { ComponentProps } from "@blocknote/react";
3
+ import { forwardRef } from "react";
4
+
5
+ export const GridSuggestionMenu = forwardRef<
6
+ HTMLDivElement,
7
+ ComponentProps["GridSuggestionMenu"]["Root"]
8
+ >((props, ref) => {
9
+ const { className, children, id, columns, ...rest } = props;
10
+
11
+ assertEmpty(rest);
12
+
13
+ return (
14
+ <div
15
+ className={className}
16
+ style={{ gridTemplateColumns: `repeat(${columns}, 1fr)` } as any}
17
+ ref={ref}
18
+ id={id}
19
+ role="grid">
20
+ {children}
21
+ </div>
22
+ );
23
+ });
@@ -0,0 +1,25 @@
1
+ import { Group as MantineGroup } from "@mantine/core";
2
+
3
+ import { assertEmpty } from "@blocknote/core";
4
+ import { ComponentProps } from "@blocknote/react";
5
+ import { forwardRef } from "react";
6
+
7
+ export const GridSuggestionMenuEmptyItem = forwardRef<
8
+ HTMLDivElement,
9
+ ComponentProps["GridSuggestionMenu"]["EmptyItem"]
10
+ >((props, ref) => {
11
+ const { className, children, columns, ...rest } = props;
12
+
13
+ assertEmpty(rest);
14
+
15
+ return (
16
+ <MantineGroup
17
+ className={className}
18
+ style={{ gridColumn: `1 / ${columns + 1}` }}
19
+ ref={ref}>
20
+ <MantineGroup className="bn-mt-suggestion-menu-item-title">
21
+ {children}
22
+ </MantineGroup>
23
+ </MantineGroup>
24
+ );
25
+ });
@@ -0,0 +1,42 @@
1
+ import { mergeRefs } from "@mantine/hooks";
2
+
3
+ import { assertEmpty } from "@blocknote/core";
4
+ import { ComponentProps, elementOverflow } from "@blocknote/react";
5
+ import { forwardRef, useEffect, useRef } from "react";
6
+
7
+ export const GridSuggestionMenuItem = forwardRef<
8
+ HTMLDivElement,
9
+ ComponentProps["GridSuggestionMenu"]["Item"]
10
+ >((props, ref) => {
11
+ const { className, isSelected, onClick, item, id, ...rest } = props;
12
+
13
+ assertEmpty(rest);
14
+
15
+ const itemRef = useRef<HTMLDivElement>(null);
16
+
17
+ useEffect(() => {
18
+ if (!itemRef.current || !isSelected) {
19
+ return;
20
+ }
21
+
22
+ const overflow = elementOverflow(itemRef.current);
23
+
24
+ if (overflow === "top") {
25
+ itemRef.current.scrollIntoView(true);
26
+ } else if (overflow === "bottom") {
27
+ itemRef.current.scrollIntoView(false);
28
+ }
29
+ }, [isSelected]);
30
+
31
+ return (
32
+ <div
33
+ className={className}
34
+ ref={mergeRefs(ref, itemRef)}
35
+ id={id}
36
+ role="option"
37
+ onClick={onClick}
38
+ aria-selected={isSelected || undefined}>
39
+ {item.icon}
40
+ </div>
41
+ );
42
+ });
@@ -0,0 +1,28 @@
1
+ import { Loader as MantineLoader } from "@mantine/core";
2
+
3
+ import { assertEmpty } from "@blocknote/core";
4
+ import { ComponentProps } from "@blocknote/react";
5
+ import { forwardRef } from "react";
6
+
7
+ export const GridSuggestionMenuLoader = forwardRef<
8
+ HTMLDivElement,
9
+ ComponentProps["GridSuggestionMenu"]["Loader"]
10
+ >((props, ref) => {
11
+ const {
12
+ className,
13
+ children, // unused, using "dots" instead
14
+ columns,
15
+ ...rest
16
+ } = props;
17
+
18
+ assertEmpty(rest);
19
+
20
+ return (
21
+ <MantineLoader
22
+ className={className}
23
+ style={{ gridColumn: `1 / ${columns + 1}` }}
24
+ type="dots"
25
+ ref={ref}
26
+ />
27
+ );
28
+ });
@@ -0,0 +1,7 @@
1
+ /// <reference types="react" />
2
+ export declare const GridSuggestionMenu: import("react").ForwardRefExoticComponent<{
3
+ id: string;
4
+ columns: number;
5
+ className?: string | undefined;
6
+ children?: import("react").ReactNode;
7
+ } & import("react").RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,6 @@
1
+ /// <reference types="react" />
2
+ export declare const GridSuggestionMenuEmptyItem: import("react").ForwardRefExoticComponent<{
3
+ columns: number;
4
+ className?: string | undefined;
5
+ children?: import("react").ReactNode;
6
+ } & import("react").RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,8 @@
1
+ /// <reference types="react" />
2
+ export declare const GridSuggestionMenuItem: import("react").ForwardRefExoticComponent<{
3
+ className?: string | undefined;
4
+ id: string;
5
+ isSelected: boolean;
6
+ onClick: () => void;
7
+ item: import("@blocknote/react").DefaultReactGridSuggestionItem;
8
+ } & import("react").RefAttributes<HTMLDivElement>>;
@@ -0,0 +1,6 @@
1
+ /// <reference types="react" />
2
+ export declare const GridSuggestionMenuLoader: import("react").ForwardRefExoticComponent<{
3
+ columns: number;
4
+ className?: string | undefined;
5
+ children?: import("react").ReactNode;
6
+ } & import("react").RefAttributes<HTMLDivElement>>;