import { MantineThemeOverride } from "@mantine/core"; import { BlockSchema, BlockSideMenuDynamicParams, BlockSideMenuStaticParams, } from "bocknoat-core"; import { FC } from "react"; import { ReactElementFactory } from "../ElementFactory/components/ReactElementFactory"; import { BlockSideMenu as ReactBlockSideMenu } from "./components/BlockSideMenu"; import { DefaultDragHandleMenu } from "./components/DefaultDragHandleMenu"; import { DragHandleMenuProps } from "./components/DragHandleMenu"; export const createReactBlockSideMenuFactory = ( theme: MantineThemeOverride, dragHandleMenu: FC> = DefaultDragHandleMenu ) => { const CustomDragHandleMenu = dragHandleMenu; const CustomBlockSideMenu = ( props: BlockSideMenuStaticParams & BlockSideMenuDynamicParams ) => ; return (staticParams: BlockSideMenuStaticParams) => ReactElementFactory< BlockSideMenuStaticParams, BlockSideMenuDynamicParams >(staticParams, CustomBlockSideMenu, theme, { animation: "fade", offset: [0, 0], placement: "left", popperOptions: { modifiers: [ { name: "flip", options: { fallbackPlacements: [], }, }, { name: "preventOverflow", options: { mainAxis: false, altAxis: false, }, }, ], }, }); };