mirror of https://github.com/buster-so/buster.git
Update MetricElement.tsx
This commit is contained in:
parent
8695bd8579
commit
1ccccce3a7
|
@ -6,50 +6,18 @@ import { MetricEmbedPlaceholder } from './MetricPlaceholder';
|
||||||
import { Caption, CaptionTextarea } from '../CaptionNode';
|
import { Caption, CaptionTextarea } from '../CaptionNode';
|
||||||
import { mediaResizeHandleVariants, Resizable, ResizeHandle } from '../ResizeHandle';
|
import { mediaResizeHandleVariants, Resizable, ResizeHandle } from '../ResizeHandle';
|
||||||
import { type TMetricElement } from '../../plugins/metric-plugin';
|
import { type TMetricElement } from '../../plugins/metric-plugin';
|
||||||
|
import React from 'react';
|
||||||
|
|
||||||
type MetricElementProps = PlateElementProps<TMetricElement>;
|
type MetricElementProps = PlateElementProps<TMetricElement>;
|
||||||
|
|
||||||
export const MetricElement = withHOC(
|
export const MetricElement = withHOC(
|
||||||
ResizableProvider,
|
ResizableProvider,
|
||||||
function MetricElement({ children, ...props }: MetricElementProps) {
|
function MetricElement({ children, ...props }: MetricElementProps) {
|
||||||
const width = useResizableValue('width');
|
|
||||||
const align = 'center'; // Default align for metrics
|
|
||||||
const metricId = props.element.metricId;
|
const metricId = props.element.metricId;
|
||||||
|
|
||||||
const { attributes, ...elementProps } = props;
|
const { attributes, ...elementProps } = props;
|
||||||
|
|
||||||
const content = metricId ? (
|
const content = metricId ? <MetricContent metricId={metricId} /> : <MetricEmbedPlaceholder />;
|
||||||
<figure className="group relative m-0 w-full cursor-default" contentEditable={false}>
|
|
||||||
<Resizable
|
|
||||||
align={align}
|
|
||||||
options={{
|
|
||||||
align,
|
|
||||||
maxWidth: '100%',
|
|
||||||
minWidth: 200
|
|
||||||
}}>
|
|
||||||
<ResizeHandle
|
|
||||||
className={mediaResizeHandleVariants({ direction: 'left' })}
|
|
||||||
options={{ direction: 'left' }}
|
|
||||||
/>
|
|
||||||
|
|
||||||
{/* Metric content placeholder - replace with actual metric rendering */}
|
|
||||||
<div className="min-h-40 rounded bg-red-100 p-4">
|
|
||||||
<div className="text-sm text-red-500">Metric: {metricId}</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<ResizeHandle
|
|
||||||
className={mediaResizeHandleVariants({ direction: 'right' })}
|
|
||||||
options={{ direction: 'right' }}
|
|
||||||
/>
|
|
||||||
</Resizable>
|
|
||||||
|
|
||||||
<Caption style={{ width }} align={align}>
|
|
||||||
<CaptionTextarea placeholder="Write a caption..." />
|
|
||||||
</Caption>
|
|
||||||
</figure>
|
|
||||||
) : (
|
|
||||||
<MetricEmbedPlaceholder />
|
|
||||||
);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<PlateElement
|
<PlateElement
|
||||||
|
@ -64,3 +32,38 @@ export const MetricElement = withHOC(
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
|
const MetricContent = React.memo(({ metricId }: { metricId: string }) => {
|
||||||
|
const width = useResizableValue('width');
|
||||||
|
const align = 'center'; // Default align for metrics
|
||||||
|
return (
|
||||||
|
<figure className="group relative m-0 w-full cursor-default" contentEditable={false}>
|
||||||
|
<Resizable
|
||||||
|
align={align}
|
||||||
|
options={{
|
||||||
|
align,
|
||||||
|
maxWidth: '100%',
|
||||||
|
minWidth: 350
|
||||||
|
}}>
|
||||||
|
<ResizeHandle
|
||||||
|
className={mediaResizeHandleVariants({ direction: 'left' })}
|
||||||
|
options={{ direction: 'left' }}
|
||||||
|
/>
|
||||||
|
|
||||||
|
{/* Metric content placeholder - replace with actual metric rendering */}
|
||||||
|
<div className="min-h-60 rounded bg-red-100 p-4">
|
||||||
|
<div className="text-sm text-red-500">Metric: {metricId}</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<ResizeHandle
|
||||||
|
className={mediaResizeHandleVariants({ direction: 'right' })}
|
||||||
|
options={{ direction: 'right' }}
|
||||||
|
/>
|
||||||
|
</Resizable>
|
||||||
|
|
||||||
|
<Caption style={{ width }} align={align}>
|
||||||
|
<CaptionTextarea placeholder="Write a caption..." />
|
||||||
|
</Caption>
|
||||||
|
</figure>
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
Loading…
Reference in New Issue