mirror of
https://github.com/OpenCut-app/OpenCut.git
synced 2026-07-13 21:52:53 +02:00
29 lines
823 B
TypeScript
29 lines
823 B
TypeScript
import { useEffect, useRef } from "react";
|
|
import { useSelectionContext } from "@/selection/context";
|
|
import { activateScope, type ScopeEntry } from "@/selection/scope";
|
|
|
|
export function useSelectionScope() {
|
|
const { selectedIds, clearSelection } = useSelectionContext();
|
|
const hasSelectionRef = useRef(selectedIds.length > 0);
|
|
const clearSelectionRef = useRef(clearSelection);
|
|
const hasSelection = selectedIds.length > 0;
|
|
|
|
hasSelectionRef.current = hasSelection;
|
|
clearSelectionRef.current = clearSelection;
|
|
|
|
const entryRef = useRef<ScopeEntry>({
|
|
hasSelection: () => hasSelectionRef.current,
|
|
clear: () => {
|
|
clearSelectionRef.current();
|
|
},
|
|
});
|
|
|
|
useEffect(() => {
|
|
if (!hasSelection) {
|
|
return;
|
|
}
|
|
|
|
return activateScope({ entry: entryRef.current });
|
|
}, [hasSelection]);
|
|
}
|