@@ -6,6 +6,17 @@ import DiscreeteDropdown from './DiscreeteDropdown';
66import PictureUploadAction from '../menu-items/PictureUploadAction' ;
77import { v4 as uuid } from 'uuid' ;
88
9+ function boldSpeakerNames ( text ) {
10+ return text . split ( '\n' ) . map ( line => {
11+ const match = line . match ( / ^ ( [ A - Z ] [ a - z A - Z é è ê î ï É È Ê Î Ï \- ' ] + ) \s * : / ) ;
12+ if ( match ) {
13+ const name = match [ 1 ] ;
14+ return line . replace ( name , `**${ name } **` ) ;
15+ }
16+ return line ;
17+ } ) . join ( '\n' ) ;
18+ }
19+
920function EditableText ( { id, text, rubric, isPartOf, links, fragment, setFragment, setHighlightedText, setSelectedText, rawEditMode, setRawEditMode, backend, setLastUpdate} ) {
1021 const [ beingEdited , setBeingEdited ] = useState ( false ) ;
1122 const [ editedDocument , setEditedDocument ] = useState ( ) ;
@@ -92,6 +103,7 @@ function EditableText({id, text, rubric, isPartOf, links, fragment, setFragment,
92103 let text = ( rubric && ! rawEditMode )
93104 ? editedDocument . text . replace ( PASSAGE , `{${ rubric } } ${ parsedText } ` )
94105 : editedText ;
106+
95107 backend . putDocument ( { ...editedDocument , text } )
96108 . then ( x => setLastUpdate ( x . rev ) )
97109 . then ( ( ) => setHighlightedText ( ) )
@@ -105,7 +117,7 @@ function EditableText({id, text, rubric, isPartOf, links, fragment, setFragment,
105117 < div className = "editable content position-relative" title = "Edit content..." >
106118 < div className = "formatted-text" onClick = { handleClick } >
107119 < FormattedText { ...{ setHighlightedText, setSelectedText} } >
108- { text || ' ' }
120+ { boldSpeakerNames ( text || ' ' ) }
109121 </ FormattedText >
110122 </ div >
111123 < DiscreeteDropdown >
@@ -122,4 +134,4 @@ function EditableText({id, text, rubric, isPartOf, links, fragment, setFragment,
122134 ) ;
123135}
124136
125- export default EditableText ;
137+ export default EditableText ;
0 commit comments