import React from 'react';
import { List } from 'immutable';
import cn from 'classnames';
/**
* Slate uses React components to render each type of node that it receives.
* This is the closest thing Slate has to a schema definition. The types are set
* by us when we manually deserialize from Remark's MDAST to Slate's AST.
*/
export const renderMark = props => {
switch (props.mark.type) {
case bold: return props => {props.children};
case italic: return props => {props.children};
case strikethrough: return props => {props.children};
case code: return props => {props.children}
;
}
};
export const renderNode = props => {
switch (props.node.type) {
case 'paragraph': return props =>
{props.children}
;
case 'list-item': return props => {props.children};
case 'quote': return props => {props.children}
;
case 'code': return props => {props.children}
;
case 'heading-one': return props => {props.children}
;
case 'heading-two': return props => {props.children}
;
case 'heading-three': return props => {props.children}
;
case 'heading-four': return props => {props.children}
;
case 'heading-five': return props => {props.children}
;
case 'heading-six': return props => {props.children}
;
case 'table': return props => ;
case 'table-row': return props => {props.children}
;
case 'table-cell': return props => {props.children} | ;
case 'thematic-break': return props =>
;
case 'bulleted-list': return props => ;
case 'numbered-list': return props => (
{props.children}
);
case 'link': return props => {
const data = props.node.get('data');
const marks = data.get('marks');
const url = data.get('url');
const title = data.get('title');
const link = {props.children};
const result = !marks ? link : marks.reduce((acc, mark) => {
const MarkComponent = MARK_COMPONENTS[mark.type];
return {acc};
}, link);
return result;
};
case 'image': props => {
const data = props.node.get('data');
const marks = data.get('marks');
const url = data.get('url');
const title = data.get('title');
const alt = data.get('alt');
const image =
;
const result = !marks ? image : marks.reduce((acc, mark) => {
const MarkComponent = MARK_COMPONENTS[mark.type];
return {acc};
}, image);
return result;
};
case 'shortcode': props => {
const { attributes, node, editor } = props;
const isSelected = editor.value.selection.hasFocusIn(node);
const className = cn('nc-visualEditor-shortcode', { ['nc-visualEditor-shortcodeSelected']: isSelected });
return {node.data.get('shortcode')}
;
};
}
};