ElectronicBabylonianLiterature/ebl-frontend

View on GitHub
src/corpus/ui/ChapterSiglumsAndTransliterations.tsx

Summary

Maintainability
A
0 mins
Test Coverage
F
0%
import React, { ReactNode } from 'react'
import _ from 'lodash'
import withData from 'http/withData'
import { Transliteration } from 'transliteration/ui/Transliteration'
import SiglumAndTransliteration from 'corpus/domain/SiglumAndTransliteration'
import { Col, Container, Row } from 'react-bootstrap'
import { ChapterId } from 'transliteration/domain/chapter-id'

function SiglumsAndTansliterationsSection({
  name,
  data,
}: {
  name: ReactNode
  data: readonly SiglumAndTransliteration[]
}): JSX.Element {
  return (
    <section className="text-view__colophon-chapter">
      <h4 className="text-view__colophon-chapter-heading">Chapter {name}</h4>
      <Container bsPrefix="text-view__chapter-colophons">
        {data.map(({ siglum, text }) => (
          <Row key={siglum}>
            <Col md={2}>
              <h5 className="text-view__colophon-siglum">{siglum}</h5>
            </Col>
            <Col md={10}>
              <Transliteration text={text} />
            </Col>
          </Row>
        ))}
      </Container>
    </section>
  )
}

export default withData<
  { id: ChapterId },
  {
    textService
    method: 'findColophons' | 'findUnplacedLines'
  },
  readonly SiglumAndTransliteration[]
>(
  ({ data, id }) =>
    _.isEmpty(data) ? null : (
      <SiglumsAndTansliterationsSection name={id.name} data={data} />
    ),
  ({ id, textService, method }) => textService[method](id),
  {
    watch: (props) => [props.id],
  }
)