From 8bc44e9f0a52a20a6746f2cff71a8d5d700037a3 Mon Sep 17 00:00:00 2001 From: Rene Date: Mon, 26 Feb 2018 20:06:14 +0100 Subject: [PATCH] version 1.3.0 --- README.md | 4 +- css/OverlayScrollbars.css | 4 +- css/OverlayScrollbars.min.css | 4 +- js/OverlayScrollbars.js | 518 ++++++++++++++++------------- js/OverlayScrollbars.min.js | 8 +- js/jquery.overlayScrollbars.js | 464 ++++++++++++++------------ js/jquery.overlayScrollbars.min.js | 6 +- package.json | 4 +- 8 files changed, 563 insertions(+), 449 deletions(-) diff --git a/README.md b/README.md index 00e6666..ab89240 100644 --- a/README.md +++ b/README.md @@ -219,7 +219,7 @@ Take the table below only as a overview of all options. autoHideDelay number 800 - The possibility to hide visible scrollbars after a certain action. + The delay in milliseconds before the scrollbars gets hidden automatically. @@ -516,7 +516,7 @@ OverlayScrollbars.defaultOptions({ - OverlayScrollbars.globals() + OverlayScrollbars.globals() Returns a plain object which contains global information about the plugin and each instance of it. diff --git a/css/OverlayScrollbars.css b/css/OverlayScrollbars.css index ee737d3..89f494f 100644 --- a/css/OverlayScrollbars.css +++ b/css/OverlayScrollbars.css @@ -2,13 +2,13 @@ * OverlayScrollbars * https://github.com/KingSora/OverlayScrollbars * - * Version: 1.2.3 + * Version: 1.3.0 * * Copyright KingSora. * https://github.com/KingSora * * Released under the MIT license. - * Date: 02.02.2018 + * Date: 26.02.2018 */ /* diff --git a/css/OverlayScrollbars.min.css b/css/OverlayScrollbars.min.css index 8fa9055..a1d6a7f 100644 --- a/css/OverlayScrollbars.min.css +++ b/css/OverlayScrollbars.min.css @@ -2,13 +2,13 @@ * OverlayScrollbars * https://github.com/KingSora/OverlayScrollbars * - * Version: 1.2.3 + * Version: 1.3.0 * * Copyright KingSora. * https://github.com/KingSora * * Released under the MIT license. - * Date: 02.02.2018 + * Date: 26.02.2018 */ html.os-html,html.os-html > .os-host{display:block;overflow:hidden;box-sizing:border-box;height:100%!important;width:100%!important;min-width:100%!important;min-height:100%!important;margin:0!important;position:absolute!important}html.os-html > .os-host > .os-padding{position:absolute}body.os-dragging,body.os-dragging *{cursor:default}.os-host,.os-host-textarea{position:relative;overflow:visible!important}#hs-dummy-scrollbar-size{position:fixed;opacity:0;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=0);visibility:hidden;overflow:scroll;height:500px;width:500px}#hs-dummy-scrollbar-size,.os-viewport{-ms-overflow-style:scrollbar!important}.os-viewport-native-scrollbars-invisible#hs-dummy-scrollbar-size::-webkit-scrollbar,.os-viewport-native-scrollbars-invisible.os-viewport::-webkit-scrollbar,.os-viewport-native-scrollbars-invisible#hs-dummy-scrollbar-size::-webkit-scrollbar-corner,.os-viewport-native-scrollbars-invisible.os-viewport::-webkit-scrollbar-corner{display:none!important;width:0!important;height:0!important;visibility:hidden!important;background:transparent!important}.os-content-glue{max-height:100%;max-width:100%;width:100%;pointer-events:none}.os-padding{direction:inherit;position:absolute;overflow:visible;padding:0;margin:0;left:0;top:0;bottom:0;right:0;width:auto!important;height:auto!important;z-index:1}.os-host-overflow > .os-padding{overflow:hidden}.os-viewport{direction:inherit!important;box-sizing:inherit!important;resize:none!important;position:absolute;overflow:hidden;top:0;left:0;bottom:0;right:0;padding:0;margin:0;-webkit-overflow-scrolling:touch}.os-content-arrange{position:absolute;z-index:-1;min-height:1px;min-width:1px;pointer-events:none}.os-content{direction:inherit;box-sizing:border-box!important;position:relative;display:block;height:100%;width:100%;height:100%;width:100%;visibility:visible}.os-host-textarea > .os-padding > .os-content{overflow:hidden!important}.os-content > .os-textarea{direction:inherit!important;float:none!important;margin:0!important;max-height:none!important;max-width:none!important;border:none!important;border-radius:0!important;background:transparent!important;outline:0 none transparent!important;overflow:hidden!important;resize:none!important;position:absolute!important;top:0!important;left:0!important;z-index:1;padding:0}.os-host-rtl > .os-padding > .os-viewport > .os-content > .os-textarea{right:0!important}.os-content > .os-textarea-cover{z-index:-1;pointer-events:none}.os-content > .os-textarea[wrap='off']{white-space:pre!important;margin:0!important}.os-text-inherit{font-family:inherit;font-size:inherit;font-weight:inherit;font-style:inherit;font-variant:inherit;text-transform:inherit;text-decoration:inherit;text-indent:inherit;text-align:inherit;text-shadow:inherit;text-overflow:inherit;letter-spacing:inherit;word-spacing:inherit;line-height:inherit;unicode-bidi:inherit;direction:inherit;color:inherit;cursor:text}.os-resize-observer,.os-resize-observer-host{box-sizing:inherit;display:block;opacity:0;position:absolute;top:0;left:0;height:100%;width:100%;overflow:hidden;pointer-events:none;z-index:-1}.os-resize-observer-host{padding:inherit;border:inherit;border-color:transparent;border-style:solid;box-sizing:border-box}.os-resize-observer-host:after{content:''}.os-resize-observer-host > .os-resize-observer,.os-resize-observer-host:after{height:200%;width:200%;padding:inherit;border:inherit;margin:0;display:block;box-sizing:content-box}.os-resize-observer.observed,object.os-resize-observer{box-sizing:border-box!important}.os-size-auto-observer{box-sizing:inherit!important;height:100%;width:inherit;max-width:1px;position:relative;float:left;max-height:1px;overflow:hidden;z-index:-1;padding:0;margin:0;pointer-events:none}.os-size-auto-observer > .os-resize-observer{width:1000%;height:1000%;min-height:1px;min-width:1px}.os-resize-observer-item{position:absolute;top:0;right:0;bottom:0;left:0;overflow:hidden;z-index:-1;opacity:0;direction:ltr!important;-webkit-box-flex:0!important;-ms-flex:none!important;flex:none!important}.os-resize-observer-item-final{position:absolute;left:0;top:0;-webkit-transition:none!important;transition:none!important;-webkit-box-flex:0!important;-ms-flex:none!important;flex:none!important}.os-resize-observer{-webkit-animation-duration:.001s;animation-duration:.001s;-webkit-animation-name:hs-resize-observer-dummy-animation;animation-name:hs-resize-observer-dummy-animation}.os-host-transition > .os-scrollbar,.os-host-transition > .os-scrollbar-corner{-webkit-transition:opacity 0.3s,visibility 0.3s,top 0.3s,right 0.3s,bottom 0.3s,left .3s;transition:opacity 0.3s,visibility 0.3s,top 0.3s,right 0.3s,bottom 0.3s,left .3s}html.os-html > .os-host > .os-scrollbar{position:absolute;z-index:999999}.os-scrollbar,.os-scrollbar-corner{position:absolute;opacity:1;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=100);z-index:1}.os-scrollbar-corner{bottom:0;right:0}.os-scrollbar{pointer-events:none}.os-scrollbar-track{pointer-events:auto;position:relative;height:100%;width:100%;padding:0!important;border:none!important}.os-scrollbar-handle{pointer-events:auto;position:absolute;width:100%;height:100%}.os-scrollbar-handle-off,.os-scrollbar-track-off{pointer-events:none}.os-scrollbar.os-scrollbar-unusable,.os-scrollbar.os-scrollbar-unusable *{pointer-events:none!important}.os-scrollbar.os-scrollbar-unusable .os-scrollbar-handle{opacity:0!important}.os-scrollbar-horizontal{bottom:0;left:0}.os-scrollbar-vertical{top:0;right:0}.os-host-rtl > .os-scrollbar-horizontal{right:0}.os-host-rtl > .os-scrollbar-vertical{right:auto;left:0}.os-host-rtl > .os-scrollbar-corner{right:auto;left:0}.os-scrollbar-auto-hidden,.os-padding + .os-scrollbar-corner,.os-host-resize-disabled.os-host-scrollbar-horizontal-hidden > .os-scrollbar-corner,.os-host-scrollbar-horizontal-hidden > .os-scrollbar-horizontal,.os-host-resize-disabled.os-host-scrollbar-vertical-hidden > .os-scrollbar-corner,.os-host-scrollbar-vertical-hidden > .os-scrollbar-vertical,.os-scrollbar-horizontal.os-scrollbar-auto-hidden + .os-scrollbar-vertical + .os-scrollbar-corner,.os-scrollbar-horizontal + .os-scrollbar-vertical.os-scrollbar-auto-hidden + .os-scrollbar-corner,.os-scrollbar-horizontal.os-scrollbar-auto-hidden + .os-scrollbar-vertical.os-scrollbar-auto-hidden + .os-scrollbar-corner{opacity:0;visibility:hidden;pointer-events:none}.os-scrollbar-corner-resize-both{cursor:nwse-resize}.os-host-rtl > .os-scrollbar-corner-resize-both{cursor:nesw-resize}.os-scrollbar-corner-resize-horizontal{cursor:ew-resize}.os-scrollbar-corner-resize-vertical{cursor:ns-resize}.os-dragging .os-scrollbar-corner.os-scrollbar-corner-resize{cursor:default}.os-host-resize-disabled.os-host-scrollbar-horizontal-hidden > .os-scrollbar-vertical{top:0;bottom:0}.os-host-resize-disabled.os-host-scrollbar-vertical-hidden > .os-scrollbar-horizontal{right:0;left:0}.os-scrollbar:hover,.os-scrollbar-corner.os-scrollbar-corner-resize{opacity:1!important;visibility:visible!important}.os-scrollbar-corner.os-scrollbar-corner-resize{background-image:url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+PHN2ZyAgIHhtbG5zOmRjPSJodHRwOi8vcHVybC5vcmcvZGMvZWxlbWVudHMvMS4xLyIgICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIgICB4bWxuczpzdmc9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgICB3aWR0aD0iMTAiICAgaGVpZ2h0PSIxMCIgICB2ZXJzaW9uPSIxLjEiPiAgPGcgICAgIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAsLTEwNDIuMzYyMikiICAgICBzdHlsZT0iZGlzcGxheTppbmxpbmUiPiAgICA8cGF0aCAgICAgICBzdHlsZT0iZmlsbDojMDAwMDAwO2ZpbGwtb3BhY2l0eTowLjQ5NDExNzY1O2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTpub25lIiAgICAgICBkPSJtIDcuNDI0MjE4NywxMDQyLjM2MjIgYyAtMC43MjM1NzkyLDAgLTEuMzEwMTU2MiwwLjU4NjYgLTEuMzEwMTU2MiwxLjMxMDIgMCwwLjI5OSAwLjEwNDM0MTksMC41NzEgMC4yNzI5NDkyLDAuNzkxNSAwLjIwOTEwMjQsMC4xNDEzIDAuNDY1NjIwNiwwLjIxODQgMC43MzY5NjI5LDAuMjE4NCAwLjcyMzU3OTMsMCAxLjMxMDE1NjMsLTAuNTg2NiAxLjMxMDE1NjMsLTEuMzEwMiAwLC0wLjI3MTMgLTAuMDc3MDkzLC0wLjUyNzggLTAuMjE4MzU5NCwtMC43MzcgLTAuMjIwNDk0MSwtMC4xNjg2IC0wLjQ5MjU0NDMsLTAuMjcyOSAtMC43OTE1NTI4LC0wLjI3MjkgeiBtIDAsMy4wODQzIGMgLTAuNzIzNTc5MiwwIC0xLjMxMDE1NjIsMC41ODY2IC0xLjMxMDE1NjIsMS4zMTAyIDAsMC4yOTkgMC4xMDQzNDE5LDAuNTcxIDAuMjcyOTQ5MiwwLjc5MTUgMC4yMDkxMDI0LDAuMTQxMyAwLjQ2NTYyMDYsMC4yMTg0IDAuNzM2OTYyOSwwLjIxODQgMC43MjM1NzkzLDAgMS4zMTAxNTYzLC0wLjU4NjYgMS4zMTAxNTYzLC0xLjMxMDIgMCwtMC4yNzEzIC0wLjA3NzA5MywtMC41Mjc4IC0wLjIxODM1OTQsLTAuNzM2OSAtMC4yMjA0OTQxLC0wLjE2ODYgLTAuNDkyNTQ0MywtMC4yNzMgLTAuNzkxNTUyOCwtMC4yNzMgeiBtIC0zLjA4NDMyNjEsMCBjIC0wLjcyMzU3OTMsMCAtMS4zMTAxNTYzLDAuNTg2NiAtMS4zMTAxNTYzLDEuMzEwMiAwLDAuMjk5IDAuMTA0MzQxOSwwLjU3MSAwLjI3Mjk0OTIsMC43OTE1IDAuMjA5MTAyNCwwLjE0MTMgMC40NjU2MjA3LDAuMjE4NCAwLjczNjk2MjksMC4yMTg0IDAuNzIzNTc5MywwIDEuMzEwMTU2MywtMC41ODY2IDEuMzEwMTU2MywtMS4zMTAyIDAsLTAuMjcxMyAtMC4wNzcwOTMsLTAuNTI3OCAtMC4yMTgzNTk0LC0wLjczNjkgLTAuMjIwNDk0LC0wLjE2ODYgLTAuNDkyNTQ0MiwtMC4yNzMgLTAuNzkxNTUyNywtMC4yNzMgeiBtIC0zLjAyOTczNjQsMy4wMjk4IEMgMC41ODY1NzY5MywxMDQ4LjQ3NjMgMCwxMDQ5LjA2MjggMCwxMDQ5Ljc4NjQgYyAwLDAuMjk5IDAuMTA0MzQxOSwwLjU3MTEgMC4yNzI5NDkyMiwwLjc5MTYgMC4yMDkxMDIyOSwwLjE0MTIgMC40NjU2MjA2NSwwLjIxODMgMC43MzY5NjI4OCwwLjIxODMgMC43MjM1NzkzLDAgMS4zMTAxNTYzLC0wLjU4NjUgMS4zMTAxNTYzLC0xLjMxMDEgMCwtMC4yNzE0IC0wLjA3NzA5MywtMC41Mjc5IC0wLjIxODM1OTQsLTAuNzM3IC0wLjIyMDQ5NDEsLTAuMTY4NiAtMC40OTI1NDQzLC0wLjI3MjkgLTAuNzkxNTUyOCwtMC4yNzI5IHogbSAzLjAyOTczNjQsMCBjIC0wLjcyMzU3OTMsMCAtMS4zMTAxNTYzLDAuNTg2NSAtMS4zMTAxNTYzLDEuMzEwMSAwLDAuMjk5IDAuMTA0MzQxOSwwLjU3MTEgMC4yNzI5NDkyLDAuNzkxNiAwLjIwOTEwMjQsMC4xNDEyIDAuNDY1NjIwNywwLjIxODMgMC43MzY5NjI5LDAuMjE4MyAwLjcyMzU3OTMsMCAxLjMxMDE1NjMsLTAuNTg2NSAxLjMxMDE1NjMsLTEuMzEwMSAwLC0wLjI3MTQgLTAuMDc3MDkzLC0wLjUyNzkgLTAuMjE4MzU5NCwtMC43MzcgLTAuMjIwNDk0LC0wLjE2ODYgLTAuNDkyNTQ0MiwtMC4yNzI5IC0wLjc5MTU1MjcsLTAuMjcyOSB6IG0gMy4wODQzMjYxLDAgYyAtMC43MjM1NzkyLDAgLTEuMzEwMTU2MiwwLjU4NjUgLTEuMzEwMTU2MiwxLjMxMDEgMCwwLjI5OSAwLjEwNDM0MTksMC41NzExIDAuMjcyOTQ5MiwwLjc5MTYgMC4yMDkxMDI0LDAuMTQxMiAwLjQ2NTYyMDYsMC4yMTgzIDAuNzM2OTYyOSwwLjIxODMgMC43MjM1NzkzLDAgMS4zMTAxNTYzLC0wLjU4NjUgMS4zMTAxNTYzLC0xLjMxMDEgMCwtMC4yNzE0IC0wLjA3NzA5MywtMC41Mjc5IC0wLjIxODM1OTQsLTAuNzM3IC0wLjIyMDQ5NDEsLTAuMTY4NiAtMC40OTI1NDQzLC0wLjI3MjkgLTAuNzkxNTUyOCwtMC4yNzI5IHoiLz4gIDwvZz4gIDxnICAgICBzdHlsZT0iZGlzcGxheTppbmxpbmUiPiAgICA8cGF0aCAgICAgICBzdHlsZT0iZmlsbDojZmZmZmZmO2ZpbGwtb3BhY2l0eToxO2ZpbGwtcnVsZTpldmVub2RkO3N0cm9rZTpub25lIiAgICAgICBkPSJtIDguMjE1NzcxNSwwLjI3Mjk0OTIyIGMgMC4xNDEyNjY3LDAuMjA5MTAyMjkgMC4yMTgzNTk0LDAuNDY1NjIwNjUgMC4yMTgzNTk0LDAuNzM2OTYyODggMCwwLjcyMzU3OTMgLTAuNTg2NTc3LDEuMzEwMTU2MyAtMS4zMTAxNTYzLDEuMzEwMTU2MyAtMC4yNzEzNDIzLDAgLTAuNTI3ODYwNSwtMC4wNzcwOTMgLTAuNzM2OTYyOSwtMC4yMTgzNTk0IDAuMjM5NDEwNCwwLjMxMzA4NTkgMC42MTI2MzYyLDAuNTE4NjAzNSAxLjAzNzIwNywwLjUxODYwMzUgMC43MjM1NzkzLDAgMS4zMTAxNTYzLC0wLjU4NjU3NyAxLjMxMDE1NjMsLTEuMzEwMTU2MyAwLC0wLjQyNDU3MDc2IC0wLjIwNTUxNzYsLTAuNzk3Nzk2NTkgLTAuNTE4NjAzNSwtMS4wMzcyMDY5OCB6IG0gMCwzLjA4NDMyNjE4IGMgMC4xNDEyNjY3LDAuMjA5MTAyMyAwLjIxODM1OTQsMC40NjU2MjA2IDAuMjE4MzU5NCwwLjczNjk2MjkgMCwwLjcyMzU3OTMgLTAuNTg2NTc3LDEuMzEwMTU2MiAtMS4zMTAxNTYzLDEuMzEwMTU2MiAtMC4yNzEzNDIzLDAgLTAuNTI3ODYwNSwtMC4wNzcwOTMgLTAuNzM2OTYyOSwtMC4yMTgzNTkzIDAuMjM5NDEwNCwwLjMxMzA4NTkgMC42MTI2MzYyLDAuNTE4NjAzNSAxLjAzNzIwNywwLjUxODYwMzUgMC43MjM1NzkzLDAgMS4zMTAxNTYzLC0wLjU4NjU3NyAxLjMxMDE1NjMsLTEuMzEwMTU2MyAwLC0wLjQyNDU3MDggLTAuMjA1NTE3NiwtMC43OTc3OTY3IC0wLjUxODYwMzUsLTEuMDM3MjA3IHogbSAtMy4wODQzMjYyLDAgYyAwLjE0MTI2NjcsMC4yMDkxMDIzIDAuMjE4MzU5NCwwLjQ2NTYyMDYgMC4yMTgzNTk0LDAuNzM2OTYyOSAwLDAuNzIzNTc5MyAtMC41ODY1NzcsMS4zMTAxNTYyIC0xLjMxMDE1NjMsMS4zMTAxNTYyIC0wLjI3MTM0MjIsMCAtMC41Mjc4NjA1LC0wLjA3NzA5MyAtMC43MzY5NjI5LC0wLjIxODM1OTMgMC4yMzk0MTA0LDAuMzEzMDg1OSAwLjYxMjYzNjMsMC41MTg2MDM1IDEuMDM3MjA3MSwwLjUxODYwMzUgMC43MjM1NzkzLDAgMS4zMTAxNTYyLC0wLjU4NjU3NyAxLjMxMDE1NjIsLTEuMzEwMTU2MyAwLC0wLjQyNDU3MDggLTAuMjA1NTE3NSwtMC43OTc3OTY3IC0wLjUxODYwMzUsLTEuMDM3MjA3IHogTSAyLjEwMTcwOSw2LjM4NzAxMTcgYyAwLjE0MTI2NjcsMC4yMDkxMDI0IDAuMjE4MzU5NCwwLjQ2NTYyMDYgMC4yMTgzNTk0LDAuNzM2OTYyOSAwLDAuNzIzNTc5MyAtMC41ODY1NzcsMS4zMTAxNTYzIC0xLjMxMDE1NjMsMS4zMTAxNTYzIC0wLjI3MTM0MjIzLDAgLTAuNTI3ODYwNTksLTAuMDc3MDkzIC0wLjczNjk2Mjg4LC0wLjIxODM1OTQgMC4yMzk0MTAzOSwwLjMxMzA4NTkgMC42MTI2MzYyMiwwLjUxODYwMzUgMS4wMzcyMDY5OCwwLjUxODYwMzUgMC43MjM1NzkzLDAgMS4zMTAxNTYzLC0wLjU4NjU3NyAxLjMxMDE1NjMsLTEuMzEwMTU2MyAwLC0wLjQyNDU3MDggLTAuMjA1NTE3NiwtMC43OTc3OTY2IC0wLjUxODYwMzUsLTEuMDM3MjA3IHogbSAzLjAyOTczNjMsMCBjIDAuMTQxMjY2NywwLjIwOTEwMjQgMC4yMTgzNTk0LDAuNDY1NjIwNiAwLjIxODM1OTQsMC43MzY5NjI5IDAsMC43MjM1NzkzIC0wLjU4NjU3NywxLjMxMDE1NjMgLTEuMzEwMTU2MywxLjMxMDE1NjMgLTAuMjcxMzQyMiwwIC0wLjUyNzg2MDUsLTAuMDc3MDkzIC0wLjczNjk2MjksLTAuMjE4MzU5NCAwLjIzOTQxMDQsMC4zMTMwODU5IDAuNjEyNjM2MywwLjUxODYwMzUgMS4wMzcyMDcxLDAuNTE4NjAzNSAwLjcyMzU3OTMsMCAxLjMxMDE1NjIsLTAuNTg2NTc3IDEuMzEwMTU2MiwtMS4zMTAxNTYzIDAsLTAuNDI0NTcwOCAtMC4yMDU1MTc1LC0wLjc5Nzc5NjYgLTAuNTE4NjAzNSwtMS4wMzcyMDcgeiBtIDMuMDg0MzI2MiwwIGMgMC4xNDEyNjY3LDAuMjA5MTAyNCAwLjIxODM1OTQsMC40NjU2MjA2IDAuMjE4MzU5NCwwLjczNjk2MjkgMCwwLjcyMzU3OTMgLTAuNTg2NTc3LDEuMzEwMTU2MyAtMS4zMTAxNTYzLDEuMzEwMTU2MyAtMC4yNzEzNDIzLDAgLTAuNTI3ODYwNSwtMC4wNzcwOTMgLTAuNzM2OTYyOSwtMC4yMTgzNTk0IDAuMjM5NDEwNCwwLjMxMzA4NTkgMC42MTI2MzYyLDAuNTE4NjAzNSAxLjAzNzIwNywwLjUxODYwMzUgMC43MjM1NzkzLDAgMS4zMTAxNTYzLC0wLjU4NjU3NyAxLjMxMDE1NjMsLTEuMzEwMTU2MyAwLC0wLjQyNDU3MDggLTAuMjA1NTE3NiwtMC43OTc3OTY2IC0wLjUxODYwMzUsLTEuMDM3MjA3IHoiIC8+ICA8L2c+PC9zdmc+);background-repeat:no-repeat;background-position:100% 100%;pointer-events:auto!important}.os-host-rtl > .os-scrollbar-corner.os-scrollbar-corner-resize{-webkit-transform:scale(-1,1);transform:scale(-1,1)}.os-host-overflow{overflow:hidden!important}@-webkit-keyframes hs-resize-observer-dummy-animation{from{z-index:0}to{z-index:-1}}@keyframes hs-resize-observer-dummy-animation{from{z-index:0}to{z-index:-1}}.os-theme-none > .os-scrollbar-horizontal,.os-theme-none > .os-scrollbar-vertical,.os-theme-none > .os-scrollbar-corner{display:none!important}.os-theme-none > .os-scrollbar-corner-resize{display:block!important;min-width:10px;min-height:10px}.os-theme-dark > .os-scrollbar-horizontal,.os-theme-light > .os-scrollbar-horizontal{right:10px;height:10px}.os-theme-dark > .os-scrollbar-vertical,.os-theme-light > .os-scrollbar-vertical{bottom:10px;width:10px}.os-theme-dark.os-host-rtl > .os-scrollbar-horizontal,.os-theme-light.os-host-rtl > .os-scrollbar-horizontal{left:10px;right:0}.os-theme-dark > .os-scrollbar-corner,.os-theme-light > .os-scrollbar-corner{height:10px;width:10px;background-color:transparent}.os-theme-dark > .os-scrollbar,.os-theme-light > .os-scrollbar{padding:2px;box-sizing:border-box;background:transparent}.os-theme-dark > .os-scrollbar.os-scrollbar-unusable,.os-theme-light > .os-scrollbar.os-scrollbar-unusable{background:transparent}.os-theme-dark > .os-scrollbar > .os-scrollbar-track,.os-theme-light > .os-scrollbar > .os-scrollbar-track{background:transparent}.os-theme-dark > .os-scrollbar-horizontal > .os-scrollbar-track > .os-scrollbar-handle,.os-theme-light > .os-scrollbar-horizontal > .os-scrollbar-track > .os-scrollbar-handle{min-width:30px}.os-theme-dark > .os-scrollbar-vertical > .os-scrollbar-track > .os-scrollbar-handle,.os-theme-light > .os-scrollbar-vertical > .os-scrollbar-track > .os-scrollbar-handle{min-height:30px}.os-theme-dark > .os-scrollbar > .os-scrollbar-track > .os-scrollbar-handle,.os-theme-light > .os-scrollbar > .os-scrollbar-track > .os-scrollbar-handle{border-radius:11px;opacity:.4}.os-theme-dark > .os-scrollbar > .os-scrollbar-track > .os-scrollbar-handle{background:#000}.os-theme-light > .os-scrollbar > .os-scrollbar-track > .os-scrollbar-handle{background:#fff}.os-theme-dark.os-host-transition > .os-scrollbar > .os-scrollbar-track > .os-scrollbar-handle,.os-theme-light.os-host-transition > .os-scrollbar > .os-scrollbar-track > .os-scrollbar-handle{-webkit-transition:opacity .3s;transition:opacity .3s}.os-theme-dark > .os-scrollbar:hover > .os-scrollbar-track > .os-scrollbar-handle,.os-theme-light > .os-scrollbar:hover > .os-scrollbar-track > .os-scrollbar-handle{opacity:.55}.os-theme-dark > .os-scrollbar > .os-scrollbar-track > .os-scrollbar-handle.active,.os-theme-light > .os-scrollbar > .os-scrollbar-track > .os-scrollbar-handle.active{opacity:.7}.os-theme-dark > .os-scrollbar-horizontal .os-scrollbar-handle:before,.os-theme-dark > .os-scrollbar-vertical .os-scrollbar-handle:before,.os-theme-light > .os-scrollbar-horizontal .os-scrollbar-handle:before,.os-theme-light > .os-scrollbar-vertical .os-scrollbar-handle:before{content:'';position:absolute;left:0;right:0;top:0;bottom:0;display:block}.os-theme-dark.os-host-scrollbar-horizontal-hidden > .os-scrollbar-horizontal .os-scrollbar-handle:before,.os-theme-dark.os-host-scrollbar-vertical-hidden > .os-scrollbar-vertical .os-scrollbar-handle:before,.os-theme-light.os-host-scrollbar-horizontal-hidden > .os-scrollbar-horizontal .os-scrollbar-handle:before,.os-theme-light.os-host-scrollbar-vertical-hidden > .os-scrollbar-vertical .os-scrollbar-handle:before{display:none}.os-theme-dark > .os-scrollbar-horizontal .os-scrollbar-handle:before,.os-theme-light > .os-scrollbar-horizontal .os-scrollbar-handle:before{top:-6px;bottom:-2px}.os-theme-dark > .os-scrollbar-vertical .os-scrollbar-handle:before,.os-theme-light > .os-scrollbar-vertical .os-scrollbar-handle:before{left:-6px;right:-2px}.os-host-rtl.os-theme-dark > .os-scrollbar-vertical .os-scrollbar-handle:before,.os-host-rtl.os-theme-light > .os-scrollbar-vertical .os-scrollbar-handle:before{right:-6px;left:-2px} \ No newline at end of file diff --git a/js/OverlayScrollbars.js b/js/OverlayScrollbars.js index 4fc7c3d..15a29df 100644 --- a/js/OverlayScrollbars.js +++ b/js/OverlayScrollbars.js @@ -2,13 +2,13 @@ * OverlayScrollbars * https://github.com/KingSora/OverlayScrollbars * - * Version: 1.2.3 + * Version: 1.3.0 * * Copyright KingSora. * https://github.com/KingSora * * Released under the MIT license. - * Date: 02.02.2018 + * Date: 26.02.2018 */ (function (global, factory) { @@ -18,16 +18,36 @@ module.exports = factory(global, global.document, undefined); else factory(global, global.document, undefined); -}(typeof window !== "undefined" ? window : this, (function(window, document, undefined) { +}(typeof window !== 'undefined' ? window : this, (function(window, document, undefined) { 'use-strict'; - var PLUGINNAME = "OverlayScrollbars"; + var PLUGINNAME = 'OverlayScrollbars'; + + var TYPES = { + o : 'object', + f : 'function', + a : 'array', + s : 'string', + n : 'number', + u : 'undefined' + }; + var WORDING = { + c : 'class', + s : 'style', + i : 'id', + oH : 'offsetHeight', + cH : 'clientHeight', + sH : 'scrollHeight', + oW : 'offsetWidth', + cW : 'clientWidth', + sW : 'scrollWidth' + }; var COMPATIBILITY = { /** * Gets the current window width. * @returns {Number|number} The current window width in pixel. */ wW: function() { - return window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; + return window.innerWidth || document.documentElement[WORDING.cW] || document.body[WORDING.cW]; }, /** @@ -35,7 +55,7 @@ * @returns {Number|number} The current window height in pixel. */ wH: function() { - return window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight; + return window.innerHeight || document.documentElement[WORDING.cH] || document.body[WORDING.cH]; }, /** @@ -158,6 +178,25 @@ return (e.button & 1 ? 1 : (e.button & 2 ? 3 : (e.button & 4 ? 2 : 0))); else return e.which; + }, + + bind: function(func, oThis) { + if (typeof func !== TYPES.f) { + throw "Can't bind function!"; + // closest thing possible to the ECMAScript 5 + // internal IsCallable function + //throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable'); + } + + var aArgs = Array.prototype.slice.call(arguments, 2); + var fNOP = function() {}; + var fBound = function() { return func.apply(this instanceof fNOP ? this : oThis, aArgs.concat(Array.prototype.slice.call(arguments))); }; + + if (func.prototype) + fNOP.prototype = func.prototype; // Function.prototype doesn't have a prototype property + fBound.prototype = new fNOP(); + + return fBound; } }; var HELPER = (function(compatibility) { @@ -330,7 +369,7 @@ var elms; var el; var i = 0; - if(jQQ.type(selector) === 'string') { + if(jQQ.type(selector) === TYPES.s) { elments = [ ]; elms; if(selector.charAt(0) === '<') { @@ -366,7 +405,7 @@ } // Handle case when target is a string or something (possible in deep copy) - if (typeof target !== "object" && !FakejQuery.type(target) === 'function') { + if (typeof target !== TYPES.o && !FakejQuery.type(target) === TYPES.f) { target = {}; } @@ -423,11 +462,11 @@ }; var isFunction = FakejQuery.isFunction = function(obj) { - return type(obj) === "function"; + return type(obj) === TYPES.f; }; var isArray = FakejQuery.isArray = function(arr) { - return type(arr) === "array"; + return type(arr) === TYPES.a; }; var isEmptyObject = FakejQuery.isEmptyObject = function(obj) { @@ -437,7 +476,7 @@ }; var isPlainObject = FakejQuery.isPlainObject = function(obj) { - if (!obj || type(obj) !== 'object') + if (!obj || type(obj) !== TYPES.o) return false; var key; @@ -452,7 +491,7 @@ for (key in obj) { /**/ } - return typeof key === 'undefined' || hasOwnProperty.call(obj, key); + return typeof key === TYPES.u || hasOwnProperty.call(obj, key); }; var inArray = FakejQuery.inArray = function(item, arr) { @@ -485,7 +524,7 @@ var length = !!obj && "length" in obj && obj.length; var t = type(obj); - return isFunction(t) ? false : (t === "array" || length === 0 || typeof length === "number" && length > 0 && (length - 1) in obj); + return isFunction(t) ? false : (t === TYPES.a || length === 0 || typeof length === TYPES.n && length > 0 && (length - 1) in obj); } function stripAndCollapse(value) { @@ -505,7 +544,7 @@ } function insertAdjacentElement(el, strategy, child) { - if(FakejQuery.type(child) === 'string') + if(FakejQuery.type(child) === TYPES.s) el.insertAdjacentHTML(strategy, child); else if(child.nodeType) el.insertAdjacentElement(strategy, child); @@ -521,7 +560,7 @@ } function parseCSSVal(prop, val) { - if(!_cssNumber[prop.toLowerCase()] && FakejQuery.type(val) === 'number') + if(!_cssNumber[prop.toLowerCase()] && FakejQuery.type(val) === TYPES.n) val = val += 'px'; return val; } @@ -654,7 +693,7 @@ speacialEasing : specialEasing, duration : duration, complete : complete, - step : step, + step : step }, startTime : timeStart }); @@ -715,7 +754,7 @@ function FakeJQueryInstance(elements) { var _base = this; - if(FakejQuery.type(elements) !== 'string' && !elements.length) + if(FakejQuery.type(elements) !== TYPES.s && !elements.length) elements = [ elements ]; for(var i = 0; i < elements.length; i++) @@ -1027,7 +1066,7 @@ var el; var key; - if(FakejQuery.type(styles) === 'string') { + if(FakejQuery.type(styles) === TYPES.s) { if(val === undefined) { el = this[0]; return window.getComputedStyle ? window.getComputedStyle(el, null).getPropertyValue(styles) : el.currentStyle[styles]; @@ -1145,12 +1184,12 @@ stop : function(clearQ, jump) { return this.each(function() { stop(this, clearQ, jump); }); - }, + } }; return FakejQuery; })(COMPATIBILITY); - var INSTANCES = (function(helper) { + var INSTANCES = (function(helper) { var _targets = [ ]; var _instancePropertyString = '__overlayScrollbars__'; @@ -1218,27 +1257,26 @@ * @returns {boolean|string} True if property found, false or string otherwise. A string indicates where the property path couldn't be resolved anymore. */ function _getPropertyByStringMaster(object, propertyString, propertyStringProgress, callbackOnProperty, callbackOnParentObject) { - var strFunc = 'function'; - var strObject = 'object'; var found = false; + propertyStringProgress = propertyStringProgress === undefined ? '' : propertyStringProgress; - if (typeof propertyString !== 'string') + if (typeof propertyString !== TYPES.s) return found; if (propertyString.length === 0) return found; - if (propertyStringProgress === "") { + if (propertyStringProgress === '') { var nameSplit = propertyString.split('.'); var currObj = object; - var nameProgression = ""; + var nameProgression = ''; var pathIsInvalid = false; for (var i = 0; i < nameSplit.length; i++) { var currSplit = nameSplit[i]; currObj = currObj[currSplit]; nameProgression += currSplit + '.'; - if (helper.type(currObj) !== strObject && i + 1 !== nameSplit.length) { + if (helper.type(currObj) !== TYPES.o && i + 1 !== nameSplit.length) { pathIsInvalid = true; break; } @@ -1250,15 +1288,15 @@ for (var prop in object) { if (object.hasOwnProperty(prop)) { var isSearchedProperty = (propertyStringProgress + prop) === propertyString; - if (helper.type(object[prop]) === strObject && !isSearchedProperty) { + if (helper.type(object[prop]) === TYPES.o && !isSearchedProperty) { found = _getPropertyByStringMaster(object[prop], propertyString, propertyStringProgress + prop + '.', callbackOnProperty, callbackOnParentObject); - if (typeof callbackOnParentObject === strFunc) + if (typeof callbackOnParentObject === TYPES.f) callbackOnParentObject(object, prop); if (found) break; } else if (isSearchedProperty) { - if (typeof callbackOnProperty === strFunc) + if (typeof callbackOnProperty === TYPES.f) callbackOnProperty(object, prop); found = true; break; @@ -1267,7 +1305,7 @@ } return found; - }; + } return { /** @@ -1314,7 +1352,7 @@ var obj = {}; var tmp = obj; for (var i = 0; i < propertyPathSplits.length; i++) { - var value = i === propertyPathSplits.length - 1 ? propertyValue : {}; + var value = i === propertyPathSplits.length - 1 ? propertyValue : { }; tmp = tmp[propertyPathSplits[i]] = value; } helper.extend(true, object, obj); @@ -1415,41 +1453,60 @@ _base.autoUpdateLoop = false; _base.autoUpdateRecommended = compatibility.mO() === undefined; var bodyElement = helper('body'); - var scrollbarDummyElement = helper('
'); + var scrollbarDummyElement = helper('
'); var nativeScrollbarSize = (function() { bodyElement.append(scrollbarDummyElement); var strOverflow = 'overflow'; + var strHidden = 'hidden'; var scrollbarDummyElement0 = scrollbarDummyElement[0]; var dummyContainerChild = helper(scrollbarDummyElement.children('div').first()); - var IEBUGFIX = scrollbarDummyElement0.offsetHeight; //IE9 causes a bug where offsetHeight is zero for no reason + var IEBUGFIX = scrollbarDummyElement0[WORDING.oH]; //IE9 causes a bug where offsetHeight is zero for no reason var scrollbarSize; if(IEBUGFIX === 0) scrollbarDummyElement.hide().show(); - var scrollbarSize = { - x: scrollbarDummyElement0.offsetHeight - scrollbarDummyElement0.clientHeight, - y: scrollbarDummyElement0.offsetWidth - scrollbarDummyElement0.clientWidth + scrollbarSize = { + x: scrollbarDummyElement0[WORDING.oH] - scrollbarDummyElement0[WORDING.cH], + y: scrollbarDummyElement0[WORDING.oW] - scrollbarDummyElement0[WORDING.cW] }; - scrollbarDummyElement.addClass('os-viewport-native-scrollbars-invisible'); - scrollbarDummyElement.css(strOverflow, 'hidden').hide().css(strOverflow, 'scroll').show(); //fix opera bug: scrollbar styles will only appear if overflow value is scroll or auto during the activation of the style. - _base.nativeScrollbarStyling = (scrollbarDummyElement0.offsetHeight - scrollbarDummyElement0.clientHeight) === 0 && (scrollbarDummyElement0.offsetWidth - scrollbarDummyElement0.clientWidth) === 0; - scrollbarDummyElement.css({ 'overflow-y' : 'hidden', 'direction' : 'rtl' }).scrollLeft(0); - var dummyContainerOffset = scrollbarDummyElement.offset(); - var dummyContainerChildOffset = dummyContainerChild.offset(); - scrollbarDummyElement.scrollLeft(999); - var dummyContainerScrollOffsetAfterScroll = dummyContainerChild.offset(); - _base.rtlScrollBehavior = { - //origin direction = determines if the zero scroll position is on the left or right side - //'i' means 'invert' (i === true means that the axis must be inverted to be correct) - //true = on the left side - //false = on the right side - i : dummyContainerOffset.left === dummyContainerChildOffset.left, - //negative = determines if the maximum scroll is positive or negative - //'n' means 'negate' (n === true means that the axis must be negated to be correct) - //true = negative - //false = positive - n : dummyContainerChildOffset.left - dummyContainerScrollOffsetAfterScroll.left === 0 - }; - scrollbarDummyElement.removeAttr('style').remove(); + //https://bugzilla.mozilla.org/show_bug.cgi?id=1439305 + _base.restrictedMeasuring = (function() { + scrollbarDummyElement.css(strOverflow, strHidden); + var scrollSize = { + w : scrollbarDummyElement0[WORDING.sW], + h : scrollbarDummyElement0[WORDING.sH] + }; + scrollbarDummyElement.css(strOverflow, 'visible'); + var scrollSize2 = { + w : scrollbarDummyElement0[WORDING.sW], + h : scrollbarDummyElement0[WORDING.sH] + }; + return (scrollSize.w - scrollSize2.w) !== 0 || (scrollSize.h - scrollSize2.h) !== 0; + })(); + _base.nativeScrollbarStyling = (function() { + scrollbarDummyElement.addClass('os-viewport-native-scrollbars-invisible'); + scrollbarDummyElement.css(strOverflow, strHidden).hide().css(strOverflow, 'scroll').show(); //fix opera bug: scrollbar styles will only appear if overflow value is scroll or auto during the activation of the style. + return (scrollbarDummyElement0[WORDING.oH] - scrollbarDummyElement0[WORDING.cH]) === 0 && (scrollbarDummyElement0[WORDING.oW] - scrollbarDummyElement0[WORDING.cW]) === 0; + })(); + _base.rtlScrollBehavior = (function() { + scrollbarDummyElement.css({ 'overflow-y' : strHidden, 'direction' : 'rtl' }).scrollLeft(0); + var dummyContainerOffset = scrollbarDummyElement.offset(); + var dummyContainerChildOffset = dummyContainerChild.offset(); + scrollbarDummyElement.scrollLeft(999); + var dummyContainerScrollOffsetAfterScroll = dummyContainerChild.offset(); + return { + //origin direction = determines if the zero scroll position is on the left or right side + //'i' means 'invert' (i === true means that the axis must be inverted to be correct) + //true = on the left side + //false = on the right side + i : dummyContainerOffset.left === dummyContainerChildOffset.left, + //negative = determines if the maximum scroll is positive or negative + //'n' means 'negate' (n === true means that the axis must be negated to be correct) + //true = negative + //false = positive + n : dummyContainerChildOffset.left - dummyContainerScrollOffsetAfterScroll.left === 0 + }; + })(); + scrollbarDummyElement.removeAttr(WORDING.s).remove(); return scrollbarSize; })(); var nativeScrollbarIsOverlaid = { @@ -1523,33 +1580,6 @@ } _base.supportTransform = detectCSSFeature("transform"); _base.supportTransition = detectCSSFeature("transition"); - if (!Function.prototype.bind) { - Function.prototype.bind = function(oThis) { - if (typeof this !== 'function') { - // closest thing possible to the ECMAScript 5 - // internal IsCallable function - throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable'); - } - - var aArgs = Array.prototype.slice.call(arguments, 1), - fToBind = this, - fNOP = function() {}, - fBound = function() { - return fToBind.apply(this instanceof fNOP - ? this - : oThis, - aArgs.concat(Array.prototype.slice.call(arguments))); - }; - - if (this.prototype) { - // Function.prototype doesn't have a prototype property - fNOP.prototype = this.prototype; - } - fBound.prototype = new fNOP(); - - return fBound; - }; - } //passive event support var supportsPassive = false; try { @@ -1612,8 +1642,8 @@ bodyElement.append(scrollbarDummyElement); var measure = scrollbarDummyElement[0]; _base.nativeScrollbarSize = { - x: measure.offsetHeight - measure.clientHeight, - y: measure.offsetWidth - measure.clientWidth + x: measure[WORDING.oH] - measure[WORDING.cH], + y: measure[WORDING.oW] - measure[WORDING.cW] }; scrollbarDummyElement.remove(); helper.each(instances.all(), function () { @@ -1769,6 +1799,7 @@ var _supportTransform; var _supportPassiveEvents; var _supportResizeObserver; + var _restrictedMeasuring; var _isBorderBox; var _paddingX; var _paddingY; @@ -1810,8 +1841,6 @@ var _strScrollbar = 'scrollbar'; var _strMinusHorizontal = '-horizontal'; var _strMinusVertical = '-vertical'; - var _strNumber = 'number'; - var _strString = 'string'; var _strScrollLeft = _strScroll + 'Left'; var _strScrollTop = _strScroll + 'Top'; var _strMouseTouchDownEvent = 'mousedown touchstart'; @@ -1821,7 +1850,7 @@ var _strKeyUpEvent = 'keyup'; var _strSelectStartEvent = 'selectstart'; var _strTransitionEndEvent = 'transitionend webkitTransitionEnd oTransitionEnd'; - var _strResizeObserverProperty = '~_overlayScrollbarsRO_~'; + var _strResizeObserverProperty = '__overlayScrollbarsRO__'; //class names: var _cassNamesPrefix = 'os-'; @@ -1875,7 +1904,7 @@ //update var _lastUpdateTime; - var _swallowedUpdateParams = {}; + var _swallowedUpdateParams = { }; var _swallowedUpdateTimeout; var _swallowUpdateLag = 33; @@ -2000,8 +2029,8 @@ return; var measureElement = _sizeObserverElement[0]; var hostSize = { - w: measureElement.scrollWidth, - h: measureElement.scrollHeight + w: measureElement[WORDING.sW], + h: measureElement[WORDING.sH] }; if (_initialized) { var changed = checkCacheDouble(hostSize, _hostElementSizeChangeDetectedCache); @@ -2126,8 +2155,8 @@ var shrinkElement = helper(observerElement[strChildNodes][1]); var expandElement = helper(observerElement[strChildNodes][0]); var expandElementChild = helper(expandElement[0][strChildNodes][0]); - var widthCache = observerElement.offsetWidth; - var heightCache = observerElement.offsetHeight; + var widthCache = observerElement[WORDING.oW]; + var heightCache = observerElement[WORDING.oH]; var isDirty; var rAFId; var currWidth; @@ -2136,8 +2165,8 @@ var nativeScrollbarSize = globals.nativeScrollbarSize; //care don't make changes to this object!!! var reset = function () { /* - var sizeResetWidth = observerElement.offsetWidth + nativeScrollbarSize.x * factor + nativeScrollbarSize.y * factor + _overlayScrollbarDummySize.x + _overlayScrollbarDummySize.y; - var sizeResetHeight = observerElement.offsetHeight + nativeScrollbarSize.x * factor + nativeScrollbarSize.y * factor + _overlayScrollbarDummySize.x + _overlayScrollbarDummySize.y; + var sizeResetWidth = observerElement[WORDING.oW] + nativeScrollbarSize.x * factor + nativeScrollbarSize.y * factor + _overlayScrollbarDummySize.x + _overlayScrollbarDummySize.y; + var sizeResetHeight = observerElement[WORDING.oH] + nativeScrollbarSize.x * factor + nativeScrollbarSize.y * factor + _overlayScrollbarDummySize.x + _overlayScrollbarDummySize.y; var expandChildCSS = {}; expandChildCSS[_strWidth] = sizeResetWidth; expandChildCSS[_strHeight] = sizeResetHeight; @@ -2160,8 +2189,8 @@ callback(); }; var onScroll = function (event) { - currWidth = observerElement.offsetWidth; - currHeight = observerElement.offsetHeight; + currWidth = observerElement[WORDING.oW]; + currHeight = observerElement[WORDING.oH]; isDirty = currWidth != widthCache || currHeight != heightCache; if (event && isDirty && !rAFId) { @@ -2204,15 +2233,15 @@ var JQelement = targetElement; targetElement = targetElement[0]; var attachEvent = doc.attachEvent; - var isIE = typeof navigator !== 'undefined' ? navigator.userAgent.match(/Trident/) || navigator.userAgent.match(/Edge/) : true; + var isIE = typeof navigator !== TYPES.u ? navigator.userAgent.match(/Trident/) || navigator.userAgent.match(/Edge/) : true; if (attachEvent) { JQelement.prepend(_strDivBegin + _classNameResizeObserverElement + _strDivEnd); JQelement.find(_strDot + _classNameResizeObserverElement).first()[0].attachEvent('onresize', callback); } else { - var obj = doc.createElement('object'); + var obj = doc.createElement(TYPES.o); obj.setAttribute('tabindex', '-1'); - obj.setAttribute('class', _classNameResizeObserverElement); + obj.setAttribute(WORDING.c, _classNameResizeObserverElement); obj.onload = function () { var wnd = this.contentDocument.defaultView; wnd.addEventListener('resize', callback); @@ -2348,7 +2377,8 @@ * @param args The args with which the callback shall be called. */ function callCallback(callback, args) { - callback.call(_base, args); + if(_initialized) + callback.call(_base, args); } /** @@ -2376,7 +2406,7 @@ _mutationObserverHost.observe(_hostElement[0], { attributes: true, attributeOldValue: true, - attributeFilter: ['id', 'class', 'style'] + attributeFilter: [WORDING.i, WORDING.c, WORDING.s] }); _mutationObserverContent.observe(_isTextarea ? _targetElement[0] : _contentElement[0], { @@ -2385,7 +2415,7 @@ subtree: !_isTextarea, childList: !_isTextarea, characterData: !_isTextarea, - attributeFilter: _isTextarea ? ['wrap', 'cols', 'rows'] : ['id', 'class', 'style'] + attributeFilter: _isTextarea ? ['wrap', 'cols', 'rows'] : [WORDING.i, WORDING.c, WORDING.s] }); _mutationObserverConnected = true; @@ -2423,8 +2453,8 @@ _resizeDragStartPosition = compatibility.page(event); - _resizeDragStartSize.w = _hostElement[0].offsetWidth - (!_isBorderBox ? _paddingX : 0); - _resizeDragStartSize.h = _hostElement[0].offsetHeight - (!_isBorderBox ? _paddingY : 0); + _resizeDragStartSize.w = _hostElement[0][WORDING.oW] - (!_isBorderBox ? _paddingX : 0); + _resizeDragStartSize.h = _hostElement[0][WORDING.oH] - (!_isBorderBox ? _paddingY : 0); _documentElement.on(_strSelectStartEvent, onSelectStart); _documentElement.on(_strMouseTouchMoveEvent, scrollbarCornerOnResize); @@ -2501,8 +2531,8 @@ _targetElement.css(css); //measure width - var origWidth = measureElement.offsetWidth; - var width = doMeasure ? Math.max(origWidth, measureElement.scrollWidth - 1) : 1; + var origWidth = measureElement[WORDING.oW]; + var width = doMeasure ? Math.max(origWidth, measureElement[WORDING.sW] - 1) : 1; width += (_widthAutoCache ? _marginX + (!_isBorderBox ? wrapAttrOff ? 0 : _paddingX + _borderX : 0) : 0); //set measured width and height auto @@ -2511,8 +2541,8 @@ _targetElement.css(css); //measure height - var origHeight = measureElement.offsetHeight; - var height = Math.max(origHeight, measureElement.scrollHeight - 1); + var origHeight = measureElement[WORDING.oH]; + var height = Math.max(origHeight, measureElement[WORDING.sH] - 1); //append correct size values css[_strWidth] = width; @@ -3183,8 +3213,8 @@ */ function isHTMLElement(o) { return ( - typeof HTMLElement === "object" ? o instanceof HTMLElement : //DOM2 - o && typeof o === "object" && o !== null && o.nodeType === 1 && typeof o.nodeName === "string" + typeof HTMLElement === TYPES.o ? o instanceof HTMLElement : //DOM2 + o && typeof o === TYPES.o && o !== null && o.nodeType === 1 && typeof o.nodeName === TYPES.s ); } @@ -3203,17 +3233,16 @@ function getValidatedOption(currentOptions, optionName, optionAllowedValues, removeFromObject) { var returnObj = {n: optionName, s: false, v: undefined, p: undefined}; //name = [name], succes = false, value = undefined, prepared = undefined, var optionValue; - var optionValueType = 'undefined'; + var optionValueType = TYPES.u; var optionNameProgression = byPropertyPath.has(currentOptions, optionName); var currObj = byPropertyPath.get(currentOptions, optionName); var canBeUndefined = false; var optionIsInvalid = optionNameProgression !== true; - var strString = _strString; var strStar = '*'; var i, v, g; var optionAllowedValuesLength; var anyStringAllowed = false; - if (helper.type(optionAllowedValues) !== 'array') + if (helper.type(optionAllowedValues) !== TYPES.a) optionAllowedValues = [optionAllowedValues]; optionAllowedValuesLength = optionAllowedValues.length; @@ -3224,7 +3253,7 @@ var count = 0; for (g = 0; g < optionAllowedValuesLength; g++) { var check = optionAllowedValues[g]; - if (helper.type(check) === strString) { + if (helper.type(check) === TYPES.s) { count++; if (count > 1) break; @@ -3250,7 +3279,7 @@ var valueType = helper.type(allowedValue); var correct = false; if (valueType === optionValueType) { - if (valueType === strString) { + if (valueType === TYPES.s) { correct = anyStringAllowed ? true : optionValue === allowedValue; } else { @@ -3267,7 +3296,7 @@ }; for (i = 0; i < optionAllowedValuesLength; i++) { var currPossibleValue = optionAllowedValues[i]; - if (helper.type(currPossibleValue) === strString) { + if (helper.type(currPossibleValue) === TYPES.s) { var currPossibleValueSplit = currPossibleValue.split(':'); var key = currPossibleValueSplit[0]; var breakAll = false; @@ -3298,7 +3327,7 @@ for (i = 0; i < optionAllowedValuesLength; i++) { var value = optionAllowedValues[i]; var valueType = helper.type(value); - if (valueType === strString) { + if (valueType === TYPES.s) { hasAllowedStrings = !anyStringAllowed; var stringSplit = value.split(':'); for (v = 0; v < stringSplit.length; v++) { @@ -3473,18 +3502,20 @@ } /** - * Returns true if the given mutation is not from a from the plguin generated element. If the target element is a textarea the mutation is always unknown. + * Returns true if the given mutation is not from a from the plugin generated element. If the target element is a textarea the mutation is always unknown. * @param mutation The mutation which shall be checked. * @returns {boolean} True if the mutation is from a unknown element, false otherwise. */ function isUnknownMutation(mutation) { var attributeName = mutation.attributeName; var mutationTarget = mutation.target; + var mutationType = mutation.type; + if (mutationTarget === _contentElement[0]) - return false; - if (mutation.type === "attributes" && (attributeName === "class" || attributeName === "style") && !_isTextarea) { + return attributeName === null; + if (mutationType === 'attributes' && (attributeName === WORDING.c || attributeName === WORDING.s) && !_isTextarea) { //only do it of browser support it natively - if (typeof mutationTarget.closest !== 'function') + if (typeof mutationTarget.closest !== TYPES.f) return true; if (mutationTarget.closest(_strDot + _classNameResizeObserverElement) !== null || mutationTarget.closest(_strDot + _classNameScrollbar) !== null || @@ -3516,39 +3547,40 @@ var numberAllowedValues = 0; var callbackAllowedValues = [new Function(), null]; - var validatedOptions = []; - validatedOptions.push(getValidatedOption(newOptions, strNativeScrollbarsOverlaidDot + 'showNativeScrollbars', booleanAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, strNativeScrollbarsOverlaidDot + 'initialize', booleanAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, strOverflowBehaviorDot + _strX, overflowBehaviorAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, strOverflowBehaviorDot + _strY, overflowBehaviorAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, strScrollbarsDot + 'visibility', scrollbarsVisibilityAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, strScrollbarsDot + 'autoHide', scrollbarsAutoHideAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, strScrollbarsDot + 'autoHideDelay', numberAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, strScrollbarsDot + 'clickScrolling', booleanAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, strScrollbarsDot + 'dragScrolling', booleanAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, strScrollbarsDot + 'touchSupport', booleanAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, strTextareaDot + 'dynWidth', booleanAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, strTextareaDot + 'dynHeight', booleanAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, 'className', classNameAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, 'resize', resizeAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, 'sizeAutoCapable', booleanAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, 'paddingAbsolute', booleanAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, 'clipAlways', booleanAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, 'normalizeRTL', booleanAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, 'autoUpdate', booleanNullAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, 'autoUpdateInterval', numberAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, strCallbacksDot + 'onInitialized', callbackAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, strCallbacksDot + 'onInitializationWithdrawn', callbackAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, strCallbacksDot + 'onDestroyed', callbackAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, strCallbacksDot + 'onScrollStart', callbackAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, strCallbacksDot + 'onScroll', callbackAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, strCallbacksDot + 'onScrollStop', callbackAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, strCallbacksDot + 'onDirectionChanged', callbackAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, strCallbacksDot + 'onContentSizeChanged', callbackAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, strCallbacksDot + 'onHostSizeChanged', callbackAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, strCallbacksDot + 'onOverflowChanged', callbackAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, strCallbacksDot + 'onOverflowAmountChanged', callbackAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, strCallbacksDot + 'onUpdated', callbackAllowedValues)); + var validatedOptions = [ + getValidatedOption(newOptions, strNativeScrollbarsOverlaidDot + 'showNativeScrollbars', booleanAllowedValues), + getValidatedOption(newOptions, strNativeScrollbarsOverlaidDot + 'initialize', booleanAllowedValues), + getValidatedOption(newOptions, strOverflowBehaviorDot + _strX, overflowBehaviorAllowedValues), + getValidatedOption(newOptions, strOverflowBehaviorDot + _strY, overflowBehaviorAllowedValues), + getValidatedOption(newOptions, strScrollbarsDot + 'visibility', scrollbarsVisibilityAllowedValues), + getValidatedOption(newOptions, strScrollbarsDot + 'autoHide', scrollbarsAutoHideAllowedValues), + getValidatedOption(newOptions, strScrollbarsDot + 'autoHideDelay', numberAllowedValues), + getValidatedOption(newOptions, strScrollbarsDot + 'clickScrolling', booleanAllowedValues), + getValidatedOption(newOptions, strScrollbarsDot + 'dragScrolling', booleanAllowedValues), + getValidatedOption(newOptions, strScrollbarsDot + 'touchSupport', booleanAllowedValues), + getValidatedOption(newOptions, strTextareaDot + 'dynWidth', booleanAllowedValues), + getValidatedOption(newOptions, strTextareaDot + 'dynHeight', booleanAllowedValues), + getValidatedOption(newOptions, 'className', classNameAllowedValues), + getValidatedOption(newOptions, 'resize', resizeAllowedValues), + getValidatedOption(newOptions, 'sizeAutoCapable', booleanAllowedValues), + getValidatedOption(newOptions, 'paddingAbsolute', booleanAllowedValues), + getValidatedOption(newOptions, 'clipAlways', booleanAllowedValues), + getValidatedOption(newOptions, 'normalizeRTL', booleanAllowedValues), + getValidatedOption(newOptions, 'autoUpdate', booleanNullAllowedValues), + getValidatedOption(newOptions, 'autoUpdateInterval', numberAllowedValues), + getValidatedOption(newOptions, strCallbacksDot + 'onInitialized', callbackAllowedValues), + getValidatedOption(newOptions, strCallbacksDot + 'onInitializationWithdrawn', callbackAllowedValues), + getValidatedOption(newOptions, strCallbacksDot + 'onDestroyed', callbackAllowedValues), + getValidatedOption(newOptions, strCallbacksDot + 'onScrollStart', callbackAllowedValues), + getValidatedOption(newOptions, strCallbacksDot + 'onScroll', callbackAllowedValues), + getValidatedOption(newOptions, strCallbacksDot + 'onScrollStop', callbackAllowedValues), + getValidatedOption(newOptions, strCallbacksDot + 'onDirectionChanged', callbackAllowedValues), + getValidatedOption(newOptions, strCallbacksDot + 'onContentSizeChanged', callbackAllowedValues), + getValidatedOption(newOptions, strCallbacksDot + 'onHostSizeChanged', callbackAllowedValues), + getValidatedOption(newOptions, strCallbacksDot + 'onOverflowChanged', callbackAllowedValues), + getValidatedOption(newOptions, strCallbacksDot + 'onOverflowAmountChanged', callbackAllowedValues), + getValidatedOption(newOptions, strCallbacksDot + 'onUpdated', callbackAllowedValues) + ]; for (var prop in newOptions) { if (newOptions.hasOwnProperty(prop)) { @@ -3563,7 +3595,7 @@ helper.each(obj, function (i, v) { if (helper.isPlainObject(v)) prepare(v); - else if (helper.type(v) === 'function') + else if (helper.type(v) === TYPES.f) obj[i] = helper.type(v); }); }; @@ -3594,8 +3626,8 @@ _contentElement.css(css); } var contentElementScrollSize = { - w: getContentMeasureElement().scrollWidth + textareaValueLength, - h: getContentMeasureElement().scrollHeight + textareaValueLength + w: getContentMeasureElement()[WORDING.sW] + textareaValueLength, + h: getContentMeasureElement()[WORDING.sH] + textareaValueLength }; if (setCSS) { css[_strFloat] = float; @@ -3617,11 +3649,11 @@ if (_isSleeping || _mutationObserverConnected) return false; - var hostElementId = _hostElement.attr('id') || _strEmpty; + var hostElementId = _hostElement.attr(WORDING.i) || _strEmpty; var hostElementIdChanged = checkCacheSingle(hostElementId, _updateAutoHostElementIdCache); - var hostElementClass = _hostElement.attr('class') || _strEmpty; + var hostElementClass = _hostElement.attr(WORDING.c) || _strEmpty; var hostElementClassChanged = checkCacheSingle(hostElementClass, _updateAutoHostElementClassCache); - var hostElementStyle = _hostElement.attr('style') || _strEmpty; + var hostElementStyle = _hostElement.attr(WORDING.s) || _strEmpty; var hostElementStyleChanged = checkCacheSingle(hostElementStyle, _updateAutoHostElementStyleCache); var hostElementVisible = _hostElement.is(':visible') || _strEmpty; var hostElementVisibleChanged = checkCacheSingle(hostElementVisible, _updateAutoHostElementVisibleCache); @@ -3954,8 +3986,8 @@ var oldSize = {w: -1, h: -1}; addResizeObserver(_sizeAutoObserverElement, function () { var newSize = { - w: _sizeAutoObserverElement[0].offsetWidth, - h: _sizeAutoObserverElement[0].offsetHeight + w: _sizeAutoObserverElement[0][WORDING.oW], + h: _sizeAutoObserverElement[0][WORDING.oH] }; if (checkCacheDouble(newSize, oldSize)) { if (_initialized && (_heightAutoCache && newSize.h > 0) || (_widthAutoCache && newSize.w > 0)) { @@ -4017,21 +4049,23 @@ _isBorderBox = (boxSizing === 'border-box'); var isRTLLeft = _isRTL ? _strLeft : _strRight; var isRTLRight = _isRTL ? _strRight : _strLeft; + var hostElement = _hostElement[0]; + var paddingElement = _paddingElement[0]; //detect width auto: var widthAutoResizeDetection = false; - var widthAutoObserverDetection = (_sizeAutoObserverAdded && (_hostElement.css(_strFloat) !== 'none' /*|| _isTextarea */)) ? (Math.round(sizeAutoObserverElementBCRect.right - sizeAutoObserverElementBCRect.left) === 0) && (!paddingAbsolute ? (_hostElement[0].clientWidth - _paddingX) > 0 : true) : false; + var widthAutoObserverDetection = (_sizeAutoObserverAdded && (_hostElement.css(_strFloat) !== 'none' /*|| _isTextarea */)) ? (Math.round(sizeAutoObserverElementBCRect.right - sizeAutoObserverElementBCRect.left) === 0) && (!paddingAbsolute ? (hostElement[WORDING.cW] - _paddingX) > 0 : true) : false; if (sizeAutoCapable && !widthAutoObserverDetection) { - var tmpCurrHostWidth = _hostElement[0].offsetWidth; + var tmpCurrHostWidth = hostElement[WORDING.oW]; var tmpCurrContentGlueWidth = _contentGlueElement.css(_strWidth); _contentGlueElement.css(_strWidth, _strAuto); - var tmpNewHostWidth = _hostElement[0].offsetWidth; + var tmpNewHostWidth = hostElement[WORDING.oW]; _contentGlueElement.css(_strWidth, tmpCurrContentGlueWidth); widthAutoResizeDetection = tmpCurrHostWidth !== tmpNewHostWidth; if (!widthAutoResizeDetection) { _contentGlueElement.css(_strWidth, tmpCurrHostWidth + 1); - tmpNewHostWidth = _hostElement[0].offsetWidth; + tmpNewHostWidth = hostElement[WORDING.oW]; _contentGlueElement.css(_strWidth, tmpCurrContentGlueWidth); widthAutoResizeDetection = tmpCurrHostWidth !== tmpNewHostWidth; } @@ -4074,8 +4108,8 @@ }; //vars to apply correct css - var contentElementCSS = {}; - var contentGlueElementCSS = {}; + var contentElementCSS = { }; + var contentGlueElementCSS = { }; //set info for padding _paddingX = padding.l + padding.r; @@ -4138,8 +4172,8 @@ //viewport size is padding container because it never has padding, margin and a border. _viewportSize = { - w: _paddingElement[0].offsetWidth, - h: _paddingElement[0].offsetHeight + w: paddingElement[WORDING.oW], + h: paddingElement[WORDING.oH] }; //update Textarea @@ -4183,7 +4217,7 @@ contentElementCSS[_strMaxMinus + _strHeight] = _strEmpty; //fix dyn height collapse bug: (doesn't works for width!) //contentGlueElementCSS[_strHeight] = _isTextarea && textareaDynHeight ? textareaSize.dh : _strAuto; - contentGlueElementCSS[_strHeight] = _isTextarea ? textareaDynHeight ? textareaSize.dh : _strAuto : _contentElement[0].clientHeight; + contentGlueElementCSS[_strHeight] = _isTextarea ? textareaDynHeight ? textareaSize.dh : _strAuto : _contentElement[0][WORDING.cH]; } if (sizeAutoCapable) _contentGlueElement.css(contentGlueElementCSS); @@ -4202,6 +4236,7 @@ var strOverflowY = strOverflow + '-y'; var strHidden = 'hidden'; var strVisible = 'visible'; + var hideOverflow4CorrectMeasuring = _restrictedMeasuring ? (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y) || (_viewportSize.w < _nativeScrollbarMinSize.y || _viewportSize.h < _nativeScrollbarMinSize.x) : false;; //Reset the viewport (very important for natively overlaid scrollbars and zoom change var viewportElementResetCSS = {}; @@ -4210,21 +4245,20 @@ setTopRightBottomLeft(viewportElementResetCSS, _strEmpty); _viewportElement.css(viewportElementResetCSS); - //content element has to have overflow hidden, else element marginsss aren't calculated properly - if (heightAuto && !_isTextarea) { + if(hideOverflow4CorrectMeasuring) _contentElement.css(strOverflow, strHidden); - contentElementCSS[strOverflow] = _strEmpty - } //measure several sizes: var contentMeasureElement = getContentMeasureElement(); + //in Firefox content element has to have overflow hidden, else element margins aren't calculated properly, this element prevents this bug, but only if scrollbars aren't overlaid + var contentMeasureElementGuaranty = hideOverflow4CorrectMeasuring ? contentMeasureElement : _viewportElement[0]; var clientSize = { - w: contentMeasureElement.clientWidth, - h: contentMeasureElement.clientHeight + w: contentMeasureElement[WORDING.cW], + h: contentMeasureElement[WORDING.cH] }; var scrollSize = { - w: contentMeasureElement.scrollWidth, - h: contentMeasureElement.scrollHeight + w: Math.max(contentMeasureElement[WORDING.sW], contentMeasureElementGuaranty[WORDING.sW]), + h: Math.max(contentMeasureElement[WORDING.sH], contentMeasureElementGuaranty[WORDING.sH]) }; var contentClientSize = { w: _isTextarea && textareaSize && !textareaDynWidth ? textareaSize.ow : widthAuto ? clientSize.w : scrollSize.w, @@ -4238,10 +4272,9 @@ //measure and correct several sizes //has to be clientSize because offsetSize respect borders. - var hostElement = _hostElement[0]; var hostSize = { - w: hostElement.clientWidth, - h: hostElement.clientHeight + w: hostElement[WORDING.cW], + h: hostElement[WORDING.cH] }; var contentGlueSize = { w: Math.max(contentClientSize.w + (paddingAbsolute ? _paddingX : 0), hostSize.w - _paddingX) - (textareaDynWidth ? (_isTextarea && widthAuto ? _marginX + (!_isBorderBox ? _paddingX + _borderX : 0) : 0) : 0), @@ -4268,13 +4301,13 @@ if (!heightAuto || (!heightAuto && border.c)) contentGlueElementCSS[_strHeight] = hostSize.h - (_isBorderBox ? 0 : _paddingY + _borderY) - 1 - _marginY; - //if size is auto and host ist same size as max size, make content glue size +1 to make sure size changes will be detected + //if size is auto and host is same size as max size, make content glue size +1 to make sure size changes will be detected if (cssMaxValue.cw && cssMaxValue.iw === maxWidth) contentGlueElementCSS[_strWidth] = maxWidth + (_isBorderBox ? 0 : _paddingX) + 1; if (cssMaxValue.ch && cssMaxValue.ih === maxHeight) contentGlueElementCSS[_strHeight] = maxHeight + (_isBorderBox ? 0 : _paddingY) + 1; - //if size is auto and host ist smaller than size as min size, make content glue size -1 to make sure size changes will be detected (this is only needed if padding is 0) + //if size is auto and host is smaller than size as min size, make content glue size -1 to make sure size changes will be detected (this is only needed if padding is 0) if (widthAuto && (clientSize.w < _viewportSize.w || _isTextarea && !textareaAutoWrapping) && _paddingX === 0) { if (_isTextarea) textareaCoverCSS[_strWidth] = parseIntToZeroOrNumber(_textareaCoverElement.css(_strWidth)) - 1; @@ -4309,9 +4342,11 @@ //measure again, but this time all correct sizes: var contentBCRect = contentMeasureElement.getBoundingClientRect(); var contentScrollSize = { - w: contentMeasureElement.scrollWidth, - h: contentMeasureElement.scrollHeight + w: Math.max(contentMeasureElement[WORDING.sW], contentMeasureElementGuaranty[WORDING.sW]), + h: Math.max(contentMeasureElement[WORDING.sH], contentMeasureElementGuaranty[WORDING.sH]) }; + if(hideOverflow4CorrectMeasuring) + _contentElement.css(strOverflow, _strEmpty); if (contentBCRect.width !== undefined) { var contentBCRectW = contentBCRect.width; var contentBCRectH = contentBCRect.height; @@ -4324,11 +4359,17 @@ //has to be clientSize because offsetSize respect borders. hostSize = { - w: hostElement.clientWidth, - h: hostElement.clientHeight + w: hostElement[WORDING.cW], + h: hostElement[WORDING.cH] }; hostSizeChanged = checkCacheDouble(hostSize, _hostSizeCache); _hostSizeCache = hostSize; + + //viewport size is padding container because it never has padding, margin and a border. + _viewportSize = { + w: paddingElement[WORDING.oW], + h: paddingElement[WORDING.oH] + }; var overflowBehaviorIsVS = { x: overflowBehavior.x === 'v-s', @@ -4342,10 +4383,12 @@ x: overflowBehavior.x === 's', y: overflowBehavior.y === 's' }; - //var overflowBehaviorIsH = { - // x : overflowBehavior.x === 'h', - // y : overflowBehavior.y === 'h' - //}; + /* + * var overflowBehaviorIsH = { + * x : overflowBehavior.x === 'h', + * y : overflowBehavior.y === 'h' + * }; + */ var overflowAmount = { x: Math.max(0, contentScrollSize.w - hostSize.w + (paddingAbsolute ? _paddingX : 0)), y: Math.max(0, contentScrollSize.h - hostSize.h + (paddingAbsolute ? _paddingY : 0)) @@ -4416,9 +4459,9 @@ if (widthAuto) contentElementCSS[_strMarginMinus + isRTLLeft] = ignoreOverlayScrollbarHiding ? _strEmpty : _overlayScrollbarDummySize.y; if (/* !widthAuto && */ !ignoreOverlayScrollbarHiding) - contentElementCSS[_strBorderMinus + isRTLLeft] = _overlayScrollbarDummySize.y + borderDesign; - else - contentElementCSS[_strBorderMinus + isRTLLeft] = _strEmpty; + contentElementCSS[_strBorderMinus + isRTLLeft] = _overlayScrollbarDummySize.y + borderDesign; + else + contentElementCSS[_strBorderMinus + isRTLLeft] = _strEmpty; } else { arrangeContent.w = _strEmpty; @@ -4482,12 +4525,14 @@ viewportElementCSS[strOverflowY] = _strEmpty; resetScrollbarHidingY(); } + // if the scroll container is too small and if there is any overflow with not overlay scrollbar, make viewport element greater in size (Firefox hide Scrollbars fix) // because firefox starts hiding scrollbars on too small elements // with this behavior the overflow calculation may be incorrect or the scrollbars would appear suddenly // https://bugzilla.mozilla.org/show_bug.cgi?id=292284 - if ((_viewportSize.h < _nativeScrollbarMinSize.x || _viewportSize.w < _nativeScrollbarMinSize.y) && ((hasOverflow.x && hideOverflow.x && !_nativeScrollbarIsOverlaid.x) || (hasOverflow.y && hideOverflow.y && !_nativeScrollbarIsOverlaid.y))) { + if ((_viewportSize.h < _nativeScrollbarMinSize.x || _viewportSize.w < _nativeScrollbarMinSize.y) + && ((hasOverflow.x && hideOverflow.x && !_nativeScrollbarIsOverlaid.x) || (hasOverflow.y && hideOverflow.y && !_nativeScrollbarIsOverlaid.y))) { viewportElementCSS[_strPaddingMinus + _strTop] = _nativeScrollbarMinSize.x; viewportElementCSS[_strMarginMinus + _strTop] = -_nativeScrollbarMinSize.x; @@ -4534,14 +4579,14 @@ var elementStyle = element.style; elementStyle.webkitTransform = 'scale(1)'; elementStyle.display = 'run-in'; - var dump = element.offsetHeight; + var dump = element[WORDING.oH]; elementStyle.display = _strEmpty; elementStyle.webkitTransform = _strEmpty; } //force hard redraw in webkit if native overlaid scrollbars shall appear if (ignoreOverlayScrollbarHidingChanged && ignoreOverlayScrollbarHiding) { _hostElement.hide(); - var dump = _hostElement[0].offsetHeight; + var dump = hostElement[WORDING.oH]; _hostElement.show(); } } @@ -4569,10 +4614,11 @@ var scrollbarsVisibilityVisible = scrollbarsVisibility === 'v'; var scrollbarsVisibilityHidden = scrollbarsVisibility === 'h'; var scrollbarsVisibilityAuto = scrollbarsVisibility === 'a'; - var showScrollbarH = refreshScrollbarAppearance.bind(0, true, true, canScroll.x); - var showScrollbarV = refreshScrollbarAppearance.bind(0, false, true, canScroll.y); - var hideScrollbarH = refreshScrollbarAppearance.bind(0, true, false, canScroll.x); - var hideScrollbarV = refreshScrollbarAppearance.bind(0, false, false, canScroll.y); + + var showScrollbarH = COMPATIBILITY.bind(refreshScrollbarAppearance, 0, true, true, canScroll.x); + var showScrollbarV = COMPATIBILITY.bind(refreshScrollbarAppearance, 0, false, true, canScroll.y); + var hideScrollbarH = COMPATIBILITY.bind(refreshScrollbarAppearance, 0, true, false, canScroll.x); + var hideScrollbarV = COMPATIBILITY.bind(refreshScrollbarAppearance, 0, false, false, canScroll.y); //add or remove rtl class name for styling purposes if (cssDirectionChanged) { @@ -4852,7 +4898,7 @@ _base.options = function (newOptions, value) { //return current options if newOptions are undefined or empty if (helper.isEmptyObject(newOptions) || !helper.isPlainObject(newOptions)) { - if (helper.type(newOptions) === 'string') { + if (helper.type(newOptions) === TYPES.s) { if (arguments.length >= 2) { var option = {}; byPropertyPath.set(option, newOptions, value, true); @@ -4930,7 +4976,7 @@ _targetElement.removeClass(_classNameTextareaElement) .removeClass(_classNameTextInherit); _targetElement.unwrap() - .removeAttr('style'); + .removeAttr(WORDING.s); _hostElement.remove(); } else { @@ -5069,7 +5115,7 @@ var coordinatesOperators = ['+=', '-=', '*=', '/=']; var i; var finalScroll = { }; - var durationIsObject = helper.type(duration) === 'object'; + var durationIsObject = helper.type(duration) === TYPES.o; var strEnd = 'end'; var strBegin = 'begin'; var elementObjSettings = { @@ -5092,15 +5138,15 @@ }; var getRawScroll = function (coordinates) { var rawScroll = {}; - if (helper.type(coordinates) === 'array' && coordinates.length > 0) { + if (helper.type(coordinates) === TYPES.a && coordinates.length > 0) { rawScroll.x = coordinates[0]; rawScroll.y = coordinates[1]; } - else if (helper.type(coordinates) === _strString || helper.type(coordinates) === _strNumber) { + else if (helper.type(coordinates) === TYPES.s || helper.type(coordinates) === TYPES.n) { rawScroll.x = coordinates; rawScroll.y = coordinates; } - else if (helper.type(coordinates) === 'object') { + else if (helper.type(coordinates) === TYPES.o) { coordinates = helper.extend({}, coordinates); i = 0; for (var key in coordinates) { @@ -5134,7 +5180,7 @@ var isRTLisX = _isRTL && isX; var normalizeShortcuts = isRTLisX && _rtlScrollBehavior.n && !_normalizeRTLCache; - if (helper.type(rawScroll) === _strString) { + if (helper.type(rawScroll) === TYPES.s) { //check operator if (rawScroll.length > 2) { var possibleOperator = rawScroll.substr(0, 2); @@ -5158,11 +5204,11 @@ rawScroll = rawScroll.replace(/vh/g, mult + _viewportSize.h); amount = window.parseInt(window.parseFloat(window.eval(rawScroll)).toFixed()); } - else if (helper.type(rawScroll) === _strNumber) { + else if (helper.type(rawScroll) === TYPES.n) { amount = rawScroll; } - if (!isNaN(amount) && amount !== undefined && helper.type(amount) === _strNumber) { + if (!isNaN(amount) && amount !== undefined && helper.type(amount) === TYPES.n) { var normalizeIsRTLisX = _normalizeRTLCache && isRTLisX; var operatorCurrScroll = currScroll * (normalizeIsRTLisX && _rtlScrollBehavior.n ? -1 : 1); var invert = normalizeIsRTLisX && _rtlScrollBehavior.i; @@ -5221,9 +5267,9 @@ var marginLength; //block can be [string, or array of two strings] - if (blockType === _strString) + if (blockType === TYPES.s) block = [block, block]; - else if (blockType === 'array') { + else if (blockType === TYPES.a) { blockLength = block.length; if (blockLength > 2 || blockLength < 1) block = undefined; @@ -5233,7 +5279,7 @@ block[1] = strBegin; for (i = 0; i < blockLength; i++) { var item = block[i]; - if (helper.type(item) !== _strString || !checkSettingsStringValue(item, elementObjSettingsBlockValues)) { + if (helper.type(item) !== TYPES.s || !checkSettingsStringValue(item, elementObjSettingsBlockValues)) { valid = false; break; } @@ -5246,7 +5292,7 @@ block = undefined; //margin can be [ true, false, number, array of 2 numbers, array of 4 numbers ] - if (marginType === _strNumber) + if (marginType === TYPES.n) margin = [margin, margin, margin, margin]; else if (marginType === 'boolean') { if (margin) { @@ -5260,14 +5306,14 @@ else margin = [0, 0, 0, 0]; } - else if (marginType === 'array') { + else if (marginType === TYPES.a) { marginLength = margin.length; if (marginLength !== 2 && marginLength !== 4) margin = undefined; else { valid = true; for (i = 0; i < marginLength; i++) { - if (helper.type(margin[i]) !== _strNumber) { + if (helper.type(margin[i]) !== TYPES.n) { valid = false; break; } @@ -5329,8 +5375,8 @@ } else { rawElementSize = { - w: finalElement[0].offsetWidth, - h: finalElement[0].offsetHeight + w: finalElement[0][WORDING.oW], + h: finalElement[0][WORDING.oH] }; } var elementSize = { @@ -5371,7 +5417,7 @@ duration : duration, complete : complete }; - if(helper.type(easing) === 'array') { + if(helper.type(easing) === TYPES.a) { var specialEasing = { }; specialEasing[_strScrollLeft] = easing[0]; specialEasing[_strScrollTop] = easing[1]; @@ -5457,7 +5503,7 @@ viewportSize: prepare(_viewportSize), hostSize: prepare(_hostSizeCache) }; - if (helper.type(stateProperty) === _strString) + if (helper.type(stateProperty) === TYPES.s) return byPropertyPath.get(obj, stateProperty); return obj; }; @@ -5496,6 +5542,7 @@ _supportPassiveEvents = globals.supportPassiveEvents; _supportResizeObserver = globals.supportResizeObserver; _supportMutationObserver = globals.supportMutationObserver; + _restrictedMeasuring = globals.restrictedMeasuring; _documentElement = helper(targetElement.ownerDocument); _windowElement = helper(_documentElement[0].defaultView || _documentElement[0].parentWindow); _htmlElement = _documentElement.find('html').first(); @@ -5595,9 +5642,9 @@ var target = this.target; var attrName = t.attributeName; - if (attrName === 'class') + if (attrName === WORDING.c) doUpdate = hostClassNamesChanged(t.oldValue, target.className); - else if (attrName === 'style') + else if (attrName === WORDING.s) doUpdate = t.oldValue !== target.style.cssText; else doUpdate = true; @@ -5761,5 +5808,24 @@ _pluginGlobals.defaultOptions = helper.extend(true, { }, currDefaultOptions , newDefaultOptions); }; })(COMPATIBILITY, INSTANCES, HELPER, BYPROPERTYPATH); - return window[PLUGINNAME]; + + var jQuery = window.jQuery; + if(jQuery && jQuery.fn) { + /** + * The jQuery initialization interface. + * @param options The initial options for the construction of the plugin. To initialize the plugin, this option has to be a object! If it isn't a object, the instance(s) are returned and the plugin wont be initialized. + * @returns {*} After initialization it returns the jQuery element array, else it returns the instance(s) of the elements which are selected. + */ + jQuery.fn.overlayScrollbars = function (options) { + var _elements = this; + if(jQuery.isPlainObject(options)) { + jQuery.each(_elements, function() { window[PLUGINNAME](this, options); }); + return _elements; + } + else + return window[PLUGINNAME](_elements, options); + }; + } + + return window[PLUGINNAME]; }))); \ No newline at end of file diff --git a/js/OverlayScrollbars.min.js b/js/OverlayScrollbars.min.js index e229233..b5620dd 100644 --- a/js/OverlayScrollbars.min.js +++ b/js/OverlayScrollbars.min.js @@ -2,13 +2,13 @@ * OverlayScrollbars * https://github.com/KingSora/OverlayScrollbars * - * Version: 1.2.3 + * Version: 1.3.0 * * Copyright KingSora. * https://github.com/KingSora * * Released under the MIT license. - * Date: 02.02.2018 + * Date: 26.02.2018 */ - -!function(e,t){"function"==typeof define&&define.amd?define(function(){return t(e,e.document,void 0)}):"object"==typeof exports?module.exports=t(e,e.document,void 0):t(e,e.document,void 0)}("undefined"!=typeof window?window:this,function(e,t,n){"use-strict";var r="OverlayScrollbars",i={wW:function(){return e.innerWidth||t.documentElement.clientWidth||t.body.clientWidth},wH:function(){return e.innerHeight||t.documentElement.clientHeight||t.body.clientHeight},mO:function(){return e.MutationObserver||e.WebKitMutationObserver||e.WebkitMutationObserver||e.MozMutationObserver||n},rO:function(){return e.ResizeObserver||e.WebKitResizeObserver||e.WebkitResizeObserver||e.MozResizeObserver||n},rAF:function(){return e.requestAnimationFrame||e.webkitRequestAnimationFrame||e.mozRequestAnimationFrame||e.oRequestAnimationFrame||e.msRequestAnimationFrame||function(t){return e.setTimeout(t,1e3/60)}},cAF:function(){return e.cancelAnimationFrame||e.webkitCancelAnimationFrame||e.mozCancelAnimationFrame||e.oCancelAnimationFrame||e.msCancelAnimationFrame||function(t){return e.clearTimeout(t)}},now:function(){return Date.now()||(new Date).getTime()},stpP:function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},prvD:function(e){e.preventDefault?e.preventDefault():e.returnValue=!1},page:function(e){var r=((e=e.originalEvent||e).target||e.srcElement||t).ownerDocument||t,i=r.documentElement,o=r.body;if(e.touches!==n){var a=e.touches[0];return{x:a.pageX,y:a.pageY}}return!e.pageX&&e.clientX&&null!=e.clientX?{x:e.clientX+(i&&i.scrollLeft||o&&o.scrollLeft||0)-(i&&i.clientLeft||o&&o.clientLeft||0),y:e.clientY+(i&&i.scrollTop||o&&o.scrollTop||0)-(i&&i.clientTop||o&&o.clientTop||0)}:{x:e.pageX,y:e.pageY}},mBtn:function(e){return e.which||e.button===n?e.which:1&e.button?1:2&e.button?3:4&e.button?2:0}},o=function(r){function i(e){var t=!!e&&"length"in e&&e.length,n=C(e);return!O(n)&&("array"===n||0===t||"number"==typeof t&&t>0&&t-1 in e)}function o(e){return(e.match(p)||[]).join(m)}function a(e,n){for(var r=(e.parentNode||t).querySelectorAll(n)||[],i=r.length;i--;)if(r[i]==e)return!0;return!1}function s(e,t,n){"string"===x.type(n)?e.insertAdjacentHTML(t,n):n.nodeType?e.insertAdjacentElement(t,n):e.insertAdjacentElement(t,n[0])}function l(e,t,r){try{e.style[t]!==n&&(e.style[t]=c(t,r))}catch(e){}}function c(e,t){return b[e.toLowerCase()]||"number"!==x.type(t)||(t=t+="px"),t}function u(e,t){var n,r;!1!==t&&e.q.splice(0,1),e.q.length>0?(r=e.q[0],h(e.el,r.props,r.duration,r.easing,r.complete,!0)):(n=x.inArray(e,g))>-1&&g.splice(n,1)}function f(e,t,n){"scrollLeft"===t?e[t]=n:"scrollTop"===t?e[t]=n:l(e,t,n)}function h(e,t,n,i,o,a){var s,l,c,h,d,p,y={},m={},b=0,C=x.isPlainObject(n);for(C?(i=n.easing,n.start,c=n.progress,h=n.step,d=n.specialEasing,o=n.complete,p=n.duration):p=n,d=d||{},p=p||400,i=i||"swing",a=a||!1;b0)E=r.now(),I=function(){S=r.now(),H=S-E,M=W.stop||H>=p,A=1-(Math.max(0,E+p-S)/p||0);for(s in m)k=y[s],z=m[s],T=(z-k)*w[d[s]||i](A,A*p,0,1,p)+k,f(e,s,T),O(h)&&h(T,{elem:e,prop:s,start:k,now:T,end:z,pos:A,options:{easing:i,speacialEasing:d,duration:p,complete:o,step:h},startTime:E});O(c)&&c({},A,Math.max(0,p-H)),M?(u(l),O(o)&&o()):W.frame=r.rAF()(I)},W.frame=r.rAF()(I);else{for(s in m)f(e,s,m[s]);u(l)}}}function d(e,t,n){for(var i,o,a,s=0;s0){if(o=i.q[0],o.stop=!0,r.cAF()(o.frame),i.q.splice(0,1),n)for(a in o.props)f(e,a,o.props[a]);t?i.q=[]:u(i,!1)}break}}function v(e){var t=this;"string"===x.type(e)||e.length||(e=[e]);for(var n=0;n-1)return!0;return!1},addClass:function(e){var t,r,i,a,s,l,c=null,u=0,f=0;if(e)for(t=e.match(p)||[];r=this[u++];)if(c===n&&(c=r.classList!==n),c)for(;s=t[f++];)r.classList.add(s);else if(a=r.className,i=1===r.nodeType&&m+o(a)+m){for(;s=t[f++];)i.indexOf(m+s+m)<0&&(i+=s+m);a!==(l=o(i))&&(r.className=l)}return this},removeClass:function(e){var t,r,i,a,s,l,c=null,u=0,f=0;if(e)for(t=e.match(p)||[];r=this[u++];)if(c===n&&(c=r.classList!==n),c)for(;s=t[f++];)r.classList.remove(s);else if(a=r.className,i=1===r.nodeType&&m+o(a)+m){for(;s=t[f++];)for(;i.indexOf(m+s+m)>-1;)i=i.replace(m+s+m,m);a!==(l=o(i))&&(r.className=l)}return this},remove:function(){return this.each(function(){var e=this;null!=e.parentNode&&e.parentNode.removeChild(e)})},offset:function(){var n=this[0].getBoundingClientRect(),r=e.pageXOffset||t.documentElement.scrollLeft,i=e.pageYOffset||t.documentElement.scrollTop;return{top:n.top+i,left:n.left+r}},css:function(t,r){var i,o;return"string"===x.type(t)?r===n?(i=this[0],e.getComputedStyle?e.getComputedStyle(i,null).getPropertyValue(t):i.currentStyle[t]):this.each(function(){l(this,t,r)}):this.each(function(){for(o in t)l(this,o,t[o])})},unwrap:function(){var e,t,n,r=[];for(this.each(function(){n=this.parentNode,-1===x.inArray(n,r)&&r.push(n)}),e=0;e0;)i=i.childNodes[0];for(t=0;n.length-t;i.firstChild===n[0]&&t++)i.appendChild(n[t]);var s=a?a.nextSibling:o.firstChild;return o.insertBefore(r,s),this},wrapInner:function(e){return this.each(function(){var t=new v(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){return this.each(function(){new x(this).wrapAll(e)})},contents:function(){var e,t,n=[];return this.each(function(){for(e=this.childNodes,t=0;t
'),f=function(){c.append(u);var e=u[0],t=a(u.children("div").first());0===e.offsetHeight&&u.hide().show();var n={x:e.offsetHeight-e.clientHeight,y:e.offsetWidth-e.clientWidth};u.addClass("os-viewport-native-scrollbars-invisible"),u.css("overflow","hidden").hide().css("overflow","scroll").show(),l.nativeScrollbarStyling=e.offsetHeight-e.clientHeight==0&&e.offsetWidth-e.clientWidth==0,u.css({"overflow-y":"hidden",direction:"rtl"}).scrollLeft(0);var r=u.offset(),i=t.offset();u.scrollLeft(999);var o=t.offset();return l.rtlScrollBehavior={i:r.left===i.left,n:i.left-o.left==0},u.removeAttr("style").remove(),n}(),h={x:0===f.x,y:0===f.y};l.nativeScrollbarSize=f,l.nativeScrollbarIsOverlaid=h,l.overlayScrollbarDummySize={x:30,y:30},l.msie=function(){var t=e.navigator.userAgent,n=t.indexOf("MSIE ");if(n>0)return parseInt(t.substring(n+5,t.indexOf(".",n)),10);if(t.indexOf("Trident/")>0){var r=t.indexOf("rv:");return parseInt(t.substring(r+3,t.indexOf(".",r)),10)}var i=t.indexOf("Edge/");return i>0&&parseInt(t.substring(i+5,t.indexOf(".",i)),10)}(),l.cssCalc=function(){for(var e=t.createElement("div"),n=["calc","-webkit-calc","-moz-calc","-o-calc"],r=0;r0){var e=i.wW(),h=i.wH(),d=e-r,v=h-s;if(0===d&&0===v)return;var p=Math.round(e/(r/100)),y=Math.round(h/(s/100)),m=Math.abs(d),g=Math.abs(v),b=Math.abs(p),w=Math.abs(y),x=n(),C=m>2&&g>2,O=!t(b,w),S=x!==f&&f>0;if(!!(C&&O&&S)){c.append(u);var M=u[0];l.nativeScrollbarSize={x:M.offsetHeight-M.clientHeight,y:M.offsetWidth-M.clientWidth},u.remove(),a.each(o.all(),function(){o.has(this)&&o.get(this).update("zoom")})}r=e,s=h,f=x}})}}()}function u(e){var t,r=this,o=[],s=[],l=!1,c=33,u=i.now(),f=function(){if(o.length>0&&l){t=i.rAF()(function(){f()});var e=i.now(),r=e-u;if(r>c){u=e-r%c;for(var a=33,h=0;hy&&(d.update("auto"),s[h]=new Date(m+=y)),a=Math.max(1,Math.min(a,y))}}c=a}}else c=33};r.add=function(t){-1===a.inArray(t,o)&&(o.push(t),s.push(i.now()),o.length>0&&!l&&(l=!0,e.autoUpdateLoop=l,f()))},r.remove=function(r){var c=a.inArray(r,o);c>-1&&(s.splice(c,1),o.splice(c,1),0===o.length&&l&&(l=!1,e.autoUpdateLoop=l,t!==n&&(i.cAF()(t),t=-1)))}}function f(t,l,c,u){function f(){if(!We){var e=Ye[0],t={w:e.scrollWidth,h:e.scrollHeight};if(gn){var n=b(t,Rt);Rt=t,n&&fe(!0,!1)}else Rt=t}}function h(e,t,n){e=e[0];for(var r=t.split(Jn),i=0;i9||!ve){var l=Vn+Er+'">';l+=Vn+Ir+'" dir="ltr">',l+=Vn+Ir+'">',l+=Vn+Hr+Qn,l+="",l+=Vn+Ir+'">',l+=Vn+Hr+'" style="width: 200%; height: 200%'+Qn,l+="",l+="",l+="",e.prepend(l);var u,f,h,d,v=(e=e[0]).childNodes[0].childNodes[0],p=a(v.childNodes[1]),y=a(v.childNodes[0]),m=a(y[0].childNodes[0]),g=v.offsetWidth,b=v.offsetHeight,w=c.nativeScrollbarSize,x=function(){y[Gn](3333333)[Zn](3333333),p[Gn](3333333)[Zn](3333333)},C=function(){f=0,u&&(g=h,b=d,n())},O=function(e){return h=v.offsetWidth,d=v.offsetHeight,u=h!=g||d!=b,e&&u&&!f?(i.cAF()(f),f=i.rAF()(C)):e||C(),x(),e&&(i.prvD(e),i.stpP(e)),!1},S={};S[In]=-2*(w.y+1),S[Hn]=-2*w.x,S[Ln]=-2*w.y,S[Wn]=-2*(w.x+1),a(v).css(S),y.on(qn,O),p.on(qn,O),a(e).on(s,function(){O(!1)});var M={};M[Nn]=3333333,M[jn]=3333333,m.css(M),x()}else{var A=qe[0],k=e;e=e[0];var z=A.attachEvent,T="undefined"==typeof navigator||(navigator.userAgent.match(/Trident/)||navigator.userAgent.match(/Edge/));if(z)k.prepend(Vn+Er+Qn),k.find(Yn+Er).first()[0].attachEvent("onresize",n);else{var E=A.createElement("object");E.setAttribute("tabindex","-1"),E.setAttribute("class",Er),E.onload=function(){var e=this.contentDocument.defaultView;e.addEventListener("resize",n),e.document.documentElement.style.display="none"},E.type="text/html",T&&k.prepend(E),E.data="about:blank",T||k.prepend(E),k.on(s,n)}}}if((e=a(e))[0]===Ye[0]){var I=function(){var t=Ve.css("direction");if(t!==xt){var n={},r=0;return"ltr"===t?(n[Wn]=0,n[Hn]=Bn,r=3333333):(n[Wn]=Bn,n[Hn]=0,r=de.n?-3333333:de.i?0:3333333),Ye.children().first().css(n),e.scrollLeft(r),e.scrollTop(3333333),xt=t,!0}return!1};I(),e.on(qn,function(e){return I()&&fe(),i.prvD(e),i.stpP(e),!1})}}function m(e){if(Me){var t=e.contents()[0];t[sr].disconnect(),delete t[sr]}else e.children(Yn+Er).first().remove()}function g(e,t,r){return!0===r?r:t===n||e!==t}function b(e,t,r,i,o){if(!0===o)return o;if(i===n&&o===n){if(!0===r)return r;r=n}return r=r===n?"w":r,i=i===n?"h":i,t===n||(e[r]!==t[r]||e[i]!==t[i])}function w(e,t){return t===n||(e.t!==t.t||e.r!==t.r||e.b!==t.b||e.l!==t.l)}function x(e,t){e.call(mn,t)}function C(e,t,r){r===n&&(r=[Rn,Rn,Rn,Rn]),e[t+In]=r[0],e[t+Hn]=r[1],e[t+Ln]=r[2],e[t+Wn]=r[3]}function O(){tn&&!en&&(Gt.observe(Ve[0],{attributes:!0,attributeOldValue:!0,attributeFilter:["id","class","style"]}),Zt.observe(wn?_e[0]:Ze[0],{attributes:!0,attributeOldValue:!0,subtree:!wn,childList:!wn,characterData:!wn,attributeFilter:wn?["wrap","cols","rows"]:["id","class","style"]}),en=!0)}function S(){tn&&en&&(Gt.disconnect(),Zt.disconnect(),en=!1)}function M(e){if(!We){var t=(e.originalEvent||e).touches!==n;(1===i.mBtn(e)||t)&&(en&&(hn=!0,S()),ti=i.page(e),ni.w=Ve[0].offsetWidth-(Ae?0:ke),ni.h=Ve[0].offsetHeight-(Ae?0:ze),qe.on(or,j),qe.on(nr,A),qe.on(tr,k),Xe.addClass(Yr),tt.setCapture&&tt.setCapture(),i.prvD(e),i.stpP(e))}}function A(e){e.originalEvent;var t=i.page(e),n={};(pn||vn)&&(n[Nn]=ni.w+t.x-ti.x),(yn||vn)&&(n[jn]=ni.h+t.y-ti.y),Ve.css(n),i.stpP(e)}function k(e){var t=e!==n;qe.off(or,j),qe.off(nr,A),qe.off(tr,k),Xe.removeClass(Yr),tt.releaseCapture&&tt.releaseCapture(),t&&(hn&&O(),mn.update(Bn)),hn=!1}function z(){if(!We){var e=!Et,t=An.w-(Ae||Ct||!dt?0:ze+Ee),n=An.h-(Ae||Ct||!vt?0:ze+Ee),r={},i=dt||e,o=_e[0];r[Pn+Nn]=Rn,r[Pn+jn]=Rn,r[Nn]=Bn,_e.css(r);var a=o.offsetWidth,s=i?Math.max(a,o.scrollWidth-1):1;s+=dt?Ie+(Ae?0:e?0:ke+Te):0,r[Nn]=dt?s:Un,r[jn]=Bn,_e.css(r);var l=o.offsetHeight,c=Math.max(l,o.scrollHeight-1);return r[Nn]=s,r[jn]=c,et.css(r),r[Pn+Nn]=t+(!Ae&&dt?ke+Te:0),r[Pn+jn]=n+(!Ae&&vt?ze+Ee:0),_e.css(r),{ow:a,oh:l,dw:s,dh:c}}}function T(){var e=_e.prop("selectionStart");if(e!==n){for(var t=_e.val(),r=t.length,i=t.split("\n"),o=i.length,a=t.substr(0,e).split("\n"),s=0,l=0,c=a.length,u=a[a.length-1].length,f=0;fl&&(s=f+1,l=h)}return{cursorRow:c,cursorCol:u,rows:o,cols:l,wRow:s,pos:e,max:r}}}function E(e){for(var t=0;t-1&&ei.splice(n,1),0===ei.length&&(z(),mn.update(Bn),clearInterval(nn))}}function W(){setTimeout(function(){z(),mn.update(Bn)},50)}function P(){rn=!0}function F(){rn=!1,clearInterval(nn),ei=[],z(),mn.update(Bn)}function N(e){return _e[Gn](de.i&&Vt?9999999:0),_e[Zn](0),i.prvD(e),i.stpP(e),!1}function j(e){return i.prvD(e),!1}function D(){return kt&&we.x&&we.y}function R(e,t,n){var r=e?fr:hr,i=e?nt:ot;t?Ve.removeClass(r):Ve.addClass(r),n?i.removeClass(Dr):i.addClass(Dr)}function B(e,t){if(clearTimeout(on),e)nt.removeClass(Rr),ot.removeClass(Rr);else{var n=function(){if(!fn){var e=it.hasClass("active")||st.hasClass("active");e||!ln&&!cn||nt.addClass(Rr),e||!ln&&!cn||ot.addClass(Rr)}};an>0&&!0!==t?on=setTimeout(n,an):n()}}function q(e){var t={},n=Q(e),r=Math.min(1,(lt[n._wh]-(Ct?e?ke:ze:0))/ct[n._wh]);t[n.wh]=Math.floor(100*r*1e5)/1e5+"%",D()||n.h.css(t),n.i.hl=n.h[0]["offset"+n.WH],n.i.hlr=r}function U(e,t){var n=Le&&e,r={},i=Q(e),o=$e[0][qn+i.WH]-$e[0]["client"+i.WH];de.n&&n&&(o*=-1);var a=t/o;a=isNaN(a)?0:Math.min(1,a),i.i.ms=o,i.i.cs=t,i.i.csr=a;var s=i.i.hl,l=i.t[0]["offset"+i.WH],c=(l-s)*a;if(c=isNaN(c)?0:c,n&&(de.n||!de.n&&!de.i)&&(c=l-s-c),c=Math.max(0,c),Oe){n&&(c=-(l-s-c));var u;u=e?"translate("+c+"px, 0px)":"translate(0px, "+c+"px)",r["-webkit-transform"]=u,r["-moz-transform"]=u,r["-ms-transform"]=u,r["-o-transform"]=u,r.transform=u}else r[i.lt]=c;D()||i.h.css(r),i.i.ho=c,i.i.tl=l}function X(e,t){var n=t?"removeClass":"addClass",r=e?rt:it,i=e?at:st,o=e?Fr:jr;r[n](o),i[n](o)}function _(){nt=a(Vn+Wr+Jn+Vr+Qn),rt=a(Vn+Pr+Qn),it=a(Vn+Nr+Qn),ot=a(Vn+Wr+Jn+Qr+Qn),at=a(Vn+Pr+Qn),st=a(Vn+Nr+Qn),nt.append(rt),rt.append(it),ot.append(at),at.append(st),Ke.after(ot),Ke.after(nt),Ce&&(nt.on(ar,function(e){e.target===nt[0]&&(q(!0),U(!0,$e[Gn]()))}),ot.on(ar,function(e){e.target===ot[0]&&(q(!1),U(!1,$e[Zn]()))})),V(!0),V(!1),tt=a(Vn+Jn+Br+Qn),Ve.append(tt)}function V(e){var t,r,o,a=Q(e),s=a.xy,l=qn+a.LT,c=1,u=function(){c=.5},f=function(){c=1},v=function(n){n.originalEvent;var o=a.i.tl,c=a.i.hl,u=a.i.ms*((c/2+i.page(n)[s]-r-c/2)/(o-c));u=isFinite(u)?u:0,Le&&e&&(de.n||!de.n&&!de.i)&&(u*=-1),$e[l](t+u),Se||i.prvD(n)},p=function(e){e=e||e.originalEvent,Xe.removeClass(Yr),a.h.removeClass("active"),a.t.removeClass("active"),a.s.removeClass("active"),Se?(d(qe,nr,v),d(qe,tr,p),d(qe,rr,y),d(qe,ir,m),d(qe,or,j)):(qe.off(nr,v),qe.off(tr,p),qe.off(rr,y),qe.off(ir,m),qe.off(or,j)),f(),t=n,r=n,o!==n&&(mn.scrollStop(),clearTimeout(o),o=n);var i=Ve[0].getBoundingClientRect();e.clientX>=i.left&&e.clientX<=i.right&&e.clientY>=i.top&&e.clientY<=i.bottom||J(),ln&&B(!1)},y=function(e){16==e.keyCode&&u()},m=function(e){16==e.keyCode&&f()};a.h.on(er,function(o){if(!We){var c=(o.originalEvent||o).touches!==n;D()||!Xt||c&&!un||(1===i.mBtn(o)||c)&&(t=$e[l](),t=t===n?0:t,(Le&&e&&!de.n||!Le)&&(t=t<0?0:t),r=i.page(o)[s],Xe.addClass(Yr),a.h.addClass("active"),a.s.addClass("active"),Se?(h(qe,or,j),h(qe,nr,v),h(qe,tr,p)):(qe.on(or,j),qe.on(nr,v),qe.on(tr,p)),i.prvD(o))}}),a.t.on(er,function(t){if(!We){var l=(t.originalEvent||t).touches!==n;if(!D()&&Ut&&(!l||un)&&(1===i.mBtn(t)||l)){var f,d=An[a._wh],v=a.t.offset()[a.lt],g=!0;t.shiftKey&&u();var b=function(){var t=a.i.ho,i=a.i.hl,s=r-v,l=200*c,u=g?Math.max(333,l):l,h={},p=Le&&e&&(!de.i&&!de.n||Vt),y=t>s;p&&(y=t=s;p&&(m=f?t+i>=s:t<=s),m?(clearTimeout(o),mn.scrollStop(),o=n):o=setTimeout(b,u),g=!1};r=i.page(t)[s],Xe.addClass(Yr),a.t.addClass("active"),a.s.addClass("active"),Se?(h(qe,or,j),h(qe,tr,p),h(qe,rr,y),h(qe,ir,m)):(qe.on(or,j),qe.on(tr,p),qe.on(rr,y),qe.on(ir,m)),b(),i.prvD(t)}}}).hover(function(){ln&&(fn=!0,B(!0))},function(){ln&&(fn=!1,B(!1))}),a.s.on(er,function(e){i.stpP(e)})}function Q(e){return{wh:e?Nn:jn,WH:e?"Width":"Height",lt:e?Wn:In,LT:e?"Left":"Top",xy:e?Xn:_n,XY:e?"X":"Y",_wh:e?"w":"h",_lt:e?"l":"t",t:e?rt:at,h:e?it:st,s:e?nt:ot,i:e?Sn:Mn}}function Y(){cn&&B(!0)}function J(){cn&&!Xe.hasClass(Yr)&&B(!1)}function K(e){if(!We){var t=je.callbacks,r=t.onScrollStart,i=t.onScroll,o=t.onScrollStop;Pe!==n?clearTimeout(Pe):(ln&&B(!0),D()||Ve.addClass(yr),a.isFunction(r)&&x(r,e)),U(!0,$e[Gn]()),U(!1,$e[Zn]()),a.isFunction(i)&&x(i,e),Pe=setTimeout(function(){$(),a.isFunction(o)&&x(o,e)},kn)}}function $(){clearTimeout(Pe),Pe=n,ln&&B(!1),D()||Ve.removeClass(yr)}function G(e){return"object"==typeof HTMLElement?e instanceof HTMLElement:e&&"object"==typeof e&&null!==e&&1===e.nodeType&&"string"==typeof e.nodeName}function Z(e,t,r,i){var o,l,c,u,f,h={n:t,s:!1,v:n,p:n},d="undefined",v=s.has(e,t),p=s.get(e,t),y=!1,m=!0!==v,g=$n,b=!1;for("array"!==a.type(r)&&(r=[r]),f=r.length,l=0;l1){var x=0;for(u=0;u1)break}1===x&&(b=!0)}else b=!0;w===n&&(y=!0)}if(m&&!1===v&&y&&(m=!1),!m){o=p,d=a.type(o);var O=function(e){var t=a.type(e);return t===d&&(t!==g||(!!b||o===e))&&(h.s=!0,h.v=o,h.p=o,!0)};for(l=0;l-1&&o.splice(u,1);for(var f=0;f0&&gn&&o-De<$r&&!vt&&!dt;if(clearTimeout(Re),s&&(Kr.h=e,Kr.c=t,Kr.f=r,Re=setTimeout(fe,$r)),!(s||We||gn&&!r&&Ve.is(":hidden")||"inline"===Ve.css("display"))){De=o,e=e||Kr.h,t=t||Kr.c,r=r||Kr.f,Kr={},e=e!==n&&e,t=t!==n&&t,r=r!==n&&r,!ye||we.x&&we.y?ge=a.extend(!0,{},c.nativeScrollbarSize):(ge.x=0,ge.y=0),be={x:3*(ge.x+(we.x?0:3)),y:3*(ge.y+(we.y?0:3))},v(Ye),v(Qe);var l={l:$e[Gn](),t:$e[Zn]()},f=je.callbacks,m=je.scrollbars,A=je.textarea,k=f.onUpdated,E=f.onOverflowChanged,I=f.onOverflowAmountChanged,H=f.onDirectionChanged,L=f.onContentSizeChanged,W=f.onHostSizeChanged,P=m.visibility,F=g(P,Bt,r),N=m.autoHide,j=g(N,qt,r),D=m.clickScrolling,_=g(D,Ut,r),V=m.dragScrolling,Q=g(V,Xt,r),K=je.className,$=g(K,Qt,r),G=je.resize,Z=g(G,_t,r)&&!xn,te=!!wn&&"off"!==_e.attr("wrap"),ne=g(te,Et,r),re=je.paddingAbsolute,ie=g(re,Ct,r),oe=je.clipAlways,ae=g(oe,Ot,r),se=je.sizeAutoCapable&&!xn,ce=g(se,Tt,r),he=je.nativeScrollbarsOverlaid.showNativeScrollbars,pe=g(he,kt),Ce=je.autoUpdate,Oe=g(Ce,zt),Me=je.overflowBehavior,Pe=b(Me,Mt,Xn,_n,r),Fe=A.dynWidth,Ne=g(Kt,Be),Be=A.dynHeight,qe=g(Jt,Be);if(sn="n"===N,ln="s"===N,cn="l"===N,an=m.autoHideDelay,un=m.touchSupport,Yt=Qt,dn="n"===G,vn="b"===G,pn="h"===G,yn="v"===G,Vt=je.normalizeRTL,he=he&&we.x&&we.y,Bt=P,qt=N,Ut=D,Xt=V,Qt=K,_t=G,Et=te,Ct=re,Ot=oe,Tt=se,kt=he,zt=Ce,Mt=a.extend(!0,{},Me),Kt=Fe,Jt=Be,$&&(Ve.removeClass(Yt).removeClass(Jr),K!==n&&null!==K&&K.length>0?Ve.addClass(K):Ve.addClass(Jr)),Oe&&(!0===Ce?(S(),u.add(mn)):null===Ce&&ve?(S(),u.add(mn)):(u.remove(mn),O())),ce)if(se)if(Je===n&&(Je=a(Vn+zr+Qn),Ke.before(Je)),Cn)Qe.show();else{Qe=a(Vn+Tr+Qn),Je.before(Qe);var Ue={w:-1,h:-1};y(Qe,function(){var e={w:Qe[0].offsetWidth,h:Qe[0].offsetHeight};b(e,Ue)&&(gn&&vt&&e.h>0||dt&&e.w>0?fe():(gn&&!vt&&0===e.h||!dt&&0===e.w)&&fe()),Ue=e}),Cn=!0,null!==me&&Qe.css(jn,me+"(100% + 1px)")}else Cn&&Qe.hide();r&&(Ye.find("*").trigger(qn),Cn&&Qe.find("*").trigger(qn));var Xe,nt=Ve.css("direction"),rt=g(nt,wt,r),it=Ve.css("box-sizing"),ot=g(it,yt,r),at={c:r,t:le(Ve.css(Tn+In)),r:le(Ve.css(Tn+Hn)),b:le(Ve.css(Tn+Ln)),l:le(Ve.css(Tn+Wn))};try{Xe=Cn?Qe[0].getBoundingClientRect():null}catch(e){return}Ae="border-box"===it;var st=(Le="rtl"===nt)?Wn:Hn,xt=Le?Hn:Wn,Ht=!1,Lt=!(!Cn||"none"===Ve.css(Dn))&&(0===Math.round(Xe.right-Xe.left)&&(!!re||Ve[0].clientWidth-ke>0));if(se&&!Lt){var Wt=Ve[0].offsetWidth,Pt=Je.css(Nn);Je.css(Nn,Bn);var Ft=Ve[0].offsetWidth;Je.css(Nn,Pt),(Ht=Wt!==Ft)||(Je.css(Nn,Wt+1),Ft=Ve[0].offsetWidth,Je.css(Nn,Pt),Ht=Wt!==Ft)}var Nt=(Lt||Ht)&&se,jt=g(Nt,dt,r),Dt=!Nt&&dt,Rt=!!Cn&&0===Math.round(Xe.bottom-Xe.top),Gt=g(Rt,vt,r),Zt=!Rt&&vt,tn="-"+Nn,nn=Nt&&Ae||!Ae,on=Rt&&Ae||!Ae,fn={c:r,t:on?le(Ve.css(En+In+tn)):0,r:nn?le(Ve.css(En+Hn+tn)):0,b:on?le(Ve.css(En+Ln+tn)):0,l:nn?le(Ve.css(En+Wn+tn)):0},hn={c:r,t:le(Ve.css(zn+In)),r:le(Ve.css(zn+Hn)),b:le(Ve.css(zn+Ln)),l:le(Ve.css(zn+Wn))},bn={h:String(Ve.css(Fn+jn)),w:String(Ve.css(Fn+Nn))},Sn={},Mn={};if(ke=at.l+at.r,ze=at.t+at.b,at.c=w(at,mt),Te=fn.l+fn.r,Ee=fn.t+fn.b,fn.c=w(fn,gt),Ie=hn.l+hn.r,He=hn.t+hn.b,hn.c=w(hn,bt),bn.ih=parseInt(bn.h),bn.iw=parseInt(bn.w),bn.ch=bn.h.indexOf("px")>-1,bn.cw=bn.w.indexOf("px")>-1,bn.c=b(bn,pt,r),wt=nt,yt=it,dt=Nt,vt=Rt,mt=at,gt=fn,bt=hn,pt=bn,rt&&Cn&&Qe.css(Dn,xt),at.c||rt||ie||jt||Gt||ot||ce){var kn={},Yn={};C(Mn,zn,[-at.t,-at.r,-at.b,-at.l]),re?(C(kn,Rn,[at.t,at.r,at.b,at.l]),wn?C(Yn,Tn):C(Sn,Tn)):(C(kn,Rn),wn?C(Yn,Tn,[at.t,at.r,at.b,at.l]):C(Sn,Tn,[at.t,at.r,at.b,at.l])),Ke.css(kn),_e.css(Yn)}An={w:Ke[0].offsetWidth,h:Ke[0].offsetHeight};var Jn=!!wn&&z();if(Rt&&(Gt||ie||ot||bn.c||at.c||fn.c)?(bn.cw&&(Sn[Fn+jn]=bn.ch?bn.ih-(re?ze:0)+(Ae?-Ee:ze):Rn),Sn[jn]=Bn):(Gt||ie)&&(Sn[Fn+jn]=Rn,Sn[jn]=Un),Nt&&(jt||ie||ot||bn.c||at.c||fn.c||rt)?(bn.cw&&(Sn[Fn+Nn]=bn.cw?bn.iw-(re?ke:0)+(Ae?-Te:ke)+(we.y?xe.y:0):Rn),Sn[Nn]=Bn,Mn[Fn+Nn]=Un):(jt||ie)&&(Sn[Fn+Nn]=Rn,Sn[Nn]=Un,Sn[Dn]=Rn,Mn[Fn+Nn]=Rn),Nt&&(bn.cw||(Sn[Fn+Nn]=Rn),Mn[Nn]=wn&&Fe?Jn.dw:Bn,Sn[Nn]=Bn,Sn[Dn]=xt),Rt&&(bn.ch||(Sn[Fn+jn]=Rn),Mn[jn]=wn?Be?Jn.dh:Bn:Ze[0].clientHeight),se&&Je.css(Mn),Ze.css(Sn),Sn={},Mn={},ft=ft||{x:!1,y:!1},e||t||rt||ot||ie||jt||Nt||Gt||Rt||bn.c||pe||Pe||ae||Z||F||Ne||qe||ne||ie||Ne||qe||r){var Kn={},$n=ft.y&&ht.ys&&!he?we.y?$e.css(st):-ge.y:0,tr=ft.x&&ht.xs&&!he?we.x?$e.css(Ln):-ge.x:0;C(Kn,Rn),$e.css(Kn),Rt&&!wn&&(Ze.css("overflow","hidden"),Sn.overflow=Rn);var nr=ue(),rr={w:nr.clientWidth,h:nr.clientHeight},ir={w:nr.scrollWidth,h:nr.scrollHeight},or={w:wn&&Jn&&!Fe?Jn.ow:Nt?rr.w:ir.w,h:wn&&Jn&&!Be?Jn.oh:Rt?rr.h:ir.h};Kn[Ln]=Zt?Rn:tr,Kn[st]=Dt?Rn:$n,$e.css(Kn);var ar=Ve[0],sr={w:ar.clientWidth,h:ar.clientHeight},lr={w:Math.max(or.w+(re?ke:0),sr.w-ke)-(Fe&&wn&&Nt?Ie+(Ae?0:ke+Te):0),h:Math.max(or.h+(re?ze:0),sr.h-ze)};if(lr.c=b(lr,St,r),St=lr,se){(lr.c||Rt||Nt)&&(Mn[Nn]=lr.w,Mn[jn]=lr.h);var cr=Mn[Nn]+(Ae?Te:-ke),ur=Mn[jn]+(Ae?Ee:-ke),fr={};(!Nt||!Nt&&fn.c)&&(Mn[Nn]=sr.w-(Ae?0:ke+Te)-1-Ie),(!Rt||!Rt&&fn.c)&&(Mn[jn]=sr.h-(Ae?0:ze+Ee)-1-He),bn.cw&&bn.iw===cr&&(Mn[Nn]=cr+(Ae?0:ke)+1),bn.ch&&bn.ih===ur&&(Mn[jn]=ur+(Ae?0:ze)+1),Nt&&(rr.w0&&(Mn[Nn]=Math.max(1,Mn[Nn]),Mn[jn]=Math.max(1,Mn[jn])),wn&&et.css(fr),Je.css(Mn)}Nt&&(Sn[Nn]=Un),!Nt||Ae||en||(Sn[Dn]="none"),Ze.css(Sn),Sn={};var hr=nr.getBoundingClientRect(),dr={w:nr.scrollWidth,h:nr.scrollHeight};if(hr.width!==n){var wr=hr.width,xr=hr.height;dr.w+=le(wr+.001)-wr,dr.h+=le(xr+.001)-xr}dr.c=t=b(dr,ct,r),ct=dr,e=b(sr={w:ar.clientWidth,h:ar.clientHeight},lt),lt=sr;var Cr={x:"v-s"===Me.x,y:"v-s"===Me.y},Or={x:"v-h"===Me.x,y:"v-h"===Me.y},Sr={x:"s"===Me.x,y:"s"===Me.y},Mr={x:Math.max(0,dr.w-sr.w+(re?ke:0)),y:Math.max(0,dr.h-sr.h+(re?ze:0))},Ar=wn&&(0===An.w||0===An.h);Ar&&(Mr.x=0,Mr.y=0);var Er={x:Mr.x>0,y:Mr.y>0},Ir={x:Er.x,y:Er.y};(Cr.x||Or.x)&&(Ir.x=Er.y&&!Cr.y&&!Or.y),(Cr.y||Or.y)&&(Ir.y=Er.x&&!Cr.x&&!Or.x),Ir.xs=!!Ir.x&&(Sr.x||Cr.x),Ir.ys=!!Ir.y&&(Sr.y||Cr.y);var Hr={x:Er.x&&Ir.xs,y:Er.y&&Ir.ys},Lr=At;if(Mr.c=b(Mr,At,Xn,_n,r),At=Mr,Er.c=b(Er,ft,Xn,_n,r),ft=Er,Ir.c=b(Ir,ht,Xn,_n,r),ht=Ir,we.x||we.y){var Wr=r,Pr={};if((Er.x||Er.y)&&(Pr.w=we.y&&Er.y?dr.w+xe.y:Rn,Pr.h=we.x&&Er.x?dr.h+xe.x:Rn,Wr=g(Pr,ut,r),ut=Pr),Er.c||Ir.c||dr.c||rt||jt||Gt||Nt||Rt||pe){Sn[En+xt]=Rn,Sn[zn+xt]=Rn,we.x&&Er.x&&Ir.xs?(Rt&&(Sn[zn+Ln]=he?Rn:xe.x),Sn[En+Ln]=Rt||he?Rn:xe.x+"px solid transparent"):(Pr.h=Rn,Wr=!0,Sn[En+Ln]=Rn,Sn[zn+Ln]=Rn),we.y&&Er.y&&Ir.ys?(Nt&&(Sn[zn+st]=he?Rn:xe.y),Sn[En+st]=he?Rn:xe.y+"px solid transparent"):(Pr.w=Rn,Wr=!0,Sn[En+st]=Rn,Sn[zn+st]=Rn)}if(he&&(Pr.w=Rn,Pr.h=Rn,Wr=!0),Wr){var Fr={};Fr[Nn]=Ir.y?Pr.w:Rn,Fr[jn]=Ir.x?Pr.h:Rn,Ge===n&&(Ge=a(Vn+kr+Qn),$e.prepend(Ge)),Ge.css(Fr)}Ze.css(Sn)}var Nr={},kn={};if(e||Er.c||Ir.c||dr.c||Pe||ot||pe||rt||ae||Gt){Nr[xt]=Rn;var jr=function(){Nr[Ln]=Rn,On.h=0},Dr=function(){Nr[st]=Rn,On.w=0};if(Er.x&&Ir.xs?(Nr["overflow-x"]=qn,he?jr():(Nr[Ln]=-(we.x?xe.x:ge.x),On.h=we.x?xe.y:0)):(Nr["overflow-x"]=Rn,jr()),Er.y&&Ir.ys?(Nr["overflow-y"]=qn,he?Dr():(Nr[st]=-(we.y?xe.y:ge.y),On.w=we.y?xe.x:0)):(Nr["overflow-y"]=Rn,Dr()),(An.h-1,mi=pi.y>-1;(yi||mi)&&(mi&&$e[Zn](pi.y),yi&&(Le&&Vt&&de.i?$e[Gn](0):$e[Gn](pi.x)))}It=ai}else wn||(Le&&de.i&&we.y&&Er.x&&Vt&&(l.l+=On.w),$e[Gn](l.l),$e[Zn](l.t));rt&&a.isFunction(H)&&x(H,{isRTL:Le,dir:nt}),e&&a.isFunction(W)&&x(W,{width:lt.w,height:lt.h}),t&&a.isFunction(L)&&x(L,{width:ct.w,height:ct.h}),(Er.c||Ir.c)&&a.isFunction(E)&&x(E,{x:Er.x,y:Er.y,xScrollable:Ir.xs,yScrollable:Ir.ys,clipped:Ir.x||Ir.y}),Mr.c&&a.isFunction(I)&&x(I,{x:Mr.x,y:Mr.y})}xn&&(Er.c||$t.c)&&($t.f||ee(),we.y&&Er.x&&Ze.css(Pn+Nn,$t.w+xe.y),we.x&&Er.y&&Ze.css(Pn+jn,$t.h+xe.x),$t.c=!1),p(Ye),p(Qe),a.isFunction(k)&&x(k,{forced:r})}}if(G(t)){if(o.has(t)){var he=o.get(t);return he.options(l),he}var de,ve,pe,ye,me,ge,be,we,xe,Ce,Oe,Se,Me,Ae,ke,ze,Te,Ee,Ie,He,Le,We,Pe,Fe,Ne,je,De,Re,Be,qe,Ue,Xe,_e,Ve,Qe,Ye,Je,Ke,$e,Ge,Ze,et,tt,nt,rt,it,ot,at,st,lt,ct,ut,ft,ht,dt,vt,pt,yt,mt,gt,bt,wt,xt,Ct,Ot,St,Mt,At,kt,zt,Tt,Et,It,Ht,Lt,Wt,Pt,Ft,Nt,jt,Dt,Rt,Bt,qt,Ut,Xt,_t,Vt,Qt,Yt,Jt,Kt,$t,Gt,Zt,en,tn,nn,rn,on,an,sn,ln,cn,un,fn,hn,dn,vn,pn,yn,mn=new e[r],gn=!1,bn=!1,wn=!1,xn=!1,Cn=!1,On={w:0,h:0},Sn={},Mn={},An={},kn=175,zn="margin-",Tn="padding-",En="border-",In="top",Hn="right",Ln="bottom",Wn="left",Pn="min-",Fn="max-",Nn="width",jn="height",Dn="float",Rn="",Bn="auto",qn="scroll",Un="100%",Xn="x",_n="y",Vn='
',Yn=".",Jn=" ",Kn="scrollbar",$n="string",Gn=qn+"Left",Zn=qn+"Top",er="mousedown touchstart",tr="mouseup touchend",nr="mousemove touchmove",rr="keydown",ir="keyup",or="selectstart",ar="transitionend webkitTransitionEnd oTransitionEnd",sr="~_overlayScrollbarsRO_~",lr="os-html",cr="os-host",ur=cr+"-textarea",fr=cr+"-"+Kn+"-horizontal-hidden",hr=cr+"-"+Kn+"-vertical-hidden",dr=cr+"-transition",vr=cr+"-rtl",pr=cr+"-resize-disabled",yr=cr+"-scrolling",mr=cr+"-overflow",gr=mr+"-x",br=mr+"-y",wr="os-textarea",xr=wr+"-cover",Cr="os-padding",Or="os-viewport",Sr=Or+"-native-scrollbars-invisible",Mr=Or+"-native-scrollbars-overlaid",Ar="os-content",kr="os-content-arrange",zr="os-content-glue",Tr="os-size-auto-observer",Er="os-resize-observer",Ir="os-resize-observer-item",Hr=Ir+"-final",Lr="os-text-inherit",Wr="os-"+Kn,Pr=Wr+"-track",Fr=Pr+"-off",Nr=Wr+"-handle",jr=Nr+"-off",Dr=Wr+"-unusable",Rr=Wr+"-"+Bn+"-hidden",Br=Wr+"-corner",qr=Br+"-resize",Ur=qr+"-both",Xr=qr+"-horizontal",_r=qr+"-vertical",Vr=Wr+"-horizontal",Qr=Wr+"-vertical",Yr="os-dragging",Jr="os-theme-none",Kr={},$r=33,Gr=11,Zr=[112,113,114,115,116,117,118,119,120,121,123,33,34,37,38,39,40,16,17,18,19,20,144],ei=[],ti={x:0,y:0},ni={w:0,h:0};if(mn.sleep=function(){We=!0},mn.update=function(e){if(e===Bn){var t=se(),n=ae();(t||n)&&fe(!1,n)}else"zoom"===e?fe(!0,!0):(e=We||e,We=!1,fe(!1,!1,e))},mn.options=function(e,t){if(a.isEmptyObject(e)||!a.isPlainObject(e)){if("string"===a.type(e)){if(arguments.length>=2){var n={};return s.set(n,e,t,!0),oe(n),void fe()}return s.get(Ne,e)}return Ne}oe(e);var r=We||!1;We=!1,fe(),We=r},mn.destroy=function(){bn=!0,u.remove(mn),S(),m(Ye),Cn&&m(Qe),Ye.remove(),Je!==n&&Je.remove(),Ge!==n&&Ge.remove(),Cn&&Qe.remove(),Se?(d(Ve,"mouseenter",Y),d(Ve,"mouseleave",J)):(Ve.off("mouseenter",Y),Ve.off("mouseleave",J)),nt.remove(),ot.remove(),tt&&tt.remove(),dn||k(),Ze.contents().unwrap().unwrap().unwrap(),xn&&Ue.removeClass(lr),wn?(_e.off(qn,N),_e.off("drop",W),_e.off("focus",P),_e.off("focusout",F),pe>9||!ve?_e.off("input",I):(_e.off(rr,H),_e.off(ir,L)),et.remove(),_e.removeClass(wr).removeClass(Lr),_e.unwrap().removeAttr("style"),Ve.remove()):(_e.removeClass(cr),Ve.removeClass(cr).removeClass(pr).removeClass(vr).removeClass(fr).removeClass(hr).removeClass(dr).removeClass(yr).removeClass(mr).removeClass(gr).removeClass(br).removeClass(Jr).removeClass(Qt)),o.rem(t);var e=je.callbacks.onDestroyed;a.isFunction(e)&&x(e);for(var r in mn)delete mn[r];mn=n},mn.scroll=function(t,r,i,o){if(0===arguments.length||t===n){var s=Sn,l=Mn,c=Vt&&Le&&de.i,u=Vt&&Le&&de.n,f=s.cs,h=s.csr,d=s.ms;return h=c?1-h:h,f=c?d-f:f,f*=u?-1:1,d*=u?-1:1,{x:{position:f,ratio:h,max:d,handleOffset:s.ho,handleLength:s.hl,handleLengthRatio:s.hlr,trackLength:s.tl,isRTL:Le,isRTLNormalized:Vt},y:{position:l.cs,ratio:l.csr,max:l.ms,handleOffset:l.ho,handleLength:l.hl,handleLengthRatio:l.hlr,trackLength:l.tl}}}var v,p=[Xn,Wn,"l"],y=[_n,In,"t"],m=["+=","-=","*=","/="],g={},b="object"===a.type(r),w={axis:"xy",block:["begin","begin"],margin:[0,0,0,0]},x=[Xn,_n,"xy","yx"],C=["begin","end"],O=t.hasOwnProperty("el"),S=O?t.el:t,M=S instanceof a,A=!M&&G(S),k=function(e,t){for(v=0;v0)t.x=e[0],t.y=e[1];else if(a.type(e)===$n||"number"===a.type(e))t.x=e,t.y=e;else if("object"===a.type(e)){e=a.extend({},e),v=0;for(var n in e)e.hasOwnProperty(n)&&(v>2&&delete e[n],v++);var r=function(t){var n=t?p:y;for(v=0;v2){var d=r.substr(0,2);for(v=0;v/g,(h?"-":Rn)+Un)).replace(/px/g,Rn)).replace(/%/g," * "+u*(f&&de.n?-1:1)/100)).replace(/vw/g," * "+An.w)).replace(/vh/g," * "+An.h),o=e.parseInt(e.parseFloat(e.eval(r)).toFixed())}else"number"===a.type(r)&&(o=r);if(!isNaN(o)&&o!==n&&"number"===a.type(o)){var p=Vt&&f,y=c*(p&&de.n?-1:1),g=p&&de.i,b=p&&de.n;switch(y=g?u-y:y,i){case"+=":s=y+o;break;case"-=":s=y-o;break;case"*=":s=y*o;break;case"/=":s=y/o;break;default:s=o}g&&(s=u-s),b&&(s*=-1),f&&de.n?(s=Math.max(u,s),s=Math.min(0,s)):(s=Math.min(u,s),s=Math.max(0,s)),s===c&&(s=n)}return s};if(M||A){var E=M?S:a(S);if(0===E.length)return;if(O){var I,H,L,W=t.axis,P=t.block,F=a.type(P),N=t.margin,j=a.type(N);if(F===$n)P=[P,P];else if("array"===F)if((H=P.length)>2||H<1)P=n;else{for(I=!0,1===H&&(P[1]="begin"),v=0;v0||b){var re={};if(te&&(re[Gn]=g.x),ne&&(re[Zn]=g.y),b)$e.animate(re,r);else{var ie={duration:r,complete:o};if("array"===a.type(i)){var oe={};oe[Gn]=i[0],oe[Zn]=i[1],ie.specialEasing=oe}else ie.easing=i;$e.animate(re,ie)}}else te&&$e[Gn](g.x),ne&&$e[Zn](g.y)},mn.scrollStop=function(e,t,n){$e.stop(e,t,n)},mn.getElements=function(){return{target:_e[0],host:Ve[0],padding:Ke[0],viewport:$e[0],content:Ze[0],scrollbarHorizontal:{scrollbar:nt[0],track:rt[0],handle:it[0]},scrollbarVertical:{scrollbar:ot[0],track:at[0],handle:st[0]},scrollbarCorner:tt}},mn.getState=function(e){var t=function(e){if(!a.isPlainObject(e))return e;var t=a.extend(!0,{},e);s.del(t,"c");var n=function(e,n){t.hasOwnProperty(e)&&(t[n]=t[e],delete t[e])};return n("w",Nn),n("h",jn),t},n={sleeping:t(We)||!1,autoUpdate:t(!en),widthAuto:t(dt),heightAuto:t(vt),padding:t(mt),overflowAmount:t(At),hideOverflow:t(ht),hasOverflow:t(ft),contentScrollSize:t(ct),viewportSize:t(An),hostSize:t(lt)};return a.type(e)===$n?s.get(n,e):n},function(e,t){Fe=c.defaultOptions,ye=c.nativeScrollbarStyling,ge=a.extend(!0,{},c.nativeScrollbarSize),we=a.extend(!0,{},c.nativeScrollbarIsOverlaid),xe=a.extend(!0,{},c.overlayScrollbarDummySize),de=a.extend(!0,{},c.rtlScrollBehavior),oe(a.extend(!0,{},Fe,t));var n=je.callbacks;if(we.x&&we.x&&!je.nativeScrollbarsOverlaid.initialize){var r=n.onInitializationWithdrawn;return a.isFunction(r)&&x(r),!1}me=c.cssCalc,pe=c.msie,ve=c.autoUpdateRecommended,Ce=c.supportTransition,Oe=c.supportTransform,Se=c.supportPassiveEvents,Me=c.supportResizeObserver,tn=c.supportMutationObserver,qe=a(e.ownerDocument),Be=a(qe[0].defaultView||qe[0].parentWindow),Ue=qe.find("html").first(),Xe=Ue.find("body").first(),_e=a(e),wn=_e.is("textarea");var o;if((xn=_e.is("body"))&&((o={}).l=Math.max(_e[Gn](),Ue[Gn](),Be[Gn]()),o.t=Math.max(_e[Zn](),Ue[Zn](),Be[Zn]())),wn){_e.wrap(Vn+ur+Qn),_e.addClass(wr).addClass(Lr),Ve=_e.parent();var s={};je.sizeAutoCapable||(s[Nn]=_e.css(Nn),s[jn]=_e.css(jn)),Ve.css(s),Ve.wrapInner(Vn+Ar+Jn+Lr+Qn).wrapInner(Vn+Or+Jn+Lr+Qn).wrapInner(Vn+Cr+Jn+Lr+Qn),Ze=Ve.find(Yn+Ar).first(),$e=Ve.find(Yn+Or).first(),Ke=Ve.find(Yn+Cr).first(),et=a(Vn+xr+Qn),Ze.prepend(et),_e.on(qn,N),_e.on("drop",W),_e.on("focus",P),_e.on("focusout",F),pe>9||!ve?_e.on("input",I):(_e.on(rr,H),_e.on(ir,L))}else _e.addClass(cr),(Ve=_e).wrapInner(Vn+Ar+Qn).wrapInner(Vn+Or+Qn).wrapInner(Vn+Cr+Qn),Ze=Ve.find(Yn+Ar).first(),$e=Ve.find(Yn+Or).first(),Ke=Ve.find(Yn+Cr).first(),Ze.on(ar,function(e){!0!==zt&&ce((e=e.originalEvent||e).propertyName)&&fe(Bn)});if(_(),Se?h($e,qn,K):$e.on(qn,K),ye&&(we.x&&we.y?$e.addClass(Mr):$e.addClass(Sr)),tn){var l,u=i.mO(),d=i.now();Gt=new u(function(e){if(gn&&!We){var t=!1;a.each(e,function(){var e=this,n=this.target,r=e.attributeName;if(t="class"===r?re(e.oldValue,n.className):"style"!==r||e.oldValue!==n.style.cssText)return!1}),t&&mn.update(Bn)}}),Zt=new u(function(e){if(gn&&!We){for(var t=!1,n=0;nGr||!o?a():l=setTimeout(a,Gr)}}})}xn&&(Ue.addClass(lr),$e[Gn](o.l),$e[Zn](o.t)),Ye=a(Vn+"os-resize-observer-host"+Qn),Ve.prepend(Ye),y(Ye,f),f(),mn.update(Bn),setTimeout(function(){Ce&&!bn&&Ve.addClass(dr)},333),gn=!0;var v=n.onInitialized;return a.isFunction(v)&&x(v),gn}(t,l))return o.add(t,mn),mn;mn=n}}var h,d,v={className:"os-theme-dark",resize:"none",sizeAutoCapable:!0,clipAlways:!0,normalizeRTL:!0,paddingAbsolute:!1,autoUpdate:null,autoUpdateInterval:33,nativeScrollbarsOverlaid:{showNativeScrollbars:!1,initialize:!0},overflowBehavior:{x:"scroll",y:"scroll"},scrollbars:{visibility:"auto",autoHide:"never",autoHideDelay:800,dragScrolling:!0,clickScrolling:!1,touchSupport:!0},textarea:{dynWidth:!1,dynHeight:!1},callbacks:{onInitialized:null,onInitializationWithdrawn:null,onDestroyed:null,onScrollStart:null,onScroll:null,onScrollStop:null,onOverflowChanged:null,onOverflowAmountChanged:null,onDirectionChanged:null,onContentSizeChanged:null,onHostSizeChanged:null,onUpdated:null}};e[r]=function(e,t){if(0===arguments.length)return this;l();var r,i=[];return a.isPlainObject(t)?e&&e.length?e.length>1?(a.each(e,function(){(r=this)!==n&&i.push(f(r,t,h,d))}),i):f(e[0],t,h,d):f(e,t,h,d):e?e.length&&e.length>0?e.length>1?(a.each(e,function(){r=o.get(this),"!"===t?r!==n&&i.push(r):i.push(r)}),i):o.get(e[0]):o.get(e):void 0},e[r].globals=function(){l();var e=a.extend(!0,{},h);return delete e.msie,e},e[r].defaultOptions=function(e){l();var t=h.defaultOptions;if(e===n)return a.extend(!0,{},t);h.defaultOptions=a.extend(!0,{},t,e)}}(i,function(e){function t(e){for(var t=0;t-1&&(delete t[i],r.splice(n,1))},has:function(e){return t(e)!==n},get:t}}(o),o,function(e){function t(r,i,o,a,s){var l=!1;if(o=o===n?"":o,"string"!=typeof i)return l;if(0===i.length)return l;if(""===o){for(var c=i.split("."),u=r,f="",h=!1,d=0;d0&&t-1 in e)}function m(e){return(e.match(o)||[]).join(s)}function g(e,n){for(var r=(e.parentNode||t).querySelectorAll(n)||[],i=r.length;i--;)if(r[i]==e)return!0;return!1}function w(e,t,n){h.type(n)===i.s?e.insertAdjacentHTML(t,n):n.nodeType?e.insertAdjacentElement(t,n):e.insertAdjacentElement(t,n[0])}function b(e,t,r){try{e.style[t]!==n&&(e.style[t]=x(t,r))}catch(i){}}function x(e,t){return u[e.toLowerCase()]||h.type(t)!==i.n||(t=t+="px"),t}function C(e,t){var n,r;!1!==t&&e.q.splice(0,1),e.q.length>0?(r=e.q[0],M(e.el,r.props,r.duration,r.easing,r.complete,!0)):(n=h.inArray(e,c))>-1&&c.splice(n,1)}function O(e,t,n){"scrollLeft"===t?e[t]=n:"scrollTop"===t?e[t]=n:b(e,t,n)}function M(e,t,n,i,o,a){var s,l,u,v,p,y,m={},g={},w=0,b=h.isPlainObject(n);for(b?(i=n.easing,n.start,u=n.progress,v=n.step,p=n.specialEasing,o=n.complete,y=n.duration):y=n,p=p||{},y=y||400,i=i||"swing",a=a||!1;w0)E=r.now(),k=function(){for(s in x=r.now(),I=x-E,M=L.stop||I>=y,S=1-(Math.max(0,E+y-x)/y||0),g)z=m[s],H=g[s],T=(H-z)*f[p[s]||i](S,S*y,0,1,y)+z,O(e,s,T),d(v)&&v(T,{elem:e,prop:s,start:z,now:T,end:H,pos:S,options:{easing:i,speacialEasing:p,duration:y,complete:o,step:v},startTime:E});d(u)&&u({},S,Math.max(0,y-I)),M?(C(l),d(o)&&o()):L.frame=r.rAF()(k)},L.frame=r.rAF()(k);else{for(s in g)O(e,s,g[s]);C(l)}}}function S(e,t,n){for(var i,o,a,s=0;s0){if((o=i.q[0]).stop=!0,r.cAF()(o.frame),i.q.splice(0,1),n)for(a in o.props)O(e,a,o.props[a]);t?i.q=[]:C(i,!1)}break}}function A(e){var t=this;h.type(e)===i.s||e.length||(e=[e]);for(var n=0;n-1)return!0;return!1},addClass:function(e){var t,r,i,a,l,c,u=null,f=0,h=0;if(e)for(t=e.match(o)||[];r=this[f++];)if(u===n&&(u=r.classList!==n),u)for(;l=t[h++];)r.classList.add(l);else if(a=r.className,i=1===r.nodeType&&s+m(a)+s){for(;l=t[h++];)i.indexOf(s+l+s)<0&&(i+=l+s);a!==(c=m(i))&&(r.className=c)}return this},removeClass:function(e){var t,r,i,a,l,c,u=null,f=0,h=0;if(e)for(t=e.match(o)||[];r=this[f++];)if(u===n&&(u=r.classList!==n),u)for(;l=t[h++];)r.classList.remove(l);else if(a=r.className,i=1===r.nodeType&&s+m(a)+s){for(;l=t[h++];)for(;i.indexOf(s+l+s)>-1;)i=i.replace(s+l+s,s);a!==(c=m(i))&&(r.className=c)}return this},remove:function(){return this.each(function(){var e=this;null!=e.parentNode&&e.parentNode.removeChild(e)})},offset:function(){var n=this[0].getBoundingClientRect(),r=e.pageXOffset||t.documentElement.scrollLeft,i=e.pageYOffset||t.documentElement.scrollTop;return{top:n.top+i,left:n.left+r}},css:function(t,r){var o,a;return h.type(t)===i.s?r===n?(o=this[0],e.getComputedStyle?e.getComputedStyle(o,null).getPropertyValue(t):o.currentStyle[t]):this.each(function(){b(this,t,r)}):this.each(function(){for(a in t)b(this,a,t[a])})},unwrap:function(){var e,t,n,r=[];for(this.each(function(){n=this.parentNode,-1===h.inArray(n,r)&&r.push(n)}),e=0;e0;)i=i.childNodes[0];for(t=0;n.length-t;i.firstChild===n[0]&&t++)i.appendChild(n[t]);var s=a?a.nextSibling:o.firstChild;return o.insertBefore(r,s),this},wrapInner:function(e){return this.each(function(){var t=new A(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){return this.each(function(){new h(this).wrapAll(e)})},contents:function(){var e,t,n=[];return this.each(function(){for(e=this.childNodes,t=0;t-1&&(delete n[r],t.splice(i,1))}function a(e){return s(e)!==n}function s(e){for(var n=0;n
'),f=function(){a.append(u);var e,t="overflow",n="hidden",r=u[0],s=c(u.children("div").first());return 0===r[o.oH]&&u.hide().show(),e={x:r[o.oH]-r[o.cH],y:r[o.oW]-r[o.cW]},i.restrictedMeasuring=function(){u.css(t,n);var e={w:r[o.sW],h:r[o.sH]};u.css(t,"visible");var i={w:r[o.sW],h:r[o.sH]};return e.w-i.w!=0||e.h-i.h!=0}(),i.nativeScrollbarStyling=(u.addClass("os-viewport-native-scrollbars-invisible"),u.css(t,n).hide().css(t,"scroll").show(),r[o.oH]-r[o.cH]==0&&r[o.oW]-r[o.cW]==0),i.rtlScrollBehavior=function(){u.css({"overflow-y":n,direction:"rtl"}).scrollLeft(0);var e=u.offset(),t=s.offset();u.scrollLeft(999);var r=s.offset();return{i:e.left===t.left,n:t.left-r.left==0}}(),u.removeAttr(o.s).remove(),e}(),h={x:0===f.x,y:0===f.y};function v(e){var r=!1,i="Webkit Moz ms O".split(" "),o=t.createElement("div"),a=null;if(e=e.toLowerCase(),o.style[e]!==n&&(r=!0),!1===r){a=e.charAt(0).toUpperCase()+e.substr(1);for(var s=0;s0)return parseInt(t.substring(n+5,t.indexOf(".",n)),10);if(t.indexOf("Trident/")>0){var r=t.indexOf("rv:");return parseInt(t.substring(r+3,t.indexOf(".",r)),10)}var i=t.indexOf("Edge/");return i>0&&parseInt(t.substring(i+5,t.indexOf(".",i)),10)}(),i.cssCalc=function(){for(var e=t.createElement("div"),n=["calc","-webkit-calc","-moz-calc","-o-calc"],r=0;r0){var e=s.wW(),h=s.wH(),d=e-t,p=h-n;if(0===d&&0===p)return;var y=Math.round(e/(t/100)),m=Math.round(h/(n/100)),g=Math.abs(d),w=Math.abs(p),b=Math.abs(y),x=Math.abs(m),C=v(),O=g>2&&w>2,M=!f(b,x);if(!!(O&&M&&(C!==r&&r>0))){a.append(u);var S=u[0];i.nativeScrollbarSize={x:S[o.oH]-S[o.cH],y:S[o.oW]-S[o.cW]},u.remove(),c.each(l.all(),function(){l.has(this)&&l.get(this).update("zoom")})}t=e,n=h,r=C}})}function f(e,t){var n=Math.abs(e),r=Math.abs(t);return!(n===r||n+1===r||n-1===r)}function v(){var t=e.screen.deviceXDPI||0,n=e.screen.logicalXDPI||1;return e.devicePixelRatio||t/n}}()}function y(e){var t,r=this,i="autoUpdate",o=i+"Interval",a=[],l=[],u=!1,f=33,h=f,v=s.now(),d=function(){if(a.length>0&&u){t=s.rAF()(function(){d()});var e=s.now(),r=e-v;if(r>h){v=e-r%h;for(var c=f,p=0;pw&&(y.update("auto"),l[p]=new Date(b+=w)),c=Math.max(1,Math.min(c,w))}}h=c}}else h=f};r.add=function(t){-1===c.inArray(t,a)&&(a.push(t),l.push(s.now()),a.length>0&&!u&&(u=!0,e.autoUpdateLoop=u,d()))},r.remove=function(r){var i=c.inArray(r,a);i>-1&&(l.splice(i,1),a.splice(i,1),0===a.length&&u&&(u=!1,e.autoUpdateLoop=u,t!==n&&(s.cAF()(t),t=-1)))}}function m(t,f,h,v){if(Kr(t)){if(l.has(t)){var d=l.get(t);return d.options(f),d}var p,y,m,g,w,b,x,C,O,M,S,A,z,H,T,E,k,I,W,L,P,F,N,D,R,B,j,q,U,_,Q,V,X,Y,J,K,$,G,Z,ee,te,ne,re,ie,oe,ae,se,le,ce,ue,fe,he,ve,de,pe,ye,me,ge,we,be,xe,Ce,Oe,Me,Se,Ae,ze,He,Te,Ee,ke,Ie,We,Le,Pe,Fe,Ne,De,Re,Be,je,qe,Ue,_e,Qe,Ve,Xe,Ye,Je,Ke,$e,Ge,Ze,et,tt,nt,rt,it,ot,at,st,lt,ct,ut,ft,ht,vt,dt,pt,yt,mt,gt,wt=new e[r],bt=!1,xt=!1,Ct=!1,Ot=!1,Mt=!1,St={w:0,h:0},At={},zt={},Ht={},Tt=175,Et="-hidden",kt="margin-",It="padding-",Wt="border-",Lt="top",Pt="right",Ft="bottom",Nt="left",Dt="min-",Rt="max-",Bt="width",jt="height",qt="float",Ut="",_t="auto",Qt="scroll",Vt="100%",Xt="x",Yt="y",Jt='
',$t=".",Gt=" ",Zt="scrollbar",en="-horizontal",tn="-vertical",nn=Qt+"Left",rn=Qt+"Top",on="mousedown touchstart",an="mouseup touchend",sn="mousemove touchmove",ln="keydown",cn="keyup",un="selectstart",fn="transitionend webkitTransitionEnd oTransitionEnd",hn="__overlayScrollbarsRO__",vn="os-",dn=vn+"html",pn=vn+"host",yn=pn+"-textarea",mn=pn+"-"+Zt+en+Et,gn=pn+"-"+Zt+tn+Et,wn=pn+"-transition",bn=pn+"-rtl",xn=pn+"-resize-disabled",Cn=pn+"-scrolling",On=pn+"-overflow",Mn=On+"-x",Sn=On+"-y",An=vn+"textarea",zn=An+"-cover",Hn=vn+"padding",Tn=vn+"viewport",En=Tn+"-native-scrollbars-invisible",kn=Tn+"-native-scrollbars-overlaid",In=vn+"content",Wn=vn+"content-arrange",Ln=vn+"content-glue",Pn=vn+"size-auto-observer",Fn=vn+"resize-observer",Nn=vn+"resize-observer-item",Dn=Nn+"-final",Rn=vn+"text-inherit",Bn=vn+Zt,jn=Bn+"-track",qn=jn+"-off",Un=Bn+"-handle",_n=Un+"-off",Qn=Bn+"-unusable",Vn=Bn+"-"+_t+Et,Xn=Bn+"-corner",Yn=Xn+"-resize",Jn=Yn+"-both",Kn=Yn+en,$n=Yn+tn,Gn=Bn+en,Zn=Bn+tn,er=vn+"dragging",tr=vn+"theme-none",nr={},rr=33,ir=11,or=[112,113,114,115,116,117,118,119,120,121,123,33,34,37,38,39,40,16,17,18,19,20,144],ar=[],sr={x:0,y:0},lr={w:0,h:0};if(wt.sleep=function(){N=!0},wt.update=function(e){if(e===_t){var t=oi(),n=ii();(t||n)&&ci(!1,n)}else"zoom"===e?ci(!0,!0):(e=N||e,N=!1,ci(!1,!1,e))},wt.options=function(e,t){if(c.isEmptyObject(e)||!c.isPlainObject(e)){if(c.type(e)===i.s){if(arguments.length>=2){var n={};return u.set(n,e,t,!0),ri(n),void ci()}return u.get(B,e)}return B}ri(e);var r=N||!1;N=!1,ci(),N=r},wt.destroy=function(){xt=!0,v.remove(wt),Cr(),pr($),Mt&&pr(K),$.remove(),G!==n&&G.remove(),te!==n&&te.remove(),Mt&&K.remove(),A?(fr(J,"mouseenter",Vr),fr(J,"mouseleave",Xr)):(J.off("mouseenter",Vr),J.off("mouseleave",Xr)),oe.remove(),le.remove(),ie&&ie.remove(),pt||Sr(),ne.contents().unwrap().unwrap().unwrap(),Ot&&V.removeClass(dn),Ct?(Y.off(Qt,Pr),Y.off("drop",Ir),Y.off("focus",Wr),Y.off("focusout",Lr),m>9||!y?Y.off("input",Tr):(Y.off(ln,Er),Y.off(cn,kr)),re.remove(),Y.removeClass(An).removeClass(Rn),Y.unwrap().removeAttr(o.s),J.remove()):(Y.removeClass(pn),J.removeClass(pn).removeClass(xn).removeClass(bn).removeClass(mn).removeClass(gn).removeClass(wn).removeClass(Cn).removeClass(On).removeClass(Mn).removeClass(Sn).removeClass(tr).removeClass(Ke)),l.rem(t);var e=j.callbacks.onDestroyed;for(var r in c.isFunction(e)&&wr(e),wt)delete wt[r];wt=n},wt.scroll=function(t,r,a,s){if(0===arguments.length||t===n){var l=At,u=zt,f=Je&&F&&p.i,h=Je&&F&&p.n,v=l.cs,d=l.csr,y=l.ms;return v=f?y-v:v,{x:{position:v*=h?-1:1,ratio:d=f?1-d:d,max:y*=h?-1:1,handleOffset:l.ho,handleLength:l.hl,handleLengthRatio:l.hlr,trackLength:l.tl,isRTL:F,isRTLNormalized:Je},y:{position:u.cs,ratio:u.csr,max:u.ms,handleOffset:u.ho,handleLength:u.hl,handleLengthRatio:u.hlr,trackLength:u.tl}}}var m,g=[Xt,Nt,"l"],w=[Yt,Lt,"t"],b=["+=","-=","*=","/="],x={},C=c.type(r)===i.o,O="end",M="begin",A={axis:"xy",block:[M,M],margin:[0,0,0,0]},z=[Xt,Yt,"xy","yx"],H=[M,O],T=t.hasOwnProperty("el"),E=T?t.el:t,k=E instanceof c,I=!k&&Kr(E),W=function(e,t){for(m=0;m0)t.x=e[0],t.y=e[1];else if(c.type(e)===i.s||c.type(e)===i.n)t.x=e,t.y=e;else if(c.type(e)===i.o){for(var n in e=c.extend({},e),m=0,e)e.hasOwnProperty(n)&&(m>2&&delete e[n],m++);var r=function(t){var n=t?g:w;for(m=0;m2){var y=r.substr(0,2);for(m=0;m/g,(d?"-":Ut)+Vt)).replace(/px/g,Ut)).replace(/%/g,h+f*(v&&p.n?-1:1)/100)).replace(/vw/g,h+Ht.w)).replace(/vh/g,h+Ht.h),a=e.parseInt(e.parseFloat(e.eval(r)).toFixed())}else c.type(r)===i.n&&(a=r);if(!isNaN(a)&&a!==n&&c.type(a)===i.n){var g=Je&&v,w=u*(g&&p.n?-1:1),x=g&&p.i,C=g&&p.n;switch(w=x?f-w:w,o){case"+=":s=w+a;break;case"-=":s=w-a;break;case"*=":s=w*a;break;case"/=":s=w/a;break;default:s=a}x&&(s=f-s),C&&(s*=-1),v&&p.n?(s=Math.max(f,s),s=Math.min(0,s)):(s=Math.min(f,s),s=Math.max(0,s)),s===u&&(s=n)}return s};if(k||I){var N=k?E:c(E);if(0===N.length)return;if(T){var D,R,B,j=t.axis,q=t.block,U=c.type(q),_=t.margin,Q=c.type(_);if(U===i.s)q=[q,q];else if(U===i.a)if((R=q.length)>2||R<1)q=n;else{for(D=!0,1===R&&(q[1]=M),m=0;m0||C){var fe={};if(ce&&(fe[nn]=x.x),ue&&(fe[rn]=x.y),C)ee.animate(fe,r);else{var he={duration:r,complete:s};if(c.type(a)===i.a){var ve={};ve[nn]=a[0],ve[rn]=a[1],he.specialEasing=ve}else he.easing=a;ee.animate(fe,he)}}else ce&&ee[nn](x.x),ue&&ee[rn](x.y)},wt.scrollStop=function(e,t,n){ee.stop(e,t,n)},wt.getElements=function(){return{target:Y[0],host:J[0],padding:Z[0],viewport:ee[0],content:ne[0],scrollbarHorizontal:{scrollbar:oe[0],track:ae[0],handle:se[0]},scrollbarVertical:{scrollbar:le[0],track:ce[0],handle:ue[0]},scrollbarCorner:ie}},wt.getState=function(e){var t=function(e){if(!c.isPlainObject(e))return e;var t=c.extend(!0,{},e);u.del(t,"c");var n=function(e,n){t.hasOwnProperty(e)&&(t[n]=t[e],delete t[e])};return n("w",Bt),n("h",jt),t},n={sleeping:t(N)||!1,autoUpdate:t(!rt),widthAuto:t(ye),heightAuto:t(me),padding:t(be),overflowAmount:t(Te),hideOverflow:t(pe),hasOverflow:t(de),contentScrollSize:t(he),viewportSize:t(Ht),hostSize:t(fe)};return c.type(e)===i.s?u.get(n,e):n},ui(t,f))return l.add(t,wt),wt;wt=n}function cr(){if(!N){var e=$[0],t={w:e[o.sW],h:e[o.sH]};if(bt){var n=mr(t,Ue);Ue=t,n&&ci(!0,!1)}else Ue=t}}function ur(e,t,n){e=e[0];for(var r=t.split(Gt),i=0;i9||!y){var f='">',v="",d="childNodes",g=Jt+Fn+f;g+=Jt+Nn+'" dir="ltr'+f,g+=Jt+Nn+f,g+=Jt+Dn+Kt,g+=v,g+=Jt+Nn+f,g+=Jt+Dn+'" style="width: 200%; height: 200%'+Kt,g+=v,g+=v,g+=v,e.prepend(g);var w,b,x,C,O=(e=e[0])[d][0][d][0],M=c(O[d][1]),S=c(O[d][0]),A=c(S[0][d][0]),H=O[o.oW],T=O[o.oH],E=2,k=h.nativeScrollbarSize,I=function(){S[nn](n)[rn](n),M[nn](n)[rn](n)},W=function(){b=0,w&&(H=x,T=C,r())},L=function(e){return x=O[o.oW],C=O[o.oH],w=x!=H||C!=T,e&&w&&!b?(s.cAF()(b),b=s.rAF()(W)):e||W(),I(),e&&(s.prvD(e),s.stpP(e)),!1},P={};P[Lt]=-(k.y+1)*E,P[Pt]=k.x*-E,P[Ft]=k.y*-E,P[Nt]=-(k.x+1)*E,c(O).css(P),S.on(Qt,L),M.on(Qt,L),c(e).on(u,function(){L(!1)});var N={};N[Bt]=n,N[jt]=n,A.css(N),I()}else{var D=Q[0],R=e;e=e[0];var B=D.attachEvent,j=typeof navigator===i.u||(navigator.userAgent.match(/Trident/)||navigator.userAgent.match(/Edge/));if(B)R.prepend(Jt+Fn+Kt),R.find($t+Fn).first()[0].attachEvent("onresize",r);else{var q=D.createElement(i.o);q.setAttribute("tabindex","-1"),q.setAttribute(o.c,Fn),q.onload=function(){var e=this.contentDocument.defaultView;e.addEventListener("resize",r),e.document.documentElement.style.display="none"},q.type="text/html",j&&R.prepend(q),q.data="about:blank",j||R.prepend(q),R.on(u,r)}}}if((e=c(e))[0]===$[0]){var U=function(){var t=J.css("direction");if(t!==Me){var r={},i=0;return"ltr"===t?(r[Nt]=0,r[Pt]=_t,i=n):(r[Nt]=_t,r[Pt]=0,i=p.n?-n:p.i?0:n),$.children().first().css(r),e.scrollLeft(i),e.scrollTop(n),Me=t,!0}return!1};U(),e.on(Qt,function(e){return U()&&ci(),s.prvD(e),s.stpP(e),!1})}}function pr(e){if(z){var t=e.contents()[0];t[hn].disconnect(),delete t[hn]}else e.children($t+Fn).first().remove()}function yr(e,t,r){return!0===r?r:t===n||e!==t}function mr(e,t,r,i,o){if(!0===o)return o;if(i===n&&o===n){if(!0===r)return r;r=n}return r=r===n?"w":r,i=i===n?"h":i,t===n||(e[r]!==t[r]||e[i]!==t[i])}function gr(e,t){return t===n||(e.t!==t.t||e.r!==t.r||e.b!==t.b||e.l!==t.l)}function wr(e,t){bt&&e.call(wt,t)}function br(e,t,r){r===n&&(r=[Ut,Ut,Ut,Ut]),e[t+Lt]=r[0],e[t+Pt]=r[1],e[t+Ft]=r[2],e[t+Nt]=r[3]}function xr(){it&&!rt&&(tt.observe(J[0],{attributes:!0,attributeOldValue:!0,attributeFilter:[o.i,o.c,o.s]}),nt.observe(Ct?Y[0]:ne[0],{attributes:!0,attributeOldValue:!0,subtree:!Ct,childList:!Ct,characterData:!Ct,attributeFilter:Ct?["wrap","cols","rows"]:[o.i,o.c,o.s]}),rt=!0)}function Cr(){it&&rt&&(tt.disconnect(),nt.disconnect(),rt=!1)}function Or(e){if(!N){var t=(e.originalEvent||e).touches!==n;(1===s.mBtn(e)||t)&&(rt&&(dt=!0,Cr()),sr=s.page(e),lr.w=J[0][o.oW]-(T?0:E),lr.h=J[0][o.oH]-(T?0:k),Q.on(un,Fr),Q.on(sn,Mr),Q.on(an,Sr),X.addClass(er),ie.setCapture&&ie.setCapture(),s.prvD(e),s.stpP(e))}}function Mr(e){e.originalEvent;var t=s.page(e),n={};(mt||yt)&&(n[Bt]=lr.w+t.x-sr.x),(gt||yt)&&(n[jt]=lr.h+t.y-sr.y),J.css(n),s.stpP(e)}function Sr(e){var t=e!==n;Q.off(un,Fr),Q.off(sn,Mr),Q.off(an,Sr),X.removeClass(er),ie.releaseCapture&&ie.releaseCapture(),t&&(dt&&xr(),wt.update(_t)),dt=!1}function Ar(){if(!N){var e=!We,t=Ht.w-(T||Se||!ye?0:k+W),n=Ht.h-(T||Se||!me?0:k+W),r={},i=ye||e,a=Y[0];r[Dt+Bt]=Ut,r[Dt+jt]=Ut,r[Bt]=_t,Y.css(r);var s=a[o.oW],l=i?Math.max(s,a[o.sW]-1):1;l+=ye?L+(T?0:e?0:E+I):0,r[Bt]=ye?l:Vt,r[jt]=_t,Y.css(r);var c=a[o.oH],u=Math.max(c,a[o.sH]-1);return r[Bt]=l,r[jt]=u,re.css(r),r[Dt+Bt]=t+(!T&&ye?E+I:0),r[Dt+jt]=n+(!T&&me?k+W:0),Y.css(r),{ow:s,oh:c,dw:l,dh:u}}}function zr(){var e=Y.prop("selectionStart");if(e!==n){for(var t=Y.val(),r=t.length,i=t.split("\n"),o=i.length,a=t.substr(0,e).split("\n"),s=0,l=0,c=a.length,u=a[a.length-1].length,f=0;fl&&(s=f+1,l=h)}return{cursorRow:c,cursorCol:u,rows:o,cols:l,wRow:s,pos:e,max:r}}}function Hr(e){for(var t=0;t-1&&ar.splice(n,1),0===ar.length&&(Ar(),wt.update(_t),clearInterval(ot))}}function Ir(){setTimeout(function(){Ar(),wt.update(_t)},50)}function Wr(){at=!0}function Lr(){at=!1,clearInterval(ot),ar=[],Ar(),wt.update(_t)}function Pr(e){return Y[nn](p.i&&Je?9999999:0),Y[rn](0),s.prvD(e),s.stpP(e),!1}function Fr(e){return s.prvD(e),!1}function Nr(){return Ee&&C.x&&C.y}function Dr(e,t,n){var r=e?mn:gn,i=e?oe:le;t?J.removeClass(r):J.addClass(r),n?i.removeClass(Qn):i.addClass(Qn)}function Rr(e,t){if(clearTimeout(st),e)oe.removeClass(Vn),le.removeClass(Vn);else{var n="active",r=function(){if(!vt){var e=se.hasClass(n)||ue.hasClass(n);e||!ut&&!ft||oe.addClass(Vn),e||!ut&&!ft||le.addClass(Vn)}};lt>0&&!0!==t?st=setTimeout(r,lt):r()}}function Br(e){var t={},n=Qr(e),r=Math.min(1,(fe[n._wh]-(Se?e?E:k:0))/he[n._wh]);t[n.wh]=Math.floor(100*r*1e5)/1e5+"%",Nr()||n.h.css(t),n.i.hl=n.h[0]["offset"+n.WH],n.i.hlr=r}function jr(e,t){var n=F&&e,r={},i=Qr(e),o=ee[0][Qt+i.WH]-ee[0]["client"+i.WH];p.n&&n&&(o*=-1);var a=t/o;a=isNaN(a)?0:Math.min(1,a),i.i.ms=o,i.i.cs=t,i.i.csr=a;var s=i.i.hl,l=i.t[0]["offset"+i.WH],c=(l-s)*a;if(c=isNaN(c)?0:c,n&&(p.n||!p.n&&!p.i)&&(c=l-s-c),c=Math.max(0,c),S){var u;n&&(c=-(l-s-c));var f="translate(",h="transform";u=e?f+c+"px, 0px)":f+"0px, "+c+"px)",r["-webkit-"+h]=u,r["-moz-"+h]=u,r["-ms-"+h]=u,r["-o-"+h]=u,r[h]=u}else r[i.lt]=c;Nr()||i.h.css(r),i.i.ho=c,i.i.tl=l}function qr(e,t){var n=t?"removeClass":"addClass",r=e?ce:ue,i=e?qn:_n;(e?ae:se)[n](i),r[n](i)}function Ur(){oe=c(Jt+Bn+Gt+Gn+Kt),ae=c(Jt+jn+Kt),se=c(Jt+Un+Kt),le=c(Jt+Bn+Gt+Zn+Kt),ce=c(Jt+jn+Kt),ue=c(Jt+Un+Kt),oe.append(ae),ae.append(se),le.append(ce),ce.append(ue),Z.after(le),Z.after(oe),M&&(oe.on(fn,function(e){e.target===oe[0]&&(Br(!0),jr(!0,ee[nn]()))}),le.on(fn,function(e){e.target===le[0]&&(Br(!1),jr(!1,ee[rn]()))})),_r(!0),_r(!1),ie=c(Jt+Gt+Xn+Kt),J.append(ie)}function _r(e){var t,r,i,o=Qr(e),a=o.xy,l=Qt+o.LT,c="active",u=1,f=function(){u=.5},h=function(){u=1},v=function(n){n.originalEvent;var i=o.i.tl,c=o.i.hl,u=o.i.ms*((c/2+s.page(n)[a]-r-c/2)/(i-c));u=isFinite(u)?u:0,F&&e&&(p.n||!p.n&&!p.i)&&(u*=-1),ee[l](t+u),A||s.prvD(n)},d=function(e){e=e||e.originalEvent,X.removeClass(er),o.h.removeClass(c),o.t.removeClass(c),o.s.removeClass(c),A?(fr(Q,sn,v),fr(Q,an,d),fr(Q,ln,y),fr(Q,cn,m),fr(Q,un,Fr)):(Q.off(sn,v),Q.off(an,d),Q.off(ln,y),Q.off(cn,m),Q.off(un,Fr)),h(),t=n,r=n,i!==n&&(wt.scrollStop(),clearTimeout(i),i=n);var a=J[0].getBoundingClientRect();e.clientX>=a.left&&e.clientX<=a.right&&e.clientY>=a.top&&e.clientY<=a.bottom||Xr(),ut&&Rr(!1)},y=function(e){16==e.keyCode&&f()},m=function(e){16==e.keyCode&&h()};o.h.on(on,function(i){if(!N){var u=(i.originalEvent||i).touches!==n;Nr()||!Xe||u&&!ht||(1===s.mBtn(i)||u)&&(t=(t=ee[l]())===n?0:t,(F&&e&&!p.n||!F)&&(t=t<0?0:t),r=s.page(i)[a],X.addClass(er),o.h.addClass(c),o.s.addClass(c),A?(ur(Q,un,Fr),ur(Q,sn,v),ur(Q,an,d)):(Q.on(un,Fr),Q.on(sn,v),Q.on(an,d)),s.prvD(i))}}),o.t.on(on,function(t){if(!N){var l=(t.originalEvent||t).touches!==n;if(!Nr()&&Ve&&(!l||ht)&&(1===s.mBtn(t)||l)){var h,v=Ht[o._wh],g=o.t.offset()[o.lt],w=!0;t.shiftKey&&f();var b=function(){var t=o.i.ho,a=o.i.hl,s=r-g,l=200*u,c=w?Math.max(333,l):l,f={},d=F&&e&&(!p.i&&!p.n||Je),y=t>s;d&&(y=t=s;d&&(m=h?t+a>=s:t<=s),m?(clearTimeout(i),wt.scrollStop(),i=n):i=setTimeout(b,c),w=!1};r=s.page(t)[a],X.addClass(er),o.t.addClass(c),o.s.addClass(c),A?(ur(Q,un,Fr),ur(Q,an,d),ur(Q,ln,y),ur(Q,cn,m)):(Q.on(un,Fr),Q.on(an,d),Q.on(ln,y),Q.on(cn,m)),b(),s.prvD(t)}}}).hover(function(){ut&&(vt=!0,Rr(!0))},function(){ut&&(vt=!1,Rr(!1))}),o.s.on(on,function(e){s.stpP(e)})}function Qr(e){return{wh:e?Bt:jt,WH:e?"Width":"Height",lt:e?Nt:Lt,LT:e?"Left":"Top",xy:e?Xt:Yt,XY:e?"X":"Y",_wh:e?"w":"h",_lt:e?"l":"t",t:e?ae:ce,h:e?se:ue,s:e?oe:le,i:e?At:zt}}function Vr(){ft&&Rr(!0)}function Xr(){ft&&!X.hasClass(er)&&Rr(!1)}function Yr(e){if(!N){var t=j.callbacks,r=t.onScrollStart,i=t.onScroll,o=t.onScrollStop;D!==n?clearTimeout(D):(ut&&Rr(!0),Nr()||J.addClass(Cn),c.isFunction(r)&&wr(r,e)),jr(!0,ee[nn]()),jr(!1,ee[rn]()),c.isFunction(i)&&wr(i,e),D=setTimeout(function(){Jr(e),c.isFunction(o)&&wr(o,e)},Tt)}}function Jr(){clearTimeout(D),D=n,ut&&Rr(!1),Nr()||J.removeClass(Cn)}function Kr(e){return typeof HTMLElement===i.o?e instanceof HTMLElement:e&&typeof e===i.o&&null!==e&&1===e.nodeType&&typeof e.nodeName===i.s}function $r(e,t,r,o){var a,s,l,f,h,v={n:t,s:!1,v:n,p:n},d=i.u,p=u.has(e,t),y=u.get(e,t),m=!1,g=!0!==p,w="*",b=!1;for(c.type(r)!==i.a&&(r=[r]),h=r.length,s=0;s1){var C=0;for(f=0;f1)break}1===C&&(b=!0)}else b=!0;x===n&&(m=!0)}if(g&&!1===p&&m&&(g=!1),!g){a=y,d=c.type(a);var M=function(e){var t=c.type(e);return t===d&&(t!==i.s||(!!b||a===e))&&(v.s=!0,v.v=a,v.p=a,!0)};for(s=0;s-1&&o.splice(u,1);for(var f=0;f0&&bt&&i-q0?J.addClass(ce):J.addClass(tr)),ot&&(!0===it?(Cr(),v.add(wt)):null===it&&y?(Cr(),v.add(wt)):(v.remove(wt),xr())),Ue)if(qe)if(G===n&&(G=c(Jt+Ln+Kt),Z.before(G)),Mt)K.show();else{K=c(Jt+Pn+Kt),G.before(K);var Tt={w:-1,h:-1};dr(K,function(){var e={w:K[0][o.oW],h:K[0][o.oH]};mr(e,Tt)&&(bt&&me&&e.h>0||ye&&e.w>0?ci():(bt&&!me&&0===e.h||!ye&&0===e.w)&&ci()),Tt=e}),Mt=!0,null!==w&&K.css(jt,w+"(100% + 1px)")}else Mt&&K.hide();r&&($.find("*").trigger(Qt),Mt&&K.find("*").trigger(Qt));var Et,$t=J.css("direction"),Gt=yr($t,Oe,r),Zt=J.css("box-sizing"),en=yr(Zt,we,r),tn={c:r,t:ai(J.css(It+Lt)),r:ai(J.css(It+Pt)),b:ai(J.css(It+Ft)),l:ai(J.css(It+Nt))};try{Et=Mt?K[0].getBoundingClientRect():null}catch(Pi){return}T="border-box"===Zt;var an=(F="rtl"===$t)?Nt:Pt,sn=F?Pt:Nt,ln=J[0],cn=Z[0],un=!1,fn=!(!Mt||"none"===J.css(qt))&&(0===Math.round(Et.right-Et.left)&&(!!De||ln[o.cW]-E>0));if(qe&&!fn){var hn=ln[o.oW],vn=G.css(Bt);G.css(Bt,_t);var dn=ln[o.oW];G.css(Bt,vn),(un=hn!==dn)||(G.css(Bt,hn+1),dn=ln[o.oW],G.css(Bt,vn),un=hn!==dn)}var pn=(fn||un)&&qe,yn=yr(pn,ye,r),mn=!pn&&ye,gn=!!Mt&&0===Math.round(Et.bottom-Et.top),wn=yr(gn,me,r),An=!gn&&me,zn="-"+Bt,Hn=pn&&T||!T,Tn=gn&&T||!T,En={c:r,t:Tn?ai(J.css(Wt+Lt+zn)):0,r:Hn?ai(J.css(Wt+Pt+zn)):0,b:Tn?ai(J.css(Wt+Ft+zn)):0,l:Hn?ai(J.css(Wt+Nt+zn)):0},kn={c:r,t:ai(J.css(kt+Lt)),r:ai(J.css(kt+Pt)),b:ai(J.css(kt+Ft)),l:ai(J.css(kt+Nt))},In={h:String(J.css(Rt+jt)),w:String(J.css(Rt+Bt))},Fn={},Nn={};if(E=tn.l+tn.r,k=tn.t+tn.b,tn.c=gr(tn,be),I=En.l+En.r,W=En.t+En.b,En.c=gr(En,xe),L=kn.l+kn.r,P=kn.t+kn.b,kn.c=gr(kn,Ce),In.ih=parseInt(In.h),In.iw=parseInt(In.w),In.ch=In.h.indexOf("px")>-1,In.cw=In.w.indexOf("px")>-1,In.c=mr(In,ge,r),Oe=$t,we=Zt,ye=pn,me=gn,be=tn,xe=En,Ce=kn,ge=In,Gt&&Mt&&K.css(qt,sn),tn.c||Gt||Re||yn||wn||en||Ue){var Dn={},Rn={};br(Nn,kt,[-tn.t,-tn.r,-tn.b,-tn.l]),De?(br(Dn,Ut,[tn.t,tn.r,tn.b,tn.l]),br(Ct?Rn:Fn,It)):(br(Dn,Ut),br(Ct?Rn:Fn,It,[tn.t,tn.r,tn.b,tn.l])),Z.css(Dn),Y.css(Rn)}Ht={w:cn[o.oW],h:cn[o.oH]};var Bn=!!Ct&&Ar();if(gn&&(wn||Re||en||In.c||tn.c||En.c)?(In.cw&&(Fn[Rt+jt]=In.ch?In.ih-(De?k:0)+(T?-W:k):Ut),Fn[jt]=_t):(wn||Re)&&(Fn[Rt+jt]=Ut,Fn[jt]=Vt),pn&&(yn||Re||en||In.c||tn.c||En.c||Gt)?(In.cw&&(Fn[Rt+Bt]=In.cw?In.iw-(De?E:0)+(T?-I:E)+(C.y?O.y:0):Ut),Fn[Bt]=_t,Nn[Rt+Bt]=Vt):(yn||Re)&&(Fn[Rt+Bt]=Ut,Fn[Bt]=Vt,Fn[qt]=Ut,Nn[Rt+Bt]=Ut),pn&&(In.cw||(Fn[Rt+Bt]=Ut),Nn[Bt]=Ct&&dt?Bn.dw:_t,Fn[Bt]=_t,Fn[qt]=sn),gn&&(In.ch||(Fn[Rt+jt]=Ut),Nn[jt]=Ct?At?Bn.dh:_t:ne[0][o.cH]),qe&&G.css(Nn),ne.css(Fn),Fn={},Nn={},de=de||{x:!1,y:!1},e||t||Gt||en||Re||yn||pn||wn||gn||In.c||nt||vt||je||Pe||Q||xt||zt||Ne||Re||xt||zt||r){var jn="overflow",qn=jn+"-x",Un=jn+"-y",_n="hidden",Qn="visible",Vn=!!H&&(C.x||C.y||Ht.w0&&(Nn[Bt]=Math.max(1,Nn[Bt]),Nn[jt]=Math.max(1,Nn[jt])),Ct&&re.css(Sr),G.css(Nn)}pn&&(Fn[Bt]=Vt),!pn||T||rt||(Fn[qt]="none"),ne.css(Fn),Fn={};var Hr=er.getBoundingClientRect(),Tr={w:Math.max(er[o.sW],ir[o.sW]),h:Math.max(er[o.sH],ir[o.sH])};if(Vn&&ne.css(jn,Ut),Hr.width!==n){var Er=Hr.width,kr=Hr.height,Ir=.001;Tr.w+=ai(Er+Ir)-Er,Tr.h+=ai(kr+Ir)-kr}Tr.c=t=mr(Tr,he,r),he=Tr,e=mr(lr={w:ln[o.cW],h:ln[o.cH]},fe),fe=lr,Ht={w:cn[o.oW],h:cn[o.oH]};var Wr={x:"v-s"===st.x,y:"v-s"===st.y},Lr={x:"v-h"===st.x,y:"v-h"===st.y},Pr={x:"s"===st.x,y:"s"===st.y},Fr={x:Math.max(0,Tr.w-lr.w+(De?E:0)),y:Math.max(0,Tr.h-lr.h+(De?k:0))},Nr=Ct&&(0===Ht.w||0===Ht.h);Nr&&(Fr.x=0,Fr.y=0);var Ur={x:Fr.x>0,y:Fr.y>0},_r={x:Ur.x,y:Ur.y};(Wr.x||Lr.x)&&(_r.x=Ur.y&&!Wr.y&&!Lr.y),(Wr.y||Lr.y)&&(_r.y=Ur.x&&!Wr.x&&!Lr.x),_r.xs=!!_r.x&&(Pr.x||Wr.x),_r.ys=!!_r.y&&(Pr.y||Wr.y);var Qr={x:Ur.x&&_r.xs,y:Ur.y&&_r.ys},Yr=Te;if(Fr.c=mr(Fr,Te,Xt,Yt,r),Te=Fr,Ur.c=mr(Ur,de,Xt,Yt,r),de=Ur,_r.c=mr(_r,pe,Xt,Yt,r),pe=_r,C.x||C.y){var Jr=r,Kr={};if((Ur.x||Ur.y)&&(Kr.w=C.y&&Ur.y?Tr.w+O.y:Ut,Kr.h=C.x&&Ur.x?Tr.h+O.x:Ut,Jr=yr(Kr,ve,r),ve=Kr),Ur.c||_r.c||Tr.c||Gt||yn||wn||pn||gn||nt){var $r="px solid transparent";Fn[Wt+sn]=Ut,Fn[kt+sn]=Ut,C.x&&Ur.x&&_r.xs?(gn&&(Fn[kt+Ft]=tt?Ut:O.x),Fn[Wt+Ft]=gn||tt?Ut:O.x+$r):(Kr.h=Ut,Jr=!0,Fn[Wt+Ft]=Ut,Fn[kt+Ft]=Ut),C.y&&Ur.y&&_r.ys?(pn&&(Fn[kt+an]=tt?Ut:O.y),Fn[Wt+an]=tt?Ut:O.y+$r):(Kr.w=Ut,Jr=!0,Fn[Wt+an]=Ut,Fn[kt+an]=Ut)}if(tt&&(Kr.w=Ut,Kr.h=Ut,Jr=!0),Jr){var Zr={};Zr[Bt]=_r.y?Kr.w:Ut,Zr[jt]=_r.x?Kr.h:Ut,te===n&&(te=c(Jt+Wn+Kt),ee.prepend(te)),te.css(Zr)}ne.css(Fn)}var ei={};Dn={};if(e||Ur.c||_r.c||Tr.c||vt||en||nt||Gt||je||wn){ei[sn]=Ut;var ti=function(){ei[Ft]=Ut,St.h=0},ni=function(){ei[an]=Ut,St.w=0};if(Ur.x&&_r.xs?(ei[qn]=Qt,tt?ti():(ei[Ft]=-(C.x?O.x:b.x),St.h=C.x?O.y:0)):(ei[qn]=Ut,ti()),Ur.y&&_r.ys?(ei[Un]=Qt,tt?ni():(ei[an]=-(C.y?O.y:b.y),St.w=C.y?O.x:0)):(ei[Un]=Ut,ni()),(Ht.h-1,Li=Ii.y>-1;(Wi||Li)&&(Li&&ee[rn](Ii.y),Wi&&(F&&Je&&p.i?ee[nn](0):ee[nn](Ii.x)))}Le=Oi}else Ct||(F&&p.i&&C.y&&Ur.x&&Je&&(u.l+=St.w),ee[nn](u.l),ee[rn](u.t));Gt&&c.isFunction(D)&&wr(D,{isRTL:F,dir:$t}),e&&c.isFunction(B)&&wr(B,{width:fe.w,height:fe.h}),t&&c.isFunction(R)&&wr(R,{width:he.w,height:he.h}),(Ur.c||_r.c)&&c.isFunction(S)&&wr(S,{x:Ur.x,y:Ur.y,xScrollable:_r.xs,yScrollable:_r.ys,clipped:_r.x||_r.y}),Fr.c&&c.isFunction(z)&&wr(z,{x:Fr.x,y:Fr.y})}Ot&&(Ur.c||et.c)&&(et.f||Gr(),C.y&&Ur.x&&ne.css(Dt+Bt,et.w+O.y),C.x&&Ur.y&&ne.css(Dt+jt,et.h+O.x),et.c=!1),vr($),vr(K),c.isFunction(M)&&wr(M,{forced:r})}}function ui(e,t){R=h.defaultOptions,g=h.nativeScrollbarStyling,b=c.extend(!0,{},h.nativeScrollbarSize),C=c.extend(!0,{},h.nativeScrollbarIsOverlaid),O=c.extend(!0,{},h.overlayScrollbarDummySize),p=c.extend(!0,{},h.rtlScrollBehavior),ri(c.extend(!0,{},R,t));var n,r=j.callbacks;if(C.x&&C.x&&!j.nativeScrollbarsOverlaid.initialize){var i=r.onInitializationWithdrawn;return c.isFunction(i)&&wr(i),!1}if(w=h.cssCalc,m=h.msie,y=h.autoUpdateRecommended,M=h.supportTransition,S=h.supportTransform,A=h.supportPassiveEvents,z=h.supportResizeObserver,it=h.supportMutationObserver,H=h.restrictedMeasuring,Q=c(e.ownerDocument),_=c(Q[0].defaultView||Q[0].parentWindow),V=Q.find("html").first(),X=V.find("body").first(),Y=c(e),Ct=Y.is("textarea"),(Ot=Y.is("body"))&&((n={}).l=Math.max(Y[nn](),V[nn](),_[nn]()),n.t=Math.max(Y[rn](),V[rn](),_[rn]())),Ct){Y.wrap(Jt+yn+Kt),Y.addClass(An).addClass(Rn),J=Y.parent();var a={};j.sizeAutoCapable||(a[Bt]=Y.css(Bt),a[jt]=Y.css(jt)),J.css(a),J.wrapInner(Jt+In+Gt+Rn+Kt).wrapInner(Jt+Tn+Gt+Rn+Kt).wrapInner(Jt+Hn+Gt+Rn+Kt),ne=J.find($t+In).first(),ee=J.find($t+Tn).first(),Z=J.find($t+Hn).first(),re=c(Jt+zn+Kt),ne.prepend(re),Y.on(Qt,Pr),Y.on("drop",Ir),Y.on("focus",Wr),Y.on("focusout",Lr),m>9||!y?Y.on("input",Tr):(Y.on(ln,Er),Y.on(cn,kr))}else Y.addClass(pn),(J=Y).wrapInner(Jt+In+Kt).wrapInner(Jt+Tn+Kt).wrapInner(Jt+Hn+Kt),ne=J.find($t+In).first(),ee=J.find($t+Tn).first(),Z=J.find($t+Hn).first(),ne.on(fn,function(e){!0!==ke&&si((e=e.originalEvent||e).propertyName)&&ci(_t)});if(Ur(),A?ur(ee,Qt,Yr):ee.on(Qt,Yr),g&&(C.x&&C.y?ee.addClass(kn):ee.addClass(En)),it){var l,u=s.mO(),f=s.now();tt=new u(function(e){if(bt&&!N){var t=!1;c.each(e,function(){var e=this,n=this.target,r=e.attributeName;if(t=r===o.c?ti(e.oldValue,n.className):r!==o.s||e.oldValue!==n.style.cssText)return!1}),t&&wt.update(_t)}}),nt=new u(function(e){if(bt&&!N){for(var t=!1,n=0;nir||!i?o():l=setTimeout(o,ir)}}})}Ot&&(V.addClass(dn),ee[nn](n.l),ee[rn](n.t)),$=c(Jt+"os-resize-observer-host"+Kt),J.prepend($),dr($,cr),cr(),wt.update(_t),setTimeout(function(){M&&!xt&&J.addClass(wn)},333),bt=!0;var v=r.onInitialized;return c.isFunction(v)&&wr(v),bt}}e[r]=function(e,t){if(0===arguments.length)return this;d();var r,i=[];return c.isPlainObject(t)?e&&e.length?e.length>1?(c.each(e,function(){(r=this)!==n&&i.push(m(r,t,f,h))}),i):m(e[0],t,f,h):m(e,t,f,h):e?e.length&&e.length>0?e.length>1?(c.each(e,function(){r=l.get(this),"!"===t?r!==n&&i.push(r):i.push(r)}),i):l.get(e[0]):l.get(e):void 0},e[r].globals=function(){d();var e=c.extend(!0,{},f);return delete e.msie,e},e[r].defaultOptions=function(e){d();var t=f.defaultOptions;if(e===n)return c.extend(!0,{},t);f.defaultOptions=c.extend(!0,{},t,e)}}(a,l,s,c),e.jQuery);return u&&u.fn&&(u.fn.overlayScrollbars=function(t){var n=this;return u.isPlainObject(t)?(u.each(n,function(){e[r](this,t)}),n):e[r](n,t)}),e[r]}); \ No newline at end of file diff --git a/js/jquery.overlayScrollbars.js b/js/jquery.overlayScrollbars.js index eb5097e..fb1e3f9 100644 --- a/js/jquery.overlayScrollbars.js +++ b/js/jquery.overlayScrollbars.js @@ -2,13 +2,13 @@ * OverlayScrollbars * https://github.com/KingSora/OverlayScrollbars * - * Version: 1.2.3 + * Version: 1.3.0 * * Copyright KingSora. * https://github.com/KingSora * * Released under the MIT license. - * Date: 02.02.2018 + * Date: 26.02.2018 */ (function (global, factory) { @@ -18,16 +18,36 @@ module.exports = factory(global, global.document, undefined, require('jquery')); else factory(global, global.document, undefined, global.jQuery); -}(typeof window !== "undefined" ? window : this, (function(window, document, undefined, jQuery) { +}(typeof window !== 'undefined' ? window : this, (function(window, document, undefined, jQuery) { 'use-strict'; - var PLUGINNAME = "OverlayScrollbars"; + var PLUGINNAME = 'OverlayScrollbars'; + + var TYPES = { + o : 'object', + f : 'function', + a : 'array', + s : 'string', + n : 'number', + u : 'undefined' + }; + var WORDING = { + c : 'class', + s : 'style', + i : 'id', + oH : 'offsetHeight', + cH : 'clientHeight', + sH : 'scrollHeight', + oW : 'offsetWidth', + cW : 'clientWidth', + sW : 'scrollWidth' + }; var COMPATIBILITY = { /** * Gets the current window width. * @returns {Number|number} The current window width in pixel. */ wW: function() { - return window.innerWidth || document.documentElement.clientWidth || document.body.clientWidth; + return window.innerWidth || document.documentElement[WORDING.cW] || document.body[WORDING.cW]; }, /** @@ -35,7 +55,7 @@ * @returns {Number|number} The current window height in pixel. */ wH: function() { - return window.innerHeight || document.documentElement.clientHeight || document.body.clientHeight; + return window.innerHeight || document.documentElement[WORDING.cH] || document.body[WORDING.cH]; }, /** @@ -158,6 +178,25 @@ return (e.button & 1 ? 1 : (e.button & 2 ? 3 : (e.button & 4 ? 2 : 0))); else return e.which; + }, + + bind: function(func, oThis) { + if (typeof func !== TYPES.f) { + throw "Can't bind function!"; + // closest thing possible to the ECMAScript 5 + // internal IsCallable function + //throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable'); + } + + var aArgs = Array.prototype.slice.call(arguments, 2); + var fNOP = function() {}; + var fBound = function() { return func.apply(this instanceof fNOP ? this : oThis, aArgs.concat(Array.prototype.slice.call(arguments))); }; + + if (func.prototype) + fNOP.prototype = func.prototype; // Function.prototype doesn't have a prototype property + fBound.prototype = new fNOP(); + + return fBound; } }; var HELPER = (function(jQuery) { @@ -247,27 +286,26 @@ * @returns {boolean|string} True if property found, false or string otherwise. A string indicates where the property path couldn't be resolved anymore. */ function _getPropertyByStringMaster(object, propertyString, propertyStringProgress, callbackOnProperty, callbackOnParentObject) { - var strFunc = 'function'; - var strObject = 'object'; var found = false; + propertyStringProgress = propertyStringProgress === undefined ? '' : propertyStringProgress; - if (typeof propertyString !== 'string') + if (typeof propertyString !== TYPES.s) return found; if (propertyString.length === 0) return found; - if (propertyStringProgress === "") { + if (propertyStringProgress === '') { var nameSplit = propertyString.split('.'); var currObj = object; - var nameProgression = ""; + var nameProgression = ''; var pathIsInvalid = false; for (var i = 0; i < nameSplit.length; i++) { var currSplit = nameSplit[i]; currObj = currObj[currSplit]; nameProgression += currSplit + '.'; - if (helper.type(currObj) !== strObject && i + 1 !== nameSplit.length) { + if (helper.type(currObj) !== TYPES.o && i + 1 !== nameSplit.length) { pathIsInvalid = true; break; } @@ -279,15 +317,15 @@ for (var prop in object) { if (object.hasOwnProperty(prop)) { var isSearchedProperty = (propertyStringProgress + prop) === propertyString; - if (helper.type(object[prop]) === strObject && !isSearchedProperty) { + if (helper.type(object[prop]) === TYPES.o && !isSearchedProperty) { found = _getPropertyByStringMaster(object[prop], propertyString, propertyStringProgress + prop + '.', callbackOnProperty, callbackOnParentObject); - if (typeof callbackOnParentObject === strFunc) + if (typeof callbackOnParentObject === TYPES.f) callbackOnParentObject(object, prop); if (found) break; } else if (isSearchedProperty) { - if (typeof callbackOnProperty === strFunc) + if (typeof callbackOnProperty === TYPES.f) callbackOnProperty(object, prop); found = true; break; @@ -296,7 +334,7 @@ } return found; - }; + } return { /** @@ -343,7 +381,7 @@ var obj = {}; var tmp = obj; for (var i = 0; i < propertyPathSplits.length; i++) { - var value = i === propertyPathSplits.length - 1 ? propertyValue : {}; + var value = i === propertyPathSplits.length - 1 ? propertyValue : { }; tmp = tmp[propertyPathSplits[i]] = value; } helper.extend(true, object, obj); @@ -444,41 +482,60 @@ _base.autoUpdateLoop = false; _base.autoUpdateRecommended = compatibility.mO() === undefined; var bodyElement = helper('body'); - var scrollbarDummyElement = helper('
'); + var scrollbarDummyElement = helper('
'); var nativeScrollbarSize = (function() { bodyElement.append(scrollbarDummyElement); var strOverflow = 'overflow'; + var strHidden = 'hidden'; var scrollbarDummyElement0 = scrollbarDummyElement[0]; var dummyContainerChild = helper(scrollbarDummyElement.children('div').first()); - var IEBUGFIX = scrollbarDummyElement0.offsetHeight; //IE9 causes a bug where offsetHeight is zero for no reason + var IEBUGFIX = scrollbarDummyElement0[WORDING.oH]; //IE9 causes a bug where offsetHeight is zero for no reason var scrollbarSize; if(IEBUGFIX === 0) scrollbarDummyElement.hide().show(); - var scrollbarSize = { - x: scrollbarDummyElement0.offsetHeight - scrollbarDummyElement0.clientHeight, - y: scrollbarDummyElement0.offsetWidth - scrollbarDummyElement0.clientWidth + scrollbarSize = { + x: scrollbarDummyElement0[WORDING.oH] - scrollbarDummyElement0[WORDING.cH], + y: scrollbarDummyElement0[WORDING.oW] - scrollbarDummyElement0[WORDING.cW] }; - scrollbarDummyElement.addClass('os-viewport-native-scrollbars-invisible'); - scrollbarDummyElement.css(strOverflow, 'hidden').hide().css(strOverflow, 'scroll').show(); //fix opera bug: scrollbar styles will only appear if overflow value is scroll or auto during the activation of the style. - _base.nativeScrollbarStyling = (scrollbarDummyElement0.offsetHeight - scrollbarDummyElement0.clientHeight) === 0 && (scrollbarDummyElement0.offsetWidth - scrollbarDummyElement0.clientWidth) === 0; - scrollbarDummyElement.css({ 'overflow-y' : 'hidden', 'direction' : 'rtl' }).scrollLeft(0); - var dummyContainerOffset = scrollbarDummyElement.offset(); - var dummyContainerChildOffset = dummyContainerChild.offset(); - scrollbarDummyElement.scrollLeft(999); - var dummyContainerScrollOffsetAfterScroll = dummyContainerChild.offset(); - _base.rtlScrollBehavior = { - //origin direction = determines if the zero scroll position is on the left or right side - //'i' means 'invert' (i === true means that the axis must be inverted to be correct) - //true = on the left side - //false = on the right side - i : dummyContainerOffset.left === dummyContainerChildOffset.left, - //negative = determines if the maximum scroll is positive or negative - //'n' means 'negate' (n === true means that the axis must be negated to be correct) - //true = negative - //false = positive - n : dummyContainerChildOffset.left - dummyContainerScrollOffsetAfterScroll.left === 0 - }; - scrollbarDummyElement.removeAttr('style').remove(); + //https://bugzilla.mozilla.org/show_bug.cgi?id=1439305 + _base.restrictedMeasuring = (function() { + scrollbarDummyElement.css(strOverflow, strHidden); + var scrollSize = { + w : scrollbarDummyElement0[WORDING.sW], + h : scrollbarDummyElement0[WORDING.sH] + }; + scrollbarDummyElement.css(strOverflow, 'visible'); + var scrollSize2 = { + w : scrollbarDummyElement0[WORDING.sW], + h : scrollbarDummyElement0[WORDING.sH] + }; + return (scrollSize.w - scrollSize2.w) !== 0 || (scrollSize.h - scrollSize2.h) !== 0; + })(); + _base.nativeScrollbarStyling = (function() { + scrollbarDummyElement.addClass('os-viewport-native-scrollbars-invisible'); + scrollbarDummyElement.css(strOverflow, strHidden).hide().css(strOverflow, 'scroll').show(); //fix opera bug: scrollbar styles will only appear if overflow value is scroll or auto during the activation of the style. + return (scrollbarDummyElement0[WORDING.oH] - scrollbarDummyElement0[WORDING.cH]) === 0 && (scrollbarDummyElement0[WORDING.oW] - scrollbarDummyElement0[WORDING.cW]) === 0; + })(); + _base.rtlScrollBehavior = (function() { + scrollbarDummyElement.css({ 'overflow-y' : strHidden, 'direction' : 'rtl' }).scrollLeft(0); + var dummyContainerOffset = scrollbarDummyElement.offset(); + var dummyContainerChildOffset = dummyContainerChild.offset(); + scrollbarDummyElement.scrollLeft(999); + var dummyContainerScrollOffsetAfterScroll = dummyContainerChild.offset(); + return { + //origin direction = determines if the zero scroll position is on the left or right side + //'i' means 'invert' (i === true means that the axis must be inverted to be correct) + //true = on the left side + //false = on the right side + i : dummyContainerOffset.left === dummyContainerChildOffset.left, + //negative = determines if the maximum scroll is positive or negative + //'n' means 'negate' (n === true means that the axis must be negated to be correct) + //true = negative + //false = positive + n : dummyContainerChildOffset.left - dummyContainerScrollOffsetAfterScroll.left === 0 + }; + })(); + scrollbarDummyElement.removeAttr(WORDING.s).remove(); return scrollbarSize; })(); var nativeScrollbarIsOverlaid = { @@ -552,33 +609,6 @@ } _base.supportTransform = detectCSSFeature("transform"); _base.supportTransition = detectCSSFeature("transition"); - if (!Function.prototype.bind) { - Function.prototype.bind = function(oThis) { - if (typeof this !== 'function') { - // closest thing possible to the ECMAScript 5 - // internal IsCallable function - throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable'); - } - - var aArgs = Array.prototype.slice.call(arguments, 1), - fToBind = this, - fNOP = function() {}, - fBound = function() { - return fToBind.apply(this instanceof fNOP - ? this - : oThis, - aArgs.concat(Array.prototype.slice.call(arguments))); - }; - - if (this.prototype) { - // Function.prototype doesn't have a prototype property - fNOP.prototype = this.prototype; - } - fBound.prototype = new fNOP(); - - return fBound; - }; - } //passive event support var supportsPassive = false; try { @@ -641,8 +671,8 @@ bodyElement.append(scrollbarDummyElement); var measure = scrollbarDummyElement[0]; _base.nativeScrollbarSize = { - x: measure.offsetHeight - measure.clientHeight, - y: measure.offsetWidth - measure.clientWidth + x: measure[WORDING.oH] - measure[WORDING.cH], + y: measure[WORDING.oW] - measure[WORDING.cW] }; scrollbarDummyElement.remove(); helper.each(instances.all(), function () { @@ -798,6 +828,7 @@ var _supportTransform; var _supportPassiveEvents; var _supportResizeObserver; + var _restrictedMeasuring; var _isBorderBox; var _paddingX; var _paddingY; @@ -839,8 +870,6 @@ var _strScrollbar = 'scrollbar'; var _strMinusHorizontal = '-horizontal'; var _strMinusVertical = '-vertical'; - var _strNumber = 'number'; - var _strString = 'string'; var _strScrollLeft = _strScroll + 'Left'; var _strScrollTop = _strScroll + 'Top'; var _strMouseTouchDownEvent = 'mousedown touchstart'; @@ -850,7 +879,7 @@ var _strKeyUpEvent = 'keyup'; var _strSelectStartEvent = 'selectstart'; var _strTransitionEndEvent = 'transitionend webkitTransitionEnd oTransitionEnd'; - var _strResizeObserverProperty = '~_overlayScrollbarsRO_~'; + var _strResizeObserverProperty = '__overlayScrollbarsRO__'; //class names: var _cassNamesPrefix = 'os-'; @@ -904,7 +933,7 @@ //update var _lastUpdateTime; - var _swallowedUpdateParams = {}; + var _swallowedUpdateParams = { }; var _swallowedUpdateTimeout; var _swallowUpdateLag = 33; @@ -1029,8 +1058,8 @@ return; var measureElement = _sizeObserverElement[0]; var hostSize = { - w: measureElement.scrollWidth, - h: measureElement.scrollHeight + w: measureElement[WORDING.sW], + h: measureElement[WORDING.sH] }; if (_initialized) { var changed = checkCacheDouble(hostSize, _hostElementSizeChangeDetectedCache); @@ -1155,8 +1184,8 @@ var shrinkElement = helper(observerElement[strChildNodes][1]); var expandElement = helper(observerElement[strChildNodes][0]); var expandElementChild = helper(expandElement[0][strChildNodes][0]); - var widthCache = observerElement.offsetWidth; - var heightCache = observerElement.offsetHeight; + var widthCache = observerElement[WORDING.oW]; + var heightCache = observerElement[WORDING.oH]; var isDirty; var rAFId; var currWidth; @@ -1165,8 +1194,8 @@ var nativeScrollbarSize = globals.nativeScrollbarSize; //care don't make changes to this object!!! var reset = function () { /* - var sizeResetWidth = observerElement.offsetWidth + nativeScrollbarSize.x * factor + nativeScrollbarSize.y * factor + _overlayScrollbarDummySize.x + _overlayScrollbarDummySize.y; - var sizeResetHeight = observerElement.offsetHeight + nativeScrollbarSize.x * factor + nativeScrollbarSize.y * factor + _overlayScrollbarDummySize.x + _overlayScrollbarDummySize.y; + var sizeResetWidth = observerElement[WORDING.oW] + nativeScrollbarSize.x * factor + nativeScrollbarSize.y * factor + _overlayScrollbarDummySize.x + _overlayScrollbarDummySize.y; + var sizeResetHeight = observerElement[WORDING.oH] + nativeScrollbarSize.x * factor + nativeScrollbarSize.y * factor + _overlayScrollbarDummySize.x + _overlayScrollbarDummySize.y; var expandChildCSS = {}; expandChildCSS[_strWidth] = sizeResetWidth; expandChildCSS[_strHeight] = sizeResetHeight; @@ -1189,8 +1218,8 @@ callback(); }; var onScroll = function (event) { - currWidth = observerElement.offsetWidth; - currHeight = observerElement.offsetHeight; + currWidth = observerElement[WORDING.oW]; + currHeight = observerElement[WORDING.oH]; isDirty = currWidth != widthCache || currHeight != heightCache; if (event && isDirty && !rAFId) { @@ -1233,15 +1262,15 @@ var JQelement = targetElement; targetElement = targetElement[0]; var attachEvent = doc.attachEvent; - var isIE = typeof navigator !== 'undefined' ? navigator.userAgent.match(/Trident/) || navigator.userAgent.match(/Edge/) : true; + var isIE = typeof navigator !== TYPES.u ? navigator.userAgent.match(/Trident/) || navigator.userAgent.match(/Edge/) : true; if (attachEvent) { JQelement.prepend(_strDivBegin + _classNameResizeObserverElement + _strDivEnd); JQelement.find(_strDot + _classNameResizeObserverElement).first()[0].attachEvent('onresize', callback); } else { - var obj = doc.createElement('object'); + var obj = doc.createElement(TYPES.o); obj.setAttribute('tabindex', '-1'); - obj.setAttribute('class', _classNameResizeObserverElement); + obj.setAttribute(WORDING.c, _classNameResizeObserverElement); obj.onload = function () { var wnd = this.contentDocument.defaultView; wnd.addEventListener('resize', callback); @@ -1377,7 +1406,8 @@ * @param args The args with which the callback shall be called. */ function callCallback(callback, args) { - callback.call(_base, args); + if(_initialized) + callback.call(_base, args); } /** @@ -1405,7 +1435,7 @@ _mutationObserverHost.observe(_hostElement[0], { attributes: true, attributeOldValue: true, - attributeFilter: ['id', 'class', 'style'] + attributeFilter: [WORDING.i, WORDING.c, WORDING.s] }); _mutationObserverContent.observe(_isTextarea ? _targetElement[0] : _contentElement[0], { @@ -1414,7 +1444,7 @@ subtree: !_isTextarea, childList: !_isTextarea, characterData: !_isTextarea, - attributeFilter: _isTextarea ? ['wrap', 'cols', 'rows'] : ['id', 'class', 'style'] + attributeFilter: _isTextarea ? ['wrap', 'cols', 'rows'] : [WORDING.i, WORDING.c, WORDING.s] }); _mutationObserverConnected = true; @@ -1452,8 +1482,8 @@ _resizeDragStartPosition = compatibility.page(event); - _resizeDragStartSize.w = _hostElement[0].offsetWidth - (!_isBorderBox ? _paddingX : 0); - _resizeDragStartSize.h = _hostElement[0].offsetHeight - (!_isBorderBox ? _paddingY : 0); + _resizeDragStartSize.w = _hostElement[0][WORDING.oW] - (!_isBorderBox ? _paddingX : 0); + _resizeDragStartSize.h = _hostElement[0][WORDING.oH] - (!_isBorderBox ? _paddingY : 0); _documentElement.on(_strSelectStartEvent, onSelectStart); _documentElement.on(_strMouseTouchMoveEvent, scrollbarCornerOnResize); @@ -1530,8 +1560,8 @@ _targetElement.css(css); //measure width - var origWidth = measureElement.offsetWidth; - var width = doMeasure ? Math.max(origWidth, measureElement.scrollWidth - 1) : 1; + var origWidth = measureElement[WORDING.oW]; + var width = doMeasure ? Math.max(origWidth, measureElement[WORDING.sW] - 1) : 1; width += (_widthAutoCache ? _marginX + (!_isBorderBox ? wrapAttrOff ? 0 : _paddingX + _borderX : 0) : 0); //set measured width and height auto @@ -1540,8 +1570,8 @@ _targetElement.css(css); //measure height - var origHeight = measureElement.offsetHeight; - var height = Math.max(origHeight, measureElement.scrollHeight - 1); + var origHeight = measureElement[WORDING.oH]; + var height = Math.max(origHeight, measureElement[WORDING.sH] - 1); //append correct size values css[_strWidth] = width; @@ -1778,6 +1808,7 @@ //get and apply intended handle length var handleRatio = Math.min(1, (_hostSizeCache[scrollbarVars._wh] - (_paddingAbsoluteCache ? (isHorizontal ? _paddingX : _paddingY) : 0)) / _contentScrollSizeCache[scrollbarVars._wh]); + handleRatio = isNaN(handleRatio) ? 0 : handleRatio; handleCSS[scrollbarVars.wh] = (Math.floor(handleRatio * 100 * 100000) / 100000) + "%"; //the last * 100000 / 100000 is for flooring to the 4th digit if (!nativeOverlayScrollbarsAreActive()) @@ -2212,8 +2243,8 @@ */ function isHTMLElement(o) { return ( - typeof HTMLElement === "object" ? o instanceof HTMLElement : //DOM2 - o && typeof o === "object" && o !== null && o.nodeType === 1 && typeof o.nodeName === "string" + typeof HTMLElement === TYPES.o ? o instanceof HTMLElement : //DOM2 + o && typeof o === TYPES.o && o !== null && o.nodeType === 1 && typeof o.nodeName === TYPES.s ); } @@ -2232,17 +2263,16 @@ function getValidatedOption(currentOptions, optionName, optionAllowedValues, removeFromObject) { var returnObj = {n: optionName, s: false, v: undefined, p: undefined}; //name = [name], succes = false, value = undefined, prepared = undefined, var optionValue; - var optionValueType = 'undefined'; + var optionValueType = TYPES.u; var optionNameProgression = byPropertyPath.has(currentOptions, optionName); var currObj = byPropertyPath.get(currentOptions, optionName); var canBeUndefined = false; var optionIsInvalid = optionNameProgression !== true; - var strString = _strString; var strStar = '*'; var i, v, g; var optionAllowedValuesLength; var anyStringAllowed = false; - if (helper.type(optionAllowedValues) !== 'array') + if (helper.type(optionAllowedValues) !== TYPES.a) optionAllowedValues = [optionAllowedValues]; optionAllowedValuesLength = optionAllowedValues.length; @@ -2253,7 +2283,7 @@ var count = 0; for (g = 0; g < optionAllowedValuesLength; g++) { var check = optionAllowedValues[g]; - if (helper.type(check) === strString) { + if (helper.type(check) === TYPES.s) { count++; if (count > 1) break; @@ -2279,7 +2309,7 @@ var valueType = helper.type(allowedValue); var correct = false; if (valueType === optionValueType) { - if (valueType === strString) { + if (valueType === TYPES.s) { correct = anyStringAllowed ? true : optionValue === allowedValue; } else { @@ -2296,7 +2326,7 @@ }; for (i = 0; i < optionAllowedValuesLength; i++) { var currPossibleValue = optionAllowedValues[i]; - if (helper.type(currPossibleValue) === strString) { + if (helper.type(currPossibleValue) === TYPES.s) { var currPossibleValueSplit = currPossibleValue.split(':'); var key = currPossibleValueSplit[0]; var breakAll = false; @@ -2327,7 +2357,7 @@ for (i = 0; i < optionAllowedValuesLength; i++) { var value = optionAllowedValues[i]; var valueType = helper.type(value); - if (valueType === strString) { + if (valueType === TYPES.s) { hasAllowedStrings = !anyStringAllowed; var stringSplit = value.split(':'); for (v = 0; v < stringSplit.length; v++) { @@ -2502,18 +2532,20 @@ } /** - * Returns true if the given mutation is not from a from the plguin generated element. If the target element is a textarea the mutation is always unknown. + * Returns true if the given mutation is not from a from the plugin generated element. If the target element is a textarea the mutation is always unknown. * @param mutation The mutation which shall be checked. * @returns {boolean} True if the mutation is from a unknown element, false otherwise. */ function isUnknownMutation(mutation) { var attributeName = mutation.attributeName; var mutationTarget = mutation.target; + var mutationType = mutation.type; + if (mutationTarget === _contentElement[0]) - return false; - if (mutation.type === "attributes" && (attributeName === "class" || attributeName === "style") && !_isTextarea) { + return attributeName === null; + if (mutationType === 'attributes' && (attributeName === WORDING.c || attributeName === WORDING.s) && !_isTextarea) { //only do it of browser support it natively - if (typeof mutationTarget.closest !== 'function') + if (typeof mutationTarget.closest !== TYPES.f) return true; if (mutationTarget.closest(_strDot + _classNameResizeObserverElement) !== null || mutationTarget.closest(_strDot + _classNameScrollbar) !== null || @@ -2545,39 +2577,40 @@ var numberAllowedValues = 0; var callbackAllowedValues = [new Function(), null]; - var validatedOptions = []; - validatedOptions.push(getValidatedOption(newOptions, strNativeScrollbarsOverlaidDot + 'showNativeScrollbars', booleanAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, strNativeScrollbarsOverlaidDot + 'initialize', booleanAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, strOverflowBehaviorDot + _strX, overflowBehaviorAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, strOverflowBehaviorDot + _strY, overflowBehaviorAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, strScrollbarsDot + 'visibility', scrollbarsVisibilityAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, strScrollbarsDot + 'autoHide', scrollbarsAutoHideAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, strScrollbarsDot + 'autoHideDelay', numberAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, strScrollbarsDot + 'clickScrolling', booleanAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, strScrollbarsDot + 'dragScrolling', booleanAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, strScrollbarsDot + 'touchSupport', booleanAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, strTextareaDot + 'dynWidth', booleanAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, strTextareaDot + 'dynHeight', booleanAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, 'className', classNameAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, 'resize', resizeAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, 'sizeAutoCapable', booleanAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, 'paddingAbsolute', booleanAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, 'clipAlways', booleanAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, 'normalizeRTL', booleanAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, 'autoUpdate', booleanNullAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, 'autoUpdateInterval', numberAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, strCallbacksDot + 'onInitialized', callbackAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, strCallbacksDot + 'onInitializationWithdrawn', callbackAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, strCallbacksDot + 'onDestroyed', callbackAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, strCallbacksDot + 'onScrollStart', callbackAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, strCallbacksDot + 'onScroll', callbackAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, strCallbacksDot + 'onScrollStop', callbackAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, strCallbacksDot + 'onDirectionChanged', callbackAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, strCallbacksDot + 'onContentSizeChanged', callbackAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, strCallbacksDot + 'onHostSizeChanged', callbackAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, strCallbacksDot + 'onOverflowChanged', callbackAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, strCallbacksDot + 'onOverflowAmountChanged', callbackAllowedValues)); - validatedOptions.push(getValidatedOption(newOptions, strCallbacksDot + 'onUpdated', callbackAllowedValues)); + var validatedOptions = [ + getValidatedOption(newOptions, strNativeScrollbarsOverlaidDot + 'showNativeScrollbars', booleanAllowedValues), + getValidatedOption(newOptions, strNativeScrollbarsOverlaidDot + 'initialize', booleanAllowedValues), + getValidatedOption(newOptions, strOverflowBehaviorDot + _strX, overflowBehaviorAllowedValues), + getValidatedOption(newOptions, strOverflowBehaviorDot + _strY, overflowBehaviorAllowedValues), + getValidatedOption(newOptions, strScrollbarsDot + 'visibility', scrollbarsVisibilityAllowedValues), + getValidatedOption(newOptions, strScrollbarsDot + 'autoHide', scrollbarsAutoHideAllowedValues), + getValidatedOption(newOptions, strScrollbarsDot + 'autoHideDelay', numberAllowedValues), + getValidatedOption(newOptions, strScrollbarsDot + 'clickScrolling', booleanAllowedValues), + getValidatedOption(newOptions, strScrollbarsDot + 'dragScrolling', booleanAllowedValues), + getValidatedOption(newOptions, strScrollbarsDot + 'touchSupport', booleanAllowedValues), + getValidatedOption(newOptions, strTextareaDot + 'dynWidth', booleanAllowedValues), + getValidatedOption(newOptions, strTextareaDot + 'dynHeight', booleanAllowedValues), + getValidatedOption(newOptions, 'className', classNameAllowedValues), + getValidatedOption(newOptions, 'resize', resizeAllowedValues), + getValidatedOption(newOptions, 'sizeAutoCapable', booleanAllowedValues), + getValidatedOption(newOptions, 'paddingAbsolute', booleanAllowedValues), + getValidatedOption(newOptions, 'clipAlways', booleanAllowedValues), + getValidatedOption(newOptions, 'normalizeRTL', booleanAllowedValues), + getValidatedOption(newOptions, 'autoUpdate', booleanNullAllowedValues), + getValidatedOption(newOptions, 'autoUpdateInterval', numberAllowedValues), + getValidatedOption(newOptions, strCallbacksDot + 'onInitialized', callbackAllowedValues), + getValidatedOption(newOptions, strCallbacksDot + 'onInitializationWithdrawn', callbackAllowedValues), + getValidatedOption(newOptions, strCallbacksDot + 'onDestroyed', callbackAllowedValues), + getValidatedOption(newOptions, strCallbacksDot + 'onScrollStart', callbackAllowedValues), + getValidatedOption(newOptions, strCallbacksDot + 'onScroll', callbackAllowedValues), + getValidatedOption(newOptions, strCallbacksDot + 'onScrollStop', callbackAllowedValues), + getValidatedOption(newOptions, strCallbacksDot + 'onDirectionChanged', callbackAllowedValues), + getValidatedOption(newOptions, strCallbacksDot + 'onContentSizeChanged', callbackAllowedValues), + getValidatedOption(newOptions, strCallbacksDot + 'onHostSizeChanged', callbackAllowedValues), + getValidatedOption(newOptions, strCallbacksDot + 'onOverflowChanged', callbackAllowedValues), + getValidatedOption(newOptions, strCallbacksDot + 'onOverflowAmountChanged', callbackAllowedValues), + getValidatedOption(newOptions, strCallbacksDot + 'onUpdated', callbackAllowedValues) + ]; for (var prop in newOptions) { if (newOptions.hasOwnProperty(prop)) { @@ -2592,7 +2625,7 @@ helper.each(obj, function (i, v) { if (helper.isPlainObject(v)) prepare(v); - else if (helper.type(v) === 'function') + else if (helper.type(v) === TYPES.f) obj[i] = helper.type(v); }); }; @@ -2623,8 +2656,8 @@ _contentElement.css(css); } var contentElementScrollSize = { - w: getContentMeasureElement().scrollWidth + textareaValueLength, - h: getContentMeasureElement().scrollHeight + textareaValueLength + w: getContentMeasureElement()[WORDING.sW] + textareaValueLength, + h: getContentMeasureElement()[WORDING.sH] + textareaValueLength }; if (setCSS) { css[_strFloat] = float; @@ -2646,11 +2679,11 @@ if (_isSleeping || _mutationObserverConnected) return false; - var hostElementId = _hostElement.attr('id') || _strEmpty; + var hostElementId = _hostElement.attr(WORDING.i) || _strEmpty; var hostElementIdChanged = checkCacheSingle(hostElementId, _updateAutoHostElementIdCache); - var hostElementClass = _hostElement.attr('class') || _strEmpty; + var hostElementClass = _hostElement.attr(WORDING.c) || _strEmpty; var hostElementClassChanged = checkCacheSingle(hostElementClass, _updateAutoHostElementClassCache); - var hostElementStyle = _hostElement.attr('style') || _strEmpty; + var hostElementStyle = _hostElement.attr(WORDING.s) || _strEmpty; var hostElementStyleChanged = checkCacheSingle(hostElementStyle, _updateAutoHostElementStyleCache); var hostElementVisible = _hostElement.is(':visible') || _strEmpty; var hostElementVisibleChanged = checkCacheSingle(hostElementVisible, _updateAutoHostElementVisibleCache); @@ -2983,8 +3016,8 @@ var oldSize = {w: -1, h: -1}; addResizeObserver(_sizeAutoObserverElement, function () { var newSize = { - w: _sizeAutoObserverElement[0].offsetWidth, - h: _sizeAutoObserverElement[0].offsetHeight + w: _sizeAutoObserverElement[0][WORDING.oW], + h: _sizeAutoObserverElement[0][WORDING.oH] }; if (checkCacheDouble(newSize, oldSize)) { if (_initialized && (_heightAutoCache && newSize.h > 0) || (_widthAutoCache && newSize.w > 0)) { @@ -3046,21 +3079,23 @@ _isBorderBox = (boxSizing === 'border-box'); var isRTLLeft = _isRTL ? _strLeft : _strRight; var isRTLRight = _isRTL ? _strRight : _strLeft; + var hostElement = _hostElement[0]; + var paddingElement = _paddingElement[0]; //detect width auto: var widthAutoResizeDetection = false; - var widthAutoObserverDetection = (_sizeAutoObserverAdded && (_hostElement.css(_strFloat) !== 'none' /*|| _isTextarea */)) ? (Math.round(sizeAutoObserverElementBCRect.right - sizeAutoObserverElementBCRect.left) === 0) && (!paddingAbsolute ? (_hostElement[0].clientWidth - _paddingX) > 0 : true) : false; + var widthAutoObserverDetection = (_sizeAutoObserverAdded && (_hostElement.css(_strFloat) !== 'none' /*|| _isTextarea */)) ? (Math.round(sizeAutoObserverElementBCRect.right - sizeAutoObserverElementBCRect.left) === 0) && (!paddingAbsolute ? (hostElement[WORDING.cW] - _paddingX) > 0 : true) : false; if (sizeAutoCapable && !widthAutoObserverDetection) { - var tmpCurrHostWidth = _hostElement[0].offsetWidth; + var tmpCurrHostWidth = hostElement[WORDING.oW]; var tmpCurrContentGlueWidth = _contentGlueElement.css(_strWidth); _contentGlueElement.css(_strWidth, _strAuto); - var tmpNewHostWidth = _hostElement[0].offsetWidth; + var tmpNewHostWidth = hostElement[WORDING.oW]; _contentGlueElement.css(_strWidth, tmpCurrContentGlueWidth); widthAutoResizeDetection = tmpCurrHostWidth !== tmpNewHostWidth; if (!widthAutoResizeDetection) { _contentGlueElement.css(_strWidth, tmpCurrHostWidth + 1); - tmpNewHostWidth = _hostElement[0].offsetWidth; + tmpNewHostWidth = hostElement[WORDING.oW]; _contentGlueElement.css(_strWidth, tmpCurrContentGlueWidth); widthAutoResizeDetection = tmpCurrHostWidth !== tmpNewHostWidth; } @@ -3103,8 +3138,8 @@ }; //vars to apply correct css - var contentElementCSS = {}; - var contentGlueElementCSS = {}; + var contentElementCSS = { }; + var contentGlueElementCSS = { }; //set info for padding _paddingX = padding.l + padding.r; @@ -3167,8 +3202,8 @@ //viewport size is padding container because it never has padding, margin and a border. _viewportSize = { - w: _paddingElement[0].offsetWidth, - h: _paddingElement[0].offsetHeight + w: paddingElement[WORDING.oW], + h: paddingElement[WORDING.oH] }; //update Textarea @@ -3212,7 +3247,7 @@ contentElementCSS[_strMaxMinus + _strHeight] = _strEmpty; //fix dyn height collapse bug: (doesn't works for width!) //contentGlueElementCSS[_strHeight] = _isTextarea && textareaDynHeight ? textareaSize.dh : _strAuto; - contentGlueElementCSS[_strHeight] = _isTextarea ? textareaDynHeight ? textareaSize.dh : _strAuto : _contentElement[0].clientHeight; + contentGlueElementCSS[_strHeight] = _isTextarea ? textareaDynHeight ? textareaSize.dh : _strAuto : _contentElement[0][WORDING.cH]; } if (sizeAutoCapable) _contentGlueElement.css(contentGlueElementCSS); @@ -3231,6 +3266,7 @@ var strOverflowY = strOverflow + '-y'; var strHidden = 'hidden'; var strVisible = 'visible'; + var hideOverflow4CorrectMeasuring = _restrictedMeasuring ? (_nativeScrollbarIsOverlaid.x || _nativeScrollbarIsOverlaid.y) || (_viewportSize.w < _nativeScrollbarMinSize.y || _viewportSize.h < _nativeScrollbarMinSize.x) : false; //Reset the viewport (very important for natively overlaid scrollbars and zoom change var viewportElementResetCSS = {}; @@ -3239,21 +3275,20 @@ setTopRightBottomLeft(viewportElementResetCSS, _strEmpty); _viewportElement.css(viewportElementResetCSS); - //content element has to have overflow hidden, else element marginsss aren't calculated properly - if (heightAuto && !_isTextarea) { + if(hideOverflow4CorrectMeasuring) _contentElement.css(strOverflow, strHidden); - contentElementCSS[strOverflow] = _strEmpty - } //measure several sizes: var contentMeasureElement = getContentMeasureElement(); + //in Firefox content element has to have overflow hidden, else element margins aren't calculated properly, this element prevents this bug, but only if scrollbars aren't overlaid + var contentMeasureElementGuaranty = _restrictedMeasuring && !hideOverflow4CorrectMeasuring ? _viewportElement[0] : contentMeasureElement; var clientSize = { - w: contentMeasureElement.clientWidth, - h: contentMeasureElement.clientHeight + w: contentMeasureElement[WORDING.cW], + h: contentMeasureElement[WORDING.cH] }; var scrollSize = { - w: contentMeasureElement.scrollWidth, - h: contentMeasureElement.scrollHeight + w: Math.max(contentMeasureElement[WORDING.sW], contentMeasureElementGuaranty[WORDING.sW]), + h: Math.max(contentMeasureElement[WORDING.sH], contentMeasureElementGuaranty[WORDING.sH]) }; var contentClientSize = { w: _isTextarea && textareaSize && !textareaDynWidth ? textareaSize.ow : widthAuto ? clientSize.w : scrollSize.w, @@ -3267,10 +3302,9 @@ //measure and correct several sizes //has to be clientSize because offsetSize respect borders. - var hostElement = _hostElement[0]; var hostSize = { - w: hostElement.clientWidth, - h: hostElement.clientHeight + w: hostElement[WORDING.cW], + h: hostElement[WORDING.cH] }; var contentGlueSize = { w: Math.max(contentClientSize.w + (paddingAbsolute ? _paddingX : 0), hostSize.w - _paddingX) - (textareaDynWidth ? (_isTextarea && widthAuto ? _marginX + (!_isBorderBox ? _paddingX + _borderX : 0) : 0) : 0), @@ -3297,13 +3331,13 @@ if (!heightAuto || (!heightAuto && border.c)) contentGlueElementCSS[_strHeight] = hostSize.h - (_isBorderBox ? 0 : _paddingY + _borderY) - 1 - _marginY; - //if size is auto and host ist same size as max size, make content glue size +1 to make sure size changes will be detected + //if size is auto and host is same size as max size, make content glue size +1 to make sure size changes will be detected if (cssMaxValue.cw && cssMaxValue.iw === maxWidth) contentGlueElementCSS[_strWidth] = maxWidth + (_isBorderBox ? 0 : _paddingX) + 1; if (cssMaxValue.ch && cssMaxValue.ih === maxHeight) contentGlueElementCSS[_strHeight] = maxHeight + (_isBorderBox ? 0 : _paddingY) + 1; - //if size is auto and host ist smaller than size as min size, make content glue size -1 to make sure size changes will be detected (this is only needed if padding is 0) + //if size is auto and host is smaller than size as min size, make content glue size -1 to make sure size changes will be detected (this is only needed if padding is 0) if (widthAuto && (clientSize.w < _viewportSize.w || _isTextarea && !textareaAutoWrapping) && _paddingX === 0) { if (_isTextarea) textareaCoverCSS[_strWidth] = parseIntToZeroOrNumber(_textareaCoverElement.css(_strWidth)) - 1; @@ -3338,9 +3372,11 @@ //measure again, but this time all correct sizes: var contentBCRect = contentMeasureElement.getBoundingClientRect(); var contentScrollSize = { - w: contentMeasureElement.scrollWidth, - h: contentMeasureElement.scrollHeight + w: Math.max(contentMeasureElement[WORDING.sW], contentMeasureElementGuaranty[WORDING.sW]), + h: Math.max(contentMeasureElement[WORDING.sH], contentMeasureElementGuaranty[WORDING.sH]) }; + if(hideOverflow4CorrectMeasuring) + _contentElement.css(strOverflow, _strEmpty); if (contentBCRect.width !== undefined) { var contentBCRectW = contentBCRect.width; var contentBCRectH = contentBCRect.height; @@ -3353,11 +3389,17 @@ //has to be clientSize because offsetSize respect borders. hostSize = { - w: hostElement.clientWidth, - h: hostElement.clientHeight + w: hostElement[WORDING.cW], + h: hostElement[WORDING.cH] }; hostSizeChanged = checkCacheDouble(hostSize, _hostSizeCache); _hostSizeCache = hostSize; + + //viewport size is padding container because it never has padding, margin and a border. + _viewportSize = { + w: paddingElement[WORDING.oW], + h: paddingElement[WORDING.oH] + }; var overflowBehaviorIsVS = { x: overflowBehavior.x === 'v-s', @@ -3371,10 +3413,12 @@ x: overflowBehavior.x === 's', y: overflowBehavior.y === 's' }; - //var overflowBehaviorIsH = { - // x : overflowBehavior.x === 'h', - // y : overflowBehavior.y === 'h' - //}; + /* + * var overflowBehaviorIsH = { + * x : overflowBehavior.x === 'h', + * y : overflowBehavior.y === 'h' + * }; + */ var overflowAmount = { x: Math.max(0, contentScrollSize.w - hostSize.w + (paddingAbsolute ? _paddingX : 0)), y: Math.max(0, contentScrollSize.h - hostSize.h + (paddingAbsolute ? _paddingY : 0)) @@ -3511,12 +3555,14 @@ viewportElementCSS[strOverflowY] = _strEmpty; resetScrollbarHidingY(); } + // if the scroll container is too small and if there is any overflow with not overlay scrollbar, make viewport element greater in size (Firefox hide Scrollbars fix) // because firefox starts hiding scrollbars on too small elements // with this behavior the overflow calculation may be incorrect or the scrollbars would appear suddenly // https://bugzilla.mozilla.org/show_bug.cgi?id=292284 - if ((_viewportSize.h < _nativeScrollbarMinSize.x || _viewportSize.w < _nativeScrollbarMinSize.y) && ((hasOverflow.x && hideOverflow.x && !_nativeScrollbarIsOverlaid.x) || (hasOverflow.y && hideOverflow.y && !_nativeScrollbarIsOverlaid.y))) { + if ((_viewportSize.h < _nativeScrollbarMinSize.x || _viewportSize.w < _nativeScrollbarMinSize.y) + && ((hasOverflow.x && hideOverflow.x && !_nativeScrollbarIsOverlaid.x) || (hasOverflow.y && hideOverflow.y && !_nativeScrollbarIsOverlaid.y))) { viewportElementCSS[_strPaddingMinus + _strTop] = _nativeScrollbarMinSize.x; viewportElementCSS[_strMarginMinus + _strTop] = -_nativeScrollbarMinSize.x; @@ -3563,14 +3609,14 @@ var elementStyle = element.style; elementStyle.webkitTransform = 'scale(1)'; elementStyle.display = 'run-in'; - var dump = element.offsetHeight; + var dump = element[WORDING.oH]; elementStyle.display = _strEmpty; elementStyle.webkitTransform = _strEmpty; } //force hard redraw in webkit if native overlaid scrollbars shall appear if (ignoreOverlayScrollbarHidingChanged && ignoreOverlayScrollbarHiding) { _hostElement.hide(); - var dump = _hostElement[0].offsetHeight; + var dump = hostElement[WORDING.oH]; _hostElement.show(); } } @@ -3598,10 +3644,11 @@ var scrollbarsVisibilityVisible = scrollbarsVisibility === 'v'; var scrollbarsVisibilityHidden = scrollbarsVisibility === 'h'; var scrollbarsVisibilityAuto = scrollbarsVisibility === 'a'; - var showScrollbarH = refreshScrollbarAppearance.bind(0, true, true, canScroll.x); - var showScrollbarV = refreshScrollbarAppearance.bind(0, false, true, canScroll.y); - var hideScrollbarH = refreshScrollbarAppearance.bind(0, true, false, canScroll.x); - var hideScrollbarV = refreshScrollbarAppearance.bind(0, false, false, canScroll.y); + + var showScrollbarH = COMPATIBILITY.bind(refreshScrollbarAppearance, 0, true, true, canScroll.x); + var showScrollbarV = COMPATIBILITY.bind(refreshScrollbarAppearance, 0, false, true, canScroll.y); + var hideScrollbarH = COMPATIBILITY.bind(refreshScrollbarAppearance, 0, true, false, canScroll.x); + var hideScrollbarV = COMPATIBILITY.bind(refreshScrollbarAppearance, 0, false, false, canScroll.y); //add or remove rtl class name for styling purposes if (cssDirectionChanged) { @@ -3881,7 +3928,7 @@ _base.options = function (newOptions, value) { //return current options if newOptions are undefined or empty if (helper.isEmptyObject(newOptions) || !helper.isPlainObject(newOptions)) { - if (helper.type(newOptions) === 'string') { + if (helper.type(newOptions) === TYPES.s) { if (arguments.length >= 2) { var option = {}; byPropertyPath.set(option, newOptions, value, true); @@ -3959,7 +4006,7 @@ _targetElement.removeClass(_classNameTextareaElement) .removeClass(_classNameTextInherit); _targetElement.unwrap() - .removeAttr('style'); + .removeAttr(WORDING.s); _hostElement.remove(); } else { @@ -4098,7 +4145,7 @@ var coordinatesOperators = ['+=', '-=', '*=', '/=']; var i; var finalScroll = { }; - var durationIsObject = helper.type(duration) === 'object'; + var durationIsObject = helper.type(duration) === TYPES.o; var strEnd = 'end'; var strBegin = 'begin'; var elementObjSettings = { @@ -4121,15 +4168,15 @@ }; var getRawScroll = function (coordinates) { var rawScroll = {}; - if (helper.type(coordinates) === 'array' && coordinates.length > 0) { + if (helper.type(coordinates) === TYPES.a && coordinates.length > 0) { rawScroll.x = coordinates[0]; rawScroll.y = coordinates[1]; } - else if (helper.type(coordinates) === _strString || helper.type(coordinates) === _strNumber) { + else if (helper.type(coordinates) === TYPES.s || helper.type(coordinates) === TYPES.n) { rawScroll.x = coordinates; rawScroll.y = coordinates; } - else if (helper.type(coordinates) === 'object') { + else if (helper.type(coordinates) === TYPES.o) { coordinates = helper.extend({}, coordinates); i = 0; for (var key in coordinates) { @@ -4163,7 +4210,7 @@ var isRTLisX = _isRTL && isX; var normalizeShortcuts = isRTLisX && _rtlScrollBehavior.n && !_normalizeRTLCache; - if (helper.type(rawScroll) === _strString) { + if (helper.type(rawScroll) === TYPES.s) { //check operator if (rawScroll.length > 2) { var possibleOperator = rawScroll.substr(0, 2); @@ -4187,11 +4234,11 @@ rawScroll = rawScroll.replace(/vh/g, mult + _viewportSize.h); amount = window.parseInt(window.parseFloat(window.eval(rawScroll)).toFixed()); } - else if (helper.type(rawScroll) === _strNumber) { + else if (helper.type(rawScroll) === TYPES.n) { amount = rawScroll; } - if (!isNaN(amount) && amount !== undefined && helper.type(amount) === _strNumber) { + if (!isNaN(amount) && amount !== undefined && helper.type(amount) === TYPES.n) { var normalizeIsRTLisX = _normalizeRTLCache && isRTLisX; var operatorCurrScroll = currScroll * (normalizeIsRTLisX && _rtlScrollBehavior.n ? -1 : 1); var invert = normalizeIsRTLisX && _rtlScrollBehavior.i; @@ -4250,9 +4297,9 @@ var marginLength; //block can be [string, or array of two strings] - if (blockType === _strString) + if (blockType === TYPES.s) block = [block, block]; - else if (blockType === 'array') { + else if (blockType === TYPES.a) { blockLength = block.length; if (blockLength > 2 || blockLength < 1) block = undefined; @@ -4262,7 +4309,7 @@ block[1] = strBegin; for (i = 0; i < blockLength; i++) { var item = block[i]; - if (helper.type(item) !== _strString || !checkSettingsStringValue(item, elementObjSettingsBlockValues)) { + if (helper.type(item) !== TYPES.s || !checkSettingsStringValue(item, elementObjSettingsBlockValues)) { valid = false; break; } @@ -4275,7 +4322,7 @@ block = undefined; //margin can be [ true, false, number, array of 2 numbers, array of 4 numbers ] - if (marginType === _strNumber) + if (marginType === TYPES.n) margin = [margin, margin, margin, margin]; else if (marginType === 'boolean') { if (margin) { @@ -4289,14 +4336,14 @@ else margin = [0, 0, 0, 0]; } - else if (marginType === 'array') { + else if (marginType === TYPES.a) { marginLength = margin.length; if (marginLength !== 2 && marginLength !== 4) margin = undefined; else { valid = true; for (i = 0; i < marginLength; i++) { - if (helper.type(margin[i]) !== _strNumber) { + if (helper.type(margin[i]) !== TYPES.n) { valid = false; break; } @@ -4358,8 +4405,8 @@ } else { rawElementSize = { - w: finalElement[0].offsetWidth, - h: finalElement[0].offsetHeight + w: finalElement[0][WORDING.oW], + h: finalElement[0][WORDING.oH] }; } var elementSize = { @@ -4400,7 +4447,7 @@ duration : duration, complete : complete }; - if(helper.type(easing) === 'array') { + if(helper.type(easing) === TYPES.a) { var specialEasing = { }; specialEasing[_strScrollLeft] = easing[0]; specialEasing[_strScrollTop] = easing[1]; @@ -4486,7 +4533,7 @@ viewportSize: prepare(_viewportSize), hostSize: prepare(_hostSizeCache) }; - if (helper.type(stateProperty) === _strString) + if (helper.type(stateProperty) === TYPES.s) return byPropertyPath.get(obj, stateProperty); return obj; }; @@ -4525,6 +4572,7 @@ _supportPassiveEvents = globals.supportPassiveEvents; _supportResizeObserver = globals.supportResizeObserver; _supportMutationObserver = globals.supportMutationObserver; + _restrictedMeasuring = globals.restrictedMeasuring; _documentElement = helper(targetElement.ownerDocument); _windowElement = helper(_documentElement[0].defaultView || _documentElement[0].parentWindow); _htmlElement = _documentElement.find('html').first(); @@ -4624,9 +4672,9 @@ var target = this.target; var attrName = t.attributeName; - if (attrName === 'class') + if (attrName === WORDING.c) doUpdate = hostClassNamesChanged(t.oldValue, target.className); - else if (attrName === 'style') + else if (attrName === WORDING.s) doUpdate = t.oldValue !== target.style.cssText; else doUpdate = true; diff --git a/js/jquery.overlayScrollbars.min.js b/js/jquery.overlayScrollbars.min.js index a2a496b..0d0925e 100644 --- a/js/jquery.overlayScrollbars.min.js +++ b/js/jquery.overlayScrollbars.min.js @@ -2,13 +2,13 @@ * OverlayScrollbars * https://github.com/KingSora/OverlayScrollbars * - * Version: 1.2.3 + * Version: 1.3.0 * * Copyright KingSora. * https://github.com/KingSora * * Released under the MIT license. - * Date: 02.02.2018 + * Date: 26.02.2018 */ -!function(e,t){"function"==typeof define&&define.amd?define(["jquery"],function(n){return t(e,e.document,void 0,n)}):"object"==typeof exports?module.exports=t(e,e.document,void 0,require("jquery")):t(e,e.document,void 0,e.jQuery)}("undefined"!=typeof window?window:this,function(e,t,n,r){"use-strict";var i="OverlayScrollbars",o={wW:function(){return e.innerWidth||t.documentElement.clientWidth||t.body.clientWidth},wH:function(){return e.innerHeight||t.documentElement.clientHeight||t.body.clientHeight},mO:function(){return e.MutationObserver||e.WebKitMutationObserver||e.WebkitMutationObserver||e.MozMutationObserver||n},rO:function(){return e.ResizeObserver||e.WebKitResizeObserver||e.WebkitResizeObserver||e.MozResizeObserver||n},rAF:function(){return e.requestAnimationFrame||e.webkitRequestAnimationFrame||e.mozRequestAnimationFrame||e.oRequestAnimationFrame||e.msRequestAnimationFrame||function(t){return e.setTimeout(t,1e3/60)}},cAF:function(){return e.cancelAnimationFrame||e.webkitCancelAnimationFrame||e.mozCancelAnimationFrame||e.oCancelAnimationFrame||e.msCancelAnimationFrame||function(t){return e.clearTimeout(t)}},now:function(){return Date.now()||(new Date).getTime()},stpP:function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},prvD:function(e){e.preventDefault?e.preventDefault():e.returnValue=!1},page:function(e){var r=((e=e.originalEvent||e).target||e.srcElement||t).ownerDocument||t,i=r.documentElement,o=r.body;if(e.touches!==n){var a=e.touches[0];return{x:a.pageX,y:a.pageY}}return!e.pageX&&e.clientX&&null!=e.clientX?{x:e.clientX+(i&&i.scrollLeft||o&&o.scrollLeft||0)-(i&&i.clientLeft||o&&o.clientLeft||0),y:e.clientY+(i&&i.scrollTop||o&&o.scrollTop||0)-(i&&i.clientTop||o&&o.clientTop||0)}:{x:e.pageX,y:e.pageY}},mBtn:function(e){return e.which||e.button===n?e.which:1&e.button?1:2&e.button?3:4&e.button?2:0}},a=function(t){return t.fn.overlayScrollbars=function(n){var r=this;return t.isPlainObject(n)?(t.each(r,function(){e[i](this,n)}),r):e[i](r,n)},t}(r);!function(r,o,a,s){function l(){h===n&&(h=new c(v)),d===n&&(d=new f(h))}function c(i){function s(e){var r=!1,i="Webkit Moz ms O".split(" "),o=t.createElement("div"),a=null;if(e=e.toLowerCase(),o.style[e]!==n&&(r=!0),!1===r){a=e.charAt(0).toUpperCase()+e.substr(1);for(var s=0;s
'),u=function(){c.append(f);var e=f[0],t=a(f.children("div").first());0===e.offsetHeight&&f.hide().show();var n={x:e.offsetHeight-e.clientHeight,y:e.offsetWidth-e.clientWidth};f.addClass("os-viewport-native-scrollbars-invisible"),f.css("overflow","hidden").hide().css("overflow","scroll").show(),l.nativeScrollbarStyling=e.offsetHeight-e.clientHeight==0&&e.offsetWidth-e.clientWidth==0,f.css({"overflow-y":"hidden",direction:"rtl"}).scrollLeft(0);var r=f.offset(),i=t.offset();f.scrollLeft(999);var o=t.offset();return l.rtlScrollBehavior={i:r.left===i.left,n:i.left-o.left==0},f.removeAttr("style").remove(),n}(),h={x:0===u.x,y:0===u.y};l.nativeScrollbarSize=u,l.nativeScrollbarIsOverlaid=h,l.overlayScrollbarDummySize={x:30,y:30},l.msie=function(){var t=e.navigator.userAgent,n=t.indexOf("MSIE ");if(n>0)return parseInt(t.substring(n+5,t.indexOf(".",n)),10);if(t.indexOf("Trident/")>0){var r=t.indexOf("rv:");return parseInt(t.substring(r+3,t.indexOf(".",r)),10)}var i=t.indexOf("Edge/");return i>0&&parseInt(t.substring(i+5,t.indexOf(".",i)),10)}(),l.cssCalc=function(){for(var e=t.createElement("div"),n=["calc","-webkit-calc","-moz-calc","-o-calc"],r=0;r0){var e=r.wW(),h=r.wH(),d=e-i,v=h-s;if(0===d&&0===v)return;var p=Math.round(e/(i/100)),y=Math.round(h/(s/100)),m=Math.abs(d),g=Math.abs(v),b=Math.abs(p),w=Math.abs(y),x=n(),C=m>2&&g>2,S=!t(b,w),O=x!==u&&u>0;if(!!(C&&S&&O)){c.append(f);var k=f[0];l.nativeScrollbarSize={x:k.offsetHeight-k.clientHeight,y:k.offsetWidth-k.clientWidth},f.remove(),a.each(o.all(),function(){o.has(this)&&o.get(this).update("zoom")})}i=e,s=h,u=x}})}}()}function f(e){var t,i=this,o=[],s=[],l=!1,c=33,f=r.now(),u=function(){if(o.length>0&&l){t=r.rAF()(function(){u()});var e=r.now(),i=e-f;if(i>c){f=e-i%c;for(var a=33,h=0;hy&&(d.update("auto"),s[h]=new Date(m+=y)),a=Math.max(1,Math.min(a,y))}}c=a}}else c=33};i.add=function(t){-1===a.inArray(t,o)&&(o.push(t),s.push(r.now()),o.length>0&&!l&&(l=!0,e.autoUpdateLoop=l,u()))},i.remove=function(i){var c=a.inArray(i,o);c>-1&&(s.splice(c,1),o.splice(c,1),0===o.length&&l&&(l=!1,e.autoUpdateLoop=l,t!==n&&(r.cAF()(t),t=-1)))}}function u(t,l,c,f){function u(){if(!Le){var e=Je[0],t={w:e.scrollWidth,h:e.scrollHeight};if(gn){var n=b(t,jt);jt=t,n&&ue(!0,!1)}else jt=t}}function h(e,t,n){e=e[0];for(var r=t.split(Kn),i=0;i9||!ve){var l=qn+Mr+'">';l+=qn+Wr+'" dir="ltr">',l+=qn+Wr+'">',l+=qn+Er+Yn,l+="",l+=qn+Wr+'">',l+=qn+Er+'" style="width: 200%; height: 200%'+Yn,l+="",l+="",l+="",e.prepend(l);var f,u,h,d,v=(e=e[0]).childNodes[0].childNodes[0],p=a(v.childNodes[1]),y=a(v.childNodes[0]),m=a(y[0].childNodes[0]),g=v.offsetWidth,b=v.offsetHeight,w=c.nativeScrollbarSize,x=function(){y[Zn](3333333)[$n](3333333),p[Zn](3333333)[$n](3333333)},C=function(){u=0,f&&(g=h,b=d,n())},S=function(e){return h=v.offsetWidth,d=v.offsetHeight,f=h!=g||d!=b,e&&f&&!u?(r.cAF()(u),u=r.rAF()(C)):e||C(),x(),e&&(r.prvD(e),r.stpP(e)),!1},O={};O[Wn]=-2*(w.y+1),O[En]=-2*w.x,O[Fn]=-2*w.y,O[Ln]=-2*(w.x+1),a(v).css(O),y.on(Bn,S),p.on(Bn,S),a(e).on(s,function(){S(!1)});var k={};k[Rn]=3333333,k[Nn]=3333333,m.css(k),x()}else{var z=Be[0],T=e;e=e[0];var A=z.attachEvent,H="undefined"==typeof navigator||(navigator.userAgent.match(/Trident/)||navigator.userAgent.match(/Edge/));if(A)T.prepend(qn+Mr+Yn),T.find(Jn+Mr).first()[0].attachEvent("onresize",n);else{var M=z.createElement("object");M.setAttribute("tabindex","-1"),M.setAttribute("class",Mr),M.onload=function(){var e=this.contentDocument.defaultView;e.addEventListener("resize",n),e.document.documentElement.style.display="none"},M.type="text/html",H&&T.prepend(M),M.data="about:blank",H||T.prepend(M),T.on(s,n)}}}if((e=a(e))[0]===Je[0]){var W=function(){var t=qe.css("direction");if(t!==xt){var n={},r=0;return"ltr"===t?(n[Ln]=0,n[En]=Un,r=3333333):(n[Ln]=Un,n[En]=0,r=de.n?-3333333:de.i?0:3333333),Je.children().first().css(n),e.scrollLeft(r),e.scrollTop(3333333),xt=t,!0}return!1};W(),e.on(Bn,function(e){return W()&&ue(),r.prvD(e),r.stpP(e),!1})}}function m(e){if(ke){var t=e.contents()[0];t[sr].disconnect(),delete t[sr]}else e.children(Jn+Mr).first().remove()}function g(e,t,r){return!0===r?r:t===n||e!==t}function b(e,t,r,i,o){if(!0===o)return o;if(i===n&&o===n){if(!0===r)return r;r=n}return r=r===n?"w":r,i=i===n?"h":i,t===n||(e[r]!==t[r]||e[i]!==t[i])}function w(e,t){return t===n||(e.t!==t.t||e.r!==t.r||e.b!==t.b||e.l!==t.l)}function x(e,t){e.call(mn,t)}function C(e,t,r){r===n&&(r=[jn,jn,jn,jn]),e[t+Wn]=r[0],e[t+En]=r[1],e[t+Fn]=r[2],e[t+Ln]=r[3]}function S(){tn&&!en&&(Zt.observe(qe[0],{attributes:!0,attributeOldValue:!0,attributeFilter:["id","class","style"]}),$t.observe(wn?Ve[0]:$e[0],{attributes:!0,attributeOldValue:!0,subtree:!wn,childList:!wn,characterData:!wn,attributeFilter:wn?["wrap","cols","rows"]:["id","class","style"]}),en=!0)}function O(){tn&&en&&(Zt.disconnect(),$t.disconnect(),en=!1)}function k(e){if(!Le){var t=(e.originalEvent||e).touches!==n;(1===r.mBtn(e)||t)&&(en&&(hn=!0,O()),ti=r.page(e),ni.w=qe[0].offsetWidth-(ze?0:Te),ni.h=qe[0].offsetHeight-(ze?0:Ae),Be.on(or,N),Be.on(nr,z),Be.on(tr,T),_e.addClass(Jr),tt.setCapture&&tt.setCapture(),r.prvD(e),r.stpP(e))}}function z(e){e.originalEvent;var t=r.page(e),n={};(pn||vn)&&(n[Rn]=ni.w+t.x-ti.x),(yn||vn)&&(n[Nn]=ni.h+t.y-ti.y),qe.css(n),r.stpP(e)}function T(e){var t=e!==n;Be.off(or,N),Be.off(nr,z),Be.off(tr,T),_e.removeClass(Jr),tt.releaseCapture&&tt.releaseCapture(),t&&(hn&&S(),mn.update(Un)),hn=!1}function A(){if(!Le){var e=!Mt,t=zn.w-(ze||Ct||!dt?0:Ae+Me),n=zn.h-(ze||Ct||!vt?0:Ae+Me),r={},i=dt||e,o=Ve[0];r[Dn+Rn]=jn,r[Dn+Nn]=jn,r[Rn]=Un,Ve.css(r);var a=o.offsetWidth,s=i?Math.max(a,o.scrollWidth-1):1;s+=dt?We+(ze?0:e?0:Te+He):0,r[Rn]=dt?s:Xn,r[Nn]=Un,Ve.css(r);var l=o.offsetHeight,c=Math.max(l,o.scrollHeight-1);return r[Rn]=s,r[Nn]=c,et.css(r),r[Dn+Rn]=t+(!ze&&dt?Te+He:0),r[Dn+Nn]=n+(!ze&&vt?Ae+Me:0),Ve.css(r),{ow:a,oh:l,dw:s,dh:c}}}function H(){var e=Ve.prop("selectionStart");if(e!==n){for(var t=Ve.val(),r=t.length,i=t.split("\n"),o=i.length,a=t.substr(0,e).split("\n"),s=0,l=0,c=a.length,f=a[a.length-1].length,u=0;ul&&(s=u+1,l=h)}return{cursorRow:c,cursorCol:f,rows:o,cols:l,wRow:s,pos:e,max:r}}}function M(e){for(var t=0;t<$r.length;t++)if(e===$r[t])return!0;return!1}function W(){A(),mn.update(Un)}function E(e){var t=e.keyCode;if(!M(t)){if(0===ei.length){var n=function(){A(),mn.update(Un)};n(),nn=setInterval(n,1e3/60)}-1===a.inArray(t,ei)&&ei.push(t)}}function F(e){var t=e.keyCode;if(!M(t)){var n=a.inArray(t,ei);n>-1&&ei.splice(n,1),0===ei.length&&(A(),mn.update(Un),clearInterval(nn))}}function L(){setTimeout(function(){A(),mn.update(Un)},50)}function D(){rn=!0}function I(){rn=!1,clearInterval(nn),ei=[],A(),mn.update(Un)}function R(e){return Ve[Zn](de.i&&qt?9999999:0),Ve[$n](0),r.prvD(e),r.stpP(e),!1}function N(e){return r.prvD(e),!1}function P(){return Tt&&we.x&&we.y}function j(e,t,n){var r=e?ur:hr,i=e?nt:ot;t?qe.removeClass(r):qe.addClass(r),n?i.removeClass(Pr):i.addClass(Pr)}function U(e,t){if(clearTimeout(on),e)nt.removeClass(jr),ot.removeClass(jr);else{var n=function(){if(!un){var e=it.hasClass("active")||st.hasClass("active");e||!ln&&!cn||nt.addClass(jr),e||!ln&&!cn||ot.addClass(jr)}};an>0&&!0!==t?on=setTimeout(n,an):n()}}function B(e){var t={},n=Y(e),r=Math.min(1,(lt[n._wh]-(Ct?e?Te:Ae:0))/ct[n._wh]);t[n.wh]=Math.floor(100*r*1e5)/1e5+"%",P()||n.h.css(t),n.i.hl=n.h[0]["offset"+n.WH],n.i.hlr=r}function X(e,t){var n=Fe&&e,r={},i=Y(e),o=Ge[0][Bn+i.WH]-Ge[0]["client"+i.WH];de.n&&n&&(o*=-1);var a=t/o;a=isNaN(a)?0:Math.min(1,a),i.i.ms=o,i.i.cs=t,i.i.csr=a;var s=i.i.hl,l=i.t[0]["offset"+i.WH],c=(l-s)*a;if(c=isNaN(c)?0:c,n&&(de.n||!de.n&&!de.i)&&(c=l-s-c),c=Math.max(0,c),Se){n&&(c=-(l-s-c));var f;f=e?"translate("+c+"px, 0px)":"translate(0px, "+c+"px)",r["-webkit-transform"]=f,r["-moz-transform"]=f,r["-ms-transform"]=f,r["-o-transform"]=f,r.transform=f}else r[i.lt]=c;P()||i.h.css(r),i.i.ho=c,i.i.tl=l}function _(e,t){var n=t?"removeClass":"addClass",r=e?rt:it,i=e?at:st,o=e?Ir:Nr;r[n](o),i[n](o)}function V(){nt=a(qn+Lr+Kn+qr+Yn),rt=a(qn+Dr+Yn),it=a(qn+Rr+Yn),ot=a(qn+Lr+Kn+Yr+Yn),at=a(qn+Dr+Yn),st=a(qn+Rr+Yn),nt.append(rt),rt.append(it),ot.append(at),at.append(st),Qe.after(ot),Qe.after(nt),Ce&&(nt.on(ar,function(e){e.target===nt[0]&&(B(!0),X(!0,Ge[Zn]()))}),ot.on(ar,function(e){e.target===ot[0]&&(B(!1),X(!1,Ge[$n]()))})),q(!0),q(!1),tt=a(qn+Kn+Ur+Yn),qe.append(tt)}function q(e){var t,i,o,a=Y(e),s=a.xy,l=Bn+a.LT,c=1,f=function(){c=.5},u=function(){c=1},v=function(n){n.originalEvent;var o=a.i.tl,c=a.i.hl,f=a.i.ms*((c/2+r.page(n)[s]-i-c/2)/(o-c));f=isFinite(f)?f:0,Fe&&e&&(de.n||!de.n&&!de.i)&&(f*=-1),Ge[l](t+f),Oe||r.prvD(n)},p=function(e){e=e||e.originalEvent,_e.removeClass(Jr),a.h.removeClass("active"),a.t.removeClass("active"),a.s.removeClass("active"),Oe?(d(Be,nr,v),d(Be,tr,p),d(Be,rr,y),d(Be,ir,m),d(Be,or,N)):(Be.off(nr,v),Be.off(tr,p),Be.off(rr,y),Be.off(ir,m),Be.off(or,N)),u(),t=n,i=n,o!==n&&(mn.scrollStop(),clearTimeout(o),o=n);var r=qe[0].getBoundingClientRect();e.clientX>=r.left&&e.clientX<=r.right&&e.clientY>=r.top&&e.clientY<=r.bottom||K(),ln&&U(!1)},y=function(e){16==e.keyCode&&f()},m=function(e){16==e.keyCode&&u()};a.h.on(er,function(o){if(!Le){var c=(o.originalEvent||o).touches!==n;P()||!_t||c&&!fn||(1===r.mBtn(o)||c)&&(t=Ge[l](),t=t===n?0:t,(Fe&&e&&!de.n||!Fe)&&(t=t<0?0:t),i=r.page(o)[s],_e.addClass(Jr),a.h.addClass("active"),a.s.addClass("active"),Oe?(h(Be,or,N),h(Be,nr,v),h(Be,tr,p)):(Be.on(or,N),Be.on(nr,v),Be.on(tr,p)),r.prvD(o))}}),a.t.on(er,function(t){if(!Le){var l=(t.originalEvent||t).touches!==n;if(!P()&&Xt&&(!l||fn)&&(1===r.mBtn(t)||l)){var u,d=zn[a._wh],v=a.t.offset()[a.lt],g=!0;t.shiftKey&&f();var b=function(){var t=a.i.ho,r=a.i.hl,s=i-v,l=200*c,f=g?Math.max(333,l):l,h={},p=Fe&&e&&(!de.i&&!de.n||qt),y=t>s;p&&(y=t=s;p&&(m=u?t+r>=s:t<=s),m?(clearTimeout(o),mn.scrollStop(),o=n):o=setTimeout(b,f),g=!1};i=r.page(t)[s],_e.addClass(Jr),a.t.addClass("active"),a.s.addClass("active"),Oe?(h(Be,or,N),h(Be,tr,p),h(Be,rr,y),h(Be,ir,m)):(Be.on(or,N),Be.on(tr,p),Be.on(rr,y),Be.on(ir,m)),b(),r.prvD(t)}}}).hover(function(){ln&&(un=!0,U(!0))},function(){ln&&(un=!1,U(!1))}),a.s.on(er,function(e){r.stpP(e)})}function Y(e){return{wh:e?Rn:Nn,WH:e?"Width":"Height",lt:e?Ln:Wn,LT:e?"Left":"Top",xy:e?_n:Vn,XY:e?"X":"Y",_wh:e?"w":"h",_lt:e?"l":"t",t:e?rt:at,h:e?it:st,s:e?nt:ot,i:e?On:kn}}function J(){cn&&U(!0)}function K(){cn&&!_e.hasClass(Jr)&&U(!1)}function Q(e){if(!Le){var t=Ne.callbacks,r=t.onScrollStart,i=t.onScroll,o=t.onScrollStop;De!==n?clearTimeout(De):(ln&&U(!0),P()||qe.addClass(yr),a.isFunction(r)&&x(r,e)),X(!0,Ge[Zn]()),X(!1,Ge[$n]()),a.isFunction(i)&&x(i,e),De=setTimeout(function(){G(),a.isFunction(o)&&x(o,e)},Tn)}}function G(){clearTimeout(De),De=n,ln&&U(!1),P()||qe.removeClass(yr)}function Z(e){return"object"==typeof HTMLElement?e instanceof HTMLElement:e&&"object"==typeof e&&null!==e&&1===e.nodeType&&"string"==typeof e.nodeName}function $(e,t,r,i){var o,l,c,f,u,h={n:t,s:!1,v:n,p:n},d="undefined",v=s.has(e,t),p=s.get(e,t),y=!1,m=!0!==v,g=Gn,b=!1;for("array"!==a.type(r)&&(r=[r]),u=r.length,l=0;l1){var x=0;for(f=0;f1)break}1===x&&(b=!0)}else b=!0;w===n&&(y=!0)}if(m&&!1===v&&y&&(m=!1),!m){o=p,d=a.type(o);var S=function(e){var t=a.type(e);return t===d&&(t!==g||(!!b||o===e))&&(h.s=!0,h.v=o,h.p=o,!0)};for(l=0;l-1&&o.splice(f,1);for(var u=0;u0&&gn&&o-Pe0?qe.addClass(Q):qe.addClass(Kr)),Se&&(!0===Ce?(O(),f.add(mn)):null===Ce&&ve?(O(),f.add(mn)):(f.remove(mn),S())),ce)if(se)if(Ke===n&&(Ke=a(qn+Ar+Yn),Qe.before(Ke)),Cn)Ye.show();else{Ye=a(qn+Hr+Yn),Ke.before(Ye);var Xe={w:-1,h:-1};y(Ye,function(){var e={w:Ye[0].offsetWidth,h:Ye[0].offsetHeight};b(e,Xe)&&(gn&&vt&&e.h>0||dt&&e.w>0?ue():(gn&&!vt&&0===e.h||!dt&&0===e.w)&&ue()),Xe=e}),Cn=!0,null!==me&&Ye.css(Nn,me+"(100% + 1px)")}else Cn&&Ye.hide();i&&(Je.find("*").trigger(Bn),Cn&&Ye.find("*").trigger(Bn));var _e,nt=qe.css("direction"),rt=g(nt,wt,i),it=qe.css("box-sizing"),ot=g(it,yt,i),at={c:i,t:le(qe.css(Hn+Wn)),r:le(qe.css(Hn+En)),b:le(qe.css(Hn+Fn)),l:le(qe.css(Hn+Ln))};try{_e=Cn?Ye[0].getBoundingClientRect():null}catch(e){return}ze="border-box"===it;var st=(Fe="rtl"===nt)?Ln:En,xt=Fe?En:Ln,Et=!1,Ft=!(!Cn||"none"===qe.css(Pn))&&(0===Math.round(_e.right-_e.left)&&(!!re||qe[0].clientWidth-Te>0));if(se&&!Ft){var Lt=qe[0].offsetWidth,Dt=Ke.css(Rn);Ke.css(Rn,Un);var It=qe[0].offsetWidth;Ke.css(Rn,Dt),(Et=Lt!==It)||(Ke.css(Rn,Lt+1),It=qe[0].offsetWidth,Ke.css(Rn,Dt),Et=Lt!==It)}var Rt=(Ft||Et)&&se,Nt=g(Rt,dt,i),Pt=!Rt&&dt,jt=!!Cn&&0===Math.round(_e.bottom-_e.top),Zt=g(jt,vt,i),$t=!jt&&vt,tn="-"+Rn,nn=Rt&&ze||!ze,on=jt&&ze||!ze,un={c:i,t:on?le(qe.css(Mn+Wn+tn)):0,r:nn?le(qe.css(Mn+En+tn)):0,b:on?le(qe.css(Mn+Fn+tn)):0,l:nn?le(qe.css(Mn+Ln+tn)):0},hn={c:i,t:le(qe.css(An+Wn)),r:le(qe.css(An+En)),b:le(qe.css(An+Fn)),l:le(qe.css(An+Ln))},bn={h:String(qe.css(In+Nn)),w:String(qe.css(In+Rn))},On={},kn={};if(Te=at.l+at.r,Ae=at.t+at.b,at.c=w(at,mt),He=un.l+un.r,Me=un.t+un.b,un.c=w(un,gt),We=hn.l+hn.r,Ee=hn.t+hn.b,hn.c=w(hn,bt),bn.ih=parseInt(bn.h),bn.iw=parseInt(bn.w),bn.ch=bn.h.indexOf("px")>-1,bn.cw=bn.w.indexOf("px")>-1,bn.c=b(bn,pt,i),wt=nt,yt=it,dt=Rt,vt=jt,mt=at,gt=un,bt=hn,pt=bn,rt&&Cn&&Ye.css(Pn,xt),at.c||rt||ie||Nt||Zt||ot||ce){var Tn={},Jn={};C(kn,An,[-at.t,-at.r,-at.b,-at.l]),re?(C(Tn,jn,[at.t,at.r,at.b,at.l]),wn?C(Jn,Hn):C(On,Hn)):(C(Tn,jn),wn?C(Jn,Hn,[at.t,at.r,at.b,at.l]):C(On,Hn,[at.t,at.r,at.b,at.l])),Qe.css(Tn),Ve.css(Jn)}zn={w:Qe[0].offsetWidth,h:Qe[0].offsetHeight};var Kn=!!wn&&A();if(jt&&(Zt||ie||ot||bn.c||at.c||un.c)?(bn.cw&&(On[In+Nn]=bn.ch?bn.ih-(re?Ae:0)+(ze?-Me:Ae):jn),On[Nn]=Un):(Zt||ie)&&(On[In+Nn]=jn,On[Nn]=Xn),Rt&&(Nt||ie||ot||bn.c||at.c||un.c||rt)?(bn.cw&&(On[In+Rn]=bn.cw?bn.iw-(re?Te:0)+(ze?-He:Te)+(we.y?xe.y:0):jn),On[Rn]=Un,kn[In+Rn]=Xn):(Nt||ie)&&(On[In+Rn]=jn,On[Rn]=Xn,On[Pn]=jn,kn[In+Rn]=jn),Rt&&(bn.cw||(On[In+Rn]=jn),kn[Rn]=wn&&Ie?Kn.dw:Un,On[Rn]=Un,On[Pn]=xt),jt&&(bn.ch||(On[In+Nn]=jn),kn[Nn]=wn?Ue?Kn.dh:Un:$e[0].clientHeight),se&&Ke.css(kn),$e.css(On),On={},kn={},ut=ut||{x:!1,y:!1},e||t||rt||ot||ie||Nt||Rt||Zt||jt||bn.c||pe||De||ae||$||I||Re||Be||ne||ie||Re||Be||i){var Qn={},Gn=ut.y&&ht.ys&&!he?we.y?Ge.css(st):-ge.y:0,tr=ut.x&&ht.xs&&!he?we.x?Ge.css(Fn):-ge.x:0;C(Qn,jn),Ge.css(Qn),jt&&!wn&&($e.css("overflow","hidden"),On.overflow=jn);var nr=fe(),rr={w:nr.clientWidth,h:nr.clientHeight},ir={w:nr.scrollWidth,h:nr.scrollHeight},or={w:wn&&Kn&&!Ie?Kn.ow:Rt?rr.w:ir.w,h:wn&&Kn&&!Ue?Kn.oh:jt?rr.h:ir.h};Qn[Fn]=$t?jn:tr,Qn[st]=Pt?jn:Gn,Ge.css(Qn);var ar=qe[0],sr={w:ar.clientWidth,h:ar.clientHeight},lr={w:Math.max(or.w+(re?Te:0),sr.w-Te)-(Ie&&wn&&Rt?We+(ze?0:Te+He):0),h:Math.max(or.h+(re?Ae:0),sr.h-Ae)};if(lr.c=b(lr,Ot,i),Ot=lr,se){(lr.c||jt||Rt)&&(kn[Rn]=lr.w,kn[Nn]=lr.h);var cr=kn[Rn]+(ze?He:-Te),fr=kn[Nn]+(ze?Me:-Te),ur={};(!Rt||!Rt&&un.c)&&(kn[Rn]=sr.w-(ze?0:Te+He)-1-We),(!jt||!jt&&un.c)&&(kn[Nn]=sr.h-(ze?0:Ae+Me)-1-Ee),bn.cw&&bn.iw===cr&&(kn[Rn]=cr+(ze?0:Te)+1),bn.ch&&bn.ih===fr&&(kn[Nn]=fr+(ze?0:Ae)+1),Rt&&(rr.w0&&(kn[Rn]=Math.max(1,kn[Rn]),kn[Nn]=Math.max(1,kn[Nn])),wn&&et.css(ur),Ke.css(kn)}Rt&&(On[Rn]=Xn),!Rt||ze||en||(On[Pn]="none"),$e.css(On),On={};var hr=nr.getBoundingClientRect(),dr={w:nr.scrollWidth,h:nr.scrollHeight};if(hr.width!==n){var wr=hr.width,xr=hr.height;dr.w+=le(wr+.001)-wr,dr.h+=le(xr+.001)-xr}dr.c=t=b(dr,ct,i),ct=dr,e=b(sr={w:ar.clientWidth,h:ar.clientHeight},lt),lt=sr;var Cr={x:"v-s"===ke.x,y:"v-s"===ke.y},Sr={x:"v-h"===ke.x,y:"v-h"===ke.y},Or={x:"s"===ke.x,y:"s"===ke.y},kr={x:Math.max(0,dr.w-sr.w+(re?Te:0)),y:Math.max(0,dr.h-sr.h+(re?Ae:0))},zr=wn&&(0===zn.w||0===zn.h);zr&&(kr.x=0,kr.y=0);var Mr={x:kr.x>0,y:kr.y>0},Wr={x:Mr.x,y:Mr.y};(Cr.x||Sr.x)&&(Wr.x=Mr.y&&!Cr.y&&!Sr.y),(Cr.y||Sr.y)&&(Wr.y=Mr.x&&!Cr.x&&!Sr.x),Wr.xs=!!Wr.x&&(Or.x||Cr.x),Wr.ys=!!Wr.y&&(Or.y||Cr.y);var Er={x:Mr.x&&Wr.xs,y:Mr.y&&Wr.ys},Fr=zt;if(kr.c=b(kr,zt,_n,Vn,i),zt=kr,Mr.c=b(Mr,ut,_n,Vn,i),ut=Mr,Wr.c=b(Wr,ht,_n,Vn,i),ht=Wr,we.x||we.y){var Lr=i,Dr={};if((Mr.x||Mr.y)&&(Dr.w=we.y&&Mr.y?dr.w+xe.y:jn,Dr.h=we.x&&Mr.x?dr.h+xe.x:jn,Lr=g(Dr,ft,i),ft=Dr),Mr.c||Wr.c||dr.c||rt||Nt||Zt||Rt||jt||pe){On[Mn+xt]=jn,On[An+xt]=jn,we.x&&Mr.x&&Wr.xs?(jt&&(On[An+Fn]=he?jn:xe.x),On[Mn+Fn]=jt||he?jn:xe.x+"px solid transparent"):(Dr.h=jn,Lr=!0,On[Mn+Fn]=jn,On[An+Fn]=jn),we.y&&Mr.y&&Wr.ys?(Rt&&(On[An+st]=he?jn:xe.y),On[Mn+st]=he?jn:xe.y+"px solid transparent"):(Dr.w=jn,Lr=!0,On[Mn+st]=jn,On[An+st]=jn)}if(he&&(Dr.w=jn,Dr.h=jn,Lr=!0),Lr){var Ir={};Ir[Rn]=Wr.y?Dr.w:jn,Ir[Nn]=Wr.x?Dr.h:jn,Ze===n&&(Ze=a(qn+Tr+Yn),Ge.prepend(Ze)),Ze.css(Ir)}$e.css(On)}var Rr={},Tn={};if(e||Mr.c||Wr.c||dr.c||De||ot||pe||rt||ae||Zt){Rr[xt]=jn;var Nr=function(){Rr[Fn]=jn,Sn.h=0},Pr=function(){Rr[st]=jn,Sn.w=0};if(Mr.x&&Wr.xs?(Rr["overflow-x"]=Bn,he?Nr():(Rr[Fn]=-(we.x?xe.x:ge.x),Sn.h=we.x?xe.y:0)):(Rr["overflow-x"]=jn,Nr()),Mr.y&&Wr.ys?(Rr["overflow-y"]=Bn,he?Pr():(Rr[st]=-(we.y?xe.y:ge.y),Sn.w=we.y?xe.x:0)):(Rr["overflow-y"]=jn,Pr()),(zn.h-1,mi=pi.y>-1;(yi||mi)&&(mi&&Ge[$n](pi.y),yi&&(Fe&&qt&&de.i?Ge[Zn](0):Ge[Zn](pi.x)))}Wt=ai}else wn||(Fe&&de.i&&we.y&&Mr.x&&qt&&(l.l+=Sn.w),Ge[Zn](l.l),Ge[$n](l.t));rt&&a.isFunction(E)&&x(E,{isRTL:Fe,dir:nt}),e&&a.isFunction(L)&&x(L,{width:lt.w,height:lt.h}),t&&a.isFunction(F)&&x(F,{width:ct.w,height:ct.h}),(Mr.c||Wr.c)&&a.isFunction(M)&&x(M,{x:Mr.x,y:Mr.y,xScrollable:Wr.xs,yScrollable:Wr.ys,clipped:Wr.x||Wr.y}),kr.c&&a.isFunction(W)&&x(W,{x:kr.x,y:kr.y})}xn&&(Mr.c||Gt.c)&&(Gt.f||ee(),we.y&&Mr.x&&$e.css(Dn+Rn,Gt.w+xe.y),we.x&&Mr.y&&$e.css(Dn+Nn,Gt.h+xe.x),Gt.c=!1),p(Je),p(Ye),a.isFunction(T)&&x(T,{forced:i})}}if(Z(t)){if(o.has(t)){var he=o.get(t);return he.options(l),he}var de,ve,pe,ye,me,ge,be,we,xe,Ce,Se,Oe,ke,ze,Te,Ae,He,Me,We,Ee,Fe,Le,De,Ie,Re,Ne,Pe,je,Ue,Be,Xe,_e,Ve,qe,Ye,Je,Ke,Qe,Ge,Ze,$e,et,tt,nt,rt,it,ot,at,st,lt,ct,ft,ut,ht,dt,vt,pt,yt,mt,gt,bt,wt,xt,Ct,St,Ot,kt,zt,Tt,At,Ht,Mt,Wt,Et,Ft,Lt,Dt,It,Rt,Nt,Pt,jt,Ut,Bt,Xt,_t,Vt,qt,Yt,Jt,Kt,Qt,Gt,Zt,$t,en,tn,nn,rn,on,an,sn,ln,cn,fn,un,hn,dn,vn,pn,yn,mn=new e[i],gn=!1,bn=!1,wn=!1,xn=!1,Cn=!1,Sn={w:0,h:0},On={},kn={},zn={},Tn=175,An="margin-",Hn="padding-",Mn="border-",Wn="top",En="right",Fn="bottom",Ln="left",Dn="min-",In="max-",Rn="width",Nn="height",Pn="float",jn="",Un="auto",Bn="scroll",Xn="100%",_n="x",Vn="y",qn='
',Jn=".",Kn=" ",Qn="scrollbar",Gn="string",Zn=Bn+"Left",$n=Bn+"Top",er="mousedown touchstart",tr="mouseup touchend",nr="mousemove touchmove",rr="keydown",ir="keyup",or="selectstart",ar="transitionend webkitTransitionEnd oTransitionEnd",sr="~_overlayScrollbarsRO_~",lr="os-html",cr="os-host",fr=cr+"-textarea",ur=cr+"-"+Qn+"-horizontal-hidden",hr=cr+"-"+Qn+"-vertical-hidden",dr=cr+"-transition",vr=cr+"-rtl",pr=cr+"-resize-disabled",yr=cr+"-scrolling",mr=cr+"-overflow",gr=mr+"-x",br=mr+"-y",wr="os-textarea",xr=wr+"-cover",Cr="os-padding",Sr="os-viewport",Or=Sr+"-native-scrollbars-invisible",kr=Sr+"-native-scrollbars-overlaid",zr="os-content",Tr="os-content-arrange",Ar="os-content-glue",Hr="os-size-auto-observer",Mr="os-resize-observer",Wr="os-resize-observer-item",Er=Wr+"-final",Fr="os-text-inherit",Lr="os-"+Qn,Dr=Lr+"-track",Ir=Dr+"-off",Rr=Lr+"-handle",Nr=Rr+"-off",Pr=Lr+"-unusable",jr=Lr+"-"+Un+"-hidden",Ur=Lr+"-corner",Br=Ur+"-resize",Xr=Br+"-both",_r=Br+"-horizontal",Vr=Br+"-vertical",qr=Lr+"-horizontal",Yr=Lr+"-vertical",Jr="os-dragging",Kr="os-theme-none",Qr={},Gr=33,Zr=11,$r=[112,113,114,115,116,117,118,119,120,121,123,33,34,37,38,39,40,16,17,18,19,20,144],ei=[],ti={x:0,y:0},ni={w:0,h:0};if(mn.sleep=function(){Le=!0},mn.update=function(e){if(e===Un){var t=se(),n=ae();(t||n)&&ue(!1,n)}else"zoom"===e?ue(!0,!0):(e=Le||e,Le=!1,ue(!1,!1,e))},mn.options=function(e,t){if(a.isEmptyObject(e)||!a.isPlainObject(e)){if("string"===a.type(e)){if(arguments.length>=2){var n={};return s.set(n,e,t,!0),oe(n),void ue()}return s.get(Re,e)}return Re}oe(e);var r=Le||!1;Le=!1,ue(),Le=r},mn.destroy=function(){bn=!0,f.remove(mn),O(),m(Je),Cn&&m(Ye),Je.remove(),Ke!==n&&Ke.remove(),Ze!==n&&Ze.remove(),Cn&&Ye.remove(),Oe?(d(qe,"mouseenter",J),d(qe,"mouseleave",K)):(qe.off("mouseenter",J),qe.off("mouseleave",K)),nt.remove(),ot.remove(),tt&&tt.remove(),dn||T(),$e.contents().unwrap().unwrap().unwrap(),xn&&Xe.removeClass(lr),wn?(Ve.off(Bn,R),Ve.off("drop",L),Ve.off("focus",D),Ve.off("focusout",I),pe>9||!ve?Ve.off("input",W):(Ve.off(rr,E),Ve.off(ir,F)),et.remove(),Ve.removeClass(wr).removeClass(Fr),Ve.unwrap().removeAttr("style"),qe.remove()):(Ve.removeClass(cr),qe.removeClass(cr).removeClass(pr).removeClass(vr).removeClass(ur).removeClass(hr).removeClass(dr).removeClass(yr).removeClass(mr).removeClass(gr).removeClass(br).removeClass(Kr).removeClass(Yt)),o.rem(t);var e=Ne.callbacks.onDestroyed;a.isFunction(e)&&x(e);for(var r in mn)delete mn[r];mn=n},mn.scroll=function(t,r,i,o){if(0===arguments.length||t===n){var s=On,l=kn,c=qt&&Fe&&de.i,f=qt&&Fe&&de.n,u=s.cs,h=s.csr,d=s.ms;return h=c?1-h:h,u=c?d-u:u,u*=f?-1:1,d*=f?-1:1,{x:{position:u,ratio:h,max:d,handleOffset:s.ho,handleLength:s.hl,handleLengthRatio:s.hlr,trackLength:s.tl,isRTL:Fe,isRTLNormalized:qt},y:{position:l.cs,ratio:l.csr,max:l.ms,handleOffset:l.ho,handleLength:l.hl,handleLengthRatio:l.hlr,trackLength:l.tl}}}var v,p=[_n,Ln,"l"],y=[Vn,Wn,"t"],m=["+=","-=","*=","/="],g={},b="object"===a.type(r),w={axis:"xy",block:["begin","begin"],margin:[0,0,0,0]},x=[_n,Vn,"xy","yx"],C=["begin","end"],S=t.hasOwnProperty("el"),O=S?t.el:t,k=O instanceof a,z=!k&&Z(O),T=function(e,t){for(v=0;v0)t.x=e[0],t.y=e[1];else if(a.type(e)===Gn||"number"===a.type(e))t.x=e,t.y=e;else if("object"===a.type(e)){e=a.extend({},e),v=0;for(var n in e)e.hasOwnProperty(n)&&(v>2&&delete e[n],v++);var r=function(t){var n=t?p:y;for(v=0;v2){var d=r.substr(0,2);for(v=0;v/g,(h?"-":jn)+Xn)).replace(/px/g,jn)).replace(/%/g," * "+f*(u&&de.n?-1:1)/100)).replace(/vw/g," * "+zn.w)).replace(/vh/g," * "+zn.h),o=e.parseInt(e.parseFloat(e.eval(r)).toFixed())}else"number"===a.type(r)&&(o=r);if(!isNaN(o)&&o!==n&&"number"===a.type(o)){var p=qt&&u,y=c*(p&&de.n?-1:1),g=p&&de.i,b=p&&de.n;switch(y=g?f-y:y,i){case"+=":s=y+o;break;case"-=":s=y-o;break;case"*=":s=y*o;break;case"/=":s=y/o;break;default:s=o}g&&(s=f-s),b&&(s*=-1),u&&de.n?(s=Math.max(f,s),s=Math.min(0,s)):(s=Math.min(f,s),s=Math.max(0,s)),s===c&&(s=n)}return s};if(k||z){var M=k?O:a(O);if(0===M.length)return;if(S){var W,E,F,L=t.axis,D=t.block,I=a.type(D),R=t.margin,N=a.type(R);if(I===Gn)D=[D,D];else if("array"===I)if((E=D.length)>2||E<1)D=n;else{for(W=!0,1===E&&(D[1]="begin"),v=0;v0||b){var re={};if(te&&(re[Zn]=g.x),ne&&(re[$n]=g.y),b)Ge.animate(re,r);else{var ie={duration:r,complete:o};if("array"===a.type(i)){var oe={};oe[Zn]=i[0],oe[$n]=i[1],ie.specialEasing=oe}else ie.easing=i;Ge.animate(re,ie)}}else te&&Ge[Zn](g.x),ne&&Ge[$n](g.y)},mn.scrollStop=function(e,t,n){Ge.stop(e,t,n)},mn.getElements=function(){return{target:Ve[0],host:qe[0],padding:Qe[0],viewport:Ge[0],content:$e[0],scrollbarHorizontal:{scrollbar:nt[0],track:rt[0],handle:it[0]},scrollbarVertical:{scrollbar:ot[0],track:at[0],handle:st[0]},scrollbarCorner:tt}},mn.getState=function(e){var t=function(e){if(!a.isPlainObject(e))return e;var t=a.extend(!0,{},e);s.del(t,"c");var n=function(e,n){t.hasOwnProperty(e)&&(t[n]=t[e],delete t[e])};return n("w",Rn),n("h",Nn),t},n={sleeping:t(Le)||!1,autoUpdate:t(!en),widthAuto:t(dt),heightAuto:t(vt),padding:t(mt),overflowAmount:t(zt),hideOverflow:t(ht),hasOverflow:t(ut),contentScrollSize:t(ct),viewportSize:t(zn),hostSize:t(lt)};return a.type(e)===Gn?s.get(n,e):n},function(e,t){Ie=c.defaultOptions,ye=c.nativeScrollbarStyling,ge=a.extend(!0,{},c.nativeScrollbarSize),we=a.extend(!0,{},c.nativeScrollbarIsOverlaid),xe=a.extend(!0,{},c.overlayScrollbarDummySize),de=a.extend(!0,{},c.rtlScrollBehavior),oe(a.extend(!0,{},Ie,t));var n=Ne.callbacks;if(we.x&&we.x&&!Ne.nativeScrollbarsOverlaid.initialize){var i=n.onInitializationWithdrawn;return a.isFunction(i)&&x(i),!1}me=c.cssCalc,pe=c.msie,ve=c.autoUpdateRecommended,Ce=c.supportTransition,Se=c.supportTransform,Oe=c.supportPassiveEvents,ke=c.supportResizeObserver,tn=c.supportMutationObserver,Be=a(e.ownerDocument),Ue=a(Be[0].defaultView||Be[0].parentWindow),Xe=Be.find("html").first(),_e=Xe.find("body").first(),Ve=a(e),wn=Ve.is("textarea");var o;if((xn=Ve.is("body"))&&((o={}).l=Math.max(Ve[Zn](),Xe[Zn](),Ue[Zn]()),o.t=Math.max(Ve[$n](),Xe[$n](),Ue[$n]())),wn){Ve.wrap(qn+fr+Yn),Ve.addClass(wr).addClass(Fr),qe=Ve.parent();var s={};Ne.sizeAutoCapable||(s[Rn]=Ve.css(Rn),s[Nn]=Ve.css(Nn)),qe.css(s),qe.wrapInner(qn+zr+Kn+Fr+Yn).wrapInner(qn+Sr+Kn+Fr+Yn).wrapInner(qn+Cr+Kn+Fr+Yn),$e=qe.find(Jn+zr).first(),Ge=qe.find(Jn+Sr).first(),Qe=qe.find(Jn+Cr).first(),et=a(qn+xr+Yn),$e.prepend(et),Ve.on(Bn,R),Ve.on("drop",L),Ve.on("focus",D),Ve.on("focusout",I),pe>9||!ve?Ve.on("input",W):(Ve.on(rr,E),Ve.on(ir,F))}else Ve.addClass(cr),(qe=Ve).wrapInner(qn+zr+Yn).wrapInner(qn+Sr+Yn).wrapInner(qn+Cr+Yn),$e=qe.find(Jn+zr).first(),Ge=qe.find(Jn+Sr).first(),Qe=qe.find(Jn+Cr).first(),$e.on(ar,function(e){!0!==At&&ce((e=e.originalEvent||e).propertyName)&&ue(Un)});if(V(),Oe?h(Ge,Bn,Q):Ge.on(Bn,Q),ye&&(we.x&&we.y?Ge.addClass(kr):Ge.addClass(Or)),tn){var l,f=r.mO(),d=r.now();Zt=new f(function(e){if(gn&&!Le){var t=!1;a.each(e,function(){var e=this,n=this.target,r=e.attributeName;if(t="class"===r?re(e.oldValue,n.className):"style"!==r||e.oldValue!==n.style.cssText)return!1}),t&&mn.update(Un)}}),$t=new f(function(e){if(gn&&!Le){for(var t=!1,n=0;nZr||!o?a():l=setTimeout(a,Zr)}}})}xn&&(Xe.addClass(lr),Ge[Zn](o.l),Ge[$n](o.t)),Je=a(qn+"os-resize-observer-host"+Yn),qe.prepend(Je),y(Je,u),u(),mn.update(Un),setTimeout(function(){Ce&&!bn&&qe.addClass(dr)},333),gn=!0;var v=n.onInitialized;return a.isFunction(v)&&x(v),gn}(t,l))return o.add(t,mn),mn;mn=n}}var h,d,v={className:"os-theme-dark",resize:"none",sizeAutoCapable:!0,clipAlways:!0,normalizeRTL:!0,paddingAbsolute:!1,autoUpdate:null,autoUpdateInterval:33,nativeScrollbarsOverlaid:{showNativeScrollbars:!1,initialize:!0},overflowBehavior:{x:"scroll",y:"scroll"},scrollbars:{visibility:"auto",autoHide:"never",autoHideDelay:800,dragScrolling:!0,clickScrolling:!1,touchSupport:!0},textarea:{dynWidth:!1,dynHeight:!1},callbacks:{onInitialized:null,onInitializationWithdrawn:null,onDestroyed:null,onScrollStart:null,onScroll:null,onScrollStop:null,onOverflowChanged:null,onOverflowAmountChanged:null,onDirectionChanged:null,onContentSizeChanged:null,onHostSizeChanged:null,onUpdated:null}};e[i]=function(e,t){if(0===arguments.length)return this;l();var r,i=[];return a.isPlainObject(t)?e&&e.length?e.length>1?(a.each(e,function(){(r=this)!==n&&i.push(u(r,t,h,d))}),i):u(e[0],t,h,d):u(e,t,h,d):e?e.length&&e.length>0?e.length>1?(a.each(e,function(){r=o.get(this),"!"===t?r!==n&&i.push(r):i.push(r)}),i):o.get(e[0]):o.get(e):void 0},e[i].globals=function(){l();var e=a.extend(!0,{},h);return delete e.msie,e},e[i].defaultOptions=function(e){l();var t=h.defaultOptions;if(e===n)return a.extend(!0,{},t);h.defaultOptions=a.extend(!0,{},t,e)}}(o,function(e){function t(e){for(var t=0;t-1&&(delete t[i],r.splice(n,1))},has:function(e){return t(e)!==n},get:t}}(a),a,function(e){function t(r,i,o,a,s){var l=!1;if(o=o===n?"":o,"string"!=typeof i)return l;if(0===i.length)return l;if(""===o){for(var c=i.split("."),f=r,u="",h=!1,d=0;d-1&&(delete n[r],t.splice(o,1))}function a(e){return s(e)!==n}function s(e){for(var n=0;n
'),u=function(){s.append(f);var e,t="overflow",n="hidden",r=f[0],o=c(f.children("div").first());return 0===r[a.oH]&&f.hide().show(),e={x:r[a.oH]-r[a.cH],y:r[a.oW]-r[a.cW]},i.restrictedMeasuring=function(){f.css(t,n);var e={w:r[a.sW],h:r[a.sH]};f.css(t,"visible");var o={w:r[a.sW],h:r[a.sH]};return e.w-o.w!=0||e.h-o.h!=0}(),i.nativeScrollbarStyling=(f.addClass("os-viewport-native-scrollbars-invisible"),f.css(t,n).hide().css(t,"scroll").show(),r[a.oH]-r[a.cH]==0&&r[a.oW]-r[a.cW]==0),i.rtlScrollBehavior=function(){f.css({"overflow-y":n,direction:"rtl"}).scrollLeft(0);var e=f.offset(),t=o.offset();f.scrollLeft(999);var r=o.offset();return{i:e.left===t.left,n:t.left-r.left==0}}(),f.removeAttr(a.s).remove(),e}(),v={x:0===u.x,y:0===u.y};function d(e){var r=!1,o="Webkit Moz ms O".split(" "),i=t.createElement("div"),a=null;if(e=e.toLowerCase(),i.style[e]!==n&&(r=!0),!1===r){a=e.charAt(0).toUpperCase()+e.substr(1);for(var s=0;s0)return parseInt(t.substring(n+5,t.indexOf(".",n)),10);if(t.indexOf("Trident/")>0){var r=t.indexOf("rv:");return parseInt(t.substring(r+3,t.indexOf(".",r)),10)}var o=t.indexOf("Edge/");return o>0&&parseInt(t.substring(o+5,t.indexOf(".",o)),10)}(),i.cssCalc=function(){for(var e=t.createElement("div"),n=["calc","-webkit-calc","-moz-calc","-o-calc"],r=0;r0){var e=r.wW(),v=r.wH(),h=e-t,p=v-n;if(0===h&&0===p)return;var y=Math.round(e/(t/100)),m=Math.round(v/(n/100)),x=Math.abs(h),w=Math.abs(p),g=Math.abs(y),b=Math.abs(m),C=d(),S=x>2&&w>2,O=!u(g,b);if(!!(S&&O&&(C!==o&&o>0))){s.append(f);var z=f[0];i.nativeScrollbarSize={x:z[a.oH]-z[a.cH],y:z[a.oW]-z[a.cW]},f.remove(),c.each(l.all(),function(){l.has(this)&&l.get(this).update("zoom")})}t=e,n=v,o=C}})}function u(e,t){var n=Math.abs(e),r=Math.abs(t);return!(n===r||n+1===r||n-1===r)}function d(){var t=e.screen.deviceXDPI||0,n=e.screen.logicalXDPI||1;return e.devicePixelRatio||t/n}}()}function y(e){var t,o=this,i="autoUpdate",a=i+"Interval",s=[],l=[],f=!1,u=33,v=u,d=r.now(),h=function(){if(s.length>0&&f){t=r.rAF()(function(){h()});var e=r.now(),o=e-d;if(o>v){d=e-o%v;for(var c=u,p=0;pw&&(y.update("auto"),l[p]=new Date(g+=w)),c=Math.max(1,Math.min(c,w))}}v=c}}else v=u};o.add=function(t){-1===c.inArray(t,s)&&(s.push(t),l.push(r.now()),s.length>0&&!f&&(f=!0,e.autoUpdateLoop=f,h()))},o.remove=function(o){var i=c.inArray(o,s);i>-1&&(l.splice(i,1),s.splice(i,1),0===s.length&&f&&(f=!1,e.autoUpdateLoop=f,t!==n&&(r.cAF()(t),t=-1)))}}function m(t,u,v,d){if(Qr(t)){if(l.has(t)){var h=l.get(t);return h.options(u),h}var p,y,m,x,w,g,b,C,S,O,z,H,W,k,M,A,T,E,L,F,D,I,R,P,N,U,B,j,_,V,q,X,Y,J,K,Q,G,Z,$,ee,te,ne,re,oe,ie,ae,se,le,ce,fe,ue,ve,de,he,pe,ye,me,xe,we,ge,be,Ce,Se,Oe,ze,He,We,ke,Me,Ae,Te,Ee,Le,Fe,De,Ie,Re,Pe,Ne,Ue,Be,je,_e,Ve,qe,Xe,Ye,Je,Ke,Qe,Ge,Ze,$e,et,tt,nt,rt,ot,it,at,st,lt,ct,ft,ut,vt,dt,ht,pt,yt,mt,xt,wt=new e[o],gt=!1,bt=!1,Ct=!1,St=!1,Ot=!1,zt={w:0,h:0},Ht={},Wt={},kt={},Mt=175,At="-hidden",Tt="margin-",Et="padding-",Lt="border-",Ft="top",Dt="right",It="bottom",Rt="left",Pt="min-",Nt="max-",Ut="width",Bt="height",jt="float",_t="",Vt="auto",qt="scroll",Xt="100%",Yt="x",Jt="y",Kt='
',Gt=".",Zt=" ",$t="scrollbar",en="-horizontal",tn="-vertical",nn=qt+"Left",rn=qt+"Top",on="mousedown touchstart",an="mouseup touchend",sn="mousemove touchmove",ln="keydown",cn="keyup",fn="selectstart",un="transitionend webkitTransitionEnd oTransitionEnd",vn="__overlayScrollbarsRO__",dn="os-",hn=dn+"html",pn=dn+"host",yn=pn+"-textarea",mn=pn+"-"+$t+en+At,xn=pn+"-"+$t+tn+At,wn=pn+"-transition",gn=pn+"-rtl",bn=pn+"-resize-disabled",Cn=pn+"-scrolling",Sn=pn+"-overflow",On=Sn+"-x",zn=Sn+"-y",Hn=dn+"textarea",Wn=Hn+"-cover",kn=dn+"padding",Mn=dn+"viewport",An=Mn+"-native-scrollbars-invisible",Tn=Mn+"-native-scrollbars-overlaid",En=dn+"content",Ln=dn+"content-arrange",Fn=dn+"content-glue",Dn=dn+"size-auto-observer",In=dn+"resize-observer",Rn=dn+"resize-observer-item",Pn=Rn+"-final",Nn=dn+"text-inherit",Un=dn+$t,Bn=Un+"-track",jn=Bn+"-off",_n=Un+"-handle",Vn=_n+"-off",qn=Un+"-unusable",Xn=Un+"-"+Vt+At,Yn=Un+"-corner",Jn=Yn+"-resize",Kn=Jn+"-both",Qn=Jn+en,Gn=Jn+tn,Zn=Un+en,$n=Un+tn,er=dn+"dragging",tr=dn+"theme-none",nr={},rr=33,or=11,ir=[112,113,114,115,116,117,118,119,120,121,123,33,34,37,38,39,40,16,17,18,19,20,144],ar=[],sr={x:0,y:0},lr={w:0,h:0};if(wt.sleep=function(){R=!0},wt.update=function(e){if(e===Vt){var t=io(),n=oo();(t||n)&&co(!1,n)}else"zoom"===e?co(!0,!0):(e=R||e,R=!1,co(!1,!1,e))},wt.options=function(e,t){if(c.isEmptyObject(e)||!c.isPlainObject(e)){if(c.type(e)===i.s){if(arguments.length>=2){var n={};return f.set(n,e,t,!0),ro(n),void co()}return f.get(U,e)}return U}ro(e);var r=R||!1;R=!1,co(),R=r},wt.destroy=function(){bt=!0,d.remove(wt),Cr(),pr(G),Ot&&pr(Q),G.remove(),Z!==n&&Z.remove(),te!==n&&te.remove(),Ot&&Q.remove(),H?(ur(K,"mouseenter",Xr),ur(K,"mouseleave",Yr)):(K.off("mouseenter",Xr),K.off("mouseleave",Yr)),ie.remove(),le.remove(),oe&&oe.remove(),pt||zr(),ne.contents().unwrap().unwrap().unwrap(),St&&X.removeClass(hn),Ct?(J.off(qt,Dr),J.off("drop",Er),J.off("focus",Lr),J.off("focusout",Fr),m>9||!y?J.off("input",Mr):(J.off(ln,Ar),J.off(cn,Tr)),re.remove(),J.removeClass(Hn).removeClass(Nn),J.unwrap().removeAttr(a.s),K.remove()):(J.removeClass(pn),K.removeClass(pn).removeClass(bn).removeClass(gn).removeClass(mn).removeClass(xn).removeClass(wn).removeClass(Cn).removeClass(Sn).removeClass(On).removeClass(zn).removeClass(tr).removeClass(Qe)),l.rem(t);var e=B.callbacks.onDestroyed;for(var r in c.isFunction(e)&&wr(e),wt)delete wt[r];wt=n},wt.scroll=function(t,r,o,s){if(0===arguments.length||t===n){var l=Ht,f=Wt,u=Ke&&I&&p.i,v=Ke&&I&&p.n,d=l.cs,h=l.csr,y=l.ms;return d=u?y-d:d,{x:{position:d*=v?-1:1,ratio:h=u?1-h:h,max:y*=v?-1:1,handleOffset:l.ho,handleLength:l.hl,handleLengthRatio:l.hlr,trackLength:l.tl,isRTL:I,isRTLNormalized:Ke},y:{position:f.cs,ratio:f.csr,max:f.ms,handleOffset:f.ho,handleLength:f.hl,handleLengthRatio:f.hlr,trackLength:f.tl}}}var m,x=[Yt,Rt,"l"],w=[Jt,Ft,"t"],g=["+=","-=","*=","/="],b={},C=c.type(r)===i.o,S="end",O="begin",H={axis:"xy",block:[O,O],margin:[0,0,0,0]},W=[Yt,Jt,"xy","yx"],k=[O,S],M=t.hasOwnProperty("el"),A=M?t.el:t,T=A instanceof c,E=!T&&Qr(A),L=function(e,t){for(m=0;m0)t.x=e[0],t.y=e[1];else if(c.type(e)===i.s||c.type(e)===i.n)t.x=e,t.y=e;else if(c.type(e)===i.o){for(var n in e=c.extend({},e),m=0,e)e.hasOwnProperty(n)&&(m>2&&delete e[n],m++);var r=function(t){var n=t?x:w;for(m=0;m2){var y=r.substr(0,2);for(m=0;m/g,(h?"-":_t)+Xt)).replace(/px/g,_t)).replace(/%/g,v+u*(d&&p.n?-1:1)/100)).replace(/vw/g,v+kt.w)).replace(/vh/g,v+kt.h),a=e.parseInt(e.parseFloat(e.eval(r)).toFixed())}else c.type(r)===i.n&&(a=r);if(!isNaN(a)&&a!==n&&c.type(a)===i.n){var x=Ke&&d,w=f*(x&&p.n?-1:1),b=x&&p.i,C=x&&p.n;switch(w=b?u-w:w,o){case"+=":s=w+a;break;case"-=":s=w-a;break;case"*=":s=w*a;break;case"/=":s=w/a;break;default:s=a}b&&(s=u-s),C&&(s*=-1),d&&p.n?(s=Math.max(u,s),s=Math.min(0,s)):(s=Math.min(u,s),s=Math.max(0,s)),s===f&&(s=n)}return s};if(T||E){var R=T?A:c(A);if(0===R.length)return;if(M){var P,N,U,B=t.axis,j=t.block,_=c.type(j),V=t.margin,q=c.type(V);if(_===i.s)j=[j,j];else if(_===i.a)if((N=j.length)>2||N<1)j=n;else{for(P=!0,1===N&&(j[1]=O),m=0;m0||C){var ue={};if(ce&&(ue[nn]=b.x),fe&&(ue[rn]=b.y),C)ee.animate(ue,r);else{var ve={duration:r,complete:s};if(c.type(o)===i.a){var de={};de[nn]=o[0],de[rn]=o[1],ve.specialEasing=de}else ve.easing=o;ee.animate(ue,ve)}}else ce&&ee[nn](b.x),fe&&ee[rn](b.y)},wt.scrollStop=function(e,t,n){ee.stop(e,t,n)},wt.getElements=function(){return{target:J[0],host:K[0],padding:$[0],viewport:ee[0],content:ne[0],scrollbarHorizontal:{scrollbar:ie[0],track:ae[0],handle:se[0]},scrollbarVertical:{scrollbar:le[0],track:ce[0],handle:fe[0]},scrollbarCorner:oe}},wt.getState=function(e){var t=function(e){if(!c.isPlainObject(e))return e;var t=c.extend(!0,{},e);f.del(t,"c");var n=function(e,n){t.hasOwnProperty(e)&&(t[n]=t[e],delete t[e])};return n("w",Ut),n("h",Bt),t},n={sleeping:t(R)||!1,autoUpdate:t(!rt),widthAuto:t(ye),heightAuto:t(me),padding:t(ge),overflowAmount:t(Me),hideOverflow:t(pe),hasOverflow:t(he),contentScrollSize:t(ve),viewportSize:t(kt),hostSize:t(ue)};return c.type(e)===i.s?f.get(n,e):n},fo(t,u))return l.add(t,wt),wt;wt=n}function cr(){if(!R){var e=G[0],t={w:e[a.sW],h:e[a.sH]};if(gt){var n=mr(t,_e);_e=t,n&&co(!0,!1)}else _e=t}}function fr(e,t,n){e=e[0];for(var r=t.split(Zt),o=0;o9||!y){var u='">',d="",h="childNodes",x=Kt+In+u;x+=Kt+Rn+'" dir="ltr'+u,x+=Kt+Rn+u,x+=Kt+Pn+Qt,x+=d,x+=Kt+Rn+u,x+=Kt+Pn+'" style="width: 200%; height: 200%'+Qt,x+=d,x+=d,x+=d,e.prepend(x);var w,g,b,C,S=(e=e[0])[h][0][h][0],O=c(S[h][1]),z=c(S[h][0]),H=c(z[0][h][0]),k=S[a.oW],M=S[a.oH],A=2,T=v.nativeScrollbarSize,E=function(){z[nn](n)[rn](n),O[nn](n)[rn](n)},L=function(){g=0,w&&(k=b,M=C,o())},F=function(e){return b=S[a.oW],C=S[a.oH],w=b!=k||C!=M,e&&w&&!g?(r.cAF()(g),g=r.rAF()(L)):e||L(),E(),e&&(r.prvD(e),r.stpP(e)),!1},D={};D[Ft]=-(T.y+1)*A,D[Dt]=T.x*-A,D[It]=T.y*-A,D[Rt]=-(T.x+1)*A,c(S).css(D),z.on(qt,F),O.on(qt,F),c(e).on(f,function(){F(!1)});var R={};R[Ut]=n,R[Bt]=n,H.css(R),E()}else{var P=q[0],N=e;e=e[0];var U=P.attachEvent,B=typeof navigator===i.u||(navigator.userAgent.match(/Trident/)||navigator.userAgent.match(/Edge/));if(U)N.prepend(Kt+In+Qt),N.find(Gt+In).first()[0].attachEvent("onresize",o);else{var j=P.createElement(i.o);j.setAttribute("tabindex","-1"),j.setAttribute(a.c,In),j.onload=function(){var e=this.contentDocument.defaultView;e.addEventListener("resize",o),e.document.documentElement.style.display="none"},j.type="text/html",B&&N.prepend(j),j.data="about:blank",B||N.prepend(j),N.on(f,o)}}}if((e=c(e))[0]===G[0]){var _=function(){var t=K.css("direction");if(t!==Oe){var r={},o=0;return"ltr"===t?(r[Rt]=0,r[Dt]=Vt,o=n):(r[Rt]=Vt,r[Dt]=0,o=p.n?-n:p.i?0:n),G.children().first().css(r),e.scrollLeft(o),e.scrollTop(n),Oe=t,!0}return!1};_(),e.on(qt,function(e){return _()&&co(),r.prvD(e),r.stpP(e),!1})}}function pr(e){if(W){var t=e.contents()[0];t[vn].disconnect(),delete t[vn]}else e.children(Gt+In).first().remove()}function yr(e,t,r){return!0===r?r:t===n||e!==t}function mr(e,t,r,o,i){if(!0===i)return i;if(o===n&&i===n){if(!0===r)return r;r=n}return r=r===n?"w":r,o=o===n?"h":o,t===n||(e[r]!==t[r]||e[o]!==t[o])}function xr(e,t){return t===n||(e.t!==t.t||e.r!==t.r||e.b!==t.b||e.l!==t.l)}function wr(e,t){gt&&e.call(wt,t)}function gr(e,t,r){r===n&&(r=[_t,_t,_t,_t]),e[t+Ft]=r[0],e[t+Dt]=r[1],e[t+It]=r[2],e[t+Rt]=r[3]}function br(){ot&&!rt&&(tt.observe(K[0],{attributes:!0,attributeOldValue:!0,attributeFilter:[a.i,a.c,a.s]}),nt.observe(Ct?J[0]:ne[0],{attributes:!0,attributeOldValue:!0,subtree:!Ct,childList:!Ct,characterData:!Ct,attributeFilter:Ct?["wrap","cols","rows"]:[a.i,a.c,a.s]}),rt=!0)}function Cr(){ot&&rt&&(tt.disconnect(),nt.disconnect(),rt=!1)}function Sr(e){if(!R){var t=(e.originalEvent||e).touches!==n;(1===r.mBtn(e)||t)&&(rt&&(ht=!0,Cr()),sr=r.page(e),lr.w=K[0][a.oW]-(M?0:A),lr.h=K[0][a.oH]-(M?0:T),q.on(fn,Ir),q.on(sn,Or),q.on(an,zr),Y.addClass(er),oe.setCapture&&oe.setCapture(),r.prvD(e),r.stpP(e))}}function Or(e){e.originalEvent;var t=r.page(e),n={};(mt||yt)&&(n[Ut]=lr.w+t.x-sr.x),(xt||yt)&&(n[Bt]=lr.h+t.y-sr.y),K.css(n),r.stpP(e)}function zr(e){var t=e!==n;q.off(fn,Ir),q.off(sn,Or),q.off(an,zr),Y.removeClass(er),oe.releaseCapture&&oe.releaseCapture(),t&&(ht&&br(),wt.update(Vt)),ht=!1}function Hr(){if(!R){var e=!Le,t=kt.w-(M||ze||!ye?0:T+L),n=kt.h-(M||ze||!me?0:T+L),r={},o=ye||e,i=J[0];r[Pt+Ut]=_t,r[Pt+Bt]=_t,r[Ut]=Vt,J.css(r);var s=i[a.oW],l=o?Math.max(s,i[a.sW]-1):1;l+=ye?F+(M?0:e?0:A+E):0,r[Ut]=ye?l:Xt,r[Bt]=Vt,J.css(r);var c=i[a.oH],f=Math.max(c,i[a.sH]-1);return r[Ut]=l,r[Bt]=f,re.css(r),r[Pt+Ut]=t+(!M&&ye?A+E:0),r[Pt+Bt]=n+(!M&&me?T+L:0),J.css(r),{ow:s,oh:c,dw:l,dh:f}}}function Wr(){var e=J.prop("selectionStart");if(e!==n){for(var t=J.val(),r=t.length,o=t.split("\n"),i=o.length,a=t.substr(0,e).split("\n"),s=0,l=0,c=a.length,f=a[a.length-1].length,u=0;ul&&(s=u+1,l=v)}return{cursorRow:c,cursorCol:f,rows:i,cols:l,wRow:s,pos:e,max:r}}}function kr(e){for(var t=0;t-1&&ar.splice(n,1),0===ar.length&&(Hr(),wt.update(Vt),clearInterval(it))}}function Er(){setTimeout(function(){Hr(),wt.update(Vt)},50)}function Lr(){at=!0}function Fr(){at=!1,clearInterval(it),ar=[],Hr(),wt.update(Vt)}function Dr(e){return J[nn](p.i&&Ke?9999999:0),J[rn](0),r.prvD(e),r.stpP(e),!1}function Ir(e){return r.prvD(e),!1}function Rr(){return Ae&&C.x&&C.y}function Pr(e,t,n){var r=e?mn:xn,o=e?ie:le;t?K.removeClass(r):K.addClass(r),n?o.removeClass(qn):o.addClass(qn)}function Nr(e,t){if(clearTimeout(st),e)ie.removeClass(Xn),le.removeClass(Xn);else{var n="active",r=function(){if(!dt){var e=se.hasClass(n)||fe.hasClass(n);e||!ft&&!ut||ie.addClass(Xn),e||!ft&&!ut||le.addClass(Xn)}};lt>0&&!0!==t?st=setTimeout(r,lt):r()}}function Ur(e){var t={},n=qr(e),r=Math.min(1,(ue[n._wh]-(ze?e?A:T:0))/ve[n._wh]);r=isNaN(r)?0:r,t[n.wh]=Math.floor(100*r*1e5)/1e5+"%",Rr()||n.h.css(t),n.i.hl=n.h[0]["offset"+n.WH],n.i.hlr=r}function Br(e,t){var n=I&&e,r={},o=qr(e),i=ee[0][qt+o.WH]-ee[0]["client"+o.WH];p.n&&n&&(i*=-1);var a=t/i;a=isNaN(a)?0:Math.min(1,a),o.i.ms=i,o.i.cs=t,o.i.csr=a;var s=o.i.hl,l=o.t[0]["offset"+o.WH],c=(l-s)*a;if(c=isNaN(c)?0:c,n&&(p.n||!p.n&&!p.i)&&(c=l-s-c),c=Math.max(0,c),z){var f;n&&(c=-(l-s-c));var u="translate(",v="transform";f=e?u+c+"px, 0px)":u+"0px, "+c+"px)",r["-webkit-"+v]=f,r["-moz-"+v]=f,r["-ms-"+v]=f,r["-o-"+v]=f,r[v]=f}else r[o.lt]=c;Rr()||o.h.css(r),o.i.ho=c,o.i.tl=l}function jr(e,t){var n=t?"removeClass":"addClass",r=e?ce:fe,o=e?jn:Vn;(e?ae:se)[n](o),r[n](o)}function _r(){ie=c(Kt+Un+Zt+Zn+Qt),ae=c(Kt+Bn+Qt),se=c(Kt+_n+Qt),le=c(Kt+Un+Zt+$n+Qt),ce=c(Kt+Bn+Qt),fe=c(Kt+_n+Qt),ie.append(ae),ae.append(se),le.append(ce),ce.append(fe),$.after(le),$.after(ie),O&&(ie.on(un,function(e){e.target===ie[0]&&(Ur(!0),Br(!0,ee[nn]()))}),le.on(un,function(e){e.target===le[0]&&(Ur(!1),Br(!1,ee[rn]()))})),Vr(!0),Vr(!1),oe=c(Kt+Zt+Yn+Qt),K.append(oe)}function Vr(e){var t,o,i,a=qr(e),s=a.xy,l=qt+a.LT,c="active",f=1,u=function(){f=.5},v=function(){f=1},d=function(n){n.originalEvent;var i=a.i.tl,c=a.i.hl,f=a.i.ms*((c/2+r.page(n)[s]-o-c/2)/(i-c));f=isFinite(f)?f:0,I&&e&&(p.n||!p.n&&!p.i)&&(f*=-1),ee[l](t+f),H||r.prvD(n)},h=function(e){e=e||e.originalEvent,Y.removeClass(er),a.h.removeClass(c),a.t.removeClass(c),a.s.removeClass(c),H?(ur(q,sn,d),ur(q,an,h),ur(q,ln,y),ur(q,cn,m),ur(q,fn,Ir)):(q.off(sn,d),q.off(an,h),q.off(ln,y),q.off(cn,m),q.off(fn,Ir)),v(),t=n,o=n,i!==n&&(wt.scrollStop(),clearTimeout(i),i=n);var r=K[0].getBoundingClientRect();e.clientX>=r.left&&e.clientX<=r.right&&e.clientY>=r.top&&e.clientY<=r.bottom||Yr(),ft&&Nr(!1)},y=function(e){16==e.keyCode&&u()},m=function(e){16==e.keyCode&&v()};a.h.on(on,function(i){if(!R){var f=(i.originalEvent||i).touches!==n;Rr()||!Ye||f&&!vt||(1===r.mBtn(i)||f)&&(t=(t=ee[l]())===n?0:t,(I&&e&&!p.n||!I)&&(t=t<0?0:t),o=r.page(i)[s],Y.addClass(er),a.h.addClass(c),a.s.addClass(c),H?(fr(q,fn,Ir),fr(q,sn,d),fr(q,an,h)):(q.on(fn,Ir),q.on(sn,d),q.on(an,h)),r.prvD(i))}}),a.t.on(on,function(t){if(!R){var l=(t.originalEvent||t).touches!==n;if(!Rr()&&Xe&&(!l||vt)&&(1===r.mBtn(t)||l)){var v,d=kt[a._wh],x=a.t.offset()[a.lt],w=!0;t.shiftKey&&u();var g=function(){var t=a.i.ho,r=a.i.hl,s=o-x,l=200*f,c=w?Math.max(333,l):l,u={},h=I&&e&&(!p.i&&!p.n||Ke),y=t>s;h&&(y=t=s;h&&(m=v?t+r>=s:t<=s),m?(clearTimeout(i),wt.scrollStop(),i=n):i=setTimeout(g,c),w=!1};o=r.page(t)[s],Y.addClass(er),a.t.addClass(c),a.s.addClass(c),H?(fr(q,fn,Ir),fr(q,an,h),fr(q,ln,y),fr(q,cn,m)):(q.on(fn,Ir),q.on(an,h),q.on(ln,y),q.on(cn,m)),g(),r.prvD(t)}}}).hover(function(){ft&&(dt=!0,Nr(!0))},function(){ft&&(dt=!1,Nr(!1))}),a.s.on(on,function(e){r.stpP(e)})}function qr(e){return{wh:e?Ut:Bt,WH:e?"Width":"Height",lt:e?Rt:Ft,LT:e?"Left":"Top",xy:e?Yt:Jt,XY:e?"X":"Y",_wh:e?"w":"h",_lt:e?"l":"t",t:e?ae:ce,h:e?se:fe,s:e?ie:le,i:e?Ht:Wt}}function Xr(){ut&&Nr(!0)}function Yr(){ut&&!Y.hasClass(er)&&Nr(!1)}function Jr(e){if(!R){var t=B.callbacks,r=t.onScrollStart,o=t.onScroll,i=t.onScrollStop;P!==n?clearTimeout(P):(ft&&Nr(!0),Rr()||K.addClass(Cn),c.isFunction(r)&&wr(r,e)),Br(!0,ee[nn]()),Br(!1,ee[rn]()),c.isFunction(o)&&wr(o,e),P=setTimeout(function(){Kr(e),c.isFunction(i)&&wr(i,e)},Mt)}}function Kr(){clearTimeout(P),P=n,ft&&Nr(!1),Rr()||K.removeClass(Cn)}function Qr(e){return typeof HTMLElement===i.o?e instanceof HTMLElement:e&&typeof e===i.o&&null!==e&&1===e.nodeType&&typeof e.nodeName===i.s}function Gr(e,t,r,o){var a,s,l,u,v,d={n:t,s:!1,v:n,p:n},h=i.u,p=f.has(e,t),y=f.get(e,t),m=!1,x=!0!==p,w="*",g=!1;for(c.type(r)!==i.a&&(r=[r]),v=r.length,s=0;s1){var C=0;for(u=0;u1)break}1===C&&(g=!0)}else g=!0;b===n&&(m=!0)}if(x&&!1===p&&m&&(x=!1),!x){a=y,h=c.type(a);var O=function(e){var t=c.type(e);return t===h&&(t!==i.s||(!!g||a===e))&&(d.s=!0,d.v=a,d.p=a,!0)};for(s=0;s-1&&i.splice(f,1);for(var u=0;u0&>&&i-j0?K.addClass(ce):K.addClass(tr)),it&&(!0===ot?(Cr(),d.add(wt)):null===ot&&y?(Cr(),d.add(wt)):(d.remove(wt),br())),_e)if(je)if(Z===n&&(Z=c(Kt+Fn+Qt),$.before(Z)),Ot)Q.show();else{Q=c(Kt+Dn+Qt),Z.before(Q);var Mt={w:-1,h:-1};hr(Q,function(){var e={w:Q[0][a.oW],h:Q[0][a.oH]};mr(e,Mt)&&(gt&&me&&e.h>0||ye&&e.w>0?co():(gt&&!me&&0===e.h||!ye&&0===e.w)&&co()),Mt=e}),Ot=!0,null!==w&&Q.css(Bt,w+"(100% + 1px)")}else Ot&&Q.hide();o&&(G.find("*").trigger(qt),Ot&&Q.find("*").trigger(qt));var At,Gt=K.css("direction"),Zt=yr(Gt,Se,o),$t=K.css("box-sizing"),en=yr($t,we,o),tn={c:o,t:ao(K.css(Et+Ft)),r:ao(K.css(Et+Dt)),b:ao(K.css(Et+It)),l:ao(K.css(Et+Rt))};try{At=Ot?Q[0].getBoundingClientRect():null}catch(Io){return}M="border-box"===$t;var an=(I="rtl"===Gt)?Rt:Dt,sn=I?Dt:Rt,ln=K[0],cn=$[0],fn=!1,un=!(!Ot||"none"===K.css(jt))&&(0===Math.round(At.right-At.left)&&(!!Pe||ln[a.cW]-A>0));if(je&&!un){var vn=ln[a.oW],dn=Z.css(Ut);Z.css(Ut,Vt);var hn=ln[a.oW];Z.css(Ut,dn),(fn=vn!==hn)||(Z.css(Ut,vn+1),hn=ln[a.oW],Z.css(Ut,dn),fn=vn!==hn)}var pn=(un||fn)&&je,yn=yr(pn,ye,o),mn=!pn&&ye,xn=!!Ot&&0===Math.round(At.bottom-At.top),wn=yr(xn,me,o),Hn=!xn&&me,Wn="-"+Ut,kn=pn&&M||!M,Mn=xn&&M||!M,An={c:o,t:Mn?ao(K.css(Lt+Ft+Wn)):0,r:kn?ao(K.css(Lt+Dt+Wn)):0,b:Mn?ao(K.css(Lt+It+Wn)):0,l:kn?ao(K.css(Lt+Rt+Wn)):0},Tn={c:o,t:ao(K.css(Tt+Ft)),r:ao(K.css(Tt+Dt)),b:ao(K.css(Tt+It)),l:ao(K.css(Tt+Rt))},En={h:String(K.css(Nt+Bt)),w:String(K.css(Nt+Ut))},In={},Rn={};if(A=tn.l+tn.r,T=tn.t+tn.b,tn.c=xr(tn,ge),E=An.l+An.r,L=An.t+An.b,An.c=xr(An,be),F=Tn.l+Tn.r,D=Tn.t+Tn.b,Tn.c=xr(Tn,Ce),En.ih=parseInt(En.h),En.iw=parseInt(En.w),En.ch=En.h.indexOf("px")>-1,En.cw=En.w.indexOf("px")>-1,En.c=mr(En,xe,o),Se=Gt,we=$t,ye=pn,me=xn,ge=tn,be=An,Ce=Tn,xe=En,Zt&&Ot&&Q.css(jt,sn),tn.c||Zt||Ne||yn||wn||en||_e){var Pn={},Nn={};gr(Rn,Tt,[-tn.t,-tn.r,-tn.b,-tn.l]),Pe?(gr(Pn,_t,[tn.t,tn.r,tn.b,tn.l]),gr(Ct?Nn:In,Et)):(gr(Pn,_t),gr(Ct?Nn:In,Et,[tn.t,tn.r,tn.b,tn.l])),$.css(Pn),J.css(Nn)}kt={w:cn[a.oW],h:cn[a.oH]};var Un=!!Ct&&Hr();if(xn&&(wn||Ne||en||En.c||tn.c||An.c)?(En.cw&&(In[Nt+Bt]=En.ch?En.ih-(Pe?T:0)+(M?-L:T):_t),In[Bt]=Vt):(wn||Ne)&&(In[Nt+Bt]=_t,In[Bt]=Xt),pn&&(yn||Ne||en||En.c||tn.c||An.c||Zt)?(En.cw&&(In[Nt+Ut]=En.cw?En.iw-(Pe?A:0)+(M?-E:A)+(C.y?S.y:0):_t),In[Ut]=Vt,Rn[Nt+Ut]=Xt):(yn||Ne)&&(In[Nt+Ut]=_t,In[Ut]=Xt,In[jt]=_t,Rn[Nt+Ut]=_t),pn&&(En.cw||(In[Nt+Ut]=_t),Rn[Ut]=Ct&&ht?Un.dw:Vt,In[Ut]=Vt,In[jt]=sn),xn&&(En.ch||(In[Nt+Bt]=_t),Rn[Bt]=Ct?Ht?Un.dh:Vt:ne[0][a.cH]),je&&Z.css(Rn),ne.css(In),In={},Rn={},he=he||{x:!1,y:!1},e||t||Zt||en||Ne||yn||pn||wn||xn||En.c||nt||dt||Be||De||q||bt||Wt||Re||Ne||bt||Wt||o){var Bn="overflow",jn=Bn+"-x",_n=Bn+"-y",Vn="hidden",qn="visible",Xn=!!k&&(C.x||C.y||kt.w0&&(Rn[Ut]=Math.max(1,Rn[Ut]),Rn[Bt]=Math.max(1,Rn[Bt])),Ct&&re.css(zr),Z.css(Rn)}pn&&(In[Ut]=Xt),!pn||M||rt||(In[jt]="none"),ne.css(In),In={};var kr=er.getBoundingClientRect(),Mr={w:Math.max(er[a.sW],or[a.sW]),h:Math.max(er[a.sH],or[a.sH])};if(Xn&&ne.css(Bn,_t),kr.width!==n){var Ar=kr.width,Tr=kr.height,Er=.001;Mr.w+=ao(Ar+Er)-Ar,Mr.h+=ao(Tr+Er)-Tr}Mr.c=t=mr(Mr,ve,o),ve=Mr,e=mr(lr={w:ln[a.cW],h:ln[a.cH]},ue),ue=lr,kt={w:cn[a.oW],h:cn[a.oH]};var Lr={x:"v-s"===st.x,y:"v-s"===st.y},Fr={x:"v-h"===st.x,y:"v-h"===st.y},Dr={x:"s"===st.x,y:"s"===st.y},Ir={x:Math.max(0,Mr.w-lr.w+(Pe?A:0)),y:Math.max(0,Mr.h-lr.h+(Pe?T:0))},Rr=Ct&&(0===kt.w||0===kt.h);Rr&&(Ir.x=0,Ir.y=0);var _r={x:Ir.x>0,y:Ir.y>0},Vr={x:_r.x,y:_r.y};(Lr.x||Fr.x)&&(Vr.x=_r.y&&!Lr.y&&!Fr.y),(Lr.y||Fr.y)&&(Vr.y=_r.x&&!Lr.x&&!Fr.x),Vr.xs=!!Vr.x&&(Dr.x||Lr.x),Vr.ys=!!Vr.y&&(Dr.y||Lr.y);var qr={x:_r.x&&Vr.xs,y:_r.y&&Vr.ys},Jr=Me;if(Ir.c=mr(Ir,Me,Yt,Jt,o),Me=Ir,_r.c=mr(_r,he,Yt,Jt,o),he=_r,Vr.c=mr(Vr,pe,Yt,Jt,o),pe=Vr,C.x||C.y){var Kr=o,Qr={};if((_r.x||_r.y)&&(Qr.w=C.y&&_r.y?Mr.w+S.y:_t,Qr.h=C.x&&_r.x?Mr.h+S.x:_t,Kr=yr(Qr,de,o),de=Qr),_r.c||Vr.c||Mr.c||Zt||yn||wn||pn||xn||nt){var Gr="px solid transparent";In[Lt+sn]=_t,In[Tt+sn]=_t,C.x&&_r.x&&Vr.xs?(xn&&(In[Tt+It]=tt?_t:S.x),In[Lt+It]=xn||tt?_t:S.x+Gr):(Qr.h=_t,Kr=!0,In[Lt+It]=_t,In[Tt+It]=_t),C.y&&_r.y&&Vr.ys?(pn&&(In[Tt+an]=tt?_t:S.y),In[Lt+an]=tt?_t:S.y+Gr):(Qr.w=_t,Kr=!0,In[Lt+an]=_t,In[Tt+an]=_t)}if(tt&&(Qr.w=_t,Qr.h=_t,Kr=!0),Kr){var $r={};$r[Ut]=Vr.y?Qr.w:_t,$r[Bt]=Vr.x?Qr.h:_t,te===n&&(te=c(Kt+Ln+Qt),ee.prepend(te)),te.css($r)}ne.css(In)}var eo={};Pn={};if(e||_r.c||Vr.c||Mr.c||dt||en||nt||Zt||Be||wn){eo[sn]=_t;var to=function(){eo[It]=_t,zt.h=0},no=function(){eo[an]=_t,zt.w=0};if(_r.x&&Vr.xs?(eo[jn]=qt,tt?to():(eo[It]=-(C.x?S.x:g.x),zt.h=C.x?S.y:0)):(eo[jn]=_t,to()),_r.y&&Vr.ys?(eo[_n]=qt,tt?no():(eo[an]=-(C.y?S.y:g.y),zt.w=C.y?S.x:0)):(eo[_n]=_t,no()),(kt.h-1,Do=Lo.y>-1;(Fo||Do)&&(Do&&ee[rn](Lo.y),Fo&&(I&&Ke&&p.i?ee[nn](0):ee[nn](Lo.x)))}Fe=Oo}else Ct||(I&&p.i&&C.y&&_r.x&&Ke&&(f.l+=zt.w),ee[nn](f.l),ee[rn](f.t));Zt&&c.isFunction(P)&&wr(P,{isRTL:I,dir:Gt}),e&&c.isFunction(U)&&wr(U,{width:ue.w,height:ue.h}),t&&c.isFunction(N)&&wr(N,{width:ve.w,height:ve.h}),(_r.c||Vr.c)&&c.isFunction(z)&&wr(z,{x:_r.x,y:_r.y,xScrollable:Vr.xs,yScrollable:Vr.ys,clipped:Vr.x||Vr.y}),Ir.c&&c.isFunction(W)&&wr(W,{x:Ir.x,y:Ir.y})}St&&(_r.c||et.c)&&(et.f||Zr(),C.y&&_r.x&&ne.css(Pt+Ut,et.w+S.y),C.x&&_r.y&&ne.css(Pt+Bt,et.h+S.x),et.c=!1),dr(G),dr(Q),c.isFunction(O)&&wr(O,{forced:o})}}function fo(e,t){N=v.defaultOptions,x=v.nativeScrollbarStyling,g=c.extend(!0,{},v.nativeScrollbarSize),C=c.extend(!0,{},v.nativeScrollbarIsOverlaid),S=c.extend(!0,{},v.overlayScrollbarDummySize),p=c.extend(!0,{},v.rtlScrollBehavior),ro(c.extend(!0,{},N,t));var n,o=B.callbacks;if(C.x&&C.x&&!B.nativeScrollbarsOverlaid.initialize){var i=o.onInitializationWithdrawn;return c.isFunction(i)&&wr(i),!1}if(w=v.cssCalc,m=v.msie,y=v.autoUpdateRecommended,O=v.supportTransition,z=v.supportTransform,H=v.supportPassiveEvents,W=v.supportResizeObserver,ot=v.supportMutationObserver,k=v.restrictedMeasuring,q=c(e.ownerDocument),V=c(q[0].defaultView||q[0].parentWindow),X=q.find("html").first(),Y=X.find("body").first(),J=c(e),Ct=J.is("textarea"),(St=J.is("body"))&&((n={}).l=Math.max(J[nn](),X[nn](),V[nn]()),n.t=Math.max(J[rn](),X[rn](),V[rn]())),Ct){J.wrap(Kt+yn+Qt),J.addClass(Hn).addClass(Nn),K=J.parent();var s={};B.sizeAutoCapable||(s[Ut]=J.css(Ut),s[Bt]=J.css(Bt)),K.css(s),K.wrapInner(Kt+En+Zt+Nn+Qt).wrapInner(Kt+Mn+Zt+Nn+Qt).wrapInner(Kt+kn+Zt+Nn+Qt),ne=K.find(Gt+En).first(),ee=K.find(Gt+Mn).first(),$=K.find(Gt+kn).first(),re=c(Kt+Wn+Qt),ne.prepend(re),J.on(qt,Dr),J.on("drop",Er),J.on("focus",Lr),J.on("focusout",Fr),m>9||!y?J.on("input",Mr):(J.on(ln,Ar),J.on(cn,Tr))}else J.addClass(pn),(K=J).wrapInner(Kt+En+Qt).wrapInner(Kt+Mn+Qt).wrapInner(Kt+kn+Qt),ne=K.find(Gt+En).first(),ee=K.find(Gt+Mn).first(),$=K.find(Gt+kn).first(),ne.on(un,function(e){!0!==Te&&so((e=e.originalEvent||e).propertyName)&&co(Vt)});if(_r(),H?fr(ee,qt,Jr):ee.on(qt,Jr),x&&(C.x&&C.y?ee.addClass(Tn):ee.addClass(An)),ot){var l,f=r.mO(),u=r.now();tt=new f(function(e){if(gt&&!R){var t=!1;c.each(e,function(){var e=this,n=this.target,r=e.attributeName;if(t=r===a.c?to(e.oldValue,n.className):r!==a.s||e.oldValue!==n.style.cssText)return!1}),t&&wt.update(Vt)}}),nt=new f(function(e){if(gt&&!R){for(var t=!1,n=0;nor||!i?a():l=setTimeout(a,or)}}})}St&&(X.addClass(hn),ee[nn](n.l),ee[rn](n.t)),G=c(Kt+"os-resize-observer-host"+Qt),K.prepend(G),hr(G,cr),cr(),wt.update(Vt),setTimeout(function(){O&&!bt&&K.addClass(wn)},333),gt=!0;var d=o.onInitialized;return c.isFunction(d)&&wr(d),gt}}e[o]=function(e,t){if(0===arguments.length)return this;h();var r,o=[];return c.isPlainObject(t)?e&&e.length?e.length>1?(c.each(e,function(){(r=this)!==n&&o.push(m(r,t,u,v))}),o):m(e[0],t,u,v):m(e,t,u,v):e?e.length&&e.length>0?e.length>1?(c.each(e,function(){r=l.get(this),"!"===t?r!==n&&o.push(r):o.push(r)}),o):l.get(e[0]):l.get(e):void 0},e[o].globals=function(){h();var e=c.extend(!0,{},u);return delete e.msie,e},e[o].defaultOptions=function(e){h();var t=u.defaultOptions;if(e===n)return c.extend(!0,{},t);u.defaultOptions=c.extend(!0,{},t,e)}}(s,c,l,f);return e[o]}); \ No newline at end of file diff --git a/package.json b/package.json index 122d23a..1c974a6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "overlayscrollbars", - "version": "1.2.3", + "version": "1.3.0", "description": "A javascript scrollbar plugin which hides the native scrollbars and provides custom styleable overlay scrollbars, but keeps the native functionality and feeling.", "keywords" : [ "overlayscrollbars", @@ -28,7 +28,7 @@ "bugs": { "url": "https://github.com/KingSora/OverlayScrollbars/issues" }, - "main": "js/OverlayScrollbars.min.js", + "main": "js/OverlayScrollbars.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" },