13
13
import config from ' $lib/data/config' ;
14
14
import { base } from ' $app/paths' ;
15
15
import { footnotes , isBibleBook , refs } from ' $lib/data/stores' ;
16
- import { generateHTML } from ' $lib/scripts/scripture-reference-utils' ;
16
+ import { generateHTML , handleHeaderLinkPressed } from ' $lib/scripts/scripture-reference-utils' ;
17
17
import {
18
18
onClickText ,
19
19
deselectAllElements ,
@@ -207,7 +207,7 @@ TODO:
207
207
let child;
208
208
spanElement .classList .add (spanClass );
209
209
if (spanClass === ' xt' ) {
210
- spanElement .innerHTML = generateHTML ( phrase ) ;
210
+ spanElement .innerHTML = phrase ;
211
211
} else {
212
212
child = document .createTextNode (phrase );
213
213
spanElement .appendChild (child );
@@ -295,7 +295,13 @@ TODO:
295
295
event .stopPropagation ();
296
296
const root = event .target .parentNode .parentNode ;
297
297
const footnote = root .querySelector (` div#${root .getAttribute (' data-graft' )} ` );
298
- const parsed = footnote .innerHTML ;
298
+ const workingSpan = footnote .cloneNode (true );
299
+ const spans = workingSpan .querySelectorAll (' span.xt' );
300
+ // Loop through each span and modify its inner HTML
301
+ spans .forEach (span => {
302
+ span .innerHTML = generateHTML (span .innerHTML , ' ' ); // Change inner HTML as needed
303
+ });
304
+ const parsed = workingSpan .innerHTML ;
299
305
footnotes .push (parsed );
300
306
}
301
307
}
@@ -319,6 +325,29 @@ TODO:
319
325
refs .set ({ docSet: refDocSet , book: refBook , chapter: splitChapter , verse:splitVerse });
320
326
return ;
321
327
}
328
+ async function headerLinkClickReference(event : any ) {
329
+ event .stopPropagation ();
330
+ let start = JSON .parse (event .target .getAttribute (' data-start-ref' ));
331
+ let end =
332
+ event .target .getAttribute (' data-end-ref' ) === ' undefined'
333
+ ? undefined
334
+ : JSON .parse (event .target .getAttribute (' data-end-ref' ));
335
+ if (config .mainFeatures [' scripture-refs-display' ] === ' viewer' ) {
336
+ navigate (start );
337
+ } else {
338
+ const footnoteHTML = await handleHeaderLinkPressed (start , end );
339
+ footnotes .push (footnoteHTML );
340
+ }
341
+ }
342
+ function navigate(reference ) {
343
+ refs .set ({
344
+ docSet: reference .docSet ,
345
+ book: reference .book ,
346
+ chapter: reference .chapter ,
347
+ verse: reference .verse
348
+ });
349
+ footnotes .reset ();
350
+ }
322
351
function addNotesDiv(workspace ) {
323
352
const phraseIndex = fnc .charAt (workspace .currentPhraseIndex );
324
353
const notesSpan = document .createElement (' span' );
@@ -571,6 +600,9 @@ TODO:
571
600
referenceLinkClickHandler (e );
572
601
break ;
573
602
}
603
+ if (e .target .classList .contains (' header-ref' )) {
604
+ headerLinkClickReference (e );
605
+ }
574
606
if (! $audioPlayer .playing ) {
575
607
onClickText (e , selectedVerses , maxSelections );
576
608
}
@@ -670,7 +702,7 @@ TODO:
670
702
if (! displayingIntroduction ) {
671
703
var els = document .getElementsByTagName (' div' );
672
704
for (var i = 0 ; i < els .length ; i ++ ) {
673
- if (els [i ].classList .contains (' seltxt' ) && els [i ].id != ' ' ) {
705
+ if (( els [i ].classList .contains (' seltxt' ) && els [i ].id != ' ' ) || ( els [ i ]. classList . contains ( ' r ' )) ) {
674
706
els [i ].addEventListener (' click' , onClick , false );
675
707
}
676
708
}
@@ -797,7 +829,11 @@ TODO:
797
829
);
798
830
const innerDiv = document .createElement (' div' );
799
831
innerDiv .id = prefix + count ;
800
- innerDiv .innerText = workspace .headerText ;
832
+ if (headingParaClass == ' r' ) {
833
+ innerDiv .innerHTML = workspace .headerText ;
834
+ } else {
835
+ innerDiv .innerText = workspace .headerText ;
836
+ }
801
837
div .appendChild (innerDiv );
802
838
workspace .root .appendChild (div );
803
839
workspace .headerText = ' ' ;
@@ -921,7 +957,15 @@ TODO:
921
957
break ;
922
958
}
923
959
case ' heading' : {
924
- workspace .headerText += text ;
960
+ const blockType = context .sequences [0 ].block .subType ;
961
+ if (
962
+ blockType .includes (' usfm:r' )
963
+ ) {
964
+ const refText = generateHTML (text , ' header-ref' );
965
+ workspace .headerText += refText ;
966
+ } else {
967
+ workspace .headerText += text ;
968
+ }
925
969
break ;
926
970
}
927
971
case ' fig' : {
@@ -1203,6 +1247,7 @@ TODO:
1203
1247
const cachedSequencePointer = workspace .currentSequence ;
1204
1248
workspace .currentSequence = graftRecord .sequence ;
1205
1249
environment .context .renderer .renderSequence (environment );
1250
+ // Runs after all segments in graft have run
1206
1251
workspace .currentSequence = cachedSequencePointer ;
1207
1252
if (element .subType === ' xref' || element .subType === ' footnote' ) {
1208
1253
const div = workspace .phraseDiv .cloneNode (true );
0 commit comments