UNPKG

@bbc/react-transcript-editor

Version:

A React component to make transcribing audio and video easier and faster.

55 lines (44 loc) 1.65 kB
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } import React, { PureComponent } from 'react'; import PropTypes from 'prop-types'; class Word extends PureComponent { constructor(...args) { super(...args); _defineProperty(this, "generateConfidence", data => { // handling edge case where confidence score not present if (data.confidence) { return data.confidence > 0.6 ? 'high' : 'low'; } return 'high'; }); _defineProperty(this, "generatePreviousTimes", data => { let prevTimes = ''; for (let i = 0; i < data.start; i++) { prevTimes += `${i} `; } if (data.start % 1 > 0) { // Find the closest quarter-second to the current time, for more dynamic results const dec = Math.floor(data.start % 1 * 4.0) / 4.0; prevTimes += ` ${Math.floor(data.start) + dec}`; } return prevTimes; }); } render() { const data = this.props.entityKey ? this.props.contentState.getEntity(this.props.entityKey).getData() : {}; return React.createElement("span", { "data-start": data.start, "data-end": data.end, "data-confidence": this.generateConfidence(data), "data-prev-times": this.generatePreviousTimes(data), "data-entity-key": data.key, className: "Word" }, this.props.children); } } Word.propTypes = { contentState: PropTypes.object, entityKey: PropTypes.string, children: PropTypes.array }; export default Word;