@@ -61,7 +61,9 @@ https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase/onversionchange
61
61
"anchor" :13 ,
62
62
"close" :14 ,
63
63
"restoreEditor" :15 ,
64
- "resetTimer" :16
64
+ "resetTimer" :16 ,
65
+ "nextAnchor" :17 ,
66
+ "previousAnchor" :18
65
67
} ) ;
66
68
67
69
// Global constants
@@ -665,6 +667,59 @@ https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase/onversionchange
665
667
editor . postMessage ( { 'request' :command . anchor , 'data' :theAnchor } , getDomain ( ) ) ;
666
668
}
667
669
670
+ function moveToNextAnchor ( theAnchor ) {
671
+ editor . postMessage ( { 'request' :command . anchor , 'data' :theAnchor } , getDomain ( ) ) ;
672
+ }
673
+
674
+ function internalMoveToNextAnchor ( next ) {
675
+ // Setup
676
+ const anchors = document . getElementsByTagName ( "a" ) ,
677
+ currPos = - getCurrPos ( ) ,
678
+ verticalDisplacement = focusVerticalDisplacementCorrector ( ) ;
679
+ let jump = 0 ;
680
+ console . log ( "currPos" , currPos ) ;
681
+ // console.log(anchors[0]);
682
+ // if (flipV) {
683
+ // for (let i=anchors.length-1; i>=0; i--) {
684
+ // if (next) {
685
+ // if (anchors[i].offsetTop-verticalDisplacement<currPos) {
686
+ // jump = -promptHeight+anchors[i].offsetTop + screenHeight - verticalDisplacement;
687
+ // break;
688
+ // }
689
+ // }
690
+ // else if (anchors[i].offsetTop-verticalDisplacement>currPos) {
691
+ // jump = -promptHeight+anchors[i].offsetTop + screenHeight - verticalDisplacement;
692
+ // break;
693
+ // }
694
+ // }
695
+ // }
696
+ // else {
697
+ if ( next ) {
698
+ for ( let i = 0 ; i < anchors . length ; i ++ ) {
699
+ console . log ( "i" , i ) ;
700
+ console . log ( 'offsetTop' , anchors [ i ] . offsetTop ) ;
701
+ if ( anchors [ i ] . offsetTop - verticalDisplacement > currPos ) {
702
+ jump = - anchors [ i ] . offsetTop + verticalDisplacement ;
703
+ break ;
704
+ }
705
+ }
706
+ }
707
+ else {
708
+ for ( let i = anchors . length - 1 ; i >= 0 ; i -- ) {
709
+ console . log ( "i" , i ) ;
710
+ console . log ( 'offsetTop' , anchors [ i ] . offsetTop ) ;
711
+ if ( anchors [ i ] . offsetTop - verticalDisplacement < currPos ) {
712
+ jump = - anchors [ i ] . offsetTop + verticalDisplacement ;
713
+ break ;
714
+ }
715
+ }
716
+ }
717
+ // }
718
+ if ( jump < 0 || ! next )
719
+ animate ( 0 , jump ) ;
720
+ resumeAnimation ( ) ;
721
+ }
722
+
668
723
// Update unit and unit related measurements
669
724
function updateUnit ( ) {
670
725
unit = focusHeight / 80 ;
@@ -991,6 +1046,12 @@ https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase/onversionchange
991
1046
case command . close :
992
1047
closeInstance ( ) ;
993
1048
break ;
1049
+ case command . nextAnchor :
1050
+ internalMoveToNextAnchor ( true ) ;
1051
+ break ;
1052
+ case command . previousAnchor :
1053
+ internalMoveToNextAnchor ( false ) ;
1054
+ break ;
994
1055
default :
995
1056
// Notify unknown message received.
996
1057
if ( debug ) console . log ( "Unknown post message received: " + message . request ) && false ;
@@ -1084,6 +1145,22 @@ https://developer.mozilla.org/en-US/docs/Web/API/IDBDatabase/onversionchange
1084
1145
case "backspace" :
1085
1146
resetTimer ( ) ;
1086
1147
break ;
1148
+ case 36 :
1149
+ case "Home" :
1150
+ listener ( {
1151
+ data : {
1152
+ request : command . previousAnchor
1153
+ }
1154
+ } ) ;
1155
+ break ;
1156
+ case 35 :
1157
+ case "End" :
1158
+ listener ( {
1159
+ data : {
1160
+ request : command . nextAnchor
1161
+ }
1162
+ } ) ;
1163
+ break ;
1087
1164
default : // Move to anchor.
1088
1165
// If key is not a string
1089
1166
if ( ! isFunction ( event . key . indexOf ) )
0 commit comments