vendor: 3,449 bytes, lines 1-6
1/*! 2floating-scroll v3.1.0 3https://amphiluke.github.io/floating-scroll/ 4(c) 2020 Amphiluke 5*/ 6!function(t,e){"object"==typeof exports&&"undefined"!=typeof module?e(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],e):e((t=t||self).jQuery)}(this,(function(t){"use strict";const e="horizontal";let i={init(t,i){let n=this;n.orientationProps=(t=>{let i=t===e;return{ORIENTATION:t,SIZE:i?"width":"height",X_SIZE:i?"height":"width",OFFSET_SIZE:i?"offsetWidth":"offsetHeight",OFFSET_X_SIZE:i?"offsetHeight":"offsetWidth",CLIENT_SIZE:i?"clientWidth":"clientHeight",CLIENT_X_SIZE:i?"clientHeight":"clientWidth",INNER_X_SIZE:i?"innerHeight":"innerWidth",SCROLL_SIZE:i?"scrollWidth":"scrollHeight",SCROLL_POS:i?"scrollLeft":"scrollTop",START:i?"left":"top",X_START:i?"top":"left",X_END:i?"bottom":"right"}})(i);let o=t.closest(".fl-scrolls-body");o.length&&(n.scrollBody=o),n.container=t[0],n.visible=!0,n.initWidget(),n.updateAPI(),n.addEventHandlers(),n.skipSyncContainer=n.skipSyncWidget=!1},initWidget(){const{ORIENTATION:e,SIZE:i,SCROLL_SIZE:n}=this.orientationProps;let o=this.widget=t(`<div class="fl-scrolls" data-orientation="${e}"></div>`);t("<div></div>").appendTo(o)[i](this.container[n]),o.appendTo(this.container)},addEventHandlers(){let e=this;(e.eventHandlers=[{$el:e.scrollBody||t(window),handlers:{scroll(){e.updateAPI()},resize(){e.updateAPI()}}},{$el:e.widget,handlers:{scroll(){e.visible&&!e.skipSyncContainer&&e.syncContainer(),e.skipSyncContainer=!1}}},{$el:t(e.container),handlers:{scroll(){e.skipSyncWidget||e.syncWidget(),e.skipSyncWidget=!1},focusin(){setTimeout(()=>e.syncWidget(),0)},"update.fscroll"({namespace:t}){"fscroll"===t&&e.updateAPI()},"destroy.fscroll"({namespace:t}){"fscroll"===t&&e.destroyAPI()}}}]).forEach(({$el:t,handlers:e})=>t.bind(e))},checkVisibility(){let t=this,{widget:e,container:i,scrollBody:n}=t;const{SCROLL_SIZE:o,OFFSET_SIZE:l,X_START:s,X_END:r,INNER_X_SIZE:c,CLIENT_X_SIZE:d}=t.orientationProps;let a=e[0][o]<=e[0][l];if(!a){let t=i.getBoundingClientRect(),e=n?n[0].getBoundingClientRect()[r]:window[c]||document.documentElement[d];a=t[r]<=e||t[s]>e}t.visible===a&&(t.visible=!a,e.toggleClass("fl-scrolls-hidden"))},syncContainer(){let t=this;const{SCROLL_POS:e}=t.orientationProps;let i=t.widget[0][e];t.container[e]!==i&&(t.skipSyncWidget=!0,t.container[e]=i)},syncWidget(){let t=this;const{SCROLL_POS:e}=t.orientationProps;let i=t.container[e];t.widget[0][e]!==i&&(t.skipSyncContainer=!0,t.widget[0][e]=i)},updateAPI(){const{SIZE:e,X_SIZE:i,OFFSET_X_SIZE:n,CLIENT_SIZE:o,CLIENT_X_SIZE:l,SCROLL_SIZE:s,START:r}=this.orientationProps;let{widget:c,container:d,scrollBody:a}=this,h=d[o],S=d[s];c[e](h),a||c.css(r,d.getBoundingClientRect()[r]+"px"),t("div",c)[e](S),S>h&&c[i](c[0][n]-c[0][l]+1),this.syncWidget(),this.checkVisibility()},destroyAPI(){this.eventHandlers.forEach(({$el:t,handlers:e})=>t.unbind(e)),this.widget.remove(),this.eventHandlers=this.widget=this.container=this.scrollBody=null}};t.fn.floatingScroll=function(n="init",o={}){if("init"===n){let{orientation:n=e}=o;if(n!==e&&"vertical"!==n)throw new Error(`Scrollbar orientation should be either â${e}â or âverticalâ`);this.each((e,o)=>Object.create(i).init(t(o),n))}else Object.prototype.hasOwnProperty.call(i,n+"API")&&this.trigger(n+".fscroll");return this},t(document).ready(()=>{t("body [data-fl-scrolls]").each((e,i)=>{let n=t(i);n.floatingScroll("init",n.data("flScrolls")||{})})})}));
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.