@@ -13,7 +13,9 @@ export class Wiki {
1313 const { header, navigation } = documentationUI . render (
1414 this . documentationRenderContainer , { preCacheAllFlags : true }
1515 ) ;
16+ /** @type {documentationUI.Header } */
1617 this . header = header ;
18+ /** @type {Record<string, documentationUI.Navigation> } */
1719 this . navigation = navigation ;
1820
1921 const packageInfoDomElement = document . getElementById ( PackageInfo . DOMElementName ) ;
@@ -31,18 +33,51 @@ export class Wiki {
3133 } ) ;
3234
3335 document . addEventListener ( "keydown" , ( event ) => {
34- const isTargetInput = event . target . tagName === "INPUT" ;
35- const isTargetPopup = event . target . id === "popup--background" ;
36- if ( isTargetInput || isTargetPopup ) {
37- return ;
36+ this . #keydownHotkeys( event ) ;
37+ if ( this . isOpen ) {
38+ this . #keydownArrows( event ) ;
3839 }
40+ } ) ;
41+ }
42+
43+ /**
44+ * @param {KeyboardEvent } event
45+ */
46+ #keydownHotkeys( event ) {
47+ const isTargetInput = event . target . tagName === "INPUT" ;
48+ const isTargetPopup = event . target . id === "popup--background" ;
49+ if ( isTargetInput || isTargetPopup ) {
50+ return ;
51+ }
3952
40- const hotkeys = JSON . parse ( localStorage . getItem ( "hotkeys" ) ) ;
53+ const hotkeys = JSON . parse ( localStorage . getItem ( "hotkeys" ) ) ;
4154
42- if ( event . key . toUpperCase ( ) === hotkeys . wiki ) {
43- this [ this . isOpen ? "close" : "open" ] ( ) ;
44- }
45- } ) ;
55+ if ( event . key . toUpperCase ( ) === hotkeys . wiki ) {
56+ this [ this . isOpen ? "close" : "open" ] ( ) ;
57+ }
58+ }
59+
60+ /**
61+ * @param {KeyboardEvent } event
62+ */
63+ #keydownArrows( event ) {
64+ /** @type {documentationUI.Navigation } */
65+ const activeNav = this . navigation [ this . header . active . getAttribute ( "data-menu" ) ] ;
66+
67+ switch ( event . key ) {
68+ case "ArrowLeft" :
69+ case "ArrowRight" :
70+ this . header . switchActiveView ( ) ;
71+ break ;
72+ case "ArrowUp" :
73+ activeNav . previous ( ) ;
74+ break ;
75+ case "ArrowDown" :
76+ activeNav . next ( ) ;
77+ break ;
78+ default :
79+ break ;
80+ }
4681 }
4782
4883 get isOpen ( ) {
0 commit comments