// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved. // See LICENSE.txt for license information. import React from 'react' import {IBlock} from '../blocks/block' import {MutableDividerBlock} from '../blocks/dividerBlock' import {IOrderedBlock} from '../blocks/orderedBlock' import {MutableTextBlock} from '../blocks/textBlock' import mutator from '../mutator' import {OctoUtils} from '../octoUtils' import {Utils} from '../utils' import IconButton from '../widgets/buttons/iconButton' import AddIcon from '../widgets/icons/add' import DeleteIcon from '../widgets/icons/delete' import DividerIcon from '../widgets/icons/divider' import ImageIcon from '../widgets/icons/image' import OptionsIcon from '../widgets/icons/options' import SortDownIcon from '../widgets/icons/sortDown' import SortUpIcon from '../widgets/icons/sortUp' import TextIcon from '../widgets/icons/text' import Menu from '../widgets/menu' import MenuWrapper from '../widgets/menuWrapper' import './contentBlock.scss' import {MarkdownEditor} from './markdownEditor' type Props = { block: IOrderedBlock card: IBlock contents: readonly IOrderedBlock[] } class ContentBlock extends React.PureComponent { public render(): JSX.Element | null { const {card, contents, block} = this.props if (block.type !== 'text' && block.type !== 'image' && block.type !== 'divider') { Utils.assertFailure(`Block type is unknown: ${block.type}`) return null } const index = contents.indexOf(block) return (
}/> {index > 0 && } onClick={() => { const previousBlock = contents[index - 1] const newOrder = OctoUtils.getOrderBefore(previousBlock, contents) Utils.log(`moveUp ${newOrder}`) mutator.changeOrder(block, newOrder, 'move up') }} />} {index < (contents.length - 1) && } onClick={() => { const nextBlock = contents[index + 1] const newOrder = OctoUtils.getOrderAfter(nextBlock, contents) Utils.log(`moveDown ${newOrder}`) mutator.changeOrder(block, newOrder, 'move down') }} />} } > } onClick={() => { const newBlock = new MutableTextBlock() newBlock.parentId = card.id newBlock.rootId = card.rootId // TODO: Handle need to reorder all blocks newBlock.order = OctoUtils.getOrderBefore(block, contents) Utils.log(`insert block ${block.id}, order: ${block.order}`) mutator.insertBlock(newBlock, 'insert card text') }} /> } onClick={() => { Utils.selectLocalFile( (file) => { mutator.createImageBlock(card, file, OctoUtils.getOrderBefore(block, contents)) }, '.jpg,.jpeg,.png') }} /> } onClick={() => { const newBlock = new MutableDividerBlock() newBlock.parentId = card.id newBlock.rootId = card.rootId // TODO: Handle need to reorder all blocks newBlock.order = OctoUtils.getOrderBefore(block, contents) Utils.log(`insert block ${block.id}, order: ${block.order}`) mutator.insertBlock(newBlock, 'insert card text') }} /> } id='delete' name='Delete' onClick={() => mutator.deleteBlock(block)} />
{block.type === 'text' && { Utils.log(`change text ${block.id}, ${text}`) mutator.changeTitle(block, text, 'edit card text') }} />} {block.type === 'divider' &&
} {block.type === 'image' && {block.title}}
) } } export default ContentBlock