Spaces:
deepak191z
/
Runtime error

deepak191z's picture
Upload 84 files
229b3b8 verified
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 (
<div className="flex-1 overflow-auto flex flex-col">
<div className="text-md flex-none text-text-primary font-medium h-12 flex items-center px-4">
Transitions
</div>
<ScrollArea>
<div className="grid grid-cols-3 gap-2 px-4">
{TRANSITIONS.map((transition, index) => (
<TransitionsMenuItem
key={index}
transition={transition}
shouldDisplayPreview={shouldDisplayPreview}
/>
))}
</div>
</ScrollArea>
</div>
);
};
const TransitionsMenuItem = ({
transition,
shouldDisplayPreview,
}: {
transition: Partial<ITransition>;
shouldDisplayPreview: boolean;
}) => {
const style = React.useMemo(
() => ({
backgroundImage: `url(${transition.preview})`,
backgroundSize: 'cover',
width: '70px',
height: '70px',
}),
[transition.preview],
);
return (
<Draggable
data={transition}
renderCustomPreview={<div style={style} className="draggable" />}
shouldDisplayPreview={shouldDisplayPreview}
>
<div>
<div>
<div
// ref={divRef}
style={style}
className="draggable"
/>
</div>
<div className="text-muted-foreground text-[12px] text-nowrap overflow-ellipsis h-6 flex items-center capitalize">
{transition.name || transition.type}
</div>
</div>
</Draggable>
);
};
export default TransitionsMenuItem;