import { DRAG_END, DRAG_PREFIX, DRAG_START, ITransition, TRANSITIONS, dispatcher, filter, } from '@designcombo/core'; import React, { useEffect, useState } from 'react'; import Draggable from '@/components/shared/draggable'; import { ScrollArea } from '@/components/ui/scroll-area'; export const Transitions = () => { const [shouldDisplayPreview, setShouldDisplayPreview] = useState(true); // handle track and track item events - updates useEffect(() => { const dragEvents = dispatcher.bus.pipe( filter(({ key }) => key.startsWith(DRAG_PREFIX)), ); const dragEventsSubscription = dragEvents.subscribe((obj) => { if (obj.key === DRAG_START) { setShouldDisplayPreview(false); } else if (obj.key === DRAG_END) { setShouldDisplayPreview(true); } }); return () => dragEventsSubscription.unsubscribe(); }, []); return (
Transitions
{TRANSITIONS.map((transition, index) => ( ))}
); }; const TransitionsMenuItem = ({ transition, shouldDisplayPreview, }: { transition: Partial; shouldDisplayPreview: boolean; }) => { const style = React.useMemo( () => ({ backgroundImage: `url(${transition.preview})`, backgroundSize: 'cover', width: '70px', height: '70px', }), [transition.preview], ); return ( } shouldDisplayPreview={shouldDisplayPreview} >
{transition.name || transition.type}
); }; export default TransitionsMenuItem;