'use client'; import * as React from 'react'; import type { TEquationElement } from 'platejs'; import { useEquationElement, useEquationInput, } from '@platejs/math/react'; import { RadicalIcon } from 'lucide-react'; import { type PlateElementProps, PlateElement, useSelected } from 'platejs/react'; import { cn } from '@/lib/utils'; export function EquationElement({ children, ...props }: PlateElementProps) { const element = props.element; const selected = useSelected(); const katexRef = React.useRef(null); const [isEditing, setIsEditing] = React.useState(false); useEquationElement({ element, katexRef, options: { displayMode: true, throwOnError: false, }, }); const { props: inputProps, ref: inputRef, onDismiss, onSubmit } = useEquationInput({ isInline: false, open: isEditing, onClose: () => setIsEditing(false), }); return (
setIsEditing(true)} > {element.texExpression ? (
) : (
Add an equation
)}
{isEditing && (