1/** 2 * @package WordPress 3 * @subpackage Green Farm 4 * @version 1.0.8 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 158 159 160var _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; }; 161 162var _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; }; }(); 163 164function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 165 166/** 167 * -------------------------------------------------------------------------- 168 * Bootstrap (v4.0.0-alpha.6): scrollspy.js 169 * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE) 170 * -------------------------------------------------------------------------- 171 */ 172 173var ScrollSpy = function ($) { 174 175 /** 176 * ------------------------------------------------------------------------ 177 * Constants 178 * ------------------------------------------------------------------------ 179 */ 180 181 var NAME = 'scrollspy'; 182 var VERSION = '4.0.0-alpha.6'; 183 var DATA_KEY = 'bs.scrollspy'; 184 var EVENT_KEY = '.' + DATA_KEY; 185 var DATA_API_KEY = '.data-api'; 186 var JQUERY_NO_CONFLICT = $.fn[NAME]; 187 188 var Default = { 189 offset: 10, 190 method: 'auto', 191 target: '' 192 }; 193 194 var DefaultType = { 195 offset: 'number', 196 method: 'string', 197 target: '(string|element)' 198 }; 199 200 var Event = { 201 ACTIVATE: 'activate' + EVENT_KEY, 202 SCROLL: 'scroll' + EVENT_KEY, 203 LOAD_DATA_API: 'load' + EVENT_KEY + DATA_API_KEY 204 }; 205 206 var ClassName = { 207 ACTIVE: 'current-menu-item' 208 }; 209 210 var Selector = { 211 DATA_SPY: '[data-spy="scroll"]', 212 ACTIVE: '.current-menu-item', 213 LI: 'li', 214 NAV_LINKS: '.menu-item > a', 215 DROPDOWN: '.sub-menu',
216 DROPDOWN_ITEMS: '.sub-menu .menu-item > a' 217 }; 218 219 var OffsetMethod = { 220 OFFSET: 'offset', 221 POSITION: 'position' 222 }; 223 224 /** 225 * ------------------------------------------------------------------------ 226 * Class Definition 227 * ------------------------------------------------------------------------ 228 */ 229 230 var ScrollSpy = function () { 231 function ScrollSpy(element, config) { 232 var _this = this; 233 234 _classCallCheck(this, ScrollSpy); 235 236 this._element = element; 237 this._scrollElement = element.tagName === 'BODY' ? window : element; 238 this._config = this._getConfig(config); 239 this._selector = this._config.target + ' ' + Selector.NAV_LINKS + ',' + (this._config.target + ' ' + Selector.DROPDOWN_ITEMS); 240 this._offsets = []; 241 this._targets = []; 242 this._activeTarget = null; 243 this._scrollHeight = 0; 244 245 $(this._scrollElement).on(Event.SCROLL, function (event) { 246 return _this._process(event); 247 }); 248 249 this.refresh(); 250 this._process(); 251 } 252 253 // getters 254 255 // public 256 257 ScrollSpy.prototype.refresh = function refresh() { 258 var _this2 = this; 259 260 var autoMethod = this._scrollElement !== this._scrollElement.window ? OffsetMethod.POSITION : OffsetMethod.OFFSET; 261 262 var offsetMethod = this._config.method === 'auto' ? autoMethod : this._config.method; 263 264 var offsetBase = offsetMethod === OffsetMethod.POSITION ? this._getScrollTop() : 0; 265 266 this._offsets = []; 267 this._targets = []; 268 269 this._scrollHeight = this._getScrollHeight(); 270 271 var targets = $.makeArray($(this._selector)); 272 273 targets.map(function (element) { 274 var target = void 0; 275 var targetSelector = Util.getSelectorFromElement(element); 276 277 if (targetSelector) { 278 target = $(targetSelector)[0]; 279 } 280 281 if (target && (target.offsetWidth || target.offsetHeight)) { 282 // todo (fat): remove sketch reliance on jQuery position/offset 283 return [$(target)[offsetMethod]().top + offsetBase, targetSelector]; 284 } 285 return null; 286 }).filter(function (item) { 287 return item; 288 }).sort(function (a, b) { 289 return a[0] - b[0]; 290 }
290).forEach(function (item) { 291 _this2._offsets.push(item[0]); 292 _this2._targets.push(item[1]); 293 }); 294 }; 295 296 ScrollSpy.prototype.dispose = function dispose() { 297 $.removeData(this._element, DATA_KEY); 298 $(this._scrollElement).off(EVENT_KEY); 299 300 this._element = null; 301 this._scrollElement = null; 302 this._config = null; 303 this._selector = null; 304 this._offsets = null; 305 this._targets = null; 306 this._activeTarget = null; 307 this._scrollHeight = null; 308 }; 309 310 // private 311 312 ScrollSpy.prototype._getConfig = function _getConfig(config) { 313 config = $.extend({}, Default, config); 314 315 if (typeof config.target !== 'string') { 316 var id = $(config.target).attr('id'); 317 if (!id) { 318 id = Util.getUID(NAME); 319 $(config.target).attr('id', id); 320 } 321 config.target = '#' + id; 322 } 323 324 Util.typeCheckConfig(NAME, config, DefaultType); 325 326 return config; 327 }; 328 329 ScrollSpy.prototype._getScrollTop = function _getScrollTop() { 330 return this._scrollElement === window ? this._scrollElement.pageYOffset : this._scrollElement.scrollTop; 331 }; 332 333 ScrollSpy.prototype._getScrollHeight = function _getScrollHeight() { 334 return this._scrollElement.scrollHeight || Math.max(document.body.scrollHeight, document.documentElement.scrollHeight); 335 }; 336 337 ScrollSpy.prototype._getOffsetHeight = function _getOffsetHeight() { 338 return this._scrollElement === window ? window.innerHeight : this._scrollElement.offsetHeight; 339 }; 340 341 ScrollSpy.prototype._process = function _process() { 342 var cmsmasters_wpAdminBar = $('#wpadminbar').outerHeight(), 343 cmsmasters_offset_val = (cmsmasters_wpAdminBar !== undefined) ? cmsmasters_wpAdminBar : 0; 344 345 346 if ($('#page').hasClass('fixed_header')) { 347 var cmsmasters_header_height = $('#header').outerHeight(); 348 349 cmsmasters_offset_val = cmsmasters_offset_val + cmsmasters_header_height; 350 } 351 352 353 this._config.offset = cmsmasters_offset_val; 354 355 356 var scrollTop = this._getScrollTop() + this._config.offset; 357 var scrollHeight = this._getScrollHeight(); 358 var maxScroll = this._config.offset + scrollHeight - this._getOffsetHeight(); 359 360 if (this._scrollHeight !== scrollHeight) { 361 this.refresh(); 362 } 363 364 if (scrollTop >= maxScroll) { 365 var target = this._targets[this._targets.length - 1]; 366 367 if (this._activeTarget !== target) { 368 this._activate(target); 369 } 370 return; 371 } 372 373 if (this._activeTarget && scrollTop < this._offsets[0] && this._offsets[0] > 0) { 374 this._activeTarget = null; 375 this._clear(); 376 return; 377 } 378 379 for (var i = this._offsets.length; i--;) { 380 var isActiveTarget = this._activeTarget !== this._targets[i] && scrollTop >= this._offsets[i] && (this._offsets[i + 1] === undefined || scrollTop < this._offsets[i + 1]); 381 382 if (isActiveTarget) { 383 this._activate(this._targets[i]); 384 } 385 } 386 }; 387 388 ScrollSpy.prototype._activate = function _activate(target) { 389 if (target === undefined) { 390 return false; 391 } 392 393 this._activeTarget = target; 394 395 this._clear(); 396 397 var queries = this._selector.split(','); 398 queries = queries.map(function (selector) { 399 return selector + '[data-target="' + target + '"],' + (selector + '[href="' + target + '"]'); 400 }); 401 402 var $link = $(queries.join(',')); 403 404 if ($link.closest('ul').hasClass('sub-menu')) { 405 $link.parents('.menu-item-has-children').addClass('current-menu-ancestor'); 406 $link.closest(Selector.LI).addClass(ClassName.ACTIVE); 407 } else { 408 // todo (fat) this is kinda sus... 409 // recursively add actives to tested nav-links 410 $link.closest(Selector.LI).addClass(ClassName.ACTIVE); 411 } 412 413 $(this._scrollElement).trigger(Event.ACTIVATE, { 414 relatedTarget: target 415 }); 416 }; 417 418 ScrollSpy.prototype._clear = function _clear() { 419 $(this._selector).parents('.menu-item-has-children').filter('.current-menu-ancestor').removeClass('current-menu-ancestor'); 420 $(this._selector).closest(Selector.LI).filter(Selector.ACTIVE).removeClass(ClassName.ACTIVE); 421 }; 422 423 // static 424 425 ScrollSpy._jQueryInterface = function _jQueryInterface(config) { 426 return this.each(function () { 427 var data = $(this).data(DATA_KEY); 428 var _config = (typeof config === 'undefined' ? 'undefined' : _typeof(config)) === 'object' && config; 429 430 if (!data) { 431 data = new ScrollSpy(this, _config); 432 $(this).data(DATA_KEY, data); 433 } 434 435 if (typeof config === 'string') { 436 if (data[config] === undefined) {
vendor: 1,303 bytes, lines 437-488
437 throw new Error('No method named "' + config + '"'); 438 } 439 data[config](); 440 } 441 }); 442 }; 443 444 _createClass(ScrollSpy, null, [{ 445 key: 'VERSION', 446 get: function get() { 447 return VERSION; 448 } 449 }, { 450 key: 'Default', 451 get: function get() { 452 return Default; 453 } 454 }]); 455 456 return ScrollSpy; 457 }(); 458 459 /** 460 * ------------------------------------------------------------------------ 461 * Data Api implementation 462 * ------------------------------------------------------------------------ 463 */ 464 465 $(window).on(Event.LOAD_DATA_API, function () { 466 var scrollSpys = $.makeArray($(Selector.DATA_SPY)); 467 468 for (var i = scrollSpys.length; i--;) { 469 var $spy = $(scrollSpys[i]); 470 ScrollSpy._jQueryInterface.call($spy, $spy.data()); 471 } 472 }); 473 474 /** 475 * ------------------------------------------------------------------------ 476 * jQuery 477 * ------------------------------------------------------------------------ 478 */ 479 480 $.fn[NAME] = ScrollSpy._jQueryInterface; 481 $.fn[NAME].Constructor = ScrollSpy; 482 $.fn[NAME].noConflict = function () { 483 $.fn[NAME] = JQUERY_NO_CONFLICT; 484 return ScrollSpy._jQueryInterface; 485 }; 486 487 return ScrollSpy; 488}(jQuery);
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.