import React, { forwardRef } from "react"; import { IDefaultSlateElementWrappersProps, IFieldWrapperForMoreOptionsProps, IElementWrapperButtonProps } from "@onzag/itemize-text-engine/editor/slate/element-wrappers"; import { WrapperDrawerSelectField, WrapperDrawerTextField } from "./wrapper"; import { IDropdownComponentWrapperProps, IDropdownComponentBoxProps, IDropdownComponentProps } from "@onzag/itemize-text-engine/editor/editor-dropdown"; import Box from "@mui/material/Box"; import { AltBadgeReactioner } from "../alt-badge-reactioner"; import IconButton from "@mui/material/IconButton"; import ViewWeek from "@mui/icons-material/ViewWeek"; import Add from "@mui/icons-material/Add"; import TableRows from "@mui/icons-material/TableRows"; import Remove from "@mui/icons-material/Remove"; import CreditCard from "@mui/icons-material/CreditCard"; const styles = { linkTemplateOptionsBox: { display: "flex", flexDirection: "column", padding: "1rem 0 0 0", }, linkTemplateOptionsText: { textAlign: "center", color: "#aaa", paddingBottom: "1rem", }, optionPrimary: { fontWeight: 700, color: "#1b5e20", }, whiteBackgroundInput: { backgroundColor: "white", }, upsideDown: { transform: "scaleY(-1)", }, fixedWidthInput: { width: 200, }, iconAddRemove: { position: "absolute", right: 0, fontSize: "15px", }, dropdown: { padding: "0.5rem 1rem", backgroundColor: "rgba(240, 240, 240, 0.9)", border: "solid 1px #707070", width: "300px", display: "flex", flexDirection: "column", rowGap: "10px", }, dropdownSizable: { padding: "0.5rem 1rem", backgroundColor: "rgba(240, 240, 240, 0.9)", border: "solid 1px #ccc", }, } function FieldWrapperForMoreOptions(props: IFieldWrapperForMoreOptionsProps) { return ( {props.label} {props.children} ) } export const DropdownComponentWrapper = forwardRef((props: IDropdownComponentWrapperProps, ref) => { return ( {props.children} ) }); export const DropdownComponentBox = forwardRef((props: IDropdownComponentBoxProps, ref) => { return ( {props.children} ) }); export const DropdownComponent = forwardRef((props: IDropdownComponentProps, ref) => { const sx = [props.sizable ? styles.dropdownSizable : styles.dropdown]; return ( {props.children} ) }); export function ElementWrapperButton(props: IElementWrapperButtonProps) { if (props.id === "table-add-td") { return ( <> ); } else if (props.id === "table-add-tr") { return ( <> ); } else if (props.id === "table-del-td") { return ( <> ); } else if (props.id === "table-del-tr") { return ( <> ); } else if (props.id === "table-toggle-th") { return ( ); } else if (props.id === "table-toggle-tfoot") { return ( ); } else { return ( ? ); } } export const materialUIElementWrappersProps: Partial = { ElementWrapperSelectField: WrapperDrawerSelectField, ElementWrapperTextField: WrapperDrawerTextField, FieldWrapperForMoreOptions: FieldWrapperForMoreOptions, DropdownComponentWrapper: DropdownComponentWrapper, DropdownComponentBox: DropdownComponentBox, DropdownComponent: DropdownComponent, ElementWrapperButton: ElementWrapperButton, }