import React, { useMemo, useCallback } from 'react' import { bindActionCreators } from 'redux' import { connect } from 'react-redux' import * as q from '../../../../../backend/src/Model' import Copy from '../../helper/Copy' import Panel from '../Panel' import Topic from './Topic' import { RecursiveTopicDeleteButton } from './RecursiveTopicDeleteButton' import { TopicDeleteButton } from './TopicDeleteButton' import { TopicTypeButton } from './TopicTypeButton' import { sidebarActions } from '../../../actions' const TopicAny = Topic as any const TopicPanel = (props: { node?: q.TreeNode; actions: typeof sidebarActions }) => { const { node } = props const copyTopic = node ? : null const deleteTopic = useCallback((topic?: q.TreeNode, recursive: boolean = false) => { if (!topic) { return } props.actions.clearTopic(topic, recursive) }, []) return useMemo( () => ( Topic {copyTopic} ), [node, node?.childTopicCount()] ) } const mapDispatchToProps = (dispatch: any) => ({ actions: bindActionCreators(sidebarActions, dispatch), }) export default connect(undefined, mapDispatchToProps)(TopicPanel)