import 'package:flutter/material.dart';
import 'plus_button_widget.dart'; // Make sure to import your PlusButtonWidget

class SpaceCardWidget extends StatelessWidget {
  final int index;
  final Size screenSize;
  final Offset position;
  final bool isHovered;
  final Function(int index, bool isHovered) onHoverChanged;
  final Function(int index, Offset newPosition, String direction) onButtonTap;
  final Widget Function(int index) buildSpaceContainer;
  final ValueChanged<Offset> onPositionChanged;

  const SpaceCardWidget({
    super.key,
    required this.index,
    required this.onPositionChanged,
    required this.screenSize,
    required this.position,
    required this.isHovered,
    required this.onHoverChanged,
    required this.onButtonTap,
    required this.buildSpaceContainer,
  });

  @override
  Widget build(BuildContext context) {
    return GestureDetector(
      behavior: HitTestBehavior.opaque,
      onPanUpdate: (details) {
        // Call the provided callback to update the position
        final newPosition = position + details.delta;
        onPositionChanged(newPosition);
      },
      child: MouseRegion(
        onEnter: (_) {
          // Call the provided callback to handle hover state
          onHoverChanged(index, true);
        },
        onExit: (_) {
          // Call the provided callback to handle hover state
          onHoverChanged(index, false);
        },
        child: Stack(
          clipBehavior: Clip
              .none, // Allow hovering elements to be displayed outside the boundary
          children: [
            buildSpaceContainer(index), // Build the space container
            if (isHovered) ...[
              PlusButtonWidget(
                index: index,
                direction: 'down',
                offset: const Offset(63, 50),
                onButtonTap: onButtonTap,
              ),
            ],
          ],
        ),
      ),
    );
  }
}
