@@ -21,13 +21,14 @@ export default function Document({
2121 sequence,
2222 onHighlightedChanged = ( ) => null ,
2323 onSequenceChange = ( ) => null ,
24- nothingHighlighted,
24+ nothingHighlighted = false ,
2525 colorLabelMap = { }
2626} : Props ) {
2727 const [ mouseDown , changeMouseDown ] = useState ( )
28- const [ [ firstSelected , lastSelected ] , changeHighlightedRangeState ] = useState (
29- [ null , null ]
30- )
28+ const [
29+ [ firstSelected , lastSelected ] ,
30+ changeHighlightedRangeState
31+ ] = useState ( [ null , null ] )
3132 const changeHighlightedRange = ( [ first , last ] ) => {
3233 changeHighlightedRangeState ( [ first , last ] )
3334 const highlightedItems = [ ]
@@ -51,89 +52,88 @@ export default function Document({
5152 onMouseUp = { ( ) => changeMouseDown ( false ) }
5253 >
5354 { sequence . map ( ( seq , i ) => (
54- < >
55- < span
56- onMouseDown = { ( ) => {
57- if ( seq . label ) return
58- changeHighlightedRange ( [ i , i ] )
59- } }
60- onMouseMove = { ( ) => {
61- if ( seq . label ) return
62- if ( mouseDown && i !== lastSelected ) {
63- changeHighlightedRange ( [
64- firstSelected === null ? i : firstSelected ,
65- i
66- ] )
67- }
68- } }
69- style = {
70- seq . label
71- ? {
72- display : "inline-flex" ,
73- backgroundColor :
74- seq . color || colorLabelMap [ seq . label ] || "#333" ,
75- color : "#fff" ,
76- padding : 4 ,
77- margin : 4 ,
78- paddingLeft : 10 ,
79- paddingRight : 10 ,
80- borderRadius : 4 ,
81- userSelect : "none"
82- }
83- : {
84- display : "inline-flex" ,
85- backgroundColor :
86- seq . text !== " " && highlightedItems . includes ( i )
87- ? "#ccc"
88- : "inherit" ,
89- color : "#333" ,
90- marginTop : 4 ,
91- marginBottom : 4 ,
92- paddingTop : 4 ,
93- paddingBottom : 4 ,
94- paddingLeft : 2 ,
95- paddingRight : 2 ,
96- userSelect : "none"
97- }
55+ < span
56+ key = { i }
57+ onMouseDown = { ( ) => {
58+ if ( seq . label ) return
59+ changeHighlightedRange ( [ i , i ] )
60+ } }
61+ onMouseMove = { ( ) => {
62+ if ( seq . label ) return
63+ if ( mouseDown && i !== lastSelected ) {
64+ changeHighlightedRange ( [
65+ firstSelected === null ? i : firstSelected ,
66+ i
67+ ] )
9868 }
99- key = { i }
100- >
101- { seq . label ? (
102- < Tooltip title = { seq . label } placement = "bottom" >
103- < div > { seq . text } </ div >
104- </ Tooltip >
105- ) : (
106- < div > { seq . text } </ div >
107- ) }
108- { seq . label && (
109- < div
110- onClick = { ( ) => {
111- onSequenceChange (
112- sequence
113- . flatMap ( s => ( s !== seq ? s : stringToSequence ( s . text ) ) )
114- . filter ( s => s . text . length > 0 )
115- )
116- } }
117- style = { {
69+ } }
70+ style = {
71+ seq . label
72+ ? {
11873 display : "inline-flex" ,
119- cursor : "pointer" ,
120- alignSelf : "center" ,
121- fontSize : 11 ,
122- width : 18 ,
123- height : 18 ,
124- alignItems : "center" ,
125- justifyContent : "center" ,
126- marginLeft : 4 ,
127- borderRadius : 9 ,
74+ backgroundColor :
75+ seq . color || colorLabelMap [ seq . label ] || "#333" ,
12876 color : "#fff" ,
129- backgroundColor : "rgba(0,0,0,0.2)"
130- } }
131- >
132- < span > { "\u2716" } </ span >
133- </ div >
134- ) }
135- </ span >
136- </ >
77+ padding : 4 ,
78+ margin : 4 ,
79+ paddingLeft : 10 ,
80+ paddingRight : 10 ,
81+ borderRadius : 4 ,
82+ userSelect : "none"
83+ }
84+ : {
85+ display : "inline-flex" ,
86+ backgroundColor :
87+ seq . text !== " " && highlightedItems . includes ( i )
88+ ? "#ccc"
89+ : "inherit" ,
90+ color : "#333" ,
91+ marginTop : 4 ,
92+ marginBottom : 4 ,
93+ paddingTop : 4 ,
94+ paddingBottom : 4 ,
95+ paddingLeft : 2 ,
96+ paddingRight : 2 ,
97+ userSelect : "none"
98+ }
99+ }
100+ key = { i }
101+ >
102+ { seq . label ? (
103+ < Tooltip title = { seq . label } placement = "bottom" >
104+ < div > { seq . text } </ div >
105+ </ Tooltip >
106+ ) : (
107+ < div > { seq . text } </ div >
108+ ) }
109+ { seq . label && (
110+ < div
111+ onClick = { ( ) => {
112+ onSequenceChange (
113+ sequence
114+ . flatMap ( s => ( s !== seq ? s : stringToSequence ( s . text ) ) )
115+ . filter ( s => s . text . length > 0 )
116+ )
117+ } }
118+ style = { {
119+ display : "inline-flex" ,
120+ cursor : "pointer" ,
121+ alignSelf : "center" ,
122+ fontSize : 11 ,
123+ width : 18 ,
124+ height : 18 ,
125+ alignItems : "center" ,
126+ justifyContent : "center" ,
127+ marginLeft : 4 ,
128+ borderRadius : 9 ,
129+ color : "#fff" ,
130+ backgroundColor : "rgba(0,0,0,0.2)"
131+ } }
132+ >
133+ < span > { "\u2716" } </ span >
134+ </ div >
135+ ) }
136+ </ span >
137137 ) ) }
138138 </ div >
139139 )
0 commit comments