feat: release v0.0.1

This commit is contained in:
2026-02-27 09:50:13 +03:00
parent ed30903f96
commit 8f2c799235
321 changed files with 23986 additions and 1 deletions

View File

@@ -0,0 +1,46 @@
import { jsx as _jsx } from "react/jsx-runtime";
import React, { useCallback, useRef, useState } from "react";
import styles from "./with-mouse-events.module.scss";
export const WithMouseEvents = ({ children, onMouseEnter, onMouseLeave, onClick, onReady, ...props }) => {
const [player, setPlayer] = useState(null);
const mouseHoverTimeoutRef = useRef(null); // Реф для хранения таймера
const isHoveredRef = useRef(false); // Реф для отслеживания состояния наведения
const handlePlayer = useCallback((player) => {
setPlayer(player);
onReady && onReady(player);
}, []);
// Обработчик клика на область видео
const handleClick = useCallback((e) => {
if (onClick) {
e.preventDefault();
e.stopPropagation();
onClick(player);
}
}, [onClick, player]);
// Обработчик наведения на видео
const handleMouseEnter = useCallback(() => {
// Устанавливаем флаг, что мышь наведена
isHoveredRef.current = true;
// Запускаем таймер на 1 секунды
mouseHoverTimeoutRef.current = setTimeout(() => {
// Проверяем, что курсор все еще находится на видео
if (isHoveredRef.current) {
onMouseEnter && onMouseEnter(player);
}
}, 1);
}, [onMouseEnter, player]);
// Обработчик убирания курсора с видео
const handleMouseLeave = useCallback(() => {
// Сбрасываем флаг, что мышь не наведена
isHoveredRef.current = false;
// Очищаем таймер, если курсор убран до его срабатывания
if (mouseHoverTimeoutRef.current) {
clearTimeout(mouseHoverTimeoutRef.current);
mouseHoverTimeoutRef.current = null;
}
// Останавливаем видео, если оно было запущено
onMouseLeave && onMouseLeave(player);
}, [onMouseLeave, player]);
return (_jsx("div", { className: styles.videoArea, onMouseEnter: handleMouseEnter, onMouseLeave: handleMouseLeave, onClick: handleClick, children: React.cloneElement(children, { ...props, onReady: handlePlayer }) }));
};
//# sourceMappingURL=index.js.map