outline-list.js 862 B

1234567891011121314151617181920212223242526272829303132
  1. import PropTypes from 'prop-types'
  2. import classNames from 'classnames'
  3. import OutlineItem from './outline-item'
  4. function OutlineList({ outline, jumpToLine, isRoot, highlightedLine }) {
  5. const listClasses = classNames('outline-item-list', {
  6. 'outline-item-list-root': isRoot,
  7. })
  8. return (
  9. <ul className={listClasses} role={isRoot ? 'tree' : 'group'}>
  10. {outline.map((outlineItem, idx) => {
  11. return (
  12. <OutlineItem
  13. key={`${outlineItem.level}-${idx}`}
  14. outlineItem={outlineItem}
  15. jumpToLine={jumpToLine}
  16. highlightedLine={highlightedLine}
  17. />
  18. )
  19. })}
  20. </ul>
  21. )
  22. }
  23. OutlineList.propTypes = {
  24. outline: PropTypes.array.isRequired,
  25. jumpToLine: PropTypes.func.isRequired,
  26. isRoot: PropTypes.bool,
  27. highlightedLine: PropTypes.number,
  28. }
  29. export default OutlineList