outline-list.js 886 B

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