1
1
import * as React from 'react' ;
2
- import { ContextPane } from 'nice-ui/lib/4-card/ContextMenu' ;
2
+ import { ContextPane , ContextItem , ContextSep } from 'nice-ui/lib/4-card/ContextMenu' ;
3
3
import { useToolbarPlugin } from '../../context' ;
4
- import type { SliceRegistryEntry } from '../../../../../json-crdt-extensions/peritext/registry/SliceRegistryEntry' ;
5
4
import type { Inline , Peritext , Slice } from '../../../../../json-crdt-extensions' ;
6
5
import type { CaretViewProps } from '../../../../web/react/cursor/CaretView' ;
6
+ import type { ToolBarSliceRegistryEntry } from '../../types' ;
7
7
8
- class FormattingItem {
8
+ class ToolbarSlice {
9
9
public constructor (
10
10
public readonly slice : Slice < string > ,
11
- public readonly def : SliceRegistryEntry ,
11
+ public readonly def : ToolBarSliceRegistryEntry ,
12
12
) { }
13
13
}
14
14
15
15
const getConfigurableFormattingItems = ( txt : Peritext , inline ?: Inline ) => {
16
16
const slices = inline ?. p1 . layers ;
17
- const res : FormattingItem [ ] = [ ] ;
17
+ const res : ToolbarSlice [ ] = [ ] ;
18
18
if ( ! slices ) return res ;
19
19
const registry = txt . editor . getRegistry ( ) ;
20
20
for ( const slice of slices ) {
@@ -24,7 +24,7 @@ const getConfigurableFormattingItems = (txt: Peritext, inline?: Inline) => {
24
24
if ( ! def ) continue ;
25
25
const isConfigurable = ! ! def . schema ;
26
26
if ( ! isConfigurable ) continue ;
27
- res . push ( new FormattingItem ( slice , def ) ) ;
27
+ res . push ( new ToolbarSlice ( slice , def ) ) ;
28
28
}
29
29
return res ;
30
30
} ;
@@ -42,10 +42,17 @@ export const CaretBottomOverlay: React.FC<CaretBottomOverlayProps> = (props) =>
42
42
if ( ! formatting . length ) return ;
43
43
44
44
return (
45
- < ContextPane >
46
- { formatting . map ( ( { slice, def} , index ) => (
47
- < div > { slice . type } , { def . name } </ div >
48
- ) ) }
45
+ < ContextPane style = { { minWidth : 'calc(max(220px, min(360px, 80vw)))' } } >
46
+ < ContextSep />
47
+ { formatting . map ( ( { slice, def} , index ) => {
48
+ const menu = def . data ( ) . menu ;
49
+ return (
50
+ < ContextItem inset icon = { menu ?. icon ?.( ) } right = { < div > right</ div > } onClick = { ( ) => { } } >
51
+ { def . data ( ) . menu ?. name ?? def . name }
52
+ </ ContextItem >
53
+ ) ;
54
+ } ) }
55
+ < ContextSep />
49
56
</ ContextPane >
50
57
) ;
51
58
} ;
0 commit comments