import {Gear, PlayFill, StopFill} from '@gravity-ui/icons'; import type {ButtonProps} from '@gravity-ui/uikit'; import {ActionTooltip, Button, Icon} from '@gravity-ui/uikit'; import QuerySettingsDescription from '../../../../components/QuerySettingsDescription/QuerySettingsDescription'; import {cn} from '../../../../utils/cn'; import {BRAND_BUTTON_CLASS} from '../../../../utils/constants'; import {useChangedQuerySettings} from '../../../../utils/hooks/useChangedQuerySettings'; import i18n from '../i18n'; import './EditorButton.scss'; const b = cn('ydb-query-editor-button'); const Run = (props: ButtonProps) => ( {i18n('action_run-query')} ); type StopButtonProps = ButtonProps & { error?: boolean; replacedAction?: 'run' | 'explain' | 'explainAnalyze'; }; const Stop = ({error, replacedAction, ...props}: StopButtonProps) => ( {i18n('action_stop-query')} ); const Explain = (props: ButtonProps) => ( {i18n('action_explain-query')} ); const ExplainAnalyze = (props: ButtonProps) => ( {i18n('action_explain-analyze-query')} ); interface SettingsButtonProps { onClick: () => void; isLoading: boolean; } const Settings = ({onClick, isLoading}: SettingsButtonProps) => { const {changedCurrentSettings, changedCurrentSettingsDescriptions} = useChangedQuerySettings(); const extraGearProps = changedCurrentSettings.length > 0 ? ({view: 'outlined-info', selected: true} as const) : null; return ( } openDelay={0} placement={['top-start']} > {extraGearProps ? ( ({changedCurrentSettings.length}) ) : null} ); }; export const EditorButton = { Run, Stop, Explain, ExplainAnalyze, Settings, };