1'use client' 2(function (global, factory) { 3 typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) : 4 typeof define === 'function' && define.amd ? define(['exports'], factory) : 5 (factory((global.StickySidebar = {}))); 6}(this, (function (exports) { 'use strict'; 7 8var commonjsGlobal = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {}; 9 10 11 12function unwrapExports (x) { 13 return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x; 14} 15 16function createCommonjsModule(fn, module) { 17 return module = { exports: {} }, fn(module, module.exports), module.exports; 18} 19 20var stickySidebar = createCommonjsModule(function (module, exports) { 21(function (global, factory) { 22 if (typeof undefined === "function" && undefined.amd) { 23 undefined(['exports'], factory); 24 } else { 25 factory(exports); 26 } 27})(commonjsGlobal, function (exports) { 28 Object.defineProperty(exports, "__esModule", { 29 value: true 30 }); 31 32 function _classCallCheck(instance, Constructor) { 33 if (!(instance instanceof Constructor)) { 34 throw new TypeError("Cannot call a class as a function"); 35 } 36 } 37 38 var _createClass = function () { 39 function defineProperties(target, props) { 40 for (var i = 0; i < props.length; i++) { 41 var descriptor = props[i]; 42 descriptor.enumerable = descriptor.enumerable || false; 43 descriptor.configurable = true; 44 if ("value" in descriptor) descriptor.writable = true; 45 Object.defineProperty(target, descriptor.key, descriptor); 46 } 47 } 48 49 return function (Constructor, protoProps, staticProps) { 50 if (protoProps) defineProperties(Constructor.prototype, protoProps); 51 if (staticProps) defineProperties(Constructor, staticProps); 52 return Constructor; 53 }; 54 }(); 55 56 /** 57 * Sticky Sidebar JavaScript Plugin. 58 * @version 3.3.4 59 * @author Ahmed Bouhuolia <[email protected]> 60 * @license The MIT License (MIT) 61 */ 62 var StickySidebar = function () { 63 64 // --------------------------------- 65 // # Define Constants 66 // --------------------------------- 67 // 68 var EVENT_KEY = '.stickySidebar'; 69 var DEFAULTS = { 70 /** 71 * Additional top spacing of the element when it becomes sticky. 72 * @type {Numeric|Function} 73 */ 74 topSpacing: 0, 75 76 /** 77 * Additional bottom spacing of the element when it becomes sticky. 78 * @type {Numeric|Function} 79 */ 80 bottomSpacing: 0, 81 82 /** 83 * Container sidebar selector to know what the beginning and end of sticky element. 84 * @type {String|False} 85 */ 86 containerSelector: false, 87 88 /** 89 * Inner wrapper selector. 90 * @type {String} 91 */ 92 innerWrapperSelector: '.inner-wrapper-sticky', 93 94 /** 95 * The name of CSS class to apply to elements when they have become stuck. 96 * @type {String|False} 97 */ 98 stickyClass: '', //verify again here stickyClass: 'is-affixed', 99 100 /** 101 * Detect when sidebar and its container change height so re-calculate their dimensions. 102 * @type {Boolean} 103 */ 104 resizeSensor: true, 105 106 /** 107 * The sidebar returns to its normal position if its width below this value. 108 * @type {Numeric} 109 */ 110 minWidth: false 111 }; 112 113 // --------------------------------- 114 // # Class Definition 115 // --------------------------------- 116 // 117 /** 118 * Sticky Sidebar Class. 119 * @public 120 */ 121 122 var StickySidebar = function () { 123 124 /** 125 * Sticky Sidebar Constructor. 126 * @constructor 127 * @param {HTMLElement|String} sidebar - The sidebar element or sidebar selector. 128 * @param {Object} options - The options of sticky sidebar. 129 */ 130 function StickySidebar(sidebar) { 131 var _this = this; 132 133 var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; 134 135 _classCallCheck(this, StickySidebar); 136 137 this.options = StickySidebar.extend(DEFAULTS, options); 138 139 // Sidebar element query if there's no one, throw error. 140 this.sidebar = 'string' === typeof sidebar ? document.querySelector(sidebar) : sidebar; 141 if ('undefined' === typeof this.sidebar) throw new Error("There is no specific sidebar element."); 142 143 this.sidebarInner = false;
144 this.container = this.sidebar.parentElement; 145 146 // Current Affix Type of sidebar element. 147 this.affixedType = 'STATIC'; 148 this.direction = 'down'; 149 this.support = { 150 transform: false, 151 transform3d: false 152 }; 153 154 this._initialized = false; 155 this._reStyle = false; 156 this._breakpoint = false; 157 158 // Dimensions of sidebar, container and screen viewport. 159 this.dimensions = { 160 translateY: 0, 161 maxTranslateY: 0, 162 topSpacing: 0, 163 lastTopSpacing: 0, 164 bottomSpacing: 0, 165 lastBottomSpacing: 0, 166 sidebarHeight: 0, 167 sidebarWidth: 0, 168 containerTop: 0, 169 containerHeight: 0, 170 viewportHeight: 0, 171 viewportTop: 0, 172 lastViewportTop: 0 173 }; 174 175 // Bind event handlers for referencability. 176 ['handleEvent'].forEach(function (method) { 177 _this[method] = _this[method].bind(_this); 178 }); 179 180 // Initialize sticky sidebar for first time. 181 this.initialize(); 182 } 183 184 /**
185 * Initializes the sticky sidebar by adding inner wrapper, define its container, 186 * min-width breakpoint, calculating dimensions, adding helper classes and inline style. 187 * @private 188 */ 189 190 191 _createClass(StickySidebar, [{ 192 key: 'initialize', 193 value: function initialize() { 194 var _this2 = this; 195 196 this._setSupportFeatures(); 197 198 // Get sticky sidebar inner wrapper, if not found, will create one. 199 if (this.options.innerWrapperSelector) { 200 this.sidebarInner = this.sidebar.querySelector(this.options.innerWrapperSelector); 201 202 if (null === this.sidebarInner) this.sidebarInner = false; 203 } 204 205 if (!this.sidebarInner) { 206 var wrapper = document.createElement('div'); 207 wrapper.setAttribute('class', 'inner-wrapper-sticky'); 208 this.sidebar.appendChild(wrapper); 209 210 while (this.sidebar.firstChild != wrapper) { 211 wrapper.appendChild(this.sidebar.firstChild); 212 }this.sidebarInner = this.sidebar.querySelector('.inner-wrapper-sticky'); 213 } 214 215 // Container wrapper of the sidebar. 216 if (this.options.containerSelector) { 217 var containers = document.querySelectorAll(this.options.containerSelector);
218 containers = Array.prototype.slice.call(containers); 219 220 containers.forEach(function (container, item) { 221 if (!container.contains(_this2.sidebar)) return; 222 _this2.container = container; 223 }); 224 225 if (!containers.length) throw new Error("The container does not contains on the sidebar."); 226 } 227 228 // If top/bottom spacing is not function parse value to integer. 229 if ('function' !== typeof this.options.topSpacing) this.options.topSpacing = parseInt(this.options.topSpacing) || 0; 230 231 if ('function' !== typeof this.options.bottomSpacing) this.options.bottomSpacing = parseInt(this.options.bottomSpacing) || 0; 232 233 // Breakdown sticky sidebar if screen width below `options.minWidth`. 234 this._widthBreakpoint(); 235 236 // Calculate dimensions of sidebar, container and viewport. 237 this.calcDimensions(); 238 239 // Affix sidebar in proper position. 240 this.stickyPosition(); 241 242 // Bind all events. 243 this.bindEvents(); 244
vendor: 4,110 bytes, lines 245-342
245 // Inform other properties the sticky sidebar is initialized. 246 this._initialized = true; 247 } 248 }, { 249 key: 'bindEvents', 250 value: function bindEvents() { 251 window.addEventListener('resize', this, { passive: true, capture: false }); 252 window.addEventListener('scroll', this, { passive: true, capture: false }); 253 254 this.sidebar.addEventListener('update' + EVENT_KEY, this); 255 256 if (this.options.resizeSensor && 'undefined' !== typeof ResizeSensor) { 257 new ResizeSensor(this.sidebarInner, this.handleEvent); 258 new ResizeSensor(this.container, this.handleEvent); 259 } 260 } 261 }, { 262 key: 'handleEvent', 263 value: function handleEvent(event) { 264 this.updateSticky(event); 265 } 266 }, { 267 key: 'calcDimensions', 268 value: function calcDimensions() { 269 if (this._breakpoint) return; 270 var dims = this.dimensions; 271 272 // Container of sticky sidebar dimensions. 273 dims.containerTop = StickySidebar.offsetRelative(this.container).top; 274 dims.containerHeight = this.container.clientHeight; 275 dims.containerBottom = dims.containerTop + dims.containerHeight; 276 277 // Sidebar dimensions. 278 dims.sidebarHeight = this.sidebarInner.offsetHeight; 279 dims.sidebarWidth = this.sidebarInner.offsetWidth; 280 281 // Screen viewport dimensions. 282 dims.viewportHeight = window.innerHeight; 283 284 // Maximum sidebar translate Y. 285 dims.maxTranslateY = dims.containerHeight - dims.sidebarHeight; 286 287 this._calcDimensionsWithScroll(); 288 } 289 }, { 290 key: '_calcDimensionsWithScroll', 291 value: function _calcDimensionsWithScroll() { 292 var dims = this.dimensions; 293 294 dims.sidebarLeft = StickySidebar.offsetRelative(this.sidebar).left; 295 296 dims.viewportTop = document.documentElement.scrollTop || document.body.scrollTop; 297 dims.viewportBottom = dims.viewportTop + dims.viewportHeight; 298 dims.viewportLeft = document.documentElement.scrollLeft || document.body.scrollLeft; 299 300 dims.topSpacing = this.options.topSpacing; 301 dims.bottomSpacing = this.options.bottomSpacing; 302 303 if ('function' === typeof dims.topSpacing) dims.topSpacing = parseInt(dims.topSpacing(this.sidebar)) || 0; 304 305 if ('function' === typeof dims.bottomSpacing) dims.bottomSpacing = parseInt(dims.bottomSpacing(this.sidebar)) || 0; 306 307 if ('VIEWPORT-TOP' === this.affixedType) { 308 // Adjust translate Y in the case decrease top spacing value. 309 if (dims.topSpacing < dims.lastTopSpacing) { 310 dims.translateY += dims.lastTopSpacing - dims.topSpacing; 311 this._reStyle = true; 312 } 313 } else if ('VIEWPORT-BOTTOM' === this.affixedType) { 314 // Adjust translate Y in the case decrease bottom spacing value. 315 if (dims.bottomSpacing < dims.lastBottomSpacing) { 316 dims.translateY += dims.lastBottomSpacing - dims.bottomSpacing; 317 this._reStyle = true; 318 } 319 } 320 321 dims.lastTopSpacing = dims.topSpacing; 322 dims.lastBottomSpacing = dims.bottomSpacing; 323 } 324 }, { 325 key: 'isSidebarFitsViewport', 326 value: function isSidebarFitsViewport() { 327 var dims = this.dimensions; 328 var offset = this.scrollDirection === 'down' ? dims.lastBottomSpacing : dims.lastTopSpacing; 329 return this.dimensions.sidebarHeight + offset < this.dimensions.viewportHeight; 330 } 331 }, { 332 key: 'observeScrollDir', 333 value: function observeScrollDir() { 334 var dims = this.dimensions; 335 if (dims.lastViewportTop === dims.viewportTop) return; 336 337 var furthest = 'down' === this.direction ? Math.min : Math.max; 338 339 // If the browser is scrolling not in the same direction. 340 if (dims.viewportTop === furthest(dims.viewportTop, dims.lastViewportTop)) this.direction = 'down' === this.direction ? 'up' : 'down'; 341 } 342 }, {
vendor: 5,307 bytes, lines 343-469
343 key: 'getAffixType', 344 value: function getAffixType() { 345 this._calcDimensionsWithScroll(); 346 var dims = this.dimensions; 347 var colliderTop = dims.viewportTop + dims.topSpacing; 348 var affixType = this.affixedType; 349 350 if (colliderTop <= dims.containerTop || dims.containerHeight <= dims.sidebarHeight) { 351 dims.translateY = 0; 352 affixType = 'STATIC'; 353 } else { 354 affixType = 'up' === this.direction ? this._getAffixTypeScrollingUp() : this._getAffixTypeScrollingDown(); 355 } 356 357 // Make sure the translate Y is not bigger than container height. 358 dims.translateY = Math.max(0, dims.translateY); 359 dims.translateY = Math.min(dims.containerHeight, dims.translateY); 360 dims.translateY = Math.round(dims.translateY); 361 362 dims.lastViewportTop = dims.viewportTop; 363 return affixType; 364 } 365 }, { 366 key: '_getAffixTypeScrollingDown', 367 value: function _getAffixTypeScrollingDown() { 368 var dims = this.dimensions; 369 var sidebarBottom = dims.sidebarHeight + dims.containerTop; 370 var colliderTop = dims.viewportTop + dims.topSpacing; 371 var colliderBottom = dims.viewportBottom - dims.bottomSpacing; 372 var affixType = this.affixedType; 373 374 if (this.isSidebarFitsViewport()) { 375 if (dims.sidebarHeight + colliderTop >= dims.containerBottom) { 376 dims.translateY = dims.containerBottom - sidebarBottom; 377 affixType = 'CONTAINER-BOTTOM'; 378 } else if (colliderTop >= dims.containerTop) { 379 dims.translateY = colliderTop - dims.containerTop; 380 affixType = 'VIEWPORT-TOP'; 381 } 382 } else { 383 if (dims.containerBottom <= colliderBottom) { 384 dims.translateY = dims.containerBottom - sidebarBottom; 385 affixType = 'CONTAINER-BOTTOM'; 386 } else if (sidebarBottom + dims.translateY <= colliderBottom) { 387 dims.translateY = colliderBottom - sidebarBottom; 388 affixType = 'VIEWPORT-BOTTOM'; 389 } else if (dims.containerTop + dims.translateY <= colliderTop && 0 !== dims.translateY && dims.maxTranslateY !== dims.translateY) { 390 affixType = 'VIEWPORT-UNBOTTOM'; 391 } 392 } 393 394 return affixType; 395 } 396 }, { 397 key: '_getAffixTypeScrollingUp', 398 value: function _getAffixTypeScrollingUp() { 399 var dims = this.dimensions; 400 var sidebarBottom = dims.sidebarHeight + dims.containerTop; 401 var colliderTop = dims.viewportTop + dims.topSpacing; 402 var colliderBottom = dims.viewportBottom - dims.bottomSpacing; 403 var affixType = this.affixedType; 404 405 if (colliderTop <= dims.translateY + dims.containerTop) { 406 dims.translateY = colliderTop - dims.containerTop; 407 affixType = 'VIEWPORT-TOP'; 408 } else if (dims.containerBottom <= colliderBottom) { 409 dims.translateY = dims.containerBottom - sidebarBottom; 410 affixType = 'CONTAINER-BOTTOM'; 411 } else if (!this.isSidebarFitsViewport()) { 412 413 if (dims.containerTop <= colliderTop && 0 !== dims.translateY && dims.maxTranslateY !== dims.translateY) { 414 affixType = 'VIEWPORT-UNBOTTOM'; 415 } 416 } 417 418 return affixType; 419 } 420 }, { 421 key: '_getStyle', 422 value: function _getStyle(affixType) { 423 if ('undefined' === typeof affixType) return; 424 425 var style = { inner: {}, outer: {} }; 426 var dims = this.dimensions; 427 428 switch (affixType) { 429 case 'VIEWPORT-TOP': 430 style.inner = { position: 'fixed', top: dims.topSpacing, 431 left: dims.sidebarLeft - dims.viewportLeft, width: dims.sidebarWidth }; 432 break; 433 case 'VIEWPORT-BOTTOM': 434 style.inner = { position: 'fixed', top: 'auto', left: dims.sidebarLeft, 435 bottom: dims.bottomSpacing, width: dims.sidebarWidth }; 436 break; 437 case 'CONTAINER-BOTTOM': 438 case 'VIEWPORT-UNBOTTOM': 439 var translate = this._getTranslate(0, dims.translateY + 'px'); 440 441 if (translate) style.inner = { transform: translate };else style.inner = { position: 'absolute', top: dims.translateY, width: dims.sidebarWidth }; 442 break; 443 } 444 445 switch (affixType) { 446 case 'VIEWPORT-TOP': 447 case 'VIEWPORT-BOTTOM': 448 case 'VIEWPORT-UNBOTTOM': 449 case 'CONTAINER-BOTTOM': 450 style.outer = { height: dims.sidebarHeight, position: 'relative' }; 451 break; 452 } 453 454 style.outer = StickySidebar.extend({ height: '', position: '' }, style.outer); 455 style.inner = StickySidebar.extend({ position: 'relative', top: '', left: '', 456 bottom: '', width: '', transform: '' }, style.inner); 457 458 return style; 459 } 460 }, { 461 key: 'stickyPosition', 462 value: function stickyPosition(force) { 463 if (this._breakpoint) return; 464 465 force = this._reStyle || force || false; 466 467 var offsetTop = this.options.topSpacing; 468 var offsetBottom = this.options.bottomSpacing; 469
vendor: 8,290 bytes, lines 470-693
470 var affixType = this.getAffixType(); 471 var style = this._getStyle(affixType); 472 473 if ((this.affixedType != affixType || force) && affixType) { 474 var affixEvent = 'affix.' + affixType.toLowerCase().replace('viewport-', '') + EVENT_KEY; 475 StickySidebar.eventTrigger(this.sidebar, affixEvent); 476 477 if ('STATIC' === affixType) StickySidebar.removeClass(this.sidebar, this.options.stickyClass);else StickySidebar.addClass(this.sidebar, this.options.stickyClass); 478 479 for (var key in style.outer) { 480 var unit = 'number' === typeof style.outer[key] ? 'px' : ''; 481 this.sidebar.style[key] = style.outer[key] + unit; 482 } 483 484 for (var _key in style.inner) { 485 var _unit = 'number' === typeof style.inner[_key] ? 'px' : ''; 486 this.sidebarInner.style[_key] = style.inner[_key] + _unit; 487 } 488 489 var affixedEvent = 'affixed.' + affixType.toLowerCase().replace('viewport-', '') + EVENT_KEY; 490 StickySidebar.eventTrigger(this.sidebar, affixedEvent); 491 } else { 492 if (this._initialized) this.sidebarInner.style.left = style.inner.left; 493 } 494 495 this.affixedType = affixType; 496 } 497 }, { 498 key: '_widthBreakpoint', 499 value: function _widthBreakpoint() { 500 501 if (window.innerWidth <= this.options.minWidth) { 502 this._breakpoint = true; 503 this.affixedType = 'STATIC'; 504 505 this.sidebar.removeAttribute('style'); 506 StickySidebar.removeClass(this.sidebar, this.options.stickyClass); 507 this.sidebarInner.removeAttribute('style'); 508 } else { 509 this._breakpoint = false; 510 } 511 } 512 }, { 513 key: 'updateSticky', 514 value: function updateSticky() { 515 var _this3 = this; 516 517 var event = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; 518 519 if (this._running) return; 520 this._running = true; 521 522 (function (eventType) { 523 requestAnimationFrame(function () { 524 switch (eventType) { 525 // When browser is scrolling and re-calculate just dimensions 526 // within scroll. 527 case 'scroll': 528 _this3._calcDimensionsWithScroll(); 529 _this3.observeScrollDir(); 530 _this3.stickyPosition(); 531 break; 532 533 // When browser is resizing or there's no event, observe width 534 // breakpoint and re-calculate dimensions. 535 case 'resize': 536 default: 537 _this3._widthBreakpoint(); 538 _this3.calcDimensions(); 539 _this3.stickyPosition(true); 540 break; 541 } 542 _this3._running = false; 543 }); 544 })(event.type); 545 } 546 }, { 547 key: '_setSupportFeatures', 548 value: function _setSupportFeatures() { 549 var support = this.support; 550 551 support.transform = StickySidebar.supportTransform(); 552 support.transform3d = StickySidebar.supportTransform(true); 553 } 554 }, { 555 key: '_getTranslate', 556 value: function _getTranslate() { 557 var y = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0; 558 var x = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0; 559 var z = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0; 560 561 if (this.support.transform3d) return 'translate3d(' + y + ', ' + x + ', ' + z + ')';else if (this.support.translate) return 'translate(' + y + ', ' + x + ')';else return false; 562 } 563 }, { 564 key: 'destroy', 565 value: function destroy() { 566 window.removeEventListener('resize', this, { capture: false }); 567 window.removeEventListener('scroll', this, { capture: false }); 568 569 this.sidebar.classList.remove(this.options.stickyClass); 570 this.sidebar.style.minHeight = ''; 571 572 this.sidebar.removeEventListener('update' + EVENT_KEY, this); 573 574 var styleReset = { inner: {}, outer: {} }; 575 576 styleReset.inner = { position: '', top: '', left: '', bottom: '', width: '', transform: '' }; 577 styleReset.outer = { height: '', position: '' }; 578 579 for (var key in styleReset.outer) { 580 this.sidebar.style[key] = styleReset.outer[key]; 581 }for (var _key2 in styleReset.inner) { 582 this.sidebarInner.style[_key2] = styleReset.inner[_key2]; 583 }if (this.options.resizeSensor && 'undefined' !== typeof ResizeSensor) { 584 ResizeSensor.detach(this.sidebarInner, this.handleEvent); 585 ResizeSensor.detach(this.container, this.handleEvent); 586 } 587 } 588 }], [{ 589 key: 'supportTransform', 590 value: function supportTransform(transform3d) { 591 var result = false, 592 property = transform3d ? 'perspective' : 'transform', 593 upper = property.charAt(0).toUpperCase() + property.slice(1), 594 prefixes = ['Webkit', 'Moz', 'O', 'ms'], 595 support = document.createElement('support'), 596 style = support.style; 597 598 (property + ' ' + prefixes.join(upper + ' ') + upper).split(' ').forEach(function (property, i) { 599 if (style[property] !== undefined) { 600 result = property; 601 return false; 602 } 603 }); 604 return result; 605 } 606 }, { 607 key: 'eventTrigger', 608 value: function eventTrigger(element, eventName, data) { 609 try { 610 var event = new CustomEvent(eventName, { detail: data }); 611 } catch (e) { 612 var event = document.createEvent('CustomEvent'); 613 event.initCustomEvent(eventName, true, true, data); 614 } 615 element.dispatchEvent(event); 616 } 617 }, { 618 key: 'extend', 619 value: function extend(defaults, options) { 620 var results = {}; 621 for (var key in defaults) { 622 if ('undefined' !== typeof options[key]) results[key] = options[key];else results[key] = defaults[key]; 623 } 624 return results; 625 } 626 }, { 627 key: 'offsetRelative', 628 value: function offsetRelative(element) { 629 var result = { left: 0, top: 0 }; 630 631 do { 632 var offsetTop = element.offsetTop; 633 var offsetLeft = element.offsetLeft; 634 635 if (!isNaN(offsetTop)) result.top += offsetTop; 636 637 if (!isNaN(offsetLeft)) result.left += offsetLeft; 638 639 element = 'BODY' === element.tagName ? element.parentElement : element.offsetParent; 640 } while (element); 641 return result; 642 } 643 }, { 644 key: 'addClass', 645 value: function addClass(element, className) { 646 if (!StickySidebar.hasClass(element, className)) { 647 if (element.classList) element.classList.add(className);else element.className += ' ' + className; 648 } 649 } 650 }, { 651 key: 'removeClass', 652 value: function removeClass(element, className) { 653 if (StickySidebar.hasClass(element, className)) { 654 if (element.classList) element.classList.remove(className);else element.className = element.className.replace(new RegExp('(^|\\b)' + className.split(' ').join('|') + '(\\b|$)', 'gi'), ' '); 655 } 656 } 657 }, { 658 key: 'hasClass', 659 value: function hasClass(element, className) { 660 if (element.classList) return element.classList.contains(className);else return new RegExp('(^| )' + className + '( |$)', 'gi').test(element.className); 661 } 662 }, { 663 key: 'defaults', 664 get: function () { 665 return DEFAULTS; 666 } 667 }]); 668 669 return StickySidebar; 670 }(); 671 672 return StickySidebar; 673 }(); 674 675 exports.default = StickySidebar; 676 677 678 // Global 679 // ------------------------- 680 window.StickySidebar = StickySidebar; 681}); 682}); 683 684var stickySidebar$1 = unwrapExports(stickySidebar); 685 686exports['default'] = stickySidebar$1; 687exports.__moduleExports = stickySidebar; 688 689Object.defineProperty(exports, '__esModule', { value: true }); 690 691}))); 692 693//# sourceMappingURL=sticky-sidebar.js.map
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.