import React, { useContext } from 'react'; import { Schema, Plugin, BasePdf } from '@pdfme-tables/common'; import { theme, Button } from 'antd'; import { useDraggable } from '@dnd-kit/core'; import { CSS } from '@dnd-kit/utilities'; import Renderer from '../Renderer'; import { PluginsRegistry } from '../../contexts'; const Draggable = (props: { plugin: Plugin; scale: number; basePdf: BasePdf; children: React.ReactNode; }) => { const { scale, basePdf, plugin } = props; const { token } = theme.useToken(); const defaultSchema = plugin.propPanel.defaultSchema as Schema; const draggable = useDraggable({ id: defaultSchema.type, data: defaultSchema }); const { listeners, setNodeRef, attributes, transform, isDragging } = draggable; const style = { transform: CSS.Translate.toString(transform) }; return (
{isDragging && (
{ void 0; }} mode={'viewer'} outline={`1px solid ${token.colorPrimary}`} scale={scale} />
)}
{props.children}
); }; const LeftSidebar = ({ height, scale, basePdf, }: { height: number; scale: number; basePdf: BasePdf; }) => { const { token } = theme.useToken(); const pluginsRegistry = useContext(PluginsRegistry); return (
{Object.entries(pluginsRegistry).map(([label, plugin]) => { if (!plugin?.propPanel.defaultSchema) return null; return ( ); })}
); }; export default LeftSidebar;