@@ -8,7 +8,13 @@ import {ActionStorage} from '../../../core';
88import { isFunction } from '../../../lodash' ;
99import { logger } from '../../../logger' ;
1010import { ErrorLoggerBoundary } from '../../../react-utils/ErrorBoundary' ;
11- import { Toolbar , ToolbarGroupItemData , ToolbarProps } from '../../../toolbar' ;
11+ import {
12+ Toolbar ,
13+ ToolbarButtonPopupData ,
14+ ToolbarGroupItemData ,
15+ ToolbarProps ,
16+ ToolbarSingleItemData ,
17+ } from '../../../toolbar' ;
1218import { RendererItem , getReactRendererFromState } from '../ReactRenderer' ;
1319
1420type SelectionTooltipBaseProps = {
@@ -30,9 +36,14 @@ const SelectionTooltip: React.FC<SelectionTooltipProps> = ({
3036 ) ;
3137} ;
3238
33- export type ContextGroupItemData = ToolbarGroupItemData < ActionStorage > & {
34- condition ?: ( state : EditorState ) => void ;
35- } ;
39+ export type ContextGroupItemData =
40+ | ( ToolbarGroupItemData < ActionStorage > & {
41+ condition ?: ( state : EditorState ) => void ;
42+ } )
43+ | ( ( ToolbarSingleItemData < ActionStorage > | ToolbarButtonPopupData < ActionStorage > ) & {
44+ condition ?: 'enabled' ;
45+ } ) ;
46+
3647export type ContextGroupData = ContextGroupItemData [ ] ;
3748export type ContextConfig = ContextGroupData [ ] ;
3849
@@ -94,9 +105,16 @@ export class TooltipView {
94105 return this . baseProps . show
95106 ? this . menuConfig
96107 . map ( ( groupData ) =>
97- groupData . filter ( ( { condition} ) =>
98- isFunction ( condition ) ? condition ( this . view . state ) : true ,
99- ) ,
108+ groupData . filter ( ( item ) => {
109+ const { condition} = item ;
110+ if ( condition === 'enabled' ) {
111+ return item . isEnable ( this . actions ) ;
112+ }
113+ if ( isFunction ( condition ) ) {
114+ return condition ( this . view . state ) ;
115+ }
116+ return true ;
117+ } ) ,
100118 )
101119 . filter ( ( groupData ) => Boolean ( groupData . length ) )
102120 : [ ] ;
0 commit comments