import React from 'react';
import styled from 'styled-components';
import PluginSlot from '../PluginSlot';
import WithPluginState from '../WithPluginState';
import ContentStyles from '../ContentStyles';
import { EditorAppearanceComponentProps, EditorAppearance } from '../../types';
import {
pluginKey as maxContentSizePluginKey,
MaxContentSizePluginState,
} from '../../plugins/max-content-size';
import { scrollbarStyles } from '../styles';
import WithFlash from '../WithFlash';
export interface ChromelessEditorProps {
isMaxContentSizeReached?: boolean;
maxHeight?: number;
}
const ChromelessEditor: any = styled.div`
line-height: 20px;
height: auto;
min-height: 30px;
${(props: ChromelessEditorProps) =>
props.maxHeight
? 'max-height: ' + props.maxHeight + 'px;'
: ''} overflow-x: hidden;
overflow-y: auto;
${scrollbarStyles} max-width: inherit;
box-sizing: border-box;
word-wrap: break-word;
div > .ProseMirror {
outline: none;
white-space: pre-wrap;
padding: 0;
margin: 0;
}
`;
ChromelessEditor.displayName = 'ChromelessEditor';
const ContentArea = styled(ContentStyles)``;
ContentArea.displayName = 'ContentArea';
export default class Editor extends React.Component<
EditorAppearanceComponentProps,
any
> {
static displayName = 'ChromelessEditorAppearance';
private appearance: EditorAppearance = 'chromeless';
private containerElement: HTMLElement | null = null;
private renderChrome = ({
maxContentSize,
}: {
maxContentSize?: MaxContentSizePluginState;
}) => {
const {
editorDOMElement,
editorView,
editorActions,
eventDispatcher,
providerFactory,
contentComponents,
customContentComponents,
maxHeight,
popupsMountPoint,
popupsBoundariesElement,
popupsScrollableElement,
disabled,
dispatchAnalyticsEvent,
} = this.props;
const maxContentSizeReached = Boolean(
maxContentSize?.maxContentSizeReached,
);
return (
(this.containerElement = ref)}
>
{customContentComponents}
{editorDOMElement}
);
};
render() {
return (
);
}
}