@@ -20,11 +20,26 @@ function setEventListener(type: string, listener: (event: Event) => void) {
2020}
2121
2222const swipeIgnoreTags = [ "PRE" , "CODE" ]
23-
23+ const swipeIgnoreMatches = [ "#sr-header-area" ]
2424const toggleAbles = [
2525 { name : "Disable random NSFW" , settingId : "disableNSFW" , className : "ol_noRandNsfw" } ,
2626 { name : "Disable random" , settingId : "disableRandom" , className : "ol_noRandom" } ,
2727]
28+ function swipeWrapper ( callback : ( ( event : Event ) => void ) ) : ( ( event : Event ) => void ) {
29+ function wrapped ( event : Event ) {
30+ const target = event . target as HTMLElement ;
31+ if ( target && swipeIgnoreTags . includes ( target . tagName ) ) {
32+ return
33+ }
34+ for ( const selector of swipeIgnoreMatches ) {
35+ if ( target . closest ( selector ) !== null ) {
36+ return
37+ }
38+ }
39+ callback ( event ) ;
40+ }
41+ return wrapped ;
42+ }
2843
2944export default class Sidebar extends OLFeature {
3045 moduleName = "Sidebar" ;
@@ -67,27 +82,19 @@ export default class Sidebar extends OLFeature {
6782 console . log ( "Setting up sidebar events, handlers:" , this . subToggle , this . userToggle )
6883 setEventListener ( "toggleSub" , this . subToggle ) ;
6984 setEventListener ( "toggleUser" , this . userToggle ) ;
70- setEventListener ( "swiped-right" , ( event ) => {
71- const target = event . target as HTMLElement ;
72- if ( target && swipeIgnoreTags . includes ( target . tagName ) ) {
73- return
74- }
85+ setEventListener ( "swiped-right" , swipeWrapper ( ( event ) => {
7586 if ( this . subSide && this . subSide . classList . contains ( "active" ) ) {
7687 this . subToggle ( ) ;
7788 } else if ( this . userSide && ! this . userSide . classList . contains ( "active" ) ) {
7889 this . userToggle ( ) ;
7990 }
80- } ) ;
81- setEventListener ( "swiped-left" , ( event ) => {
82- const target = event . target as HTMLElement ;
83- if ( target && swipeIgnoreTags . includes ( target . tagName ) ) {
84- return
85- }
91+ } ) ) ;
92+ setEventListener ( "swiped-left" , swipeWrapper ( ( event ) => {
8693 if ( this . userSide && this . userSide . classList . contains ( "active" ) ) {
8794 this . userToggle ( ) ;
8895 } else if ( this . subSide && ! this . subSide . classList . contains ( "active" ) ) {
8996 this . subToggle ( ) ;
9097 }
91- } ) ;
98+ } ) ) ;
9299 }
93100}
0 commit comments