Site for my Call of Duty: Mobile clan. http://codm.ataraxy.tk
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

117 lines
17 KiB

  1. /*!
  2. scroll-behavior-polyfill 2.0.6
  3. license: MIT (https://github.com/wessberg/scroll-behavior-polyfill/blob/master/LICENSE.md)
  4. Copyright © 2019 Frederik Wessberg <frederikwessberg@hotmail.com>
  5. */(function(){'use strict';var SUPPORTS_SCROLL_BEHAVIOR="scrollBehavior"in document.documentElement.style;/*! *****************************************************************************
  6. Copyright (c) Microsoft Corporation. All rights reserved.
  7. Licensed under the Apache License, Version 2.0 (the "License"); you may not use
  8. this file except in compliance with the License. You may obtain a copy of the
  9. License at http://www.apache.org/licenses/LICENSE-2.0
  10. THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  11. KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
  12. WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
  13. MERCHANTABLITY OR NON-INFRINGEMENT.
  14. See the Apache Version 2.0 License for specific language governing permissions
  15. and limitations under the License.
  16. ***************************************************************************** */var __assign=function(){__assign=Object.assign||function __assign(t){for(var s,i=1,n=arguments.length;i<n;i++){s=arguments[i];for(var p in s)if(Object.prototype.hasOwnProperty.call(s,p))t[p]=s[p];}
  17. return t;};return __assign.apply(this,arguments);};function __read(o,n){var m=typeof Symbol==="function"&&o[Symbol.iterator];if(!m)return o;var i=m.call(o),r,ar=[],e;try{while((n===void 0||n-->0)&&!(r=i.next()).done)ar.push(r.value);}
  18. catch(error){e={error:error};}
  19. finally{try{if(r&&!r.done&&(m=i["return"]))m.call(i);}
  20. finally{if(e)throw e.error;}}
  21. return ar;}
  22. var styleDeclarationPropertyName="scrollBehavior";var styleAttributePropertyName="scroll-behavior";var styleAttributePropertyNameRegex=new RegExp(styleAttributePropertyName+":\\s*([^;]*)");function getScrollBehavior(inputTarget,options){if(options!=null&&options.behavior==="smooth")
  23. return "smooth";var target="style"in inputTarget?inputTarget:document.scrollingElement!=null?document.scrollingElement:document.documentElement;var value;if("style"in target){var scrollBehaviorPropertyValue=target.style[styleDeclarationPropertyName];if(scrollBehaviorPropertyValue!=null&&scrollBehaviorPropertyValue!==""){value=scrollBehaviorPropertyValue;}}
  24. if(value==null){var attributeValue=target.getAttribute("scroll-behavior");if(attributeValue!=null&&attributeValue!==""){value=attributeValue;}}
  25. if(value==null){var styleAttributeValue=target.getAttribute("style");if(styleAttributeValue!=null&&styleAttributeValue.includes(styleAttributePropertyName)){var match=styleAttributeValue.match(styleAttributePropertyNameRegex);if(match!=null){var _a=__read(match,2),behavior=_a[1];if(behavior!=null&&behavior!==""){value=behavior;}}}}
  26. if(value==null){var computedStyle=getComputedStyle(target);var computedStyleValue=computedStyle.getPropertyValue("scrollBehavior");if(computedStyleValue!=null&&computedStyleValue!==""){value=computedStyleValue;}}
  27. return value;}
  28. var HALF=0.5;function ease(k){return HALF*(1-Math.cos(Math.PI*k));}
  29. var SCROLL_TIME=15000;function smoothScroll(options){var startTime=options.startTime,startX=options.startX,startY=options.startY,endX=options.endX,endY=options.endY,method=options.method;var timeLapsed=0;var distanceX=endX-startX;var distanceY=endY-startY;var speed=Math.max(Math.abs((distanceX/1000)*SCROLL_TIME),Math.abs((distanceY/1000)*SCROLL_TIME));requestAnimationFrame(function animate(timestamp){timeLapsed+=timestamp-startTime;var percentage=Math.max(0,Math.min(1,speed===0?0:timeLapsed/speed));var positionX=Math.floor(startX+distanceX*ease(percentage));var positionY=Math.floor(startY+distanceY*ease(percentage));method(positionX,positionY);if(positionX!==endX||positionY!==endY){requestAnimationFrame(animate);}});}
  30. function now(){if("performance"in window)
  31. return performance.now();return Date.now();}
  32. var ELEMENT_ORIGINAL_SCROLL=Element.prototype.scroll;var WINDOW_ORIGINAL_SCROLL=window.scroll;var ELEMENT_ORIGINAL_SCROLL_BY=Element.prototype.scrollBy;var WINDOW_ORIGINAL_SCROLL_BY=window.scrollBy;var ELEMENT_ORIGINAL_SCROLL_TO=Element.prototype.scrollTo;var WINDOW_ORIGINAL_SCROLL_TO=window.scrollTo;function elementPrototypeScrollFallback(x,y){this.__adjustingScrollPosition=true;this.scrollLeft=x;this.scrollTop=y;delete this.__adjustingScrollPosition;}
  33. function elementPrototypeScrollToFallback(x,y){return elementPrototypeScrollFallback.call(this,x,y);}
  34. function elementPrototypeScrollByFallback(x,y){this.__adjustingScrollPosition=true;this.scrollLeft+=x;this.scrollTop+=y;delete this.__adjustingScrollPosition;}
  35. function getOriginalScrollMethodForKind(kind,element){switch(kind){case "scroll":if(element instanceof Element){if(ELEMENT_ORIGINAL_SCROLL!=null){return ELEMENT_ORIGINAL_SCROLL;}
  36. else{return elementPrototypeScrollFallback;}}
  37. else{return WINDOW_ORIGINAL_SCROLL;}
  38. case "scrollBy":if(element instanceof Element){if(ELEMENT_ORIGINAL_SCROLL_BY!=null){return ELEMENT_ORIGINAL_SCROLL_BY;}
  39. else{return elementPrototypeScrollByFallback;}}
  40. else{return WINDOW_ORIGINAL_SCROLL_BY;}
  41. case "scrollTo":if(element instanceof Element){if(ELEMENT_ORIGINAL_SCROLL_TO!=null){return ELEMENT_ORIGINAL_SCROLL_TO;}
  42. else{return elementPrototypeScrollToFallback;}}
  43. else{return WINDOW_ORIGINAL_SCROLL_TO;}}}
  44. function getSmoothScrollOptions(element,x,y,kind){var startTime=now();if(!(element instanceof Element)){var scrollX_1=window.scrollX,pageXOffset_1=window.pageXOffset,scrollY_1=window.scrollY,pageYOffset_1=window.pageYOffset;var startX=scrollX_1==null||scrollX_1===0?pageXOffset_1:scrollX_1;var startY=scrollY_1==null||scrollY_1===0?pageYOffset_1:scrollY_1;return{startTime:startTime,startX:startX,startY:startY,endX:Math.floor(kind==="scrollBy"?startX+x:x),endY:Math.floor(kind==="scrollBy"?startY+y:y),method:getOriginalScrollMethodForKind("scrollTo",window).bind(window)};}
  45. else{var scrollLeft=element.scrollLeft,scrollTop=element.scrollTop;var startX=scrollLeft;var startY=scrollTop;return{startTime:startTime,startX:startX,startY:startY,endX:Math.floor(kind==="scrollBy"?startX+x:x),endY:Math.floor(kind==="scrollBy"?startY+y:y),method:getOriginalScrollMethodForKind("scrollTo",element).bind(element)};}}
  46. function ensureNumeric(value){if(value==null)
  47. return 0;else if(typeof value==="number"){return value;}
  48. else if(typeof value==="string"){return parseFloat(value);}
  49. else{return 0;}}
  50. function isScrollToOptions(value){return value!=null&&typeof value==="object";}
  51. function handleScrollMethod(element,kind,optionsOrX,y){onScrollWithOptions(getScrollToOptionsWithValidation(optionsOrX,y),element,kind);}
  52. function onScrollWithOptions(options,element,kind){var behavior=getScrollBehavior(element,options);if(behavior==null||behavior==="auto"){getOriginalScrollMethodForKind(kind,element).call(element,options.left,options.top);}
  53. else{smoothScroll(getSmoothScrollOptions(element,options.left,options.top,kind));}}
  54. function normalizeScrollCoordinates(x,y){return{left:ensureNumeric(x),top:ensureNumeric(y)};}
  55. function getScrollToOptionsWithValidation(optionsOrX,y){if(y===undefined&&!isScrollToOptions(optionsOrX)){throw new TypeError("Failed to execute 'scroll' on 'Element': parameter 1 ('options') is not an object.");}
  56. if(!isScrollToOptions(optionsOrX)){return __assign({},normalizeScrollCoordinates(optionsOrX,y),{behavior:"auto"});}
  57. else{return __assign({},normalizeScrollCoordinates(optionsOrX.left,optionsOrX.top),{behavior:optionsOrX.behavior==null?"auto":optionsOrX.behavior});}}
  58. function patchElementScroll(){Element.prototype.scroll=function(optionsOrX,y){handleScrollMethod(this,"scroll",optionsOrX,y);};}
  59. function patchElementScrollBy(){Element.prototype.scrollBy=function(optionsOrX,y){handleScrollMethod(this,"scrollBy",optionsOrX,y);};}
  60. function patchElementScrollTo(){Element.prototype.scrollTo=function(optionsOrX,y){handleScrollMethod(this,"scrollTo",optionsOrX,y);};}
  61. function patchWindowScroll(){window.scroll=function(optionsOrX,y){handleScrollMethod(this,"scroll",optionsOrX,y);};}
  62. function patchWindowScrollBy(){window.scrollBy=function(optionsOrX,y){handleScrollMethod(this,"scrollBy",optionsOrX,y);};}
  63. function patchWindowScrollTo(){window.scrollTo=function(optionsOrX,y){handleScrollMethod(this,"scrollTo",optionsOrX,y);};}
  64. function getParent(currentElement){if("nodeType"in currentElement&&currentElement.nodeType===1){return currentElement.parentNode;}
  65. if("ShadowRoot"in window&&currentElement instanceof window.ShadowRoot){return currentElement.host;}
  66. else if(currentElement===document){return window;}
  67. else if(currentElement instanceof Node)
  68. return currentElement.parentNode;return null;}
  69. var scrollingElement=document.scrollingElement!=null?document.scrollingElement:document.documentElement;function canOverflow(overflow){return overflow!=="visible"&&overflow!=="clip";}
  70. function isScrollable(element){if(element.clientHeight<element.scrollHeight||element.clientWidth<element.scrollWidth){var style=getComputedStyle(element,null);return canOverflow(style.overflowY)||canOverflow(style.overflowX);}
  71. return false;}
  72. function findNearestAncestorsWithScrollBehavior(target){var currentElement=target;while(currentElement!=null){var behavior=getScrollBehavior(currentElement);if(behavior!=null&&(currentElement===scrollingElement||isScrollable(currentElement))){return[currentElement,behavior];}
  73. var parent_1=getParent(currentElement);currentElement=parent_1;}
  74. currentElement=target;while(currentElement!=null){if(currentElement===scrollingElement||isScrollable(currentElement)){return[currentElement,"auto"];}
  75. var parent_2=getParent(currentElement);currentElement=parent_2;}
  76. return[scrollingElement,"auto"];}
  77. function findNearestRoot(target){var currentElement=target;while(currentElement!=null){if("ShadowRoot"in window&&currentElement instanceof window.ShadowRoot){return currentElement;}
  78. var parent_1=getParent(currentElement);if(parent_1===currentElement){return document;}
  79. currentElement=parent_1;}
  80. return document;}
  81. var ID_WITH_LEADING_DIGIT_REGEXP=/^#\d/;function catchNavigation(){window.addEventListener("click",function(e){if(!e.isTrusted||!(e.target instanceof HTMLAnchorElement))
  82. return;var hrefAttributeValue=e.target.getAttribute("href");if(hrefAttributeValue==null||!hrefAttributeValue.startsWith("#")){return;}
  83. var root=findNearestRoot(e.target);var elementMatch=hrefAttributeValue.match(ID_WITH_LEADING_DIGIT_REGEXP)!=null?root.getElementById(hrefAttributeValue.slice(1)):root.querySelector(hrefAttributeValue);if(elementMatch==null)
  84. return;var _a=__read(findNearestAncestorsWithScrollBehavior(elementMatch),2),ancestorWithScrollBehavior=_a[0],behavior=_a[1];if(behavior!=="smooth")
  85. return;e.preventDefault();ancestorWithScrollBehavior.scrollTo({behavior:behavior,top:elementMatch.offsetTop,left:elementMatch.offsetLeft});});}
  86. var ELEMENT_ORIGINAL_SCROLL_INTO_VIEW=Element.prototype.scrollIntoView;function alignNearest(scrollingEdgeStart,scrollingEdgeEnd,scrollingSize,scrollingBorderStart,scrollingBorderEnd,elementEdgeStart,elementEdgeEnd,elementSize){if((elementEdgeStart<scrollingEdgeStart&&elementEdgeEnd>scrollingEdgeEnd)||(elementEdgeStart>scrollingEdgeStart&&elementEdgeEnd<scrollingEdgeEnd)){return 0;}
  87. if((elementEdgeStart<=scrollingEdgeStart&&elementSize<=scrollingSize)||(elementEdgeEnd>=scrollingEdgeEnd&&elementSize>=scrollingSize)){return elementEdgeStart-scrollingEdgeStart-scrollingBorderStart;}
  88. if((elementEdgeEnd>scrollingEdgeEnd&&elementSize<scrollingSize)||(elementEdgeStart<scrollingEdgeStart&&elementSize>scrollingSize)){return elementEdgeEnd-scrollingEdgeEnd+scrollingBorderEnd;}
  89. return 0;}
  90. function computeScrollIntoView(target,scroller,options){var block=options.block,inline=options.inline;var scrollingElement=document.scrollingElement||document.documentElement;var viewportWidth=window.visualViewport!=null?visualViewport.width:innerWidth;var viewportHeight=window.visualViewport!=null?visualViewport.height:innerHeight;var viewportX=window.scrollX!=null?window.scrollX:window.pageXOffset;var viewportY=window.scrollY!=null?window.scrollY:window.pageYOffset;var _a=target.getBoundingClientRect(),targetHeight=_a.height,targetWidth=_a.width,targetTop=_a.top,targetRight=_a.right,targetBottom=_a.bottom,targetLeft=_a.left;var targetBlock=block==="start"||block==="nearest"?targetTop:block==="end"?targetBottom:targetTop+targetHeight/2;var targetInline=inline==="center"?targetLeft+targetWidth/2:inline==="end"?targetRight:targetLeft;var _b=scroller.getBoundingClientRect(),height=_b.height,width=_b.width,top=_b.top,right=_b.right,bottom=_b.bottom,left=_b.left;var frameStyle=getComputedStyle(scroller);var borderLeft=parseInt(frameStyle.borderLeftWidth,10);var borderTop=parseInt(frameStyle.borderTopWidth,10);var borderRight=parseInt(frameStyle.borderRightWidth,10);var borderBottom=parseInt(frameStyle.borderBottomWidth,10);var blockScroll=0;var inlineScroll=0;var scrollbarWidth="offsetWidth"in scroller?scroller.offsetWidth-scroller.clientWidth-borderLeft-borderRight:0;var scrollbarHeight="offsetHeight"in scroller?scroller.offsetHeight-scroller.clientHeight-borderTop-borderBottom:0;if(scrollingElement===scroller){if(block==="start"){blockScroll=targetBlock;}
  91. else if(block==="end"){blockScroll=targetBlock-viewportHeight;}
  92. else if(block==="nearest"){blockScroll=alignNearest(viewportY,viewportY+viewportHeight,viewportHeight,borderTop,borderBottom,viewportY+targetBlock,viewportY+targetBlock+targetHeight,targetHeight);}
  93. else{blockScroll=targetBlock-viewportHeight/2;}
  94. if(inline==="start"){inlineScroll=targetInline;}
  95. else if(inline==="center"){inlineScroll=targetInline-viewportWidth/2;}
  96. else if(inline==="end"){inlineScroll=targetInline-viewportWidth;}
  97. else{inlineScroll=alignNearest(viewportX,viewportX+viewportWidth,viewportWidth,borderLeft,borderRight,viewportX+targetInline,viewportX+targetInline+targetWidth,targetWidth);}
  98. blockScroll=Math.max(0,blockScroll+viewportY);inlineScroll=Math.max(0,inlineScroll+viewportX);}
  99. else{if(block==="start"){blockScroll=targetBlock-top-borderTop;}
  100. else if(block==="end"){blockScroll=targetBlock-bottom+borderBottom+scrollbarHeight;}
  101. else if(block==="nearest"){blockScroll=alignNearest(top,bottom,height,borderTop,borderBottom+scrollbarHeight,targetBlock,targetBlock+targetHeight,targetHeight);}
  102. else{blockScroll=targetBlock-(top+height/2)+scrollbarHeight/2;}
  103. if(inline==="start"){inlineScroll=targetInline-left-borderLeft;}
  104. else if(inline==="center"){inlineScroll=targetInline-(left+width/2)+scrollbarWidth/2;}
  105. else if(inline==="end"){inlineScroll=targetInline-right+borderRight+scrollbarWidth;}
  106. else{inlineScroll=alignNearest(left,right,width,borderLeft,borderRight+scrollbarWidth,targetInline,targetInline+targetWidth,targetWidth);}
  107. var scrollLeft=scroller.scrollLeft,scrollTop=scroller.scrollTop;blockScroll=Math.max(0,Math.min(scrollTop+blockScroll,scroller.scrollHeight-height+scrollbarHeight));inlineScroll=Math.max(0,Math.min(scrollLeft+inlineScroll,scroller.scrollWidth-width+scrollbarWidth));}
  108. return{top:blockScroll,left:inlineScroll};}
  109. function patchElementScrollIntoView(){Element.prototype.scrollIntoView=function(arg){var normalizedOptions=arg==null||arg===true?{block:"start",inline:"nearest"}:arg===false?{block:"end",inline:"nearest"}:arg;var _a=__read(findNearestAncestorsWithScrollBehavior(this),2),ancestorWithScroll=_a[0],ancestorWithScrollBehavior=_a[1];var behavior=normalizedOptions.behavior!=null?normalizedOptions.behavior:ancestorWithScrollBehavior;if(behavior!=="smooth"){if(ELEMENT_ORIGINAL_SCROLL_INTO_VIEW!=null){ELEMENT_ORIGINAL_SCROLL_INTO_VIEW.call(this,normalizedOptions);}
  110. else{var _b=computeScrollIntoView(this,ancestorWithScroll,normalizedOptions),top_1=_b.top,left=_b.left;getOriginalScrollMethodForKind("scrollTo",this).call(this,left,top_1);}
  111. return;}
  112. ancestorWithScroll.scrollTo(__assign({behavior:behavior},computeScrollIntoView(this,ancestorWithScroll,normalizedOptions)));};}
  113. var ELEMENT_ORIGINAL_SCROLL_TOP_SET_DESCRIPTOR=Object.getOwnPropertyDescriptor(Element.prototype,"scrollTop").set;function patchElementScrollTop(){Object.defineProperty(Element.prototype,"scrollTop",{set:function(scrollTop){if(this.__adjustingScrollPosition){return ELEMENT_ORIGINAL_SCROLL_TOP_SET_DESCRIPTOR.call(this,scrollTop);}
  114. handleScrollMethod(this,"scrollTo",this.scrollLeft,scrollTop);return scrollTop;}});}
  115. var ELEMENT_ORIGINAL_SCROLL_LEFT_SET_DESCRIPTOR=Object.getOwnPropertyDescriptor(Element.prototype,"scrollLeft").set;function patchElementScrollLeft(){Object.defineProperty(Element.prototype,"scrollLeft",{set:function(scrollLeft){if(this.__adjustingScrollPosition){return ELEMENT_ORIGINAL_SCROLL_LEFT_SET_DESCRIPTOR.call(this,scrollLeft);}
  116. handleScrollMethod(this,"scrollTo",scrollLeft,this.scrollTop);return scrollLeft;}});}
  117. function patch(){patchElementScroll();patchElementScrollBy();patchElementScrollTo();patchElementScrollIntoView();patchElementScrollLeft();patchElementScrollTop();patchWindowScroll();patchWindowScrollBy();patchWindowScrollTo();catchNavigation();}
  118. var SUPPORTS_ELEMENT_PROTOTYPE_SCROLL_METHODS="scroll"in Element.prototype&&"scrollTo"in Element.prototype&&"scrollBy"in Element.prototype&&"scrollIntoView"in Element.prototype;if(!SUPPORTS_SCROLL_BEHAVIOR||!SUPPORTS_ELEMENT_PROTOTYPE_SCROLL_METHODS){patch();}}());