@@ -294,9 +294,9 @@ function enableDragAndZoom(element, container, callback) {
294294 ` ;
295295
296296 // Variables to track the current position
297- var lastX = 0 ;
298- var lastY = 0 ;
299- var dragging = false ;
297+ let lastX = 0 ;
298+ let lastY = 0 ;
299+ let dragging = false ;
300300 let mouse = { x : 0 , y : 0 } ;
301301
302302 // Mouse down event listener
@@ -339,30 +339,27 @@ function enableDragAndZoom(element, container, callback) {
339339 // Mouse wheel event listener for zooming
340340 ( container || element ) . addEventListener ( "wheel" , function ( e ) {
341341 e . preventDefault ( ) ;
342- var delta = Math . max ( - 1 , Math . min ( 1 , e . wheelDelta || - e . detail ) ) ;
343- var scaleFactor = 1.2 ;
344- var scale = delta > 0 ? scaleFactor : 1 / scaleFactor ;
345342
346- // Calculate mouse position relative to the container
347- // var rect = container.getBoundingClientRect() ;
348- // var mouseX = e.clientX - rect.left ;
349- // var mouseY = e.clientY - rect.top ;
343+ let curScale = parseFloat ( element . style . width ) / element . width ;
344+ let delta = - e . wheelDeltaY || - e . wheelDelta ;
345+ let factor = Math . abs ( ( 0.1 * delta ) / 120 ) ;
346+ let scale = delta > 0 ? curScale * ( 1 - factor ) : curScale * ( 1 + factor ) ;
350347
351348 // Adjust scale at mouse position
352- var offsetX = mouse . x - element . offsetLeft ;
353- var offsetY = mouse . y - element . offsetTop ;
349+ let offsetX = mouse . x - element . offsetLeft ;
350+ let offsetY = mouse . y - element . offsetTop ;
354351
355- var newWidth = element . width * scale ;
356- var newHeight = element . height * scale ;
352+ let newWidth = element . width * scale ;
353+ let newHeight = element . height * scale ;
357354
358355 if ( newWidth < 3 || newHeight < 3 ) {
359356 return ;
360357 }
361358
362- var newLeft =
359+ let newLeft =
363360 element . offsetLeft -
364361 ( newWidth - element . width ) * ( offsetX / element . width ) ;
365- var newTop =
362+ let newTop =
366363 element . offsetTop -
367364 ( newHeight - element . height ) * ( offsetY / element . height ) ;
368365
@@ -376,13 +373,13 @@ function enableDragAndZoom(element, container, callback) {
376373}
377374// prettier-ignore
378375function getContentClientRect ( target ) {
379- var rect = target . getBoundingClientRect ( ) ;
380- var compStyle = window . getComputedStyle ( target ) ;
381- var pFloat = parseFloat ;
382- var top = rect . top + pFloat ( compStyle . paddingTop ) + pFloat ( compStyle . borderTopWidth ) ;
383- var right = rect . right - pFloat ( compStyle . paddingRight ) - pFloat ( compStyle . borderRightWidth ) ;
384- var bottom = rect . bottom - pFloat ( compStyle . paddingBottom ) - pFloat ( compStyle . borderBottomWidth ) ;
385- var left = rect . left + pFloat ( compStyle . paddingLeft ) + pFloat ( compStyle . borderLeftWidth ) ;
376+ let rect = target . getBoundingClientRect ( ) ;
377+ let compStyle = window . getComputedStyle ( target ) ;
378+ let pFloat = parseFloat ;
379+ let top = rect . top + pFloat ( compStyle . paddingTop ) + pFloat ( compStyle . borderTopWidth ) ;
380+ let right = rect . right - pFloat ( compStyle . paddingRight ) - pFloat ( compStyle . borderRightWidth ) ;
381+ let bottom = rect . bottom - pFloat ( compStyle . paddingBottom ) - pFloat ( compStyle . borderBottomWidth ) ;
382+ let left = rect . left + pFloat ( compStyle . paddingLeft ) + pFloat ( compStyle . borderLeftWidth ) ;
386383 return {
387384 top : top ,
388385 right : right ,
@@ -394,8 +391,8 @@ function getContentClientRect(target) {
394391 }
395392function dataURLToCanvas ( dataurl , cb ) {
396393 if ( ! dataurl ) return cb ( null ) ;
397- var ctx = canvas . getContext ( "2d" ) ;
398- var img = new Image ( ) ;
394+ let ctx = canvas . getContext ( "2d" ) ;
395+ let img = new Image ( ) ;
399396 img . setAttribute ( "crossOrigin" , "anonymous" ) ;
400397 img . onload = function ( ) {
401398 canvas . width = img . width ;
@@ -558,8 +555,8 @@ function onDoublePress(key, callback, timeout = 500) {
558555 } ;
559556} // https://stackoverflow.com/a/3381522
560557function createFlashTitle ( newMsg , howManyTimes ) {
561- var original = document . title ;
562- var timeout ;
558+ let original = document . title ;
559+ let timeout ;
563560
564561 function step ( ) {
565562 document . title = document . title == original ? newMsg : original ;
@@ -751,13 +748,13 @@ function onElementTextContentChanged(element, callback, once) {
751748 return ( ) => observer . disconnect ( ) ;
752749}
753750function injectCssCode ( code ) {
754- var css = document . createElement ( "style" ) ;
751+ let css = document . createElement ( "style" ) ;
755752 if ( "textContent" in css ) css . textContent = code ;
756753 else css . innerText = code ;
757754 ( document . head || document . documentElement ) . appendChild ( css ) ;
758755}
759756function injectCssFile ( filePath , id ) {
760- var css = document . createElement ( "link" ) ;
757+ let css = document . createElement ( "link" ) ;
761758 css . setAttribute ( "rel" , "stylesheet" ) ;
762759 css . setAttribute ( "type" , "text/css" ) ;
763760 css . setAttribute ( "href" , filePath ) ;
@@ -814,7 +811,7 @@ function isElementInViewport(el) {
814811 el = el [ 0 ] ;
815812 }
816813
817- var rect = el . getBoundingClientRect ( ) ;
814+ let rect = el . getBoundingClientRect ( ) ;
818815
819816 return (
820817 rect . top >= 0 &&
@@ -828,7 +825,7 @@ function isElementInViewport(el) {
828825 ) ;
829826}
830827function getOverlapScore ( el ) {
831- var rect = el . getBoundingClientRect ( ) ;
828+ let rect = el . getBoundingClientRect ( ) ;
832829 return (
833830 Math . min (
834831 rect . bottom ,
@@ -923,7 +920,7 @@ function getNumberFormatter(optionSelect, locale) {
923920 * @source - required (Object|Array) the object or array to be copied
924921 */
925922function deepClone ( source ) {
926- var result = { } ;
923+ let result = { } ;
927924
928925 if ( typeof source !== "object" ) {
929926 return source ;
@@ -934,7 +931,7 @@ function deepClone(source) {
934931 if ( Object . prototype . toString . call ( source ) === "[object Null]" ) {
935932 result = null ;
936933 }
937- for ( var key in source ) {
934+ for ( let key in source ) {
938935 result [ key ] =
939936 typeof source [ key ] === "object" ? deepClone ( source [ key ] ) : source [ key ] ;
940937 }
@@ -973,11 +970,11 @@ function domainCheck(domains) {
973970}
974971function setCookie ( name , value , days ) {
975972 if ( days ) {
976- var date = new Date ( ) ;
973+ let date = new Date ( ) ;
977974 date . setTime ( date . getTime ( ) + days * 24 * 60 * 60 * 1000 ) ;
978975 let expires = "; expires=" + date . toGMTString ( ) ;
979976 } else {
980- var expires = "" ;
977+ let expires = "" ;
981978 document . cookie = name + "=" + value + expires + "; path=/" ;
982979 }
983980}
@@ -1010,7 +1007,7 @@ async function xml2json(xml) {
10101007 return window . xml2json ( xml ) ;
10111008}
10121009function getLargestSrcset ( srcset ) {
1013- var srcs = srcset . split ( / [ x w ] , / i) ,
1010+ let srcs = srcset . split ( / [ x w ] , / i) ,
10141011 largeSize = - 1 ,
10151012 largeSrc = null ;
10161013 if ( ! srcs . length ) return null ;
@@ -1124,7 +1121,7 @@ function uniqueArray(array) {
11241121 return Array . from ( new Set ( array ) ) ;
11251122}
11261123function replaceUsingRegex ( str , r , s ) {
1127- var results = [ ] ;
1124+ let results = [ ] ;
11281125
11291126 if ( ! Array . isArray ( r ) && ! Array . isArray ( s ) ) {
11301127 if ( r && r . test && r . test ( str ) ) {
@@ -1223,7 +1220,7 @@ async function getLargestImageSrc(imgSrc, webUrl) {
12231220 // https://greasyfork.org/en/scripts/2312-resize-image-on-open-image-in-new-tab
12241221 function try3 ( ) {
12251222 return new Promise ( ( resolve ) => {
1226- var m = null ;
1223+ let m = null ;
12271224 //google
12281225 if (
12291226 ( m = imgSrc . match (
@@ -1269,7 +1266,7 @@ async function getLargestImageSrc(imgSrc, webUrl) {
12691266 ) )
12701267 ) {
12711268 if ( m [ 2 ] < 1280 ) {
1272- var ajax = new XMLHttpRequest ( ) ;
1269+ let ajax = new XMLHttpRequest ( ) ;
12731270 ajax . onreadystatechange = function ( ) {
12741271 if ( ajax . status == 200 ) {
12751272 resolve ( m [ 1 ] + "1280" + m [ 3 ] ) ;
@@ -1286,14 +1283,14 @@ async function getLargestImageSrc(imgSrc, webUrl) {
12861283 / ^ ( h t t p s ? : \/ \/ \w + \. t w i m g \. c o m \/ m e d i a \/ [ ^ \/ : ] + ) \. ( j p g | j p e g | g i f | p n g | b m p | w e b p ) ( : \w + ) ? $ / i
12871284 ) )
12881285 ) {
1289- var format = m [ 2 ] ;
1286+ let format = m [ 2 ] ;
12901287 if ( m [ 2 ] == "jpeg" ) format = "jpg" ;
12911288 resolve ( m [ 1 ] + "?format=" + format + "&name=orig" ) ;
12921289 } else if (
12931290 ( m = imgSrc . match ( / ^ ( h t t p s ? : \/ \/ \w + \. t w i m g \. c o m \/ .+ ) ( \? .+ ) $ / i) )
12941291 ) {
12951292 let url = new URL ( webUrl ) ;
1296- var pars = url . searchParams ;
1293+ let pars = url . searchParams ;
12971294 if ( ! pars . format || ! pars . name ) return ;
12981295 if ( pars . name == "orig" ) return ;
12991296 resolve ( m [ 1 ] + "?format=" + pars . format + "&name=orig" ) ;
@@ -1505,7 +1502,7 @@ function canonicalUri(src, location = window.location) {
15051502 if ( src . charAt ( 0 ) == "#" ) return location . href + src ;
15061503 if ( src . charAt ( 0 ) == "?" )
15071504 return location . href . replace ( / ^ ( [ ^ \? # ] + ) .* / , "$1" + src ) ;
1508- var root_page = / ^ [ ^ ? # ] * \/ / . exec ( location . href ) [ 0 ] ,
1505+ let root_page = / ^ [ ^ ? # ] * \/ / . exec ( location . href ) [ 0 ] ,
15091506 base_path = location . pathname . replace ( / \/ [ ^ \/ ] + \. [ ^ \/ ] + $ / , "/" ) ,
15101507 root_domain = / ^ \w + \: \/ \/ \/ ? [ ^ \/ ] + / . exec ( root_page ) [ 0 ] ,
15111508 absolute_regex = / ^ \w + \: \/ \/ / ;
@@ -1581,9 +1578,9 @@ function hook(obj, name, callback) {
15811578}
15821579// https://stackoverflow.com/a/38552302/11898496
15831580function parseJwt ( token ) {
1584- var base64Url = token . split ( "." ) [ 1 ] ;
1585- var base64 = base64Url . replace ( / - / g, "+" ) . replace ( / _ / g, "/" ) ;
1586- var jsonPayload = decodeURIComponent (
1581+ let base64Url = token . split ( "." ) [ 1 ] ;
1582+ let base64 = base64Url . replace ( / - / g, "+" ) . replace ( / _ / g, "/" ) ;
1583+ let jsonPayload = decodeURIComponent (
15871584 atob ( base64 )
15881585 . split ( "" )
15891586 . map ( function ( c ) {
@@ -1622,7 +1619,7 @@ function copyToClipboard(text) {
16221619// https://stackoverflow.com/a/7960435
16231620function isEmptyFunction ( func ) {
16241621 try {
1625- var m = func . toString ( ) . match ( / \{ ( [ \s \S ] * ) \} / m) [ 1 ] ;
1622+ let m = func . toString ( ) . match ( / \{ ( [ \s \S ] * ) \} / m) [ 1 ] ;
16261623 return ! m . replace ( / ^ \s * \/ \/ .* $ / gm, "" ) ;
16271624 } catch ( e ) {
16281625 console . log ( "Error isEmptyFunction" , e ) ;
@@ -1638,8 +1635,8 @@ function unescapeRegExp(text) {
16381635 return text . replace ( / \\ ( .) / g, "$1" ) ;
16391636}
16401637function encodeQueryString ( obj ) {
1641- var str = [ ] ;
1642- for ( var p in obj )
1638+ let str = [ ] ;
1639+ for ( let p in obj )
16431640 if ( obj . hasOwnProperty ( p ) ) {
16441641 str . push ( encodeURIComponent ( p ) + "=" + encodeURIComponent ( obj [ p ] ) ) ;
16451642 }
@@ -1753,7 +1750,7 @@ function downloadBlob(blob, filename) {
17531750// https://stackoverflow.com/a/15832662/11898496
17541751// TODO: chrome.downloads: https://developer.chrome.com/docs/extensions/reference/downloads/#method-download
17551752function downloadURL ( url , name ) {
1756- var link = document . createElement ( "a" ) ;
1753+ let link = document . createElement ( "a" ) ;
17571754 link . target = "_blank" ;
17581755 link . download = name ;
17591756 link . href = url ;
@@ -1762,11 +1759,11 @@ function downloadURL(url, name) {
17621759 document . body . removeChild ( link ) ;
17631760}
17641761function downloadData ( data , filename , type = "text/plain" ) {
1765- var file = new Blob ( [ data ] , { type : type } ) ;
1762+ let file = new Blob ( [ data ] , { type : type } ) ;
17661763 if ( window . navigator . msSaveOrOpenBlob )
17671764 window . navigator . msSaveOrOpenBlob ( file , filename ) ;
17681765 else {
1769- var a = document . createElement ( "a" ) ,
1766+ let a = document . createElement ( "a" ) ,
17701767 url = URL . createObjectURL ( file ) ;
17711768 a . href = url ;
17721769 a . download = filename ;
0 commit comments