@@ -182,8 +182,10 @@ const refreshList = () => {
182182 let ol = document . querySelector ( '#left-bar ol' )
183183 ol . innerHTML = ''
184184 proofs . forEach ( ( entry , i ) => {
185- ol . innerHTML += `<li value="${ i } ">
185+ ol . innerHTML += `<li value="${ i } " class="${ entry . selected ? 'selected' : '' } ">
186+ <span onclick="javascript:selectProof(${ i } )">
186187 ${ entry . proof . conclusion . unicode ( ) }
188+ </span>
187189 <br>
188190 <button onclick="javascript:giveLatex(${ i } )" class="latex">L<sup>a</sup>T<sub>e</sub>X</button>
189191 <button onclick="javascript:removeProof(${ i } )">✖ Delete</button>
@@ -208,6 +210,29 @@ const refreshAll = () => {
208210 redrawAll ( )
209211}
210212
213+ const createSelection = opt => {
214+ let root = opt . selected [ 0 ] . root
215+ let index = proofs . findIndex ( entry => root == entry . proof )
216+ proofs [ index ] . selected = true
217+ refreshList ( )
218+ }
219+ const removeSelection = ( opt , shouldRefresh = true ) => {
220+ for ( var i = 0 ; i < proofs . length ; i ++ ) {
221+ proofs [ i ] . selected = false
222+ }
223+ if ( shouldRefresh ) { refreshList ( ) }
224+ }
225+ canvas . on ( "selection:created" , createSelection )
226+ canvas . on ( "selection:cleared" , removeSelection )
227+ canvas . on ( "selection:updated" , opt => {
228+ removeSelection ( opt , false )
229+ createSelection ( opt )
230+ } )
231+ const selectProof = i => {
232+ canvas . setActiveObject ( canvas . item ( i ) )
233+ canvas . renderAll ( )
234+ }
235+
211236document . getElementById ( 'addLKGoal' ) . addEventListener ( 'click' , async ( ) => {
212237 addProof ( new LKIncomplete ( await modalSequentPrompt ( 'Enter an LK goal sequent:' ) ) )
213238} )
0 commit comments