vendor: 3,653 bytes, lines 1-88
1/******/ (function(modules) { // webpackBootstrap 2/******/ // The module cache 3/******/ var installedModules = {}; 4/******/ 5/******/ // The require function 6/******/ function __webpack_require__(moduleId) { 7/******/ 8/******/ // Check if module is in cache 9/******/ if(installedModules[moduleId]) { 10/******/ return installedModules[moduleId].exports; 11/******/ } 12/******/ // Create a new module (and put it into the cache) 13/******/ var module = installedModules[moduleId] = { 14/******/ i: moduleId, 15/******/ l: false, 16/******/ exports: {} 17/******/ }; 18/******/ 19/******/ // Execute the module function 20/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 21/******/ 22/******/ // Flag the module as loaded 23/******/ module.l = true; 24/******/ 25/******/ // Return the exports of the module 26/******/ return module.exports; 27/******/ } 28/******/ 29/******/ 30/******/ // expose the modules object (__webpack_modules__) 31/******/ __webpack_require__.m = modules; 32/******/ 33/******/ // expose the module cache 34/******/ __webpack_require__.c = installedModules; 35/******/ 36/******/ // define getter function for harmony exports 37/******/ __webpack_require__.d = function(exports, name, getter) { 38/******/ if(!__webpack_require__.o(exports, name)) { 39/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); 40/******/ } 41/******/ }; 42/******/ 43/******/ // define __esModule on exports 44/******/ __webpack_require__.r = function(exports) { 45/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 46/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 47/******/ } 48/******/ Object.defineProperty(exports, '__esModule', { value: true }); 49/******/ }; 50/******/ 51/******/ // create a fake namespace object 52/******/ // mode & 1: value is a module id, require it 53/******/ // mode & 2: merge all properties of value into the ns 54/******/ // mode & 4: return value when already ns object 55/******/ // mode & 8|1: behave like require 56/******/ __webpack_require__.t = function(value, mode) { 57/******/ if(mode & 1) value = __webpack_require__(value); 58/******/ if(mode & 8) return value; 59/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; 60/******/ var ns = Object.create(null); 61/******/ __webpack_require__.r(ns); 62/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); 63/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); 64/******/ return ns; 65/******/ }; 66/******/ 67/******/ // getDefaultExport function for compatibility with non-harmony modules 68/******/ __webpack_require__.n = function(module) { 69/******/ var getter = module && module.__esModule ? 70/******/ function getDefault() { return module['default']; } : 71/******/ function getModuleExports() { return module; }; 72/******/ __webpack_require__.d(getter, 'a', getter); 73/******/ return getter; 74/******/ }; 75/******/ 76/******/ // Object.prototype.hasOwnProperty.call 77/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; 78/******/ 79/******/ // __webpack_public_path__ 80/******/ __webpack_require__.p = ""; 81/******/ 82/******/ 83/******/ // Load entry module and return exports 84/******/ return __webpack_require__(__webpack_require__.s = "./web/app/themes/uberflip/parts/components/header/index.js"); 85/******/ }) 86/************************************************************************/ 87/******/ ({ 88
vendor: 9,194 bytes, lines 89-100
89/***/ "./node_modules/body-scroll-lock/lib/bodyScrollLock.esm.js": 90/*!*****************************************************************!*\ 91 !*** ./node_modules/body-scroll-lock/lib/bodyScrollLock.esm.js ***! 92 \*****************************************************************/ 93/*! exports provided: disableBodyScroll, clearAllBodyScrollLocks, enableBodyScroll */ 94/***/ (function(module, __webpack_exports__, __webpack_require__) { 95 96"use strict"; 97eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"disableBodyScroll\", function() { return disableBodyScroll; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"clearAllBodyScrollLocks\", function() { return clearAllBodyScrollLocks; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"enableBodyScroll\", function() { return enableBodyScroll; });\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\n// Older browsers don't support event options, feature detect it.\n\n// Adopted and modified solution from Bohdan Didukh (2017)\n// https://stackoverflow.com/questions/41594997/ios-10-safari-prevent-scrolling-behind-a-fixed-overlay-and-maintain-scroll-posi\n\nvar hasPassiveEvents = false;\nif (typeof window !== 'undefined') {\n var passiveTestOptions = {\n get passive() {\n hasPassiveEvents = true;\n return undefined;\n }\n };\n window.addEventListener('testPassive', null, passiveTestOptions);\n window.removeEventListener('testPassive', null, passiveTestOptions);\n}\n\nvar isIosDevice = typeof window !== 'undefined' && window.navigator && window.navigator.platform && (/iP(ad|hone|od)/.test(window.navigator.platform) || window.navigator.platform === 'MacIntel' && window.navigator.maxTouchPoints > 1);\n\n\nvar locks = [];\nvar documentListenerAdded = false;\nvar initialClientY = -1;\nvar previousBodyOverflowSetting = void 0;\nvar previousBodyPaddingRight = void 0;\n\n// returns true if `el` should be allowed to receive touchmove events.\nvar allowTouchMove = function allowTouchMove(el) {\n return locks.some(function (lock) {\n if (lock.options.allowTouchMove && lock.options.allowTouchMove(el)) {\n return true;\n }\n\n return false;\n });\n};\n\nvar preventDefault = function preventDefault(rawEvent) {\n var e = rawEvent || window.event;\n\n // For the case whereby consumers adds a touchmove event listener to document.\n // Recall that we do document.addEventListener('touchmove', preventDefault, { passive: false })\n // in disableBodyScroll - so if we provide this opportunity to allowTouchMove, then\n // the touchmove event on document will break.\n if (allowTouchMove(e.target)) {\n return true;\n }\n\n // Do not prevent if the event has more than one touch (usually meaning this is a multi touch gesture like pinch to zoom).\n if (e.touches.length > 1) return true;\n\n if (e.preventDefault) e.preventDefault();\n\n return false;\n};\n\nvar setOverflowHidden = function setOverflowHidden(options) {\n // Setting overflow on body/documentElement synchronously in Desktop Safari slows down\n // the responsiveness for some reason. Setting within a setTimeout fixes this.\n setTimeout(function () {\n // If previousBodyPaddingRight is already set, don't set it again.\n if (previousBodyPaddingRight === undefined) {\n var _reserveScrollBarGap = !!options && options.reserveScrollBarGap === true;\n var scrollBarGap = window.innerWidth - document.documentElement.clientWidth;\n\n if (_reserveScrollBarGap && scrollBarGap > 0) {\n previousBodyPaddingRight = document.body.style.paddingRight;\n document.body.style.paddingRight = scrollBarGap + 'px';\n }\n }\n\n // If previousBodyOverflowSetting is already set, don't set it again.\n if (previousBodyOverflowSetting === undefined) {\n previousBodyOverflowSetting = document.body.style.overflow;\n document.body.style.overflow = 'hidden';\n }\n });\n};\n\nvar restoreOverflowSetting = function restoreOverflowSetting() {\n // Setting overflow on body/documentElement synchronously in Desktop Safari slows down\n // the responsiveness for some reason. Setting within a setTimeout fixes this.\n setTimeout(function () {\n if (previousBodyPaddingRight !== undefined) {\n document.body.style.paddingRight = previousBodyPaddingRight;\n\n // Restore previousBodyPaddingRight to undefined so setOverflowHidden knows it\n // can be set again.\n previousBodyPaddingRight = undefined;\n }\n\n if (previousBodyOverflowSetting !== undefined) {\n document.body.style.overflow = previousBodyOverflowSetting;\n\n // Restore previousBodyOverflowSetting to undefined\n // so setOverflowHidden knows it can be set again.\n previousBodyOverflowSetting = undefined;\n }\n });\n};\n\n// https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollHeight#Problems_and_solutions\nvar isTargetElementTotallyScrolled = function isTargetElementTotallyScrolled(targetElement) {\n return targetElement ? targetElement.scrollHeight - targetElement.scrollTop <= targetElement.clientHeight : false;\n};\n\nvar handleScroll = function handleScroll(event, targetElement) {\n var clientY = event.targetTouches[0].clientY - initialClientY;\n\n if (allowTouchMove(event.target)) {\n return false;\n }\n\n if (targetElement && targetElement.scrollTop === 0 && clientY > 0) {\n // element is at the top of its scroll.\n return preventDefault(event);\n }\n\n if (isTargetElementTotallyScrolled(targetElement) && clientY < 0) {\n // element is at the bottom of its scroll.\n return preventDefault(event);\n }\n\n event.stopPropagation();\n return true;\n};\n\nvar disableBodyScroll = function disableBodyScroll(targetElement, options) {\n if (isIosDevice) {\n // targetElement must be provided, and disableBodyScroll must not have been\n // called on this targetElement before.\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error('disableBodyScroll unsuccessful - targetElement must be provided when calling disableBodyScroll on IOS devices.');\n return;\n }\n\n if (targetElement && !locks.some(function (lock) {\n return lock.targetElement === targetElement;\n })) {\n var lock = {\n targetElement: targetElement,\n options: options || {}\n };\n\n locks = [].concat(_toConsumableArray(locks), [lock]);\n\n targetElement.ontouchstart = function (event) {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n initialClientY = event.targetTouches[0].clientY;\n }\n };\n targetElement.ontouchmove = function (event) {\n if (event.targetTouches.length === 1) {\n // detect single touch.\n handleScroll(event, targetElement);\n }\n };\n\n if (!documentListenerAdded) {\n document.addEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\n documentListenerAdded = true;\n }\n }\n } else {\n setOverflowHidden(options);\n var _lock = {\n targetElement: targetElement,\n options: options || {}\n };\n\n locks = [].concat(_toConsumableArray(locks), [_lock]);\n }\n};\n\nvar clearAllBodyScrollLocks = function clearAllBodyScrollLocks() {\n if (isIosDevice) {\n // Clear all locks ontouchstart/ontouchmove handlers, and the references.\n locks.forEach(function (lock) {\n lock.targetElement.ontouchstart = null;\n lock.targetElement.ontouchmove = null;\n });\n\n if (documentListenerAdded) {\n document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\n documentListenerAdded = false;\n }\n\n locks = [];\n\n // Reset initial clientY.\n initialClientY = -1;\n } else {\n restoreOverflowSetting();\n locks = [];\n }\n};\n\nvar enableBodyScroll = function enableBodyScroll(targetElement) {\n if (isIosDevice) {\n if (!targetElement) {\n // eslint-disable-next-line no-console\n console.error('enableBodyScroll unsuccessful - targetElement must be provided when calling enableBodyScroll on IOS devices.');\n return;\n }\n\n targetElement.ontouchstart = null;\n targetElement.ontouchmove = null;\n\n locks = locks.filter(function (lock) {\n return lock.targetElement !== targetElement;\n });\n\n if (documentListenerAdded && locks.length === 0) {\n document.removeEventListener('touchmove', preventDefault, hasPassiveEvents ? { passive: false } : undefined);\n\n documentListenerAdded = false;\n }\n } else {\n locks = locks.filter(function (lock) {\n return lock.targetElement !== targetElement;\n });\n if (!locks.length) {\n restoreOverflowSetting();\n }\n }\n};\n\n\n\n//# sourceURL=webpack:///./node_modules/body-scroll-lock/lib/bodyScrollLock.esm.js?"); 98 99/***/ }), 100
101/***/ "./web/app/themes/uberflip/js/app/__constants/animate-items.js": 102/*!*********************************************************************!*\ 103 !*** ./web/app/themes/uberflip/js/app/__constants/animate-items.js ***! 104 \*********************************************************************/ 105/*! exports provided: animateItems */ 106/***/ (function(module, __webpack_exports__, __webpack_require__) { 107 108"use strict"; 109eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"animateItems\", function() { return animateItems; });\nconst animateItems = () => {\n const SELECTOR = '.to-animate, .block-logos__body';\n const ANIMATE_CLASS_NAME = 'animate';\n\n const animate = element => element.classList.add(ANIMATE_CLASS_NAME);\n\n const isAnimated = element => element.classList.contains(ANIMATE_CLASS_NAME);\n\n const intersectionObserver = new IntersectionObserver((entries, observer) => {\n entries.forEach(entry => {\n // when element's is in viewport,\n // animate it!\n if (entry.intersectionRatio > 0) {\n animate(entry.target);\n } // remove observer after animation\n\n\n observer.unobserve(entry.target);\n });\n }); // get only these elements,\n // which are not animated yet\n\n const elements = [].filter.call(document.querySelectorAll(SELECTOR), element => !isAnimated(element, ANIMATE_CLASS_NAME)); // start observing your elements\n\n elements.forEach(element => intersectionObserver.observe(element));\n};\n\n\n\n//# sourceURL=webpack:///./web/app/themes/uberflip/js/app/__constants/animate-items.js?"); 110 111/***/ }), 112
113/***/ "./web/app/themes/uberflip/parts/components/header/index.js": 114/*!******************************************************************!*\ 115 !*** ./web/app/themes/uberflip/parts/components/header/index.js ***! 116 \******************************************************************/ 117/*! no exports provided */ 118/***/ (function(module, __webpack_exports__, __webpack_require__) { 119 120"use strict"; 121eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var body_scroll_lock__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! body-scroll-lock */ \"./node_modules/body-scroll-lock/lib/bodyScrollLock.esm.js\");\n/* harmony import */ var _scripts_MegaMenu__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./scripts/MegaMenu */ \"./web/app/themes/uberflip/parts/components/header/scripts/MegaMenu.js\");\n/* harmony import */ var _scripts_mobile_menu__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./scripts/mobile-menu */ \"./web/app/themes/uberflip/parts/components/header/scripts/mobile-menu.js\");\n/* harmony import */ var _js_app_constants_animate_items__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../../js/app/__constants/animate-items */ \"./web/app/themes/uberflip/js/app/__constants/animate-items.js\");\n\n\n\n\nconst $ = jQuery.noConflict();\nconst hamburger = document.querySelector('.hamburger-trigger');\nconst header = document.querySelector('.main-header');\nconst page = document.querySelector('.page-content');\nconst media = window.matchMedia('screen and (max-width: 991px)');\nconst wrapper = document.querySelector('.main-header__mobile');\nconst wrapperNode = document.querySelector('.main-header__mobile');\n\nconst closeMenu = el => {\n el.classList.remove('open');\n wrapper.classList.remove('active');\n Object(body_scroll_lock__WEBPACK_IMPORTED_MODULE_0__[\"enableBodyScroll\"])(wrapperNode);\n};\n\nconst handleMenu = e => {\n e.preventDefault();\n const el = hamburger;\n\n if (el.classList.contains('open')) {\n closeMenu(el);\n } else {\n el.classList.add('open');\n wrapper.classList.add('active'); //$(wrapper).find('.').removeClass('');\n\n Object(body_scroll_lock__WEBPACK_IMPORTED_MODULE_0__[\"disableBodyScroll\"])(wrapperNode);\n setTimeout(() => {\n Object(_js_app_constants_animate_items__WEBPACK_IMPORTED_MODULE_3__[\"animateItems\"])();\n }, 400);\n }\n};\n\nconst setPageOffset = () => {\n const height = header.offsetHeight;\n page.style.marginTop = `${height}px`;\n};\n\nconst setMenuHeight = () => {\n const height = header.offsetHeight;\n const windowHeight = window.screen.height;\n const totalHeight = windowHeight - height;\n\n if (media.matches) {\n $(wrapper).height(totalHeight);\n } else {\n $(wrapper).height('');\n }\n};\n\nconst initMenu = () => {\n setPageOffset();\n setMenuHeight();\n hamburger.addEventListener('click', handleMenu);\n Object(_scripts_mobile_menu__WEBPACK_IMPORTED_MODULE_2__[\"default\"])();\n window.addEventListener('resize', () => {\n setPageOffset();\n setMenuHeight();\n\n if (!media.matches && wrapper.classList.contains('active')) {\n closeMenu(hamburger);\n }\n });\n};\n\ninitMenu();\n_scripts_MegaMenu__WEBPACK_IMPORTED_MODULE_1__[\"default\"].init();\n\n//# sourceURL=webpack:///./web/app/themes/uberflip/parts/components/header/index.js?"); 122 123/***/ }), 124
125/***/ "./web/app/themes/uberflip/parts/components/header/scripts/MegaMenu.js": 126/*!*****************************************************************************!*\ 127 !*** ./web/app/themes/uberflip/parts/components/header/scripts/MegaMenu.js ***! 128 \*****************************************************************************/ 129/*! exports provided: default */ 130/***/ (function(module, __webpack_exports__, __webpack_require__) { 131 132"use strict"; 133eval("__webpack_require__.r(__webpack_exports__);\nconst $ = jQuery.noConflict();\n\nfunction isTouchDevice() {\n return 'ontouchstart' in window || navigator.msMaxTouchPoints;\n}\n\nclass MegaMenu {\n constructor() {\n this.menu = $('.main-header__nav');\n this.menuItems = this.menu.find('> .menu > .menu-item-type-post_type');\n this.menuItemsLinks = this.menuItems.find('> a');\n }\n\n static showMegaMenu() {\n const megaMenuWrapper = $(this).find('.mega-menu-wrapper');\n const megaMenuCols = megaMenuWrapper.find('[class*=\"col-\"]');\n const timer = $('.main-header .mega-menu-background').height() !== 0 ? 0 : 250;\n MegaMenu.menuTimeout = setTimeout(() => {\n megaMenuCols.each((i, v) => {\n MegaMenu.animateItemsIn($(v).find('a, .mega-menu__image'));\n });\n megaMenuWrapper.addClass('active');\n megaMenuWrapper.prev().addClass('active');\n MegaMenu.animateMenuBackground(megaMenuWrapper.outerHeight());\n }, timer);\n }\n\n static hideMegaMenu() {\n clearTimeout(MegaMenu.menuTimeout);\n const activeMegaMenu = $('.mega-menu-wrapper.active');\n const activeMegaMenuItems = activeMegaMenu.find('a, .mega-menu__image');\n activeMegaMenu.removeClass('active');\n activeMegaMenu.prev().removeClass('active');\n activeMegaMenuItems.removeClass('active');\n MegaMenu.animateMenuBackground(0);\n }\n\n static hideMegaMenuOnTouch(e) {\n const container = $('.main-header__nav');\n\n if (!container.is(e.target) && container.has(e.target).length === 0 && $('.mega-menu-wrapper').hasClass('active')) {\n MegaMenu.hideMegaMenu();\n }\n }\n\n static animateItemsIn(items) {\n let delay = 0.3;\n items.each((i, v) => {\n delay += 0.04;\n $(v).css('transition-delay', `${delay}s`);\n $(v).addClass('active');\n });\n }\n\n static animateMenuBackground(height) {\n $('.main-header .mega-menu-background').stop().animate({\n height: `${height}px`\n }, 300);\n }\n\n bindEvents() {\n this.menuItems.on('mouseenter', MegaMenu.showMegaMenu);\n this.menuItems.on('mouseleave', MegaMenu.hideMegaMenu);\n }\n\n toggleMegaMenu(e) {\n if (window.matchMedia('screen and (max-width: 991px)').matches) {\n return;\n }\n\n e.preventDefault();\n const megaMenuWrapper = $(this).next('.mega-menu-wrapper');\n const megaMenuCols = megaMenuWrapper.find('[class*=\"col-\"]');\n\n if (megaMenuWrapper.hasClass('active')) {\n return;\n }\n\n MegaMenu.hideMegaMenu();\n megaMenuCols.each((i, v) => {\n MegaMenu.animateItemsIn($(v).find('*'));\n });\n megaMenuWrapper.addClass('active');\n MegaMenu.animateMenuBackground(megaMenuWrapper.outerHeight());\n }\n\n init() {\n this.bindEvents();\n }\n\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (new MegaMenu());\n\n//# sourceURL=webpack:///./web/app/themes/uberflip/parts/components/header/scripts/MegaMenu.js?"); 134 135/***/ }), 136
137/***/ "./web/app/themes/uberflip/parts/components/header/scripts/mobile-menu.js": 138/*!********************************************************************************!*\ 139 !*** ./web/app/themes/uberflip/parts/components/header/scripts/mobile-menu.js ***! 140 \********************************************************************************/ 141/*! exports provided: default */ 142/***/ (function(module, __webpack_exports__, __webpack_require__) { 143 144"use strict"; 145eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var body_scroll_lock__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! body-scroll-lock */ \"./node_modules/body-scroll-lock/lib/bodyScrollLock.esm.js\");\n\nconst $ = jQuery.noConflict();\nconst wrapper = $('.main-header__mobile');\nconst headerHeight = $('.main-header').outerHeight();\nconst backHeight = $('.mobile-menu__back').outerHeight(true);\nconst mobileContainer = $('.mobile-menu__container');\nconst wrapperNode = document.querySelector('.main-header__mobile');\n\nconst setMobileMenuHeight = () => {\n const windowHeight = window.screen.height;\n const totalHeight = windowHeight - headerHeight - backHeight;\n $('.mobile-menu__wrapper.active .mobile-menu__container').height(totalHeight);\n};\n\nfunction degradeLevel(e) {\n e.preventDefault();\n const el = $(this);\n wrapper.removeClass('first-step');\n mobileContainer.height('');\n Object(body_scroll_lock__WEBPACK_IMPORTED_MODULE_0__[\"clearAllBodyScrollLocks\"])();\n Object(body_scroll_lock__WEBPACK_IMPORTED_MODULE_0__[\"disableBodyScroll\"])(wrapperNode);\n setTimeout(() => {\n el.parent().removeClass('active');\n }, 300);\n}\n\nfunction changeLevel(e) {\n e.preventDefault();\n const el = $(this);\n const next = el.siblings('.mobile-menu__wrapper');\n next.addClass('active'); //next.find('.').removeClass('');\n\n wrapper.addClass('first-step');\n setMobileMenuHeight();\n Object(body_scroll_lock__WEBPACK_IMPORTED_MODULE_0__[\"clearAllBodyScrollLocks\"])();\n Object(body_scroll_lock__WEBPACK_IMPORTED_MODULE_0__[\"disableBodyScroll\"])($('.mobile-menu__wrapper.active .mobile-menu__container')[0]);\n}\n\nconst initMobileLevels = () => {\n $('.main-header__mobile .menu-item-object-ccs_custom_menu_item > button').on('click', changeLevel);\n $('.mobile-menu__back').on('click', degradeLevel);\n window.addEventListener('resize', () => {\n setMobileMenuHeight();\n });\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (initMobileLevels);\n\n//# sourceURL=webpack:///./web/app/themes/uberflip/parts/components/header/scripts/mobile-menu.js?"
vendor: 26 bytes, lines 145-149
145); 146 147/***/ }) 148 149/******/ });
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.