| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 | 
							- import 'package:flutter/material.dart';
 
- // ignore: unused_import
 
- import 'package:flowy_infra/time/duration.dart';
 
- typedef HoverBuilder = Widget Function(BuildContext context, bool onHover);
 
- typedef IsOnSelected = bool Function();
 
- class FlowyHover extends StatefulWidget {
 
-   final HoverDisplayConfig config;
 
-   final HoverBuilder builder;
 
-   final IsOnSelected? isOnSelected;
 
-   const FlowyHover({
 
-     Key? key,
 
-     required this.builder,
 
-     required this.config,
 
-     this.isOnSelected,
 
-   }) : super(key: key);
 
-   @override
 
-   State<FlowyHover> createState() => _FlowyHoverState();
 
- }
 
- class _FlowyHoverState extends State<FlowyHover> {
 
-   bool _onHover = false;
 
-   @override
 
-   Widget build(BuildContext context) {
 
-     return MouseRegion(
 
-       cursor: SystemMouseCursors.click,
 
-       onEnter: (p) => setOnHover(true),
 
-       onExit: (p) => setOnHover(false),
 
-       child: render(),
 
-     );
 
-   }
 
-   void setOnHover(bool value) => setState(() => _onHover = value);
 
-   Widget render() {
 
-     var showHover = _onHover;
 
-     if (showHover == false && widget.isOnSelected != null) {
 
-       showHover = widget.isOnSelected!();
 
-     }
 
-     if (showHover) {
 
-       return FlowyHoverBackground(
 
-         config: widget.config,
 
-         child: widget.builder(context, _onHover),
 
-       );
 
-     } else {
 
-       return widget.builder(context, _onHover);
 
-     }
 
-   }
 
- }
 
- class HoverDisplayConfig {
 
-   final Color borderColor;
 
-   final double borderWidth;
 
-   final Color hoverColor;
 
-   final BorderRadius borderRadius;
 
-   const HoverDisplayConfig(
 
-       {this.borderColor = Colors.transparent,
 
-       this.borderWidth = 0,
 
-       this.borderRadius = const BorderRadius.all(Radius.circular(6)),
 
-       required this.hoverColor});
 
- }
 
- class FlowyHoverBackground extends StatelessWidget {
 
-   final HoverDisplayConfig config;
 
-   final Widget child;
 
-   const FlowyHoverBackground({
 
-     Key? key,
 
-     required this.child,
 
-     required this.config,
 
-   }) : super(key: key);
 
-   @override
 
-   Widget build(BuildContext context) {
 
-     final hoverBorder = Border.all(
 
-       color: config.borderColor,
 
-       width: config.borderWidth,
 
-     );
 
-     return Container(
 
-       decoration: BoxDecoration(
 
-         border: hoverBorder,
 
-         color: config.hoverColor,
 
-         borderRadius: config.borderRadius,
 
-       ),
 
-       child: child,
 
-     );
 
-   }
 
- }
 
 
  |