import React from 'react';
import classNames from 'classnames';
import { css } from 'emotion';
import memoizeOne from 'memoize-one';
import tinycolor from 'tinycolor2';
import { CSSTransition } from 'react-transition-group';
import { ResponsiveButton } from './ResponsiveButton';
import { GrafanaTheme, useTheme, Tooltip } from '@grafana/ui';
const getStyles = memoizeOne((theme: GrafanaTheme) => {
const orangeLighter = tinycolor(theme.colors.orangeDark)
.lighten(10)
.toString();
const pulseTextColor = tinycolor(theme.colors.orangeDark)
.desaturate(90)
.toString();
return {
noRightBorderStyle: css`
label: noRightBorderStyle;
border-right: 0;
`,
liveButton: css`
label: liveButton;
transition: background-color 1s, border-color 1s, color 1s;
margin: 0;
`,
isLive: css`
label: isLive;
border-color: ${theme.colors.orangeDark};
color: ${theme.colors.orangeDark};
background: transparent;
&:focus {
border-color: ${theme.colors.orangeDark};
color: ${theme.colors.orangeDark};
}
&:active,
&:hover {
border-color: ${orangeLighter};
color: ${orangeLighter};
}
`,
isPaused: css`
label: isPaused;
border-color: ${theme.colors.orangeDark};
background: transparent;
animation: pulse 3s ease-out 0s infinite normal forwards;
&:focus {
border-color: ${theme.colors.orangeDark};
}
&:active,
&:hover {
border-color: ${orangeLighter};
}
@keyframes pulse {
0% {
color: ${pulseTextColor};
}
50% {
color: ${theme.colors.orangeDark};
}
100% {
color: ${pulseTextColor};
}
}
`,
stopButtonEnter: css`
label: stopButtonEnter;
width: 0;
opacity: 0;
overflow: hidden;
`,
stopButtonEnterActive: css`
label: stopButtonEnterActive;
opacity: 1;
width: 32px;
transition: opacity 500ms ease-in 50ms, width 500ms ease-in 50ms;
`,
stopButtonExit: css`
label: stopButtonExit;
width: 32px;
opacity: 1;
overflow: hidden;
`,
stopButtonExitActive: css`
label: stopButtonExitActive;
opacity: 0;
width: 0;
transition: opacity 500ms ease-in 50ms, width 500ms ease-in 50ms;
`,
};
});
const defaultLiveTooltip = () => {
return <>Live>;
};
type LiveTailButtonProps = {
splitted: boolean;
start: () => void;
stop: () => void;
pause: () => void;
resume: () => void;
isLive: boolean;
isPaused: boolean;
};
export function LiveTailButton(props: LiveTailButtonProps) {
const { start, pause, resume, isLive, isPaused, stop, splitted } = props;
const theme = useTheme();
const styles = getStyles(theme);
const onClickMain = isLive ? (isPaused ? resume : pause) : start;
return (
<>
>
);
}