1/** 2 * @package WordPress 3 * @subpackage Travel Time 4 * @version 1.1.4 5 */ 6 7 8/** 9 * -------------------------------------------------------------------------- 10 * Bootstrap (v4.0.0-alpha.6): util.js 11 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 12 * -------------------------------------------------------------------------- 13 */ 14 15var Util = function ($) { 16 17 /** 18 * ------------------------------------------------------------------------ 19 * Private TransitionEnd Helpers 20 * ------------------------------------------------------------------------ 21 */ 22 23 var transition = false; 24 25 var MAX_UID = 1000000; 26 27 var TransitionEndEvent = { 28 WebkitTransition: 'webkitTransitionEnd', 29 MozTransition: 'transitionend', 30 OTransition: 'oTransitionEnd otransitionend', 31 transition: 'transitionend' 32 }; 33 34 // shoutout AngusCroll (https://goo.gl/pxwQGp) 35 function toType(obj) { 36 return {}.toString.call(obj).match(/\s([a-zA-Z]+)/)[1].toLowerCase(); 37 } 38 39 function isElement(obj) { 40 return (obj[0] || obj).nodeType; 41 } 42 43 function getSpecialTransitionEndEvent() { 44 return { 45 bindType: transition.end, 46 delegateType: transition.end, 47 handle: function handle(event) { 48 if ($(event.target).is(this)) { 49 return event.handleObj.handler.apply(this, arguments); // eslint-disable-line prefer-rest-params 50 } 51 return undefined; 52 } 53 }; 54 } 55 56 function transitionEndTest() { 57 if (window.QUnit) { 58 return false; 59 } 60 61 var el = document.createElement('bootstrap'); 62 63 for (var name in TransitionEndEvent) { 64 if (el.style[name] !== undefined) { 65 return { 66 end: TransitionEndEvent[name] 67 }; 68 } 69 } 70 71 return false; 72 } 73 74 function transitionEndEmulator(duration) { 75 var _this = this; 76 77 var called = false; 78 79 $(this).one(Util.TRANSITION_END, function () { 80 called = true; 81 }); 82 83 setTimeout(function () { 84 if (!called) { 85 Util.triggerTransitionEnd(_this); 86 } 87 }, duration); 88 89 return this; 90 } 91 92 function setTransitionEndSupport() { 93 transition = transitionEndTest(); 94 95 $.fn.emulateTransitionEnd = transitionEndEmulator; 96 97 if (Util.supportsTransitionEnd()) { 98 $.event.special[Util.TRANSITION_END] = getSpecialTransitionEndEvent(); 99 } 100 } 101 102 /** 103 * -------------------------------------------------------------------------- 104 * Public Util Api 105 * -------------------------------------------------------------------------- 106 */ 107 108 var Util = { 109 110 TRANSITION_END: 'bsTransitionEnd', 111 112 getUID: function getUID(prefix) { 113 do { 114 // eslint-disable-next-line no-bitwise 115 prefix += ~~(Math.random() * MAX_UID); // "~~" acts like a faster Math.floor() here 116 } while (document.getElementById(prefix)); 117 return prefix; 118 }, 119 getSelectorFromElement: function getSelectorFromElement(element) { 120 var selector = element.getAttribute('data-target'); 121 122 if (!selector) { 123 selector = element.getAttribute('href') || ''; 124 selector = /^#[a-z]/i.test(selector) ? selector : null; 125 } 126 127 return selector; 128 }, 129 reflow: function reflow(element) { 130 return element.offsetHeight; 131 }, 132 triggerTransitionEnd: function triggerTransitionEnd(element) { 133 $(element).trigger(transition.end); 134 }, 135 supportsTransitionEnd: function supportsTransitionEnd() { 136 return Boolean(transition); 137 }, 138 typeCheckConfig: function typeCheckConfig(componentName, config, configTypes) { 139 for (var property in configTypes) { 140 if (configTypes.hasOwnProperty(property)) { 141 var expectedTypes = configTypes[property]; 142 var value = config[property]; 143 var valueType = value && isElement(value) ? 'element' : toType(value); 144 145 if (!new RegExp(expectedTypes).test(valueType)) { 146 throw new Error(componentName.toUpperCase() + ': ' + ('Option "' + property + '" provided type "' + valueType + '" ') + ('but expected type "' + expectedTypes + '".')); 147 } 148 } 149 } 150 } 151 }; 152 153 setTransitionEndSupport(); 154 155 return Util; 156}(jQuery); 157//# sourceMappingURL=util.js.map 158 159 160 161var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; 162 163var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }(); 164 165function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 166 167/** 168 * -------------------------------------------------------------------------- 169 * Bootstrap (v4.0.0-alpha.6): scrollspy.js 170 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 171 * -------------------------------------------------------------------------- 172 */ 173 174var ScrollSpy = function ($) { 175 176 /** 177 * ------------------------------------------------------------------------ 178 * Constants 179 * ------------------------------------------------------------------------ 180 */ 181 182 var NAME = 'scrollspy'; 183 var VERSION = '4.0.0-alpha.6'; 184 var DATA_KEY = 'bs.scrollspy'; 185 var EVENT_KEY = '.' + DATA_KEY; 186 var DATA_API_KEY = '.data-api'; 187 var JQUERY_NO_CONFLICT = $.fn[NAME]; 188 189 var Default = { 190 offset: 10, 191 method: 'auto', 192 target: '' 193 }; 194 195 var DefaultType = { 196 offset: 'number', 197 method: 'string', 198 target: '(string|element)' 199 }; 200 201 var Event = { 202 ACTIVATE: 'activate' + EVENT_KEY, 203 SCROLL: 'scroll' + EVENT_KEY, 204 LOAD_DATA_API: 'load' + EVENT_KEY + DATA_API_KEY 205 }; 206 207 var ClassName = { 208 ACTIVE: 'current-menu-item' 209 }; 210 211 var Selector = { 212 DATA_SPY: '[data-spy="scroll"]', 213 ACTIVE: '.current-menu-item', 214 LI: 'li', 215 NAV_LINKS: '.menu-item > a', 216 DROPDOWN: '.sub-menu',
217 DROPDOWN_ITEMS: '.sub-menu .menu-item > a' 218 }; 219 220 var OffsetMethod = { 221 OFFSET: 'offset', 222 POSITION: 'position' 223 }; 224 225 /** 226 * ------------------------------------------------------------------------ 227 * Class Definition 228 * ------------------------------------------------------------------------ 229 */ 230 231 var ScrollSpy = function () { 232 function ScrollSpy(element, config) { 233 var _this = this; 234 235 _classCallCheck(this, ScrollSpy); 236 237 this._element = element; 238 this._scrollElement = element.tagName === 'BODY' ? window : element; 239 this._config = this._getConfig(config); 240 this._selector = this._config.target + ' ' + Selector.NAV_LINKS + ',' + (this._config.target + ' ' + Selector.DROPDOWN_ITEMS); 241 this._offsets = []; 242 this._targets = []; 243 this._activeTarget = null; 244 this._scrollHeight = 0; 245 246 $(this._scrollElement).on(Event.SCROLL, function (event) { 247 return _this._process(event); 248 }); 249 250 this.refresh(); 251 this._process(); 252 } 253 254 // getters 255 256 // public 257 258 ScrollSpy.prototype.refresh = function refresh() { 259 var _this2 = this; 260 261 var autoMethod = this._scrollElement !== this._scrollElement.window ? OffsetMethod.POSITION : OffsetMethod.OFFSET; 262 263 var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method; 264 265 var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0; 266 267 this._offsets = []; 268 this._targets = []; 269 270 this._scrollHeight = this._getScrollHeight(); 271 272 var targets = $.makeArray($(this._selector)); 273 274 targets.map(function (element) { 275 var target = void 0; 276 var targetSelector = Util.getSelectorFromElement(element); 277 278 if (targetSelector) { 279 target = $(targetSelector)[0]; 280 } 281 282 if (target && (target.offsetWidth || target.offsetHeight)) { 283 // todo (fat): remove sketch reliance on jQuery position/offset 284 return [$(target)[offsetMethod]().top + offsetBase, targetSelector]; 285 } 286 return null; 287 }).filter(function (item) { 288 return item; 289 }).sort(function (a, b) { 290 return a[0] - b[0]; 291 }
291).forEach(function (item) { 292 _this2._offsets.push(item[0]); 293 _this2._targets.push(item[1]); 294 }); 295 }; 296 297 ScrollSpy.prototype.dispose = function dispose() { 298 $.removeData(this._element, DATA_KEY); 299 $(this._scrollElement).off(EVENT_KEY); 300 301 this._element = null; 302 this._scrollElement = null; 303 this._config = null; 304 this._selector = null; 305 this._offsets = null; 306 this._targets = null; 307 this._activeTarget = null; 308 this._scrollHeight = null; 309 }; 310 311 // private 312 313 ScrollSpy.prototype._getConfig = function _getConfig(config) { 314 config = $.extend({}, Default, config); 315 316 if (typeof config.target !== 'string') { 317 var id = $(config.target).attr('id'); 318 if (!id) { 319 id = Util.getUID(NAME); 320 $(config.target).attr('id', id); 321 } 322 config.target = '#' + id; 323 } 324 325 Util.typeCheckConfig(NAME, config, DefaultType); 326 327 return config; 328 }; 329 330 ScrollSpy.prototype._getScrollTop = function _getScrollTop() { 331 return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop; 332 }; 333 334 ScrollSpy.prototype._getScrollHeight = function _getScrollHeight() { 335 return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight); 336 }; 337 338 ScrollSpy.prototype._getOffsetHeight = function _getOffsetHeight() { 339 return this._scrollElement === window ? window.innerHeight : this._scrollElement.offsetHeight; 340 }; 341 342 ScrollSpy.prototype._process = function _process() { 343 var cmsmasters_wpAdminBar = $('#wpadminbar').outerHeight(), 344 cmsmasters_offset_val = (cmsmasters_wpAdminBar !== undefined) ? cmsmasters_wpAdminBar : 0; 345 346 347 if ($('#page').hasClass('fixed_header')) { 348 var cmsmasters_header_height = $('#header').outerHeight(); 349 350 cmsmasters_offset_val = cmsmasters_offset_val + cmsmasters_header_height; 351 } 352 353 354 this._config.offset = cmsmasters_offset_val; 355 356 357 var scrollTop = this._getScrollTop() + this._config.offset; 358 var scrollHeight = this._getScrollHeight(); 359 var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight(); 360 361 if (this._scrollHeight !== scrollHeight) { 362 this.refresh(); 363 } 364 365 if (scrollTop >= maxScroll) { 366 var target = this._targets[this._targets.length - 1]; 367 368 if (this._activeTarget !== target) { 369 this._activate(target); 370 } 371 return; 372 } 373 374 if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) { 375 this._activeTarget = null; 376 this._clear(); 377 return; 378 } 379 380 for (var i = this._offsets.length; i--;) { 381 var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (this._offsets[i + 1] === undefined || scrollTop < this._offsets[i + 1]); 382 383 if (isActiveTarget) { 384 this._activate(this._targets[i]); 385 } 386 } 387 }; 388 389 ScrollSpy.prototype._activate = function _activate(target) { 390 if (target === undefined) { 391 return false; 392 } 393 394 this._activeTarget = target; 395 396 this._clear(); 397 398 var queries = this._selector.split(','); 399 queries = queries.map(function (selector) { 400 return selector + '[data-target="' + target + '"],' + (selector + '[href="' + target + '"]'); 401 }); 402 403 var $link = $(queries.join(',')); 404 405 if ($link.closest('ul').hasClass('sub-menu')) { 406 $link.parents('.menu-item-has-children').addClass('current-menu-ancestor'); 407 $link.closest(Selector.LI).addClass(ClassName.ACTIVE); 408 } else { 409 // todo (fat) this is kinda sus... 410 // recursively add actives to tested nav-links 411 $link.closest(Selector.LI).addClass(ClassName.ACTIVE); 412 } 413 414 $(this._scrollElement).trigger(Event.ACTIVATE, { 415 relatedTarget: target 416 }); 417 }; 418 419 ScrollSpy.prototype._clear = function _clear() { 420 $(this._selector).parents('.menu-item-has-children').filter('.current-menu-ancestor').removeClass('current-menu-ancestor'); 421 $(this._selector).closest(Selector.LI).filter(Selector.ACTIVE).removeClass(ClassName.ACTIVE); 422 }; 423 424 // static 425 426 ScrollSpy._jQueryInterface = function _jQueryInterface(config) { 427 return this.each(function () { 428 var data = $(this).data(DATA_KEY); 429 var _config = (typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object' && config; 430 431 if (!data) { 432 data = new ScrollSpy(this, _config); 433 $(this).data(DATA_KEY, data); 434 } 435 436 if (typeof config === 'string') { 437 if (data[config] === undefined) {
vendor: 1,289 bytes, lines 438-490
438 throw new Error('No method named "' + config + '"'); 439 } 440 data[config](); 441 } 442 }); 443 }; 444 445 _createClass(ScrollSpy, null, [{ 446 key: 'VERSION', 447 get: function get() { 448 return VERSION; 449 } 450 }, { 451 key: 'Default', 452 get: function get() { 453 return Default; 454 } 455 }]); 456 457 return ScrollSpy; 458 }(); 459 460 /** 461 * ------------------------------------------------------------------------ 462 * Data Api implementation 463 * ------------------------------------------------------------------------ 464 */ 465 466 $(window).on(Event.LOAD_DATA_API, function () { 467 var scrollSpys = $.makeArray($(Selector.DATA_SPY)); 468 469 for (var i = scrollSpys.length; i--;) { 470 var $spy = $(scrollSpys[i]); 471 ScrollSpy._jQueryInterface.call($spy, $spy.data()); 472 } 473 }); 474 475 /** 476 * ------------------------------------------------------------------------ 477 * jQuery 478 * ------------------------------------------------------------------------ 479 */ 480 481 $.fn[NAME] = ScrollSpy._jQueryInterface; 482 $.fn[NAME].Constructor = ScrollSpy; 483 $.fn[NAME].noConflict = function () { 484 $.fn[NAME] = JQUERY_NO_CONFLICT; 485 return ScrollSpy._jQueryInterface; 486 }; 487 488 return ScrollSpy; 489}(jQuery); 490//# sourceMappingURL=scrollspy.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.