1/*! 2 * jQuery JavaScript Library v3.6.0 3 * https://jquery.com/ 4 * 5 * Includes Sizzle.js 6 * https://sizzlejs.com/ 7 * 8 * Copyright OpenJS Foundation and other contributors 9 * Released under the MIT license 10 * https://jquery.org/license 11 * 12 * Date: 2021-03-02T17:08Z 13 */ 14( function( global, factory ) { 15 16 "use strict";
vendor: 6,502 bytes, lines 16-262
16 17 18 if ( typeof module === "object" && typeof module.exports === "object" ) { 19 20 // For CommonJS and CommonJS-like environments where a proper `window` 21 // is present, execute the factory and get jQuery. 22 // For environments that do not have a `window` with a `document` 23 // (such as Node.js), expose a factory as module.exports. 24 // This accentuates the need for the creation of a real `window`. 25 // e.g. var jQuery = require("jquery")(window); 26 // See ticket #14549 for more info. 27 module.exports = global.document ? 28 factory( global, true ) : 29 function( w ) { 30 if ( !w.document ) { 31 throw new Error( "jQuery requires a window with a document" ); 32 } 33 return factory( w ); 34 }; 35 } else { 36 factory( global ); 37 } 38 39// Pass this if window is not defined yet 40} )( typeof window !== "undefined" ? window : this, function( window, noGlobal ) { 41 42// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 43// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode 44// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common 45// enough that all such attempts are guarded in a try block. 46"use strict"; 47 48var arr = []; 49 50var getProto = Object.getPrototypeOf; 51 52var slice = arr.slice; 53 54var flat = arr.flat ? function( array ) { 55 return arr.flat.call( array ); 56} : function( array ) { 57 return arr.concat.apply( [], array ); 58}; 59 60 61var push = arr.push; 62 63var indexOf = arr.indexOf; 64 65var class2type = {}; 66 67var toString = class2type.toString; 68 69var hasOwn = class2type.hasOwnProperty; 70 71var fnToString = hasOwn.toString; 72 73var ObjectFunctionString = fnToString.call( Object ); 74 75var support = {}; 76 77var isFunction = function isFunction( obj ) { 78 79 // Support: Chrome <=57, Firefox <=52 80 // In some browsers, typeof returns "function" for HTML <object> elements 81 // (i.e., `typeof document.createElement( "object" ) === "function"`). 82 // We don't want to classify *any* DOM node as a function. 83 // Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5 84 // Plus for old WebKit, typeof returns "function" for HTML collections 85 // (e.g., `typeof document.getElementsByTagName("div") === "function"`). (gh-4756) 86 return typeof obj === "function" && typeof obj.nodeType !== "number" && 87 typeof obj.item !== "function"; 88 }; 89 90 91var isWindow = function isWindow( obj ) { 92 return obj != null && obj === obj.window; 93 }; 94 95 96var document = window.document; 97 98 99 100 var preservedScriptAttributes = { 101 type: true, 102 src: true, 103 nonce: true, 104 noModule: true 105 }; 106 107 function DOMEval( code, node, doc ) { 108 doc = doc || document; 109 110 var i, val, 111 script = doc.createElement( "script" ); 112 113 script.text = code; 114 if ( node ) { 115 for ( i in preservedScriptAttributes ) { 116 117 // Support: Firefox 64+, Edge 18+ 118 // Some browsers don't support the "nonce" property on scripts. 119 // On the other hand, just using `getAttribute` is not enough as 120 // the `nonce` attribute is reset to an empty string whenever it 121 // becomes browsing-context connected. 122 // See https://github.com/whatwg/html/issues/2369 123 // See https://html.spec.whatwg.org/#nonce-attributes 124 // The `node.getAttribute` check was added for the sake of 125 // `jQuery.globalEval` so that it can fake a nonce-containing node 126 // via an object. 127 val = node[ i ] || node.getAttribute && node.getAttribute( i ); 128 if ( val ) { 129 script.setAttribute( i, val ); 130 } 131 } 132 } 133 doc.head.appendChild( script ).parentNode.removeChild( script ); 134 } 135 136 137function toType( obj ) { 138 if ( obj == null ) { 139 return obj + ""; 140 } 141 142 // Support: Android <=2.3 only (functionish RegExp) 143 return typeof obj === "object" || typeof obj === "function" ? 144 class2type[ toString.call( obj ) ] || "object" : 145 typeof obj; 146} 147/* global Symbol */ 148// Defining this global in .eslintrc.json would create a danger of using the global 149// unguarded in another place, it seems safer to define global only for this module 150 151 152 153var 154 version = "3.6.0", 155 156 // Define a local copy of jQuery 157 jQuery = function( selector, context ) { 158 159 // The jQuery object is actually just the init constructor 'enhanced' 160 // Need init if jQuery is called (just allow error to be thrown if not included) 161 return new jQuery.fn.init( selector, context ); 162 }; 163 164jQuery.fn = jQuery.prototype = { 165 166 // The current version of jQuery being used 167 jquery: version, 168 169 constructor: jQuery, 170 171 // The default length of a jQuery object is 0 172 length: 0, 173 174 toArray: function() { 175 return slice.call( this ); 176 }, 177 178 // Get the Nth element in the matched element set OR 179 // Get the whole matched element set as a clean array 180 get: function( num ) { 181 182 // Return all the elements in a clean array 183 if ( num == null ) { 184 return slice.call( this ); 185 } 186 187 // Return just the one element from the set 188 return num < 0 ? this[ num + this.length ] : this[ num ]; 189 }, 190 191 // Take an array of elements and push it onto the stack 192 // (returning the new matched element set) 193 pushStack: function( elems ) { 194 195 // Build a new jQuery matched element set 196 var ret = jQuery.merge( this.constructor(), elems ); 197 198 // Add the old object onto the stack (as a reference) 199 ret.prevObject = this; 200 201 // Return the newly-formed element set 202 return ret; 203 }, 204 205 // Execute a callback for every element in the matched set. 206 each: function( callback ) { 207 return jQuery.each( this, callback ); 208 }, 209 210 map: function( callback ) { 211 return this.pushStack( jQuery.map( this, function( elem, i ) { 212 return callback.call( elem, i, elem ); 213 } ) ); 214 }, 215 216 slice: function() { 217 return this.pushStack( slice.apply( this, arguments ) ); 218 }, 219 220 first: function() { 221 return this.eq( 0 ); 222 }, 223 224 last: function() { 225 return this.eq( -1 ); 226 }, 227 228 even: function() { 229 return this.pushStack( jQuery.grep( this, function( _elem, i ) { 230 return ( i + 1 ) % 2; 231 } ) ); 232 }, 233 234 odd: function() { 235 return this.pushStack( jQuery.grep( this, function( _elem, i ) { 236 return i % 2; 237 } ) ); 238 }, 239 240 eq: function( i ) { 241 var len = this.length, 242 j = +i + ( i < 0 ? len : 0 ); 243 return this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] ); 244 }, 245 246 end: function() { 247 return this.prevObject || this.constructor(); 248 }, 249 250 // For internal use only. 251 // Behaves like an Array's method, not like a jQuery method. 252 push: push, 253 sort: arr.sort, 254 splice: arr.splice 255}; 256 257jQuery.extend = jQuery.fn.extend = function() { 258 var options, name, src, copy, copyIsArray, clone, 259 target = arguments[ 0 ] || {}, 260 i = 1, 261 length = arguments.length, 262 deep = false;
vendor: 180,765 bytes, lines 263-6949
263 264 // Handle a deep copy situation 265 if ( typeof target === "boolean" ) { 266 deep = target; 267 268 // Skip the boolean and the target 269 target = arguments[ i ] || {}; 270 i++; 271 } 272 273 // Handle case when target is a string or something (possible in deep copy) 274 if ( typeof target !== "object" && !isFunction( target ) ) { 275 target = {}; 276 } 277 278 // Extend jQuery itself if only one argument is passed 279 if ( i === length ) { 280 target = this; 281 i--; 282 } 283 284 for ( ; i < length; i++ ) { 285 286 // Only deal with non-null/undefined values 287 if ( ( options = arguments[ i ] ) != null ) { 288 289 // Extend the base object 290 for ( name in options ) { 291 copy = options[ name ]; 292 293 // Prevent Object.prototype pollution 294 // Prevent never-ending loop 295 if ( name === "__proto__" || target === copy ) { 296 continue; 297 } 298 299 // Recurse if we're merging plain objects or arrays 300 if ( deep && copy && ( jQuery.isPlainObject( copy ) || 301 ( copyIsArray = Array.isArray( copy ) ) ) ) { 302 src = target[ name ]; 303 304 // Ensure proper type for the source value 305 if ( copyIsArray && !Array.isArray( src ) ) { 306 clone = []; 307 } else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) { 308 clone = {}; 309 } else { 310 clone = src; 311 } 312 copyIsArray = false; 313 314 // Never move original objects, clone them 315 target[ name ] = jQuery.extend( deep, clone, copy ); 316 317 // Don't bring in undefined values 318 } else if ( copy !== undefined ) { 319 target[ name ] = copy; 320 } 321 } 322 } 323 } 324 325 // Return the modified object 326 return target; 327}; 328 329jQuery.extend( { 330 331 // Unique for each copy of jQuery on the page 332 expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ), 333 334 // Assume jQuery is ready without the ready module 335 isReady: true, 336 337 error: function( msg ) { 338 throw new Error( msg ); 339 }, 340 341 noop: function() {}, 342 343 isPlainObject: function( obj ) { 344 var proto, Ctor; 345 346 // Detect obvious negatives 347 // Use toString instead of jQuery.type to catch host objects 348 if ( !obj || toString.call( obj ) !== "[object Object]" ) { 349 return false; 350 } 351 352 proto = getProto( obj ); 353 354 // Objects with no prototype (e.g., `Object.create( null )`) are plain 355 if ( !proto ) { 356 return true; 357 } 358 359 // Objects with prototype are plain iff they were constructed by a global Object function 360 Ctor = hasOwn.call( proto, "constructor" ) && proto.constructor; 361 return typeof Ctor === "function" && fnToString.call( Ctor ) === ObjectFunctionString; 362 }, 363 364 isEmptyObject: function( obj ) { 365 var name; 366 367 for ( name in obj ) { 368 return false; 369 } 370 return true; 371 }, 372 373 // Evaluates a script in a provided context; falls back to the global one 374 // if not specified. 375 globalEval: function( code, options, doc ) { 376 DOMEval( code, { nonce: options && options.nonce }, doc ); 377 }, 378 379 each: function( obj, callback ) { 380 var length, i = 0; 381 382 if ( isArrayLike( obj ) ) { 383 length = obj.length; 384 for ( ; i < length; i++ ) { 385 if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { 386 break; 387 } 388 } 389 } else { 390 for ( i in obj ) { 391 if ( callback.call( obj[ i ], i, obj[ i ] ) === false ) { 392 break; 393 } 394 } 395 } 396 397 return obj; 398 }, 399 400 // results is for internal usage only 401 makeArray: function( arr, results ) { 402 var ret = results || []; 403 404 if ( arr != null ) { 405 if ( isArrayLike( Object( arr ) ) ) { 406 jQuery.merge( ret, 407 typeof arr === "string" ? 408 [ arr ] : arr 409 ); 410 } else { 411 push.call( ret, arr ); 412 } 413 } 414 415 return ret; 416 }, 417 418 inArray: function( elem, arr, i ) { 419 return arr == null ? -1 : indexOf.call( arr, elem, i ); 420 }, 421 422 // Support: Android <=4.0 only, PhantomJS 1 only 423 // push.apply(_, arraylike) throws on ancient WebKit 424 merge: function( first, second ) { 425 var len = +second.length, 426 j = 0, 427 i = first.length; 428 429 for ( ; j < len; j++ ) { 430 first[ i++ ] = second[ j ]; 431 } 432 433 first.length = i; 434 435 return first; 436 }, 437 438 grep: function( elems, callback, invert ) { 439 var callbackInverse, 440 matches = [], 441 i = 0, 442 length = elems.length, 443 callbackExpect = !invert; 444 445 // Go through the array, only saving the items 446 // that pass the validator function 447 for ( ; i < length; i++ ) { 448 callbackInverse = !callback( elems[ i ], i ); 449 if ( callbackInverse !== callbackExpect ) { 450 matches.push( elems[ i ] ); 451 } 452 } 453 454 return matches; 455 }, 456 457 // arg is for internal usage only 458 map: function( elems, callback, arg ) { 459 var length, value, 460 i = 0, 461 ret = []; 462 463 // Go through the array, translating each of the items to their new values 464 if ( isArrayLike( elems ) ) { 465 length = elems.length; 466 for ( ; i < length; i++ ) { 467 value = callback( elems[ i ], i, arg ); 468 469 if ( value != null ) { 470 ret.push( value ); 471 } 472 } 473 474 // Go through every key on the object, 475 } else { 476 for ( i in elems ) { 477 value = callback( elems[ i ], i, arg ); 478 479 if ( value != null ) { 480 ret.push( value ); 481 } 482 } 483 } 484 485 // Flatten any nested arrays 486 return flat( ret ); 487 }, 488 489 // A global GUID counter for objects 490 guid: 1, 491 492 // jQuery.support is not used in Core but other projects attach their 493 // properties to it so it needs to exist. 494 support: support 495} ); 496 497if ( typeof Symbol === "function" ) { 498 jQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ]; 499} 500 501// Populate the class2type map 502jQuery.each( "Boolean Number String Function Array Date RegExp Object Error Symbol".split( " " ), 503 function( _i, name ) { 504 class2type[ "[object " + name + "]" ] = name.toLowerCase(); 505 } ); 506 507function isArrayLike( obj ) { 508 509 // Support: real iOS 8.2 only (not reproducible in simulator) 510 // `in` check used to prevent JIT error (gh-2145) 511 // hasOwn isn't used here due to false negatives 512 // regarding Nodelist length in IE 513 var length = !!obj && "length" in obj && obj.length, 514 type = toType( obj ); 515 516 if ( isFunction( obj ) || isWindow( obj ) ) { 517 return false; 518 } 519 520 return type === "array" || length === 0 || 521 typeof length === "number" && length > 0 && ( length - 1 ) in obj; 522} 523var Sizzle = 524/*! 525 * Sizzle CSS Selector Engine v2.3.6 526 * https://sizzlejs.com/ 527 * 528 * Copyright JS Foundation and other contributors 529 * Released under the MIT license 530 * https://js.foundation/ 531 * 532 * Date: 2021-02-16 533 */ 534( function( window ) { 535var i, 536 support, 537 Expr, 538 getText, 539 isXML, 540 tokenize, 541 compile, 542 select, 543 outermostContext, 544 sortInput, 545 hasDuplicate, 546 547 // Local document vars 548 setDocument, 549 document, 550 docElem, 551 documentIsHTML, 552 rbuggyQSA, 553 rbuggyMatches, 554 matches, 555 contains, 556 557 // Instance-specific data 558 expando = "sizzle" + 1 * new Date(), 559 preferredDoc = window.document, 560 dirruns = 0, 561 done = 0, 562 classCache = createCache(), 563 tokenCache = createCache(), 564 compilerCache = createCache(), 565 nonnativeSelectorCache = createCache(), 566 sortOrder = function( a, b ) { 567 if ( a === b ) { 568 hasDuplicate = true; 569 } 570 return 0; 571 }, 572 573 // Instance methods 574 hasOwn = ( {} ).hasOwnProperty, 575 arr = [], 576 pop = arr.pop, 577 pushNative = arr.push, 578 push = arr.push, 579 slice = arr.slice, 580 581 // Use a stripped-down indexOf as it's faster than native 582 // https://jsperf.com/thor-indexof-vs-for/5 583 indexOf = function( list, elem ) { 584 var i = 0, 585 len = list.length; 586 for ( ; i < len; i++ ) { 587 if ( list[ i ] === elem ) { 588 return i; 589 } 590 } 591 return -1; 592 }, 593 594 booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|" + 595 "ismap|loop|multiple|open|readonly|required|scoped", 596 597 // Regular expressions 598 599 // http://www.w3.org/TR/css3-selectors/#whitespace 600 whitespace = "[\\x20\\t\\r\\n\\f]", 601 602 // https://www.w3.org/TR/css-syntax-3/#ident-token-diagram 603 identifier = "(?:\\\\[\\da-fA-F]{1,6}" + whitespace + 604 "?|\\\\[^\\r\\n\\f]|[\\w-]|[^\0-\\x7f])+", 605 606 // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors 607 attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + 608 609 // Operator (capture 2) 610 "*([*^$|!~]?=)" + whitespace + 611 612 // "Attribute values must be CSS identifiers [capture 5] 613 // or strings [capture 3 or capture 4]" 614 "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + 615 whitespace + "*\\]", 616 617 pseudos = ":(" + identifier + ")(?:\\((" + 618 619 // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: 620 // 1. quoted (capture 3; capture 4 or capture 5) 621 "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + 622 623 // 2. simple (capture 6) 624 "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + 625 626 // 3. anything else (capture 2) 627 ".*" + 628 ")\\)|)", 629 630 // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter 631 rwhitespace = new RegExp( whitespace + "+", "g" ), 632 rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + 633 whitespace + "+$", "g" ), 634 635 rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ), 636 rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + 637 "*" ), 638 rdescend = new RegExp( whitespace + "|>" ), 639 640 rpseudo = new RegExp( pseudos ), 641 ridentifier = new RegExp( "^" + identifier + "$" ), 642 643 matchExpr = { 644 "ID": new RegExp( "^#(" + identifier + ")" ), 645 "CLASS": new RegExp( "^\\.(" + identifier + ")" ), 646 "TAG": new RegExp( "^(" + identifier + "|[*])" ), 647 "ATTR": new RegExp( "^" + attributes ), 648 "PSEUDO": new RegExp( "^" + pseudos ), 649 "CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + 650 whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + 651 whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i" ), 652 "bool": new RegExp( "^(?:" + booleans + ")$", "i" ), 653 654 // For use in libraries implementing .is() 655 // We use this for POS matching in `select` 656 "needsContext": new RegExp( "^" + whitespace + 657 "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + 658 "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" ) 659 }, 660 661 rhtml = /HTML$/i, 662 rinputs = /^(?:input|select|textarea|button)$/i, 663 rheader = /^h\d$/i, 664 665 rnative = /^[^{]+\{\s*\[native \w/, 666 667 // Easily-parseable/retrievable ID or TAG or CLASS selectors 668 rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, 669 670 rsibling = /[+~]/, 671 672 // CSS escapes 673 // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters 674 runescape = new RegExp( "\\\\[\\da-fA-F]{1,6}" + whitespace + "?|\\\\([^\\r\\n\\f])", "g" ), 675 funescape = function( escape, nonHex ) { 676 var high = "0x" + escape.slice( 1 ) - 0x10000; 677 678 return nonHex ? 679 680 // Strip the backslash prefix from a non-hex escape sequence 681 nonHex : 682 683 // Replace a hexadecimal escape sequence with the encoded Unicode code point 684 // Support: IE <=11+ 685 // For values outside the Basic Multilingual Plane (BMP), manually construct a 686 // surrogate pair 687 high < 0 ? 688 String.fromCharCode( high + 0x10000 ) : 689 String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 ); 690 }, 691 692 // CSS string/identifier serialization 693 // https://drafts.csswg.org/cssom/#common-serializing-idioms 694 rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, 695 fcssescape = function( ch, asCodePoint ) { 696 if ( asCodePoint ) { 697 698 // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER 699 if ( ch === "\0" ) { 700 return "\uFFFD"; 701 } 702 703 // Control characters and (dependent upon position) numbers get escaped as code points 704 return ch.slice( 0, -1 ) + "\\" + 705 ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; 706 } 707 708 // Other potentially-special ASCII characters get backslash-escaped 709 return "\\" + ch; 710 }, 711 712 // Used for iframes 713 // See setDocument() 714 // Removing the function wrapper causes a "Permission Denied" 715 // error in IE 716 unloadHandler = function() { 717 setDocument(); 718 }, 719 720 inDisabledFieldset = addCombinator( 721 function( elem ) { 722 return elem.disabled === true && elem.nodeName.toLowerCase() === "fieldset"; 723 }, 724 { dir: "parentNode", next: "legend" } 725 ); 726 727// Optimize for push.apply( _, NodeList ) 728try { 729 push.apply( 730 ( arr = slice.call( preferredDoc.childNodes ) ), 731 preferredDoc.childNodes 732 ); 733 734 // Support: Android<4.0 735 // Detect silently failing push.apply 736 // eslint-disable-next-line no-unused-expressions 737 arr[ preferredDoc.childNodes.length ].nodeType; 738} catch ( e ) { 739 push = { apply: arr.length ? 740 741 // Leverage slice if possible 742 function( target, els ) { 743 pushNative.apply( target, slice.call( els ) ); 744 } : 745 746 // Support: IE<9 747 // Otherwise append directly 748 function( target, els ) { 749 var j = target.length, 750 i = 0; 751 752 // Can't trust NodeList.length 753 while ( ( target[ j++ ] = els[ i++ ] ) ) {} 754 target.length = j - 1; 755 } 756 }; 757} 758 759function Sizzle( selector, context, results, seed ) { 760 var m, i, elem, nid, match, groups, newSelector, 761 newContext = context && context.ownerDocument, 762 763 // nodeType defaults to 9, since context defaults to document 764 nodeType = context ? context.nodeType : 9; 765 766 results = results || []; 767 768 // Return early from calls with invalid selector or context 769 if ( typeof selector !== "string" || !selector || 770 nodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) { 771 772 return results; 773 } 774 775 // Try to shortcut find operations (as opposed to filters) in HTML documents 776 if ( !seed ) { 777 setDocument( context ); 778 context = context || document; 779 780 if ( documentIsHTML ) { 781 782 // If the selector is sufficiently simple, try using a "get*By*" DOM method 783 // (excepting DocumentFragment context, where the methods don't exist) 784 if ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) { 785 786 // ID selector 787 if ( ( m = match[ 1 ] ) ) { 788 789 // Document context 790 if ( nodeType === 9 ) { 791 if ( ( elem = context.getElementById( m ) ) ) { 792 793 // Support: IE, Opera, Webkit 794 // TODO: identify versions 795 // getElementById can match elements by name instead of ID 796 if ( elem.id === m ) { 797 results.push( elem ); 798 return results; 799 } 800 } else { 801 return results; 802 } 803 804 // Element context 805 } else { 806 807 // Support: IE, Opera, Webkit 808 // TODO: identify versions 809 // getElementById can match elements by name instead of ID 810 if ( newContext && ( elem = newContext.getElementById( m ) ) && 811 contains( context, elem ) && 812 elem.id === m ) { 813 814 results.push( elem ); 815 return results; 816 } 817 } 818 819 // Type selector 820 } else if ( match[ 2 ] ) { 821 push.apply( results, context.getElementsByTagName( selector ) ); 822 return results; 823 824 // Class selector 825 } else if ( ( m = match[ 3 ] ) && support.getElementsByClassName && 826 context.getElementsByClassName ) { 827 828 push.apply( results, context.getElementsByClassName( m ) ); 829 return results; 830 } 831 } 832 833 // Take advantage of querySelectorAll 834 if ( support.qsa && 835 !nonnativeSelectorCache[ selector + " " ] && 836 ( !rbuggyQSA || !rbuggyQSA.test( selector ) ) && 837 838 // Support: IE 8 only 839 // Exclude object elements 840 ( nodeType !== 1 || context.nodeName.toLowerCase() !== "object" ) ) { 841 842 newSelector = selector; 843 newContext = context; 844 845 // qSA considers elements outside a scoping root when evaluating child or 846 // descendant combinators, which is not what we want. 847 // In such cases, we work around the behavior by prefixing every selector in the 848 // list with an ID selector referencing the scope context. 849 // The technique has to be used as well when a leading combinator is used 850 // as such selectors are not recognized by querySelectorAll. 851 // Thanks to Andrew Dupont for this technique. 852 if ( nodeType === 1 && 853 ( rdescend.test( selector ) || rcombinators.test( selector ) ) ) { 854 855 // Expand context for sibling selectors 856 newContext = rsibling.test( selector ) && testContext( context.parentNode ) || 857 context; 858 859 // We can use :scope instead of the ID hack if the browser 860 // supports it & if we're not changing the context. 861 if ( newContext !== context || !support.scope ) { 862 863 // Capture the context ID, setting it first if necessary 864 if ( ( nid = context.getAttribute( "id" ) ) ) { 865 nid = nid.replace( rcssescape, fcssescape ); 866 } else { 867 context.setAttribute( "id", ( nid = expando ) ); 868 } 869 } 870 871 // Prefix every selector in the list 872 groups = tokenize( selector ); 873 i = groups.length; 874 while ( i-- ) { 875 groups[ i ] = ( nid ? "#" + nid : ":scope" ) + " " + 876 toSelector( groups[ i ] ); 877 } 878 newSelector = groups.join( "," ); 879 } 880 881 try { 882 push.apply( results, 883 newContext.querySelectorAll( newSelector ) 884 ); 885 return results; 886 } catch ( qsaError ) { 887 nonnativeSelectorCache( selector, true ); 888 } finally { 889 if ( nid === expando ) { 890 context.removeAttribute( "id" ); 891 } 892 } 893 } 894 } 895 } 896 897 // All others 898 return select( selector.replace( rtrim, "$1" ), context, results, seed ); 899} 900 901/** 902 * Create key-value caches of limited size 903 * @returns {function(string, object)} Returns the Object data after storing it on itself with 904 * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) 905 * deleting the oldest entry 906 */ 907function createCache() { 908 var keys = []; 909 910 function cache( key, value ) { 911 912 // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) 913 if ( keys.push( key + " " ) > Expr.cacheLength ) { 914 915 // Only keep the most recent entries 916 delete cache[ keys.shift() ]; 917 } 918 return ( cache[ key + " " ] = value ); 919 } 920 return cache; 921} 922 923/** 924 * Mark a function for special use by Sizzle 925 * @param {Function} fn The function to mark 926 */ 927function markFunction( fn ) { 928 fn[ expando ] = true; 929 return fn; 930} 931 932/** 933 * Support testing using an element 934 * @param {Function} fn Passed the created element and returns a boolean result 935 */ 936function assert( fn ) { 937 var el = document.createElement( "fieldset" ); 938 939 try { 940 return !!fn( el ); 941 } catch ( e ) { 942 return false; 943 } finally { 944 945 // Remove from its parent by default 946 if ( el.parentNode ) { 947 el.parentNode.removeChild( el ); 948 } 949 950 // release memory in IE 951 el = null; 952 } 953} 954 955/** 956 * Adds the same handler for all of the specified attrs 957 * @param {String} attrs Pipe-separated list of attributes 958 * @param {Function} handler The method that will be applied 959 */ 960function addHandle( attrs, handler ) { 961 var arr = attrs.split( "|" ), 962 i = arr.length; 963 964 while ( i-- ) { 965 Expr.attrHandle[ arr[ i ] ] = handler; 966 } 967} 968 969/** 970 * Checks document order of two siblings 971 * @param {Element} a 972 * @param {Element} b 973 * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b 974 */ 975function siblingCheck( a, b ) { 976 var cur = b && a, 977 diff = cur && a.nodeType === 1 && b.nodeType === 1 && 978 a.sourceIndex - b.sourceIndex; 979 980 // Use IE sourceIndex if available on both nodes 981 if ( diff ) { 982 return diff; 983 } 984 985 // Check if b follows a 986 if ( cur ) { 987 while ( ( cur = cur.nextSibling ) ) { 988 if ( cur === b ) { 989 return -1; 990 } 991 } 992 } 993 994 return a ? 1 : -1; 995} 996 997/** 998 * Returns a function to use in pseudos for input types 999 * @param {String} type 1000 */ 1001function createInputPseudo( type ) { 1002 return function( elem ) { 1003 var name = elem.nodeName.toLowerCase(); 1004 return name === "input" && elem.type === type; 1005 }; 1006} 1007 1008/** 1009 * Returns a function to use in pseudos for buttons 1010 * @param {String} type 1011 */ 1012function createButtonPseudo( type ) { 1013 return function( elem ) { 1014 var name = elem.nodeName.toLowerCase(); 1015 return ( name === "input" || name === "button" ) && elem.type === type; 1016 }; 1017} 1018 1019/** 1020 * Returns a function to use in pseudos for :enabled/:disabled 1021 * @param {Boolean} disabled true for :disabled; false for :enabled 1022 */ 1023function createDisabledPseudo( disabled ) { 1024 1025 // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable 1026 return function( elem ) { 1027 1028 // Only certain elements can match :enabled or :disabled 1029 // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled 1030 // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled 1031 if ( "form" in elem ) { 1032 1033 // Check for inherited disabledness on relevant non-disabled elements: 1034 // * listed form-associated elements in a disabled fieldset 1035 // https://html.spec.whatwg.org/multipage/forms.html#category-listed 1036 // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled 1037 // * option elements in a disabled optgroup 1038 // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled 1039 // All such elements have a "form" property. 1040 if ( elem.parentNode && elem.disabled === false ) { 1041 1042 // Option elements defer to a parent optgroup if present 1043 if ( "label" in elem ) { 1044 if ( "label" in elem.parentNode ) { 1045 return elem.parentNode.disabled === disabled; 1046 } else { 1047 return elem.disabled === disabled; 1048 } 1049 } 1050 1051 // Support: IE 6 - 11 1052 // Use the isDisabled shortcut property to check for disabled fieldset ancestors 1053 return elem.isDisabled === disabled || 1054 1055 // Where there is no isDisabled, check manually 1056 /* jshint -W018 */ 1057 elem.isDisabled !== !disabled && 1058 inDisabledFieldset( elem ) === disabled; 1059 } 1060 1061 return elem.disabled === disabled; 1062 1063 // Try to winnow out elements that can't be disabled before trusting the disabled property. 1064 // Some victims get caught in our net (label, legend, menu, track), but it shouldn't 1065 // even exist on them, let alone have a boolean value. 1066 } else if ( "label" in elem ) { 1067 return elem.disabled === disabled; 1068 } 1069 1070 // Remaining elements are neither :enabled nor :disabled 1071 return false; 1072 }; 1073} 1074 1075/** 1076 * Returns a function to use in pseudos for positionals 1077 * @param {Function} fn 1078 */ 1079function createPositionalPseudo( fn ) { 1080 return markFunction( function( argument ) { 1081 argument = +argument; 1082 return markFunction( function( seed, matches ) { 1083 var j, 1084 matchIndexes = fn( [], seed.length, argument ), 1085 i = matchIndexes.length; 1086 1087 // Match elements found at the specified indexes 1088 while ( i-- ) { 1089 if ( seed[ ( j = matchIndexes[ i ] ) ] ) { 1090 seed[ j ] = !( matches[ j ] = seed[ j ] ); 1091 } 1092 } 1093 } ); 1094 } ); 1095} 1096 1097/** 1098 * Checks a node for validity as a Sizzle context 1099 * @param {Element|Object=} context 1100 * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value 1101 */ 1102function testContext( context ) { 1103 return context && typeof context.getElementsByTagName !== "undefined" && context; 1104} 1105 1106// Expose support vars for convenience 1107support = Sizzle.support = {}; 1108 1109/** 1110 * Detects XML nodes 1111 * @param {Element|Object} elem An element or a document 1112 * @returns {Boolean} True iff elem is a non-HTML XML node 1113 */ 1114isXML = Sizzle.isXML = function( elem ) { 1115 var namespace = elem && elem.namespaceURI, 1116 docElem = elem && ( elem.ownerDocument || elem ).documentElement; 1117 1118 // Support: IE <=8 1119 // Assume HTML when documentElement doesn't yet exist, such as inside loading iframes 1120 // https://bugs.jquery.com/ticket/4833 1121 return !rhtml.test( namespace || docElem && docElem.nodeName || "HTML" ); 1122}; 1123 1124/** 1125 * Sets document-related variables once based on the current document 1126 * @param {Element|Object} [doc] An element or document object to use to set the document 1127 * @returns {Object} Returns the current document 1128 */ 1129setDocument = Sizzle.setDocument = function( node ) { 1130 var hasCompare, subWindow, 1131 doc = node ? node.ownerDocument || node : preferredDoc; 1132 1133 // Return early if doc is invalid or already selected 1134 // Support: IE 11+, Edge 17 - 18+ 1135 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing 1136 // two documents; shallow comparisons work. 1137 // eslint-disable-next-line eqeqeq 1138 if ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) { 1139 return document; 1140 } 1141 1142 // Update global variables 1143 document = doc; 1144 docElem = document.documentElement; 1145 documentIsHTML = !isXML( document ); 1146 1147 // Support: IE 9 - 11+, Edge 12 - 18+ 1148 // Accessing iframe documents after unload throws "permission denied" errors (jQuery #13936) 1149 // Support: IE 11+, Edge 17 - 18+ 1150 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing 1151 // two documents; shallow comparisons work. 1152 // eslint-disable-next-line eqeqeq 1153 if ( preferredDoc != document && 1154 ( subWindow = document.defaultView ) && subWindow.top !== subWindow ) { 1155 1156 // Support: IE 11, Edge 1157 if ( subWindow.addEventListener ) { 1158 subWindow.addEventListener( "unload", unloadHandler, false ); 1159 1160 // Support: IE 9 - 10 only 1161 } else if ( subWindow.attachEvent ) { 1162 subWindow.attachEvent( "onunload", unloadHandler ); 1163 } 1164 } 1165 1166 // Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only, 1167 // Safari 4 - 5 only, Opera <=11.6 - 12.x only 1168 // IE/Edge & older browsers don't support the :scope pseudo-class. 1169 // Support: Safari 6.0 only 1170 // Safari 6.0 supports :scope but it's an alias of :root there. 1171 support.scope = assert( function( el ) { 1172 docElem.appendChild( el ).appendChild( document.createElement( "div" ) ); 1173 return typeof el.querySelectorAll !== "undefined" && 1174 !el.querySelectorAll( ":scope fieldset div" ).length; 1175 } ); 1176 1177 /* Attributes 1178 ---------------------------------------------------------------------- */ 1179 1180 // Support: IE<8 1181 // Verify that getAttribute really returns attributes and not properties 1182 // (excepting IE8 booleans) 1183 support.attributes = assert( function( el ) { 1184 el.className = "i"; 1185 return !el.getAttribute( "className" ); 1186 } ); 1187 1188 /* getElement(s)By* 1189 ---------------------------------------------------------------------- */ 1190 1191 // Check if getElementsByTagName("*") returns only elements 1192 support.getElementsByTagName = assert( function( el ) { 1193 el.appendChild( document.createComment( "" ) ); 1194 return !el.getElementsByTagName( "*" ).length; 1195 } ); 1196 1197 // Support: IE<9 1198 support.getElementsByClassName = rnative.test( document.getElementsByClassName ); 1199 1200 // Support: IE<10 1201 // Check if getElementById returns elements by name 1202 // The broken getElementById methods don't pick up programmatically-set names, 1203 // so use a roundabout getElementsByName test 1204 support.getById = assert( function( el ) { 1205 docElem.appendChild( el ).id = expando; 1206 return !document.getElementsByName || !document.getElementsByName( expando ).length; 1207 } ); 1208 1209 // ID filter and find 1210 if ( support.getById ) { 1211 Expr.filter[ "ID" ] = function( id ) { 1212 var attrId = id.replace( runescape, funescape ); 1213 return function( elem ) { 1214 return elem.getAttribute( "id" ) === attrId; 1215 }; 1216 }; 1217 Expr.find[ "ID" ] = function( id, context ) { 1218 if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { 1219 var elem = context.getElementById( id ); 1220 return elem ? [ elem ] : []; 1221 } 1222 }; 1223 } else { 1224 Expr.filter[ "ID" ] = function( id ) { 1225 var attrId = id.replace( runescape, funescape ); 1226 return function( elem ) { 1227 var node = typeof elem.getAttributeNode !== "undefined" && 1228 elem.getAttributeNode( "id" ); 1229 return node && node.value === attrId; 1230 }; 1231 }; 1232 1233 // Support: IE 6 - 7 only 1234 // getElementById is not reliable as a find shortcut 1235 Expr.find[ "ID" ] = function( id, context ) { 1236 if ( typeof context.getElementById !== "undefined" && documentIsHTML ) { 1237 var node, i, elems, 1238 elem = context.getElementById( id ); 1239 1240 if ( elem ) { 1241 1242 // Verify the id attribute 1243 node = elem.getAttributeNode( "id" ); 1244 if ( node && node.value === id ) { 1245 return [ elem ]; 1246 } 1247 1248 // Fall back on getElementsByName 1249 elems = context.getElementsByName( id ); 1250 i = 0; 1251 while ( ( elem = elems[ i++ ] ) ) { 1252 node = elem.getAttributeNode( "id" ); 1253 if ( node && node.value === id ) { 1254 return [ elem ]; 1255 } 1256 } 1257 } 1258 1259 return []; 1260 } 1261 }; 1262 } 1263 1264 // Tag 1265 Expr.find[ "TAG" ] = support.getElementsByTagName ? 1266 function( tag, context ) { 1267 if ( typeof context.getElementsByTagName !== "undefined" ) { 1268 return context.getElementsByTagName( tag ); 1269 1270 // DocumentFragment nodes don't have gEBTN 1271 } else if ( support.qsa ) { 1272 return context.querySelectorAll( tag ); 1273 } 1274 } : 1275 1276 function( tag, context ) { 1277 var elem, 1278 tmp = [], 1279 i = 0, 1280 1281 // By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too 1282 results = context.getElementsByTagName( tag ); 1283 1284 // Filter out possible comments 1285 if ( tag === "*" ) { 1286 while ( ( elem = results[ i++ ] ) ) { 1287 if ( elem.nodeType === 1 ) { 1288 tmp.push( elem ); 1289 } 1290 } 1291 1292 return tmp; 1293 } 1294 return results; 1295 }; 1296 1297 // Class 1298 Expr.find[ "CLASS" ] = support.getElementsByClassName && function( className, context ) { 1299 if ( typeof context.getElementsByClassName !== "undefined" && documentIsHTML ) { 1300 return context.getElementsByClassName( className ); 1301 } 1302 }; 1303 1304 /* QSA/matchesSelector 1305 ---------------------------------------------------------------------- */ 1306 1307 // QSA and matchesSelector support 1308 1309 // matchesSelector(:active) reports false when true (IE9/Opera 11.5) 1310 rbuggyMatches = []; 1311 1312 // qSa(:focus) reports false when true (Chrome 21) 1313 // We allow this because of a bug in IE8/9 that throws an error 1314 // whenever `document.activeElement` is accessed on an iframe 1315 // So, we allow :focus to pass through QSA all the time to avoid the IE error 1316 // See https://bugs.jquery.com/ticket/13378 1317 rbuggyQSA = []; 1318 1319 if ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) { 1320 1321 // Build QSA regex 1322 // Regex strategy adopted from Diego Perini 1323 assert( function( el ) { 1324 1325 var input; 1326 1327 // Select is set to empty string on purpose 1328 // This is to test IE's treatment of not explicitly 1329 // setting a boolean content attribute, 1330 // since its presence should be enough 1331 // https://bugs.jquery.com/ticket/12359 1332 docElem.appendChild( el ).innerHTML = "<a id='" + expando + "'></a>" + 1333 "<select id='" + expando + "-\r\\' msallowcapture=''>" + 1334 "<option selected=''></option></select>"; 1335 1336 // Support: IE8, Opera 11-12.16 1337 // Nothing should be selected when empty strings follow ^= or $= or *= 1338 // The test attribute must be unknown in Opera but "safe" for WinRT 1339 // https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section 1340 if ( el.querySelectorAll( "[msallowcapture^='']" ).length ) { 1341 rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" ); 1342 } 1343 1344 // Support: IE8 1345 // Boolean attributes and "value" are not treated correctly 1346 if ( !el.querySelectorAll( "[selected]" ).length ) { 1347 rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" ); 1348 } 1349 1350 // Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+ 1351 if ( !el.querySelectorAll( "[id~=" + expando + "-]" ).length ) { 1352 rbuggyQSA.push( "~=" ); 1353 } 1354 1355 // Support: IE 11+, Edge 15 - 18+ 1356 // IE 11/Edge don't find elements on a `[name='']` query in some cases. 1357 // Adding a temporary attribute to the document before the selection works 1358 // around the issue. 1359 // Interestingly, IE 10 & older don't seem to have the issue. 1360 input = document.createElement( "input" ); 1361 input.setAttribute( "name", "" ); 1362 el.appendChild( input ); 1363 if ( !el.querySelectorAll( "[name='']" ).length ) { 1364 rbuggyQSA.push( "\\[" + whitespace + "*name" + whitespace + "*=" + 1365 whitespace + "*(?:''|\"\")" ); 1366 } 1367 1368 // Webkit/Opera - :checked should return selected option elements 1369 // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked 1370 // IE8 throws error here and will not see later tests 1371 if ( !el.querySelectorAll( ":checked" ).length ) { 1372 rbuggyQSA.push( ":checked" ); 1373 } 1374 1375 // Support: Safari 8+, iOS 8+ 1376 // https://bugs.webkit.org/show_bug.cgi?id=136851 1377 // In-page `selector#id sibling-combinator selector` fails 1378 if ( !el.querySelectorAll( "a#" + expando + "+*" ).length ) { 1379 rbuggyQSA.push( ".#.+[+~]" ); 1380 } 1381 1382 // Support: Firefox <=3.6 - 5 only 1383 // Old Firefox doesn't throw on a badly-escaped identifier. 1384 el.querySelectorAll( "\\\f" ); 1385 rbuggyQSA.push( "[\\r\\n\\f]" ); 1386 } ); 1387 1388 assert( function( el ) { 1389 el.innerHTML = "<a href='' disabled='disabled'></a>" + 1390 "<select disabled='disabled'><option/></select>"; 1391 1392 // Support: Windows 8 Native Apps 1393 // The type and name attributes are restricted during .innerHTML assignment 1394 var input = document.createElement( "input" ); 1395 input.setAttribute( "type", "hidden" ); 1396 el.appendChild( input ).setAttribute( "name", "D" ); 1397 1398 // Support: IE8 1399 // Enforce case-sensitivity of name attribute 1400 if ( el.querySelectorAll( "[name=d]" ).length ) { 1401 rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" ); 1402 } 1403 1404 // FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled) 1405 // IE8 throws error here and will not see later tests 1406 if ( el.querySelectorAll( ":enabled" ).length !== 2 ) { 1407 rbuggyQSA.push( ":enabled", ":disabled" ); 1408 } 1409 1410 // Support: IE9-11+ 1411 // IE's :disabled selector does not pick up the children of disabled fieldsets 1412 docElem.appendChild( el ).disabled = true; 1413 if ( el.querySelectorAll( ":disabled" ).length !== 2 ) { 1414 rbuggyQSA.push( ":enabled", ":disabled" ); 1415 } 1416 1417 // Support: Opera 10 - 11 only 1418 // Opera 10-11 does not throw on post-comma invalid pseudos 1419 el.querySelectorAll( "*,:x" ); 1420 rbuggyQSA.push( ",.*:" ); 1421 } ); 1422 } 1423 1424 if ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches || 1425 docElem.webkitMatchesSelector || 1426 docElem.mozMatchesSelector || 1427 docElem.oMatchesSelector || 1428 docElem.msMatchesSelector ) ) ) ) { 1429 1430 assert( function( el ) { 1431 1432 // Check to see if it's possible to do matchesSelector 1433 // on a disconnected node (IE 9) 1434 support.disconnectedMatch = matches.call( el, "*" ); 1435 1436 // This should fail with an exception 1437 // Gecko does not error, returns false instead 1438 matches.call( el, "[s!='']:x" ); 1439 rbuggyMatches.push( "!=", pseudos ); 1440 } ); 1441 } 1442 1443 rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( "|" ) ); 1444 rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( "|" ) ); 1445 1446 /* Contains 1447 ---------------------------------------------------------------------- */ 1448 hasCompare = rnative.test( docElem.compareDocumentPosition ); 1449 1450 // Element contains another 1451 // Purposefully self-exclusive 1452 // As in, an element does not contain itself 1453 contains = hasCompare || rnative.test( docElem.contains ) ? 1454 function( a, b ) { 1455 var adown = a.nodeType === 9 ? a.documentElement : a, 1456 bup = b && b.parentNode; 1457 return a === bup || !!( bup && bup.nodeType === 1 && ( 1458 adown.contains ? 1459 adown.contains( bup ) : 1460 a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16 1461 ) ); 1462 } : 1463 function( a, b ) { 1464 if ( b ) { 1465 while ( ( b = b.parentNode ) ) { 1466 if ( b === a ) { 1467 return true; 1468 } 1469 } 1470 } 1471 return false; 1472 }; 1473 1474 /* Sorting 1475 ---------------------------------------------------------------------- */ 1476 1477 // Document order sorting 1478 sortOrder = hasCompare ? 1479 function( a, b ) { 1480 1481 // Flag for duplicate removal 1482 if ( a === b ) { 1483 hasDuplicate = true; 1484 return 0; 1485 } 1486 1487 // Sort on method existence if only one input has compareDocumentPosition 1488 var compare = !a.compareDocumentPosition - !b.compareDocumentPosition; 1489 if ( compare ) { 1490 return compare; 1491 } 1492 1493 // Calculate position if both inputs belong to the same document 1494 // Support: IE 11+, Edge 17 - 18+ 1495 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing 1496 // two documents; shallow comparisons work. 1497 // eslint-disable-next-line eqeqeq 1498 compare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ? 1499 a.compareDocumentPosition( b ) : 1500 1501 // Otherwise we know they are disconnected 1502 1; 1503 1504 // Disconnected nodes 1505 if ( compare & 1 || 1506 ( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) { 1507 1508 // Choose the first element that is related to our preferred document 1509 // Support: IE 11+, Edge 17 - 18+ 1510 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing 1511 // two documents; shallow comparisons work. 1512 // eslint-disable-next-line eqeqeq 1513 if ( a == document || a.ownerDocument == preferredDoc && 1514 contains( preferredDoc, a ) ) { 1515 return -1; 1516 } 1517 1518 // Support: IE 11+, Edge 17 - 18+ 1519 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing 1520 // two documents; shallow comparisons work. 1521 // eslint-disable-next-line eqeqeq 1522 if ( b == document || b.ownerDocument == preferredDoc && 1523 contains( preferredDoc, b ) ) { 1524 return 1; 1525 } 1526 1527 // Maintain original order 1528 return sortInput ? 1529 ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : 1530 0; 1531 } 1532 1533 return compare & 4 ? -1 : 1; 1534 } : 1535 function( a, b ) { 1536 1537 // Exit early if the nodes are identical 1538 if ( a === b ) { 1539 hasDuplicate = true; 1540 return 0; 1541 } 1542 1543 var cur, 1544 i = 0, 1545 aup = a.parentNode, 1546 bup = b.parentNode, 1547 ap = [ a ], 1548 bp = [ b ]; 1549 1550 // Parentless nodes are either documents or disconnected 1551 if ( !aup || !bup ) { 1552 1553 // Support: IE 11+, Edge 17 - 18+ 1554 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing 1555 // two documents; shallow comparisons work. 1556 /* eslint-disable eqeqeq */ 1557 return a == document ? -1 : 1558 b == document ? 1 : 1559 /* eslint-enable eqeqeq */ 1560 aup ? -1 : 1561 bup ? 1 : 1562 sortInput ? 1563 ( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) : 1564 0; 1565 1566 // If the nodes are siblings, we can do a quick check 1567 } else if ( aup === bup ) { 1568 return siblingCheck( a, b ); 1569 } 1570 1571 // Otherwise we need full lists of their ancestors for comparison 1572 cur = a; 1573 while ( ( cur = cur.parentNode ) ) { 1574 ap.unshift( cur ); 1575 } 1576 cur = b; 1577 while ( ( cur = cur.parentNode ) ) { 1578 bp.unshift( cur ); 1579 } 1580 1581 // Walk down the tree looking for a discrepancy 1582 while ( ap[ i ] === bp[ i ] ) { 1583 i++; 1584 } 1585 1586 return i ? 1587 1588 // Do a sibling check if the nodes have a common ancestor 1589 siblingCheck( ap[ i ], bp[ i ] ) : 1590 1591 // Otherwise nodes in our document sort first 1592 // Support: IE 11+, Edge 17 - 18+ 1593 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing 1594 // two documents; shallow comparisons work. 1595 /* eslint-disable eqeqeq */ 1596 ap[ i ] == preferredDoc ? -1 : 1597 bp[ i ] == preferredDoc ? 1 : 1598 /* eslint-enable eqeqeq */ 1599 0; 1600 }; 1601 1602 return document; 1603}; 1604 1605Sizzle.matches = function( expr, elements ) { 1606 return Sizzle( expr, null, null, elements ); 1607}; 1608 1609Sizzle.matchesSelector = function( elem, expr ) { 1610 setDocument( elem ); 1611 1612 if ( support.matchesSelector && documentIsHTML && 1613 !nonnativeSelectorCache[ expr + " " ] && 1614 ( !rbuggyMatches || !rbuggyMatches.test( expr ) ) && 1615 ( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) { 1616 1617 try { 1618 var ret = matches.call( elem, expr ); 1619 1620 // IE 9's matchesSelector returns false on disconnected nodes 1621 if ( ret || support.disconnectedMatch || 1622 1623 // As well, disconnected nodes are said to be in a document 1624 // fragment in IE 9 1625 elem.document && elem.document.nodeType !== 11 ) { 1626 return ret; 1627 } 1628 } catch ( e ) { 1629 nonnativeSelectorCache( expr, true ); 1630 } 1631 } 1632 1633 return Sizzle( expr, document, null, [ elem ] ).length > 0; 1634}; 1635 1636Sizzle.contains = function( context, elem ) { 1637 1638 // Set document vars if needed 1639 // Support: IE 11+, Edge 17 - 18+ 1640 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing 1641 // two documents; shallow comparisons work. 1642 // eslint-disable-next-line eqeqeq 1643 if ( ( context.ownerDocument || context ) != document ) { 1644 setDocument( context ); 1645 } 1646 return contains( context, elem ); 1647}; 1648 1649Sizzle.attr = function( elem, name ) { 1650 1651 // Set document vars if needed 1652 // Support: IE 11+, Edge 17 - 18+ 1653 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing 1654 // two documents; shallow comparisons work. 1655 // eslint-disable-next-line eqeqeq 1656 if ( ( elem.ownerDocument || elem ) != document ) { 1657 setDocument( elem ); 1658 } 1659 1660 var fn = Expr.attrHandle[ name.toLowerCase() ], 1661 1662 // Don't get fooled by Object.prototype properties (jQuery #13807) 1663 val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ? 1664 fn( elem, name, !documentIsHTML ) : 1665 undefined; 1666 1667 return val !== undefined ? 1668 val : 1669 support.attributes || !documentIsHTML ? 1670 elem.getAttribute( name ) : 1671 ( val = elem.getAttributeNode( name ) ) && val.specified ? 1672 val.value : 1673 null; 1674}; 1675 1676Sizzle.escape = function( sel ) { 1677 return ( sel + "" ).replace( rcssescape, fcssescape ); 1678}; 1679 1680Sizzle.error = function( msg ) { 1681 throw new Error( "Syntax error, unrecognized expression: " + msg ); 1682}; 1683 1684/** 1685 * Document sorting and removing duplicates 1686 * @param {ArrayLike} results 1687 */ 1688Sizzle.uniqueSort = function( results ) { 1689 var elem, 1690 duplicates = [], 1691 j = 0, 1692 i = 0; 1693 1694 // Unless we *know* we can detect duplicates, assume their presence 1695 hasDuplicate = !support.detectDuplicates; 1696 sortInput = !support.sortStable && results.slice( 0 ); 1697 results.sort( sortOrder ); 1698 1699 if ( hasDuplicate ) { 1700 while ( ( elem = results[ i++ ] ) ) { 1701 if ( elem === results[ i ] ) { 1702 j = duplicates.push( i ); 1703 } 1704 } 1705 while ( j-- ) { 1706 results.splice( duplicates[ j ], 1 ); 1707 } 1708 } 1709 1710 // Clear input after sorting to release objects 1711 // See https://github.com/jquery/sizzle/pull/225 1712 sortInput = null; 1713 1714 return results; 1715}; 1716 1717/** 1718 * Utility function for retrieving the text value of an array of DOM nodes 1719 * @param {Array|Element} elem 1720 */ 1721getText = Sizzle.getText = function( elem ) { 1722 var node, 1723 ret = "", 1724 i = 0, 1725 nodeType = elem.nodeType; 1726 1727 if ( !nodeType ) { 1728 1729 // If no nodeType, this is expected to be an array 1730 while ( ( node = elem[ i++ ] ) ) { 1731 1732 // Do not traverse comment nodes 1733 ret += getText( node ); 1734 } 1735 } else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) { 1736 1737 // Use textContent for elements 1738 // innerText usage removed for consistency of new lines (jQuery #11153) 1739 if ( typeof elem.textContent === "string" ) { 1740 return elem.textContent; 1741 } else { 1742 1743 // Traverse its children 1744 for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { 1745 ret += getText( elem ); 1746 } 1747 } 1748 } else if ( nodeType === 3 || nodeType === 4 ) { 1749 return elem.nodeValue; 1750 } 1751 1752 // Do not include comment or processing instruction nodes 1753 1754 return ret; 1755}; 1756 1757Expr = Sizzle.selectors = { 1758 1759 // Can be adjusted by the user 1760 cacheLength: 50, 1761 1762 createPseudo: markFunction, 1763 1764 match: matchExpr, 1765 1766 attrHandle: {}, 1767 1768 find: {}, 1769 1770 relative: { 1771 ">": { dir: "parentNode", first: true }, 1772 " ": { dir: "parentNode" }, 1773 "+": { dir: "previousSibling", first: true }, 1774 "~": { dir: "previousSibling" } 1775 }, 1776 1777 preFilter: { 1778 "ATTR": function( match ) { 1779 match[ 1 ] = match[ 1 ].replace( runescape, funescape ); 1780 1781 // Move the given value to match[3] whether quoted or unquoted 1782 match[ 3 ] = ( match[ 3 ] || match[ 4 ] || 1783 match[ 5 ] || "" ).replace( runescape, funescape ); 1784 1785 if ( match[ 2 ] === "~=" ) { 1786 match[ 3 ] = " " + match[ 3 ] + " "; 1787 } 1788 1789 return match.slice( 0, 4 ); 1790 }, 1791 1792 "CHILD": function( match ) { 1793 1794 /* matches from matchExpr["CHILD"] 1795 1 type (only|nth|...) 1796 2 what (child|of-type) 1797 3 argument (even|odd|\d*|\d*n([+-]\d+)?|...) 1798 4 xn-component of xn+y argument ([+-]?\d*n|) 1799 5 sign of xn-component 1800 6 x of xn-component 1801 7 sign of y-component 1802 8 y of y-component 1803 */ 1804 match[ 1 ] = match[ 1 ].toLowerCase(); 1805 1806 if ( match[ 1 ].slice( 0, 3 ) === "nth" ) { 1807 1808 // nth-* requires argument 1809 if ( !match[ 3 ] ) { 1810 Sizzle.error( match[ 0 ] ); 1811 } 1812 1813 // numeric x and y parameters for Expr.filter.CHILD 1814 // remember that false/true cast respectively to 0/1 1815 match[ 4 ] = +( match[ 4 ] ? 1816 match[ 5 ] + ( match[ 6 ] || 1 ) : 1817 2 * ( match[ 3 ] === "even" || match[ 3 ] === "odd" ) ); 1818 match[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === "odd" ); 1819 1820 // other types prohibit arguments 1821 } else if ( match[ 3 ] ) { 1822 Sizzle.error( match[ 0 ] ); 1823 } 1824 1825 return match; 1826 }, 1827 1828 "PSEUDO": function( match ) { 1829 var excess, 1830 unquoted = !match[ 6 ] && match[ 2 ]; 1831 1832 if ( matchExpr[ "CHILD" ].test( match[ 0 ] ) ) { 1833 return null; 1834 } 1835 1836 // Accept quoted arguments as-is 1837 if ( match[ 3 ] ) { 1838 match[ 2 ] = match[ 4 ] || match[ 5 ] || ""; 1839 1840 // Strip excess characters from unquoted arguments 1841 } else if ( unquoted && rpseudo.test( unquoted ) && 1842 1843 // Get excess from tokenize (recursively) 1844 ( excess = tokenize( unquoted, true ) ) && 1845 1846 // advance to the next closing parenthesis 1847 ( excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length ) ) { 1848 1849 // excess is a negative index 1850 match[ 0 ] = match[ 0 ].slice( 0, excess ); 1851 match[ 2 ] = unquoted.slice( 0, excess ); 1852 } 1853 1854 // Return only captures needed by the pseudo filter method (type and argument) 1855 return match.slice( 0, 3 ); 1856 } 1857 }, 1858 1859 filter: { 1860 1861 "TAG": function( nodeNameSelector ) { 1862 var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase(); 1863 return nodeNameSelector === "*" ? 1864 function() { 1865 return true; 1866 } : 1867 function( elem ) { 1868 return elem.nodeName && elem.nodeName.toLowerCase() === nodeName; 1869 }; 1870 }, 1871 1872 "CLASS": function( className ) { 1873 var pattern = classCache[ className + " " ]; 1874 1875 return pattern || 1876 ( pattern = new RegExp( "(^|" + whitespace + 1877 ")" + className + "(" + whitespace + "|$)" ) ) && classCache( 1878 className, function( elem ) { 1879 return pattern.test( 1880 typeof elem.className === "string" && elem.className || 1881 typeof elem.getAttribute !== "undefined" && 1882 elem.getAttribute( "class" ) || 1883 "" 1884 ); 1885 } ); 1886 }, 1887 1888 "ATTR": function( name, operator, check ) { 1889 return function( elem ) { 1890 var result = Sizzle.attr( elem, name ); 1891 1892 if ( result == null ) { 1893 return operator === "!="; 1894 } 1895 if ( !operator ) { 1896 return true; 1897 } 1898 1899 result += ""; 1900 1901 /* eslint-disable max-len */ 1902 1903 return operator === "=" ? result === check : 1904 operator === "!=" ? result !== check : 1905 operator === "^=" ? check && result.indexOf( check ) === 0 : 1906 operator === "*=" ? check && result.indexOf( check ) > -1 : 1907 operator === "$=" ? check && result.slice( -check.length ) === check : 1908 operator === "~=" ? ( " " + result.replace( rwhitespace, " " ) + " " ).indexOf( check ) > -1 : 1909 operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" : 1910 false; 1911 /* eslint-enable max-len */ 1912 1913 }; 1914 }, 1915 1916 "CHILD": function( type, what, _argument, first, last ) { 1917 var simple = type.slice( 0, 3 ) !== "nth", 1918 forward = type.slice( -4 ) !== "last", 1919 ofType = what === "of-type"; 1920 1921 return first === 1 && last === 0 ? 1922 1923 // Shortcut for :nth-*(n) 1924 function( elem ) { 1925 return !!elem.parentNode; 1926 } : 1927 1928 function( elem, _context, xml ) { 1929 var cache, uniqueCache, outerCache, node, nodeIndex, start, 1930 dir = simple !== forward ? "nextSibling" : "previousSibling", 1931 parent = elem.parentNode, 1932 name = ofType && elem.nodeName.toLowerCase(), 1933 useCache = !xml && !ofType, 1934 diff = false; 1935 1936 if ( parent ) { 1937 1938 // :(first|last|only)-(child|of-type) 1939 if ( simple ) { 1940 while ( dir ) { 1941 node = elem; 1942 while ( ( node = node[ dir ] ) ) { 1943 if ( ofType ? 1944 node.nodeName.toLowerCase() === name : 1945 node.nodeType === 1 ) { 1946 1947 return false; 1948 } 1949 } 1950 1951 // Reverse direction for :only-* (if we haven't yet done so) 1952 start = dir = type === "only" && !start && "nextSibling"; 1953 } 1954 return true; 1955 } 1956 1957 start = [ forward ? parent.firstChild : parent.lastChild ]; 1958 1959 // non-xml :nth-child(...) stores cache data on `parent` 1960 if ( forward && useCache ) { 1961 1962 // Seek `elem` from a previously-cached index 1963 1964 // ...in a gzip-friendly way 1965 node = parent; 1966 outerCache = node[ expando ] || ( node[ expando ] = {} ); 1967 1968 // Support: IE <9 only 1969 // Defend against cloned attroperties (jQuery gh-1709) 1970 uniqueCache = outerCache[ node.uniqueID ] || 1971 ( outerCache[ node.uniqueID ] = {} ); 1972 1973 cache = uniqueCache[ type ] || []; 1974 nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; 1975 diff = nodeIndex && cache[ 2 ]; 1976 node = nodeIndex && parent.childNodes[ nodeIndex ]; 1977 1978 while ( ( node = ++nodeIndex && node && node[ dir ] || 1979 1980 // Fallback to seeking `elem` from the start 1981 ( diff = nodeIndex = 0 ) || start.pop() ) ) { 1982 1983 // When found, cache indexes on `parent` and break 1984 if ( node.nodeType === 1 && ++diff && node === elem ) { 1985 uniqueCache[ type ] = [ dirruns, nodeIndex, diff ]; 1986 break; 1987 } 1988 } 1989 1990 } else { 1991 1992 // Use previously-cached element index if available 1993 if ( useCache ) { 1994 1995 // ...in a gzip-friendly way 1996 node = elem; 1997 outerCache = node[ expando ] || ( node[ expando ] = {} ); 1998 1999 // Support: IE <9 only 2000 // Defend against cloned attroperties (jQuery gh-1709) 2001 uniqueCache = outerCache[ node.uniqueID ] || 2002 ( outerCache[ node.uniqueID ] = {} ); 2003 2004 cache = uniqueCache[ type ] || []; 2005 nodeIndex = cache[ 0 ] === dirruns && cache[ 1 ]; 2006 diff = nodeIndex; 2007 } 2008 2009 // xml :nth-child(...) 2010 // or :nth-last-child(...) or :nth(-last)?-of-type(...) 2011 if ( diff === false ) { 2012 2013 // Use the same loop as above to seek `elem` from the start 2014 while ( ( node = ++nodeIndex && node && node[ dir ] || 2015 ( diff = nodeIndex = 0 ) || start.pop() ) ) { 2016 2017 if ( ( ofType ? 2018 node.nodeName.toLowerCase() === name : 2019 node.nodeType === 1 ) && 2020 ++diff ) { 2021 2022 // Cache the index of each encountered element 2023 if ( useCache ) { 2024 outerCache = node[ expando ] || 2025 ( node[ expando ] = {} ); 2026 2027 // Support: IE <9 only 2028 // Defend against cloned attroperties (jQuery gh-1709) 2029 uniqueCache = outerCache[ node.uniqueID ] || 2030 ( outerCache[ node.uniqueID ] = {} ); 2031 2032 uniqueCache[ type ] = [ dirruns, diff ]; 2033 } 2034 2035 if ( node === elem ) { 2036 break; 2037 } 2038 } 2039 } 2040 } 2041 } 2042 2043 // Incorporate the offset, then check against cycle size 2044 diff -= last; 2045 return diff === first || ( diff % first === 0 && diff / first >= 0 ); 2046 } 2047 }; 2048 }, 2049 2050 "PSEUDO": function( pseudo, argument ) { 2051 2052 // pseudo-class names are case-insensitive 2053 // http://www.w3.org/TR/selectors/#pseudo-classes 2054 // Prioritize by case sensitivity in case custom pseudos are added with uppercase letters 2055 // Remember that setFilters inherits from pseudos 2056 var args, 2057 fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] || 2058 Sizzle.error( "unsupported pseudo: " + pseudo ); 2059 2060 // The user may use createPseudo to indicate that 2061 // arguments are needed to create the filter function 2062 // just as Sizzle does 2063 if ( fn[ expando ] ) { 2064 return fn( argument ); 2065 } 2066 2067 // But maintain support for old signatures 2068 if ( fn.length > 1 ) { 2069 args = [ pseudo, pseudo, "", argument ]; 2070 return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ? 2071 markFunction( function( seed, matches ) { 2072 var idx, 2073 matched = fn( seed, argument ), 2074 i = matched.length; 2075 while ( i-- ) { 2076 idx = indexOf( seed, matched[ i ] ); 2077 seed[ idx ] = !( matches[ idx ] = matched[ i ] ); 2078 } 2079 } ) : 2080 function( elem ) { 2081 return fn( elem, 0, args ); 2082 }; 2083 } 2084 2085 return fn; 2086 } 2087 }, 2088 2089 pseudos: { 2090 2091 // Potentially complex pseudos 2092 "not": markFunction( function( selector ) { 2093 2094 // Trim the selector passed to compile 2095 // to avoid treating leading and trailing 2096 // spaces as combinators 2097 var input = [], 2098 results = [], 2099 matcher = compile( selector.replace( rtrim, "$1" ) ); 2100 2101 return matcher[ expando ] ? 2102 markFunction( function( seed, matches, _context, xml ) { 2103 var elem, 2104 unmatched = matcher( seed, null, xml, [] ), 2105 i = seed.length; 2106 2107 // Match elements unmatched by `matcher` 2108 while ( i-- ) { 2109 if ( ( elem = unmatched[ i ] ) ) { 2110 seed[ i ] = !( matches[ i ] = elem ); 2111 } 2112 } 2113 } ) : 2114 function( elem, _context, xml ) { 2115 input[ 0 ] = elem; 2116 matcher( input, null, xml, results ); 2117 2118 // Don't keep the element (issue #299) 2119 input[ 0 ] = null; 2120 return !results.pop(); 2121 }; 2122 } ), 2123 2124 "has": markFunction( function( selector ) { 2125 return function( elem ) { 2126 return Sizzle( selector, elem ).length > 0; 2127 }; 2128 } ), 2129 2130 "contains": markFunction( function( text ) { 2131 text = text.replace( runescape, funescape ); 2132 return function( elem ) { 2133 return ( elem.textContent || getText( elem ) ).indexOf( text ) > -1; 2134 }; 2135 } ), 2136 2137 // "Whether an element is represented by a :lang() selector 2138 // is based solely on the element's language value 2139 // being equal to the identifier C, 2140 // or beginning with the identifier C immediately followed by "-". 2141 // The matching of C against the element's language value is performed case-insensitively. 2142 // The identifier C does not have to be a valid language name." 2143 // http://www.w3.org/TR/selectors/#lang-pseudo 2144 "lang": markFunction( function( lang ) { 2145 2146 // lang value must be a valid identifier 2147 if ( !ridentifier.test( lang || "" ) ) { 2148 Sizzle.error( "unsupported lang: " + lang ); 2149 } 2150 lang = lang.replace( runescape, funescape ).toLowerCase(); 2151 return function( elem ) { 2152 var elemLang; 2153 do { 2154 if ( ( elemLang = documentIsHTML ? 2155 elem.lang : 2156 elem.getAttribute( "xml:lang" ) || elem.getAttribute( "lang" ) ) ) { 2157 2158 elemLang = elemLang.toLowerCase(); 2159 return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0; 2160 } 2161 } while ( ( elem = elem.parentNode ) && elem.nodeType === 1 ); 2162 return false; 2163 }; 2164 } ), 2165 2166 // Miscellaneous 2167 "target": function( elem ) { 2168 var hash = window.location && window.location.hash; 2169 return hash && hash.slice( 1 ) === elem.id; 2170 }, 2171 2172 "root": function( elem ) { 2173 return elem === docElem; 2174 }, 2175 2176 "focus": function( elem ) { 2177 return elem === document.activeElement && 2178 ( !document.hasFocus || document.hasFocus() ) && 2179 !!( elem.type || elem.href || ~elem.tabIndex ); 2180 }, 2181 2182 // Boolean properties 2183 "enabled": createDisabledPseudo( false ), 2184 "disabled": createDisabledPseudo( true ), 2185 2186 "checked": function( elem ) { 2187 2188 // In CSS3, :checked should return both checked and selected elements 2189 // http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked 2190 var nodeName = elem.nodeName.toLowerCase(); 2191 return ( nodeName === "input" && !!elem.checked ) || 2192 ( nodeName === "option" && !!elem.selected ); 2193 }, 2194 2195 "selected": function( elem ) { 2196 2197 // Accessing this property makes selected-by-default 2198 // options in Safari work properly 2199 if ( elem.parentNode ) { 2200 // eslint-disable-next-line no-unused-expressions 2201 elem.parentNode.selectedIndex; 2202 } 2203 2204 return elem.selected === true; 2205 }, 2206 2207 // Contents 2208 "empty": function( elem ) { 2209 2210 // http://www.w3.org/TR/selectors/#empty-pseudo 2211 // :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5), 2212 // but not by others (comment: 8; processing instruction: 7; etc.) 2213 // nodeType < 6 works because attributes (2) do not appear as children 2214 for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) { 2215 if ( elem.nodeType < 6 ) { 2216 return false; 2217 } 2218 } 2219 return true; 2220 }, 2221 2222 "parent": function( elem ) { 2223 return !Expr.pseudos[ "empty" ]( elem ); 2224 }, 2225 2226 // Element/input types 2227 "header": function( elem ) { 2228 return rheader.test( elem.nodeName ); 2229 }, 2230 2231 "input": function( elem ) { 2232 return rinputs.test( elem.nodeName ); 2233 }, 2234 2235 "button": function( elem ) { 2236 var name = elem.nodeName.toLowerCase(); 2237 return name === "input" && elem.type === "button" || name === "button"; 2238 }, 2239 2240 "text": function( elem ) { 2241 var attr; 2242 return elem.nodeName.toLowerCase() === "input" && 2243 elem.type === "text" && 2244 2245 // Support: IE<8 2246 // New HTML5 attribute values (e.g., "search") appear with elem.type === "text" 2247 ( ( attr = elem.getAttribute( "type" ) ) == null || 2248 attr.toLowerCase() === "text" ); 2249 }, 2250 2251 // Position-in-collection 2252 "first": createPositionalPseudo( function() { 2253 return [ 0 ]; 2254 } ), 2255 2256 "last": createPositionalPseudo( function( _matchIndexes, length ) { 2257 return [ length - 1 ]; 2258 } ), 2259 2260 "eq": createPositionalPseudo( function( _matchIndexes, length, argument ) { 2261 return [ argument < 0 ? argument + length : argument ]; 2262 } ), 2263 2264 "even": createPositionalPseudo( function( matchIndexes, length ) { 2265 var i = 0; 2266 for ( ; i < length; i += 2 ) { 2267 matchIndexes.push( i ); 2268 } 2269 return matchIndexes; 2270 } ), 2271 2272 "odd": createPositionalPseudo( function( matchIndexes, length ) { 2273 var i = 1; 2274 for ( ; i < length; i += 2 ) { 2275 matchIndexes.push( i ); 2276 } 2277 return matchIndexes; 2278 } ), 2279 2280 "lt": createPositionalPseudo( function( matchIndexes, length, argument ) { 2281 var i = argument < 0 ? 2282 argument + length : 2283 argument > length ? 2284 length : 2285 argument; 2286 for ( ; --i >= 0; ) { 2287 matchIndexes.push( i ); 2288 } 2289 return matchIndexes; 2290 } ), 2291 2292 "gt": createPositionalPseudo( function( matchIndexes, length, argument ) { 2293 var i = argument < 0 ? argument + length : argument; 2294 for ( ; ++i < length; ) { 2295 matchIndexes.push( i ); 2296 } 2297 return matchIndexes; 2298 } ) 2299 } 2300}; 2301 2302Expr.pseudos[ "nth" ] = Expr.pseudos[ "eq" ]; 2303 2304// Add button/input type pseudos 2305for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) { 2306 Expr.pseudos[ i ] = createInputPseudo( i ); 2307} 2308for ( i in { submit: true, reset: true } ) { 2309 Expr.pseudos[ i ] = createButtonPseudo( i ); 2310} 2311 2312// Easy API for creating new setFilters 2313function setFilters() {} 2314setFilters.prototype = Expr.filters = Expr.pseudos; 2315Expr.setFilters = new setFilters(); 2316 2317tokenize = Sizzle.tokenize = function( selector, parseOnly ) { 2318 var matched, match, tokens, type, 2319 soFar, groups, preFilters, 2320 cached = tokenCache[ selector + " " ]; 2321 2322 if ( cached ) { 2323 return parseOnly ? 0 : cached.slice( 0 ); 2324 } 2325 2326 soFar = selector; 2327 groups = []; 2328 preFilters = Expr.preFilter; 2329 2330 while ( soFar ) { 2331 2332 // Comma and first run 2333 if ( !matched || ( match = rcomma.exec( soFar ) ) ) { 2334 if ( match ) { 2335 2336 // Don't consume trailing commas as valid 2337 soFar = soFar.slice( match[ 0 ].length ) || soFar; 2338 } 2339 groups.push( ( tokens = [] ) ); 2340 } 2341 2342 matched = false; 2343 2344 // Combinators 2345 if ( ( match = rcombinators.exec( soFar ) ) ) { 2346 matched = match.shift(); 2347 tokens.push( { 2348 value: matched, 2349 2350 // Cast descendant combinators to space 2351 type: match[ 0 ].replace( rtrim, " " ) 2352 } ); 2353 soFar = soFar.slice( matched.length ); 2354 } 2355 2356 // Filters 2357 for ( type in Expr.filter ) { 2358 if ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] || 2359 ( match = preFilters[ type ]( match ) ) ) ) { 2360 matched = match.shift(); 2361 tokens.push( { 2362 value: matched, 2363 type: type, 2364 matches: match 2365 } ); 2366 soFar = soFar.slice( matched.length ); 2367 } 2368 } 2369 2370 if ( !matched ) { 2371 break; 2372 } 2373 } 2374 2375 // Return the length of the invalid excess 2376 // if we're just parsing 2377 // Otherwise, throw an error or return tokens 2378 return parseOnly ? 2379 soFar.length : 2380 soFar ? 2381 Sizzle.error( selector ) : 2382 2383 // Cache the tokens 2384 tokenCache( selector, groups ).slice( 0 ); 2385}; 2386 2387function toSelector( tokens ) { 2388 var i = 0, 2389 len = tokens.length, 2390 selector = ""; 2391 for ( ; i < len; i++ ) { 2392 selector += tokens[ i ].value; 2393 } 2394 return selector; 2395} 2396 2397function addCombinator( matcher, combinator, base ) { 2398 var dir = combinator.dir, 2399 skip = combinator.next, 2400 key = skip || dir, 2401 checkNonElements = base && key === "parentNode", 2402 doneName = done++; 2403 2404 return combinator.first ? 2405 2406 // Check against closest ancestor/preceding element 2407 function( elem, context, xml ) { 2408 while ( ( elem = elem[ dir ] ) ) { 2409 if ( elem.nodeType === 1 || checkNonElements ) { 2410 return matcher( elem, context, xml ); 2411 } 2412 } 2413 return false; 2414 } : 2415 2416 // Check against all ancestor/preceding elements 2417 function( elem, context, xml ) { 2418 var oldCache, uniqueCache, outerCache, 2419 newCache = [ dirruns, doneName ]; 2420 2421 // We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching 2422 if ( xml ) { 2423 while ( ( elem = elem[ dir ] ) ) { 2424 if ( elem.nodeType === 1 || checkNonElements ) { 2425 if ( matcher( elem, context, xml ) ) { 2426 return true; 2427 } 2428 } 2429 } 2430 } else { 2431 while ( ( elem = elem[ dir ] ) ) { 2432 if ( elem.nodeType === 1 || checkNonElements ) { 2433 outerCache = elem[ expando ] || ( elem[ expando ] = {} ); 2434 2435 // Support: IE <9 only 2436 // Defend against cloned attroperties (jQuery gh-1709) 2437 uniqueCache = outerCache[ elem.uniqueID ] || 2438 ( outerCache[ elem.uniqueID ] = {} ); 2439 2440 if ( skip && skip === elem.nodeName.toLowerCase() ) { 2441 elem = elem[ dir ] || elem; 2442 } else if ( ( oldCache = uniqueCache[ key ] ) && 2443 oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) { 2444 2445 // Assign to newCache so results back-propagate to previous elements 2446 return ( newCache[ 2 ] = oldCache[ 2 ] ); 2447 } else { 2448 2449 // Reuse newcache so results back-propagate to previous elements 2450 uniqueCache[ key ] = newCache; 2451 2452 // A match means we're done; a fail means we have to keep checking 2453 if ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) { 2454 return true; 2455 } 2456 } 2457 } 2458 } 2459 } 2460 return false; 2461 }; 2462} 2463 2464function elementMatcher( matchers ) { 2465 return matchers.length > 1 ? 2466 function( elem, context, xml ) { 2467 var i = matchers.length; 2468 while ( i-- ) { 2469 if ( !matchers[ i ]( elem, context, xml ) ) { 2470 return false; 2471 } 2472 } 2473 return true; 2474 } : 2475 matchers[ 0 ]; 2476} 2477 2478function multipleContexts( selector, contexts, results ) { 2479 var i = 0, 2480 len = contexts.length; 2481 for ( ; i < len; i++ ) { 2482 Sizzle( selector, contexts[ i ], results ); 2483 } 2484 return results; 2485} 2486 2487function condense( unmatched, map, filter, context, xml ) { 2488 var elem, 2489 newUnmatched = [], 2490 i = 0, 2491 len = unmatched.length, 2492 mapped = map != null; 2493 2494 for ( ; i < len; i++ ) { 2495 if ( ( elem = unmatched[ i ] ) ) { 2496 if ( !filter || filter( elem, context, xml ) ) { 2497 newUnmatched.push( elem ); 2498 if ( mapped ) { 2499 map.push( i ); 2500 } 2501 } 2502 } 2503 } 2504 2505 return newUnmatched; 2506} 2507 2508function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) { 2509 if ( postFilter && !postFilter[ expando ] ) { 2510 postFilter = setMatcher( postFilter ); 2511 } 2512 if ( postFinder && !postFinder[ expando ] ) { 2513 postFinder = setMatcher( postFinder, postSelector ); 2514 } 2515 return markFunction( function( seed, results, context, xml ) { 2516 var temp, i, elem, 2517 preMap = [], 2518 postMap = [], 2519 preexisting = results.length, 2520 2521 // Get initial elements from seed or context 2522 elems = seed || multipleContexts( 2523 selector || "*", 2524 context.nodeType ? [ context ] : context, 2525 [] 2526 ), 2527 2528 // Prefilter to get matcher input, preserving a map for seed-results synchronization 2529 matcherIn = preFilter && ( seed || !selector ) ? 2530 condense( elems, preMap, preFilter, context, xml ) : 2531 elems, 2532 2533 matcherOut = matcher ? 2534 2535 // If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results, 2536 postFinder || ( seed ? preFilter : preexisting || postFilter ) ? 2537 2538 // ...intermediate processing is necessary 2539 [] : 2540 2541 // ...otherwise use results directly 2542 results : 2543 matcherIn; 2544 2545 // Find primary matches 2546 if ( matcher ) { 2547 matcher( matcherIn, matcherOut, context, xml ); 2548 } 2549 2550 // Apply postFilter 2551 if ( postFilter ) { 2552 temp = condense( matcherOut, postMap ); 2553 postFilter( temp, [], context, xml ); 2554 2555 // Un-match failing elements by moving them back to matcherIn 2556 i = temp.length; 2557 while ( i-- ) { 2558 if ( ( elem = temp[ i ] ) ) { 2559 matcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem ); 2560 } 2561 } 2562 } 2563 2564 if ( seed ) { 2565 if ( postFinder || preFilter ) { 2566 if ( postFinder ) { 2567 2568 // Get the final matcherOut by condensing this intermediate into postFinder contexts 2569 temp = []; 2570 i = matcherOut.length; 2571 while ( i-- ) { 2572 if ( ( elem = matcherOut[ i ] ) ) { 2573 2574 // Restore matcherIn since elem is not yet a final match 2575 temp.push( ( matcherIn[ i ] = elem ) ); 2576 } 2577 } 2578 postFinder( null, ( matcherOut = [] ), temp, xml ); 2579 } 2580 2581 // Move matched elements from seed to results to keep them synchronized 2582 i = matcherOut.length; 2583 while ( i-- ) { 2584 if ( ( elem = matcherOut[ i ] ) && 2585 ( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) { 2586 2587 seed[ temp ] = !( results[ temp ] = elem ); 2588 } 2589 } 2590 } 2591 2592 // Add elements to results, through postFinder if defined 2593 } else { 2594 matcherOut = condense( 2595 matcherOut === results ? 2596 matcherOut.splice( preexisting, matcherOut.length ) : 2597 matcherOut 2598 ); 2599 if ( postFinder ) { 2600 postFinder( null, results, matcherOut, xml ); 2601 } else { 2602 push.apply( results, matcherOut ); 2603 } 2604 } 2605 } ); 2606} 2607 2608function matcherFromTokens( tokens ) { 2609 var checkContext, matcher, j, 2610 len = tokens.length, 2611 leadingRelative = Expr.relative[ tokens[ 0 ].type ], 2612 implicitRelative = leadingRelative || Expr.relative[ " " ], 2613 i = leadingRelative ? 1 : 0, 2614 2615 // The foundational matcher ensures that elements are reachable from top-level context(s) 2616 matchContext = addCombinator( function( elem ) { 2617 return elem === checkContext; 2618 }, implicitRelative, true ), 2619 matchAnyContext = addCombinator( function( elem ) { 2620 return indexOf( checkContext, elem ) > -1; 2621 }, implicitRelative, true ), 2622 matchers = [ function( elem, context, xml ) { 2623 var ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || ( 2624 ( checkContext = context ).nodeType ? 2625 matchContext( elem, context, xml ) : 2626 matchAnyContext( elem, context, xml ) ); 2627 2628 // Avoid hanging onto element (issue #299) 2629 checkContext = null; 2630 return ret; 2631 } ]; 2632 2633 for ( ; i < len; i++ ) { 2634 if ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) { 2635 matchers = [ addCombinator( elementMatcher( matchers ), matcher ) ]; 2636 } else { 2637 matcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches ); 2638 2639 // Return special upon seeing a positional matcher 2640 if ( matcher[ expando ] ) { 2641 2642 // Find the next relative operator (if any) for proper handling 2643 j = ++i; 2644 for ( ; j < len; j++ ) { 2645 if ( Expr.relative[ tokens[ j ].type ] ) { 2646 break; 2647 } 2648 } 2649 return setMatcher( 2650 i > 1 && elementMatcher( matchers ), 2651 i > 1 && toSelector( 2652 2653 // If the preceding token was a descendant combinator, insert an implicit any-element `*` 2654 tokens 2655 .slice( 0, i - 1 ) 2656 .concat( { value: tokens[ i - 2 ].type === " " ? "*" : "" } ) 2657 ).replace( rtrim, "$1" ), 2658 matcher, 2659 i < j && matcherFromTokens( tokens.slice( i, j ) ), 2660 j < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ), 2661 j < len && toSelector( tokens ) 2662 ); 2663 } 2664 matchers.push( matcher ); 2665 } 2666 } 2667 2668 return elementMatcher( matchers ); 2669} 2670 2671function matcherFromGroupMatchers( elementMatchers, setMatchers ) { 2672 var bySet = setMatchers.length > 0, 2673 byElement = elementMatchers.length > 0, 2674 superMatcher = function( seed, context, xml, results, outermost ) { 2675 var elem, j, matcher, 2676 matchedCount = 0, 2677 i = "0", 2678 unmatched = seed && [], 2679 setMatched = [], 2680 contextBackup = outermostContext, 2681 2682 // We must always have either seed elements or outermost context 2683 elems = seed || byElement && Expr.find[ "TAG" ]( "*", outermost ), 2684 2685 // Use integer dirruns iff this is the outermost matcher 2686 dirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ), 2687 len = elems.length; 2688 2689 if ( outermost ) { 2690 2691 // Support: IE 11+, Edge 17 - 18+ 2692 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing 2693 // two documents; shallow comparisons work. 2694 // eslint-disable-next-line eqeqeq 2695 outermostContext = context == document || context || outermost; 2696 } 2697 2698 // Add elements passing elementMatchers directly to results 2699 // Support: IE<9, Safari 2700 // Tolerate NodeList properties (IE: "length"; Safari: <number>) matching elements by id 2701 for ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) { 2702 if ( byElement && elem ) { 2703 j = 0; 2704 2705 // Support: IE 11+, Edge 17 - 18+ 2706 // IE/Edge sometimes throw a "Permission denied" error when strict-comparing 2707 // two documents; shallow comparisons work. 2708 // eslint-disable-next-line eqeqeq 2709 if ( !context && elem.ownerDocument != document ) { 2710 setDocument( elem ); 2711 xml = !documentIsHTML; 2712 } 2713 while ( ( matcher = elementMatchers[ j++ ] ) ) { 2714 if ( matcher( elem, context || document, xml ) ) { 2715 results.push( elem ); 2716 break; 2717 } 2718 } 2719 if ( outermost ) { 2720 dirruns = dirrunsUnique; 2721 } 2722 } 2723 2724 // Track unmatched elements for set filters 2725 if ( bySet ) { 2726 2727 // They will have gone through all possible matchers 2728 if ( ( elem = !matcher && elem ) ) { 2729 matchedCount--; 2730 } 2731 2732 // Lengthen the array for every element, matched or not 2733 if ( seed ) { 2734 unmatched.push( elem ); 2735 } 2736 } 2737 } 2738 2739 // `i` is now the count of elements visited above, and adding it to `matchedCount` 2740 // makes the latter nonnegative. 2741 matchedCount += i; 2742 2743 // Apply set filters to unmatched elements 2744 // NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount` 2745 // equals `i`), unless we didn't visit _any_ elements in the above loop because we have 2746 // no element matchers and no seed. 2747 // Incrementing an initially-string "0" `i` allows `i` to remain a string only in that 2748 // case, which will result in a "00" `matchedCount` that differs from `i` but is also 2749 // numerically zero. 2750 if ( bySet && i !== matchedCount ) { 2751 j = 0; 2752 while ( ( matcher = setMatchers[ j++ ] ) ) { 2753 matcher( unmatched, setMatched, context, xml ); 2754 } 2755 2756 if ( seed ) { 2757 2758 // Reintegrate element matches to eliminate the need for sorting 2759 if ( matchedCount > 0 ) { 2760 while ( i-- ) { 2761 if ( !( unmatched[ i ] || setMatched[ i ] ) ) { 2762 setMatched[ i ] = pop.call( results ); 2763 } 2764 } 2765 } 2766 2767 // Discard index placeholder values to get only actual matches 2768 setMatched = condense( setMatched ); 2769 } 2770 2771 // Add matches to results 2772 push.apply( results, setMatched ); 2773 2774 // Seedless set matches succeeding multiple successful matchers stipulate sorting 2775 if ( outermost && !seed && setMatched.length > 0 && 2776 ( matchedCount + setMatchers.length ) > 1 ) { 2777 2778 Sizzle.uniqueSort( results ); 2779 } 2780 } 2781 2782 // Override manipulation of globals by nested matchers 2783 if ( outermost ) { 2784 dirruns = dirrunsUnique; 2785 outermostContext = contextBackup; 2786 } 2787 2788 return unmatched; 2789 }; 2790 2791 return bySet ? 2792 markFunction( superMatcher ) : 2793 superMatcher; 2794} 2795 2796compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) { 2797 var i, 2798 setMatchers = [], 2799 elementMatchers = [], 2800 cached = compilerCache[ selector + " " ]; 2801 2802 if ( !cached ) { 2803 2804 // Generate a function of recursive functions that can be used to check each element 2805 if ( !match ) { 2806 match = tokenize( selector ); 2807 } 2808 i = match.length; 2809 while ( i-- ) { 2810 cached = matcherFromTokens( match[ i ] ); 2811 if ( cached[ expando ] ) { 2812 setMatchers.push( cached ); 2813 } else { 2814 elementMatchers.push( cached ); 2815 } 2816 } 2817 2818 // Cache the compiled function 2819 cached = compilerCache( 2820 selector, 2821 matcherFromGroupMatchers( elementMatchers, setMatchers ) 2822 ); 2823 2824 // Save selector and tokenization 2825 cached.selector = selector; 2826 } 2827 return cached; 2828}; 2829 2830/** 2831 * A low-level selection function that works with Sizzle's compiled 2832 * selector functions 2833 * @param {String|Function} selector A selector or a pre-compiled 2834 * selector function built with Sizzle.compile 2835 * @param {Element} context 2836 * @param {Array} [results] 2837 * @param {Array} [seed] A set of elements to match against 2838 */ 2839select = Sizzle.select = function( selector, context, results, seed ) { 2840 var i, tokens, token, type, find, 2841 compiled = typeof selector === "function" && selector, 2842 match = !seed && tokenize( ( selector = compiled.selector || selector ) ); 2843 2844 results = results || []; 2845 2846 // Try to minimize operations if there is only one selector in the list and no seed 2847 // (the latter of which guarantees us context) 2848 if ( match.length === 1 ) { 2849 2850 // Reduce context if the leading compound selector is an ID 2851 tokens = match[ 0 ] = match[ 0 ].slice( 0 ); 2852 if ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === "ID" && 2853 context.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) { 2854 2855 context = ( Expr.find[ "ID" ]( token.matches[ 0 ] 2856 .replace( runescape, funescape ), context ) || [] )[ 0 ]; 2857 if ( !context ) { 2858 return results; 2859 2860 // Precompiled matchers will still verify ancestry, so step up a level 2861 } else if ( compiled ) { 2862 context = context.parentNode; 2863 } 2864 2865 selector = selector.slice( tokens.shift().value.length ); 2866 } 2867 2868 // Fetch a seed set for right-to-left matching 2869 i = matchExpr[ "needsContext" ].test( selector ) ? 0 : tokens.length; 2870 while ( i-- ) { 2871 token = tokens[ i ]; 2872 2873 // Abort if we hit a combinator 2874 if ( Expr.relative[ ( type = token.type ) ] ) { 2875 break; 2876 } 2877 if ( ( find = Expr.find[ type ] ) ) { 2878 2879 // Search, expanding context for leading sibling combinators 2880 if ( ( seed = find( 2881 token.matches[ 0 ].replace( runescape, funescape ), 2882 rsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) || 2883 context 2884 ) ) ) { 2885 2886 // If seed is empty or no tokens remain, we can return early 2887 tokens.splice( i, 1 ); 2888 selector = seed.length && toSelector( tokens ); 2889 if ( !selector ) { 2890 push.apply( results, seed ); 2891 return results; 2892 } 2893 2894 break; 2895 } 2896 } 2897 } 2898 } 2899 2900 // Compile and execute a filtering function if one is not provided 2901 // Provide `match` to avoid retokenization if we modified the selector above 2902 ( compiled || compile( selector, match ) )( 2903 seed, 2904 context, 2905 !documentIsHTML, 2906 results, 2907 !context || rsibling.test( selector ) && testContext( context.parentNode ) || context 2908 ); 2909 return results; 2910}; 2911 2912// One-time assignments 2913 2914// Sort stability 2915support.sortStable = expando.split( "" ).sort( sortOrder ).join( "" ) === expando; 2916 2917// Support: Chrome 14-35+ 2918// Always assume duplicates if they aren't passed to the comparison function 2919support.detectDuplicates = !!hasDuplicate; 2920 2921// Initialize against the default document 2922setDocument(); 2923 2924// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27) 2925// Detached nodes confoundingly follow *each other* 2926support.sortDetached = assert( function( el ) { 2927 2928 // Should return 1, but returns 4 (following) 2929 return el.compareDocumentPosition( document.createElement( "fieldset" ) ) & 1; 2930} ); 2931 2932// Support: IE<8 2933// Prevent attribute/property "interpolation" 2934// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx 2935if ( !assert( function( el ) { 2936 el.innerHTML = "<a href='#'></a>"; 2937 return el.firstChild.getAttribute( "href" ) === "#"; 2938} ) ) { 2939 addHandle( "type|href|height|width", function( elem, name, isXML ) { 2940 if ( !isXML ) { 2941 return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 ); 2942 } 2943 } ); 2944} 2945 2946// Support: IE<9 2947// Use defaultValue in place of getAttribute("value") 2948if ( !support.attributes || !assert( function( el ) { 2949 el.innerHTML = "<input/>"; 2950 el.firstChild.setAttribute( "value", "" ); 2951 return el.firstChild.getAttribute( "value" ) === ""; 2952} ) ) { 2953 addHandle( "value", function( elem, _name, isXML ) { 2954 if ( !isXML && elem.nodeName.toLowerCase() === "input" ) { 2955 return elem.defaultValue; 2956 } 2957 } ); 2958} 2959 2960// Support: IE<9 2961// Use getAttributeNode to fetch booleans when getAttribute lies 2962if ( !assert( function( el ) { 2963 return el.getAttribute( "disabled" ) == null; 2964} ) ) { 2965 addHandle( booleans, function( elem, name, isXML ) { 2966 var val; 2967 if ( !isXML ) { 2968 return elem[ name ] === true ? name.toLowerCase() : 2969 ( val = elem.getAttributeNode( name ) ) && val.specified ? 2970 val.value : 2971 null; 2972 } 2973 } ); 2974} 2975 2976return Sizzle; 2977 2978} )( window ); 2979 2980 2981 2982jQuery.find = Sizzle; 2983jQuery.expr = Sizzle.selectors; 2984 2985// Deprecated 2986jQuery.expr[ ":" ] = jQuery.expr.pseudos; 2987jQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort; 2988jQuery.text = Sizzle.getText; 2989jQuery.isXMLDoc = Sizzle.isXML; 2990jQuery.contains = Sizzle.contains; 2991jQuery.escapeSelector = Sizzle.escape; 2992 2993 2994 2995 2996var dir = function( elem, dir, until ) { 2997 var matched = [], 2998 truncate = until !== undefined; 2999 3000 while ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) { 3001 if ( elem.nodeType === 1 ) { 3002 if ( truncate && jQuery( elem ).is( until ) ) { 3003 break; 3004 } 3005 matched.push( elem ); 3006 } 3007 } 3008 return matched; 3009}; 3010 3011 3012var siblings = function( n, elem ) { 3013 var matched = []; 3014 3015 for ( ; n; n = n.nextSibling ) { 3016 if ( n.nodeType === 1 && n !== elem ) { 3017 matched.push( n ); 3018 } 3019 } 3020 3021 return matched; 3022}; 3023 3024 3025var rneedsContext = jQuery.expr.match.needsContext; 3026 3027 3028 3029function nodeName( elem, name ) { 3030 3031 return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase(); 3032 3033} 3034var rsingleTag = ( /^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i ); 3035 3036 3037 3038// Implement the identical functionality for filter and not 3039function winnow( elements, qualifier, not ) { 3040 if ( isFunction( qualifier ) ) { 3041 return jQuery.grep( elements, function( elem, i ) { 3042 return !!qualifier.call( elem, i, elem ) !== not; 3043 } ); 3044 } 3045 3046 // Single element 3047 if ( qualifier.nodeType ) { 3048 return jQuery.grep( elements, function( elem ) { 3049 return ( elem === qualifier ) !== not; 3050 } ); 3051 } 3052 3053 // Arraylike of elements (jQuery, arguments, Array) 3054 if ( typeof qualifier !== "string" ) { 3055 return jQuery.grep( elements, function( elem ) { 3056 return ( indexOf.call( qualifier, elem ) > -1 ) !== not; 3057 } ); 3058 } 3059 3060 // Filtered directly for both simple and complex selectors 3061 return jQuery.filter( qualifier, elements, not ); 3062} 3063 3064jQuery.filter = function( expr, elems, not ) { 3065 var elem = elems[ 0 ]; 3066 3067 if ( not ) { 3068 expr = ":not(" + expr + ")"; 3069 } 3070 3071 if ( elems.length === 1 && elem.nodeType === 1 ) { 3072 return jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : []; 3073 } 3074 3075 return jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) { 3076 return elem.nodeType === 1; 3077 } ) ); 3078}; 3079 3080jQuery.fn.extend( { 3081 find: function( selector ) { 3082 var i, ret, 3083 len = this.length, 3084 self = this; 3085 3086 if ( typeof selector !== "string" ) { 3087 return this.pushStack( jQuery( selector ).filter( function() { 3088 for ( i = 0; i < len; i++ ) { 3089 if ( jQuery.contains( self[ i ], this ) ) { 3090 return true; 3091 } 3092 } 3093 } ) ); 3094 } 3095 3096 ret = this.pushStack( [] ); 3097 3098 for ( i = 0; i < len; i++ ) { 3099 jQuery.find( selector, self[ i ], ret ); 3100 } 3101 3102 return len > 1 ? jQuery.uniqueSort( ret ) : ret; 3103 }, 3104 filter: function( selector ) { 3105 return this.pushStack( winnow( this, selector || [], false ) ); 3106 }, 3107 not: function( selector ) { 3108 return this.pushStack( winnow( this, selector || [], true ) ); 3109 }, 3110 is: function( selector ) { 3111 return !!winnow( 3112 this, 3113 3114 // If this is a positional/relative selector, check membership in the returned set 3115 // so $("p:first").is("p:last") won't return true for a doc with two "p". 3116 typeof selector === "string" && rneedsContext.test( selector ) ? 3117 jQuery( selector ) : 3118 selector || [], 3119 false 3120 ).length; 3121 } 3122} ); 3123 3124 3125// Initialize a jQuery object 3126 3127 3128// A central reference to the root jQuery(document) 3129var rootjQuery, 3130 3131 // A simple way to check for HTML strings 3132 // Prioritize #id over <tag> to avoid XSS via location.hash (#9521) 3133 // Strict HTML recognition (#11290: must start with <) 3134 // Shortcut simple #id case for speed 3135 rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/, 3136 3137 init = jQuery.fn.init = function( selector, context, root ) { 3138 var match, elem; 3139 3140 // HANDLE: $(""), $(null), $(undefined), $(false) 3141 if ( !selector ) { 3142 return this; 3143 } 3144 3145 // Method init() accepts an alternate rootjQuery 3146 // so migrate can support jQuery.sub (gh-2101) 3147 root = root || rootjQuery; 3148 3149 // Handle HTML strings 3150 if ( typeof selector === "string" ) { 3151 if ( selector[ 0 ] === "<" && 3152 selector[ selector.length - 1 ] === ">" && 3153 selector.length >= 3 ) { 3154 3155 // Assume that strings that start and end with <> are HTML and skip the regex check 3156 match = [ null, selector, null ]; 3157 3158 } else { 3159 match = rquickExpr.exec( selector ); 3160 } 3161 3162 // Match html or make sure no context is specified for #id 3163 if ( match && ( match[ 1 ] || !context ) ) { 3164 3165 // HANDLE: $(html) -> $(array) 3166 if ( match[ 1 ] ) { 3167 context = context instanceof jQuery ? context[ 0 ] : context; 3168 3169 // Option to run scripts is true for back-compat 3170 // Intentionally let the error be thrown if parseHTML is not present 3171 jQuery.merge( this, jQuery.parseHTML( 3172 match[ 1 ], 3173 context && context.nodeType ? context.ownerDocument || context : document, 3174 true 3175 ) ); 3176 3177 // HANDLE: $(html, props) 3178 if ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) { 3179 for ( match in context ) { 3180 3181 // Properties of context are called as methods if possible 3182 if ( isFunction( this[ match ] ) ) { 3183 this[ match ]( context[ match ] ); 3184 3185 // ...and otherwise set as attributes 3186 } else { 3187 this.attr( match, context[ match ] ); 3188 } 3189 } 3190 } 3191 3192 return this; 3193 3194 // HANDLE: $(#id) 3195 } else { 3196 elem = document.getElementById( match[ 2 ] ); 3197 3198 if ( elem ) { 3199 3200 // Inject the element directly into the jQuery object 3201 this[ 0 ] = elem; 3202 this.length = 1; 3203 } 3204 return this; 3205 } 3206 3207 // HANDLE: $(expr, $(...)) 3208 } else if ( !context || context.jquery ) { 3209 return ( context || root ).find( selector ); 3210 3211 // HANDLE: $(expr, context) 3212 // (which is just equivalent to: $(context).find(expr) 3213 } else { 3214 return this.constructor( context ).find( selector ); 3215 } 3216 3217 // HANDLE: $(DOMElement) 3218 } else if ( selector.nodeType ) { 3219 this[ 0 ] = selector; 3220 this.length = 1; 3221 return this; 3222 3223 // HANDLE: $(function) 3224 // Shortcut for document ready 3225 } else if ( isFunction( selector ) ) { 3226 return root.ready !== undefined ? 3227 root.ready( selector ) : 3228 3229 // Execute immediately if ready is not present 3230 selector( jQuery ); 3231 } 3232 3233 return jQuery.makeArray( selector, this ); 3234 }; 3235 3236// Give the init function the jQuery prototype for later instantiation 3237init.prototype = jQuery.fn; 3238 3239// Initialize central reference 3240rootjQuery = jQuery( document ); 3241 3242 3243var rparentsprev = /^(?:parents|prev(?:Until|All))/, 3244 3245 // Methods guaranteed to produce a unique set when starting from a unique set 3246 guaranteedUnique = { 3247 children: true, 3248 contents: true, 3249 next: true, 3250 prev: true 3251 }; 3252 3253jQuery.fn.extend( { 3254 has: function( target ) { 3255 var targets = jQuery( target, this ), 3256 l = targets.length; 3257 3258 return this.filter( function() { 3259 var i = 0; 3260 for ( ; i < l; i++ ) { 3261 if ( jQuery.contains( this, targets[ i ] ) ) { 3262 return true; 3263 } 3264 } 3265 } ); 3266 }, 3267 3268 closest: function( selectors, context ) { 3269 var cur, 3270 i = 0, 3271 l = this.length, 3272 matched = [], 3273 targets = typeof selectors !== "string" && jQuery( selectors ); 3274 3275 // Positional selectors never match, since there's no _selection_ context 3276 if ( !rneedsContext.test( selectors ) ) { 3277 for ( ; i < l; i++ ) { 3278 for ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) { 3279 3280 // Always skip document fragments 3281 if ( cur.nodeType < 11 && ( targets ? 3282 targets.index( cur ) > -1 : 3283 3284 // Don't pass non-elements to Sizzle 3285 cur.nodeType === 1 && 3286 jQuery.find.matchesSelector( cur, selectors ) ) ) { 3287 3288 matched.push( cur ); 3289 break; 3290 } 3291 } 3292 } 3293 } 3294 3295 return this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched ); 3296 }, 3297 3298 // Determine the position of an element within the set 3299 index: function( elem ) { 3300 3301 // No argument, return index in parent 3302 if ( !elem ) { 3303 return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1; 3304 } 3305 3306 // Index in selector 3307 if ( typeof elem === "string" ) { 3308 return indexOf.call( jQuery( elem ), this[ 0 ] ); 3309 } 3310 3311 // Locate the position of the desired element 3312 return indexOf.call( this, 3313 3314 // If it receives a jQuery object, the first element is used 3315 elem.jquery ? elem[ 0 ] : elem 3316 ); 3317 }, 3318 3319 add: function( selector, context ) { 3320 return this.pushStack( 3321 jQuery.uniqueSort( 3322 jQuery.merge( this.get(), jQuery( selector, context ) ) 3323 ) 3324 ); 3325 }, 3326 3327 addBack: function( selector ) { 3328 return this.add( selector == null ? 3329 this.prevObject : this.prevObject.filter( selector ) 3330 ); 3331 } 3332} ); 3333 3334function sibling( cur, dir ) { 3335 while ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {} 3336 return cur; 3337} 3338 3339jQuery.each( { 3340 parent: function( elem ) { 3341 var parent = elem.parentNode; 3342 return parent && parent.nodeType !== 11 ? parent : null; 3343 }, 3344 parents: function( elem ) { 3345 return dir( elem, "parentNode" ); 3346 }, 3347 parentsUntil: function( elem, _i, until ) { 3348 return dir( elem, "parentNode", until ); 3349 }, 3350 next: function( elem ) { 3351 return sibling( elem, "nextSibling" ); 3352 }, 3353 prev: function( elem ) { 3354 return sibling( elem, "previousSibling" ); 3355 }, 3356 nextAll: function( elem ) { 3357 return dir( elem, "nextSibling" ); 3358 }, 3359 prevAll: function( elem ) { 3360 return dir( elem, "previousSibling" ); 3361 }, 3362 nextUntil: function( elem, _i, until ) { 3363 return dir( elem, "nextSibling", until ); 3364 }, 3365 prevUntil: function( elem, _i, until ) { 3366 return dir( elem, "previousSibling", until ); 3367 }, 3368 siblings: function( elem ) { 3369 return siblings( ( elem.parentNode || {} ).firstChild, elem ); 3370 }, 3371 children: function( elem ) { 3372 return siblings( elem.firstChild ); 3373 }, 3374 contents: function( elem ) { 3375 if ( elem.contentDocument != null && 3376 3377 // Support: IE 11+ 3378 // <object> elements with no `data` attribute has an object 3379 // `contentDocument` with a `null` prototype. 3380 getProto( elem.contentDocument ) ) { 3381 3382 return elem.contentDocument; 3383 } 3384 3385 // Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only 3386 // Treat the template element as a regular one in browsers that 3387 // don't support it. 3388 if ( nodeName( elem, "template" ) ) { 3389 elem = elem.content || elem; 3390 } 3391 3392 return jQuery.merge( [], elem.childNodes ); 3393 } 3394}, function( name, fn ) { 3395 jQuery.fn[ name ] = function( until, selector ) { 3396 var matched = jQuery.map( this, fn, until ); 3397 3398 if ( name.slice( -5 ) !== "Until" ) { 3399 selector = until; 3400 } 3401 3402 if ( selector && typeof selector === "string" ) { 3403 matched = jQuery.filter( selector, matched ); 3404 } 3405 3406 if ( this.length > 1 ) { 3407 3408 // Remove duplicates 3409 if ( !guaranteedUnique[ name ] ) { 3410 jQuery.uniqueSort( matched ); 3411 } 3412 3413 // Reverse order for parents* and prev-derivatives 3414 if ( rparentsprev.test( name ) ) { 3415 matched.reverse(); 3416 } 3417 } 3418 3419 return this.pushStack( matched ); 3420 }; 3421} ); 3422var rnothtmlwhite = ( /[^\x20\t\r\n\f]+/g ); 3423 3424 3425 3426// Convert String-formatted options into Object-formatted ones 3427function createOptions( options ) { 3428 var object = {}; 3429 jQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) { 3430 object[ flag ] = true; 3431 } ); 3432 return object; 3433} 3434 3435/* 3436 * Create a callback list using the following parameters: 3437 * 3438 * options: an optional list of space-separated options that will change how 3439 * the callback list behaves or a more traditional option object 3440 * 3441 * By default a callback list will act like an event callback list and can be 3442 * "fired" multiple times. 3443 * 3444 * Possible options: 3445 * 3446 * once: will ensure the callback list can only be fired once (like a Deferred) 3447 * 3448 * memory: will keep track of previous values and will call any callback added 3449 * after the list has been fired right away with the latest "memorized" 3450 * values (like a Deferred) 3451 * 3452 * unique: will ensure a callback can only be added once (no duplicate in the list) 3453 * 3454 * stopOnFalse: interrupt callings when a callback returns false 3455 * 3456 */ 3457jQuery.Callbacks = function( options ) { 3458 3459 // Convert options from String-formatted to Object-formatted if needed 3460 // (we check in cache first) 3461 options = typeof options === "string" ? 3462 createOptions( options ) : 3463 jQuery.extend( {}, options ); 3464 3465 var // Flag to know if list is currently firing 3466 firing, 3467 3468 // Last fire value for non-forgettable lists 3469 memory, 3470 3471 // Flag to know if list was already fired 3472 fired, 3473 3474 // Flag to prevent firing 3475 locked, 3476 3477 // Actual callback list 3478 list = [], 3479 3480 // Queue of execution data for repeatable lists 3481 queue = [], 3482 3483 // Index of currently firing callback (modified by add/remove as needed) 3484 firingIndex = -1, 3485 3486 // Fire callbacks 3487 fire = function() { 3488 3489 // Enforce single-firing 3490 locked = locked || options.once; 3491 3492 // Execute callbacks for all pending executions, 3493 // respecting firingIndex overrides and runtime changes 3494 fired = firing = true; 3495 for ( ; queue.length; firingIndex = -1 ) { 3496 memory = queue.shift(); 3497 while ( ++firingIndex < list.length ) { 3498 3499 // Run callback and check for early termination 3500 if ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false && 3501 options.stopOnFalse ) { 3502 3503 // Jump to end and forget the data so .add doesn't re-fire 3504 firingIndex = list.length; 3505 memory = false; 3506 } 3507 } 3508 } 3509 3510 // Forget the data if we're done with it 3511 if ( !options.memory ) { 3512 memory = false; 3513 } 3514 3515 firing = false; 3516 3517 // Clean up if we're done firing for good 3518 if ( locked ) { 3519 3520 // Keep an empty list if we have data for future add calls 3521 if ( memory ) { 3522 list = []; 3523 3524 // Otherwise, this object is spent 3525 } else { 3526 list = ""; 3527 } 3528 } 3529 }, 3530 3531 // Actual Callbacks object 3532 self = { 3533 3534 // Add a callback or a collection of callbacks to the list 3535 add: function() { 3536 if ( list ) { 3537 3538 // If we have memory from a past run, we should fire after adding 3539 if ( memory && !firing ) { 3540 firingIndex = list.length - 1; 3541 queue.push( memory ); 3542 } 3543 3544 ( function add( args ) { 3545 jQuery.each( args, function( _, arg ) { 3546 if ( isFunction( arg ) ) { 3547 if ( !options.unique || !self.has( arg ) ) { 3548 list.push( arg ); 3549 } 3550 } else if ( arg && arg.length && toType( arg ) !== "string" ) { 3551 3552 // Inspect recursively 3553 add( arg ); 3554 } 3555 } ); 3556 } )( arguments ); 3557 3558 if ( memory && !firing ) { 3559 fire(); 3560 } 3561 } 3562 return this; 3563 }, 3564 3565 // Remove a callback from the list 3566 remove: function() { 3567 jQuery.each( arguments, function( _, arg ) { 3568 var index; 3569 while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) { 3570 list.splice( index, 1 ); 3571 3572 // Handle firing indexes 3573 if ( index <= firingIndex ) { 3574 firingIndex--; 3575 } 3576 } 3577 } ); 3578 return this; 3579 }, 3580 3581 // Check if a given callback is in the list. 3582 // If no argument is given, return whether or not list has callbacks attached. 3583 has: function( fn ) { 3584 return fn ? 3585 jQuery.inArray( fn, list ) > -1 : 3586 list.length > 0; 3587 }, 3588 3589 // Remove all callbacks from the list 3590 empty: function() { 3591 if ( list ) { 3592 list = []; 3593 } 3594 return this; 3595 }, 3596 3597 // Disable .fire and .add 3598 // Abort any current/pending executions 3599 // Clear all callbacks and values 3600 disable: function() { 3601 locked = queue = []; 3602 list = memory = ""; 3603 return this; 3604 }, 3605 disabled: function() { 3606 return !list; 3607 }, 3608 3609 // Disable .fire 3610 // Also disable .add unless we have memory (since it would have no effect) 3611 // Abort any pending executions 3612 lock: function() { 3613 locked = queue = []; 3614 if ( !memory && !firing ) { 3615 list = memory = ""; 3616 } 3617 return this; 3618 }, 3619 locked: function() { 3620 return !!locked; 3621 }, 3622 3623 // Call all callbacks with the given context and arguments 3624 fireWith: function( context, args ) { 3625 if ( !locked ) { 3626 args = args || []; 3627 args = [ context, args.slice ? args.slice() : args ]; 3628 queue.push( args ); 3629 if ( !firing ) { 3630 fire(); 3631 } 3632 } 3633 return this; 3634 }, 3635 3636 // Call all the callbacks with the given arguments 3637 fire: function() { 3638 self.fireWith( this, arguments ); 3639 return this; 3640 }, 3641 3642 // To know if the callbacks have already been called at least once 3643 fired: function() { 3644 return !!fired; 3645 } 3646 }; 3647 3648 return self; 3649}; 3650 3651 3652function Identity( v ) { 3653 return v; 3654} 3655function Thrower( ex ) { 3656 throw ex; 3657} 3658 3659function adoptValue( value, resolve, reject, noValue ) { 3660 var method; 3661 3662 try { 3663 3664 // Check for promise aspect first to privilege synchronous behavior 3665 if ( value && isFunction( ( method = value.promise ) ) ) { 3666 method.call( value ).done( resolve ).fail( reject ); 3667 3668 // Other thenables 3669 } else if ( value && isFunction( ( method = value.then ) ) ) { 3670 method.call( value, resolve, reject ); 3671 3672 // Other non-thenables 3673 } else { 3674 3675 // Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer: 3676 // * false: [ value ].slice( 0 ) => resolve( value ) 3677 // * true: [ value ].slice( 1 ) => resolve() 3678 resolve.apply( undefined, [ value ].slice( noValue ) ); 3679 } 3680 3681 // For Promises/A+, convert exceptions into rejections 3682 // Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in 3683 // Deferred#then to conditionally suppress rejection. 3684 } catch ( value ) { 3685 3686 // Support: Android 4.0 only 3687 // Strict mode functions invoked without .call/.apply get global-object context 3688 reject.apply( undefined, [ value ] ); 3689 } 3690} 3691 3692jQuery.extend( { 3693 3694 Deferred: function( func ) { 3695 var tuples = [ 3696 3697 // action, add listener, callbacks, 3698 // ... .then handlers, argument index, [final state] 3699 [ "notify", "progress", jQuery.Callbacks( "memory" ), 3700 jQuery.Callbacks( "memory" ), 2 ], 3701 [ "resolve", "done", jQuery.Callbacks( "once memory" ), 3702 jQuery.Callbacks( "once memory" ), 0, "resolved" ], 3703 [ "reject", "fail", jQuery.Callbacks( "once memory" ), 3704 jQuery.Callbacks( "once memory" ), 1, "rejected" ] 3705 ], 3706 state = "pending", 3707 promise = { 3708 state: function() { 3709 return state; 3710 }, 3711 always: function() { 3712 deferred.done( arguments ).fail( arguments ); 3713 return this; 3714 }, 3715 "catch": function( fn ) { 3716 return promise.then( null, fn ); 3717 }, 3718 3719 // Keep pipe for back-compat 3720 pipe: function( /* fnDone, fnFail, fnProgress */ ) { 3721 var fns = arguments; 3722 3723 return jQuery.Deferred( function( newDefer ) { 3724 jQuery.each( tuples, function( _i, tuple ) { 3725 3726 // Map tuples (progress, done, fail) to arguments (done, fail, progress) 3727 var fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ]; 3728 3729 // deferred.progress(function() { bind to newDefer or newDefer.notify }) 3730 // deferred.done(function() { bind to newDefer or newDefer.resolve }) 3731 // deferred.fail(function() { bind to newDefer or newDefer.reject }) 3732 deferred[ tuple[ 1 ] ]( function() { 3733 var returned = fn && fn.apply( this, arguments ); 3734 if ( returned && isFunction( returned.promise ) ) { 3735 returned.promise() 3736 .progress( newDefer.notify ) 3737 .done( newDefer.resolve ) 3738 .fail( newDefer.reject ); 3739 } else { 3740 newDefer[ tuple[ 0 ] + "With" ]( 3741 this, 3742 fn ? [ returned ] : arguments 3743 ); 3744 } 3745 } ); 3746 } ); 3747 fns = null; 3748 } ).promise(); 3749 }, 3750 then: function( onFulfilled, onRejected, onProgress ) { 3751 var maxDepth = 0; 3752 function resolve( depth, deferred, handler, special ) { 3753 return function() { 3754 var that = this, 3755 args = arguments, 3756 mightThrow = function() { 3757 var returned, then; 3758 3759 // Support: Promises/A+ section 2.3.3.3.3 3760 // https://promisesaplus.com/#point-59 3761 // Ignore double-resolution attempts 3762 if ( depth < maxDepth ) { 3763 return; 3764 } 3765 3766 returned = handler.apply( that, args ); 3767 3768 // Support: Promises/A+ section 2.3.1 3769 // https://promisesaplus.com/#point-48 3770 if ( returned === deferred.promise() ) { 3771 throw new TypeError( "Thenable self-resolution" ); 3772 } 3773 3774 // Support: Promises/A+ sections 2.3.3.1, 3.5 3775 // https://promisesaplus.com/#point-54 3776 // https://promisesaplus.com/#point-75 3777 // Retrieve `then` only once 3778 then = returned && 3779 3780 // Support: Promises/A+ section 2.3.4 3781 // https://promisesaplus.com/#point-64 3782 // Only check objects and functions for thenability 3783 ( typeof returned === "object" || 3784 typeof returned === "function" ) && 3785 returned.then; 3786 3787 // Handle a returned thenable 3788 if ( isFunction( then ) ) { 3789 3790 // Special processors (notify) just wait for resolution 3791 if ( special ) { 3792 then.call( 3793 returned, 3794 resolve( maxDepth, deferred, Identity, special ), 3795 resolve( maxDepth, deferred, Thrower, special ) 3796 ); 3797 3798 // Normal processors (resolve) also hook into progress 3799 } else { 3800 3801 // ...and disregard older resolution values 3802 maxDepth++; 3803 3804 then.call( 3805 returned, 3806 resolve( maxDepth, deferred, Identity, special ), 3807 resolve( maxDepth, deferred, Thrower, special ), 3808 resolve( maxDepth, deferred, Identity, 3809 deferred.notifyWith ) 3810 ); 3811 } 3812 3813 // Handle all other returned values 3814 } else { 3815 3816 // Only substitute handlers pass on context 3817 // and multiple values (non-spec behavior) 3818 if ( handler !== Identity ) { 3819 that = undefined; 3820 args = [ returned ]; 3821 } 3822 3823 // Process the value(s) 3824 // Default process is resolve 3825 ( special || deferred.resolveWith )( that, args ); 3826 } 3827 }, 3828 3829 // Only normal processors (resolve) catch and reject exceptions 3830 process = special ? 3831 mightThrow : 3832 function() { 3833 try { 3834 mightThrow(); 3835 } catch ( e ) { 3836 3837 if ( jQuery.Deferred.exceptionHook ) { 3838 jQuery.Deferred.exceptionHook( e, 3839 process.stackTrace ); 3840 } 3841 3842 // Support: Promises/A+ section 2.3.3.3.4.1 3843 // https://promisesaplus.com/#point-61 3844 // Ignore post-resolution exceptions 3845 if ( depth + 1 >= maxDepth ) { 3846 3847 // Only substitute handlers pass on context 3848 // and multiple values (non-spec behavior) 3849 if ( handler !== Thrower ) { 3850 that = undefined; 3851 args = [ e ]; 3852 } 3853 3854 deferred.rejectWith( that, args ); 3855 } 3856 } 3857 }; 3858 3859 // Support: Promises/A+ section 2.3.3.3.1 3860 // https://promisesaplus.com/#point-57 3861 // Re-resolve promises immediately to dodge false rejection from 3862 // subsequent errors 3863 if ( depth ) { 3864 process(); 3865 } else { 3866 3867 // Call an optional hook to record the stack, in case of exception 3868 // since it's otherwise lost when execution goes async 3869 if ( jQuery.Deferred.getStackHook ) { 3870 process.stackTrace = jQuery.Deferred.getStackHook(); 3871 } 3872 window.setTimeout( process ); 3873 } 3874 }; 3875 } 3876 3877 return jQuery.Deferred( function( newDefer ) { 3878 3879 // progress_handlers.add( ... ) 3880 tuples[ 0 ][ 3 ].add( 3881 resolve( 3882 0, 3883 newDefer, 3884 isFunction( onProgress ) ? 3885 onProgress : 3886 Identity, 3887 newDefer.notifyWith 3888 ) 3889 ); 3890 3891 // fulfilled_handlers.add( ... ) 3892 tuples[ 1 ][ 3 ].add( 3893 resolve( 3894 0, 3895 newDefer, 3896 isFunction( onFulfilled ) ? 3897 onFulfilled : 3898 Identity 3899 ) 3900 ); 3901 3902 // rejected_handlers.add( ... ) 3903 tuples[ 2 ][ 3 ].add( 3904 resolve( 3905 0, 3906 newDefer, 3907 isFunction( onRejected ) ? 3908 onRejected : 3909 Thrower 3910 ) 3911 ); 3912 } ).promise(); 3913 }, 3914 3915 // Get a promise for this deferred 3916 // If obj is provided, the promise aspect is added to the object 3917 promise: function( obj ) { 3918 return obj != null ? jQuery.extend( obj, promise ) : promise; 3919 } 3920 }, 3921 deferred = {}; 3922 3923 // Add list-specific methods 3924 jQuery.each( tuples, function( i, tuple ) { 3925 var list = tuple[ 2 ], 3926 stateString = tuple[ 5 ]; 3927 3928 // promise.progress = list.add 3929 // promise.done = list.add 3930 // promise.fail = list.add 3931 promise[ tuple[ 1 ] ] = list.add; 3932 3933 // Handle state 3934 if ( stateString ) { 3935 list.add( 3936 function() { 3937 3938 // state = "resolved" (i.e., fulfilled) 3939 // state = "rejected" 3940 state = stateString; 3941 }, 3942 3943 // rejected_callbacks.disable 3944 // fulfilled_callbacks.disable 3945 tuples[ 3 - i ][ 2 ].disable, 3946 3947 // rejected_handlers.disable 3948 // fulfilled_handlers.disable 3949 tuples[ 3 - i ][ 3 ].disable, 3950 3951 // progress_callbacks.lock 3952 tuples[ 0 ][ 2 ].lock, 3953 3954 // progress_handlers.lock 3955 tuples[ 0 ][ 3 ].lock 3956 ); 3957 } 3958 3959 // progress_handlers.fire 3960 // fulfilled_handlers.fire 3961 // rejected_handlers.fire 3962 list.add( tuple[ 3 ].fire ); 3963 3964 // deferred.notify = function() { deferred.notifyWith(...) } 3965 // deferred.resolve = function() { deferred.resolveWith(...) } 3966 // deferred.reject = function() { deferred.rejectWith(...) } 3967 deferred[ tuple[ 0 ] ] = function() { 3968 deferred[ tuple[ 0 ] + "With" ]( this === deferred ? undefined : this, arguments ); 3969 return this; 3970 }; 3971 3972 // deferred.notifyWith = list.fireWith 3973 // deferred.resolveWith = list.fireWith 3974 // deferred.rejectWith = list.fireWith 3975 deferred[ tuple[ 0 ] + "With" ] = list.fireWith; 3976 } ); 3977 3978 // Make the deferred a promise 3979 promise.promise( deferred ); 3980 3981 // Call given func if any 3982 if ( func ) { 3983 func.call( deferred, deferred ); 3984 } 3985 3986 // All done! 3987 return deferred; 3988 }, 3989 3990 // Deferred helper 3991 when: function( singleValue ) { 3992 var 3993 3994 // count of uncompleted subordinates 3995 remaining = arguments.length, 3996 3997 // count of unprocessed arguments 3998 i = remaining, 3999 4000 // subordinate fulfillment data 4001 resolveContexts = Array( i ), 4002 resolveValues = slice.call( arguments ), 4003 4004 // the primary Deferred 4005 primary = jQuery.Deferred(), 4006 4007 // subordinate callback factory 4008 updateFunc = function( i ) { 4009 return function( value ) { 4010 resolveContexts[ i ] = this; 4011 resolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value; 4012 if ( !( --remaining ) ) { 4013 primary.resolveWith( resolveContexts, resolveValues ); 4014 } 4015 }; 4016 }; 4017 4018 // Single- and empty arguments are adopted like Promise.resolve 4019 if ( remaining <= 1 ) { 4020 adoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject, 4021 !remaining ); 4022 4023 // Use .then() to unwrap secondary thenables (cf. gh-3000) 4024 if ( primary.state() === "pending" || 4025 isFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) { 4026 4027 return primary.then(); 4028 } 4029 } 4030 4031 // Multiple arguments are aggregated like Promise.all array elements 4032 while ( i-- ) { 4033 adoptValue( resolveValues[ i ], updateFunc( i ), primary.reject ); 4034 } 4035 4036 return primary.promise(); 4037 } 4038} ); 4039 4040 4041// These usually indicate a programmer mistake during development, 4042// warn about them ASAP rather than swallowing them by default. 4043var rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/; 4044 4045jQuery.Deferred.exceptionHook = function( error, stack ) { 4046 4047 // Support: IE 8 - 9 only 4048 // Console exists when dev tools are open, which can happen at any time 4049 if ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) { 4050 window.console.warn( "jQuery.Deferred exception: " + error.message, error.stack, stack ); 4051 } 4052}; 4053 4054 4055 4056 4057jQuery.readyException = function( error ) { 4058 window.setTimeout( function() { 4059 throw error; 4060 } ); 4061}; 4062 4063 4064 4065 4066// The deferred used on DOM ready 4067var readyList = jQuery.Deferred(); 4068 4069jQuery.fn.ready = function( fn ) { 4070 4071 readyList 4072 .then( fn ) 4073 4074 // Wrap jQuery.readyException in a function so that the lookup 4075 // happens at the time of error handling instead of callback 4076 // registration. 4077 .catch( function( error ) { 4078 jQuery.readyException( error ); 4079 } ); 4080 4081 return this; 4082}; 4083 4084jQuery.extend( { 4085 4086 // Is the DOM ready to be used? Set to true once it occurs. 4087 isReady: false, 4088 4089 // A counter to track how many items to wait for before 4090 // the ready event fires. See #6781 4091 readyWait: 1, 4092 4093 // Handle when the DOM is ready 4094 ready: function( wait ) { 4095 4096 // Abort if there are pending holds or we're already ready 4097 if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) { 4098 return; 4099 } 4100 4101 // Remember that the DOM is ready 4102 jQuery.isReady = true; 4103 4104 // If a normal DOM Ready event fired, decrement, and wait if need be 4105 if ( wait !== true && --jQuery.readyWait > 0 ) { 4106 return; 4107 } 4108 4109 // If there are functions bound, to execute 4110 readyList.resolveWith( document, [ jQuery ] ); 4111 } 4112} ); 4113 4114jQuery.ready.then = readyList.then; 4115 4116// The ready event handler and self cleanup method 4117function completed() { 4118 document.removeEventListener( "DOMContentLoaded", completed ); 4119 window.removeEventListener( "load", completed ); 4120 jQuery.ready(); 4121} 4122 4123// Catch cases where $(document).ready() is called 4124// after the browser event has already occurred. 4125// Support: IE <=9 - 10 only 4126// Older IE sometimes signals "interactive" too soon 4127if ( document.readyState === "complete" || 4128 ( document.readyState !== "loading" && !document.documentElement.doScroll ) ) { 4129 4130 // Handle it asynchronously to allow scripts the opportunity to delay ready 4131 window.setTimeout( jQuery.ready ); 4132 4133} else { 4134 4135 // Use the handy event callback 4136 document.addEventListener( "DOMContentLoaded", completed ); 4137 4138 // A fallback to window.onload, that will always work 4139 window.addEventListener( "load", completed ); 4140} 4141 4142 4143 4144 4145// Multifunctional method to get and set values of a collection 4146// The value/s can optionally be executed if it's a function 4147var access = function( elems, fn, key, value, chainable, emptyGet, raw ) { 4148 var i = 0, 4149 len = elems.length, 4150 bulk = key == null; 4151 4152 // Sets many values 4153 if ( toType( key ) === "object" ) { 4154 chainable = true; 4155 for ( i in key ) { 4156 access( elems, fn, i, key[ i ], true, emptyGet, raw ); 4157 } 4158 4159 // Sets one value 4160 } else if ( value !== undefined ) { 4161 chainable = true; 4162 4163 if ( !isFunction( value ) ) { 4164 raw = true; 4165 } 4166 4167 if ( bulk ) { 4168 4169 // Bulk operations run against the entire set 4170 if ( raw ) { 4171 fn.call( elems, value ); 4172 fn = null; 4173 4174 // ...except when executing function values 4175 } else { 4176 bulk = fn; 4177 fn = function( elem, _key, value ) { 4178 return bulk.call( jQuery( elem ), value ); 4179 }; 4180 } 4181 } 4182 4183 if ( fn ) { 4184 for ( ; i < len; i++ ) { 4185 fn( 4186 elems[ i ], key, raw ? 4187 value : 4188 value.call( elems[ i ], i, fn( elems[ i ], key ) ) 4189 ); 4190 } 4191 } 4192 } 4193 4194 if ( chainable ) { 4195 return elems; 4196 } 4197 4198 // Gets 4199 if ( bulk ) { 4200 return fn.call( elems ); 4201 } 4202 4203 return len ? fn( elems[ 0 ], key ) : emptyGet; 4204}; 4205 4206 4207// Matches dashed string for camelizing 4208var rmsPrefix = /^-ms-/, 4209 rdashAlpha = /-([a-z])/g; 4210 4211// Used by camelCase as callback to replace() 4212function fcamelCase( _all, letter ) { 4213 return letter.toUpperCase(); 4214} 4215 4216// Convert dashed to camelCase; used by the css and data modules 4217// Support: IE <=9 - 11, Edge 12 - 15 4218// Microsoft forgot to hump their vendor prefix (#9572) 4219function camelCase( string ) { 4220 return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase ); 4221} 4222var acceptData = function( owner ) { 4223 4224 // Accepts only: 4225 // - Node 4226 // - Node.ELEMENT_NODE 4227 // - Node.DOCUMENT_NODE 4228 // - Object 4229 // - Any 4230 return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType ); 4231}; 4232 4233 4234 4235 4236function Data() { 4237 this.expando = jQuery.expando + Data.uid++; 4238} 4239 4240Data.uid = 1; 4241 4242Data.prototype = { 4243 4244 cache: function( owner ) { 4245 4246 // Check if the owner object already has a cache 4247 var value = owner[ this.expando ]; 4248 4249 // If not, create one 4250 if ( !value ) { 4251 value = {}; 4252 4253 // We can accept data for non-element nodes in modern browsers, 4254 // but we should not, see #8335. 4255 // Always return an empty object. 4256 if ( acceptData( owner ) ) { 4257 4258 // If it is a node unlikely to be stringify-ed or looped over 4259 // use plain assignment 4260 if ( owner.nodeType ) { 4261 owner[ this.expando ] = value; 4262 4263 // Otherwise secure it in a non-enumerable property 4264 // configurable must be true to allow the property to be 4265 // deleted when data is removed 4266 } else { 4267 Object.defineProperty( owner, this.expando, { 4268 value: value, 4269 configurable: true 4270 } ); 4271 } 4272 } 4273 } 4274 4275 return value; 4276 }, 4277 set: function( owner, data, value ) { 4278 var prop, 4279 cache = this.cache( owner ); 4280 4281 // Handle: [ owner, key, value ] args 4282 // Always use camelCase key (gh-2257) 4283 if ( typeof data === "string" ) { 4284 cache[ camelCase( data ) ] = value; 4285 4286 // Handle: [ owner, { properties } ] args 4287 } else { 4288 4289 // Copy the properties one-by-one to the cache object 4290 for ( prop in data ) { 4291 cache[ camelCase( prop ) ] = data[ prop ]; 4292 } 4293 } 4294 return cache; 4295 }, 4296 get: function( owner, key ) { 4297 return key === undefined ? 4298 this.cache( owner ) : 4299 4300 // Always use camelCase key (gh-2257) 4301 owner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ]; 4302 }, 4303 access: function( owner, key, value ) { 4304 4305 // In cases where either: 4306 // 4307 // 1. No key was specified 4308 // 2. A string key was specified, but no value provided 4309 // 4310 // Take the "read" path and allow the get method to determine 4311 // which value to return, respectively either: 4312 // 4313 // 1. The entire cache object 4314 // 2. The data stored at the key 4315 // 4316 if ( key === undefined || 4317 ( ( key && typeof key === "string" ) && value === undefined ) ) { 4318 4319 return this.get( owner, key ); 4320 } 4321 4322 // When the key is not a string, or both a key and value 4323 // are specified, set or extend (existing objects) with either: 4324 // 4325 // 1. An object of properties 4326 // 2. A key and value 4327 // 4328 this.set( owner, key, value ); 4329 4330 // Since the "set" path can have two possible entry points 4331 // return the expected data based on which path was taken[*] 4332 return value !== undefined ? value : key; 4333 }, 4334 remove: function( owner, key ) { 4335 var i, 4336 cache = owner[ this.expando ]; 4337 4338 if ( cache === undefined ) { 4339 return; 4340 } 4341 4342 if ( key !== undefined ) { 4343 4344 // Support array or space separated string of keys 4345 if ( Array.isArray( key ) ) { 4346 4347 // If key is an array of keys... 4348 // We always set camelCase keys, so remove that. 4349 key = key.map( camelCase ); 4350 } else { 4351 key = camelCase( key ); 4352 4353 // If a key with the spaces exists, use it. 4354 // Otherwise, create an array by matching non-whitespace 4355 key = key in cache ? 4356 [ key ] : 4357 ( key.match( rnothtmlwhite ) || [] ); 4358 } 4359 4360 i = key.length; 4361 4362 while ( i-- ) { 4363 delete cache[ key[ i ] ]; 4364 } 4365 } 4366 4367 // Remove the expando if there's no more data 4368 if ( key === undefined || jQuery.isEmptyObject( cache ) ) { 4369 4370 // Support: Chrome <=35 - 45 4371 // Webkit & Blink performance suffers when deleting properties 4372 // from DOM nodes, so set to undefined instead 4373 // https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted) 4374 if ( owner.nodeType ) { 4375 owner[ this.expando ] = undefined; 4376 } else { 4377 delete owner[ this.expando ]; 4378 } 4379 } 4380 }, 4381 hasData: function( owner ) { 4382 var cache = owner[ this.expando ]; 4383 return cache !== undefined && !jQuery.isEmptyObject( cache ); 4384 } 4385}; 4386var dataPriv = new Data(); 4387 4388var dataUser = new Data(); 4389 4390 4391 4392// Implementation Summary 4393// 4394// 1. Enforce API surface and semantic compatibility with 1.9.x branch 4395// 2. Improve the module's maintainability by reducing the storage 4396// paths to a single mechanism. 4397// 3. Use the same single mechanism to support "private" and "user" data. 4398// 4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData) 4399// 5. Avoid exposing implementation details on user objects (eg. expando properties) 4400// 6. Provide a clear path for implementation upgrade to WeakMap in 2014 4401 4402var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/, 4403 rmultiDash = /[A-Z]/g; 4404 4405function getData( data ) { 4406 if ( data === "true" ) { 4407 return true; 4408 } 4409 4410 if ( data === "false" ) { 4411 return false; 4412 } 4413 4414 if ( data === "null" ) { 4415 return null; 4416 } 4417 4418 // Only convert to a number if it doesn't change the string 4419 if ( data === +data + "" ) { 4420 return +data; 4421 } 4422 4423 if ( rbrace.test( data ) ) { 4424 return JSON.parse( data ); 4425 } 4426 4427 return data; 4428} 4429 4430function dataAttr( elem, key, data ) { 4431 var name; 4432 4433 // If nothing was found internally, try to fetch any 4434 // data from the HTML5 data-* attribute 4435 if ( data === undefined && elem.nodeType === 1 ) { 4436 name = "data-" + key.replace( rmultiDash, "-$&" ).toLowerCase(); 4437 data = elem.getAttribute( name ); 4438 4439 if ( typeof data === "string" ) { 4440 try { 4441 data = getData( data ); 4442 } catch ( e ) {} 4443 4444 // Make sure we set the data so it isn't changed later 4445 dataUser.set( elem, key, data ); 4446 } else { 4447 data = undefined; 4448 } 4449 } 4450 return data; 4451} 4452 4453jQuery.extend( { 4454 hasData: function( elem ) { 4455 return dataUser.hasData( elem ) || dataPriv.hasData( elem ); 4456 }, 4457 4458 data: function( elem, name, data ) { 4459 return dataUser.access( elem, name, data ); 4460 }, 4461 4462 removeData: function( elem, name ) { 4463 dataUser.remove( elem, name ); 4464 }, 4465 4466 // TODO: Now that all calls to _data and _removeData have been replaced 4467 // with direct calls to dataPriv methods, these can be deprecated. 4468 _data: function( elem, name, data ) { 4469 return dataPriv.access( elem, name, data ); 4470 }, 4471 4472 _removeData: function( elem, name ) { 4473 dataPriv.remove( elem, name ); 4474 } 4475} ); 4476 4477jQuery.fn.extend( { 4478 data: function( key, value ) { 4479 var i, name, data, 4480 elem = this[ 0 ], 4481 attrs = elem && elem.attributes; 4482 4483 // Gets all values 4484 if ( key === undefined ) { 4485 if ( this.length ) { 4486 data = dataUser.get( elem ); 4487 4488 if ( elem.nodeType === 1 && !dataPriv.get( elem, "hasDataAttrs" ) ) { 4489 i = attrs.length; 4490 while ( i-- ) { 4491 4492 // Support: IE 11 only 4493 // The attrs elements can be null (#14894) 4494 if ( attrs[ i ] ) { 4495 name = attrs[ i ].name; 4496 if ( name.indexOf( "data-" ) === 0 ) { 4497 name = camelCase( name.slice( 5 ) ); 4498 dataAttr( elem, name, data[ name ] ); 4499 } 4500 } 4501 } 4502 dataPriv.set( elem, "hasDataAttrs", true ); 4503 } 4504 } 4505 4506 return data; 4507 } 4508 4509 // Sets multiple values 4510 if ( typeof key === "object" ) { 4511 return this.each( function() { 4512 dataUser.set( this, key ); 4513 } ); 4514 } 4515 4516 return access( this, function( value ) { 4517 var data; 4518 4519 // The calling jQuery object (element matches) is not empty 4520 // (and therefore has an element appears at this[ 0 ]) and the 4521 // `value` parameter was not undefined. An empty jQuery object 4522 // will result in `undefined` for elem = this[ 0 ] which will 4523 // throw an exception if an attempt to read a data cache is made. 4524 if ( elem && value === undefined ) { 4525 4526 // Attempt to get data from the cache 4527 // The key will always be camelCased in Data 4528 data = dataUser.get( elem, key ); 4529 if ( data !== undefined ) { 4530 return data; 4531 } 4532 4533 // Attempt to "discover" the data in 4534 // HTML5 custom data-* attrs 4535 data = dataAttr( elem, key ); 4536 if ( data !== undefined ) { 4537 return data; 4538 } 4539 4540 // We tried really hard, but the data doesn't exist. 4541 return; 4542 } 4543 4544 // Set the data... 4545 this.each( function() { 4546 4547 // We always store the camelCased key 4548 dataUser.set( this, key, value ); 4549 } ); 4550 }, null, value, arguments.length > 1, null, true ); 4551 }, 4552 4553 removeData: function( key ) { 4554 return this.each( function() { 4555 dataUser.remove( this, key ); 4556 } ); 4557 } 4558} ); 4559 4560 4561jQuery.extend( { 4562 queue: function( elem, type, data ) { 4563 var queue; 4564 4565 if ( elem ) { 4566 type = ( type || "fx" ) + "queue"; 4567 queue = dataPriv.get( elem, type ); 4568 4569 // Speed up dequeue by getting out quickly if this is just a lookup 4570 if ( data ) { 4571 if ( !queue || Array.isArray( data ) ) { 4572 queue = dataPriv.access( elem, type, jQuery.makeArray( data ) ); 4573 } else { 4574 queue.push( data ); 4575 } 4576 } 4577 return queue || []; 4578 } 4579 }, 4580 4581 dequeue: function( elem, type ) { 4582 type = type || "fx"; 4583 4584 var queue = jQuery.queue( elem, type ), 4585 startLength = queue.length, 4586 fn = queue.shift(), 4587 hooks = jQuery._queueHooks( elem, type ), 4588 next = function() { 4589 jQuery.dequeue( elem, type ); 4590 }; 4591 4592 // If the fx queue is dequeued, always remove the progress sentinel 4593 if ( fn === "inprogress" ) { 4594 fn = queue.shift(); 4595 startLength--; 4596 } 4597 4598 if ( fn ) { 4599 4600 // Add a progress sentinel to prevent the fx queue from being 4601 // automatically dequeued 4602 if ( type === "fx" ) { 4603 queue.unshift( "inprogress" ); 4604 } 4605 4606 // Clear up the last queue stop function 4607 delete hooks.stop; 4608 fn.call( elem, next, hooks ); 4609 } 4610 4611 if ( !startLength && hooks ) { 4612 hooks.empty.fire(); 4613 } 4614 }, 4615 4616 // Not public - generate a queueHooks object, or return the current one 4617 _queueHooks: function( elem, type ) { 4618 var key = type + "queueHooks"; 4619 return dataPriv.get( elem, key ) || dataPriv.access( elem, key, { 4620 empty: jQuery.Callbacks( "once memory" ).add( function() { 4621 dataPriv.remove( elem, [ type + "queue", key ] ); 4622 } ) 4623 } ); 4624 } 4625} ); 4626 4627jQuery.fn.extend( { 4628 queue: function( type, data ) { 4629 var setter = 2; 4630 4631 if ( typeof type !== "string" ) { 4632 data = type; 4633 type = "fx"; 4634 setter--; 4635 } 4636 4637 if ( arguments.length < setter ) { 4638 return jQuery.queue( this[ 0 ], type ); 4639 } 4640 4641 return data === undefined ? 4642 this : 4643 this.each( function() { 4644 var queue = jQuery.queue( this, type, data ); 4645 4646 // Ensure a hooks for this queue 4647 jQuery._queueHooks( this, type ); 4648 4649 if ( type === "fx" && queue[ 0 ] !== "inprogress" ) { 4650 jQuery.dequeue( this, type ); 4651 } 4652 } ); 4653 }, 4654 dequeue: function( type ) { 4655 return this.each( function() { 4656 jQuery.dequeue( this, type ); 4657 } ); 4658 }, 4659 clearQueue: function( type ) { 4660 return this.queue( type || "fx", [] ); 4661 }, 4662 4663 // Get a promise resolved when queues of a certain type 4664 // are emptied (fx is the type by default) 4665 promise: function( type, obj ) { 4666 var tmp, 4667 count = 1, 4668 defer = jQuery.Deferred(), 4669 elements = this, 4670 i = this.length, 4671 resolve = function() { 4672 if ( !( --count ) ) { 4673 defer.resolveWith( elements, [ elements ] ); 4674 } 4675 }; 4676 4677 if ( typeof type !== "string" ) { 4678 obj = type; 4679 type = undefined; 4680 } 4681 type = type || "fx"; 4682 4683 while ( i-- ) { 4684 tmp = dataPriv.get( elements[ i ], type + "queueHooks" ); 4685 if ( tmp && tmp.empty ) { 4686 count++; 4687 tmp.empty.add( resolve ); 4688 } 4689 } 4690 resolve(); 4691 return defer.promise( obj ); 4692 } 4693} ); 4694var pnum = ( /[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/ ).source; 4695 4696var rcssNum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ); 4697 4698 4699var cssExpand = [ "Top", "Right", "Bottom", "Left" ]; 4700 4701var documentElement = document.documentElement; 4702 4703 4704 4705 var isAttached = function( elem ) { 4706 return jQuery.contains( elem.ownerDocument, elem ); 4707 }, 4708 composed = { composed: true }; 4709 4710 // Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only 4711 // Check attachment across shadow DOM boundaries when possible (gh-3504) 4712 // Support: iOS 10.0-10.2 only 4713 // Early iOS 10 versions support `attachShadow` but not `getRootNode`, 4714 // leading to errors. We need to check for `getRootNode`. 4715 if ( documentElement.getRootNode ) { 4716 isAttached = function( elem ) { 4717 return jQuery.contains( elem.ownerDocument, elem ) || 4718 elem.getRootNode( composed ) === elem.ownerDocument; 4719 }; 4720 } 4721var isHiddenWithinTree = function( elem, el ) { 4722 4723 // isHiddenWithinTree might be called from jQuery#filter function; 4724 // in that case, element will be second argument 4725 elem = el || elem; 4726 4727 // Inline style trumps all 4728 return elem.style.display === "none" || 4729 elem.style.display === "" && 4730 4731 // Otherwise, check computed style 4732 // Support: Firefox <=43 - 45 4733 // Disconnected elements can have computed display: none, so first confirm that elem is 4734 // in the document. 4735 isAttached( elem ) && 4736 4737 jQuery.css( elem, "display" ) === "none"; 4738 }; 4739 4740 4741 4742function adjustCSS( elem, prop, valueParts, tween ) { 4743 var adjusted, scale, 4744 maxIterations = 20, 4745 currentValue = tween ? 4746 function() { 4747 return tween.cur(); 4748 } : 4749 function() { 4750 return jQuery.css( elem, prop, "" ); 4751 }, 4752 initial = currentValue(), 4753 unit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ), 4754 4755 // Starting value computation is required for potential unit mismatches 4756 initialInUnit = elem.nodeType && 4757 ( jQuery.cssNumber[ prop ] || unit !== "px" && +initial ) && 4758 rcssNum.exec( jQuery.css( elem, prop ) ); 4759 4760 if ( initialInUnit && initialInUnit[ 3 ] !== unit ) { 4761 4762 // Support: Firefox <=54 4763 // Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144) 4764 initial = initial / 2; 4765 4766 // Trust units reported by jQuery.css 4767 unit = unit || initialInUnit[ 3 ]; 4768 4769 // Iteratively approximate from a nonzero starting point 4770 initialInUnit = +initial || 1; 4771 4772 while ( maxIterations-- ) { 4773 4774 // Evaluate and update our best guess (doubling guesses that zero out). 4775 // Finish if the scale equals or crosses 1 (making the old*new product non-positive). 4776 jQuery.style( elem, prop, initialInUnit + unit ); 4777 if ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) { 4778 maxIterations = 0; 4779 } 4780 initialInUnit = initialInUnit / scale; 4781 4782 } 4783 4784 initialInUnit = initialInUnit * 2; 4785 jQuery.style( elem, prop, initialInUnit + unit ); 4786 4787 // Make sure we update the tween properties later on 4788 valueParts = valueParts || []; 4789 } 4790 4791 if ( valueParts ) { 4792 initialInUnit = +initialInUnit || +initial || 0; 4793 4794 // Apply relative offset (+=/-=) if specified 4795 adjusted = valueParts[ 1 ] ? 4796 initialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] : 4797 +valueParts[ 2 ]; 4798 if ( tween ) { 4799 tween.unit = unit; 4800 tween.start = initialInUnit; 4801 tween.end = adjusted; 4802 } 4803 } 4804 return adjusted; 4805} 4806 4807 4808var defaultDisplayMap = {}; 4809 4810function getDefaultDisplay( elem ) { 4811 var temp, 4812 doc = elem.ownerDocument, 4813 nodeName = elem.nodeName, 4814 display = defaultDisplayMap[ nodeName ]; 4815 4816 if ( display ) { 4817 return display; 4818 } 4819 4820 temp = doc.body.appendChild( doc.createElement( nodeName ) ); 4821 display = jQuery.css( temp, "display" ); 4822 4823 temp.parentNode.removeChild( temp ); 4824 4825 if ( display === "none" ) { 4826 display = "block"; 4827 } 4828 defaultDisplayMap[ nodeName ] = display; 4829 4830 return display; 4831} 4832 4833function showHide( elements, show ) { 4834 var display, elem, 4835 values = [], 4836 index = 0, 4837 length = elements.length; 4838 4839 // Determine new display value for elements that need to change 4840 for ( ; index < length; index++ ) { 4841 elem = elements[ index ]; 4842 if ( !elem.style ) { 4843 continue; 4844 } 4845 4846 display = elem.style.display; 4847 if ( show ) { 4848 4849 // Since we force visibility upon cascade-hidden elements, an immediate (and slow) 4850 // check is required in this first loop unless we have a nonempty display value (either 4851 // inline or about-to-be-restored) 4852 if ( display === "none" ) { 4853 values[ index ] = dataPriv.get( elem, "display" ) || null; 4854 if ( !values[ index ] ) { 4855 elem.style.display = ""; 4856 } 4857 } 4858 if ( elem.style.display === "" && isHiddenWithinTree( elem ) ) { 4859 values[ index ] = getDefaultDisplay( elem ); 4860 } 4861 } else { 4862 if ( display !== "none" ) { 4863 values[ index ] = "none"; 4864 4865 // Remember what we're overwriting 4866 dataPriv.set( elem, "display", display ); 4867 } 4868 } 4869 } 4870 4871 // Set the display of the elements in a second loop to avoid constant reflow 4872 for ( index = 0; index < length; index++ ) { 4873 if ( values[ index ] != null ) { 4874 elements[ index ].style.display = values[ index ]; 4875 } 4876 } 4877 4878 return elements; 4879} 4880 4881jQuery.fn.extend( { 4882 show: function() { 4883 return showHide( this, true ); 4884 }, 4885 hide: function() { 4886 return showHide( this ); 4887 }, 4888 toggle: function( state ) { 4889 if ( typeof state === "boolean" ) { 4890 return state ? this.show() : this.hide(); 4891 } 4892 4893 return this.each( function() { 4894 if ( isHiddenWithinTree( this ) ) { 4895 jQuery( this ).show(); 4896 } else { 4897 jQuery( this ).hide(); 4898 } 4899 } ); 4900 } 4901} ); 4902var rcheckableType = ( /^(?:checkbox|radio)$/i ); 4903 4904var rtagName = ( /<([a-z][^\/\0>\x20\t\r\n\f]*)/i ); 4905 4906var rscriptType = ( /^$|^module$|\/(?:java|ecma)script/i ); 4907 4908 4909 4910( function() { 4911 var fragment = document.createDocumentFragment(), 4912 div = fragment.appendChild( document.createElement( "div" ) ), 4913 input = document.createElement( "input" ); 4914 4915 // Support: Android 4.0 - 4.3 only 4916 // Check state lost if the name is set (#11217) 4917 // Support: Windows Web Apps (WWA) 4918 // `name` and `type` must use .setAttribute for WWA (#14901) 4919 input.setAttribute( "type", "radio" ); 4920 input.setAttribute( "checked", "checked" ); 4921 input.setAttribute( "name", "t" ); 4922 4923 div.appendChild( input ); 4924 4925 // Support: Android <=4.1 only 4926 // Older WebKit doesn't clone checked state correctly in fragments 4927 support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked; 4928 4929 // Support: IE <=11 only 4930 // Make sure textarea (and checkbox) defaultValue is properly cloned 4931 div.innerHTML = "<textarea>x</textarea>"; 4932 support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue; 4933 4934 // Support: IE <=9 only 4935 // IE <=9 replaces <option> tags with their contents when inserted outside of 4936 // the select element. 4937 div.innerHTML = "<option></option>"; 4938 support.option = !!div.lastChild; 4939} )(); 4940 4941 4942// We have to close these tags to support XHTML (#13200) 4943var wrapMap = { 4944 4945 // XHTML parsers do not magically insert elements in the 4946 // same way that tag soup parsers do. So we cannot shorten 4947 // this by omitting <tbody> or other required elements. 4948 thead: [ 1, "<table>", "</table>" ], 4949 col: [ 2, "<table><colgroup>", "</colgroup></table>" ], 4950 tr: [ 2, "<table><tbody>", "</tbody></table>" ], 4951 td: [ 3, "<table><tbody><tr>", "</tr></tbody></table>" ], 4952 4953 _default: [ 0, "", "" ] 4954}; 4955 4956wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead; 4957wrapMap.th = wrapMap.td; 4958 4959// Support: IE <=9 only 4960if ( !support.option ) { 4961 wrapMap.optgroup = wrapMap.option = [ 1, "<select multiple='multiple'>", "</select>" ]; 4962} 4963 4964 4965function getAll( context, tag ) { 4966 4967 // Support: IE <=9 - 11 only 4968 // Use typeof to avoid zero-argument method invocation on host objects (#15151) 4969 var ret; 4970 4971 if ( typeof context.getElementsByTagName !== "undefined" ) { 4972 ret = context.getElementsByTagName( tag || "*" ); 4973 4974 } else if ( typeof context.querySelectorAll !== "undefined" ) { 4975 ret = context.querySelectorAll( tag || "*" ); 4976 4977 } else { 4978 ret = []; 4979 } 4980 4981 if ( tag === undefined || tag && nodeName( context, tag ) ) { 4982 return jQuery.merge( [ context ], ret ); 4983 } 4984 4985 return ret; 4986} 4987 4988 4989// Mark scripts as having already been evaluated 4990function setGlobalEval( elems, refElements ) { 4991 var i = 0, 4992 l = elems.length; 4993 4994 for ( ; i < l; i++ ) { 4995 dataPriv.set( 4996 elems[ i ], 4997 "globalEval", 4998 !refElements || dataPriv.get( refElements[ i ], "globalEval" ) 4999 ); 5000 } 5001} 5002 5003 5004var rhtml = /<|&#?\w+;/; 5005 5006function buildFragment( elems, context, scripts, selection, ignored ) { 5007 var elem, tmp, tag, wrap, attached, j, 5008 fragment = context.createDocumentFragment(), 5009 nodes = [], 5010 i = 0, 5011 l = elems.length; 5012 5013 for ( ; i < l; i++ ) { 5014 elem = elems[ i ]; 5015 5016 if ( elem || elem === 0 ) { 5017 5018 // Add nodes directly 5019 if ( toType( elem ) === "object" ) { 5020 5021 // Support: Android <=4.0 only, PhantomJS 1 only 5022 // push.apply(_, arraylike) throws on ancient WebKit 5023 jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem ); 5024 5025 // Convert non-html into a text node 5026 } else if ( !rhtml.test( elem ) ) { 5027 nodes.push( context.createTextNode( elem ) ); 5028 5029 // Convert html into DOM nodes 5030 } else { 5031 tmp = tmp || fragment.appendChild( context.createElement( "div" ) ); 5032 5033 // Deserialize a standard representation 5034 tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase(); 5035 wrap = wrapMap[ tag ] || wrapMap._default; 5036 tmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ]; 5037 5038 // Descend through wrappers to the right content 5039 j = wrap[ 0 ]; 5040 while ( j-- ) { 5041 tmp = tmp.lastChild; 5042 } 5043 5044 // Support: Android <=4.0 only, PhantomJS 1 only 5045 // push.apply(_, arraylike) throws on ancient WebKit 5046 jQuery.merge( nodes, tmp.childNodes ); 5047 5048 // Remember the top-level container 5049 tmp = fragment.firstChild; 5050 5051 // Ensure the created nodes are orphaned (#12392) 5052 tmp.textContent = ""; 5053 } 5054 } 5055 } 5056 5057 // Remove wrapper from fragment 5058 fragment.textContent = ""; 5059 5060 i = 0; 5061 while ( ( elem = nodes[ i++ ] ) ) { 5062 5063 // Skip elements already in the context collection (trac-4087) 5064 if ( selection && jQuery.inArray( elem, selection ) > -1 ) { 5065 if ( ignored ) { 5066 ignored.push( elem ); 5067 } 5068 continue; 5069 } 5070 5071 attached = isAttached( elem ); 5072 5073 // Append to fragment 5074 tmp = getAll( fragment.appendChild( elem ), "script" ); 5075 5076 // Preserve script evaluation history 5077 if ( attached ) { 5078 setGlobalEval( tmp ); 5079 } 5080 5081 // Capture executables 5082 if ( scripts ) { 5083 j = 0; 5084 while ( ( elem = tmp[ j++ ] ) ) { 5085 if ( rscriptType.test( elem.type || "" ) ) { 5086 scripts.push( elem ); 5087 } 5088 } 5089 } 5090 } 5091 5092 return fragment; 5093} 5094 5095 5096var rtypenamespace = /^([^.]*)(?:\.(.+)|)/; 5097 5098function returnTrue() { 5099 return true; 5100} 5101 5102function returnFalse() { 5103 return false; 5104} 5105 5106// Support: IE <=9 - 11+ 5107// focus() and blur() are asynchronous, except when they are no-op. 5108// So expect focus to be synchronous when the element is already active, 5109// and blur to be synchronous when the element is not already active. 5110// (focus and blur are always synchronous in other supported browsers, 5111// this just defines when we can count on it). 5112function expectSync( elem, type ) { 5113 return ( elem === safeActiveElement() ) === ( type === "focus" ); 5114} 5115 5116// Support: IE <=9 only 5117// Accessing document.activeElement can throw unexpectedly 5118// https://bugs.jquery.com/ticket/13393 5119function safeActiveElement() { 5120 try { 5121 return document.activeElement; 5122 } catch ( err ) { } 5123} 5124 5125function on( elem, types, selector, data, fn, one ) { 5126 var origFn, type; 5127 5128 // Types can be a map of types/handlers 5129 if ( typeof types === "object" ) { 5130 5131 // ( types-Object, selector, data ) 5132 if ( typeof selector !== "string" ) { 5133 5134 // ( types-Object, data ) 5135 data = data || selector; 5136 selector = undefined; 5137 } 5138 for ( type in types ) { 5139 on( elem, type, selector, data, types[ type ], one ); 5140 } 5141 return elem; 5142 } 5143 5144 if ( data == null && fn == null ) { 5145 5146 // ( types, fn ) 5147 fn = selector; 5148 data = selector = undefined; 5149 } else if ( fn == null ) { 5150 if ( typeof selector === "string" ) { 5151 5152 // ( types, selector, fn ) 5153 fn = data; 5154 data = undefined; 5155 } else { 5156 5157 // ( types, data, fn ) 5158 fn = data; 5159 data = selector; 5160 selector = undefined; 5161 } 5162 } 5163 if ( fn === false ) { 5164 fn = returnFalse; 5165 } else if ( !fn ) { 5166 return elem; 5167 } 5168 5169 if ( one === 1 ) { 5170 origFn = fn; 5171 fn = function( event ) { 5172 5173 // Can use an empty set, since event contains the info 5174 jQuery().off( event ); 5175 return origFn.apply( this, arguments ); 5176 }; 5177 5178 // Use same guid so caller can remove using origFn 5179 fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ ); 5180 } 5181 return elem.each( function() { 5182 jQuery.event.add( this, types, fn, data, selector ); 5183 } ); 5184} 5185 5186/* 5187 * Helper functions for managing events -- not part of the public interface. 5188 * Props to Dean Edwards' addEvent library for many of the ideas. 5189 */ 5190jQuery.event = { 5191 5192 global: {}, 5193 5194 add: function( elem, types, handler, data, selector ) { 5195 5196 var handleObjIn, eventHandle, tmp, 5197 events, t, handleObj, 5198 special, handlers, type, namespaces, origType, 5199 elemData = dataPriv.get( elem ); 5200 5201 // Only attach events to objects that accept data 5202 if ( !acceptData( elem ) ) { 5203 return; 5204 } 5205 5206 // Caller can pass in an object of custom data in lieu of the handler 5207 if ( handler.handler ) { 5208 handleObjIn = handler; 5209 handler = handleObjIn.handler; 5210 selector = handleObjIn.selector; 5211 } 5212 5213 // Ensure that invalid selectors throw exceptions at attach time 5214 // Evaluate against documentElement in case elem is a non-element node (e.g., document) 5215 if ( selector ) { 5216 jQuery.find.matchesSelector( documentElement, selector ); 5217 } 5218 5219 // Make sure that the handler has a unique ID, used to find/remove it later 5220 if ( !handler.guid ) { 5221 handler.guid = jQuery.guid++; 5222 } 5223 5224 // Init the element's event structure and main handler, if this is the first 5225 if ( !( events = elemData.events ) ) { 5226 events = elemData.events = Object.create( null ); 5227 } 5228 if ( !( eventHandle = elemData.handle ) ) { 5229 eventHandle = elemData.handle = function( e ) { 5230 5231 // Discard the second event of a jQuery.event.trigger() and 5232 // when an event is called after a page has unloaded 5233 return typeof jQuery !== "undefined" && jQuery.event.triggered !== e.type ? 5234 jQuery.event.dispatch.apply( elem, arguments ) : undefined; 5235 }; 5236 } 5237 5238 // Handle multiple events separated by a space 5239 types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; 5240 t = types.length; 5241 while ( t-- ) { 5242 tmp = rtypenamespace.exec( types[ t ] ) || []; 5243 type = origType = tmp[ 1 ]; 5244 namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); 5245 5246 // There *must* be a type, no attaching namespace-only handlers 5247 if ( !type ) { 5248 continue; 5249 } 5250 5251 // If event changes its type, use the special event handlers for the changed type 5252 special = jQuery.event.special[ type ] || {}; 5253 5254 // If selector defined, determine special event api type, otherwise given type 5255 type = ( selector ? special.delegateType : special.bindType ) || type; 5256 5257 // Update special based on newly reset type 5258 special = jQuery.event.special[ type ] || {}; 5259 5260 // handleObj is passed to all event handlers 5261 handleObj = jQuery.extend( { 5262 type: type, 5263 origType: origType, 5264 data: data, 5265 handler: handler, 5266 guid: handler.guid, 5267 selector: selector, 5268 needsContext: selector && jQuery.expr.match.needsContext.test( selector ), 5269 namespace: namespaces.join( "." ) 5270 }, handleObjIn ); 5271 5272 // Init the event handler queue if we're the first 5273 if ( !( handlers = events[ type ] ) ) { 5274 handlers = events[ type ] = []; 5275 handlers.delegateCount = 0; 5276 5277 // Only use addEventListener if the special events handler returns false 5278 if ( !special.setup || 5279 special.setup.call( elem, data, namespaces, eventHandle ) === false ) { 5280 5281 if ( elem.addEventListener ) { 5282 elem.addEventListener( type, eventHandle ); 5283 } 5284 } 5285 } 5286 5287 if ( special.add ) { 5288 special.add.call( elem, handleObj ); 5289 5290 if ( !handleObj.handler.guid ) { 5291 handleObj.handler.guid = handler.guid; 5292 } 5293 } 5294 5295 // Add to the element's handler list, delegates in front 5296 if ( selector ) { 5297 handlers.splice( handlers.delegateCount++, 0, handleObj ); 5298 } else { 5299 handlers.push( handleObj ); 5300 } 5301 5302 // Keep track of which events have ever been used, for event optimization 5303 jQuery.event.global[ type ] = true; 5304 } 5305 5306 }, 5307 5308 // Detach an event or set of events from an element 5309 remove: function( elem, types, handler, selector, mappedTypes ) { 5310 5311 var j, origCount, tmp, 5312 events, t, handleObj, 5313 special, handlers, type, namespaces, origType, 5314 elemData = dataPriv.hasData( elem ) && dataPriv.get( elem ); 5315 5316 if ( !elemData || !( events = elemData.events ) ) { 5317 return; 5318 } 5319 5320 // Once for each type.namespace in types; type may be omitted 5321 types = ( types || "" ).match( rnothtmlwhite ) || [ "" ]; 5322 t = types.length; 5323 while ( t-- ) { 5324 tmp = rtypenamespace.exec( types[ t ] ) || []; 5325 type = origType = tmp[ 1 ]; 5326 namespaces = ( tmp[ 2 ] || "" ).split( "." ).sort(); 5327 5328 // Unbind all events (on this namespace, if provided) for the element 5329 if ( !type ) { 5330 for ( type in events ) { 5331 jQuery.event.remove( elem, type + types[ t ], handler, selector, true ); 5332 } 5333 continue; 5334 } 5335 5336 special = jQuery.event.special[ type ] || {}; 5337 type = ( selector ? special.delegateType : special.bindType ) || type; 5338 handlers = events[ type ] || []; 5339 tmp = tmp[ 2 ] && 5340 new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ); 5341 5342 // Remove matching events 5343 origCount = j = handlers.length; 5344 while ( j-- ) { 5345 handleObj = handlers[ j ]; 5346 5347 if ( ( mappedTypes || origType === handleObj.origType ) && 5348 ( !handler || handler.guid === handleObj.guid ) && 5349 ( !tmp || tmp.test( handleObj.namespace ) ) && 5350 ( !selector || selector === handleObj.selector || 5351 selector === "**" && handleObj.selector ) ) { 5352 handlers.splice( j, 1 ); 5353 5354 if ( handleObj.selector ) { 5355 handlers.delegateCount--; 5356 } 5357 if ( special.remove ) { 5358 special.remove.call( elem, handleObj ); 5359 } 5360 } 5361 } 5362 5363 // Remove generic event handler if we removed something and no more handlers exist 5364 // (avoids potential for endless recursion during removal of special event handlers) 5365 if ( origCount && !handlers.length ) { 5366 if ( !special.teardown || 5367 special.teardown.call( elem, namespaces, elemData.handle ) === false ) { 5368 5369 jQuery.removeEvent( elem, type, elemData.handle ); 5370 } 5371 5372 delete events[ type ]; 5373 } 5374 } 5375 5376 // Remove data and the expando if it's no longer used 5377 if ( jQuery.isEmptyObject( events ) ) { 5378 dataPriv.remove( elem, "handle events" ); 5379 } 5380 }, 5381 5382 dispatch: function( nativeEvent ) { 5383 5384 var i, j, ret, matched, handleObj, handlerQueue, 5385 args = new Array( arguments.length ), 5386 5387 // Make a writable jQuery.Event from the native event object 5388 event = jQuery.event.fix( nativeEvent ), 5389 5390 handlers = ( 5391 dataPriv.get( this, "events" ) || Object.create( null ) 5392 )[ event.type ] || [], 5393 special = jQuery.event.special[ event.type ] || {}; 5394 5395 // Use the fix-ed jQuery.Event rather than the (read-only) native event 5396 args[ 0 ] = event; 5397 5398 for ( i = 1; i < arguments.length; i++ ) { 5399 args[ i ] = arguments[ i ]; 5400 } 5401 5402 event.delegateTarget = this; 5403 5404 // Call the preDispatch hook for the mapped type, and let it bail if desired 5405 if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) { 5406 return; 5407 } 5408 5409 // Determine handlers 5410 handlerQueue = jQuery.event.handlers.call( this, event, handlers ); 5411 5412 // Run delegates first; they may want to stop propagation beneath us 5413 i = 0; 5414 while ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) { 5415 event.currentTarget = matched.elem; 5416 5417 j = 0; 5418 while ( ( handleObj = matched.handlers[ j++ ] ) && 5419 !event.isImmediatePropagationStopped() ) { 5420 5421 // If the event is namespaced, then each handler is only invoked if it is 5422 // specially universal or its namespaces are a superset of the event's. 5423 if ( !event.rnamespace || handleObj.namespace === false || 5424 event.rnamespace.test( handleObj.namespace ) ) { 5425 5426 event.handleObj = handleObj; 5427 event.data = handleObj.data; 5428 5429 ret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle || 5430 handleObj.handler ).apply( matched.elem, args ); 5431 5432 if ( ret !== undefined ) { 5433 if ( ( event.result = ret ) === false ) { 5434 event.preventDefault(); 5435 event.stopPropagation(); 5436 } 5437 } 5438 } 5439 } 5440 } 5441 5442 // Call the postDispatch hook for the mapped type 5443 if ( special.postDispatch ) { 5444 special.postDispatch.call( this, event ); 5445 } 5446 5447 return event.result; 5448 }, 5449 5450 handlers: function( event, handlers ) { 5451 var i, handleObj, sel, matchedHandlers, matchedSelectors, 5452 handlerQueue = [], 5453 delegateCount = handlers.delegateCount, 5454 cur = event.target; 5455 5456 // Find delegate handlers 5457 if ( delegateCount && 5458 5459 // Support: IE <=9 5460 // Black-hole SVG <use> instance trees (trac-13180) 5461 cur.nodeType && 5462 5463 // Support: Firefox <=42 5464 // Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861) 5465 // https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click 5466 // Support: IE 11 only 5467 // ...but not arrow key "clicks" of radio inputs, which can have `button` -1 (gh-2343) 5468 !( event.type === "click" && event.button >= 1 ) ) { 5469 5470 for ( ; cur !== this; cur = cur.parentNode || this ) { 5471 5472 // Don't check non-elements (#13208) 5473 // Don't process clicks on disabled elements (#6911, #8165, #11382, #11764) 5474 if ( cur.nodeType === 1 && !( event.type === "click" && cur.disabled === true ) ) { 5475 matchedHandlers = []; 5476 matchedSelectors = {}; 5477 for ( i = 0; i < delegateCount; i++ ) { 5478 handleObj = handlers[ i ]; 5479 5480 // Don't conflict with Object.prototype properties (#13203) 5481 sel = handleObj.selector + " "; 5482 5483 if ( matchedSelectors[ sel ] === undefined ) { 5484 matchedSelectors[ sel ] = handleObj.needsContext ? 5485 jQuery( sel, this ).index( cur ) > -1 : 5486 jQuery.find( sel, this, null, [ cur ] ).length; 5487 } 5488 if ( matchedSelectors[ sel ] ) { 5489 matchedHandlers.push( handleObj ); 5490 } 5491 } 5492 if ( matchedHandlers.length ) { 5493 handlerQueue.push( { elem: cur, handlers: matchedHandlers } ); 5494 } 5495 } 5496 } 5497 } 5498 5499 // Add the remaining (directly-bound) handlers 5500 cur = this; 5501 if ( delegateCount < handlers.length ) { 5502 handlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } ); 5503 } 5504 5505 return handlerQueue; 5506 }, 5507 5508 addProp: function( name, hook ) { 5509 Object.defineProperty( jQuery.Event.prototype, name, { 5510 enumerable: true, 5511 configurable: true, 5512 5513 get: isFunction( hook ) ? 5514 function() { 5515 if ( this.originalEvent ) { 5516 return hook( this.originalEvent ); 5517 } 5518 } : 5519 function() { 5520 if ( this.originalEvent ) { 5521 return this.originalEvent[ name ]; 5522 } 5523 }, 5524 5525 set: function( value ) { 5526 Object.defineProperty( this, name, { 5527 enumerable: true, 5528 configurable: true, 5529 writable: true, 5530 value: value 5531 } ); 5532 } 5533 } ); 5534 }, 5535 5536 fix: function( originalEvent ) { 5537 return originalEvent[ jQuery.expando ] ? 5538 originalEvent : 5539 new jQuery.Event( originalEvent ); 5540 }, 5541 5542 special: { 5543 load: { 5544 5545 // Prevent triggered image.load events from bubbling to window.load 5546 noBubble: true 5547 }, 5548 click: { 5549 5550 // Utilize native event to ensure correct state for checkable inputs 5551 setup: function( data ) { 5552 5553 // For mutual compressibility with _default, replace `this` access with a local var. 5554 // `|| data` is dead code meant only to preserve the variable through minification. 5555 var el = this || data; 5556 5557 // Claim the first handler 5558 if ( rcheckableType.test( el.type ) && 5559 el.click && nodeName( el, "input" ) ) { 5560 5561 // dataPriv.set( el, "click", ... ) 5562 leverageNative( el, "click", returnTrue ); 5563 } 5564 5565 // Return false to allow normal processing in the caller 5566 return false; 5567 }, 5568 trigger: function( data ) { 5569 5570 // For mutual compressibility with _default, replace `this` access with a local var. 5571 // `|| data` is dead code meant only to preserve the variable through minification. 5572 var el = this || data; 5573 5574 // Force setup before triggering a click 5575 if ( rcheckableType.test( el.type ) && 5576 el.click && nodeName( el, "input" ) ) { 5577 5578 leverageNative( el, "click" ); 5579 } 5580 5581 // Return non-false to allow normal event-path propagation 5582 return true; 5583 }, 5584 5585 // For cross-browser consistency, suppress native .click() on links 5586 // Also prevent it if we're currently inside a leveraged native-event stack 5587 _default: function( event ) { 5588 var target = event.target; 5589 return rcheckableType.test( target.type ) && 5590 target.click && nodeName( target, "input" ) && 5591 dataPriv.get( target, "click" ) || 5592 nodeName( target, "a" ); 5593 } 5594 }, 5595 5596 beforeunload: { 5597 postDispatch: function( event ) { 5598 5599 // Support: Firefox 20+ 5600 // Firefox doesn't alert if the returnValue field is not set. 5601 if ( event.result !== undefined && event.originalEvent ) { 5602 event.originalEvent.returnValue = event.result; 5603 } 5604 } 5605 } 5606 } 5607}; 5608 5609// Ensure the presence of an event listener that handles manually-triggered 5610// synthetic events by interrupting progress until reinvoked in response to 5611// *native* events that it fires directly, ensuring that state changes have 5612// already occurred before other listeners are invoked. 5613function leverageNative( el, type, expectSync ) { 5614 5615 // Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add 5616 if ( !expectSync ) { 5617 if ( dataPriv.get( el, type ) === undefined ) { 5618 jQuery.event.add( el, type, returnTrue ); 5619 } 5620 return; 5621 } 5622 5623 // Register the controller as a special universal handler for all event namespaces 5624 dataPriv.set( el, type, false ); 5625 jQuery.event.add( el, type, { 5626 namespace: false, 5627 handler: function( event ) { 5628 var notAsync, result, 5629 saved = dataPriv.get( this, type ); 5630 5631 if ( ( event.isTrigger & 1 ) && this[ type ] ) { 5632 5633 // Interrupt processing of the outer synthetic .trigger()ed event 5634 // Saved data should be false in such cases, but might be a leftover capture object 5635 // from an async native handler (gh-4350) 5636 if ( !saved.length ) { 5637 5638 // Store arguments for use when handling the inner native event 5639 // There will always be at least one argument (an event object), so this array 5640 // will not be confused with a leftover capture object. 5641 saved = slice.call( arguments ); 5642 dataPriv.set( this, type, saved ); 5643 5644 // Trigger the native event and capture its result 5645 // Support: IE <=9 - 11+ 5646 // focus() and blur() are asynchronous 5647 notAsync = expectSync( this, type ); 5648 this[ type ](); 5649 result = dataPriv.get( this, type ); 5650 if ( saved !== result || notAsync ) { 5651 dataPriv.set( this, type, false ); 5652 } else { 5653 result = {}; 5654 } 5655 if ( saved !== result ) { 5656 5657 // Cancel the outer synthetic event 5658 event.stopImmediatePropagation(); 5659 event.preventDefault(); 5660 5661 // Support: Chrome 86+ 5662 // In Chrome, if an element having a focusout handler is blurred by 5663 // clicking outside of it, it invokes the handler synchronously. If 5664 // that handler calls `.remove()` on the element, the data is cleared, 5665 // leaving `result` undefined. We need to guard against this. 5666 return result && result.value; 5667 } 5668 5669 // If this is an inner synthetic event for an event with a bubbling surrogate 5670 // (focus or blur), assume that the surrogate already propagated from triggering the 5671 // native event and prevent that from happening again here. 5672 // This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the 5673 // bubbling surrogate propagates *after* the non-bubbling base), but that seems 5674 // less bad than duplication. 5675 } else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) { 5676 event.stopPropagation(); 5677 } 5678 5679 // If this is a native event triggered above, everything is now in order 5680 // Fire an inner synthetic event with the original arguments 5681 } else if ( saved.length ) { 5682 5683 // ...and capture the result 5684 dataPriv.set( this, type, { 5685 value: jQuery.event.trigger( 5686 5687 // Support: IE <=9 - 11+ 5688 // Extend with the prototype to reset the above stopImmediatePropagation() 5689 jQuery.extend( saved[ 0 ], jQuery.Event.prototype ), 5690 saved.slice( 1 ), 5691 this 5692 ) 5693 } ); 5694 5695 // Abort handling of the native event 5696 event.stopImmediatePropagation(); 5697 } 5698 } 5699 } ); 5700} 5701 5702jQuery.removeEvent = function( elem, type, handle ) { 5703 5704 // This "if" is needed for plain objects 5705 if ( elem.removeEventListener ) { 5706 elem.removeEventListener( type, handle ); 5707 } 5708}; 5709 5710jQuery.Event = function( src, props ) { 5711 5712 // Allow instantiation without the 'new' keyword 5713 if ( !( this instanceof jQuery.Event ) ) { 5714 return new jQuery.Event( src, props ); 5715 } 5716 5717 // Event object 5718 if ( src && src.type ) { 5719 this.originalEvent = src; 5720 this.type = src.type; 5721 5722 // Events bubbling up the document may have been marked as prevented 5723 // by a handler lower down the tree; reflect the correct value. 5724 this.isDefaultPrevented = src.defaultPrevented || 5725 src.defaultPrevented === undefined && 5726 5727 // Support: Android <=2.3 only 5728 src.returnValue === false ? 5729 returnTrue : 5730 returnFalse; 5731 5732 // Create target properties 5733 // Support: Safari <=6 - 7 only 5734 // Target should not be a text node (#504, #13143) 5735 this.target = ( src.target && src.target.nodeType === 3 ) ? 5736 src.target.parentNode : 5737 src.target; 5738 5739 this.currentTarget = src.currentTarget; 5740 this.relatedTarget = src.relatedTarget; 5741 5742 // Event type 5743 } else { 5744 this.type = src; 5745 } 5746 5747 // Put explicitly provided properties onto the event object 5748 if ( props ) { 5749 jQuery.extend( this, props ); 5750 } 5751 5752 // Create a timestamp if incoming event doesn't have one 5753 this.timeStamp = src && src.timeStamp || Date.now(); 5754 5755 // Mark it as fixed 5756 this[ jQuery.expando ] = true; 5757}; 5758 5759// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding 5760// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html 5761jQuery.Event.prototype = { 5762 constructor: jQuery.Event, 5763 isDefaultPrevented: returnFalse, 5764 isPropagationStopped: returnFalse, 5765 isImmediatePropagationStopped: returnFalse, 5766 isSimulated: false, 5767 5768 preventDefault: function() { 5769 var e = this.originalEvent; 5770 5771 this.isDefaultPrevented = returnTrue; 5772 5773 if ( e && !this.isSimulated ) { 5774 e.preventDefault(); 5775 } 5776 }, 5777 stopPropagation: function() { 5778 var e = this.originalEvent; 5779 5780 this.isPropagationStopped = returnTrue; 5781 5782 if ( e && !this.isSimulated ) { 5783 e.stopPropagation(); 5784 } 5785 }, 5786 stopImmediatePropagation: function() { 5787 var e = this.originalEvent; 5788 5789 this.isImmediatePropagationStopped = returnTrue; 5790 5791 if ( e && !this.isSimulated ) { 5792 e.stopImmediatePropagation(); 5793 } 5794 5795 this.stopPropagation(); 5796 } 5797}; 5798 5799// Includes all common event props including KeyEvent and MouseEvent specific props 5800jQuery.each( { 5801 altKey: true, 5802 bubbles: true, 5803 cancelable: true, 5804 changedTouches: true, 5805 ctrlKey: true, 5806 detail: true, 5807 eventPhase: true, 5808 metaKey: true, 5809 pageX: true, 5810 pageY: true, 5811 shiftKey: true, 5812 view: true, 5813 "char": true, 5814 code: true, 5815 charCode: true, 5816 key: true, 5817 keyCode: true, 5818 button: true, 5819 buttons: true, 5820 clientX: true, 5821 clientY: true, 5822 offsetX: true, 5823 offsetY: true, 5824 pointerId: true, 5825 pointerType: true, 5826 screenX: true, 5827 screenY: true, 5828 targetTouches: true, 5829 toElement: true, 5830 touches: true, 5831 which: true 5832}, jQuery.event.addProp ); 5833 5834jQuery.each( { focus: "focusin", blur: "focusout" }, function( type, delegateType ) { 5835 jQuery.event.special[ type ] = { 5836 5837 // Utilize native event if possible so blur/focus sequence is correct 5838 setup: function() { 5839 5840 // Claim the first handler 5841 // dataPriv.set( this, "focus", ... ) 5842 // dataPriv.set( this, "blur", ... ) 5843 leverageNative( this, type, expectSync ); 5844 5845 // Return false to allow normal processing in the caller 5846 return false; 5847 }, 5848 trigger: function() { 5849 5850 // Force setup before trigger 5851 leverageNative( this, type ); 5852 5853 // Return non-false to allow normal event-path propagation 5854 return true; 5855 }, 5856 5857 // Suppress native focus or blur as it's already being fired 5858 // in leverageNative. 5859 _default: function() { 5860 return true; 5861 }, 5862 5863 delegateType: delegateType 5864 }; 5865} ); 5866 5867// Create mouseenter/leave events using mouseover/out and event-time checks 5868// so that event delegation works in jQuery. 5869// Do the same for pointerenter/pointerleave and pointerover/pointerout 5870// 5871// Support: Safari 7 only 5872// Safari sends mouseenter too often; see: 5873// https://bugs.chromium.org/p/chromium/issues/detail?id=470258 5874// for the description of the bug (it existed in older Chrome versions as well). 5875jQuery.each( { 5876 mouseenter: "mouseover", 5877 mouseleave: "mouseout", 5878 pointerenter: "pointerover", 5879 pointerleave: "pointerout" 5880}, function( orig, fix ) { 5881 jQuery.event.special[ orig ] = { 5882 delegateType: fix, 5883 bindType: fix, 5884 5885 handle: function( event ) { 5886 var ret, 5887 target = this, 5888 related = event.relatedTarget, 5889 handleObj = event.handleObj; 5890 5891 // For mouseenter/leave call the handler if related is outside the target. 5892 // NB: No relatedTarget if the mouse left/entered the browser window 5893 if ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) { 5894 event.type = handleObj.origType; 5895 ret = handleObj.handler.apply( this, arguments ); 5896 event.type = fix; 5897 } 5898 return ret; 5899 } 5900 }; 5901} ); 5902 5903jQuery.fn.extend( { 5904 5905 on: function( types, selector, data, fn ) { 5906 return on( this, types, selector, data, fn ); 5907 }, 5908 one: function( types, selector, data, fn ) { 5909 return on( this, types, selector, data, fn, 1 ); 5910 }, 5911 off: function( types, selector, fn ) { 5912 var handleObj, type; 5913 if ( types && types.preventDefault && types.handleObj ) { 5914 5915 // ( event ) dispatched jQuery.Event 5916 handleObj = types.handleObj; 5917 jQuery( types.delegateTarget ).off( 5918 handleObj.namespace ? 5919 handleObj.origType + "." + handleObj.namespace : 5920 handleObj.origType, 5921 handleObj.selector, 5922 handleObj.handler 5923 ); 5924 return this; 5925 } 5926 if ( typeof types === "object" ) { 5927 5928 // ( types-object [, selector] ) 5929 for ( type in types ) { 5930 this.off( type, selector, types[ type ] ); 5931 } 5932 return this; 5933 } 5934 if ( selector === false || typeof selector === "function" ) { 5935 5936 // ( types [, fn] ) 5937 fn = selector; 5938 selector = undefined; 5939 } 5940 if ( fn === false ) { 5941 fn = returnFalse; 5942 } 5943 return this.each( function() { 5944 jQuery.event.remove( this, types, fn, selector ); 5945 } ); 5946 } 5947} ); 5948 5949 5950var 5951 5952 // Support: IE <=10 - 11, Edge 12 - 13 only 5953 // In IE/Edge using regex groups here causes severe slowdowns. 5954 // See https://connect.microsoft.com/IE/feedback/details/1736512/ 5955 rnoInnerhtml = /<script|<style|<link/i, 5956 5957 // checked="checked" or checked 5958 rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, 5959 rcleanScript = /^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g; 5960 5961// Prefer a tbody over its parent table for containing new rows 5962function manipulationTarget( elem, content ) { 5963 if ( nodeName( elem, "table" ) && 5964 nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ) { 5965 5966 return jQuery( elem ).children( "tbody" )[ 0 ] || elem; 5967 } 5968 5969 return elem; 5970} 5971 5972// Replace/restore the type attribute of script elements for safe DOM manipulation 5973function disableScript( elem ) { 5974 elem.type = ( elem.getAttribute( "type" ) !== null ) + "/" + elem.type; 5975 return elem; 5976} 5977function restoreScript( elem ) { 5978 if ( ( elem.type || "" ).slice( 0, 5 ) === "true/" ) { 5979 elem.type = elem.type.slice( 5 ); 5980 } else { 5981 elem.removeAttribute( "type" ); 5982 } 5983 5984 return elem; 5985} 5986 5987function cloneCopyEvent( src, dest ) { 5988 var i, l, type, pdataOld, udataOld, udataCur, events; 5989 5990 if ( dest.nodeType !== 1 ) { 5991 return; 5992 } 5993 5994 // 1. Copy private data: events, handlers, etc. 5995 if ( dataPriv.hasData( src ) ) { 5996 pdataOld = dataPriv.get( src ); 5997 events = pdataOld.events; 5998 5999 if ( events ) { 6000 dataPriv.remove( dest, "handle events" ); 6001 6002 for ( type in events ) { 6003 for ( i = 0, l = events[ type ].length; i < l; i++ ) { 6004 jQuery.event.add( dest, type, events[ type ][ i ] ); 6005 } 6006 } 6007 } 6008 } 6009 6010 // 2. Copy user data 6011 if ( dataUser.hasData( src ) ) { 6012 udataOld = dataUser.access( src ); 6013 udataCur = jQuery.extend( {}, udataOld ); 6014 6015 dataUser.set( dest, udataCur ); 6016 } 6017} 6018 6019// Fix IE bugs, see support tests 6020function fixInput( src, dest ) { 6021 var nodeName = dest.nodeName.toLowerCase(); 6022 6023 // Fails to persist the checked state of a cloned checkbox or radio button. 6024 if ( nodeName === "input" && rcheckableType.test( src.type ) ) { 6025 dest.checked = src.checked; 6026 6027 // Fails to return the selected option to the default selected state when cloning options 6028 } else if ( nodeName === "input" || nodeName === "textarea" ) { 6029 dest.defaultValue = src.defaultValue; 6030 } 6031} 6032 6033function domManip( collection, args, callback, ignored ) { 6034 6035 // Flatten any nested arrays 6036 args = flat( args ); 6037 6038 var fragment, first, scripts, hasScripts, node, doc, 6039 i = 0, 6040 l = collection.length, 6041 iNoClone = l - 1, 6042 value = args[ 0 ], 6043 valueIsFunction = isFunction( value ); 6044 6045 // We can't cloneNode fragments that contain checked, in WebKit 6046 if ( valueIsFunction || 6047 ( l > 1 && typeof value === "string" && 6048 !support.checkClone && rchecked.test( value ) ) ) { 6049 return collection.each( function( index ) { 6050 var self = collection.eq( index ); 6051 if ( valueIsFunction ) { 6052 args[ 0 ] = value.call( this, index, self.html() ); 6053 } 6054 domManip( self, args, callback, ignored ); 6055 } ); 6056 } 6057 6058 if ( l ) { 6059 fragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored ); 6060 first = fragment.firstChild; 6061 6062 if ( fragment.childNodes.length === 1 ) { 6063 fragment = first; 6064 } 6065 6066 // Require either new content or an interest in ignored elements to invoke the callback 6067 if ( first || ignored ) { 6068 scripts = jQuery.map( getAll( fragment, "script" ), disableScript ); 6069 hasScripts = scripts.length; 6070 6071 // Use the original fragment for the last item 6072 // instead of the first because it can end up 6073 // being emptied incorrectly in certain situations (#8070). 6074 for ( ; i < l; i++ ) { 6075 node = fragment; 6076 6077 if ( i !== iNoClone ) { 6078 node = jQuery.clone( node, true, true ); 6079 6080 // Keep references to cloned scripts for later restoration 6081 if ( hasScripts ) { 6082 6083 // Support: Android <=4.0 only, PhantomJS 1 only 6084 // push.apply(_, arraylike) throws on ancient WebKit 6085 jQuery.merge( scripts, getAll( node, "script" ) ); 6086 } 6087 } 6088 6089 callback.call( collection[ i ], node, i ); 6090 } 6091 6092 if ( hasScripts ) { 6093 doc = scripts[ scripts.length - 1 ].ownerDocument; 6094 6095 // Reenable scripts 6096 jQuery.map( scripts, restoreScript ); 6097 6098 // Evaluate executable scripts on first document insertion 6099 for ( i = 0; i < hasScripts; i++ ) { 6100 node = scripts[ i ]; 6101 if ( rscriptType.test( node.type || "" ) && 6102 !dataPriv.access( node, "globalEval" ) && 6103 jQuery.contains( doc, node ) ) { 6104 6105 if ( node.src && ( node.type || "" ).toLowerCase() !== "module" ) { 6106 6107 // Optional AJAX dependency, but won't run scripts if not present 6108 if ( jQuery._evalUrl && !node.noModule ) { 6109 jQuery._evalUrl( node.src, { 6110 nonce: node.nonce || node.getAttribute( "nonce" ) 6111 }, doc ); 6112 } 6113 } else { 6114 DOMEval( node.textContent.replace( rcleanScript, "" ), node, doc ); 6115 } 6116 } 6117 } 6118 } 6119 } 6120 } 6121 6122 return collection; 6123} 6124 6125function remove( elem, selector, keepData ) { 6126 var node, 6127 nodes = selector ? jQuery.filter( selector, elem ) : elem, 6128 i = 0; 6129 6130 for ( ; ( node = nodes[ i ] ) != null; i++ ) { 6131 if ( !keepData && node.nodeType === 1 ) { 6132 jQuery.cleanData( getAll( node ) ); 6133 } 6134 6135 if ( node.parentNode ) { 6136 if ( keepData && isAttached( node ) ) { 6137 setGlobalEval( getAll( node, "script" ) ); 6138 } 6139 node.parentNode.removeChild( node ); 6140 } 6141 } 6142 6143 return elem; 6144} 6145 6146jQuery.extend( { 6147 htmlPrefilter: function( html ) { 6148 return html; 6149 }, 6150 6151 clone: function( elem, dataAndEvents, deepDataAndEvents ) { 6152 var i, l, srcElements, destElements, 6153 clone = elem.cloneNode( true ), 6154 inPage = isAttached( elem ); 6155 6156 // Fix IE cloning issues 6157 if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) && 6158 !jQuery.isXMLDoc( elem ) ) { 6159 6160 // We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2 6161 destElements = getAll( clone ); 6162 srcElements = getAll( elem ); 6163 6164 for ( i = 0, l = srcElements.length; i < l; i++ ) { 6165 fixInput( srcElements[ i ], destElements[ i ] ); 6166 } 6167 } 6168 6169 // Copy the events from the original to the clone 6170 if ( dataAndEvents ) { 6171 if ( deepDataAndEvents ) { 6172 srcElements = srcElements || getAll( elem ); 6173 destElements = destElements || getAll( clone ); 6174 6175 for ( i = 0, l = srcElements.length; i < l; i++ ) { 6176 cloneCopyEvent( srcElements[ i ], destElements[ i ] ); 6177 } 6178 } else { 6179 cloneCopyEvent( elem, clone ); 6180 } 6181 } 6182 6183 // Preserve script evaluation history 6184 destElements = getAll( clone, "script" ); 6185 if ( destElements.length > 0 ) { 6186 setGlobalEval( destElements, !inPage && getAll( elem, "script" ) ); 6187 } 6188 6189 // Return the cloned set 6190 return clone; 6191 }, 6192 6193 cleanData: function( elems ) { 6194 var data, elem, type, 6195 special = jQuery.event.special, 6196 i = 0; 6197 6198 for ( ; ( elem = elems[ i ] ) !== undefined; i++ ) { 6199 if ( acceptData( elem ) ) { 6200 if ( ( data = elem[ dataPriv.expando ] ) ) { 6201 if ( data.events ) { 6202 for ( type in data.events ) { 6203 if ( special[ type ] ) { 6204 jQuery.event.remove( elem, type ); 6205 6206 // This is a shortcut to avoid jQuery.event.remove's overhead 6207 } else { 6208 jQuery.removeEvent( elem, type, data.handle ); 6209 } 6210 } 6211 } 6212 6213 // Support: Chrome <=35 - 45+ 6214 // Assign undefined instead of using delete, see Data#remove 6215 elem[ dataPriv.expando ] = undefined; 6216 } 6217 if ( elem[ dataUser.expando ] ) { 6218 6219 // Support: Chrome <=35 - 45+ 6220 // Assign undefined instead of using delete, see Data#remove 6221 elem[ dataUser.expando ] = undefined; 6222 } 6223 } 6224 } 6225 } 6226} ); 6227 6228jQuery.fn.extend( { 6229 detach: function( selector ) { 6230 return remove( this, selector, true ); 6231 }, 6232 6233 remove: function( selector ) { 6234 return remove( this, selector ); 6235 }, 6236 6237 text: function( value ) { 6238 return access( this, function( value ) { 6239 return value === undefined ? 6240 jQuery.text( this ) : 6241 this.empty().each( function() { 6242 if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { 6243 this.textContent = value; 6244 } 6245 } ); 6246 }, null, value, arguments.length ); 6247 }, 6248 6249 append: function() { 6250 return domManip( this, arguments, function( elem ) { 6251 if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { 6252 var target = manipulationTarget( this, elem ); 6253 target.appendChild( elem ); 6254 } 6255 } ); 6256 }, 6257 6258 prepend: function() { 6259 return domManip( this, arguments, function( elem ) { 6260 if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) { 6261 var target = manipulationTarget( this, elem ); 6262 target.insertBefore( elem, target.firstChild ); 6263 } 6264 } ); 6265 }, 6266 6267 before: function() { 6268 return domManip( this, arguments, function( elem ) { 6269 if ( this.parentNode ) { 6270 this.parentNode.insertBefore( elem, this ); 6271 } 6272 } ); 6273 }, 6274 6275 after: function() { 6276 return domManip( this, arguments, function( elem ) { 6277 if ( this.parentNode ) { 6278 this.parentNode.insertBefore( elem, this.nextSibling ); 6279 } 6280 } ); 6281 }, 6282 6283 empty: function() { 6284 var elem, 6285 i = 0; 6286 6287 for ( ; ( elem = this[ i ] ) != null; i++ ) { 6288 if ( elem.nodeType === 1 ) { 6289 6290 // Prevent memory leaks 6291 jQuery.cleanData( getAll( elem, false ) ); 6292 6293 // Remove any remaining nodes 6294 elem.textContent = ""; 6295 } 6296 } 6297 6298 return this; 6299 }, 6300 6301 clone: function( dataAndEvents, deepDataAndEvents ) { 6302 dataAndEvents = dataAndEvents == null ? false : dataAndEvents; 6303 deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents; 6304 6305 return this.map( function() { 6306 return jQuery.clone( this, dataAndEvents, deepDataAndEvents ); 6307 } ); 6308 }, 6309 6310 html: function( value ) { 6311 return access( this, function( value ) { 6312 var elem = this[ 0 ] || {}, 6313 i = 0, 6314 l = this.length; 6315 6316 if ( value === undefined && elem.nodeType === 1 ) { 6317 return elem.innerHTML; 6318 } 6319 6320 // See if we can take a shortcut and just use innerHTML 6321 if ( typeof value === "string" && !rnoInnerhtml.test( value ) && 6322 !wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) { 6323 6324 value = jQuery.htmlPrefilter( value ); 6325 6326 try { 6327 for ( ; i < l; i++ ) { 6328 elem = this[ i ] || {}; 6329 6330 // Remove element nodes and prevent memory leaks 6331 if ( elem.nodeType === 1 ) { 6332 jQuery.cleanData( getAll( elem, false ) ); 6333 elem.innerHTML = value; 6334 } 6335 } 6336 6337 elem = 0; 6338 6339 // If using innerHTML throws an exception, use the fallback method 6340 } catch ( e ) {} 6341 } 6342 6343 if ( elem ) { 6344 this.empty().append( value ); 6345 } 6346 }, null, value, arguments.length ); 6347 }, 6348 6349 replaceWith: function() { 6350 var ignored = []; 6351 6352 // Make the changes, replacing each non-ignored context element with the new content 6353 return domManip( this, arguments, function( elem ) { 6354 var parent = this.parentNode; 6355 6356 if ( jQuery.inArray( this, ignored ) < 0 ) { 6357 jQuery.cleanData( getAll( this ) ); 6358 if ( parent ) { 6359 parent.replaceChild( elem, this ); 6360 } 6361 } 6362 6363 // Force callback invocation 6364 }, ignored ); 6365 } 6366} ); 6367 6368jQuery.each( { 6369 appendTo: "append", 6370 prependTo: "prepend", 6371 insertBefore: "before", 6372 insertAfter: "after", 6373 replaceAll: "replaceWith" 6374}, function( name, original ) { 6375 jQuery.fn[ name ] = function( selector ) { 6376 var elems, 6377 ret = [], 6378 insert = jQuery( selector ), 6379 last = insert.length - 1, 6380 i = 0; 6381 6382 for ( ; i <= last; i++ ) { 6383 elems = i === last ? this : this.clone( true ); 6384 jQuery( insert[ i ] )[ original ]( elems ); 6385 6386 // Support: Android <=4.0 only, PhantomJS 1 only 6387 // .get() because push.apply(_, arraylike) throws on ancient WebKit 6388 push.apply( ret, elems.get() ); 6389 } 6390 6391 return this.pushStack( ret ); 6392 }; 6393} ); 6394var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" ); 6395 6396var getStyles = function( elem ) { 6397 6398 // Support: IE <=11 only, Firefox <=30 (#15098, #14150) 6399 // IE throws on elements created in popups 6400 // FF meanwhile throws on frame elements through "defaultView.getComputedStyle" 6401 var view = elem.ownerDocument.defaultView; 6402 6403 if ( !view || !view.opener ) { 6404 view = window; 6405 } 6406 6407 return view.getComputedStyle( elem ); 6408 }; 6409 6410var swap = function( elem, options, callback ) { 6411 var ret, name, 6412 old = {}; 6413 6414 // Remember the old values, and insert the new ones 6415 for ( name in options ) { 6416 old[ name ] = elem.style[ name ]; 6417 elem.style[ name ] = options[ name ]; 6418 } 6419 6420 ret = callback.call( elem ); 6421 6422 // Revert the old values 6423 for ( name in options ) { 6424 elem.style[ name ] = old[ name ]; 6425 } 6426 6427 return ret; 6428}; 6429 6430 6431var rboxStyle = new RegExp( cssExpand.join( "|" ), "i" ); 6432 6433 6434 6435( function() { 6436 6437 // Executing both pixelPosition & boxSizingReliable tests require only one layout 6438 // so they're executed at the same time to save the second computation. 6439 function computeStyleTests() { 6440 6441 // This is a singleton, we need to execute it only once 6442 if ( !div ) { 6443 return; 6444 } 6445 6446 container.style.cssText = "position:absolute;left:-11111px;width:60px;" + 6447 "margin-top:1px;padding:0;border:0"; 6448 div.style.cssText = 6449 "position:relative;display:block;box-sizing:border-box;overflow:scroll;" + 6450 "margin:auto;border:1px;padding:1px;" + 6451 "width:60%;top:1%"; 6452 documentElement.appendChild( container ).appendChild( div ); 6453 6454 var divStyle = window.getComputedStyle( div ); 6455 pixelPositionVal = divStyle.top !== "1%"; 6456 6457 // Support: Android 4.0 - 4.3 only, Firefox <=3 - 44 6458 reliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12; 6459 6460 // Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3 6461 // Some styles come back with percentage values, even though they shouldn't 6462 div.style.right = "60%"; 6463 pixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36; 6464 6465 // Support: IE 9 - 11 only 6466 // Detect misreporting of content dimensions for box-sizing:border-box elements 6467 boxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36; 6468 6469 // Support: IE 9 only 6470 // Detect overflow:scroll screwiness (gh-3699) 6471 // Support: Chrome <=64 6472 // Don't get tricked when zoom affects offsetWidth (gh-4029) 6473 div.style.position = "absolute"; 6474 scrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12; 6475 6476 documentElement.removeChild( container ); 6477 6478 // Nullify the div so it wouldn't be stored in the memory and 6479 // it will also be a sign that checks already performed 6480 div = null; 6481 } 6482 6483 function roundPixelMeasures( measure ) { 6484 return Math.round( parseFloat( measure ) ); 6485 } 6486 6487 var pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal, 6488 reliableTrDimensionsVal, reliableMarginLeftVal, 6489 container = document.createElement( "div" ), 6490 div = document.createElement( "div" ); 6491 6492 // Finish early in limited (non-browser) environments 6493 if ( !div.style ) { 6494 return; 6495 } 6496 6497 // Support: IE <=9 - 11 only 6498 // Style of cloned element affects source element cloned (#8908) 6499 div.style.backgroundClip = "content-box"; 6500 div.cloneNode( true ).style.backgroundClip = ""; 6501 support.clearCloneStyle = div.style.backgroundClip === "content-box"; 6502 6503 jQuery.extend( support, { 6504 boxSizingReliable: function() { 6505 computeStyleTests(); 6506 return boxSizingReliableVal; 6507 }, 6508 pixelBoxStyles: function() { 6509 computeStyleTests(); 6510 return pixelBoxStylesVal; 6511 }, 6512 pixelPosition: function() { 6513 computeStyleTests(); 6514 return pixelPositionVal; 6515 }, 6516 reliableMarginLeft: function() { 6517 computeStyleTests(); 6518 return reliableMarginLeftVal; 6519 }, 6520 scrollboxSize: function() { 6521 computeStyleTests(); 6522 return scrollboxSizeVal; 6523 }, 6524 6525 // Support: IE 9 - 11+, Edge 15 - 18+ 6526 // IE/Edge misreport `getComputedStyle` of table rows with width/height 6527 // set in CSS while `offset*` properties report correct values. 6528 // Behavior in IE 9 is more subtle than in newer versions & it passes 6529 // some versions of this test; make sure not to make it pass there! 6530 // 6531 // Support: Firefox 70+ 6532 // Only Firefox includes border widths 6533 // in computed dimensions. (gh-4529) 6534 reliableTrDimensions: function() { 6535 var table, tr, trChild, trStyle; 6536 if ( reliableTrDimensionsVal == null ) { 6537 table = document.createElement( "table" ); 6538 tr = document.createElement( "tr" ); 6539 trChild = document.createElement( "div" ); 6540 6541 table.style.cssText = "position:absolute;left:-11111px;border-collapse:separate"; 6542 tr.style.cssText = "border:1px solid"; 6543 6544 // Support: Chrome 86+ 6545 // Height set through cssText does not get applied. 6546 // Computed height then comes back as 0. 6547 tr.style.height = "1px"; 6548 trChild.style.height = "9px"; 6549 6550 // Support: Android 8 Chrome 86+ 6551 // In our bodyBackground.html iframe, 6552 // display for all div elements is set to "inline", 6553 // which causes a problem only in Android 8 Chrome 86. 6554 // Ensuring the div is display: block 6555 // gets around this issue. 6556 trChild.style.display = "block"; 6557 6558 documentElement 6559 .appendChild( table ) 6560 .appendChild( tr ) 6561 .appendChild( trChild ); 6562 6563 trStyle = window.getComputedStyle( tr ); 6564 reliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) + 6565 parseInt( trStyle.borderTopWidth, 10 ) + 6566 parseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight; 6567 6568 documentElement.removeChild( table ); 6569 } 6570 return reliableTrDimensionsVal; 6571 } 6572 } ); 6573} )(); 6574 6575 6576function curCSS( elem, name, computed ) { 6577 var width, minWidth, maxWidth, ret, 6578 6579 // Support: Firefox 51+ 6580 // Retrieving style before computed somehow 6581 // fixes an issue with getting wrong values 6582 // on detached elements 6583 style = elem.style; 6584 6585 computed = computed || getStyles( elem ); 6586 6587 // getPropertyValue is needed for: 6588 // .css('filter') (IE 9 only, #12537) 6589 // .css('--customProperty) (#3144) 6590 if ( computed ) { 6591 ret = computed.getPropertyValue( name ) || computed[ name ]; 6592 6593 if ( ret === "" && !isAttached( elem ) ) { 6594 ret = jQuery.style( elem, name ); 6595 } 6596 6597 // A tribute to the "awesome hack by Dean Edwards" 6598 // Android Browser returns percentage for some values, 6599 // but width seems to be reliably pixels. 6600 // This is against the CSSOM draft spec: 6601 // https://drafts.csswg.org/cssom/#resolved-values 6602 if ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) { 6603 6604 // Remember the original values 6605 width = style.width; 6606 minWidth = style.minWidth; 6607 maxWidth = style.maxWidth; 6608 6609 // Put in the new values to get a computed value out 6610 style.minWidth = style.maxWidth = style.width = ret; 6611 ret = computed.width; 6612 6613 // Revert the changed values 6614 style.width = width; 6615 style.minWidth = minWidth; 6616 style.maxWidth = maxWidth; 6617 } 6618 } 6619 6620 return ret !== undefined ? 6621 6622 // Support: IE <=9 - 11 only 6623 // IE returns zIndex value as an integer. 6624 ret + "" : 6625 ret; 6626} 6627 6628 6629function addGetHookIf( conditionFn, hookFn ) { 6630 6631 // Define the hook, we'll check on the first run if it's really needed. 6632 return { 6633 get: function() { 6634 if ( conditionFn() ) { 6635 6636 // Hook not needed (or it's not possible to use it due 6637 // to missing dependency), remove it. 6638 delete this.get; 6639 return; 6640 } 6641 6642 // Hook needed; redefine it so that the support test is not executed again. 6643 return ( this.get = hookFn ).apply( this, arguments ); 6644 } 6645 }; 6646} 6647 6648 6649var cssPrefixes = [ "Webkit", "Moz", "ms" ], 6650 emptyStyle = document.createElement( "div" ).style, 6651 vendorProps = {}; 6652 6653// Return a vendor-prefixed property or undefined 6654function vendorPropName( name ) { 6655 6656 // Check for vendor prefixed names 6657 var capName = name[ 0 ].toUpperCase() + name.slice( 1 ), 6658 i = cssPrefixes.length; 6659 6660 while ( i-- ) { 6661 name = cssPrefixes[ i ] + capName; 6662 if ( name in emptyStyle ) { 6663 return name; 6664 } 6665 } 6666} 6667 6668// Return a potentially-mapped jQuery.cssProps or vendor prefixed property 6669function finalPropName( name ) { 6670 var final = jQuery.cssProps[ name ] || vendorProps[ name ]; 6671 6672 if ( final ) { 6673 return final; 6674 } 6675 if ( name in emptyStyle ) { 6676 return name; 6677 } 6678 return vendorProps[ name ] = vendorPropName( name ) || name; 6679} 6680 6681 6682var 6683 6684 // Swappable if display is none or starts with table 6685 // except "table", "table-cell", or "table-caption" 6686 // See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display 6687 rdisplayswap = /^(none|table(?!-c[ea]).+)/, 6688 rcustomProp = /^--/, 6689 cssShow = { position: "absolute", visibility: "hidden", display: "block" }, 6690 cssNormalTransform = { 6691 letterSpacing: "0", 6692 fontWeight: "400" 6693 }; 6694 6695function setPositiveNumber( _elem, value, subtract ) { 6696 6697 // Any relative (+/-) values have already been 6698 // normalized at this point 6699 var matches = rcssNum.exec( value ); 6700 return matches ? 6701 6702 // Guard against undefined "subtract", e.g., when used as in cssHooks 6703 Math.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || "px" ) : 6704 value; 6705} 6706 6707function boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) { 6708 var i = dimension === "width" ? 1 : 0, 6709 extra = 0, 6710 delta = 0; 6711 6712 // Adjustment may not be necessary 6713 if ( box === ( isBorderBox ? "border" : "content" ) ) { 6714 return 0; 6715 } 6716 6717 for ( ; i < 4; i += 2 ) { 6718 6719 // Both box models exclude margin 6720 if ( box === "margin" ) { 6721 delta += jQuery.css( elem, box + cssExpand[ i ], true, styles ); 6722 } 6723 6724 // If we get here with a content-box, we're seeking "padding" or "border" or "margin" 6725 if ( !isBorderBox ) { 6726 6727 // Add padding 6728 delta += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); 6729 6730 // For "border" or "margin", add border 6731 if ( box !== "padding" ) { 6732 delta += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); 6733 6734 // But still keep track of it otherwise 6735 } else { 6736 extra += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); 6737 } 6738 6739 // If we get here with a border-box (content + padding + border), we're seeking "content" or 6740 // "padding" or "margin" 6741 } else { 6742 6743 // For "content", subtract padding 6744 if ( box === "content" ) { 6745 delta -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles ); 6746 } 6747 6748 // For "content" or "padding", subtract border 6749 if ( box !== "margin" ) { 6750 delta -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles ); 6751 } 6752 } 6753 } 6754 6755 // Account for positive content-box scroll gutter when requested by providing computedVal 6756 if ( !isBorderBox && computedVal >= 0 ) { 6757 6758 // offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border 6759 // Assuming integer scroll gutter, subtract the rest and round down 6760 delta += Math.max( 0, Math.ceil( 6761 elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - 6762 computedVal - 6763 delta - 6764 extra - 6765 0.5 6766 6767 // If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter 6768 // Use an explicit zero to avoid NaN (gh-3964) 6769 ) ) || 0; 6770 } 6771 6772 return delta; 6773} 6774 6775function getWidthOrHeight( elem, dimension, extra ) { 6776 6777 // Start with computed style 6778 var styles = getStyles( elem ), 6779 6780 // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322). 6781 // Fake content-box until we know it's needed to know the true value. 6782 boxSizingNeeded = !support.boxSizingReliable() || extra, 6783 isBorderBox = boxSizingNeeded && 6784 jQuery.css( elem, "boxSizing", false, styles ) === "border-box", 6785 valueIsBorderBox = isBorderBox, 6786 6787 val = curCSS( elem, dimension, styles ), 6788 offsetProp = "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ); 6789 6790 // Support: Firefox <=54 6791 // Return a confounding non-pixel value or feign ignorance, as appropriate. 6792 if ( rnumnonpx.test( val ) ) { 6793 if ( !extra ) { 6794 return val; 6795 } 6796 val = "auto"; 6797 } 6798 6799 6800 // Support: IE 9 - 11 only 6801 // Use offsetWidth/offsetHeight for when box sizing is unreliable. 6802 // In those cases, the computed value can be trusted to be border-box. 6803 if ( ( !support.boxSizingReliable() && isBorderBox || 6804 6805 // Support: IE 10 - 11+, Edge 15 - 18+ 6806 // IE/Edge misreport `getComputedStyle` of table rows with width/height 6807 // set in CSS while `offset*` properties report correct values. 6808 // Interestingly, in some cases IE 9 doesn't suffer from this issue. 6809 !support.reliableTrDimensions() && nodeName( elem, "tr" ) || 6810 6811 // Fall back to offsetWidth/offsetHeight when value is "auto" 6812 // This happens for inline elements with no explicit setting (gh-3571) 6813 val === "auto" || 6814 6815 // Support: Android <=4.1 - 4.3 only 6816 // Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602) 6817 !parseFloat( val ) && jQuery.css( elem, "display", false, styles ) === "inline" ) && 6818 6819 // Make sure the element is visible & connected 6820 elem.getClientRects().length ) { 6821 6822 isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box"; 6823 6824 // Where available, offsetWidth/offsetHeight approximate border box dimensions. 6825 // Where not available (e.g., SVG), assume unreliable box-sizing and interpret the 6826 // retrieved value as a content box dimension. 6827 valueIsBorderBox = offsetProp in elem; 6828 if ( valueIsBorderBox ) { 6829 val = elem[ offsetProp ]; 6830 } 6831 } 6832 6833 // Normalize "" and auto 6834 val = parseFloat( val ) || 0; 6835 6836 // Adjust for the element's box model 6837 return ( val + 6838 boxModelAdjustment( 6839 elem, 6840 dimension, 6841 extra || ( isBorderBox ? "border" : "content" ), 6842 valueIsBorderBox, 6843 styles, 6844 6845 // Provide the current computed size to request scroll gutter calculation (gh-3589) 6846 val 6847 ) 6848 ) + "px"; 6849} 6850 6851jQuery.extend( { 6852 6853 // Add in style property hooks for overriding the default 6854 // behavior of getting and setting a style property 6855 cssHooks: { 6856 opacity: { 6857 get: function( elem, computed ) { 6858 if ( computed ) { 6859 6860 // We should always get a number back from opacity 6861 var ret = curCSS( elem, "opacity" ); 6862 return ret === "" ? "1" : ret; 6863 } 6864 } 6865 } 6866 }, 6867 6868 // Don't automatically add "px" to these possibly-unitless properties 6869 cssNumber: { 6870 "animationIterationCount": true, 6871 "columnCount": true, 6872 "fillOpacity": true, 6873 "flexGrow": true, 6874 "flexShrink": true, 6875 "fontWeight": true, 6876 "gridArea": true, 6877 "gridColumn": true, 6878 "gridColumnEnd": true, 6879 "gridColumnStart": true, 6880 "gridRow": true, 6881 "gridRowEnd": true, 6882 "gridRowStart": true, 6883 "lineHeight": true, 6884 "opacity": true, 6885 "order": true, 6886 "orphans": true, 6887 "widows": true, 6888 "zIndex": true, 6889 "zoom": true 6890 }, 6891 6892 // Add in properties whose names you wish to fix before 6893 // setting or getting the value 6894 cssProps: {}, 6895 6896 // Get and set the style property on a DOM Node 6897 style: function( elem, name, value, extra ) { 6898 6899 // Don't set styles on text and comment nodes 6900 if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) { 6901 return; 6902 } 6903 6904 // Make sure that we're working with the right name 6905 var ret, type, hooks, 6906 origName = camelCase( name ), 6907 isCustomProp = rcustomProp.test( name ), 6908 style = elem.style; 6909 6910 // Make sure that we're working with the right name. We don't 6911 // want to query the value if it is a CSS custom property 6912 // since they are user-defined. 6913 if ( !isCustomProp ) { 6914 name = finalPropName( origName ); 6915 } 6916 6917 // Gets hook for the prefixed version, then unprefixed version 6918 hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; 6919 6920 // Check if we're setting a value 6921 if ( value !== undefined ) { 6922 type = typeof value; 6923 6924 // Convert "+=" or "-=" to relative numbers (#7345) 6925 if ( type === "string" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) { 6926 value = adjustCSS( elem, name, ret ); 6927 6928 // Fixes bug #9237 6929 type = "number"; 6930 } 6931 6932 // Make sure that null and NaN values aren't set (#7116) 6933 if ( value == null || value !== value ) { 6934 return; 6935 } 6936 6937 // If a number was passed in, add the unit (except for certain CSS properties) 6938 // The isCustomProp check can be removed in jQuery 4.0 when we only auto-append 6939 // "px" to a few hardcoded values. 6940 if ( type === "number" && !isCustomProp ) { 6941 value += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? "" : "px" ); 6942 } 6943 6944 // background-* props affect original clone's values 6945 if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) { 6946 style[ name ] = "inherit"; 6947 } 6948 6949 // If a hook was provided, use that value, otherwise just set the specified value
vendor: 25,692 bytes, lines 6950-7946
6950 if ( !hooks || !( "set" in hooks ) || 6951 ( value = hooks.set( elem, value, extra ) ) !== undefined ) { 6952 6953 if ( isCustomProp ) { 6954 style.setProperty( name, value ); 6955 } else { 6956 style[ name ] = value; 6957 } 6958 } 6959 6960 } else { 6961 6962 // If a hook was provided get the non-computed value from there 6963 if ( hooks && "get" in hooks && 6964 ( ret = hooks.get( elem, false, extra ) ) !== undefined ) { 6965 6966 return ret; 6967 } 6968 6969 // Otherwise just get the value from the style object 6970 return style[ name ]; 6971 } 6972 }, 6973 6974 css: function( elem, name, extra, styles ) { 6975 var val, num, hooks, 6976 origName = camelCase( name ), 6977 isCustomProp = rcustomProp.test( name ); 6978 6979 // Make sure that we're working with the right name. We don't 6980 // want to modify the value if it is a CSS custom property 6981 // since they are user-defined. 6982 if ( !isCustomProp ) { 6983 name = finalPropName( origName ); 6984 } 6985 6986 // Try prefixed name followed by the unprefixed name 6987 hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ]; 6988 6989 // If a hook was provided get the computed value from there 6990 if ( hooks && "get" in hooks ) { 6991 val = hooks.get( elem, true, extra ); 6992 } 6993 6994 // Otherwise, if a way to get the computed value exists, use that 6995 if ( val === undefined ) { 6996 val = curCSS( elem, name, styles ); 6997 } 6998 6999 // Convert "normal" to computed value 7000 if ( val === "normal" && name in cssNormalTransform ) { 7001 val = cssNormalTransform[ name ]; 7002 } 7003 7004 // Make numeric if forced or a qualifier was provided and val looks numeric 7005 if ( extra === "" || extra ) { 7006 num = parseFloat( val ); 7007 return extra === true || isFinite( num ) ? num || 0 : val; 7008 } 7009 7010 return val; 7011 } 7012} ); 7013 7014jQuery.each( [ "height", "width" ], function( _i, dimension ) { 7015 jQuery.cssHooks[ dimension ] = { 7016 get: function( elem, computed, extra ) { 7017 if ( computed ) { 7018 7019 // Certain elements can have dimension info if we invisibly show them 7020 // but it must have a current display style that would benefit 7021 return rdisplayswap.test( jQuery.css( elem, "display" ) ) && 7022 7023 // Support: Safari 8+ 7024 // Table columns in Safari have non-zero offsetWidth & zero 7025 // getBoundingClientRect().width unless display is changed. 7026 // Support: IE <=11 only 7027 // Running getBoundingClientRect on a disconnected node 7028 // in IE throws an error. 7029 ( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ? 7030 swap( elem, cssShow, function() { 7031 return getWidthOrHeight( elem, dimension, extra ); 7032 } ) : 7033 getWidthOrHeight( elem, dimension, extra ); 7034 } 7035 }, 7036 7037 set: function( elem, value, extra ) { 7038 var matches, 7039 styles = getStyles( elem ), 7040 7041 // Only read styles.position if the test has a chance to fail 7042 // to avoid forcing a reflow. 7043 scrollboxSizeBuggy = !support.scrollboxSize() && 7044 styles.position === "absolute", 7045 7046 // To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991) 7047 boxSizingNeeded = scrollboxSizeBuggy || extra, 7048 isBorderBox = boxSizingNeeded && 7049 jQuery.css( elem, "boxSizing", false, styles ) === "border-box", 7050 subtract = extra ? 7051 boxModelAdjustment( 7052 elem, 7053 dimension, 7054 extra, 7055 isBorderBox, 7056 styles 7057 ) : 7058 0; 7059 7060 // Account for unreliable border-box dimensions by comparing offset* to computed and 7061 // faking a content-box to get border and padding (gh-3699) 7062 if ( isBorderBox && scrollboxSizeBuggy ) { 7063 subtract -= Math.ceil( 7064 elem[ "offset" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] - 7065 parseFloat( styles[ dimension ] ) - 7066 boxModelAdjustment( elem, dimension, "border", false, styles ) - 7067 0.5 7068 ); 7069 } 7070 7071 // Convert to pixels if value adjustment is needed 7072 if ( subtract && ( matches = rcssNum.exec( value ) ) && 7073 ( matches[ 3 ] || "px" ) !== "px" ) { 7074 7075 elem.style[ dimension ] = value; 7076 value = jQuery.css( elem, dimension ); 7077 } 7078 7079 return setPositiveNumber( elem, value, subtract ); 7080 } 7081 }; 7082} ); 7083 7084jQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft, 7085 function( elem, computed ) { 7086 if ( computed ) { 7087 return ( parseFloat( curCSS( elem, "marginLeft" ) ) || 7088 elem.getBoundingClientRect().left - 7089 swap( elem, { marginLeft: 0 }, function() { 7090 return elem.getBoundingClientRect().left; 7091 } ) 7092 ) + "px"; 7093 } 7094 } 7095); 7096 7097// These hooks are used by animate to expand properties 7098jQuery.each( { 7099 margin: "", 7100 padding: "", 7101 border: "Width" 7102}, function( prefix, suffix ) { 7103 jQuery.cssHooks[ prefix + suffix ] = { 7104 expand: function( value ) { 7105 var i = 0, 7106 expanded = {}, 7107 7108 // Assumes a single number if not a string 7109 parts = typeof value === "string" ? value.split( " " ) : [ value ]; 7110 7111 for ( ; i < 4; i++ ) { 7112 expanded[ prefix + cssExpand[ i ] + suffix ] = 7113 parts[ i ] || parts[ i - 2 ] || parts[ 0 ]; 7114 } 7115 7116 return expanded; 7117 } 7118 }; 7119 7120 if ( prefix !== "margin" ) { 7121 jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber; 7122 } 7123} ); 7124 7125jQuery.fn.extend( { 7126 css: function( name, value ) { 7127 return access( this, function( elem, name, value ) { 7128 var styles, len, 7129 map = {}, 7130 i = 0; 7131 7132 if ( Array.isArray( name ) ) { 7133 styles = getStyles( elem ); 7134 len = name.length; 7135 7136 for ( ; i < len; i++ ) { 7137 map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles ); 7138 } 7139 7140 return map; 7141 } 7142 7143 return value !== undefined ? 7144 jQuery.style( elem, name, value ) : 7145 jQuery.css( elem, name ); 7146 }, name, value, arguments.length > 1 ); 7147 } 7148} ); 7149 7150 7151function Tween( elem, options, prop, end, easing ) { 7152 return new Tween.prototype.init( elem, options, prop, end, easing ); 7153} 7154jQuery.Tween = Tween; 7155 7156Tween.prototype = { 7157 constructor: Tween, 7158 init: function( elem, options, prop, end, easing, unit ) { 7159 this.elem = elem; 7160 this.prop = prop; 7161 this.easing = easing || jQuery.easing._default; 7162 this.options = options; 7163 this.start = this.now = this.cur(); 7164 this.end = end; 7165 this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" ); 7166 }, 7167 cur: function() { 7168 var hooks = Tween.propHooks[ this.prop ]; 7169 7170 return hooks && hooks.get ? 7171 hooks.get( this ) : 7172 Tween.propHooks._default.get( this ); 7173 }, 7174 run: function( percent ) { 7175 var eased, 7176 hooks = Tween.propHooks[ this.prop ]; 7177 7178 if ( this.options.duration ) { 7179 this.pos = eased = jQuery.easing[ this.easing ]( 7180 percent, this.options.duration * percent, 0, 1, this.options.duration 7181 ); 7182 } else { 7183 this.pos = eased = percent; 7184 } 7185 this.now = ( this.end - this.start ) * eased + this.start; 7186 7187 if ( this.options.step ) { 7188 this.options.step.call( this.elem, this.now, this ); 7189 } 7190 7191 if ( hooks && hooks.set ) { 7192 hooks.set( this ); 7193 } else { 7194 Tween.propHooks._default.set( this ); 7195 } 7196 return this; 7197 } 7198}; 7199 7200Tween.prototype.init.prototype = Tween.prototype; 7201 7202Tween.propHooks = { 7203 _default: { 7204 get: function( tween ) { 7205 var result; 7206 7207 // Use a property on the element directly when it is not a DOM element, 7208 // or when there is no matching style property that exists. 7209 if ( tween.elem.nodeType !== 1 || 7210 tween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) { 7211 return tween.elem[ tween.prop ]; 7212 } 7213 7214 // Passing an empty string as a 3rd parameter to .css will automatically 7215 // attempt a parseFloat and fallback to a string if the parse fails. 7216 // Simple values such as "10px" are parsed to Float; 7217 // complex values such as "rotate(1rad)" are returned as-is. 7218 result = jQuery.css( tween.elem, tween.prop, "" ); 7219 7220 // Empty strings, null, undefined and "auto" are converted to 0. 7221 return !result || result === "auto" ? 0 : result; 7222 }, 7223 set: function( tween ) { 7224 7225 // Use step hook for back compat. 7226 // Use cssHook if its there. 7227 // Use .style if available and use plain properties where available. 7228 if ( jQuery.fx.step[ tween.prop ] ) { 7229 jQuery.fx.step[ tween.prop ]( tween ); 7230 } else if ( tween.elem.nodeType === 1 && ( 7231 jQuery.cssHooks[ tween.prop ] || 7232 tween.elem.style[ finalPropName( tween.prop ) ] != null ) ) { 7233 jQuery.style( tween.elem, tween.prop, tween.now + tween.unit ); 7234 } else { 7235 tween.elem[ tween.prop ] = tween.now; 7236 } 7237 } 7238 } 7239}; 7240 7241// Support: IE <=9 only 7242// Panic based approach to setting things on disconnected nodes 7243Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = { 7244 set: function( tween ) { 7245 if ( tween.elem.nodeType && tween.elem.parentNode ) { 7246 tween.elem[ tween.prop ] = tween.now; 7247 } 7248 } 7249}; 7250 7251jQuery.easing = { 7252 linear: function( p ) { 7253 return p; 7254 }, 7255 swing: function( p ) { 7256 return 0.5 - Math.cos( p * Math.PI ) / 2; 7257 }, 7258 _default: "swing" 7259}; 7260 7261jQuery.fx = Tween.prototype.init; 7262 7263// Back compat <1.8 extension point 7264jQuery.fx.step = {}; 7265 7266 7267 7268 7269var 7270 fxNow, inProgress, 7271 rfxtypes = /^(?:toggle|show|hide)$/, 7272 rrun = /queueHooks$/; 7273 7274function schedule() { 7275 if ( inProgress ) { 7276 if ( document.hidden === false && window.requestAnimationFrame ) { 7277 window.requestAnimationFrame( schedule ); 7278 } else { 7279 window.setTimeout( schedule, jQuery.fx.interval ); 7280 } 7281 7282 jQuery.fx.tick(); 7283 } 7284} 7285 7286// Animations created synchronously will run synchronously 7287function createFxNow() { 7288 window.setTimeout( function() { 7289 fxNow = undefined; 7290 } ); 7291 return ( fxNow = Date.now() ); 7292} 7293 7294// Generate parameters to create a standard animation 7295function genFx( type, includeWidth ) { 7296 var which, 7297 i = 0, 7298 attrs = { height: type }; 7299 7300 // If we include width, step value is 1 to do all cssExpand values, 7301 // otherwise step value is 2 to skip over Left and Right 7302 includeWidth = includeWidth ? 1 : 0; 7303 for ( ; i < 4; i += 2 - includeWidth ) { 7304 which = cssExpand[ i ]; 7305 attrs[ "margin" + which ] = attrs[ "padding" + which ] = type; 7306 } 7307 7308 if ( includeWidth ) { 7309 attrs.opacity = attrs.width = type; 7310 } 7311 7312 return attrs; 7313} 7314 7315function createTween( value, prop, animation ) { 7316 var tween, 7317 collection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ "*" ] ), 7318 index = 0, 7319 length = collection.length; 7320 for ( ; index < length; index++ ) { 7321 if ( ( tween = collection[ index ].call( animation, prop, value ) ) ) { 7322 7323 // We're done with this property 7324 return tween; 7325 } 7326 } 7327} 7328 7329function defaultPrefilter( elem, props, opts ) { 7330 var prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display, 7331 isBox = "width" in props || "height" in props, 7332 anim = this, 7333 orig = {}, 7334 style = elem.style, 7335 hidden = elem.nodeType && isHiddenWithinTree( elem ), 7336 dataShow = dataPriv.get( elem, "fxshow" ); 7337 7338 // Queue-skipping animations hijack the fx hooks 7339 if ( !opts.queue ) { 7340 hooks = jQuery._queueHooks( elem, "fx" ); 7341 if ( hooks.unqueued == null ) { 7342 hooks.unqueued = 0; 7343 oldfire = hooks.empty.fire; 7344 hooks.empty.fire = function() { 7345 if ( !hooks.unqueued ) { 7346 oldfire(); 7347 } 7348 }; 7349 } 7350 hooks.unqueued++; 7351 7352 anim.always( function() { 7353 7354 // Ensure the complete handler is called before this completes 7355 anim.always( function() { 7356 hooks.unqueued--; 7357 if ( !jQuery.queue( elem, "fx" ).length ) { 7358 hooks.empty.fire(); 7359 } 7360 } ); 7361 } ); 7362 } 7363 7364 // Detect show/hide animations 7365 for ( prop in props ) { 7366 value = props[ prop ]; 7367 if ( rfxtypes.test( value ) ) { 7368 delete props[ prop ]; 7369 toggle = toggle || value === "toggle"; 7370 if ( value === ( hidden ? "hide" : "show" ) ) { 7371 7372 // Pretend to be hidden if this is a "show" and 7373 // there is still data from a stopped show/hide 7374 if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) { 7375 hidden = true; 7376 7377 // Ignore all other no-op show/hide data 7378 } else { 7379 continue; 7380 } 7381 } 7382 orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop ); 7383 } 7384 } 7385 7386 // Bail out if this is a no-op like .hide().hide() 7387 propTween = !jQuery.isEmptyObject( props ); 7388 if ( !propTween && jQuery.isEmptyObject( orig ) ) { 7389 return; 7390 } 7391 7392 // Restrict "overflow" and "display" styles during box animations 7393 if ( isBox && elem.nodeType === 1 ) { 7394 7395 // Support: IE <=9 - 11, Edge 12 - 15 7396 // Record all 3 overflow attributes because IE does not infer the shorthand 7397 // from identically-valued overflowX and overflowY and Edge just mirrors 7398 // the overflowX value there. 7399 opts.overflow = [ style.overflow, style.overflowX, style.overflowY ]; 7400 7401 // Identify a display type, preferring old show/hide data over the CSS cascade 7402 restoreDisplay = dataShow && dataShow.display; 7403 if ( restoreDisplay == null ) { 7404 restoreDisplay = dataPriv.get( elem, "display" ); 7405 } 7406 display = jQuery.css( elem, "display" ); 7407 if ( display === "none" ) { 7408 if ( restoreDisplay ) { 7409 display = restoreDisplay; 7410 } else { 7411 7412 // Get nonempty value(s) by temporarily forcing visibility 7413 showHide( [ elem ], true ); 7414 restoreDisplay = elem.style.display || restoreDisplay; 7415 display = jQuery.css( elem, "display" ); 7416 showHide( [ elem ] ); 7417 } 7418 } 7419 7420 // Animate inline elements as inline-block 7421 if ( display === "inline" || display === "inline-block" && restoreDisplay != null ) { 7422 if ( jQuery.css( elem, "float" ) === "none" ) { 7423 7424 // Restore the original display value at the end of pure show/hide animations 7425 if ( !propTween ) { 7426 anim.done( function() { 7427 style.display = restoreDisplay; 7428 } ); 7429 if ( restoreDisplay == null ) { 7430 display = style.display; 7431 restoreDisplay = display === "none" ? "" : display; 7432 } 7433 } 7434 style.display = "inline-block"; 7435 } 7436 } 7437 } 7438 7439 if ( opts.overflow ) { 7440 style.overflow = "hidden"; 7441 anim.always( function() { 7442 style.overflow = opts.overflow[ 0 ]; 7443 style.overflowX = opts.overflow[ 1 ]; 7444 style.overflowY = opts.overflow[ 2 ]; 7445 } ); 7446 } 7447 7448 // Implement show/hide animations 7449 propTween = false; 7450 for ( prop in orig ) { 7451 7452 // General show/hide setup for this element animation 7453 if ( !propTween ) { 7454 if ( dataShow ) { 7455 if ( "hidden" in dataShow ) { 7456 hidden = dataShow.hidden; 7457 } 7458 } else { 7459 dataShow = dataPriv.access( elem, "fxshow", { display: restoreDisplay } ); 7460 } 7461 7462 // Store hidden/visible for toggle so `.stop().toggle()` "reverses" 7463 if ( toggle ) { 7464 dataShow.hidden = !hidden; 7465 } 7466 7467 // Show elements before animating them 7468 if ( hidden ) { 7469 showHide( [ elem ], true ); 7470 } 7471 7472 /* eslint-disable no-loop-func */ 7473 7474 anim.done( function() { 7475 7476 /* eslint-enable no-loop-func */ 7477 7478 // The final step of a "hide" animation is actually hiding the element 7479 if ( !hidden ) { 7480 showHide( [ elem ] ); 7481 } 7482 dataPriv.remove( elem, "fxshow" ); 7483 for ( prop in orig ) { 7484 jQuery.style( elem, prop, orig[ prop ] ); 7485 } 7486 } ); 7487 } 7488 7489 // Per-property setup 7490 propTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim ); 7491 if ( !( prop in dataShow ) ) { 7492 dataShow[ prop ] = propTween.start; 7493 if ( hidden ) { 7494 propTween.end = propTween.start; 7495 propTween.start = 0; 7496 } 7497 } 7498 } 7499} 7500 7501function propFilter( props, specialEasing ) { 7502 var index, name, easing, value, hooks; 7503 7504 // camelCase, specialEasing and expand cssHook pass 7505 for ( index in props ) { 7506 name = camelCase( index ); 7507 easing = specialEasing[ name ]; 7508 value = props[ index ]; 7509 if ( Array.isArray( value ) ) { 7510 easing = value[ 1 ]; 7511 value = props[ index ] = value[ 0 ]; 7512 } 7513 7514 if ( index !== name ) { 7515 props[ name ] = value; 7516 delete props[ index ]; 7517 } 7518 7519 hooks = jQuery.cssHooks[ name ]; 7520 if ( hooks && "expand" in hooks ) { 7521 value = hooks.expand( value ); 7522 delete props[ name ]; 7523 7524 // Not quite $.extend, this won't overwrite existing keys. 7525 // Reusing 'index' because we have the correct "name" 7526 for ( index in value ) { 7527 if ( !( index in props ) ) { 7528 props[ index ] = value[ index ]; 7529 specialEasing[ index ] = easing; 7530 } 7531 } 7532 } else { 7533 specialEasing[ name ] = easing; 7534 } 7535 } 7536} 7537 7538function Animation( elem, properties, options ) { 7539 var result, 7540 stopped, 7541 index = 0, 7542 length = Animation.prefilters.length, 7543 deferred = jQuery.Deferred().always( function() { 7544 7545 // Don't match elem in the :animated selector 7546 delete tick.elem; 7547 } ), 7548 tick = function() { 7549 if ( stopped ) { 7550 return false; 7551 } 7552 var currentTime = fxNow || createFxNow(), 7553 remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ), 7554 7555 // Support: Android 2.3 only 7556 // Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497) 7557 temp = remaining / animation.duration || 0, 7558 percent = 1 - temp, 7559 index = 0, 7560 length = animation.tweens.length; 7561 7562 for ( ; index < length; index++ ) { 7563 animation.tweens[ index ].run( percent ); 7564 } 7565 7566 deferred.notifyWith( elem, [ animation, percent, remaining ] ); 7567 7568 // If there's more to do, yield 7569 if ( percent < 1 && length ) { 7570 return remaining; 7571 } 7572 7573 // If this was an empty animation, synthesize a final progress notification 7574 if ( !length ) { 7575 deferred.notifyWith( elem, [ animation, 1, 0 ] ); 7576 } 7577 7578 // Resolve the animation and report its conclusion 7579 deferred.resolveWith( elem, [ animation ] ); 7580 return false; 7581 }, 7582 animation = deferred.promise( { 7583 elem: elem, 7584 props: jQuery.extend( {}, properties ), 7585 opts: jQuery.extend( true, { 7586 specialEasing: {}, 7587 easing: jQuery.easing._default 7588 }, options ), 7589 originalProperties: properties, 7590 originalOptions: options, 7591 startTime: fxNow || createFxNow(), 7592 duration: options.duration, 7593 tweens: [], 7594 createTween: function( prop, end ) { 7595 var tween = jQuery.Tween( elem, animation.opts, prop, end, 7596 animation.opts.specialEasing[ prop ] || animation.opts.easing ); 7597 animation.tweens.push( tween ); 7598 return tween; 7599 }, 7600 stop: function( gotoEnd ) { 7601 var index = 0, 7602 7603 // If we are going to the end, we want to run all the tweens 7604 // otherwise we skip this part 7605 length = gotoEnd ? animation.tweens.length : 0; 7606 if ( stopped ) { 7607 return this; 7608 } 7609 stopped = true; 7610 for ( ; index < length; index++ ) { 7611 animation.tweens[ index ].run( 1 ); 7612 } 7613 7614 // Resolve when we played the last frame; otherwise, reject 7615 if ( gotoEnd ) { 7616 deferred.notifyWith( elem, [ animation, 1, 0 ] ); 7617 deferred.resolveWith( elem, [ animation, gotoEnd ] ); 7618 } else { 7619 deferred.rejectWith( elem, [ animation, gotoEnd ] ); 7620 } 7621 return this; 7622 } 7623 } ), 7624 props = animation.props; 7625 7626 propFilter( props, animation.opts.specialEasing ); 7627 7628 for ( ; index < length; index++ ) { 7629 result = Animation.prefilters[ index ].call( animation, elem, props, animation.opts ); 7630 if ( result ) { 7631 if ( isFunction( result.stop ) ) { 7632 jQuery._queueHooks( animation.elem, animation.opts.queue ).stop = 7633 result.stop.bind( result ); 7634 } 7635 return result; 7636 } 7637 } 7638 7639 jQuery.map( props, createTween, animation ); 7640 7641 if ( isFunction( animation.opts.start ) ) { 7642 animation.opts.start.call( elem, animation ); 7643 } 7644 7645 // Attach callbacks from options 7646 animation 7647 .progress( animation.opts.progress ) 7648 .done( animation.opts.done, animation.opts.complete ) 7649 .fail( animation.opts.fail ) 7650 .always( animation.opts.always ); 7651 7652 jQuery.fx.timer( 7653 jQuery.extend( tick, { 7654 elem: elem, 7655 anim: animation, 7656 queue: animation.opts.queue 7657 } ) 7658 ); 7659 7660 return animation; 7661} 7662 7663jQuery.Animation = jQuery.extend( Animation, { 7664 7665 tweeners: { 7666 "*": [ function( prop, value ) { 7667 var tween = this.createTween( prop, value ); 7668 adjustCSS( tween.elem, prop, rcssNum.exec( value ), tween ); 7669 return tween; 7670 } ] 7671 }, 7672 7673 tweener: function( props, callback ) { 7674 if ( isFunction( props ) ) { 7675 callback = props; 7676 props = [ "*" ]; 7677 } else { 7678 props = props.match( rnothtmlwhite ); 7679 } 7680 7681 var prop, 7682 index = 0, 7683 length = props.length; 7684 7685 for ( ; index < length; index++ ) { 7686 prop = props[ index ]; 7687 Animation.tweeners[ prop ] = Animation.tweeners[ prop ] || []; 7688 Animation.tweeners[ prop ].unshift( callback ); 7689 } 7690 }, 7691 7692 prefilters: [ defaultPrefilter ], 7693 7694 prefilter: function( callback, prepend ) { 7695 if ( prepend ) { 7696 Animation.prefilters.unshift( callback ); 7697 } else { 7698 Animation.prefilters.push( callback ); 7699 } 7700 } 7701} ); 7702 7703jQuery.speed = function( speed, easing, fn ) { 7704 var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : { 7705 complete: fn || !fn && easing || 7706 isFunction( speed ) && speed, 7707 duration: speed, 7708 easing: fn && easing || easing && !isFunction( easing ) && easing 7709 }; 7710 7711 // Go to the end state if fx are off 7712 if ( jQuery.fx.off ) { 7713 opt.duration = 0; 7714 7715 } else { 7716 if ( typeof opt.duration !== "number" ) { 7717 if ( opt.duration in jQuery.fx.speeds ) { 7718 opt.duration = jQuery.fx.speeds[ opt.duration ]; 7719 7720 } else { 7721 opt.duration = jQuery.fx.speeds._default; 7722 } 7723 } 7724 } 7725 7726 // Normalize opt.queue - true/undefined/null -> "fx" 7727 if ( opt.queue == null || opt.queue === true ) { 7728 opt.queue = "fx"; 7729 } 7730 7731 // Queueing 7732 opt.old = opt.complete; 7733 7734 opt.complete = function() { 7735 if ( isFunction( opt.old ) ) { 7736 opt.old.call( this ); 7737 } 7738 7739 if ( opt.queue ) { 7740 jQuery.dequeue( this, opt.queue ); 7741 } 7742 }; 7743 7744 return opt; 7745}; 7746 7747jQuery.fn.extend( { 7748 fadeTo: function( speed, to, easing, callback ) { 7749 7750 // Show any hidden elements after setting opacity to 0 7751 return this.filter( isHiddenWithinTree ).css( "opacity", 0 ).show() 7752 7753 // Animate to the value specified 7754 .end().animate( { opacity: to }, speed, easing, callback ); 7755 }, 7756 animate: function( prop, speed, easing, callback ) { 7757 var empty = jQuery.isEmptyObject( prop ), 7758 optall = jQuery.speed( speed, easing, callback ), 7759 doAnimation = function() { 7760 7761 // Operate on a copy of prop so per-property easing won't be lost 7762 var anim = Animation( this, jQuery.extend( {}, prop ), optall ); 7763 7764 // Empty animations, or finishing resolves immediately 7765 if ( empty || dataPriv.get( this, "finish" ) ) { 7766 anim.stop( true ); 7767 } 7768 }; 7769 7770 doAnimation.finish = doAnimation; 7771 7772 return empty || optall.queue === false ? 7773 this.each( doAnimation ) : 7774 this.queue( optall.queue, doAnimation ); 7775 }, 7776 stop: function( type, clearQueue, gotoEnd ) { 7777 var stopQueue = function( hooks ) { 7778 var stop = hooks.stop; 7779 delete hooks.stop; 7780 stop( gotoEnd ); 7781 }; 7782 7783 if ( typeof type !== "string" ) { 7784 gotoEnd = clearQueue; 7785 clearQueue = type; 7786 type = undefined; 7787 } 7788 if ( clearQueue ) { 7789 this.queue( type || "fx", [] ); 7790 } 7791 7792 return this.each( function() { 7793 var dequeue = true, 7794 index = type != null && type + "queueHooks", 7795 timers = jQuery.timers, 7796 data = dataPriv.get( this ); 7797 7798 if ( index ) { 7799 if ( data[ index ] && data[ index ].stop ) { 7800 stopQueue( data[ index ] ); 7801 } 7802 } else { 7803 for ( index in data ) { 7804 if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) { 7805 stopQueue( data[ index ] ); 7806 } 7807 } 7808 } 7809 7810 for ( index = timers.length; index--; ) { 7811 if ( timers[ index ].elem === this && 7812 ( type == null || timers[ index ].queue === type ) ) { 7813 7814 timers[ index ].anim.stop( gotoEnd ); 7815 dequeue = false; 7816 timers.splice( index, 1 ); 7817 } 7818 } 7819 7820 // Start the next in the queue if the last step wasn't forced. 7821 // Timers currently will call their complete callbacks, which 7822 // will dequeue but only if they were gotoEnd. 7823 if ( dequeue || !gotoEnd ) { 7824 jQuery.dequeue( this, type ); 7825 } 7826 } ); 7827 }, 7828 finish: function( type ) { 7829 if ( type !== false ) { 7830 type = type || "fx"; 7831 } 7832 return this.each( function() { 7833 var index, 7834 data = dataPriv.get( this ), 7835 queue = data[ type + "queue" ], 7836 hooks = data[ type + "queueHooks" ], 7837 timers = jQuery.timers, 7838 length = queue ? queue.length : 0; 7839 7840 // Enable finishing flag on private data 7841 data.finish = true; 7842 7843 // Empty the queue first 7844 jQuery.queue( this, type, [] ); 7845 7846 if ( hooks && hooks.stop ) { 7847 hooks.stop.call( this, true ); 7848 } 7849 7850 // Look for any active animations, and finish them 7851 for ( index = timers.length; index--; ) { 7852 if ( timers[ index ].elem === this && timers[ index ].queue === type ) { 7853 timers[ index ].anim.stop( true ); 7854 timers.splice( index, 1 ); 7855 } 7856 } 7857 7858 // Look for any animations in the old queue and finish them 7859 for ( index = 0; index < length; index++ ) { 7860 if ( queue[ index ] && queue[ index ].finish ) { 7861 queue[ index ].finish.call( this ); 7862 } 7863 } 7864 7865 // Turn off finishing flag 7866 delete data.finish; 7867 } ); 7868 } 7869} ); 7870 7871jQuery.each( [ "toggle", "show", "hide" ], function( _i, name ) { 7872 var cssFn = jQuery.fn[ name ]; 7873 jQuery.fn[ name ] = function( speed, easing, callback ) { 7874 return speed == null || typeof speed === "boolean" ? 7875 cssFn.apply( this, arguments ) : 7876 this.animate( genFx( name, true ), speed, easing, callback ); 7877 }; 7878} ); 7879 7880// Generate shortcuts for custom animations 7881jQuery.each( { 7882 slideDown: genFx( "show" ), 7883 slideUp: genFx( "hide" ), 7884 slideToggle: genFx( "toggle" ), 7885 fadeIn: { opacity: "show" }, 7886 fadeOut: { opacity: "hide" }, 7887 fadeToggle: { opacity: "toggle" } 7888}, function( name, props ) { 7889 jQuery.fn[ name ] = function( speed, easing, callback ) { 7890 return this.animate( props, speed, easing, callback ); 7891 }; 7892} ); 7893 7894jQuery.timers = []; 7895jQuery.fx.tick = function() { 7896 var timer, 7897 i = 0, 7898 timers = jQuery.timers; 7899 7900 fxNow = Date.now(); 7901 7902 for ( ; i < timers.length; i++ ) { 7903 timer = timers[ i ]; 7904 7905 // Run the timer and safely remove it when done (allowing for external removal) 7906 if ( !timer() && timers[ i ] === timer ) { 7907 timers.splice( i--, 1 ); 7908 } 7909 } 7910 7911 if ( !timers.length ) { 7912 jQuery.fx.stop(); 7913 } 7914 fxNow = undefined; 7915}; 7916 7917jQuery.fx.timer = function( timer ) { 7918 jQuery.timers.push( timer ); 7919 jQuery.fx.start(); 7920}; 7921 7922jQuery.fx.interval = 13; 7923jQuery.fx.start = function() { 7924 if ( inProgress ) { 7925 return; 7926 } 7927 7928 inProgress = true; 7929 schedule(); 7930}; 7931 7932jQuery.fx.stop = function() { 7933 inProgress = null; 7934}; 7935 7936jQuery.fx.speeds = { 7937 slow: 600, 7938 fast: 200, 7939 7940 // Default speed 7941 _default: 400 7942}; 7943 7944 7945// Based off of the plugin by Clint Helfers, with permission. 7946// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/
vendor: 21,001 bytes, lines 7947-8815
7947jQuery.fn.delay = function( time, type ) { 7948 time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time; 7949 type = type || "fx"; 7950 7951 return this.queue( type, function( next, hooks ) { 7952 var timeout = window.setTimeout( next, time ); 7953 hooks.stop = function() { 7954 window.clearTimeout( timeout ); 7955 }; 7956 } ); 7957}; 7958 7959 7960( function() { 7961 var input = document.createElement( "input" ), 7962 select = document.createElement( "select" ), 7963 opt = select.appendChild( document.createElement( "option" ) ); 7964 7965 input.type = "checkbox"; 7966 7967 // Support: Android <=4.3 only 7968 // Default value for a checkbox should be "on" 7969 support.checkOn = input.value !== ""; 7970 7971 // Support: IE <=11 only 7972 // Must access selectedIndex to make default options select 7973 support.optSelected = opt.selected; 7974 7975 // Support: IE <=11 only 7976 // An input loses its value after becoming a radio 7977 input = document.createElement( "input" ); 7978 input.value = "t"; 7979 input.type = "radio"; 7980 support.radioValue = input.value === "t"; 7981} )(); 7982 7983 7984var boolHook, 7985 attrHandle = jQuery.expr.attrHandle; 7986 7987jQuery.fn.extend( { 7988 attr: function( name, value ) { 7989 return access( this, jQuery.attr, name, value, arguments.length > 1 ); 7990 }, 7991 7992 removeAttr: function( name ) { 7993 return this.each( function() { 7994 jQuery.removeAttr( this, name ); 7995 } ); 7996 } 7997} ); 7998 7999jQuery.extend( { 8000 attr: function( elem, name, value ) { 8001 var ret, hooks, 8002 nType = elem.nodeType; 8003 8004 // Don't get/set attributes on text, comment and attribute nodes 8005 if ( nType === 3 || nType === 8 || nType === 2 ) { 8006 return; 8007 } 8008 8009 // Fallback to prop when attributes are not supported 8010 if ( typeof elem.getAttribute === "undefined" ) { 8011 return jQuery.prop( elem, name, value ); 8012 } 8013 8014 // Attribute hooks are determined by the lowercase version 8015 // Grab necessary hook if one is defined 8016 if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { 8017 hooks = jQuery.attrHooks[ name.toLowerCase() ] || 8018 ( jQuery.expr.match.bool.test( name ) ? boolHook : undefined ); 8019 } 8020 8021 if ( value !== undefined ) { 8022 if ( value === null ) { 8023 jQuery.removeAttr( elem, name ); 8024 return; 8025 } 8026 8027 if ( hooks && "set" in hooks && 8028 ( ret = hooks.set( elem, value, name ) ) !== undefined ) { 8029 return ret; 8030 } 8031 8032 elem.setAttribute( name, value + "" ); 8033 return value; 8034 } 8035 8036 if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { 8037 return ret; 8038 } 8039 8040 ret = jQuery.find.attr( elem, name ); 8041 8042 // Non-existent attributes return null, we normalize to undefined 8043 return ret == null ? undefined : ret; 8044 }, 8045 8046 attrHooks: { 8047 type: { 8048 set: function( elem, value ) { 8049 if ( !support.radioValue && value === "radio" && 8050 nodeName( elem, "input" ) ) { 8051 var val = elem.value; 8052 elem.setAttribute( "type", value ); 8053 if ( val ) { 8054 elem.value = val; 8055 } 8056 return value; 8057 } 8058 } 8059 } 8060 }, 8061 8062 removeAttr: function( elem, value ) { 8063 var name, 8064 i = 0, 8065 8066 // Attribute names can contain non-HTML whitespace characters 8067 // https://html.spec.whatwg.org/multipage/syntax.html#attributes-2 8068 attrNames = value && value.match( rnothtmlwhite ); 8069 8070 if ( attrNames && elem.nodeType === 1 ) { 8071 while ( ( name = attrNames[ i++ ] ) ) { 8072 elem.removeAttribute( name ); 8073 } 8074 } 8075 } 8076} ); 8077 8078// Hooks for boolean attributes 8079boolHook = { 8080 set: function( elem, value, name ) { 8081 if ( value === false ) { 8082 8083 // Remove boolean attributes when set to false 8084 jQuery.removeAttr( elem, name ); 8085 } else { 8086 elem.setAttribute( name, name ); 8087 } 8088 return name; 8089 } 8090}; 8091 8092jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( _i, name ) { 8093 var getter = attrHandle[ name ] || jQuery.find.attr; 8094 8095 attrHandle[ name ] = function( elem, name, isXML ) { 8096 var ret, handle, 8097 lowercaseName = name.toLowerCase(); 8098 8099 if ( !isXML ) { 8100 8101 // Avoid an infinite loop by temporarily removing this function from the getter 8102 handle = attrHandle[ lowercaseName ]; 8103 attrHandle[ lowercaseName ] = ret; 8104 ret = getter( elem, name, isXML ) != null ? 8105 lowercaseName : 8106 null; 8107 attrHandle[ lowercaseName ] = handle; 8108 } 8109 return ret; 8110 }; 8111} ); 8112 8113 8114 8115 8116var rfocusable = /^(?:input|select|textarea|button)$/i, 8117 rclickable = /^(?:a|area)$/i; 8118 8119jQuery.fn.extend( { 8120 prop: function( name, value ) { 8121 return access( this, jQuery.prop, name, value, arguments.length > 1 ); 8122 }, 8123 8124 removeProp: function( name ) { 8125 return this.each( function() { 8126 delete this[ jQuery.propFix[ name ] || name ]; 8127 } ); 8128 } 8129} ); 8130 8131jQuery.extend( { 8132 prop: function( elem, name, value ) { 8133 var ret, hooks, 8134 nType = elem.nodeType; 8135 8136 // Don't get/set properties on text, comment and attribute nodes 8137 if ( nType === 3 || nType === 8 || nType === 2 ) { 8138 return; 8139 } 8140 8141 if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) { 8142 8143 // Fix name and attach hooks 8144 name = jQuery.propFix[ name ] || name; 8145 hooks = jQuery.propHooks[ name ]; 8146 } 8147 8148 if ( value !== undefined ) { 8149 if ( hooks && "set" in hooks && 8150 ( ret = hooks.set( elem, value, name ) ) !== undefined ) { 8151 return ret; 8152 } 8153 8154 return ( elem[ name ] = value ); 8155 } 8156 8157 if ( hooks && "get" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) { 8158 return ret; 8159 } 8160 8161 return elem[ name ]; 8162 }, 8163 8164 propHooks: { 8165 tabIndex: { 8166 get: function( elem ) { 8167 8168 // Support: IE <=9 - 11 only 8169 // elem.tabIndex doesn't always return the 8170 // correct value when it hasn't been explicitly set 8171 // https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/ 8172 // Use proper attribute retrieval(#12072) 8173 var tabindex = jQuery.find.attr( elem, "tabindex" ); 8174 8175 if ( tabindex ) { 8176 return parseInt( tabindex, 10 ); 8177 } 8178 8179 if ( 8180 rfocusable.test( elem.nodeName ) || 8181 rclickable.test( elem.nodeName ) && 8182 elem.href 8183 ) { 8184 return 0; 8185 } 8186 8187 return -1; 8188 } 8189 } 8190 }, 8191 8192 propFix: { 8193 "for": "htmlFor", 8194 "class": "className" 8195 } 8196} ); 8197 8198// Support: IE <=11 only 8199// Accessing the selectedIndex property 8200// forces the browser to respect setting selected 8201// on the option 8202// The getter ensures a default option is selected 8203// when in an optgroup 8204// eslint rule "no-unused-expressions" is disabled for this code 8205// since it considers such accessions noop 8206if ( !support.optSelected ) { 8207 jQuery.propHooks.selected = { 8208 get: function( elem ) { 8209 8210 /* eslint no-unused-expressions: "off" */ 8211 8212 var parent = elem.parentNode; 8213 if ( parent && parent.parentNode ) { 8214 parent.parentNode.selectedIndex; 8215 } 8216 return null; 8217 }, 8218 set: function( elem ) { 8219 8220 /* eslint no-unused-expressions: "off" */ 8221 8222 var parent = elem.parentNode; 8223 if ( parent ) { 8224 parent.selectedIndex; 8225 8226 if ( parent.parentNode ) { 8227 parent.parentNode.selectedIndex; 8228 } 8229 } 8230 } 8231 }; 8232} 8233 8234jQuery.each( [ 8235 "tabIndex", 8236 "readOnly", 8237 "maxLength", 8238 "cellSpacing", 8239 "cellPadding", 8240 "rowSpan", 8241 "colSpan", 8242 "useMap", 8243 "frameBorder", 8244 "contentEditable" 8245], function() { 8246 jQuery.propFix[ this.toLowerCase() ] = this; 8247} ); 8248 8249 8250 8251 8252 // Strip and collapse whitespace according to HTML spec 8253 // https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace 8254 function stripAndCollapse( value ) { 8255 var tokens = value.match( rnothtmlwhite ) || []; 8256 return tokens.join( " " ); 8257 } 8258 8259 8260function getClass( elem ) { 8261 return elem.getAttribute && elem.getAttribute( "class" ) || ""; 8262} 8263 8264function classesToArray( value ) { 8265 if ( Array.isArray( value ) ) { 8266 return value; 8267 } 8268 if ( typeof value === "string" ) { 8269 return value.match( rnothtmlwhite ) || []; 8270 } 8271 return []; 8272} 8273 8274jQuery.fn.extend( { 8275 addClass: function( value ) { 8276 var classes, elem, cur, curValue, clazz, j, finalValue, 8277 i = 0; 8278 8279 if ( isFunction( value ) ) { 8280 return this.each( function( j ) { 8281 jQuery( this ).addClass( value.call( this, j, getClass( this ) ) ); 8282 } ); 8283 } 8284 8285 classes = classesToArray( value ); 8286 8287 if ( classes.length ) { 8288 while ( ( elem = this[ i++ ] ) ) { 8289 curValue = getClass( elem ); 8290 cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); 8291 8292 if ( cur ) { 8293 j = 0; 8294 while ( ( clazz = classes[ j++ ] ) ) { 8295 if ( cur.indexOf( " " + clazz + " " ) < 0 ) { 8296 cur += clazz + " "; 8297 } 8298 } 8299 8300 // Only assign if different to avoid unneeded rendering. 8301 finalValue = stripAndCollapse( cur ); 8302 if ( curValue !== finalValue ) { 8303 elem.setAttribute( "class", finalValue ); 8304 } 8305 } 8306 } 8307 } 8308 8309 return this; 8310 }, 8311 8312 removeClass: function( value ) { 8313 var classes, elem, cur, curValue, clazz, j, finalValue, 8314 i = 0; 8315 8316 if ( isFunction( value ) ) { 8317 return this.each( function( j ) { 8318 jQuery( this ).removeClass( value.call( this, j, getClass( this ) ) ); 8319 } ); 8320 } 8321 8322 if ( !arguments.length ) { 8323 return this.attr( "class", "" ); 8324 } 8325 8326 classes = classesToArray( value ); 8327 8328 if ( classes.length ) { 8329 while ( ( elem = this[ i++ ] ) ) { 8330 curValue = getClass( elem ); 8331 8332 // This expression is here for better compressibility (see addClass) 8333 cur = elem.nodeType === 1 && ( " " + stripAndCollapse( curValue ) + " " ); 8334 8335 if ( cur ) { 8336 j = 0; 8337 while ( ( clazz = classes[ j++ ] ) ) { 8338 8339 // Remove *all* instances 8340 while ( cur.indexOf( " " + clazz + " " ) > -1 ) { 8341 cur = cur.replace( " " + clazz + " ", " " ); 8342 } 8343 } 8344 8345 // Only assign if different to avoid unneeded rendering. 8346 finalValue = stripAndCollapse( cur ); 8347 if ( curValue !== finalValue ) { 8348 elem.setAttribute( "class", finalValue ); 8349 } 8350 } 8351 } 8352 } 8353 8354 return this; 8355 }, 8356 8357 toggleClass: function( value, stateVal ) { 8358 var type = typeof value, 8359 isValidValue = type === "string" || Array.isArray( value ); 8360 8361 if ( typeof stateVal === "boolean" && isValidValue ) { 8362 return stateVal ? this.addClass( value ) : this.removeClass( value ); 8363 } 8364 8365 if ( isFunction( value ) ) { 8366 return this.each( function( i ) { 8367 jQuery( this ).toggleClass( 8368 value.call( this, i, getClass( this ), stateVal ), 8369 stateVal 8370 ); 8371 } ); 8372 } 8373 8374 return this.each( function() { 8375 var className, i, self, classNames; 8376 8377 if ( isValidValue ) { 8378 8379 // Toggle individual class names 8380 i = 0; 8381 self = jQuery( this ); 8382 classNames = classesToArray( value ); 8383 8384 while ( ( className = classNames[ i++ ] ) ) { 8385 8386 // Check each className given, space separated list 8387 if ( self.hasClass( className ) ) { 8388 self.removeClass( className ); 8389 } else { 8390 self.addClass( className ); 8391 } 8392 } 8393 8394 // Toggle whole class name 8395 } else if ( value === undefined || type === "boolean" ) { 8396 className = getClass( this ); 8397 if ( className ) { 8398 8399 // Store className if set 8400 dataPriv.set( this, "__className__", className ); 8401 } 8402 8403 // If the element has a class name or if we're passed `false`, 8404 // then remove the whole classname (if there was one, the above saved it). 8405 // Otherwise bring back whatever was previously saved (if anything), 8406 // falling back to the empty string if nothing was stored. 8407 if ( this.setAttribute ) { 8408 this.setAttribute( "class", 8409 className || value === false ? 8410 "" : 8411 dataPriv.get( this, "__className__" ) || "" 8412 ); 8413 } 8414 } 8415 } ); 8416 }, 8417 8418 hasClass: function( selector ) { 8419 var className, elem, 8420 i = 0; 8421 8422 className = " " + selector + " "; 8423 while ( ( elem = this[ i++ ] ) ) { 8424 if ( elem.nodeType === 1 && 8425 ( " " + stripAndCollapse( getClass( elem ) ) + " " ).indexOf( className ) > -1 ) { 8426 return true; 8427 } 8428 } 8429 8430 return false; 8431 } 8432} ); 8433 8434 8435 8436 8437var rreturn = /\r/g; 8438 8439jQuery.fn.extend( { 8440 val: function( value ) { 8441 var hooks, ret, valueIsFunction, 8442 elem = this[ 0 ]; 8443 8444 if ( !arguments.length ) { 8445 if ( elem ) { 8446 hooks = jQuery.valHooks[ elem.type ] || 8447 jQuery.valHooks[ elem.nodeName.toLowerCase() ]; 8448 8449 if ( hooks && 8450 "get" in hooks && 8451 ( ret = hooks.get( elem, "value" ) ) !== undefined 8452 ) { 8453 return ret; 8454 } 8455 8456 ret = elem.value; 8457 8458 // Handle most common string cases 8459 if ( typeof ret === "string" ) { 8460 return ret.replace( rreturn, "" ); 8461 } 8462 8463 // Handle cases where value is null/undef or number 8464 return ret == null ? "" : ret; 8465 } 8466 8467 return; 8468 } 8469 8470 valueIsFunction = isFunction( value ); 8471 8472 return this.each( function( i ) { 8473 var val; 8474 8475 if ( this.nodeType !== 1 ) { 8476 return; 8477 } 8478 8479 if ( valueIsFunction ) { 8480 val = value.call( this, i, jQuery( this ).val() ); 8481 } else { 8482 val = value; 8483 } 8484 8485 // Treat null/undefined as ""; convert numbers to string 8486 if ( val == null ) { 8487 val = ""; 8488 8489 } else if ( typeof val === "number" ) { 8490 val += ""; 8491 8492 } else if ( Array.isArray( val ) ) { 8493 val = jQuery.map( val, function( value ) { 8494 return value == null ? "" : value + ""; 8495 } ); 8496 } 8497 8498 hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ]; 8499 8500 // If set returns undefined, fall back to normal setting 8501 if ( !hooks || !( "set" in hooks ) || hooks.set( this, val, "value" ) === undefined ) { 8502 this.value = val; 8503 } 8504 } ); 8505 } 8506} ); 8507 8508jQuery.extend( { 8509 valHooks: { 8510 option: { 8511 get: function( elem ) { 8512 8513 var val = jQuery.find.attr( elem, "value" ); 8514 return val != null ? 8515 val : 8516 8517 // Support: IE <=10 - 11 only 8518 // option.text throws exceptions (#14686, #14858) 8519 // Strip and collapse whitespace 8520 // https://html.spec.whatwg.org/#strip-and-collapse-whitespace 8521 stripAndCollapse( jQuery.text( elem ) ); 8522 } 8523 }, 8524 select: { 8525 get: function( elem ) { 8526 var value, option, i, 8527 options = elem.options, 8528 index = elem.selectedIndex, 8529 one = elem.type === "select-one", 8530 values = one ? null : [], 8531 max = one ? index + 1 : options.length; 8532 8533 if ( index < 0 ) { 8534 i = max; 8535 8536 } else { 8537 i = one ? index : 0; 8538 } 8539 8540 // Loop through all the selected options 8541 for ( ; i < max; i++ ) { 8542 option = options[ i ]; 8543 8544 // Support: IE <=9 only 8545 // IE8-9 doesn't update selected after form reset (#2551) 8546 if ( ( option.selected || i === index ) && 8547 8548 // Don't return options that are disabled or in a disabled optgroup 8549 !option.disabled && 8550 ( !option.parentNode.disabled || 8551 !nodeName( option.parentNode, "optgroup" ) ) ) { 8552 8553 // Get the specific value for the option 8554 value = jQuery( option ).val(); 8555 8556 // We don't need an array for one selects 8557 if ( one ) { 8558 return value; 8559 } 8560 8561 // Multi-Selects return an array 8562 values.push( value ); 8563 } 8564 } 8565 8566 return values; 8567 }, 8568 8569 set: function( elem, value ) { 8570 var optionSet, option, 8571 options = elem.options, 8572 values = jQuery.makeArray( value ), 8573 i = options.length; 8574 8575 while ( i-- ) { 8576 option = options[ i ]; 8577 8578 /* eslint-disable no-cond-assign */ 8579 8580 if ( option.selected = 8581 jQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1 8582 ) { 8583 optionSet = true; 8584 } 8585 8586 /* eslint-enable no-cond-assign */ 8587 } 8588 8589 // Force browsers to behave consistently when non-matching value is set 8590 if ( !optionSet ) { 8591 elem.selectedIndex = -1; 8592 } 8593 return values; 8594 } 8595 } 8596 } 8597} ); 8598 8599// Radios and checkboxes getter/setter 8600jQuery.each( [ "radio", "checkbox" ], function() { 8601 jQuery.valHooks[ this ] = { 8602 set: function( elem, value ) { 8603 if ( Array.isArray( value ) ) { 8604 return ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 ); 8605 } 8606 } 8607 }; 8608 if ( !support.checkOn ) { 8609 jQuery.valHooks[ this ].get = function( elem ) { 8610 return elem.getAttribute( "value" ) === null ? "on" : elem.value; 8611 }; 8612 } 8613} ); 8614 8615 8616 8617 8618// Return jQuery for attributes-only inclusion 8619 8620 8621support.focusin = "onfocusin" in window; 8622 8623 8624var rfocusMorph = /^(?:focusinfocus|focusoutblur)$/, 8625 stopPropagationCallback = function( e ) { 8626 e.stopPropagation(); 8627 }; 8628 8629jQuery.extend( jQuery.event, { 8630 8631 trigger: function( event, data, elem, onlyHandlers ) { 8632 8633 var i, cur, tmp, bubbleType, ontype, handle, special, lastElement, 8634 eventPath = [ elem || document ], 8635 type = hasOwn.call( event, "type" ) ? event.type : event, 8636 namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split( "." ) : []; 8637 8638 cur = lastElement = tmp = elem = elem || document; 8639 8640 // Don't do events on text and comment nodes 8641 if ( elem.nodeType === 3 || elem.nodeType === 8 ) { 8642 return; 8643 } 8644 8645 // focus/blur morphs to focusin/out; ensure we're not firing them right now 8646 if ( rfocusMorph.test( type + jQuery.event.triggered ) ) { 8647 return; 8648 } 8649 8650 if ( type.indexOf( "." ) > -1 ) { 8651 8652 // Namespaced trigger; create a regexp to match event type in handle() 8653 namespaces = type.split( "." ); 8654 type = namespaces.shift(); 8655 namespaces.sort(); 8656 } 8657 ontype = type.indexOf( ":" ) < 0 && "on" + type; 8658 8659 // Caller can pass in a jQuery.Event object, Object, or just an event type string 8660 event = event[ jQuery.expando ] ? 8661 event : 8662 new jQuery.Event( type, typeof event === "object" && event ); 8663 8664 // Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true) 8665 event.isTrigger = onlyHandlers ? 2 : 3; 8666 event.namespace = namespaces.join( "." ); 8667 event.rnamespace = event.namespace ? 8668 new RegExp( "(^|\\.)" + namespaces.join( "\\.(?:.*\\.|)" ) + "(\\.|$)" ) : 8669 null; 8670 8671 // Clean up the event in case it is being reused 8672 event.result = undefined; 8673 if ( !event.target ) { 8674 event.target = elem; 8675 } 8676 8677 // Clone any incoming data and prepend the event, creating the handler arg list 8678 data = data == null ? 8679 [ event ] : 8680 jQuery.makeArray( data, [ event ] ); 8681 8682 // Allow special events to draw outside the lines 8683 special = jQuery.event.special[ type ] || {}; 8684 if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) { 8685 return; 8686 } 8687 8688 // Determine event propagation path in advance, per W3C events spec (#9951) 8689 // Bubble up to document, then to window; watch for a global ownerDocument var (#9724) 8690 if ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) { 8691 8692 bubbleType = special.delegateType || type; 8693 if ( !rfocusMorph.test( bubbleType + type ) ) { 8694 cur = cur.parentNode; 8695 } 8696 for ( ; cur; cur = cur.parentNode ) { 8697 eventPath.push( cur ); 8698 tmp = cur; 8699 } 8700 8701 // Only add window if we got to document (e.g., not plain obj or detached DOM) 8702 if ( tmp === ( elem.ownerDocument || document ) ) { 8703 eventPath.push( tmp.defaultView || tmp.parentWindow || window ); 8704 } 8705 } 8706 8707 // Fire handlers on the event path 8708 i = 0; 8709 while ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) { 8710 lastElement = cur; 8711 event.type = i > 1 ? 8712 bubbleType : 8713 special.bindType || type; 8714 8715 // jQuery handler 8716 handle = ( dataPriv.get( cur, "events" ) || Object.create( null ) )[ event.type ] && 8717 dataPriv.get( cur, "handle" ); 8718 if ( handle ) { 8719 handle.apply( cur, data ); 8720 } 8721 8722 // Native handler 8723 handle = ontype && cur[ ontype ]; 8724 if ( handle && handle.apply && acceptData( cur ) ) { 8725 event.result = handle.apply( cur, data ); 8726 if ( event.result === false ) { 8727 event.preventDefault(); 8728 } 8729 } 8730 } 8731 event.type = type; 8732 8733 // If nobody prevented the default action, do it now 8734 if ( !onlyHandlers && !event.isDefaultPrevented() ) { 8735 8736 if ( ( !special._default || 8737 special._default.apply( eventPath.pop(), data ) === false ) && 8738 acceptData( elem ) ) { 8739 8740 // Call a native DOM method on the target with the same name as the event. 8741 // Don't do default actions on window, that's where global variables be (#6170) 8742 if ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) { 8743 8744 // Don't re-trigger an onFOO event when we call its FOO() method 8745 tmp = elem[ ontype ]; 8746 8747 if ( tmp ) { 8748 elem[ ontype ] = null; 8749 } 8750 8751 // Prevent re-triggering of the same event, since we already bubbled it above 8752 jQuery.event.triggered = type; 8753 8754 if ( event.isPropagationStopped() ) { 8755 lastElement.addEventListener( type, stopPropagationCallback ); 8756 } 8757 8758 elem[ type ](); 8759 8760 if ( event.isPropagationStopped() ) { 8761 lastElement.removeEventListener( type, stopPropagationCallback ); 8762 } 8763 8764 jQuery.event.triggered = undefined; 8765 8766 if ( tmp ) { 8767 elem[ ontype ] = tmp; 8768 } 8769 } 8770 } 8771 } 8772 8773 return event.result; 8774 }, 8775 8776 // Piggyback on a donor event to simulate a different one 8777 // Used only for `focus(in | out)` events 8778 simulate: function( type, elem, event ) { 8779 var e = jQuery.extend( 8780 new jQuery.Event(), 8781 event, 8782 { 8783 type: type, 8784 isSimulated: true 8785 } 8786 ); 8787 8788 jQuery.event.trigger( e, null, elem ); 8789 } 8790 8791} ); 8792 8793jQuery.fn.extend( { 8794 8795 trigger: function( type, data ) { 8796 return this.each( function() { 8797 jQuery.event.trigger( type, data, this ); 8798 } ); 8799 }, 8800 triggerHandler: function( type, data ) { 8801 var elem = this[ 0 ]; 8802 if ( elem ) { 8803 return jQuery.event.trigger( type, data, elem, true ); 8804 } 8805 } 8806} ); 8807 8808 8809// Support: Firefox <=44 8810// Firefox doesn't have focus(in | out) events 8811// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787 8812// 8813// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1 8814// focus(in | out) events fire after focus & blur events, 8815// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order
vendor: 54,284 bytes, lines 8816-10878
8816// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857 8817if ( !support.focusin ) { 8818 jQuery.each( { focus: "focusin", blur: "focusout" }, function( orig, fix ) { 8819 8820 // Attach a single capturing handler on the document while someone wants focusin/focusout 8821 var handler = function( event ) { 8822 jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) ); 8823 }; 8824 8825 jQuery.event.special[ fix ] = { 8826 setup: function() { 8827 8828 // Handle: regular nodes (via `this.ownerDocument`), window 8829 // (via `this.document`) & document (via `this`). 8830 var doc = this.ownerDocument || this.document || this, 8831 attaches = dataPriv.access( doc, fix ); 8832 8833 if ( !attaches ) { 8834 doc.addEventListener( orig, handler, true ); 8835 } 8836 dataPriv.access( doc, fix, ( attaches || 0 ) + 1 ); 8837 }, 8838 teardown: function() { 8839 var doc = this.ownerDocument || this.document || this, 8840 attaches = dataPriv.access( doc, fix ) - 1; 8841 8842 if ( !attaches ) { 8843 doc.removeEventListener( orig, handler, true ); 8844 dataPriv.remove( doc, fix ); 8845 8846 } else { 8847 dataPriv.access( doc, fix, attaches ); 8848 } 8849 } 8850 }; 8851 } ); 8852} 8853var location = window.location; 8854 8855var nonce = { guid: Date.now() }; 8856 8857var rquery = ( /\?/ ); 8858 8859 8860 8861// Cross-browser xml parsing 8862jQuery.parseXML = function( data ) { 8863 var xml, parserErrorElem; 8864 if ( !data || typeof data !== "string" ) { 8865 return null; 8866 } 8867 8868 // Support: IE 9 - 11 only 8869 // IE throws on parseFromString with invalid input. 8870 try { 8871 xml = ( new window.DOMParser() ).parseFromString( data, "text/xml" ); 8872 } catch ( e ) {} 8873 8874 parserErrorElem = xml && xml.getElementsByTagName( "parsererror" )[ 0 ]; 8875 if ( !xml || parserErrorElem ) { 8876 jQuery.error( "Invalid XML: " + ( 8877 parserErrorElem ? 8878 jQuery.map( parserErrorElem.childNodes, function( el ) { 8879 return el.textContent; 8880 } ).join( "\n" ) : 8881 data 8882 ) ); 8883 } 8884 return xml; 8885}; 8886 8887 8888var 8889 rbracket = /\[\]$/, 8890 rCRLF = /\r?\n/g, 8891 rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i, 8892 rsubmittable = /^(?:input|select|textarea|keygen)/i; 8893 8894function buildParams( prefix, obj, traditional, add ) { 8895 var name; 8896 8897 if ( Array.isArray( obj ) ) { 8898 8899 // Serialize array item. 8900 jQuery.each( obj, function( i, v ) { 8901 if ( traditional || rbracket.test( prefix ) ) { 8902 8903 // Treat each array item as a scalar. 8904 add( prefix, v ); 8905 8906 } else { 8907 8908 // Item is non-scalar (array or object), encode its numeric index. 8909 buildParams( 8910 prefix + "[" + ( typeof v === "object" && v != null ? i : "" ) + "]", 8911 v, 8912 traditional, 8913 add 8914 ); 8915 } 8916 } ); 8917 8918 } else if ( !traditional && toType( obj ) === "object" ) { 8919 8920 // Serialize object item. 8921 for ( name in obj ) { 8922 buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add ); 8923 } 8924 8925 } else { 8926 8927 // Serialize scalar item. 8928 add( prefix, obj ); 8929 } 8930} 8931 8932// Serialize an array of form elements or a set of 8933// key/values into a query string 8934jQuery.param = function( a, traditional ) { 8935 var prefix, 8936 s = [], 8937 add = function( key, valueOrFunction ) { 8938 8939 // If value is a function, invoke it and use its return value 8940 var value = isFunction( valueOrFunction ) ? 8941 valueOrFunction() : 8942 valueOrFunction; 8943 8944 s[ s.length ] = encodeURIComponent( key ) + "=" + 8945 encodeURIComponent( value == null ? "" : value ); 8946 }; 8947 8948 if ( a == null ) { 8949 return ""; 8950 } 8951 8952 // If an array was passed in, assume that it is an array of form elements. 8953 if ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) { 8954 8955 // Serialize the form elements 8956 jQuery.each( a, function() { 8957 add( this.name, this.value ); 8958 } ); 8959 8960 } else { 8961 8962 // If traditional, encode the "old" way (the way 1.3.2 or older 8963 // did it), otherwise encode params recursively. 8964 for ( prefix in a ) { 8965 buildParams( prefix, a[ prefix ], traditional, add ); 8966 } 8967 } 8968 8969 // Return the resulting serialization 8970 return s.join( "&" ); 8971}; 8972 8973jQuery.fn.extend( { 8974 serialize: function() { 8975 return jQuery.param( this.serializeArray() ); 8976 }, 8977 serializeArray: function() { 8978 return this.map( function() { 8979 8980 // Can add propHook for "elements" to filter or add form elements 8981 var elements = jQuery.prop( this, "elements" ); 8982 return elements ? jQuery.makeArray( elements ) : this; 8983 } ).filter( function() { 8984 var type = this.type; 8985 8986 // Use .is( ":disabled" ) so that fieldset[disabled] works 8987 return this.name && !jQuery( this ).is( ":disabled" ) && 8988 rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) && 8989 ( this.checked || !rcheckableType.test( type ) ); 8990 } ).map( function( _i, elem ) { 8991 var val = jQuery( this ).val(); 8992 8993 if ( val == null ) { 8994 return null; 8995 } 8996 8997 if ( Array.isArray( val ) ) { 8998 return jQuery.map( val, function( val ) { 8999 return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; 9000 } ); 9001 } 9002 9003 return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) }; 9004 } ).get(); 9005 } 9006} ); 9007 9008 9009var 9010 r20 = /%20/g, 9011 rhash = /#.*$/, 9012 rantiCache = /([?&])_=[^&]*/, 9013 rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg, 9014 9015 // #7653, #8125, #8152: local protocol detection 9016 rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/, 9017 rnoContent = /^(?:GET|HEAD)$/, 9018 rprotocol = /^\/\//, 9019 9020 /* Prefilters 9021 * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example) 9022 * 2) These are called: 9023 * - BEFORE asking for a transport 9024 * - AFTER param serialization (s.data is a string if s.processData is true) 9025 * 3) key is the dataType 9026 * 4) the catchall symbol "*" can be used 9027 * 5) execution will start with transport dataType and THEN continue down to "*" if needed 9028 */ 9029 prefilters = {}, 9030 9031 /* Transports bindings 9032 * 1) key is the dataType 9033 * 2) the catchall symbol "*" can be used 9034 * 3) selection will start with transport dataType and THEN go to "*" if needed 9035 */ 9036 transports = {}, 9037 9038 // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression 9039 allTypes = "*/".concat( "*" ), 9040 9041 // Anchor tag for parsing the document origin 9042 originAnchor = document.createElement( "a" ); 9043 9044originAnchor.href = location.href; 9045 9046// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport 9047function addToPrefiltersOrTransports( structure ) { 9048 9049 // dataTypeExpression is optional and defaults to "*" 9050 return function( dataTypeExpression, func ) { 9051 9052 if ( typeof dataTypeExpression !== "string" ) { 9053 func = dataTypeExpression; 9054 dataTypeExpression = "*"; 9055 } 9056 9057 var dataType, 9058 i = 0, 9059 dataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || []; 9060 9061 if ( isFunction( func ) ) { 9062 9063 // For each dataType in the dataTypeExpression 9064 while ( ( dataType = dataTypes[ i++ ] ) ) { 9065 9066 // Prepend if requested 9067 if ( dataType[ 0 ] === "+" ) { 9068 dataType = dataType.slice( 1 ) || "*"; 9069 ( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func ); 9070 9071 // Otherwise append 9072 } else { 9073 ( structure[ dataType ] = structure[ dataType ] || [] ).push( func ); 9074 } 9075 } 9076 } 9077 }; 9078} 9079 9080// Base inspection function for prefilters and transports 9081function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) { 9082 9083 var inspected = {}, 9084 seekingTransport = ( structure === transports ); 9085 9086 function inspect( dataType ) { 9087 var selected; 9088 inspected[ dataType ] = true; 9089 jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) { 9090 var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR ); 9091 if ( typeof dataTypeOrTransport === "string" && 9092 !seekingTransport && !inspected[ dataTypeOrTransport ] ) { 9093 9094 options.dataTypes.unshift( dataTypeOrTransport ); 9095 inspect( dataTypeOrTransport ); 9096 return false; 9097 } else if ( seekingTransport ) { 9098 return !( selected = dataTypeOrTransport ); 9099 } 9100 } ); 9101 return selected; 9102 } 9103 9104 return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" ); 9105} 9106 9107// A special extend for ajax options 9108// that takes "flat" options (not to be deep extended) 9109// Fixes #9887 9110function ajaxExtend( target, src ) { 9111 var key, deep, 9112 flatOptions = jQuery.ajaxSettings.flatOptions || {}; 9113 9114 for ( key in src ) { 9115 if ( src[ key ] !== undefined ) { 9116 ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ]; 9117 } 9118 } 9119 if ( deep ) { 9120 jQuery.extend( true, target, deep ); 9121 } 9122 9123 return target; 9124} 9125 9126/* Handles responses to an ajax request: 9127 * - finds the right dataType (mediates between content-type and expected dataType) 9128 * - returns the corresponding response 9129 */ 9130function ajaxHandleResponses( s, jqXHR, responses ) { 9131 9132 var ct, type, finalDataType, firstDataType, 9133 contents = s.contents, 9134 dataTypes = s.dataTypes; 9135 9136 // Remove auto dataType and get content-type in the process 9137 while ( dataTypes[ 0 ] === "*" ) { 9138 dataTypes.shift(); 9139 if ( ct === undefined ) { 9140 ct = s.mimeType || jqXHR.getResponseHeader( "Content-Type" ); 9141 } 9142 } 9143 9144 // Check if we're dealing with a known content-type 9145 if ( ct ) { 9146 for ( type in contents ) { 9147 if ( contents[ type ] && contents[ type ].test( ct ) ) { 9148 dataTypes.unshift( type ); 9149 break; 9150 } 9151 } 9152 } 9153 9154 // Check to see if we have a response for the expected dataType 9155 if ( dataTypes[ 0 ] in responses ) { 9156 finalDataType = dataTypes[ 0 ]; 9157 } else { 9158 9159 // Try convertible dataTypes 9160 for ( type in responses ) { 9161 if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[ 0 ] ] ) { 9162 finalDataType = type; 9163 break; 9164 } 9165 if ( !firstDataType ) { 9166 firstDataType = type; 9167 } 9168 } 9169 9170 // Or just use first one 9171 finalDataType = finalDataType || firstDataType; 9172 } 9173 9174 // If we found a dataType 9175 // We add the dataType to the list if needed 9176 // and return the corresponding response 9177 if ( finalDataType ) { 9178 if ( finalDataType !== dataTypes[ 0 ] ) { 9179 dataTypes.unshift( finalDataType ); 9180 } 9181 return responses[ finalDataType ]; 9182 } 9183} 9184 9185/* Chain conversions given the request and the original response 9186 * Also sets the responseXXX fields on the jqXHR instance 9187 */ 9188function ajaxConvert( s, response, jqXHR, isSuccess ) { 9189 var conv2, current, conv, tmp, prev, 9190 converters = {}, 9191 9192 // Work with a copy of dataTypes in case we need to modify it for conversion 9193 dataTypes = s.dataTypes.slice(); 9194 9195 // Create converters map with lowercased keys 9196 if ( dataTypes[ 1 ] ) { 9197 for ( conv in s.converters ) { 9198 converters[ conv.toLowerCase() ] = s.converters[ conv ]; 9199 } 9200 } 9201 9202 current = dataTypes.shift(); 9203 9204 // Convert to each sequential dataType 9205 while ( current ) { 9206 9207 if ( s.responseFields[ current ] ) { 9208 jqXHR[ s.responseFields[ current ] ] = response; 9209 } 9210 9211 // Apply the dataFilter if provided 9212 if ( !prev && isSuccess && s.dataFilter ) { 9213 response = s.dataFilter( response, s.dataType ); 9214 } 9215 9216 prev = current; 9217 current = dataTypes.shift(); 9218 9219 if ( current ) { 9220 9221 // There's only work to do if current dataType is non-auto 9222 if ( current === "*" ) { 9223 9224 current = prev; 9225 9226 // Convert response if prev dataType is non-auto and differs from current 9227 } else if ( prev !== "*" && prev !== current ) { 9228 9229 // Seek a direct converter 9230 conv = converters[ prev + " " + current ] || converters[ "* " + current ]; 9231 9232 // If none found, seek a pair 9233 if ( !conv ) { 9234 for ( conv2 in converters ) { 9235 9236 // If conv2 outputs current 9237 tmp = conv2.split( " " ); 9238 if ( tmp[ 1 ] === current ) { 9239 9240 // If prev can be converted to accepted input 9241 conv = converters[ prev + " " + tmp[ 0 ] ] || 9242 converters[ "* " + tmp[ 0 ] ]; 9243 if ( conv ) { 9244 9245 // Condense equivalence converters 9246 if ( conv === true ) { 9247 conv = converters[ conv2 ]; 9248 9249 // Otherwise, insert the intermediate dataType 9250 } else if ( converters[ conv2 ] !== true ) { 9251 current = tmp[ 0 ]; 9252 dataTypes.unshift( tmp[ 1 ] ); 9253 } 9254 break; 9255 } 9256 } 9257 } 9258 } 9259 9260 // Apply converter (if not an equivalence) 9261 if ( conv !== true ) { 9262 9263 // Unless errors are allowed to bubble, catch and return them 9264 if ( conv && s.throws ) { 9265 response = conv( response ); 9266 } else { 9267 try { 9268 response = conv( response ); 9269 } catch ( e ) { 9270 return { 9271 state: "parsererror", 9272 error: conv ? e : "No conversion from " + prev + " to " + current 9273 }; 9274 } 9275 } 9276 } 9277 } 9278 } 9279 } 9280 9281 return { state: "success", data: response }; 9282} 9283 9284jQuery.extend( { 9285 9286 // Counter for holding the number of active queries 9287 active: 0, 9288 9289 // Last-Modified header cache for next request 9290 lastModified: {}, 9291 etag: {}, 9292 9293 ajaxSettings: { 9294 url: location.href, 9295 type: "GET", 9296 isLocal: rlocalProtocol.test( location.protocol ), 9297 global: true, 9298 processData: true, 9299 async: true, 9300 contentType: "application/x-www-form-urlencoded; charset=UTF-8", 9301 9302 /* 9303 timeout: 0, 9304 data: null, 9305 dataType: null, 9306 username: null, 9307 password: null, 9308 cache: null, 9309 throws: false, 9310 traditional: false, 9311 headers: {}, 9312 */ 9313 9314 accepts: { 9315 "*": allTypes, 9316 text: "text/plain", 9317 html: "text/html", 9318 xml: "application/xml, text/xml", 9319 json: "application/json, text/javascript" 9320 }, 9321 9322 contents: { 9323 xml: /\bxml\b/, 9324 html: /\bhtml/, 9325 json: /\bjson\b/ 9326 }, 9327 9328 responseFields: { 9329 xml: "responseXML", 9330 text: "responseText", 9331 json: "responseJSON" 9332 }, 9333 9334 // Data converters 9335 // Keys separate source (or catchall "*") and destination types with a single space 9336 converters: { 9337 9338 // Convert anything to text 9339 "* text": String, 9340 9341 // Text to html (true = no transformation) 9342 "text html": true, 9343 9344 // Evaluate text as a json expression 9345 "text json": JSON.parse, 9346 9347 // Parse text as xml 9348 "text xml": jQuery.parseXML 9349 }, 9350 9351 // For options that shouldn't be deep extended: 9352 // you can add your own custom options here if 9353 // and when you create one that shouldn't be 9354 // deep extended (see ajaxExtend) 9355 flatOptions: { 9356 url: true, 9357 context: true 9358 } 9359 }, 9360 9361 // Creates a full fledged settings object into target 9362 // with both ajaxSettings and settings fields. 9363 // If target is omitted, writes into ajaxSettings. 9364 ajaxSetup: function( target, settings ) { 9365 return settings ? 9366 9367 // Building a settings object 9368 ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) : 9369 9370 // Extending ajaxSettings 9371 ajaxExtend( jQuery.ajaxSettings, target ); 9372 }, 9373 9374 ajaxPrefilter: addToPrefiltersOrTransports( prefilters ), 9375 ajaxTransport: addToPrefiltersOrTransports( transports ), 9376 9377 // Main method 9378 ajax: function( url, options ) { 9379 9380 // If url is an object, simulate pre-1.5 signature 9381 if ( typeof url === "object" ) { 9382 options = url; 9383 url = undefined; 9384 } 9385 9386 // Force options to be an object 9387 options = options || {}; 9388 9389 var transport, 9390 9391 // URL without anti-cache param 9392 cacheURL, 9393 9394 // Response headers 9395 responseHeadersString, 9396 responseHeaders, 9397 9398 // timeout handle 9399 timeoutTimer, 9400 9401 // Url cleanup var 9402 urlAnchor, 9403 9404 // Request state (becomes false upon send and true upon completion) 9405 completed, 9406 9407 // To know if global events are to be dispatched 9408 fireGlobals, 9409 9410 // Loop variable 9411 i, 9412 9413 // uncached part of the url 9414 uncached, 9415 9416 // Create the final options object 9417 s = jQuery.ajaxSetup( {}, options ), 9418 9419 // Callbacks context 9420 callbackContext = s.context || s, 9421 9422 // Context for global events is callbackContext if it is a DOM node or jQuery collection 9423 globalEventContext = s.context && 9424 ( callbackContext.nodeType || callbackContext.jquery ) ? 9425 jQuery( callbackContext ) : 9426 jQuery.event, 9427 9428 // Deferreds 9429 deferred = jQuery.Deferred(), 9430 completeDeferred = jQuery.Callbacks( "once memory" ), 9431 9432 // Status-dependent callbacks 9433 statusCode = s.statusCode || {}, 9434 9435 // Headers (they are sent all at once) 9436 requestHeaders = {}, 9437 requestHeadersNames = {}, 9438 9439 // Default abort message 9440 strAbort = "canceled", 9441 9442 // Fake xhr 9443 jqXHR = { 9444 readyState: 0, 9445 9446 // Builds headers hashtable if needed 9447 getResponseHeader: function( key ) { 9448 var match; 9449 if ( completed ) { 9450 if ( !responseHeaders ) { 9451 responseHeaders = {}; 9452 while ( ( match = rheaders.exec( responseHeadersString ) ) ) { 9453 responseHeaders[ match[ 1 ].toLowerCase() + " " ] = 9454 ( responseHeaders[ match[ 1 ].toLowerCase() + " " ] || [] ) 9455 .concat( match[ 2 ] ); 9456 } 9457 } 9458 match = responseHeaders[ key.toLowerCase() + " " ]; 9459 } 9460 return match == null ? null : match.join( ", " ); 9461 }, 9462 9463 // Raw string 9464 getAllResponseHeaders: function() { 9465 return completed ? responseHeadersString : null; 9466 }, 9467 9468 // Caches the header 9469 setRequestHeader: function( name, value ) { 9470 if ( completed == null ) { 9471 name = requestHeadersNames[ name.toLowerCase() ] = 9472 requestHeadersNames[ name.toLowerCase() ] || name; 9473 requestHeaders[ name ] = value; 9474 } 9475 return this; 9476 }, 9477 9478 // Overrides response content-type header 9479 overrideMimeType: function( type ) { 9480 if ( completed == null ) { 9481 s.mimeType = type; 9482 } 9483 return this; 9484 }, 9485 9486 // Status-dependent callbacks 9487 statusCode: function( map ) { 9488 var code; 9489 if ( map ) { 9490 if ( completed ) { 9491 9492 // Execute the appropriate callbacks 9493 jqXHR.always( map[ jqXHR.status ] ); 9494 } else { 9495 9496 // Lazy-add the new callbacks in a way that preserves old ones 9497 for ( code in map ) { 9498 statusCode[ code ] = [ statusCode[ code ], map[ code ] ]; 9499 } 9500 } 9501 } 9502 return this; 9503 }, 9504 9505 // Cancel the request 9506 abort: function( statusText ) { 9507 var finalText = statusText || strAbort; 9508 if ( transport ) { 9509 transport.abort( finalText ); 9510 } 9511 done( 0, finalText ); 9512 return this; 9513 } 9514 }; 9515 9516 // Attach deferreds 9517 deferred.promise( jqXHR ); 9518 9519 // Add protocol if not provided (prefilters might expect it) 9520 // Handle falsy url in the settings object (#10093: consistency with old signature) 9521 // We also use the url parameter if available 9522 s.url = ( ( url || s.url || location.href ) + "" ) 9523 .replace( rprotocol, location.protocol + "//" ); 9524 9525 // Alias method option to type as per ticket #12004 9526 s.type = options.method || options.type || s.method || s.type; 9527 9528 // Extract dataTypes list 9529 s.dataTypes = ( s.dataType || "*" ).toLowerCase().match( rnothtmlwhite ) || [ "" ]; 9530 9531 // A cross-domain request is in order when the origin doesn't match the current origin. 9532 if ( s.crossDomain == null ) { 9533 urlAnchor = document.createElement( "a" ); 9534 9535 // Support: IE <=8 - 11, Edge 12 - 15 9536 // IE throws exception on accessing the href property if url is malformed, 9537 // e.g. http://example.com:80x/ 9538 try { 9539 urlAnchor.href = s.url; 9540 9541 // Support: IE <=8 - 11 only 9542 // Anchor's host property isn't correctly set when s.url is relative 9543 urlAnchor.href = urlAnchor.href; 9544 s.crossDomain = originAnchor.protocol + "//" + originAnchor.host !== 9545 urlAnchor.protocol + "//" + urlAnchor.host; 9546 } catch ( e ) { 9547 9548 // If there is an error parsing the URL, assume it is crossDomain, 9549 // it can be rejected by the transport if it is invalid 9550 s.crossDomain = true; 9551 } 9552 } 9553 9554 // Convert data if not already a string 9555 if ( s.data && s.processData && typeof s.data !== "string" ) { 9556 s.data = jQuery.param( s.data, s.traditional ); 9557 } 9558 9559 // Apply prefilters 9560 inspectPrefiltersOrTransports( prefilters, s, options, jqXHR ); 9561 9562 // If request was aborted inside a prefilter, stop there 9563 if ( completed ) { 9564 return jqXHR; 9565 } 9566 9567 // We can fire global events as of now if asked to 9568 // Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118) 9569 fireGlobals = jQuery.event && s.global; 9570 9571 // Watch for a new set of requests 9572 if ( fireGlobals && jQuery.active++ === 0 ) { 9573 jQuery.event.trigger( "ajaxStart" ); 9574 } 9575 9576 // Uppercase the type 9577 s.type = s.type.toUpperCase(); 9578 9579 // Determine if request has content 9580 s.hasContent = !rnoContent.test( s.type ); 9581 9582 // Save the URL in case we're toying with the If-Modified-Since 9583 // and/or If-None-Match header later on 9584 // Remove hash to simplify url manipulation 9585 cacheURL = s.url.replace( rhash, "" ); 9586 9587 // More options handling for requests with no content 9588 if ( !s.hasContent ) { 9589 9590 // Remember the hash so we can put it back 9591 uncached = s.url.slice( cacheURL.length ); 9592 9593 // If data is available and should be processed, append data to url 9594 if ( s.data && ( s.processData || typeof s.data === "string" ) ) { 9595 cacheURL += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data; 9596 9597 // #9682: remove data so that it's not used in an eventual retry 9598 delete s.data; 9599 } 9600 9601 // Add or update anti-cache param if needed 9602 if ( s.cache === false ) { 9603 cacheURL = cacheURL.replace( rantiCache, "$1" ); 9604 uncached = ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + ( nonce.guid++ ) + 9605 uncached; 9606 } 9607 9608 // Put hash and anti-cache on the URL that will be requested (gh-1732) 9609 s.url = cacheURL + uncached; 9610 9611 // Change '%20' to '+' if this is encoded form body content (gh-2658) 9612 } else if ( s.data && s.processData && 9613 ( s.contentType || "" ).indexOf( "application/x-www-form-urlencoded" ) === 0 ) { 9614 s.data = s.data.replace( r20, "+" ); 9615 } 9616 9617 // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. 9618 if ( s.ifModified ) { 9619 if ( jQuery.lastModified[ cacheURL ] ) { 9620 jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] ); 9621 } 9622 if ( jQuery.etag[ cacheURL ] ) { 9623 jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] ); 9624 } 9625 } 9626 9627 // Set the correct header, if data is being sent 9628 if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) { 9629 jqXHR.setRequestHeader( "Content-Type", s.contentType ); 9630 } 9631 9632 // Set the Accepts header for the server, depending on the dataType 9633 jqXHR.setRequestHeader( 9634 "Accept", 9635 s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ? 9636 s.accepts[ s.dataTypes[ 0 ] ] + 9637 ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) : 9638 s.accepts[ "*" ] 9639 ); 9640 9641 // Check for headers option 9642 for ( i in s.headers ) { 9643 jqXHR.setRequestHeader( i, s.headers[ i ] ); 9644 } 9645 9646 // Allow custom headers/mimetypes and early abort 9647 if ( s.beforeSend && 9648 ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) { 9649 9650 // Abort if not done already and return 9651 return jqXHR.abort(); 9652 } 9653 9654 // Aborting is no longer a cancellation 9655 strAbort = "abort"; 9656 9657 // Install callbacks on deferreds 9658 completeDeferred.add( s.complete ); 9659 jqXHR.done( s.success ); 9660 jqXHR.fail( s.error ); 9661 9662 // Get transport 9663 transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR ); 9664 9665 // If no transport, we auto-abort 9666 if ( !transport ) { 9667 done( -1, "No Transport" ); 9668 } else { 9669 jqXHR.readyState = 1; 9670 9671 // Send global event 9672 if ( fireGlobals ) { 9673 globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] ); 9674 } 9675 9676 // If request was aborted inside ajaxSend, stop there 9677 if ( completed ) { 9678 return jqXHR; 9679 } 9680 9681 // Timeout 9682 if ( s.async && s.timeout > 0 ) { 9683 timeoutTimer = window.setTimeout( function() { 9684 jqXHR.abort( "timeout" ); 9685 }, s.timeout ); 9686 } 9687 9688 try { 9689 completed = false; 9690 transport.send( requestHeaders, done ); 9691 } catch ( e ) { 9692 9693 // Rethrow post-completion exceptions 9694 if ( completed ) { 9695 throw e; 9696 } 9697 9698 // Propagate others as results 9699 done( -1, e ); 9700 } 9701 } 9702 9703 // Callback for when everything is done 9704 function done( status, nativeStatusText, responses, headers ) { 9705 var isSuccess, success, error, response, modified, 9706 statusText = nativeStatusText; 9707 9708 // Ignore repeat invocations 9709 if ( completed ) { 9710 return; 9711 } 9712 9713 completed = true; 9714 9715 // Clear timeout if it exists 9716 if ( timeoutTimer ) { 9717 window.clearTimeout( timeoutTimer ); 9718 } 9719 9720 // Dereference transport for early garbage collection 9721 // (no matter how long the jqXHR object will be used) 9722 transport = undefined; 9723 9724 // Cache response headers 9725 responseHeadersString = headers || ""; 9726 9727 // Set readyState 9728 jqXHR.readyState = status > 0 ? 4 : 0; 9729 9730 // Determine if successful 9731 isSuccess = status >= 200 && status < 300 || status === 304; 9732 9733 // Get response data 9734 if ( responses ) { 9735 response = ajaxHandleResponses( s, jqXHR, responses ); 9736 } 9737 9738 // Use a noop converter for missing script but not if jsonp 9739 if ( !isSuccess && 9740 jQuery.inArray( "script", s.dataTypes ) > -1 && 9741 jQuery.inArray( "json", s.dataTypes ) < 0 ) { 9742 s.converters[ "text script" ] = function() {}; 9743 } 9744 9745 // Convert no matter what (that way responseXXX fields are always set) 9746 response = ajaxConvert( s, response, jqXHR, isSuccess ); 9747 9748 // If successful, handle type chaining 9749 if ( isSuccess ) { 9750 9751 // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode. 9752 if ( s.ifModified ) { 9753 modified = jqXHR.getResponseHeader( "Last-Modified" ); 9754 if ( modified ) { 9755 jQuery.lastModified[ cacheURL ] = modified; 9756 } 9757 modified = jqXHR.getResponseHeader( "etag" ); 9758 if ( modified ) { 9759 jQuery.etag[ cacheURL ] = modified; 9760 } 9761 } 9762 9763 // if no content 9764 if ( status === 204 || s.type === "HEAD" ) { 9765 statusText = "nocontent"; 9766 9767 // if not modified 9768 } else if ( status === 304 ) { 9769 statusText = "notmodified"; 9770 9771 // If we have data, let's convert it 9772 } else { 9773 statusText = response.state; 9774 success = response.data; 9775 error = response.error; 9776 isSuccess = !error; 9777 } 9778 } else { 9779 9780 // Extract error from statusText and normalize for non-aborts 9781 error = statusText; 9782 if ( status || !statusText ) { 9783 statusText = "error"; 9784 if ( status < 0 ) { 9785 status = 0; 9786 } 9787 } 9788 } 9789 9790 // Set data for the fake xhr object 9791 jqXHR.status = status; 9792 jqXHR.statusText = ( nativeStatusText || statusText ) + ""; 9793 9794 // Success/Error 9795 if ( isSuccess ) { 9796 deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] ); 9797 } else { 9798 deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] ); 9799 } 9800 9801 // Status-dependent callbacks 9802 jqXHR.statusCode( statusCode ); 9803 statusCode = undefined; 9804 9805 if ( fireGlobals ) { 9806 globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError", 9807 [ jqXHR, s, isSuccess ? success : error ] ); 9808 } 9809 9810 // Complete 9811 completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] ); 9812 9813 if ( fireGlobals ) { 9814 globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] ); 9815 9816 // Handle the global AJAX counter 9817 if ( !( --jQuery.active ) ) { 9818 jQuery.event.trigger( "ajaxStop" ); 9819 } 9820 } 9821 } 9822 9823 return jqXHR; 9824 }, 9825 9826 getJSON: function( url, data, callback ) { 9827 return jQuery.get( url, data, callback, "json" ); 9828 }, 9829 9830 getScript: function( url, callback ) { 9831 return jQuery.get( url, undefined, callback, "script" ); 9832 } 9833} ); 9834 9835jQuery.each( [ "get", "post" ], function( _i, method ) { 9836 jQuery[ method ] = function( url, data, callback, type ) { 9837 9838 // Shift arguments if data argument was omitted 9839 if ( isFunction( data ) ) { 9840 type = type || callback; 9841 callback = data; 9842 data = undefined; 9843 } 9844 9845 // The url can be an options object (which then must have .url) 9846 return jQuery.ajax( jQuery.extend( { 9847 url: url, 9848 type: method, 9849 dataType: type, 9850 data: data, 9851 success: callback 9852 }, jQuery.isPlainObject( url ) && url ) ); 9853 }; 9854} ); 9855 9856jQuery.ajaxPrefilter( function( s ) { 9857 var i; 9858 for ( i in s.headers ) { 9859 if ( i.toLowerCase() === "content-type" ) { 9860 s.contentType = s.headers[ i ] || ""; 9861 } 9862 } 9863} ); 9864 9865 9866jQuery._evalUrl = function( url, options, doc ) { 9867 return jQuery.ajax( { 9868 url: url, 9869 9870 // Make this explicit, since user can override this through ajaxSetup (#11264) 9871 type: "GET", 9872 dataType: "script", 9873 cache: true, 9874 async: false, 9875 global: false, 9876 9877 // Only evaluate the response if it is successful (gh-4126) 9878 // dataFilter is not invoked for failure responses, so using it instead 9879 // of the default converter is kludgy but it works. 9880 converters: { 9881 "text script": function() {} 9882 }, 9883 dataFilter: function( response ) { 9884 jQuery.globalEval( response, options, doc ); 9885 } 9886 } ); 9887}; 9888 9889 9890jQuery.fn.extend( { 9891 wrapAll: function( html ) { 9892 var wrap; 9893 9894 if ( this[ 0 ] ) { 9895 if ( isFunction( html ) ) { 9896 html = html.call( this[ 0 ] ); 9897 } 9898 9899 // The elements to wrap the target around 9900 wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true ); 9901 9902 if ( this[ 0 ].parentNode ) { 9903 wrap.insertBefore( this[ 0 ] ); 9904 } 9905 9906 wrap.map( function() { 9907 var elem = this; 9908 9909 while ( elem.firstElementChild ) { 9910 elem = elem.firstElementChild; 9911 } 9912 9913 return elem; 9914 } ).append( this ); 9915 } 9916 9917 return this; 9918 }, 9919 9920 wrapInner: function( html ) { 9921 if ( isFunction( html ) ) { 9922 return this.each( function( i ) { 9923 jQuery( this ).wrapInner( html.call( this, i ) ); 9924 } ); 9925 } 9926 9927 return this.each( function() { 9928 var self = jQuery( this ), 9929 contents = self.contents(); 9930 9931 if ( contents.length ) { 9932 contents.wrapAll( html ); 9933 9934 } else { 9935 self.append( html ); 9936 } 9937 } ); 9938 }, 9939 9940 wrap: function( html ) { 9941 var htmlIsFunction = isFunction( html ); 9942 9943 return this.each( function( i ) { 9944 jQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html ); 9945 } ); 9946 }, 9947 9948 unwrap: function( selector ) { 9949 this.parent( selector ).not( "body" ).each( function() { 9950 jQuery( this ).replaceWith( this.childNodes ); 9951 } ); 9952 return this; 9953 } 9954} ); 9955 9956 9957jQuery.expr.pseudos.hidden = function( elem ) { 9958 return !jQuery.expr.pseudos.visible( elem ); 9959}; 9960jQuery.expr.pseudos.visible = function( elem ) { 9961 return !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length ); 9962}; 9963 9964 9965 9966 9967jQuery.ajaxSettings.xhr = function() { 9968 try { 9969 return new window.XMLHttpRequest(); 9970 } catch ( e ) {} 9971}; 9972 9973var xhrSuccessStatus = { 9974 9975 // File protocol always yields status code 0, assume 200 9976 0: 200, 9977 9978 // Support: IE <=9 only 9979 // #1450: sometimes IE returns 1223 when it should be 204 9980 1223: 204 9981 }, 9982 xhrSupported = jQuery.ajaxSettings.xhr(); 9983 9984support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported ); 9985support.ajax = xhrSupported = !!xhrSupported; 9986 9987jQuery.ajaxTransport( function( options ) { 9988 var callback, errorCallback; 9989 9990 // Cross domain only allowed if supported through XMLHttpRequest 9991 if ( support.cors || xhrSupported && !options.crossDomain ) { 9992 return { 9993 send: function( headers, complete ) { 9994 var i, 9995 xhr = options.xhr(); 9996 9997 xhr.open( 9998 options.type, 9999 options.url, 10000 options.async, 10001 options.username, 10002 options.password 10003 ); 10004 10005 // Apply custom fields if provided 10006 if ( options.xhrFields ) { 10007 for ( i in options.xhrFields ) { 10008 xhr[ i ] = options.xhrFields[ i ]; 10009 } 10010 } 10011 10012 // Override mime type if needed 10013 if ( options.mimeType && xhr.overrideMimeType ) { 10014 xhr.overrideMimeType( options.mimeType ); 10015 } 10016 10017 // X-Requested-With header 10018 // For cross-domain requests, seeing as conditions for a preflight are 10019 // akin to a jigsaw puzzle, we simply never set it to be sure. 10020 // (it can always be set on a per-request basis or even using ajaxSetup) 10021 // For same-domain requests, won't change header if already provided. 10022 if ( !options.crossDomain && !headers[ "X-Requested-With" ] ) { 10023 headers[ "X-Requested-With" ] = "XMLHttpRequest"; 10024 } 10025 10026 // Set headers 10027 for ( i in headers ) { 10028 xhr.setRequestHeader( i, headers[ i ] ); 10029 } 10030 10031 // Callback 10032 callback = function( type ) { 10033 return function() { 10034 if ( callback ) { 10035 callback = errorCallback = xhr.onload = 10036 xhr.onerror = xhr.onabort = xhr.ontimeout = 10037 xhr.onreadystatechange = null; 10038 10039 if ( type === "abort" ) { 10040 xhr.abort(); 10041 } else if ( type === "error" ) { 10042 10043 // Support: IE <=9 only 10044 // On a manual native abort, IE9 throws 10045 // errors on any property access that is not readyState 10046 if ( typeof xhr.status !== "number" ) { 10047 complete( 0, "error" ); 10048 } else { 10049 complete( 10050 10051 // File: protocol always yields status 0; see #8605, #14207 10052 xhr.status, 10053 xhr.statusText 10054 ); 10055 } 10056 } else { 10057 complete( 10058 xhrSuccessStatus[ xhr.status ] || xhr.status, 10059 xhr.statusText, 10060 10061 // Support: IE <=9 only 10062 // IE9 has no XHR2 but throws on binary (trac-11426) 10063 // For XHR2 non-text, let the caller handle it (gh-2498) 10064 ( xhr.responseType || "text" ) !== "text" || 10065 typeof xhr.responseText !== "string" ? 10066 { binary: xhr.response } : 10067 { text: xhr.responseText }, 10068 xhr.getAllResponseHeaders() 10069 ); 10070 } 10071 } 10072 }; 10073 }; 10074 10075 // Listen to events 10076 xhr.onload = callback(); 10077 errorCallback = xhr.onerror = xhr.ontimeout = callback( "error" ); 10078 10079 // Support: IE 9 only 10080 // Use onreadystatechange to replace onabort 10081 // to handle uncaught aborts 10082 if ( xhr.onabort !== undefined ) { 10083 xhr.onabort = errorCallback; 10084 } else { 10085 xhr.onreadystatechange = function() { 10086 10087 // Check readyState before timeout as it changes 10088 if ( xhr.readyState === 4 ) { 10089 10090 // Allow onerror to be called first, 10091 // but that will not handle a native abort 10092 // Also, save errorCallback to a variable 10093 // as xhr.onerror cannot be accessed 10094 window.setTimeout( function() { 10095 if ( callback ) { 10096 errorCallback(); 10097 } 10098 } ); 10099 } 10100 }; 10101 } 10102 10103 // Create the abort callback 10104 callback = callback( "abort" ); 10105 10106 try { 10107 10108 // Do send the request (this may raise an exception) 10109 xhr.send( options.hasContent && options.data || null ); 10110 } catch ( e ) { 10111 10112 // #14683: Only rethrow if this hasn't been notified as an error yet 10113 if ( callback ) { 10114 throw e; 10115 } 10116 } 10117 }, 10118 10119 abort: function() { 10120 if ( callback ) { 10121 callback(); 10122 } 10123 } 10124 }; 10125 } 10126} ); 10127 10128 10129 10130 10131// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432) 10132jQuery.ajaxPrefilter( function( s ) { 10133 if ( s.crossDomain ) { 10134 s.contents.script = false; 10135 } 10136} ); 10137 10138// Install script dataType 10139jQuery.ajaxSetup( { 10140 accepts: { 10141 script: "text/javascript, application/javascript, " + 10142 "application/ecmascript, application/x-ecmascript" 10143 }, 10144 contents: { 10145 script: /\b(?:java|ecma)script\b/ 10146 }, 10147 converters: { 10148 "text script": function( text ) { 10149 jQuery.globalEval( text ); 10150 return text; 10151 } 10152 } 10153} ); 10154 10155// Handle cache's special case and crossDomain 10156jQuery.ajaxPrefilter( "script", function( s ) { 10157 if ( s.cache === undefined ) { 10158 s.cache = false; 10159 } 10160 if ( s.crossDomain ) { 10161 s.type = "GET"; 10162 } 10163} ); 10164 10165// Bind script tag hack transport 10166jQuery.ajaxTransport( "script", function( s ) { 10167 10168 // This transport only deals with cross domain or forced-by-attrs requests 10169 if ( s.crossDomain || s.scriptAttrs ) { 10170 var script, callback; 10171 return { 10172 send: function( _, complete ) { 10173 script = jQuery( "<script>" ) 10174 .attr( s.scriptAttrs || {} ) 10175 .prop( { charset: s.scriptCharset, src: s.url } ) 10176 .on( "load error", callback = function( evt ) { 10177 script.remove(); 10178 callback = null; 10179 if ( evt ) { 10180 complete( evt.type === "error" ? 404 : 200, evt.type ); 10181 } 10182 } ); 10183 10184 // Use native DOM manipulation to avoid our domManip AJAX trickery 10185 document.head.appendChild( script[ 0 ] ); 10186 }, 10187 abort: function() { 10188 if ( callback ) { 10189 callback(); 10190 } 10191 } 10192 }; 10193 } 10194} ); 10195 10196 10197 10198 10199var oldCallbacks = [], 10200 rjsonp = /(=)\?(?=&|$)|\?\?/; 10201 10202// Default jsonp settings 10203jQuery.ajaxSetup( { 10204 jsonp: "callback", 10205 jsonpCallback: function() { 10206 var callback = oldCallbacks.pop() || ( jQuery.expando + "_" + ( nonce.guid++ ) ); 10207 this[ callback ] = true; 10208 return callback; 10209 } 10210} ); 10211 10212// Detect, normalize options and install callbacks for jsonp requests 10213jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) { 10214 10215 var callbackName, overwritten, responseContainer, 10216 jsonProp = s.jsonp !== false && ( rjsonp.test( s.url ) ? 10217 "url" : 10218 typeof s.data === "string" && 10219 ( s.contentType || "" ) 10220 .indexOf( "application/x-www-form-urlencoded" ) === 0 && 10221 rjsonp.test( s.data ) && "data" 10222 ); 10223 10224 // Handle iff the expected data type is "jsonp" or we have a parameter to set 10225 if ( jsonProp || s.dataTypes[ 0 ] === "jsonp" ) { 10226 10227 // Get callback name, remembering preexisting value associated with it 10228 callbackName = s.jsonpCallback = isFunction( s.jsonpCallback ) ? 10229 s.jsonpCallback() : 10230 s.jsonpCallback; 10231 10232 // Insert callback into url or form data 10233 if ( jsonProp ) { 10234 s[ jsonProp ] = s[ jsonProp ].replace( rjsonp, "$1" + callbackName ); 10235 } else if ( s.jsonp !== false ) { 10236 s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.jsonp + "=" + callbackName; 10237 } 10238 10239 // Use data converter to retrieve json after script execution 10240 s.converters[ "script json" ] = function() { 10241 if ( !responseContainer ) { 10242 jQuery.error( callbackName + " was not called" ); 10243 } 10244 return responseContainer[ 0 ]; 10245 }; 10246 10247 // Force json dataType 10248 s.dataTypes[ 0 ] = "json"; 10249 10250 // Install callback 10251 overwritten = window[ callbackName ]; 10252 window[ callbackName ] = function() { 10253 responseContainer = arguments; 10254 }; 10255 10256 // Clean-up function (fires after converters) 10257 jqXHR.always( function() { 10258 10259 // If previous value didn't exist - remove it 10260 if ( overwritten === undefined ) { 10261 jQuery( window ).removeProp( callbackName ); 10262 10263 // Otherwise restore preexisting value 10264 } else { 10265 window[ callbackName ] = overwritten; 10266 } 10267 10268 // Save back as free 10269 if ( s[ callbackName ] ) { 10270 10271 // Make sure that re-using the options doesn't screw things around 10272 s.jsonpCallback = originalSettings.jsonpCallback; 10273 10274 // Save the callback name for future use 10275 oldCallbacks.push( callbackName ); 10276 } 10277 10278 // Call if it was a function and we have a response 10279 if ( responseContainer && isFunction( overwritten ) ) { 10280 overwritten( responseContainer[ 0 ] ); 10281 } 10282 10283 responseContainer = overwritten = undefined; 10284 } ); 10285 10286 // Delegate to script 10287 return "script"; 10288 } 10289} ); 10290 10291 10292 10293 10294// Support: Safari 8 only 10295// In Safari 8 documents created via document.implementation.createHTMLDocument 10296// collapse sibling forms: the second one becomes a child of the first one. 10297// Because of that, this security measure has to be disabled in Safari 8. 10298// https://bugs.webkit.org/show_bug.cgi?id=137337 10299support.createHTMLDocument = ( function() { 10300 var body = document.implementation.createHTMLDocument( "" ).body; 10301 body.innerHTML = "<form></form><form></form>"; 10302 return body.childNodes.length === 2; 10303} )(); 10304 10305 10306// Argument "data" should be string of html 10307// context (optional): If specified, the fragment will be created in this context, 10308// defaults to document 10309// keepScripts (optional): If true, will include scripts passed in the html string 10310jQuery.parseHTML = function( data, context, keepScripts ) { 10311 if ( typeof data !== "string" ) { 10312 return []; 10313 } 10314 if ( typeof context === "boolean" ) { 10315 keepScripts = context; 10316 context = false; 10317 } 10318 10319 var base, parsed, scripts; 10320 10321 if ( !context ) { 10322 10323 // Stop scripts or inline event handlers from being executed immediately 10324 // by using document.implementation 10325 if ( support.createHTMLDocument ) { 10326 context = document.implementation.createHTMLDocument( "" ); 10327 10328 // Set the base href for the created document 10329 // so any parsed elements with URLs 10330 // are based on the document's URL (gh-2965) 10331 base = context.createElement( "base" ); 10332 base.href = document.location.href; 10333 context.head.appendChild( base ); 10334 } else { 10335 context = document; 10336 } 10337 } 10338 10339 parsed = rsingleTag.exec( data ); 10340 scripts = !keepScripts && []; 10341 10342 // Single tag 10343 if ( parsed ) { 10344 return [ context.createElement( parsed[ 1 ] ) ]; 10345 } 10346 10347 parsed = buildFragment( [ data ], context, scripts ); 10348 10349 if ( scripts && scripts.length ) { 10350 jQuery( scripts ).remove(); 10351 } 10352 10353 return jQuery.merge( [], parsed.childNodes ); 10354}; 10355 10356 10357/** 10358 * Load a url into a page 10359 */ 10360jQuery.fn.load = function( url, params, callback ) { 10361 var selector, type, response, 10362 self = this, 10363 off = url.indexOf( " " ); 10364 10365 if ( off > -1 ) { 10366 selector = stripAndCollapse( url.slice( off ) ); 10367 url = url.slice( 0, off ); 10368 } 10369 10370 // If it's a function 10371 if ( isFunction( params ) ) { 10372 10373 // We assume that it's the callback 10374 callback = params; 10375 params = undefined; 10376 10377 // Otherwise, build a param string 10378 } else if ( params && typeof params === "object" ) { 10379 type = "POST"; 10380 } 10381 10382 // If we have elements to modify, make the request 10383 if ( self.length > 0 ) { 10384 jQuery.ajax( { 10385 url: url, 10386 10387 // If "type" variable is undefined, then "GET" method will be used. 10388 // Make value of this field explicit since 10389 // user can override it through ajaxSetup method 10390 type: type || "GET", 10391 dataType: "html", 10392 data: params 10393 } ).done( function( responseText ) { 10394 10395 // Save response for use in complete callback 10396 response = arguments; 10397 10398 self.html( selector ? 10399 10400 // If a selector was specified, locate the right elements in a dummy div 10401 // Exclude scripts to avoid IE 'Permission Denied' errors 10402 jQuery( "<div>" ).append( jQuery.parseHTML( responseText ) ).find( selector ) : 10403 10404 // Otherwise use the full result 10405 responseText ); 10406 10407 // If the request succeeds, this function gets "data", "status", "jqXHR" 10408 // but they are ignored because response was set above. 10409 // If it fails, this function gets "jqXHR", "status", "error" 10410 } ).always( callback && function( jqXHR, status ) { 10411 self.each( function() { 10412 callback.apply( this, response || [ jqXHR.responseText, status, jqXHR ] ); 10413 } ); 10414 } ); 10415 } 10416 10417 return this; 10418}; 10419 10420 10421 10422 10423jQuery.expr.pseudos.animated = function( elem ) { 10424 return jQuery.grep( jQuery.timers, function( fn ) { 10425 return elem === fn.elem; 10426 } ).length; 10427}; 10428 10429 10430 10431 10432jQuery.offset = { 10433 setOffset: function( elem, options, i ) { 10434 var curPosition, curLeft, curCSSTop, curTop, curOffset, curCSSLeft, calculatePosition, 10435 position = jQuery.css( elem, "position" ), 10436 curElem = jQuery( elem ), 10437 props = {}; 10438 10439 // Set position first, in-case top/left are set even on static elem 10440 if ( position === "static" ) { 10441 elem.style.position = "relative"; 10442 } 10443 10444 curOffset = curElem.offset(); 10445 curCSSTop = jQuery.css( elem, "top" ); 10446 curCSSLeft = jQuery.css( elem, "left" ); 10447 calculatePosition = ( position === "absolute" || position === "fixed" ) && 10448 ( curCSSTop + curCSSLeft ).indexOf( "auto" ) > -1; 10449 10450 // Need to be able to calculate position if either 10451 // top or left is auto and position is either absolute or fixed 10452 if ( calculatePosition ) { 10453 curPosition = curElem.position(); 10454 curTop = curPosition.top; 10455 curLeft = curPosition.left; 10456 10457 } else { 10458 curTop = parseFloat( curCSSTop ) || 0; 10459 curLeft = parseFloat( curCSSLeft ) || 0; 10460 } 10461 10462 if ( isFunction( options ) ) { 10463 10464 // Use jQuery.extend here to allow modification of coordinates argument (gh-1848) 10465 options = options.call( elem, i, jQuery.extend( {}, curOffset ) ); 10466 } 10467 10468 if ( options.top != null ) { 10469 props.top = ( options.top - curOffset.top ) + curTop; 10470 } 10471 if ( options.left != null ) { 10472 props.left = ( options.left - curOffset.left ) + curLeft; 10473 } 10474 10475 if ( "using" in options ) { 10476 options.using.call( elem, props ); 10477 10478 } else { 10479 curElem.css( props ); 10480 } 10481 } 10482}; 10483 10484jQuery.fn.extend( { 10485 10486 // offset() relates an element's border box to the document origin 10487 offset: function( options ) { 10488 10489 // Preserve chaining for setter 10490 if ( arguments.length ) { 10491 return options === undefined ? 10492 this : 10493 this.each( function( i ) { 10494 jQuery.offset.setOffset( this, options, i ); 10495 } ); 10496 } 10497 10498 var rect, win, 10499 elem = this[ 0 ]; 10500 10501 if ( !elem ) { 10502 return; 10503 } 10504 10505 // Return zeros for disconnected and hidden (display: none) elements (gh-2310) 10506 // Support: IE <=11 only 10507 // Running getBoundingClientRect on a 10508 // disconnected node in IE throws an error 10509 if ( !elem.getClientRects().length ) { 10510 return { top: 0, left: 0 }; 10511 } 10512 10513 // Get document-relative position by adding viewport scroll to viewport-relative gBCR 10514 rect = elem.getBoundingClientRect(); 10515 win = elem.ownerDocument.defaultView; 10516 return { 10517 top: rect.top + win.pageYOffset, 10518 left: rect.left + win.pageXOffset 10519 }; 10520 }, 10521 10522 // position() relates an element's margin box to its offset parent's padding box 10523 // This corresponds to the behavior of CSS absolute positioning 10524 position: function() { 10525 if ( !this[ 0 ] ) { 10526 return; 10527 } 10528 10529 var offsetParent, offset, doc, 10530 elem = this[ 0 ], 10531 parentOffset = { top: 0, left: 0 }; 10532 10533 // position:fixed elements are offset from the viewport, which itself always has zero offset 10534 if ( jQuery.css( elem, "position" ) === "fixed" ) { 10535 10536 // Assume position:fixed implies availability of getBoundingClientRect 10537 offset = elem.getBoundingClientRect(); 10538 10539 } else { 10540 offset = this.offset(); 10541 10542 // Account for the *real* offset parent, which can be the document or its root element 10543 // when a statically positioned element is identified 10544 doc = elem.ownerDocument; 10545 offsetParent = elem.offsetParent || doc.documentElement; 10546 while ( offsetParent && 10547 ( offsetParent === doc.body || offsetParent === doc.documentElement ) && 10548 jQuery.css( offsetParent, "position" ) === "static" ) { 10549 10550 offsetParent = offsetParent.parentNode; 10551 } 10552 if ( offsetParent && offsetParent !== elem && offsetParent.nodeType === 1 ) { 10553 10554 // Incorporate borders into its offset, since they are outside its content origin 10555 parentOffset = jQuery( offsetParent ).offset(); 10556 parentOffset.top += jQuery.css( offsetParent, "borderTopWidth", true ); 10557 parentOffset.left += jQuery.css( offsetParent, "borderLeftWidth", true ); 10558 } 10559 } 10560 10561 // Subtract parent offsets and element margins 10562 return { 10563 top: offset.top - parentOffset.top - jQuery.css( elem, "marginTop", true ), 10564 left: offset.left - parentOffset.left - jQuery.css( elem, "marginLeft", true ) 10565 }; 10566 }, 10567 10568 // This method will return documentElement in the following cases: 10569 // 1) For the element inside the iframe without offsetParent, this method will return 10570 // documentElement of the parent window 10571 // 2) For the hidden or detached element 10572 // 3) For body or html element, i.e. in case of the html node - it will return itself 10573 // 10574 // but those exceptions were never presented as a real life use-cases 10575 // and might be considered as more preferable results. 10576 // 10577 // This logic, however, is not guaranteed and can change at any point in the future 10578 offsetParent: function() { 10579 return this.map( function() { 10580 var offsetParent = this.offsetParent; 10581 10582 while ( offsetParent && jQuery.css( offsetParent, "position" ) === "static" ) { 10583 offsetParent = offsetParent.offsetParent; 10584 } 10585 10586 return offsetParent || documentElement; 10587 } ); 10588 } 10589} ); 10590 10591// Create scrollLeft and scrollTop methods 10592jQuery.each( { scrollLeft: "pageXOffset", scrollTop: "pageYOffset" }, function( method, prop ) { 10593 var top = "pageYOffset" === prop; 10594 10595 jQuery.fn[ method ] = function( val ) { 10596 return access( this, function( elem, method, val ) { 10597 10598 // Coalesce documents and windows 10599 var win; 10600 if ( isWindow( elem ) ) { 10601 win = elem; 10602 } else if ( elem.nodeType === 9 ) { 10603 win = elem.defaultView; 10604 } 10605 10606 if ( val === undefined ) { 10607 return win ? win[ prop ] : elem[ method ]; 10608 } 10609 10610 if ( win ) { 10611 win.scrollTo( 10612 !top ? val : win.pageXOffset, 10613 top ? val : win.pageYOffset 10614 ); 10615 10616 } else { 10617 elem[ method ] = val; 10618 } 10619 }, method, val, arguments.length ); 10620 }; 10621} ); 10622 10623// Support: Safari <=7 - 9.1, Chrome <=37 - 49 10624// Add the top/left cssHooks using jQuery.fn.position 10625// Webkit bug: https://bugs.webkit.org/show_bug.cgi?id=29084 10626// Blink bug: https://bugs.chromium.org/p/chromium/issues/detail?id=589347 10627// getComputedStyle returns percent when specified for top/left/bottom/right; 10628// rather than make the css module depend on the offset module, just check for it here 10629jQuery.each( [ "top", "left" ], function( _i, prop ) { 10630 jQuery.cssHooks[ prop ] = addGetHookIf( support.pixelPosition, 10631 function( elem, computed ) { 10632 if ( computed ) { 10633 computed = curCSS( elem, prop ); 10634 10635 // If curCSS returns percentage, fallback to offset 10636 return rnumnonpx.test( computed ) ? 10637 jQuery( elem ).position()[ prop ] + "px" : 10638 computed; 10639 } 10640 } 10641 ); 10642} ); 10643 10644 10645// Create innerHeight, innerWidth, height, width, outerHeight and outerWidth methods 10646jQuery.each( { Height: "height", Width: "width" }, function( name, type ) { 10647 jQuery.each( { 10648 padding: "inner" + name, 10649 content: type, 10650 "": "outer" + name 10651 }, function( defaultExtra, funcName ) { 10652 10653 // Margin is only for outerHeight, outerWidth 10654 jQuery.fn[ funcName ] = function( margin, value ) { 10655 var chainable = arguments.length && ( defaultExtra || typeof margin !== "boolean" ), 10656 extra = defaultExtra || ( margin === true || value === true ? "margin" : "border" ); 10657 10658 return access( this, function( elem, type, value ) { 10659 var doc; 10660 10661 if ( isWindow( elem ) ) { 10662 10663 // $( window ).outerWidth/Height return w/h including scrollbars (gh-1729) 10664 return funcName.indexOf( "outer" ) === 0 ? 10665 elem[ "inner" + name ] : 10666 elem.document.documentElement[ "client" + name ]; 10667 } 10668 10669 // Get document width or height 10670 if ( elem.nodeType === 9 ) { 10671 doc = elem.documentElement; 10672 10673 // Either scroll[Width/Height] or offset[Width/Height] or client[Width/Height], 10674 // whichever is greatest 10675 return Math.max( 10676 elem.body[ "scroll" + name ], doc[ "scroll" + name ], 10677 elem.body[ "offset" + name ], doc[ "offset" + name ], 10678 doc[ "client" + name ] 10679 ); 10680 } 10681 10682 return value === undefined ? 10683 10684 // Get width or height on the element, requesting but not forcing parseFloat 10685 jQuery.css( elem, type, extra ) : 10686 10687 // Set width or height on the element 10688 jQuery.style( elem, type, value, extra ); 10689 }, type, chainable ? margin : undefined, chainable ); 10690 }; 10691 } ); 10692} ); 10693 10694 10695jQuery.each( [ 10696 "ajaxStart", 10697 "ajaxStop", 10698 "ajaxComplete", 10699 "ajaxError", 10700 "ajaxSuccess", 10701 "ajaxSend" 10702], function( _i, type ) { 10703 jQuery.fn[ type ] = function( fn ) { 10704 return this.on( type, fn ); 10705 }; 10706} ); 10707 10708 10709 10710 10711jQuery.fn.extend( { 10712 10713 bind: function( types, data, fn ) { 10714 return this.on( types, null, data, fn ); 10715 }, 10716 unbind: function( types, fn ) { 10717 return this.off( types, null, fn ); 10718 }, 10719 10720 delegate: function( selector, types, data, fn ) { 10721 return this.on( types, selector, data, fn ); 10722 }, 10723 undelegate: function( selector, types, fn ) { 10724 10725 // ( namespace ) or ( selector, types [, fn] ) 10726 return arguments.length === 1 ? 10727 this.off( selector, "**" ) : 10728 this.off( types, selector || "**", fn ); 10729 }, 10730 10731 hover: function( fnOver, fnOut ) { 10732 return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver ); 10733 } 10734} ); 10735 10736jQuery.each( 10737 ( "blur focus focusin focusout resize scroll click dblclick " + 10738 "mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " + 10739 "change select submit keydown keypress keyup contextmenu" ).split( " " ), 10740 function( _i, name ) { 10741 10742 // Handle event binding 10743 jQuery.fn[ name ] = function( data, fn ) { 10744 return arguments.length > 0 ? 10745 this.on( name, null, data, fn ) : 10746 this.trigger( name ); 10747 }; 10748 } 10749); 10750 10751 10752 10753 10754// Support: Android <=4.0 only 10755// Make sure we trim BOM and NBSP 10756var rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; 10757 10758// Bind a function to a context, optionally partially applying any 10759// arguments. 10760// jQuery.proxy is deprecated to promote standards (specifically Function#bind) 10761// However, it is not slated for removal any time soon 10762jQuery.proxy = function( fn, context ) { 10763 var tmp, args, proxy; 10764 10765 if ( typeof context === "string" ) { 10766 tmp = fn[ context ]; 10767 context = fn; 10768 fn = tmp; 10769 } 10770 10771 // Quick check to determine if target is callable, in the spec 10772 // this throws a TypeError, but we will just return undefined. 10773 if ( !isFunction( fn ) ) { 10774 return undefined; 10775 } 10776 10777 // Simulated bind 10778 args = slice.call( arguments, 2 ); 10779 proxy = function() { 10780 return fn.apply( context || this, args.concat( slice.call( arguments ) ) ); 10781 }; 10782 10783 // Set the guid of unique handler to the same of original handler, so it can be removed 10784 proxy.guid = fn.guid = fn.guid || jQuery.guid++; 10785 10786 return proxy; 10787}; 10788 10789jQuery.holdReady = function( hold ) { 10790 if ( hold ) { 10791 jQuery.readyWait++; 10792 } else { 10793 jQuery.ready( true ); 10794 } 10795}; 10796jQuery.isArray = Array.isArray; 10797jQuery.parseJSON = JSON.parse; 10798jQuery.nodeName = nodeName; 10799jQuery.isFunction = isFunction; 10800jQuery.isWindow = isWindow; 10801jQuery.camelCase = camelCase; 10802jQuery.type = toType; 10803 10804jQuery.now = Date.now; 10805 10806jQuery.isNumeric = function( obj ) { 10807 10808 // As of jQuery 3.0, isNumeric is limited to 10809 // strings and numbers (primitives or objects) 10810 // that can be coerced to finite numbers (gh-2662) 10811 var type = jQuery.type( obj ); 10812 return ( type === "number" || type === "string" ) && 10813 10814 // parseFloat NaNs numeric-cast false positives ("") 10815 // ...but misinterprets leading-number strings, particularly hex literals ("0x...") 10816 // subtraction forces infinities to NaN 10817 !isNaN( obj - parseFloat( obj ) ); 10818}; 10819 10820jQuery.trim = function( text ) { 10821 return text == null ? 10822 "" : 10823 ( text + "" ).replace( rtrim, "" ); 10824}; 10825 10826 10827 10828// Register as a named AMD module, since jQuery can be concatenated with other 10829// files that may use define, but not via a proper concatenation script that 10830// understands anonymous AMD modules. A named AMD is safest and most robust 10831// way to register. Lowercase jquery is used because AMD module names are 10832// derived from file names, and jQuery is normally delivered in a lowercase 10833// file name. Do this after creating the global so that if an AMD module wants 10834// to call noConflict to hide this version of jQuery, it will work. 10835 10836// Note that for maximum portability, libraries that are not jQuery should 10837// declare themselves as anonymous modules, and avoid setting a global if an 10838// AMD loader is present. jQuery is a special case. For more information, see 10839// https://github.com/jrburke/requirejs/wiki/Updating-existing-libraries#wiki-anon 10840 10841if ( typeof define === "function" && define.amd ) { 10842 define( "jquery", [], function() { 10843 return jQuery; 10844 } ); 10845} 10846 10847 10848 10849 10850var 10851 10852 // Map over jQuery in case of overwrite 10853 _jQuery = window.jQuery, 10854 10855 // Map over the $ in case of overwrite 10856 _$ = window.$; 10857 10858jQuery.noConflict = function( deep ) { 10859 if ( window.$ === jQuery ) { 10860 window.$ = _$; 10861 } 10862 10863 if ( deep && window.jQuery === jQuery ) { 10864 window.jQuery = _jQuery; 10865 } 10866 10867 return jQuery; 10868}; 10869 10870// Expose jQuery and $ identifiers, even in AMD 10871// (#7102#comment:10, https://github.com/jquery/jquery/pull/557) 10872// and CommonJS for browser emulators (#13566) 10873if ( typeof noGlobal === "undefined" ) { 10874 window.jQuery = window.$ = jQuery; 10875} 10876 10877 10878
10879 10880return jQuery; 10881} ); 10882
vendor: 31,678 bytes, lines 10883-11754
10883/*! 10884 * jQuery & Zepto Lazy - v1.7.10 10885 * http://jquery.eisbehr.de/lazy/ 10886 * 10887 * Copyright 2012 - 2018, Daniel 'Eisbehr' Kern 10888 * 10889 * Dual licensed under the MIT and GPL-2.0 licenses: 10890 * http://www.opensource.org/licenses/mit-license.php 10891 * http://www.gnu.org/licenses/gpl-2.0.html 10892 * 10893 * $("img.lazy").lazy(); 10894 */ 10895 10896;(function(window, undefined) { 10897 "use strict"; 10898 10899 // noinspection JSUnresolvedVariable 10900 /** 10901 * library instance - here and not in construct to be shorter in minimization 10902 * @return void 10903 */ 10904 var $ = window.jQuery || window.Zepto, 10905 10906 /** 10907 * unique plugin instance id counter 10908 * @type {number} 10909 */ 10910 lazyInstanceId = 0, 10911 10912 /** 10913 * helper to register window load for jQuery 3 10914 * @type {boolean} 10915 */ 10916 windowLoaded = false; 10917 10918 /** 10919 * make lazy available to jquery - and make it a bit more case-insensitive :) 10920 * @access public 10921 * @type {function} 10922 * @param {object} settings 10923 * @return {LazyPlugin} 10924 */ 10925 $.fn.Lazy = $.fn.lazy = function(settings) { 10926 return new LazyPlugin(this, settings); 10927 }; 10928 10929 /** 10930 * helper to add plugins to lazy prototype configuration 10931 * @access public 10932 * @type {function} 10933 * @param {string|Array} names 10934 * @param {string|Array|function} [elements] 10935 * @param {function} loader 10936 * @return void 10937 */ 10938 $.Lazy = $.lazy = function(names, elements, loader) { 10939 // make second parameter optional 10940 if ($.isFunction(elements)) { 10941 loader = elements; 10942 elements = []; 10943 } 10944 10945 // exit here if parameter is not a callable function 10946 if (!$.isFunction(loader)) { 10947 return; 10948 } 10949 10950 // make parameters an array of names to be sure 10951 names = $.isArray(names) ? names : [names]; 10952 elements = $.isArray(elements) ? elements : [elements]; 10953 10954 var config = LazyPlugin.prototype.config, 10955 forced = config._f || (config._f = {}); 10956 10957 // add the loader plugin for every name 10958 for (var i = 0, l = names.length; i < l; i++) { 10959 if (config[names[i]] === undefined || $.isFunction(config[names[i]])) { 10960 config[names[i]] = loader; 10961 } 10962 } 10963 10964 // add forced elements loader 10965 for (var c = 0, a = elements.length; c < a; c++) { 10966 forced[elements[c]] = names[0]; 10967 } 10968 }; 10969 10970 /** 10971 * contains all logic and the whole element handling 10972 * is packed in a private function outside class to reduce memory usage, because it will not be created on every plugin instance 10973 * @access private 10974 * @type {function} 10975 * @param {LazyPlugin} instance 10976 * @param {object} config 10977 * @param {object|Array} items 10978 * @param {object} events 10979 * @param {string} namespace 10980 * @return void 10981 */ 10982 function _executeLazy(instance, config, items, events, namespace) { 10983 /** 10984 * a helper to trigger the 'onFinishedAll' callback after all other events 10985 * @access private 10986 * @type {number} 10987 */ 10988 var _awaitingAfterLoad = 0, 10989 10990 /** 10991 * visible content width 10992 * @access private 10993 * @type {number} 10994 */ 10995 _actualWidth = -1, 10996 10997 /** 10998 * visible content height 10999 * @access private 11000 * @type {number} 11001 */ 11002 _actualHeight = -1, 11003 11004 /** 11005 * determine possibly detected high pixel density 11006 * @access private 11007 * @type {boolean} 11008 */ 11009 _isRetinaDisplay = false, 11010 11011 /** 11012 * dictionary entry for better minimization 11013 * @access private 11014 * @type {string} 11015 */ 11016 _afterLoad = 'afterLoad', 11017 11018 /** 11019 * dictionary entry for better minimization 11020 * @access private 11021 * @type {string} 11022 */ 11023 _load = 'load', 11024 11025 /** 11026 * dictionary entry for better minimization 11027 * @access private 11028 * @type {string} 11029 */ 11030 _error = 'error', 11031 11032 /** 11033 * dictionary entry for better minimization 11034 * @access private 11035 * @type {string} 11036 */ 11037 _img = 'img', 11038 11039 /** 11040 * dictionary entry for better minimization 11041 * @access private 11042 * @type {string} 11043 */ 11044 _src = 'src', 11045 11046 /** 11047 * dictionary entry for better minimization 11048 * @access private 11049 * @type {string} 11050 */ 11051 _srcset = 'srcset', 11052 11053 /** 11054 * dictionary entry for better minimization 11055 * @access private 11056 * @type {string} 11057 */ 11058 _sizes = 'sizes', 11059 11060 /** 11061 * dictionary entry for better minimization 11062 * @access private 11063 * @type {string} 11064 */ 11065 _backgroundImage = 'background-image'; 11066 11067 /** 11068 * initialize plugin 11069 * bind loading to events or set delay time to load all items at once 11070 * @access private 11071 * @return void 11072 */ 11073 function _initialize() { 11074 // detect actual device pixel ratio 11075 // noinspection JSUnresolvedVariable 11076 _isRetinaDisplay = window.devicePixelRatio > 1; 11077 11078 // prepare all initial items 11079 items = _prepareItems(items); 11080 11081 // if delay time is set load all items at once after delay time 11082 if (config.delay >= 0) { 11083 setTimeout(function() { 11084 _lazyLoadItems(true); 11085 }, config.delay); 11086 } 11087 11088 // if no delay is set or combine usage is active bind events 11089 if (config.delay < 0 || config.combined) { 11090 // create unique event function 11091 events.e = _throttle(config.throttle, function(event) { 11092 // reset detected window size on resize event 11093 if (event.type === 'resize') { 11094 _actualWidth = _actualHeight = -1; 11095 } 11096 11097 // execute 'lazy magic' 11098 _lazyLoadItems(event.all); 11099 }); 11100 11101 // create function to add new items to instance 11102 events.a = function(additionalItems) { 11103 additionalItems = _prepareItems(additionalItems); 11104 items.push.apply(items, additionalItems); 11105 }; 11106 11107 // create function to get all instance items left 11108 events.g = function() { 11109 // filter loaded items before return in case internal filter was not running until now 11110 return (items = $(items).filter(function() { 11111 return !$(this).data(config.loadedName); 11112 })); 11113 }; 11114 11115 // create function to force loading elements 11116 events.f = function(forcedItems) { 11117 for (var i = 0; i < forcedItems.length; i++) { 11118 // only handle item if available in current instance 11119 // use a compare function, because Zepto can't handle object parameter for filter 11120 // var item = items.filter(forcedItems[i]); 11121 /* jshint loopfunc: true */ 11122 var item = items.filter(function() { 11123 return this === forcedItems[i]; 11124 }); 11125 11126 if (item.length) { 11127 _lazyLoadItems(false, item); 11128 } 11129 } 11130 }; 11131 11132 // load initial items 11133 _lazyLoadItems(); 11134 11135 // bind lazy load functions to scroll and resize event 11136 // noinspection JSUnresolvedVariable 11137 $(config.appendScroll).on('scroll.' + namespace + ' resize.' + namespace, events.e); 11138 } 11139 } 11140 11141 /** 11142 * prepare items before handle them 11143 * @access private 11144 * @param {Array|object|jQuery} items 11145 * @return {Array|object|jQuery} 11146 */ 11147 function _prepareItems(items) { 11148 // fetch used configurations before loops 11149 var defaultImage = config.defaultImage, 11150 placeholder = config.placeholder, 11151 imageBase = config.imageBase, 11152 srcsetAttribute = config.srcsetAttribute, 11153 loaderAttribute = config.loaderAttribute, 11154 forcedTags = config._f || {}; 11155 11156 // filter items and only add those who not handled yet and got needed attributes available 11157 items = $(items).filter(function() { 11158 var element = $(this), 11159 tag = _getElementTagName(this); 11160 11161 return !element.data(config.handledName) && 11162 (element.attr(config.attribute) || element.attr(srcsetAttribute) || element.attr(loaderAttribute) || forcedTags[tag] !== undefined); 11163 }) 11164 11165 // append plugin instance to all elements 11166 .data('plugin_' + config.name, instance); 11167 11168 for (var i = 0, l = items.length; i < l; i++) { 11169 var element = $(items[i]), 11170 tag = _getElementTagName(items[i]), 11171 elementImageBase = element.attr(config.imageBaseAttribute) || imageBase; 11172 11173 // generate and update source set if an image base is set 11174 if (tag === _img && elementImageBase && element.attr(srcsetAttribute)) { 11175 element.attr(srcsetAttribute, _getCorrectedSrcSet(element.attr(srcsetAttribute), elementImageBase)); 11176 } 11177 11178 // add loader to forced element types 11179 if (forcedTags[tag] !== undefined && !element.attr(loaderAttribute)) { 11180 element.attr(loaderAttribute, forcedTags[tag]); 11181 } 11182 11183 // set default image on every element without source 11184 if (tag === _img && defaultImage && !element.attr(_src)) { 11185 element.attr(_src, defaultImage); 11186 } 11187 11188 // set placeholder on every element without background image 11189 else if (tag !== _img && placeholder && (!element.css(_backgroundImage) || element.css(_backgroundImage) === 'none')) { 11190 element.css(_backgroundImage, "url('" + placeholder + "')"); 11191 } 11192 } 11193 11194 return items; 11195 } 11196 11197 /** 11198 * the 'lazy magic' - check all items 11199 * @access private 11200 * @param {boolean} [allItems] 11201 * @param {object} [forced] 11202 * @return void 11203 */ 11204 function _lazyLoadItems(allItems, forced) { 11205 // skip if no items where left 11206 if (!items.length) { 11207 // destroy instance if option is enabled 11208 if (config.autoDestroy) { 11209 // noinspection JSUnresolvedFunction 11210 instance.destroy(); 11211 } 11212 11213 return; 11214 } 11215 11216 var elements = forced || items, 11217 loadTriggered = false, 11218 imageBase = config.imageBase || '', 11219 srcsetAttribute = config.srcsetAttribute, 11220 handledName = config.handledName; 11221 11222 // loop all available items 11223 for (var i = 0; i < elements.length; i++) { 11224 // item is at least in loadable area 11225 if (allItems || forced || _isInLoadableArea(elements[i])) { 11226 var element = $(elements[i]), 11227 tag = _getElementTagName(elements[i]), 11228 attribute = element.attr(config.attribute), 11229 elementImageBase = element.attr(config.imageBaseAttribute) || imageBase, 11230 customLoader = element.attr(config.loaderAttribute); 11231 11232 // is not already handled 11233 if (!element.data(handledName) && 11234 // and is visible or visibility doesn't matter 11235 (!config.visibleOnly || element.is(':visible')) && ( 11236 // and image source or source set attribute is available 11237 (attribute || element.attr(srcsetAttribute)) && ( 11238 // and is image tag where attribute is not equal source or source set 11239 (tag === _img && (elementImageBase + attribute !== element.attr(_src) || element.attr(srcsetAttribute) !== element.attr(_srcset))) || 11240 // or is non image tag where attribute is not equal background 11241 (tag !== _img && elementImageBase + attribute !== element.css(_backgroundImage)) 11242 ) || 11243 // or custom loader is available 11244 customLoader)) 11245 { 11246 // mark element always as handled as this point to prevent double handling 11247 loadTriggered = true; 11248 element.data(handledName, true); 11249 11250 // load item 11251 _handleItem(element, tag, elementImageBase, customLoader); 11252 } 11253 } 11254 } 11255 11256 // when something was loaded remove them from remaining items 11257 if (loadTriggered) { 11258 items = $(items).filter(function() { 11259 return !$(this).data(handledName); 11260 }); 11261 } 11262 } 11263 11264 /** 11265 * load the given element the lazy way 11266 * @access private 11267 * @param {object} element 11268 * @param {string} tag 11269 * @param {string} imageBase 11270 * @param {function} [customLoader] 11271 * @return void 11272 */ 11273 function _handleItem(element, tag, imageBase, customLoader) { 11274 // increment count of items waiting for after load 11275 ++_awaitingAfterLoad; 11276 11277 // extended error callback for correct 'onFinishedAll' handling 11278 var errorCallback = function() { 11279 _triggerCallback('onError', element); 11280 _reduceAwaiting(); 11281 11282 // prevent further callback calls 11283 errorCallback = $.noop; 11284 }; 11285 11286 // trigger function before loading image 11287 _triggerCallback('beforeLoad', element); 11288 11289 // fetch all double used data here for better code minimization 11290 var srcAttribute = config.attribute, 11291 srcsetAttribute = config.srcsetAttribute, 11292 sizesAttribute = config.sizesAttribute, 11293 retinaAttribute = config.retinaAttribute, 11294 removeAttribute = config.removeAttribute, 11295 loadedName = config.loadedName, 11296 elementRetina = element.attr(retinaAttribute); 11297 11298 // handle custom loader 11299 if (customLoader) { 11300 // on load callback 11301 var loadCallback = function() { 11302 // remove attribute from element 11303 if (removeAttribute) { 11304 element.removeAttr(config.loaderAttribute); 11305 } 11306 11307 // mark element as loaded 11308 element.data(loadedName, true); 11309 11310 // call after load event 11311 _triggerCallback(_afterLoad, element); 11312 11313 // remove item from waiting queue and possibly trigger finished event 11314 // it's needed to be asynchronous to run after filter was in _lazyLoadItems 11315 setTimeout(_reduceAwaiting, 1); 11316 11317 // prevent further callback calls 11318 loadCallback = $.noop; 11319 }; 11320 11321 // bind error event to trigger callback and reduce waiting amount 11322 element.off(_error).one(_error, errorCallback) 11323 11324 // bind after load callback to element 11325 .one(_load, loadCallback); 11326 11327 // trigger custom loader and handle response 11328 if (!_triggerCallback(customLoader, element, function(response) { 11329 if(response) { 11330 element.off(_load); 11331 loadCallback(); 11332 } 11333 else { 11334 element.off(_error); 11335 errorCallback(); 11336 } 11337 })) { 11338 element.trigger(_error); 11339 } 11340 } 11341 11342 // handle images 11343 else { 11344 // create image object 11345 var imageObj = $(new Image()); 11346 11347 // bind error event to trigger callback and reduce waiting amount 11348 imageObj.one(_error, errorCallback) 11349 11350 // bind after load callback to image 11351 .one(_load, function() { 11352 // remove element from view 11353 element.hide(); 11354 11355 // set image back to element 11356 // do it as single 'attr' calls, to be sure 'src' is set after 'srcset' 11357 if (tag === _img) { 11358 element.attr(_sizes, imageObj.attr(_sizes)) 11359 .attr(_srcset, imageObj.attr(_srcset)) 11360 .attr(_src, imageObj.attr(_src)); 11361 } 11362 else { 11363 element.css(_backgroundImage, "url('" + imageObj.attr(_src) + "')"); 11364 } 11365 11366 // bring it back with some effect! 11367 element[config.effect](config.effectTime); 11368 11369 // remove attribute from element 11370 if (removeAttribute) { 11371 element.removeAttr(srcAttribute + ' ' + srcsetAttribute + ' ' + retinaAttribute + ' ' + config.imageBaseAttribute); 11372 11373 // only remove 'sizes' attribute, if it was a custom one 11374 if (sizesAttribute !== _sizes) { 11375 element.removeAttr(sizesAttribute); 11376 } 11377 } 11378 11379 // mark element as loaded 11380 element.data(loadedName, true); 11381 11382 // call after load event 11383 _triggerCallback(_afterLoad, element); 11384 11385 // cleanup image object 11386 imageObj.remove(); 11387 11388 // remove item from waiting queue and possibly trigger finished event 11389 _reduceAwaiting(); 11390 }); 11391 11392 // set sources 11393 // do it as single 'attr' calls, to be sure 'src' is set after 'srcset' 11394 var imageSrc = (_isRetinaDisplay && elementRetina ? elementRetina : element.attr(srcAttribute)) || ''; 11395 imageObj.attr(_sizes, element.attr(sizesAttribute)) 11396 .attr(_srcset, element.attr(srcsetAttribute)) 11397 .attr(_src, imageSrc ? imageBase + imageSrc : null); 11398 11399 // call after load even on cached image 11400 imageObj.complete && imageObj.trigger(_load); // jshint ignore : line 11401 } 11402 } 11403 11404 /** 11405 * check if the given element is inside the current viewport or threshold 11406 * @access private 11407 * @param {object} element 11408 * @return {boolean} 11409 */ 11410 function _isInLoadableArea(element) { 11411 var elementBound = element.getBoundingClientRect(), 11412 direction = config.scrollDirection, 11413 threshold = config.threshold, 11414 vertical = // check if element is in loadable area from top 11415 ((_getActualHeight() + threshold) > elementBound.top) && 11416 // check if element is even in loadable are from bottom 11417 (-threshold < elementBound.bottom), 11418 horizontal = // check if element is in loadable area from left 11419 ((_getActualWidth() + threshold) > elementBound.left) && 11420 // check if element is even in loadable area from right 11421 (-threshold < elementBound.right); 11422 11423 if (direction === 'vertical') { 11424 return vertical; 11425 } 11426 else if (direction === 'horizontal') { 11427 return horizontal; 11428 } 11429 11430 return vertical && horizontal; 11431 } 11432 11433 /** 11434 * receive the current viewed width of the browser 11435 * @access private 11436 * @return {number} 11437 */ 11438 function _getActualWidth() { 11439 return _actualWidth >= 0 ? _actualWidth : (_actualWidth = $(window).width()); 11440 } 11441 11442 /** 11443 * receive the current viewed height of the browser 11444 * @access private 11445 * @return {number} 11446 */ 11447 function _getActualHeight() { 11448 return _actualHeight >= 0 ? _actualHeight : (_actualHeight = $(window).height()); 11449 } 11450 11451 /** 11452 * get lowercase tag name of an element 11453 * @access private 11454 * @param {object} element 11455 * @returns {string} 11456 */ 11457 function _getElementTagName(element) { 11458 return element.tagName.toLowerCase(); 11459 } 11460 11461 /** 11462 * prepend image base to all srcset entries 11463 * @access private 11464 * @param {string} srcset 11465 * @param {string} imageBase 11466 * @returns {string} 11467 */ 11468 function _getCorrectedSrcSet(srcset, imageBase) { 11469 if (imageBase) { 11470 // trim, remove unnecessary spaces and split entries 11471 var entries = srcset.split(','); 11472 srcset = ''; 11473 11474 for (var i = 0, l = entries.length; i < l; i++) { 11475 srcset += imageBase + entries[i].trim() + (i !== l - 1 ? ',' : ''); 11476 } 11477 } 11478 11479 return srcset; 11480 } 11481 11482 /** 11483 * helper function to throttle down event triggering 11484 * @access private 11485 * @param {number} delay 11486 * @param {function} callback 11487 * @return {function} 11488 */ 11489 function _throttle(delay, callback) { 11490 var timeout, 11491 lastExecute = 0; 11492 11493 return function(event, ignoreThrottle) { 11494 var elapsed = +new Date() - lastExecute; 11495 11496 function run() { 11497 lastExecute = +new Date(); 11498 // noinspection JSUnresolvedFunction 11499 callback.call(instance, event); 11500 } 11501 11502 timeout && clearTimeout(timeout); // jshint ignore : line 11503 11504 if (elapsed > delay || !config.enableThrottle || ignoreThrottle) { 11505 run(); 11506 } 11507 else { 11508 timeout = setTimeout(run, delay - elapsed); 11509 } 11510 }; 11511 } 11512 11513 /** 11514 * reduce count of awaiting elements to 'afterLoad' event and fire 'onFinishedAll' if reached zero 11515 * @access private 11516 * @return void 11517 */ 11518 function _reduceAwaiting() { 11519 --_awaitingAfterLoad; 11520 11521 // if no items were left trigger finished event 11522 if (!items.length && !_awaitingAfterLoad) { 11523 _triggerCallback('onFinishedAll'); 11524 } 11525 } 11526 11527 /** 11528 * single implementation to handle callbacks, pass element and set 'this' to current instance 11529 * @access private 11530 * @param {string|function} callback 11531 * @param {object} [element] 11532 * @param {*} [args] 11533 * @return {boolean} 11534 */ 11535 function _triggerCallback(callback, element, args) { 11536 if ((callback = config[callback])) { 11537 // jQuery's internal '$(arguments).slice(1)' are causing problems at least on old iPads 11538 // below is shorthand of 'Array.prototype.slice.call(arguments, 1)' 11539 callback.apply(instance, [].slice.call(arguments, 1)); 11540 return true; 11541 } 11542 11543 return false; 11544 } 11545 11546 // if event driven or window is already loaded don't wait for page loading 11547 if (config.bind === 'event' || windowLoaded) { 11548 _initialize(); 11549 } 11550 11551 // otherwise load initial items and start lazy after page load 11552 else { 11553 // noinspection JSUnresolvedVariable 11554 $(window).on(_load + '.' + namespace, _initialize); 11555 } 11556 } 11557 11558 /** 11559 * lazy plugin class constructor 11560 * @constructor 11561 * @access private 11562 * @param {object} elements 11563 * @param {object} settings 11564 * @return {object|LazyPlugin} 11565 */ 11566 function LazyPlugin(elements, settings) { 11567 /** 11568 * this lazy plugin instance 11569 * @access private 11570 * @type {object|LazyPlugin|LazyPlugin.prototype} 11571 */ 11572 var _instance = this, 11573 11574 /** 11575 * this lazy plugin instance configuration 11576 * @access private 11577 * @type {object} 11578 */ 11579 _config = $.extend({}, _instance.config, settings), 11580 11581 /** 11582 * instance generated event executed on container scroll or resize 11583 * packed in an object to be referenceable and short named because properties will not be minified 11584 * @access private 11585 * @type {object} 11586 */ 11587 _events = {}, 11588 11589 /** 11590 * unique namespace for instance related events 11591 * @access private 11592 * @type {string} 11593 */ 11594 _namespace = _config.name + '-' + (++lazyInstanceId); 11595 11596 // noinspection JSUndefinedPropertyAssignment 11597 /** 11598 * wrapper to get or set an entry from plugin instance configuration 11599 * much smaller on minify as direct access 11600 * @access public 11601 * @type {function} 11602 * @param {string} entryName 11603 * @param {*} [value] 11604 * @return {LazyPlugin|*} 11605 */ 11606 _instance.config = function(entryName, value) { 11607 if (value === undefined) { 11608 return _config[entryName]; 11609 } 11610 11611 _config[entryName] = value; 11612 return _instance; 11613 }; 11614 11615 // noinspection JSUndefinedPropertyAssignment 11616 /** 11617 * add additional items to current instance 11618 * @access public 11619 * @param {Array|object|string} items 11620 * @return {LazyPlugin} 11621 */ 11622 _instance.addItems = function(items) { 11623 _events.a && _events.a($.type(items) === 'string' ? $(items) : items); // jshint ignore : line 11624 return _instance; 11625 }; 11626 11627 // noinspection JSUndefinedPropertyAssignment 11628 /** 11629 * get all left items of this instance 11630 * @access public 11631 * @returns {object} 11632 */ 11633 _instance.getItems = function() { 11634 return _events.g ? _events.g() : {}; 11635 }; 11636 11637 // noinspection JSUndefinedPropertyAssignment 11638 /** 11639 * force lazy to load all items in loadable area right now 11640 * by default without throttle 11641 * @access public 11642 * @type {function} 11643 * @param {boolean} [useThrottle] 11644 * @return {LazyPlugin} 11645 */ 11646 _instance.update = function(useThrottle) { 11647 _events.e && _events.e({}, !useThrottle); // jshint ignore : line 11648 return _instance; 11649 }; 11650 11651 // noinspection JSUndefinedPropertyAssignment 11652 /** 11653 * force element(s) to load directly, ignoring the viewport 11654 * @access public 11655 * @param {Array|object|string} items 11656 * @return {LazyPlugin} 11657 */ 11658 _instance.force = function(items) { 11659 _events.f && _events.f($.type(items) === 'string' ? $(items) : items); // jshint ignore : line 11660 return _instance; 11661 }; 11662 11663 // noinspection JSUndefinedPropertyAssignment 11664 /** 11665 * force lazy to load all available items right now 11666 * this call ignores throttling 11667 * @access public 11668 * @type {function} 11669 * @return {LazyPlugin} 11670 */ 11671 _instance.loadAll = function() { 11672 _events.e && _events.e({all: true}, true); // jshint ignore : line 11673 return _instance; 11674 }; 11675 11676 // noinspection JSUndefinedPropertyAssignment 11677 /** 11678 * destroy this plugin instance 11679 * @access public 11680 * @type {function} 11681 * @return undefined 11682 */ 11683 _instance.destroy = function() { 11684 // unbind instance generated events 11685 // noinspection JSUnresolvedFunction, JSUnresolvedVariable 11686 $(_config.appendScroll).off('.' + _namespace, _events.e); 11687 // noinspection JSUnresolvedVariable 11688 $(window).off('.' + _namespace); 11689 11690 // clear events 11691 _events = {}; 11692 11693 return undefined; 11694 }; 11695 11696 // start using lazy and return all elements to be chainable or instance for further use 11697 // noinspection JSUnresolvedVariable 11698 _executeLazy(_instance, _config, elements, _events, _namespace); 11699 return _config.chainable ? elements : _instance; 11700 } 11701 11702 /** 11703 * settings and configuration data 11704 * @access public 11705 * @type {object|*} 11706 */ 11707 LazyPlugin.prototype.config = { 11708 // general 11709 name : 'lazy', 11710 chainable : true, 11711 autoDestroy : true, 11712 bind : 'load', 11713 threshold : 500, 11714 visibleOnly : false, 11715 appendScroll : window, 11716 scrollDirection : 'both', 11717 imageBase : null, 11718 defaultImage : 'data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw==', 11719 placeholder : null, 11720 delay : -1, 11721 combined : false, 11722 11723 // attributes 11724 attribute : 'data-src', 11725 srcsetAttribute : 'data-srcset', 11726 sizesAttribute : 'data-sizes', 11727 retinaAttribute : 'data-retina', 11728 loaderAttribute : 'data-loader', 11729 imageBaseAttribute : 'data-imagebase', 11730 removeAttribute : true, 11731 handledName : 'handled', 11732 loadedName : 'loaded', 11733 11734 // effect 11735 effect : 'show', 11736 effectTime : 0, 11737 11738 // throttle 11739 enableThrottle : true, 11740 throttle : 250, 11741 11742 // callbacks 11743 beforeLoad : undefined, 11744 afterLoad : undefined, 11745 onError : undefined, 11746 onFinishedAll : undefined 11747 }; 11748 11749 // register window load event globally to prevent not loading elements 11750 // since jQuery 3.X ready state is fully async and may be executed after 'load' 11751 $(window).on('load', function() { 11752 windowLoaded = true; 11753 }); 11754})(window);
vendor: 16,411 bytes, lines 11754-12325
11754 11755function loadResource(filename, fileType, callback) { 11756 var fileRef = null; 11757 11758 if (fileType === "js") { //if filename is a external JavaScript file 11759 fileRef = document.createElement('script'); 11760 fileRef.setAttribute("type","text/javascript"); 11761 fileRef.setAttribute("src", filename); 11762 } 11763 else if (fileType === "css") { //if filename is an external CSS file 11764 fileRef = document.createElement("link"); 11765 fileRef.setAttribute("rel", "stylesheet"); 11766 fileRef.setAttribute("type", "text/css"); 11767 fileRef.setAttribute("href", filename); 11768 } 11769 11770 if (typeof fileRef === "undefined" || fileRef === null) { 11771 return 11772 } 11773 11774 if (callback) { 11775 fileRef.addEventListener('load', callback); 11776 } 11777 11778 document.getElementsByTagName("head")[0].appendChild(fileRef); 11779} 11780/** 11781 * what-input - A global utility for tracking the current input method (mouse, keyboard or touch). 11782 * @version v5.2.10 11783 * @link https://github.com/ten1seven/what-input 11784 * @license MIT 11785 */ 11786(function webpackUniversalModuleDefinition(root, factory) { 11787 if(typeof exports === 'object' && typeof module === 'object') 11788 module.exports = factory(); 11789 else if(typeof define === 'function' && define.amd) 11790 define("whatInput", [], factory); 11791 else if(typeof exports === 'object') 11792 exports["whatInput"] = factory(); 11793 else 11794 root["whatInput"] = factory(); 11795})(this, function() { 11796return /******/ (function(modules) { // webpackBootstrap 11797/******/ // The module cache 11798/******/ var installedModules = {}; 11799 11800/******/ // The require function 11801/******/ function __webpack_require__(moduleId) { 11802 11803/******/ // Check if module is in cache 11804/******/ if(installedModules[moduleId]) 11805/******/ return installedModules[moduleId].exports; 11806 11807/******/ // Create a new module (and put it into the cache) 11808/******/ var module = installedModules[moduleId] = { 11809/******/ exports: {}, 11810/******/ id: moduleId, 11811/******/ loaded: false 11812/******/ }; 11813 11814/******/ // Execute the module function 11815/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 11816 11817/******/ // Flag the module as loaded 11818/******/ module.loaded = true; 11819 11820/******/ // Return the exports of the module 11821/******/ return module.exports; 11822/******/ } 11823 11824 11825/******/ // expose the modules object (__webpack_modules__) 11826/******/ __webpack_require__.m = modules; 11827 11828/******/ // expose the module cache 11829/******/ __webpack_require__.c = installedModules; 11830 11831/******/ // __webpack_public_path__ 11832/******/ __webpack_require__.p = ""; 11833 11834/******/ // Load entry module and return exports 11835/******/ return __webpack_require__(0); 11836/******/ }) 11837/************************************************************************/ 11838/******/ ([ 11839/* 0 */ 11840/***/ (function(module, exports) { 11841 11842 'use strict'; 11843 11844 module.exports = function () { 11845 /* 11846 * bail out if there is no document or window 11847 * (i.e. in a node/non-DOM environment) 11848 * 11849 * Return a stubbed API instead 11850 */ 11851 if (typeof document === 'undefined' || typeof window === 'undefined') { 11852 return { 11853 // always return "initial" because no interaction will ever be detected 11854 ask: function ask() { 11855 return 'initial'; 11856 }, 11857 11858 // always return null 11859 element: function element() { 11860 return null; 11861 }, 11862 11863 // no-op 11864 ignoreKeys: function ignoreKeys() {}, 11865 11866 // no-op 11867 specificKeys: function specificKeys() {}, 11868 11869 // no-op 11870 registerOnChange: function registerOnChange() {}, 11871 11872 // no-op 11873 unRegisterOnChange: function unRegisterOnChange() {} 11874 }; 11875 } 11876 11877 /* 11878 * variables 11879 */ 11880 11881 // cache document.documentElement 11882 var docElem = document.documentElement; 11883 11884 // currently focused dom element 11885 var currentElement = null; 11886 11887 // last used input type 11888 var currentInput = 'initial'; 11889 11890 // last used input intent 11891 var currentIntent = currentInput; 11892 11893 // UNIX timestamp of current event 11894 var currentTimestamp = Date.now(); 11895 11896 // check for a `data-whatpersist` attribute on either the `html` or `body` elements, defaults to `true` 11897 var shouldPersist = 'false'; 11898 11899 // form input types 11900 var formInputs = ['button', 'input', 'select', 'textarea']; 11901 11902 // empty array for holding callback functions 11903 var functionList = []; 11904 11905 // list of modifier keys commonly used with the mouse and 11906 // can be safely ignored to prevent false keyboard detection 11907 var ignoreMap = [16, // shift 11908 17, // control 11909 18, // alt 11910 91, // Windows key / left Apple cmd 11911 93 // Windows menu / right Apple cmd 11912 ]; 11913 11914 var specificMap = []; 11915 11916 // mapping of events to input types 11917 var inputMap = { 11918 keydown: 'keyboard', 11919 keyup: 'keyboard', 11920 mousedown: 'mouse', 11921 mousemove: 'mouse', 11922 MSPointerDown: 'pointer', 11923 MSPointerMove: 'pointer', 11924 pointerdown: 'pointer', 11925 pointermove: 'pointer', 11926 touchstart: 'touch', 11927 touchend: 'touch' 11928 11929 // boolean: true if the page is being scrolled 11930 };var isScrolling = false; 11931 11932 // store current mouse position 11933 var mousePos = { 11934 x: null, 11935 y: null 11936 11937 // map of IE 10 pointer events 11938 };var pointerMap = { 11939 2: 'touch', 11940 3: 'touch', // treat pen like touch 11941 4: 'mouse' 11942 11943 // check support for passive event listeners 11944 };var supportsPassive = false; 11945 11946 try { 11947 var opts = Object.defineProperty({}, 'passive', { 11948 get: function get() { 11949 supportsPassive = true; 11950 } 11951 }); 11952 11953 window.addEventListener('test', null, opts); 11954 } catch (e) {} 11955 // fail silently 11956 11957 11958 /* 11959 * set up 11960 */ 11961 11962 var setUp = function setUp() { 11963 // add correct mouse wheel event mapping to `inputMap` 11964 inputMap[detectWheel()] = 'mouse'; 11965 11966 addListeners(); 11967 }; 11968 11969 /* 11970 * events 11971 */ 11972 11973 var addListeners = function addListeners() { 11974 // `pointermove`, `MSPointerMove`, `mousemove` and mouse wheel event binding 11975 // can only demonstrate potential, but not actual, interaction 11976 // and are treated separately 11977 var options = supportsPassive ? { passive: true } : false; 11978 11979 document.addEventListener('DOMContentLoaded', setPersist); 11980 11981 // pointer events (mouse, pen, touch) 11982 if (window.PointerEvent) { 11983 window.addEventListener('pointerdown', setInput); 11984 window.addEventListener('pointermove', setIntent); 11985 } else if (window.MSPointerEvent) { 11986 window.addEventListener('MSPointerDown', setInput); 11987 window.addEventListener('MSPointerMove', setIntent); 11988 } else { 11989 // mouse events 11990 window.addEventListener('mousedown', setInput); 11991 window.addEventListener('mousemove', setIntent); 11992 11993 // touch events 11994 if ('ontouchstart' in window) { 11995 window.addEventListener('touchstart', setInput, options); 11996 window.addEventListener('touchend', setInput); 11997 } 11998 } 11999 12000 // mouse wheel 12001 window.addEventListener(detectWheel(), setIntent, options); 12002 12003 // keyboard events 12004 window.addEventListener('keydown', setInput); 12005 window.addEventListener('keyup', setInput); 12006 12007 // focus events 12008 window.addEventListener('focusin', setElement); 12009 window.addEventListener('focusout', clearElement); 12010 }; 12011 12012 // checks if input persistence should happen and 12013 // get saved state from session storage if true (defaults to `false`) 12014 var setPersist = function setPersist() { 12015 shouldPersist = !(docElem.getAttribute('data-whatpersist') || document.body.getAttribute('data-whatpersist') === 'false'); 12016 12017 if (shouldPersist) { 12018 // check for session variables and use if available 12019 try { 12020 if (window.sessionStorage.getItem('what-input')) { 12021 currentInput = window.sessionStorage.getItem('what-input'); 12022 } 12023 12024 if (window.sessionStorage.getItem('what-intent')) { 12025 currentIntent = window.sessionStorage.getItem('what-intent'); 12026 } 12027 } catch (e) { 12028 // fail silently 12029 } 12030 } 12031 12032 // always run these so at least `initial` state is set 12033 doUpdate('input'); 12034 doUpdate('intent'); 12035 }; 12036 12037 // checks conditions before updating new input 12038 var setInput = function setInput(event) { 12039 var eventKey = event.which; 12040 var value = inputMap[event.type]; 12041 12042 if (value === 'pointer') { 12043 value = pointerType(event); 12044 } 12045 12046 var ignoreMatch = !specificMap.length && ignoreMap.indexOf(eventKey) === -1; 12047 12048 var specificMatch = specificMap.length && specificMap.indexOf(eventKey) !== -1; 12049 12050 var shouldUpdate = value === 'keyboard' && eventKey && (ignoreMatch || specificMatch) || value === 'mouse' || value === 'touch'; 12051 12052 // prevent touch detection from being overridden by event execution order 12053 if (validateTouch(value)) { 12054 shouldUpdate = false; 12055 } 12056 12057 if (shouldUpdate && currentInput !== value) { 12058 currentInput = value; 12059 12060 persistInput('input', currentInput); 12061 doUpdate('input'); 12062 } 12063 12064 if (shouldUpdate && currentIntent !== value) { 12065 // preserve intent for keyboard interaction with form fields 12066 var activeElem = document.activeElement; 12067 var notFormInput = activeElem && activeElem.nodeName && (formInputs.indexOf(activeElem.nodeName.toLowerCase()) === -1 || activeElem.nodeName.toLowerCase() === 'button' && !checkClosest(activeElem, 'form')); 12068 12069 if (notFormInput) { 12070 currentIntent = value; 12071 12072 persistInput('intent', currentIntent); 12073 doUpdate('intent'); 12074 } 12075 } 12076 }; 12077 12078 // updates the doc and `inputTypes` array with new input 12079 var doUpdate = function doUpdate(which) { 12080 docElem.setAttribute('data-what' + which, which === 'input' ? currentInput : currentIntent); 12081 12082 fireFunctions(which); 12083 }; 12084 12085 // updates input intent for `mousemove` and `pointermove` 12086 var setIntent = function setIntent(event) { 12087 var value = inputMap[event.type]; 12088 12089 if (value === 'pointer') { 12090 value = pointerType(event); 12091 } 12092 12093 // test to see if `mousemove` happened relative to the screen to detect scrolling versus mousemove 12094 detectScrolling(event); 12095 12096 // only execute if scrolling isn't happening 12097 if ((!isScrolling && !validateTouch(value) || isScrolling && event.type === 'wheel' || event.type === 'mousewheel' || event.type === 'DOMMouseScroll') && currentIntent !== value) { 12098 currentIntent = value; 12099 12100 persistInput('intent', currentIntent); 12101 doUpdate('intent'); 12102 } 12103 }; 12104 12105 var setElement = function setElement(event) { 12106 if (!event.target.nodeName) { 12107 // If nodeName is undefined, clear the element 12108 // This can happen if click inside an <svg> element. 12109 clearElement(); 12110 return; 12111 } 12112 12113 currentElement = event.target.nodeName.toLowerCase(); 12114 docElem.setAttribute('data-whatelement', currentElement); 12115 12116 if (event.target.classList && event.target.classList.length) { 12117 docElem.setAttribute('data-whatclasses', event.target.classList.toString().replace(' ', ',')); 12118 } 12119 }; 12120 12121 var clearElement = function clearElement() { 12122 currentElement = null; 12123 12124 docElem.removeAttribute('data-whatelement'); 12125 docElem.removeAttribute('data-whatclasses'); 12126 }; 12127 12128 var persistInput = function persistInput(which, value) { 12129 if (shouldPersist) { 12130 try { 12131 window.sessionStorage.setItem('what-' + which, value); 12132 } catch (e) { 12133 // fail silently 12134 } 12135 } 12136 }; 12137 12138 /* 12139 * utilities 12140 */ 12141 12142 var pointerType = function pointerType(event) { 12143 if (typeof event.pointerType === 'number') { 12144 return pointerMap[event.pointerType]; 12145 } else { 12146 // treat pen like touch 12147 return event.pointerType === 'pen' ? 'touch' : event.pointerType; 12148 } 12149 }; 12150 12151 // prevent touch detection from being overridden by event execution order 12152 var validateTouch = function validateTouch(value) { 12153 var timestamp = Date.now(); 12154 12155 var touchIsValid = value === 'mouse' && currentInput === 'touch' && timestamp - currentTimestamp < 200; 12156 12157 currentTimestamp = timestamp; 12158 12159 return touchIsValid; 12160 }; 12161 12162 // detect version of mouse wheel event to use 12163 // via https://developer.mozilla.org/en-US/docs/Web/API/Element/wheel_event 12164 var detectWheel = function detectWheel() { 12165 var wheelType = null; 12166 12167 // Modern browsers support "wheel" 12168 if ('onwheel' in document.createElement('div')) { 12169 wheelType = 'wheel'; 12170 } else { 12171 // Webkit and IE support at least "mousewheel" 12172 // or assume that remaining browsers are older Firefox 12173 wheelType = document.onmousewheel !== undefined ? 'mousewheel' : 'DOMMouseScroll'; 12174 } 12175 12176 return wheelType; 12177 }; 12178 12179 // runs callback functions 12180 var fireFunctions = function fireFunctions(type) { 12181 for (var i = 0, len = functionList.length; i < len; i++) { 12182 if (functionList[i].type === type) { 12183 functionList[i].fn.call(undefined, type === 'input' ? currentInput : currentIntent); 12184 } 12185 } 12186 }; 12187 12188 // finds matching element in an object 12189 var objPos = function objPos(match) { 12190 for (var i = 0, len = functionList.length; i < len; i++) { 12191 if (functionList[i].fn === match) { 12192 return i; 12193 } 12194 } 12195 }; 12196 12197 var detectScrolling = function detectScrolling(event) { 12198 if (mousePos.x !== event.screenX || mousePos.y !== event.screenY) { 12199 isScrolling = false; 12200 12201 mousePos.x = event.screenX; 12202 mousePos.y = event.screenY; 12203 } else { 12204 isScrolling = true; 12205 } 12206 }; 12207 12208 // manual version of `closest()` 12209 var checkClosest = function checkClosest(elem, tag) { 12210 var ElementPrototype = window.Element.prototype; 12211 12212 if (!ElementPrototype.matches) { 12213 ElementPrototype.matches = ElementPrototype.msMatchesSelector || ElementPrototype.webkitMatchesSelector; 12214 } 12215 12216 if (!ElementPrototype.closest) { 12217 do { 12218 if (elem.matches(tag)) { 12219 return elem; 12220 } 12221 12222 elem = elem.parentElement || elem.parentNode; 12223 } while (elem !== null && elem.nodeType === 1); 12224 12225 return null; 12226 } else { 12227 return elem.closest(tag); 12228 } 12229 }; 12230 12231 /* 12232 * init 12233 */ 12234 12235 // don't start script unless browser cuts the mustard 12236 // (also passes if polyfills are used) 12237 if ('addEventListener' in window && Array.prototype.indexOf) { 12238 setUp(); 12239 } 12240 12241 /* 12242 * api 12243 */ 12244 12245 return { 12246 // returns string: the current input type 12247 // opt: 'intent'|'input' 12248 // 'input' (default): returns the same value as the `data-whatinput` attribute 12249 // 'intent': includes `data-whatintent` value if it's different than `data-whatinput` 12250 ask: function ask(opt) { 12251 return opt === 'intent' ? currentIntent : currentInput; 12252 }, 12253 12254 // returns string: the currently focused element or null 12255 element: function element() { 12256 return currentElement; 12257 }, 12258 12259 // overwrites ignored keys with provided array 12260 ignoreKeys: function ignoreKeys(arr) { 12261 ignoreMap = arr; 12262 }, 12263 12264 // overwrites specific char keys to update on 12265 specificKeys: function specificKeys(arr) { 12266 specificMap = arr; 12267 }, 12268 12269 // attach functions to input and intent "events" 12270 // funct: function to fire on change 12271 // eventType: 'input'|'intent' 12272 registerOnChange: function registerOnChange(fn, eventType) { 12273 functionList.push({ 12274 fn: fn, 12275 type: eventType || 'input' 12276 }); 12277 }, 12278 12279 unRegisterOnChange: function unRegisterOnChange(fn) { 12280 var position = objPos(fn); 12281 12282 if (position || position === 0) { 12283 functionList.splice(position, 1); 12284 } 12285 }, 12286 12287 clearStorage: function clearStorage() { 12288 window.sessionStorage.clear(); 12289 } 12290 }; 12291 }(); 12292 12293/***/ }) 12294/******/ ]) 12295}); 12296; 12297/* 12298 _ _ _ _ 12299 ___| (_) ___| | __ (_)___ 12300/ __| | |/ __| |/ / | / __| 12301\__ \ | | (__| < _ | \__ \ 12302|___/_|_|\___|_|\_(_)/ |___/ 12303 |__/ 12304 12305 Version: 1.8.1 12306 Author: Ken Wheeler 12307 Website: http://kenwheeler.github.io 12308 Docs: http://kenwheeler.github.io/slick 12309 Repo: http://github.com/kenwheeler/slick 12310 Issues: http://github.com/kenwheeler/slick/issues 12311 12312 */ 12313/* global window, document, define, jQuery, setInterval, clearInterval */ 12314;(function(factory) { 12315 'use strict'; 12316 if (typeof define === 'function' && define.amd) { 12317 define(['jquery'], factory); 12318 } else if (typeof exports !== 'undefined') { 12319 module.exports = factory(require('jquery')); 12320 } else { 12321 factory(jQuery); 12322 } 12323 12324}(function($) { 12325 'use strict';
vendor: 31,932 bytes, lines 12325-13388
12325 12326 var Slick = window.Slick || {}; 12327 12328 Slick = (function() { 12329 12330 var instanceUid = 0; 12331 12332 function Slick(element, settings) { 12333 12334 var _ = this, dataSettings; 12335 12336 _.defaults = { 12337 accessibility: true, 12338 adaptiveHeight: false, 12339 appendArrows: $(element), 12340 appendDots: $(element), 12341 arrows: true, 12342 asNavFor: null, 12343 prevArrow: '<button class="slick-prev" aria-label="Previous" type="button">Previous</button>', 12344 nextArrow: '<button class="slick-next" aria-label="Next" type="button">Next</button>', 12345 autoplay: false, 12346 autoplaySpeed: 3000, 12347 centerMode: false, 12348 centerPadding: '50px', 12349 cssEase: 'ease', 12350 customPaging: function(slider, i) { 12351 return $('<button type="button" />').text(i + 1); 12352 }, 12353 dots: false, 12354 dotsClass: 'slick-dots', 12355 draggable: true, 12356 easing: 'linear', 12357 edgeFriction: 0.35, 12358 fade: false, 12359 focusOnSelect: false, 12360 focusOnChange: false, 12361 infinite: true, 12362 initialSlide: 0, 12363 lazyLoad: 'ondemand', 12364 mobileFirst: false, 12365 pauseOnHover: true, 12366 pauseOnFocus: true, 12367 pauseOnDotsHover: false, 12368 respondTo: 'window', 12369 responsive: null, 12370 rows: 1, 12371 rtl: false, 12372 slide: '', 12373 slidesPerRow: 1, 12374 slidesToShow: 1, 12375 slidesToScroll: 1, 12376 speed: 500, 12377 swipe: true, 12378 swipeToSlide: false, 12379 touchMove: true, 12380 touchThreshold: 5, 12381 useCSS: true, 12382 useTransform: true, 12383 variableWidth: false, 12384 vertical: false, 12385 verticalSwiping: false, 12386 waitForAnimate: true, 12387 zIndex: 1000 12388 }; 12389 12390 _.initials = { 12391 animating: false, 12392 dragging: false, 12393 autoPlayTimer: null, 12394 currentDirection: 0, 12395 currentLeft: null, 12396 currentSlide: 0, 12397 direction: 1, 12398 $dots: null, 12399 listWidth: null, 12400 listHeight: null, 12401 loadIndex: 0, 12402 $nextArrow: null, 12403 $prevArrow: null, 12404 scrolling: false, 12405 slideCount: null, 12406 slideWidth: null, 12407 $slideTrack: null, 12408 $slides: null, 12409 sliding: false, 12410 slideOffset: 0, 12411 swipeLeft: null, 12412 swiping: false, 12413 $list: null, 12414 touchObject: {}, 12415 transformsEnabled: false, 12416 unslicked: false 12417 }; 12418 12419 $.extend(_, _.initials); 12420 12421 _.activeBreakpoint = null; 12422 _.animType = null; 12423 _.animProp = null; 12424 _.breakpoints = []; 12425 _.breakpointSettings = []; 12426 _.cssTransitions = false; 12427 _.focussed = false; 12428 _.interrupted = false; 12429 _.hidden = 'hidden'; 12430 _.paused = true; 12431 _.positionProp = null; 12432 _.respondTo = null; 12433 _.rowCount = 1; 12434 _.shouldClick = true; 12435 _.$slider = $(element); 12436 _.$slidesCache = null; 12437 _.transformType = null; 12438 _.transitionType = null; 12439 _.visibilityChange = 'visibilitychange'; 12440 _.windowWidth = 0; 12441 _.windowTimer = null; 12442 12443 dataSettings = $(element).data('slick') || {}; 12444 12445 _.options = $.extend({}, _.defaults, settings, dataSettings); 12446 12447 _.currentSlide = _.options.initialSlide; 12448 12449 _.originalSettings = _.options; 12450 12451 if (typeof document.mozHidden !== 'undefined') { 12452 _.hidden = 'mozHidden'; 12453 _.visibilityChange = 'mozvisibilitychange'; 12454 } else if (typeof document.webkitHidden !== 'undefined') { 12455 _.hidden = 'webkitHidden'; 12456 _.visibilityChange = 'webkitvisibilitychange'; 12457 } 12458 12459 _.autoPlay = $.proxy(_.autoPlay, _); 12460 _.autoPlayClear = $.proxy(_.autoPlayClear, _); 12461 _.autoPlayIterator = $.proxy(_.autoPlayIterator, _); 12462 _.changeSlide = $.proxy(_.changeSlide, _); 12463 _.clickHandler = $.proxy(_.clickHandler, _); 12464 _.selectHandler = $.proxy(_.selectHandler, _); 12465 _.setPosition = $.proxy(_.setPosition, _); 12466 _.swipeHandler = $.proxy(_.swipeHandler, _); 12467 _.dragHandler = $.proxy(_.dragHandler, _); 12468 _.keyHandler = $.proxy(_.keyHandler, _); 12469 12470 _.instanceUid = instanceUid++; 12471 12472 // A simple way to check for HTML strings 12473 // Strict HTML recognition (must start with <) 12474 // Extracted from jQuery v1.11 source 12475 _.htmlExpr = /^(?:\s*(<[\w\W]+>)[^>]*)$/; 12476 12477 12478 _.registerBreakpoints(); 12479 _.init(true); 12480 12481 } 12482 12483 return Slick; 12484 12485 }()); 12486 12487 Slick.prototype.activateADA = function() { 12488 var _ = this; 12489 12490 _.$slideTrack.find('.slick-active').attr({ 12491 'aria-hidden': 'false' 12492 }).find('a, input, button, select').attr({ 12493 'tabindex': '0' 12494 }); 12495 12496 }; 12497 12498 Slick.prototype.addSlide = Slick.prototype.slickAdd = function(markup, index, addBefore) { 12499 12500 var _ = this; 12501 12502 if (typeof(index) === 'boolean') { 12503 addBefore = index; 12504 index = null; 12505 } else if (index < 0 || (index >= _.slideCount)) { 12506 return false; 12507 } 12508 12509 _.unload(); 12510 12511 if (typeof(index) === 'number') { 12512 if (index === 0 && _.$slides.length === 0) { 12513 $(markup).appendTo(_.$slideTrack); 12514 } else if (addBefore) { 12515 $(markup).insertBefore(_.$slides.eq(index)); 12516 } else { 12517 $(markup).insertAfter(_.$slides.eq(index)); 12518 } 12519 } else { 12520 if (addBefore === true) { 12521 $(markup).prependTo(_.$slideTrack); 12522 } else { 12523 $(markup).appendTo(_.$slideTrack); 12524 } 12525 } 12526 12527 _.$slides = _.$slideTrack.children(this.options.slide); 12528 12529 _.$slideTrack.children(this.options.slide).detach(); 12530 12531 _.$slideTrack.append(_.$slides); 12532 12533 _.$slides.each(function(index, element) { 12534 $(element).attr('data-slick-index', index); 12535 }); 12536 12537 _.$slidesCache = _.$slides; 12538 12539 _.reinit(); 12540 12541 }; 12542 12543 Slick.prototype.animateHeight = function() { 12544 var _ = this; 12545 if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) { 12546 var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true); 12547 _.$list.animate({ 12548 height: targetHeight 12549 }, _.options.speed); 12550 } 12551 }; 12552 12553 Slick.prototype.animateSlide = function(targetLeft, callback) { 12554 12555 var animProps = {}, 12556 _ = this; 12557 12558 _.animateHeight(); 12559 12560 if (_.options.rtl === true && _.options.vertical === false) { 12561 targetLeft = -targetLeft; 12562 } 12563 if (_.transformsEnabled === false) { 12564 if (_.options.vertical === false) { 12565 _.$slideTrack.animate({ 12566 left: targetLeft 12567 }, _.options.speed, _.options.easing, callback); 12568 } else { 12569 _.$slideTrack.animate({ 12570 top: targetLeft 12571 }, _.options.speed, _.options.easing, callback); 12572 } 12573 12574 } else { 12575 12576 if (_.cssTransitions === false) { 12577 if (_.options.rtl === true) { 12578 _.currentLeft = -(_.currentLeft); 12579 } 12580 $({ 12581 animStart: _.currentLeft 12582 }).animate({ 12583 animStart: targetLeft 12584 }, { 12585 duration: _.options.speed, 12586 easing: _.options.easing, 12587 step: function(now) { 12588 now = Math.ceil(now); 12589 if (_.options.vertical === false) { 12590 animProps[_.animType] = 'translate(' + 12591 now + 'px, 0px)'; 12592 _.$slideTrack.css(animProps); 12593 } else { 12594 animProps[_.animType] = 'translate(0px,' + 12595 now + 'px)'; 12596 _.$slideTrack.css(animProps); 12597 } 12598 }, 12599 complete: function() { 12600 if (callback) { 12601 callback.call(); 12602 } 12603 } 12604 }); 12605 12606 } else { 12607 12608 _.applyTransition(); 12609 targetLeft = Math.ceil(targetLeft); 12610 12611 if (_.options.vertical === false) { 12612 animProps[_.animType] = 'translate3d(' + targetLeft + 'px, 0px, 0px)'; 12613 } else { 12614 animProps[_.animType] = 'translate3d(0px,' + targetLeft + 'px, 0px)'; 12615 } 12616 _.$slideTrack.css(animProps); 12617 12618 if (callback) { 12619 setTimeout(function() { 12620 12621 _.disableTransition(); 12622 12623 callback.call(); 12624 }, _.options.speed); 12625 } 12626 12627 } 12628 12629 } 12630 12631 }; 12632 12633 Slick.prototype.getNavTarget = function() { 12634 12635 var _ = this, 12636 asNavFor = _.options.asNavFor; 12637 12638 if ( asNavFor && asNavFor !== null ) { 12639 asNavFor = $(asNavFor).not(_.$slider); 12640 } 12641 12642 return asNavFor; 12643 12644 }; 12645 12646 Slick.prototype.asNavFor = function(index) { 12647 12648 var _ = this, 12649 asNavFor = _.getNavTarget(); 12650 12651 if ( asNavFor !== null && typeof asNavFor === 'object' ) { 12652 asNavFor.each(function() { 12653 var target = $(this).slick('getSlick'); 12654 if(!target.unslicked) { 12655 target.slideHandler(index, true); 12656 } 12657 }); 12658 } 12659 12660 }; 12661 12662 Slick.prototype.applyTransition = function(slide) { 12663 12664 var _ = this, 12665 transition = {}; 12666 12667 if (_.options.fade === false) { 12668 transition[_.transitionType] = _.transformType + ' ' + _.options.speed + 'ms ' + _.options.cssEase; 12669 } else { 12670 transition[_.transitionType] = 'opacity ' + _.options.speed + 'ms ' + _.options.cssEase; 12671 } 12672 12673 if (_.options.fade === false) { 12674 _.$slideTrack.css(transition); 12675 } else { 12676 _.$slides.eq(slide).css(transition); 12677 } 12678 12679 }; 12680 12681 Slick.prototype.autoPlay = function() { 12682 12683 var _ = this; 12684 12685 _.autoPlayClear(); 12686 12687 if ( _.slideCount > _.options.slidesToShow ) { 12688 _.autoPlayTimer = setInterval( _.autoPlayIterator, _.options.autoplaySpeed ); 12689 } 12690 12691 }; 12692 12693 Slick.prototype.autoPlayClear = function() { 12694 12695 var _ = this; 12696 12697 if (_.autoPlayTimer) { 12698 clearInterval(_.autoPlayTimer); 12699 } 12700 12701 }; 12702 12703 Slick.prototype.autoPlayIterator = function() { 12704 12705 var _ = this, 12706 slideTo = _.currentSlide + _.options.slidesToScroll; 12707 12708 if ( !_.paused && !_.interrupted && !_.focussed ) { 12709 12710 if ( _.options.infinite === false ) { 12711 12712 if ( _.direction === 1 && ( _.currentSlide + 1 ) === ( _.slideCount - 1 )) { 12713 _.direction = 0; 12714 } 12715 12716 else if ( _.direction === 0 ) { 12717 12718 slideTo = _.currentSlide - _.options.slidesToScroll; 12719 12720 if ( _.currentSlide - 1 === 0 ) { 12721 _.direction = 1; 12722 } 12723 12724 } 12725 12726 } 12727 12728 _.slideHandler( slideTo ); 12729 12730 } 12731 12732 }; 12733 12734 Slick.prototype.buildArrows = function() { 12735 12736 var _ = this; 12737 12738 if (_.options.arrows === true ) { 12739 12740 _.$prevArrow = $(_.options.prevArrow).addClass('slick-arrow'); 12741 _.$nextArrow = $(_.options.nextArrow).addClass('slick-arrow'); 12742 12743 if( _.slideCount > _.options.slidesToShow ) { 12744 12745 _.$prevArrow.removeClass('slick-hidden').removeAttr('aria-hidden tabindex'); 12746 _.$nextArrow.removeClass('slick-hidden').removeAttr('aria-hidden tabindex'); 12747 12748 if (_.htmlExpr.test(_.options.prevArrow)) { 12749 _.$prevArrow.prependTo(_.options.appendArrows); 12750 } 12751 12752 if (_.htmlExpr.test(_.options.nextArrow)) { 12753 _.$nextArrow.appendTo(_.options.appendArrows); 12754 } 12755 12756 if (_.options.infinite !== true) { 12757 _.$prevArrow 12758 .addClass('slick-disabled') 12759 .attr('aria-disabled', 'true'); 12760 } 12761 12762 } else { 12763 12764 _.$prevArrow.add( _.$nextArrow ) 12765 12766 .addClass('slick-hidden') 12767 .attr({ 12768 'aria-disabled': 'true', 12769 'tabindex': '-1' 12770 }); 12771 12772 } 12773 12774 } 12775 12776 }; 12777 12778 Slick.prototype.buildDots = function() { 12779 12780 var _ = this, 12781 i, dot; 12782 12783 if (_.options.dots === true && _.slideCount > _.options.slidesToShow) { 12784 12785 _.$slider.addClass('slick-dotted'); 12786 12787 dot = $('<ul />').addClass(_.options.dotsClass); 12788 12789 for (i = 0; i <= _.getDotCount(); i += 1) { 12790 dot.append($('<li />').append(_.options.customPaging.call(this, _, i))); 12791 } 12792 12793 _.$dots = dot.appendTo(_.options.appendDots); 12794 12795 _.$dots.find('li').first().addClass('slick-active'); 12796 12797 } 12798 12799 }; 12800 12801 Slick.prototype.buildOut = function() { 12802 12803 var _ = this; 12804 12805 _.$slides = 12806 _.$slider 12807 .children( _.options.slide + ':not(.slick-cloned)') 12808 .addClass('slick-slide'); 12809 12810 _.slideCount = _.$slides.length; 12811 12812 _.$slides.each(function(index, element) { 12813 $(element) 12814 .attr('data-slick-index', index) 12815 .data('originalStyling', $(element).attr('style') || ''); 12816 }); 12817 12818 _.$slider.addClass('slick-slider'); 12819 12820 _.$slideTrack = (_.slideCount === 0) ? 12821 $('<div class="slick-track"/>').appendTo(_.$slider) : 12822 _.$slides.wrapAll('<div class="slick-track"/>').parent(); 12823 12824 _.$list = _.$slideTrack.wrap( 12825 '<div class="slick-list"/>').parent(); 12826 _.$slideTrack.css('opacity', 0); 12827 12828 if (_.options.centerMode === true || _.options.swipeToSlide === true) { 12829 _.options.slidesToScroll = 1; 12830 } 12831 12832 $('img[data-lazy]', _.$slider).not('[src]').addClass('slick-loading'); 12833 12834 _.setupInfinite(); 12835 12836 _.buildArrows(); 12837 12838 _.buildDots(); 12839 12840 _.updateDots(); 12841 12842 12843 _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0); 12844 12845 if (_.options.draggable === true) { 12846 _.$list.addClass('draggable'); 12847 } 12848 12849 }; 12850 12851 Slick.prototype.buildRows = function() { 12852 12853 var _ = this, a, b, c, newSlides, numOfSlides, originalSlides,slidesPerSection; 12854 12855 newSlides = document.createDocumentFragment(); 12856 originalSlides = _.$slider.children(); 12857 12858 if(_.options.rows > 0) { 12859 12860 slidesPerSection = _.options.slidesPerRow * _.options.rows; 12861 numOfSlides = Math.ceil( 12862 originalSlides.length / slidesPerSection 12863 ); 12864 12865 for(a = 0; a < numOfSlides; a++){ 12866 var slide = document.createElement('div'); 12867 for(b = 0; b < _.options.rows; b++) { 12868 var row = document.createElement('div'); 12869 for(c = 0; c < _.options.slidesPerRow; c++) { 12870 var target = (a * slidesPerSection + ((b * _.options.slidesPerRow) + c)); 12871 if (originalSlides.get(target)) { 12872 row.appendChild(originalSlides.get(target)); 12873 } 12874 } 12875 slide.appendChild(row); 12876 } 12877 newSlides.appendChild(slide); 12878 } 12879 12880 _.$slider.empty().append(newSlides); 12881 _.$slider.children().children().children() 12882 .css({ 12883 'width':(100 / _.options.slidesPerRow) + '%', 12884 'display': 'inline-block' 12885 }); 12886 12887 } 12888 12889 }; 12890 12891 Slick.prototype.checkResponsive = function(initial, forceUpdate) { 12892 12893 var _ = this, 12894 breakpoint, targetBreakpoint, respondToWidth, triggerBreakpoint = false; 12895 var sliderWidth = _.$slider.width(); 12896 var windowWidth = window.innerWidth || $(window).width(); 12897 12898 if (_.respondTo === 'window') { 12899 respondToWidth = windowWidth; 12900 } else if (_.respondTo === 'slider') { 12901 respondToWidth = sliderWidth; 12902 } else if (_.respondTo === 'min') { 12903 respondToWidth = Math.min(windowWidth, sliderWidth); 12904 } 12905 12906 if ( _.options.responsive && 12907 _.options.responsive.length && 12908 _.options.responsive !== null) { 12909 12910 targetBreakpoint = null; 12911 12912 for (breakpoint in _.breakpoints) { 12913 if (_.breakpoints.hasOwnProperty(breakpoint)) { 12914 if (_.originalSettings.mobileFirst === false) { 12915 if (respondToWidth < _.breakpoints[breakpoint]) { 12916 targetBreakpoint = _.breakpoints[breakpoint]; 12917 } 12918 } else { 12919 if (respondToWidth > _.breakpoints[breakpoint]) { 12920 targetBreakpoint = _.breakpoints[breakpoint]; 12921 } 12922 } 12923 } 12924 } 12925 12926 if (targetBreakpoint !== null) { 12927 if (_.activeBreakpoint !== null) { 12928 if (targetBreakpoint !== _.activeBreakpoint || forceUpdate) { 12929 _.activeBreakpoint = 12930 targetBreakpoint; 12931 if (_.breakpointSettings[targetBreakpoint] === 'unslick') { 12932 _.unslick(targetBreakpoint); 12933 } else { 12934 _.options = $.extend({}, _.originalSettings, 12935 _.breakpointSettings[ 12936 targetBreakpoint]); 12937 if (initial === true) { 12938 _.currentSlide = _.options.initialSlide; 12939 } 12940 _.refresh(initial); 12941 } 12942 triggerBreakpoint = targetBreakpoint; 12943 } 12944 } else { 12945 _.activeBreakpoint = targetBreakpoint; 12946 if (_.breakpointSettings[targetBreakpoint] === 'unslick') { 12947 _.unslick(targetBreakpoint); 12948 } else { 12949 _.options = $.extend({}, _.originalSettings, 12950 _.breakpointSettings[ 12951 targetBreakpoint]); 12952 if (initial === true) { 12953 _.currentSlide = _.options.initialSlide; 12954 } 12955 _.refresh(initial); 12956 } 12957 triggerBreakpoint = targetBreakpoint; 12958 } 12959 } else { 12960 if (_.activeBreakpoint !== null) { 12961 _.activeBreakpoint = null; 12962 _.options = _.originalSettings; 12963 if (initial === true) { 12964 _.currentSlide = _.options.initialSlide; 12965 } 12966 _.refresh(initial); 12967 triggerBreakpoint = targetBreakpoint; 12968 } 12969 } 12970 12971 // only trigger breakpoints during an actual break. not on initialize. 12972 if( !initial && triggerBreakpoint !== false ) { 12973 _.$slider.trigger('breakpoint', [_, triggerBreakpoint]); 12974 } 12975 } 12976 12977 }; 12978 12979 Slick.prototype.changeSlide = function(event, dontAnimate) { 12980 12981 var _ = this, 12982 $target = $(event.currentTarget), 12983 indexOffset, slideOffset, unevenOffset; 12984 12985 // If target is a link, prevent default action. 12986 if($target.is('a')) { 12987 event.preventDefault(); 12988 } 12989 12990 // If target is not the <li> element (ie: a child), find the <li>. 12991 if(!$target.is('li')) { 12992 $target = $target.closest('li'); 12993 } 12994 12995 unevenOffset = (_.slideCount % _.options.slidesToScroll !== 0); 12996 indexOffset = unevenOffset ? 0 : (_.slideCount - _.currentSlide) % _.options.slidesToScroll; 12997 12998 switch (event.data.message) { 12999 13000 case 'previous': 13001 slideOffset = indexOffset === 0 ? _.options.slidesToScroll : _.options.slidesToShow - indexOffset; 13002 if (_.slideCount > _.options.slidesToShow) { 13003 _.slideHandler(_.currentSlide - slideOffset, false, dontAnimate); 13004 } 13005 break; 13006 13007 case 'next': 13008 slideOffset = indexOffset === 0 ? _.options.slidesToScroll : indexOffset; 13009 if (_.slideCount > _.options.slidesToShow) { 13010 _.slideHandler(_.currentSlide + slideOffset, false, dontAnimate); 13011 } 13012 break; 13013 13014 case 'index': 13015 var index = event.data.index === 0 ? 0 : 13016 event.data.index || $target.index() * _.options.slidesToScroll; 13017 13018 _.slideHandler(_.checkNavigable(index), false, dontAnimate); 13019 $target.children().trigger('focus'); 13020 break; 13021 13022 default: 13023 return; 13024 } 13025 13026 }; 13027 13028 Slick.prototype.checkNavigable = function(index) { 13029 13030 var _ = this, 13031 navigables, prevNavigable; 13032 13033 navigables = _.getNavigableIndexes(); 13034 prevNavigable = 0; 13035 if (index > navigables[navigables.length - 1]) { 13036 index = navigables[navigables.length - 1]; 13037 } else { 13038 for (var n in navigables) { 13039 if (index < navigables[n]) { 13040 index = prevNavigable; 13041 break; 13042 } 13043 prevNavigable = navigables[n]; 13044 } 13045 } 13046 13047 return index; 13048 }; 13049 13050 Slick.prototype.cleanUpEvents = function() { 13051 13052 var _ = this; 13053 13054 if (_.options.dots && _.$dots !== null) { 13055 13056 $('li', _.$dots) 13057 .off('click.slick', _.changeSlide) 13058 .off('mouseenter.slick', $.proxy(_.interrupt, _, true)) 13059 .off('mouseleave.slick', $.proxy(_.interrupt, _, false)); 13060 13061 if (_.options.accessibility === true) { 13062 _.$dots.off('keydown.slick', _.keyHandler); 13063 } 13064 } 13065 13066 _.$slider.off('focus.slick blur.slick'); 13067 13068 if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) { 13069 _.$prevArrow && _.$prevArrow.off('click.slick', _.changeSlide); 13070 _.$nextArrow && _.$nextArrow.off('click.slick', _.changeSlide); 13071 13072 if (_.options.accessibility === true) { 13073 _.$prevArrow && _.$prevArrow.off('keydown.slick', _.keyHandler); 13074 _.$nextArrow && _.$nextArrow.off('keydown.slick', _.keyHandler); 13075 } 13076 } 13077 13078 _.$list.off('touchstart.slick mousedown.slick', _.swipeHandler); 13079 _.$list.off('touchmove.slick mousemove.slick', _.swipeHandler); 13080 _.$list.off('touchend.slick mouseup.slick', _.swipeHandler); 13081 _.$list.off('touchcancel.slick mouseleave.slick', _.swipeHandler); 13082 13083 _.$list.off('click.slick', _.clickHandler); 13084 13085 $(document).off(_.visibilityChange, _.visibility); 13086 13087 _.cleanUpSlideEvents(); 13088 13089 if (_.options.accessibility === true) { 13090 _.$list.off('keydown.slick', _.keyHandler); 13091 } 13092 13093 if (_.options.focusOnSelect === true) { 13094 $(_.$slideTrack).children().off('click.slick', _.selectHandler); 13095 } 13096 13097 $(window).off('orientationchange.slick.slick-' + _.instanceUid, _.orientationChange); 13098 13099 $(window).off('resize.slick.slick-' + _.instanceUid, _.resize); 13100 13101 $('[draggable!=true]', _.$slideTrack).off('dragstart', _.preventDefault); 13102 13103 $(window).off('load.slick.slick-' + _.instanceUid, _.setPosition); 13104 13105 }; 13106 13107 Slick.prototype.cleanUpSlideEvents = function() { 13108 13109 var _ = this; 13110 13111 _.$list.off('mouseenter.slick', $.proxy(_.interrupt, _, true)); 13112 _.$list.off('mouseleave.slick', $.proxy(_.interrupt, _, false)); 13113 13114 }; 13115 13116 Slick.prototype.cleanUpRows = function() { 13117 13118 var _ = this, originalSlides; 13119 13120 if(_.options.rows > 0) { 13121 originalSlides = _.$slides.children().children(); 13122 originalSlides.removeAttr('style'); 13123 _.$slider.empty().append(originalSlides); 13124 } 13125 13126 }; 13127 13128 Slick.prototype.clickHandler = function(event) { 13129 13130 var _ = this; 13131 13132 if (_.shouldClick === false) { 13133 event.stopImmediatePropagation(); 13134 event.stopPropagation(); 13135 event.preventDefault(); 13136 } 13137 13138 }; 13139 13140 Slick.prototype.destroy = function(refresh) { 13141 13142 var _ = this; 13143 13144 _.autoPlayClear(); 13145 13146 _.touchObject = {}; 13147 13148 _.cleanUpEvents(); 13149 13150 $('.slick-cloned', _.$slider).detach(); 13151 13152 if (_.$dots) { 13153 _.$dots.remove(); 13154 } 13155 13156 if ( _.$prevArrow && _.$prevArrow.length ) { 13157 13158 _.$prevArrow 13159 .removeClass('slick-disabled slick-arrow slick-hidden') 13160 .removeAttr('aria-hidden aria-disabled tabindex') 13161 .css('display',''); 13162 13163 if ( _.htmlExpr.test( _.options.prevArrow )) { 13164 _.$prevArrow.remove(); 13165 } 13166 } 13167 13168 if ( _.$nextArrow && _.$nextArrow.length ) { 13169 13170 _.$nextArrow 13171 .removeClass('slick-disabled slick-arrow slick-hidden') 13172 .removeAttr('aria-hidden aria-disabled tabindex') 13173 .css('display',''); 13174 13175 if ( _.htmlExpr.test( _.options.nextArrow )) { 13176 _.$nextArrow.remove(); 13177 } 13178 } 13179 13180 13181 if (_.$slides) { 13182 13183 _.$slides 13184 .removeClass('slick-slide slick-active slick-center slick-visible slick-current') 13185 .removeAttr('aria-hidden') 13186 .removeAttr('data-slick-index') 13187 .each(function(){ 13188 $(this).attr('style', $(this).data('originalStyling')); 13189 }); 13190 13191 _.$slideTrack.children(this.options.slide).detach(); 13192 13193 _.$slideTrack.detach(); 13194 13195 _.$list.detach(); 13196 13197 _.$slider.append(_.$slides); 13198 } 13199 13200 _.cleanUpRows(); 13201 13202 _.$slider.removeClass('slick-slider'); 13203 _.$slider.removeClass('slick-initialized'); 13204 _.$slider.removeClass('slick-dotted'); 13205 13206 _.unslicked = true; 13207 13208 if(!refresh) { 13209 _.$slider.trigger('destroy', [_]); 13210 } 13211 13212 }; 13213 13214 Slick.prototype.disableTransition = function(slide) { 13215 13216 var _ = this, 13217 transition = {}; 13218 13219 transition[_.transitionType] = ''; 13220 13221 if (_.options.fade === false) { 13222 _.$slideTrack.css(transition); 13223 } else { 13224 _.$slides.eq(slide).css(transition); 13225 } 13226 13227 }; 13228 13229 Slick.prototype.fadeSlide = function(slideIndex, callback) { 13230 13231 var _ = this; 13232 13233 if (_.cssTransitions === false) { 13234 13235 _.$slides.eq(slideIndex).css({ 13236 zIndex: _.options.zIndex 13237 }); 13238 13239 _.$slides.eq(slideIndex).animate({ 13240 opacity: 1 13241 }, _.options.speed, _.options.easing, callback); 13242 13243 } else { 13244 13245 _.applyTransition(slideIndex); 13246 13247 _.$slides.eq(slideIndex).css({ 13248 opacity: 1, 13249 zIndex: _.options.zIndex 13250 }); 13251 13252 if (callback) { 13253 setTimeout(function() { 13254 13255 _.disableTransition(slideIndex); 13256 13257 callback.call(); 13258 }, _.options.speed); 13259 } 13260 13261 } 13262 13263 }; 13264 13265 Slick.prototype.fadeSlideOut = function(slideIndex) { 13266 13267 var _ = this; 13268 13269 if (_.cssTransitions === false) { 13270 13271 _.$slides.eq(slideIndex).animate({ 13272 opacity: 0, 13273 zIndex: _.options.zIndex - 2 13274 }, _.options.speed, _.options.easing); 13275 13276 } else { 13277 13278 _.applyTransition(slideIndex); 13279 13280 _.$slides.eq(slideIndex).css({ 13281 opacity: 0, 13282 zIndex: _.options.zIndex - 2 13283 }); 13284 13285 } 13286 13287 }; 13288 13289 Slick.prototype.filterSlides = Slick.prototype.slickFilter = function(filter) { 13290 13291 var _ = this; 13292 13293 if (filter !== null) { 13294 13295 _.$slidesCache = _.$slides; 13296 13297 _.unload(); 13298 13299 _.$slideTrack.children(this.options.slide).detach(); 13300 13301 _.$slidesCache.filter(filter).appendTo(_.$slideTrack); 13302 13303 _.reinit(); 13304 13305 } 13306 13307 }; 13308 13309 Slick.prototype.focusHandler = function() { 13310 13311 var _ = this; 13312 13313 _.$slider 13314 .off('focus.slick blur.slick') 13315 .on('focus.slick blur.slick', '*', function(event) { 13316 13317 event.stopImmediatePropagation(); 13318 var $sf = $(this); 13319 13320 setTimeout(function() { 13321 13322 if( _.options.pauseOnFocus ) { 13323 _.focussed = $sf.is(':focus'); 13324 _.autoPlay(); 13325 } 13326 13327 }, 0); 13328 13329 }); 13330 }; 13331 13332 Slick.prototype.getCurrent = Slick.prototype.slickCurrentSlide = function() { 13333 13334 var _ = this; 13335 return _.currentSlide; 13336 13337 }; 13338 13339 Slick.prototype.getDotCount = function() { 13340 13341 var _ = this; 13342 13343 var breakPoint = 0; 13344 var counter = 0; 13345 var pagerQty = 0; 13346 13347 if (_.options.infinite === true) { 13348 if (_.slideCount <= _.options.slidesToShow) { 13349 ++pagerQty; 13350 } else { 13351 while (breakPoint < _.slideCount) { 13352 ++pagerQty; 13353 breakPoint = counter + _.options.slidesToScroll; 13354 counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow; 13355 } 13356 } 13357 } else if (_.options.centerMode === true) { 13358 pagerQty = _.slideCount; 13359 } else if(!_.options.asNavFor) { 13360 pagerQty = 1 + Math.ceil((_.slideCount - _.options.slidesToShow) / _.options.slidesToScroll); 13361 }else { 13362 while (breakPoint < _.slideCount) { 13363 ++pagerQty; 13364 breakPoint = counter + _.options.slidesToScroll; 13365 counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow; 13366 } 13367 } 13368 13369 return pagerQty - 1; 13370 13371 }; 13372 13373 Slick.prototype.getLeft = function(slideIndex) { 13374 13375 var _ = this, 13376 targetLeft, 13377 verticalHeight, 13378 verticalOffset = 0, 13379 targetSlide, 13380 coef; 13381 13382 _.slideOffset = 0; 13383 verticalHeight = _.$slides.first().outerHeight(true); 13384 13385 if (_.options.infinite === true) { 13386 if (_.slideCount > _.options.slidesToShow) { 13387 _.slideOffset = (_.slideWidth * _.options.slidesToShow) * -1; 13388 coef = -1
13388 13389 13390 if (_.options.vertical === true && _.options.centerMode === true) { 13391 if (_.options.slidesToShow === 2) { 13392 coef = -1.5; 13393 } else if (_.options.slidesToShow === 1) { 13394 coef = -2
vendor: 47,517 bytes, lines 13394-14997
13394 13395 } 13396 } 13397 verticalOffset = (verticalHeight * _.options.slidesToShow) * coef; 13398 } 13399 if (_.slideCount % _.options.slidesToScroll !== 0) { 13400 if (slideIndex + _.options.slidesToScroll > _.slideCount && _.slideCount > _.options.slidesToShow) { 13401 if (slideIndex > _.slideCount) { 13402 _.slideOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * _.slideWidth) * -1; 13403 verticalOffset = ((_.options.slidesToShow - (slideIndex - _.slideCount)) * verticalHeight) * -1; 13404 } else { 13405 _.slideOffset = ((_.slideCount % _.options.slidesToScroll) * _.slideWidth) * -1; 13406 verticalOffset = ((_.slideCount % _.options.slidesToScroll) * verticalHeight) * -1; 13407 } 13408 } 13409 } 13410 } else { 13411 if (slideIndex + _.options.slidesToShow > _.slideCount) { 13412 _.slideOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * _.slideWidth; 13413 verticalOffset = ((slideIndex + _.options.slidesToShow) - _.slideCount) * verticalHeight; 13414 } 13415 } 13416 13417 if (_.slideCount <= _.options.slidesToShow) { 13418 _.slideOffset = 0; 13419 verticalOffset = 0; 13420 } 13421 13422 if (_.options.centerMode === true && _.slideCount <= _.options.slidesToShow) { 13423 _.slideOffset = ((_.slideWidth * Math.floor(_.options.slidesToShow)) / 2) - ((_.slideWidth * _.slideCount) / 2); 13424 } else if (_.options.centerMode === true && _.options.infinite === true) { 13425 _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2) - _.slideWidth; 13426 } else if (_.options.centerMode === true) { 13427 _.slideOffset = 0; 13428 _.slideOffset += _.slideWidth * Math.floor(_.options.slidesToShow / 2); 13429 } 13430 13431 if (_.options.vertical === false) { 13432 targetLeft = ((slideIndex * _.slideWidth) * -1) + _.slideOffset; 13433 } else { 13434 targetLeft = ((slideIndex * verticalHeight) * -1) + verticalOffset; 13435 } 13436 13437 if (_.options.variableWidth === true) { 13438 13439 if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) { 13440 targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex); 13441 } else { 13442 targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow); 13443 } 13444 13445 if (_.options.rtl === true) { 13446 if (targetSlide[0]) { 13447 targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1; 13448 } else { 13449 targetLeft = 0; 13450 } 13451 } else { 13452 targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0; 13453 } 13454 13455 if (_.options.centerMode === true) { 13456 if (_.slideCount <= _.options.slidesToShow || _.options.infinite === false) { 13457 targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex); 13458 } else { 13459 targetSlide = _.$slideTrack.children('.slick-slide').eq(slideIndex + _.options.slidesToShow + 1); 13460 } 13461 13462 if (_.options.rtl === true) { 13463 if (targetSlide[0]) { 13464 targetLeft = (_.$slideTrack.width() - targetSlide[0].offsetLeft - targetSlide.width()) * -1; 13465 } else { 13466 targetLeft = 0; 13467 } 13468 } else { 13469 targetLeft = targetSlide[0] ? targetSlide[0].offsetLeft * -1 : 0; 13470 } 13471 13472 targetLeft += (_.$list.width() - targetSlide.outerWidth()) / 2; 13473 } 13474 } 13475 13476 return targetLeft; 13477 13478 }; 13479 13480 Slick.prototype.getOption = Slick.prototype.slickGetOption = function(option) { 13481 13482 var _ = this; 13483 13484 return _.options[option]; 13485 13486 }; 13487 13488 Slick.prototype.getNavigableIndexes = function() { 13489 13490 var _ = this, 13491 breakPoint = 0, 13492 counter = 0, 13493 indexes = [], 13494 max; 13495 13496 if (_.options.infinite === false) { 13497 max = _.slideCount; 13498 } else { 13499 breakPoint = _.options.slidesToScroll * -1; 13500 counter = _.options.slidesToScroll * -1; 13501 max = _.slideCount * 2; 13502 } 13503 13504 while (breakPoint < max) { 13505 indexes.push(breakPoint); 13506 breakPoint = counter + _.options.slidesToScroll; 13507 counter += _.options.slidesToScroll <= _.options.slidesToShow ? _.options.slidesToScroll : _.options.slidesToShow; 13508 } 13509 13510 return indexes; 13511 13512 }; 13513 13514 Slick.prototype.getSlick = function() { 13515 13516 return this; 13517 13518 }; 13519 13520 Slick.prototype.getSlideCount = function() { 13521 13522 var _ = this, 13523 slidesTraversed, swipedSlide, centerOffset; 13524 13525 centerOffset = _.options.centerMode === true ? _.slideWidth * Math.floor(_.options.slidesToShow / 2) : 0; 13526 13527 if (_.options.swipeToSlide === true) { 13528 _.$slideTrack.find('.slick-slide').each(function(index, slide) { 13529 if (slide.offsetLeft - centerOffset + ($(slide).outerWidth() / 2) > (_.swipeLeft * -1)) { 13530 swipedSlide = slide; 13531 return false; 13532 } 13533 }); 13534 13535 slidesTraversed = Math.abs($(swipedSlide).attr('data-slick-index') - _.currentSlide) || 1; 13536 13537 return slidesTraversed; 13538 13539 } else { 13540 return _.options.slidesToScroll; 13541 } 13542 13543 }; 13544 13545 Slick.prototype.goTo = Slick.prototype.slickGoTo = function(slide, dontAnimate) { 13546 13547 var _ = this; 13548 13549 _.changeSlide({ 13550 data: { 13551 message: 'index', 13552 index: parseInt(slide) 13553 } 13554 }, dontAnimate); 13555 13556 }; 13557 13558 Slick.prototype.init = function(creation) { 13559 13560 var _ = this; 13561 13562 if (!$(_.$slider).hasClass('slick-initialized')) { 13563 13564 $(_.$slider).addClass('slick-initialized'); 13565 13566 _.buildRows(); 13567 _.buildOut(); 13568 _.setProps(); 13569 _.startLoad(); 13570 _.loadSlider(); 13571 _.initializeEvents(); 13572 _.updateArrows(); 13573 _.updateDots(); 13574 _.checkResponsive(true); 13575 _.focusHandler(); 13576 13577 } 13578 13579 if (creation) { 13580 _.$slider.trigger('init', [_]); 13581 } 13582 13583 if (_.options.accessibility === true) { 13584 _.initADA(); 13585 } 13586 13587 if ( _.options.autoplay ) { 13588 13589 _.paused = false; 13590 _.autoPlay(); 13591 13592 } 13593 13594 }; 13595 13596 Slick.prototype.initADA = function() { 13597 var _ = this, 13598 numDotGroups = Math.ceil(_.slideCount / _.options.slidesToShow), 13599 tabControlIndexes = _.getNavigableIndexes().filter(function(val) { 13600 return (val >= 0) && (val < _.slideCount); 13601 }); 13602 13603 _.$slides.add(_.$slideTrack.find('.slick-cloned')).attr({ 13604 'aria-hidden': 'true', 13605 'tabindex': '-1' 13606 }).find('a, input, button, select').attr({ 13607 'tabindex': '-1' 13608 }); 13609 13610 if (_.$dots !== null) { 13611 _.$slides.not(_.$slideTrack.find('.slick-cloned')).each(function(i) { 13612 var slideControlIndex = tabControlIndexes.indexOf(i); 13613 13614 $(this).attr({ 13615 'role': 'tabpanel', 13616 'id': 'slick-slide' + _.instanceUid + i, 13617 'tabindex': -1 13618 }); 13619 13620 if (slideControlIndex !== -1) { 13621 var ariaButtonControl = 'slick-slide-control' + _.instanceUid + slideControlIndex 13622 if ($('#' + ariaButtonControl).length) { 13623 $(this).attr({ 13624 'aria-describedby': ariaButtonControl 13625 }); 13626 } 13627 } 13628 }); 13629 13630 _.$dots.attr('role', 'tablist').find('li').each(function(i) { 13631 var mappedSlideIndex = tabControlIndexes[i]; 13632 13633 $(this).attr({ 13634 'role': 'presentation' 13635 }); 13636 13637 $(this).find('button').first().attr({ 13638 'role': 'tab', 13639 'id': 'slick-slide-control' + _.instanceUid + i, 13640 'aria-controls': 'slick-slide' + _.instanceUid + mappedSlideIndex, 13641 'aria-label': (i + 1) + ' of ' + numDotGroups, 13642 'aria-selected': null, 13643 'tabindex': '-1' 13644 }); 13645 13646 }).eq(_.currentSlide).find('button').attr({ 13647 'aria-selected': 'true', 13648 'tabindex': '0' 13649 }).end(); 13650 } 13651 13652 for (var i=_.currentSlide, max=i+_.options.slidesToShow; i < max; i++) { 13653 if (_.options.focusOnChange) { 13654 _.$slides.eq(i).attr({'tabindex': '0'}); 13655 } else { 13656 _.$slides.eq(i).removeAttr('tabindex'); 13657 } 13658 } 13659 13660 _.activateADA(); 13661 13662 }; 13663 13664 Slick.prototype.initArrowEvents = function() { 13665 13666 var _ = this; 13667 13668 if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) { 13669 _.$prevArrow 13670 .off('click.slick') 13671 .on('click.slick', { 13672 message: 'previous' 13673 }, _.changeSlide); 13674 _.$nextArrow 13675 .off('click.slick') 13676 .on('click.slick', { 13677 message: 'next' 13678 }, _.changeSlide); 13679 13680 if (_.options.accessibility === true) { 13681 _.$prevArrow.on('keydown.slick', _.keyHandler); 13682 _.$nextArrow.on('keydown.slick', _.keyHandler); 13683 } 13684 } 13685 13686 }; 13687 13688 Slick.prototype.initDotEvents = function() { 13689 13690 var _ = this; 13691 13692 if (_.options.dots === true && _.slideCount > _.options.slidesToShow) { 13693 $('li', _.$dots).on('click.slick', { 13694 message: 'index' 13695 }, _.changeSlide); 13696 13697 if (_.options.accessibility === true) { 13698 _.$dots.on('keydown.slick', _.keyHandler); 13699 } 13700 } 13701 13702 if (_.options.dots === true && _.options.pauseOnDotsHover === true && _.slideCount > _.options.slidesToShow) { 13703 13704 $('li', _.$dots) 13705 .on('mouseenter.slick', $.proxy(_.interrupt, _, true)) 13706 .on('mouseleave.slick', $.proxy(_.interrupt, _, false)); 13707 13708 } 13709 13710 }; 13711 13712 Slick.prototype.initSlideEvents = function() { 13713 13714 var _ = this; 13715 13716 if ( _.options.pauseOnHover ) { 13717 13718 _.$list.on('mouseenter.slick', $.proxy(_.interrupt, _, true)); 13719 _.$list.on('mouseleave.slick', $.proxy(_.interrupt, _, false)); 13720 13721 } 13722 13723 }; 13724 13725 Slick.prototype.initializeEvents = function() { 13726 13727 var _ = this; 13728 13729 _.initArrowEvents(); 13730 13731 _.initDotEvents(); 13732 _.initSlideEvents(); 13733 13734 _.$list.on('touchstart.slick mousedown.slick', { 13735 action: 'start' 13736 }, _.swipeHandler); 13737 _.$list.on('touchmove.slick mousemove.slick', { 13738 action: 'move' 13739 }, _.swipeHandler); 13740 _.$list.on('touchend.slick mouseup.slick', { 13741 action: 'end' 13742 }, _.swipeHandler); 13743 _.$list.on('touchcancel.slick mouseleave.slick', { 13744 action: 'end' 13745 }, _.swipeHandler); 13746 13747 _.$list.on('click.slick', _.clickHandler); 13748 13749 $(document).on(_.visibilityChange, $.proxy(_.visibility, _)); 13750 13751 if (_.options.accessibility === true) { 13752 _.$list.on('keydown.slick', _.keyHandler); 13753 } 13754 13755 if (_.options.focusOnSelect === true) { 13756 $(_.$slideTrack).children().on('click.slick', _.selectHandler); 13757 } 13758 13759 $(window).on('orientationchange.slick.slick-' + _.instanceUid, $.proxy(_.orientationChange, _)); 13760 13761 $(window).on('resize.slick.slick-' + _.instanceUid, $.proxy(_.resize, _)); 13762 13763 $('[draggable!=true]', _.$slideTrack).on('dragstart', _.preventDefault); 13764 13765 $(window).on('load.slick.slick-' + _.instanceUid, _.setPosition); 13766 $(_.setPosition); 13767 13768 }; 13769 13770 Slick.prototype.initUI = function() { 13771 13772 var _ = this; 13773 13774 if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) { 13775 13776 _.$prevArrow.show(); 13777 _.$nextArrow.show(); 13778 13779 } 13780 13781 if (_.options.dots === true && _.slideCount > _.options.slidesToShow) { 13782 13783 _.$dots.show(); 13784 13785 } 13786 13787 }; 13788 13789 Slick.prototype.keyHandler = function(event) { 13790 13791 var _ = this; 13792 //Dont slide if the cursor is inside the form fields and arrow keys are pressed 13793 if(!event.target.tagName.match('TEXTAREA|INPUT|SELECT')) { 13794 if (event.keyCode === 37 && _.options.accessibility === true) { 13795 _.changeSlide({ 13796 data: { 13797 message: _.options.rtl === true ? 'next' : 'previous' 13798 } 13799 }); 13800 } else if (event.keyCode === 39 && _.options.accessibility === true) { 13801 _.changeSlide({ 13802 data: { 13803 message: _.options.rtl === true ? 'previous' : 'next' 13804 } 13805 }); 13806 } 13807 } 13808 13809 }; 13810 13811 Slick.prototype.lazyLoad = function() { 13812 13813 var _ = this, 13814 loadRange, cloneRange, rangeStart, rangeEnd; 13815 13816 function loadImages(imagesScope) { 13817 13818 $('img[data-lazy]', imagesScope).each(function() { 13819 13820 var image = $(this), 13821 imageSource = $(this).attr('data-lazy'), 13822 imageSrcSet = $(this).attr('data-srcset'), 13823 imageSizes = $(this).attr('data-sizes') || _.$slider.attr('data-sizes'), 13824 imageToLoad = document.createElement('img'); 13825 13826 imageToLoad.onload = function() { 13827 13828 image 13829 .animate({ opacity: 0 }, 100, function() { 13830 13831 if (imageSrcSet) { 13832 image 13833 .attr('srcset', imageSrcSet ); 13834 13835 if (imageSizes) { 13836 image 13837 .attr('sizes', imageSizes ); 13838 } 13839 } 13840 13841 image 13842 .attr('src', imageSource) 13843 .animate({ opacity: 1 }, 200, function() { 13844 image 13845 .removeAttr('data-lazy data-srcset data-sizes') 13846 .removeClass('slick-loading'); 13847 }); 13848 _.$slider.trigger('lazyLoaded', [_, image, imageSource]); 13849 }); 13850 13851 }; 13852 13853 imageToLoad.onerror = function() { 13854 13855 image 13856 .removeAttr( 'data-lazy' ) 13857 .removeClass( 'slick-loading' ) 13858 .addClass( 'slick-lazyload-error' ); 13859 13860 _.$slider.trigger('lazyLoadError', [ _, image, imageSource ]); 13861 13862 }; 13863 13864 imageToLoad.src = imageSource; 13865 13866 }); 13867 13868 } 13869 13870 if (_.options.centerMode === true) { 13871 if (_.options.infinite === true) { 13872 rangeStart = _.currentSlide + (_.options.slidesToShow / 2 + 1); 13873 rangeEnd = rangeStart + _.options.slidesToShow + 2; 13874 } else { 13875 rangeStart = Math.max(0, _.currentSlide - (_.options.slidesToShow / 2 + 1)); 13876 rangeEnd = 2 + (_.options.slidesToShow / 2 + 1) + _.currentSlide; 13877 } 13878 } else { 13879 rangeStart = _.options.infinite ? _.options.slidesToShow + _.currentSlide : _.currentSlide; 13880 rangeEnd = Math.ceil(rangeStart + _.options.slidesToShow); 13881 if (_.options.fade === true) { 13882 if (rangeStart > 0) rangeStart--; 13883 if (rangeEnd <= _.slideCount) rangeEnd++; 13884 } 13885 } 13886 13887 loadRange = _.$slider.find('.slick-slide').slice(rangeStart, rangeEnd); 13888 13889 if (_.options.lazyLoad === 'anticipated') { 13890 var prevSlide = rangeStart - 1, 13891 nextSlide = rangeEnd, 13892 $slides = _.$slider.find('.slick-slide'); 13893 13894 for (var i = 0; i < _.options.slidesToScroll; i++) { 13895 if (prevSlide < 0) prevSlide = _.slideCount - 1; 13896 loadRange = loadRange.add($slides.eq(prevSlide)); 13897 loadRange = loadRange.add($slides.eq(nextSlide)); 13898 prevSlide--; 13899 nextSlide++; 13900 } 13901 } 13902 13903 loadImages(loadRange); 13904 13905 if (_.slideCount <= _.options.slidesToShow) { 13906 cloneRange = _.$slider.find('.slick-slide'); 13907 loadImages(cloneRange); 13908 } else 13909 if (_.currentSlide >= _.slideCount - _.options.slidesToShow) { 13910 cloneRange = _.$slider.find('.slick-cloned').slice(0, _.options.slidesToShow); 13911 loadImages(cloneRange); 13912 } else if (_.currentSlide === 0) { 13913 cloneRange = _.$slider.find('.slick-cloned').slice(_.options.slidesToShow * -1); 13914 loadImages(cloneRange); 13915 } 13916 13917 }; 13918 13919 Slick.prototype.loadSlider = function() { 13920 13921 var _ = this; 13922 13923 _.setPosition(); 13924 13925 _.$slideTrack.css({ 13926 opacity: 1 13927 }); 13928 13929 _.$slider.removeClass('slick-loading'); 13930 13931 _.initUI(); 13932 13933 if (_.options.lazyLoad === 'progressive') { 13934 _.progressiveLazyLoad(); 13935 } 13936 13937 }; 13938 13939 Slick.prototype.next = Slick.prototype.slickNext = function() { 13940 13941 var _ = this; 13942 13943 _.changeSlide({ 13944 data: { 13945 message: 'next' 13946 } 13947 }); 13948 13949 }; 13950 13951 Slick.prototype.orientationChange = function() { 13952 13953 var _ = this; 13954 13955 _.checkResponsive(); 13956 _.setPosition(); 13957 13958 }; 13959 13960 Slick.prototype.pause = Slick.prototype.slickPause = function() { 13961 13962 var _ = this; 13963 13964 _.autoPlayClear(); 13965 _.paused = true; 13966 13967 }; 13968 13969 Slick.prototype.play = Slick.prototype.slickPlay = function() { 13970 13971 var _ = this; 13972 13973 _.autoPlay(); 13974 _.options.autoplay = true; 13975 _.paused = false; 13976 _.focussed = false; 13977 _.interrupted = false; 13978 13979 }; 13980 13981 Slick.prototype.postSlide = function(index) { 13982 13983 var _ = this; 13984 13985 if( !_.unslicked ) { 13986 13987 _.$slider.trigger('afterChange', [_, index]); 13988 13989 _.animating = false; 13990 13991 if (_.slideCount > _.options.slidesToShow) { 13992 _.setPosition(); 13993 } 13994 13995 _.swipeLeft = null; 13996 13997 if ( _.options.autoplay ) { 13998 _.autoPlay(); 13999 } 14000 14001 if (_.options.accessibility === true) { 14002 _.initADA(); 14003 14004 if (_.options.focusOnChange) { 14005 var $currentSlide = $(_.$slides.get(_.currentSlide)); 14006 $currentSlide.attr('tabindex', 0).focus(); 14007 } 14008 } 14009 14010 } 14011 14012 }; 14013 14014 Slick.prototype.prev = Slick.prototype.slickPrev = function() { 14015 14016 var _ = this; 14017 14018 _.changeSlide({ 14019 data: { 14020 message: 'previous' 14021 } 14022 }); 14023 14024 }; 14025 14026 Slick.prototype.preventDefault = function(event) { 14027 14028 event.preventDefault(); 14029 14030 }; 14031 14032 Slick.prototype.progressiveLazyLoad = function( tryCount ) { 14033 14034 tryCount = tryCount || 1; 14035 14036 var _ = this, 14037 $imgsToLoad = $( 'img[data-lazy]', _.$slider ), 14038 image, 14039 imageSource, 14040 imageSrcSet, 14041 imageSizes, 14042 imageToLoad; 14043 14044 if ( $imgsToLoad.length ) { 14045 14046 image = $imgsToLoad.first(); 14047 imageSource = image.attr('data-lazy'); 14048 imageSrcSet = image.attr('data-srcset'); 14049 imageSizes = image.attr('data-sizes') || _.$slider.attr('data-sizes'); 14050 imageToLoad = document.createElement('img'); 14051 14052 imageToLoad.onload = function() { 14053 14054 if (imageSrcSet) { 14055 image 14056 .attr('srcset', imageSrcSet ); 14057 14058 if (imageSizes) { 14059 image 14060 .attr('sizes', imageSizes ); 14061 } 14062 } 14063 14064 image 14065 .attr( 'src', imageSource ) 14066 .removeAttr('data-lazy data-srcset data-sizes') 14067 .removeClass('slick-loading'); 14068 14069 if ( _.options.adaptiveHeight === true ) { 14070 _.setPosition(); 14071 } 14072 14073 _.$slider.trigger('lazyLoaded', [ _, image, imageSource ]); 14074 _.progressiveLazyLoad(); 14075 14076 }; 14077 14078 imageToLoad.onerror = function() { 14079 14080 if ( tryCount < 3 ) { 14081 14082 /** 14083 * try to load the image 3 times, 14084 * leave a slight delay so we don't get 14085 * servers blocking the request. 14086 */ 14087 setTimeout( function() { 14088 _.progressiveLazyLoad( tryCount + 1 ); 14089 }, 500 ); 14090 14091 } else { 14092 14093 image 14094 .removeAttr( 'data-lazy' ) 14095 .removeClass( 'slick-loading' ) 14096 .addClass( 'slick-lazyload-error' ); 14097 14098 _.$slider.trigger('lazyLoadError', [ _, image, imageSource ]); 14099 14100 _.progressiveLazyLoad(); 14101 14102 } 14103 14104 }; 14105 14106 imageToLoad.src = imageSource; 14107 14108 } else { 14109 14110 _.$slider.trigger('allImagesLoaded', [ _ ]); 14111 14112 } 14113 14114 }; 14115 14116 Slick.prototype.refresh = function( initializing ) { 14117 14118 var _ = this, currentSlide, lastVisibleIndex; 14119 14120 lastVisibleIndex = _.slideCount - _.options.slidesToShow; 14121 14122 // in non-infinite sliders, we don't want to go past the 14123 // last visible index. 14124 if( !_.options.infinite && ( _.currentSlide > lastVisibleIndex )) { 14125 _.currentSlide = lastVisibleIndex; 14126 } 14127 14128 // if less slides than to show, go to start. 14129 if ( _.slideCount <= _.options.slidesToShow ) { 14130 _.currentSlide = 0; 14131 14132 } 14133 14134 currentSlide = _.currentSlide; 14135 14136 _.destroy(true); 14137 14138 $.extend(_, _.initials, { currentSlide: currentSlide }); 14139 14140 _.init(); 14141 14142 if( !initializing ) { 14143 14144 _.changeSlide({ 14145 data: { 14146 message: 'index', 14147 index: currentSlide 14148 } 14149 }, false); 14150 14151 } 14152 14153 }; 14154 14155 Slick.prototype.registerBreakpoints = function() { 14156 14157 var _ = this, breakpoint, currentBreakpoint, l, 14158 responsiveSettings = _.options.responsive || null; 14159 14160 if ( $.type(responsiveSettings) === 'array' && responsiveSettings.length ) { 14161 14162 _.respondTo = _.options.respondTo || 'window'; 14163 14164 for ( breakpoint in responsiveSettings ) { 14165 14166 l = _.breakpoints.length-1; 14167 14168 if (responsiveSettings.hasOwnProperty(breakpoint)) { 14169 currentBreakpoint = responsiveSettings[breakpoint].breakpoint; 14170 14171 // loop through the breakpoints and cut out any existing 14172 // ones with the same breakpoint number, we don't want dupes. 14173 while( l >= 0 ) { 14174 if( _.breakpoints[l] && _.breakpoints[l] === currentBreakpoint ) { 14175 _.breakpoints.splice(l,1); 14176 } 14177 l--; 14178 } 14179 14180 _.breakpoints.push(currentBreakpoint); 14181 _.breakpointSettings[currentBreakpoint] = responsiveSettings[breakpoint].settings; 14182 14183 } 14184 14185 } 14186 14187 _.breakpoints.sort(function(a, b) { 14188 return ( _.options.mobileFirst ) ? a-b : b-a; 14189 }); 14190 14191 } 14192 14193 }; 14194 14195 Slick.prototype.reinit = function() { 14196 14197 var _ = this; 14198 14199 _.$slides = 14200 _.$slideTrack 14201 .children(_.options.slide) 14202 .addClass('slick-slide'); 14203 14204 _.slideCount = _.$slides.length; 14205 14206 if (_.currentSlide >= _.slideCount && _.currentSlide !== 0) { 14207 _.currentSlide = _.currentSlide - _.options.slidesToScroll; 14208 } 14209 14210 if (_.slideCount <= _.options.slidesToShow) { 14211 _.currentSlide = 0; 14212 } 14213 14214 _.registerBreakpoints(); 14215 14216 _.setProps(); 14217 _.setupInfinite(); 14218 _.buildArrows(); 14219 _.updateArrows(); 14220 _.initArrowEvents(); 14221 _.buildDots(); 14222 _.updateDots(); 14223 _.initDotEvents(); 14224 _.cleanUpSlideEvents(); 14225 _.initSlideEvents(); 14226 14227 _.checkResponsive(false, true); 14228 14229 if (_.options.focusOnSelect === true) { 14230 $(_.$slideTrack).children().on('click.slick', _.selectHandler); 14231 } 14232 14233 _.setSlideClasses(typeof _.currentSlide === 'number' ? _.currentSlide : 0); 14234 14235 _.setPosition(); 14236 _.focusHandler(); 14237 14238 _.paused = !_.options.autoplay; 14239 _.autoPlay(); 14240 14241 _.$slider.trigger('reInit', [_]); 14242 14243 }; 14244 14245 Slick.prototype.resize = function() { 14246 14247 var _ = this; 14248 14249 if ($(window).width() !== _.windowWidth) { 14250 clearTimeout(_.windowDelay); 14251 _.windowDelay = window.setTimeout(function() { 14252 _.windowWidth = $(window).width(); 14253 _.checkResponsive(); 14254 if( !_.unslicked ) { _.setPosition(); } 14255 }, 50); 14256 } 14257 }; 14258 14259 Slick.prototype.removeSlide = Slick.prototype.slickRemove = function(index, removeBefore, removeAll) { 14260 14261 var _ = this; 14262 14263 if (typeof(index) === 'boolean') { 14264 removeBefore = index; 14265 index = removeBefore === true ? 0 : _.slideCount - 1; 14266 } else { 14267 index = removeBefore === true ? --index : index; 14268 } 14269 14270 if (_.slideCount < 1 || index < 0 || index > _.slideCount - 1) { 14271 return false; 14272 } 14273 14274 _.unload(); 14275 14276 if (removeAll === true) { 14277 _.$slideTrack.children().remove(); 14278 } else { 14279 _.$slideTrack.children(this.options.slide).eq(index).remove(); 14280 } 14281 14282 _.$slides = _.$slideTrack.children(this.options.slide); 14283 14284 _.$slideTrack.children(this.options.slide).detach(); 14285 14286 _.$slideTrack.append(_.$slides); 14287 14288 _.$slidesCache = _.$slides; 14289 14290 _.reinit(); 14291 14292 }; 14293 14294 Slick.prototype.setCSS = function(position) { 14295 14296 var _ = this, 14297 positionProps = {}, 14298 x, y; 14299 14300 if (_.options.rtl === true) { 14301 position = -position; 14302 } 14303 x = _.positionProp == 'left' ? Math.ceil(position) + 'px' : '0px'; 14304 y = _.positionProp == 'top' ? Math.ceil(position) + 'px' : '0px'; 14305 14306 positionProps[_.positionProp] = position; 14307 14308 if (_.transformsEnabled === false) { 14309 _.$slideTrack.css(positionProps); 14310 } else { 14311 positionProps = {}; 14312 if (_.cssTransitions === false) { 14313 positionProps[_.animType] = 'translate(' + x + ', ' + y + ')'; 14314 _.$slideTrack.css(positionProps); 14315 } else { 14316 positionProps[_.animType] = 'translate3d(' + x + ', ' + y + ', 0px)'; 14317 _.$slideTrack.css(positionProps); 14318 } 14319 } 14320 14321 }; 14322 14323 Slick.prototype.setDimensions = function() { 14324 14325 var _ = this; 14326 14327 if (_.options.vertical === false) { 14328 if (_.options.centerMode === true) { 14329 _.$list.css({ 14330 padding: ('0px ' + _.options.centerPadding) 14331 }); 14332 } 14333 } else { 14334 _.$list.height(_.$slides.first().outerHeight(true) * _.options.slidesToShow); 14335 if (_.options.centerMode === true) { 14336 _.$list.css({ 14337 padding: (_.options.centerPadding + ' 0px') 14338 }); 14339 } 14340 } 14341 14342 _.listWidth = _.$list.width(); 14343 _.listHeight = _.$list.height(); 14344 14345 14346 if (_.options.vertical === false && _.options.variableWidth === false) { 14347 _.slideWidth = Math.ceil(_.listWidth / _.options.slidesToShow); 14348 _.$slideTrack.width(Math.ceil((_.slideWidth * _.$slideTrack.children('.slick-slide').length))); 14349 14350 } else if (_.options.variableWidth === true) { 14351 _.$slideTrack.width(5000 * _.slideCount); 14352 } else { 14353 _.slideWidth = Math.ceil(_.listWidth); 14354 _.$slideTrack.height(Math.ceil((_.$slides.first().outerHeight(true) * _.$slideTrack.children('.slick-slide').length))); 14355 } 14356 14357 var offset = _.$slides.first().outerWidth(true) - _.$slides.first().width(); 14358 if (_.options.variableWidth === false) _.$slideTrack.children('.slick-slide').width(_.slideWidth - offset); 14359 14360 }; 14361 14362 Slick.prototype.setFade = function() { 14363 14364 var _ = this, 14365 targetLeft; 14366 14367 _.$slides.each(function(index, element) { 14368 targetLeft = (_.slideWidth * index) * -1; 14369 if (_.options.rtl === true) { 14370 $(element).css({ 14371 position: 'relative', 14372 right: targetLeft, 14373 top: 0, 14374 zIndex: _.options.zIndex - 2, 14375 opacity: 0 14376 }); 14377 } else { 14378 $(element).css({ 14379 position: 'relative', 14380 left: targetLeft, 14381 top: 0, 14382 zIndex: _.options.zIndex - 2, 14383 opacity: 0 14384 }); 14385 } 14386 }); 14387 14388 _.$slides.eq(_.currentSlide).css({ 14389 zIndex: _.options.zIndex - 1, 14390 opacity: 1 14391 }); 14392 14393 }; 14394 14395 Slick.prototype.setHeight = function() { 14396 14397 var _ = this; 14398 14399 if (_.options.slidesToShow === 1 && _.options.adaptiveHeight === true && _.options.vertical === false) { 14400 var targetHeight = _.$slides.eq(_.currentSlide).outerHeight(true); 14401 _.$list.css('height', targetHeight); 14402 } 14403 14404 }; 14405 14406 Slick.prototype.setOption = 14407 Slick.prototype.slickSetOption = function() { 14408 14409 /** 14410 * accepts arguments in format of: 14411 * 14412 * - for changing a single option's value: 14413 * .slick("setOption", option, value, refresh ) 14414 * 14415 * - for changing a set of responsive options: 14416 * .slick("setOption", 'responsive', [{}, ...], refresh ) 14417 * 14418 * - for updating multiple values at once (not responsive) 14419 * .slick("setOption", { 'option': value, ... }, refresh ) 14420 */ 14421 14422 var _ = this, l, item, option, value, refresh = false, type; 14423 14424 if( $.type( arguments[0] ) === 'object' ) { 14425 14426 option = arguments[0]; 14427 refresh = arguments[1]; 14428 type = 'multiple'; 14429 14430 } else if ( $.type( arguments[0] ) === 'string' ) { 14431 14432 option = arguments[0]; 14433 value = arguments[1]; 14434 refresh = arguments[2]; 14435 14436 if ( arguments[0] === 'responsive' && $.type( arguments[1] ) === 'array' ) { 14437 14438 type = 'responsive'; 14439 14440 } else if ( typeof arguments[1] !== 'undefined' ) { 14441 14442 type = 'single'; 14443 14444 } 14445 14446 } 14447 14448 if ( type === 'single' ) { 14449 14450 _.options[option] = value; 14451 14452 14453 } else if ( type === 'multiple' ) { 14454 14455 $.each( option , function( opt, val ) { 14456 14457 _.options[opt] = val; 14458 14459 }); 14460 14461 14462 } else if ( type === 'responsive' ) { 14463 14464 for ( item in value ) { 14465 14466 if( $.type( _.options.responsive ) !== 'array' ) { 14467 14468 _.options.responsive = [ value[item] ]; 14469 14470 } else { 14471 14472 l = _.options.responsive.length-1; 14473 14474 // loop through the responsive object and splice out duplicates. 14475 while( l >= 0 ) { 14476 14477 if( _.options.responsive[l].breakpoint === value[item].breakpoint ) { 14478 14479 _.options.responsive.splice(l,1); 14480 14481 } 14482 14483 l--; 14484 14485 } 14486 14487 _.options.responsive.push( value[item] ); 14488 14489 } 14490 14491 } 14492 14493 } 14494 14495 if ( refresh ) { 14496 14497 _.unload(); 14498 _.reinit(); 14499 14500 } 14501 14502 }; 14503 14504 Slick.prototype.setPosition = function() { 14505 14506 var _ = this; 14507 14508 _.setDimensions(); 14509 14510 _.setHeight(); 14511 14512 if (_.options.fade === false) { 14513 _.setCSS(_.getLeft(_.currentSlide)); 14514 } else { 14515 _.setFade(); 14516 } 14517 14518 _.$slider.trigger('setPosition', [_]); 14519 14520 }; 14521 14522 Slick.prototype.setProps = function() { 14523 14524 var _ = this, 14525 bodyStyle = document.body.style; 14526 14527 _.positionProp = _.options.vertical === true ? 'top' : 'left'; 14528 14529 if (_.positionProp === 'top') { 14530 _.$slider.addClass('slick-vertical'); 14531 } else { 14532 _.$slider.removeClass('slick-vertical'); 14533 } 14534 14535 if (bodyStyle.WebkitTransition !== undefined || 14536 bodyStyle.MozTransition !== undefined || 14537 bodyStyle.msTransition !== undefined) { 14538 if (_.options.useCSS === true) { 14539 _.cssTransitions = true; 14540 } 14541 } 14542 14543 if ( _.options.fade ) { 14544 if ( typeof _.options.zIndex === 'number' ) { 14545 if( _.options.zIndex < 3 ) { 14546 _.options.zIndex = 3; 14547 } 14548 } else { 14549 _.options.zIndex = _.defaults.zIndex; 14550 } 14551 } 14552 14553 if (bodyStyle.OTransform !== undefined) { 14554 _.animType = 'OTransform'; 14555 _.transformType = '-o-transform'; 14556 _.transitionType = 'OTransition'; 14557 if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false; 14558 } 14559 if (bodyStyle.MozTransform !== undefined) { 14560 _.animType = 'MozTransform'; 14561 _.transformType = '-moz-transform'; 14562 _.transitionType = 'MozTransition'; 14563 if (bodyStyle.perspectiveProperty === undefined && bodyStyle.MozPerspective === undefined) _.animType = false; 14564 } 14565 if (bodyStyle.webkitTransform !== undefined) { 14566 _.animType = 'webkitTransform'; 14567 _.transformType = '-webkit-transform'; 14568 _.transitionType = 'webkitTransition'; 14569 if (bodyStyle.perspectiveProperty === undefined && bodyStyle.webkitPerspective === undefined) _.animType = false; 14570 } 14571 if (bodyStyle.msTransform !== undefined) { 14572 _.animType = 'msTransform'; 14573 _.transformType = '-ms-transform'; 14574 _.transitionType = 'msTransition'; 14575 if (bodyStyle.msTransform === undefined) _.animType = false; 14576 } 14577 if (bodyStyle.transform !== undefined && _.animType !== false) { 14578 _.animType = 'transform'; 14579 _.transformType = 'transform'; 14580 _.transitionType = 'transition'; 14581 } 14582 _.transformsEnabled = _.options.useTransform && (_.animType !== null && _.animType !== false); 14583 }; 14584 14585 14586 Slick.prototype.setSlideClasses = function(index) { 14587 14588 var _ = this, 14589 centerOffset, allSlides, indexOffset, remainder; 14590 14591 allSlides = _.$slider 14592 .find('.slick-slide') 14593 .removeClass('slick-active slick-center slick-current') 14594 .attr('aria-hidden', 'true'); 14595 14596 _.$slides 14597 .eq(index) 14598 .addClass('slick-current'); 14599 14600 if (_.options.centerMode === true) { 14601 14602 var evenCoef = _.options.slidesToShow % 2 === 0 ? 1 : 0; 14603 14604 centerOffset = Math.floor(_.options.slidesToShow / 2); 14605 14606 if (_.options.infinite === true) { 14607 14608 if (index >= centerOffset && index <= (_.slideCount - 1) - centerOffset) { 14609 _.$slides 14610 .slice(index - centerOffset + evenCoef, index + centerOffset + 1) 14611 .addClass('slick-active') 14612 .attr('aria-hidden', 'false'); 14613 14614 } else { 14615 14616 indexOffset = _.options.slidesToShow + index; 14617 allSlides 14618 .slice(indexOffset - centerOffset + 1 + evenCoef, indexOffset + centerOffset + 2) 14619 .addClass('slick-active') 14620 .attr('aria-hidden', 'false'); 14621 14622 } 14623 14624 if (index === 0) { 14625 14626 allSlides 14627 .eq(allSlides.length - 1 - _.options.slidesToShow) 14628 .addClass('slick-center'); 14629 14630 } else if (index === _.slideCount - 1) { 14631 14632 allSlides 14633 .eq(_.options.slidesToShow) 14634 .addClass('slick-center'); 14635 14636 } 14637 14638 } 14639 14640 _.$slides 14641 .eq(index) 14642 .addClass('slick-center'); 14643 14644 } else { 14645 14646 if (index >= 0 && index <= (_.slideCount - _.options.slidesToShow)) { 14647 14648 _.$slides 14649 .slice(index, index + _.options.slidesToShow) 14650 .addClass('slick-active') 14651 .attr('aria-hidden', 'false'); 14652 14653 } else if (allSlides.length <= _.options.slidesToShow) { 14654 14655 allSlides 14656 .addClass('slick-active') 14657 .attr('aria-hidden', 'false'); 14658 14659 } else { 14660 14661 remainder = _.slideCount % _.options.slidesToShow; 14662 indexOffset = _.options.infinite === true ? _.options.slidesToShow + index : index; 14663 14664 if (_.options.slidesToShow == _.options.slidesToScroll && (_.slideCount - index) < _.options.slidesToShow) { 14665 14666 allSlides 14667 .slice(indexOffset - (_.options.slidesToShow - remainder), indexOffset + remainder) 14668 .addClass('slick-active') 14669 .attr('aria-hidden', 'false'); 14670 14671 } else { 14672 14673 allSlides 14674 .slice(indexOffset, indexOffset + _.options.slidesToShow) 14675 .addClass('slick-active') 14676 .attr('aria-hidden', 'false'); 14677 14678 } 14679 14680 } 14681 14682 } 14683 14684 if (_.options.lazyLoad === 'ondemand' || _.options.lazyLoad === 'anticipated') { 14685 _.lazyLoad(); 14686 } 14687 }; 14688 14689 Slick.prototype.setupInfinite = function() { 14690 14691 var _ = this, 14692 i, slideIndex, infiniteCount; 14693 14694 if (_.options.fade === true) { 14695 _.options.centerMode = false; 14696 } 14697 14698 if (_.options.infinite === true && _.options.fade === false) { 14699 14700 slideIndex = null; 14701 14702 if (_.slideCount > _.options.slidesToShow) { 14703 14704 if (_.options.centerMode === true) { 14705 infiniteCount = _.options.slidesToShow + 1; 14706 } else { 14707 infiniteCount = _.options.slidesToShow; 14708 } 14709 14710 for (i = _.slideCount; i > (_.slideCount - 14711 infiniteCount); i -= 1) { 14712 slideIndex = i - 1; 14713 $(_.$slides[slideIndex]).clone(true).attr('id', '') 14714 .attr('data-slick-index', slideIndex - _.slideCount) 14715 .prependTo(_.$slideTrack).addClass('slick-cloned'); 14716 } 14717 for (i = 0; i < infiniteCount + _.slideCount; i += 1) { 14718 slideIndex = i; 14719 $(_.$slides[slideIndex]).clone(true).attr('id', '') 14720 .attr('data-slick-index', slideIndex + _.slideCount) 14721 .appendTo(_.$slideTrack).addClass('slick-cloned'); 14722 } 14723 _.$slideTrack.find('.slick-cloned').find('[id]').each(function() { 14724 $(this).attr('id', ''); 14725 }); 14726 14727 } 14728 14729 } 14730 14731 }; 14732 14733 Slick.prototype.interrupt = function( toggle ) { 14734 14735 var _ = this; 14736 14737 if( !toggle ) { 14738 _.autoPlay(); 14739 } 14740 _.interrupted = toggle; 14741 14742 }; 14743 14744 Slick.prototype.selectHandler = function(event) { 14745 14746 var _ = this; 14747 14748 var targetElement = 14749 $(event.target).is('.slick-slide') ? 14750 $(event.target) : 14751 $(event.target).parents('.slick-slide'); 14752 14753 var index = parseInt(targetElement.attr('data-slick-index')); 14754 14755 if (!index) index = 0; 14756 14757 if (_.slideCount <= _.options.slidesToShow) { 14758 14759 _.slideHandler(index, false, true); 14760 return; 14761 14762 } 14763 14764 _.slideHandler(index); 14765 14766 }; 14767 14768 Slick.prototype.slideHandler = function(index, sync, dontAnimate) { 14769 14770 var targetSlide, animSlide, oldSlide, slideLeft, targetLeft = null, 14771 _ = this, navTarget; 14772 14773 sync = sync || false; 14774 14775 if (_.animating === true && _.options.waitForAnimate === true) { 14776 return; 14777 } 14778 14779 if (_.options.fade === true && _.currentSlide === index) { 14780 return; 14781 } 14782 14783 if (sync === false) { 14784 _.asNavFor(index); 14785 } 14786 14787 targetSlide = index; 14788 targetLeft = _.getLeft(targetSlide); 14789 slideLeft = _.getLeft(_.currentSlide); 14790 14791 _.currentLeft = _.swipeLeft === null ? slideLeft : _.swipeLeft; 14792 14793 if (_.options.infinite === false && _.options.centerMode === false && (index < 0 || index > _.getDotCount() * _.options.slidesToScroll)) { 14794 if (_.options.fade === false) { 14795 targetSlide = _.currentSlide; 14796 if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) { 14797 _.animateSlide(slideLeft, function() { 14798 _.postSlide(targetSlide); 14799 }); 14800 } else { 14801 _.postSlide(targetSlide); 14802 } 14803 } 14804 return; 14805 } else if (_.options.infinite === false && _.options.centerMode === true && (index < 0 || index > (_.slideCount - _.options.slidesToScroll))) { 14806 if (_.options.fade === false) { 14807 targetSlide = _.currentSlide; 14808 if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) { 14809 _.animateSlide(slideLeft, function() { 14810 _.postSlide(targetSlide); 14811 }); 14812 } else { 14813 _.postSlide(targetSlide); 14814 } 14815 } 14816 return; 14817 } 14818 14819 if ( _.options.autoplay ) { 14820 clearInterval(_.autoPlayTimer); 14821 } 14822 14823 if (targetSlide < 0) { 14824 if (_.slideCount % _.options.slidesToScroll !== 0) { 14825 animSlide = _.slideCount - (_.slideCount % _.options.slidesToScroll); 14826 } else { 14827 animSlide = _.slideCount + targetSlide; 14828 } 14829 } else if (targetSlide >= _.slideCount) { 14830 if (_.slideCount % _.options.slidesToScroll !== 0) { 14831 animSlide = 0; 14832 } else { 14833 animSlide = targetSlide - _.slideCount; 14834 } 14835 } else { 14836 animSlide = targetSlide; 14837 } 14838 14839 _.animating = true; 14840 14841 _.$slider.trigger('beforeChange', [_, _.currentSlide, animSlide]); 14842 14843 oldSlide = _.currentSlide; 14844 _.currentSlide = animSlide; 14845 14846 _.setSlideClasses(_.currentSlide); 14847 14848 if ( _.options.asNavFor ) { 14849 14850 navTarget = _.getNavTarget(); 14851 navTarget = navTarget.slick('getSlick'); 14852 14853 if ( navTarget.slideCount <= navTarget.options.slidesToShow ) { 14854 navTarget.setSlideClasses(_.currentSlide); 14855 } 14856 14857 } 14858 14859 _.updateDots(); 14860 _.updateArrows(); 14861 14862 if (_.options.fade === true) { 14863 if (dontAnimate !== true) { 14864 14865 _.fadeSlideOut(oldSlide); 14866 14867 _.fadeSlide(animSlide, function() { 14868 _.postSlide(animSlide); 14869 }); 14870 14871 } else { 14872 _.postSlide(animSlide); 14873 } 14874 _.animateHeight(); 14875 return; 14876 } 14877 14878 if (dontAnimate !== true && _.slideCount > _.options.slidesToShow) { 14879 _.animateSlide(targetLeft, function() { 14880 _.postSlide(animSlide); 14881 }); 14882 } else { 14883 _.postSlide(animSlide); 14884 } 14885 14886 }; 14887 14888 Slick.prototype.startLoad = function() { 14889 14890 var _ = this; 14891 14892 if (_.options.arrows === true && _.slideCount > _.options.slidesToShow) { 14893 14894 _.$prevArrow.hide(); 14895 _.$nextArrow.hide(); 14896 14897 } 14898 14899 if (_.options.dots === true && _.slideCount > _.options.slidesToShow) { 14900 14901 _.$dots.hide(); 14902 14903 } 14904 14905 _.$slider.addClass('slick-loading'); 14906 14907 }; 14908 14909 Slick.prototype.swipeDirection = function() { 14910 14911 var xDist, yDist, r, swipeAngle, _ = this; 14912 14913 xDist = _.touchObject.startX - _.touchObject.curX; 14914 yDist = _.touchObject.startY - _.touchObject.curY; 14915 r = Math.atan2(yDist, xDist); 14916 14917 swipeAngle = Math.round(r * 180 / Math.PI); 14918 if (swipeAngle < 0) { 14919 swipeAngle = 360 - Math.abs(swipeAngle); 14920 } 14921 14922 if ((swipeAngle <= 45) && (swipeAngle >= 0)) { 14923 return (_.options.rtl === false ? 'left' : 'right'); 14924 } 14925 if ((swipeAngle <= 360) && (swipeAngle >= 315)) { 14926 return (_.options.rtl === false ? 'left' : 'right'); 14927 } 14928 if ((swipeAngle >= 135) && (swipeAngle <= 225)) { 14929 return (_.options.rtl === false ? 'right' : 'left'); 14930 } 14931 if (_.options.verticalSwiping === true) { 14932 if ((swipeAngle >= 35) && (swipeAngle <= 135)) { 14933 return 'down'; 14934 } else { 14935 return 'up'; 14936 } 14937 } 14938 14939 return 'vertical'; 14940 14941 }; 14942 14943 Slick.prototype.swipeEnd = function(event) { 14944 14945 var _ = this, 14946 slideCount, 14947 direction; 14948 14949 _.dragging = false; 14950 _.swiping = false; 14951 14952 if (_.scrolling) { 14953 _.scrolling = false; 14954 return false; 14955 } 14956 14957 _.interrupted = false; 14958 _.shouldClick = ( _.touchObject.swipeLength > 10 ) ? false : true; 14959 14960 if ( _.touchObject.curX === undefined ) { 14961 return false; 14962 } 14963 14964 if ( _.touchObject.edgeHit === true ) { 14965 _.$slider.trigger('edge', [_, _.swipeDirection() ]); 14966 } 14967 14968 if ( _.touchObject.swipeLength >= _.touchObject.minSwipe ) { 14969 14970 direction = _.swipeDirection(); 14971 14972 switch ( direction ) { 14973 14974 case 'left': 14975 case 'down': 14976 14977 slideCount = 14978 _.options.swipeToSlide ? 14979 _.checkNavigable( _.currentSlide + _.getSlideCount() ) : 14980 _.currentSlide + _.getSlideCount(); 14981 14982 _.currentDirection = 0; 14983 14984 break; 14985 14986 case 'right': 14987 case 'up': 14988 14989 slideCount = 14990 _.options.swipeToSlide ? 14991 _.checkNavigable( _.currentSlide - _.getSlideCount() ) : 14992 _.currentSlide - _.getSlideCount(); 14993 14994 _.currentDirection = 1; 14995 14996 break; 14997
vendor: 9,805 bytes, lines 14998-15340
14998 default: 14999 15000 15001 } 15002 15003 if( direction != 'vertical' ) { 15004 15005 _.slideHandler( slideCount ); 15006 _.touchObject = {}; 15007 _.$slider.trigger('swipe', [_, direction ]); 15008 15009 } 15010 15011 } else { 15012 15013 if ( _.touchObject.startX !== _.touchObject.curX ) { 15014 15015 _.slideHandler( _.currentSlide ); 15016 _.touchObject = {}; 15017 15018 } 15019 15020 } 15021 15022 }; 15023 15024 Slick.prototype.swipeHandler = function(event) { 15025 15026 var _ = this; 15027 15028 if ((_.options.swipe === false) || ('ontouchend' in document && _.options.swipe === false)) { 15029 return; 15030 } else if (_.options.draggable === false && event.type.indexOf('mouse') !== -1) { 15031 return; 15032 } 15033 15034 _.touchObject.fingerCount = event.originalEvent && event.originalEvent.touches !== undefined ? 15035 event.originalEvent.touches.length : 1; 15036 15037 _.touchObject.minSwipe = _.listWidth / _.options 15038 .touchThreshold; 15039 15040 if (_.options.verticalSwiping === true) { 15041 _.touchObject.minSwipe = _.listHeight / _.options 15042 .touchThreshold; 15043 } 15044 15045 switch (event.data.action) { 15046 15047 case 'start': 15048 _.swipeStart(event); 15049 break; 15050 15051 case 'move': 15052 _.swipeMove(event); 15053 break; 15054 15055 case 'end': 15056 _.swipeEnd(event); 15057 break; 15058 15059 } 15060 15061 }; 15062 15063 Slick.prototype.swipeMove = function(event) { 15064 15065 var _ = this, 15066 edgeWasHit = false, 15067 curLeft, swipeDirection, swipeLength, positionOffset, touches, verticalSwipeLength; 15068 15069 touches = event.originalEvent !== undefined ? event.originalEvent.touches : null; 15070 15071 if (!_.dragging || _.scrolling || touches && touches.length !== 1) { 15072 return false; 15073 } 15074 15075 curLeft = _.getLeft(_.currentSlide); 15076 15077 _.touchObject.curX = touches !== undefined ? touches[0].pageX : event.clientX; 15078 _.touchObject.curY = touches !== undefined ? touches[0].pageY : event.clientY; 15079 15080 _.touchObject.swipeLength = Math.round(Math.sqrt( 15081 Math.pow(_.touchObject.curX - _.touchObject.startX, 2))); 15082 15083 verticalSwipeLength = Math.round(Math.sqrt( 15084 Math.pow(_.touchObject.curY - _.touchObject.startY, 2))); 15085 15086 if (!_.options.verticalSwiping && !_.swiping && verticalSwipeLength > 4) { 15087 _.scrolling = true; 15088 return false; 15089 } 15090 15091 if (_.options.verticalSwiping === true) { 15092 _.touchObject.swipeLength = verticalSwipeLength; 15093 } 15094 15095 swipeDirection = _.swipeDirection(); 15096 15097 if (event.originalEvent !== undefined && _.touchObject.swipeLength > 4) { 15098 _.swiping = true; 15099 event.preventDefault(); 15100 } 15101 15102 positionOffset = (_.options.rtl === false ? 1 : -1) * (_.touchObject.curX > _.touchObject.startX ? 1 : -1); 15103 if (_.options.verticalSwiping === true) { 15104 positionOffset = _.touchObject.curY > _.touchObject.startY ? 1 : -1; 15105 } 15106 15107 15108 swipeLength = _.touchObject.swipeLength; 15109 15110 _.touchObject.edgeHit = false; 15111 15112 if (_.options.infinite === false) { 15113 if ((_.currentSlide === 0 && swipeDirection === 'right') || (_.currentSlide >= _.getDotCount() && swipeDirection === 'left')) { 15114 swipeLength = _.touchObject.swipeLength * _.options.edgeFriction; 15115 _.touchObject.edgeHit = true; 15116 } 15117 } 15118 15119 if (_.options.vertical === false) { 15120 _.swipeLeft = curLeft + swipeLength * positionOffset; 15121 } else { 15122 _.swipeLeft = curLeft + (swipeLength * (_.$list.height() / _.listWidth)) * positionOffset; 15123 } 15124 if (_.options.verticalSwiping === true) { 15125 _.swipeLeft = curLeft + swipeLength * positionOffset; 15126 } 15127 15128 if (_.options.fade === true || _.options.touchMove === false) { 15129 return false; 15130 } 15131 15132 if (_.animating === true) { 15133 _.swipeLeft = null; 15134 return false; 15135 } 15136 15137 _.setCSS(_.swipeLeft); 15138 15139 }; 15140 15141 Slick.prototype.swipeStart = function(event) { 15142 15143 var _ = this, 15144 touches; 15145 15146 _.interrupted = true; 15147 15148 if (_.touchObject.fingerCount !== 1 || _.slideCount <= _.options.slidesToShow) { 15149 _.touchObject = {}; 15150 return false; 15151 } 15152 15153 if (event.originalEvent !== undefined && event.originalEvent.touches !== undefined) { 15154 touches = event.originalEvent.touches[0]; 15155 } 15156 15157 _.touchObject.startX = _.touchObject.curX = touches !== undefined ? touches.pageX : event.clientX; 15158 _.touchObject.startY = _.touchObject.curY = touches !== undefined ? touches.pageY : event.clientY; 15159 15160 _.dragging = true; 15161 15162 }; 15163 15164 Slick.prototype.unfilterSlides = Slick.prototype.slickUnfilter = function() { 15165 15166 var _ = this; 15167 15168 if (_.$slidesCache !== null) { 15169 15170 _.unload(); 15171 15172 _.$slideTrack.children(this.options.slide).detach(); 15173 15174 _.$slidesCache.appendTo(_.$slideTrack); 15175 15176 _.reinit(); 15177 15178 } 15179 15180 }; 15181 15182 Slick.prototype.unload = function() { 15183 15184 var _ = this; 15185 15186 $('.slick-cloned', _.$slider).remove(); 15187 15188 if (_.$dots) { 15189 _.$dots.remove(); 15190 } 15191 15192 if (_.$prevArrow && _.htmlExpr.test(_.options.prevArrow)) { 15193 _.$prevArrow.remove(); 15194 } 15195 15196 if (_.$nextArrow && _.htmlExpr.test(_.options.nextArrow)) { 15197 _.$nextArrow.remove(); 15198 } 15199 15200 _.$slides 15201 .removeClass('slick-slide slick-active slick-visible slick-current') 15202 .attr('aria-hidden', 'true') 15203 .css('width', ''); 15204 15205 }; 15206 15207 Slick.prototype.unslick = function(fromBreakpoint) { 15208 15209 var _ = this; 15210 _.$slider.trigger('unslick', [_, fromBreakpoint]); 15211 _.destroy(); 15212 15213 }; 15214 15215 Slick.prototype.updateArrows = function() { 15216 15217 var _ = this, 15218 centerOffset; 15219 15220 centerOffset = Math.floor(_.options.slidesToShow / 2); 15221 15222 if ( _.options.arrows === true && 15223 _.slideCount > _.options.slidesToShow && 15224 !_.options.infinite ) { 15225 15226 _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false'); 15227 _.$nextArrow.removeClass('slick-disabled').attr('aria-disabled', 'false'); 15228 15229 if (_.currentSlide === 0) { 15230 15231 _.$prevArrow.addClass('slick-disabled').attr('aria-disabled', 'true'); 15232 _.$nextArrow.removeClass('slick-disabled').attr('aria-disabled', 'false'); 15233 15234 } else if (_.currentSlide >= _.slideCount - _.options.slidesToShow && _.options.centerMode === false) { 15235 15236 _.$nextArrow.addClass('slick-disabled').attr('aria-disabled', 'true'); 15237 _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false'); 15238 15239 } else if (_.currentSlide >= _.slideCount - 1 && _.options.centerMode === true) { 15240 15241 _.$nextArrow.addClass('slick-disabled').attr('aria-disabled', 'true'); 15242 _.$prevArrow.removeClass('slick-disabled').attr('aria-disabled', 'false'); 15243 15244 } 15245 15246 } 15247 15248 }; 15249 15250 Slick.prototype.updateDots = function() { 15251 15252 var _ = this; 15253 15254 if (_.$dots !== null) { 15255 15256 _.$dots 15257 .find('li') 15258 .removeClass('slick-active') 15259 .end(); 15260 15261 _.$dots 15262 .find('li') 15263 .eq(Math.floor(_.currentSlide / _.options.slidesToScroll)) 15264 .addClass('slick-active'); 15265 15266 } 15267 15268 }; 15269 15270 Slick.prototype.visibility = function() { 15271 15272 var _ = this; 15273 15274 if ( _.options.autoplay ) { 15275 15276 if ( document[_.hidden] ) { 15277 15278 _.interrupted = true; 15279 15280 } else { 15281 15282 _.interrupted = false; 15283 15284 } 15285 15286 } 15287 15288 }; 15289 15290 $.fn.slick = function() { 15291 var _ = this, 15292 opt = arguments[0], 15293 args = Array.prototype.slice.call(arguments, 1), 15294 l = _.length, 15295 i, 15296 ret; 15297 for (i = 0; i < l; i++) { 15298 if (typeof opt == 'object' || typeof opt == 'undefined') 15299 _[i].slick = new Slick(_[i], opt); 15300 else 15301 ret = _[i].slick[opt].apply(_[i].slick, args); 15302 if (typeof ret != 'undefined') return ret; 15303 } 15304 return _; 15305 }; 15306 15307})); 15308 15309(function webpackUniversalModuleDefinition(root, factory) { 15310 if(typeof exports === 'object' && typeof module === 'object') 15311 module.exports = factory(require("jquery")); 15312 else if(typeof define === 'function' && define.amd) 15313 define(["jquery"], factory); 15314 else if(typeof exports === 'object') 15315 exports["foundation.core"] = factory(require("jquery")); 15316 else 15317 root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.core"] = factory(root["jQuery"]); 15318})(window, function(__WEBPACK_EXTERNAL_MODULE_jquery__) { 15319return /******/ (function(modules) { // webpackBootstrap 15320/******/ // The module cache 15321/******/ var installedModules = {}; 15322/******/ 15323/******/ // The require function 15324/******/ function __webpack_require__(moduleId) { 15325/******/ 15326/******/ // Check if module is in cache 15327/******/ if(installedModules[moduleId]) { 15328/******/ return installedModules[moduleId].exports; 15329/******/ } 15330/******/ // Create a new module (and put it into the cache) 15331/******/ var module = installedModules[moduleId] = { 15332/******/ i: moduleId, 15333/******/ l: false, 15334/******/ exports: {} 15335/******/ }; 15336/******/ 15337/******/ // Execute the module function 15338/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 15339/******/ 15340/******/ // Flag the module as loaded
vendor: 2,822 bytes, lines 15341-15406
15341/******/ module.l = true; 15342/******/ 15343/******/ // Return the exports of the module 15344/******/ return module.exports; 15345/******/ } 15346/******/ 15347/******/ 15348/******/ // expose the modules object (__webpack_modules__) 15349/******/ __webpack_require__.m = modules; 15350/******/ 15351/******/ // expose the module cache 15352/******/ __webpack_require__.c = installedModules; 15353/******/ 15354/******/ // define getter function for harmony exports 15355/******/ __webpack_require__.d = function(exports, name, getter) { 15356/******/ if(!__webpack_require__.o(exports, name)) { 15357/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); 15358/******/ } 15359/******/ }; 15360/******/ 15361/******/ // define __esModule on exports 15362/******/ __webpack_require__.r = function(exports) { 15363/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 15364/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 15365/******/ } 15366/******/ Object.defineProperty(exports, '__esModule', { value: true }); 15367/******/ }; 15368/******/ 15369/******/ // create a fake namespace object 15370/******/ // mode & 1: value is a module id, require it 15371/******/ // mode & 2: merge all properties of value into the ns 15372/******/ // mode & 4: return value when already ns object 15373/******/ // mode & 8|1: behave like require 15374/******/ __webpack_require__.t = function(value, mode) { 15375/******/ if(mode & 1) value = __webpack_require__(value); 15376/******/ if(mode & 8) return value; 15377/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; 15378/******/ var ns = Object.create(null); 15379/******/ __webpack_require__.r(ns); 15380/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); 15381/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); 15382/******/ return ns; 15383/******/ }; 15384/******/ 15385/******/ // getDefaultExport function for compatibility with non-harmony modules 15386/******/ __webpack_require__.n = function(module) { 15387/******/ var getter = module && module.__esModule ? 15388/******/ function getDefault() { return module['default']; } : 15389/******/ function getModuleExports() { return module; }; 15390/******/ __webpack_require__.d(getter, 'a', getter); 15391/******/ return getter; 15392/******/ }; 15393/******/ 15394/******/ // Object.prototype.hasOwnProperty.call 15395/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; 15396/******/ 15397/******/ // __webpack_public_path__ 15398/******/ __webpack_require__.p = ""; 15399/******/ 15400/******/ 15401/******/ // Load entry module and return exports 15402/******/ return __webpack_require__(__webpack_require__.s = 0); 15403/******/ }) 15404/************************************************************************/ 15405/******/ ({ 15406
15407/***/ "./js/entries/plugins/foundation.core.js": 15408/*!***********************************************!*\ 15409 !*** ./js/entries/plugins/foundation.core.js ***! 15410 \***********************************************/ 15411/*! exports provided: Foundation, Plugin, rtl, GetYoDigits, RegExpEscape, transitionend, onLoad, ignoreMousedisappear */ 15412/***/ (function(module, __webpack_exports__, __webpack_require__) { 15413 15414"use strict"; 15415__webpack_require__.r(__webpack_exports__); 15416/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery"); 15417/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__); 15418/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.core */ "./js/foundation.core.js"); 15419/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"]; }); 15420 15421/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../foundation.core.plugin */ "./js/foundation.core.plugin.js"); 15422/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../../foundation.core.utils */ "./js/foundation.core.utils.js"); 15423/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Plugin", function() { return _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_2__["Plugin"]; }); 15424 15425/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "rtl", function() { return _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["rtl"]; }); 15426 15427/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "GetYoDigits", function() { return _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["GetYoDigits"]; }); 15428 15429/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "RegExpEscape", function() { return _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["RegExpEscape"]; }); 15430 15431/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "transitionend", function() { return _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["transitionend"]; }); 15432 15433/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "onLoad", function() { return _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["onLoad"]; }); 15434 15435/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ignoreMousedisappear", function() { return _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["ignoreMousedisappear"]; }); 15436 15437// --- Foundation Core API --- 15438// Initialize Foundation and add some utilities to its public API for backward compatibility. 15439// Please note that every utility do not have to be added to the core API. 15440 15441 15442 15443 15444_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].addToJquery(jquery__WEBPACK_IMPORTED_MODULE_0___default.a); // Every plugin depends on plugin now, we can include that on the core for the 15445// script inclusion path. 15446 15447_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].Plugin = _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_2__["Plugin"]; // These are now separated out, but historically were a part of this module, 15448// and since this is here for backwards compatibility we include them in 15449// this entry. 15450 15451_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].rtl = _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["rtl"]; 15452_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].GetYoDigits = _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["GetYoDigits"]; 15453_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].transitionend = _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["transitionend"]; 15454_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].RegExpEscape = _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["RegExpEscape"]; 15455_foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"].onLoad = _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["onLoad"]; 15456window.Foundation = _foundation_core__WEBPACK_IMPORTED_MODULE_1__["Foundation"]; // --- Foundation Core exports --- 15457// Export "Plugin" and all core utilities, since the `foundation.core` entry plays the role of 15458// all core source files. 15459 15460 15461 15462 15463 15464/***/ }), 15465
vendor: 10,742 bytes, lines 15466-15740
15466/***/ "./js/foundation.core.js": 15467/*!*******************************!*\ 15468 !*** ./js/foundation.core.js ***! 15469 \*******************************/ 15470/*! exports provided: Foundation */ 15471/***/ (function(module, __webpack_exports__, __webpack_require__) { 15472 15473"use strict"; 15474__webpack_require__.r(__webpack_exports__); 15475/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return Foundation; }); 15476/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery"); 15477/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__); 15478/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.utils */ "./js/foundation.core.utils.js"); 15479/* harmony import */ var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.util.mediaQuery */ "./js/foundation.util.mediaQuery.js"); 15480 15481 15482function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } 15483 15484 15485 15486 15487var FOUNDATION_VERSION = '6.6.3'; // Global Foundation object 15488// This is attached to the window, or used as a module for AMD/Browserify 15489 15490var Foundation = { 15491 version: FOUNDATION_VERSION, 15492 15493 /** 15494 * Stores initialized plugins. 15495 */ 15496 _plugins: {}, 15497 15498 /** 15499 * Stores generated unique ids for plugin instances 15500 */ 15501 _uuids: [], 15502 15503 /** 15504 * Defines a Foundation plugin, adding it to the `Foundation` namespace and the list of plugins to initialize when reflowing. 15505 * @param {Object} plugin - The constructor of the plugin. 15506 */ 15507 plugin: function plugin(_plugin, name) { 15508 // Object key to use when adding to global Foundation object 15509 // Examples: Foundation.Reveal, Foundation.OffCanvas 15510 var className = name || functionName(_plugin); // Object key to use when storing the plugin, also used to create the identifying data attribute for the plugin 15511 // Examples: data-reveal, data-off-canvas 15512 15513 var attrName = hyphenate(className); // Add to the Foundation object and the plugins list (for reflowing) 15514 15515 this._plugins[attrName] = this[className] = _plugin; 15516 }, 15517 15518 /** 15519 * @function 15520 * Populates the _uuids array with pointers to each individual plugin instance. 15521 * Adds the `zfPlugin` data-attribute to programmatically created plugins to allow use of $(selector).foundation(method) calls. 15522 * Also fires the initialization event for each plugin, consolidating repetitive code. 15523 * @param {Object} plugin - an instance of a plugin, usually `this` in context. 15524 * @param {String} name - the name of the plugin, passed as a camelCased string. 15525 * @fires Plugin#init 15526 */ 15527 registerPlugin: function registerPlugin(plugin, name) { 15528 var pluginName = name ? hyphenate(name) : functionName(plugin.constructor).toLowerCase(); 15529 plugin.uuid = Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["GetYoDigits"])(6, pluginName); 15530 15531 if (!plugin.$element.attr("data-".concat(pluginName))) { 15532 plugin.$element.attr("data-".concat(pluginName), plugin.uuid); 15533 } 15534 15535 if (!plugin.$element.data('zfPlugin')) { 15536 plugin.$element.data('zfPlugin', plugin); 15537 } 15538 /** 15539 * Fires when the plugin has initialized. 15540 * @event Plugin#init 15541 */ 15542 15543 15544 plugin.$element.trigger("init.zf.".concat(pluginName)); 15545 15546 this._uuids.push(plugin.uuid); 15547 15548 return; 15549 }, 15550 15551 /** 15552 * @function 15553 * Removes the plugins uuid from the _uuids array. 15554 * Removes the zfPlugin data attribute, as well as the data-plugin-name attribute. 15555 * Also fires the destroyed event for the plugin, consolidating repetitive code. 15556 * @param {Object} plugin - an instance of a plugin, usually `this` in context. 15557 * @fires Plugin#destroyed 15558 */ 15559 unregisterPlugin: function unregisterPlugin(plugin) { 15560 var pluginName = hyphenate(functionName(plugin.$element.data('zfPlugin').constructor)); 15561 15562 this._uuids.splice(this._uuids.indexOf(plugin.uuid), 1); 15563 15564 plugin.$element.removeAttr("data-".concat(pluginName)).removeData('zfPlugin') 15565 /** 15566 * Fires when the plugin has been destroyed. 15567 * @event Plugin#destroyed 15568 */ 15569 .trigger("destroyed.zf.".concat(pluginName)); 15570 15571 for (var prop in plugin) { 15572 plugin[prop] = null; //clean up script to prep for garbage collection. 15573 } 15574 15575 return; 15576 }, 15577 15578 /** 15579 * @function 15580 * Causes one or more active plugins to re-initialize, resetting event listeners, recalculating positions, etc. 15581 * @param {String} plugins - optional string of an individual plugin key, attained by calling `$(element).data('pluginName')`, or string of a plugin class i.e. `'dropdown'` 15582 * @default If no argument is passed, reflow all currently active plugins. 15583 */ 15584 reInit: function reInit(plugins) { 15585 var isJQ = plugins instanceof jquery__WEBPACK_IMPORTED_MODULE_0___default.a; 15586 15587 try { 15588 if (isJQ) { 15589 plugins.each(function () { 15590 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('zfPlugin')._init(); 15591 }); 15592 } else { 15593 var type = _typeof(plugins), 15594 _this = this, 15595 fns = { 15596 'object': function object(plgs) { 15597 plgs.forEach(function (p) { 15598 p = hyphenate(p); 15599 jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-' + p + ']').foundation('_init'); 15600 }); 15601 }, 15602 'string': function string() { 15603 plugins = hyphenate(plugins); 15604 jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-' + plugins + ']').foundation('_init'); 15605 }, 15606 'undefined': function undefined() { 15607 this['object'](Object.keys(_this._plugins)); 15608 } 15609 }; 15610 15611 fns[type](plugins); 15612 } 15613 } catch (err) { 15614 console.error(err); 15615 } finally { 15616 return plugins; 15617 } 15618 }, 15619 15620 /** 15621 * Initialize plugins on any elements within `elem` (and `elem` itself) that aren't already initialized. 15622 * @param {Object} elem - jQuery object containing the element to check inside. Also checks the element itself, unless it's the `document` object. 15623 * @param {String|Array} plugins - A list of plugins to initialize. Leave this out to initialize everything. 15624 */ 15625 reflow: function reflow(elem, plugins) { 15626 // If plugins is undefined, just grab everything 15627 if (typeof plugins === 'undefined') { 15628 plugins = Object.keys(this._plugins); 15629 } // If plugins is a string, convert it to an array with one item 15630 else if (typeof plugins === 'string') { 15631 plugins = [plugins]; 15632 } 15633 15634 var _this = this; // Iterate through each plugin 15635 15636 15637 jquery__WEBPACK_IMPORTED_MODULE_0___default.a.each(plugins, function (i, name) { 15638 // Get the current plugin 15639 var plugin = _this._plugins[name]; // Localize the search to all elements inside elem, as well as elem itself, unless elem === document 15640 15641 var $elem = jquery__WEBPACK_IMPORTED_MODULE_0___default()(elem).find('[data-' + name + ']').addBack('[data-' + name + ']').filter(function () { 15642 return typeof jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data("zfPlugin") === 'undefined'; 15643 }); // For each plugin found, initialize it 15644 15645 $elem.each(function () { 15646 var $el = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 15647 opts = { 15648 reflow: true 15649 }; 15650 15651 if ($el.attr('data-options')) { 15652 $el.attr('data-options').split(';').forEach(function (option, _index) { 15653 var opt = option.split(':').map(function (el) { 15654 return el.trim(); 15655 }); 15656 if (opt[0]) opts[opt[0]] = parseValue(opt[1]); 15657 }); 15658 } 15659 15660 try { 15661 $el.data('zfPlugin', new plugin(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), opts)); 15662 } catch (er) { 15663 console.error(er); 15664 } finally { 15665 return; 15666 } 15667 }); 15668 }); 15669 }, 15670 getFnName: functionName, 15671 addToJquery: function addToJquery($) { 15672 // TODO: consider not making this a jQuery function 15673 // TODO: need way to reflow vs. re-initialize 15674 15675 /** 15676 * The Foundation jQuery method. 15677 * @param {String|Array} method - An action to perform on the current jQuery object. 15678 */ 15679 var foundation = function foundation(method) { 15680 var type = _typeof(method), 15681 $noJS = $('.no-js'); 15682 15683 if ($noJS.length) { 15684 $noJS.removeClass('no-js'); 15685 } 15686 15687 if (type === 'undefined') { 15688 //needs to initialize the Foundation object, or an individual plugin. 15689 _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_2__["MediaQuery"]._init(); 15690 15691 Foundation.reflow(this); 15692 } else if (type === 'string') { 15693 //an individual method to invoke on a plugin or group of plugins 15694 var args = Array.prototype.slice.call(arguments, 1); //collect all the arguments, if necessary 15695 15696 var plugClass = this.data('zfPlugin'); //determine the class of plugin 15697 15698 if (typeof plugClass !== 'undefined' && typeof plugClass[method] !== 'undefined') { 15699 //make sure both the class and method exist 15700 if (this.length === 1) { 15701 //if there's only one, call it directly. 15702 plugClass[method].apply(plugClass, args); 15703 } else { 15704 this.each(function (i, el) { 15705 //otherwise loop through the jQuery collection and invoke the method on each 15706 plugClass[method].apply($(el).data('zfPlugin'), args); 15707 }); 15708 } 15709 } else { 15710 //error for no class or no method 15711 throw new ReferenceError("We're sorry, '" + method + "' is not an available method for " + (plugClass ? functionName(plugClass) : 'this element') + '.'); 15712 } 15713 } else { 15714 //error for invalid argument type 15715 throw new TypeError("We're sorry, ".concat(type, " is not a valid parameter. You must use a string representing the method you wish to invoke.")); 15716 } 15717 15718 return this; 15719 }; 15720 15721 $.fn.foundation = foundation; 15722 return $; 15723 } 15724}; 15725Foundation.util = { 15726 /** 15727 * Function for applying a debounce effect to a function call. 15728 * @function 15729 * @param {Function} func - Function to be called at end of timeout. 15730 * @param {Number} delay - Time in ms to delay the call of `func`. 15731 * @returns function 15732 */ 15733 throttle: function throttle(func, delay) { 15734 var timer = null; 15735 return function () { 15736 var context = this, 15737 args = arguments; 15738 15739 if (timer === null) { 15740 timer = setTimeout(function () {
vendor: 2,942 bytes, lines 15741-15842
15741 func.apply(context, args); 15742 timer = null; 15743 }, delay); 15744 } 15745 }; 15746 } 15747}; 15748window.Foundation = Foundation; // Polyfill for requestAnimationFrame 15749 15750(function () { 15751 if (!Date.now || !window.Date.now) window.Date.now = Date.now = function () { 15752 return new Date().getTime(); 15753 }; 15754 var vendors = ['webkit', 'moz']; 15755 15756 for (var i = 0; i < vendors.length && !window.requestAnimationFrame; ++i) { 15757 var vp = vendors[i]; 15758 window.requestAnimationFrame = window[vp + 'RequestAnimationFrame']; 15759 window.cancelAnimationFrame = window[vp + 'CancelAnimationFrame'] || window[vp + 'CancelRequestAnimationFrame']; 15760 } 15761 15762 if (/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent) || !window.requestAnimationFrame || !window.cancelAnimationFrame) { 15763 var lastTime = 0; 15764 15765 window.requestAnimationFrame = function (callback) { 15766 var now = Date.now(); 15767 var nextTime = Math.max(lastTime + 16, now); 15768 return setTimeout(function () { 15769 callback(lastTime = nextTime); 15770 }, nextTime - now); 15771 }; 15772 15773 window.cancelAnimationFrame = clearTimeout; 15774 } 15775 /** 15776 * Polyfill for performance.now, required by rAF 15777 */ 15778 15779 15780 if (!window.performance || !window.performance.now) { 15781 window.performance = { 15782 start: Date.now(), 15783 now: function now() { 15784 return Date.now() - this.start; 15785 } 15786 }; 15787 } 15788})(); 15789 15790if (!Function.prototype.bind) { 15791 Function.prototype.bind = function (oThis) { 15792 if (typeof this !== 'function') { 15793 // closest thing possible to the ECMAScript 5 15794 // internal IsCallable function 15795 throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable'); 15796 } 15797 15798 var aArgs = Array.prototype.slice.call(arguments, 1), 15799 fToBind = this, 15800 fNOP = function fNOP() {}, 15801 fBound = function fBound() { 15802 return fToBind.apply(this instanceof fNOP ? this : oThis, aArgs.concat(Array.prototype.slice.call(arguments))); 15803 }; 15804 15805 if (this.prototype) { 15806 // native functions don't have a prototype 15807 fNOP.prototype = this.prototype; 15808 } 15809 15810 fBound.prototype = new fNOP(); 15811 return fBound; 15812 }; 15813} // Polyfill to get the name of a function in IE9 15814 15815 15816function functionName(fn) { 15817 if (typeof Function.prototype.name === 'undefined') { 15818 var funcNameRegex = /function\s([^(]{1,})\(/; 15819 var results = funcNameRegex.exec(fn.toString()); 15820 return results && results.length > 1 ? results[1].trim() : ""; 15821 } else if (typeof fn.prototype === 'undefined') { 15822 return fn.constructor.name; 15823 } else { 15824 return fn.prototype.constructor.name; 15825 } 15826} 15827 15828function parseValue(str) { 15829 if ('true' === str) return true;else if ('false' === str) return false;else if (!isNaN(str * 1)) return parseFloat(str); 15830 return str; 15831} // Convert PascalCase to kebab-case 15832// Thank you: http://stackoverflow.com/a/8955580 15833 15834 15835function hyphenate(str) { 15836 return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase(); 15837} 15838 15839 15840 15841/***/ }), 15842
15843/***/ "./js/foundation.core.plugin.js": 15844/*!**************************************!*\ 15845 !*** ./js/foundation.core.plugin.js ***! 15846 \**************************************/ 15847/*! exports provided: Plugin */ 15848/***/ (function(module, __webpack_exports__, __webpack_require__) { 15849 15850"use strict"; 15851__webpack_require__.r(__webpack_exports__); 15852/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Plugin", function() { return Plugin; }); 15853/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery"); 15854/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__); 15855/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.utils */ "./js/foundation.core.utils.js"); 15856 15857 15858function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 15859 15860function _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); } } 15861 15862function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } 15863 15864 15865 // Abstract class for providing lifecycle hooks. Expect plugins to define AT LEAST 15866// {function} _setup (replaces previous constructor), 15867// {function} _destroy (replaces previous destroy) 15868 15869var Plugin = 15870/*#__PURE__*/ 15871function () { 15872 function Plugin(element, options) { 15873 _classCallCheck(this, Plugin); 15874 15875 this._setup(element, options); 15876 15877 var pluginName = getPluginName(this); 15878 this.uuid = Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["GetYoDigits"])(6, pluginName); 15879 15880 if (!this.$element.attr("data-".concat(pluginName))) { 15881 this.$element.attr("data-".concat(pluginName), this.uuid); 15882 } 15883 15884 if (!this.$element.data('zfPlugin')) { 15885 this.$element.data('zfPlugin', this); 15886 } 15887 /** 15888 * Fires when the plugin has initialized. 15889 * @event Plugin#init 15890 */ 15891 15892 15893 this.$element.trigger("init.zf.".concat(pluginName)); 15894 } 15895 15896 _createClass(Plugin, [{ 15897 key: "destroy", 15898 value: function destroy() { 15899 this._destroy(); 15900 15901 var pluginName = getPluginName(this); 15902 this.$element.removeAttr("data-".concat(pluginName)).removeData('zfPlugin') 15903 /** 15904 * Fires when the plugin has been destroyed. 15905 * @event Plugin#destroyed 15906 */ 15907 .trigger("destroyed.zf.".concat(pluginName)); 15908 15909 for (var prop in this) { 15910 this[prop] = null; //clean up script to prep for garbage collection. 15911 } 15912 } 15913 }]); 15914 15915 return Plugin; 15916}(); // Convert PascalCase to kebab-case 15917// Thank you: http://stackoverflow.com/a/8955580 15918 15919 15920function hyphenate(str) { 15921 return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase(); 15922} 15923 15924function getPluginName(obj) { 15925 return hyphenate(obj.className); 15926} 15927 15928 15929 15930/***/ }), 15931
vendor: 5,122 bytes, lines 15932-16065
15932/***/ "./js/foundation.core.utils.js": 15933/*!*************************************!*\ 15934 !*** ./js/foundation.core.utils.js ***! 15935 \*************************************/ 15936/*! exports provided: rtl, GetYoDigits, RegExpEscape, transitionend, onLoad, ignoreMousedisappear */ 15937/***/ (function(module, __webpack_exports__, __webpack_require__) { 15938 15939"use strict"; 15940__webpack_require__.r(__webpack_exports__); 15941/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "rtl", function() { return rtl; }); 15942/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "GetYoDigits", function() { return GetYoDigits; }); 15943/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "RegExpEscape", function() { return RegExpEscape; }); 15944/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "transitionend", function() { return transitionend; }); 15945/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "onLoad", function() { return onLoad; }); 15946/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ignoreMousedisappear", function() { return ignoreMousedisappear; }); 15947/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery"); 15948/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__); 15949 15950 15951 // Core Foundation Utilities, utilized in a number of places. 15952 15953/** 15954 * Returns a boolean for RTL support 15955 */ 15956 15957function rtl() { 15958 return jquery__WEBPACK_IMPORTED_MODULE_0___default()('html').attr('dir') === 'rtl'; 15959} 15960/** 15961 * returns a random base-36 uid with namespacing 15962 * @function 15963 * @param {Number} length - number of random base-36 digits desired. Increase for more random strings. 15964 * @param {String} namespace - name of plugin to be incorporated in uid, optional. 15965 * @default {String} '' - if no plugin name is provided, nothing is appended to the uid. 15966 * @returns {String} - unique id 15967 */ 15968 15969 15970function GetYoDigits() { 15971 var length = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 6; 15972 var namespace = arguments.length > 1 ? arguments[1] : undefined; 15973 var str = ''; 15974 var chars = '0123456789abcdefghijklmnopqrstuvwxyz'; 15975 var charsLength = chars.length; 15976 15977 for (var i = 0; i < length; i++) { 15978 str += chars[Math.floor(Math.random() * charsLength)]; 15979 } 15980 15981 return namespace ? "".concat(str, "-").concat(namespace) : str; 15982} 15983/** 15984 * Escape a string so it can be used as a regexp pattern 15985 * @function 15986 * @see https://stackoverflow.com/a/9310752/4317384 15987 * 15988 * @param {String} str - string to escape. 15989 * @returns {String} - escaped string 15990 */ 15991 15992 15993function RegExpEscape(str) { 15994 return str.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, '\\$&'); 15995} 15996 15997function transitionend($elem) { 15998 var transitions = { 15999 'transition': 'transitionend', 16000 'WebkitTransition': 'webkitTransitionEnd', 16001 'MozTransition': 'transitionend', 16002 'OTransition': 'otransitionend' 16003 }; 16004 var elem = document.createElement('div'), 16005 end; 16006 16007 for (var transition in transitions) { 16008 if (typeof elem.style[transition] !== 'undefined') { 16009 end = transitions[transition]; 16010 } 16011 } 16012 16013 if (end) { 16014 return end; 16015 } else { 16016 setTimeout(function () { 16017 $elem.triggerHandler('transitionend', [$elem]); 16018 }, 1); 16019 return 'transitionend'; 16020 } 16021} 16022/** 16023 * Return an event type to listen for window load. 16024 * 16025 * If `$elem` is passed, an event will be triggered on `$elem`. If window is already loaded, the event will still be triggered. 16026 * If `handler` is passed, attach it to the event on `$elem`. 16027 * Calling `onLoad` without handler allows you to get the event type that will be triggered before attaching the handler by yourself. 16028 * @function 16029 * 16030 * @param {Object} [] $elem - jQuery element on which the event will be triggered if passed. 16031 * @param {Function} [] handler - function to attach to the event. 16032 * @returns {String} - event type that should or will be triggered. 16033 */ 16034 16035 16036function onLoad($elem, handler) { 16037 var didLoad = document.readyState === 'complete'; 16038 var eventType = (didLoad ? '_didLoad' : 'load') + '.zf.util.onLoad'; 16039 16040 var cb = function cb() { 16041 return $elem.triggerHandler(eventType); 16042 }; 16043 16044 if ($elem) { 16045 if (handler) $elem.one(eventType, handler); 16046 if (didLoad) setTimeout(cb);else jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).one('load', cb); 16047 } 16048 16049 return eventType; 16050} 16051/** 16052 * Retuns an handler for the `mouseleave` that ignore disappeared mouses. 16053 * 16054 * If the mouse "disappeared" from the document (like when going on a browser UI element, See https://git.io/zf-11410), 16055 * the event is ignored. 16056 * - If the `ignoreLeaveWindow` is `true`, the event is ignored when the user actually left the window 16057 * (like by switching to an other window with [Alt]+[Tab]). 16058 * - If the `ignoreReappear` is `true`, the event will be ignored when the mouse will reappear later on the document 16059 * outside of the element it left. 16060 * 16061 * @function 16062 * 16063 * @param {Function} [] handler - handler for the filtered `mouseleave` event to watch. 16064 * @param {Object} [] options - object of options: 16065 * - {Boolean}
16065 [false] ignoreLeaveWindow - also ignore when the user switched windows. 16066 * - {Boolean} [false] ignoreReappear - also ignore when the mouse reappeared outside of the element it left. 16067 * @returns {Function} - filtered handler to use to listen on the `mouseleave` event. 16068 */ 16069 16070 16071function ignoreMousedisappear(handler) { 16072 var _ref = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}, 16073 _ref$ignoreLeaveWindo = _ref.ignoreLeaveWindow, 16074 ignoreLeaveWindow = _ref$ignoreLeaveWindo === void 0 ? false : _ref$ignoreLeaveWindo, 16075 _ref$ignoreReappear = _ref.ignoreReappear, 16076 ignoreReappear = _ref$ignoreReappear === void 0 ? false : _ref$ignoreReappear; 16077 16078 return function leaveEventHandler(eLeave) { 16079 for (var _len = arguments.length, rest = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { 16080 rest[_key - 1] = arguments[_key]; 16081 } 16082 16083 var callback = handler.bind.apply(handler, [this, eLeave].concat(rest)); // The mouse left: call the given callback if the mouse entered elsewhere 16084 16085 if (eLeave.relatedTarget !== null) { 16086 return callback(); 16087 } // Otherwise, check if the mouse actually left the window. 16088 // In firefox if the user switched between windows, the window sill have the focus by the time 16089 // the event is triggered. We have to debounce the event to test this case. 16090 16091 16092 setTimeout(function leaveEventDebouncer() { 16093 if (!ignoreLeaveWindow && document.hasFocus && !document.hasFocus()) { 16094 return callback(); 16095 } // Otherwise, wait for the mouse to reeapear outside of the element, 16096 16097 16098 if (!ignoreReappear) { 16099 jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).one('mouseenter', function reenterEventHandler(eReenter) { 16100 if (!jquery__WEBPACK_IMPORTED_MODULE_0___default()(eLeave.currentTarget).has(eReenter.target).length) { 16101 // Fill where the mouse finally entered. 16102 eLeave.relatedTarget = eReenter.target; 16103 callback(); 16104 } 16105 }); 16106 } 16107 }, 0); 16108 }; 16109} 16110 16111 16112 16113/***/ }), 16114
16115/***/ "./js/foundation.util.mediaQuery.js": 16116/*!******************************************!*\ 16117 !*** ./js/foundation.util.mediaQuery.js ***! 16118 \******************************************/ 16119/*! exports provided: MediaQuery */ 16120/***/ (function(module, __webpack_exports__, __webpack_require__) { 16121 16122"use strict"; 16123__webpack_require__.r(__webpack_exports__); 16124/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MediaQuery", function() { return MediaQuery; }); 16125/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery"); 16126/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__); 16127 16128 16129function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } 16130 16131function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } 16132 16133function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } 16134 16135function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } 16136 16137function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } 16138 16139 // Default set of media queries 16140 16141var defaultQueries = { 16142 'default': 'only screen', 16143 landscape: 'only screen and (orientation: landscape)', 16144 portrait: 'only screen and (orientation: portrait)', 16145 retina: 'only screen and (-webkit-min-device-pixel-ratio: 2),' + 'only screen and (min--moz-device-pixel-ratio: 2),' + 'only screen and (-o-min-device-pixel-ratio: 2/1),' + 'only screen and (min-device-pixel-ratio: 2),' + 'only screen and (min-resolution: 192dpi),' + 'only screen and (min-resolution: 2dppx)' 16146}; // matchMedia() polyfill - Test a CSS media type/query in JS. 16147// Authors & copyright © 2012: Scott Jehl, Paul Irish, Nicholas Zakas, David Knight. MIT license 16148 16149/* eslint-disable */ 16150 16151window.matchMedia || (window.matchMedia = function () { 16152 "use strict"; // For browsers that support matchMedium api such as IE 9 and webkit 16153 16154 var styleMedia = window.styleMedia || window.media; // For those that don't support matchMedium 16155 16156 if (!styleMedia) { 16157 var style = document.createElement('style'), 16158 script = document.getElementsByTagName('script')[0], 16159 info = null; 16160 style.type = 'text/css'; 16161 style.id = 'matchmediajs-test'; 16162 16163 if (!script) { 16164 document.head.appendChild(style); 16165 } else { 16166 script.parentNode.insertBefore(style, script); 16167 } // 'style.currentStyle' is used by IE <= 8 and 'window.getComputedStyle' for all other browsers 16168 16169 16170 info = 'getComputedStyle' in window && window.getComputedStyle(style, null) || style.currentStyle; 16171 styleMedia = { 16172 matchMedium: function matchMedium(media) { 16173 var text = '@media ' + media + '{ #matchmediajs-test { width: 1px; } }'; // 'style.styleSheet' is used by IE <= 8 and 'style.textContent' for all other browsers 16174 16175 if (style.styleSheet) { 16176 style.styleSheet.cssText = text; 16177 } else { 16178 style.textContent = text; 16179 } // Test if media query is true or false 16180 16181 16182 return info.width === '1px'; 16183 } 16184 }; 16185 } 16186 16187 return function (media) { 16188 return { 16189 matches: styleMedia.matchMedium(media || 'all'), 16190 media: media || 'all' 16191 }; 16192 }; 16193}()); 16194/* eslint-enable */ 16195 16196var MediaQuery = { 16197 queries: [], 16198 current: '', 16199 16200 /** 16201 * Initializes the media query helper, by extracting the breakpoint list from the CSS and activating the breakpoint watcher. 16202 * @function 16203 * @private 16204 */ 16205 _init: function _init() { 16206 // make sure the initialization is only done once when calling _init() several times 16207 if (this.isInitialized === true) { 16208 return; 16209 } else { 16210 this.isInitialized = true; 16211 } 16212 16213 var self = this; 16214 var $meta = jquery__WEBPACK_IMPORTED_MODULE_0___default()('meta.foundation-mq'); 16215 16216 if (!$meta.length) { 16217 jquery__WEBPACK_IMPORTED_MODULE_0___default()('<meta class="foundation-mq">').appendTo(document.head); 16218 } 16219 16220 var extractedStyles = jquery__WEBPACK_IMPORTED_MODULE_0___default()('.foundation-mq').css('font-family'); 16221 var namedQueries; 16222 namedQueries = parseStyleToObject(extractedStyles); 16223 self.queries = []; // reset 16224
vendor: 4,471 bytes, lines 16225-16373
16225 for (var key in namedQueries) { 16226 if (namedQueries.hasOwnProperty(key)) { 16227 self.queries.push({ 16228 name: key, 16229 value: "only screen and (min-width: ".concat(namedQueries[key], ")") 16230 }); 16231 } 16232 } 16233 16234 this.current = this._getCurrentSize(); 16235 16236 this._watcher(); 16237 }, 16238 16239 /** 16240 * Reinitializes the media query helper. 16241 * Useful if your CSS breakpoint configuration has just been loaded or has changed since the initialization. 16242 * @function 16243 * @private 16244 */ 16245 _reInit: function _reInit() { 16246 this.isInitialized = false; 16247 16248 this._init(); 16249 }, 16250 16251 /** 16252 * Checks if the screen is at least as wide as a breakpoint. 16253 * @function 16254 * @param {String} size - Name of the breakpoint to check. 16255 * @returns {Boolean} `true` if the breakpoint matches, `false` if it's smaller. 16256 */ 16257 atLeast: function atLeast(size) { 16258 var query = this.get(size); 16259 16260 if (query) { 16261 return window.matchMedia(query).matches; 16262 } 16263 16264 return false; 16265 }, 16266 16267 /** 16268 * Checks if the screen is within the given breakpoint. 16269 * If smaller than the breakpoint of larger than its upper limit it returns false. 16270 * @function 16271 * @param {String} size - Name of the breakpoint to check. 16272 * @returns {Boolean} `true` if the breakpoint matches, `false` otherwise. 16273 */ 16274 only: function only(size) { 16275 return size === this._getCurrentSize(); 16276 }, 16277 16278 /** 16279 * Checks if the screen is within a breakpoint or smaller. 16280 * @function 16281 * @param {String} size - Name of the breakpoint to check. 16282 * @returns {Boolean} `true` if the breakpoint matches, `false` if it's larger. 16283 */ 16284 upTo: function upTo(size) { 16285 var nextSize = this.next(size); // If the next breakpoint does not match, the screen is smaller than 16286 // the upper limit of this breakpoint. 16287 16288 if (nextSize) { 16289 return !this.atLeast(nextSize); 16290 } // If there is no next breakpoint, the "size" breakpoint does not have 16291 // an upper limit and the screen will always be within it or smaller. 16292 16293 16294 return true; 16295 }, 16296 16297 /** 16298 * Checks if the screen matches to a breakpoint. 16299 * @function 16300 * @param {String} size - Name of the breakpoint to check, either 'small only' or 'small'. Omitting 'only' falls back to using atLeast() method. 16301 * @returns {Boolean} `true` if the breakpoint matches, `false` if it does not. 16302 */ 16303 is: function is(size) { 16304 var parts = size.trim().split(' ').filter(function (p) { 16305 return !!p.length; 16306 }); 16307 16308 var _parts = _slicedToArray(parts, 2), 16309 bpSize = _parts[0], 16310 _parts$ = _parts[1], 16311 bpModifier = _parts$ === void 0 ? '' : _parts$; // Only the breakpont 16312 16313 16314 if (bpModifier === 'only') { 16315 return this.only(bpSize); 16316 } // At least the breakpoint (included) 16317 16318 16319 if (!bpModifier || bpModifier === 'up') { 16320 return this.atLeast(bpSize); 16321 } // Up to the breakpoint (included) 16322 16323 16324 if (bpModifier === 'down') { 16325 return this.upTo(bpSize); 16326 } 16327 16328 throw new Error("\n Invalid breakpoint passed to MediaQuery.is().\n Expected a breakpoint name formatted like \"<size> <modifier>\", got \"".concat(size, "\".\n ")); 16329 }, 16330 16331 /** 16332 * Gets the media query of a breakpoint. 16333 * @function 16334 * @param {String} size - Name of the breakpoint to get. 16335 * @returns {String|null} - The media query of the breakpoint, or `null` if the breakpoint doesn't exist. 16336 */ 16337 get: function get(size) { 16338 for (var i in this.queries) { 16339 if (this.queries.hasOwnProperty(i)) { 16340 var query = this.queries[i]; 16341 if (size === query.name) return query.value; 16342 } 16343 } 16344 16345 return null; 16346 }, 16347 16348 /** 16349 * Get the breakpoint following the given breakpoint. 16350 * @function 16351 * @param {String} size - Name of the breakpoint. 16352 * @returns {String|null} - The name of the following breakpoint, or `null` if the passed breakpoint was the last one. 16353 */ 16354 next: function next(size) { 16355 var _this = this; 16356 16357 var queryIndex = this.queries.findIndex(function (q) { 16358 return _this._getQueryName(q) === size; 16359 }); 16360 16361 if (queryIndex === -1) { 16362 throw new Error("\n Unknown breakpoint \"".concat(size, "\" passed to MediaQuery.next().\n Ensure it is present in your Sass \"$breakpoints\" setting.\n ")); 16363 } 16364 16365 var nextQuery = this.queries[queryIndex + 1]; 16366 return nextQuery ? nextQuery.name : null; 16367 }, 16368 16369 /** 16370 * Returns the name of the breakpoint related to the given value. 16371 * @function 16372 * @private 16373 * @param {String|Object}
vendor: 5,039 bytes, lines 16373-16520
16373 value - Breakpoint name or query object. 16374 * @returns {String} Name of the breakpoint. 16375 */ 16376 _getQueryName: function _getQueryName(value) { 16377 if (typeof value === 'string') return value; 16378 if (_typeof(value) === 'object') return value.name; 16379 throw new TypeError("\n Invalid value passed to MediaQuery._getQueryName().\n Expected a breakpoint name (String) or a breakpoint query (Object), got \"".concat(value, "\" (").concat(_typeof(value), ")\n ")); 16380 }, 16381 16382 /** 16383 * Gets the current breakpoint name by testing every breakpoint and returning the last one to match (the biggest one). 16384 * @function 16385 * @private 16386 * @returns {String} Name of the current breakpoint. 16387 */ 16388 _getCurrentSize: function _getCurrentSize() { 16389 var matched; 16390 16391 for (var i = 0; i < this.queries.length; i++) { 16392 var query = this.queries[i]; 16393 16394 if (window.matchMedia(query.value).matches) { 16395 matched = query; 16396 } 16397 } 16398 16399 return matched && this._getQueryName(matched); 16400 }, 16401 16402 /** 16403 * Activates the breakpoint watcher, which fires an event on the window whenever the breakpoint changes. 16404 * @function 16405 * @private 16406 */ 16407 _watcher: function _watcher() { 16408 var _this2 = this; 16409 16410 jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off('resize.zf.mediaquery').on('resize.zf.mediaquery', function () { 16411 var newSize = _this2._getCurrentSize(), 16412 currentSize = _this2.current; 16413 16414 if (newSize !== currentSize) { 16415 // Change the current media query 16416 _this2.current = newSize; // Broadcast the media query change on the window 16417 16418 jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).trigger('changed.zf.mediaquery', [newSize, currentSize]); 16419 } 16420 }); 16421 } 16422}; // Thank you: https://github.com/sindresorhus/query-string 16423 16424function parseStyleToObject(str) { 16425 var styleObject = {}; 16426 16427 if (typeof str !== 'string') { 16428 return styleObject; 16429 } 16430 16431 str = str.trim().slice(1, -1); // browsers re-quote string style values 16432 16433 if (!str) { 16434 return styleObject; 16435 } 16436 16437 styleObject = str.split('&').reduce(function (ret, param) { 16438 var parts = param.replace(/\+/g, ' ').split('='); 16439 var key = parts[0]; 16440 var val = parts[1]; 16441 key = decodeURIComponent(key); // missing `=` should be `null`: 16442 // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters 16443 16444 val = typeof val === 'undefined' ? null : decodeURIComponent(val); 16445 16446 if (!ret.hasOwnProperty(key)) { 16447 ret[key] = val; 16448 } else if (Array.isArray(ret[key])) { 16449 ret[key].push(val); 16450 } else { 16451 ret[key] = [ret[key], val]; 16452 } 16453 16454 return ret; 16455 }, {}); 16456 return styleObject; 16457} 16458 16459 16460 16461/***/ }), 16462 16463/***/ 0: 16464/*!*****************************************************!*\ 16465 !*** multi ./js/entries/plugins/foundation.core.js ***! 16466 \*****************************************************/ 16467/*! no static exports found */ 16468/***/ (function(module, exports, __webpack_require__) { 16469 16470module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.core.js */"./js/entries/plugins/foundation.core.js"); 16471 16472 16473/***/ }), 16474 16475/***/ "jquery": 16476/*!********************************************************************************************!*\ 16477 !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***! 16478 \********************************************************************************************/ 16479/*! no static exports found */ 16480/***/ (function(module, exports) { 16481 16482module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__; 16483 16484/***/ }) 16485 16486/******/ }); 16487}); 16488//# sourceMappingURL=foundation.core.js.map 16489(function webpackUniversalModuleDefinition(root, factory) { 16490 if(typeof exports === 'object' && typeof module === 'object') 16491 module.exports = factory(require("./foundation.core")); 16492 else if(typeof define === 'function' && define.amd) 16493 define(["./foundation.core"], factory); 16494 else if(typeof exports === 'object') 16495 exports["foundation.util.box"] = factory(require("./foundation.core")); 16496 else 16497 root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.util.box"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.core"]); 16498})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_core__) { 16499return /******/ (function(modules) { // webpackBootstrap 16500/******/ // The module cache 16501/******/ var installedModules = {}; 16502/******/ 16503/******/ // The require function 16504/******/ function __webpack_require__(moduleId) { 16505/******/ 16506/******/ // Check if module is in cache 16507/******/ if(installedModules[moduleId]) { 16508/******/ return installedModules[moduleId].exports; 16509/******/ } 16510/******/ // Create a new module (and put it into the cache) 16511/******/ var module = installedModules[moduleId] = { 16512/******/ i: moduleId, 16513/******/ l: false, 16514/******/ exports: {} 16515/******/ }; 16516/******/ 16517/******/ // Execute the module function 16518/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 16519/******/ 16520/******/ // Flag the module as loaded
vendor: 3,489 bytes, lines 16521-16597
16521/******/ module.l = true; 16522/******/ 16523/******/ // Return the exports of the module 16524/******/ return module.exports; 16525/******/ } 16526/******/ 16527/******/ 16528/******/ // expose the modules object (__webpack_modules__) 16529/******/ __webpack_require__.m = modules; 16530/******/ 16531/******/ // expose the module cache 16532/******/ __webpack_require__.c = installedModules; 16533/******/ 16534/******/ // define getter function for harmony exports 16535/******/ __webpack_require__.d = function(exports, name, getter) { 16536/******/ if(!__webpack_require__.o(exports, name)) { 16537/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); 16538/******/ } 16539/******/ }; 16540/******/ 16541/******/ // define __esModule on exports 16542/******/ __webpack_require__.r = function(exports) { 16543/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 16544/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 16545/******/ } 16546/******/ Object.defineProperty(exports, '__esModule', { value: true }); 16547/******/ }; 16548/******/ 16549/******/ // create a fake namespace object 16550/******/ // mode & 1: value is a module id, require it 16551/******/ // mode & 2: merge all properties of value into the ns 16552/******/ // mode & 4: return value when already ns object 16553/******/ // mode & 8|1: behave like require 16554/******/ __webpack_require__.t = function(value, mode) { 16555/******/ if(mode & 1) value = __webpack_require__(value); 16556/******/ if(mode & 8) return value; 16557/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; 16558/******/ var ns = Object.create(null); 16559/******/ __webpack_require__.r(ns); 16560/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); 16561/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); 16562/******/ return ns; 16563/******/ }; 16564/******/ 16565/******/ // getDefaultExport function for compatibility with non-harmony modules 16566/******/ __webpack_require__.n = function(module) { 16567/******/ var getter = module && module.__esModule ? 16568/******/ function getDefault() { return module['default']; } : 16569/******/ function getModuleExports() { return module; }; 16570/******/ __webpack_require__.d(getter, 'a', getter); 16571/******/ return getter; 16572/******/ }; 16573/******/ 16574/******/ // Object.prototype.hasOwnProperty.call 16575/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; 16576/******/ 16577/******/ // __webpack_public_path__ 16578/******/ __webpack_require__.p = ""; 16579/******/ 16580/******/ 16581/******/ // Load entry module and return exports 16582/******/ return __webpack_require__(__webpack_require__.s = 21); 16583/******/ }) 16584/************************************************************************/ 16585/******/ ({ 16586 16587/***/ "./foundation.core": 16588/*!****************************************************************************************************************************************************************!*\ 16589 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***! 16590 \****************************************************************************************************************************************************************/ 16591/*! no static exports found */ 16592/***/ (function(module, exports) { 16593 16594module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__; 16595 16596/***/ }), 16597
16598/***/ "./js/entries/plugins/foundation.util.box.js": 16599/*!***************************************************!*\ 16600 !*** ./js/entries/plugins/foundation.util.box.js ***! 16601 \***************************************************/ 16602/*! exports provided: Foundation, Box */ 16603/***/ (function(module, __webpack_exports__, __webpack_require__) { 16604 16605"use strict"; 16606__webpack_require__.r(__webpack_exports__); 16607/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core"); 16608/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__); 16609/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; }); 16610 16611/* harmony import */ var _foundation_util_box__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.util.box */ "./js/foundation.util.box.js"); 16612/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Box", function() { return _foundation_util_box__WEBPACK_IMPORTED_MODULE_1__["Box"]; }); 16613 16614 16615 16616_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].Box = _foundation_util_box__WEBPACK_IMPORTED_MODULE_1__["Box"]; 16617 16618 16619/***/ }), 16620
vendor: 4,941 bytes, lines 16621-16752
16621/***/ "./js/foundation.util.box.js": 16622/*!***********************************!*\ 16623 !*** ./js/foundation.util.box.js ***! 16624 \***********************************/ 16625/*! exports provided: Box */ 16626/***/ (function(module, __webpack_exports__, __webpack_require__) { 16627 16628"use strict"; 16629__webpack_require__.r(__webpack_exports__); 16630/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Box", function() { return Box; }); 16631 16632 16633var Box = { 16634 ImNotTouchingYou: ImNotTouchingYou, 16635 OverlapArea: OverlapArea, 16636 GetDimensions: GetDimensions, 16637 GetExplicitOffsets: GetExplicitOffsets 16638 /** 16639 * Compares the dimensions of an element to a container and determines collision events with container. 16640 * @function 16641 * @param {jQuery} element - jQuery object to test for collisions. 16642 * @param {jQuery} parent - jQuery object to use as bounding container. 16643 * @param {Boolean} lrOnly - set to true to check left and right values only. 16644 * @param {Boolean} tbOnly - set to true to check top and bottom values only. 16645 * @default if no parent object passed, detects collisions with `window`. 16646 * @returns {Boolean} - true if collision free, false if a collision in any direction. 16647 */ 16648 16649}; 16650 16651function ImNotTouchingYou(element, parent, lrOnly, tbOnly, ignoreBottom) { 16652 return OverlapArea(element, parent, lrOnly, tbOnly, ignoreBottom) === 0; 16653} 16654 16655function OverlapArea(element, parent, lrOnly, tbOnly, ignoreBottom) { 16656 var eleDims = GetDimensions(element), 16657 topOver, 16658 bottomOver, 16659 leftOver, 16660 rightOver; 16661 16662 if (parent) { 16663 var parDims = GetDimensions(parent); 16664 bottomOver = parDims.height + parDims.offset.top - (eleDims.offset.top + eleDims.height); 16665 topOver = eleDims.offset.top - parDims.offset.top; 16666 leftOver = eleDims.offset.left - parDims.offset.left; 16667 rightOver = parDims.width + parDims.offset.left - (eleDims.offset.left + eleDims.width); 16668 } else { 16669 bottomOver = eleDims.windowDims.height + eleDims.windowDims.offset.top - (eleDims.offset.top + eleDims.height); 16670 topOver = eleDims.offset.top - eleDims.windowDims.offset.top; 16671 leftOver = eleDims.offset.left - eleDims.windowDims.offset.left; 16672 rightOver = eleDims.windowDims.width - (eleDims.offset.left + eleDims.width); 16673 } 16674 16675 bottomOver = ignoreBottom ? 0 : Math.min(bottomOver, 0); 16676 topOver = Math.min(topOver, 0); 16677 leftOver = Math.min(leftOver, 0); 16678 rightOver = Math.min(rightOver, 0); 16679 16680 if (lrOnly) { 16681 return leftOver + rightOver; 16682 } 16683 16684 if (tbOnly) { 16685 return topOver + bottomOver; 16686 } // use sum of squares b/c we care about overlap area. 16687 16688 16689 return Math.sqrt(topOver * topOver + bottomOver * bottomOver + leftOver * leftOver + rightOver * rightOver); 16690} 16691/** 16692 * Uses native methods to return an object of dimension values. 16693 * @function 16694 * @param {jQuery || HTML} element - jQuery object or DOM element for which to get the dimensions. Can be any element other that document or window. 16695 * @returns {Object} - nested object of integer pixel values 16696 * TODO - if element is window, return only those values. 16697 */ 16698 16699 16700function GetDimensions(elem) { 16701 elem = elem.length ? elem[0] : elem; 16702 16703 if (elem === window || elem === document) { 16704 throw new Error("I'm sorry, Dave. I'm afraid I can't do that."); 16705 } 16706 16707 var rect = elem.getBoundingClientRect(), 16708 parRect = elem.parentNode.getBoundingClientRect(), 16709 winRect = document.body.getBoundingClientRect(), 16710 winY = window.pageYOffset, 16711 winX = window.pageXOffset; 16712 return { 16713 width: rect.width, 16714 height: rect.height, 16715 offset: { 16716 top: rect.top + winY, 16717 left: rect.left + winX 16718 }, 16719 parentDims: { 16720 width: parRect.width, 16721 height: parRect.height, 16722 offset: { 16723 top: parRect.top + winY, 16724 left: parRect.left + winX 16725 } 16726 }, 16727 windowDims: { 16728 width: winRect.width, 16729 height: winRect.height, 16730 offset: { 16731 top: winY, 16732 left: winX 16733 } 16734 } 16735 }; 16736} 16737/** 16738 * Returns an object of top and left integer pixel values for dynamically rendered elements, 16739 * such as: Tooltip, Reveal, and Dropdown. Maintained for backwards compatibility, and where 16740 * you don't know alignment, but generally from 16741 * 6.4 forward you should use GetExplicitOffsets, as GetOffsets conflates position and alignment. 16742 * @function 16743 * @param {jQuery} element - jQuery object for the element being positioned. 16744 * @param {jQuery} anchor - jQuery object for the element's anchor point. 16745 * @param {String} position - a string relating to the desired position of the element, relative to it's anchor 16746 * @param {Number} vOffset - integer pixel value of desired vertical separation between anchor and element. 16747 * @param {Number} hOffset - integer pixel value of desired horizontal separation between anchor and element. 16748 * @param {Boolean} isOverflow - if a collision event is detected, sets to true to default the element to full width - any desired offset. 16749 * TODO alter/rewrite to work with `em` values as well/instead of pixels 16750 */ 16751 16752
16753function GetExplicitOffsets(element, anchor, position, alignment, vOffset, hOffset, isOverflow) { 16754 var $eleDims = GetDimensions(element), 16755 $anchorDims = anchor ? GetDimensions(anchor) : null; 16756 var topVal, leftVal; 16757 16758 if ($anchorDims !== null) { 16759 // set position related attribute 16760 switch (position) { 16761 case 'top': 16762 topVal = $anchorDims.offset.top - ($eleDims.height + vOffset); 16763 break; 16764 16765 case 'bottom': 16766 topVal = $anchorDims.offset.top + $anchorDims.height + vOffset; 16767 break; 16768 16769 case 'left': 16770 leftVal = $anchorDims.offset.left - ($eleDims.width + hOffset); 16771 break; 16772 16773 case 'right': 16774 leftVal = $anchorDims.offset.left + $anchorDims.width + hOffset; 16775 break; 16776 } // set alignment related attribute 16777 16778 16779 switch (position) { 16780 case 'top': 16781 case 'bottom': 16782 switch (alignment) { 16783 case 'left': 16784 leftVal = $anchorDims.offset.left + hOffset; 16785 break; 16786 16787 case 'right': 16788 leftVal = $anchorDims.offset.left - $eleDims.width + $anchorDims.width - hOffset; 16789 break; 16790 16791 case 'center': 16792 leftVal = isOverflow ? hOffset : $anchorDims.offset.left + $anchorDims.width / 2 - $eleDims.width / 2 + hOffset; 16793 break; 16794 } 16795 16796 break; 16797 16798 case 'right': 16799 case 'left': 16800 switch (alignment) { 16801 case 'bottom': 16802 topVal = $anchorDims.offset.top - vOffset + $anchorDims.height - $eleDims.height; 16803 break; 16804 16805 case 'top': 16806 topVal = $anchorDims.offset.top + vOffset; 16807 break; 16808 16809 case 'center': 16810 topVal = $anchorDims.offset.top + vOffset + $anchorDims.height / 2 - $eleDims.height / 2; 16811 break; 16812 } 16813 16814 break; 16815 } 16816 } 16817 16818 return { 16819 top: topVal, 16820 left: leftVal 16821 }; 16822} 16823 16824 16825 16826/***/ }), 16827 16828/***/ 21: 16829/*!*********************************************************!*\ 16830 !*** multi ./js/entries/plugins/foundation.util.box.js ***! 16831 \*********************************************************/ 16832/*! no static exports found */ 16833/***/ (function(module, exports, __webpack_require__) { 16834 16835module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.util.box.js */"./js/entries/plugins/foundation.util.box.js"); 16836 16837 16838/***/ }) 16839 16840/******/ }); 16841}); 16842//# sourceMappingURL=foundation.util.box.js.map 16843(function webpackUniversalModuleDefinition(root, factory) { 16844 if(typeof exports === 'object' && typeof module === 'object') 16845 module.exports = factory(require("./foundation.core"), require("jquery")); 16846 else if(typeof define === 'function' && define.amd) 16847 define(["./foundation.core", "jquery"], factory); 16848 else if(typeof exports === 'object') 16849 exports["foundation.util.imageLoader"] = factory(require("./foundation.core"), require("jquery")); 16850 else 16851 root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.util.imageLoader"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["jQuery"]); 16852})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE_jquery__) { 16853return /******/ (function(modules) { // webpackBootstrap 16854/******/ // The module cache 16855/******/ var installedModules = {}; 16856/******/ 16857/******/ // The require function 16858/******/ function __webpack_require__(moduleId) { 16859/******/ 16860/******/ // Check if module is in cache 16861/******/ if(installedModules[moduleId]) { 16862/******/ return installedModules[moduleId].exports; 16863/******/ } 16864/******/ // Create a new module (and put it into the cache) 16865/******/ var module = installedModules[moduleId] = { 16866/******/ i: moduleId, 16867/******/ l: false, 16868/******/ exports: {} 16869/******/ }; 16870/******/ 16871/******/ // Execute the module function 16872/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 16873/******/ 16874/******/ // Flag the module as loaded 16875/******/ module.l = true; 16876/******/ 16877/******/ // Return the exports of the module 16878/******/ return module.exports; 16879/******/ } 16880/******/ 16881/******/ 16882/******/ // expose the modules object (__webpack_modules__) 16883/******/ __webpack_require__.m = modules; 16884/******/ 16885/******/ // expose the module cache 16886/******/ __webpack_require__.c = installedModules; 16887/******/ 16888/******/ // define getter function for harmony exports 16889/******/ __webpack_require__.d = function(exports, name, getter) { 16890/******/ if(!__webpack_require__.o(exports, name)) { 16891/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); 16892/******/ } 16893/******/ }; 16894/******/ 16895/******/ // define __esModule on exports 16896/******/ __webpack_require__.r = function(exports) { 16897/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 16898/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 16899/******/ } 16900/******/ Object.defineProperty(exports, '__esModule', { value: true }); 16901/******/ }; 16902/******/ 16903/******/ // create a fake namespace object 16904/******/ // mode & 1: value is a module id, require it 16905/******/ // mode & 2: merge all properties of value into the ns 16906/******/ // mode & 4: return value when already ns object 16907/******/ // mode & 8|1: behave like require 16908/******/ __webpack_require__.t = function(value, mode) { 16909/******/ if(mode & 1) value = __webpack_require__(value); 16910/******/ if(mode & 8) return value; 16911/******/ if((mode & 4) && typeof value === 'object' && value && value.__esMo
vendor: 1,969 bytes, lines 16911-16951
16911dule) return value; 16912/******/ var ns = Object.create(null); 16913/******/ __webpack_require__.r(ns); 16914/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); 16915/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); 16916/******/ return ns; 16917/******/ }; 16918/******/ 16919/******/ // getDefaultExport function for compatibility with non-harmony modules 16920/******/ __webpack_require__.n = function(module) { 16921/******/ var getter = module && module.__esModule ? 16922/******/ function getDefault() { return module['default']; } : 16923/******/ function getModuleExports() { return module; }; 16924/******/ __webpack_require__.d(getter, 'a', getter); 16925/******/ return getter; 16926/******/ }; 16927/******/ 16928/******/ // Object.prototype.hasOwnProperty.call 16929/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; 16930/******/ 16931/******/ // __webpack_public_path__ 16932/******/ __webpack_require__.p = ""; 16933/******/ 16934/******/ 16935/******/ // Load entry module and return exports 16936/******/ return __webpack_require__(__webpack_require__.s = 22); 16937/******/ }) 16938/************************************************************************/ 16939/******/ ({ 16940 16941/***/ "./foundation.core": 16942/*!****************************************************************************************************************************************************************!*\ 16943 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***! 16944 \****************************************************************************************************************************************************************/ 16945/*! no static exports found */ 16946/***/ (function(module, exports) { 16947 16948module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__; 16949 16950/***/ }), 16951
16952/***/ "./js/entries/plugins/foundation.util.imageLoader.js": 16953/*!***********************************************************!*\ 16954 !*** ./js/entries/plugins/foundation.util.imageLoader.js ***! 16955 \***********************************************************/ 16956/*! exports provided: Foundation, onImagesLoaded */ 16957/***/ (function(module, __webpack_exports__, __webpack_require__) { 16958 16959"use strict"; 16960__webpack_require__.r(__webpack_exports__); 16961/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core"); 16962/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__); 16963/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; }); 16964 16965/* harmony import */ var _foundation_util_imageLoader__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.util.imageLoader */ "./js/foundation.util.imageLoader.js"); 16966/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "onImagesLoaded", function() { return _foundation_util_imageLoader__WEBPACK_IMPORTED_MODULE_1__["onImagesLoaded"]; }); 16967 16968 16969 16970_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].onImagesLoaded = _foundation_util_imageLoader__WEBPACK_IMPORTED_MODULE_1__["onImagesLoaded"]; 16971 16972 16973/***/ }), 16974
16975/***/ "./js/foundation.util.imageLoader.js": 16976/*!*******************************************!*\ 16977 !*** ./js/foundation.util.imageLoader.js ***! 16978 \*******************************************/ 16979/*! exports provided: onImagesLoaded */ 16980/***/ (function(module, __webpack_exports__, __webpack_require__) { 16981 16982"use strict"; 16983__webpack_require__.r(__webpack_exports__); 16984/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "onImagesLoaded", function() { return onImagesLoaded; }); 16985/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery"); 16986/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__); 16987 16988 16989 16990/** 16991 * Runs a callback function when images are fully loaded. 16992 * @param {Object} images - Image(s) to check if loaded. 16993 * @param {Func} callback - Function to execute when image is fully loaded. 16994 */ 16995 16996function onImagesLoaded(images, callback) { 16997 var self = this, 16998 unloaded = images.length; 16999 17000 if (unloaded === 0) { 17001 callback(); 17002 } 17003 17004 images.each(function () { 17005 // Check if image is loaded 17006 if (this.complete && typeof this.naturalWidth !== 'undefined') { 17007 singleImageLoaded(); 17008 } else { 17009 // If the above check failed, simulate loading on detached element. 17010 var image = new Image(); // Still count image as loaded if it finalizes with an error. 17011 17012 var events = "load.zf.images error.zf.images"; 17013 jquery__WEBPACK_IMPORTED_MODULE_0___default()(image).one(events, function me(event) { 17014 // Unbind the event listeners. We're using 'one' but only one of the two events will have fired. 17015 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).off(events, me); 17016 singleImageLoaded(); 17017 }); 17018 image.src = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).attr('src'); 17019 } 17020 }); 17021 17022 function singleImageLoaded() { 17023 unloaded--; 17024 17025 if (unloaded === 0) { 17026 callback(); 17027 } 17028 } 17029} 17030 17031 17032 17033/***/ }), 17034 17035/***/ 22: 17036/*!*****************************************************************!*\ 17037 !*** multi ./js/entries/plugins/foundation.util.imageLoader.js ***! 17038 \*****************************************************************/ 17039/*! no static exports found */ 17040/***/ (function(module, exports, __webpack_require__) { 17041 17042module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.util.imageLoader.js */"./js/entries/plugins/foundation.util.imageLoader.js"); 17043 17044 17045/***/ }), 17046 17047/***/ "jquery": 17048/*!********************************************************************************************!*\ 17049 !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***! 17050 \********************************************************************************************/ 17051/*! no static exports found */ 17052/***/ (function(module, exports) { 17053 17054module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__; 17055 17056/***/ }) 17057 17058/******/ }); 17059}); 17060//# sourceMappingURL=foundation.util.imageLoader.js.map 17061(function webpackUniversalModuleDefinition(root, factory) { 17062 if(typeof exports === 'object' && typeof module === 'object') 17063 module.exports = factory(require("./foundation.core"), require("jquery")); 17064 else if(typeof define === 'function' && define.amd) 17065 define(["./foundation.core", "jquery"], factory); 17066 else if(typeof exports === 'object') 17067 exports["foundation.util.keyboard"] = factory(require("./foundation.core"), require("jquery")); 17068 else 17069 root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.util.keyboard"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["jQuery"]); 17070})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE_jquery__) { 17071return /******/ (function(modules) { // webpackBootstrap 17072/******/ // The module cache 17073/******/ var installedModules = {}; 17074/******/ 17075/******/ // The require function 17076/******/ function __webpack_require__(moduleId) { 17077/******/ 17078/******/ // Check if module is in cache 17079/******/ if(installedModules[moduleId]) { 17080/******/ return installedModules[moduleId].exports; 17081/******/ } 17082/******/ // Create a new module (and put it into the cache) 17083/******/ var module = installedModules[moduleId] = { 17084/******/ i: moduleId, 17085/******/ l: false, 17086/******/ exports: {} 17087/******/ }; 17088/******/ 17089/******/ // Execute the module function 17090/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 17091/******/ 17092/******/ // Flag the module as loaded
vendor: 3,489 bytes, lines 17093-17169
17093/******/ module.l = true; 17094/******/ 17095/******/ // Return the exports of the module 17096/******/ return module.exports; 17097/******/ } 17098/******/ 17099/******/ 17100/******/ // expose the modules object (__webpack_modules__) 17101/******/ __webpack_require__.m = modules; 17102/******/ 17103/******/ // expose the module cache 17104/******/ __webpack_require__.c = installedModules; 17105/******/ 17106/******/ // define getter function for harmony exports 17107/******/ __webpack_require__.d = function(exports, name, getter) { 17108/******/ if(!__webpack_require__.o(exports, name)) { 17109/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); 17110/******/ } 17111/******/ }; 17112/******/ 17113/******/ // define __esModule on exports 17114/******/ __webpack_require__.r = function(exports) { 17115/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 17116/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 17117/******/ } 17118/******/ Object.defineProperty(exports, '__esModule', { value: true }); 17119/******/ }; 17120/******/ 17121/******/ // create a fake namespace object 17122/******/ // mode & 1: value is a module id, require it 17123/******/ // mode & 2: merge all properties of value into the ns 17124/******/ // mode & 4: return value when already ns object 17125/******/ // mode & 8|1: behave like require 17126/******/ __webpack_require__.t = function(value, mode) { 17127/******/ if(mode & 1) value = __webpack_require__(value); 17128/******/ if(mode & 8) return value; 17129/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; 17130/******/ var ns = Object.create(null); 17131/******/ __webpack_require__.r(ns); 17132/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); 17133/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); 17134/******/ return ns; 17135/******/ }; 17136/******/ 17137/******/ // getDefaultExport function for compatibility with non-harmony modules 17138/******/ __webpack_require__.n = function(module) { 17139/******/ var getter = module && module.__esModule ? 17140/******/ function getDefault() { return module['default']; } : 17141/******/ function getModuleExports() { return module; }; 17142/******/ __webpack_require__.d(getter, 'a', getter); 17143/******/ return getter; 17144/******/ }; 17145/******/ 17146/******/ // Object.prototype.hasOwnProperty.call 17147/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; 17148/******/ 17149/******/ // __webpack_public_path__ 17150/******/ __webpack_require__.p = ""; 17151/******/ 17152/******/ 17153/******/ // Load entry module and return exports 17154/******/ return __webpack_require__(__webpack_require__.s = 23); 17155/******/ }) 17156/************************************************************************/ 17157/******/ ({ 17158 17159/***/ "./foundation.core": 17160/*!****************************************************************************************************************************************************************!*\ 17161 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***! 17162 \****************************************************************************************************************************************************************/ 17163/*! no static exports found */ 17164/***/ (function(module, exports) { 17165 17166module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__; 17167 17168/***/ }), 17169
17170/***/ "./js/entries/plugins/foundation.util.keyboard.js": 17171/*!********************************************************!*\ 17172 !*** ./js/entries/plugins/foundation.util.keyboard.js ***! 17173 \********************************************************/ 17174/*! exports provided: Foundation, Keyboard */ 17175/***/ (function(module, __webpack_exports__, __webpack_require__) { 17176 17177"use strict"; 17178__webpack_require__.r(__webpack_exports__); 17179/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core"); 17180/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__); 17181/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; }); 17182 17183/* harmony import */ var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.util.keyboard */ "./js/foundation.util.keyboard.js"); 17184/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Keyboard", function() { return _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"]; }); 17185 17186 17187 17188_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].Keyboard = _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"]; 17189 17190 17191/***/ }), 17192
vendor: 4,173 bytes, lines 17193-17290
17193/***/ "./js/foundation.util.keyboard.js": 17194/*!****************************************!*\ 17195 !*** ./js/foundation.util.keyboard.js ***! 17196 \****************************************/ 17197/*! exports provided: Keyboard */ 17198/***/ (function(module, __webpack_exports__, __webpack_require__) { 17199 17200"use strict"; 17201__webpack_require__.r(__webpack_exports__); 17202/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Keyboard", function() { return Keyboard; }); 17203/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery"); 17204/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__); 17205/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.utils */ "./foundation.core"); 17206/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__); 17207/******************************************* 17208 * * 17209 * This util was created by Marius Olbertz * 17210 * Please thank Marius on GitHub /owlbertz * 17211 * or the web http://www.mariusolbertz.de/ * 17212 * * 17213 ******************************************/ 17214 17215 17216 17217 17218var keyCodes = { 17219 9: 'TAB', 17220 13: 'ENTER', 17221 27: 'ESCAPE', 17222 32: 'SPACE', 17223 35: 'END', 17224 36: 'HOME', 17225 37: 'ARROW_LEFT', 17226 38: 'ARROW_UP', 17227 39: 'ARROW_RIGHT', 17228 40: 'ARROW_DOWN' 17229}; 17230var commands = {}; // Functions pulled out to be referenceable from internals 17231 17232function findFocusable($element) { 17233 if (!$element) { 17234 return false; 17235 } 17236 17237 return $element.find('a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]').filter(function () { 17238 if (!jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).is(':visible') || jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).attr('tabindex') < 0) { 17239 return false; 17240 } //only have visible elements and those that have a tabindex greater or equal 0 17241 17242 17243 return true; 17244 }); 17245} 17246 17247function parseKey(event) { 17248 var key = keyCodes[event.which || event.keyCode] || String.fromCharCode(event.which).toUpperCase(); // Remove un-printable characters, e.g. for `fromCharCode` calls for CTRL only events 17249 17250 key = key.replace(/\W+/, ''); 17251 if (event.shiftKey) key = "SHIFT_".concat(key); 17252 if (event.ctrlKey) key = "CTRL_".concat(key); 17253 if (event.altKey) key = "ALT_".concat(key); // Remove trailing underscore, in case only modifiers were used (e.g. only `CTRL_ALT`) 17254 17255 key = key.replace(/_$/, ''); 17256 return key; 17257} 17258 17259var Keyboard = { 17260 keys: getKeyCodes(keyCodes), 17261 17262 /** 17263 * Parses the (keyboard) event and returns a String that represents its key 17264 * Can be used like Foundation.parseKey(event) === Foundation.keys.SPACE 17265 * @param {Event} event - the event generated by the event handler 17266 * @return String key - String that represents the key pressed 17267 */ 17268 parseKey: parseKey, 17269 17270 /** 17271 * Handles the given (keyboard) event 17272 * @param {Event} event - the event generated by the event handler 17273 * @param {String} component - Foundation component's name, e.g. Slider or Reveal 17274 * @param {Objects} functions - collection of functions that are to be executed 17275 */ 17276 handleKey: function handleKey(event, component, functions) { 17277 var commandList = commands[component], 17278 keyCode = this.parseKey(event), 17279 cmds, 17280 command, 17281 fn; 17282 if (!commandList) return console.warn('Component not defined!'); // Ignore the event if it was already handled 17283 17284 if (event.zfIsKeyHandled === true) return; // This component does not differentiate between ltr and rtl 17285 17286 if (typeof commandList.ltr === 'undefined') { 17287 cmds = commandList; // use plain list 17288 } else { 17289 // merge ltr and rtl: if document is rtl, rtl overwrites ltr and vice versa 17290 if (Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["rtl"])()) cmds = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, commandList.ltr, commandList.rtl);
vendor: 5,072 bytes, lines 17290-17433
17290else cmds = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, commandList.rtl, commandList.ltr); 17291 } 17292 17293 command = cmds[keyCode]; 17294 fn = functions[command]; // Execute the handler if found 17295 17296 if (fn && typeof fn === 'function') { 17297 var returnValue = fn.apply(); // Mark the event as "handled" to prevent future handlings 17298 17299 event.zfIsKeyHandled = true; // Execute function when event was handled 17300 17301 if (functions.handled || typeof functions.handled === 'function') { 17302 functions.handled(returnValue); 17303 } 17304 } else { 17305 // Execute function when event was not handled 17306 if (functions.unhandled || typeof functions.unhandled === 'function') { 17307 functions.unhandled(); 17308 } 17309 } 17310 }, 17311 17312 /** 17313 * Finds all focusable elements within the given `$element` 17314 * @param {jQuery} $element - jQuery object to search within 17315 * @return {jQuery} $focusable - all focusable elements within `$element` 17316 */ 17317 findFocusable: findFocusable, 17318 17319 /** 17320 * Returns the component name name 17321 * @param {Object} component - Foundation component, e.g. Slider or Reveal 17322 * @return String componentName 17323 */ 17324 register: function register(componentName, cmds) { 17325 commands[componentName] = cmds; 17326 }, 17327 // TODO9438: These references to Keyboard need to not require global. Will 'this' work in this context? 17328 // 17329 17330 /** 17331 * Traps the focus in the given element. 17332 * @param {jQuery} $element jQuery object to trap the foucs into. 17333 */ 17334 trapFocus: function trapFocus($element) { 17335 var $focusable = findFocusable($element), 17336 $firstFocusable = $focusable.eq(0), 17337 $lastFocusable = $focusable.eq(-1); 17338 $element.on('keydown.zf.trapfocus', function (event) { 17339 if (event.target === $lastFocusable[0] && parseKey(event) === 'TAB') { 17340 event.preventDefault(); 17341 $firstFocusable.focus(); 17342 } else if (event.target === $firstFocusable[0] && parseKey(event) === 'SHIFT_TAB') { 17343 event.preventDefault(); 17344 $lastFocusable.focus(); 17345 } 17346 }); 17347 }, 17348 17349 /** 17350 * Releases the trapped focus from the given element. 17351 * @param {jQuery} $element jQuery object to release the focus for. 17352 */ 17353 releaseFocus: function releaseFocus($element) { 17354 $element.off('keydown.zf.trapfocus'); 17355 } 17356}; 17357/* 17358 * Constants for easier comparing. 17359 * Can be used like Foundation.parseKey(event) === Foundation.keys.SPACE 17360 */ 17361 17362function getKeyCodes(kcs) { 17363 var k = {}; 17364 17365 for (var kc in kcs) { 17366 k[kcs[kc]] = kcs[kc]; 17367 } 17368 17369 return k; 17370} 17371 17372 17373 17374/***/ }), 17375 17376/***/ 23: 17377/*!**************************************************************!*\ 17378 !*** multi ./js/entries/plugins/foundation.util.keyboard.js ***! 17379 \**************************************************************/ 17380/*! no static exports found */ 17381/***/ (function(module, exports, __webpack_require__) { 17382 17383module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.util.keyboard.js */"./js/entries/plugins/foundation.util.keyboard.js"); 17384 17385 17386/***/ }), 17387 17388/***/ "jquery": 17389/*!********************************************************************************************!*\ 17390 !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***! 17391 \********************************************************************************************/ 17392/*! no static exports found */ 17393/***/ (function(module, exports) { 17394 17395module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__; 17396 17397/***/ }) 17398 17399/******/ }); 17400}); 17401//# sourceMappingURL=foundation.util.keyboard.js.map 17402(function webpackUniversalModuleDefinition(root, factory) { 17403 if(typeof exports === 'object' && typeof module === 'object') 17404 module.exports = factory(require("./foundation.core"), require("jquery")); 17405 else if(typeof define === 'function' && define.amd) 17406 define(["./foundation.core", "jquery"], factory); 17407 else if(typeof exports === 'object') 17408 exports["foundation.util.mediaQuery"] = factory(require("./foundation.core"), require("jquery")); 17409 else 17410 root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.util.mediaQuery"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["jQuery"]); 17411})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE_jquery__) { 17412return /******/ (function(modules) { // webpackBootstrap 17413/******/ // The module cache 17414/******/ var installedModules = {}; 17415/******/ 17416/******/ // The require function 17417/******/ function __webpack_require__(moduleId) { 17418/******/ 17419/******/ // Check if module is in cache 17420/******/ if(installedModules[moduleId]) { 17421/******/ return installedModules[moduleId].exports; 17422/******/ } 17423/******/ // Create a new module (and put it into the cache) 17424/******/ var module = installedModules[moduleId] = { 17425/******/ i: moduleId, 17426/******/ l: false, 17427/******/ exports: {} 17428/******/ }; 17429/******/ 17430/******/ // Execute the module function 17431/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 17432/******/ 17433/******/ // Flag the module as loaded
vendor: 3,489 bytes, lines 17434-17510
17434/******/ module.l = true; 17435/******/ 17436/******/ // Return the exports of the module 17437/******/ return module.exports; 17438/******/ } 17439/******/ 17440/******/ 17441/******/ // expose the modules object (__webpack_modules__) 17442/******/ __webpack_require__.m = modules; 17443/******/ 17444/******/ // expose the module cache 17445/******/ __webpack_require__.c = installedModules; 17446/******/ 17447/******/ // define getter function for harmony exports 17448/******/ __webpack_require__.d = function(exports, name, getter) { 17449/******/ if(!__webpack_require__.o(exports, name)) { 17450/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); 17451/******/ } 17452/******/ }; 17453/******/ 17454/******/ // define __esModule on exports 17455/******/ __webpack_require__.r = function(exports) { 17456/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 17457/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 17458/******/ } 17459/******/ Object.defineProperty(exports, '__esModule', { value: true }); 17460/******/ }; 17461/******/ 17462/******/ // create a fake namespace object 17463/******/ // mode & 1: value is a module id, require it 17464/******/ // mode & 2: merge all properties of value into the ns 17465/******/ // mode & 4: return value when already ns object 17466/******/ // mode & 8|1: behave like require 17467/******/ __webpack_require__.t = function(value, mode) { 17468/******/ if(mode & 1) value = __webpack_require__(value); 17469/******/ if(mode & 8) return value; 17470/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; 17471/******/ var ns = Object.create(null); 17472/******/ __webpack_require__.r(ns); 17473/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); 17474/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); 17475/******/ return ns; 17476/******/ }; 17477/******/ 17478/******/ // getDefaultExport function for compatibility with non-harmony modules 17479/******/ __webpack_require__.n = function(module) { 17480/******/ var getter = module && module.__esModule ? 17481/******/ function getDefault() { return module['default']; } : 17482/******/ function getModuleExports() { return module; }; 17483/******/ __webpack_require__.d(getter, 'a', getter); 17484/******/ return getter; 17485/******/ }; 17486/******/ 17487/******/ // Object.prototype.hasOwnProperty.call 17488/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; 17489/******/ 17490/******/ // __webpack_public_path__ 17491/******/ __webpack_require__.p = ""; 17492/******/ 17493/******/ 17494/******/ // Load entry module and return exports 17495/******/ return __webpack_require__(__webpack_require__.s = 24); 17496/******/ }) 17497/************************************************************************/ 17498/******/ ({ 17499 17500/***/ "./foundation.core": 17501/*!****************************************************************************************************************************************************************!*\ 17502 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***! 17503 \****************************************************************************************************************************************************************/ 17504/*! no static exports found */ 17505/***/ (function(module, exports) { 17506 17507module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__; 17508 17509/***/ }), 17510
17511/***/ "./js/entries/plugins/foundation.util.mediaQuery.js": 17512/*!**********************************************************!*\ 17513 !*** ./js/entries/plugins/foundation.util.mediaQuery.js ***! 17514 \**********************************************************/ 17515/*! exports provided: Foundation, MediaQuery */ 17516/***/ (function(module, __webpack_exports__, __webpack_require__) { 17517 17518"use strict"; 17519__webpack_require__.r(__webpack_exports__); 17520/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core"); 17521/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__); 17522/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; }); 17523 17524/* harmony import */ var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.util.mediaQuery */ "./js/foundation.util.mediaQuery.js"); 17525/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "MediaQuery", function() { return _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"]; }); 17526 17527 17528 17529_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].MediaQuery = _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"]; 17530 17531_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].MediaQuery._init(); 17532 17533 17534 17535/***/ }), 17536
17537/***/ "./js/foundation.util.mediaQuery.js": 17538/*!******************************************!*\ 17539 !*** ./js/foundation.util.mediaQuery.js ***! 17540 \******************************************/ 17541/*! exports provided: MediaQuery */ 17542/***/ (function(module, __webpack_exports__, __webpack_require__) { 17543 17544"use strict"; 17545__webpack_require__.r(__webpack_exports__); 17546/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "MediaQuery", function() { return MediaQuery; }); 17547/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery"); 17548/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__); 17549 17550 17551function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } 17552 17553function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } 17554 17555function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } 17556 17557function _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } 17558 17559function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } 17560 17561 // Default set of media queries 17562 17563var defaultQueries = { 17564 'default': 'only screen', 17565 landscape: 'only screen and (orientation: landscape)', 17566 portrait: 'only screen and (orientation: portrait)', 17567 retina: 'only screen and (-webkit-min-device-pixel-ratio: 2),' + 'only screen and (min--moz-device-pixel-ratio: 2),' + 'only screen and (-o-min-device-pixel-ratio: 2/1),' + 'only screen and (min-device-pixel-ratio: 2),' + 'only screen and (min-resolution: 192dpi),' + 'only screen and (min-resolution: 2dppx)' 17568}; // matchMedia() polyfill - Test a CSS media type/query in JS. 17569// Authors & copyright © 2012: Scott Jehl, Paul Irish, Nicholas Zakas, David Knight. MIT license 17570 17571/* eslint-disable */ 17572 17573window.matchMedia || (window.matchMedia = function () { 17574 "use strict"; // For browsers that support matchMedium api such as IE 9 and webkit 17575 17576 var styleMedia = window.styleMedia || window.media; // For those that don't support matchMedium 17577 17578 if (!styleMedia) { 17579 var style = document.createElement('style'), 17580 script = document.getElementsByTagName('script')[0], 17581 info = null; 17582 style.type = 'text/css'; 17583 style.id = 'matchmediajs-test'; 17584 17585 if (!script) { 17586 document.head.appendChild(style); 17587 } else { 17588 script.parentNode.insertBefore(style, script); 17589 } // 'style.currentStyle' is used by IE <= 8 and 'window.getComputedStyle' for all other browsers 17590 17591 17592 info = 'getComputedStyle' in window && window.getComputedStyle(style, null) || style.currentStyle; 17593 styleMedia = { 17594 matchMedium: function matchMedium(media) { 17595 var text = '@media ' + media + '{ #matchmediajs-test { width: 1px; } }'; // 'style.styleSheet' is used by IE <= 8 and 'style.textContent' for all other browsers 17596 17597 if (style.styleSheet) { 17598 style.styleSheet.cssText = text; 17599 } else { 17600 style.textContent = text; 17601 } // Test if media query is true or false 17602 17603 17604 return info.width === '1px'; 17605 } 17606 }; 17607 } 17608 17609 return function (media) { 17610 return { 17611 matches: styleMedia.matchMedium(media || 'all'), 17612 media: media || 'all' 17613 }; 17614 }; 17615}()); 17616/* eslint-enable */ 17617 17618var MediaQuery = { 17619 queries: [], 17620 current: '', 17621 17622 /** 17623 * Initializes the media query helper, by extracting the breakpoint list from the CSS and activating the breakpoint watcher. 17624 * @function 17625 * @private 17626 */ 17627 _init: function _init() { 17628 // make sure the initialization is only done once when calling _init() several times 17629 if (this.isInitialized === true) { 17630 return; 17631 } else { 17632 this.isInitialized = true; 17633 } 17634 17635 var self = this; 17636 var $meta = jquery__WEBPACK_IMPORTED_MODULE_0___default()('meta.foundation-mq'); 17637 17638 if (!$meta.length) { 17639 jquery__WEBPACK_IMPORTED_MODULE_0___default()('<meta class="foundation-mq">').appendTo(document.head); 17640 } 17641 17642 var extractedStyles = jquery__WEBPACK_IMPORTED_MODULE_0___default()('.foundation-mq').css('font-family'); 17643 var namedQueries; 17644 namedQueries = parseStyleToObject(extractedStyles); 17645 self.queries = []; // reset 17646
vendor: 4,471 bytes, lines 17647-17795
17647 for (var key in namedQueries) { 17648 if (namedQueries.hasOwnProperty(key)) { 17649 self.queries.push({ 17650 name: key, 17651 value: "only screen and (min-width: ".concat(namedQueries[key], ")") 17652 }); 17653 } 17654 } 17655 17656 this.current = this._getCurrentSize(); 17657 17658 this._watcher(); 17659 }, 17660 17661 /** 17662 * Reinitializes the media query helper. 17663 * Useful if your CSS breakpoint configuration has just been loaded or has changed since the initialization. 17664 * @function 17665 * @private 17666 */ 17667 _reInit: function _reInit() { 17668 this.isInitialized = false; 17669 17670 this._init(); 17671 }, 17672 17673 /** 17674 * Checks if the screen is at least as wide as a breakpoint. 17675 * @function 17676 * @param {String} size - Name of the breakpoint to check. 17677 * @returns {Boolean} `true` if the breakpoint matches, `false` if it's smaller. 17678 */ 17679 atLeast: function atLeast(size) { 17680 var query = this.get(size); 17681 17682 if (query) { 17683 return window.matchMedia(query).matches; 17684 } 17685 17686 return false; 17687 }, 17688 17689 /** 17690 * Checks if the screen is within the given breakpoint. 17691 * If smaller than the breakpoint of larger than its upper limit it returns false. 17692 * @function 17693 * @param {String} size - Name of the breakpoint to check. 17694 * @returns {Boolean} `true` if the breakpoint matches, `false` otherwise. 17695 */ 17696 only: function only(size) { 17697 return size === this._getCurrentSize(); 17698 }, 17699 17700 /** 17701 * Checks if the screen is within a breakpoint or smaller. 17702 * @function 17703 * @param {String} size - Name of the breakpoint to check. 17704 * @returns {Boolean} `true` if the breakpoint matches, `false` if it's larger. 17705 */ 17706 upTo: function upTo(size) { 17707 var nextSize = this.next(size); // If the next breakpoint does not match, the screen is smaller than 17708 // the upper limit of this breakpoint. 17709 17710 if (nextSize) { 17711 return !this.atLeast(nextSize); 17712 } // If there is no next breakpoint, the "size" breakpoint does not have 17713 // an upper limit and the screen will always be within it or smaller. 17714 17715 17716 return true; 17717 }, 17718 17719 /** 17720 * Checks if the screen matches to a breakpoint. 17721 * @function 17722 * @param {String} size - Name of the breakpoint to check, either 'small only' or 'small'. Omitting 'only' falls back to using atLeast() method. 17723 * @returns {Boolean} `true` if the breakpoint matches, `false` if it does not. 17724 */ 17725 is: function is(size) { 17726 var parts = size.trim().split(' ').filter(function (p) { 17727 return !!p.length; 17728 }); 17729 17730 var _parts = _slicedToArray(parts, 2), 17731 bpSize = _parts[0], 17732 _parts$ = _parts[1], 17733 bpModifier = _parts$ === void 0 ? '' : _parts$; // Only the breakpont 17734 17735 17736 if (bpModifier === 'only') { 17737 return this.only(bpSize); 17738 } // At least the breakpoint (included) 17739 17740 17741 if (!bpModifier || bpModifier === 'up') { 17742 return this.atLeast(bpSize); 17743 } // Up to the breakpoint (included) 17744 17745 17746 if (bpModifier === 'down') { 17747 return this.upTo(bpSize); 17748 } 17749 17750 throw new Error("\n Invalid breakpoint passed to MediaQuery.is().\n Expected a breakpoint name formatted like \"<size> <modifier>\", got \"".concat(size, "\".\n ")); 17751 }, 17752 17753 /** 17754 * Gets the media query of a breakpoint. 17755 * @function 17756 * @param {String} size - Name of the breakpoint to get. 17757 * @returns {String|null} - The media query of the breakpoint, or `null` if the breakpoint doesn't exist. 17758 */ 17759 get: function get(size) { 17760 for (var i in this.queries) { 17761 if (this.queries.hasOwnProperty(i)) { 17762 var query = this.queries[i]; 17763 if (size === query.name) return query.value; 17764 } 17765 } 17766 17767 return null; 17768 }, 17769 17770 /** 17771 * Get the breakpoint following the given breakpoint. 17772 * @function 17773 * @param {String} size - Name of the breakpoint. 17774 * @returns {String|null} - The name of the following breakpoint, or `null` if the passed breakpoint was the last one. 17775 */ 17776 next: function next(size) { 17777 var _this = this; 17778 17779 var queryIndex = this.queries.findIndex(function (q) { 17780 return _this._getQueryName(q) === size; 17781 }); 17782 17783 if (queryIndex === -1) { 17784 throw new Error("\n Unknown breakpoint \"".concat(size, "\" passed to MediaQuery.next().\n Ensure it is present in your Sass \"$breakpoints\" setting.\n ")); 17785 } 17786 17787 var nextQuery = this.queries[queryIndex + 1]; 17788 return nextQuery ? nextQuery.name : null; 17789 }, 17790 17791 /** 17792 * Returns the name of the breakpoint related to the given value. 17793 * @function 17794 * @private 17795 * @param {String|Object}
vendor: 5,212 bytes, lines 17795-17942
17795 value - Breakpoint name or query object. 17796 * @returns {String} Name of the breakpoint. 17797 */ 17798 _getQueryName: function _getQueryName(value) { 17799 if (typeof value === 'string') return value; 17800 if (_typeof(value) === 'object') return value.name; 17801 throw new TypeError("\n Invalid value passed to MediaQuery._getQueryName().\n Expected a breakpoint name (String) or a breakpoint query (Object), got \"".concat(value, "\" (").concat(_typeof(value), ")\n ")); 17802 }, 17803 17804 /** 17805 * Gets the current breakpoint name by testing every breakpoint and returning the last one to match (the biggest one). 17806 * @function 17807 * @private 17808 * @returns {String} Name of the current breakpoint. 17809 */ 17810 _getCurrentSize: function _getCurrentSize() { 17811 var matched; 17812 17813 for (var i = 0; i < this.queries.length; i++) { 17814 var query = this.queries[i]; 17815 17816 if (window.matchMedia(query.value).matches) { 17817 matched = query; 17818 } 17819 } 17820 17821 return matched && this._getQueryName(matched); 17822 }, 17823 17824 /** 17825 * Activates the breakpoint watcher, which fires an event on the window whenever the breakpoint changes. 17826 * @function 17827 * @private 17828 */ 17829 _watcher: function _watcher() { 17830 var _this2 = this; 17831 17832 jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off('resize.zf.mediaquery').on('resize.zf.mediaquery', function () { 17833 var newSize = _this2._getCurrentSize(), 17834 currentSize = _this2.current; 17835 17836 if (newSize !== currentSize) { 17837 // Change the current media query 17838 _this2.current = newSize; // Broadcast the media query change on the window 17839 17840 jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).trigger('changed.zf.mediaquery', [newSize, currentSize]); 17841 } 17842 }); 17843 } 17844}; // Thank you: https://github.com/sindresorhus/query-string 17845 17846function parseStyleToObject(str) { 17847 var styleObject = {}; 17848 17849 if (typeof str !== 'string') { 17850 return styleObject; 17851 } 17852 17853 str = str.trim().slice(1, -1); // browsers re-quote string style values 17854 17855 if (!str) { 17856 return styleObject; 17857 } 17858 17859 styleObject = str.split('&').reduce(function (ret, param) { 17860 var parts = param.replace(/\+/g, ' ').split('='); 17861 var key = parts[0]; 17862 var val = parts[1]; 17863 key = decodeURIComponent(key); // missing `=` should be `null`: 17864 // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters 17865 17866 val = typeof val === 'undefined' ? null : decodeURIComponent(val); 17867 17868 if (!ret.hasOwnProperty(key)) { 17869 ret[key] = val; 17870 } else if (Array.isArray(ret[key])) { 17871 ret[key].push(val); 17872 } else { 17873 ret[key] = [ret[key], val]; 17874 } 17875 17876 return ret; 17877 }, {}); 17878 return styleObject; 17879} 17880 17881 17882 17883/***/ }), 17884 17885/***/ 24: 17886/*!****************************************************************!*\ 17887 !*** multi ./js/entries/plugins/foundation.util.mediaQuery.js ***! 17888 \****************************************************************/ 17889/*! no static exports found */ 17890/***/ (function(module, exports, __webpack_require__) { 17891 17892module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.util.mediaQuery.js */"./js/entries/plugins/foundation.util.mediaQuery.js"); 17893 17894 17895/***/ }), 17896 17897/***/ "jquery": 17898/*!********************************************************************************************!*\ 17899 !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***! 17900 \********************************************************************************************/ 17901/*! no static exports found */ 17902/***/ (function(module, exports) { 17903 17904module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__; 17905 17906/***/ }) 17907 17908/******/ }); 17909}); 17910//# sourceMappingURL=foundation.util.mediaQuery.js.map 17911(function webpackUniversalModuleDefinition(root, factory) { 17912 if(typeof exports === 'object' && typeof module === 'object') 17913 module.exports = factory(require("./foundation.core"), require("jquery")); 17914 else if(typeof define === 'function' && define.amd) 17915 define(["./foundation.core", "jquery"], factory); 17916 else if(typeof exports === 'object') 17917 exports["foundation.util.motion"] = factory(require("./foundation.core"), require("jquery")); 17918 else 17919 root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.util.motion"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["jQuery"]); 17920})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE_jquery__) { 17921return /******/ (function(modules) { // webpackBootstrap 17922/******/ // The module cache 17923/******/ var installedModules = {}; 17924/******/ 17925/******/ // The require function 17926/******/ function __webpack_require__(moduleId) { 17927/******/ 17928/******/ // Check if module is in cache 17929/******/ if(installedModules[moduleId]) { 17930/******/ return installedModules[moduleId].exports; 17931/******/ } 17932/******/ // Create a new module (and put it into the cache) 17933/******/ var module = installedModules[moduleId] = { 17934/******/ i: moduleId, 17935/******/ l: false, 17936/******/ exports: {} 17937/******/ }; 17938/******/ 17939/******/ // Execute the module function 17940/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 17941/******/ 17942/******/ // Flag the module as loaded
vendor: 3,489 bytes, lines 17943-18019
17943/******/ module.l = true; 17944/******/ 17945/******/ // Return the exports of the module 17946/******/ return module.exports; 17947/******/ } 17948/******/ 17949/******/ 17950/******/ // expose the modules object (__webpack_modules__) 17951/******/ __webpack_require__.m = modules; 17952/******/ 17953/******/ // expose the module cache 17954/******/ __webpack_require__.c = installedModules; 17955/******/ 17956/******/ // define getter function for harmony exports 17957/******/ __webpack_require__.d = function(exports, name, getter) { 17958/******/ if(!__webpack_require__.o(exports, name)) { 17959/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); 17960/******/ } 17961/******/ }; 17962/******/ 17963/******/ // define __esModule on exports 17964/******/ __webpack_require__.r = function(exports) { 17965/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 17966/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 17967/******/ } 17968/******/ Object.defineProperty(exports, '__esModule', { value: true }); 17969/******/ }; 17970/******/ 17971/******/ // create a fake namespace object 17972/******/ // mode & 1: value is a module id, require it 17973/******/ // mode & 2: merge all properties of value into the ns 17974/******/ // mode & 4: return value when already ns object 17975/******/ // mode & 8|1: behave like require 17976/******/ __webpack_require__.t = function(value, mode) { 17977/******/ if(mode & 1) value = __webpack_require__(value); 17978/******/ if(mode & 8) return value; 17979/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; 17980/******/ var ns = Object.create(null); 17981/******/ __webpack_require__.r(ns); 17982/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); 17983/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); 17984/******/ return ns; 17985/******/ }; 17986/******/ 17987/******/ // getDefaultExport function for compatibility with non-harmony modules 17988/******/ __webpack_require__.n = function(module) { 17989/******/ var getter = module && module.__esModule ? 17990/******/ function getDefault() { return module['default']; } : 17991/******/ function getModuleExports() { return module; }; 17992/******/ __webpack_require__.d(getter, 'a', getter); 17993/******/ return getter; 17994/******/ }; 17995/******/ 17996/******/ // Object.prototype.hasOwnProperty.call 17997/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; 17998/******/ 17999/******/ // __webpack_public_path__ 18000/******/ __webpack_require__.p = ""; 18001/******/ 18002/******/ 18003/******/ // Load entry module and return exports 18004/******/ return __webpack_require__(__webpack_require__.s = 25); 18005/******/ }) 18006/************************************************************************/ 18007/******/ ({ 18008 18009/***/ "./foundation.core": 18010/*!****************************************************************************************************************************************************************!*\ 18011 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***! 18012 \****************************************************************************************************************************************************************/ 18013/*! no static exports found */ 18014/***/ (function(module, exports) { 18015 18016module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__; 18017 18018/***/ }), 18019
18020/***/ "./js/entries/plugins/foundation.util.motion.js": 18021/*!******************************************************!*\ 18022 !*** ./js/entries/plugins/foundation.util.motion.js ***! 18023 \******************************************************/ 18024/*! exports provided: Foundation, Motion, Move */ 18025/***/ (function(module, __webpack_exports__, __webpack_require__) { 18026 18027"use strict"; 18028__webpack_require__.r(__webpack_exports__); 18029/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core"); 18030/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__); 18031/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; }); 18032 18033/* harmony import */ var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.util.motion */ "./js/foundation.util.motion.js"); 18034/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Motion", function() { return _foundation_util_motion__WEBPACK_IMPORTED_MODULE_1__["Motion"]; }); 18035 18036/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Move", function() { return _foundation_util_motion__WEBPACK_IMPORTED_MODULE_1__["Move"]; }); 18037 18038 18039 18040_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].Motion = _foundation_util_motion__WEBPACK_IMPORTED_MODULE_1__["Motion"]; 18041_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].Move = _foundation_util_motion__WEBPACK_IMPORTED_MODULE_1__["Move"]; 18042 18043 18044/***/ }), 18045
vendor: 4,802 bytes, lines 18046-18175
18046/***/ "./js/foundation.util.motion.js": 18047/*!**************************************!*\ 18048 !*** ./js/foundation.util.motion.js ***! 18049 \**************************************/ 18050/*! exports provided: Move, Motion */ 18051/***/ (function(module, __webpack_exports__, __webpack_require__) { 18052 18053"use strict"; 18054__webpack_require__.r(__webpack_exports__); 18055/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Move", function() { return Move; }); 18056/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Motion", function() { return Motion; }); 18057/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery"); 18058/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__); 18059/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.utils */ "./foundation.core"); 18060/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__); 18061 18062 18063 18064 18065/** 18066 * Motion module. 18067 * @module foundation.motion 18068 */ 18069 18070var initClasses = ['mui-enter', 'mui-leave']; 18071var activeClasses = ['mui-enter-active', 'mui-leave-active']; 18072var Motion = { 18073 animateIn: function animateIn(element, animation, cb) { 18074 animate(true, element, animation, cb); 18075 }, 18076 animateOut: function animateOut(element, animation, cb) { 18077 animate(false, element, animation, cb); 18078 } 18079}; 18080 18081function Move(duration, elem, fn) { 18082 var anim, 18083 prog, 18084 start = null; // console.log('called'); 18085 18086 if (duration === 0) { 18087 fn.apply(elem); 18088 elem.trigger('finished.zf.animate', [elem]).triggerHandler('finished.zf.animate', [elem]); 18089 return; 18090 } 18091 18092 function move(ts) { 18093 if (!start) start = ts; // console.log(start, ts); 18094 18095 prog = ts - start; 18096 fn.apply(elem); 18097 18098 if (prog < duration) { 18099 anim = window.requestAnimationFrame(move, elem); 18100 } else { 18101 window.cancelAnimationFrame(anim); 18102 elem.trigger('finished.zf.animate', [elem]).triggerHandler('finished.zf.animate', [elem]); 18103 } 18104 } 18105 18106 anim = window.requestAnimationFrame(move); 18107} 18108/** 18109 * Animates an element in or out using a CSS transition class. 18110 * @function 18111 * @private 18112 * @param {Boolean} isIn - Defines if the animation is in or out. 18113 * @param {Object} element - jQuery or HTML object to animate. 18114 * @param {String} animation - CSS class to use. 18115 * @param {Function} cb - Callback to run when animation is finished. 18116 */ 18117 18118 18119function animate(isIn, element, animation, cb) { 18120 element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(element).eq(0); 18121 if (!element.length) return; 18122 var initClass = isIn ? initClasses[0] : initClasses[1]; 18123 var activeClass = isIn ? activeClasses[0] : activeClasses[1]; // Set up the animation 18124 18125 reset(); 18126 element.addClass(animation).css('transition', 'none'); 18127 requestAnimationFrame(function () { 18128 element.addClass(initClass); 18129 if (isIn) element.show(); 18130 }); // Start the animation 18131 18132 requestAnimationFrame(function () { 18133 // will trigger the browser to synchronously calculate the style and layout 18134 // also called reflow or layout thrashing 18135 // see https://gist.github.com/paulirish/5d52fb081b3570c81e3a 18136 element[0].offsetWidth; 18137 element.css('transition', '').addClass(activeClass); 18138 }); // Clean up the animation when it finishes 18139 18140 element.one(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["transitionend"])(element), finish); // Hides the element (for out animations), resets the element, and runs a callback 18141 18142 function finish() { 18143 if (!isIn) element.hide(); 18144 reset(); 18145 if (cb) cb.apply(element); 18146 } // Resets transitions and removes motion-specific classes 18147 18148 18149 function reset() { 18150 element[0].style.transitionDuration = 0; 18151 element.removeClass("".concat(initClass, " ").concat(activeClass, " ").concat(animation)); 18152 } 18153} 18154 18155 18156 18157/***/ }), 18158 18159/***/ 25: 18160/*!************************************************************!*\ 18161 !*** multi ./js/entries/plugins/foundation.util.motion.js ***! 18162 \************************************************************/ 18163/*! no static exports found */ 18164/***/ (function(module, exports, __webpack_require__) { 18165 18166module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.util.motion.js */"./js/entries/plugins/foundation.util.motion.js"); 18167 18168 18169/***/ }), 18170 18171/***/ "jquery": 18172/*!********************************************************************************************!*\ 18173 !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***! 18174 \********************************************************************************************/ 18175/*! no static exports found */
vendor: 5,082 bytes, lines 18176-18287
18176/***/ (function(module, exports) { 18177 18178module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__; 18179 18180/***/ }) 18181 18182/******/ }); 18183}); 18184//# sourceMappingURL=foundation.util.motion.js.map 18185(function webpackUniversalModuleDefinition(root, factory) { 18186 if(typeof exports === 'object' && typeof module === 'object') 18187 module.exports = factory(require("./foundation.core"), require("jquery")); 18188 else if(typeof define === 'function' && define.amd) 18189 define(["./foundation.core", "jquery"], factory); 18190 else if(typeof exports === 'object') 18191 exports["foundation.util.nest"] = factory(require("./foundation.core"), require("jquery")); 18192 else 18193 root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.util.nest"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["jQuery"]); 18194})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE_jquery__) { 18195return /******/ (function(modules) { // webpackBootstrap 18196/******/ // The module cache 18197/******/ var installedModules = {}; 18198/******/ 18199/******/ // The require function 18200/******/ function __webpack_require__(moduleId) { 18201/******/ 18202/******/ // Check if module is in cache 18203/******/ if(installedModules[moduleId]) { 18204/******/ return installedModules[moduleId].exports; 18205/******/ } 18206/******/ // Create a new module (and put it into the cache) 18207/******/ var module = installedModules[moduleId] = { 18208/******/ i: moduleId, 18209/******/ l: false, 18210/******/ exports: {} 18211/******/ }; 18212/******/ 18213/******/ // Execute the module function 18214/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 18215/******/ 18216/******/ // Flag the module as loaded 18217/******/ module.l = true; 18218/******/ 18219/******/ // Return the exports of the module 18220/******/ return module.exports; 18221/******/ } 18222/******/ 18223/******/ 18224/******/ // expose the modules object (__webpack_modules__) 18225/******/ __webpack_require__.m = modules; 18226/******/ 18227/******/ // expose the module cache 18228/******/ __webpack_require__.c = installedModules; 18229/******/ 18230/******/ // define getter function for harmony exports 18231/******/ __webpack_require__.d = function(exports, name, getter) { 18232/******/ if(!__webpack_require__.o(exports, name)) { 18233/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); 18234/******/ } 18235/******/ }; 18236/******/ 18237/******/ // define __esModule on exports 18238/******/ __webpack_require__.r = function(exports) { 18239/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 18240/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 18241/******/ } 18242/******/ Object.defineProperty(exports, '__esModule', { value: true }); 18243/******/ }; 18244/******/ 18245/******/ // create a fake namespace object 18246/******/ // mode & 1: value is a module id, require it 18247/******/ // mode & 2: merge all properties of value into the ns 18248/******/ // mode & 4: return value when already ns object 18249/******/ // mode & 8|1: behave like require 18250/******/ __webpack_require__.t = function(value, mode) { 18251/******/ if(mode & 1) value = __webpack_require__(value); 18252/******/ if(mode & 8) return value; 18253/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; 18254/******/ var ns = Object.create(null); 18255/******/ __webpack_require__.r(ns); 18256/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); 18257/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); 18258/******/ return ns; 18259/******/ }; 18260/******/ 18261/******/ // getDefaultExport function for compatibility with non-harmony modules 18262/******/ __webpack_require__.n = function(module) { 18263/******/ var getter = module && module.__esModule ? 18264/******/ function getDefault() { return module['default']; } : 18265/******/ function getModuleExports() { return module; }; 18266/******/ __webpack_require__.d(getter, 'a', getter); 18267/******/ return getter; 18268/******/ }; 18269/******/ 18270/******/ // Object.prototype.hasOwnProperty.call 18271/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; 18272/******/ 18273/******/ // __webpack_public_path__ 18274/******/ __webpack_require__.p = ""; 18275/******/ 18276/******/ 18277/******/ // Load entry module and return exports 18278/******/ return __webpack_require__(__webpack_require__.s = 26); 18279/******/ }) 18280/************************************************************************/ 18281/******/ ({ 18282 18283/***/ "./foundation.core": 18284/*!****************************************************************************************************************************************************************!*\ 18285 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***! 18286 \****************************************************************************************************************************************************************/ 18287/*! no static exports found */
18288/***/ (function(module, exports) { 18289 18290module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__; 18291 18292/***/ }), 18293
18294/***/ "./js/entries/plugins/foundation.util.nest.js": 18295/*!****************************************************!*\ 18296 !*** ./js/entries/plugins/foundation.util.nest.js ***! 18297 \****************************************************/ 18298/*! exports provided: Foundation, Nest */ 18299/***/ (function(module, __webpack_exports__, __webpack_require__) { 18300 18301"use strict"; 18302__webpack_require__.r(__webpack_exports__); 18303/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core"); 18304/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__); 18305/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; }); 18306 18307/* harmony import */ var _foundation_util_nest__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.util.nest */ "./js/foundation.util.nest.js"); 18308/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Nest", function() { return _foundation_util_nest__WEBPACK_IMPORTED_MODULE_1__["Nest"]; }); 18309 18310 18311 18312_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].Nest = _foundation_util_nest__WEBPACK_IMPORTED_MODULE_1__["Nest"]; 18313 18314 18315/***/ }), 18316
vendor: 5,413 bytes, lines 18317-18456
18317/***/ "./js/foundation.util.nest.js": 18318/*!************************************!*\ 18319 !*** ./js/foundation.util.nest.js ***! 18320 \************************************/ 18321/*! exports provided: Nest */ 18322/***/ (function(module, __webpack_exports__, __webpack_require__) { 18323 18324"use strict"; 18325__webpack_require__.r(__webpack_exports__); 18326/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Nest", function() { return Nest; }); 18327/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery"); 18328/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__); 18329 18330 18331 18332var Nest = { 18333 Feather: function Feather(menu) { 18334 var type = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 'zf'; 18335 menu.attr('role', 'menubar'); 18336 menu.find('a').attr({ 18337 'role': 'menuitem' 18338 }); 18339 var items = menu.find('li').attr({ 18340 'role': 'none' 18341 }), 18342 subMenuClass = "is-".concat(type, "-submenu"), 18343 subItemClass = "".concat(subMenuClass, "-item"), 18344 hasSubClass = "is-".concat(type, "-submenu-parent"), 18345 applyAria = type !== 'accordion'; // Accordions handle their own ARIA attriutes. 18346 18347 items.each(function () { 18348 var $item = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 18349 $sub = $item.children('ul'); 18350 18351 if ($sub.length) { 18352 $item.addClass(hasSubClass); 18353 18354 if (applyAria) { 18355 $item.attr({ 18356 'aria-haspopup': true, 18357 'aria-label': $item.children('a:first').text() 18358 }); // Note: Drilldowns behave differently in how they hide, and so need 18359 // additional attributes. We should look if this possibly over-generalized 18360 // utility (Nest) is appropriate when we rework menus in 6.4 18361 18362 if (type === 'drilldown') { 18363 $item.attr({ 18364 'aria-expanded': false 18365 }); 18366 } 18367 } 18368 18369 $sub.addClass("submenu ".concat(subMenuClass)).attr({ 18370 'data-submenu': '', 18371 'role': 'menubar' 18372 }); 18373 18374 if (type === 'drilldown') { 18375 $sub.attr({ 18376 'aria-hidden': true 18377 }); 18378 } 18379 } 18380 18381 if ($item.parent('[data-submenu]').length) { 18382 $item.addClass("is-submenu-item ".concat(subItemClass)); 18383 } 18384 }); 18385 return; 18386 }, 18387 Burn: function Burn(menu, type) { 18388 var //items = menu.find('li'), 18389 subMenuClass = "is-".concat(type, "-submenu"), 18390 subItemClass = "".concat(subMenuClass, "-item"), 18391 hasSubClass = "is-".concat(type, "-submenu-parent"); 18392 menu.find('>li, > li > ul, .menu, .menu > li, [data-submenu] > li').removeClass("".concat(subMenuClass, " ").concat(subItemClass, " ").concat(hasSubClass, " is-submenu-item submenu is-active")).removeAttr('data-submenu').css('display', ''); 18393 } 18394}; 18395 18396 18397/***/ }), 18398 18399/***/ 26: 18400/*!**********************************************************!*\ 18401 !*** multi ./js/entries/plugins/foundation.util.nest.js ***! 18402 \**********************************************************/ 18403/*! no static exports found */ 18404/***/ (function(module, exports, __webpack_require__) { 18405 18406module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.util.nest.js */"./js/entries/plugins/foundation.util.nest.js"); 18407 18408 18409/***/ }), 18410 18411/***/ "jquery": 18412/*!********************************************************************************************!*\ 18413 !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***! 18414 \********************************************************************************************/ 18415/*! no static exports found */ 18416/***/ (function(module, exports) { 18417 18418module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__; 18419 18420/***/ }) 18421 18422/******/ }); 18423}); 18424//# sourceMappingURL=foundation.util.nest.js.map 18425(function webpackUniversalModuleDefinition(root, factory) { 18426 if(typeof exports === 'object' && typeof module === 'object') 18427 module.exports = factory(require("./foundation.core"), require("jquery")); 18428 else if(typeof define === 'function' && define.amd) 18429 define(["./foundation.core", "jquery"], factory); 18430 else if(typeof exports === 'object') 18431 exports["foundation.util.timer"] = factory(require("./foundation.core"), require("jquery")); 18432 else 18433 root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.util.timer"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["jQuery"]); 18434})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE_jquery__) { 18435return /******/ (function(modules) { // webpackBootstrap 18436/******/ // The module cache 18437/******/ var installedModules = {}; 18438/******/ 18439/******/ // The require function 18440/******/ function __webpack_require__(moduleId) { 18441/******/ 18442/******/ // Check if module is in cache 18443/******/ if(installedModules[moduleId]) { 18444/******/ return installedModules[moduleId].exports; 18445/******/ } 18446/******/ // Create a new module (and put it into the cache) 18447/******/ var module = installedModules[moduleId] = { 18448/******/ i: moduleId, 18449/******/ l: false, 18450/******/ exports: {} 18451/******/ }; 18452/******/ 18453/******/ // Execute the module function 18454/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 18455/******/ 18456/******/ // Flag the module as loaded
vendor: 3,489 bytes, lines 18457-18533
18457/******/ module.l = true; 18458/******/ 18459/******/ // Return the exports of the module 18460/******/ return module.exports; 18461/******/ } 18462/******/ 18463/******/ 18464/******/ // expose the modules object (__webpack_modules__) 18465/******/ __webpack_require__.m = modules; 18466/******/ 18467/******/ // expose the module cache 18468/******/ __webpack_require__.c = installedModules; 18469/******/ 18470/******/ // define getter function for harmony exports 18471/******/ __webpack_require__.d = function(exports, name, getter) { 18472/******/ if(!__webpack_require__.o(exports, name)) { 18473/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); 18474/******/ } 18475/******/ }; 18476/******/ 18477/******/ // define __esModule on exports 18478/******/ __webpack_require__.r = function(exports) { 18479/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 18480/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 18481/******/ } 18482/******/ Object.defineProperty(exports, '__esModule', { value: true }); 18483/******/ }; 18484/******/ 18485/******/ // create a fake namespace object 18486/******/ // mode & 1: value is a module id, require it 18487/******/ // mode & 2: merge all properties of value into the ns 18488/******/ // mode & 4: return value when already ns object 18489/******/ // mode & 8|1: behave like require 18490/******/ __webpack_require__.t = function(value, mode) { 18491/******/ if(mode & 1) value = __webpack_require__(value); 18492/******/ if(mode & 8) return value; 18493/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; 18494/******/ var ns = Object.create(null); 18495/******/ __webpack_require__.r(ns); 18496/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); 18497/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); 18498/******/ return ns; 18499/******/ }; 18500/******/ 18501/******/ // getDefaultExport function for compatibility with non-harmony modules 18502/******/ __webpack_require__.n = function(module) { 18503/******/ var getter = module && module.__esModule ? 18504/******/ function getDefault() { return module['default']; } : 18505/******/ function getModuleExports() { return module; }; 18506/******/ __webpack_require__.d(getter, 'a', getter); 18507/******/ return getter; 18508/******/ }; 18509/******/ 18510/******/ // Object.prototype.hasOwnProperty.call 18511/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; 18512/******/ 18513/******/ // __webpack_public_path__ 18514/******/ __webpack_require__.p = ""; 18515/******/ 18516/******/ 18517/******/ // Load entry module and return exports 18518/******/ return __webpack_require__(__webpack_require__.s = 27); 18519/******/ }) 18520/************************************************************************/ 18521/******/ ({ 18522 18523/***/ "./foundation.core": 18524/*!****************************************************************************************************************************************************************!*\ 18525 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***! 18526 \****************************************************************************************************************************************************************/ 18527/*! no static exports found */ 18528/***/ (function(module, exports) { 18529 18530module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__; 18531 18532/***/ }), 18533
18534/***/ "./js/entries/plugins/foundation.util.timer.js": 18535/*!*****************************************************!*\ 18536 !*** ./js/entries/plugins/foundation.util.timer.js ***! 18537 \*****************************************************/ 18538/*! exports provided: Foundation, Timer */ 18539/***/ (function(module, __webpack_exports__, __webpack_require__) { 18540 18541"use strict"; 18542__webpack_require__.r(__webpack_exports__); 18543/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core"); 18544/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__); 18545/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; }); 18546 18547/* harmony import */ var _foundation_util_timer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.util.timer */ "./js/foundation.util.timer.js"); 18548/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Timer", function() { return _foundation_util_timer__WEBPACK_IMPORTED_MODULE_1__["Timer"]; }); 18549 18550 18551 18552_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].Timer = _foundation_util_timer__WEBPACK_IMPORTED_MODULE_1__["Timer"]; 18553 18554 18555/***/ }), 18556
18557/***/ "./js/foundation.util.timer.js": 18558/*!*************************************!*\ 18559 !*** ./js/foundation.util.timer.js ***! 18560 \*************************************/ 18561/*! exports provided: Timer */ 18562/***/ (function(module, __webpack_exports__, __webpack_require__) { 18563 18564"use strict"; 18565__webpack_require__.r(__webpack_exports__); 18566/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Timer", function() { return Timer; }); 18567/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery"); 18568/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__); 18569 18570 18571 18572 18573function Timer(elem, options, cb) { 18574 var _this = this, 18575 duration = options.duration, 18576 //options is an object for easily adding features later. 18577 nameSpace = Object.keys(elem.data())[0] || 'timer', 18578 remain = -1, 18579 start, 18580 timer; 18581 18582 this.isPaused = false; 18583 18584 this.restart = function () { 18585 remain = -1; 18586 clearTimeout(timer); 18587 this.start(); 18588 }; 18589 18590 this.start = function () { 18591 this.isPaused = false; // if(!elem.data('paused')){ return false; }//maybe implement this sanity check if used for other things. 18592 18593 clearTimeout(timer); 18594 remain = remain <= 0 ? duration : remain; 18595 elem.data('paused', false); 18596 start = Date.now(); 18597 timer = setTimeout(function () { 18598 if (options.infinite) { 18599 _this.restart(); //rerun the timer. 18600 18601 } 18602 18603 if (cb && typeof cb === 'function') { 18604 cb(); 18605 } 18606 }, remain); 18607 elem.trigger("timerstart.zf.".concat(nameSpace)); 18608 }; 18609 18610 this.pause = function () { 18611 this.isPaused = true; //if(elem.data('paused')){ return false; }//maybe implement this sanity check if used for other things. 18612 18613 clearTimeout(timer); 18614 elem.data('paused', true); 18615 var end = Date.now(); 18616 remain = remain - (end - start); 18617 elem.trigger("timerpaused.zf.".concat(nameSpace)); 18618 }; 18619} 18620 18621 18622 18623/***/ }), 18624 18625/***/ 27: 18626/*!***********************************************************!*\ 18627 !*** multi ./js/entries/plugins/foundation.util.timer.js ***! 18628 \***********************************************************/ 18629/*! no static exports found */ 18630/***/ (function(module, exports, __webpack_require__) { 18631 18632module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.util.timer.js */"./js/entries/plugins/foundation.util.timer.js"); 18633 18634 18635/***/ }), 18636 18637/***/ "jquery": 18638/*!********************************************************************************************!*\ 18639 !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***! 18640 \********************************************************************************************/ 18641/*! no static exports found */ 18642/***/ (function(module, exports) { 18643 18644module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__; 18645 18646/***/ }) 18647 18648/******/ }); 18649}); 18650//# sourceMappingURL=foundation.util.timer.js.map 18651(function webpackUniversalModuleDefinition(root, factory) { 18652 if(typeof exports === 'object' && typeof module === 'object') 18653 module.exports = factory(require("./foundation.core"), require("jquery")); 18654 else if(typeof define === 'function' && define.amd) 18655 define(["./foundation.core", "jquery"], factory); 18656 else if(typeof exports === 'object') 18657 exports["foundation.util.touch"] = factory(require("./foundation.core"), require("jquery")); 18658 else 18659 root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.util.touch"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["jQuery"]); 18660})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE_jquery__) { 18661return /******/ (function(modules) { // webpackBootstrap 18662/******/ // The module cache 18663/******/ var installedModules = {}; 18664/******/ 18665/******/ // The require function 18666/******/ function __webpack_require__(moduleId) { 18667/******/ 18668/******/ // Check if module is in cache 18669/******/ if(installedModules[moduleId]) { 18670/******/ return installedModules[moduleId].exports; 18671/******/ } 18672/******/ // Create a new module (and put it into the cache) 18673/******/ var module = installedModules[moduleId] = { 18674/******/ i: moduleId, 18675/******/ l: false, 18676/******/ exports: {} 18677/******/ }; 18678/******/ 18679/******/ // Execute the module function 18680/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 18681/******/ 18682/******/ // Flag the module as loaded
vendor: 3,489 bytes, lines 18683-18759
18683/******/ module.l = true; 18684/******/ 18685/******/ // Return the exports of the module 18686/******/ return module.exports; 18687/******/ } 18688/******/ 18689/******/ 18690/******/ // expose the modules object (__webpack_modules__) 18691/******/ __webpack_require__.m = modules; 18692/******/ 18693/******/ // expose the module cache 18694/******/ __webpack_require__.c = installedModules; 18695/******/ 18696/******/ // define getter function for harmony exports 18697/******/ __webpack_require__.d = function(exports, name, getter) { 18698/******/ if(!__webpack_require__.o(exports, name)) { 18699/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); 18700/******/ } 18701/******/ }; 18702/******/ 18703/******/ // define __esModule on exports 18704/******/ __webpack_require__.r = function(exports) { 18705/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 18706/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 18707/******/ } 18708/******/ Object.defineProperty(exports, '__esModule', { value: true }); 18709/******/ }; 18710/******/ 18711/******/ // create a fake namespace object 18712/******/ // mode & 1: value is a module id, require it 18713/******/ // mode & 2: merge all properties of value into the ns 18714/******/ // mode & 4: return value when already ns object 18715/******/ // mode & 8|1: behave like require 18716/******/ __webpack_require__.t = function(value, mode) { 18717/******/ if(mode & 1) value = __webpack_require__(value); 18718/******/ if(mode & 8) return value; 18719/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; 18720/******/ var ns = Object.create(null); 18721/******/ __webpack_require__.r(ns); 18722/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); 18723/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); 18724/******/ return ns; 18725/******/ }; 18726/******/ 18727/******/ // getDefaultExport function for compatibility with non-harmony modules 18728/******/ __webpack_require__.n = function(module) { 18729/******/ var getter = module && module.__esModule ? 18730/******/ function getDefault() { return module['default']; } : 18731/******/ function getModuleExports() { return module; }; 18732/******/ __webpack_require__.d(getter, 'a', getter); 18733/******/ return getter; 18734/******/ }; 18735/******/ 18736/******/ // Object.prototype.hasOwnProperty.call 18737/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; 18738/******/ 18739/******/ // __webpack_public_path__ 18740/******/ __webpack_require__.p = ""; 18741/******/ 18742/******/ 18743/******/ // Load entry module and return exports 18744/******/ return __webpack_require__(__webpack_require__.s = 28); 18745/******/ }) 18746/************************************************************************/ 18747/******/ ({ 18748 18749/***/ "./foundation.core": 18750/*!****************************************************************************************************************************************************************!*\ 18751 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***! 18752 \****************************************************************************************************************************************************************/ 18753/*! no static exports found */ 18754/***/ (function(module, exports) { 18755 18756module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__; 18757 18758/***/ }), 18759
18760/***/ "./js/entries/plugins/foundation.util.touch.js": 18761/*!*****************************************************!*\ 18762 !*** ./js/entries/plugins/foundation.util.touch.js ***! 18763 \*****************************************************/ 18764/*! exports provided: Foundation, Touch */ 18765/***/ (function(module, __webpack_exports__, __webpack_require__) { 18766 18767"use strict"; 18768__webpack_require__.r(__webpack_exports__); 18769/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery"); 18770/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__); 18771/* harmony import */ var _foundation_util_touch__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.util.touch */ "./js/foundation.util.touch.js"); 18772/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Touch", function() { return _foundation_util_touch__WEBPACK_IMPORTED_MODULE_1__["Touch"]; }); 18773 18774/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core"); 18775/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_2__); 18776/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_2__["Foundation"]; }); 18777 18778 18779 18780_foundation_util_touch__WEBPACK_IMPORTED_MODULE_1__["Touch"].init(jquery__WEBPACK_IMPORTED_MODULE_0___default.a); 18781window.Foundation.Touch = _foundation_util_touch__WEBPACK_IMPORTED_MODULE_1__["Touch"]; 18782 18783 18784 18785/***/ }), 18786
18787/***/ "./js/foundation.util.touch.js": 18788/*!*************************************!*\ 18789 !*** ./js/foundation.util.touch.js ***! 18790 \*************************************/ 18791/*! exports provided: Touch */ 18792/***/ (function(module, __webpack_exports__, __webpack_require__) { 18793 18794"use strict"; 18795__webpack_require__.r(__webpack_exports__); 18796/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Touch", function() { return Touch; }); 18797/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery"); 18798/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__); 18799function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 18800 18801function _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); } } 18802 18803function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } 18804 18805//************************************************** 18806//**Work inspired by multiple jquery swipe plugins** 18807//**Done by Yohai Ararat *************************** 18808//************************************************** 18809 18810var Touch = {}; 18811var startPosX, 18812 startPosY, 18813 startTime, 18814 elapsedTime, 18815 startEvent, 18816 isMoving = false, 18817 didMoved = false; 18818 18819function onTouchEnd(e) { 18820 this.removeEventListener('touchmove', onTouchMove); 18821 this.removeEventListener('touchend', onTouchEnd); // If the touch did not move, consider it as a "tap" 18822 18823 if (!didMoved) { 18824 var tapEvent = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event('tap', startEvent || e); 18825 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger(tapEvent); 18826 } 18827 18828 startEvent = null; 18829 isMoving = false; 18830 didMoved = false; 18831} 18832 18833function onTouchMove(e) { 18834 if (jquery__WEBPACK_IMPORTED_MODULE_0___default.a.spotSwipe.preventDefault) { 18835 e.preventDefault(); 18836 } 18837 18838 if (isMoving) { 18839 var x = e.touches[0].pageX; 18840 var y = e.touches[0].pageY; 18841 var dx = startPosX - x; 18842 var dy = startPosY - y; 18843 var dir; 18844 didMoved = true; 18845 elapsedTime = new Date().getTime() - startTime; 18846 18847 if (Math.abs(dx) >= jquery__WEBPACK_IMPORTED_MODULE_0___default.a.spotSwipe.moveThreshold && elapsedTime <= jquery__WEBPACK_IMPORTED_MODULE_0___default.a.spotSwipe.timeThreshold) { 18848 dir = dx > 0 ? 'left' : 'right'; 18849 } // else if(Math.abs(dy) >= $.spotSwipe.moveThreshold && elapsedTime <= $.spotSwipe.timeThreshold) { 18850 // dir = dy > 0 ? 'down' : 'up'; 18851 // } 18852 18853 18854 if (dir) { 18855 e.preventDefault(); 18856 onTouchEnd.apply(this, arguments); 18857 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger(jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event('swipe', Object.assign({}, e)), dir).trigger(jquery__WEBPACK_IMPORTED_MODULE_0___default.a.Event("swipe".concat(dir), Object.assign({}, e))); 18858 } 18859 } 18860} 18861 18862function onTouchStart(e) { 18863 if (e.touches.length == 1) { 18864 startPosX = e.touches[0].pageX; 18865 startPosY = e.touches[0].pageY; 18866 startEvent = e; 18867 isMoving = true; 18868 didMoved = false; 18869 startTime = new Date().getTime(); 18870 this.addEventListener('touchmove', onTouchMove, false); 18871 this.addEventListener('touchend', onTouchEnd, false); 18872 } 18873} 18874 18875function init() { 18876 this.addEventListener && this.addEventListener('touchstart', onTouchStart, false); 18877} 18878 18879function teardown() { 18880 this.removeEventListener('touchstart', onTouchStart); 18881} 18882 18883var SpotSwipe = 18884/*#__PURE__*/ 18885function () { 18886 function SpotSwipe($) { 18887 _classCallCheck(this, SpotSwipe); 18888 18889 this.version = '1.0.0'; 18890 this.enabled = 'ontouchstart' in document.documentElement; 18891 this.preventDefault = false;
18892 this.moveThreshold = 75; 18893 this.timeThreshold = 200; 18894 this.$ = $; 18895 18896 this._init(); 18897 } 18898 18899 _createClass(SpotSwipe, [{ 18900 key: "_init", 18901 value: function _init() { 18902 var $ = this.$; 18903 $.event.special.swipe = { 18904 setup: init 18905 }; 18906 $.event.special.tap = { 18907 setup: init 18908 }; 18909 $.each(['left', 'up', 'down', 'right'], function () { 18910 $.event.special["swipe".concat(this)] = { 18911 setup: function setup() { 18912 $(this).on('swipe', $.noop); 18913 } 18914 }; 18915 }); 18916 } 18917 }]); 18918 18919 return SpotSwipe; 18920}(); 18921/**************************************************** 18922 * As far as I can tell, both setupSpotSwipe and * 18923 * setupTouchHandler should be idempotent, * 18924 * because they directly replace functions & * 18925 * values, and do not add event handlers directly. * 18926 ****************************************************/ 18927 18928 18929Touch.setupSpotSwipe = function ($) { 18930 $.spotSwipe = new SpotSwipe($); 18931}; 18932/**************************************************** 18933 * Method for adding pseudo drag events to elements * 18934 ***************************************************/ 18935 18936 18937Touch.setupTouchHandler = function ($) { 18938 $.fn.addTouch = function () { 18939 this.each(function (i, el) { 18940 $(el).bind('touchstart touchmove touchend touchcancel', function (event) { 18941 //we pass the original event object because the jQuery event 18942 //object is normalized to w3c specs and does not provide the TouchList 18943 handleTouch(event); 18944 }); 18945 }); 18946 18947 var handleTouch = function handleTouch(event) { 18948 var touches = event.changedTouches, 18949 first = touches[0], 18950 eventTypes = { 18951 touchstart: 'mousedown', 18952 touchmove: 'mousemove', 18953 touchend: 'mouseup' 18954 }, 18955 type = eventTypes[event.type], 18956 simulatedEvent; 18957 18958 if ('MouseEvent' in window && typeof window.MouseEvent === 'function') { 18959 simulatedEvent = new window.MouseEvent(type, { 18960 'bubbles': true, 18961 'cancelable': true, 18962 'screenX': first.screenX, 18963 'screenY': first.screenY, 18964 'clientX': first.clientX, 18965 'clientY': first.clientY 18966 }); 18967 } else { 18968 simulatedEvent = document.createEvent('MouseEvent'); 18969 simulatedEvent.initMouseEvent(type, true, true, window, 1, first.screenX, first.screenY, first.clientX, first.clientY, false, false, false, false, 0 18970 /*left*/ 18971 , null); 18972 } 18973 18974 first.target.dispatchEvent(simulatedEvent); 18975 }; 18976 }; 18977}; 18978 18979Touch.init = function ($) { 18980 if (typeof $.spotSwipe === 'undefined') { 18981 Touch.setupSpotSwipe($); 18982 Touch.setupTouchHandler($); 18983 } 18984}; 18985 18986 18987 18988/***/ }), 18989 18990/***/ 28: 18991/*!***********************************************************!*\ 18992 !*** multi ./js/entries/plugins/foundation.util.touch.js ***! 18993 \***********************************************************/ 18994/*! no static exports found */ 18995/***/ (function(module, exports, __webpack_require__) { 18996 18997module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.util.touch.js */"./js/entries/plugins/foundation.util.touch.js"); 18998 18999 19000/***/ }), 19001 19002/***/ "jquery": 19003/*!********************************************************************************************!*\ 19004 !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***! 19005 \********************************************************************************************/ 19006/*! no static exports found */ 19007/***/ (function(module, exports) { 19008 19009module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__; 19010 19011/***/ }) 19012 19013/******/ }); 19014}); 19015//# sourceMappingURL=foundation.util.touch.js.map 19016(function webpackUniversalModuleDefinition(root, factory) { 19017 if(typeof exports === 'object' && typeof module === 'object') 19018 module.exports = factory(require("./foundation.core"), require("./foundation.util.motion"), require("jquery")); 19019 else if(typeof define === 'function' && define.amd) 19020 define(["./foundation.core", "./foundation.util.motion", "jquery"], factory); 19021 else if(typeof exports === 'object') 19022 exports["foundation.util.triggers"] = factory(require("./foundation.core"), require("./foundation.util.motion"), require("jquery")); 19023 else 19024 root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.util.triggers"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.motion"], root["jQuery"]); 19025})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE__foundation_util_motion__, __WEBPACK_EXTERNAL_MODULE_jquery__) { 19026return /******/ (function(modules) { // webpackBootstrap 19027/******/ // The module cache 19028/******/ var installedModules = {}; 19029/******/ 19030/******/ // The require function 19031/******/ function __webpack_require__(moduleId) { 19032/******/ 19033/******/ // Check if module is in cache 19034/******/ if(installedModules[moduleId]) { 19035/******/ return installedModules[moduleId].exports; 19036/******/ } 19037/******/ // Create a new module (and put it into the cache) 19038/******/ var module = installedModules[moduleId] = { 19039/******/ i: moduleId, 19040/******/ l: false, 19041/******/ exports: {} 19042/******/ }; 19043/******/ 19044/******/ // Execute the module function 19045/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 19046/******/ 19047/******/ // Flag the module as loaded
vendor: 4,135 bytes, lines 19048-19129
19048/******/ module.l = true; 19049/******/ 19050/******/ // Return the exports of the module 19051/******/ return module.exports; 19052/******/ } 19053/******/ 19054/******/ 19055/******/ // expose the modules object (__webpack_modules__) 19056/******/ __webpack_require__.m = modules; 19057/******/ 19058/******/ // expose the module cache 19059/******/ __webpack_require__.c = installedModules; 19060/******/ 19061/******/ // define getter function for harmony exports 19062/******/ __webpack_require__.d = function(exports, name, getter) { 19063/******/ if(!__webpack_require__.o(exports, name)) { 19064/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); 19065/******/ } 19066/******/ }; 19067/******/ 19068/******/ // define __esModule on exports 19069/******/ __webpack_require__.r = function(exports) { 19070/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 19071/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 19072/******/ } 19073/******/ Object.defineProperty(exports, '__esModule', { value: true }); 19074/******/ }; 19075/******/ 19076/******/ // create a fake namespace object 19077/******/ // mode & 1: value is a module id, require it 19078/******/ // mode & 2: merge all properties of value into the ns 19079/******/ // mode & 4: return value when already ns object 19080/******/ // mode & 8|1: behave like require 19081/******/ __webpack_require__.t = function(value, mode) { 19082/******/ if(mode & 1) value = __webpack_require__(value); 19083/******/ if(mode & 8) return value; 19084/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; 19085/******/ var ns = Object.create(null); 19086/******/ __webpack_require__.r(ns); 19087/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); 19088/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); 19089/******/ return ns; 19090/******/ }; 19091/******/ 19092/******/ // getDefaultExport function for compatibility with non-harmony modules 19093/******/ __webpack_require__.n = function(module) { 19094/******/ var getter = module && module.__esModule ? 19095/******/ function getDefault() { return module['default']; } : 19096/******/ function getModuleExports() { return module; }; 19097/******/ __webpack_require__.d(getter, 'a', getter); 19098/******/ return getter; 19099/******/ }; 19100/******/ 19101/******/ // Object.prototype.hasOwnProperty.call 19102/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; 19103/******/ 19104/******/ // __webpack_public_path__ 19105/******/ __webpack_require__.p = ""; 19106/******/ 19107/******/ 19108/******/ // Load entry module and return exports 19109/******/ return __webpack_require__(__webpack_require__.s = 29); 19110/******/ }) 19111/************************************************************************/ 19112/******/ ({ 19113 19114/***/ "./foundation.core": 19115/*!****************************************************************************************************************************************************************!*\ 19116 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***! 19117 \****************************************************************************************************************************************************************/ 19118/*! no static exports found */ 19119/***/ (function(module, exports) { 19120 19121module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__; 19122 19123/***/ }), 19124 19125/***/ "./foundation.util.motion": 19126/*!********************************************************************************************************************************************************************************************!*\ 19127 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.motion"],"amd":"./foundation.util.motion","commonjs":"./foundation.util.motion","commonjs2":"./foundation.util.motion"} ***! 19128 \********************************************************************************************************************************************************************************************/ 19129/*! no static exports found */
19130/***/ (function(module, exports) { 19131 19132module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_motion__; 19133 19134/***/ }), 19135
19136/***/ "./js/entries/plugins/foundation.util.triggers.js": 19137/*!********************************************************!*\ 19138 !*** ./js/entries/plugins/foundation.util.triggers.js ***! 19139 \********************************************************/ 19140/*! exports provided: Foundation, Triggers */ 19141/***/ (function(module, __webpack_exports__, __webpack_require__) { 19142 19143"use strict"; 19144__webpack_require__.r(__webpack_exports__); 19145/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core"); 19146/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__); 19147/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; }); 19148 19149/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! jquery */ "jquery"); 19150/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_1__); 19151/* harmony import */ var _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../../foundation.util.triggers */ "./js/foundation.util.triggers.js"); 19152/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Triggers", function() { return _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_2__["Triggers"]; }); 19153 19154 19155 19156 19157_foundation_util_triggers__WEBPACK_IMPORTED_MODULE_2__["Triggers"].init(jquery__WEBPACK_IMPORTED_MODULE_1___default.a, _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]); 19158 19159 19160/***/ }), 19161
vendor: 13,007 bytes, lines 19162-19476
19162/***/ "./js/foundation.util.triggers.js": 19163/*!****************************************!*\ 19164 !*** ./js/foundation.util.triggers.js ***! 19165 \****************************************/ 19166/*! exports provided: Triggers */ 19167/***/ (function(module, __webpack_exports__, __webpack_require__) { 19168 19169"use strict"; 19170__webpack_require__.r(__webpack_exports__); 19171/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Triggers", function() { return Triggers; }); 19172/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery"); 19173/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__); 19174/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.utils */ "./foundation.core"); 19175/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__); 19176/* harmony import */ var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.util.motion */ "./foundation.util.motion"); 19177/* harmony import */ var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__); 19178 19179 19180function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } 19181 19182 19183 19184 19185 19186var MutationObserver = function () { 19187 var prefixes = ['WebKit', 'Moz', 'O', 'Ms', '']; 19188 19189 for (var i = 0; i < prefixes.length; i++) { 19190 if ("".concat(prefixes[i], "MutationObserver") in window) { 19191 return window["".concat(prefixes[i], "MutationObserver")]; 19192 } 19193 } 19194 19195 return false; 19196}(); 19197 19198var triggers = function triggers(el, type) { 19199 el.data(type).split(' ').forEach(function (id) { 19200 jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(id))[type === 'close' ? 'trigger' : 'triggerHandler']("".concat(type, ".zf.trigger"), [el]); 19201 }); 19202}; 19203 19204var Triggers = { 19205 Listeners: { 19206 Basic: {}, 19207 Global: {} 19208 }, 19209 Initializers: {} 19210}; 19211Triggers.Listeners.Basic = { 19212 openListener: function openListener() { 19213 triggers(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'open'); 19214 }, 19215 closeListener: function closeListener() { 19216 var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('close'); 19217 19218 if (id) { 19219 triggers(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'close'); 19220 } else { 19221 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger('close.zf.trigger'); 19222 } 19223 }, 19224 toggleListener: function toggleListener() { 19225 var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('toggle'); 19226 19227 if (id) { 19228 triggers(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'toggle'); 19229 } else { 19230 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger('toggle.zf.trigger'); 19231 } 19232 }, 19233 closeableListener: function closeableListener(e) { 19234 var animation = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('closable'); // Only close the first closable element. See https://git.io/zf-7833 19235 19236 e.stopPropagation(); 19237 19238 if (animation !== '') { 19239 _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__["Motion"].animateOut(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), animation, function () { 19240 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger('closed.zf'); 19241 }); 19242 } else { 19243 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).fadeOut().trigger('closed.zf'); 19244 } 19245 }, 19246 toggleFocusListener: function toggleFocusListener() { 19247 var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('toggle-focus'); 19248 jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(id)).triggerHandler('toggle.zf.trigger', [jquery__WEBPACK_IMPORTED_MODULE_0___default()(this)]); 19249 } 19250}; // Elements with [data-open] will reveal a plugin that supports it when clicked. 19251 19252Triggers.Initializers.addOpenListener = function ($elem) { 19253 $elem.off('click.zf.trigger', Triggers.Listeners.Basic.openListener); 19254 $elem.on('click.zf.trigger', '[data-open]', Triggers.Listeners.Basic.openListener); 19255}; // Elements with [data-close] will close a plugin that supports it when clicked. 19256// If used without a value on [data-close], the event will bubble, allowing it to close a parent component. 19257 19258 19259Triggers.Initializers.addCloseListener = function ($elem) { 19260 $elem.off('click.zf.trigger', Triggers.Listeners.Basic.closeListener); 19261 $elem.on('click.zf.trigger', '[data-close]', Triggers.Listeners.Basic.closeListener); 19262}; // Elements with [data-toggle] will toggle a plugin that supports it when clicked. 19263 19264 19265Triggers.Initializers.addToggleListener = function ($elem) { 19266 $elem.off('click.zf.trigger', Triggers.Listeners.Basic.toggleListener); 19267 $elem.on('click.zf.trigger', '[data-toggle]', Triggers.Listeners.Basic.toggleListener); 19268}; // Elements with [data-closable] will respond to close.zf.trigger events. 19269 19270 19271Triggers.Initializers.addCloseableListener = function ($elem) { 19272 $elem.off('close.zf.trigger', Triggers.Listeners.Basic.closeableListener); 19273 $elem.on('close.zf.trigger', '[data-closeable], [data-closable]', Triggers.Listeners.Basic.closeableListener); 19274}; // Elements with [data-toggle-focus] will respond to coming in and out of focus 19275 19276 19277Triggers.Initializers.addToggleFocusListener = function ($elem) { 19278 $elem.off('focus.zf.trigger blur.zf.trigger', Triggers.Listeners.Basic.toggleFocusListener); 19279 $elem.on('focus.zf.trigger blur.zf.trigger', '[data-toggle-focus]', Triggers.Listeners.Basic.toggleFocusListener); 19280}; // More Global/complex listeners and triggers 19281 19282 19283Triggers.Listeners.Global = { 19284 resizeListener: function resizeListener($nodes) { 19285 if (!MutationObserver) { 19286 //fallback for IE 9 19287 $nodes.each(function () { 19288 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).triggerHandler('resizeme.zf.trigger'); 19289 }); 19290 } //trigger all listening elements and signal a resize event 19291 19292 19293 $nodes.attr('data-events', "resize"); 19294 }, 19295 scrollListener: function scrollListener($nodes) { 19296 if (!MutationObserver) { 19297 //fallback for IE 9 19298 $nodes.each(function () { 19299 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).triggerHandler('scrollme.zf.trigger'); 19300 }); 19301 } //trigger all listening elements and signal a scroll event 19302 19303 19304 $nodes.attr('data-events', "scroll"); 19305 }, 19306 closeMeListener: function closeMeListener(e, pluginId) { 19307 var plugin = e.namespace.split('.')[0]; 19308 var plugins = jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-".concat(plugin, "]")).not("[data-yeti-box=\"".concat(pluginId, "\"]")); 19309 plugins.each(function () { 19310 var _this = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this); 19311 19312 _this.triggerHandler('close.zf.trigger', [_this]); 19313 }); 19314 } // Global, parses whole document. 19315 19316}; 19317 19318Triggers.Initializers.addClosemeListener = function (pluginName) { 19319 var yetiBoxes = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-yeti-box]'), 19320 plugNames = ['dropdown', 'tooltip', 'reveal']; 19321 19322 if (pluginName) { 19323 if (typeof pluginName === 'string') { 19324 plugNames.push(pluginName); 19325 } else if (_typeof(pluginName) === 'object' && typeof pluginName[0] === 'string') { 19326 plugNames = plugNames.concat(pluginName); 19327 } else { 19328 console.error('Plugin names must be strings'); 19329 } 19330 } 19331 19332 if (yetiBoxes.length) { 19333 var listeners = plugNames.map(function (name) { 19334 return "closeme.zf.".concat(name); 19335 }).join(' '); 19336 jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(listeners).on(listeners, Triggers.Listeners.Global.closeMeListener); 19337 } 19338}; 19339 19340function debounceGlobalListener(debounce, trigger, listener) { 19341 var timer, 19342 args = Array.prototype.slice.call(arguments, 3); 19343 jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(trigger).on(trigger, function (e) { 19344 if (timer) { 19345 clearTimeout(timer); 19346 } 19347 19348 timer = setTimeout(function () { 19349 listener.apply(null, args); 19350 }, debounce || 10); //default time to emit scroll event 19351 }); 19352} 19353 19354Triggers.Initializers.addResizeListener = function (debounce) { 19355 var $nodes = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-resize]'); 19356 19357 if ($nodes.length) { 19358 debounceGlobalListener(debounce, 'resize.zf.trigger', Triggers.Listeners.Global.resizeListener, $nodes); 19359 } 19360}; 19361 19362Triggers.Initializers.addScrollListener = function (debounce) { 19363 var $nodes = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-scroll]'); 19364 19365 if ($nodes.length) { 19366 debounceGlobalListener(debounce, 'scroll.zf.trigger', Triggers.Listeners.Global.scrollListener, $nodes); 19367 } 19368}; 19369 19370Triggers.Initializers.addMutationEventsListener = function ($elem) { 19371 if (!MutationObserver) { 19372 return false; 19373 } 19374 19375 var $nodes = $elem.find('[data-resize], [data-scroll], [data-mutate]'); //element callback 19376 19377 var listeningElementsMutation = function listeningElementsMutation(mutationRecordsList) { 19378 var $target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(mutationRecordsList[0].target); //trigger the event handler for the element depending on type 19379 19380 switch (mutationRecordsList[0].type) { 19381 case "attributes": 19382 if ($target.attr("data-events") === "scroll" && mutationRecordsList[0].attributeName === "data-events") { 19383 $target.triggerHandler('scrollme.zf.trigger', [$target, window.pageYOffset]); 19384 } 19385 19386 if ($target.attr("data-events") === "resize" && mutationRecordsList[0].attributeName === "data-events") { 19387 $target.triggerHandler('resizeme.zf.trigger', [$target]); 19388 } 19389 19390 if (mutationRecordsList[0].attributeName === "style") { 19391 $target.closest("[data-mutate]").attr("data-events", "mutate"); 19392 $target.closest("[data-mutate]").triggerHandler('mutateme.zf.trigger', [$target.closest("[data-mutate]")]); 19393 } 19394 19395 break; 19396 19397 case "childList": 19398 $target.closest("[data-mutate]").attr("data-events", "mutate"); 19399 $target.closest("[data-mutate]").triggerHandler('mutateme.zf.trigger', [$target.closest("[data-mutate]")]); 19400 break; 19401 19402 default: 19403 return false; 19404 //nothing 19405 } 19406 }; 19407 19408 if ($nodes.length) { 19409 //for each element that needs to listen for resizing, scrolling, or mutation add a single observer 19410 for (var i = 0; i <= $nodes.length - 1; i++) { 19411 var elementObserver = new MutationObserver(listeningElementsMutation); 19412 elementObserver.observe($nodes[i], { 19413 attributes: true, 19414 childList: true, 19415 characterData: false, 19416 subtree: true, 19417 attributeFilter: ["data-events", "style"] 19418 }); 19419 } 19420 } 19421}; 19422 19423Triggers.Initializers.addSimpleListeners = function () { 19424 var $document = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document); 19425 Triggers.Initializers.addOpenListener($document); 19426 Triggers.Initializers.addCloseListener($document); 19427 Triggers.Initializers.addToggleListener($document); 19428 Triggers.Initializers.addCloseableListener($document); 19429 Triggers.Initializers.addToggleFocusListener($document); 19430}; 19431 19432Triggers.Initializers.addGlobalListeners = function () { 19433 var $document = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document); 19434 Triggers.Initializers.addMutationEventsListener($document); 19435 Triggers.Initializers.addResizeListener(); 19436 Triggers.Initializers.addScrollListener(); 19437 Triggers.Initializers.addClosemeListener(); 19438}; 19439 19440Triggers.init = function ($, Foundation) { 19441 Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["onLoad"])($(window), function () { 19442 if ($.triggersInitialized !== true) { 19443 Triggers.Initializers.addSimpleListeners(); 19444 Triggers.Initializers.addGlobalListeners(); 19445 $.triggersInitialized = true; 19446 } 19447 }); 19448 19449 if (Foundation) { 19450 Foundation.Triggers = Triggers; // Legacy included to be backwards compatible for now. 19451 19452 Foundation.IHearYou = Triggers.Initializers.addGlobalListeners; 19453 } 19454}; 19455 19456 19457 19458/***/ }), 19459 19460/***/ 29: 19461/*!**************************************************************!*\ 19462 !*** multi ./js/entries/plugins/foundation.util.triggers.js ***! 19463 \**************************************************************/ 19464/*! no static exports found */ 19465/***/ (function(module, exports, __webpack_require__) { 19466 19467module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.util.triggers.js */"./js/entries/plugins/foundation.util.triggers.js"); 19468 19469 19470/***/ }), 19471 19472/***/ "jquery": 19473/*!********************************************************************************************!*\ 19474 !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***! 19475 \********************************************************************************************/ 19476/*! no static exports found */
vendor: 5,075 bytes, lines 19477-19588
19477/***/ (function(module, exports) { 19478 19479module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__; 19480 19481/***/ }) 19482 19483/******/ }); 19484}); 19485//# sourceMappingURL=foundation.util.triggers.js.map 19486(function webpackUniversalModuleDefinition(root, factory) { 19487 if(typeof exports === 'object' && typeof module === 'object') 19488 module.exports = factory(require("./foundation.core"), require("jquery")); 19489 else if(typeof define === 'function' && define.amd) 19490 define(["./foundation.core", "jquery"], factory); 19491 else if(typeof exports === 'object') 19492 exports["foundation.abide"] = factory(require("./foundation.core"), require("jquery")); 19493 else 19494 root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.abide"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["jQuery"]); 19495})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE_jquery__) { 19496return /******/ (function(modules) { // webpackBootstrap 19497/******/ // The module cache 19498/******/ var installedModules = {}; 19499/******/ 19500/******/ // The require function 19501/******/ function __webpack_require__(moduleId) { 19502/******/ 19503/******/ // Check if module is in cache 19504/******/ if(installedModules[moduleId]) { 19505/******/ return installedModules[moduleId].exports; 19506/******/ } 19507/******/ // Create a new module (and put it into the cache) 19508/******/ var module = installedModules[moduleId] = { 19509/******/ i: moduleId, 19510/******/ l: false, 19511/******/ exports: {} 19512/******/ }; 19513/******/ 19514/******/ // Execute the module function 19515/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 19516/******/ 19517/******/ // Flag the module as loaded 19518/******/ module.l = true; 19519/******/ 19520/******/ // Return the exports of the module 19521/******/ return module.exports; 19522/******/ } 19523/******/ 19524/******/ 19525/******/ // expose the modules object (__webpack_modules__) 19526/******/ __webpack_require__.m = modules; 19527/******/ 19528/******/ // expose the module cache 19529/******/ __webpack_require__.c = installedModules; 19530/******/ 19531/******/ // define getter function for harmony exports 19532/******/ __webpack_require__.d = function(exports, name, getter) { 19533/******/ if(!__webpack_require__.o(exports, name)) { 19534/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); 19535/******/ } 19536/******/ }; 19537/******/ 19538/******/ // define __esModule on exports 19539/******/ __webpack_require__.r = function(exports) { 19540/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 19541/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 19542/******/ } 19543/******/ Object.defineProperty(exports, '__esModule', { value: true }); 19544/******/ }; 19545/******/ 19546/******/ // create a fake namespace object 19547/******/ // mode & 1: value is a module id, require it 19548/******/ // mode & 2: merge all properties of value into the ns 19549/******/ // mode & 4: return value when already ns object 19550/******/ // mode & 8|1: behave like require 19551/******/ __webpack_require__.t = function(value, mode) { 19552/******/ if(mode & 1) value = __webpack_require__(value); 19553/******/ if(mode & 8) return value; 19554/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; 19555/******/ var ns = Object.create(null); 19556/******/ __webpack_require__.r(ns); 19557/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); 19558/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); 19559/******/ return ns; 19560/******/ }; 19561/******/ 19562/******/ // getDefaultExport function for compatibility with non-harmony modules 19563/******/ __webpack_require__.n = function(module) { 19564/******/ var getter = module && module.__esModule ? 19565/******/ function getDefault() { return module['default']; } : 19566/******/ function getModuleExports() { return module; }; 19567/******/ __webpack_require__.d(getter, 'a', getter); 19568/******/ return getter; 19569/******/ }; 19570/******/ 19571/******/ // Object.prototype.hasOwnProperty.call 19572/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; 19573/******/ 19574/******/ // __webpack_public_path__ 19575/******/ __webpack_require__.p = ""; 19576/******/ 19577/******/ 19578/******/ // Load entry module and return exports 19579/******/ return __webpack_require__(__webpack_require__.s = 0); 19580/******/ }) 19581/************************************************************************/ 19582/******/ ({ 19583 19584/***/ "./foundation.core": 19585/*!****************************************************************************************************************************************************************!*\ 19586 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***! 19587 \****************************************************************************************************************************************************************/ 19588/*! no static exports found */
19589/***/ (function(module, exports) { 19590 19591module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__; 19592 19593/***/ }), 19594
19595/***/ "./js/entries/plugins/foundation.abide.js": 19596/*!************************************************!*\ 19597 !*** ./js/entries/plugins/foundation.abide.js ***! 19598 \************************************************/ 19599/*! exports provided: Foundation, Abide */ 19600/***/ (function(module, __webpack_exports__, __webpack_require__) { 19601 19602"use strict"; 19603__webpack_require__.r(__webpack_exports__); 19604/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core"); 19605/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__); 19606/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; }); 19607 19608/* harmony import */ var _foundation_abide__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.abide */ "./js/foundation.abide.js"); 19609/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Abide", function() { return _foundation_abide__WEBPACK_IMPORTED_MODULE_1__["Abide"]; }); 19610 19611 19612 19613_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].plugin(_foundation_abide__WEBPACK_IMPORTED_MODULE_1__["Abide"], 'Abide'); 19614 19615 19616/***/ }), 19617
vendor: 4,463 bytes, lines 19618-19702
19618/***/ "./js/foundation.abide.js": 19619/*!********************************!*\ 19620 !*** ./js/foundation.abide.js ***! 19621 \********************************/ 19622/*! exports provided: Abide */ 19623/***/ (function(module, __webpack_exports__, __webpack_require__) { 19624 19625"use strict"; 19626__webpack_require__.r(__webpack_exports__); 19627/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Abide", function() { return Abide; }); 19628/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery"); 19629/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__); 19630/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.plugin */ "./foundation.core"); 19631/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__); 19632 19633 19634function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } 19635 19636function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 19637 19638function _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); } } 19639 19640function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } 19641 19642function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } 19643 19644function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } 19645 19646function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } 19647 19648function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } 19649 19650function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } 19651 19652 19653 19654 19655/** 19656 * Abide module. 19657 * @module foundation.abide 19658 */ 19659 19660var Abide = 19661/*#__PURE__*/ 19662function (_Plugin) { 19663 _inherits(Abide, _Plugin); 19664 19665 function Abide() { 19666 _classCallCheck(this, Abide); 19667 19668 return _possibleConstructorReturn(this, _getPrototypeOf(Abide).apply(this, arguments)); 19669 } 19670 19671 _createClass(Abide, [{ 19672 key: "_setup", 19673 19674 /** 19675 * Creates a new instance of Abide. 19676 * @class 19677 * @name Abide 19678 * @fires Abide#init 19679 * @param {Object} element - jQuery object to add the trigger to. 19680 * @param {Object} options - Overrides to the default plugin settings. 19681 */ 19682 value: function _setup(element) { 19683 var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {}; 19684 this.$element = element; 19685 this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend(true, {}, Abide.defaults, this.$element.data(), options); 19686 this.isEnabled = true; 19687 this.formnovalidate = null; 19688 this.className = 'Abide'; // ie9 back compat 19689 19690 this._init(); 19691 } 19692 /** 19693 * Initializes the Abide plugin and calls functions to get Abide functioning on load. 19694 * @private 19695 */ 19696 19697 }, { 19698 key: "_init", 19699 value: function _init() { 19700 var _this2 = this; 19701 19702 this.$inputs = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.merge
vendor: 29,412 bytes, lines 19702-20548
19702( // Consider as input to validate: 19703 this.$element.find('input').not('[type="submit"]'), // * all input fields expect submit 19704 this.$element.find('textarea, select') // * all textareas and select fields 19705 ); 19706 this.$submits = this.$element.find('[type="submit"]'); 19707 var $globalErrors = this.$element.find('[data-abide-error]'); // Add a11y attributes to all fields 19708 19709 if (this.options.a11yAttributes) { 19710 this.$inputs.each(function (i, input) { 19711 return _this2.addA11yAttributes(jquery__WEBPACK_IMPORTED_MODULE_0___default()(input)); 19712 }); 19713 $globalErrors.each(function (i, error) { 19714 return _this2.addGlobalErrorA11yAttributes(jquery__WEBPACK_IMPORTED_MODULE_0___default()(error)); 19715 }); 19716 } 19717 19718 this._events(); 19719 } 19720 /** 19721 * Initializes events for Abide. 19722 * @private 19723 */ 19724 19725 }, { 19726 key: "_events", 19727 value: function _events() { 19728 var _this3 = this; 19729 19730 this.$element.off('.abide').on('reset.zf.abide', function () { 19731 _this3.resetForm(); 19732 }).on('submit.zf.abide', function () { 19733 return _this3.validateForm(); 19734 }); 19735 this.$submits.off('click.zf.abide keydown.zf.abide').on('click.zf.abide keydown.zf.abide', function (e) { 19736 if (!e.key || e.key === ' ' || e.key === 'Enter') { 19737 e.preventDefault(); 19738 _this3.formnovalidate = e.target.getAttribute('formnovalidate') !== null; 19739 19740 _this3.$element.submit(); 19741 } 19742 }); 19743 19744 if (this.options.validateOn === 'fieldChange') { 19745 this.$inputs.off('change.zf.abide').on('change.zf.abide', function (e) { 19746 _this3.validateInput(jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.target)); 19747 }); 19748 } 19749 19750 if (this.options.liveValidate) { 19751 this.$inputs.off('input.zf.abide').on('input.zf.abide', function (e) { 19752 _this3.validateInput(jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.target)); 19753 }); 19754 } 19755 19756 if (this.options.validateOnBlur) { 19757 this.$inputs.off('blur.zf.abide').on('blur.zf.abide', function (e) { 19758 _this3.validateInput(jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.target)); 19759 }); 19760 } 19761 } 19762 /** 19763 * Calls necessary functions to update Abide upon DOM change 19764 * @private 19765 */ 19766 19767 }, { 19768 key: "_reflow", 19769 value: function _reflow() { 19770 this._init(); 19771 } 19772 /** 19773 * Checks whether the submitted form should be validated or not, consodering formnovalidate and isEnabled 19774 * @returns {Boolean} 19775 * @private 19776 */ 19777 19778 }, { 19779 key: "_validationIsDisabled", 19780 value: function _validationIsDisabled() { 19781 if (this.isEnabled === false) { 19782 // whole validation disabled 19783 return true; 19784 } else if (typeof this.formnovalidate === 'boolean') { 19785 // triggered by $submit 19786 return this.formnovalidate; 19787 } // triggered by Enter in non-submit input 19788 19789 19790 return this.$submits.length ? this.$submits[0].getAttribute('formnovalidate') !== null : false; 19791 } 19792 /** 19793 * Enables the whole validation 19794 */ 19795 19796 }, { 19797 key: "enableValidation", 19798 value: function enableValidation() { 19799 this.isEnabled = true; 19800 } 19801 /** 19802 * Disables the whole validation 19803 */ 19804 19805 }, { 19806 key: "disableValidation", 19807 value: function disableValidation() { 19808 this.isEnabled = false; 19809 } 19810 /** 19811 * Checks whether or not a form element has the required attribute and if it's checked or not 19812 * @param {Object} element - jQuery object to check for required attribute 19813 * @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty 19814 */ 19815 19816 }, { 19817 key: "requiredCheck", 19818 value: function requiredCheck($el) { 19819 if (!$el.attr('required')) return true; 19820 var isGood = true; 19821 19822 switch ($el[0].type) { 19823 case 'checkbox': 19824 isGood = $el[0].checked; 19825 break; 19826 19827 case 'select': 19828 case 'select-one': 19829 case 'select-multiple': 19830 var opt = $el.find('option:selected'); 19831 if (!opt.length || !opt.val()) isGood = false; 19832 break; 19833 19834 default: 19835 if (!$el.val() || !$el.val().length) isGood = false; 19836 } 19837 19838 return isGood; 19839 } 19840 /** 19841 * Get: 19842 * - Based on $el, the first element(s) corresponding to `formErrorSelector` in this order: 19843 * 1. The element's direct sibling('s). 19844 * 2. The element's parent's children. 19845 * - Element(s) with the attribute `[data-form-error-for]` set with the element's id. 19846 * 19847 * This allows for multiple form errors per input, though if none are found, no form errors will be shown. 19848 * 19849 * @param {Object} $el - jQuery object to use as reference to find the form error selector. 19850 * @param {String[]} [failedValidators] - List of failed validators. 19851 * @returns {Object} jQuery object with the selector. 19852 */ 19853 19854 }, { 19855 key: "findFormError", 19856 value: function findFormError($el, failedValidators) { 19857 var _this4 = this; 19858 19859 var id = $el.length ? $el[0].id : ''; 19860 var $error = $el.siblings(this.options.formErrorSelector); 19861 19862 if (!$error.length) { 19863 $error = $el.parent().find(this.options.formErrorSelector); 19864 } 19865 19866 if (id) { 19867 $error = $error.add(this.$element.find("[data-form-error-for=\"".concat(id, "\"]"))); 19868 } 19869 19870 if (!!failedValidators) { 19871 $error = $error.not('[data-form-error-on]'); 19872 failedValidators.forEach(function (v) { 19873 $error = $error.add($el.siblings("[data-form-error-on=\"".concat(v, "\"]"))); 19874 $error = $error.add(_this4.$element.find("[data-form-error-for=\"".concat(id, "\"][data-form-error-on=\"").concat(v, "\"]"))); 19875 }); 19876 } 19877 19878 return $error; 19879 } 19880 /** 19881 * Get the first element in this order: 19882 * 2. The <label> with the attribute `[for="someInputId"]` 19883 * 3. The `.closest()` <label> 19884 * 19885 * @param {Object} $el - jQuery object to check for required attribute 19886 * @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty 19887 */ 19888 19889 }, { 19890 key: "findLabel", 19891 value: function findLabel($el) { 19892 var id = $el[0].id; 19893 var $label = this.$element.find("label[for=\"".concat(id, "\"]")); 19894 19895 if (!$label.length) { 19896 return $el.closest('label'); 19897 } 19898 19899 return $label; 19900 } 19901 /** 19902 * Get the set of labels associated with a set of radio els in this order 19903 * 2. The <label> with the attribute `[for="someInputId"]` 19904 * 3. The `.closest()` <label> 19905 * 19906 * @param {Object} $el - jQuery object to check for required attribute 19907 * @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty 19908 */ 19909 19910 }, { 19911 key: "findRadioLabels", 19912 value: function findRadioLabels($els) { 19913 var _this5 = this; 19914 19915 var labels = $els.map(function (i, el) { 19916 var id = el.id; 19917 19918 var $label = _this5.$element.find("label[for=\"".concat(id, "\"]")); 19919 19920 if (!$label.length) { 19921 $label = jquery__WEBPACK_IMPORTED_MODULE_0___default()(el).closest('label'); 19922 } 19923 19924 return $label[0]; 19925 }); 19926 return jquery__WEBPACK_IMPORTED_MODULE_0___default()(labels); 19927 } 19928 /** 19929 * Get the set of labels associated with a set of checkbox els in this order 19930 * 2. The <label> with the attribute `[for="someInputId"]` 19931 * 3. The `.closest()` <label> 19932 * 19933 * @param {Object} $el - jQuery object to check for required attribute 19934 * @returns {Boolean} Boolean value depends on whether or not attribute is checked or empty 19935 */ 19936 19937 }, { 19938 key: "findCheckboxLabels", 19939 value: function findCheckboxLabels($els) { 19940 var _this6 = this; 19941 19942 var labels = $els.map(function (i, el) { 19943 var id = el.id; 19944 19945 var $label = _this6.$element.find("label[for=\"".concat(id, "\"]")); 19946 19947 if (!$label.length) { 19948 $label = jquery__WEBPACK_IMPORTED_MODULE_0___default()(el).closest('label'); 19949 } 19950 19951 return $label[0]; 19952 }); 19953 return jquery__WEBPACK_IMPORTED_MODULE_0___default()(labels); 19954 } 19955 /** 19956 * Adds the CSS error class as specified by the Abide settings to the label, input, and the form 19957 * @param {Object} $el - jQuery object to add the class to 19958 * @param {String[]} [failedValidators] - List of failed validators. 19959 */ 19960 19961 }, { 19962 key: "addErrorClasses", 19963 value: function addErrorClasses($el, failedValidators) { 19964 var $label = this.findLabel($el); 19965 var $formError = this.findFormError($el, failedValidators); 19966 19967 if ($label.length) { 19968 $label.addClass(this.options.labelErrorClass); 19969 } 19970 19971 if ($formError.length) { 19972 $formError.addClass(this.options.formErrorClass); 19973 } 19974 19975 $el.addClass(this.options.inputErrorClass).attr({ 19976 'data-invalid': '', 19977 'aria-invalid': true 19978 }); 19979 } 19980 /** 19981 * Adds [for] and [role=alert] attributes to all form error targetting $el, 19982 * and [aria-describedby] attribute to $el toward the first form error. 19983 * @param {Object} $el - jQuery object 19984 */ 19985 19986 }, { 19987 key: "addA11yAttributes", 19988 value: function addA11yAttributes($el) { 19989 var $errors = this.findFormError($el); 19990 var $labels = $errors.filter('label'); 19991 var $error = $errors.first(); 19992 if (!$errors.length) return; // Set [aria-describedby] on the input toward the first form error if it is not set 19993 19994 if (typeof $el.attr('aria-describedby') === 'undefined') { 19995 // Get the first error ID or create one 19996 var errorId = $error.attr('id'); 19997 19998 if (typeof errorId === 'undefined') { 19999 errorId = Object(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["GetYoDigits"])(6, 'abide-error'); 20000 $error.attr('id', errorId); 20001 } 20002 20003 $el.attr('aria-describedby', errorId); 20004 } 20005 20006 if ($labels.filter('[for]').length < $labels.length) { 20007 // Get the input ID or create one 20008 var elemId = $el.attr('id'); 20009 20010 if (typeof elemId === 'undefined') { 20011 elemId = Object(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["GetYoDigits"])(6, 'abide-input'); 20012 $el.attr('id', elemId); 20013 } // For each label targeting $el, set [for] if it is not set. 20014 20015 20016 $labels.each(function (i, label) { 20017 var $label = jquery__WEBPACK_IMPORTED_MODULE_0___default()(label); 20018 if (typeof $label.attr('for') === 'undefined') $label.attr('for', elemId); 20019 }); 20020 } // For each error targeting $el, set [role=alert] if it is not set. 20021 20022 20023 $errors.each(function (i, label) { 20024 var $label = jquery__WEBPACK_IMPORTED_MODULE_0___default()(label); 20025 if (typeof $label.attr('role') === 'undefined') $label.attr('role', 'alert'); 20026 }).end(); 20027 } 20028 /** 20029 * Adds [aria-live] attribute to the given global form error $el. 20030 * @param {Object} $el - jQuery object to add the attribute to 20031 */ 20032 20033 }, { 20034 key: "addGlobalErrorA11yAttributes", 20035 value: function addGlobalErrorA11yAttributes($el) { 20036 if (typeof $el.attr('aria-live') === 'undefined') $el.attr('aria-live', this.options.a11yErrorLevel); 20037 } 20038 /** 20039 * Remove CSS error classes etc from an entire radio button group 20040 * @param {String} groupName - A string that specifies the name of a radio button group 20041 * 20042 */ 20043 20044 }, { 20045 key: "removeRadioErrorClasses", 20046 value: function removeRadioErrorClasses(groupName) { 20047 var $els = this.$element.find(":radio[name=\"".concat(groupName, "\"]")); 20048 var $labels = this.findRadioLabels($els); 20049 var $formErrors = this.findFormError($els); 20050 20051 if ($labels.length) { 20052 $labels.removeClass(this.options.labelErrorClass); 20053 } 20054 20055 if ($formErrors.length) { 20056 $formErrors.removeClass(this.options.formErrorClass); 20057 } 20058 20059 $els.removeClass(this.options.inputErrorClass).attr({ 20060 'data-invalid': null, 20061 'aria-invalid': null 20062 }); 20063 } 20064 /** 20065 * Remove CSS error classes etc from an entire checkbox group 20066 * @param {String} groupName - A string that specifies the name of a checkbox group 20067 * 20068 */ 20069 20070 }, { 20071 key: "removeCheckboxErrorClasses", 20072 value: function removeCheckboxErrorClasses(groupName) { 20073 var $els = this.$element.find(":checkbox[name=\"".concat(groupName, "\"]")); 20074 var $labels = this.findCheckboxLabels($els); 20075 var $formErrors = this.findFormError($els); 20076 20077 if ($labels.length) { 20078 $labels.removeClass(this.options.labelErrorClass); 20079 } 20080 20081 if ($formErrors.length) { 20082 $formErrors.removeClass(this.options.formErrorClass); 20083 } 20084 20085 $els.removeClass(this.options.inputErrorClass).attr({ 20086 'data-invalid': null, 20087 'aria-invalid': null 20088 }); 20089 } 20090 /** 20091 * Removes CSS error class as specified by the Abide settings from the label, input, and the form 20092 * @param {Object} $el - jQuery object to remove the class from 20093 */ 20094 20095 }, { 20096 key: "removeErrorClasses", 20097 value: function removeErrorClasses($el) { 20098 // radios need to clear all of the els 20099 if ($el[0].type == 'radio') { 20100 return this.removeRadioErrorClasses($el.attr('name')); 20101 } // checkboxes need to clear all of the els 20102 else if ($el[0].type == 'checkbox') { 20103 return this.removeCheckboxErrorClasses($el.attr('name')); 20104 } 20105 20106 var $label = this.findLabel($el); 20107 var $formError = this.findFormError($el); 20108 20109 if ($label.length) { 20110 $label.removeClass(this.options.labelErrorClass); 20111 } 20112 20113 if ($formError.length) { 20114 $formError.removeClass(this.options.formErrorClass); 20115 } 20116 20117 $el.removeClass(this.options.inputErrorClass).attr({ 20118 'data-invalid': null, 20119 'aria-invalid': null 20120 }); 20121 } 20122 /** 20123 * Goes through a form to find inputs and proceeds to validate them in ways specific to their type. 20124 * Ignores inputs with data-abide-ignore, type="hidden" or disabled attributes set 20125 * @fires Abide#invalid 20126 * @fires Abide#valid 20127 * @param {Object} element - jQuery object to validate, should be an HTML input 20128 * @returns {Boolean} goodToGo - If the input is valid or not. 20129 */ 20130 20131 }, { 20132 key: "validateInput", 20133 value: function validateInput($el) { 20134 var _this7 = this; 20135 20136 var clearRequire = this.requiredCheck($el), 20137 validator = $el.attr('data-validator'), 20138 failedValidators = [], 20139 manageErrorClasses = true; // skip validation if disabled 20140 20141 if (this._validationIsDisabled()) { 20142 return true; 20143 } // don't validate ignored inputs or hidden inputs or disabled inputs 20144 20145 20146 if ($el.is('[data-abide-ignore]') || $el.is('[type="hidden"]') || $el.is('[disabled]')) { 20147 return true; 20148 } 20149 20150 switch ($el[0].type) { 20151 case 'radio': 20152 this.validateRadio($el.attr('name')) || failedValidators.push('required'); 20153 break; 20154 20155 case 'checkbox': 20156 this.validateCheckbox($el.attr('name')) || failedValidators.push('required'); // validateCheckbox() adds/removes error classes 20157 20158 manageErrorClasses = false; 20159 break; 20160 20161 case 'select': 20162 case 'select-one': 20163 case 'select-multiple': 20164 clearRequire || failedValidators.push('required'); 20165 break; 20166 20167 default: 20168 clearRequire || failedValidators.push('required'); 20169 this.validateText($el) || failedValidators.push('pattern'); 20170 } 20171 20172 if (validator) { 20173 var required = $el.attr('required') ? true : false; 20174 validator.split(' ').forEach(function (v) { 20175 _this7.options.validators[v]($el, required, $el.parent()) || failedValidators.push(v); 20176 }); 20177 } 20178 20179 if ($el.attr('data-equalto')) { 20180 this.options.validators.equalTo($el) || failedValidators.push('equalTo'); 20181 } 20182 20183 var goodToGo = failedValidators.length === 0; 20184 var message = (goodToGo ? 'valid' : 'invalid') + '.zf.abide'; 20185 20186 if (goodToGo) { 20187 // Re-validate inputs that depend on this one with equalto 20188 var dependentElements = this.$element.find("[data-equalto=\"".concat($el.attr('id'), "\"]")); 20189 20190 if (dependentElements.length) { 20191 var _this = this; 20192 20193 dependentElements.each(function () { 20194 if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).val()) { 20195 _this.validateInput(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this)); 20196 } 20197 }); 20198 } 20199 } 20200 20201 if (manageErrorClasses) { 20202 this.removeErrorClasses($el); 20203 20204 if (!goodToGo) { 20205 this.addErrorClasses($el, failedValidators); 20206 } 20207 } 20208 /** 20209 * Fires when the input is done checking for validation. Event trigger is either `valid.zf.abide` or `invalid.zf.abide` 20210 * Trigger includes the DOM element of the input. 20211 * @event Abide#valid 20212 * @event Abide#invalid 20213 */ 20214 20215 20216 $el.trigger(message, [$el]); 20217 return goodToGo; 20218 } 20219 /** 20220 * Goes through a form and if there are any invalid inputs, it will display the form error element 20221 * @returns {Boolean} noError - true if no errors were detected... 20222 * @fires Abide#formvalid 20223 * @fires Abide#forminvalid 20224 */ 20225 20226 }, { 20227 key: "validateForm", 20228 value: function validateForm() { 20229 var _this8 = this; 20230 20231 var acc = []; 20232 20233 var _this = this; 20234 20235 var checkboxGroupName; // Remember first form submission to prevent specific checkbox validation (more than one required) until form got initially submitted 20236 20237 if (!this.initialized) { 20238 this.initialized = true; 20239 } // skip validation if disabled 20240 20241 20242 if (this._validationIsDisabled()) { 20243 this.formnovalidate = null; 20244 return true; 20245 } 20246 20247 this.$inputs.each(function () { 20248 // Only use one checkbox per group since validateCheckbox() iterates over all associated checkboxes 20249 if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this)[0].type === 'checkbox') { 20250 if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).attr('name') === checkboxGroupName) return true; 20251 checkboxGroupName = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).attr('name'); 20252 } 20253 20254 acc.push(_this.validateInput(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this))); 20255 }); 20256 var noError = acc.indexOf(false) === -1; 20257 this.$element.find('[data-abide-error]').each(function (i, elem) { 20258 var $elem = jquery__WEBPACK_IMPORTED_MODULE_0___default()(elem); // Ensure a11y attributes are set 20259 20260 if (_this8.options.a11yAttributes) _this8.addGlobalErrorA11yAttributes($elem); // Show or hide the error 20261 20262 $elem.css('display', noError ? 'none' : 'block'); 20263 }); 20264 /** 20265 * Fires when the form is finished validating. Event trigger is either `formvalid.zf.abide` or `forminvalid.zf.abide`. 20266 * Trigger includes the element of the form. 20267 * @event Abide#formvalid 20268 * @event Abide#forminvalid 20269 */ 20270 20271 this.$element.trigger((noError ? 'formvalid' : 'forminvalid') + '.zf.abide', [this.$element]); 20272 return noError; 20273 } 20274 /** 20275 * Determines whether or a not a text input is valid based on the pattern specified in the attribute. If no matching pattern is found, returns true. 20276 * @param {Object} $el - jQuery object to validate, should be a text input HTML element 20277 * @param {String} pattern - string value of one of the RegEx patterns in Abide.options.patterns 20278 * @returns {Boolean} Boolean value depends on whether or not the input value matches the pattern specified 20279 */ 20280 20281 }, { 20282 key: "validateText", 20283 value: function validateText($el, pattern) { 20284 // A pattern can be passed to this function, or it will be infered from the input's "pattern" attribute, or it's "type" attribute 20285 pattern = pattern || $el.attr('data-pattern') || $el.attr('pattern') || $el.attr('type'); 20286 var inputText = $el.val(); 20287 var valid = true; 20288 20289 if (inputText.length) { 20290 // If the pattern attribute on the element is in Abide's list of patterns, then test that regexp 20291 if (this.options.patterns.hasOwnProperty(pattern)) { 20292 valid = this.options.patterns[pattern].test(inputText); 20293 } // If the pattern name isn't also the type attribute of the field, then test it as a regexp 20294 else if (pattern !== $el.attr('type')) { 20295 valid = new RegExp(pattern).test(inputText); 20296 } 20297 } 20298 20299 return valid; 20300 } 20301 /** 20302 * Determines whether or a not a radio input is valid based on whether or not it is required and selected. Although the function targets a single `<input>`, it validates by checking the `required` and `checked` properties of all radio buttons in its group. 20303 * @param {String} groupName - A string that specifies the name of a radio button group 20304 * @returns {Boolean} Boolean value depends on whether or not at least one radio input has been selected (if it's required) 20305 */ 20306 20307 }, { 20308 key: "validateRadio", 20309 value: function validateRadio(groupName) { 20310 // If at least one radio in the group has the `required` attribute, the group is considered required 20311 // Per W3C spec, all radio buttons in a group should have `required`, but we're being nice 20312 var $group = this.$element.find(":radio[name=\"".concat(groupName, "\"]")); 20313 var valid = false, 20314 required = false; // For the group to be required, at least one radio needs to be required 20315 20316 $group.each(function (i, e) { 20317 if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(e).attr('required')) { 20318 required = true; 20319 } 20320 }); 20321 if (!required) valid = true; 20322 20323 if (!valid) { 20324 // For the group to be valid, at least one radio needs to be checked 20325 $group.each(function (i, e) { 20326 if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(e).prop('checked')) { 20327 valid = true; 20328 } 20329 }); 20330 } 20331 20332 return valid; 20333 } 20334 /** 20335 * Determines whether or a not a checkbox input is valid based on whether or not it is required and checked. Although the function targets a single `<input>`, it validates by checking the `required` and `checked` properties of all checkboxes in its group. 20336 * @param {String} groupName - A string that specifies the name of a checkbox group 20337 * @returns {Boolean} Boolean value depends on whether or not at least one checkbox input has been checked (if it's required) 20338 */ 20339 20340 }, { 20341 key: "validateCheckbox", 20342 value: function validateCheckbox(groupName) { 20343 var _this9 = this; 20344 20345 // If at least one checkbox in the group has the `required` attribute, the group is considered required 20346 // Per W3C spec, all checkboxes in a group should have `required`, but we're being nice 20347 var $group = this.$element.find(":checkbox[name=\"".concat(groupName, "\"]")); 20348 var valid = false, 20349 required = false, 20350 minRequired = 1, 20351 checked = 0; // For the group to be required, at least one checkbox needs to be required 20352 20353 $group.each(function (i, e) { 20354 if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(e).attr('required')) { 20355 required = true; 20356 } 20357 }); 20358 if (!required) valid = true; 20359 20360 if (!valid) { 20361 // Count checked checkboxes within the group 20362 // Use data-min-required if available (default: 1) 20363 $group.each(function (i, e) { 20364 if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(e).prop('checked')) { 20365 checked++; 20366 } 20367 20368 if (typeof jquery__WEBPACK_IMPORTED_MODULE_0___default()(e).attr('data-min-required') !== 'undefined') { 20369 minRequired = parseInt(jquery__WEBPACK_IMPORTED_MODULE_0___default()(e).attr('data-min-required')); 20370 } 20371 }); // For the group to be valid, the minRequired amount of checkboxes have to be checked 20372 20373 if (checked >= minRequired) { 20374 valid = true; 20375 } 20376 } // Skip validation if more than 1 checkbox have to be checked AND if the form hasn't got submitted yet (otherwise it will already show an error during the first fill in) 20377 20378 20379 if (this.initialized !== true && minRequired > 1) { 20380 return true; 20381 } // Refresh error class for all input 20382 20383 20384 $group.each(function (i, e) { 20385 if (!valid) { 20386 _this9.addErrorClasses(jquery__WEBPACK_IMPORTED_MODULE_0___default()(e), ['required']); 20387 } else { 20388 _this9.removeErrorClasses(jquery__WEBPACK_IMPORTED_MODULE_0___default()(e)); 20389 } 20390 }); 20391 return valid; 20392 } 20393 /** 20394 * Determines if a selected input passes a custom validation function. Multiple validations can be used, if passed to the element with `data-validator="foo bar baz"` in a space separated listed. 20395 * @param {Object} $el - jQuery input element. 20396 * @param {String} validators - a string of function names matching functions in the Abide.options.validators object. 20397 * @param {Boolean} required - self explanatory? 20398 * @returns {Boolean} - true if validations passed. 20399 */ 20400 20401 }, { 20402 key: "matchValidation", 20403 value: function matchValidation($el, validators, required) { 20404 var _this10 = this; 20405 20406 required = required ? true : false; 20407 var clear = validators.split(' ').map(function (v) { 20408 return _this10.options.validators[v]($el, required, $el.parent()); 20409 }); 20410 return clear.indexOf(false) === -1; 20411 } 20412 /** 20413 * Resets form inputs and styles 20414 * @fires Abide#formreset 20415 */ 20416 20417 }, { 20418 key: "resetForm", 20419 value: function resetForm() { 20420 var $form = this.$element, 20421 opts = this.options; 20422 jquery__WEBPACK_IMPORTED_MODULE_0___default()(".".concat(opts.labelErrorClass), $form).not('small').removeClass(opts.labelErrorClass); 20423 jquery__WEBPACK_IMPORTED_MODULE_0___default()(".".concat(opts.inputErrorClass), $form).not('small').removeClass(opts.inputErrorClass); 20424 jquery__WEBPACK_IMPORTED_MODULE_0___default()("".concat(opts.formErrorSelector, ".").concat(opts.formErrorClass)).removeClass(opts.formErrorClass); 20425 $form.find('[data-abide-error]').css('display', 'none'); 20426 jquery__WEBPACK_IMPORTED_MODULE_0___default()(':input', $form).not(':button, :submit, :reset, :hidden, :radio, :checkbox, [data-abide-ignore]').val('').attr({ 20427 'data-invalid': null, 20428 'aria-invalid': null 20429 }); 20430 jquery__WEBPACK_IMPORTED_MODULE_0___default()(':input:radio', $form).not('[data-abide-ignore]').prop('checked', false).attr({ 20431 'data-invalid': null, 20432 'aria-invalid': null 20433 }); 20434 jquery__WEBPACK_IMPORTED_MODULE_0___default()(':input:checkbox', $form).not('[data-abide-ignore]').prop('checked', false).attr({ 20435 'data-invalid': null, 20436 'aria-invalid': null 20437 }); 20438 /** 20439 * Fires when the form has been reset. 20440 * @event Abide#formreset 20441 */ 20442 20443 $form.trigger('formreset.zf.abide', [$form]); 20444 } 20445 /** 20446 * Destroys an instance of Abide. 20447 * Removes error styles and classes from elements, without resetting their values. 20448 */ 20449 20450 }, { 20451 key: "_destroy", 20452 value: function _destroy() { 20453 var _this = this; 20454 20455 this.$element.off('.abide').find('[data-abide-error]').css('display', 'none'); 20456 this.$inputs.off('.abide').each(function () { 20457 _this.removeErrorClasses(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this)); 20458 }); 20459 this.$submits.off('.abide'); 20460 } 20461 }]); 20462 20463 return Abide; 20464}(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["Plugin"]); 20465/** 20466 * Default settings for plugin 20467 */ 20468 20469 20470Abide.defaults = { 20471 /** 20472 * The default event to validate inputs. Checkboxes and radios validate immediately. 20473 * Remove or change this value for manual validation. 20474 * @option 20475 * @type {?string} 20476 * @default 'fieldChange' 20477 */ 20478 validateOn: 'fieldChange', 20479 20480 /** 20481 * Class to be applied to input labels on failed validation. 20482 * @option 20483 * @type {string} 20484 * @default 'is-invalid-label' 20485 */ 20486 labelErrorClass: 'is-invalid-label', 20487 20488 /** 20489 * Class to be applied to inputs on failed validation. 20490 * @option 20491 * @type {string} 20492 * @default 'is-invalid-input' 20493 */ 20494 inputErrorClass: 'is-invalid-input', 20495 20496 /** 20497 * Class selector to use to target Form Errors for show/hide. 20498 * @option 20499 * @type {string} 20500 * @default '.form-error' 20501 */ 20502 formErrorSelector: '.form-error', 20503 20504 /** 20505 * Class added to Form Errors on failed validation. 20506 * @option 20507 * @type {string} 20508 * @default 'is-visible' 20509 */ 20510 formErrorClass: 'is-visible', 20511 20512 /** 20513 * If true, automatically insert when possible: 20514 * - `[aria-describedby]` on fields 20515 * - `[role=alert]` on form errors and `[for]` on form error labels 20516 * - `[aria-live]` on global errors `[data-abide-error]` (see option `a11yErrorLevel`). 20517 * @option 20518 * @type {boolean} 20519 * @default true 20520 */ 20521 a11yAttributes: true, 20522 20523 /** 20524 * [aria-live] attribute value to be applied on global errors `[data-abide-error]`. 20525 * Options are: 'assertive', 'polite' and 'off'/null 20526 * @option 20527 * @see https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/ARIA_Live_Regions 20528 * @type {string} 20529 * @default 'assertive' 20530 */ 20531 a11yErrorLevel: 'assertive', 20532 20533 /** 20534 * Set to true to validate text inputs on any value change. 20535 * @option 20536 * @type {boolean} 20537 * @default false 20538 */ 20539 liveValidate: false, 20540 20541 /** 20542 * Set to true to validate inputs on blur. 20543 * @option 20544 * @type {boolean} 20545 * @default false 20546 */ 20547 validateOnBlur: false, 20548 patterns: {
20549 alpha: /^[a-zA-Z]+$/, 20550 alpha_numeric: /^[a-zA-Z0-9]+$/, 20551 integer: /^[-+]?\d+$/, 20552 number: /^[-+]?\d*(?:[\.\,]\d+)?$/, 20553 // amex, visa, diners 20554 card: /^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|(?:222[1-9]|2[3-6][0-9]{2}|27[0-1][0-9]|2720)[0-9]{12}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/, 20555 cvv: /^([0-9]){3,4}$/, 20556 // http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#valid-e-mail-address 20557 email: /^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/, 20558 // From CommonRegexJS (@talyssonoc) 20559 // https://github.com/talyssonoc/CommonRegexJS/blob/e2901b9f57222bc14069dc8f0598d5f412555411/lib/commonregex.js#L76 20560 // For more restrictive URL Regexs, see https://mathiasbynens.be/demo/url-regex. 20561 url: /^((?:(https?|ftps?|file|ssh|sftp):\/\/|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\((?:[^\s()<>]+|(?:\([^\s()<>]+\)))*\))+(?:\((?:[^\s()<>]+|(?:\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:\'".,<>?\xab\xbb\u201c\u201d\u2018\u2019]))$/, 20562 // abc.de 20563 domain: /^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,8}$/, 20564 datetime: /^([0-2][0-9]{3})\-([0-1][0-9])\-([0-3][0-9])T([0-5][0-9])\:([0-5][0-9])\:([0-5][0-9])(Z|([\-\+]([0-1][0-9])\:00))$/, 20565 // YYYY-MM-DD 20566 date: /(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))$/, 20567 // HH:MM:SS 20568 time: /^(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]){2}$/, 20569 dateISO: /^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/, 20570 // MM/DD/YYYY 20571 month_day_year: /^(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.]\d{4}$/, 20572 // DD/MM/YYYY 20573 day_month_year: /^(0[1-9]|[12][0-9]|3[01])[- \/.](0[1-9]|1[012])[- \/.]\d{4}$/, 20574 // #FFF or #FFFFFF 20575 color: /^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/, 20576 // Domain || URL 20577 website: { 20578 test: function test(text) { 20579 return Abide.defaults.patterns['domain'].test(text) || Abide.defaults.patterns['url'].test(text); 20580 } 20581 } 20582 }, 20583 20584 /** 20585 * Optional validation functions to be used. `equalTo` being the only default included function. 20586 * Functions should return only a boolean if the input is valid or not. Functions are given the following arguments: 20587 * el : The jQuery element to validate. 20588 * required : Boolean value of the required attribute be present or not. 20589 * parent : The direct parent of the input. 20590 * @option 20591 */ 20592 validators: { 20593 equalTo: function equalTo(el, required, parent) { 20594 return jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(el.attr('data-equalto'))).val() === el.val(); 20595 } 20596 } 20597}; 20598 20599 20600/***/ }), 20601 20602/***/ 0: 20603/*!******************************************************!*\ 20604 !*** multi ./js/entries/plugins/foundation.abide.js ***! 20605 \******************************************************/ 20606/*! no static exports found */ 20607/***/ (function(module, exports, __webpack_require__) { 20608 20609module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.abide.js */"./js/entries/plugins/foundation.abide.js"); 20610 20611 20612/***/ }), 20613 20614/***/ "jquery": 20615/*!********************************************************************************************!*\ 20616 !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***! 20617 \********************************************************************************************/ 20618/*! no static exports found */ 20619/***/ (function(module, exports) { 20620 20621module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__; 20622 20623/***/ }) 20624 20625/******/ }); 20626}); 20627//# sourceMappingURL=foundation.abide.js.map 20628(function webpackUniversalModuleDefinition(root, factory) { 20629 if(typeof exports === 'object' && typeof module === 'object') 20630 module.exports = factory(require("./foundation.core"), require("./foundation.util.keyboard"), require("jquery")); 20631 else if(typeof define === 'function' && define.amd) 20632 define(["./foundation.core", "./foundation.util.keyboard", "jquery"], factory); 20633 else if(typeof exports === 'object') 20634 exports["foundation.accordion"] = factory(require("./foundation.core"), require("./foundation.util.keyboard"), require("jquery")); 20635 else 20636 root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.accordion"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.keyboard"], root["jQuery"]); 20637})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE__foundation_util_keyboard__, __WEBPACK_EXTERNAL_MODULE_jquery__) { 20638return /******/ (function(modules) { // webpackBootstrap 20639/******/ // The module cache 20640/******/ var installedModules = {}; 20641/******/ 20642/******/ // The require function 20643/******/ function __webpack_require__(moduleId) { 20644/******/ 20645/******/ // Check if module is in cache 20646/******/ if(installedModules[moduleId]) { 20647/******/ return installedModules[moduleId].exports; 20648/******/ } 20649/******/ // Create a new module (and put it into the cache) 20650/******/ var module = installedModules[moduleId] = { 20651/******/ i: moduleId, 20652/******/ l: false, 20653/******/ exports: {} 20654/******/ }; 20655/******/ 20656/******/ // Execute the module function 20657/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 20658/******/ 20659/******/ // Flag the module as loaded
vendor: 4,160 bytes, lines 20660-20741
20660/******/ module.l = true; 20661/******/ 20662/******/ // Return the exports of the module 20663/******/ return module.exports; 20664/******/ } 20665/******/ 20666/******/ 20667/******/ // expose the modules object (__webpack_modules__) 20668/******/ __webpack_require__.m = modules; 20669/******/ 20670/******/ // expose the module cache 20671/******/ __webpack_require__.c = installedModules; 20672/******/ 20673/******/ // define getter function for harmony exports 20674/******/ __webpack_require__.d = function(exports, name, getter) { 20675/******/ if(!__webpack_require__.o(exports, name)) { 20676/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); 20677/******/ } 20678/******/ }; 20679/******/ 20680/******/ // define __esModule on exports 20681/******/ __webpack_require__.r = function(exports) { 20682/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 20683/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 20684/******/ } 20685/******/ Object.defineProperty(exports, '__esModule', { value: true }); 20686/******/ }; 20687/******/ 20688/******/ // create a fake namespace object 20689/******/ // mode & 1: value is a module id, require it 20690/******/ // mode & 2: merge all properties of value into the ns 20691/******/ // mode & 4: return value when already ns object 20692/******/ // mode & 8|1: behave like require 20693/******/ __webpack_require__.t = function(value, mode) { 20694/******/ if(mode & 1) value = __webpack_require__(value); 20695/******/ if(mode & 8) return value; 20696/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; 20697/******/ var ns = Object.create(null); 20698/******/ __webpack_require__.r(ns); 20699/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); 20700/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); 20701/******/ return ns; 20702/******/ }; 20703/******/ 20704/******/ // getDefaultExport function for compatibility with non-harmony modules 20705/******/ __webpack_require__.n = function(module) { 20706/******/ var getter = module && module.__esModule ? 20707/******/ function getDefault() { return module['default']; } : 20708/******/ function getModuleExports() { return module; }; 20709/******/ __webpack_require__.d(getter, 'a', getter); 20710/******/ return getter; 20711/******/ }; 20712/******/ 20713/******/ // Object.prototype.hasOwnProperty.call 20714/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; 20715/******/ 20716/******/ // __webpack_public_path__ 20717/******/ __webpack_require__.p = ""; 20718/******/ 20719/******/ 20720/******/ // Load entry module and return exports 20721/******/ return __webpack_require__(__webpack_require__.s = 1); 20722/******/ }) 20723/************************************************************************/ 20724/******/ ({ 20725 20726/***/ "./foundation.core": 20727/*!****************************************************************************************************************************************************************!*\ 20728 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***! 20729 \****************************************************************************************************************************************************************/ 20730/*! no static exports found */ 20731/***/ (function(module, exports) { 20732 20733module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__; 20734 20735/***/ }), 20736 20737/***/ "./foundation.util.keyboard": 20738/*!****************************************************************************************************************************************************************************************************!*\ 20739 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.keyboard"],"amd":"./foundation.util.keyboard","commonjs":"./foundation.util.keyboard","commonjs2":"./foundation.util.keyboard"} ***! 20740 \****************************************************************************************************************************************************************************************************/ 20741/*! no static exports found */
20742/***/ (function(module, exports) { 20743 20744module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_keyboard__; 20745 20746/***/ }), 20747
20748/***/ "./js/entries/plugins/foundation.accordion.js": 20749/*!****************************************************!*\ 20750 !*** ./js/entries/plugins/foundation.accordion.js ***! 20751 \****************************************************/ 20752/*! exports provided: Foundation, Accordion */ 20753/***/ (function(module, __webpack_exports__, __webpack_require__) { 20754 20755"use strict"; 20756__webpack_require__.r(__webpack_exports__); 20757/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core"); 20758/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__); 20759/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; }); 20760 20761/* harmony import */ var _foundation_accordion__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.accordion */ "./js/foundation.accordion.js"); 20762/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Accordion", function() { return _foundation_accordion__WEBPACK_IMPORTED_MODULE_1__["Accordion"]; }); 20763 20764 20765 20766_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].plugin(_foundation_accordion__WEBPACK_IMPORTED_MODULE_1__["Accordion"], 'Accordion'); 20767 20768 20769/***/ }), 20770
20771/***/ "./js/foundation.accordion.js": 20772/*!************************************!*\ 20773 !*** ./js/foundation.accordion.js ***! 20774 \************************************/ 20775/*! exports provided: Accordion */ 20776/***/ (function(module, __webpack_exports__, __webpack_require__) { 20777 20778"use strict"; 20779__webpack_require__.r(__webpack_exports__); 20780/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Accordion", function() { return Accordion; }); 20781/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery"); 20782/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__); 20783/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.plugin */ "./foundation.core"); 20784/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__); 20785/* harmony import */ var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.util.keyboard */ "./foundation.util.keyboard"); 20786/* harmony import */ var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__); 20787 20788 20789function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } 20790 20791function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 20792 20793function _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); } } 20794 20795function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } 20796 20797function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } 20798 20799function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } 20800 20801function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } 20802 20803function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } 20804 20805function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } 20806 20807 20808 20809 20810 20811/** 20812 * Accordion module. 20813 * @module foundation.accordion 20814 * @requires foundation.util.keyboard 20815 */ 20816 20817var Accordion = 20818/*#__PURE__*/ 20819function (_Plugin) { 20820 _inherits(Accordion, _Plugin); 20821 20822 function Accordion() { 20823 _classCallCheck(this, Accordion); 20824 20825 return _possibleConstructorReturn(this, _getPrototypeOf(Accordion).apply(this, arguments)); 20826 } 20827 20828 _createClass(Accordion, [{ 20829 key: "_setup", 20830 20831 /** 20832 * Creates a new instance of an accordion. 20833 * @class 20834 * @name Accordion 20835 * @fires Accordion#init 20836 * @param {jQuery} element - jQuery object to make into an accordion. 20837 * @param {Object} options - a plain object with settings to override the default options. 20838 */ 20839 value: function _setup(element, options) { 20840 this.$element = element; 20841 this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, Accordion.defaults, this.$element.data(), options); 20842 this.className = 'Accordion'; // ie9 back compat 20843 20844 this._init(); 20845 20846 _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__["Keyboard"].register('Accordion', { 20847 'ENTER': 'toggle', 20848 'SPACE': 'toggle', 20849 'ARROW_DOWN': 'next', 20850 'ARROW_UP': 'previous' 20851 }); 20852 } 20853 /** 20854 * Initializes the accordion by animating the preset active pane(s). 20855 * @private 20856 */ 20857 20858 }, { 20859 key: "_init", 20860 value: function _init() { 20861 var _this2 = this; 20862 20863 this._isInitializing = true; 20864 this.$element.attr('role', 'tablist'); 20865 this.$tabs = this.$element.children('[data-accordion-item]'); 20866 this.$tabs.attr({ 20867 'role': 'presentation' 20868 }); 20869 this.$tabs.each(function (idx, el) { 20870 var $el = jquery__WEBPACK_IMPORTED_MODULE_0___default()(el), 20871 $content = $el.children('[data-tab-content]'), 20872 id = $content[0].id || Object(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["GetYoDigits"])(6, 'accordion'), 20873 linkId = el.id ? "".concat(el.id, "-label") : "".concat(id, "-label"); 20874 $el.find('a:first').attr({ 20875 'aria-controls': id, 20876 'role': 'tab', 20877 'id': linkId, 20878 'aria-expanded': false, 20879 'aria-selected': false 20880 }); 20881 $content.attr({ 20882 'role': 'tabpanel', 20883 'aria-labelledby': linkId, 20884 'aria-hidden': true, 20885 'id': id 20886 }); 20887 }); 20888 var $initActive = this.$element.find('.is-active').children('[data-tab-content]'); 20889 20890 if ($initActive.length) { 20891 // Save up the initial hash to return to it later when going back in history 20892 this._initialAnchor = $initActive.prev('a').attr('href'); 20893 20894 this._openSingleTab($initActive); 20895 } 20896 20897 this._checkDeepLink = function () { 20898 var anchor = window.location.hash; 20899 20900 if (!anchor.length) { 20901 // If we are still initializing and there is no anchor, then there is nothing to do 20902 if (_this2._isInitializing) return; // Otherwise, move to the initial anchor 20903 20904 if (_this2._initialAnchor) anchor = _this2._initialAnchor; 20905 } 20906 20907 var $anchor = anchor && jquery__WEBPACK_IMPORTED_MODULE_0___default()(anchor); 20908 20909 var $link = anchor && _this2.$element.find("[href$=\"".concat(anchor, "\"]"));
vendor: 4,548 bytes, lines 20909-21053
20909 // Whether the anchor element that has been found is part of this element 20910 20911 20912 var isOwnAnchor = !!($anchor.length && $link.length); 20913 20914 if (isOwnAnchor) { 20915 // If there is an anchor for the hash, open it (if not already active) 20916 if ($anchor && $link && $link.length) { 20917 if (!$link.parent('[data-accordion-item]').hasClass('is-active')) { 20918 _this2._openSingleTab($anchor); 20919 } 20920 } // Otherwise, close everything 20921 else { 20922 _this2._closeAllTabs(); 20923 } // Roll up a little to show the titles 20924 20925 20926 if (_this2.options.deepLinkSmudge) { 20927 Object(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["onLoad"])(jquery__WEBPACK_IMPORTED_MODULE_0___default()(window), function () { 20928 var offset = _this2.$element.offset(); 20929 20930 jquery__WEBPACK_IMPORTED_MODULE_0___default()('html, body').animate({ 20931 scrollTop: offset.top - _this2.options.deepLinkSmudgeOffset 20932 }, _this2.options.deepLinkSmudgeDelay); 20933 }); 20934 } 20935 /** 20936 * Fires when the plugin has deeplinked at pageload 20937 * @event Accordion#deeplink 20938 */ 20939 20940 20941 _this2.$element.trigger('deeplink.zf.accordion', [$link, $anchor]); 20942 } 20943 }; //use browser to open a tab, if it exists in this tabset 20944 20945 20946 if (this.options.deepLink) { 20947 this._checkDeepLink(); 20948 } 20949 20950 this._events(); 20951 20952 this._isInitializing = false; 20953 } 20954 /** 20955 * Adds event handlers for items within the accordion. 20956 * @private 20957 */ 20958 20959 }, { 20960 key: "_events", 20961 value: function _events() { 20962 var _this = this; 20963 20964 this.$tabs.each(function () { 20965 var $elem = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this); 20966 var $tabContent = $elem.children('[data-tab-content]'); 20967 20968 if ($tabContent.length) { 20969 $elem.children('a').off('click.zf.accordion keydown.zf.accordion').on('click.zf.accordion', function (e) { 20970 e.preventDefault(); 20971 20972 _this.toggle($tabContent); 20973 }).on('keydown.zf.accordion', function (e) { 20974 _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__["Keyboard"].handleKey(e, 'Accordion', { 20975 toggle: function toggle() { 20976 _this.toggle($tabContent); 20977 }, 20978 next: function next() { 20979 var $a = $elem.next().find('a').focus(); 20980 20981 if (!_this.options.multiExpand) { 20982 $a.trigger('click.zf.accordion'); 20983 } 20984 }, 20985 previous: function previous() { 20986 var $a = $elem.prev().find('a').focus(); 20987 20988 if (!_this.options.multiExpand) { 20989 $a.trigger('click.zf.accordion'); 20990 } 20991 }, 20992 handled: function handled() { 20993 e.preventDefault(); 20994 } 20995 }); 20996 }); 20997 } 20998 }); 20999 21000 if (this.options.deepLink) { 21001 jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('hashchange', this._checkDeepLink); 21002 } 21003 } 21004 /** 21005 * Toggles the selected content pane's open/close state. 21006 * @param {jQuery} $target - jQuery object of the pane to toggle (`.accordion-content`). 21007 * @function 21008 */ 21009 21010 }, { 21011 key: "toggle", 21012 value: function toggle($target) { 21013 if ($target.closest('[data-accordion]').is('[disabled]')) { 21014 console.info('Cannot toggle an accordion that is disabled.'); 21015 return; 21016 } 21017 21018 if ($target.parent().hasClass('is-active')) { 21019 this.up($target); 21020 } else { 21021 this.down($target); 21022 } //either replace or update browser history 21023 21024 21025 if (this.options.deepLink) { 21026 var anchor = $target.prev('a').attr('href'); 21027 21028 if (this.options.updateHistory) { 21029 history.pushState({}, '', anchor); 21030 } else { 21031 history.replaceState({}, '', anchor); 21032 } 21033 } 21034 } 21035 /** 21036 * Opens the accordion tab defined by `$target`. 21037 * @param {jQuery} $target - Accordion pane to open (`.accordion-content`). 21038 * @fires Accordion#down 21039 * @function 21040 */ 21041 21042 }, { 21043 key: "down", 21044 value: function down($target) { 21045 if ($target.closest('[data-accordion]').is('[disabled]')) { 21046 console.info('Cannot call down on an accordion that is disabled.'); 21047 return; 21048 } 21049 21050 if (this.options.multiExpand) this._openTab($target);else this._openSingleTab($target); 21051 } 21052 /** 21053 * Closes the tab defined by `$target`.
21054 * It may be ignored if the Accordion options don't allow it. 21055 * 21056 * @param {jQuery} $target - Accordion tab to close (`.accordion-content`). 21057 * @fires Accordion#up 21058 * @function 21059 */ 21060 21061 }, { 21062 key: "up", 21063 value: function up($target) { 21064 if (this.$element.is('[disabled]')) { 21065 console.info('Cannot call up on an accordion that is disabled.'); 21066 return; 21067 } // Don't close the item if it is already closed 21068 21069 21070 var $targetItem = $target.parent(); 21071 if (!$targetItem.hasClass('is-active')) return; // Don't close the item if there is no other active item (unless with `allowAllClosed`) 21072 21073 var $othersItems = $targetItem.siblings(); 21074 if (!this.options.allowAllClosed && !$othersItems.hasClass('is-active')) return; 21075 21076 this._closeTab($target); 21077 } 21078 /** 21079 * Make the tab defined by `$target` the only opened tab, closing all others tabs. 21080 * @param {jQuery} $target - Accordion tab to open (`.accordion-content`). 21081 * @function 21082 * @private 21083 */ 21084 21085 }, { 21086 key: "_openSingleTab", 21087 value: function _openSingleTab($target) { 21088 // Close all the others active tabs. 21089 var $activeContents = this.$element.children('.is-active').children('[data-tab-content]'); 21090 21091 if ($activeContents.length) { 21092 this._closeTab($activeContents.not($target)); 21093 } // Then open the target. 21094 21095 21096 this._openTab($target); 21097 } 21098 /** 21099 * Opens the tab defined by `$target`. 21100 * @param {jQuery} $target - Accordion tab to open (`.accordion-content`). 21101 * @fires Accordion#down 21102 * @function 21103 * @private 21104 */ 21105 21106 }, { 21107 key: "_openTab", 21108 value: function _openTab($target) { 21109 var _this3 = this; 21110 21111 var $targetItem = $target.parent(); 21112 var targetContentId = $target.attr('aria-labelledby'); 21113 $target.attr('aria-hidden', false); 21114 $targetItem.addClass('is-active'); 21115 jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(targetContentId)).attr({ 21116 'aria-expanded': true, 21117 'aria-selected': true 21118 }); 21119 $target.finish().slideDown(this.options.slideSpeed, function () { 21120 /** 21121 * Fires when the tab is done opening. 21122 * @event Accordion#down 21123 */ 21124 _this3.$element.trigger('down.zf.accordion', [$target]); 21125 }); 21126 } 21127 /** 21128 * Closes the tab defined by `$target`. 21129 * @param {jQuery} $target - Accordion tab to close (`.accordion-content`). 21130 * @fires Accordion#up 21131 * @function 21132 * @private 21133 */ 21134 21135 }, { 21136 key: "_closeTab", 21137 value: function _closeTab($target) { 21138 var _this4 = this; 21139 21140 var $targetItem = $target.parent(); 21141 var targetContentId = $target.attr('aria-labelledby'); 21142 $target.attr('aria-hidden', true); 21143 $targetItem.removeClass('is-active'); 21144 jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(targetContentId)).attr({ 21145 'aria-expanded': false, 21146 'aria-selected': false 21147 }); 21148 $target.finish().slideUp(this.options.slideSpeed, function () { 21149 /** 21150 * Fires when the tab is done collapsing up. 21151 * @event Accordion#up 21152 */ 21153 _this4.$element.trigger('up.zf.accordion', [$target]); 21154 }); 21155 } 21156 /** 21157 * Closes all active tabs 21158 * @fires Accordion#up 21159 * @function 21160 * @private 21161 */ 21162 21163 }, { 21164 key: "_closeAllTabs", 21165 value: function _closeAllTabs() { 21166 var $activeTabs = this.$element.children('.is-active').children('[data-tab-content]'); 21167 21168 if ($activeTabs.length) { 21169 this._closeTab($activeTabs); 21170 } 21171 } 21172 /** 21173 * Destroys an instance of an accordion. 21174 * @fires Accordion#destroyed 21175 * @function 21176 */ 21177 21178 }, { 21179 key: "_destroy", 21180 value: function _destroy() { 21181 this.$element.find('[data-tab-content]').stop(true).slideUp(0).css('display', ''); 21182 this.$element.find('a').off('.zf.accordion'); 21183 21184 if (this.options.deepLink) { 21185 jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off('hashchange', this._checkDeepLink); 21186 } 21187 } 21188 }]); 21189 21190 return Accordion; 21191}(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["Plugin"]); 21192 21193Accordion.defaults = { 21194 /** 21195 * Amount of time to animate the opening of an accordion pane. 21196 * @option 21197 * @type {number} 21198 * @default 250 21199 */ 21200 slideSpeed: 250, 21201 21202 /** 21203 * Allow the accordion to have multiple open panes. 21204 * @option 21205 * @type {boolean} 21206 * @default false 21207 */ 21208 multiExpand: false, 21209 21210 /** 21211 * Allow the accordion to close all panes. 21212 * @option 21213 * @type {boolean} 21214 * @default false 21215 */
vendor: 5,556 bytes, lines 21216-21357
21216 allowAllClosed: false, 21217 21218 /** 21219 * Link the location hash to the open pane. 21220 * Set the location hash when the opened pane changes, and open and scroll to the corresponding pane when the location changes. 21221 * @option 21222 * @type {boolean} 21223 * @default false 21224 */ 21225 deepLink: false, 21226 21227 /** 21228 * If `deepLink` is enabled, adjust the deep link scroll to make sure the top of the accordion panel is visible 21229 * @option 21230 * @type {boolean} 21231 * @default false 21232 */ 21233 deepLinkSmudge: false, 21234 21235 /** 21236 * If `deepLinkSmudge` is enabled, animation time (ms) for the deep link adjustment 21237 * @option 21238 * @type {number} 21239 * @default 300 21240 */ 21241 deepLinkSmudgeDelay: 300, 21242 21243 /** 21244 * If `deepLinkSmudge` is enabled, the offset for scrollToTtop to prevent overlap by a sticky element at the top of the page 21245 * @option 21246 * @type {number} 21247 * @default 0 21248 */ 21249 deepLinkSmudgeOffset: 0, 21250 21251 /** 21252 * If `deepLink` is enabled, update the browser history with the open accordion 21253 * @option 21254 * @type {boolean} 21255 * @default false 21256 */ 21257 updateHistory: false 21258}; 21259 21260 21261/***/ }), 21262 21263/***/ 1: 21264/*!**********************************************************!*\ 21265 !*** multi ./js/entries/plugins/foundation.accordion.js ***! 21266 \**********************************************************/ 21267/*! no static exports found */ 21268/***/ (function(module, exports, __webpack_require__) { 21269 21270module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.accordion.js */"./js/entries/plugins/foundation.accordion.js"); 21271 21272 21273/***/ }), 21274 21275/***/ "jquery": 21276/*!********************************************************************************************!*\ 21277 !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***! 21278 \********************************************************************************************/ 21279/*! no static exports found */ 21280/***/ (function(module, exports) { 21281 21282module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__; 21283 21284/***/ }) 21285 21286/******/ }); 21287}); 21288//# sourceMappingURL=foundation.accordion.js.map 21289(function webpackUniversalModuleDefinition(root, factory) { 21290 if(typeof exports === 'object' && typeof module === 'object') 21291 module.exports = factory(require("./foundation.core"), require("./foundation.util.keyboard"), require("./foundation.util.nest"), require("jquery")); 21292 else if(typeof define === 'function' && define.amd) 21293 define(["./foundation.core", "./foundation.util.keyboard", "./foundation.util.nest", "jquery"], factory); 21294 else if(typeof exports === 'object') 21295 exports["foundation.accordionMenu"] = factory(require("./foundation.core"), require("./foundation.util.keyboard"), require("./foundation.util.nest"), require("jquery")); 21296 else 21297 root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.accordionMenu"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.keyboard"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.nest"], root["jQuery"]); 21298})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE__foundation_util_keyboard__, __WEBPACK_EXTERNAL_MODULE__foundation_util_nest__, __WEBPACK_EXTERNAL_MODULE_jquery__) { 21299return /******/ (function(modules) { // webpackBootstrap 21300/******/ // The module cache 21301/******/ var installedModules = {}; 21302/******/ 21303/******/ // The require function 21304/******/ function __webpack_require__(moduleId) { 21305/******/ 21306/******/ // Check if module is in cache 21307/******/ if(installedModules[moduleId]) { 21308/******/ return installedModules[moduleId].exports; 21309/******/ } 21310/******/ // Create a new module (and put it into the cache) 21311/******/ var module = installedModules[moduleId] = { 21312/******/ i: moduleId, 21313/******/ l: false, 21314/******/ exports: {} 21315/******/ }; 21316/******/ 21317/******/ // Execute the module function 21318/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 21319/******/ 21320/******/ // Flag the module as loaded 21321/******/ module.l = true; 21322/******/ 21323/******/ // Return the exports of the module 21324/******/ return module.exports; 21325/******/ } 21326/******/ 21327/******/ 21328/******/ // expose the modules object (__webpack_modules__) 21329/******/ __webpack_require__.m = modules; 21330/******/ 21331/******/ // expose the module cache 21332/******/ __webpack_require__.c = installedModules; 21333/******/ 21334/******/ // define getter function for harmony exports 21335/******/ __webpack_require__.d = function(exports, name, getter) { 21336/******/ if(!__webpack_require__.o(exports, name)) { 21337/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); 21338/******/ } 21339/******/ }; 21340/******/ 21341/******/ // define __esModule on exports 21342/******/ __webpack_require__.r = function(exports) { 21343/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 21344/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 21345/******/ } 21346/******/ Object.defineProperty(exports, '__esModule', { value: true }); 21347/******/ }; 21348/******/ 21349/******/ // create a fake namespace object 21350/******/ // mode & 1: value is a module id, require it 21351/******/ // mode & 2: merge all properties of value into the ns 21352/******/ // mode & 4: return value when already ns object 21353/******/ // mode & 8|1: behave like require 21354/******/ __webpack_require__.t = function(value, mode) { 21355/******/ if(mode & 1) value = __webpack_require__(value); 21356/******/ if(mode & 8) return value; 21357/******/ if((mode & 4) && typeof value === 'object' && value && value.__esMo
vendor: 3,496 bytes, lines 21357-21419
21357dule) return value; 21358/******/ var ns = Object.create(null); 21359/******/ __webpack_require__.r(ns); 21360/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); 21361/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); 21362/******/ return ns; 21363/******/ }; 21364/******/ 21365/******/ // getDefaultExport function for compatibility with non-harmony modules 21366/******/ __webpack_require__.n = function(module) { 21367/******/ var getter = module && module.__esModule ? 21368/******/ function getDefault() { return module['default']; } : 21369/******/ function getModuleExports() { return module; }; 21370/******/ __webpack_require__.d(getter, 'a', getter); 21371/******/ return getter; 21372/******/ }; 21373/******/ 21374/******/ // Object.prototype.hasOwnProperty.call 21375/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; 21376/******/ 21377/******/ // __webpack_public_path__ 21378/******/ __webpack_require__.p = ""; 21379/******/ 21380/******/ 21381/******/ // Load entry module and return exports 21382/******/ return __webpack_require__(__webpack_require__.s = 2); 21383/******/ }) 21384/************************************************************************/ 21385/******/ ({ 21386 21387/***/ "./foundation.core": 21388/*!****************************************************************************************************************************************************************!*\ 21389 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***! 21390 \****************************************************************************************************************************************************************/ 21391/*! no static exports found */ 21392/***/ (function(module, exports) { 21393 21394module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__; 21395 21396/***/ }), 21397 21398/***/ "./foundation.util.keyboard": 21399/*!****************************************************************************************************************************************************************************************************!*\ 21400 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.keyboard"],"amd":"./foundation.util.keyboard","commonjs":"./foundation.util.keyboard","commonjs2":"./foundation.util.keyboard"} ***! 21401 \****************************************************************************************************************************************************************************************************/ 21402/*! no static exports found */ 21403/***/ (function(module, exports) { 21404 21405module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_keyboard__; 21406 21407/***/ }), 21408 21409/***/ "./foundation.util.nest": 21410/*!************************************************************************************************************************************************************************************!*\ 21411 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.nest"],"amd":"./foundation.util.nest","commonjs":"./foundation.util.nest","commonjs2":"./foundation.util.nest"} ***! 21412 \************************************************************************************************************************************************************************************/ 21413/*! no static exports found */ 21414/***/ (function(module, exports) { 21415 21416module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_nest__; 21417 21418/***/ }), 21419
21420/***/ "./js/entries/plugins/foundation.accordionMenu.js": 21421/*!********************************************************!*\ 21422 !*** ./js/entries/plugins/foundation.accordionMenu.js ***! 21423 \********************************************************/ 21424/*! exports provided: Foundation, AccordionMenu */ 21425/***/ (function(module, __webpack_exports__, __webpack_require__) { 21426 21427"use strict"; 21428__webpack_require__.r(__webpack_exports__); 21429/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core"); 21430/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__); 21431/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; }); 21432 21433/* harmony import */ var _foundation_accordionMenu__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.accordionMenu */ "./js/foundation.accordionMenu.js"); 21434/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "AccordionMenu", function() { return _foundation_accordionMenu__WEBPACK_IMPORTED_MODULE_1__["AccordionMenu"]; }); 21435 21436 21437 21438_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].plugin(_foundation_accordionMenu__WEBPACK_IMPORTED_MODULE_1__["AccordionMenu"], 'AccordionMenu'); 21439 21440 21441/***/ }), 21442
21443/***/ "./js/foundation.accordionMenu.js": 21444/*!****************************************!*\ 21445 !*** ./js/foundation.accordionMenu.js ***! 21446 \****************************************/ 21447/*! exports provided: AccordionMenu */ 21448/***/ (function(module, __webpack_exports__, __webpack_require__) { 21449 21450"use strict"; 21451__webpack_require__.r(__webpack_exports__); 21452/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "AccordionMenu", function() { return AccordionMenu; }); 21453/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery"); 21454/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__); 21455/* harmony import */ var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.util.keyboard */ "./foundation.util.keyboard"); 21456/* harmony import */ var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__); 21457/* harmony import */ var _foundation_util_nest__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.util.nest */ "./foundation.util.nest"); 21458/* harmony import */ var _foundation_util_nest__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_nest__WEBPACK_IMPORTED_MODULE_2__); 21459/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./foundation.core.utils */ "./foundation.core"); 21460/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__); 21461 21462 21463function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } 21464 21465function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 21466 21467function _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); } } 21468 21469function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } 21470 21471function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } 21472 21473function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } 21474 21475function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } 21476 21477function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } 21478 21479function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } 21480 21481 21482 21483 21484 21485 21486/** 21487 * AccordionMenu module. 21488 * @module foundation.accordionMenu 21489 * @requires foundation.util.keyboard 21490 * @requires foundation.util.nest 21491 */ 21492 21493var AccordionMenu = 21494/*#__PURE__*/ 21495function (_Plugin) { 21496 _inherits(AccordionMenu, _Plugin); 21497 21498 function AccordionMenu() { 21499 _classCallCheck(this, AccordionMenu); 21500 21501 return _possibleConstructorReturn(this, _getPrototypeOf(AccordionMenu).apply(this, arguments)); 21502 } 21503 21504 _createClass(AccordionMenu, [{ 21505 key: "_setup", 21506 21507 /** 21508 * Creates a new instance of an accordion menu. 21509 * @class 21510 * @name AccordionMenu 21511 * @fires AccordionMenu#init 21512 * @param {jQuery} element - jQuery object to make into an accordion menu. 21513 * @param {Object} options - Overrides to the default plugin settings. 21514 */ 21515 value: function _setup(element, options) { 21516 this.$element = element; 21517 this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, AccordionMenu.defaults, this.$element.data(), options); 21518 this.className = 'AccordionMenu'; // ie9 back compat 21519 21520 this._init(); 21521 21522 _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"].register('AccordionMenu', { 21523 'ENTER': 'toggle', 21524 'SPACE': 'toggle', 21525 'ARROW_RIGHT': 'open', 21526 'ARROW_UP': 'up', 21527 'ARROW_DOWN': 'down', 21528 'ARROW_LEFT': 'close', 21529 'ESCAPE': 'closeAll' 21530 }); 21531 } 21532 /** 21533 * Initializes the accordion menu by hiding all nested menus. 21534 * @private 21535 */ 21536 21537 }, { 21538 key: "_init", 21539 value: function _init() { 21540 _foundation_util_nest__WEBPACK_IMPORTED_MODULE_2__["Nest"].Feather(this.$element, 'accordion'); 21541 21542 var _this = this; 21543 21544 this.$element.find('[data-submenu]').not('.is-active').slideUp(0); //.find('a').css('padding-left', '1rem'); 21545 21546 this.$element.attr({ 21547 'role': 'tree',
vendor: 5,379 bytes, lines 21548-21678
21548 'aria-multiselectable': this.options.multiOpen 21549 }); 21550 this.$menuLinks = this.$element.find('.is-accordion-submenu-parent'); 21551 this.$menuLinks.each(function () { 21552 var linkId = this.id || Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["GetYoDigits"])(6, 'acc-menu-link'), 21553 $elem = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 21554 $sub = $elem.children('[data-submenu]'), 21555 subId = $sub[0].id || Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["GetYoDigits"])(6, 'acc-menu'), 21556 isActive = $sub.hasClass('is-active'); 21557 21558 if (_this.options.parentLink) { 21559 var $anchor = $elem.children('a'); 21560 $anchor.clone().prependTo($sub).wrap('<li data-is-parent-link class="is-submenu-parent-item is-submenu-item is-accordion-submenu-item"></li>'); 21561 } 21562 21563 if (_this.options.submenuToggle) { 21564 $elem.addClass('has-submenu-toggle'); 21565 $elem.children('a').after('<button id="' + linkId + '" class="submenu-toggle" aria-controls="' + subId + '" aria-expanded="' + isActive + '" title="' + _this.options.submenuToggleText + '"><span class="submenu-toggle-text">' + _this.options.submenuToggleText + '</span></button>'); 21566 } else { 21567 $elem.attr({ 21568 'aria-controls': subId, 21569 'aria-expanded': isActive, 21570 'id': linkId 21571 }); 21572 } 21573 21574 $sub.attr({ 21575 'aria-labelledby': linkId, 21576 'aria-hidden': !isActive, 21577 'role': 'group', 21578 'id': subId 21579 }); 21580 }); 21581 this.$element.find('li').attr({ 21582 'role': 'treeitem' 21583 }); 21584 var initPanes = this.$element.find('.is-active'); 21585 21586 if (initPanes.length) { 21587 initPanes.each(function () { 21588 _this.down(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this)); 21589 }); 21590 } 21591 21592 this._events(); 21593 } 21594 /** 21595 * Adds event handlers for items within the menu. 21596 * @private 21597 */ 21598 21599 }, { 21600 key: "_events", 21601 value: function _events() { 21602 var _this = this; 21603 21604 this.$element.find('li').each(function () { 21605 var $submenu = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).children('[data-submenu]'); 21606 21607 if ($submenu.length) { 21608 if (_this.options.submenuToggle) { 21609 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).children('.submenu-toggle').off('click.zf.accordionMenu').on('click.zf.accordionMenu', function (e) { 21610 _this.toggle($submenu); 21611 }); 21612 } else { 21613 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).children('a').off('click.zf.accordionMenu').on('click.zf.accordionMenu', function (e) { 21614 e.preventDefault(); 21615 21616 _this.toggle($submenu); 21617 }); 21618 } 21619 } 21620 }).on('keydown.zf.accordionMenu', function (e) { 21621 var $element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 21622 $elements = $element.parent('ul').children('li'), 21623 $prevElement, 21624 $nextElement, 21625 $target = $element.children('[data-submenu]'); 21626 $elements.each(function (i) { 21627 if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).is($element)) { 21628 $prevElement = $elements.eq(Math.max(0, i - 1)).find('a').first(); 21629 $nextElement = $elements.eq(Math.min(i + 1, $elements.length - 1)).find('a').first(); 21630 21631 if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).children('[data-submenu]:visible').length) { 21632 // has open sub menu 21633 $nextElement = $element.find('li:first-child').find('a').first(); 21634 } 21635 21636 if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).is(':first-child')) { 21637 // is first element of sub menu 21638 $prevElement = $element.parents('li').first().find('a').first(); 21639 } else if ($prevElement.parents('li').first().children('[data-submenu]:visible').length) { 21640 // if previous element has open sub menu 21641 $prevElement = $prevElement.parents('li').find('li:last-child').find('a').first(); 21642 } 21643 21644 if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).is(':last-child')) { 21645 // is last element of sub menu 21646 $nextElement = $element.parents('li').first().next('li').find('a').first(); 21647 } 21648 21649 return; 21650 } 21651 }); 21652 _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"].handleKey(e, 'AccordionMenu', { 21653 open: function open() { 21654 if ($target.is(':hidden')) { 21655 _this.down($target); 21656 21657 $target.find('li').first().find('a').first().focus(); 21658 } 21659 }, 21660 close: function close() { 21661 if ($target.length && !$target.is(':hidden')) { 21662 // close active sub of this item 21663 _this.up($target); 21664 } else if ($element.parent('[data-submenu]').length) { 21665 // close currently open sub 21666 _this.up($element.parent('[data-submenu]')); 21667 21668 $element.parents('li').first().find('a').first().focus(); 21669 } 21670 }, 21671 up: function up() { 21672 $prevElement.focus(); 21673 return true; 21674 }, 21675 down: function down() { 21676 $nextElement.focus(); 21677 return true; 21678 },
vendor: 4,450 bytes, lines 21679-21834
21679 toggle: function toggle() { 21680 if (_this.options.submenuToggle) { 21681 return false; 21682 } 21683 21684 if ($element.children('[data-submenu]').length) { 21685 _this.toggle($element.children('[data-submenu]')); 21686 21687 return true; 21688 } 21689 }, 21690 closeAll: function closeAll() { 21691 _this.hideAll(); 21692 }, 21693 handled: function handled(preventDefault) { 21694 if (preventDefault) { 21695 e.preventDefault(); 21696 } 21697 } 21698 }); 21699 }); //.attr('tabindex', 0); 21700 } 21701 /** 21702 * Closes all panes of the menu. 21703 * @function 21704 */ 21705 21706 }, { 21707 key: "hideAll", 21708 value: function hideAll() { 21709 this.up(this.$element.find('[data-submenu]')); 21710 } 21711 /** 21712 * Opens all panes of the menu. 21713 * @function 21714 */ 21715 21716 }, { 21717 key: "showAll", 21718 value: function showAll() { 21719 this.down(this.$element.find('[data-submenu]')); 21720 } 21721 /** 21722 * Toggles the open/close state of a submenu. 21723 * @function 21724 * @param {jQuery} $target - the submenu to toggle 21725 */ 21726 21727 }, { 21728 key: "toggle", 21729 value: function toggle($target) { 21730 if (!$target.is(':animated')) { 21731 if (!$target.is(':hidden')) { 21732 this.up($target); 21733 } else { 21734 this.down($target); 21735 } 21736 } 21737 } 21738 /** 21739 * Opens the sub-menu defined by `$target`. 21740 * @param {jQuery} $target - Sub-menu to open. 21741 * @fires AccordionMenu#down 21742 */ 21743 21744 }, { 21745 key: "down", 21746 value: function down($target) { 21747 var _this2 = this; 21748 21749 // If having multiple submenus active is disabled, close all the submenus 21750 // that are not parents or children of the targeted submenu. 21751 if (!this.options.multiOpen) { 21752 // The "branch" of the targetted submenu, from the component root to 21753 // the active submenus nested in it. 21754 var $targetBranch = $target.parentsUntil(this.$element).add($target).add($target.find('.is-active')); // All the active submenus that are not in the branch. 21755 21756 var $othersActiveSubmenus = this.$element.find('.is-active').not($targetBranch); 21757 this.up($othersActiveSubmenus); 21758 } 21759 21760 $target.addClass('is-active').attr({ 21761 'aria-hidden': false 21762 }); 21763 21764 if (this.options.submenuToggle) { 21765 $target.prev('.submenu-toggle').attr({ 21766 'aria-expanded': true 21767 }); 21768 } else { 21769 $target.parent('.is-accordion-submenu-parent').attr({ 21770 'aria-expanded': true 21771 }); 21772 } 21773 21774 $target.slideDown(this.options.slideSpeed, function () { 21775 /** 21776 * Fires when the menu is done opening. 21777 * @event AccordionMenu#down 21778 */ 21779 _this2.$element.trigger('down.zf.accordionMenu', [$target]); 21780 }); 21781 } 21782 /** 21783 * Closes the sub-menu defined by `$target`. All sub-menus inside the target will be closed as well. 21784 * @param {jQuery} $target - Sub-menu to close. 21785 * @fires AccordionMenu#up 21786 */ 21787 21788 }, { 21789 key: "up", 21790 value: function up($target) { 21791 var _this3 = this; 21792 21793 var $submenus = $target.find('[data-submenu]'); 21794 var $allmenus = $target.add($submenus); 21795 $submenus.slideUp(0); 21796 $allmenus.removeClass('is-active').attr('aria-hidden', true); 21797 21798 if (this.options.submenuToggle) { 21799 $allmenus.prev('.submenu-toggle').attr('aria-expanded', false); 21800 } else { 21801 $allmenus.parent('.is-accordion-submenu-parent').attr('aria-expanded', false); 21802 } 21803 21804 $target.slideUp(this.options.slideSpeed, function () { 21805 /** 21806 * Fires when the menu is done collapsing up. 21807 * @event AccordionMenu#up 21808 */ 21809 _this3.$element.trigger('up.zf.accordionMenu', [$target]); 21810 }); 21811 } 21812 /** 21813 * Destroys an instance of accordion menu. 21814 * @fires AccordionMenu#destroyed 21815 */ 21816 21817 }, { 21818 key: "_destroy", 21819 value: function _destroy() { 21820 this.$element.find('[data-submenu]').slideDown(0).css('display', ''); 21821 this.$element.find('a').off('click.zf.accordionMenu'); 21822 this.$element.find('[data-is-parent-link]').detach(); 21823 21824 if (this.options.submenuToggle) { 21825 this.$element.find('.has-submenu-toggle').removeClass('has-submenu-toggle'); 21826 this.$element.find('.submenu-toggle').remove(); 21827 } 21828 21829 _foundation_util_nest__WEBPACK_IMPORTED_MODULE_2__["Nest"].Burn(this.$element, 'accordion'); 21830 } 21831 }]); 21832 21833 return AccordionMenu; 21834}
vendor: 5,543 bytes, lines 21834-21973
21834(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["Plugin"]); 21835 21836AccordionMenu.defaults = { 21837 /** 21838 * Adds the parent link to the submenu. 21839 * @option 21840 * @type {boolean} 21841 * @default false 21842 */ 21843 parentLink: false, 21844 21845 /** 21846 * Amount of time to animate the opening of a submenu in ms. 21847 * @option 21848 * @type {number} 21849 * @default 250 21850 */ 21851 slideSpeed: 250, 21852 21853 /** 21854 * Adds a separate submenu toggle button. This allows the parent item to have a link. 21855 * @option 21856 * @example true 21857 */ 21858 submenuToggle: false, 21859 21860 /** 21861 * The text used for the submenu toggle if enabled. This is used for screen readers only. 21862 * @option 21863 * @example true 21864 */ 21865 submenuToggleText: 'Toggle menu', 21866 21867 /** 21868 * Allow the menu to have multiple open panes. 21869 * @option 21870 * @type {boolean} 21871 * @default true 21872 */ 21873 multiOpen: true 21874}; 21875 21876 21877/***/ }), 21878 21879/***/ 2: 21880/*!**************************************************************!*\ 21881 !*** multi ./js/entries/plugins/foundation.accordionMenu.js ***! 21882 \**************************************************************/ 21883/*! no static exports found */ 21884/***/ (function(module, exports, __webpack_require__) { 21885 21886module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.accordionMenu.js */"./js/entries/plugins/foundation.accordionMenu.js"); 21887 21888 21889/***/ }), 21890 21891/***/ "jquery": 21892/*!********************************************************************************************!*\ 21893 !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***! 21894 \********************************************************************************************/ 21895/*! no static exports found */ 21896/***/ (function(module, exports) { 21897 21898module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__; 21899 21900/***/ }) 21901 21902/******/ }); 21903}); 21904//# sourceMappingURL=foundation.accordionMenu.js.map 21905(function webpackUniversalModuleDefinition(root, factory) { 21906 if(typeof exports === 'object' && typeof module === 'object') 21907 module.exports = factory(require("./foundation.core"), require("./foundation.util.box"), require("./foundation.util.keyboard"), require("./foundation.util.nest"), require("jquery")); 21908 else if(typeof define === 'function' && define.amd) 21909 define(["./foundation.core", "./foundation.util.box", "./foundation.util.keyboard", "./foundation.util.nest", "jquery"], factory); 21910 else if(typeof exports === 'object') 21911 exports["foundation.drilldown"] = factory(require("./foundation.core"), require("./foundation.util.box"), require("./foundation.util.keyboard"), require("./foundation.util.nest"), require("jquery")); 21912 else 21913 root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.drilldown"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.box"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.keyboard"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.nest"], root["jQuery"]); 21914})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE__foundation_util_box__, __WEBPACK_EXTERNAL_MODULE__foundation_util_keyboard__, __WEBPACK_EXTERNAL_MODULE__foundation_util_nest__, __WEBPACK_EXTERNAL_MODULE_jquery__) { 21915return /******/ (function(modules) { // webpackBootstrap 21916/******/ // The module cache 21917/******/ var installedModules = {}; 21918/******/ 21919/******/ // The require function 21920/******/ function __webpack_require__(moduleId) { 21921/******/ 21922/******/ // Check if module is in cache 21923/******/ if(installedModules[moduleId]) { 21924/******/ return installedModules[moduleId].exports; 21925/******/ } 21926/******/ // Create a new module (and put it into the cache) 21927/******/ var module = installedModules[moduleId] = { 21928/******/ i: moduleId, 21929/******/ l: false, 21930/******/ exports: {} 21931/******/ }; 21932/******/ 21933/******/ // Execute the module function 21934/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 21935/******/ 21936/******/ // Flag the module as loaded 21937/******/ module.l = true; 21938/******/ 21939/******/ // Return the exports of the module 21940/******/ return module.exports; 21941/******/ } 21942/******/ 21943/******/ 21944/******/ // expose the modules object (__webpack_modules__) 21945/******/ __webpack_require__.m = modules; 21946/******/ 21947/******/ // expose the module cache 21948/******/ __webpack_require__.c = installedModules; 21949/******/ 21950/******/ // define getter function for harmony exports 21951/******/ __webpack_require__.d = function(exports, name, getter) { 21952/******/ if(!__webpack_require__.o(exports, name)) { 21953/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); 21954/******/ } 21955/******/ }; 21956/******/ 21957/******/ // define __esModule on exports 21958/******/ __webpack_require__.r = function(exports) { 21959/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 21960/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 21961/******/ } 21962/******/ Object.defineProperty(exports, '__esModule', { value: true }); 21963/******/ }; 21964/******/ 21965/******/ // create a fake namespace object 21966/******/ // mode & 1: value is a module id, require it 21967/******/ // mode & 2: merge all properties of value into the ns 21968/******/ // mode & 4: return value when already ns object 21969/******/ // mode & 8|1: behave like require 21970/******/ __webpack_require__.t = function(value, mode) { 21971/******/ if(mode & 1) value = __webpack_require__(value); 21972/******/ if(mode & 8) return value; 21973/******/ if((mode & 4) && typeof value === 'object' && value && value.__esMo
vendor: 4,102 bytes, lines 21973-22040
21973dule) return value; 21974/******/ var ns = Object.create(null); 21975/******/ __webpack_require__.r(ns); 21976/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); 21977/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); 21978/******/ return ns; 21979/******/ }; 21980/******/ 21981/******/ // getDefaultExport function for compatibility with non-harmony modules 21982/******/ __webpack_require__.n = function(module) { 21983/******/ var getter = module && module.__esModule ? 21984/******/ function getDefault() { return module['default']; } : 21985/******/ function getModuleExports() { return module; }; 21986/******/ __webpack_require__.d(getter, 'a', getter); 21987/******/ return getter; 21988/******/ }; 21989/******/ 21990/******/ // Object.prototype.hasOwnProperty.call 21991/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; 21992/******/ 21993/******/ // __webpack_public_path__ 21994/******/ __webpack_require__.p = ""; 21995/******/ 21996/******/ 21997/******/ // Load entry module and return exports 21998/******/ return __webpack_require__(__webpack_require__.s = 3); 21999/******/ }) 22000/************************************************************************/ 22001/******/ ({ 22002 22003/***/ "./foundation.core": 22004/*!****************************************************************************************************************************************************************!*\ 22005 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***! 22006 \****************************************************************************************************************************************************************/ 22007/*! no static exports found */ 22008/***/ (function(module, exports) { 22009 22010module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__; 22011 22012/***/ }), 22013 22014/***/ "./foundation.util.box": 22015/*!********************************************************************************************************************************************************************************!*\ 22016 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.box"],"amd":"./foundation.util.box","commonjs":"./foundation.util.box","commonjs2":"./foundation.util.box"} ***! 22017 \********************************************************************************************************************************************************************************/ 22018/*! no static exports found */ 22019/***/ (function(module, exports) { 22020 22021module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_box__; 22022 22023/***/ }), 22024 22025/***/ "./foundation.util.keyboard": 22026/*!****************************************************************************************************************************************************************************************************!*\ 22027 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.keyboard"],"amd":"./foundation.util.keyboard","commonjs":"./foundation.util.keyboard","commonjs2":"./foundation.util.keyboard"} ***! 22028 \****************************************************************************************************************************************************************************************************/ 22029/*! no static exports found */ 22030/***/ (function(module, exports) { 22031 22032module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_keyboard__; 22033 22034/***/ }), 22035 22036/***/ "./foundation.util.nest": 22037/*!************************************************************************************************************************************************************************************!*\ 22038 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.nest"],"amd":"./foundation.util.nest","commonjs":"./foundation.util.nest","commonjs2":"./foundation.util.nest"} ***! 22039 \************************************************************************************************************************************************************************************/ 22040/*! no static exports found */
22041/***/ (function(module, exports) { 22042 22043module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_nest__; 22044 22045/***/ }), 22046
22047/***/ "./js/entries/plugins/foundation.drilldown.js": 22048/*!****************************************************!*\ 22049 !*** ./js/entries/plugins/foundation.drilldown.js ***! 22050 \****************************************************/ 22051/*! exports provided: Foundation, Drilldown */ 22052/***/ (function(module, __webpack_exports__, __webpack_require__) { 22053 22054"use strict"; 22055__webpack_require__.r(__webpack_exports__); 22056/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core"); 22057/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__); 22058/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; }); 22059 22060/* harmony import */ var _foundation_drilldown__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.drilldown */ "./js/foundation.drilldown.js"); 22061/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Drilldown", function() { return _foundation_drilldown__WEBPACK_IMPORTED_MODULE_1__["Drilldown"]; }); 22062 22063 22064 22065_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].plugin(_foundation_drilldown__WEBPACK_IMPORTED_MODULE_1__["Drilldown"], 'Drilldown'); 22066 22067 22068/***/ }), 22069
vendor: 5,350 bytes, lines 22070-22154
22070/***/ "./js/foundation.drilldown.js": 22071/*!************************************!*\ 22072 !*** ./js/foundation.drilldown.js ***! 22073 \************************************/ 22074/*! exports provided: Drilldown */ 22075/***/ (function(module, __webpack_exports__, __webpack_require__) { 22076 22077"use strict"; 22078__webpack_require__.r(__webpack_exports__); 22079/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Drilldown", function() { return Drilldown; }); 22080/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery"); 22081/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__); 22082/* harmony import */ var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.util.keyboard */ "./foundation.util.keyboard"); 22083/* harmony import */ var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__); 22084/* harmony import */ var _foundation_util_nest__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.util.nest */ "./foundation.util.nest"); 22085/* harmony import */ var _foundation_util_nest__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_nest__WEBPACK_IMPORTED_MODULE_2__); 22086/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./foundation.core.utils */ "./foundation.core"); 22087/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__); 22088/* harmony import */ var _foundation_util_box__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./foundation.util.box */ "./foundation.util.box"); 22089/* harmony import */ var _foundation_util_box__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_box__WEBPACK_IMPORTED_MODULE_4__); 22090 22091 22092function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } 22093 22094function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 22095 22096function _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); } } 22097 22098function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } 22099 22100function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } 22101 22102function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } 22103 22104function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } 22105 22106function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } 22107 22108function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } 22109 22110 22111 22112 22113 22114 22115 22116/** 22117 * Drilldown module. 22118 * @module foundation.drilldown 22119 * @requires foundation.util.keyboard 22120 * @requires foundation.util.nest 22121 * @requires foundation.util.box 22122 */ 22123 22124var Drilldown = 22125/*#__PURE__*/ 22126function (_Plugin) { 22127 _inherits(Drilldown, _Plugin); 22128 22129 function Drilldown() { 22130 _classCallCheck(this, Drilldown); 22131 22132 return _possibleConstructorReturn(this, _getPrototypeOf(Drilldown).apply(this, arguments)); 22133 } 22134 22135 _createClass(Drilldown, [{ 22136 key: "_setup", 22137 22138 /** 22139 * Creates a new instance of a drilldown menu. 22140 * @class 22141 * @name Drilldown 22142 * @param {jQuery} element - jQuery object to make into an accordion menu. 22143 * @param {Object} options - Overrides to the default plugin settings. 22144 */ 22145 value: function _setup(element, options) { 22146 this.$element = element; 22147 this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, Drilldown.defaults, this.$element.data(), options); 22148 this.className = 'Drilldown'; // ie9 back compat 22149 22150 this._init(); 22151 22152 _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"].register('Drilldown', { 22153 'ENTER': 'open', 22154 'SPACE': 'open',
vendor: 9,467 bytes, lines 22155-22418
22155 'ARROW_RIGHT': 'next', 22156 'ARROW_UP': 'up', 22157 'ARROW_DOWN': 'down', 22158 'ARROW_LEFT': 'previous', 22159 'ESCAPE': 'close', 22160 'TAB': 'down', 22161 'SHIFT_TAB': 'up' 22162 }); 22163 } 22164 /** 22165 * Initializes the drilldown by creating jQuery collections of elements 22166 * @private 22167 */ 22168 22169 }, { 22170 key: "_init", 22171 value: function _init() { 22172 _foundation_util_nest__WEBPACK_IMPORTED_MODULE_2__["Nest"].Feather(this.$element, 'drilldown'); 22173 22174 if (this.options.autoApplyClass) { 22175 this.$element.addClass('drilldown'); 22176 } 22177 22178 this.$element.attr({ 22179 'role': 'tree', 22180 'aria-multiselectable': false 22181 }); 22182 this.$submenuAnchors = this.$element.find('li.is-drilldown-submenu-parent').children('a'); 22183 this.$submenus = this.$submenuAnchors.parent('li').children('[data-submenu]').attr('role', 'group'); 22184 this.$menuItems = this.$element.find('li').not('.js-drilldown-back').attr('role', 'treeitem').find('a'); // Set the main menu as current by default (unless a submenu is selected) 22185 // Used to set the wrapper height when the drilldown is closed/reopened from any (sub)menu 22186 22187 this.$currentMenu = this.$element; 22188 this.$element.attr('data-mutate', this.$element.attr('data-drilldown') || Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["GetYoDigits"])(6, 'drilldown')); 22189 22190 this._prepareMenu(); 22191 22192 this._registerEvents(); 22193 22194 this._keyboardEvents(); 22195 } 22196 /** 22197 * prepares drilldown menu by setting attributes to links and elements 22198 * sets a min height to prevent content jumping 22199 * wraps the element if not already wrapped 22200 * @private 22201 * @function 22202 */ 22203 22204 }, { 22205 key: "_prepareMenu", 22206 value: function _prepareMenu() { 22207 var _this = this; // if(!this.options.holdOpen){ 22208 // this._menuLinkEvents(); 22209 // } 22210 22211 22212 this.$submenuAnchors.each(function () { 22213 var $link = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this); 22214 var $sub = $link.parent(); 22215 22216 if (_this.options.parentLink) { 22217 $link.clone().prependTo($sub.children('[data-submenu]')).wrap('<li data-is-parent-link class="is-submenu-parent-item is-submenu-item is-drilldown-submenu-item" role="none"></li>'); 22218 } 22219 22220 $link.data('savedHref', $link.attr('href')).removeAttr('href').attr('tabindex', 0); 22221 $link.children('[data-submenu]').attr({ 22222 'aria-hidden': true, 22223 'tabindex': 0, 22224 'role': 'group' 22225 }); 22226 22227 _this._events($link); 22228 }); 22229 this.$submenus.each(function () { 22230 var $menu = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 22231 $back = $menu.find('.js-drilldown-back'); 22232 22233 if (!$back.length) { 22234 switch (_this.options.backButtonPosition) { 22235 case "bottom": 22236 $menu.append(_this.options.backButton); 22237 break; 22238 22239 case "top": 22240 $menu.prepend(_this.options.backButton); 22241 break; 22242 22243 default: 22244 console.error("Unsupported backButtonPosition value '" + _this.options.backButtonPosition + "'"); 22245 } 22246 } 22247 22248 _this._back($menu); 22249 }); 22250 this.$submenus.addClass('invisible'); 22251 22252 if (!this.options.autoHeight) { 22253 this.$submenus.addClass('drilldown-submenu-cover-previous'); 22254 } // create a wrapper on element if it doesn't exist. 22255 22256 22257 if (!this.$element.parent().hasClass('is-drilldown')) { 22258 this.$wrapper = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this.options.wrapper).addClass('is-drilldown'); 22259 if (this.options.animateHeight) this.$wrapper.addClass('animate-height'); 22260 this.$element.wrap(this.$wrapper); 22261 } // set wrapper 22262 22263 22264 this.$wrapper = this.$element.parent(); 22265 this.$wrapper.css(this._getMaxDims()); 22266 } 22267 }, { 22268 key: "_resize", 22269 value: function _resize() { 22270 this.$wrapper.css({ 22271 'max-width': 'none', 22272 'min-height': 'none' 22273 }); // _getMaxDims has side effects (boo) but calling it should update all other necessary heights & widths 22274 22275 this.$wrapper.css(this._getMaxDims()); 22276 } 22277 /** 22278 * Adds event handlers to elements in the menu. 22279 * @function 22280 * @private 22281 * @param {jQuery} $elem - the current menu item to add handlers to. 22282 */ 22283 22284 }, { 22285 key: "_events", 22286 value: function _events($elem) { 22287 var _this = this; 22288 22289 $elem.off('click.zf.drilldown').on('click.zf.drilldown', function (e) { 22290 if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.target).parentsUntil('ul', 'li').hasClass('is-drilldown-submenu-parent')) { 22291 e.preventDefault(); 22292 } // if(e.target !== e.currentTarget.firstElementChild){ 22293 // return false; 22294 // } 22295 22296 22297 _this._show($elem.parent('li')); 22298 22299 if (_this.options.closeOnClick) { 22300 var $body = jquery__WEBPACK_IMPORTED_MODULE_0___default()('body'); 22301 $body.off('.zf.drilldown').on('click.zf.drilldown', function (e) { 22302 if (e.target === _this.$element[0] || jquery__WEBPACK_IMPORTED_MODULE_0___default.a.contains(_this.$element[0], e.target)) { 22303 return; 22304 } 22305 22306 e.preventDefault(); 22307 22308 _this._hideAll(); 22309 22310 $body.off('.zf.drilldown'); 22311 }); 22312 } 22313 }); 22314 } 22315 /** 22316 * Adds event handlers to the menu element. 22317 * @function 22318 * @private 22319 */ 22320 22321 }, { 22322 key: "_registerEvents", 22323 value: function _registerEvents() { 22324 if (this.options.scrollTop) { 22325 this._bindHandler = this._scrollTop.bind(this); 22326 this.$element.on('open.zf.drilldown hide.zf.drilldown close.zf.drilldown closed.zf.drilldown', this._bindHandler); 22327 } 22328 22329 this.$element.on('mutateme.zf.trigger', this._resize.bind(this)); 22330 } 22331 /** 22332 * Scroll to Top of Element or data-scroll-top-element 22333 * @function 22334 * @fires Drilldown#scrollme 22335 */ 22336 22337 }, { 22338 key: "_scrollTop", 22339 value: function _scrollTop() { 22340 var _this = this; 22341 22342 var $scrollTopElement = _this.options.scrollTopElement != '' ? jquery__WEBPACK_IMPORTED_MODULE_0___default()(_this.options.scrollTopElement) : _this.$element, 22343 scrollPos = parseInt($scrollTopElement.offset().top + _this.options.scrollTopOffset, 10); 22344 jquery__WEBPACK_IMPORTED_MODULE_0___default()('html, body').stop(true).animate({ 22345 scrollTop: scrollPos 22346 }, _this.options.animationDuration, _this.options.animationEasing, function () { 22347 /** 22348 * Fires after the menu has scrolled 22349 * @event Drilldown#scrollme 22350 */ 22351 if (this === jquery__WEBPACK_IMPORTED_MODULE_0___default()('html')[0]) _this.$element.trigger('scrollme.zf.drilldown'); 22352 }); 22353 } 22354 /** 22355 * Adds keydown event listener to `li`'s in the menu. 22356 * @private 22357 */ 22358 22359 }, { 22360 key: "_keyboardEvents", 22361 value: function _keyboardEvents() { 22362 var _this = this; 22363 22364 this.$menuItems.add(this.$element.find('.js-drilldown-back > a, .is-submenu-parent-item > a')).on('keydown.zf.drilldown', function (e) { 22365 var $element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 22366 $elements = $element.parent('li').parent('ul').children('li').children('a'), 22367 $prevElement, 22368 $nextElement; 22369 $elements.each(function (i) { 22370 if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).is($element)) { 22371 $prevElement = $elements.eq(Math.max(0, i - 1)); 22372 $nextElement = $elements.eq(Math.min(i + 1, $elements.length - 1)); 22373 return; 22374 } 22375 }); 22376 _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"].handleKey(e, 'Drilldown', { 22377 next: function next() { 22378 if ($element.is(_this.$submenuAnchors)) { 22379 _this._show($element.parent('li')); 22380 22381 $element.parent('li').one(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["transitionend"])($element), function () { 22382 $element.parent('li').find('ul li a').not('.js-drilldown-back a').first().focus(); 22383 }); 22384 return true; 22385 } 22386 }, 22387 previous: function previous() { 22388 _this._hide($element.parent('li').parent('ul')); 22389 22390 $element.parent('li').parent('ul').one(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["transitionend"])($element), function () { 22391 setTimeout(function () { 22392 $element.parent('li').parent('ul').parent('li').children('a').first().focus(); 22393 }, 1); 22394 }); 22395 return true; 22396 }, 22397 up: function up() { 22398 $prevElement.focus(); // Don't tap focus on first element in root ul 22399 22400 return !$element.is(_this.$element.find('> li:first-child > a')); 22401 }, 22402 down: function down() { 22403 $nextElement.focus(); // Don't tap focus on last element in root ul 22404 22405 return !$element.is(_this.$element.find('> li:last-child > a')); 22406 }, 22407 close: function close() { 22408 // Don't close on element in root ul 22409 if (!$element.is(_this.$element.find('> li > a'))) { 22410 _this._hide($element.parent().parent()); 22411 22412 $element.parent().parent().siblings('a').focus(); 22413 } 22414 }, 22415 open: function open() { 22416 if (_this.options.parentLink && $element.attr('href')) { 22417 // Link with href 22418 return false;
vendor: 4,589 bytes, lines 22419-22564
22419 } else if (!$element.is(_this.$menuItems)) { 22420 // not menu item means back button 22421 _this._hide($element.parent('li').parent('ul')); 22422 22423 $element.parent('li').parent('ul').one(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["transitionend"])($element), function () { 22424 setTimeout(function () { 22425 $element.parent('li').parent('ul').parent('li').children('a').first().focus(); 22426 }, 1); 22427 }); 22428 return true; 22429 } else if ($element.is(_this.$submenuAnchors)) { 22430 // Sub menu item 22431 _this._show($element.parent('li')); 22432 22433 $element.parent('li').one(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["transitionend"])($element), function () { 22434 $element.parent('li').find('ul li a').not('.js-drilldown-back a').first().focus(); 22435 }); 22436 return true; 22437 } 22438 }, 22439 handled: function handled(preventDefault) { 22440 if (preventDefault) { 22441 e.preventDefault(); 22442 } 22443 } 22444 }); 22445 }); // end keyboardAccess 22446 } 22447 /** 22448 * Closes all open elements, and returns to root menu. 22449 * @function 22450 * @fires Drilldown#close 22451 * @fires Drilldown#closed 22452 */ 22453 22454 }, { 22455 key: "_hideAll", 22456 value: function _hideAll() { 22457 var _this2 = this; 22458 22459 var $elem = this.$element.find('.is-drilldown-submenu.is-active'); 22460 $elem.addClass('is-closing'); 22461 22462 if (this.options.autoHeight) { 22463 var calcHeight = $elem.parent().closest('ul').data('calcHeight'); 22464 this.$wrapper.css({ 22465 height: calcHeight 22466 }); 22467 } 22468 /** 22469 * Fires when the menu is closing. 22470 * @event Drilldown#close 22471 */ 22472 22473 22474 this.$element.trigger('close.zf.drilldown'); 22475 $elem.one(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["transitionend"])($elem), function () { 22476 $elem.removeClass('is-active is-closing'); 22477 /** 22478 * Fires when the menu is fully closed. 22479 * @event Drilldown#closed 22480 */ 22481 22482 _this2.$element.trigger('closed.zf.drilldown'); 22483 }); 22484 } 22485 /** 22486 * Adds event listener for each `back` button, and closes open menus. 22487 * @function 22488 * @fires Drilldown#back 22489 * @param {jQuery} $elem - the current sub-menu to add `back` event. 22490 */ 22491 22492 }, { 22493 key: "_back", 22494 value: function _back($elem) { 22495 var _this = this; 22496 22497 $elem.off('click.zf.drilldown'); 22498 $elem.children('.js-drilldown-back').on('click.zf.drilldown', function (e) { 22499 // console.log('mouseup on back'); 22500 _this._hide($elem); // If there is a parent submenu, call show 22501 22502 22503 var parentSubMenu = $elem.parent('li').parent('ul').parent('li'); 22504 22505 if (parentSubMenu.length) { 22506 _this._show(parentSubMenu); 22507 } 22508 }); 22509 } 22510 /** 22511 * Adds event listener to menu items w/o submenus to close open menus on click. 22512 * @function 22513 * @private 22514 */ 22515 22516 }, { 22517 key: "_menuLinkEvents", 22518 value: function _menuLinkEvents() { 22519 var _this = this; 22520 22521 this.$menuItems.not('.is-drilldown-submenu-parent').off('click.zf.drilldown').on('click.zf.drilldown', function (e) { 22522 setTimeout(function () { 22523 _this._hideAll(); 22524 }, 0); 22525 }); 22526 } 22527 /** 22528 * Sets the CSS classes for submenu to show it. 22529 * @function 22530 * @private 22531 * @param {jQuery} $elem - the target submenu (`ul` tag) 22532 * @param {boolean} trigger - trigger drilldown event 22533 */ 22534 22535 }, { 22536 key: "_setShowSubMenuClasses", 22537 value: function _setShowSubMenuClasses($elem, trigger) { 22538 $elem.addClass('is-active').removeClass('invisible').attr('aria-hidden', false); 22539 $elem.parent('li').attr('aria-expanded', true); 22540 22541 if (trigger === true) { 22542 this.$element.trigger('open.zf.drilldown', [$elem]); 22543 } 22544 } 22545 /** 22546 * Sets the CSS classes for submenu to hide it. 22547 * @function 22548 * @private 22549 * @param {jQuery} $elem - the target submenu (`ul` tag) 22550 * @param {boolean} trigger - trigger drilldown event 22551 */ 22552 22553 }, { 22554 key: "_setHideSubMenuClasses", 22555 value: function _setHideSubMenuClasses($elem, trigger) { 22556 $elem.removeClass('is-active').addClass('invisible').attr('aria-hidden', true); 22557 $elem.parent('li').attr('aria-expanded', false); 22558 22559 if (trigger === true) { 22560 $elem.trigger('hide.zf.drilldown', [$elem]); 22561 } 22562 } 22563 /** 22564 * Opens a specific drilldown (sub)menu no matter which (sub)menu in
vendor: 6,468 bytes, lines 22564-22733
22564it is currently visible. 22565 * Compared to _show() this lets you jump into any submenu without clicking through every submenu on the way to it. 22566 * @function 22567 * @fires Drilldown#open 22568 * @param {jQuery} $elem - the target (sub)menu (`ul` tag) 22569 * @param {boolean} autoFocus - if true the first link in the target (sub)menu gets auto focused 22570 */ 22571 22572 }, { 22573 key: "_showMenu", 22574 value: function _showMenu($elem, autoFocus) { 22575 var _this = this; // Reset drilldown 22576 22577 22578 var $expandedSubmenus = this.$element.find('li[aria-expanded="true"] > ul[data-submenu]'); 22579 $expandedSubmenus.each(function (index) { 22580 _this._setHideSubMenuClasses(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this)); 22581 }); // Save the menu as the currently displayed one. 22582 22583 this.$currentMenu = $elem; // If target menu is root, focus first link & exit 22584 22585 if ($elem.is('[data-drilldown]')) { 22586 if (autoFocus === true) $elem.find('li[role="treeitem"] > a').first().focus(); 22587 if (this.options.autoHeight) this.$wrapper.css('height', $elem.data('calcHeight')); 22588 return; 22589 } // Find all submenus on way to root incl. the element itself 22590 22591 22592 var $submenus = $elem.children().first().parentsUntil('[data-drilldown]', '[data-submenu]'); // Open target menu and all submenus on its way to root 22593 22594 $submenus.each(function (index) { 22595 // Update height of first child (target menu) if autoHeight option true 22596 if (index === 0 && _this.options.autoHeight) { 22597 _this.$wrapper.css('height', jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('calcHeight')); 22598 } 22599 22600 var isLastChild = index == $submenus.length - 1; // Add transitionsend listener to last child (root due to reverse order) to open target menu's first link 22601 // Last child makes sure the event gets always triggered even if going through several menus 22602 22603 if (isLastChild === true) { 22604 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).one(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["transitionend"])(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this)), function () { 22605 if (autoFocus === true) { 22606 $elem.find('li[role="treeitem"] > a').first().focus(); 22607 } 22608 }); 22609 } 22610 22611 _this._setShowSubMenuClasses(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), isLastChild); 22612 }); 22613 } 22614 /** 22615 * Opens a submenu. 22616 * @function 22617 * @fires Drilldown#open 22618 * @param {jQuery} $elem - the current element with a submenu to open, i.e. the `li` tag. 22619 */ 22620 22621 }, { 22622 key: "_show", 22623 value: function _show($elem) { 22624 var $submenu = $elem.children('[data-submenu]'); 22625 $elem.attr('aria-expanded', true); 22626 this.$currentMenu = $submenu; 22627 $submenu.addClass('is-active').removeClass('invisible').attr('aria-hidden', false); 22628 22629 if (this.options.autoHeight) { 22630 this.$wrapper.css({ 22631 height: $submenu.data('calcHeight') 22632 }); 22633 } 22634 /** 22635 * Fires when the submenu has opened. 22636 * @event Drilldown#open 22637 */ 22638 22639 22640 this.$element.trigger('open.zf.drilldown', [$elem]); 22641 } 22642 /** 22643 * Hides a submenu 22644 * @function 22645 * @fires Drilldown#hide 22646 * @param {jQuery} $elem - the current sub-menu to hide, i.e. the `ul` tag. 22647 */ 22648 22649 }, { 22650 key: "_hide", 22651 value: function _hide($elem) { 22652 if (this.options.autoHeight) this.$wrapper.css({ 22653 height: $elem.parent().closest('ul').data('calcHeight') 22654 }); 22655 22656 var _this = this; 22657 22658 $elem.parent('li').attr('aria-expanded', false); 22659 $elem.attr('aria-hidden', true); 22660 $elem.addClass('is-closing').one(Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["transitionend"])($elem), function () { 22661 $elem.removeClass('is-active is-closing'); 22662 $elem.blur().addClass('invisible'); 22663 }); 22664 /** 22665 * Fires when the submenu has closed. 22666 * @event Drilldown#hide 22667 */ 22668 22669 $elem.trigger('hide.zf.drilldown', [$elem]); 22670 } 22671 /** 22672 * Iterates through the nested menus to calculate the min-height, and max-width for the menu. 22673 * Prevents content jumping. 22674 * @function 22675 * @private 22676 */ 22677 22678 }, { 22679 key: "_getMaxDims", 22680 value: function _getMaxDims() { 22681 var maxHeight = 0, 22682 result = {}, 22683 _this = this; // Recalculate menu heights and total max height 22684 22685 22686 this.$submenus.add(this.$element).each(function () { 22687 var numOfElems = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).children('li').length; 22688 var height = _foundation_util_box__WEBPACK_IMPORTED_MODULE_4__["Box"].GetDimensions(this).height; 22689 maxHeight = height > maxHeight ? height : maxHeight; 22690 22691 if (_this.options.autoHeight) { 22692 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('calcHeight', height); 22693 } 22694 }); 22695 if (this.options.autoHeight) result['height'] = this.$currentMenu.data('calcHeight');else result['min-height'] = "".concat(maxHeight, "px"); 22696 result['max-width'] = "".concat(this.$element[0].getBoundingClientRect().width, "px"); 22697 return result; 22698 } 22699 /** 22700 * Destroys the Drilldown Menu 22701 * @function 22702 */ 22703 22704 }, { 22705 key: "_destroy", 22706 value: function _destroy() { 22707 if (this.options.scrollTop) this.$element.off('.zf.drilldown', this._bindHandler); 22708 22709 this._hideAll(); 22710 22711 this.$element.off('mutateme.zf.trigger'); 22712 _foundation_util_nest__WEBPACK_IMPORTED_MODULE_2__["Nest"].Burn(this.$element, 'drilldown'); 22713 this.$element.unwrap().find('.js-drilldown-back, .is-submenu-parent-item').remove().end().find('.is-active, .is-closing, .is-drilldown-submenu').removeClass('is-active is-closing is-drilldown-submenu').end().find('[data-submenu]').removeAttr('aria-hidden tabindex role'); 22714 this.$submenuAnchors.each(function () { 22715 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).off('.zf.drilldown'); 22716 }); 22717 this.$element.find('[data-is-parent-link]').detach(); 22718 this.$submenus.removeClass('drilldown-submenu-cover-previous invisible'); 22719 this.$element.find('a').each(function () { 22720 var $link = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this); 22721 $link.removeAttr('tabindex'); 22722 22723 if ($link.data('savedHref')) { 22724 $link.attr('href', $link.data('savedHref')).removeData('savedHref'); 22725 } else { 22726 return; 22727 } 22728 }); 22729 } 22730 }]); 22731 22732 return Drilldown; 22733}
22733(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["Plugin"]); 22734 22735Drilldown.defaults = { 22736 /** 22737 * Drilldowns depend on styles in order to function properly; in the default build of Foundation these are 22738 * on the `drilldown` class. This option auto-applies this class to the drilldown upon initialization. 22739 * @option 22740 * @type {boolean} 22741 * @default true 22742 */ 22743 autoApplyClass: true, 22744 22745 /** 22746 * Markup used for JS generated back button. Prepended or appended (see backButtonPosition) to submenu lists and deleted on `destroy` method, 'js-drilldown-back' class required. Remove the backslash (`\`) if copy and pasting. 22747 * @option 22748 * @type {string} 22749 * @default '<li class="js-drilldown-back"><a tabindex="0">Back</a></li>' 22750 */ 22751 backButton: '<li class="js-drilldown-back"><a tabindex="0">Back</a></li>', 22752 22753 /** 22754 * Position the back button either at the top or bottom of drilldown submenus. Can be `'left'` or `'bottom'`. 22755 * @option 22756 * @type {string} 22757 * @default top 22758 */ 22759 backButtonPosition: 'top', 22760 22761 /** 22762 * Markup used to wrap drilldown menu. Use a class name for independent styling; the JS applied class: `is-drilldown` is required. Remove the backslash (`\`) if copy and pasting. 22763 * @option 22764 * @type {string} 22765 * @default '<div></div>' 22766 */ 22767 wrapper: '<div></div>', 22768 22769 /** 22770 * Adds the parent link to the submenu. 22771 * @option 22772 * @type {boolean} 22773 * @default false 22774 */ 22775 parentLink: false, 22776 22777 /** 22778 * Allow the menu to return to root list on body click. 22779 * @option 22780 * @type {boolean} 22781 * @default false 22782 */ 22783 closeOnClick: false, 22784 22785 /** 22786 * Allow the menu to auto adjust height. 22787 * @option 22788 * @type {boolean} 22789 * @default false 22790 */ 22791 autoHeight: false, 22792 22793 /** 22794 * Animate the auto adjust height. 22795 * @option 22796 * @type {boolean} 22797 * @default false 22798 */ 22799 animateHeight: false, 22800 22801 /** 22802 * Scroll to the top of the menu after opening a submenu or navigating back using the menu back button 22803 * @option 22804 * @type {boolean} 22805 * @default false 22806 */ 22807 scrollTop: false, 22808 22809 /** 22810 * String jquery selector (for example 'body') of element to take offset().top from, if empty string the drilldown menu offset().top is taken 22811 * @option 22812 * @type {string} 22813 * @default '' 22814 */ 22815 scrollTopElement: '', 22816 22817 /** 22818 * ScrollTop offset 22819 * @option 22820 * @type {number} 22821 * @default 0 22822 */ 22823 scrollTopOffset: 0, 22824 22825 /** 22826 * Scroll animation duration 22827 * @option 22828 * @type {number} 22829 * @default 500 22830 */ 22831 animationDuration: 500, 22832 22833 /** 22834 * Scroll animation easing. Can be `'swing'` or `'linear'`. 22835 * @option 22836 * @type {string} 22837 * @see {@link https://api.jquery.com/animate|JQuery animate} 22838 * @default 'swing' 22839 */ 22840 animationEasing: 'swing' // holdOpen: false 22841 22842}; 22843 22844 22845/***/ }), 22846 22847/***/ 3: 22848/*!**********************************************************!*\ 22849 !*** multi ./js/entries/plugins/foundation.drilldown.js ***! 22850 \**********************************************************/ 22851/*! no static exports found */ 22852/***/ (function(module, exports, __webpack_require__) { 22853 22854module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.drilldown.js */"./js/entries/plugins/foundation.drilldown.js"); 22855 22856 22857/***/ }), 22858 22859/***/ "jquery": 22860/*!********************************************************************************************!*\ 22861 !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***! 22862 \********************************************************************************************/ 22863/*! no static exports found */ 22864/***/ (function(module, exports) { 22865 22866module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__; 22867 22868/***/ }) 22869 22870/******/ }); 22871}); 22872//# sourceMappingURL=foundation.drilldown.js.map 22873(function webpackUniversalModuleDefinition(root, factory) { 22874 if(typeof exports === 'object' && typeof module === 'object') 22875 module.exports = factory(require("./foundation.util.keyboard"), require("./foundation.core"), require("jquery"), require("./foundation.util.box"), require("./foundation.util.motion"), require("./foundation.util.touch")); 22876 else if(typeof define === 'function' && define.amd) 22877 define(["./foundation.util.keyboard", "./foundation.core", "jquery", "./foundation.util.box", "./foundation.util.motion", "./foundation.util.touch"], factory); 22878 else if(typeof exports === 'object')
vendor: 5,158 bytes, lines 22879-22975
22879 exports["foundation.dropdown"] = factory(require("./foundation.util.keyboard"), require("./foundation.core"), require("jquery"), require("./foundation.util.box"), require("./foundation.util.motion"), require("./foundation.util.touch")); 22880 else 22881 root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.dropdown"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.util.keyboard"], root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["jQuery"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.box"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.motion"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.touch"]); 22882})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_util_keyboard__, __WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE_jquery__, __WEBPACK_EXTERNAL_MODULE__foundation_util_box__, __WEBPACK_EXTERNAL_MODULE__foundation_util_motion__, __WEBPACK_EXTERNAL_MODULE__foundation_util_touch__) { 22883return /******/ (function(modules) { // webpackBootstrap 22884/******/ // The module cache 22885/******/ var installedModules = {}; 22886/******/ 22887/******/ // The require function 22888/******/ function __webpack_require__(moduleId) { 22889/******/ 22890/******/ // Check if module is in cache 22891/******/ if(installedModules[moduleId]) { 22892/******/ return installedModules[moduleId].exports; 22893/******/ } 22894/******/ // Create a new module (and put it into the cache) 22895/******/ var module = installedModules[moduleId] = { 22896/******/ i: moduleId, 22897/******/ l: false, 22898/******/ exports: {} 22899/******/ }; 22900/******/ 22901/******/ // Execute the module function 22902/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 22903/******/ 22904/******/ // Flag the module as loaded 22905/******/ module.l = true; 22906/******/ 22907/******/ // Return the exports of the module 22908/******/ return module.exports; 22909/******/ } 22910/******/ 22911/******/ 22912/******/ // expose the modules object (__webpack_modules__) 22913/******/ __webpack_require__.m = modules; 22914/******/ 22915/******/ // expose the module cache 22916/******/ __webpack_require__.c = installedModules; 22917/******/ 22918/******/ // define getter function for harmony exports 22919/******/ __webpack_require__.d = function(exports, name, getter) { 22920/******/ if(!__webpack_require__.o(exports, name)) { 22921/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); 22922/******/ } 22923/******/ }; 22924/******/ 22925/******/ // define __esModule on exports 22926/******/ __webpack_require__.r = function(exports) { 22927/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 22928/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 22929/******/ } 22930/******/ Object.defineProperty(exports, '__esModule', { value: true }); 22931/******/ }; 22932/******/ 22933/******/ // create a fake namespace object 22934/******/ // mode & 1: value is a module id, require it 22935/******/ // mode & 2: merge all properties of value into the ns 22936/******/ // mode & 4: return value when already ns object 22937/******/ // mode & 8|1: behave like require 22938/******/ __webpack_require__.t = function(value, mode) { 22939/******/ if(mode & 1) value = __webpack_require__(value); 22940/******/ if(mode & 8) return value; 22941/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; 22942/******/ var ns = Object.create(null); 22943/******/ __webpack_require__.r(ns); 22944/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); 22945/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); 22946/******/ return ns; 22947/******/ }; 22948/******/ 22949/******/ // getDefaultExport function for compatibility with non-harmony modules 22950/******/ __webpack_require__.n = function(module) { 22951/******/ var getter = module && module.__esModule ? 22952/******/ function getDefault() { return module['default']; } : 22953/******/ function getModuleExports() { return module; }; 22954/******/ __webpack_require__.d(getter, 'a', getter); 22955/******/ return getter; 22956/******/ }; 22957/******/ 22958/******/ // Object.prototype.hasOwnProperty.call 22959/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; 22960/******/ 22961/******/ // __webpack_public_path__ 22962/******/ __webpack_require__.p = ""; 22963/******/ 22964/******/ 22965/******/ // Load entry module and return exports 22966/******/ return __webpack_require__(__webpack_require__.s = 4); 22967/******/ }) 22968/************************************************************************/ 22969/******/ ({ 22970 22971/***/ "./foundation.core": 22972/*!****************************************************************************************************************************************************************!*\ 22973 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***! 22974 \****************************************************************************************************************************************************************/ 22975/*! no static exports found */
22976/***/ (function(module, exports) { 22977 22978module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__; 22979 22980/***/ }), 22981 22982/***/ "./foundation.util.box": 22983/*!********************************************************************************************************************************************************************************!*\ 22984 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.box"],"amd":"./foundation.util.box","commonjs":"./foundation.util.box","commonjs2":"./foundation.util.box"} ***! 22985 \********************************************************************************************************************************************************************************/ 22986/*! no static exports found */ 22987/***/ (function(module, exports) { 22988 22989module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_box__; 22990 22991/***/ }), 22992 22993/***/ "./foundation.util.keyboard": 22994/*!****************************************************************************************************************************************************************************************************!*\ 22995 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.keyboard"],"amd":"./foundation.util.keyboard","commonjs":"./foundation.util.keyboard","commonjs2":"./foundation.util.keyboard"} ***! 22996 \****************************************************************************************************************************************************************************************************/ 22997/*! no static exports found */ 22998/***/ (function(module, exports) { 22999 23000module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_keyboard__; 23001 23002/***/ }), 23003 23004/***/ "./foundation.util.motion": 23005/*!********************************************************************************************************************************************************************************************!*\ 23006 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.motion"],"amd":"./foundation.util.motion","commonjs":"./foundation.util.motion","commonjs2":"./foundation.util.motion"} ***! 23007 \********************************************************************************************************************************************************************************************/ 23008/*! no static exports found */ 23009/***/ (function(module, exports) { 23010 23011module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_motion__; 23012 23013/***/ }), 23014 23015/***/ "./foundation.util.touch": 23016/*!****************************************************************************************************************************************************************************************!*\ 23017 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.touch"],"amd":"./foundation.util.touch","commonjs":"./foundation.util.touch","commonjs2":"./foundation.util.touch"} ***! 23018 \****************************************************************************************************************************************************************************************/ 23019/*! no static exports found */ 23020/***/ (function(module, exports) { 23021 23022module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_touch__; 23023 23024/***/ }), 23025
23026/***/ "./js/entries/plugins/foundation.dropdown.js": 23027/*!***************************************************!*\ 23028 !*** ./js/entries/plugins/foundation.dropdown.js ***! 23029 \***************************************************/ 23030/*! exports provided: Foundation, Dropdown */ 23031/***/ (function(module, __webpack_exports__, __webpack_require__) { 23032 23033"use strict"; 23034__webpack_require__.r(__webpack_exports__); 23035/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core"); 23036/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__); 23037/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; }); 23038 23039/* harmony import */ var _foundation_dropdown__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.dropdown */ "./js/foundation.dropdown.js"); 23040/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Dropdown", function() { return _foundation_dropdown__WEBPACK_IMPORTED_MODULE_1__["Dropdown"]; }); 23041 23042 23043 23044_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].plugin(_foundation_dropdown__WEBPACK_IMPORTED_MODULE_1__["Dropdown"], 'Dropdown'); 23045 23046 23047/***/ }), 23048
vendor: 4,182 bytes, lines 23049-23087
23049/***/ "./js/foundation.dropdown.js": 23050/*!***********************************!*\ 23051 !*** ./js/foundation.dropdown.js ***! 23052 \***********************************/ 23053/*! exports provided: Dropdown */ 23054/***/ (function(module, __webpack_exports__, __webpack_require__) { 23055 23056"use strict"; 23057__webpack_require__.r(__webpack_exports__); 23058/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Dropdown", function() { return Dropdown; }); 23059/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery"); 23060/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__); 23061/* harmony import */ var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.util.keyboard */ "./foundation.util.keyboard"); 23062/* harmony import */ var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__); 23063/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.core.utils */ "./foundation.core"); 23064/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__); 23065/* harmony import */ var _foundation_positionable__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./foundation.positionable */ "./js/foundation.positionable.js"); 23066/* harmony import */ var _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./foundation.util.triggers */ "./js/foundation.util.triggers.js"); 23067/* harmony import */ var _foundation_util_touch__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./foundation.util.touch */ "./foundation.util.touch"); 23068/* harmony import */ var _foundation_util_touch__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_touch__WEBPACK_IMPORTED_MODULE_5__); 23069 23070 23071function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } 23072 23073function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 23074 23075function _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); } } 23076 23077function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } 23078 23079function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } 23080 23081function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } 23082 23083function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); } 23084 23085function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; } 23086 23087function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o
23087) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } 23088 23089function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } 23090 23091function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } 23092 23093 23094 23095 23096 23097 23098 23099/** 23100 * Dropdown module. 23101 * @module foundation.dropdown 23102 * @requires foundation.util.keyboard 23103 * @requires foundation.util.box 23104 * @requires foundation.util.touch 23105 * @requires foundation.util.triggers 23106 */ 23107 23108var Dropdown = 23109/*#__PURE__*/ 23110function (_Positionable) { 23111 _inherits(Dropdown, _Positionable); 23112 23113 function Dropdown() { 23114 _classCallCheck(this, Dropdown); 23115 23116 return _possibleConstructorReturn(this, _getPrototypeOf(Dropdown).apply(this, arguments)); 23117 } 23118 23119 _createClass(Dropdown, [{ 23120 key: "_setup", 23121 23122 /** 23123 * Creates a new instance of a dropdown. 23124 * @class 23125 * @name Dropdown 23126 * @param {jQuery} element - jQuery object to make into a dropdown. 23127 * Object should be of the dropdown panel, rather than its anchor. 23128 * @param {Object} options - Overrides to the default plugin settings. 23129 */ 23130 value: function _setup(element, options) { 23131 this.$element = element; 23132 this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, Dropdown.defaults, this.$element.data(), options); 23133 this.className = 'Dropdown'; // ie9 back compat 23134 // Touch and Triggers init are idempotent, just need to make sure they are initialized 23135 23136 _foundation_util_touch__WEBPACK_IMPORTED_MODULE_5__["Touch"].init(jquery__WEBPACK_IMPORTED_MODULE_0___default.a); 23137 _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_4__["Triggers"].init(jquery__WEBPACK_IMPORTED_MODULE_0___default.a); 23138 23139 this._init(); 23140 23141 _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"].register('Dropdown', { 23142 'ENTER': 'toggle', 23143 'SPACE': 'toggle', 23144 'ESCAPE': 'close' 23145 }); 23146 } 23147 /** 23148 * Initializes the plugin by setting/checking options and attributes, adding helper variables, and saving the anchor. 23149 * @function 23150 * @private 23151 */ 23152 23153 }, { 23154 key: "_init", 23155 value: function _init() { 23156 var $id = this.$element.attr('id'); 23157 this.$anchors = jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-toggle=\"".concat($id, "\"]")).length ? jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-toggle=\"".concat($id, "\"]")) : jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-open=\"".concat($id, "\"]")); 23158 this.$anchors.attr({ 23159 'aria-controls': $id, 23160 'data-is-focus': false, 23161 'data-yeti-box': $id, 23162 'aria-haspopup': true, 23163 'aria-expanded': false 23164 }); 23165 23166 this._setCurrentAnchor(this.$anchors.first()); 23167 23168 if (this.options.parentClass) { 23169 this.$parent = this.$element.parents('.' + this.options.parentClass); 23170 } else { 23171 this.$parent = null; 23172 } // Set [aria-labelledby] on the Dropdown if it is not set 23173 23174 23175 if (typeof this.$element.attr('aria-labelledby') === 'undefined') { 23176 // Get the anchor ID or create one 23177 if (typeof this.$currentAnchor.attr('id') === 'undefined') { 23178 this.$currentAnchor.attr('id', Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["GetYoDigits"])(6, 'dd-anchor')); 23179 } 23180 23181 this.$element.attr('aria-labelledby', this.$currentAnchor.attr('id')); 23182 } 23183 23184 this.$element.attr({ 23185 'aria-hidden': 'true', 23186 'data-yeti-box': $id, 23187 'data-resize': $id 23188 }); 23189 23190 _get(_getPrototypeOf(Dropdown.prototype), "_init", this).call(this); 23191 23192 this._events(); 23193 } 23194 }, { 23195 key: "_getDefaultPosition", 23196 value: function _getDefaultPosition() { 23197 // handle legacy classnames 23198 var position = this.$element[0].className.match(/(top|left|right|bottom)/g); 23199 23200 if (position) { 23201 return position[0]; 23202 } else { 23203 return 'bottom'; 23204 } 23205 } 23206 }, { 23207 key: "_getDefaultAlignment", 23208 value: function _getDefaultAlignment() { 23209 // handle legacy float approach 23210 var horizontalPosition = /float-(\S+)/.exec(this.$currentAnchor.attr('class')); 23211 23212 if (horizontalPosition) { 23213 return horizontalPosition[1]; 23214 } 23215 23216 return _get(_getPrototypeOf(Dropdown.prototype), "_getDefaultAlignment", this).call(this); 23217 } 23218 /** 23219 * Sets the position and orientation of the dropdown pane, checks for c
vendor: 6,007 bytes, lines 23219-23389
23219ollisions if allow-overlap is not true. 23220 * Recursively calls itself if a collision is detected, with a new position class. 23221 * @function 23222 * @private 23223 */ 23224 23225 }, { 23226 key: "_setPosition", 23227 value: function _setPosition() { 23228 this.$element.removeClass("has-position-".concat(this.position, " has-alignment-").concat(this.alignment)); 23229 23230 _get(_getPrototypeOf(Dropdown.prototype), "_setPosition", this).call(this, this.$currentAnchor, this.$element, this.$parent); 23231 23232 this.$element.addClass("has-position-".concat(this.position, " has-alignment-").concat(this.alignment)); 23233 } 23234 /** 23235 * Make it a current anchor. 23236 * Current anchor as the reference for the position of Dropdown panes. 23237 * @param {HTML} el - DOM element of the anchor. 23238 * @function 23239 * @private 23240 */ 23241 23242 }, { 23243 key: "_setCurrentAnchor", 23244 value: function _setCurrentAnchor(el) { 23245 this.$currentAnchor = jquery__WEBPACK_IMPORTED_MODULE_0___default()(el); 23246 } 23247 /** 23248 * Adds event listeners to the element utilizing the triggers utility library. 23249 * @function 23250 * @private 23251 */ 23252 23253 }, { 23254 key: "_events", 23255 value: function _events() { 23256 var _this = this, 23257 hasTouch = 'ontouchstart' in window || typeof window.ontouchstart !== 'undefined'; 23258 23259 this.$element.on({ 23260 'open.zf.trigger': this.open.bind(this), 23261 'close.zf.trigger': this.close.bind(this), 23262 'toggle.zf.trigger': this.toggle.bind(this), 23263 'resizeme.zf.trigger': this._setPosition.bind(this) 23264 }); 23265 this.$anchors.off('click.zf.trigger').on('click.zf.trigger', function (e) { 23266 _this._setCurrentAnchor(this); 23267 23268 if ( // if forceFollow false, always prevent default action 23269 _this.options.forceFollow === false || // if forceFollow true and hover option true, only prevent default action on 1st click 23270 // on 2nd click (dropown opened) the default action (e.g. follow a href) gets executed 23271 hasTouch && _this.options.hover && _this.$element.hasClass('is-open') === false) { 23272 e.preventDefault(); 23273 } 23274 }); 23275 23276 if (this.options.hover) { 23277 this.$anchors.off('mouseenter.zf.dropdown mouseleave.zf.dropdown').on('mouseenter.zf.dropdown', function () { 23278 _this._setCurrentAnchor(this); 23279 23280 var bodyData = jquery__WEBPACK_IMPORTED_MODULE_0___default()('body').data(); 23281 23282 if (typeof bodyData.whatinput === 'undefined' || bodyData.whatinput === 'mouse') { 23283 clearTimeout(_this.timeout); 23284 _this.timeout = setTimeout(function () { 23285 _this.open(); 23286 23287 _this.$anchors.data('hover', true); 23288 }, _this.options.hoverDelay); 23289 } 23290 }).on('mouseleave.zf.dropdown', Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["ignoreMousedisappear"])(function () { 23291 clearTimeout(_this.timeout); 23292 _this.timeout = setTimeout(function () { 23293 _this.close(); 23294 23295 _this.$anchors.data('hover', false); 23296 }, _this.options.hoverDelay); 23297 })); 23298 23299 if (this.options.hoverPane) { 23300 this.$element.off('mouseenter.zf.dropdown mouseleave.zf.dropdown').on('mouseenter.zf.dropdown', function () { 23301 clearTimeout(_this.timeout); 23302 }).on('mouseleave.zf.dropdown', Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["ignoreMousedisappear"])(function () { 23303 clearTimeout(_this.timeout); 23304 _this.timeout = setTimeout(function () { 23305 _this.close(); 23306 23307 _this.$anchors.data('hover', false); 23308 }, _this.options.hoverDelay); 23309 })); 23310 } 23311 } 23312 23313 this.$anchors.add(this.$element).on('keydown.zf.dropdown', function (e) { 23314 var $target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 23315 visibleFocusableElements = _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"].findFocusable(_this.$element); 23316 _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"].handleKey(e, 'Dropdown', { 23317 open: function open() { 23318 if ($target.is(_this.$anchors) && !$target.is('input, textarea')) { 23319 _this.open(); 23320 23321 _this.$element.attr('tabindex', -1).focus(); 23322 23323 e.preventDefault(); 23324 } 23325 }, 23326 close: function close() { 23327 _this.close(); 23328 23329 _this.$anchors.focus(); 23330 } 23331 }); 23332 }); 23333 } 23334 /** 23335 * Adds an event handler to the body to close any dropdowns on a click. 23336 * @function 23337 * @private 23338 */ 23339 23340 }, { 23341 key: "_addBodyHandler", 23342 value: function _addBodyHandler() { 23343 var $body = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document.body).not(this.$element), 23344 _this = this; 23345 23346 $body.off('click.zf.dropdown tap.zf.dropdown').on('click.zf.dropdown tap.zf.dropdown', function (e) { 23347 if (_this.$anchors.is(e.target) || _this.$anchors.find(e.target).length) { 23348 return; 23349 } 23350 23351 if (_this.$element.is(e.target) || _this.$element.find(e.target).length) { 23352 return; 23353 } 23354 23355 _this.close(); 23356 23357 $body.off('click.zf.dropdown tap.zf.dropdown'); 23358 }); 23359 } 23360 /** 23361 * Opens the dropdown pane, and fires a bubbling event to close other dropdowns. 23362 * @function 23363 * @fires Dropdown#closeme 23364 * @fires Dropdown#show 23365 */ 23366 23367 }, { 23368 key: "open", 23369 value: function open() { 23370 // var _this = this; 23371 23372 /** 23373 * Fires to close other open dropdowns, typically when dropdown is opening 23374 * @event Dropdown#closeme 23375 */ 23376 this.$element.trigger('closeme.zf.dropdown', this.$element.attr('id')); 23377 this.$anchors.addClass('hover').attr({ 23378 'aria-expanded': true 23379 }); // this.$element/*.show()*/; 23380 23381 this.$element.addClass('is-opening'); 23382 23383 this._setPosition(); 23384 23385 this.$element.removeClass('is-opening').addClass('is-open').attr({ 23386 'aria-hidden': false 23387 }); 23388 23389 if (this.options.autoFocus) {
vendor: 4,783 bytes, lines 23390-23590
23390 var $focusable = _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"].findFocusable(this.$element); 23391 23392 if ($focusable.length) { 23393 $focusable.eq(0).focus(); 23394 } 23395 } 23396 23397 if (this.options.closeOnClick) { 23398 this._addBodyHandler(); 23399 } 23400 23401 if (this.options.trapFocus) { 23402 _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"].trapFocus(this.$element); 23403 } 23404 /** 23405 * Fires once the dropdown is visible. 23406 * @event Dropdown#show 23407 */ 23408 23409 23410 this.$element.trigger('show.zf.dropdown', [this.$element]); 23411 } 23412 /** 23413 * Closes the open dropdown pane. 23414 * @function 23415 * @fires Dropdown#hide 23416 */ 23417 23418 }, { 23419 key: "close", 23420 value: function close() { 23421 if (!this.$element.hasClass('is-open')) { 23422 return false; 23423 } 23424 23425 this.$element.removeClass('is-open').attr({ 23426 'aria-hidden': true 23427 }); 23428 this.$anchors.removeClass('hover').attr('aria-expanded', false); 23429 /** 23430 * Fires once the dropdown is no longer visible. 23431 * @event Dropdown#hide 23432 */ 23433 23434 this.$element.trigger('hide.zf.dropdown', [this.$element]); 23435 23436 if (this.options.trapFocus) { 23437 _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_1__["Keyboard"].releaseFocus(this.$element); 23438 } 23439 } 23440 /** 23441 * Toggles the dropdown pane's visibility. 23442 * @function 23443 */ 23444 23445 }, { 23446 key: "toggle", 23447 value: function toggle() { 23448 if (this.$element.hasClass('is-open')) { 23449 if (this.$anchors.data('hover')) return; 23450 this.close(); 23451 } else { 23452 this.open(); 23453 } 23454 } 23455 /** 23456 * Destroys the dropdown. 23457 * @function 23458 */ 23459 23460 }, { 23461 key: "_destroy", 23462 value: function _destroy() { 23463 this.$element.off('.zf.trigger').hide(); 23464 this.$anchors.off('.zf.dropdown'); 23465 jquery__WEBPACK_IMPORTED_MODULE_0___default()(document.body).off('click.zf.dropdown tap.zf.dropdown'); 23466 } 23467 }]); 23468 23469 return Dropdown; 23470}(_foundation_positionable__WEBPACK_IMPORTED_MODULE_3__["Positionable"]); 23471 23472Dropdown.defaults = { 23473 /** 23474 * Class that designates bounding container of Dropdown (default: window) 23475 * @option 23476 * @type {?string} 23477 * @default null 23478 */ 23479 parentClass: null, 23480 23481 /** 23482 * Amount of time to delay opening a submenu on hover event. 23483 * @option 23484 * @type {number} 23485 * @default 250 23486 */ 23487 hoverDelay: 250, 23488 23489 /** 23490 * Allow submenus to open on hover events 23491 * @option 23492 * @type {boolean} 23493 * @default false 23494 */ 23495 hover: false, 23496 23497 /** 23498 * Don't close dropdown when hovering over dropdown pane 23499 * @option 23500 * @type {boolean} 23501 * @default false 23502 */ 23503 hoverPane: false, 23504 23505 /** 23506 * Number of pixels between the dropdown pane and the triggering element on open. 23507 * @option 23508 * @type {number} 23509 * @default 0 23510 */ 23511 vOffset: 0, 23512 23513 /** 23514 * Number of pixels between the dropdown pane and the triggering element on open. 23515 * @option 23516 * @type {number} 23517 * @default 0 23518 */ 23519 hOffset: 0, 23520 23521 /** 23522 * Position of dropdown. Can be left, right, bottom, top, or auto. 23523 * @option 23524 * @type {string} 23525 * @default 'auto' 23526 */ 23527 position: 'auto', 23528 23529 /** 23530 * Alignment of dropdown relative to anchor. Can be left, right, bottom, top, center, or auto. 23531 * @option 23532 * @type {string} 23533 * @default 'auto' 23534 */ 23535 alignment: 'auto', 23536 23537 /** 23538 * Allow overlap of container/window. If false, dropdown will first try to position as defined by data-position and data-alignment, but reposition if it would cause an overflow. 23539 * @option 23540 * @type {boolean} 23541 * @default false 23542 */ 23543 allowOverlap: false, 23544 23545 /** 23546 * Allow overlap of only the bottom of the container. This is the most common 23547 * behavior for dropdowns, allowing the dropdown to extend the bottom of the 23548 * screen but not otherwise influence or break out of the container. 23549 * @option 23550 * @type {boolean} 23551 * @default true 23552 */ 23553 allowBottomOverlap: true, 23554 23555 /** 23556 * Allow the plugin to trap focus to the dropdown pane if opened with keyboard commands. 23557 * @option 23558 * @type {boolean} 23559 * @default false 23560 */ 23561 trapFocus: false, 23562 23563 /** 23564 * Allow the plugin to set focus to the first focusable element within the pane, regardless of method of opening. 23565 * @option 23566 * @type {boolean} 23567 * @default false 23568 */ 23569 autoFocus: false, 23570 23571 /** 23572 * Allows a click on the body to close the dropdown. 23573 * @option 23574 * @type {boolean} 23575 * @default false 23576 */ 23577 closeOnClick: false, 23578 23579 /** 23580 * If true the default action of the toggle (e.g. follow a link with href) gets executed on click. If hover option is also true the default action gets prevented on first click for mobile / touch devices and executed on second click. 23581 * @option 23582 * @type {boolean} 23583 * @default true 23584 */ 23585 forceFollow: true 23586}; 23587 23588 23589/***/ }), 23590
23591/***/ "./js/foundation.positionable.js": 23592/*!***************************************!*\ 23593 !*** ./js/foundation.positionable.js ***! 23594 \***************************************/ 23595/*! exports provided: Positionable */ 23596/***/ (function(module, __webpack_exports__, __webpack_require__) { 23597 23598"use strict"; 23599__webpack_require__.r(__webpack_exports__); 23600/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Positionable", function() { return Positionable; }); 23601/* harmony import */ var _foundation_util_box__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.util.box */ "./foundation.util.box"); 23602/* harmony import */ var _foundation_util_box__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_box__WEBPACK_IMPORTED_MODULE_0__); 23603/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.plugin */ "./foundation.core"); 23604/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__); 23605 23606 23607function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } 23608 23609function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 23610 23611function _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); } } 23612 23613function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } 23614 23615function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } 23616 23617function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } 23618 23619function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } 23620 23621function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } 23622 23623function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } 23624 23625 23626 23627 23628var POSITIONS = ['left', 'right', 'top', 'bottom']; 23629var VERTICAL_ALIGNMENTS = ['top', 'bottom', 'center']; 23630var HORIZONTAL_ALIGNMENTS = ['left', 'right', 'center']; 23631var ALIGNMENTS = { 23632 'left': VERTICAL_ALIGNMENTS, 23633 'right': VERTICAL_ALIGNMENTS, 23634 'top': HORIZONTAL_ALIGNMENTS, 23635 'bottom': HORIZONTAL_ALIGNMENTS 23636}; 23637 23638function nextItem(item, array) { 23639 var currentIdx = array.indexOf(item); 23640 23641 if (currentIdx === array.length - 1) { 23642 return array[0]; 23643 } else { 23644 return array[currentIdx + 1]; 23645 } 23646} 23647 23648var Positionable = 23649/*#__PURE__*/ 23650function (_Plugin) { 23651 _inherits(Positionable, _Plugin); 23652 23653 function Positionable() { 23654 _classCallCheck(this, Positionable); 23655 23656 return _possibleConstructorReturn(this, _getPrototypeOf(Positionable).apply(this, arguments)); 23657 } 23658 23659 _createClass(Positionable, [{ 23660 key: "_init", 23661 23662 /** 23663 * Abstract class encapsulating the tether-like explicit positioning logic 23664 * including repositioning based on overlap. 23665 * Expects classes to define defaults for vOffset, hOffset, position, 23666 * alignment, allowOverlap, and allowBottomOverlap. They can do this by 23667 * extending the defaults, or (for now recommended due to the way docs are 23668 * generated) by explicitly declaring them. 23669 * 23670 **/ 23671 value: function _init() { 23672 this.triedPositions = {}; 23673 this.position = this.options.position === 'auto' ? this._getDefaultPosition() : this.options.position; 23674 this.alignment = this.options.alignment === 'auto' ? this._getDefaultAlignment() : this.options.alignment; 23675 this.originalPosition = this.position; 23676 this.originalAlignment = this.alignment; 23677 } 23678 }, { 23679 key: "_getDefaultPosition", 23680 value: function _getDefaultPosition() { 23681 return 'bottom'; 23682 } 23683 }, { 23684 key: "_getDefaultAlignment", 23685 value: function _getDefaultAlignment() { 23686 switch (this.position) { 23687 case 'bottom': 23688 case 'top': 23689 return Object(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["rtl"])() ? 'right' : 'left'; 23690 23691 case 'left': 23692 case 'right': 23693 return 'bottom'; 23694 } 23695 } 23696 /** 23697 * Adjusts the positionable possible positions by iterating through alignments 23698 * and positions. 23699 * @function 23700 * @private 23701 */ 23702 23703 }, { 23704 key: "_reposition", 23705 value: function _reposition() { 23706 if (this._alignmentsExhausted(this.position)) { 23707 this.position = nextItem(this.position, POSITIONS); 23708 this.alignment = ALIGNMENTS[this.position][0]; 23709 } else { 23710 this._realign(); 23711 } 23712 } 23713 /** 23714 * Adjusts the dropdown pane possible positions by iterating through alignments 23715 * on the current position. 23716 * @function 23717 * @private 23718 */ 23719 23720 }, { 23721 key: "_realign", 23722 value: function _realign() { 23723 this._addTriedPosition(this.position, this.alignment); 23724 23725 this.alignment = nextItem(this.alignment, ALIGNMENTS[this.position]); 23726 } 23727 }, { 23728 key: "_addTriedPosition", 23729 value: function _addTriedPosition(position, alignment) { 23730 this.triedPositions[position] = this.triedPositions[position] || []; 23731 this.triedPositions[position].push(alignment); 23732 } 23733 }, { 23734 key: "_positionsExhausted", 23735 value: function _positionsExhausted() { 23736 var isExhausted = true; 23737 23738 for (var i = 0; i < POSITIONS.length; i++) { 23739 isExhausted = isExhausted && this._alignmentsExhausted(POSITIONS[i]); 23740 } 23741 23742 return isExhausted; 23743 } 23744 }, { 23745 key: "_alignmentsExhausted", 23746 value: function _alignmentsExhausted(position) { 23747 return this.triedPositions[position] && this.triedPositions[position].length == ALIGNMENTS[position].length; 23748 } // When we're trying to center, we don't want to apply offset that's going to 23749 // take us just off center, so wrap around to return 0 for the appropriate 23750 // offset in those alignments. TODO: Figure out if we want to make this 23751 // configurable behavior... it feels more intuitive, especially for tooltips, but 23752 // it's possible someone might actually want to start from center and then nudge 23753 // slightly off. 23754 23755 }, { 23756 key: "_getVOffset", 23757 value: function _getVOffset() { 23758 return this.options.vOffset; 23759 } 23760 }, { 23761 key: "_getHOffset", 23762 value: function _getHOffset() { 23763 return this.options.hOffset; 23764 } 23765 }, { 23766 key: "_setPosition", 23767 value: function _setPosition($anchor, $element, $parent) { 23768 if ($anchor.attr('aria-expanded') === 'false') { 23769 return false;
23770 } 23771 23772 if (!this.options.allowOverlap) { 23773 // restore original position & alignment before checking overlap 23774 this.position = this.originalPosition; 23775 this.alignment = this.originalAlignment; 23776 } 23777 23778 $element.offset(_foundation_util_box__WEBPACK_IMPORTED_MODULE_0__["Box"].GetExplicitOffsets($element, $anchor, this.position, this.alignment, this._getVOffset(), this._getHOffset())); 23779 23780 if (!this.options.allowOverlap) { 23781 var minOverlap = 100000000; // default coordinates to how we start, in case we can't figure out better 23782 23783 var minCoordinates = { 23784 position: this.position, 23785 alignment: this.alignment 23786 }; 23787 23788 while (!this._positionsExhausted()) { 23789 var overlap = _foundation_util_box__WEBPACK_IMPORTED_MODULE_0__["Box"].OverlapArea($element, $parent, false, false, this.options.allowBottomOverlap); 23790 23791 if (overlap === 0) { 23792 return; 23793 } 23794 23795 if (overlap < minOverlap) { 23796 minOverlap = overlap; 23797 minCoordinates = { 23798 position: this.position, 23799 alignment: this.alignment 23800 }; 23801 } 23802 23803 this._reposition(); 23804 23805 $element.offset(_foundation_util_box__WEBPACK_IMPORTED_MODULE_0__["Box"].GetExplicitOffsets($element, $anchor, this.position, this.alignment, this._getVOffset(), this._getHOffset())); 23806 } // If we get through the entire loop, there was no non-overlapping 23807 // position available. Pick the version with least overlap. 23808 23809 23810 this.position = minCoordinates.position; 23811 this.alignment = minCoordinates.alignment; 23812 $element.offset(_foundation_util_box__WEBPACK_IMPORTED_MODULE_0__["Box"].GetExplicitOffsets($element, $anchor, this.position, this.alignment, this._getVOffset(), this._getHOffset())); 23813 } 23814 } 23815 }]); 23816 23817 return Positionable; 23818}(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["Plugin"]); 23819 23820Positionable.defaults = { 23821 /** 23822 * Position of positionable relative to anchor. Can be left, right, bottom, top, or auto. 23823 * @option 23824 * @type {string} 23825 * @default 'auto' 23826 */ 23827 position: 'auto', 23828 23829 /** 23830 * Alignment of positionable relative to anchor. Can be left, right, bottom, top, center, or auto. 23831 * @option 23832 * @type {string} 23833 * @default 'auto' 23834 */ 23835 alignment: 'auto', 23836 23837 /** 23838 * Allow overlap of container/window. If false, dropdown positionable first 23839 * try to position as defined by data-position and data-alignment, but 23840 * reposition if it would cause an overflow. 23841 * @option 23842 * @type {boolean} 23843 * @default false 23844 */ 23845 allowOverlap: false, 23846 23847 /** 23848 * Allow overlap of only the bottom of the container. This is the most common 23849 * behavior for dropdowns, allowing the dropdown to extend the bottom of the 23850 * screen but not otherwise influence or break out of the container. 23851 * @option 23852 * @type {boolean} 23853 * @default true 23854 */ 23855 allowBottomOverlap: true, 23856 23857 /** 23858 * Number of pixels the positionable should be separated vertically from anchor 23859 * @option 23860 * @type {number} 23861 * @default 0 23862 */ 23863 vOffset: 0, 23864 23865 /** 23866 * Number of pixels the positionable should be separated horizontally from anchor 23867 * @option 23868 * @type {number} 23869 * @default 0 23870 */ 23871 hOffset: 0 23872}; 23873 23874 23875/***/ }), 23876
vendor: 12,981 bytes, lines 23877-24191
23877/***/ "./js/foundation.util.triggers.js": 23878/*!****************************************!*\ 23879 !*** ./js/foundation.util.triggers.js ***! 23880 \****************************************/ 23881/*! exports provided: Triggers */ 23882/***/ (function(module, __webpack_exports__, __webpack_require__) { 23883 23884"use strict"; 23885__webpack_require__.r(__webpack_exports__); 23886/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Triggers", function() { return Triggers; }); 23887/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery"); 23888/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__); 23889/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.utils */ "./foundation.core"); 23890/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__); 23891/* harmony import */ var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.util.motion */ "./foundation.util.motion"); 23892/* harmony import */ var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__); 23893 23894 23895function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } 23896 23897 23898 23899 23900 23901var MutationObserver = function () { 23902 var prefixes = ['WebKit', 'Moz', 'O', 'Ms', '']; 23903 23904 for (var i = 0; i < prefixes.length; i++) { 23905 if ("".concat(prefixes[i], "MutationObserver") in window) { 23906 return window["".concat(prefixes[i], "MutationObserver")]; 23907 } 23908 } 23909 23910 return false; 23911}(); 23912 23913var triggers = function triggers(el, type) { 23914 el.data(type).split(' ').forEach(function (id) { 23915 jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(id))[type === 'close' ? 'trigger' : 'triggerHandler']("".concat(type, ".zf.trigger"), [el]); 23916 }); 23917}; 23918 23919var Triggers = { 23920 Listeners: { 23921 Basic: {}, 23922 Global: {} 23923 }, 23924 Initializers: {} 23925}; 23926Triggers.Listeners.Basic = { 23927 openListener: function openListener() { 23928 triggers(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'open'); 23929 }, 23930 closeListener: function closeListener() { 23931 var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('close'); 23932 23933 if (id) { 23934 triggers(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'close'); 23935 } else { 23936 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger('close.zf.trigger'); 23937 } 23938 }, 23939 toggleListener: function toggleListener() { 23940 var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('toggle'); 23941 23942 if (id) { 23943 triggers(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'toggle'); 23944 } else { 23945 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger('toggle.zf.trigger'); 23946 } 23947 }, 23948 closeableListener: function closeableListener(e) { 23949 var animation = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('closable'); // Only close the first closable element. See https://git.io/zf-7833 23950 23951 e.stopPropagation(); 23952 23953 if (animation !== '') { 23954 _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__["Motion"].animateOut(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), animation, function () { 23955 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger('closed.zf'); 23956 }); 23957 } else { 23958 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).fadeOut().trigger('closed.zf'); 23959 } 23960 }, 23961 toggleFocusListener: function toggleFocusListener() { 23962 var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('toggle-focus'); 23963 jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(id)).triggerHandler('toggle.zf.trigger', [jquery__WEBPACK_IMPORTED_MODULE_0___default()(this)]); 23964 } 23965}; // Elements with [data-open] will reveal a plugin that supports it when clicked. 23966 23967Triggers.Initializers.addOpenListener = function ($elem) { 23968 $elem.off('click.zf.trigger', Triggers.Listeners.Basic.openListener); 23969 $elem.on('click.zf.trigger', '[data-open]', Triggers.Listeners.Basic.openListener); 23970}; // Elements with [data-close] will close a plugin that supports it when clicked. 23971// If used without a value on [data-close], the event will bubble, allowing it to close a parent component. 23972 23973 23974Triggers.Initializers.addCloseListener = function ($elem) { 23975 $elem.off('click.zf.trigger', Triggers.Listeners.Basic.closeListener); 23976 $elem.on('click.zf.trigger', '[data-close]', Triggers.Listeners.Basic.closeListener); 23977}; // Elements with [data-toggle] will toggle a plugin that supports it when clicked. 23978 23979 23980Triggers.Initializers.addToggleListener = function ($elem) { 23981 $elem.off('click.zf.trigger', Triggers.Listeners.Basic.toggleListener); 23982 $elem.on('click.zf.trigger', '[data-toggle]', Triggers.Listeners.Basic.toggleListener); 23983}; // Elements with [data-closable] will respond to close.zf.trigger events. 23984 23985 23986Triggers.Initializers.addCloseableListener = function ($elem) { 23987 $elem.off('close.zf.trigger', Triggers.Listeners.Basic.closeableListener); 23988 $elem.on('close.zf.trigger', '[data-closeable], [data-closable]', Triggers.Listeners.Basic.closeableListener); 23989}; // Elements with [data-toggle-focus] will respond to coming in and out of focus 23990 23991 23992Triggers.Initializers.addToggleFocusListener = function ($elem) { 23993 $elem.off('focus.zf.trigger blur.zf.trigger', Triggers.Listeners.Basic.toggleFocusListener); 23994 $elem.on('focus.zf.trigger blur.zf.trigger', '[data-toggle-focus]', Triggers.Listeners.Basic.toggleFocusListener); 23995}; // More Global/complex listeners and triggers 23996 23997 23998Triggers.Listeners.Global = { 23999 resizeListener: function resizeListener($nodes) { 24000 if (!MutationObserver) { 24001 //fallback for IE 9 24002 $nodes.each(function () { 24003 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).triggerHandler('resizeme.zf.trigger'); 24004 }); 24005 } //trigger all listening elements and signal a resize event 24006 24007 24008 $nodes.attr('data-events', "resize"); 24009 }, 24010 scrollListener: function scrollListener($nodes) { 24011 if (!MutationObserver) { 24012 //fallback for IE 9 24013 $nodes.each(function () { 24014 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).triggerHandler('scrollme.zf.trigger'); 24015 }); 24016 } //trigger all listening elements and signal a scroll event 24017 24018 24019 $nodes.attr('data-events', "scroll"); 24020 }, 24021 closeMeListener: function closeMeListener(e, pluginId) { 24022 var plugin = e.namespace.split('.')[0]; 24023 var plugins = jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-".concat(plugin, "]")).not("[data-yeti-box=\"".concat(pluginId, "\"]")); 24024 plugins.each(function () { 24025 var _this = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this); 24026 24027 _this.triggerHandler('close.zf.trigger', [_this]); 24028 }); 24029 } // Global, parses whole document. 24030 24031}; 24032 24033Triggers.Initializers.addClosemeListener = function (pluginName) { 24034 var yetiBoxes = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-yeti-box]'), 24035 plugNames = ['dropdown', 'tooltip', 'reveal']; 24036 24037 if (pluginName) { 24038 if (typeof pluginName === 'string') { 24039 plugNames.push(pluginName); 24040 } else if (_typeof(pluginName) === 'object' && typeof pluginName[0] === 'string') { 24041 plugNames = plugNames.concat(pluginName); 24042 } else { 24043 console.error('Plugin names must be strings'); 24044 } 24045 } 24046 24047 if (yetiBoxes.length) { 24048 var listeners = plugNames.map(function (name) { 24049 return "closeme.zf.".concat(name); 24050 }).join(' '); 24051 jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(listeners).on(listeners, Triggers.Listeners.Global.closeMeListener); 24052 } 24053}; 24054 24055function debounceGlobalListener(debounce, trigger, listener) { 24056 var timer, 24057 args = Array.prototype.slice.call(arguments, 3); 24058 jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(trigger).on(trigger, function (e) { 24059 if (timer) { 24060 clearTimeout(timer); 24061 } 24062 24063 timer = setTimeout(function () { 24064 listener.apply(null, args); 24065 }, debounce || 10); //default time to emit scroll event 24066 }); 24067} 24068 24069Triggers.Initializers.addResizeListener = function (debounce) { 24070 var $nodes = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-resize]'); 24071 24072 if ($nodes.length) { 24073 debounceGlobalListener(debounce, 'resize.zf.trigger', Triggers.Listeners.Global.resizeListener, $nodes); 24074 } 24075}; 24076 24077Triggers.Initializers.addScrollListener = function (debounce) { 24078 var $nodes = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-scroll]'); 24079 24080 if ($nodes.length) { 24081 debounceGlobalListener(debounce, 'scroll.zf.trigger', Triggers.Listeners.Global.scrollListener, $nodes); 24082 } 24083}; 24084 24085Triggers.Initializers.addMutationEventsListener = function ($elem) { 24086 if (!MutationObserver) { 24087 return false; 24088 } 24089 24090 var $nodes = $elem.find('[data-resize], [data-scroll], [data-mutate]'); //element callback 24091 24092 var listeningElementsMutation = function listeningElementsMutation(mutationRecordsList) { 24093 var $target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(mutationRecordsList[0].target); //trigger the event handler for the element depending on type 24094 24095 switch (mutationRecordsList[0].type) { 24096 case "attributes": 24097 if ($target.attr("data-events") === "scroll" && mutationRecordsList[0].attributeName === "data-events") { 24098 $target.triggerHandler('scrollme.zf.trigger', [$target, window.pageYOffset]); 24099 } 24100 24101 if ($target.attr("data-events") === "resize" && mutationRecordsList[0].attributeName === "data-events") { 24102 $target.triggerHandler('resizeme.zf.trigger', [$target]); 24103 } 24104 24105 if (mutationRecordsList[0].attributeName === "style") { 24106 $target.closest("[data-mutate]").attr("data-events", "mutate"); 24107 $target.closest("[data-mutate]").triggerHandler('mutateme.zf.trigger', [$target.closest("[data-mutate]")]); 24108 } 24109 24110 break; 24111 24112 case "childList": 24113 $target.closest("[data-mutate]").attr("data-events", "mutate"); 24114 $target.closest("[data-mutate]").triggerHandler('mutateme.zf.trigger', [$target.closest("[data-mutate]")]); 24115 break; 24116 24117 default: 24118 return false; 24119 //nothing 24120 } 24121 }; 24122 24123 if ($nodes.length) { 24124 //for each element that needs to listen for resizing, scrolling, or mutation add a single observer 24125 for (var i = 0; i <= $nodes.length - 1; i++) { 24126 var elementObserver = new MutationObserver(listeningElementsMutation); 24127 elementObserver.observe($nodes[i], { 24128 attributes: true, 24129 childList: true, 24130 characterData: false, 24131 subtree: true, 24132 attributeFilter: ["data-events", "style"] 24133 }); 24134 } 24135 } 24136}; 24137 24138Triggers.Initializers.addSimpleListeners = function () { 24139 var $document = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document); 24140 Triggers.Initializers.addOpenListener($document); 24141 Triggers.Initializers.addCloseListener($document); 24142 Triggers.Initializers.addToggleListener($document); 24143 Triggers.Initializers.addCloseableListener($document); 24144 Triggers.Initializers.addToggleFocusListener($document); 24145}; 24146 24147Triggers.Initializers.addGlobalListeners = function () { 24148 var $document = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document); 24149 Triggers.Initializers.addMutationEventsListener($document); 24150 Triggers.Initializers.addResizeListener(); 24151 Triggers.Initializers.addScrollListener(); 24152 Triggers.Initializers.addClosemeListener(); 24153}; 24154 24155Triggers.init = function ($, Foundation) { 24156 Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["onLoad"])($(window), function () { 24157 if ($.triggersInitialized !== true) { 24158 Triggers.Initializers.addSimpleListeners(); 24159 Triggers.Initializers.addGlobalListeners(); 24160 $.triggersInitialized = true; 24161 } 24162 }); 24163 24164 if (Foundation) { 24165 Foundation.Triggers = Triggers; // Legacy included to be backwards compatible for now. 24166 24167 Foundation.IHearYou = Triggers.Initializers.addGlobalListeners; 24168 } 24169}; 24170 24171 24172 24173/***/ }), 24174 24175/***/ 4: 24176/*!*********************************************************!*\ 24177 !*** multi ./js/entries/plugins/foundation.dropdown.js ***! 24178 \*********************************************************/ 24179/*! no static exports found */ 24180/***/ (function(module, exports, __webpack_require__) { 24181 24182module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.dropdown.js */"./js/entries/plugins/foundation.dropdown.js"); 24183 24184 24185/***/ }), 24186 24187/***/ "jquery": 24188/*!********************************************************************************************!*\ 24189 !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***! 24190 \********************************************************************************************/ 24191/*! no static exports found */
vendor: 4,586 bytes, lines 24192-24278
24192/***/ (function(module, exports) { 24193 24194module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__; 24195 24196/***/ }) 24197 24198/******/ }); 24199}); 24200//# sourceMappingURL=foundation.dropdown.js.map 24201(function webpackUniversalModuleDefinition(root, factory) { 24202 if(typeof exports === 'object' && typeof module === 'object') 24203 module.exports = factory(require("./foundation.core"), require("./foundation.util.box"), require("./foundation.util.keyboard"), require("./foundation.util.nest"), require("./foundation.util.touch"), require("jquery")); 24204 else if(typeof define === 'function' && define.amd) 24205 define(["./foundation.core", "./foundation.util.box", "./foundation.util.keyboard", "./foundation.util.nest", "./foundation.util.touch", "jquery"], factory); 24206 else if(typeof exports === 'object') 24207 exports["foundation.dropdownMenu"] = factory(require("./foundation.core"), require("./foundation.util.box"), require("./foundation.util.keyboard"), require("./foundation.util.nest"), require("./foundation.util.touch"), require("jquery")); 24208 else 24209 root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.dropdownMenu"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.box"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.keyboard"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.nest"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.touch"], root["jQuery"]); 24210})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE__foundation_util_box__, __WEBPACK_EXTERNAL_MODULE__foundation_util_keyboard__, __WEBPACK_EXTERNAL_MODULE__foundation_util_nest__, __WEBPACK_EXTERNAL_MODULE__foundation_util_touch__, __WEBPACK_EXTERNAL_MODULE_jquery__) { 24211return /******/ (function(modules) { // webpackBootstrap 24212/******/ // The module cache 24213/******/ var installedModules = {}; 24214/******/ 24215/******/ // The require function 24216/******/ function __webpack_require__(moduleId) { 24217/******/ 24218/******/ // Check if module is in cache 24219/******/ if(installedModules[moduleId]) { 24220/******/ return installedModules[moduleId].exports; 24221/******/ } 24222/******/ // Create a new module (and put it into the cache) 24223/******/ var module = installedModules[moduleId] = { 24224/******/ i: moduleId, 24225/******/ l: false, 24226/******/ exports: {} 24227/******/ }; 24228/******/ 24229/******/ // Execute the module function 24230/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 24231/******/ 24232/******/ // Flag the module as loaded 24233/******/ module.l = true; 24234/******/ 24235/******/ // Return the exports of the module 24236/******/ return module.exports; 24237/******/ } 24238/******/ 24239/******/ 24240/******/ // expose the modules object (__webpack_modules__) 24241/******/ __webpack_require__.m = modules; 24242/******/ 24243/******/ // expose the module cache 24244/******/ __webpack_require__.c = installedModules; 24245/******/ 24246/******/ // define getter function for harmony exports 24247/******/ __webpack_require__.d = function(exports, name, getter) { 24248/******/ if(!__webpack_require__.o(exports, name)) { 24249/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); 24250/******/ } 24251/******/ }; 24252/******/ 24253/******/ // define __esModule on exports 24254/******/ __webpack_require__.r = function(exports) { 24255/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 24256/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 24257/******/ } 24258/******/ Object.defineProperty(exports, '__esModule', { value: true }); 24259/******/ }; 24260/******/ 24261/******/ // create a fake namespace object 24262/******/ // mode & 1: value is a module id, require it 24263/******/ // mode & 2: merge all properties of value into the ns 24264/******/ // mode & 4: return value when already ns object 24265/******/ // mode & 8|1: behave like require 24266/******/ __webpack_require__.t = function(value, mode) { 24267/******/ if(mode & 1) value = __webpack_require__(value); 24268/******/ if(mode & 8) return value; 24269/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; 24270/******/ var ns = Object.create(null); 24271/******/ __webpack_require__.r(ns); 24272/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); 24273/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); 24274/******/ return ns; 24275/******/ }; 24276/******/ 24277/******/ // getDefaultExport function for compatibility with non-harmony modules 24278/******/ __webpack_require__.n = function(module) {
24279/******/ var getter = module && module.__esModule ? 24280/******/ function getDefault() { return module['default']; } : 24281/******/ function getModuleExports() { return module; }; 24282/******/ __webpack_require__.d(getter, 'a', getter); 24283/******/ return getter; 24284/******/ }; 24285/******/ 24286/******/ // Object.prototype.hasOwnProperty.call 24287/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; 24288/******/ 24289/******/ // __webpack_public_path__ 24290/******/ __webpack_require__.p = ""; 24291/******/ 24292/******/ 24293/******/ // Load entry module and return exports 24294/******/ return __webpack_require__(__webpack_require__.s = 5); 24295/******/ }) 24296/************************************************************************/ 24297/******/ ({ 24298 24299/***/ "./foundation.core": 24300/*!****************************************************************************************************************************************************************!*\ 24301 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***! 24302 \****************************************************************************************************************************************************************/ 24303/*! no static exports found */ 24304/***/ (function(module, exports) { 24305 24306module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__; 24307 24308/***/ }), 24309 24310/***/ "./foundation.util.box": 24311/*!********************************************************************************************************************************************************************************!*\ 24312 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.box"],"amd":"./foundation.util.box","commonjs":"./foundation.util.box","commonjs2":"./foundation.util.box"} ***! 24313 \********************************************************************************************************************************************************************************/ 24314/*! no static exports found */ 24315/***/ (function(module, exports) { 24316 24317module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_box__; 24318 24319/***/ }), 24320 24321/***/ "./foundation.util.keyboard": 24322/*!****************************************************************************************************************************************************************************************************!*\ 24323 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.keyboard"],"amd":"./foundation.util.keyboard","commonjs":"./foundation.util.keyboard","commonjs2":"./foundation.util.keyboard"} ***! 24324 \****************************************************************************************************************************************************************************************************/ 24325/*! no static exports found */ 24326/***/ (function(module, exports) { 24327 24328module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_keyboard__; 24329 24330/***/ }), 24331 24332/***/ "./foundation.util.nest": 24333/*!************************************************************************************************************************************************************************************!*\ 24334 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.nest"],"amd":"./foundation.util.nest","commonjs":"./foundation.util.nest","commonjs2":"./foundation.util.nest"} ***! 24335 \************************************************************************************************************************************************************************************/ 24336/*! no static exports found */ 24337/***/ (function(module, exports) { 24338 24339module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_nest__; 24340 24341/***/ }), 24342 24343/***/ "./foundation.util.touch": 24344/*!****************************************************************************************************************************************************************************************!*\ 24345 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.touch"],"amd":"./foundation.util.touch","commonjs":"./foundation.util.touch","commonjs2":"./foundation.util.touch"} ***! 24346 \****************************************************************************************************************************************************************************************/ 24347/*! no static exports found */
24348/***/ (function(module, exports) { 24349 24350module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_touch__; 24351 24352/***/ }), 24353
24354/***/ "./js/entries/plugins/foundation.dropdownMenu.js": 24355/*!*******************************************************!*\ 24356 !*** ./js/entries/plugins/foundation.dropdownMenu.js ***! 24357 \*******************************************************/ 24358/*! exports provided: Foundation, DropdownMenu */ 24359/***/ (function(module, __webpack_exports__, __webpack_require__) { 24360 24361"use strict"; 24362__webpack_require__.r(__webpack_exports__); 24363/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core"); 24364/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__); 24365/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; }); 24366 24367/* harmony import */ var _foundation_dropdownMenu__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.dropdownMenu */ "./js/foundation.dropdownMenu.js"); 24368/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "DropdownMenu", function() { return _foundation_dropdownMenu__WEBPACK_IMPORTED_MODULE_1__["DropdownMenu"]; }); 24369 24370 24371 24372_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].plugin(_foundation_dropdownMenu__WEBPACK_IMPORTED_MODULE_1__["DropdownMenu"], 'DropdownMenu'); 24373 24374 24375/***/ }), 24376
vendor: 4,245 bytes, lines 24377-24415
24377/***/ "./js/foundation.dropdownMenu.js": 24378/*!***************************************!*\ 24379 !*** ./js/foundation.dropdownMenu.js ***! 24380 \***************************************/ 24381/*! exports provided: DropdownMenu */ 24382/***/ (function(module, __webpack_exports__, __webpack_require__) { 24383 24384"use strict"; 24385__webpack_require__.r(__webpack_exports__); 24386/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "DropdownMenu", function() { return DropdownMenu; }); 24387/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery"); 24388/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__); 24389/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.plugin */ "./foundation.core"); 24390/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__); 24391/* harmony import */ var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.util.keyboard */ "./foundation.util.keyboard"); 24392/* harmony import */ var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__); 24393/* harmony import */ var _foundation_util_nest__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./foundation.util.nest */ "./foundation.util.nest"); 24394/* harmony import */ var _foundation_util_nest__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_nest__WEBPACK_IMPORTED_MODULE_3__); 24395/* harmony import */ var _foundation_util_box__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./foundation.util.box */ "./foundation.util.box"); 24396/* harmony import */ var _foundation_util_box__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_box__WEBPACK_IMPORTED_MODULE_4__); 24397/* harmony import */ var _foundation_util_touch__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./foundation.util.touch */ "./foundation.util.touch"); 24398/* harmony import */ var _foundation_util_touch__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_touch__WEBPACK_IMPORTED_MODULE_5__); 24399 24400 24401function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } 24402 24403function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 24404 24405function _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); } } 24406 24407function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } 24408 24409function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } 24410 24411function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } 24412 24413function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } 24414 24415function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { c
24415onstructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } 24416 24417function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } 24418 24419 24420 24421 24422 24423 24424 24425 24426/** 24427 * DropdownMenu module. 24428 * @module foundation.dropdownMenu 24429 * @requires foundation.util.keyboard 24430 * @requires foundation.util.box 24431 * @requires foundation.util.nest 24432 * @requires foundation.util.touch 24433 */ 24434 24435var DropdownMenu = 24436/*#__PURE__*/ 24437function (_Plugin) { 24438 _inherits(DropdownMenu, _Plugin); 24439 24440 function DropdownMenu() { 24441 _classCallCheck(this, DropdownMenu); 24442 24443 return _possibleConstructorReturn(this, _getPrototypeOf(DropdownMenu).apply(this, arguments)); 24444 } 24445 24446 _createClass(DropdownMenu, [{ 24447 key: "_setup", 24448 24449 /** 24450 * Creates a new instance of DropdownMenu. 24451 * @class 24452 * @name DropdownMenu 24453 * @fires DropdownMenu#init 24454 * @param {jQuery} element - jQuery object to make into a dropdown menu. 24455 * @param {Object} options - Overrides to the default plugin settings. 24456 */ 24457 value: function _setup(element, options) { 24458 this.$element = element; 24459 this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, DropdownMenu.defaults, this.$element.data(), options); 24460 this.className = 'DropdownMenu'; // ie9 back compat 24461 24462 _foundation_util_touch__WEBPACK_IMPORTED_MODULE_5__["Touch"].init(jquery__WEBPACK_IMPORTED_MODULE_0___default.a); // Touch init is idempotent, we just need to make sure it's initialied. 24463 24464 this._init(); 24465 24466 _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__["Keyboard"].register('DropdownMenu', { 24467 'ENTER': 'open', 24468 'SPACE': 'open', 24469 'ARROW_RIGHT': 'next', 24470 'ARROW_UP': 'up', 24471 'ARROW_DOWN': 'down', 24472 'ARROW_LEFT': 'previous', 24473 'ESCAPE': 'close' 24474 }); 24475 } 24476 /** 24477 * Initializes the plugin, and calls _prepareMenu 24478 * @private 24479 * @function 24480 */ 24481 24482 }, { 24483 key: "_init", 24484 value: function _init() { 24485 _foundation_util_nest__WEBPACK_IMPORTED_MODULE_3__["Nest"].Feather(this.$element, 'dropdown'); 24486 var subs = this.$element.find('li.is-dropdown-submenu-parent'); 24487 this.$element.children('.is-dropdown-submenu-parent').children('.is-dropdown-submenu').addClass('first-sub'); 24488 this.$menuItems = this.$element.find('li[role="none"]'); 24489 this.$tabs = this.$element.children('li[role="none"]'); 24490 this.$tabs.find('ul.is-dropdown-submenu').addClass(this.options.verticalClass); 24491 24492 if (this.options.alignment === 'auto') { 24493 if (this.$element.hasClass(this.options.rightClass) || Object(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["rtl"])() || this.$element.parents('.top-bar-right').is('*')) { 24494 this.options.alignment = 'right'; 24495 subs.addClass('opens-left'); 24496 } else { 24497 this.options.alignment = 'left'; 24498 subs.addClass('opens-right'); 24499 } 24500 } else { 24501 if (this.options.alignment === 'right') { 24502 subs.addClass('opens-left'); 24503 } else { 24504 subs.addClass('opens-right'); 24505 } 24506 } 24507 24508 this.changed = false; 24509 24510 this._events(); 24511 } 24512 }, { 24513 key: "_isVertical", 24514 value: function _isVertical() { 24515 return this.$tabs.css('display') === 'block' || this.$element.css('flex-direction') === 'column'; 24516 } 24517 }, { 24518 key: "_isRtl", 24519 value: function _isRtl() { 24520 return this.$element.hasClass('align-right') || Object(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["rtl"])() && !this.$element.hasClass('align-left'); 24521 } 24522 /** 24523 * Adds event listeners to elements within the menu 24524 * @private 24525 * @function 24526 */ 24527 24528 }, { 24529 key: "_events", 24530 value: function _events() { 24531 var _this = this, 24532 hasTouch = 'ontouchstart' in window || typeof window.ontouchstart !== 'undefined', 24533 parClass = 'is-dropdown-submenu-parent'; // used for onClick and in the keyboard handlers 24534 24535 24536 var handleClickFn = function handleClickFn(e) { 24537 var $elem = jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.target).parentsUntil('ul', ".".concat(parClass)), 24538 hasSub = $elem.hasClass(parClass), 24539 hasClicked = $elem.attr('data-is-click') === 'true', 24540 $sub = $elem.children('.is-dropdown-submenu'); 24541 24542 if (hasSub) { 24543 if (hasClicked) { 24544 if (!_this.options.closeOnClick || !_this.options.clickOpen && !hasTouch || _this.options.forceFollow && hasTouch) { 24545 return; 24546 } 24547 24548 e.stopImmediatePropagation(); 24549 e.preventDefault(); 24550 24551 _this._hide($elem); 24552 } else { 24553 e.stopImmediatePropagation(); 24554 e.preventDefault(); 24555 24556 _this._show($sub); 24557 24558 $elem.add($elem.parentsUntil(_this.$element, ".".concat(parClass))).attr('data-is-click', true); 24559 } 24560 } 24561 }; 24562 24563 if (this.options.clickOpen || hasTouch) { 24564 this.$menuItems.on('click.zf.dropdownMenu touchstart.zf.dropdownMenu', handleClick
vendor: 12,099 bytes, lines 24564-24959
24564Fn); 24565 } // Handle Leaf element Clicks 24566 24567 24568 if (_this.options.closeOnClickInside) { 24569 this.$menuItems.on('click.zf.dropdownMenu', function (e) { 24570 var $elem = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 24571 hasSub = $elem.hasClass(parClass); 24572 24573 if (!hasSub) { 24574 _this._hide(); 24575 } 24576 }); 24577 } 24578 24579 if (!this.options.disableHover) { 24580 this.$menuItems.on('mouseenter.zf.dropdownMenu', function (e) { 24581 var $elem = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 24582 hasSub = $elem.hasClass(parClass); 24583 24584 if (hasSub) { 24585 clearTimeout($elem.data('_delay')); 24586 $elem.data('_delay', setTimeout(function () { 24587 _this._show($elem.children('.is-dropdown-submenu')); 24588 }, _this.options.hoverDelay)); 24589 } 24590 }).on('mouseleave.zf.dropdownMenu', Object(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["ignoreMousedisappear"])(function (e) { 24591 var $elem = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 24592 hasSub = $elem.hasClass(parClass); 24593 24594 if (hasSub && _this.options.autoclose) { 24595 if ($elem.attr('data-is-click') === 'true' && _this.options.clickOpen) { 24596 return false; 24597 } 24598 24599 clearTimeout($elem.data('_delay')); 24600 $elem.data('_delay', setTimeout(function () { 24601 _this._hide($elem); 24602 }, _this.options.closingTime)); 24603 } 24604 })); 24605 } 24606 24607 this.$menuItems.on('keydown.zf.dropdownMenu', function (e) { 24608 var $element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.target).parentsUntil('ul', '[role="none"]'), 24609 isTab = _this.$tabs.index($element) > -1, 24610 $elements = isTab ? _this.$tabs : $element.siblings('li').add($element), 24611 $prevElement, 24612 $nextElement; 24613 $elements.each(function (i) { 24614 if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).is($element)) { 24615 $prevElement = $elements.eq(i - 1); 24616 $nextElement = $elements.eq(i + 1); 24617 return; 24618 } 24619 }); 24620 24621 var nextSibling = function nextSibling() { 24622 $nextElement.children('a:first').focus(); 24623 e.preventDefault(); 24624 }, 24625 prevSibling = function prevSibling() { 24626 $prevElement.children('a:first').focus(); 24627 e.preventDefault(); 24628 }, 24629 openSub = function openSub() { 24630 var $sub = $element.children('ul.is-dropdown-submenu'); 24631 24632 if ($sub.length) { 24633 _this._show($sub); 24634 24635 $element.find('li > a:first').focus(); 24636 e.preventDefault(); 24637 } else { 24638 return; 24639 } 24640 }, 24641 closeSub = function closeSub() { 24642 //if ($element.is(':first-child')) { 24643 var close = $element.parent('ul').parent('li'); 24644 close.children('a:first').focus(); 24645 24646 _this._hide(close); 24647 24648 e.preventDefault(); //} 24649 }; 24650 24651 var functions = { 24652 open: openSub, 24653 close: function close() { 24654 _this._hide(_this.$element); 24655 24656 _this.$menuItems.eq(0).children('a').focus(); // focus to first element 24657 24658 24659 e.preventDefault(); 24660 } 24661 }; 24662 24663 if (isTab) { 24664 if (_this._isVertical()) { 24665 // vertical menu 24666 if (_this._isRtl()) { 24667 // right aligned 24668 jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend(functions, { 24669 down: nextSibling, 24670 up: prevSibling, 24671 next: closeSub, 24672 previous: openSub 24673 }); 24674 } else { 24675 // left aligned 24676 jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend(functions, { 24677 down: nextSibling, 24678 up: prevSibling, 24679 next: openSub, 24680 previous: closeSub 24681 }); 24682 } 24683 } else { 24684 // horizontal menu 24685 if (_this._isRtl()) { 24686 // right aligned 24687 jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend(functions, { 24688 next: prevSibling, 24689 previous: nextSibling, 24690 down: openSub, 24691 up: closeSub 24692 }); 24693 } else { 24694 // left aligned 24695 jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend(functions, { 24696 next: nextSibling, 24697 previous: prevSibling, 24698 down: openSub, 24699 up: closeSub 24700 }); 24701 } 24702 } 24703 } else { 24704 // not tabs -> one sub 24705 if (_this._isRtl()) { 24706 // right aligned 24707 jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend(functions, { 24708 next: closeSub, 24709 previous: openSub, 24710 down: nextSibling, 24711 up: prevSibling 24712 }); 24713 } else { 24714 // left aligned 24715 jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend(functions, { 24716 next: openSub, 24717 previous: closeSub, 24718 down: nextSibling, 24719 up: prevSibling 24720 }); 24721 } 24722 } 24723 24724 _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__["Keyboard"].handleKey(e, 'DropdownMenu', functions); 24725 }); 24726 } 24727 /** 24728 * Adds an event handler to the body to close any dropdowns on a click. 24729 * @function 24730 * @private 24731 */ 24732 24733 }, { 24734 key: "_addBodyHandler", 24735 value: function _addBodyHandler() { 24736 var _this2 = this; 24737 24738 var $body = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document.body); 24739 24740 this._removeBodyHandler(); 24741 24742 $body.on('click.zf.dropdownMenu tap.zf.dropdownMenu', function (e) { 24743 var isItself = !!jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.target).closest(_this2.$element).length; 24744 if (isItself) return; 24745 24746 _this2._hide(); 24747 24748 _this2._removeBodyHandler(); 24749 }); 24750 } 24751 /** 24752 * Remove the body event handler. See `_addBodyHandler`. 24753 * @function 24754 * @private 24755 */ 24756 24757 }, { 24758 key: "_removeBodyHandler", 24759 value: function _removeBodyHandler() { 24760 jquery__WEBPACK_IMPORTED_MODULE_0___default()(document.body).off('click.zf.dropdownMenu tap.zf.dropdownMenu'); 24761 } 24762 /** 24763 * Opens a dropdown pane, and checks for collisions first. 24764 * @param {jQuery} $sub - ul element that is a submenu to show 24765 * @function 24766 * @private 24767 * @fires DropdownMenu#show 24768 */ 24769 24770 }, { 24771 key: "_show", 24772 value: function _show($sub) { 24773 var idx = this.$tabs.index(this.$tabs.filter(function (i, el) { 24774 return jquery__WEBPACK_IMPORTED_MODULE_0___default()(el).find($sub).length > 0; 24775 })); 24776 var $sibs = $sub.parent('li.is-dropdown-submenu-parent').siblings('li.is-dropdown-submenu-parent'); 24777 24778 this._hide($sibs, idx); 24779 24780 $sub.css('visibility', 'hidden').addClass('js-dropdown-active').parent('li.is-dropdown-submenu-parent').addClass('is-active'); 24781 var clear = _foundation_util_box__WEBPACK_IMPORTED_MODULE_4__["Box"].ImNotTouchingYou($sub, null, true); 24782 24783 if (!clear) { 24784 var oldClass = this.options.alignment === 'left' ? '-right' : '-left', 24785 $parentLi = $sub.parent('.is-dropdown-submenu-parent'); 24786 $parentLi.removeClass("opens".concat(oldClass)).addClass("opens-".concat(this.options.alignment)); 24787 clear = _foundation_util_box__WEBPACK_IMPORTED_MODULE_4__["Box"].ImNotTouchingYou($sub, null, true); 24788 24789 if (!clear) { 24790 $parentLi.removeClass("opens-".concat(this.options.alignment)).addClass('opens-inner'); 24791 } 24792 24793 this.changed = true; 24794 } 24795 24796 $sub.css('visibility', ''); 24797 24798 if (this.options.closeOnClick) { 24799 this._addBodyHandler(); 24800 } 24801 /** 24802 * Fires when the new dropdown pane is visible. 24803 * @event DropdownMenu#show 24804 */ 24805 24806 24807 this.$element.trigger('show.zf.dropdownMenu', [$sub]); 24808 } 24809 /** 24810 * Hides a single, currently open dropdown pane, if passed a parameter, otherwise, hides everything. 24811 * @function 24812 * @param {jQuery} $elem - element with a submenu to hide 24813 * @param {Number} idx - index of the $tabs collection to hide 24814 * @fires DropdownMenu#hide 24815 * @private 24816 */ 24817 24818 }, { 24819 key: "_hide", 24820 value: function _hide($elem, idx) { 24821 var $toClose; 24822 24823 if ($elem && $elem.length) { 24824 $toClose = $elem; 24825 } else if (typeof idx !== 'undefined') { 24826 $toClose = this.$tabs.not(function (i, el) { 24827 return i === idx; 24828 }); 24829 } else { 24830 $toClose = this.$element; 24831 } 24832 24833 var somethingToClose = $toClose.hasClass('is-active') || $toClose.find('.is-active').length > 0; 24834 24835 if (somethingToClose) { 24836 var $activeItem = $toClose.find('li.is-active'); 24837 $activeItem.add($toClose).attr({ 24838 'data-is-click': false 24839 }).removeClass('is-active'); 24840 $toClose.find('ul.js-dropdown-active').removeClass('js-dropdown-active'); 24841 24842 if (this.changed || $toClose.find('opens-inner').length) { 24843 var oldClass = this.options.alignment === 'left' ? 'right' : 'left'; 24844 $toClose.find('li.is-dropdown-submenu-parent').add($toClose).removeClass("opens-inner opens-".concat(this.options.alignment)).addClass("opens-".concat(oldClass)); 24845 this.changed = false; 24846 } 24847 24848 clearTimeout($activeItem.data('_delay')); 24849 24850 this._removeBodyHandler(); 24851 /** 24852 * Fires when the open menus are closed. 24853 * @event DropdownMenu#hide 24854 */ 24855 24856 24857 this.$element.trigger('hide.zf.dropdownMenu', [$toClose]); 24858 } 24859 } 24860 /** 24861 * Destroys the plugin. 24862 * @function 24863 */ 24864 24865 }, { 24866 key: "_destroy", 24867 value: function _destroy() { 24868 this.$menuItems.off('.zf.dropdownMenu').removeAttr('data-is-click').removeClass('is-right-arrow is-left-arrow is-down-arrow opens-right opens-left opens-inner'); 24869 jquery__WEBPACK_IMPORTED_MODULE_0___default()(document.body).off('.zf.dropdownMenu'); 24870 _foundation_util_nest__WEBPACK_IMPORTED_MODULE_3__["Nest"].Burn(this.$element, 'dropdown'); 24871 } 24872 }]); 24873 24874 return DropdownMenu; 24875}(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["Plugin"]); 24876/** 24877 * Default settings for plugin 24878 */ 24879 24880 24881DropdownMenu.defaults = { 24882 /** 24883 * Disallows hover events from opening submenus 24884 * @option 24885 * @type {boolean} 24886 * @default false 24887 */ 24888 disableHover: false, 24889 24890 /** 24891 * Allow a submenu to automatically close on a mouseleave event, if not clicked open. 24892 * @option 24893 * @type {boolean} 24894 * @default true 24895 */ 24896 autoclose: true, 24897 24898 /** 24899 * Amount of time to delay opening a submenu on hover event. 24900 * @option 24901 * @type {number} 24902 * @default 50 24903 */ 24904 hoverDelay: 50, 24905 24906 /** 24907 * Allow a submenu to open/remain open on parent click event. Allows cursor to move away from menu. 24908 * @option 24909 * @type {boolean} 24910 * @default false 24911 */ 24912 clickOpen: false, 24913 24914 /** 24915 * Amount of time to delay closing a submenu on a mouseleave event. 24916 * @option 24917 * @type {number} 24918 * @default 500 24919 */ 24920 closingTime: 500, 24921 24922 /** 24923 * Position of the menu relative to what direction the submenus should open. Handled by JS. Can be `'auto'`, `'left'` or `'right'`. 24924 * @option 24925 * @type {string} 24926 * @default 'auto' 24927 */ 24928 alignment: 'auto', 24929 24930 /** 24931 * Allow clicks on the body to close any open submenus. 24932 * @option 24933 * @type {boolean} 24934 * @default true 24935 */ 24936 closeOnClick: true, 24937 24938 /** 24939 * Allow clicks on leaf anchor links to close any open submenus. 24940 * @option 24941 * @type {boolean} 24942 * @default true 24943 */ 24944 closeOnClickInside: true, 24945 24946 /** 24947 * Class applied to vertical oriented menus, Foundation default is `vertical`. Update this if using your own class. 24948 * @option 24949 * @type {string} 24950 * @default 'vertical' 24951 */ 24952 verticalClass: 'vertical', 24953 24954 /** 24955 * Class applied to right-side oriented menus, Foundation default is `align-right`. Update this if using your own class. 24956 * @option 24957 * @type {string} 24958 * @default 'align-right' 24959 */
vendor: 4,780 bytes, lines 24960-25068
24960 rightClass: 'align-right', 24961 24962 /** 24963 * Boolean to force overide the clicking of links to perform default action, on second touch event for mobile. 24964 * @option 24965 * @type {boolean} 24966 * @default true 24967 */ 24968 forceFollow: true 24969}; 24970 24971 24972/***/ }), 24973 24974/***/ 5: 24975/*!*************************************************************!*\ 24976 !*** multi ./js/entries/plugins/foundation.dropdownMenu.js ***! 24977 \*************************************************************/ 24978/*! no static exports found */ 24979/***/ (function(module, exports, __webpack_require__) { 24980 24981module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.dropdownMenu.js */"./js/entries/plugins/foundation.dropdownMenu.js"); 24982 24983 24984/***/ }), 24985 24986/***/ "jquery": 24987/*!********************************************************************************************!*\ 24988 !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***! 24989 \********************************************************************************************/ 24990/*! no static exports found */ 24991/***/ (function(module, exports) { 24992 24993module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__; 24994 24995/***/ }) 24996 24997/******/ }); 24998}); 24999//# sourceMappingURL=foundation.dropdownMenu.js.map 25000(function webpackUniversalModuleDefinition(root, factory) { 25001 if(typeof exports === 'object' && typeof module === 'object') 25002 module.exports = factory(require("./foundation.core"), require("./foundation.util.imageLoader"), require("./foundation.util.mediaQuery"), require("jquery")); 25003 else if(typeof define === 'function' && define.amd) 25004 define(["./foundation.core", "./foundation.util.imageLoader", "./foundation.util.mediaQuery", "jquery"], factory); 25005 else if(typeof exports === 'object') 25006 exports["foundation.equalizer"] = factory(require("./foundation.core"), require("./foundation.util.imageLoader"), require("./foundation.util.mediaQuery"), require("jquery")); 25007 else 25008 root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.equalizer"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.imageLoader"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.mediaQuery"], root["jQuery"]); 25009})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE__foundation_util_imageLoader__, __WEBPACK_EXTERNAL_MODULE__foundation_util_mediaQuery__, __WEBPACK_EXTERNAL_MODULE_jquery__) { 25010return /******/ (function(modules) { // webpackBootstrap 25011/******/ // The module cache 25012/******/ var installedModules = {}; 25013/******/ 25014/******/ // The require function 25015/******/ function __webpack_require__(moduleId) { 25016/******/ 25017/******/ // Check if module is in cache 25018/******/ if(installedModules[moduleId]) { 25019/******/ return installedModules[moduleId].exports; 25020/******/ } 25021/******/ // Create a new module (and put it into the cache) 25022/******/ var module = installedModules[moduleId] = { 25023/******/ i: moduleId, 25024/******/ l: false, 25025/******/ exports: {} 25026/******/ }; 25027/******/ 25028/******/ // Execute the module function 25029/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 25030/******/ 25031/******/ // Flag the module as loaded 25032/******/ module.l = true; 25033/******/ 25034/******/ // Return the exports of the module 25035/******/ return module.exports; 25036/******/ } 25037/******/ 25038/******/ 25039/******/ // expose the modules object (__webpack_modules__) 25040/******/ __webpack_require__.m = modules; 25041/******/ 25042/******/ // expose the module cache 25043/******/ __webpack_require__.c = installedModules; 25044/******/ 25045/******/ // define getter function for harmony exports 25046/******/ __webpack_require__.d = function(exports, name, getter) { 25047/******/ if(!__webpack_require__.o(exports, name)) { 25048/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); 25049/******/ } 25050/******/ }; 25051/******/ 25052/******/ // define __esModule on exports 25053/******/ __webpack_require__.r = function(exports) { 25054/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 25055/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 25056/******/ } 25057/******/ Object.defineProperty(exports, '__esModule', { value: true }); 25058/******/ }; 25059/******/ 25060/******/ // create a fake namespace object 25061/******/ // mode & 1: value is a module id, require it 25062/******/ // mode & 2: merge all properties of value into the ns 25063/******/ // mode & 4: return value when already ns object 25064/******/ // mode & 8|1: behave like require 25065/******/ __webpack_require__.t = function(value, mode) { 25066/******/ if(mode & 1) value = __webpack_require__(value); 25067/******/ if(mode & 8) return value; 25068/******/ if((mode & 4) && typeof value === 'object' && value && value.__esMo
vendor: 3,622 bytes, lines 25068-25130
25068dule) return value; 25069/******/ var ns = Object.create(null); 25070/******/ __webpack_require__.r(ns); 25071/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); 25072/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); 25073/******/ return ns; 25074/******/ }; 25075/******/ 25076/******/ // getDefaultExport function for compatibility with non-harmony modules 25077/******/ __webpack_require__.n = function(module) { 25078/******/ var getter = module && module.__esModule ? 25079/******/ function getDefault() { return module['default']; } : 25080/******/ function getModuleExports() { return module; }; 25081/******/ __webpack_require__.d(getter, 'a', getter); 25082/******/ return getter; 25083/******/ }; 25084/******/ 25085/******/ // Object.prototype.hasOwnProperty.call 25086/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; 25087/******/ 25088/******/ // __webpack_public_path__ 25089/******/ __webpack_require__.p = ""; 25090/******/ 25091/******/ 25092/******/ // Load entry module and return exports 25093/******/ return __webpack_require__(__webpack_require__.s = 6); 25094/******/ }) 25095/************************************************************************/ 25096/******/ ({ 25097 25098/***/ "./foundation.core": 25099/*!****************************************************************************************************************************************************************!*\ 25100 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***! 25101 \****************************************************************************************************************************************************************/ 25102/*! no static exports found */ 25103/***/ (function(module, exports) { 25104 25105module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__; 25106 25107/***/ }), 25108 25109/***/ "./foundation.util.imageLoader": 25110/*!****************************************************************************************************************************************************************************************************************!*\ 25111 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.imageLoader"],"amd":"./foundation.util.imageLoader","commonjs":"./foundation.util.imageLoader","commonjs2":"./foundation.util.imageLoader"} ***! 25112 \****************************************************************************************************************************************************************************************************************/ 25113/*! no static exports found */ 25114/***/ (function(module, exports) { 25115 25116module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_imageLoader__; 25117 25118/***/ }), 25119 25120/***/ "./foundation.util.mediaQuery": 25121/*!************************************************************************************************************************************************************************************************************!*\ 25122 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.mediaQuery"],"amd":"./foundation.util.mediaQuery","commonjs":"./foundation.util.mediaQuery","commonjs2":"./foundation.util.mediaQuery"} ***! 25123 \************************************************************************************************************************************************************************************************************/ 25124/*! no static exports found */ 25125/***/ (function(module, exports) { 25126 25127module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_mediaQuery__; 25128 25129/***/ }), 25130
25131/***/ "./js/entries/plugins/foundation.equalizer.js": 25132/*!****************************************************!*\ 25133 !*** ./js/entries/plugins/foundation.equalizer.js ***! 25134 \****************************************************/ 25135/*! exports provided: Foundation, Equalizer */ 25136/***/ (function(module, __webpack_exports__, __webpack_require__) { 25137 25138"use strict"; 25139__webpack_require__.r(__webpack_exports__); 25140/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core"); 25141/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__); 25142/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; }); 25143 25144/* harmony import */ var _foundation_equalizer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.equalizer */ "./js/foundation.equalizer.js"); 25145/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Equalizer", function() { return _foundation_equalizer__WEBPACK_IMPORTED_MODULE_1__["Equalizer"]; }); 25146 25147 25148 25149_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].plugin(_foundation_equalizer__WEBPACK_IMPORTED_MODULE_1__["Equalizer"], 'Equalizer'); 25150 25151 25152/***/ }), 25153
25154/***/ "./js/foundation.equalizer.js": 25155/*!************************************!*\ 25156 !*** ./js/foundation.equalizer.js ***! 25157 \************************************/ 25158/*! exports provided: Equalizer */ 25159/***/ (function(module, __webpack_exports__, __webpack_require__) { 25160 25161"use strict"; 25162__webpack_require__.r(__webpack_exports__); 25163/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Equalizer", function() { return Equalizer; }); 25164/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery"); 25165/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__); 25166/* harmony import */ var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.util.mediaQuery */ "./foundation.util.mediaQuery"); 25167/* harmony import */ var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__); 25168/* harmony import */ var _foundation_util_imageLoader__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.util.imageLoader */ "./foundation.util.imageLoader"); 25169/* harmony import */ var _foundation_util_imageLoader__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_imageLoader__WEBPACK_IMPORTED_MODULE_2__); 25170/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./foundation.core.utils */ "./foundation.core"); 25171/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__); 25172 25173 25174function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } 25175 25176function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 25177 25178function _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); } } 25179 25180function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } 25181 25182function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } 25183 25184function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } 25185 25186function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } 25187 25188function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } 25189 25190function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } 25191 25192 25193 25194 25195 25196 25197/** 25198 * Equalizer module. 25199 * @module foundation.equalizer 25200 * @requires foundation.util.mediaQuery 25201 * @requires foundation.util.imageLoader if equalizer contains images 25202 */ 25203 25204var Equalizer = 25205/*#__PURE__*/ 25206function (_Plugin) { 25207 _inherits(Equalizer, _Plugin); 25208 25209 function Equalizer() { 25210 _classCallCheck(this, Equalizer); 25211 25212 return _possibleConstructorReturn(this, _getPrototypeOf(Equalizer).apply(this, arguments)); 25213 } 25214 25215 _createClass(Equalizer, [{ 25216 key: "_setup", 25217 25218 /** 25219 * Creates a new instance of Equalizer. 25220 * @class 25221 * @name Equalizer 25222 * @fires Equalizer#init 25223 * @param {Object} element - jQuery object to add the trigger to. 25224 * @param {Object} options - Overrides to the default plugin settings. 25225 */ 25226 value: function _setup(element, options) { 25227 this.$element = element; 25228 this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, Equalizer.defaults, this.$element.data(), options); 25229 this.className = 'Equalizer'; // ie9 back compat 25230 25231 this._init(); 25232 } 25233 /** 25234 * Initializes the Equalizer plugin and calls functions to get equalizer functioning on load. 25235 * @private 25236 */ 25237 25238 }, { 25239 key: "_init", 25240 value: function _init() { 25241 var eqId = this.$element.attr('data-equalizer') || ''; 25242 var $watched = this.$element.find("[data-equalizer-watch=\"".concat(eqId, "\"]")); 25243 25244 _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"]._init(); 25245 25246 this.$watched = $watched.length ? $watched : this.$element.find('[data-equalizer-watch]'); 25247 this.$element.attr('data-resize', eqId || Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["GetYoDigits"])(6, 'eq')); 25248 this.$element.attr('data-mutate', eqId || Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["GetYoDigits"])(6, 'eq')); 25249 this.hasNested = this.$element.find('[data-equalizer]').length > 0; 25250 this.isNested = this.$element.parentsUntil(document.body, '[data-equalizer]').length > 0; 25251 this.isOn = false;
vendor: 6,382 bytes, lines 25252-25473
25252 this._bindHandler = { 25253 onResizeMeBound: this._onResizeMe.bind(this), 25254 onPostEqualizedBound: this._onPostEqualized.bind(this) 25255 }; 25256 var imgs = this.$element.find('img'); 25257 var tooSmall; 25258 25259 if (this.options.equalizeOn) { 25260 tooSmall = this._checkMQ(); 25261 jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('changed.zf.mediaquery', this._checkMQ.bind(this)); 25262 } else { 25263 this._events(); 25264 } 25265 25266 if (typeof tooSmall !== 'undefined' && tooSmall === false || typeof tooSmall === 'undefined') { 25267 if (imgs.length) { 25268 Object(_foundation_util_imageLoader__WEBPACK_IMPORTED_MODULE_2__["onImagesLoaded"])(imgs, this._reflow.bind(this)); 25269 } else { 25270 this._reflow(); 25271 } 25272 } 25273 } 25274 /** 25275 * Removes event listeners if the breakpoint is too small. 25276 * @private 25277 */ 25278 25279 }, { 25280 key: "_pauseEvents", 25281 value: function _pauseEvents() { 25282 this.isOn = false; 25283 this.$element.off({ 25284 '.zf.equalizer': this._bindHandler.onPostEqualizedBound, 25285 'resizeme.zf.trigger': this._bindHandler.onResizeMeBound, 25286 'mutateme.zf.trigger': this._bindHandler.onResizeMeBound 25287 }); 25288 } 25289 /** 25290 * function to handle $elements resizeme.zf.trigger, with bound this on _bindHandler.onResizeMeBound 25291 * @private 25292 */ 25293 25294 }, { 25295 key: "_onResizeMe", 25296 value: function _onResizeMe(e) { 25297 this._reflow(); 25298 } 25299 /** 25300 * function to handle $elements postequalized.zf.equalizer, with bound this on _bindHandler.onPostEqualizedBound 25301 * @private 25302 */ 25303 25304 }, { 25305 key: "_onPostEqualized", 25306 value: function _onPostEqualized(e) { 25307 if (e.target !== this.$element[0]) { 25308 this._reflow(); 25309 } 25310 } 25311 /** 25312 * Initializes events for Equalizer. 25313 * @private 25314 */ 25315 25316 }, { 25317 key: "_events", 25318 value: function _events() { 25319 var _this = this; 25320 25321 this._pauseEvents(); 25322 25323 if (this.hasNested) { 25324 this.$element.on('postequalized.zf.equalizer', this._bindHandler.onPostEqualizedBound); 25325 } else { 25326 this.$element.on('resizeme.zf.trigger', this._bindHandler.onResizeMeBound); 25327 this.$element.on('mutateme.zf.trigger', this._bindHandler.onResizeMeBound); 25328 } 25329 25330 this.isOn = true; 25331 } 25332 /** 25333 * Checks the current breakpoint to the minimum required size. 25334 * @private 25335 */ 25336 25337 }, { 25338 key: "_checkMQ", 25339 value: function _checkMQ() { 25340 var tooSmall = !_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"].is(this.options.equalizeOn); 25341 25342 if (tooSmall) { 25343 if (this.isOn) { 25344 this._pauseEvents(); 25345 25346 this.$watched.css('height', 'auto'); 25347 } 25348 } else { 25349 if (!this.isOn) { 25350 this._events(); 25351 } 25352 } 25353 25354 return tooSmall; 25355 } 25356 /** 25357 * A noop version for the plugin 25358 * @private 25359 */ 25360 25361 }, { 25362 key: "_killswitch", 25363 value: function _killswitch() { 25364 return; 25365 } 25366 /** 25367 * Calls necessary functions to update Equalizer upon DOM change 25368 * @private 25369 */ 25370 25371 }, { 25372 key: "_reflow", 25373 value: function _reflow() { 25374 if (!this.options.equalizeOnStack) { 25375 if (this._isStacked()) { 25376 this.$watched.css('height', 'auto'); 25377 return false; 25378 } 25379 } 25380 25381 if (this.options.equalizeByRow) { 25382 this.getHeightsByRow(this.applyHeightByRow.bind(this)); 25383 } else { 25384 this.getHeights(this.applyHeight.bind(this)); 25385 } 25386 } 25387 /** 25388 * Manually determines if the first 2 elements are *NOT* stacked. 25389 * @private 25390 */ 25391 25392 }, { 25393 key: "_isStacked", 25394 value: function _isStacked() { 25395 if (!this.$watched[0] || !this.$watched[1]) { 25396 return true; 25397 } 25398 25399 return this.$watched[0].getBoundingClientRect().top !== this.$watched[1].getBoundingClientRect().top; 25400 } 25401 /** 25402 * Finds the outer heights of children contained within an Equalizer parent and returns them in an array 25403 * @param {Function} cb - A non-optional callback to return the heights array to. 25404 * @returns {Array} heights - An array of heights of children within Equalizer container 25405 */ 25406 25407 }, { 25408 key: "getHeights", 25409 value: function getHeights(cb) { 25410 var heights = []; 25411 25412 for (var i = 0, len = this.$watched.length; i < len; i++) { 25413 this.$watched[i].style.height = 'auto'; 25414 heights.push(this.$watched[i].offsetHeight); 25415 } 25416 25417 cb(heights); 25418 } 25419 /** 25420 * Finds the outer heights of children contained within an Equalizer parent and returns them in an array 25421 * @param {Function} cb - A non-optional callback to return the heights array to. 25422 * @returns {Array} groups - An array of heights of children within Equalizer container grouped by row with element,height and max as last child 25423 */ 25424 25425 }, { 25426 key: "getHeightsByRow", 25427 value: function getHeightsByRow(cb) { 25428 var lastElTopOffset = this.$watched.length ? this.$watched.first().offset().top : 0, 25429 groups = [], 25430 group = 0; //group by Row 25431 25432 groups[group] = []; 25433 25434 for (var i = 0, len = this.$watched.length; i < len; i++) { 25435 this.$watched[i].style.height = 'auto'; //maybe could use this.$watched[i].offsetTop 25436 25437 var elOffsetTop = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this.$watched[i]).offset().top; 25438 25439 if (elOffsetTop != lastElTopOffset) { 25440 group++; 25441 groups[group] = []; 25442 lastElTopOffset = elOffsetTop; 25443 } 25444 25445 groups[group].push([this.$watched[i], this.$watched[i].offsetHeight]); 25446 } 25447 25448 for (var j = 0, ln = groups.length; j < ln; j++) { 25449 var heights = jquery__WEBPACK_IMPORTED_MODULE_0___default()(groups[j]).map(function () { 25450 return this[1]; 25451 }).get(); 25452 var max = Math.max.apply(null, heights); 25453 groups[j].push(max); 25454 } 25455 25456 cb(groups); 25457 } 25458 /** 25459 * Changes the CSS height property of each child in an Equalizer parent to match the tallest 25460 * @param {array} heights - An array of heights of children within Equalizer container 25461 * @fires Equalizer#preequalized 25462 * @fires Equalizer#postequalized 25463 */ 25464 25465 }, { 25466 key: "applyHeight", 25467 value: function applyHeight(heights) { 25468 var max = Math.max.apply(null, heights); 25469 /** 25470 * Fires before the heights are applied 25471 * @event Equalizer#preequalized 25472 */ 25473
vendor: 5,807 bytes, lines 25474-25645
25474 this.$element.trigger('preequalized.zf.equalizer'); 25475 this.$watched.css('height', max); 25476 /** 25477 * Fires when the heights have been applied 25478 * @event Equalizer#postequalized 25479 */ 25480 25481 this.$element.trigger('postequalized.zf.equalizer'); 25482 } 25483 /** 25484 * Changes the CSS height property of each child in an Equalizer parent to match the tallest by row 25485 * @param {array} groups - An array of heights of children within Equalizer container grouped by row with element,height and max as last child 25486 * @fires Equalizer#preequalized 25487 * @fires Equalizer#preequalizedrow 25488 * @fires Equalizer#postequalizedrow 25489 * @fires Equalizer#postequalized 25490 */ 25491 25492 }, { 25493 key: "applyHeightByRow", 25494 value: function applyHeightByRow(groups) { 25495 /** 25496 * Fires before the heights are applied 25497 */ 25498 this.$element.trigger('preequalized.zf.equalizer'); 25499 25500 for (var i = 0, len = groups.length; i < len; i++) { 25501 var groupsILength = groups[i].length, 25502 max = groups[i][groupsILength - 1]; 25503 25504 if (groupsILength <= 2) { 25505 jquery__WEBPACK_IMPORTED_MODULE_0___default()(groups[i][0][0]).css({ 25506 'height': 'auto' 25507 }); 25508 continue; 25509 } 25510 /** 25511 * Fires before the heights per row are applied 25512 * @event Equalizer#preequalizedrow 25513 */ 25514 25515 25516 this.$element.trigger('preequalizedrow.zf.equalizer'); 25517 25518 for (var j = 0, lenJ = groupsILength - 1; j < lenJ; j++) { 25519 jquery__WEBPACK_IMPORTED_MODULE_0___default()(groups[i][j][0]).css({ 25520 'height': max 25521 }); 25522 } 25523 /** 25524 * Fires when the heights per row have been applied 25525 * @event Equalizer#postequalizedrow 25526 */ 25527 25528 25529 this.$element.trigger('postequalizedrow.zf.equalizer'); 25530 } 25531 /** 25532 * Fires when the heights have been applied 25533 */ 25534 25535 25536 this.$element.trigger('postequalized.zf.equalizer'); 25537 } 25538 /** 25539 * Destroys an instance of Equalizer. 25540 * @function 25541 */ 25542 25543 }, { 25544 key: "_destroy", 25545 value: function _destroy() { 25546 this._pauseEvents(); 25547 25548 this.$watched.css('height', 'auto'); 25549 } 25550 }]); 25551 25552 return Equalizer; 25553}(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_3__["Plugin"]); 25554/** 25555 * Default settings for plugin 25556 */ 25557 25558 25559Equalizer.defaults = { 25560 /** 25561 * Enable height equalization when stacked on smaller screens. 25562 * @option 25563 * @type {boolean} 25564 * @default false 25565 */ 25566 equalizeOnStack: false, 25567 25568 /** 25569 * Enable height equalization row by row. 25570 * @option 25571 * @type {boolean} 25572 * @default false 25573 */ 25574 equalizeByRow: false, 25575 25576 /** 25577 * String representing the minimum breakpoint size the plugin should equalize heights on. 25578 * @option 25579 * @type {string} 25580 * @default '' 25581 */ 25582 equalizeOn: '' 25583}; 25584 25585 25586/***/ }), 25587 25588/***/ 6: 25589/*!**********************************************************!*\ 25590 !*** multi ./js/entries/plugins/foundation.equalizer.js ***! 25591 \**********************************************************/ 25592/*! no static exports found */ 25593/***/ (function(module, exports, __webpack_require__) { 25594 25595module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.equalizer.js */"./js/entries/plugins/foundation.equalizer.js"); 25596 25597 25598/***/ }), 25599 25600/***/ "jquery": 25601/*!********************************************************************************************!*\ 25602 !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***! 25603 \********************************************************************************************/ 25604/*! no static exports found */ 25605/***/ (function(module, exports) { 25606 25607module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__; 25608 25609/***/ }) 25610 25611/******/ }); 25612}); 25613//# sourceMappingURL=foundation.equalizer.js.map 25614(function webpackUniversalModuleDefinition(root, factory) { 25615 if(typeof exports === 'object' && typeof module === 'object') 25616 module.exports = factory(require("./foundation.core"), require("./foundation.util.mediaQuery"), require("./foundation.util.motion"), require("jquery")); 25617 else if(typeof define === 'function' && define.amd) 25618 define(["./foundation.core", "./foundation.util.mediaQuery", "./foundation.util.motion", "jquery"], factory); 25619 else if(typeof exports === 'object') 25620 exports["foundation.interchange"] = factory(require("./foundation.core"), require("./foundation.util.mediaQuery"), require("./foundation.util.motion"), require("jquery")); 25621 else 25622 root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.interchange"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.mediaQuery"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.motion"], root["jQuery"]); 25623})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE__foundation_util_mediaQuery__, __WEBPACK_EXTERNAL_MODULE__foundation_util_motion__, __WEBPACK_EXTERNAL_MODULE_jquery__) { 25624return /******/ (function(modules) { // webpackBootstrap 25625/******/ // The module cache 25626/******/ var installedModules = {}; 25627/******/ 25628/******/ // The require function 25629/******/ function __webpack_require__(moduleId) { 25630/******/ 25631/******/ // Check if module is in cache 25632/******/ if(installedModules[moduleId]) { 25633/******/ return installedModules[moduleId].exports; 25634/******/ } 25635/******/ // Create a new module (and put it into the cache) 25636/******/ var module = installedModules[moduleId] = { 25637/******/ i: moduleId, 25638/******/ l: false, 25639/******/ exports: {} 25640/******/ }; 25641/******/ 25642/******/ // Execute the module function 25643/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 25644/******/ 25645/******/ // Flag the module as loaded
vendor: 4,186 bytes, lines 25646-25727
25646/******/ module.l = true; 25647/******/ 25648/******/ // Return the exports of the module 25649/******/ return module.exports; 25650/******/ } 25651/******/ 25652/******/ 25653/******/ // expose the modules object (__webpack_modules__) 25654/******/ __webpack_require__.m = modules; 25655/******/ 25656/******/ // expose the module cache 25657/******/ __webpack_require__.c = installedModules; 25658/******/ 25659/******/ // define getter function for harmony exports 25660/******/ __webpack_require__.d = function(exports, name, getter) { 25661/******/ if(!__webpack_require__.o(exports, name)) { 25662/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); 25663/******/ } 25664/******/ }; 25665/******/ 25666/******/ // define __esModule on exports 25667/******/ __webpack_require__.r = function(exports) { 25668/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 25669/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 25670/******/ } 25671/******/ Object.defineProperty(exports, '__esModule', { value: true }); 25672/******/ }; 25673/******/ 25674/******/ // create a fake namespace object 25675/******/ // mode & 1: value is a module id, require it 25676/******/ // mode & 2: merge all properties of value into the ns 25677/******/ // mode & 4: return value when already ns object 25678/******/ // mode & 8|1: behave like require 25679/******/ __webpack_require__.t = function(value, mode) { 25680/******/ if(mode & 1) value = __webpack_require__(value); 25681/******/ if(mode & 8) return value; 25682/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; 25683/******/ var ns = Object.create(null); 25684/******/ __webpack_require__.r(ns); 25685/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); 25686/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); 25687/******/ return ns; 25688/******/ }; 25689/******/ 25690/******/ // getDefaultExport function for compatibility with non-harmony modules 25691/******/ __webpack_require__.n = function(module) { 25692/******/ var getter = module && module.__esModule ? 25693/******/ function getDefault() { return module['default']; } : 25694/******/ function getModuleExports() { return module; }; 25695/******/ __webpack_require__.d(getter, 'a', getter); 25696/******/ return getter; 25697/******/ }; 25698/******/ 25699/******/ // Object.prototype.hasOwnProperty.call 25700/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; 25701/******/ 25702/******/ // __webpack_public_path__ 25703/******/ __webpack_require__.p = ""; 25704/******/ 25705/******/ 25706/******/ // Load entry module and return exports 25707/******/ return __webpack_require__(__webpack_require__.s = 7); 25708/******/ }) 25709/************************************************************************/ 25710/******/ ({ 25711 25712/***/ "./foundation.core": 25713/*!****************************************************************************************************************************************************************!*\ 25714 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***! 25715 \****************************************************************************************************************************************************************/ 25716/*! no static exports found */ 25717/***/ (function(module, exports) { 25718 25719module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__; 25720 25721/***/ }), 25722 25723/***/ "./foundation.util.mediaQuery": 25724/*!************************************************************************************************************************************************************************************************************!*\ 25725 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.mediaQuery"],"amd":"./foundation.util.mediaQuery","commonjs":"./foundation.util.mediaQuery","commonjs2":"./foundation.util.mediaQuery"} ***! 25726 \************************************************************************************************************************************************************************************************************/ 25727/*! no static exports found */
25728/***/ (function(module, exports) { 25729 25730module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_mediaQuery__; 25731 25732/***/ }), 25733 25734/***/ "./foundation.util.motion": 25735/*!********************************************************************************************************************************************************************************************!*\ 25736 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.motion"],"amd":"./foundation.util.motion","commonjs":"./foundation.util.motion","commonjs2":"./foundation.util.motion"} ***! 25737 \********************************************************************************************************************************************************************************************/ 25738/*! no static exports found */ 25739/***/ (function(module, exports) { 25740 25741module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_motion__; 25742 25743/***/ }), 25744
25745/***/ "./js/entries/plugins/foundation.interchange.js": 25746/*!******************************************************!*\ 25747 !*** ./js/entries/plugins/foundation.interchange.js ***! 25748 \******************************************************/ 25749/*! exports provided: Foundation, Interchange */ 25750/***/ (function(module, __webpack_exports__, __webpack_require__) { 25751 25752"use strict"; 25753__webpack_require__.r(__webpack_exports__); 25754/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core"); 25755/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__); 25756/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; }); 25757 25758/* harmony import */ var _foundation_interchange__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.interchange */ "./js/foundation.interchange.js"); 25759/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Interchange", function() { return _foundation_interchange__WEBPACK_IMPORTED_MODULE_1__["Interchange"]; }); 25760 25761 25762 25763_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].plugin(_foundation_interchange__WEBPACK_IMPORTED_MODULE_1__["Interchange"], 'Interchange'); 25764 25765 25766/***/ }), 25767
25768/***/ "./js/foundation.interchange.js": 25769/*!**************************************!*\ 25770 !*** ./js/foundation.interchange.js ***! 25771 \**************************************/ 25772/*! exports provided: Interchange */ 25773/***/ (function(module, __webpack_exports__, __webpack_require__) { 25774 25775"use strict"; 25776__webpack_require__.r(__webpack_exports__); 25777/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Interchange", function() { return Interchange; }); 25778/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery"); 25779/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__); 25780/* harmony import */ var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.util.mediaQuery */ "./foundation.util.mediaQuery"); 25781/* harmony import */ var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__); 25782/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.core.plugin */ "./foundation.core"); 25783/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_2__); 25784/* harmony import */ var _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./foundation.util.triggers */ "./js/foundation.util.triggers.js"); 25785 25786 25787function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } 25788 25789function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 25790 25791function _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); } } 25792 25793function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } 25794 25795function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } 25796 25797function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } 25798 25799function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } 25800 25801function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } 25802 25803function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } 25804 25805 25806 25807 25808 25809 25810/** 25811 * Interchange module. 25812 * @module foundation.interchange 25813 * @requires foundation.util.mediaQuery 25814 */ 25815 25816var Interchange = 25817/*#__PURE__*/ 25818function (_Plugin) { 25819 _inherits(Interchange, _Plugin); 25820 25821 function Interchange() { 25822 _classCallCheck(this, Interchange); 25823 25824 return _possibleConstructorReturn(this, _getPrototypeOf(Interchange).apply(this, arguments)); 25825 } 25826 25827 _createClass(Interchange, [{ 25828 key: "_setup", 25829 25830 /** 25831 * Creates a new instance of Interchange. 25832 * @class 25833 * @name Interchange 25834 * @fires Interchange#init 25835 * @param {Object} element - jQuery object to add the trigger to. 25836 * @param {Object} options - Overrides to the default plugin settings. 25837 */ 25838 value: function _setup(element, options) { 25839 this.$element = element; 25840 this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, Interchange.defaults, this.$element.data(), options); 25841 this.rules = []; 25842 this.currentPath = ''; 25843 this.className = 'Interchange'; // ie9 back compat 25844 // Triggers init is idempotent, just need to make sure it is initialized 25845 25846 _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_3__["Triggers"].init(jquery__WEBPACK_IMPORTED_MODULE_0___default.a); 25847 25848 this._init(); 25849 25850 this._events(); 25851 } 25852 /** 25853 * Initializes the Interchange plugin and calls functions to get interchange functioning on load. 25854 * @function 25855 * @private 25856 */ 25857 25858 }, { 25859 key: "_init", 25860 value: function _init() { 25861 _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"]._init(); 25862 25863 var id = this.$element[0].id || Object(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_2__["GetYoDigits"])(6, 'interchange'); 25864 this.$element.attr({ 25865 'data-resize': id, 25866 'id': id 25867 }); 25868 25869 this._parseOptions(); 25870 25871 this._addBreakpoints(); 25872 25873 this._generateRules(); 25874 25875 this._reflow(); 25876 } 25877 /** 25878 * Initializes events for Interchange. 25879 * @function 25880 * @private 25881 */ 25882 25883 }, { 25884 key: "_events", 25885 value: function _events() { 25886 var _this = this; 25887 25888 this.$element.off('resizeme.zf.trigger').on('resizeme.zf.trigger', function () { 25889 return _this._reflow(); 25890 }); 25891 } 25892 /** 25893 * Calls necessary functions to update Interchange upon DOM change 25894 * @function 25895 * @private 25896 */ 25897 25898 }, { 25899 key: "_reflow", 25900 value: function _reflow() { 25901 var match; // Iterate through each rule, but only save the last match 25902 25903 for (var i in this.rules) { 25904 if (this.rules.hasOwnProperty(i)) { 25905 var rule = this.rules[i]; 25906 25907 if (window.matchMedia(rule.query).matches) { 25908 match = rule; 25909 } 25910 } 25911 } 25912 25913 if (match) { 25914 this.replace(match.path); 25915 } 25916 } 25917 /** 25918 * Check options valifity and set defaults for: 25919 * - `data-interchange-type`: if set, enforce the type of replacement (auto, src, background or html) 25920 * @function 25921 * @private 25922 */ 25923 25924 }, { 25925 key: "_parseOptions", 25926 value: function _parseOptions() { 25927 var types = ['auto', 'src', 'background', 'html']; 25928 if (typeof this.options.type === 'undefined') this.options.type = 'auto';else if (types.indexOf(this.options.type) === -1) { 25929 console.log("Warning: invalid value \"".concat(this.options.type, "\" for Interchange option \"type\"")); 25930 this.options.type = 'auto'; 25931 } 25932 } 25933 /** 25934 * Gets the Foundation breakpoints and adds them to the Interchange.SPECIAL_QUERIES object. 25935 * @function 25936 * @private 25937 */ 25938 25939 }, { 25940 key: "_addBreakpoints", 25941 value: function _addBreakpoints() { 25942 for (var i in _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"].queries) { 25943 if (_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"].queries.hasOwnProperty(i)) { 25944 var query = _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"].queries[i]; 25945 Interchange.SPECIAL_QUERIES[query.name] = query.value; 25946 } 25947 } 25948 } 25949 /** 25950 * Checks the Interchange element for the provided media query + content pairings 25951 * @function 25952 * @private 25953 * @param {Object} element - jQuery object that is an Interchange instance 25954 * @returns {Array} scenarios - Array of objects that have 'mq' and 'path' keys with corresponding keys 25955 */ 25956 25957 }, { 25958 key: "_generateRules", 25959 value: function _generateRules(element) { 25960 var rulesList = []; 25961 var rules; 25962 25963 if (this.options.rules) { 25964 rules = this.options.rules; 25965 } else { 25966 rules = this.$element.data('interchange'); 25967 } 25968 25969 rules = typeof rules === 'string' ? rules.match(/\[.*?, .*?\]/g) : rules; 25970 25971 for (var i in rules) { 25972 if (rules.hasOwnProperty(i)) { 25973 var rule = rules[i].slice(1, -1).split(', '); 25974 var path = rule.slice(0, -1).join(''); 25975 var query = rule[rule.length - 1]; 25976 25977 if (Interchange.SPECIAL_QUERIES[query]) { 25978 query = Interchange.SPECIAL_QUERIES[query]; 25979 } 25980 25981 rulesList.push({ 25982 path: path, 25983 query: query 25984 }); 25985 } 25986 } 25987 25988 this.rules = rulesList; 25989 } 25990 /** 25991 * Update the `src` property of an image, or change the HTML of a container, to the specified path. 25992 * @function 25993 * @param {String} path - Path to the image or HTML partial. 25994 * @fires Interchange#replaced 25995 */ 25996 25997 }, { 25998 key: "replace", 25999 value: function replace(path) { 26000 var _this2 = this; 26001 26002 if (this.currentPath === path) return; 26003 var trigger = 'replaced.zf.interchange'; 26004 var type = this.options.type; 26005 26006 if (type === 'auto') { 26007 if (this.$element[0].nodeName === 'IMG') type = 'src';else if (path.match(/\.(gif|jpe?g|png|svg|tiff)([?#].*)?/i)) type = 'background';
vendor: 15,470 bytes, lines 26007-26400
26007else type = 'html'; 26008 } // Replacing images 26009 26010 26011 if (type === 'src') { 26012 this.$element.attr('src', path).on('load', function () { 26013 _this2.currentPath = path; 26014 }).trigger(trigger); 26015 } // Replacing background images 26016 else if (type === 'background') { 26017 path = path.replace(/\(/g, '%28').replace(/\)/g, '%29'); 26018 this.$element.css({ 26019 'background-image': 'url(' + path + ')' 26020 }).trigger(trigger); 26021 } // Replacing HTML 26022 else if (type === 'html') { 26023 jquery__WEBPACK_IMPORTED_MODULE_0___default.a.get(path, function (response) { 26024 _this2.$element.html(response).trigger(trigger); 26025 26026 jquery__WEBPACK_IMPORTED_MODULE_0___default()(response).foundation(); 26027 _this2.currentPath = path; 26028 }); 26029 } 26030 /** 26031 * Fires when content in an Interchange element is done being loaded. 26032 * @event Interchange#replaced 26033 */ 26034 // this.$element.trigger('replaced.zf.interchange'); 26035 26036 } 26037 /** 26038 * Destroys an instance of interchange. 26039 * @function 26040 */ 26041 26042 }, { 26043 key: "_destroy", 26044 value: function _destroy() { 26045 this.$element.off('resizeme.zf.trigger'); 26046 } 26047 }]); 26048 26049 return Interchange; 26050}(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_2__["Plugin"]); 26051/** 26052 * Default settings for plugin 26053 */ 26054 26055 26056Interchange.defaults = { 26057 /** 26058 * Rules to be applied to Interchange elements. Set with the `data-interchange` array notation. 26059 * @option 26060 * @type {?array} 26061 * @default null 26062 */ 26063 rules: null, 26064 26065 /** 26066 * Type of the responsive ressource to replace. It can take the following options: 26067 * - `auto` (default): choose the type according to the element tag or the ressource extension, 26068 * - `src`: replace the `[src]` attribute, recommended for images `<img>`. 26069 * - `background`: replace the `background-image` CSS property. 26070 * - `html`: replace the element content. 26071 * @option 26072 * @type {string} 26073 * @default 'auto' 26074 */ 26075 type: 'auto' 26076}; 26077Interchange.SPECIAL_QUERIES = { 26078 'landscape': 'screen and (orientation: landscape)', 26079 'portrait': 'screen and (orientation: portrait)', 26080 'retina': 'only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx)' 26081}; 26082 26083 26084/***/ }), 26085 26086/***/ "./js/foundation.util.triggers.js": 26087/*!****************************************!*\ 26088 !*** ./js/foundation.util.triggers.js ***! 26089 \****************************************/ 26090/*! exports provided: Triggers */ 26091/***/ (function(module, __webpack_exports__, __webpack_require__) { 26092 26093"use strict"; 26094__webpack_require__.r(__webpack_exports__); 26095/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Triggers", function() { return Triggers; }); 26096/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery"); 26097/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__); 26098/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.utils */ "./foundation.core"); 26099/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__); 26100/* harmony import */ var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.util.motion */ "./foundation.util.motion"); 26101/* harmony import */ var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__); 26102 26103 26104function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } 26105 26106 26107 26108 26109 26110var MutationObserver = function () { 26111 var prefixes = ['WebKit', 'Moz', 'O', 'Ms', '']; 26112 26113 for (var i = 0; i < prefixes.length; i++) { 26114 if ("".concat(prefixes[i], "MutationObserver") in window) { 26115 return window["".concat(prefixes[i], "MutationObserver")]; 26116 } 26117 } 26118 26119 return false; 26120}(); 26121 26122var triggers = function triggers(el, type) { 26123 el.data(type).split(' ').forEach(function (id) { 26124 jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(id))[type === 'close' ? 'trigger' : 'triggerHandler']("".concat(type, ".zf.trigger"), [el]); 26125 }); 26126}; 26127 26128var Triggers = { 26129 Listeners: { 26130 Basic: {}, 26131 Global: {} 26132 }, 26133 Initializers: {} 26134}; 26135Triggers.Listeners.Basic = { 26136 openListener: function openListener() { 26137 triggers(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'open'); 26138 }, 26139 closeListener: function closeListener() { 26140 var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('close'); 26141 26142 if (id) { 26143 triggers(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'close'); 26144 } else { 26145 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger('close.zf.trigger'); 26146 } 26147 }, 26148 toggleListener: function toggleListener() { 26149 var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('toggle'); 26150 26151 if (id) { 26152 triggers(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'toggle'); 26153 } else { 26154 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger('toggle.zf.trigger'); 26155 } 26156 }, 26157 closeableListener: function closeableListener(e) { 26158 var animation = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('closable'); // Only close the first closable element. See https://git.io/zf-7833 26159 26160 e.stopPropagation(); 26161 26162 if (animation !== '') { 26163 _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__["Motion"].animateOut(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), animation, function () { 26164 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger('closed.zf'); 26165 }); 26166 } else { 26167 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).fadeOut().trigger('closed.zf'); 26168 } 26169 }, 26170 toggleFocusListener: function toggleFocusListener() { 26171 var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('toggle-focus'); 26172 jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(id)).triggerHandler('toggle.zf.trigger', [jquery__WEBPACK_IMPORTED_MODULE_0___default()(this)]); 26173 } 26174}; // Elements with [data-open] will reveal a plugin that supports it when clicked. 26175 26176Triggers.Initializers.addOpenListener = function ($elem) { 26177 $elem.off('click.zf.trigger', Triggers.Listeners.Basic.openListener); 26178 $elem.on('click.zf.trigger', '[data-open]', Triggers.Listeners.Basic.openListener); 26179}; // Elements with [data-close] will close a plugin that supports it when clicked. 26180// If used without a value on [data-close], the event will bubble, allowing it to close a parent component. 26181 26182 26183Triggers.Initializers.addCloseListener = function ($elem) { 26184 $elem.off('click.zf.trigger', Triggers.Listeners.Basic.closeListener); 26185 $elem.on('click.zf.trigger', '[data-close]', Triggers.Listeners.Basic.closeListener); 26186}; // Elements with [data-toggle] will toggle a plugin that supports it when clicked. 26187 26188 26189Triggers.Initializers.addToggleListener = function ($elem) { 26190 $elem.off('click.zf.trigger', Triggers.Listeners.Basic.toggleListener); 26191 $elem.on('click.zf.trigger', '[data-toggle]', Triggers.Listeners.Basic.toggleListener); 26192}; // Elements with [data-closable] will respond to close.zf.trigger events. 26193 26194 26195Triggers.Initializers.addCloseableListener = function ($elem) { 26196 $elem.off('close.zf.trigger', Triggers.Listeners.Basic.closeableListener); 26197 $elem.on('close.zf.trigger', '[data-closeable], [data-closable]', Triggers.Listeners.Basic.closeableListener); 26198}; // Elements with [data-toggle-focus] will respond to coming in and out of focus 26199 26200 26201Triggers.Initializers.addToggleFocusListener = function ($elem) { 26202 $elem.off('focus.zf.trigger blur.zf.trigger', Triggers.Listeners.Basic.toggleFocusListener); 26203 $elem.on('focus.zf.trigger blur.zf.trigger', '[data-toggle-focus]', Triggers.Listeners.Basic.toggleFocusListener); 26204}; // More Global/complex listeners and triggers 26205 26206 26207Triggers.Listeners.Global = { 26208 resizeListener: function resizeListener($nodes) { 26209 if (!MutationObserver) { 26210 //fallback for IE 9 26211 $nodes.each(function () { 26212 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).triggerHandler('resizeme.zf.trigger'); 26213 }); 26214 } //trigger all listening elements and signal a resize event 26215 26216 26217 $nodes.attr('data-events', "resize"); 26218 }, 26219 scrollListener: function scrollListener($nodes) { 26220 if (!MutationObserver) { 26221 //fallback for IE 9 26222 $nodes.each(function () { 26223 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).triggerHandler('scrollme.zf.trigger'); 26224 }); 26225 } //trigger all listening elements and signal a scroll event 26226 26227 26228 $nodes.attr('data-events', "scroll"); 26229 }, 26230 closeMeListener: function closeMeListener(e, pluginId) { 26231 var plugin = e.namespace.split('.')[0]; 26232 var plugins = jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-".concat(plugin, "]")).not("[data-yeti-box=\"".concat(pluginId, "\"]")); 26233 plugins.each(function () { 26234 var _this = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this); 26235 26236 _this.triggerHandler('close.zf.trigger', [_this]); 26237 }); 26238 } // Global, parses whole document. 26239 26240}; 26241 26242Triggers.Initializers.addClosemeListener = function (pluginName) { 26243 var yetiBoxes = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-yeti-box]'), 26244 plugNames = ['dropdown', 'tooltip', 'reveal']; 26245 26246 if (pluginName) { 26247 if (typeof pluginName === 'string') { 26248 plugNames.push(pluginName); 26249 } else if (_typeof(pluginName) === 'object' && typeof pluginName[0] === 'string') { 26250 plugNames = plugNames.concat(pluginName); 26251 } else { 26252 console.error('Plugin names must be strings'); 26253 } 26254 } 26255 26256 if (yetiBoxes.length) { 26257 var listeners = plugNames.map(function (name) { 26258 return "closeme.zf.".concat(name); 26259 }).join(' '); 26260 jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(listeners).on(listeners, Triggers.Listeners.Global.closeMeListener); 26261 } 26262}; 26263 26264function debounceGlobalListener(debounce, trigger, listener) { 26265 var timer, 26266 args = Array.prototype.slice.call(arguments, 3); 26267 jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(trigger).on(trigger, function (e) { 26268 if (timer) { 26269 clearTimeout(timer); 26270 } 26271 26272 timer = setTimeout(function () { 26273 listener.apply(null, args); 26274 }, debounce || 10); //default time to emit scroll event 26275 }); 26276} 26277 26278Triggers.Initializers.addResizeListener = function (debounce) { 26279 var $nodes = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-resize]'); 26280 26281 if ($nodes.length) { 26282 debounceGlobalListener(debounce, 'resize.zf.trigger', Triggers.Listeners.Global.resizeListener, $nodes); 26283 } 26284}; 26285 26286Triggers.Initializers.addScrollListener = function (debounce) { 26287 var $nodes = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-scroll]'); 26288 26289 if ($nodes.length) { 26290 debounceGlobalListener(debounce, 'scroll.zf.trigger', Triggers.Listeners.Global.scrollListener, $nodes); 26291 } 26292}; 26293 26294Triggers.Initializers.addMutationEventsListener = function ($elem) { 26295 if (!MutationObserver) { 26296 return false; 26297 } 26298 26299 var $nodes = $elem.find('[data-resize], [data-scroll], [data-mutate]'); //element callback 26300 26301 var listeningElementsMutation = function listeningElementsMutation(mutationRecordsList) { 26302 var $target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(mutationRecordsList[0].target); //trigger the event handler for the element depending on type 26303 26304 switch (mutationRecordsList[0].type) { 26305 case "attributes": 26306 if ($target.attr("data-events") === "scroll" && mutationRecordsList[0].attributeName === "data-events") { 26307 $target.triggerHandler('scrollme.zf.trigger', [$target, window.pageYOffset]); 26308 } 26309 26310 if ($target.attr("data-events") === "resize" && mutationRecordsList[0].attributeName === "data-events") { 26311 $target.triggerHandler('resizeme.zf.trigger', [$target]); 26312 } 26313 26314 if (mutationRecordsList[0].attributeName === "style") { 26315 $target.closest("[data-mutate]").attr("data-events", "mutate"); 26316 $target.closest("[data-mutate]").triggerHandler('mutateme.zf.trigger', [$target.closest("[data-mutate]")]); 26317 } 26318 26319 break; 26320 26321 case "childList": 26322 $target.closest("[data-mutate]").attr("data-events", "mutate"); 26323 $target.closest("[data-mutate]").triggerHandler('mutateme.zf.trigger', [$target.closest("[data-mutate]")]); 26324 break; 26325 26326 default: 26327 return false; 26328 //nothing 26329 } 26330 }; 26331 26332 if ($nodes.length) { 26333 //for each element that needs to listen for resizing, scrolling, or mutation add a single observer 26334 for (var i = 0; i <= $nodes.length - 1; i++) { 26335 var elementObserver = new MutationObserver(listeningElementsMutation); 26336 elementObserver.observe($nodes[i], { 26337 attributes: true, 26338 childList: true, 26339 characterData: false, 26340 subtree: true, 26341 attributeFilter: ["data-events", "style"] 26342 }); 26343 } 26344 } 26345}; 26346 26347Triggers.Initializers.addSimpleListeners = function () { 26348 var $document = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document); 26349 Triggers.Initializers.addOpenListener($document); 26350 Triggers.Initializers.addCloseListener($document); 26351 Triggers.Initializers.addToggleListener($document); 26352 Triggers.Initializers.addCloseableListener($document); 26353 Triggers.Initializers.addToggleFocusListener($document); 26354}; 26355 26356Triggers.Initializers.addGlobalListeners = function () { 26357 var $document = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document); 26358 Triggers.Initializers.addMutationEventsListener($document); 26359 Triggers.Initializers.addResizeListener(); 26360 Triggers.Initializers.addScrollListener(); 26361 Triggers.Initializers.addClosemeListener(); 26362}; 26363 26364Triggers.init = function ($, Foundation) { 26365 Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["onLoad"])($(window), function () { 26366 if ($.triggersInitialized !== true) { 26367 Triggers.Initializers.addSimpleListeners(); 26368 Triggers.Initializers.addGlobalListeners(); 26369 $.triggersInitialized = true; 26370 } 26371 }); 26372 26373 if (Foundation) { 26374 Foundation.Triggers = Triggers; // Legacy included to be backwards compatible for now. 26375 26376 Foundation.IHearYou = Triggers.Initializers.addGlobalListeners; 26377 } 26378}; 26379 26380 26381 26382/***/ }), 26383 26384/***/ 7: 26385/*!************************************************************!*\ 26386 !*** multi ./js/entries/plugins/foundation.interchange.js ***! 26387 \************************************************************/ 26388/*! no static exports found */ 26389/***/ (function(module, exports, __webpack_require__) { 26390 26391module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.interchange.js */"./js/entries/plugins/foundation.interchange.js"); 26392 26393 26394/***/ }), 26395 26396/***/ "jquery": 26397/*!********************************************************************************************!*\ 26398 !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***! 26399 \********************************************************************************************/ 26400/*! no static exports found */
vendor: 4,419 bytes, lines 26401-26487
26401/***/ (function(module, exports) { 26402 26403module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__; 26404 26405/***/ }) 26406 26407/******/ }); 26408}); 26409//# sourceMappingURL=foundation.interchange.js.map 26410(function webpackUniversalModuleDefinition(root, factory) { 26411 if(typeof exports === 'object' && typeof module === 'object') 26412 module.exports = factory(require("./foundation.core"), require("./foundation.util.keyboard"), require("./foundation.util.mediaQuery"), require("./foundation.util.motion"), require("jquery")); 26413 else if(typeof define === 'function' && define.amd) 26414 define(["./foundation.core", "./foundation.util.keyboard", "./foundation.util.mediaQuery", "./foundation.util.motion", "jquery"], factory); 26415 else if(typeof exports === 'object') 26416 exports["foundation.offcanvas"] = factory(require("./foundation.core"), require("./foundation.util.keyboard"), require("./foundation.util.mediaQuery"), require("./foundation.util.motion"), require("jquery")); 26417 else 26418 root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.offcanvas"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.keyboard"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.mediaQuery"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.motion"], root["jQuery"]); 26419})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE__foundation_util_keyboard__, __WEBPACK_EXTERNAL_MODULE__foundation_util_mediaQuery__, __WEBPACK_EXTERNAL_MODULE__foundation_util_motion__, __WEBPACK_EXTERNAL_MODULE_jquery__) { 26420return /******/ (function(modules) { // webpackBootstrap 26421/******/ // The module cache 26422/******/ var installedModules = {}; 26423/******/ 26424/******/ // The require function 26425/******/ function __webpack_require__(moduleId) { 26426/******/ 26427/******/ // Check if module is in cache 26428/******/ if(installedModules[moduleId]) { 26429/******/ return installedModules[moduleId].exports; 26430/******/ } 26431/******/ // Create a new module (and put it into the cache) 26432/******/ var module = installedModules[moduleId] = { 26433/******/ i: moduleId, 26434/******/ l: false, 26435/******/ exports: {} 26436/******/ }; 26437/******/ 26438/******/ // Execute the module function 26439/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 26440/******/ 26441/******/ // Flag the module as loaded 26442/******/ module.l = true; 26443/******/ 26444/******/ // Return the exports of the module 26445/******/ return module.exports; 26446/******/ } 26447/******/ 26448/******/ 26449/******/ // expose the modules object (__webpack_modules__) 26450/******/ __webpack_require__.m = modules; 26451/******/ 26452/******/ // expose the module cache 26453/******/ __webpack_require__.c = installedModules; 26454/******/ 26455/******/ // define getter function for harmony exports 26456/******/ __webpack_require__.d = function(exports, name, getter) { 26457/******/ if(!__webpack_require__.o(exports, name)) { 26458/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); 26459/******/ } 26460/******/ }; 26461/******/ 26462/******/ // define __esModule on exports 26463/******/ __webpack_require__.r = function(exports) { 26464/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 26465/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 26466/******/ } 26467/******/ Object.defineProperty(exports, '__esModule', { value: true }); 26468/******/ }; 26469/******/ 26470/******/ // create a fake namespace object 26471/******/ // mode & 1: value is a module id, require it 26472/******/ // mode & 2: merge all properties of value into the ns 26473/******/ // mode & 4: return value when already ns object 26474/******/ // mode & 8|1: behave like require 26475/******/ __webpack_require__.t = function(value, mode) { 26476/******/ if(mode & 1) value = __webpack_require__(value); 26477/******/ if(mode & 8) return value; 26478/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; 26479/******/ var ns = Object.create(null); 26480/******/ __webpack_require__.r(ns); 26481/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); 26482/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); 26483/******/ return ns; 26484/******/ }; 26485/******/ 26486/******/ // getDefaultExport function for compatibility with non-harmony modules 26487/******/ __webpack_require__.n = function(module) {
26488/******/ var getter = module && module.__esModule ? 26489/******/ function getDefault() { return module['default']; } : 26490/******/ function getModuleExports() { return module; }; 26491/******/ __webpack_require__.d(getter, 'a', getter); 26492/******/ return getter; 26493/******/ }; 26494/******/ 26495/******/ // Object.prototype.hasOwnProperty.call 26496/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; 26497/******/ 26498/******/ // __webpack_public_path__ 26499/******/ __webpack_require__.p = ""; 26500/******/ 26501/******/ 26502/******/ // Load entry module and return exports 26503/******/ return __webpack_require__(__webpack_require__.s = 9); 26504/******/ }) 26505/************************************************************************/ 26506/******/ ({ 26507 26508/***/ "./foundation.core": 26509/*!****************************************************************************************************************************************************************!*\ 26510 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***! 26511 \****************************************************************************************************************************************************************/ 26512/*! no static exports found */ 26513/***/ (function(module, exports) { 26514 26515module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__; 26516 26517/***/ }), 26518 26519/***/ "./foundation.util.keyboard": 26520/*!****************************************************************************************************************************************************************************************************!*\ 26521 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.keyboard"],"amd":"./foundation.util.keyboard","commonjs":"./foundation.util.keyboard","commonjs2":"./foundation.util.keyboard"} ***! 26522 \****************************************************************************************************************************************************************************************************/ 26523/*! no static exports found */ 26524/***/ (function(module, exports) { 26525 26526module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_keyboard__; 26527 26528/***/ }), 26529 26530/***/ "./foundation.util.mediaQuery": 26531/*!************************************************************************************************************************************************************************************************************!*\ 26532 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.mediaQuery"],"amd":"./foundation.util.mediaQuery","commonjs":"./foundation.util.mediaQuery","commonjs2":"./foundation.util.mediaQuery"} ***! 26533 \************************************************************************************************************************************************************************************************************/ 26534/*! no static exports found */ 26535/***/ (function(module, exports) { 26536 26537module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_mediaQuery__; 26538 26539/***/ }), 26540 26541/***/ "./foundation.util.motion": 26542/*!********************************************************************************************************************************************************************************************!*\ 26543 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.motion"],"amd":"./foundation.util.motion","commonjs":"./foundation.util.motion","commonjs2":"./foundation.util.motion"} ***! 26544 \********************************************************************************************************************************************************************************************/ 26545/*! no static exports found */ 26546/***/ (function(module, exports) { 26547 26548module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_motion__; 26549 26550/***/ }), 26551
26552/***/ "./js/entries/plugins/foundation.offcanvas.js": 26553/*!****************************************************!*\ 26554 !*** ./js/entries/plugins/foundation.offcanvas.js ***! 26555 \****************************************************/ 26556/*! exports provided: Foundation, OffCanvas */ 26557/***/ (function(module, __webpack_exports__, __webpack_require__) { 26558 26559"use strict"; 26560__webpack_require__.r(__webpack_exports__); 26561/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core"); 26562/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__); 26563/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; }); 26564 26565/* harmony import */ var _foundation_offcanvas__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.offcanvas */ "./js/foundation.offcanvas.js"); 26566/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "OffCanvas", function() { return _foundation_offcanvas__WEBPACK_IMPORTED_MODULE_1__["OffCanvas"]; }); 26567 26568 26569 26570_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].plugin(_foundation_offcanvas__WEBPACK_IMPORTED_MODULE_1__["OffCanvas"], 'OffCanvas'); 26571 26572 26573/***/ }), 26574
vendor: 5,486 bytes, lines 26575-26665
26575/***/ "./js/foundation.offcanvas.js": 26576/*!************************************!*\ 26577 !*** ./js/foundation.offcanvas.js ***! 26578 \************************************/ 26579/*! exports provided: OffCanvas */ 26580/***/ (function(module, __webpack_exports__, __webpack_require__) { 26581 26582"use strict"; 26583__webpack_require__.r(__webpack_exports__); 26584/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "OffCanvas", function() { return OffCanvas; }); 26585/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery"); 26586/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__); 26587/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.plugin */ "./foundation.core"); 26588/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__); 26589/* harmony import */ var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.util.keyboard */ "./foundation.util.keyboard"); 26590/* harmony import */ var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__); 26591/* harmony import */ var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./foundation.util.mediaQuery */ "./foundation.util.mediaQuery"); 26592/* harmony import */ var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_3__); 26593/* harmony import */ var _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./foundation.util.triggers */ "./js/foundation.util.triggers.js"); 26594 26595 26596function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } 26597 26598function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 26599 26600function _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); } } 26601 26602function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } 26603 26604function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } 26605 26606function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } 26607 26608function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } 26609 26610function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } 26611 26612function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } 26613 26614 26615 26616 26617 26618 26619 26620/** 26621 * OffCanvas module. 26622 * @module foundation.offCanvas 26623 * @requires foundation.util.keyboard 26624 * @requires foundation.util.mediaQuery 26625 * @requires foundation.util.triggers 26626 */ 26627 26628var OffCanvas = 26629/*#__PURE__*/ 26630function (_Plugin) { 26631 _inherits(OffCanvas, _Plugin); 26632 26633 function OffCanvas() { 26634 _classCallCheck(this, OffCanvas); 26635 26636 return _possibleConstructorReturn(this, _getPrototypeOf(OffCanvas).apply(this, arguments)); 26637 } 26638 26639 _createClass(OffCanvas, [{ 26640 key: "_setup", 26641 26642 /** 26643 * Creates a new instance of an off-canvas wrapper. 26644 * @class 26645 * @name OffCanvas 26646 * @fires OffCanvas#init 26647 * @param {Object} element - jQuery object to initialize. 26648 * @param {Object} options - Overrides to the default plugin settings. 26649 */ 26650 value: function _setup(element, options) { 26651 var _this2 = this; 26652 26653 this.className = 'OffCanvas'; // ie9 back compat 26654 26655 this.$element = element; 26656 this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, OffCanvas.defaults, this.$element.data(), options); 26657 this.contentClasses = { 26658 base: [], 26659 reveal: [] 26660 }; 26661 this.$lastTrigger = jquery__WEBPACK_IMPORTED_MODULE_0___default()(); 26662 this.$triggers = jquery__WEBPACK_IMPORTED_MODULE_0___default()(); 26663 this.position = 'left'; 26664 this.$content = jquery__WEBPACK_IMPORTED_MODULE_0___default()(); 26665 this.nested = !!this.options.nested;
vendor: 23,229 bytes, lines 26666-27284
26666 this.$sticky = jquery__WEBPACK_IMPORTED_MODULE_0___default()(); 26667 this.isInCanvas = false; // Defines the CSS transition/position classes of the off-canvas content container. 26668 26669 jquery__WEBPACK_IMPORTED_MODULE_0___default()(['push', 'overlap']).each(function (index, val) { 26670 _this2.contentClasses.base.push('has-transition-' + val); 26671 }); 26672 jquery__WEBPACK_IMPORTED_MODULE_0___default()(['left', 'right', 'top', 'bottom']).each(function (index, val) { 26673 _this2.contentClasses.base.push('has-position-' + val); 26674 26675 _this2.contentClasses.reveal.push('has-reveal-' + val); 26676 }); // Triggers init is idempotent, just need to make sure it is initialized 26677 26678 _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_4__["Triggers"].init(jquery__WEBPACK_IMPORTED_MODULE_0___default.a); 26679 26680 _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_3__["MediaQuery"]._init(); 26681 26682 this._init(); 26683 26684 this._events(); 26685 26686 _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__["Keyboard"].register('OffCanvas', { 26687 'ESCAPE': 'close' 26688 }); 26689 } 26690 /** 26691 * Initializes the off-canvas wrapper by adding the exit overlay (if needed). 26692 * @function 26693 * @private 26694 */ 26695 26696 }, { 26697 key: "_init", 26698 value: function _init() { 26699 var id = this.$element.attr('id'); 26700 this.$element.attr('aria-hidden', 'true'); // Find off-canvas content, either by ID (if specified), by siblings or by closest selector (fallback) 26701 26702 if (this.options.contentId) { 26703 this.$content = jquery__WEBPACK_IMPORTED_MODULE_0___default()('#' + this.options.contentId); 26704 } else if (this.$element.siblings('[data-off-canvas-content]').length) { 26705 this.$content = this.$element.siblings('[data-off-canvas-content]').first(); 26706 } else { 26707 this.$content = this.$element.closest('[data-off-canvas-content]').first(); 26708 } 26709 26710 if (!this.options.contentId) { 26711 // Assume that the off-canvas element is nested if it isn't a sibling of the content 26712 this.nested = this.$element.siblings('[data-off-canvas-content]').length === 0; 26713 } else if (this.options.contentId && this.options.nested === null) { 26714 // Warning if using content ID without setting the nested option 26715 // Once the element is nested it is required to work properly in this case 26716 console.warn('Remember to use the nested option if using the content ID option!'); 26717 } 26718 26719 if (this.nested === true) { 26720 // Force transition overlap if nested 26721 this.options.transition = 'overlap'; // Remove appropriate classes if already assigned in markup 26722 26723 this.$element.removeClass('is-transition-push'); 26724 } 26725 26726 this.$element.addClass("is-transition-".concat(this.options.transition, " is-closed")); // Find triggers that affect this element and add aria-expanded to them 26727 26728 this.$triggers = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).find('[data-open="' + id + '"], [data-close="' + id + '"], [data-toggle="' + id + '"]').attr('aria-expanded', 'false').attr('aria-controls', id); // Get position by checking for related CSS class 26729 26730 this.position = this.$element.is('.position-left, .position-top, .position-right, .position-bottom') ? this.$element.attr('class').match(/position\-(left|top|right|bottom)/)[1] : this.position; // Add an overlay over the content if necessary 26731 26732 if (this.options.contentOverlay === true) { 26733 var overlay = document.createElement('div'); 26734 var overlayPosition = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this.$element).css("position") === 'fixed' ? 'is-overlay-fixed' : 'is-overlay-absolute'; 26735 overlay.setAttribute('class', 'js-off-canvas-overlay ' + overlayPosition); 26736 this.$overlay = jquery__WEBPACK_IMPORTED_MODULE_0___default()(overlay); 26737 26738 if (overlayPosition === 'is-overlay-fixed') { 26739 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this.$overlay).insertAfter(this.$element); 26740 } else { 26741 this.$content.append(this.$overlay); 26742 } 26743 } // Get the revealOn option from the class. 26744 26745 26746 var revealOnRegExp = new RegExp(Object(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["RegExpEscape"])(this.options.revealClass) + '([^\\s]+)', 'g'); 26747 var revealOnClass = revealOnRegExp.exec(this.$element[0].className); 26748 26749 if (revealOnClass) { 26750 this.options.isRevealed = true; 26751 this.options.revealOn = this.options.revealOn || revealOnClass[1]; 26752 } // Ensure the `reveal-on-*` class is set. 26753 26754 26755 if (this.options.isRevealed === true && this.options.revealOn) { 26756 this.$element.first().addClass("".concat(this.options.revealClass).concat(this.options.revealOn)); 26757 26758 this._setMQChecker(); 26759 } 26760 26761 if (this.options.transitionTime) { 26762 this.$element.css('transition-duration', this.options.transitionTime); 26763 } // Find fixed elements that should stay fixed while off-canvas is opened 26764 26765 26766 this.$sticky = this.$content.find('[data-off-canvas-sticky]'); 26767 26768 if (this.$sticky.length > 0 && this.options.transition === 'push') { 26769 // If there's at least one match force contentScroll:false because the absolute top value doesn't get recalculated on scroll 26770 // Limit to push transition since there's no transform scope for overlap 26771 this.options.contentScroll = false; 26772 } 26773 26774 var inCanvasFor = this.$element.attr('class').match(/\bin-canvas-for-(\w+)/); 26775 26776 if (inCanvasFor && inCanvasFor.length === 2) { 26777 // Set `inCanvasOn` option if found in-canvas-for-[BREAKPONT] CSS class 26778 this.options.inCanvasOn = inCanvasFor[1]; 26779 } else if (this.options.inCanvasOn) { 26780 // Ensure the CSS class is set 26781 this.$element.addClass("in-canvas-for-".concat(this.options.inCanvasOn)); 26782 } 26783 26784 if (this.options.inCanvasOn) { 26785 this._checkInCanvas(); 26786 } // Initally remove all transition/position CSS classes from off-canvas content container. 26787 26788 26789 this._removeContentClasses(); 26790 } 26791 /** 26792 * Adds event handlers to the off-canvas wrapper and the exit overlay. 26793 * @function 26794 * @private 26795 */ 26796 26797 }, { 26798 key: "_events", 26799 value: function _events() { 26800 var _this3 = this; 26801 26802 this.$element.off('.zf.trigger .zf.offCanvas').on({ 26803 'open.zf.trigger': this.open.bind(this), 26804 'close.zf.trigger': this.close.bind(this), 26805 'toggle.zf.trigger': this.toggle.bind(this), 26806 'keydown.zf.offCanvas': this._handleKeyboard.bind(this) 26807 }); 26808 26809 if (this.options.closeOnClick === true) { 26810 var $target = this.options.contentOverlay ? this.$overlay : this.$content; 26811 $target.on({ 26812 'click.zf.offCanvas': this.close.bind(this) 26813 }); 26814 } 26815 26816 if (this.options.inCanvasOn) { 26817 jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('changed.zf.mediaquery', function () { 26818 _this3._checkInCanvas(); 26819 }); 26820 } 26821 } 26822 /** 26823 * Applies event listener for elements that will reveal at certain breakpoints. 26824 * @private 26825 */ 26826 26827 }, { 26828 key: "_setMQChecker", 26829 value: function _setMQChecker() { 26830 var _this = this; 26831 26832 this.onLoadListener = Object(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["onLoad"])(jquery__WEBPACK_IMPORTED_MODULE_0___default()(window), function () { 26833 if (_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_3__["MediaQuery"].atLeast(_this.options.revealOn)) { 26834 _this.reveal(true); 26835 } 26836 }); 26837 jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('changed.zf.mediaquery', function () { 26838 if (_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_3__["MediaQuery"].atLeast(_this.options.revealOn)) { 26839 _this.reveal(true); 26840 } else { 26841 _this.reveal(false); 26842 } 26843 }); 26844 } 26845 /** 26846 * Checks if InCanvas on current breakpoint and adjust off-canvas accordingly 26847 * @private 26848 */ 26849 26850 }, { 26851 key: "_checkInCanvas", 26852 value: function _checkInCanvas() { 26853 this.isInCanvas = _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_3__["MediaQuery"].atLeast(this.options.inCanvasOn); 26854 26855 if (this.isInCanvas === true) { 26856 this.close(); 26857 } 26858 } 26859 /** 26860 * Removes the CSS transition/position classes of the off-canvas content container. 26861 * Removing the classes is important when another off-canvas gets opened that uses the same content container. 26862 * @param {Boolean} hasReveal - true if related off-canvas element is revealed. 26863 * @private 26864 */ 26865 26866 }, { 26867 key: "_removeContentClasses", 26868 value: function _removeContentClasses(hasReveal) { 26869 if (typeof hasReveal !== 'boolean') { 26870 this.$content.removeClass(this.contentClasses.base.join(' ')); 26871 } else if (hasReveal === false) { 26872 this.$content.removeClass("has-reveal-".concat(this.position)); 26873 } 26874 } 26875 /** 26876 * Adds the CSS transition/position classes of the off-canvas content container, based on the opening off-canvas element. 26877 * Beforehand any transition/position class gets removed. 26878 * @param {Boolean} hasReveal - true if related off-canvas element is revealed. 26879 * @private 26880 */ 26881 26882 }, { 26883 key: "_addContentClasses", 26884 value: function _addContentClasses(hasReveal) { 26885 this._removeContentClasses(hasReveal); 26886 26887 if (typeof hasReveal !== 'boolean') { 26888 this.$content.addClass("has-transition-".concat(this.options.transition, " has-position-").concat(this.position)); 26889 } else if (hasReveal === true) { 26890 this.$content.addClass("has-reveal-".concat(this.position)); 26891 } 26892 } 26893 /** 26894 * Preserves the fixed behavior of sticky elements on opening an off-canvas with push transition. 26895 * Since the off-canvas container has got a transform scope in such a case, it is done by calculating position absolute values. 26896 * @private 26897 */ 26898 26899 }, { 26900 key: "_fixStickyElements", 26901 value: function _fixStickyElements() { 26902 this.$sticky.each(function (_, el) { 26903 var $el = jquery__WEBPACK_IMPORTED_MODULE_0___default()(el); // If sticky element is currently fixed, adjust its top value to match absolute position due to transform scope 26904 // Limit to push transition because postion:fixed works without problems for overlap (no transform scope) 26905 26906 if ($el.css('position') === 'fixed') { 26907 // Save current inline styling to restore it if undoing the absolute fixing 26908 var topVal = parseInt($el.css('top'), 10); 26909 $el.data('offCanvasSticky', { 26910 top: topVal 26911 }); 26912 var absoluteTopVal = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).scrollTop() + topVal; 26913 $el.css({ 26914 top: "".concat(absoluteTopVal, "px"), 26915 width: '100%', 26916 transition: 'none' 26917 }); 26918 } 26919 }); 26920 } 26921 /** 26922 * Restores the original fixed styling of sticky elements after having closed an off-canvas that got pseudo fixed beforehand. 26923 * This reverts the changes of _fixStickyElements() 26924 * @private 26925 */ 26926 26927 }, { 26928 key: "_unfixStickyElements", 26929 value: function _unfixStickyElements() { 26930 this.$sticky.each(function (_, el) { 26931 var $el = jquery__WEBPACK_IMPORTED_MODULE_0___default()(el); 26932 var stickyData = $el.data('offCanvasSticky'); // If sticky element has got data object with prior values (meaning it was originally fixed) restore these values once off-canvas is closed 26933 26934 if (_typeof(stickyData) === 'object') { 26935 $el.css({ 26936 top: "".concat(stickyData.top, "px"), 26937 width: '', 26938 transition: '' 26939 }); 26940 $el.data('offCanvasSticky', ''); 26941 } 26942 }); 26943 } 26944 /** 26945 * Handles the revealing/hiding the off-canvas at breakpoints, not the same as open. 26946 * @param {Boolean} isRevealed - true if element should be revealed. 26947 * @function 26948 */ 26949 26950 }, { 26951 key: "reveal", 26952 value: function reveal(isRevealed) { 26953 if (isRevealed) { 26954 this.close(); 26955 this.isRevealed = true; 26956 this.$element.attr('aria-hidden', 'false'); 26957 this.$element.off('open.zf.trigger toggle.zf.trigger'); 26958 this.$element.removeClass('is-closed'); 26959 } else { 26960 this.isRevealed = false; 26961 this.$element.attr('aria-hidden', 'true'); 26962 this.$element.off('open.zf.trigger toggle.zf.trigger').on({ 26963 'open.zf.trigger': this.open.bind(this), 26964 'toggle.zf.trigger': this.toggle.bind(this) 26965 }); 26966 this.$element.addClass('is-closed'); 26967 } 26968 26969 this._addContentClasses(isRevealed); 26970 } 26971 /** 26972 * Stops scrolling of the body when OffCanvas is open on mobile Safari and other troublesome browsers. 26973 * @function 26974 * @private 26975 */ 26976 26977 }, { 26978 key: "_stopScrolling", 26979 value: function _stopScrolling(event) { 26980 return false; 26981 } 26982 /** 26983 * Tag the element given as context whether it can be scrolled up and down. 26984 * Used to allow or prevent it to scroll. See `_stopScrollPropagation`. 26985 * 26986 * Taken and adapted from http://stackoverflow.com/questions/16889447/prevent-full-page-scrolling-ios 26987 * Only really works for y, not sure how to extend to x or if we need to. 26988 * 26989 * @function 26990 * @private 26991 */ 26992 26993 }, { 26994 key: "_recordScrollable", 26995 value: function _recordScrollable(event) { 26996 var elem = this; // called from event handler context with this as elem 26997 // If the element is scrollable (content overflows), then... 26998 26999 if (elem.scrollHeight !== elem.clientHeight) { 27000 // If we're at the top, scroll down one pixel to allow scrolling up 27001 if (elem.scrollTop === 0) { 27002 elem.scrollTop = 1; 27003 } // If we're at the bottom, scroll up one pixel to allow scrolling down 27004 27005 27006 if (elem.scrollTop === elem.scrollHeight - elem.clientHeight) { 27007 elem.scrollTop = elem.scrollHeight - elem.clientHeight - 1; 27008 } 27009 } 27010 27011 elem.allowUp = elem.scrollTop > 0; 27012 elem.allowDown = elem.scrollTop < elem.scrollHeight - elem.clientHeight; 27013 elem.lastY = event.originalEvent.pageY; 27014 } 27015 /** 27016 * Prevent the given event propagation if the element given as context can scroll. 27017 * Used to preserve the element scrolling on mobile (`touchmove`) when the document 27018 * scrolling is prevented. See https://git.io/zf-9707. 27019 * @function 27020 * @private 27021 */ 27022 27023 }, { 27024 key: "_stopScrollPropagation", 27025 value: function _stopScrollPropagation(event) { 27026 var elem = this; // called from event handler context with this as elem 27027 27028 var parent; // off-canvas elem if called from inner scrollbox 27029 27030 var up = event.pageY < elem.lastY; 27031 var down = !up; 27032 elem.lastY = event.pageY; 27033 27034 if (up && elem.allowUp || down && elem.allowDown) { 27035 // It is not recommended to stop event propagation (the user cannot watch it), 27036 // but in this case this is the only solution we have. 27037 event.stopPropagation(); // If elem is inner scrollbox we are scrolling the outer off-canvas down/up once the box end has been reached 27038 // This lets the user continue to touch move the off-canvas without the need to place the finger outside the scrollbox 27039 27040 if (elem.hasAttribute('data-off-canvas-scrollbox')) { 27041 parent = elem.closest('[data-off-canvas], [data-off-canvas-scrollbox-outer]'); 27042 27043 if (elem.scrollTop <= 1 && parent.scrollTop > 0) { 27044 parent.scrollTop--; 27045 } else if (elem.scrollTop >= elem.scrollHeight - elem.clientHeight - 1 && parent.scrollTop < parent.scrollHeight - parent.clientHeight) { 27046 parent.scrollTop++; 27047 } 27048 } 27049 } else { 27050 event.preventDefault(); 27051 } 27052 } 27053 /** 27054 * Opens the off-canvas menu. 27055 * @function 27056 * @param {Object} event - Event object passed from listener. 27057 * @param {jQuery} trigger - element that triggered the off-canvas to open. 27058 * @fires OffCanvas#opened 27059 * @todo also trigger 'open' event? 27060 */ 27061 27062 }, { 27063 key: "open", 27064 value: function open(event, trigger) { 27065 var _this4 = this; 27066 27067 if (this.$element.hasClass('is-open') || this.isRevealed || this.isInCanvas) { 27068 return; 27069 } 27070 27071 var _this = this; 27072 27073 if (trigger) { 27074 this.$lastTrigger = trigger; 27075 } 27076 27077 if (this.options.forceTo === 'top') { 27078 window.scrollTo(0, 0); 27079 } else if (this.options.forceTo === 'bottom') { 27080 window.scrollTo(0, document.body.scrollHeight); 27081 } 27082 27083 if (this.options.transitionTime && this.options.transition !== 'overlap') { 27084 this.$element.siblings('[data-off-canvas-content]').css('transition-duration', this.options.transitionTime); 27085 } else { 27086 this.$element.siblings('[data-off-canvas-content]').css('transition-duration', ''); 27087 } 27088 27089 this.$element.addClass('is-open').removeClass('is-closed'); 27090 this.$triggers.attr('aria-expanded', 'true'); 27091 this.$element.attr('aria-hidden', 'false'); 27092 this.$content.addClass('is-open-' + this.position); // If `contentScroll` is set to false, add class and disable scrolling on touch devices. 27093 27094 if (this.options.contentScroll === false) { 27095 jquery__WEBPACK_IMPORTED_MODULE_0___default()('body').addClass('is-off-canvas-open').on('touchmove', this._stopScrolling); 27096 this.$element.on('touchstart', this._recordScrollable); 27097 this.$element.on('touchmove', this._stopScrollPropagation); 27098 this.$element.on('touchstart', '[data-off-canvas-scrollbox]', this._recordScrollable); 27099 this.$element.on('touchmove', '[data-off-canvas-scrollbox]', this._stopScrollPropagation); 27100 } 27101 27102 if (this.options.contentOverlay === true) { 27103 this.$overlay.addClass('is-visible'); 27104 } 27105 27106 if (this.options.closeOnClick === true && this.options.contentOverlay === true) { 27107 this.$overlay.addClass('is-closable'); 27108 } 27109 27110 if (this.options.autoFocus === true) { 27111 this.$element.one(Object(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["transitionend"])(this.$element), function () { 27112 if (!_this.$element.hasClass('is-open')) { 27113 return; // exit if prematurely closed 27114 } 27115 27116 var canvasFocus = _this.$element.find('[data-autofocus]'); 27117 27118 if (canvasFocus.length) { 27119 canvasFocus.eq(0).focus(); 27120 } else { 27121 _this.$element.find('a, button').eq(0).focus(); 27122 } 27123 }); 27124 } 27125 27126 if (this.options.trapFocus === true) { 27127 this.$content.attr('tabindex', '-1'); 27128 _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__["Keyboard"].trapFocus(this.$element); 27129 } 27130 27131 if (this.options.transition === 'push') { 27132 this._fixStickyElements(); 27133 } 27134 27135 this._addContentClasses(); 27136 /** 27137 * Fires when the off-canvas menu opens. 27138 * @event OffCanvas#opened 27139 */ 27140 27141 27142 this.$element.trigger('opened.zf.offCanvas'); 27143 /** 27144 * Fires when the off-canvas menu open transition is done. 27145 * @event OffCanvas#openedEnd 27146 */ 27147 27148 this.$element.one(Object(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["transitionend"])(this.$element), function () { 27149 _this4.$element.trigger('openedEnd.zf.offCanvas'); 27150 }); 27151 } 27152 /** 27153 * Closes the off-canvas menu. 27154 * @function 27155 * @param {Function} cb - optional cb to fire after closure. 27156 * @fires OffCanvas#close 27157 * @fires OffCanvas#closed 27158 */ 27159 27160 }, { 27161 key: "close", 27162 value: function close(cb) { 27163 var _this5 = this; 27164 27165 if (!this.$element.hasClass('is-open') || this.isRevealed) { 27166 return; 27167 } 27168 /** 27169 * Fires when the off-canvas menu closes. 27170 * @event OffCanvas#close 27171 */ 27172 27173 27174 this.$element.trigger('close.zf.offCanvas'); 27175 27176 var _this = this; 27177 27178 this.$element.removeClass('is-open'); 27179 this.$element.attr('aria-hidden', 'true'); 27180 this.$content.removeClass('is-open-left is-open-top is-open-right is-open-bottom'); 27181 27182 if (this.options.contentOverlay === true) { 27183 this.$overlay.removeClass('is-visible'); 27184 } 27185 27186 if (this.options.closeOnClick === true && this.options.contentOverlay === true) { 27187 this.$overlay.removeClass('is-closable'); 27188 } 27189 27190 this.$triggers.attr('aria-expanded', 'false'); // Listen to transitionEnd: add class, re-enable scrolling and release focus when done. 27191 27192 this.$element.one(Object(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["transitionend"])(this.$element), function (e) { 27193 _this5.$element.addClass('is-closed'); 27194 27195 _this5._removeContentClasses(); 27196 27197 if (_this5.options.transition === 'push') { 27198 _this5._unfixStickyElements(); 27199 } // If `contentScroll` is set to false, remove class and re-enable scrolling on touch devices. 27200 27201 27202 if (_this5.options.contentScroll === false) { 27203 jquery__WEBPACK_IMPORTED_MODULE_0___default()('body').removeClass('is-off-canvas-open').off('touchmove', _this5._stopScrolling); 27204 27205 _this5.$element.off('touchstart', _this5._recordScrollable); 27206 27207 _this5.$element.off('touchmove', _this5._stopScrollPropagation); 27208 27209 _this5.$element.off('touchstart', '[data-off-canvas-scrollbox]', _this5._recordScrollable); 27210 27211 _this5.$element.off('touchmove', '[data-off-canvas-scrollbox]', _this5._stopScrollPropagation); 27212 } 27213 27214 if (_this5.options.trapFocus === true) { 27215 _this5.$content.removeAttr('tabindex'); 27216 27217 _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__["Keyboard"].releaseFocus(_this5.$element); 27218 } 27219 /** 27220 * Fires when the off-canvas menu close transition is done. 27221 * @event OffCanvas#closed 27222 */ 27223 27224 27225 _this5.$element.trigger('closed.zf.offCanvas'); 27226 }); 27227 } 27228 /** 27229 * Toggles the off-canvas menu open or closed. 27230 * @function 27231 * @param {Object} event - Event object passed from listener. 27232 * @param {jQuery} trigger - element that triggered the off-canvas to open. 27233 */ 27234 27235 }, { 27236 key: "toggle", 27237 value: function toggle(event, trigger) { 27238 if (this.$element.hasClass('is-open')) { 27239 this.close(event, trigger); 27240 } else { 27241 this.open(event, trigger); 27242 } 27243 } 27244 /** 27245 * Handles keyboard input when detected. When the escape key is pressed, the off-canvas menu closes, and focus is restored to the element that opened the menu. 27246 * @function 27247 * @private 27248 */ 27249 27250 }, { 27251 key: "_handleKeyboard", 27252 value: function _handleKeyboard(e) { 27253 var _this6 = this; 27254 27255 _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__["Keyboard"].handleKey(e, 'OffCanvas', { 27256 close: function close() { 27257 _this6.close(); 27258 27259 _this6.$lastTrigger.focus(); 27260 27261 return true; 27262 }, 27263 handled: function handled() { 27264 e.preventDefault(); 27265 } 27266 }); 27267 } 27268 /** 27269 * Destroys the OffCanvas plugin. 27270 * @function 27271 */ 27272 27273 }, { 27274 key: "_destroy", 27275 value: function _destroy() { 27276 this.close(); 27277 this.$element.off('.zf.trigger .zf.offCanvas'); 27278 this.$overlay.off('.zf.offCanvas'); 27279 if (this.onLoadListener) jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(this.onLoadListener); 27280 } 27281 }]); 27282 27283 return OffCanvas; 27284}
27284(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["Plugin"]); 27285 27286OffCanvas.defaults = { 27287 /** 27288 * Allow the user to click outside of the menu to close it. 27289 * @option 27290 * @type {boolean} 27291 * @default true 27292 */ 27293 closeOnClick: true, 27294 27295 /** 27296 * Adds an overlay on top of `[data-off-canvas-content]`. 27297 * @option 27298 * @type {boolean} 27299 * @default true 27300 */ 27301 contentOverlay: true, 27302 27303 /** 27304 * Target an off-canvas content container by ID that may be placed anywhere. If null the closest content container will be taken. 27305 * @option 27306 * @type {?string} 27307 * @default null 27308 */ 27309 contentId: null, 27310 27311 /** 27312 * Define the off-canvas element is nested in an off-canvas content. This is required when using the contentId option for a nested element. 27313 * @option 27314 * @type {boolean} 27315 * @default null 27316 */ 27317 nested: null, 27318 27319 /** 27320 * Enable/disable scrolling of the main content when an off canvas panel is open. 27321 * @option 27322 * @type {boolean} 27323 * @default true 27324 */ 27325 contentScroll: true, 27326 27327 /** 27328 * Amount of time the open and close transition requires, including the appropriate milliseconds (`ms`) or seconds (`s`) unit (e.g. `500ms`, `.75s`) If none selected, pulls from body style. 27329 * @option 27330 * @type {string} 27331 * @default null 27332 */ 27333 transitionTime: null, 27334 27335 /** 27336 * Type of transition for the OffCanvas menu. Options are 'push', 'detached' or 'slide'. 27337 * @option 27338 * @type {string} 27339 * @default push 27340 */ 27341 transition: 'push', 27342 27343 /** 27344 * Force the page to scroll to top or bottom on open. 27345 * @option 27346 * @type {?string} 27347 * @default null 27348 */ 27349 forceTo: null, 27350 27351 /** 27352 * Allow the OffCanvas to remain open for certain breakpoints. 27353 * @option 27354 * @type {boolean} 27355 * @default false 27356 */ 27357 isRevealed: false, 27358 27359 /** 27360 * Breakpoint at which to reveal. JS will use a RegExp to target standard classes, if changing classnames, pass your class with the `revealClass` option. 27361 * @option 27362 * @type {?string} 27363 * @default null 27364 */ 27365 revealOn: null, 27366 27367 /** 27368 * Breakpoint at which the off-canvas gets moved into canvas content and acts as regular page element. 27369 * @option 27370 * @type {?string} 27371 * @default null 27372 */ 27373 inCanvasOn: null, 27374 27375 /** 27376 * Force focus to the offcanvas on open. If true, will focus the opening trigger on close. 27377 * @option 27378 * @type {boolean} 27379 * @default true 27380 */ 27381 autoFocus: true, 27382 27383 /** 27384 * Class used to force an OffCanvas to remain open. Foundation defaults for this are `reveal-for-large` & `reveal-for-medium`. 27385 * @option 27386 * @type {string} 27387 * @default reveal-for- 27388 * @todo improve the regex testing for this. 27389 */ 27390 revealClass: 'reveal-for-', 27391 27392 /** 27393 * Triggers optional focus trapping when opening an OffCanvas. Sets tabindex of [data-off-canvas-content] to -1 for accessibility purposes. 27394 * @option 27395 * @type {boolean} 27396 * @default false 27397 */ 27398 trapFocus: false 27399}; 27400 27401 27402/***/ }), 27403
vendor: 12,986 bytes, lines 27404-27718
27404/***/ "./js/foundation.util.triggers.js": 27405/*!****************************************!*\ 27406 !*** ./js/foundation.util.triggers.js ***! 27407 \****************************************/ 27408/*! exports provided: Triggers */ 27409/***/ (function(module, __webpack_exports__, __webpack_require__) { 27410 27411"use strict"; 27412__webpack_require__.r(__webpack_exports__); 27413/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Triggers", function() { return Triggers; }); 27414/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery"); 27415/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__); 27416/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.utils */ "./foundation.core"); 27417/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__); 27418/* harmony import */ var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.util.motion */ "./foundation.util.motion"); 27419/* harmony import */ var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__); 27420 27421 27422function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } 27423 27424 27425 27426 27427 27428var MutationObserver = function () { 27429 var prefixes = ['WebKit', 'Moz', 'O', 'Ms', '']; 27430 27431 for (var i = 0; i < prefixes.length; i++) { 27432 if ("".concat(prefixes[i], "MutationObserver") in window) { 27433 return window["".concat(prefixes[i], "MutationObserver")]; 27434 } 27435 } 27436 27437 return false; 27438}(); 27439 27440var triggers = function triggers(el, type) { 27441 el.data(type).split(' ').forEach(function (id) { 27442 jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(id))[type === 'close' ? 'trigger' : 'triggerHandler']("".concat(type, ".zf.trigger"), [el]); 27443 }); 27444}; 27445 27446var Triggers = { 27447 Listeners: { 27448 Basic: {}, 27449 Global: {} 27450 }, 27451 Initializers: {} 27452}; 27453Triggers.Listeners.Basic = { 27454 openListener: function openListener() { 27455 triggers(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'open'); 27456 }, 27457 closeListener: function closeListener() { 27458 var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('close'); 27459 27460 if (id) { 27461 triggers(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'close'); 27462 } else { 27463 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger('close.zf.trigger'); 27464 } 27465 }, 27466 toggleListener: function toggleListener() { 27467 var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('toggle'); 27468 27469 if (id) { 27470 triggers(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'toggle'); 27471 } else { 27472 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger('toggle.zf.trigger'); 27473 } 27474 }, 27475 closeableListener: function closeableListener(e) { 27476 var animation = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('closable'); // Only close the first closable element. See https://git.io/zf-7833 27477 27478 e.stopPropagation(); 27479 27480 if (animation !== '') { 27481 _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__["Motion"].animateOut(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), animation, function () { 27482 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger('closed.zf'); 27483 }); 27484 } else { 27485 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).fadeOut().trigger('closed.zf'); 27486 } 27487 }, 27488 toggleFocusListener: function toggleFocusListener() { 27489 var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('toggle-focus'); 27490 jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(id)).triggerHandler('toggle.zf.trigger', [jquery__WEBPACK_IMPORTED_MODULE_0___default()(this)]); 27491 } 27492}; // Elements with [data-open] will reveal a plugin that supports it when clicked. 27493 27494Triggers.Initializers.addOpenListener = function ($elem) { 27495 $elem.off('click.zf.trigger', Triggers.Listeners.Basic.openListener); 27496 $elem.on('click.zf.trigger', '[data-open]', Triggers.Listeners.Basic.openListener); 27497}; // Elements with [data-close] will close a plugin that supports it when clicked. 27498// If used without a value on [data-close], the event will bubble, allowing it to close a parent component. 27499 27500 27501Triggers.Initializers.addCloseListener = function ($elem) { 27502 $elem.off('click.zf.trigger', Triggers.Listeners.Basic.closeListener); 27503 $elem.on('click.zf.trigger', '[data-close]', Triggers.Listeners.Basic.closeListener); 27504}; // Elements with [data-toggle] will toggle a plugin that supports it when clicked. 27505 27506 27507Triggers.Initializers.addToggleListener = function ($elem) { 27508 $elem.off('click.zf.trigger', Triggers.Listeners.Basic.toggleListener); 27509 $elem.on('click.zf.trigger', '[data-toggle]', Triggers.Listeners.Basic.toggleListener); 27510}; // Elements with [data-closable] will respond to close.zf.trigger events. 27511 27512 27513Triggers.Initializers.addCloseableListener = function ($elem) { 27514 $elem.off('close.zf.trigger', Triggers.Listeners.Basic.closeableListener); 27515 $elem.on('close.zf.trigger', '[data-closeable], [data-closable]', Triggers.Listeners.Basic.closeableListener); 27516}; // Elements with [data-toggle-focus] will respond to coming in and out of focus 27517 27518 27519Triggers.Initializers.addToggleFocusListener = function ($elem) { 27520 $elem.off('focus.zf.trigger blur.zf.trigger', Triggers.Listeners.Basic.toggleFocusListener); 27521 $elem.on('focus.zf.trigger blur.zf.trigger', '[data-toggle-focus]', Triggers.Listeners.Basic.toggleFocusListener); 27522}; // More Global/complex listeners and triggers 27523 27524 27525Triggers.Listeners.Global = { 27526 resizeListener: function resizeListener($nodes) { 27527 if (!MutationObserver) { 27528 //fallback for IE 9 27529 $nodes.each(function () { 27530 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).triggerHandler('resizeme.zf.trigger'); 27531 }); 27532 } //trigger all listening elements and signal a resize event 27533 27534 27535 $nodes.attr('data-events', "resize"); 27536 }, 27537 scrollListener: function scrollListener($nodes) { 27538 if (!MutationObserver) { 27539 //fallback for IE 9 27540 $nodes.each(function () { 27541 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).triggerHandler('scrollme.zf.trigger'); 27542 }); 27543 } //trigger all listening elements and signal a scroll event 27544 27545 27546 $nodes.attr('data-events', "scroll"); 27547 }, 27548 closeMeListener: function closeMeListener(e, pluginId) { 27549 var plugin = e.namespace.split('.')[0]; 27550 var plugins = jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-".concat(plugin, "]")).not("[data-yeti-box=\"".concat(pluginId, "\"]")); 27551 plugins.each(function () { 27552 var _this = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this); 27553 27554 _this.triggerHandler('close.zf.trigger', [_this]); 27555 }); 27556 } // Global, parses whole document. 27557 27558}; 27559 27560Triggers.Initializers.addClosemeListener = function (pluginName) { 27561 var yetiBoxes = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-yeti-box]'), 27562 plugNames = ['dropdown', 'tooltip', 'reveal']; 27563 27564 if (pluginName) { 27565 if (typeof pluginName === 'string') { 27566 plugNames.push(pluginName); 27567 } else if (_typeof(pluginName) === 'object' && typeof pluginName[0] === 'string') { 27568 plugNames = plugNames.concat(pluginName); 27569 } else { 27570 console.error('Plugin names must be strings'); 27571 } 27572 } 27573 27574 if (yetiBoxes.length) { 27575 var listeners = plugNames.map(function (name) { 27576 return "closeme.zf.".concat(name); 27577 }).join(' '); 27578 jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(listeners).on(listeners, Triggers.Listeners.Global.closeMeListener); 27579 } 27580}; 27581 27582function debounceGlobalListener(debounce, trigger, listener) { 27583 var timer, 27584 args = Array.prototype.slice.call(arguments, 3); 27585 jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(trigger).on(trigger, function (e) { 27586 if (timer) { 27587 clearTimeout(timer); 27588 } 27589 27590 timer = setTimeout(function () { 27591 listener.apply(null, args); 27592 }, debounce || 10); //default time to emit scroll event 27593 }); 27594} 27595 27596Triggers.Initializers.addResizeListener = function (debounce) { 27597 var $nodes = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-resize]'); 27598 27599 if ($nodes.length) { 27600 debounceGlobalListener(debounce, 'resize.zf.trigger', Triggers.Listeners.Global.resizeListener, $nodes); 27601 } 27602}; 27603 27604Triggers.Initializers.addScrollListener = function (debounce) { 27605 var $nodes = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-scroll]'); 27606 27607 if ($nodes.length) { 27608 debounceGlobalListener(debounce, 'scroll.zf.trigger', Triggers.Listeners.Global.scrollListener, $nodes); 27609 } 27610}; 27611 27612Triggers.Initializers.addMutationEventsListener = function ($elem) { 27613 if (!MutationObserver) { 27614 return false; 27615 } 27616 27617 var $nodes = $elem.find('[data-resize], [data-scroll], [data-mutate]'); //element callback 27618 27619 var listeningElementsMutation = function listeningElementsMutation(mutationRecordsList) { 27620 var $target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(mutationRecordsList[0].target); //trigger the event handler for the element depending on type 27621 27622 switch (mutationRecordsList[0].type) { 27623 case "attributes": 27624 if ($target.attr("data-events") === "scroll" && mutationRecordsList[0].attributeName === "data-events") { 27625 $target.triggerHandler('scrollme.zf.trigger', [$target, window.pageYOffset]); 27626 } 27627 27628 if ($target.attr("data-events") === "resize" && mutationRecordsList[0].attributeName === "data-events") { 27629 $target.triggerHandler('resizeme.zf.trigger', [$target]); 27630 } 27631 27632 if (mutationRecordsList[0].attributeName === "style") { 27633 $target.closest("[data-mutate]").attr("data-events", "mutate"); 27634 $target.closest("[data-mutate]").triggerHandler('mutateme.zf.trigger', [$target.closest("[data-mutate]")]); 27635 } 27636 27637 break; 27638 27639 case "childList": 27640 $target.closest("[data-mutate]").attr("data-events", "mutate"); 27641 $target.closest("[data-mutate]").triggerHandler('mutateme.zf.trigger', [$target.closest("[data-mutate]")]); 27642 break; 27643 27644 default: 27645 return false; 27646 //nothing 27647 } 27648 }; 27649 27650 if ($nodes.length) { 27651 //for each element that needs to listen for resizing, scrolling, or mutation add a single observer 27652 for (var i = 0; i <= $nodes.length - 1; i++) { 27653 var elementObserver = new MutationObserver(listeningElementsMutation); 27654 elementObserver.observe($nodes[i], { 27655 attributes: true, 27656 childList: true, 27657 characterData: false, 27658 subtree: true, 27659 attributeFilter: ["data-events", "style"] 27660 }); 27661 } 27662 } 27663}; 27664 27665Triggers.Initializers.addSimpleListeners = function () { 27666 var $document = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document); 27667 Triggers.Initializers.addOpenListener($document); 27668 Triggers.Initializers.addCloseListener($document); 27669 Triggers.Initializers.addToggleListener($document); 27670 Triggers.Initializers.addCloseableListener($document); 27671 Triggers.Initializers.addToggleFocusListener($document); 27672}; 27673 27674Triggers.Initializers.addGlobalListeners = function () { 27675 var $document = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document); 27676 Triggers.Initializers.addMutationEventsListener($document); 27677 Triggers.Initializers.addResizeListener(); 27678 Triggers.Initializers.addScrollListener(); 27679 Triggers.Initializers.addClosemeListener(); 27680}; 27681 27682Triggers.init = function ($, Foundation) { 27683 Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["onLoad"])($(window), function () { 27684 if ($.triggersInitialized !== true) { 27685 Triggers.Initializers.addSimpleListeners(); 27686 Triggers.Initializers.addGlobalListeners(); 27687 $.triggersInitialized = true; 27688 } 27689 }); 27690 27691 if (Foundation) { 27692 Foundation.Triggers = Triggers; // Legacy included to be backwards compatible for now. 27693 27694 Foundation.IHearYou = Triggers.Initializers.addGlobalListeners; 27695 } 27696}; 27697 27698 27699 27700/***/ }), 27701 27702/***/ 9: 27703/*!**********************************************************!*\ 27704 !*** multi ./js/entries/plugins/foundation.offcanvas.js ***! 27705 \**********************************************************/ 27706/*! no static exports found */ 27707/***/ (function(module, exports, __webpack_require__) { 27708 27709module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.offcanvas.js */"./js/entries/plugins/foundation.offcanvas.js"); 27710 27711 27712/***/ }), 27713 27714/***/ "jquery": 27715/*!********************************************************************************************!*\ 27716 !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***! 27717 \********************************************************************************************/ 27718/*! no static exports found */
vendor: 4,198 bytes, lines 27719-27805
27719/***/ (function(module, exports) { 27720 27721module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__; 27722 27723/***/ }) 27724 27725/******/ }); 27726}); 27727//# sourceMappingURL=foundation.offcanvas.js.map 27728(function webpackUniversalModuleDefinition(root, factory) { 27729 if(typeof exports === 'object' && typeof module === 'object') 27730 module.exports = factory(require("./foundation.core"), require("./foundation.util.imageLoader"), require("./foundation.util.keyboard"), require("jquery")); 27731 else if(typeof define === 'function' && define.amd) 27732 define(["./foundation.core", "./foundation.util.imageLoader", "./foundation.util.keyboard", "jquery"], factory); 27733 else if(typeof exports === 'object') 27734 exports["foundation.tabs"] = factory(require("./foundation.core"), require("./foundation.util.imageLoader"), require("./foundation.util.keyboard"), require("jquery")); 27735 else 27736 root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.tabs"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.imageLoader"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.keyboard"], root["jQuery"]); 27737})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE__foundation_util_imageLoader__, __WEBPACK_EXTERNAL_MODULE__foundation_util_keyboard__, __WEBPACK_EXTERNAL_MODULE_jquery__) { 27738return /******/ (function(modules) { // webpackBootstrap 27739/******/ // The module cache 27740/******/ var installedModules = {}; 27741/******/ 27742/******/ // The require function 27743/******/ function __webpack_require__(moduleId) { 27744/******/ 27745/******/ // Check if module is in cache 27746/******/ if(installedModules[moduleId]) { 27747/******/ return installedModules[moduleId].exports; 27748/******/ } 27749/******/ // Create a new module (and put it into the cache) 27750/******/ var module = installedModules[moduleId] = { 27751/******/ i: moduleId, 27752/******/ l: false, 27753/******/ exports: {} 27754/******/ }; 27755/******/ 27756/******/ // Execute the module function 27757/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 27758/******/ 27759/******/ // Flag the module as loaded 27760/******/ module.l = true; 27761/******/ 27762/******/ // Return the exports of the module 27763/******/ return module.exports; 27764/******/ } 27765/******/ 27766/******/ 27767/******/ // expose the modules object (__webpack_modules__) 27768/******/ __webpack_require__.m = modules; 27769/******/ 27770/******/ // expose the module cache 27771/******/ __webpack_require__.c = installedModules; 27772/******/ 27773/******/ // define getter function for harmony exports 27774/******/ __webpack_require__.d = function(exports, name, getter) { 27775/******/ if(!__webpack_require__.o(exports, name)) { 27776/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); 27777/******/ } 27778/******/ }; 27779/******/ 27780/******/ // define __esModule on exports 27781/******/ __webpack_require__.r = function(exports) { 27782/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 27783/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 27784/******/ } 27785/******/ Object.defineProperty(exports, '__esModule', { value: true }); 27786/******/ }; 27787/******/ 27788/******/ // create a fake namespace object 27789/******/ // mode & 1: value is a module id, require it 27790/******/ // mode & 2: merge all properties of value into the ns 27791/******/ // mode & 4: return value when already ns object 27792/******/ // mode & 8|1: behave like require 27793/******/ __webpack_require__.t = function(value, mode) { 27794/******/ if(mode & 1) value = __webpack_require__(value); 27795/******/ if(mode & 8) return value; 27796/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; 27797/******/ var ns = Object.create(null); 27798/******/ __webpack_require__.r(ns); 27799/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); 27800/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); 27801/******/ return ns; 27802/******/ }; 27803/******/ 27804/******/ // getDefaultExport function for compatibility with non-harmony modules 27805/******/ __webpack_require__.n = function(module) {
27806/******/ var getter = module && module.__esModule ? 27807/******/ function getDefault() { return module['default']; } : 27808/******/ function getModuleExports() { return module; }; 27809/******/ __webpack_require__.d(getter, 'a', getter); 27810/******/ return getter; 27811/******/ }; 27812/******/ 27813/******/ // Object.prototype.hasOwnProperty.call 27814/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; 27815/******/ 27816/******/ // __webpack_public_path__ 27817/******/ __webpack_require__.p = ""; 27818/******/ 27819/******/ 27820/******/ // Load entry module and return exports 27821/******/ return __webpack_require__(__webpack_require__.s = 18); 27822/******/ }) 27823/************************************************************************/ 27824/******/ ({ 27825 27826/***/ "./foundation.core": 27827/*!****************************************************************************************************************************************************************!*\ 27828 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***! 27829 \****************************************************************************************************************************************************************/ 27830/*! no static exports found */ 27831/***/ (function(module, exports) { 27832 27833module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__; 27834 27835/***/ }), 27836 27837/***/ "./foundation.util.imageLoader": 27838/*!****************************************************************************************************************************************************************************************************************!*\ 27839 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.imageLoader"],"amd":"./foundation.util.imageLoader","commonjs":"./foundation.util.imageLoader","commonjs2":"./foundation.util.imageLoader"} ***! 27840 \****************************************************************************************************************************************************************************************************************/ 27841/*! no static exports found */ 27842/***/ (function(module, exports) { 27843 27844module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_imageLoader__; 27845 27846/***/ }), 27847 27848/***/ "./foundation.util.keyboard": 27849/*!****************************************************************************************************************************************************************************************************!*\ 27850 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.keyboard"],"amd":"./foundation.util.keyboard","commonjs":"./foundation.util.keyboard","commonjs2":"./foundation.util.keyboard"} ***! 27851 \****************************************************************************************************************************************************************************************************/ 27852/*! no static exports found */ 27853/***/ (function(module, exports) { 27854 27855module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_keyboard__; 27856 27857/***/ }), 27858
27859/***/ "./js/entries/plugins/foundation.tabs.js": 27860/*!***********************************************!*\ 27861 !*** ./js/entries/plugins/foundation.tabs.js ***! 27862 \***********************************************/ 27863/*! exports provided: Foundation, Tabs */ 27864/***/ (function(module, __webpack_exports__, __webpack_require__) { 27865 27866"use strict"; 27867__webpack_require__.r(__webpack_exports__); 27868/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core"); 27869/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__); 27870/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; }); 27871 27872/* harmony import */ var _foundation_tabs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.tabs */ "./js/foundation.tabs.js"); 27873/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Tabs", function() { return _foundation_tabs__WEBPACK_IMPORTED_MODULE_1__["Tabs"]; }); 27874 27875 27876 27877_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].plugin(_foundation_tabs__WEBPACK_IMPORTED_MODULE_1__["Tabs"], 'Tabs'); 27878 27879 27880/***/ }), 27881
vendor: 4,965 bytes, lines 27882-27963
27882/***/ "./js/foundation.tabs.js": 27883/*!*******************************!*\ 27884 !*** ./js/foundation.tabs.js ***! 27885 \*******************************/ 27886/*! exports provided: Tabs */ 27887/***/ (function(module, __webpack_exports__, __webpack_require__) { 27888 27889"use strict"; 27890__webpack_require__.r(__webpack_exports__); 27891/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Tabs", function() { return Tabs; }); 27892/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery"); 27893/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__); 27894/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.plugin */ "./foundation.core"); 27895/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__); 27896/* harmony import */ var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.util.keyboard */ "./foundation.util.keyboard"); 27897/* harmony import */ var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__); 27898/* harmony import */ var _foundation_util_imageLoader__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./foundation.util.imageLoader */ "./foundation.util.imageLoader"); 27899/* harmony import */ var _foundation_util_imageLoader__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_imageLoader__WEBPACK_IMPORTED_MODULE_3__); 27900 27901 27902function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } 27903 27904function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 27905 27906function _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); } } 27907 27908function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } 27909 27910function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } 27911 27912function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } 27913 27914function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } 27915 27916function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } 27917 27918function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } 27919 27920 27921 27922 27923 27924 27925/** 27926 * Tabs module. 27927 * @module foundation.tabs 27928 * @requires foundation.util.keyboard 27929 * @requires foundation.util.imageLoader if tabs contain images 27930 */ 27931 27932var Tabs = 27933/*#__PURE__*/ 27934function (_Plugin) { 27935 _inherits(Tabs, _Plugin); 27936 27937 function Tabs() { 27938 _classCallCheck(this, Tabs); 27939 27940 return _possibleConstructorReturn(this, _getPrototypeOf(Tabs).apply(this, arguments)); 27941 } 27942 27943 _createClass(Tabs, [{ 27944 key: "_setup", 27945 27946 /** 27947 * Creates a new instance of tabs. 27948 * @class 27949 * @name Tabs 27950 * @fires Tabs#init 27951 * @param {jQuery} element - jQuery object to make into tabs. 27952 * @param {Object} options - Overrides to the default plugin settings. 27953 */ 27954 value: function _setup(element, options) { 27955 this.$element = element; 27956 this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, Tabs.defaults, this.$element.data(), options); 27957 this.className = 'Tabs'; // ie9 back compat 27958 27959 this._init(); 27960 27961 _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__["Keyboard"].register('Tabs', { 27962 'ENTER': 'open', 27963 'SPACE': 'open',
vendor: 13,898 bytes, lines 27964-28389
27964 'ARROW_RIGHT': 'next', 27965 'ARROW_UP': 'previous', 27966 'ARROW_DOWN': 'next', 27967 'ARROW_LEFT': 'previous' // 'TAB': 'next', 27968 // 'SHIFT_TAB': 'previous' 27969 27970 }); 27971 } 27972 /** 27973 * Initializes the tabs by showing and focusing (if autoFocus=true) the preset active tab. 27974 * @private 27975 */ 27976 27977 }, { 27978 key: "_init", 27979 value: function _init() { 27980 var _this2 = this; 27981 27982 var _this = this; 27983 27984 this._isInitializing = true; 27985 this.$element.attr({ 27986 'role': 'tablist' 27987 }); 27988 this.$tabTitles = this.$element.find(".".concat(this.options.linkClass)); 27989 this.$tabContent = jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-tabs-content=\"".concat(this.$element[0].id, "\"]")); 27990 this.$tabTitles.each(function () { 27991 var $elem = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 27992 $link = $elem.find('a'), 27993 isActive = $elem.hasClass("".concat(_this.options.linkActiveClass)), 27994 hash = $link.attr('data-tabs-target') || $link[0].hash.slice(1), 27995 linkId = $link[0].id ? $link[0].id : "".concat(hash, "-label"), 27996 $tabContent = jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(hash)); 27997 $elem.attr({ 27998 'role': 'presentation' 27999 }); 28000 $link.attr({ 28001 'role': 'tab', 28002 'aria-controls': hash, 28003 'aria-selected': isActive, 28004 'id': linkId, 28005 'tabindex': isActive ? '0' : '-1' 28006 }); 28007 $tabContent.attr({ 28008 'role': 'tabpanel', 28009 'aria-labelledby': linkId 28010 }); // Save up the initial hash to return to it later when going back in history 28011 28012 if (isActive) { 28013 _this._initialAnchor = "#".concat(hash); 28014 } 28015 28016 if (!isActive) { 28017 $tabContent.attr('aria-hidden', 'true'); 28018 } 28019 28020 if (isActive && _this.options.autoFocus) { 28021 _this.onLoadListener = Object(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["onLoad"])(jquery__WEBPACK_IMPORTED_MODULE_0___default()(window), function () { 28022 jquery__WEBPACK_IMPORTED_MODULE_0___default()('html, body').animate({ 28023 scrollTop: $elem.offset().top 28024 }, _this.options.deepLinkSmudgeDelay, function () { 28025 $link.focus(); 28026 }); 28027 }); 28028 } 28029 }); 28030 28031 if (this.options.matchHeight) { 28032 var $images = this.$tabContent.find('img'); 28033 28034 if ($images.length) { 28035 Object(_foundation_util_imageLoader__WEBPACK_IMPORTED_MODULE_3__["onImagesLoaded"])($images, this._setHeight.bind(this)); 28036 } else { 28037 this._setHeight(); 28038 } 28039 } // Current context-bound function to open tabs on page load or history hashchange 28040 28041 28042 this._checkDeepLink = function () { 28043 var anchor = window.location.hash; 28044 28045 if (!anchor.length) { 28046 // If we are still initializing and there is no anchor, then there is nothing to do 28047 if (_this2._isInitializing) return; // Otherwise, move to the initial anchor 28048 28049 if (_this2._initialAnchor) anchor = _this2._initialAnchor; 28050 } 28051 28052 var anchorNoHash = anchor.indexOf('#') >= 0 ? anchor.slice(1) : anchor; 28053 var $anchor = anchorNoHash && jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(anchorNoHash)); 28054 28055 var $link = anchor && _this2.$element.find("[href$=\"".concat(anchor, "\"],[data-tabs-target=\"").concat(anchorNoHash, "\"]")).first(); // Whether the anchor element that has been found is part of this element 28056 28057 28058 var isOwnAnchor = !!($anchor.length && $link.length); 28059 28060 if (isOwnAnchor) { 28061 // If there is an anchor for the hash, select it 28062 if ($anchor && $anchor.length && $link && $link.length) { 28063 _this2.selectTab($anchor, true); 28064 } // Otherwise, collapse everything 28065 else { 28066 _this2._collapse(); 28067 } // Roll up a little to show the titles 28068 28069 28070 if (_this2.options.deepLinkSmudge) { 28071 var offset = _this2.$element.offset(); 28072 28073 jquery__WEBPACK_IMPORTED_MODULE_0___default()('html, body').animate({ 28074 scrollTop: offset.top 28075 }, _this2.options.deepLinkSmudgeDelay); 28076 } 28077 /** 28078 * Fires when the plugin has deeplinked at pageload 28079 * @event Tabs#deeplink 28080 */ 28081 28082 28083 _this2.$element.trigger('deeplink.zf.tabs', [$link, $anchor]); 28084 } 28085 }; //use browser to open a tab, if it exists in this tabset 28086 28087 28088 if (this.options.deepLink) { 28089 this._checkDeepLink(); 28090 } 28091 28092 this._events(); 28093 28094 this._isInitializing = false; 28095 } 28096 /** 28097 * Adds event handlers for items within the tabs. 28098 * @private 28099 */ 28100 28101 }, { 28102 key: "_events", 28103 value: function _events() { 28104 this._addKeyHandler(); 28105 28106 this._addClickHandler(); 28107 28108 this._setHeightMqHandler = null; 28109 28110 if (this.options.matchHeight) { 28111 this._setHeightMqHandler = this._setHeight.bind(this); 28112 jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('changed.zf.mediaquery', this._setHeightMqHandler); 28113 } 28114 28115 if (this.options.deepLink) { 28116 jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('hashchange', this._checkDeepLink); 28117 } 28118 } 28119 /** 28120 * Adds click handlers for items within the tabs. 28121 * @private 28122 */ 28123 28124 }, { 28125 key: "_addClickHandler", 28126 value: function _addClickHandler() { 28127 var _this = this; 28128 28129 this.$element.off('click.zf.tabs').on('click.zf.tabs', ".".concat(this.options.linkClass), function (e) { 28130 e.preventDefault(); 28131 28132 _this._handleTabChange(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this)); 28133 }); 28134 } 28135 /** 28136 * Adds keyboard event handlers for items within the tabs. 28137 * @private 28138 */ 28139 28140 }, { 28141 key: "_addKeyHandler", 28142 value: function _addKeyHandler() { 28143 var _this = this; 28144 28145 this.$tabTitles.off('keydown.zf.tabs').on('keydown.zf.tabs', function (e) { 28146 if (e.which === 9) return; 28147 var $element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 28148 $elements = $element.parent('ul').children('li'), 28149 $prevElement, 28150 $nextElement; 28151 $elements.each(function (i) { 28152 if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).is($element)) { 28153 if (_this.options.wrapOnKeys) { 28154 $prevElement = i === 0 ? $elements.last() : $elements.eq(i - 1); 28155 $nextElement = i === $elements.length - 1 ? $elements.first() : $elements.eq(i + 1); 28156 } else { 28157 $prevElement = $elements.eq(Math.max(0, i - 1)); 28158 $nextElement = $elements.eq(Math.min(i + 1, $elements.length - 1)); 28159 } 28160 28161 return; 28162 } 28163 }); // handle keyboard event with keyboard util 28164 28165 _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__["Keyboard"].handleKey(e, 'Tabs', { 28166 open: function open() { 28167 $element.find('[role="tab"]').focus(); 28168 28169 _this._handleTabChange($element); 28170 }, 28171 previous: function previous() { 28172 $prevElement.find('[role="tab"]').focus(); 28173 28174 _this._handleTabChange($prevElement); 28175 }, 28176 next: function next() { 28177 $nextElement.find('[role="tab"]').focus(); 28178 28179 _this._handleTabChange($nextElement); 28180 }, 28181 handled: function handled() { 28182 e.preventDefault(); 28183 } 28184 }); 28185 }); 28186 } 28187 /** 28188 * Opens the tab `$targetContent` defined by `$target`. Collapses active tab. 28189 * @param {jQuery} $target - Tab to open. 28190 * @param {boolean} historyHandled - browser has already handled a history update 28191 * @fires Tabs#change 28192 * @function 28193 */ 28194 28195 }, { 28196 key: "_handleTabChange", 28197 value: function _handleTabChange($target, historyHandled) { 28198 // With `activeCollapse`, if the target is the active Tab, collapse it. 28199 if ($target.hasClass("".concat(this.options.linkActiveClass))) { 28200 if (this.options.activeCollapse) { 28201 this._collapse(); 28202 } 28203 28204 return; 28205 } 28206 28207 var $oldTab = this.$element.find(".".concat(this.options.linkClass, ".").concat(this.options.linkActiveClass)), 28208 $tabLink = $target.find('[role="tab"]'), 28209 target = $tabLink.attr('data-tabs-target'), 28210 anchor = target && target.length ? "#".concat(target) : $tabLink[0].hash, 28211 $targetContent = this.$tabContent.find(anchor); //close old tab 28212 28213 this._collapseTab($oldTab); //open new tab 28214 28215 28216 this._openTab($target); //either replace or update browser history 28217 28218 28219 if (this.options.deepLink && !historyHandled) { 28220 if (this.options.updateHistory) { 28221 history.pushState({}, '', anchor); 28222 } else { 28223 history.replaceState({}, '', anchor); 28224 } 28225 } 28226 /** 28227 * Fires when the plugin has successfully changed tabs. 28228 * @event Tabs#change 28229 */ 28230 28231 28232 this.$element.trigger('change.zf.tabs', [$target, $targetContent]); //fire to children a mutation event 28233 28234 $targetContent.find("[data-mutate]").trigger("mutateme.zf.trigger"); 28235 } 28236 /** 28237 * Opens the tab `$targetContent` defined by `$target`. 28238 * @param {jQuery} $target - Tab to open. 28239 * @function 28240 */ 28241 28242 }, { 28243 key: "_openTab", 28244 value: function _openTab($target) { 28245 var $tabLink = $target.find('[role="tab"]'), 28246 hash = $tabLink.attr('data-tabs-target') || $tabLink[0].hash.slice(1), 28247 $targetContent = this.$tabContent.find("#".concat(hash)); 28248 $target.addClass("".concat(this.options.linkActiveClass)); 28249 $tabLink.attr({ 28250 'aria-selected': 'true', 28251 'tabindex': '0' 28252 }); 28253 $targetContent.addClass("".concat(this.options.panelActiveClass)).removeAttr('aria-hidden'); 28254 } 28255 /** 28256 * Collapses `$targetContent` defined by `$target`. 28257 * @param {jQuery} $target - Tab to collapse. 28258 * @function 28259 */ 28260 28261 }, { 28262 key: "_collapseTab", 28263 value: function _collapseTab($target) { 28264 var $target_anchor = $target.removeClass("".concat(this.options.linkActiveClass)).find('[role="tab"]').attr({ 28265 'aria-selected': 'false', 28266 'tabindex': -1 28267 }); 28268 jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat($target_anchor.attr('aria-controls'))).removeClass("".concat(this.options.panelActiveClass)).attr({ 28269 'aria-hidden': 'true' 28270 }); 28271 } 28272 /** 28273 * Collapses the active Tab. 28274 * @fires Tabs#collapse 28275 * @function 28276 */ 28277 28278 }, { 28279 key: "_collapse", 28280 value: function _collapse() { 28281 var $activeTab = this.$element.find(".".concat(this.options.linkClass, ".").concat(this.options.linkActiveClass)); 28282 28283 if ($activeTab.length) { 28284 this._collapseTab($activeTab); 28285 /** 28286 * Fires when the plugin has successfully collapsed tabs. 28287 * @event Tabs#collapse 28288 */ 28289 28290 28291 this.$element.trigger('collapse.zf.tabs', [$activeTab]); 28292 } 28293 } 28294 /** 28295 * Public method for selecting a content pane to display. 28296 * @param {jQuery | String} elem - jQuery object or string of the id of the pane to display. 28297 * @param {boolean} historyHandled - browser has already handled a history update 28298 * @function 28299 */ 28300 28301 }, { 28302 key: "selectTab", 28303 value: function selectTab(elem, historyHandled) { 28304 var idStr, hashIdStr; 28305 28306 if (_typeof(elem) === 'object') { 28307 idStr = elem[0].id; 28308 } else { 28309 idStr = elem; 28310 } 28311 28312 if (idStr.indexOf('#') < 0) { 28313 hashIdStr = "#".concat(idStr); 28314 } else { 28315 hashIdStr = idStr; 28316 idStr = idStr.slice(1); 28317 } 28318 28319 var $target = this.$tabTitles.has("[href$=\"".concat(hashIdStr, "\"],[data-tabs-target=\"").concat(idStr, "\"]")).first(); 28320 28321 this._handleTabChange($target, historyHandled); 28322 } 28323 }, { 28324 key: "_setHeight", 28325 28326 /** 28327 * Sets the height of each panel to the height of the tallest panel. 28328 * If enabled in options, gets called on media query change. 28329 * If loading content via external source, can be called directly or with _reflow. 28330 * If enabled with `data-match-height="true"`, tabs sets to equal height 28331 * @function 28332 * @private 28333 */ 28334 value: function _setHeight() { 28335 var max = 0, 28336 _this = this; // Lock down the `this` value for the root tabs object 28337 28338 28339 this.$tabContent.find(".".concat(this.options.panelClass)).css('height', '').each(function () { 28340 var panel = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 28341 isActive = panel.hasClass("".concat(_this.options.panelActiveClass)); // get the options from the parent instead of trying to get them from the child 28342 28343 if (!isActive) { 28344 panel.css({ 28345 'visibility': 'hidden', 28346 'display': 'block' 28347 }); 28348 } 28349 28350 var temp = this.getBoundingClientRect().height; 28351 28352 if (!isActive) { 28353 panel.css({ 28354 'visibility': '', 28355 'display': '' 28356 }); 28357 } 28358 28359 max = temp > max ? temp : max; 28360 }).css('height', "".concat(max, "px")); 28361 } 28362 /** 28363 * Destroys an instance of tabs. 28364 * @fires Tabs#destroyed 28365 */ 28366 28367 }, { 28368 key: "_destroy", 28369 value: function _destroy() { 28370 this.$element.find(".".concat(this.options.linkClass)).off('.zf.tabs').hide().end().find(".".concat(this.options.panelClass)).hide(); 28371 28372 if (this.options.matchHeight) { 28373 if (this._setHeightMqHandler != null) { 28374 jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off('changed.zf.mediaquery', this._setHeightMqHandler); 28375 } 28376 } 28377 28378 if (this.options.deepLink) { 28379 jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off('hashchange', this._checkDeepLink); 28380 } 28381 28382 if (this.onLoadListener) { 28383 jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(this.onLoadListener); 28384 } 28385 } 28386 }]); 28387 28388 return Tabs; 28389}
28389(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["Plugin"]); 28390 28391Tabs.defaults = { 28392 /** 28393 * Link the location hash to the active pane. 28394 * Set the location hash when the active pane changes, and open the corresponding pane when the location changes. 28395 * @option 28396 * @type {boolean} 28397 * @default false 28398 */ 28399 deepLink: false, 28400 28401 /** 28402 * If `deepLink` is enabled, adjust the deep link scroll to make sure the top of the tab panel is visible 28403 * @option 28404 * @type {boolean} 28405 * @default false 28406 */ 28407 deepLinkSmudge: false, 28408 28409 /** 28410 * If `deepLinkSmudge` is enabled, animation time (ms) for the deep link adjustment 28411 * @option 28412 * @type {number} 28413 * @default 300 28414 */ 28415 deepLinkSmudgeDelay: 300, 28416 28417 /** 28418 * If `deepLink` is enabled, update the browser history with the open tab 28419 * @option 28420 * @type {boolean} 28421 * @default false 28422 */ 28423 updateHistory: false, 28424 28425 /** 28426 * Allows the window to scroll to content of active pane on load. 28427 * Not recommended if more than one tab panel per page. 28428 * @option 28429 * @type {boolean} 28430 * @default false 28431 */ 28432 autoFocus: false, 28433 28434 /** 28435 * Allows keyboard input to 'wrap' around the tab links. 28436 * @option 28437 * @type {boolean} 28438 * @default true 28439 */ 28440 wrapOnKeys: true, 28441 28442 /** 28443 * Allows the tab content panes to match heights if set to true. 28444 * @option 28445 * @type {boolean} 28446 * @default false 28447 */ 28448 matchHeight: false, 28449 28450 /** 28451 * Allows active tabs to collapse when clicked. 28452 * @option 28453 * @type {boolean} 28454 * @default false 28455 */ 28456 activeCollapse: false, 28457 28458 /** 28459 * Class applied to `li`'s in tab link list. 28460 * @option 28461 * @type {string} 28462 * @default 'tabs-title' 28463 */ 28464 linkClass: 'tabs-title', 28465 28466 /** 28467 * Class applied to the active `li` in tab link list. 28468 * @option 28469 * @type {string} 28470 * @default 'is-active' 28471 */ 28472 linkActiveClass: 'is-active', 28473 28474 /** 28475 * Class applied to the content containers. 28476 * @option 28477 * @type {string} 28478 * @default 'tabs-panel' 28479 */ 28480 panelClass: 'tabs-panel', 28481 28482 /** 28483 * Class applied to the active content container. 28484 * @option 28485 * @type {string} 28486 * @default 'is-active' 28487 */ 28488 panelActiveClass: 'is-active' 28489}; 28490 28491 28492/***/ }), 28493 28494/***/ 18: 28495/*!*****************************************************!*\ 28496 !*** multi ./js/entries/plugins/foundation.tabs.js ***! 28497 \*****************************************************/ 28498/*! no static exports found */ 28499/***/ (function(module, exports, __webpack_require__) { 28500 28501module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.tabs.js */"./js/entries/plugins/foundation.tabs.js"); 28502 28503 28504/***/ }), 28505 28506/***/ "jquery": 28507/*!********************************************************************************************!*\ 28508 !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***! 28509 \********************************************************************************************/ 28510/*! no static exports found */ 28511/***/ (function(module, exports) { 28512 28513module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__; 28514 28515/***/ }) 28516 28517/******/ }); 28518}); 28519//# sourceMappingURL=foundation.tabs.js.map 28520(function webpackUniversalModuleDefinition(root, factory) { 28521 if(typeof exports === 'object' && typeof module === 'object') 28522 module.exports = factory(require("./foundation.accordionMenu"), require("./foundation.core"), require("./foundation.drilldown"), require("./foundation.dropdownMenu"), require("./foundation.util.mediaQuery"), require("jquery")); 28523 else if(typeof define === 'function' && define.amd) 28524 define(["./foundation.accordionMenu", "./foundation.core", "./foundation.drilldown", "./foundation.dropdownMenu", "./foundation.util.mediaQuery", "jquery"], factory); 28525 else if(typeof exports === 'object') 28526 exports["foundation.responsiveMenu"] = factory(require("./foundation.accordionMenu"), require("./foundation.core"), require("./foundation.drilldown"), require("./foundation.dropdownMenu"), require("./foundation.util.mediaQuery"), require("jquery")); 28527 else 28528 root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.responsiveMenu"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.accordionMenu"], root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["__FOUNDATION_EXTERNAL__"]["foundation.drilldown"], root["__FOUNDATION_EXTERNAL__"]["foundation.dropdownMenu"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.mediaQuery"], root["jQuery"]); 28529})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_accordionMenu__, __WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE__foundation_drilldown__, __WEBPACK_EXTERNAL_MODULE__foundation_dropdownMenu__, __WEBPACK_EXTERNAL_MODULE__foundation_util_mediaQuery__, __WEBPACK_EXTERNAL_MODULE_jquery__) { 28530return /******/ (function(modules) { // webpackBootstrap 28531/******/ // The module cache 28532/******/ var installedModules = {}; 28533/******/ 28534/******/ // The require function 28535/******/ function __webpack_require__(moduleId) { 28536/******/ 28537/******/ // Check if module is in cache 28538/******/ if(installedModules[moduleId]) { 28539/******/ return installedModules[moduleId].exports; 28540/******/ } 28541/******/ // Create a new module (and put it into the cache) 28542/******/ var module = installedModules[moduleId] = { 28543/******/ i: moduleId, 28544/******/ l: false, 28545/******/ exports: {} 28546/******/ }; 28547/******/ 28548/******/ // Execute the module function 28549/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 28550/******/ 28551/******/ // Flag the module as loaded
vendor: 4,170 bytes, lines 28552-28633
28552/******/ module.l = true; 28553/******/ 28554/******/ // Return the exports of the module 28555/******/ return module.exports; 28556/******/ } 28557/******/ 28558/******/ 28559/******/ // expose the modules object (__webpack_modules__) 28560/******/ __webpack_require__.m = modules; 28561/******/ 28562/******/ // expose the module cache 28563/******/ __webpack_require__.c = installedModules; 28564/******/ 28565/******/ // define getter function for harmony exports 28566/******/ __webpack_require__.d = function(exports, name, getter) { 28567/******/ if(!__webpack_require__.o(exports, name)) { 28568/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); 28569/******/ } 28570/******/ }; 28571/******/ 28572/******/ // define __esModule on exports 28573/******/ __webpack_require__.r = function(exports) { 28574/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 28575/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 28576/******/ } 28577/******/ Object.defineProperty(exports, '__esModule', { value: true }); 28578/******/ }; 28579/******/ 28580/******/ // create a fake namespace object 28581/******/ // mode & 1: value is a module id, require it 28582/******/ // mode & 2: merge all properties of value into the ns 28583/******/ // mode & 4: return value when already ns object 28584/******/ // mode & 8|1: behave like require 28585/******/ __webpack_require__.t = function(value, mode) { 28586/******/ if(mode & 1) value = __webpack_require__(value); 28587/******/ if(mode & 8) return value; 28588/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; 28589/******/ var ns = Object.create(null); 28590/******/ __webpack_require__.r(ns); 28591/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); 28592/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); 28593/******/ return ns; 28594/******/ }; 28595/******/ 28596/******/ // getDefaultExport function for compatibility with non-harmony modules 28597/******/ __webpack_require__.n = function(module) { 28598/******/ var getter = module && module.__esModule ? 28599/******/ function getDefault() { return module['default']; } : 28600/******/ function getModuleExports() { return module; }; 28601/******/ __webpack_require__.d(getter, 'a', getter); 28602/******/ return getter; 28603/******/ }; 28604/******/ 28605/******/ // Object.prototype.hasOwnProperty.call 28606/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; 28607/******/ 28608/******/ // __webpack_public_path__ 28609/******/ __webpack_require__.p = ""; 28610/******/ 28611/******/ 28612/******/ // Load entry module and return exports 28613/******/ return __webpack_require__(__webpack_require__.s = 12); 28614/******/ }) 28615/************************************************************************/ 28616/******/ ({ 28617 28618/***/ "./foundation.accordionMenu": 28619/*!****************************************************************************************************************************************************************************************************!*\ 28620 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.accordionMenu"],"amd":"./foundation.accordionMenu","commonjs":"./foundation.accordionMenu","commonjs2":"./foundation.accordionMenu"} ***! 28621 \****************************************************************************************************************************************************************************************************/ 28622/*! no static exports found */ 28623/***/ (function(module, exports) { 28624 28625module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_accordionMenu__; 28626 28627/***/ }), 28628 28629/***/ "./foundation.core": 28630/*!****************************************************************************************************************************************************************!*\ 28631 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***! 28632 \****************************************************************************************************************************************************************/ 28633/*! no static exports found */
28634/***/ (function(module, exports) { 28635 28636module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__; 28637 28638/***/ }), 28639 28640/***/ "./foundation.drilldown": 28641/*!************************************************************************************************************************************************************************************!*\ 28642 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.drilldown"],"amd":"./foundation.drilldown","commonjs":"./foundation.drilldown","commonjs2":"./foundation.drilldown"} ***! 28643 \************************************************************************************************************************************************************************************/ 28644/*! no static exports found */ 28645/***/ (function(module, exports) { 28646 28647module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_drilldown__; 28648 28649/***/ }), 28650 28651/***/ "./foundation.dropdownMenu": 28652/*!************************************************************************************************************************************************************************************************!*\ 28653 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.dropdownMenu"],"amd":"./foundation.dropdownMenu","commonjs":"./foundation.dropdownMenu","commonjs2":"./foundation.dropdownMenu"} ***! 28654 \************************************************************************************************************************************************************************************************/ 28655/*! no static exports found */ 28656/***/ (function(module, exports) { 28657 28658module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_dropdownMenu__; 28659 28660/***/ }), 28661 28662/***/ "./foundation.util.mediaQuery": 28663/*!************************************************************************************************************************************************************************************************************!*\ 28664 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.mediaQuery"],"amd":"./foundation.util.mediaQuery","commonjs":"./foundation.util.mediaQuery","commonjs2":"./foundation.util.mediaQuery"} ***! 28665 \************************************************************************************************************************************************************************************************************/ 28666/*! no static exports found */ 28667/***/ (function(module, exports) { 28668 28669module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_mediaQuery__; 28670 28671/***/ }), 28672
28673/***/ "./js/entries/plugins/foundation.responsiveMenu.js": 28674/*!*********************************************************!*\ 28675 !*** ./js/entries/plugins/foundation.responsiveMenu.js ***! 28676 \*********************************************************/ 28677/*! exports provided: Foundation, ResponsiveMenu */ 28678/***/ (function(module, __webpack_exports__, __webpack_require__) { 28679 28680"use strict"; 28681__webpack_require__.r(__webpack_exports__); 28682/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core"); 28683/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__); 28684/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; }); 28685 28686/* harmony import */ var _foundation_responsiveMenu__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.responsiveMenu */ "./js/foundation.responsiveMenu.js"); 28687/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ResponsiveMenu", function() { return _foundation_responsiveMenu__WEBPACK_IMPORTED_MODULE_1__["ResponsiveMenu"]; }); 28688 28689 28690 28691_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].plugin(_foundation_responsiveMenu__WEBPACK_IMPORTED_MODULE_1__["ResponsiveMenu"], 'ResponsiveMenu'); 28692 28693 28694/***/ }), 28695
vendor: 4,300 bytes, lines 28696-28734
28696/***/ "./js/foundation.responsiveMenu.js": 28697/*!*****************************************!*\ 28698 !*** ./js/foundation.responsiveMenu.js ***! 28699 \*****************************************/ 28700/*! exports provided: ResponsiveMenu */ 28701/***/ (function(module, __webpack_exports__, __webpack_require__) { 28702 28703"use strict"; 28704__webpack_require__.r(__webpack_exports__); 28705/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ResponsiveMenu", function() { return ResponsiveMenu; }); 28706/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery"); 28707/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__); 28708/* harmony import */ var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.util.mediaQuery */ "./foundation.util.mediaQuery"); 28709/* harmony import */ var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__); 28710/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.core.utils */ "./foundation.core"); 28711/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__); 28712/* harmony import */ var _foundation_dropdownMenu__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./foundation.dropdownMenu */ "./foundation.dropdownMenu"); 28713/* harmony import */ var _foundation_dropdownMenu__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_foundation_dropdownMenu__WEBPACK_IMPORTED_MODULE_3__); 28714/* harmony import */ var _foundation_drilldown__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./foundation.drilldown */ "./foundation.drilldown"); 28715/* harmony import */ var _foundation_drilldown__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_foundation_drilldown__WEBPACK_IMPORTED_MODULE_4__); 28716/* harmony import */ var _foundation_accordionMenu__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./foundation.accordionMenu */ "./foundation.accordionMenu"); 28717/* harmony import */ var _foundation_accordionMenu__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_foundation_accordionMenu__WEBPACK_IMPORTED_MODULE_5__); 28718 28719 28720function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } 28721 28722function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 28723 28724function _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); } } 28725 28726function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } 28727 28728function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } 28729 28730function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } 28731 28732function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } 28733 28734function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { c
28734onstructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } 28735 28736function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } 28737 28738 28739 28740 28741 28742 28743 28744 28745var MenuPlugins = { 28746 dropdown: { 28747 cssClass: 'dropdown', 28748 plugin: _foundation_dropdownMenu__WEBPACK_IMPORTED_MODULE_3__["DropdownMenu"] 28749 }, 28750 drilldown: { 28751 cssClass: 'drilldown', 28752 plugin: _foundation_drilldown__WEBPACK_IMPORTED_MODULE_4__["Drilldown"] 28753 }, 28754 accordion: { 28755 cssClass: 'accordion-menu', 28756 plugin: _foundation_accordionMenu__WEBPACK_IMPORTED_MODULE_5__["AccordionMenu"] 28757 } 28758}; // import "foundation.util.triggers.js"; 28759 28760/** 28761 * ResponsiveMenu module. 28762 * @module foundation.responsiveMenu 28763 * @requires foundation.util.triggers 28764 * @requires foundation.util.mediaQuery 28765 */ 28766 28767var ResponsiveMenu = 28768/*#__PURE__*/ 28769function (_Plugin) { 28770 _inherits(ResponsiveMenu, _Plugin); 28771 28772 function ResponsiveMenu() { 28773 _classCallCheck(this, ResponsiveMenu); 28774 28775 return _possibleConstructorReturn(this, _getPrototypeOf(ResponsiveMenu).apply(this, arguments)); 28776 } 28777 28778 _createClass(ResponsiveMenu, [{ 28779 key: "_setup", 28780 28781 /** 28782 * Creates a new instance of a responsive menu. 28783 * @class 28784 * @name ResponsiveMenu 28785 * @fires ResponsiveMenu#init 28786 * @param {jQuery} element - jQuery object to make into a dropdown menu. 28787 * @param {Object} options - Overrides to the default plugin settings. 28788 */ 28789 value: function _setup(element, options) { 28790 this.$element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(element); 28791 this.rules = this.$element.data('responsive-menu'); 28792 this.currentMq = null; 28793 this.currentPlugin = null; 28794 this.className = 'ResponsiveMenu'; // ie9 back compat 28795 28796 this._init(); 28797 28798 this._events(); 28799 } 28800 /** 28801 * Initializes the Menu by parsing the classes from the 'data-ResponsiveMenu' attribute on the element. 28802 * @function 28803 * @private 28804 */ 28805 28806 }, { 28807 key: "_init", 28808 value: function _init() { 28809 _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"]._init(); // The first time an Interchange plugin is initialized, this.rules is converted from a string of "classes" to an object of rules 28810 28811 28812 if (typeof this.rules === 'string') { 28813 var rulesTree = {}; // Parse rules from "classes" pulled from data attribute 28814 28815 var rules = this.rules.split(' '); // Iterate through every rule found 28816 28817 for (var i = 0; i < rules.length; i++) { 28818 var rule = rules[i].split('-'); 28819 var ruleSize = rule.length > 1 ? rule[0] : 'small'; 28820 var rulePlugin = rule.length > 1 ? rule[1] : rule[0]; 28821 28822 if (MenuPlugins[rulePlugin] !== null) { 28823 rulesTree[ruleSize] = MenuPlugins[rulePlugin]; 28824 } 28825 } 28826 28827 this.rules = rulesTree; 28828 } 28829 28830 if (!jquery__WEBPACK_IMPORTED_MODULE_0___default.a.isEmptyObject(this.rules)) { 28831 this._checkMediaQueries(); 28832 } // Add data-mutate since children may need it. 28833 28834 28835 this.$element.attr('data-mutate', this.$element.attr('data-mutate') || Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["GetYoDigits"])(6, 'responsive-menu')); 28836 } 28837 /** 28838 * Initializes events for the Menu. 28839 * @function 28840 * @private 28841 */ 28842 28843 }, { 28844 key: "_events", 28845 value: function _events() { 28846 var _this = this; 28847 28848 jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('changed.zf.mediaquery', function () { 28849 _this._checkMediaQueries(); 28850 }); // $(window).on('resize.zf.ResponsiveMenu', function() { 28851 // _this._checkMediaQueries(); 28852 // }); 28853 } 28854 /** 28855 * Checks the current screen width against available media queries. If the media query has changed, and the plugin needed has changed, the plugins will swap out. 28856 * @function 28857 * @private 28858 */ 28859 28860 }, { 28861 key: "_checkMediaQueries", 28862 value: function _checkMediaQueries() { 28863 var matchedMq, 28864 _this = this; // Iterate through each rule and find the last matching rule 28865 28866 28867 jquery__WEBPACK_IMPORTED_MODULE_0___default.a.each(this.rules, function (key) { 28868 if (_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"].atLeast(key)) { 28869 matchedMq = key; 28870 } 28871 }); // No match? No dice 28872 28873 if (!matchedMq) return; // Plugin already initialized? We good 28874 28875 if (this.currentPlugin instanceof this.rules[matchedMq].plugin) return; // Remove existing plugin-specific CSS classes 28876 28877 jquery__WEBPACK_IMPORTED_MODULE_0___default.a.each(MenuPlugins, function (key, value) { 28878 _this.$element.removeClass(value.cssClass); 28879 }); // Add the CSS class for the new plugin 28880 28881 this.$element.addClass(this.rules[matchedMq].cssClass); // Create an instance of the new plugin 28882 28883 if (this.currentPlugin) this.currentPlugin.destroy(); 28884 this.currentPlugin = new this.rules[matchedMq].plugin(this.$element, {}); 28885 } 28886 /** 28887 * Destroys the instance of the current plugin on this element, as well as the window resize handler that switches the plugins out. 28888 * @function 28889 */ 28890 28891 }, { 28892 key: "_destroy", 28893 value: function _destroy() { 28894 this.currentPlugin.destroy(); 28895 jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off('.zf.ResponsiveMenu'); 28896 } 28897 }]); 28898 28899 return ResponsiveMenu; 28900}
vendor: 4,647 bytes, lines 28900-29001
28900(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["Plugin"]); 28901 28902ResponsiveMenu.defaults = {}; 28903 28904 28905/***/ }), 28906 28907/***/ 12: 28908/*!***************************************************************!*\ 28909 !*** multi ./js/entries/plugins/foundation.responsiveMenu.js ***! 28910 \***************************************************************/ 28911/*! no static exports found */ 28912/***/ (function(module, exports, __webpack_require__) { 28913 28914module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.responsiveMenu.js */"./js/entries/plugins/foundation.responsiveMenu.js"); 28915 28916 28917/***/ }), 28918 28919/***/ "jquery": 28920/*!********************************************************************************************!*\ 28921 !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***! 28922 \********************************************************************************************/ 28923/*! no static exports found */ 28924/***/ (function(module, exports) { 28925 28926module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__; 28927 28928/***/ }) 28929 28930/******/ }); 28931}); 28932//# sourceMappingURL=foundation.responsiveMenu.js.map 28933(function webpackUniversalModuleDefinition(root, factory) { 28934 if(typeof exports === 'object' && typeof module === 'object') 28935 module.exports = factory(require("./foundation.core"), require("./foundation.util.mediaQuery"), require("./foundation.util.motion"), require("jquery")); 28936 else if(typeof define === 'function' && define.amd) 28937 define(["./foundation.core", "./foundation.util.mediaQuery", "./foundation.util.motion", "jquery"], factory); 28938 else if(typeof exports === 'object') 28939 exports["foundation.responsiveToggle"] = factory(require("./foundation.core"), require("./foundation.util.mediaQuery"), require("./foundation.util.motion"), require("jquery")); 28940 else 28941 root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.responsiveToggle"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.mediaQuery"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.motion"], root["jQuery"]); 28942})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE__foundation_util_mediaQuery__, __WEBPACK_EXTERNAL_MODULE__foundation_util_motion__, __WEBPACK_EXTERNAL_MODULE_jquery__) { 28943return /******/ (function(modules) { // webpackBootstrap 28944/******/ // The module cache 28945/******/ var installedModules = {}; 28946/******/ 28947/******/ // The require function 28948/******/ function __webpack_require__(moduleId) { 28949/******/ 28950/******/ // Check if module is in cache 28951/******/ if(installedModules[moduleId]) { 28952/******/ return installedModules[moduleId].exports; 28953/******/ } 28954/******/ // Create a new module (and put it into the cache) 28955/******/ var module = installedModules[moduleId] = { 28956/******/ i: moduleId, 28957/******/ l: false, 28958/******/ exports: {} 28959/******/ }; 28960/******/ 28961/******/ // Execute the module function 28962/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 28963/******/ 28964/******/ // Flag the module as loaded 28965/******/ module.l = true; 28966/******/ 28967/******/ // Return the exports of the module 28968/******/ return module.exports; 28969/******/ } 28970/******/ 28971/******/ 28972/******/ // expose the modules object (__webpack_modules__) 28973/******/ __webpack_require__.m = modules; 28974/******/ 28975/******/ // expose the module cache 28976/******/ __webpack_require__.c = installedModules; 28977/******/ 28978/******/ // define getter function for harmony exports 28979/******/ __webpack_require__.d = function(exports, name, getter) { 28980/******/ if(!__webpack_require__.o(exports, name)) { 28981/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); 28982/******/ } 28983/******/ }; 28984/******/ 28985/******/ // define __esModule on exports 28986/******/ __webpack_require__.r = function(exports) { 28987/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 28988/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 28989/******/ } 28990/******/ Object.defineProperty(exports, '__esModule', { value: true }); 28991/******/ }; 28992/******/ 28993/******/ // create a fake namespace object 28994/******/ // mode & 1: value is a module id, require it 28995/******/ // mode & 2: merge all properties of value into the ns 28996/******/ // mode & 4: return value when already ns object 28997/******/ // mode & 8|1: behave like require 28998/******/ __webpack_require__.t = function(value, mode) { 28999/******/ if(mode & 1) value = __webpack_require__(value); 29000/******/ if(mode & 8) return value; 29001/******/ if((mode & 4) && typeof value === 'object' && value && value.__esMo
vendor: 3,553 bytes, lines 29001-29063
29001dule) return value; 29002/******/ var ns = Object.create(null); 29003/******/ __webpack_require__.r(ns); 29004/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); 29005/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); 29006/******/ return ns; 29007/******/ }; 29008/******/ 29009/******/ // getDefaultExport function for compatibility with non-harmony modules 29010/******/ __webpack_require__.n = function(module) { 29011/******/ var getter = module && module.__esModule ? 29012/******/ function getDefault() { return module['default']; } : 29013/******/ function getModuleExports() { return module; }; 29014/******/ __webpack_require__.d(getter, 'a', getter); 29015/******/ return getter; 29016/******/ }; 29017/******/ 29018/******/ // Object.prototype.hasOwnProperty.call 29019/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; 29020/******/ 29021/******/ // __webpack_public_path__ 29022/******/ __webpack_require__.p = ""; 29023/******/ 29024/******/ 29025/******/ // Load entry module and return exports 29026/******/ return __webpack_require__(__webpack_require__.s = 13); 29027/******/ }) 29028/************************************************************************/ 29029/******/ ({ 29030 29031/***/ "./foundation.core": 29032/*!****************************************************************************************************************************************************************!*\ 29033 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***! 29034 \****************************************************************************************************************************************************************/ 29035/*! no static exports found */ 29036/***/ (function(module, exports) { 29037 29038module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__; 29039 29040/***/ }), 29041 29042/***/ "./foundation.util.mediaQuery": 29043/*!************************************************************************************************************************************************************************************************************!*\ 29044 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.mediaQuery"],"amd":"./foundation.util.mediaQuery","commonjs":"./foundation.util.mediaQuery","commonjs2":"./foundation.util.mediaQuery"} ***! 29045 \************************************************************************************************************************************************************************************************************/ 29046/*! no static exports found */ 29047/***/ (function(module, exports) { 29048 29049module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_mediaQuery__; 29050 29051/***/ }), 29052 29053/***/ "./foundation.util.motion": 29054/*!********************************************************************************************************************************************************************************************!*\ 29055 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.motion"],"amd":"./foundation.util.motion","commonjs":"./foundation.util.motion","commonjs2":"./foundation.util.motion"} ***! 29056 \********************************************************************************************************************************************************************************************/ 29057/*! no static exports found */ 29058/***/ (function(module, exports) { 29059 29060module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_motion__; 29061 29062/***/ }), 29063
29064/***/ "./js/entries/plugins/foundation.responsiveToggle.js": 29065/*!***********************************************************!*\ 29066 !*** ./js/entries/plugins/foundation.responsiveToggle.js ***! 29067 \***********************************************************/ 29068/*! exports provided: Foundation, ResponsiveToggle */ 29069/***/ (function(module, __webpack_exports__, __webpack_require__) { 29070 29071"use strict"; 29072__webpack_require__.r(__webpack_exports__); 29073/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core"); 29074/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__); 29075/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; }); 29076 29077/* harmony import */ var _foundation_responsiveToggle__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.responsiveToggle */ "./js/foundation.responsiveToggle.js"); 29078/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ResponsiveToggle", function() { return _foundation_responsiveToggle__WEBPACK_IMPORTED_MODULE_1__["ResponsiveToggle"]; }); 29079 29080 29081 29082_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].plugin(_foundation_responsiveToggle__WEBPACK_IMPORTED_MODULE_1__["ResponsiveToggle"], 'ResponsiveToggle'); 29083 29084 29085/***/ }), 29086
29087/***/ "./js/foundation.responsiveToggle.js": 29088/*!*******************************************!*\ 29089 !*** ./js/foundation.responsiveToggle.js ***! 29090 \*******************************************/ 29091/*! exports provided: ResponsiveToggle */ 29092/***/ (function(module, __webpack_exports__, __webpack_require__) { 29093 29094"use strict"; 29095__webpack_require__.r(__webpack_exports__); 29096/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ResponsiveToggle", function() { return ResponsiveToggle; }); 29097/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery"); 29098/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__); 29099/* harmony import */ var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.util.mediaQuery */ "./foundation.util.mediaQuery"); 29100/* harmony import */ var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__); 29101/* harmony import */ var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.util.motion */ "./foundation.util.motion"); 29102/* harmony import */ var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__); 29103/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./foundation.core.plugin */ "./foundation.core"); 29104/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_3__); 29105 29106 29107function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } 29108 29109function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 29110 29111function _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); } } 29112 29113function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } 29114 29115function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } 29116 29117function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } 29118 29119function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } 29120 29121function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } 29122 29123function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } 29124 29125 29126 29127 29128 29129/** 29130 * ResponsiveToggle module. 29131 * @module foundation.responsiveToggle 29132 * @requires foundation.util.mediaQuery 29133 * @requires foundation.util.motion 29134 */ 29135 29136var ResponsiveToggle = 29137/*#__PURE__*/ 29138function (_Plugin) { 29139 _inherits(ResponsiveToggle, _Plugin); 29140 29141 function ResponsiveToggle() { 29142 _classCallCheck(this, ResponsiveToggle); 29143 29144 return _possibleConstructorReturn(this, _getPrototypeOf(ResponsiveToggle).apply(this, arguments)); 29145 } 29146 29147 _createClass(ResponsiveToggle, [{ 29148 key: "_setup", 29149 29150 /** 29151 * Creates a new instance of Tab Bar. 29152 * @class 29153 * @name ResponsiveToggle 29154 * @fires ResponsiveToggle#init 29155 * @param {jQuery} element - jQuery object to attach tab bar functionality to. 29156 * @param {Object} options - Overrides to the default plugin settings. 29157 */ 29158 value: function _setup(element, options) { 29159 this.$element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(element); 29160 this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, ResponsiveToggle.defaults, this.$element.data(), options); 29161 this.className = 'ResponsiveToggle'; // ie9 back compat 29162 29163 this._init(); 29164 29165 this._events(); 29166 } 29167 /** 29168 * Initializes the tab bar by finding the target element, toggling element, and running update(). 29169 * @function 29170 * @private 29171 */ 29172 29173 }, { 29174 key: "_init", 29175 value: function _init() { 29176 _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"]._init(); 29177 29178 var targetID = this.$element.data('responsive-toggle'); 29179 29180 if (!targetID) { 29181 console.error('Your tab bar needs an ID of a Menu as the value of data-tab-bar.'); 29182 } 29183 29184 this.$targetMenu = jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(targetID)); 29185 this.$toggler = this.$element.find('[data-toggle]').filter(function () { 29186 var target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('toggle'); 29187 return target === targetID || target === ""; 29188 }); 29189 this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, this.options, this.$targetMenu.data()); // If they were set, parse the animation classes 29190 29191 if (this.options.animate) { 29192 var input = this.options.animate.split(' '); 29193 this.animationIn = input[0]; 29194 this.animationOut = input[1] || null; 29195 } 29196 29197 this._update(); 29198 } 29199 /** 29200 * Adds necessary event handlers for the tab bar to work. 29201 * @function 29202 * @private 29203 */ 29204 29205 }, { 29206 key: "_events", 29207 value: function _events() { 29208 var _this = this; 29209 29210 this._updateMqHandler = this._update.bind(this); 29211 jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('changed.zf.mediaquery', this._updateMqHandler); 29212 this.$toggler.on('click.zf.responsiveToggle', this.toggleMenu.bind(this)); 29213 } 29214 /** 29215 * Checks the current media query to determine if the tab bar should be visible or hidden. 29216 * @function 29217 * @private 29218 */ 29219 29220 }, { 29221 key: "_update", 29222 value: function _update() { 29223 // Mobile 29224 if (!_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"].atLeast(this.options.hideFor)) { 29225 this.$element.show(); 29226 this.$targetMenu.hide(); 29227 } // Desktop 29228 else { 29229 this.$element.hide(); 29230 this.$targetMenu.show(); 29231 } 29232 } 29233 /** 29234 * Toggles the element attached to the tab bar. The toggle only happens if the screen is small enough to allow it. 29235 * @function 29236 * @fires ResponsiveToggle#toggled 29237 */ 29238 29239 }, { 29240 key: "toggleMenu", 29241 value: function toggleMenu() { 29242 var _this2 = this; 29243 29244 if (!_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"].atLeast(this.options.hideFor)) { 29245 /** 29246 * Fires when the element attached to the tab bar toggles. 29247 * @event ResponsiveToggle#toggled 29248 */ 29249 if (this.options.animate) { 29250 if (this.$targetMenu.is(':hidden')) { 29251 _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__["Motion"].animateIn(this.$targetMenu, this.animationIn, function () { 29252 _this2.$element.trigger('toggled.zf.responsiveToggle'); 29253 29254 _this2.$targetMenu.find('[data-mutate]').triggerHandler('mutateme.zf.trigger'); 29255 }); 29256 } else { 29257 _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__["Motion"].animateOut(this.$targetMenu, this.animationOut, function () { 29258 _this2.$element.trigger('toggled.zf.responsiveToggle'); 29259 }); 29260 } 29261 } else { 29262 this.$targetMenu.toggle(0); 29263 this.$targetMenu.find('[data-mutate]').trigger('mutateme.zf.trigger'); 29264 this.$element.trigger('toggled.zf.responsiveToggle'); 29265 } 29266 } 29267 } 29268 }, { 29269 key: "_destroy", 29270 value: function _destroy() { 29271 this.$element.off('.zf.responsiveToggle'); 29272 this.$toggler.off('.zf.responsiveToggle'); 29273 jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off('changed.zf.mediaquery', this._updateMqHandler); 29274 } 29275 }]); 29276 29277 return ResponsiveToggle; 29278}
vendor: 5,390 bytes, lines 29278-29395
29278(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_3__["Plugin"]); 29279 29280ResponsiveToggle.defaults = { 29281 /** 29282 * The breakpoint after which the menu is always shown, and the tab bar is hidden. 29283 * @option 29284 * @type {string} 29285 * @default 'medium' 29286 */ 29287 hideFor: 'medium', 29288 29289 /** 29290 * To decide if the toggle should be animated or not. 29291 * @option 29292 * @type {boolean} 29293 * @default false 29294 */ 29295 animate: false 29296}; 29297 29298 29299/***/ }), 29300 29301/***/ 13: 29302/*!*****************************************************************!*\ 29303 !*** multi ./js/entries/plugins/foundation.responsiveToggle.js ***! 29304 \*****************************************************************/ 29305/*! no static exports found */ 29306/***/ (function(module, exports, __webpack_require__) { 29307 29308module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.responsiveToggle.js */"./js/entries/plugins/foundation.responsiveToggle.js"); 29309 29310 29311/***/ }), 29312 29313/***/ "jquery": 29314/*!********************************************************************************************!*\ 29315 !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***! 29316 \********************************************************************************************/ 29317/*! no static exports found */ 29318/***/ (function(module, exports) { 29319 29320module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__; 29321 29322/***/ }) 29323 29324/******/ }); 29325}); 29326//# sourceMappingURL=foundation.responsiveToggle.js.map 29327(function webpackUniversalModuleDefinition(root, factory) { 29328 if(typeof exports === 'object' && typeof module === 'object') 29329 module.exports = factory(require("./foundation.core"), require("./foundation.util.keyboard"), require("./foundation.util.mediaQuery"), require("./foundation.util.motion"), require("./foundation.util.touch"), require("jquery")); 29330 else if(typeof define === 'function' && define.amd) 29331 define(["./foundation.core", "./foundation.util.keyboard", "./foundation.util.mediaQuery", "./foundation.util.motion", "./foundation.util.touch", "jquery"], factory); 29332 else if(typeof exports === 'object') 29333 exports["foundation.reveal"] = factory(require("./foundation.core"), require("./foundation.util.keyboard"), require("./foundation.util.mediaQuery"), require("./foundation.util.motion"), require("./foundation.util.touch"), require("jquery")); 29334 else 29335 root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.reveal"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.keyboard"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.mediaQuery"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.motion"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.touch"], root["jQuery"]); 29336})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE__foundation_util_keyboard__, __WEBPACK_EXTERNAL_MODULE__foundation_util_mediaQuery__, __WEBPACK_EXTERNAL_MODULE__foundation_util_motion__, __WEBPACK_EXTERNAL_MODULE__foundation_util_touch__, __WEBPACK_EXTERNAL_MODULE_jquery__) { 29337return /******/ (function(modules) { // webpackBootstrap 29338/******/ // The module cache 29339/******/ var installedModules = {}; 29340/******/ 29341/******/ // The require function 29342/******/ function __webpack_require__(moduleId) { 29343/******/ 29344/******/ // Check if module is in cache 29345/******/ if(installedModules[moduleId]) { 29346/******/ return installedModules[moduleId].exports; 29347/******/ } 29348/******/ // Create a new module (and put it into the cache) 29349/******/ var module = installedModules[moduleId] = { 29350/******/ i: moduleId, 29351/******/ l: false, 29352/******/ exports: {} 29353/******/ }; 29354/******/ 29355/******/ // Execute the module function 29356/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 29357/******/ 29358/******/ // Flag the module as loaded 29359/******/ module.l = true; 29360/******/ 29361/******/ // Return the exports of the module 29362/******/ return module.exports; 29363/******/ } 29364/******/ 29365/******/ 29366/******/ // expose the modules object (__webpack_modules__) 29367/******/ __webpack_require__.m = modules; 29368/******/ 29369/******/ // expose the module cache 29370/******/ __webpack_require__.c = installedModules; 29371/******/ 29372/******/ // define getter function for harmony exports 29373/******/ __webpack_require__.d = function(exports, name, getter) { 29374/******/ if(!__webpack_require__.o(exports, name)) { 29375/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); 29376/******/ } 29377/******/ }; 29378/******/ 29379/******/ // define __esModule on exports 29380/******/ __webpack_require__.r = function(exports) { 29381/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 29382/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 29383/******/ } 29384/******/ Object.defineProperty(exports, '__esModule', { value: true }); 29385/******/ }; 29386/******/ 29387/******/ // create a fake namespace object 29388/******/ // mode & 1: value is a module id, require it 29389/******/ // mode & 2: merge all properties of value into the ns 29390/******/ // mode & 4: return value when already ns object 29391/******/ // mode & 8|1: behave like require 29392/******/ __webpack_require__.t = function(value, mode) { 29393/******/ if(mode & 1) value = __webpack_require__(value); 29394/******/ if(mode & 8) return value; 29395/******/ if((mode & 4) && typeof value === 'object' && value && value.__esMo
vendor: 4,227 bytes, lines 29395-29462
29395dule) return value; 29396/******/ var ns = Object.create(null); 29397/******/ __webpack_require__.r(ns); 29398/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); 29399/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); 29400/******/ return ns; 29401/******/ }; 29402/******/ 29403/******/ // getDefaultExport function for compatibility with non-harmony modules 29404/******/ __webpack_require__.n = function(module) { 29405/******/ var getter = module && module.__esModule ? 29406/******/ function getDefault() { return module['default']; } : 29407/******/ function getModuleExports() { return module; }; 29408/******/ __webpack_require__.d(getter, 'a', getter); 29409/******/ return getter; 29410/******/ }; 29411/******/ 29412/******/ // Object.prototype.hasOwnProperty.call 29413/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; 29414/******/ 29415/******/ // __webpack_public_path__ 29416/******/ __webpack_require__.p = ""; 29417/******/ 29418/******/ 29419/******/ // Load entry module and return exports 29420/******/ return __webpack_require__(__webpack_require__.s = 14); 29421/******/ }) 29422/************************************************************************/ 29423/******/ ({ 29424 29425/***/ "./foundation.core": 29426/*!****************************************************************************************************************************************************************!*\ 29427 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***! 29428 \****************************************************************************************************************************************************************/ 29429/*! no static exports found */ 29430/***/ (function(module, exports) { 29431 29432module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__; 29433 29434/***/ }), 29435 29436/***/ "./foundation.util.keyboard": 29437/*!****************************************************************************************************************************************************************************************************!*\ 29438 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.keyboard"],"amd":"./foundation.util.keyboard","commonjs":"./foundation.util.keyboard","commonjs2":"./foundation.util.keyboard"} ***! 29439 \****************************************************************************************************************************************************************************************************/ 29440/*! no static exports found */ 29441/***/ (function(module, exports) { 29442 29443module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_keyboard__; 29444 29445/***/ }), 29446 29447/***/ "./foundation.util.mediaQuery": 29448/*!************************************************************************************************************************************************************************************************************!*\ 29449 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.mediaQuery"],"amd":"./foundation.util.mediaQuery","commonjs":"./foundation.util.mediaQuery","commonjs2":"./foundation.util.mediaQuery"} ***! 29450 \************************************************************************************************************************************************************************************************************/ 29451/*! no static exports found */ 29452/***/ (function(module, exports) { 29453 29454module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_mediaQuery__; 29455 29456/***/ }), 29457 29458/***/ "./foundation.util.motion": 29459/*!********************************************************************************************************************************************************************************************!*\ 29460 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.motion"],"amd":"./foundation.util.motion","commonjs":"./foundation.util.motion","commonjs2":"./foundation.util.motion"} ***! 29461 \********************************************************************************************************************************************************************************************/ 29462/*! no static exports found */
29463/***/ (function(module, exports) { 29464 29465module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_motion__; 29466 29467/***/ }), 29468 29469/***/ "./foundation.util.touch": 29470/*!****************************************************************************************************************************************************************************************!*\ 29471 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.touch"],"amd":"./foundation.util.touch","commonjs":"./foundation.util.touch","commonjs2":"./foundation.util.touch"} ***! 29472 \****************************************************************************************************************************************************************************************/ 29473/*! no static exports found */ 29474/***/ (function(module, exports) { 29475 29476module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_touch__; 29477 29478/***/ }), 29479
29480/***/ "./js/entries/plugins/foundation.reveal.js": 29481/*!*************************************************!*\ 29482 !*** ./js/entries/plugins/foundation.reveal.js ***! 29483 \*************************************************/ 29484/*! exports provided: Foundation, Reveal */ 29485/***/ (function(module, __webpack_exports__, __webpack_require__) { 29486 29487"use strict"; 29488__webpack_require__.r(__webpack_exports__); 29489/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core"); 29490/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__); 29491/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; }); 29492 29493/* harmony import */ var _foundation_reveal__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.reveal */ "./js/foundation.reveal.js"); 29494/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Reveal", function() { return _foundation_reveal__WEBPACK_IMPORTED_MODULE_1__["Reveal"]; }); 29495 29496 29497 29498_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].plugin(_foundation_reveal__WEBPACK_IMPORTED_MODULE_1__["Reveal"], 'Reveal'); 29499 29500 29501/***/ }), 29502
vendor: 4,128 bytes, lines 29503-29540
29503/***/ "./js/foundation.reveal.js": 29504/*!*********************************!*\ 29505 !*** ./js/foundation.reveal.js ***! 29506 \*********************************/ 29507/*! exports provided: Reveal */ 29508/***/ (function(module, __webpack_exports__, __webpack_require__) { 29509 29510"use strict"; 29511__webpack_require__.r(__webpack_exports__); 29512/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Reveal", function() { return Reveal; }); 29513/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery"); 29514/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__); 29515/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.plugin */ "./foundation.core"); 29516/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__); 29517/* harmony import */ var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.util.keyboard */ "./foundation.util.keyboard"); 29518/* harmony import */ var _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__); 29519/* harmony import */ var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./foundation.util.mediaQuery */ "./foundation.util.mediaQuery"); 29520/* harmony import */ var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_3__); 29521/* harmony import */ var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./foundation.util.motion */ "./foundation.util.motion"); 29522/* harmony import */ var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_motion__WEBPACK_IMPORTED_MODULE_4__); 29523/* harmony import */ var _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./foundation.util.triggers */ "./js/foundation.util.triggers.js"); 29524/* harmony import */ var _foundation_util_touch__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./foundation.util.touch */ "./foundation.util.touch"); 29525/* harmony import */ var _foundation_util_touch__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_touch__WEBPACK_IMPORTED_MODULE_6__); 29526 29527 29528function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } 29529 29530function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 29531 29532function _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); } } 29533 29534function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } 29535 29536function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } 29537 29538function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } 29539 29540function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o
29540); }; return _getPrototypeOf(o); } 29541 29542function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } 29543 29544function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } 29545 29546 29547 29548 29549 29550 29551 29552 29553 29554/** 29555 * Reveal module. 29556 * @module foundation.reveal 29557 * @requires foundation.util.keyboard 29558 * @requires foundation.util.touch 29559 * @requires foundation.util.triggers 29560 * @requires foundation.util.mediaQuery 29561 * @requires foundation.util.motion if using animations 29562 */ 29563 29564var Reveal = 29565/*#__PURE__*/ 29566function (_Plugin) { 29567 _inherits(Reveal, _Plugin); 29568 29569 function Reveal() { 29570 _classCallCheck(this, Reveal); 29571 29572 return _possibleConstructorReturn(this, _getPrototypeOf(Reveal).apply(this, arguments)); 29573 } 29574 29575 _createClass(Reveal, [{ 29576 key: "_setup", 29577 29578 /** 29579 * Creates a new instance of Reveal. 29580 * @class 29581 * @name Reveal 29582 * @param {jQuery} element - jQuery object to use for the modal. 29583 * @param {Object} options - optional parameters. 29584 */ 29585 value: function _setup(element, options) { 29586 this.$element = element; 29587 this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, Reveal.defaults, this.$element.data(), options); 29588 this.className = 'Reveal'; // ie9 back compat 29589 29590 this._init(); // Touch and Triggers init are idempotent, just need to make sure they are initialized 29591 29592 29593 _foundation_util_touch__WEBPACK_IMPORTED_MODULE_6__["Touch"].init(jquery__WEBPACK_IMPORTED_MODULE_0___default.a); 29594 _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_5__["Triggers"].init(jquery__WEBPACK_IMPORTED_MODULE_0___default.a); 29595 _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__["Keyboard"].register('Reveal', { 29596 'ESCAPE': 'close' 29597 }); 29598 } 29599 /** 29600 * Initializes the modal by adding the overlay and close buttons, (if selected). 29601 * @private 29602 */ 29603 29604 }, { 29605 key: "_init", 29606 value: function _init() { 29607 var _this2 = this; 29608 29609 _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_3__["MediaQuery"]._init(); 29610 29611 this.id = this.$element.attr('id'); 29612 this.isActive = false; 29613 this.cached = { 29614 mq: _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_3__["MediaQuery"].current 29615 }; 29616 this.$anchor = jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-open=\"".concat(this.id, "\"]")).length ? jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-open=\"".concat(this.id, "\"]")) : jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-toggle=\"".concat(this.id, "\"]")); 29617 this.$anchor.attr({ 29618 'aria-controls': this.id, 29619 'aria-haspopup': true, 29620 'tabindex': 0 29621 }); 29622 29623 if (this.options.fullScreen || this.$element.hasClass('full')) { 29624 this.options.fullScreen = true; 29625 this.options.overlay = false; 29626 } 29627 29628 if (this.options.overlay && !this.$overlay) { 29629 this.$overlay = this._makeOverlay(this.id); 29630 } 29631 29632 this.$element.attr({ 29633 'role': 'dialog', 29634 'aria-hidden': true, 29635 'data-yeti-box': this.id, 29636 'data-resize': this.id 29637 }); 29638 29639 if (this.$overlay) { 29640 this.$element.detach().appendTo(this.$overlay); 29641 } else { 29642 this.$element.detach().appendTo(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this.options.appendTo)); 29643 this.$element.addClass('without-overlay'); 29644 } 29645 29646 this._events(); 29647 29648 if (this.options.deepLink && window.location.hash === "#".concat(this.id)) { 29649 this.onLoadListener = Object(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["onLoad"])(jquery__WEBPACK_IMPORTED_MODULE_0___default()(window), function () { 29650 return _this2.open(); 29651 }); 29652 } 29653 } 29654 /** 29655 * Creates an overlay div to display behind the modal. 29656 * @private 29657 */ 29658 29659 }, { 29660 key: "_makeOverlay", 29661 value: function _makeOverlay() {
vendor: 16,116 bytes, lines 29662-30143
29662 var additionalOverlayClasses = ''; 29663 29664 if (this.options.additionalOverlayClasses) { 29665 additionalOverlayClasses = ' ' + this.options.additionalOverlayClasses; 29666 } 29667 29668 return jquery__WEBPACK_IMPORTED_MODULE_0___default()('<div></div>').addClass('reveal-overlay' + additionalOverlayClasses).appendTo(this.options.appendTo); 29669 } 29670 /** 29671 * Updates position of modal 29672 * TODO: Figure out if we actually need to cache these values or if it doesn't matter 29673 * @private 29674 */ 29675 29676 }, { 29677 key: "_updatePosition", 29678 value: function _updatePosition() { 29679 var width = this.$element.outerWidth(); 29680 var outerWidth = jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).width(); 29681 var height = this.$element.outerHeight(); 29682 var outerHeight = jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).height(); 29683 var left, 29684 top = null; 29685 29686 if (this.options.hOffset === 'auto') { 29687 left = parseInt((outerWidth - width) / 2, 10); 29688 } else { 29689 left = parseInt(this.options.hOffset, 10); 29690 } 29691 29692 if (this.options.vOffset === 'auto') { 29693 if (height > outerHeight) { 29694 top = parseInt(Math.min(100, outerHeight / 10), 10); 29695 } else { 29696 top = parseInt((outerHeight - height) / 4, 10); 29697 } 29698 } else if (this.options.vOffset !== null) { 29699 top = parseInt(this.options.vOffset, 10); 29700 } 29701 29702 if (top !== null) { 29703 this.$element.css({ 29704 top: top + 'px' 29705 }); 29706 } // only worry about left if we don't have an overlay or we have a horizontal offset, 29707 // otherwise we're perfectly in the middle 29708 29709 29710 if (!this.$overlay || this.options.hOffset !== 'auto') { 29711 this.$element.css({ 29712 left: left + 'px' 29713 }); 29714 this.$element.css({ 29715 margin: '0px' 29716 }); 29717 } 29718 } 29719 /** 29720 * Adds event handlers for the modal. 29721 * @private 29722 */ 29723 29724 }, { 29725 key: "_events", 29726 value: function _events() { 29727 var _this3 = this; 29728 29729 var _this = this; 29730 29731 this.$element.on({ 29732 'open.zf.trigger': this.open.bind(this), 29733 'close.zf.trigger': function closeZfTrigger(event, $element) { 29734 if (event.target === _this.$element[0] || jquery__WEBPACK_IMPORTED_MODULE_0___default()(event.target).parents('[data-closable]')[0] === $element) { 29735 // only close reveal when it's explicitly called 29736 return _this3.close.apply(_this3); 29737 } 29738 }, 29739 'toggle.zf.trigger': this.toggle.bind(this), 29740 'resizeme.zf.trigger': function resizemeZfTrigger() { 29741 _this._updatePosition(); 29742 } 29743 }); 29744 29745 if (this.options.closeOnClick && this.options.overlay) { 29746 this.$overlay.off('.zf.reveal').on('click.zf.dropdown tap.zf.dropdown', function (e) { 29747 if (e.target === _this.$element[0] || jquery__WEBPACK_IMPORTED_MODULE_0___default.a.contains(_this.$element[0], e.target) || !jquery__WEBPACK_IMPORTED_MODULE_0___default.a.contains(document, e.target)) { 29748 return; 29749 } 29750 29751 _this.close(); 29752 }); 29753 } 29754 29755 if (this.options.deepLink) { 29756 jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on("hashchange.zf.reveal:".concat(this.id), this._handleState.bind(this)); 29757 } 29758 } 29759 /** 29760 * Handles modal methods on back/forward button clicks or any other event that triggers hashchange. 29761 * @private 29762 */ 29763 29764 }, { 29765 key: "_handleState", 29766 value: function _handleState(e) { 29767 if (window.location.hash === '#' + this.id && !this.isActive) { 29768 this.open(); 29769 } else { 29770 this.close(); 29771 } 29772 } 29773 /** 29774 * Disables the scroll when Reveal is shown to prevent the background from shifting 29775 * @param {number} scrollTop - Scroll to visually apply, window current scroll by default 29776 */ 29777 29778 }, { 29779 key: "_disableScroll", 29780 value: function _disableScroll(scrollTop) { 29781 scrollTop = scrollTop || jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).scrollTop(); 29782 29783 if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).height() > jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).height()) { 29784 jquery__WEBPACK_IMPORTED_MODULE_0___default()("html").css("top", -scrollTop); 29785 } 29786 } 29787 /** 29788 * Reenables the scroll when Reveal closes 29789 * @param {number} scrollTop - Scroll to restore, html "top" property by default (as set by `_disableScroll`) 29790 */ 29791 29792 }, { 29793 key: "_enableScroll", 29794 value: function _enableScroll(scrollTop) { 29795 scrollTop = scrollTop || parseInt(jquery__WEBPACK_IMPORTED_MODULE_0___default()("html").css("top")); 29796 29797 if (jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).height() > jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).height()) { 29798 jquery__WEBPACK_IMPORTED_MODULE_0___default()("html").css("top", ""); 29799 jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).scrollTop(-scrollTop); 29800 } 29801 } 29802 /** 29803 * Opens the modal controlled by `this.$anchor`, and closes all others by default. 29804 * @function 29805 * @fires Reveal#closeme 29806 * @fires Reveal#open 29807 */ 29808 29809 }, { 29810 key: "open", 29811 value: function open() { 29812 var _this4 = this; 29813 29814 // either update or replace browser history 29815 var hash = "#".concat(this.id); 29816 29817 if (this.options.deepLink && window.location.hash !== hash) { 29818 if (window.history.pushState) { 29819 if (this.options.updateHistory) { 29820 window.history.pushState({}, '', hash); 29821 } else { 29822 window.history.replaceState({}, '', hash); 29823 } 29824 } else { 29825 window.location.hash = hash; 29826 } 29827 } // Remember anchor that opened it to set focus back later, have general anchors as fallback 29828 29829 29830 this.$activeAnchor = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document.activeElement).is(this.$anchor) ? jquery__WEBPACK_IMPORTED_MODULE_0___default()(document.activeElement) : this.$anchor; 29831 this.isActive = true; // Make elements invisible, but remove display: none so we can get size and positioning 29832 29833 this.$element.css({ 29834 'visibility': 'hidden' 29835 }).show().scrollTop(0); 29836 29837 if (this.options.overlay) { 29838 this.$overlay.css({ 29839 'visibility': 'hidden' 29840 }).show(); 29841 } 29842 29843 this._updatePosition(); 29844 29845 this.$element.hide().css({ 29846 'visibility': '' 29847 }); 29848 29849 if (this.$overlay) { 29850 this.$overlay.css({ 29851 'visibility': '' 29852 }).hide(); 29853 29854 if (this.$element.hasClass('fast')) { 29855 this.$overlay.addClass('fast'); 29856 } else if (this.$element.hasClass('slow')) { 29857 this.$overlay.addClass('slow'); 29858 } 29859 } 29860 29861 if (!this.options.multipleOpened) { 29862 /** 29863 * Fires immediately before the modal opens. 29864 * Closes any other modals that are currently open 29865 * @event Reveal#closeme 29866 */ 29867 this.$element.trigger('closeme.zf.reveal', this.id); 29868 } 29869 29870 if (jquery__WEBPACK_IMPORTED_MODULE_0___default()('.reveal:visible').length === 0) { 29871 this._disableScroll(); 29872 } 29873 29874 var _this = this; // Motion UI method of reveal 29875 29876 29877 if (this.options.animationIn) { 29878 var afterAnimation = function afterAnimation() { 29879 _this.$element.attr({ 29880 'aria-hidden': false, 29881 'tabindex': -1 29882 }).focus(); 29883 29884 _this._addGlobalClasses(); 29885 29886 _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__["Keyboard"].trapFocus(_this.$element); 29887 }; 29888 29889 if (this.options.overlay) { 29890 _foundation_util_motion__WEBPACK_IMPORTED_MODULE_4__["Motion"].animateIn(this.$overlay, 'fade-in'); 29891 } 29892 29893 _foundation_util_motion__WEBPACK_IMPORTED_MODULE_4__["Motion"].animateIn(this.$element, this.options.animationIn, function () { 29894 if (_this4.$element) { 29895 // protect against object having been removed 29896 _this4.focusableElements = _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__["Keyboard"].findFocusable(_this4.$element); 29897 afterAnimation(); 29898 } 29899 }); 29900 } // jQuery method of reveal 29901 else { 29902 if (this.options.overlay) { 29903 this.$overlay.show(0); 29904 } 29905 29906 this.$element.show(this.options.showDelay); 29907 } // handle accessibility 29908 29909 29910 this.$element.attr({ 29911 'aria-hidden': false, 29912 'tabindex': -1 29913 }).focus(); 29914 _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__["Keyboard"].trapFocus(this.$element); 29915 29916 this._addGlobalClasses(); 29917 29918 this._addGlobalListeners(); 29919 /** 29920 * Fires when the modal has successfully opened. 29921 * @event Reveal#open 29922 */ 29923 29924 29925 this.$element.trigger('open.zf.reveal'); 29926 } 29927 /** 29928 * Adds classes and listeners on document required by open modals. 29929 * 29930 * The following classes are added and updated: 29931 * - `.is-reveal-open` - Prevents the scroll on document 29932 * - `.zf-has-scroll` - Displays a disabled scrollbar on document if required like if the 29933 * scroll was not disabled. This prevent a "shift" of the page content due 29934 * the scrollbar disappearing when the modal opens. 29935 * 29936 * @private 29937 */ 29938 29939 }, { 29940 key: "_addGlobalClasses", 29941 value: function _addGlobalClasses() { 29942 var updateScrollbarClass = function updateScrollbarClass() { 29943 jquery__WEBPACK_IMPORTED_MODULE_0___default()('html').toggleClass('zf-has-scroll', !!(jquery__WEBPACK_IMPORTED_MODULE_0___default()(document).height() > jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).height())); 29944 }; 29945 29946 this.$element.on('resizeme.zf.trigger.revealScrollbarListener', function () { 29947 return updateScrollbarClass(); 29948 }); 29949 updateScrollbarClass(); 29950 jquery__WEBPACK_IMPORTED_MODULE_0___default()('html').addClass('is-reveal-open'); 29951 } 29952 /** 29953 * Removes classes and listeners on document that were required by open modals. 29954 * @private 29955 */ 29956 29957 }, { 29958 key: "_removeGlobalClasses", 29959 value: function _removeGlobalClasses() { 29960 this.$element.off('resizeme.zf.trigger.revealScrollbarListener'); 29961 jquery__WEBPACK_IMPORTED_MODULE_0___default()('html').removeClass('is-reveal-open'); 29962 jquery__WEBPACK_IMPORTED_MODULE_0___default()('html').removeClass('zf-has-scroll'); 29963 } 29964 /** 29965 * Adds extra event handlers for the body and window if necessary. 29966 * @private 29967 */ 29968 29969 }, { 29970 key: "_addGlobalListeners", 29971 value: function _addGlobalListeners() { 29972 var _this = this; 29973 29974 if (!this.$element) { 29975 return; 29976 } // If we're in the middle of cleanup, don't freak out 29977 29978 29979 this.focusableElements = _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__["Keyboard"].findFocusable(this.$element); 29980 29981 if (!this.options.overlay && this.options.closeOnClick && !this.options.fullScreen) { 29982 jquery__WEBPACK_IMPORTED_MODULE_0___default()('body').on('click.zf.dropdown tap.zf.dropdown', function (e) { 29983 if (e.target === _this.$element[0] || jquery__WEBPACK_IMPORTED_MODULE_0___default.a.contains(_this.$element[0], e.target) || !jquery__WEBPACK_IMPORTED_MODULE_0___default.a.contains(document, e.target)) { 29984 return; 29985 } 29986 29987 _this.close(); 29988 }); 29989 } 29990 29991 if (this.options.closeOnEsc) { 29992 jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('keydown.zf.reveal', function (e) { 29993 _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__["Keyboard"].handleKey(e, 'Reveal', { 29994 close: function close() { 29995 if (_this.options.closeOnEsc) { 29996 _this.close(); 29997 } 29998 } 29999 }); 30000 }); 30001 } 30002 } 30003 /** 30004 * Closes the modal. 30005 * @function 30006 * @fires Reveal#closed 30007 */ 30008 30009 }, { 30010 key: "close", 30011 value: function close() { 30012 if (!this.isActive || !this.$element.is(':visible')) { 30013 return false; 30014 } 30015 30016 var _this = this; // Motion UI method of hiding 30017 30018 30019 if (this.options.animationOut) { 30020 if (this.options.overlay) { 30021 _foundation_util_motion__WEBPACK_IMPORTED_MODULE_4__["Motion"].animateOut(this.$overlay, 'fade-out'); 30022 } 30023 30024 _foundation_util_motion__WEBPACK_IMPORTED_MODULE_4__["Motion"].animateOut(this.$element, this.options.animationOut, finishUp); 30025 } // jQuery method of hiding 30026 else { 30027 this.$element.hide(this.options.hideDelay); 30028 30029 if (this.options.overlay) { 30030 this.$overlay.hide(0, finishUp); 30031 } else { 30032 finishUp(); 30033 } 30034 } // Conditionals to remove extra event listeners added on open 30035 30036 30037 if (this.options.closeOnEsc) { 30038 jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off('keydown.zf.reveal'); 30039 } 30040 30041 if (!this.options.overlay && this.options.closeOnClick) { 30042 jquery__WEBPACK_IMPORTED_MODULE_0___default()('body').off('click.zf.dropdown tap.zf.dropdown'); 30043 } 30044 30045 this.$element.off('keydown.zf.reveal'); 30046 30047 function finishUp() { 30048 // Get the current top before the modal is closed and restore the scroll after. 30049 // TODO: use component properties instead of HTML properties 30050 // See https://github.com/foundation/foundation-sites/pull/10786 30051 var scrollTop = parseInt(jquery__WEBPACK_IMPORTED_MODULE_0___default()("html").css("top")); 30052 30053 if (jquery__WEBPACK_IMPORTED_MODULE_0___default()('.reveal:visible').length === 0) { 30054 _this._removeGlobalClasses(); // also remove .is-reveal-open from the html element when there is no opened reveal 30055 30056 } 30057 30058 _foundation_util_keyboard__WEBPACK_IMPORTED_MODULE_2__["Keyboard"].releaseFocus(_this.$element); 30059 30060 _this.$element.attr('aria-hidden', true); 30061 30062 if (jquery__WEBPACK_IMPORTED_MODULE_0___default()('.reveal:visible').length === 0) { 30063 _this._enableScroll(scrollTop); 30064 } 30065 /** 30066 * Fires when the modal is done closing. 30067 * @event Reveal#closed 30068 */ 30069 30070 30071 _this.$element.trigger('closed.zf.reveal'); 30072 } 30073 /** 30074 * Resets the modal content 30075 * This prevents a running video to keep going in the background 30076 */ 30077 30078 30079 if (this.options.resetOnClose) { 30080 this.$element.html(this.$element.html()); 30081 } 30082 30083 this.isActive = false; // If deepLink and we did not switched to an other modal... 30084 30085 if (_this.options.deepLink && window.location.hash === "#".concat(this.id)) { 30086 // Remove the history hash 30087 if (window.history.replaceState) { 30088 var urlWithoutHash = window.location.pathname + window.location.search; 30089 30090 if (this.options.updateHistory) { 30091 window.history.pushState({}, '', urlWithoutHash); // remove the hash 30092 } else { 30093 window.history.replaceState('', document.title, urlWithoutHash); 30094 } 30095 } else { 30096 window.location.hash = ''; 30097 } 30098 } 30099 30100 this.$activeAnchor.focus(); 30101 } 30102 /** 30103 * Toggles the open/closed state of a modal. 30104 * @function 30105 */ 30106 30107 }, { 30108 key: "toggle", 30109 value: function toggle() { 30110 if (this.isActive) { 30111 this.close(); 30112 } else { 30113 this.open(); 30114 } 30115 } 30116 }, { 30117 key: "_destroy", 30118 30119 /** 30120 * Destroys an instance of a modal. 30121 * @function 30122 */ 30123 value: function _destroy() { 30124 if (this.options.overlay) { 30125 this.$element.appendTo(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this.options.appendTo)); // move $element outside of $overlay to prevent error unregisterPlugin() 30126 30127 this.$overlay.hide().off().remove(); 30128 } 30129 30130 this.$element.hide().off(); 30131 this.$anchor.off('.zf'); 30132 jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(".zf.reveal:".concat(this.id)); 30133 if (this.onLoadListener) jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(this.onLoadListener); 30134 30135 if (jquery__WEBPACK_IMPORTED_MODULE_0___default()('.reveal:visible').length === 0) { 30136 this._removeGlobalClasses(); // also remove .is-reveal-open from the html element when there is no opened reveal 30137 30138 } 30139 } 30140 }]); 30141 30142 return Reveal; 30143}
30143(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["Plugin"]); 30144 30145Reveal.defaults = { 30146 /** 30147 * Motion-UI class to use for animated elements. If none used, defaults to simple show/hide. 30148 * @option 30149 * @type {string} 30150 * @default '' 30151 */ 30152 animationIn: '', 30153 30154 /** 30155 * Motion-UI class to use for animated elements. If none used, defaults to simple show/hide. 30156 * @option 30157 * @type {string} 30158 * @default '' 30159 */ 30160 animationOut: '', 30161 30162 /** 30163 * Time, in ms, to delay the opening of a modal after a click if no animation used. 30164 * @option 30165 * @type {number} 30166 * @default 0 30167 */ 30168 showDelay: 0, 30169 30170 /** 30171 * Time, in ms, to delay the closing of a modal after a click if no animation used. 30172 * @option 30173 * @type {number} 30174 * @default 0 30175 */ 30176 hideDelay: 0, 30177 30178 /** 30179 * Allows a click on the body/overlay to close the modal. 30180 * @option 30181 * @type {boolean} 30182 * @default true 30183 */ 30184 closeOnClick: true, 30185 30186 /** 30187 * Allows the modal to close if the user presses the `ESCAPE` key. 30188 * @option 30189 * @type {boolean} 30190 * @default true 30191 */ 30192 closeOnEsc: true, 30193 30194 /** 30195 * If true, allows multiple modals to be displayed at once. 30196 * @option 30197 * @type {boolean} 30198 * @default false 30199 */ 30200 multipleOpened: false, 30201 30202 /** 30203 * Distance, in pixels, the modal should push down from the top of the screen. 30204 * @option 30205 * @type {number|string} 30206 * @default auto 30207 */ 30208 vOffset: 'auto', 30209 30210 /** 30211 * Distance, in pixels, the modal should push in from the side of the screen. 30212 * @option 30213 * @type {number|string} 30214 * @default auto 30215 */ 30216 hOffset: 'auto', 30217 30218 /** 30219 * Allows the modal to be fullscreen, completely blocking out the rest of the view. JS checks for this as well. 30220 * @option 30221 * @type {boolean} 30222 * @default false 30223 */ 30224 fullScreen: false, 30225 30226 /** 30227 * Allows the modal to generate an overlay div, which will cover the view when modal opens. 30228 * @option 30229 * @type {boolean} 30230 * @default true 30231 */ 30232 overlay: true, 30233 30234 /** 30235 * Allows the modal to remove and reinject markup on close. Should be true if using video elements w/o using provider's api, otherwise, videos will continue to play in the background. 30236 * @option 30237 * @type {boolean} 30238 * @default false 30239 */ 30240 resetOnClose: false, 30241 30242 /** 30243 * Link the location hash to the modal. 30244 * Set the location hash when the modal is opened/closed, and open/close the modal when the location changes. 30245 * @option 30246 * @type {boolean} 30247 * @default false 30248 */ 30249 deepLink: false, 30250 30251 /** 30252 * If `deepLink` is enabled, update the browser history with the open modal 30253 * @option 30254 * @default false 30255 */ 30256 updateHistory: false, 30257 30258 /** 30259 * Allows the modal to append to custom div. 30260 * @option 30261 * @type {string} 30262 * @default "body" 30263 */ 30264 appendTo: "body", 30265 30266 /** 30267 * Allows adding additional class names to the reveal overlay. 30268 * @option 30269 * @type {string} 30270 * @default '' 30271 */ 30272 additionalOverlayClasses: '' 30273}; 30274 30275 30276/***/ }), 30277
vendor: 12,972 bytes, lines 30278-30592
30278/***/ "./js/foundation.util.triggers.js": 30279/*!****************************************!*\ 30280 !*** ./js/foundation.util.triggers.js ***! 30281 \****************************************/ 30282/*! exports provided: Triggers */ 30283/***/ (function(module, __webpack_exports__, __webpack_require__) { 30284 30285"use strict"; 30286__webpack_require__.r(__webpack_exports__); 30287/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Triggers", function() { return Triggers; }); 30288/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery"); 30289/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__); 30290/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.utils */ "./foundation.core"); 30291/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__); 30292/* harmony import */ var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.util.motion */ "./foundation.util.motion"); 30293/* harmony import */ var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__); 30294 30295 30296function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } 30297 30298 30299 30300 30301 30302var MutationObserver = function () { 30303 var prefixes = ['WebKit', 'Moz', 'O', 'Ms', '']; 30304 30305 for (var i = 0; i < prefixes.length; i++) { 30306 if ("".concat(prefixes[i], "MutationObserver") in window) { 30307 return window["".concat(prefixes[i], "MutationObserver")]; 30308 } 30309 } 30310 30311 return false; 30312}(); 30313 30314var triggers = function triggers(el, type) { 30315 el.data(type).split(' ').forEach(function (id) { 30316 jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(id))[type === 'close' ? 'trigger' : 'triggerHandler']("".concat(type, ".zf.trigger"), [el]); 30317 }); 30318}; 30319 30320var Triggers = { 30321 Listeners: { 30322 Basic: {}, 30323 Global: {} 30324 }, 30325 Initializers: {} 30326}; 30327Triggers.Listeners.Basic = { 30328 openListener: function openListener() { 30329 triggers(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'open'); 30330 }, 30331 closeListener: function closeListener() { 30332 var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('close'); 30333 30334 if (id) { 30335 triggers(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'close'); 30336 } else { 30337 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger('close.zf.trigger'); 30338 } 30339 }, 30340 toggleListener: function toggleListener() { 30341 var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('toggle'); 30342 30343 if (id) { 30344 triggers(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'toggle'); 30345 } else { 30346 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger('toggle.zf.trigger'); 30347 } 30348 }, 30349 closeableListener: function closeableListener(e) { 30350 var animation = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('closable'); // Only close the first closable element. See https://git.io/zf-7833 30351 30352 e.stopPropagation(); 30353 30354 if (animation !== '') { 30355 _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__["Motion"].animateOut(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), animation, function () { 30356 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger('closed.zf'); 30357 }); 30358 } else { 30359 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).fadeOut().trigger('closed.zf'); 30360 } 30361 }, 30362 toggleFocusListener: function toggleFocusListener() { 30363 var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('toggle-focus'); 30364 jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(id)).triggerHandler('toggle.zf.trigger', [jquery__WEBPACK_IMPORTED_MODULE_0___default()(this)]); 30365 } 30366}; // Elements with [data-open] will reveal a plugin that supports it when clicked. 30367 30368Triggers.Initializers.addOpenListener = function ($elem) { 30369 $elem.off('click.zf.trigger', Triggers.Listeners.Basic.openListener); 30370 $elem.on('click.zf.trigger', '[data-open]', Triggers.Listeners.Basic.openListener); 30371}; // Elements with [data-close] will close a plugin that supports it when clicked. 30372// If used without a value on [data-close], the event will bubble, allowing it to close a parent component. 30373 30374 30375Triggers.Initializers.addCloseListener = function ($elem) { 30376 $elem.off('click.zf.trigger', Triggers.Listeners.Basic.closeListener); 30377 $elem.on('click.zf.trigger', '[data-close]', Triggers.Listeners.Basic.closeListener); 30378}; // Elements with [data-toggle] will toggle a plugin that supports it when clicked. 30379 30380 30381Triggers.Initializers.addToggleListener = function ($elem) { 30382 $elem.off('click.zf.trigger', Triggers.Listeners.Basic.toggleListener); 30383 $elem.on('click.zf.trigger', '[data-toggle]', Triggers.Listeners.Basic.toggleListener); 30384}; // Elements with [data-closable] will respond to close.zf.trigger events. 30385 30386 30387Triggers.Initializers.addCloseableListener = function ($elem) { 30388 $elem.off('close.zf.trigger', Triggers.Listeners.Basic.closeableListener); 30389 $elem.on('close.zf.trigger', '[data-closeable], [data-closable]', Triggers.Listeners.Basic.closeableListener); 30390}; // Elements with [data-toggle-focus] will respond to coming in and out of focus 30391 30392 30393Triggers.Initializers.addToggleFocusListener = function ($elem) { 30394 $elem.off('focus.zf.trigger blur.zf.trigger', Triggers.Listeners.Basic.toggleFocusListener); 30395 $elem.on('focus.zf.trigger blur.zf.trigger', '[data-toggle-focus]', Triggers.Listeners.Basic.toggleFocusListener); 30396}; // More Global/complex listeners and triggers 30397 30398 30399Triggers.Listeners.Global = { 30400 resizeListener: function resizeListener($nodes) { 30401 if (!MutationObserver) { 30402 //fallback for IE 9 30403 $nodes.each(function () { 30404 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).triggerHandler('resizeme.zf.trigger'); 30405 }); 30406 } //trigger all listening elements and signal a resize event 30407 30408 30409 $nodes.attr('data-events', "resize"); 30410 }, 30411 scrollListener: function scrollListener($nodes) { 30412 if (!MutationObserver) { 30413 //fallback for IE 9 30414 $nodes.each(function () { 30415 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).triggerHandler('scrollme.zf.trigger'); 30416 }); 30417 } //trigger all listening elements and signal a scroll event 30418 30419 30420 $nodes.attr('data-events', "scroll"); 30421 }, 30422 closeMeListener: function closeMeListener(e, pluginId) { 30423 var plugin = e.namespace.split('.')[0]; 30424 var plugins = jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-".concat(plugin, "]")).not("[data-yeti-box=\"".concat(pluginId, "\"]")); 30425 plugins.each(function () { 30426 var _this = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this); 30427 30428 _this.triggerHandler('close.zf.trigger', [_this]); 30429 }); 30430 } // Global, parses whole document. 30431 30432}; 30433 30434Triggers.Initializers.addClosemeListener = function (pluginName) { 30435 var yetiBoxes = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-yeti-box]'), 30436 plugNames = ['dropdown', 'tooltip', 'reveal']; 30437 30438 if (pluginName) { 30439 if (typeof pluginName === 'string') { 30440 plugNames.push(pluginName); 30441 } else if (_typeof(pluginName) === 'object' && typeof pluginName[0] === 'string') { 30442 plugNames = plugNames.concat(pluginName); 30443 } else { 30444 console.error('Plugin names must be strings'); 30445 } 30446 } 30447 30448 if (yetiBoxes.length) { 30449 var listeners = plugNames.map(function (name) { 30450 return "closeme.zf.".concat(name); 30451 }).join(' '); 30452 jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(listeners).on(listeners, Triggers.Listeners.Global.closeMeListener); 30453 } 30454}; 30455 30456function debounceGlobalListener(debounce, trigger, listener) { 30457 var timer, 30458 args = Array.prototype.slice.call(arguments, 3); 30459 jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(trigger).on(trigger, function (e) { 30460 if (timer) { 30461 clearTimeout(timer); 30462 } 30463 30464 timer = setTimeout(function () { 30465 listener.apply(null, args); 30466 }, debounce || 10); //default time to emit scroll event 30467 }); 30468} 30469 30470Triggers.Initializers.addResizeListener = function (debounce) { 30471 var $nodes = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-resize]'); 30472 30473 if ($nodes.length) { 30474 debounceGlobalListener(debounce, 'resize.zf.trigger', Triggers.Listeners.Global.resizeListener, $nodes); 30475 } 30476}; 30477 30478Triggers.Initializers.addScrollListener = function (debounce) { 30479 var $nodes = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-scroll]'); 30480 30481 if ($nodes.length) { 30482 debounceGlobalListener(debounce, 'scroll.zf.trigger', Triggers.Listeners.Global.scrollListener, $nodes); 30483 } 30484}; 30485 30486Triggers.Initializers.addMutationEventsListener = function ($elem) { 30487 if (!MutationObserver) { 30488 return false; 30489 } 30490 30491 var $nodes = $elem.find('[data-resize], [data-scroll], [data-mutate]'); //element callback 30492 30493 var listeningElementsMutation = function listeningElementsMutation(mutationRecordsList) { 30494 var $target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(mutationRecordsList[0].target); //trigger the event handler for the element depending on type 30495 30496 switch (mutationRecordsList[0].type) { 30497 case "attributes": 30498 if ($target.attr("data-events") === "scroll" && mutationRecordsList[0].attributeName === "data-events") { 30499 $target.triggerHandler('scrollme.zf.trigger', [$target, window.pageYOffset]); 30500 } 30501 30502 if ($target.attr("data-events") === "resize" && mutationRecordsList[0].attributeName === "data-events") { 30503 $target.triggerHandler('resizeme.zf.trigger', [$target]); 30504 } 30505 30506 if (mutationRecordsList[0].attributeName === "style") { 30507 $target.closest("[data-mutate]").attr("data-events", "mutate"); 30508 $target.closest("[data-mutate]").triggerHandler('mutateme.zf.trigger', [$target.closest("[data-mutate]")]); 30509 } 30510 30511 break; 30512 30513 case "childList": 30514 $target.closest("[data-mutate]").attr("data-events", "mutate"); 30515 $target.closest("[data-mutate]").triggerHandler('mutateme.zf.trigger', [$target.closest("[data-mutate]")]); 30516 break; 30517 30518 default: 30519 return false; 30520 //nothing 30521 } 30522 }; 30523 30524 if ($nodes.length) { 30525 //for each element that needs to listen for resizing, scrolling, or mutation add a single observer 30526 for (var i = 0; i <= $nodes.length - 1; i++) { 30527 var elementObserver = new MutationObserver(listeningElementsMutation); 30528 elementObserver.observe($nodes[i], { 30529 attributes: true, 30530 childList: true, 30531 characterData: false, 30532 subtree: true, 30533 attributeFilter: ["data-events", "style"] 30534 }); 30535 } 30536 } 30537}; 30538 30539Triggers.Initializers.addSimpleListeners = function () { 30540 var $document = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document); 30541 Triggers.Initializers.addOpenListener($document); 30542 Triggers.Initializers.addCloseListener($document); 30543 Triggers.Initializers.addToggleListener($document); 30544 Triggers.Initializers.addCloseableListener($document); 30545 Triggers.Initializers.addToggleFocusListener($document); 30546}; 30547 30548Triggers.Initializers.addGlobalListeners = function () { 30549 var $document = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document); 30550 Triggers.Initializers.addMutationEventsListener($document); 30551 Triggers.Initializers.addResizeListener(); 30552 Triggers.Initializers.addScrollListener(); 30553 Triggers.Initializers.addClosemeListener(); 30554}; 30555 30556Triggers.init = function ($, Foundation) { 30557 Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["onLoad"])($(window), function () { 30558 if ($.triggersInitialized !== true) { 30559 Triggers.Initializers.addSimpleListeners(); 30560 Triggers.Initializers.addGlobalListeners(); 30561 $.triggersInitialized = true; 30562 } 30563 }); 30564 30565 if (Foundation) { 30566 Foundation.Triggers = Triggers; // Legacy included to be backwards compatible for now. 30567 30568 Foundation.IHearYou = Triggers.Initializers.addGlobalListeners; 30569 } 30570}; 30571 30572 30573 30574/***/ }), 30575 30576/***/ 14: 30577/*!*******************************************************!*\ 30578 !*** multi ./js/entries/plugins/foundation.reveal.js ***! 30579 \*******************************************************/ 30580/*! no static exports found */ 30581/***/ (function(module, exports, __webpack_require__) { 30582 30583module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.reveal.js */"./js/entries/plugins/foundation.reveal.js"); 30584 30585 30586/***/ }), 30587 30588/***/ "jquery": 30589/*!********************************************************************************************!*\ 30590 !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***! 30591 \********************************************************************************************/ 30592/*! no static exports found */
vendor: 5,083 bytes, lines 30593-30704
30593/***/ (function(module, exports) { 30594 30595module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__; 30596 30597/***/ }) 30598 30599/******/ }); 30600}); 30601//# sourceMappingURL=foundation.reveal.js.map 30602(function webpackUniversalModuleDefinition(root, factory) { 30603 if(typeof exports === 'object' && typeof module === 'object') 30604 module.exports = factory(require("./foundation.core"), require("jquery")); 30605 else if(typeof define === 'function' && define.amd) 30606 define(["./foundation.core", "jquery"], factory); 30607 else if(typeof exports === 'object') 30608 exports["foundation.smoothScroll"] = factory(require("./foundation.core"), require("jquery")); 30609 else 30610 root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.smoothScroll"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["jQuery"]); 30611})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE_jquery__) { 30612return /******/ (function(modules) { // webpackBootstrap 30613/******/ // The module cache 30614/******/ var installedModules = {}; 30615/******/ 30616/******/ // The require function 30617/******/ function __webpack_require__(moduleId) { 30618/******/ 30619/******/ // Check if module is in cache 30620/******/ if(installedModules[moduleId]) { 30621/******/ return installedModules[moduleId].exports; 30622/******/ } 30623/******/ // Create a new module (and put it into the cache) 30624/******/ var module = installedModules[moduleId] = { 30625/******/ i: moduleId, 30626/******/ l: false, 30627/******/ exports: {} 30628/******/ }; 30629/******/ 30630/******/ // Execute the module function 30631/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 30632/******/ 30633/******/ // Flag the module as loaded 30634/******/ module.l = true; 30635/******/ 30636/******/ // Return the exports of the module 30637/******/ return module.exports; 30638/******/ } 30639/******/ 30640/******/ 30641/******/ // expose the modules object (__webpack_modules__) 30642/******/ __webpack_require__.m = modules; 30643/******/ 30644/******/ // expose the module cache 30645/******/ __webpack_require__.c = installedModules; 30646/******/ 30647/******/ // define getter function for harmony exports 30648/******/ __webpack_require__.d = function(exports, name, getter) { 30649/******/ if(!__webpack_require__.o(exports, name)) { 30650/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); 30651/******/ } 30652/******/ }; 30653/******/ 30654/******/ // define __esModule on exports 30655/******/ __webpack_require__.r = function(exports) { 30656/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 30657/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 30658/******/ } 30659/******/ Object.defineProperty(exports, '__esModule', { value: true }); 30660/******/ }; 30661/******/ 30662/******/ // create a fake namespace object 30663/******/ // mode & 1: value is a module id, require it 30664/******/ // mode & 2: merge all properties of value into the ns 30665/******/ // mode & 4: return value when already ns object 30666/******/ // mode & 8|1: behave like require 30667/******/ __webpack_require__.t = function(value, mode) { 30668/******/ if(mode & 1) value = __webpack_require__(value); 30669/******/ if(mode & 8) return value; 30670/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; 30671/******/ var ns = Object.create(null); 30672/******/ __webpack_require__.r(ns); 30673/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); 30674/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); 30675/******/ return ns; 30676/******/ }; 30677/******/ 30678/******/ // getDefaultExport function for compatibility with non-harmony modules 30679/******/ __webpack_require__.n = function(module) { 30680/******/ var getter = module && module.__esModule ? 30681/******/ function getDefault() { return module['default']; } : 30682/******/ function getModuleExports() { return module; }; 30683/******/ __webpack_require__.d(getter, 'a', getter); 30684/******/ return getter; 30685/******/ }; 30686/******/ 30687/******/ // Object.prototype.hasOwnProperty.call 30688/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; 30689/******/ 30690/******/ // __webpack_public_path__ 30691/******/ __webpack_require__.p = ""; 30692/******/ 30693/******/ 30694/******/ // Load entry module and return exports 30695/******/ return __webpack_require__(__webpack_require__.s = 16); 30696/******/ }) 30697/************************************************************************/ 30698/******/ ({ 30699 30700/***/ "./foundation.core": 30701/*!****************************************************************************************************************************************************************!*\ 30702 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***! 30703 \****************************************************************************************************************************************************************/ 30704/*! no static exports found */
30705/***/ (function(module, exports) { 30706 30707module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__; 30708 30709/***/ }), 30710
30711/***/ "./js/entries/plugins/foundation.smoothScroll.js": 30712/*!*******************************************************!*\ 30713 !*** ./js/entries/plugins/foundation.smoothScroll.js ***! 30714 \*******************************************************/ 30715/*! exports provided: Foundation, SmoothScroll */ 30716/***/ (function(module, __webpack_exports__, __webpack_require__) { 30717 30718"use strict"; 30719__webpack_require__.r(__webpack_exports__); 30720/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core"); 30721/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__); 30722/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; }); 30723 30724/* harmony import */ var _foundation_smoothScroll__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.smoothScroll */ "./js/foundation.smoothScroll.js"); 30725/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "SmoothScroll", function() { return _foundation_smoothScroll__WEBPACK_IMPORTED_MODULE_1__["SmoothScroll"]; }); 30726 30727 30728 30729_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].plugin(_foundation_smoothScroll__WEBPACK_IMPORTED_MODULE_1__["SmoothScroll"], 'SmoothScroll'); 30730 30731 30732/***/ }), 30733
vendor: 4,894 bytes, lines 30734-30830
30734/***/ "./js/foundation.smoothScroll.js": 30735/*!***************************************!*\ 30736 !*** ./js/foundation.smoothScroll.js ***! 30737 \***************************************/ 30738/*! exports provided: SmoothScroll */ 30739/***/ (function(module, __webpack_exports__, __webpack_require__) { 30740 30741"use strict"; 30742__webpack_require__.r(__webpack_exports__); 30743/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "SmoothScroll", function() { return SmoothScroll; }); 30744/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery"); 30745/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__); 30746/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.utils */ "./foundation.core"); 30747/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__); 30748function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } 30749 30750function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 30751 30752function _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); } } 30753 30754function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } 30755 30756function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } 30757 30758function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } 30759 30760function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } 30761 30762function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } 30763 30764function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } 30765 30766 30767 30768 30769/** 30770 * SmoothScroll module. 30771 * @module foundation.smoothScroll 30772 */ 30773 30774var SmoothScroll = 30775/*#__PURE__*/ 30776function (_Plugin) { 30777 _inherits(SmoothScroll, _Plugin); 30778 30779 function SmoothScroll() { 30780 _classCallCheck(this, SmoothScroll); 30781 30782 return _possibleConstructorReturn(this, _getPrototypeOf(SmoothScroll).apply(this, arguments)); 30783 } 30784 30785 _createClass(SmoothScroll, [{ 30786 key: "_setup", 30787 30788 /** 30789 * Creates a new instance of SmoothScroll. 30790 * @class 30791 * @name SmoothScroll 30792 * @fires SmoothScroll#init 30793 * @param {Object} element - jQuery object to add the trigger to. 30794 * @param {Object} options - Overrides to the default plugin settings. 30795 */ 30796 value: function _setup(element, options) { 30797 this.$element = element; 30798 this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, SmoothScroll.defaults, this.$element.data(), options); 30799 this.className = 'SmoothScroll'; // ie9 back compat 30800 30801 this._init(); 30802 } 30803 /** 30804 * Initialize the SmoothScroll plugin 30805 * @private 30806 */ 30807 30808 }, { 30809 key: "_init", 30810 value: function _init() { 30811 var id = this.$element[0].id || Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["GetYoDigits"])(6, 'smooth-scroll'); 30812 this.$element.attr({ 30813 id: id 30814 }); 30815 30816 this._events(); 30817 } 30818 /** 30819 * Initializes events for SmoothScroll. 30820 * @private 30821 */ 30822 30823 }, { 30824 key: "_events", 30825 value: function _events() { 30826 this._linkClickListener = this._handleLinkClick.bind(this); 30827 this.$element.on('click.zf.smoothScroll', this._linkClickListener); 30828 this.$element.on('click.zf.smoothScroll', 'a[href^="#"]', this._linkClickListener); 30829 } 30830 /**
vendor: 5,985 bytes, lines 30831-30992
30831 * Handle the given event to smoothly scroll to the anchor pointed by the event target. 30832 * @param {*} e - event 30833 * @function 30834 * @private 30835 */ 30836 30837 }, { 30838 key: "_handleLinkClick", 30839 value: function _handleLinkClick(e) { 30840 var _this = this; 30841 30842 // Follow the link if it does not point to an anchor. 30843 if (!jquery__WEBPACK_IMPORTED_MODULE_0___default()(e.currentTarget).is('a[href^="#"]')) return; 30844 var arrival = e.currentTarget.getAttribute('href'); 30845 this._inTransition = true; 30846 SmoothScroll.scrollToLoc(arrival, this.options, function () { 30847 _this._inTransition = false; 30848 }); 30849 e.preventDefault(); 30850 } 30851 }, { 30852 key: "_destroy", 30853 30854 /** 30855 * Destroys the SmoothScroll instance. 30856 * @function 30857 */ 30858 value: function _destroy() { 30859 this.$element.off('click.zf.smoothScroll', this._linkClickListener); 30860 this.$element.off('click.zf.smoothScroll', 'a[href^="#"]', this._linkClickListener); 30861 } 30862 }], [{ 30863 key: "scrollToLoc", 30864 30865 /** 30866 * Function to scroll to a given location on the page. 30867 * @param {String} loc - A properly formatted jQuery id selector. Example: '#foo' 30868 * @param {Object} options - The options to use. 30869 * @param {Function} callback - The callback function. 30870 * @static 30871 * @function 30872 */ 30873 value: function scrollToLoc(loc) { 30874 var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : SmoothScroll.defaults; 30875 var callback = arguments.length > 2 ? arguments[2] : undefined; 30876 var $loc = jquery__WEBPACK_IMPORTED_MODULE_0___default()(loc); // Do nothing if target does not exist to prevent errors 30877 30878 if (!$loc.length) return false; 30879 var scrollPos = Math.round($loc.offset().top - options.threshold / 2 - options.offset); 30880 jquery__WEBPACK_IMPORTED_MODULE_0___default()('html, body').stop(true).animate({ 30881 scrollTop: scrollPos 30882 }, options.animationDuration, options.animationEasing, function () { 30883 if (typeof callback === 'function') { 30884 callback(); 30885 } 30886 }); 30887 } 30888 }]); 30889 30890 return SmoothScroll; 30891}(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["Plugin"]); 30892/** 30893 * Default settings for plugin. 30894 */ 30895 30896 30897SmoothScroll.defaults = { 30898 /** 30899 * Amount of time, in ms, the animated scrolling should take between locations. 30900 * @option 30901 * @type {number} 30902 * @default 500 30903 */ 30904 animationDuration: 500, 30905 30906 /** 30907 * Animation style to use when scrolling between locations. Can be `'swing'` or `'linear'`. 30908 * @option 30909 * @type {string} 30910 * @default 'linear' 30911 * @see {@link https://api.jquery.com/animate|Jquery animate} 30912 */ 30913 animationEasing: 'linear', 30914 30915 /** 30916 * Number of pixels to use as a marker for location changes. 30917 * @option 30918 * @type {number} 30919 * @default 50 30920 */ 30921 threshold: 50, 30922 30923 /** 30924 * Number of pixels to offset the scroll of the page on item click if using a sticky nav bar. 30925 * @option 30926 * @type {number} 30927 * @default 0 30928 */ 30929 offset: 0 30930}; 30931 30932 30933/***/ }), 30934 30935/***/ 16: 30936/*!*************************************************************!*\ 30937 !*** multi ./js/entries/plugins/foundation.smoothScroll.js ***! 30938 \*************************************************************/ 30939/*! no static exports found */ 30940/***/ (function(module, exports, __webpack_require__) { 30941 30942module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.smoothScroll.js */"./js/entries/plugins/foundation.smoothScroll.js"); 30943 30944 30945/***/ }), 30946 30947/***/ "jquery": 30948/*!********************************************************************************************!*\ 30949 !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***! 30950 \********************************************************************************************/ 30951/*! no static exports found */ 30952/***/ (function(module, exports) { 30953 30954module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__; 30955 30956/***/ }) 30957 30958/******/ }); 30959}); 30960//# sourceMappingURL=foundation.smoothScroll.js.map 30961(function webpackUniversalModuleDefinition(root, factory) { 30962 if(typeof exports === 'object' && typeof module === 'object') 30963 module.exports = factory(require("./foundation.core"), require("./foundation.util.mediaQuery"), require("./foundation.util.motion"), require("jquery")); 30964 else if(typeof define === 'function' && define.amd) 30965 define(["./foundation.core", "./foundation.util.mediaQuery", "./foundation.util.motion", "jquery"], factory); 30966 else if(typeof exports === 'object') 30967 exports["foundation.sticky"] = factory(require("./foundation.core"), require("./foundation.util.mediaQuery"), require("./foundation.util.motion"), require("jquery")); 30968 else 30969 root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.sticky"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.mediaQuery"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.motion"], root["jQuery"]); 30970})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE__foundation_util_mediaQuery__, __WEBPACK_EXTERNAL_MODULE__foundation_util_motion__, __WEBPACK_EXTERNAL_MODULE_jquery__) { 30971return /******/ (function(modules) { // webpackBootstrap 30972/******/ // The module cache 30973/******/ var installedModules = {}; 30974/******/ 30975/******/ // The require function 30976/******/ function __webpack_require__(moduleId) { 30977/******/ 30978/******/ // Check if module is in cache 30979/******/ if(installedModules[moduleId]) { 30980/******/ return installedModules[moduleId].exports; 30981/******/ } 30982/******/ // Create a new module (and put it into the cache) 30983/******/ var module = installedModules[moduleId] = { 30984/******/ i: moduleId, 30985/******/ l: false, 30986/******/ exports: {} 30987/******/ }; 30988/******/ 30989/******/ // Execute the module function 30990/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 30991/******/ 30992/******/ // Flag the module as loaded
vendor: 4,187 bytes, lines 30993-31074
30993/******/ module.l = true; 30994/******/ 30995/******/ // Return the exports of the module 30996/******/ return module.exports; 30997/******/ } 30998/******/ 30999/******/ 31000/******/ // expose the modules object (__webpack_modules__) 31001/******/ __webpack_require__.m = modules; 31002/******/ 31003/******/ // expose the module cache 31004/******/ __webpack_require__.c = installedModules; 31005/******/ 31006/******/ // define getter function for harmony exports 31007/******/ __webpack_require__.d = function(exports, name, getter) { 31008/******/ if(!__webpack_require__.o(exports, name)) { 31009/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); 31010/******/ } 31011/******/ }; 31012/******/ 31013/******/ // define __esModule on exports 31014/******/ __webpack_require__.r = function(exports) { 31015/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 31016/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 31017/******/ } 31018/******/ Object.defineProperty(exports, '__esModule', { value: true }); 31019/******/ }; 31020/******/ 31021/******/ // create a fake namespace object 31022/******/ // mode & 1: value is a module id, require it 31023/******/ // mode & 2: merge all properties of value into the ns 31024/******/ // mode & 4: return value when already ns object 31025/******/ // mode & 8|1: behave like require 31026/******/ __webpack_require__.t = function(value, mode) { 31027/******/ if(mode & 1) value = __webpack_require__(value); 31028/******/ if(mode & 8) return value; 31029/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; 31030/******/ var ns = Object.create(null); 31031/******/ __webpack_require__.r(ns); 31032/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); 31033/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); 31034/******/ return ns; 31035/******/ }; 31036/******/ 31037/******/ // getDefaultExport function for compatibility with non-harmony modules 31038/******/ __webpack_require__.n = function(module) { 31039/******/ var getter = module && module.__esModule ? 31040/******/ function getDefault() { return module['default']; } : 31041/******/ function getModuleExports() { return module; }; 31042/******/ __webpack_require__.d(getter, 'a', getter); 31043/******/ return getter; 31044/******/ }; 31045/******/ 31046/******/ // Object.prototype.hasOwnProperty.call 31047/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; 31048/******/ 31049/******/ // __webpack_public_path__ 31050/******/ __webpack_require__.p = ""; 31051/******/ 31052/******/ 31053/******/ // Load entry module and return exports 31054/******/ return __webpack_require__(__webpack_require__.s = 17); 31055/******/ }) 31056/************************************************************************/ 31057/******/ ({ 31058 31059/***/ "./foundation.core": 31060/*!****************************************************************************************************************************************************************!*\ 31061 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***! 31062 \****************************************************************************************************************************************************************/ 31063/*! no static exports found */ 31064/***/ (function(module, exports) { 31065 31066module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__; 31067 31068/***/ }), 31069 31070/***/ "./foundation.util.mediaQuery": 31071/*!************************************************************************************************************************************************************************************************************!*\ 31072 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.mediaQuery"],"amd":"./foundation.util.mediaQuery","commonjs":"./foundation.util.mediaQuery","commonjs2":"./foundation.util.mediaQuery"} ***! 31073 \************************************************************************************************************************************************************************************************************/ 31074/*! no static exports found */
31075/***/ (function(module, exports) { 31076 31077module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_mediaQuery__; 31078 31079/***/ }), 31080 31081/***/ "./foundation.util.motion": 31082/*!********************************************************************************************************************************************************************************************!*\ 31083 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.motion"],"amd":"./foundation.util.motion","commonjs":"./foundation.util.motion","commonjs2":"./foundation.util.motion"} ***! 31084 \********************************************************************************************************************************************************************************************/ 31085/*! no static exports found */ 31086/***/ (function(module, exports) { 31087 31088module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_motion__; 31089 31090/***/ }), 31091
31092/***/ "./js/entries/plugins/foundation.sticky.js": 31093/*!*************************************************!*\ 31094 !*** ./js/entries/plugins/foundation.sticky.js ***! 31095 \*************************************************/ 31096/*! exports provided: Foundation, Sticky */ 31097/***/ (function(module, __webpack_exports__, __webpack_require__) { 31098 31099"use strict"; 31100__webpack_require__.r(__webpack_exports__); 31101/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core"); 31102/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__); 31103/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; }); 31104 31105/* harmony import */ var _foundation_sticky__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.sticky */ "./js/foundation.sticky.js"); 31106/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Sticky", function() { return _foundation_sticky__WEBPACK_IMPORTED_MODULE_1__["Sticky"]; }); 31107 31108 31109 31110_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].plugin(_foundation_sticky__WEBPACK_IMPORTED_MODULE_1__["Sticky"], 'Sticky'); 31111 31112 31113/***/ }), 31114
31115/***/ "./js/foundation.sticky.js": 31116/*!*********************************!*\ 31117 !*** ./js/foundation.sticky.js ***! 31118 \*********************************/ 31119/*! exports provided: Sticky */ 31120/***/ (function(module, __webpack_exports__, __webpack_require__) { 31121 31122"use strict"; 31123__webpack_require__.r(__webpack_exports__); 31124/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Sticky", function() { return Sticky; }); 31125/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery"); 31126/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__); 31127/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.plugin */ "./foundation.core"); 31128/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__); 31129/* harmony import */ var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.util.mediaQuery */ "./foundation.util.mediaQuery"); 31130/* harmony import */ var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_2__); 31131/* harmony import */ var _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./foundation.util.triggers */ "./js/foundation.util.triggers.js"); 31132 31133 31134function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } 31135 31136function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 31137 31138function _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); } } 31139 31140function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } 31141 31142function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } 31143 31144function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } 31145 31146function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } 31147 31148function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } 31149 31150function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } 31151 31152 31153 31154 31155 31156 31157/** 31158 * Sticky module. 31159 * @module foundation.sticky 31160 * @requires foundation.util.triggers 31161 * @requires foundation.util.mediaQuery 31162 */ 31163 31164var Sticky = 31165/*#__PURE__*/ 31166function (_Plugin) { 31167 _inherits(Sticky, _Plugin); 31168 31169 function Sticky() { 31170 _classCallCheck(this, Sticky); 31171 31172 return _possibleConstructorReturn(this, _getPrototypeOf(Sticky).apply(this, arguments)); 31173 } 31174 31175 _createClass(Sticky, [{ 31176 key: "_setup", 31177 31178 /** 31179 * Creates a new instance of a sticky thing. 31180 * @class 31181 * @name Sticky 31182 * @param {jQuery} element - jQuery object to make sticky. 31183 * @param {Object} options - options object passed when creating the element programmatically. 31184 */ 31185 value: function _setup(element, options) { 31186 this.$element = element; 31187 this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, Sticky.defaults, this.$element.data(), options); 31188 this.className = 'Sticky'; // ie9 back compat 31189 // Triggers init is idempotent, just need to make sure it is initialized 31190 31191 _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_3__["Triggers"].init(jquery__WEBPACK_IMPORTED_MODULE_0___default.a); 31192 31193 this._init(); 31194 } 31195 /** 31196 * Initializes the sticky element by adding classes, getting/setting dimensions, breakpoints and attributes 31197 * @function 31198 * @private 31199 */ 31200 31201 }, { 31202 key: "_init", 31203 value: function _init() { 31204 _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_2__["MediaQuery"]._init(); 31205 31206 var $parent = this.$element.parent('[data-sticky-container]'), 31207 id = this.$element[0].id || Object(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["GetYoDigits"])(6, 'sticky'), 31208 _this = this; 31209 31210 if ($parent.length) { 31211 this.$container = $parent; 31212 } else { 31213 this.wasWrapped = true; 31214 this.$element.wrap(this.options.container); 31215 this.$container = this.$element.parent(); 31216 } 31217 31218 this.$container.addClass(this.options.containerClass); 31219 this.$element.addClass(this.options.stickyClass).attr({ 31220 'data-resize': id, 31221 'data-mutate': id 31222 }); 31223 31224 if (this.options.anchor !== '') { 31225 jquery__WEBPACK_IMPORTED_MODULE_0___default()('#' + _this.options.anchor).attr({ 31226 'data-mutate': id 31227 }); 31228 } 31229 31230 this.scrollCount = this.options.checkEvery; 31231 this.isStuck = false;
vendor: 4,372 bytes, lines 31232-31374
31232 this.onLoadListener = Object(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["onLoad"])(jquery__WEBPACK_IMPORTED_MODULE_0___default()(window), function () { 31233 //We calculate the container height to have correct values for anchor points offset calculation. 31234 _this.containerHeight = _this.$element.css("display") == "none" ? 0 : _this.$element[0].getBoundingClientRect().height; 31235 31236 _this.$container.css('height', _this.containerHeight); 31237 31238 _this.elemHeight = _this.containerHeight; 31239 31240 if (_this.options.anchor !== '') { 31241 _this.$anchor = jquery__WEBPACK_IMPORTED_MODULE_0___default()('#' + _this.options.anchor); 31242 } else { 31243 _this._parsePoints(); 31244 } 31245 31246 _this._setSizes(function () { 31247 var scroll = window.pageYOffset; 31248 31249 _this._calc(false, scroll); //Unstick the element will ensure that proper classes are set. 31250 31251 31252 if (!_this.isStuck) { 31253 _this._removeSticky(scroll >= _this.topPoint ? false : true); 31254 } 31255 }); 31256 31257 _this._events(id.split('-').reverse().join('-')); 31258 }); 31259 } 31260 /** 31261 * If using multiple elements as anchors, calculates the top and bottom pixel values the sticky thing should stick and unstick on. 31262 * @function 31263 * @private 31264 */ 31265 31266 }, { 31267 key: "_parsePoints", 31268 value: function _parsePoints() { 31269 var top = this.options.topAnchor == "" ? 1 : this.options.topAnchor, 31270 btm = this.options.btmAnchor == "" ? document.documentElement.scrollHeight : this.options.btmAnchor, 31271 pts = [top, btm], 31272 breaks = {}; 31273 31274 for (var i = 0, len = pts.length; i < len && pts[i]; i++) { 31275 var pt; 31276 31277 if (typeof pts[i] === 'number') { 31278 pt = pts[i]; 31279 } else { 31280 var place = pts[i].split(':'), 31281 anchor = jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(place[0])); 31282 pt = anchor.offset().top; 31283 31284 if (place[1] && place[1].toLowerCase() === 'bottom') { 31285 pt += anchor[0].getBoundingClientRect().height; 31286 } 31287 } 31288 31289 breaks[i] = pt; 31290 } 31291 31292 this.points = breaks; 31293 return; 31294 } 31295 /** 31296 * Adds event handlers for the scrolling element. 31297 * @private 31298 * @param {String} id - pseudo-random id for unique scroll event listener. 31299 */ 31300 31301 }, { 31302 key: "_events", 31303 value: function _events(id) { 31304 var _this = this, 31305 scrollListener = this.scrollListener = "scroll.zf.".concat(id); 31306 31307 if (this.isOn) { 31308 return; 31309 } 31310 31311 if (this.canStick) { 31312 this.isOn = true; 31313 jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(scrollListener).on(scrollListener, function (e) { 31314 if (_this.scrollCount === 0) { 31315 _this.scrollCount = _this.options.checkEvery; 31316 31317 _this._setSizes(function () { 31318 _this._calc(false, window.pageYOffset); 31319 }); 31320 } else { 31321 _this.scrollCount--; 31322 31323 _this._calc(false, window.pageYOffset); 31324 } 31325 }); 31326 } 31327 31328 this.$element.off('resizeme.zf.trigger').on('resizeme.zf.trigger', function (e, el) { 31329 _this._eventsHandler(id); 31330 }); 31331 this.$element.on('mutateme.zf.trigger', function (e, el) { 31332 _this._eventsHandler(id); 31333 }); 31334 31335 if (this.$anchor) { 31336 this.$anchor.on('mutateme.zf.trigger', function (e, el) { 31337 _this._eventsHandler(id); 31338 }); 31339 } 31340 } 31341 /** 31342 * Handler for events. 31343 * @private 31344 * @param {String} id - pseudo-random id for unique scroll event listener. 31345 */ 31346 31347 }, { 31348 key: "_eventsHandler", 31349 value: function _eventsHandler(id) { 31350 var _this = this, 31351 scrollListener = this.scrollListener = "scroll.zf.".concat(id); 31352 31353 _this._setSizes(function () { 31354 _this._calc(false); 31355 31356 if (_this.canStick) { 31357 if (!_this.isOn) { 31358 _this._events(id); 31359 } 31360 } else if (_this.isOn) { 31361 _this._pauseListeners(scrollListener); 31362 } 31363 }); 31364 } 31365 /** 31366 * Removes event handlers for scroll and change events on anchor. 31367 * @fires Sticky#pause 31368 * @param {String} scrollListener - unique, namespaced scroll listener attached to `window` 31369 */ 31370 31371 }, { 31372 key: "_pauseListeners", 31373 value: function _pauseListeners(scrollListener) { 31374 this.isOn = false;
vendor: 5,605 bytes, lines 31375-31540
31375 jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(scrollListener); 31376 /** 31377 * Fires when the plugin is paused due to resize event shrinking the view. 31378 * @event Sticky#pause 31379 * @private 31380 */ 31381 31382 this.$element.trigger('pause.zf.sticky'); 31383 } 31384 /** 31385 * Called on every `scroll` event and on `_init` 31386 * fires functions based on booleans and cached values 31387 * @param {Boolean} checkSizes - true if plugin should recalculate sizes and breakpoints. 31388 * @param {Number} scroll - current scroll position passed from scroll event cb function. If not passed, defaults to `window.pageYOffset`. 31389 */ 31390 31391 }, { 31392 key: "_calc", 31393 value: function _calc(checkSizes, scroll) { 31394 if (checkSizes) { 31395 this._setSizes(); 31396 } 31397 31398 if (!this.canStick) { 31399 if (this.isStuck) { 31400 this._removeSticky(true); 31401 } 31402 31403 return false; 31404 } 31405 31406 if (!scroll) { 31407 scroll = window.pageYOffset; 31408 } 31409 31410 if (scroll >= this.topPoint) { 31411 if (scroll <= this.bottomPoint) { 31412 if (!this.isStuck) { 31413 this._setSticky(); 31414 } 31415 } else { 31416 if (this.isStuck) { 31417 this._removeSticky(false); 31418 } 31419 } 31420 } else { 31421 if (this.isStuck) { 31422 this._removeSticky(true); 31423 } 31424 } 31425 } 31426 /** 31427 * Causes the $element to become stuck. 31428 * Adds `position: fixed;`, and helper classes. 31429 * @fires Sticky#stuckto 31430 * @function 31431 * @private 31432 */ 31433 31434 }, { 31435 key: "_setSticky", 31436 value: function _setSticky() { 31437 var _this = this, 31438 stickTo = this.options.stickTo, 31439 mrgn = stickTo === 'top' ? 'marginTop' : 'marginBottom', 31440 notStuckTo = stickTo === 'top' ? 'bottom' : 'top', 31441 css = {}; 31442 31443 css[mrgn] = "".concat(this.options[mrgn], "em"); 31444 css[stickTo] = 0; 31445 css[notStuckTo] = 'auto'; 31446 this.isStuck = true; 31447 this.$element.removeClass("is-anchored is-at-".concat(notStuckTo)).addClass("is-stuck is-at-".concat(stickTo)).css(css) 31448 /** 31449 * Fires when the $element has become `position: fixed;` 31450 * Namespaced to `top` or `bottom`, e.g. `sticky.zf.stuckto:top` 31451 * @event Sticky#stuckto 31452 */ 31453 .trigger("sticky.zf.stuckto:".concat(stickTo)); 31454 this.$element.on("transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd", function () { 31455 _this._setSizes(); 31456 }); 31457 } 31458 /** 31459 * Causes the $element to become unstuck. 31460 * Removes `position: fixed;`, and helper classes. 31461 * Adds other helper classes. 31462 * @param {Boolean} isTop - tells the function if the $element should anchor to the top or bottom of its $anchor element. 31463 * @fires Sticky#unstuckfrom 31464 * @private 31465 */ 31466 31467 }, { 31468 key: "_removeSticky", 31469 value: function _removeSticky(isTop) { 31470 var stickTo = this.options.stickTo, 31471 stickToTop = stickTo === 'top', 31472 css = {}, 31473 anchorPt = (this.points ? this.points[1] - this.points[0] : this.anchorHeight) - this.elemHeight, 31474 mrgn = stickToTop ? 'marginTop' : 'marginBottom', 31475 topOrBottom = isTop ? 'top' : 'bottom'; 31476 css[mrgn] = 0; 31477 css['bottom'] = 'auto'; 31478 31479 if (isTop) { 31480 css['top'] = 0; 31481 } else { 31482 css['top'] = anchorPt; 31483 } 31484 31485 this.isStuck = false; 31486 this.$element.removeClass("is-stuck is-at-".concat(stickTo)).addClass("is-anchored is-at-".concat(topOrBottom)).css(css) 31487 /** 31488 * Fires when the $element has become anchored. 31489 * Namespaced to `top` or `bottom`, e.g. `sticky.zf.unstuckfrom:bottom` 31490 * @event Sticky#unstuckfrom 31491 */ 31492 .trigger("sticky.zf.unstuckfrom:".concat(topOrBottom)); 31493 } 31494 /** 31495 * Sets the $element and $container sizes for plugin. 31496 * Calls `_setBreakPoints`. 31497 * @param {Function} cb - optional callback function to fire on completion of `_setBreakPoints`. 31498 * @private 31499 */ 31500 31501 }, { 31502 key: "_setSizes", 31503 value: function _setSizes(cb) { 31504 this.canStick = _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_2__["MediaQuery"].is(this.options.stickyOn); 31505 31506 if (!this.canStick) { 31507 if (cb && typeof cb === 'function') { 31508 cb(); 31509 } 31510 } 31511 31512 var _this = this, 31513 newElemWidth = this.$container[0].getBoundingClientRect().width, 31514 comp = window.getComputedStyle(this.$container[0]), 31515 pdngl = parseInt(comp['padding-left'], 10), 31516 pdngr = parseInt(comp['padding-right'], 10); 31517 31518 if (this.$anchor && this.$anchor.length) { 31519 this.anchorHeight = this.$anchor[0].getBoundingClientRect().height; 31520 } else { 31521 this._parsePoints(); 31522 } 31523 31524 this.$element.css({ 31525 'max-width': "".concat(newElemWidth - pdngl - pdngr, "px") 31526 }); // Recalculate the height only if it is "dynamic" 31527 31528 if (this.options.dynamicHeight || !this.containerHeight) { 31529 // Get the sticked element height and apply it to the container to "hold the place" 31530 var newContainerHeight = this.$element[0].getBoundingClientRect().height || this.containerHeight; 31531 newContainerHeight = this.$element.css("display") == "none" ? 0 : newContainerHeight; 31532 this.$container.css('height', newContainerHeight); 31533 this.containerHeight = newContainerHeight; 31534 } 31535 31536 this.elemHeight = this.containerHeight; 31537 31538 if (!this.isStuck) { 31539 if (this.$element.hasClass('is-at-bottom')) { 31540 var anchorPt = (this.points ? this.points[1] - this.$container.offset().top : this.anchorHeight) - this.elemHeight;
vendor: 18,397 bytes, lines 31541-32056
31541 this.$element.css('top', anchorPt); 31542 } 31543 } 31544 31545 this._setBreakPoints(this.containerHeight, function () { 31546 if (cb && typeof cb === 'function') { 31547 cb(); 31548 } 31549 }); 31550 } 31551 /** 31552 * Sets the upper and lower breakpoints for the element to become sticky/unsticky. 31553 * @param {Number} elemHeight - px value for sticky.$element height, calculated by `_setSizes`. 31554 * @param {Function} cb - optional callback function to be called on completion. 31555 * @private 31556 */ 31557 31558 }, { 31559 key: "_setBreakPoints", 31560 value: function _setBreakPoints(elemHeight, cb) { 31561 if (!this.canStick) { 31562 if (cb && typeof cb === 'function') { 31563 cb(); 31564 } else { 31565 return false; 31566 } 31567 } 31568 31569 var mTop = emCalc(this.options.marginTop), 31570 mBtm = emCalc(this.options.marginBottom), 31571 topPoint = this.points ? this.points[0] : this.$anchor.offset().top, 31572 bottomPoint = this.points ? this.points[1] : topPoint + this.anchorHeight, 31573 // topPoint = this.$anchor.offset().top || this.points[0], 31574 // bottomPoint = topPoint + this.anchorHeight || this.points[1], 31575 winHeight = window.innerHeight; 31576 31577 if (this.options.stickTo === 'top') { 31578 topPoint -= mTop; 31579 bottomPoint -= elemHeight + mTop; 31580 } else if (this.options.stickTo === 'bottom') { 31581 topPoint -= winHeight - (elemHeight + mBtm); 31582 bottomPoint -= winHeight - mBtm; 31583 } else {//this would be the stickTo: both option... tricky 31584 } 31585 31586 this.topPoint = topPoint; 31587 this.bottomPoint = bottomPoint; 31588 31589 if (cb && typeof cb === 'function') { 31590 cb(); 31591 } 31592 } 31593 /** 31594 * Destroys the current sticky element. 31595 * Resets the element to the top position first. 31596 * Removes event listeners, JS-added css properties and classes, and unwraps the $element if the JS added the $container. 31597 * @function 31598 */ 31599 31600 }, { 31601 key: "_destroy", 31602 value: function _destroy() { 31603 this._removeSticky(true); 31604 31605 this.$element.removeClass("".concat(this.options.stickyClass, " is-anchored is-at-top")).css({ 31606 height: '', 31607 top: '', 31608 bottom: '', 31609 'max-width': '' 31610 }).off('resizeme.zf.trigger').off('mutateme.zf.trigger'); 31611 31612 if (this.$anchor && this.$anchor.length) { 31613 this.$anchor.off('change.zf.sticky'); 31614 } 31615 31616 if (this.scrollListener) jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(this.scrollListener); 31617 if (this.onLoadListener) jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(this.onLoadListener); 31618 31619 if (this.wasWrapped) { 31620 this.$element.unwrap(); 31621 } else { 31622 this.$container.removeClass(this.options.containerClass).css({ 31623 height: '' 31624 }); 31625 } 31626 } 31627 }]); 31628 31629 return Sticky; 31630}(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_1__["Plugin"]); 31631 31632Sticky.defaults = { 31633 /** 31634 * Customizable container template. Add your own classes for styling and sizing. 31635 * @option 31636 * @type {string} 31637 * @default '<div data-sticky-container></div>' 31638 */ 31639 container: '<div data-sticky-container></div>', 31640 31641 /** 31642 * Location in the view the element sticks to. Can be `'top'` or `'bottom'`. 31643 * @option 31644 * @type {string} 31645 * @default 'top' 31646 */ 31647 stickTo: 'top', 31648 31649 /** 31650 * If anchored to a single element, the id of that element. 31651 * @option 31652 * @type {string} 31653 * @default '' 31654 */ 31655 anchor: '', 31656 31657 /** 31658 * If using more than one element as anchor points, the id of the top anchor. 31659 * @option 31660 * @type {string} 31661 * @default '' 31662 */ 31663 topAnchor: '', 31664 31665 /** 31666 * If using more than one element as anchor points, the id of the bottom anchor. 31667 * @option 31668 * @type {string} 31669 * @default '' 31670 */ 31671 btmAnchor: '', 31672 31673 /** 31674 * Margin, in `em`'s to apply to the top of the element when it becomes sticky. 31675 * @option 31676 * @type {number} 31677 * @default 1 31678 */ 31679 marginTop: 1, 31680 31681 /** 31682 * Margin, in `em`'s to apply to the bottom of the element when it becomes sticky. 31683 * @option 31684 * @type {number} 31685 * @default 1 31686 */ 31687 marginBottom: 1, 31688 31689 /** 31690 * Breakpoint string that is the minimum screen size an element should become sticky. 31691 * @option 31692 * @type {string} 31693 * @default 'medium' 31694 */ 31695 stickyOn: 'medium', 31696 31697 /** 31698 * Class applied to sticky element, and removed on destruction. Foundation defaults to `sticky`. 31699 * @option 31700 * @type {string} 31701 * @default 'sticky' 31702 */ 31703 stickyClass: 'sticky', 31704 31705 /** 31706 * Class applied to sticky container. Foundation defaults to `sticky-container`. 31707 * @option 31708 * @type {string} 31709 * @default 'sticky-container' 31710 */ 31711 containerClass: 'sticky-container', 31712 31713 /** 31714 * If true (by default), keep the sticky container the same height as the element. Otherwise, the container height is set once and does not change. 31715 * @option 31716 * @type {boolean} 31717 * @default true 31718 */ 31719 dynamicHeight: true, 31720 31721 /** 31722 * Number of scroll events between the plugin's recalculating sticky points. Setting it to `0` will cause it to recalc every scroll event, setting it to `-1` will prevent recalc on scroll. 31723 * @option 31724 * @type {number} 31725 * @default -1 31726 */ 31727 checkEvery: -1 31728}; 31729/** 31730 * Helper function to calculate em values 31731 * @param Number {em} - number of em's to calculate into pixels 31732 */ 31733 31734function emCalc(em) { 31735 return parseInt(window.getComputedStyle(document.body, null).fontSize, 10) * em; 31736} 31737 31738 31739 31740/***/ }), 31741 31742/***/ "./js/foundation.util.triggers.js": 31743/*!****************************************!*\ 31744 !*** ./js/foundation.util.triggers.js ***! 31745 \****************************************/ 31746/*! exports provided: Triggers */ 31747/***/ (function(module, __webpack_exports__, __webpack_require__) { 31748 31749"use strict"; 31750__webpack_require__.r(__webpack_exports__); 31751/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Triggers", function() { return Triggers; }); 31752/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery"); 31753/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__); 31754/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.utils */ "./foundation.core"); 31755/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__); 31756/* harmony import */ var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.util.motion */ "./foundation.util.motion"); 31757/* harmony import */ var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__); 31758 31759 31760function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } 31761 31762 31763 31764 31765 31766var MutationObserver = function () { 31767 var prefixes = ['WebKit', 'Moz', 'O', 'Ms', '']; 31768 31769 for (var i = 0; i < prefixes.length; i++) { 31770 if ("".concat(prefixes[i], "MutationObserver") in window) { 31771 return window["".concat(prefixes[i], "MutationObserver")]; 31772 } 31773 } 31774 31775 return false; 31776}(); 31777 31778var triggers = function triggers(el, type) { 31779 el.data(type).split(' ').forEach(function (id) { 31780 jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(id))[type === 'close' ? 'trigger' : 'triggerHandler']("".concat(type, ".zf.trigger"), [el]); 31781 }); 31782}; 31783 31784var Triggers = { 31785 Listeners: { 31786 Basic: {}, 31787 Global: {} 31788 }, 31789 Initializers: {} 31790}; 31791Triggers.Listeners.Basic = { 31792 openListener: function openListener() { 31793 triggers(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'open'); 31794 }, 31795 closeListener: function closeListener() { 31796 var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('close'); 31797 31798 if (id) { 31799 triggers(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'close'); 31800 } else { 31801 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger('close.zf.trigger'); 31802 } 31803 }, 31804 toggleListener: function toggleListener() { 31805 var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('toggle'); 31806 31807 if (id) { 31808 triggers(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'toggle'); 31809 } else { 31810 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger('toggle.zf.trigger'); 31811 } 31812 }, 31813 closeableListener: function closeableListener(e) { 31814 var animation = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('closable'); // Only close the first closable element. See https://git.io/zf-7833 31815 31816 e.stopPropagation(); 31817 31818 if (animation !== '') { 31819 _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__["Motion"].animateOut(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), animation, function () { 31820 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger('closed.zf'); 31821 }); 31822 } else { 31823 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).fadeOut().trigger('closed.zf'); 31824 } 31825 }, 31826 toggleFocusListener: function toggleFocusListener() { 31827 var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('toggle-focus'); 31828 jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(id)).triggerHandler('toggle.zf.trigger', [jquery__WEBPACK_IMPORTED_MODULE_0___default()(this)]); 31829 } 31830}; // Elements with [data-open] will reveal a plugin that supports it when clicked. 31831 31832Triggers.Initializers.addOpenListener = function ($elem) { 31833 $elem.off('click.zf.trigger', Triggers.Listeners.Basic.openListener); 31834 $elem.on('click.zf.trigger', '[data-open]', Triggers.Listeners.Basic.openListener); 31835}; // Elements with [data-close] will close a plugin that supports it when clicked. 31836// If used without a value on [data-close], the event will bubble, allowing it to close a parent component. 31837 31838 31839Triggers.Initializers.addCloseListener = function ($elem) { 31840 $elem.off('click.zf.trigger', Triggers.Listeners.Basic.closeListener); 31841 $elem.on('click.zf.trigger', '[data-close]', Triggers.Listeners.Basic.closeListener); 31842}; // Elements with [data-toggle] will toggle a plugin that supports it when clicked. 31843 31844 31845Triggers.Initializers.addToggleListener = function ($elem) { 31846 $elem.off('click.zf.trigger', Triggers.Listeners.Basic.toggleListener); 31847 $elem.on('click.zf.trigger', '[data-toggle]', Triggers.Listeners.Basic.toggleListener); 31848}; // Elements with [data-closable] will respond to close.zf.trigger events. 31849 31850 31851Triggers.Initializers.addCloseableListener = function ($elem) { 31852 $elem.off('close.zf.trigger', Triggers.Listeners.Basic.closeableListener); 31853 $elem.on('close.zf.trigger', '[data-closeable], [data-closable]', Triggers.Listeners.Basic.closeableListener); 31854}; // Elements with [data-toggle-focus] will respond to coming in and out of focus 31855 31856 31857Triggers.Initializers.addToggleFocusListener = function ($elem) { 31858 $elem.off('focus.zf.trigger blur.zf.trigger', Triggers.Listeners.Basic.toggleFocusListener); 31859 $elem.on('focus.zf.trigger blur.zf.trigger', '[data-toggle-focus]', Triggers.Listeners.Basic.toggleFocusListener); 31860}; // More Global/complex listeners and triggers 31861 31862 31863Triggers.Listeners.Global = { 31864 resizeListener: function resizeListener($nodes) { 31865 if (!MutationObserver) { 31866 //fallback for IE 9 31867 $nodes.each(function () { 31868 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).triggerHandler('resizeme.zf.trigger'); 31869 }); 31870 } //trigger all listening elements and signal a resize event 31871 31872 31873 $nodes.attr('data-events', "resize"); 31874 }, 31875 scrollListener: function scrollListener($nodes) { 31876 if (!MutationObserver) { 31877 //fallback for IE 9 31878 $nodes.each(function () { 31879 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).triggerHandler('scrollme.zf.trigger'); 31880 }); 31881 } //trigger all listening elements and signal a scroll event 31882 31883 31884 $nodes.attr('data-events', "scroll"); 31885 }, 31886 closeMeListener: function closeMeListener(e, pluginId) { 31887 var plugin = e.namespace.split('.')[0]; 31888 var plugins = jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-".concat(plugin, "]")).not("[data-yeti-box=\"".concat(pluginId, "\"]")); 31889 plugins.each(function () { 31890 var _this = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this); 31891 31892 _this.triggerHandler('close.zf.trigger', [_this]); 31893 }); 31894 } // Global, parses whole document. 31895 31896}; 31897 31898Triggers.Initializers.addClosemeListener = function (pluginName) { 31899 var yetiBoxes = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-yeti-box]'), 31900 plugNames = ['dropdown', 'tooltip', 'reveal']; 31901 31902 if (pluginName) { 31903 if (typeof pluginName === 'string') { 31904 plugNames.push(pluginName); 31905 } else if (_typeof(pluginName) === 'object' && typeof pluginName[0] === 'string') { 31906 plugNames = plugNames.concat(pluginName); 31907 } else { 31908 console.error('Plugin names must be strings'); 31909 } 31910 } 31911 31912 if (yetiBoxes.length) { 31913 var listeners = plugNames.map(function (name) { 31914 return "closeme.zf.".concat(name); 31915 }).join(' '); 31916 jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(listeners).on(listeners, Triggers.Listeners.Global.closeMeListener); 31917 } 31918}; 31919 31920function debounceGlobalListener(debounce, trigger, listener) { 31921 var timer, 31922 args = Array.prototype.slice.call(arguments, 3); 31923 jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(trigger).on(trigger, function (e) { 31924 if (timer) { 31925 clearTimeout(timer); 31926 } 31927 31928 timer = setTimeout(function () { 31929 listener.apply(null, args); 31930 }, debounce || 10); //default time to emit scroll event 31931 }); 31932} 31933 31934Triggers.Initializers.addResizeListener = function (debounce) { 31935 var $nodes = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-resize]'); 31936 31937 if ($nodes.length) { 31938 debounceGlobalListener(debounce, 'resize.zf.trigger', Triggers.Listeners.Global.resizeListener, $nodes); 31939 } 31940}; 31941 31942Triggers.Initializers.addScrollListener = function (debounce) { 31943 var $nodes = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-scroll]'); 31944 31945 if ($nodes.length) { 31946 debounceGlobalListener(debounce, 'scroll.zf.trigger', Triggers.Listeners.Global.scrollListener, $nodes); 31947 } 31948}; 31949 31950Triggers.Initializers.addMutationEventsListener = function ($elem) { 31951 if (!MutationObserver) { 31952 return false; 31953 } 31954 31955 var $nodes = $elem.find('[data-resize], [data-scroll], [data-mutate]'); //element callback 31956 31957 var listeningElementsMutation = function listeningElementsMutation(mutationRecordsList) { 31958 var $target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(mutationRecordsList[0].target); //trigger the event handler for the element depending on type 31959 31960 switch (mutationRecordsList[0].type) { 31961 case "attributes": 31962 if ($target.attr("data-events") === "scroll" && mutationRecordsList[0].attributeName === "data-events") { 31963 $target.triggerHandler('scrollme.zf.trigger', [$target, window.pageYOffset]); 31964 } 31965 31966 if ($target.attr("data-events") === "resize" && mutationRecordsList[0].attributeName === "data-events") { 31967 $target.triggerHandler('resizeme.zf.trigger', [$target]); 31968 } 31969 31970 if (mutationRecordsList[0].attributeName === "style") { 31971 $target.closest("[data-mutate]").attr("data-events", "mutate"); 31972 $target.closest("[data-mutate]").triggerHandler('mutateme.zf.trigger', [$target.closest("[data-mutate]")]); 31973 } 31974 31975 break; 31976 31977 case "childList": 31978 $target.closest("[data-mutate]").attr("data-events", "mutate"); 31979 $target.closest("[data-mutate]").triggerHandler('mutateme.zf.trigger', [$target.closest("[data-mutate]")]); 31980 break; 31981 31982 default: 31983 return false; 31984 //nothing 31985 } 31986 }; 31987 31988 if ($nodes.length) { 31989 //for each element that needs to listen for resizing, scrolling, or mutation add a single observer 31990 for (var i = 0; i <= $nodes.length - 1; i++) { 31991 var elementObserver = new MutationObserver(listeningElementsMutation); 31992 elementObserver.observe($nodes[i], { 31993 attributes: true, 31994 childList: true, 31995 characterData: false, 31996 subtree: true, 31997 attributeFilter: ["data-events", "style"] 31998 }); 31999 } 32000 } 32001}; 32002 32003Triggers.Initializers.addSimpleListeners = function () { 32004 var $document = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document); 32005 Triggers.Initializers.addOpenListener($document); 32006 Triggers.Initializers.addCloseListener($document); 32007 Triggers.Initializers.addToggleListener($document); 32008 Triggers.Initializers.addCloseableListener($document); 32009 Triggers.Initializers.addToggleFocusListener($document); 32010}; 32011 32012Triggers.Initializers.addGlobalListeners = function () { 32013 var $document = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document); 32014 Triggers.Initializers.addMutationEventsListener($document); 32015 Triggers.Initializers.addResizeListener(); 32016 Triggers.Initializers.addScrollListener(); 32017 Triggers.Initializers.addClosemeListener(); 32018}; 32019 32020Triggers.init = function ($, Foundation) { 32021 Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["onLoad"])($(window), function () { 32022 if ($.triggersInitialized !== true) { 32023 Triggers.Initializers.addSimpleListeners(); 32024 Triggers.Initializers.addGlobalListeners(); 32025 $.triggersInitialized = true; 32026 } 32027 }); 32028 32029 if (Foundation) { 32030 Foundation.Triggers = Triggers; // Legacy included to be backwards compatible for now. 32031 32032 Foundation.IHearYou = Triggers.Initializers.addGlobalListeners; 32033 } 32034}; 32035 32036 32037 32038/***/ }), 32039 32040/***/ 17: 32041/*!*******************************************************!*\ 32042 !*** multi ./js/entries/plugins/foundation.sticky.js ***! 32043 \*******************************************************/ 32044/*! no static exports found */ 32045/***/ (function(module, exports, __webpack_require__) { 32046 32047module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.sticky.js */"./js/entries/plugins/foundation.sticky.js"); 32048 32049 32050/***/ }), 32051 32052/***/ "jquery": 32053/*!********************************************************************************************!*\ 32054 !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***! 32055 \********************************************************************************************/ 32056/*! no static exports found */
vendor: 5,287 bytes, lines 32057-32168
32057/***/ (function(module, exports) { 32058 32059module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__; 32060 32061/***/ }) 32062 32063/******/ }); 32064}); 32065//# sourceMappingURL=foundation.sticky.js.map 32066(function webpackUniversalModuleDefinition(root, factory) { 32067 if(typeof exports === 'object' && typeof module === 'object') 32068 module.exports = factory(require("./foundation.core"), require("./foundation.util.motion"), require("jquery")); 32069 else if(typeof define === 'function' && define.amd) 32070 define(["./foundation.core", "./foundation.util.motion", "jquery"], factory); 32071 else if(typeof exports === 'object') 32072 exports["foundation.toggler"] = factory(require("./foundation.core"), require("./foundation.util.motion"), require("jquery")); 32073 else 32074 root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.toggler"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.motion"], root["jQuery"]); 32075})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE__foundation_util_motion__, __WEBPACK_EXTERNAL_MODULE_jquery__) { 32076return /******/ (function(modules) { // webpackBootstrap 32077/******/ // The module cache 32078/******/ var installedModules = {}; 32079/******/ 32080/******/ // The require function 32081/******/ function __webpack_require__(moduleId) { 32082/******/ 32083/******/ // Check if module is in cache 32084/******/ if(installedModules[moduleId]) { 32085/******/ return installedModules[moduleId].exports; 32086/******/ } 32087/******/ // Create a new module (and put it into the cache) 32088/******/ var module = installedModules[moduleId] = { 32089/******/ i: moduleId, 32090/******/ l: false, 32091/******/ exports: {} 32092/******/ }; 32093/******/ 32094/******/ // Execute the module function 32095/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 32096/******/ 32097/******/ // Flag the module as loaded 32098/******/ module.l = true; 32099/******/ 32100/******/ // Return the exports of the module 32101/******/ return module.exports; 32102/******/ } 32103/******/ 32104/******/ 32105/******/ // expose the modules object (__webpack_modules__) 32106/******/ __webpack_require__.m = modules; 32107/******/ 32108/******/ // expose the module cache 32109/******/ __webpack_require__.c = installedModules; 32110/******/ 32111/******/ // define getter function for harmony exports 32112/******/ __webpack_require__.d = function(exports, name, getter) { 32113/******/ if(!__webpack_require__.o(exports, name)) { 32114/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); 32115/******/ } 32116/******/ }; 32117/******/ 32118/******/ // define __esModule on exports 32119/******/ __webpack_require__.r = function(exports) { 32120/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 32121/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 32122/******/ } 32123/******/ Object.defineProperty(exports, '__esModule', { value: true }); 32124/******/ }; 32125/******/ 32126/******/ // create a fake namespace object 32127/******/ // mode & 1: value is a module id, require it 32128/******/ // mode & 2: merge all properties of value into the ns 32129/******/ // mode & 4: return value when already ns object 32130/******/ // mode & 8|1: behave like require 32131/******/ __webpack_require__.t = function(value, mode) { 32132/******/ if(mode & 1) value = __webpack_require__(value); 32133/******/ if(mode & 8) return value; 32134/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; 32135/******/ var ns = Object.create(null); 32136/******/ __webpack_require__.r(ns); 32137/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); 32138/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); 32139/******/ return ns; 32140/******/ }; 32141/******/ 32142/******/ // getDefaultExport function for compatibility with non-harmony modules 32143/******/ __webpack_require__.n = function(module) { 32144/******/ var getter = module && module.__esModule ? 32145/******/ function getDefault() { return module['default']; } : 32146/******/ function getModuleExports() { return module; }; 32147/******/ __webpack_require__.d(getter, 'a', getter); 32148/******/ return getter; 32149/******/ }; 32150/******/ 32151/******/ // Object.prototype.hasOwnProperty.call 32152/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; 32153/******/ 32154/******/ // __webpack_public_path__ 32155/******/ __webpack_require__.p = ""; 32156/******/ 32157/******/ 32158/******/ // Load entry module and return exports 32159/******/ return __webpack_require__(__webpack_require__.s = 19); 32160/******/ }) 32161/************************************************************************/ 32162/******/ ({ 32163 32164/***/ "./foundation.core": 32165/*!****************************************************************************************************************************************************************!*\ 32166 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***! 32167 \****************************************************************************************************************************************************************/ 32168/*! no static exports found */
32169/***/ (function(module, exports) { 32170 32171module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__; 32172 32173/***/ }), 32174 32175/***/ "./foundation.util.motion": 32176/*!********************************************************************************************************************************************************************************************!*\ 32177 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.motion"],"amd":"./foundation.util.motion","commonjs":"./foundation.util.motion","commonjs2":"./foundation.util.motion"} ***! 32178 \********************************************************************************************************************************************************************************************/ 32179/*! no static exports found */ 32180/***/ (function(module, exports) { 32181 32182module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_motion__; 32183 32184/***/ }), 32185
32186/***/ "./js/entries/plugins/foundation.toggler.js": 32187/*!**************************************************!*\ 32188 !*** ./js/entries/plugins/foundation.toggler.js ***! 32189 \**************************************************/ 32190/*! exports provided: Foundation, Toggler */ 32191/***/ (function(module, __webpack_exports__, __webpack_require__) { 32192 32193"use strict"; 32194__webpack_require__.r(__webpack_exports__); 32195/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core"); 32196/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__); 32197/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; }); 32198 32199/* harmony import */ var _foundation_toggler__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.toggler */ "./js/foundation.toggler.js"); 32200/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Toggler", function() { return _foundation_toggler__WEBPACK_IMPORTED_MODULE_1__["Toggler"]; }); 32201 32202 32203 32204_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].plugin(_foundation_toggler__WEBPACK_IMPORTED_MODULE_1__["Toggler"], 'Toggler'
vendor: 25 bytes, lines 32204-32209
32204); 32205 32206 32207/***/ }), 32208 32209/***/ "./
vendor: 5,134 bytes, lines 32209-32301
32209js/foundation.toggler.js": 32210/*!**********************************!*\ 32211 !*** ./js/foundation.toggler.js ***! 32212 \**********************************/ 32213/*! exports provided: Toggler */ 32214/***/ (function(module, __webpack_exports__, __webpack_require__) { 32215 32216"use strict"; 32217__webpack_require__.r(__webpack_exports__); 32218/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Toggler", function() { return Toggler; }); 32219/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery"); 32220/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__); 32221/* harmony import */ var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.util.motion */ "./foundation.util.motion"); 32222/* harmony import */ var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_motion__WEBPACK_IMPORTED_MODULE_1__); 32223/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.core.plugin */ "./foundation.core"); 32224/* harmony import */ var _foundation_core_plugin__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_2__); 32225/* harmony import */ var _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./foundation.util.triggers */ "./js/foundation.util.triggers.js"); 32226 32227 32228function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } 32229 32230function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 32231 32232function _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); } } 32233 32234function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } 32235 32236function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } 32237 32238function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } 32239 32240function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } 32241 32242function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } 32243 32244function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } 32245 32246 32247 32248 32249 32250 32251/** 32252 * Toggler module. 32253 * @module foundation.toggler 32254 * @requires foundation.util.motion 32255 * @requires foundation.util.triggers 32256 */ 32257 32258var Toggler = 32259/*#__PURE__*/ 32260function (_Plugin) { 32261 _inherits(Toggler, _Plugin); 32262 32263 function Toggler() { 32264 _classCallCheck(this, Toggler); 32265 32266 return _possibleConstructorReturn(this, _getPrototypeOf(Toggler).apply(this, arguments)); 32267 } 32268 32269 _createClass(Toggler, [{ 32270 key: "_setup", 32271 32272 /** 32273 * Creates a new instance of Toggler. 32274 * @class 32275 * @name Toggler 32276 * @fires Toggler#init 32277 * @param {Object} element - jQuery object to add the trigger to. 32278 * @param {Object} options - Overrides to the default plugin settings. 32279 */ 32280 value: function _setup(element, options) { 32281 this.$element = element; 32282 this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, Toggler.defaults, element.data(), options); 32283 this.className = ''; 32284 this.className = 'Toggler'; // ie9 back compat 32285 // Triggers init is idempotent, just need to make sure it is initialized 32286 32287 _foundation_util_triggers__WEBPACK_IMPORTED_MODULE_3__["Triggers"].init(jquery__WEBPACK_IMPORTED_MODULE_0___default.a); 32288 32289 this._init(); 32290 32291 this._events(); 32292 } 32293 /** 32294 * Initializes the Toggler plugin by parsing the toggle class from data-toggler, or animation classes from data-animate. 32295 * @function 32296 * @private 32297 */ 32298 32299 }, { 32300 key: "_init", 32301 value: function _init() {
vendor: 4,335 bytes, lines 32302-32424
32302 // Collect triggers to set ARIA attributes to 32303 var id = this.$element[0].id, 32304 $triggers = jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-open~=\"".concat(id, "\"], [data-close~=\"").concat(id, "\"], [data-toggle~=\"").concat(id, "\"]")); 32305 var input; // Parse animation classes if they were set 32306 32307 if (this.options.animate) { 32308 input = this.options.animate.split(' '); 32309 this.animationIn = input[0]; 32310 this.animationOut = input[1] || null; // - aria-expanded: according to the element visibility. 32311 32312 $triggers.attr('aria-expanded', !this.$element.is(':hidden')); 32313 } // Otherwise, parse toggle class 32314 else { 32315 input = this.options.toggler; 32316 32317 if (typeof input !== 'string' || !input.length) { 32318 throw new Error("The 'toogler' option containing the target class is required, got \"".concat(input, "\"")); 32319 } // Allow for a . at the beginning of the string 32320 32321 32322 this.className = input[0] === '.' ? input.slice(1) : input; // - aria-expanded: according to the elements class set. 32323 32324 $triggers.attr('aria-expanded', this.$element.hasClass(this.className)); 32325 } // - aria-controls: adding the element id to it if not already in it. 32326 32327 32328 $triggers.each(function (index, trigger) { 32329 var $trigger = jquery__WEBPACK_IMPORTED_MODULE_0___default()(trigger); 32330 var controls = $trigger.attr('aria-controls') || ''; 32331 var containsId = new RegExp("\\b".concat(Object(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_2__["RegExpEscape"])(id), "\\b")).test(controls); 32332 if (!containsId) $trigger.attr('aria-controls', controls ? "".concat(controls, " ").concat(id) : id); 32333 }); 32334 } 32335 /** 32336 * Initializes events for the toggle trigger. 32337 * @function 32338 * @private 32339 */ 32340 32341 }, { 32342 key: "_events", 32343 value: function _events() { 32344 this.$element.off('toggle.zf.trigger').on('toggle.zf.trigger', this.toggle.bind(this)); 32345 } 32346 /** 32347 * Toggles the target class on the target element. An event is fired from the original trigger depending on if the resultant state was "on" or "off". 32348 * @function 32349 * @fires Toggler#on 32350 * @fires Toggler#off 32351 */ 32352 32353 }, { 32354 key: "toggle", 32355 value: function toggle() { 32356 this[this.options.animate ? '_toggleAnimate' : '_toggleClass'](); 32357 } 32358 }, { 32359 key: "_toggleClass", 32360 value: function _toggleClass() { 32361 this.$element.toggleClass(this.className); 32362 var isOn = this.$element.hasClass(this.className); 32363 32364 if (isOn) { 32365 /** 32366 * Fires if the target element has the class after a toggle. 32367 * @event Toggler#on 32368 */ 32369 this.$element.trigger('on.zf.toggler'); 32370 } else { 32371 /** 32372 * Fires if the target element does not have the class after a toggle. 32373 * @event Toggler#off 32374 */ 32375 this.$element.trigger('off.zf.toggler'); 32376 } 32377 32378 this._updateARIA(isOn); 32379 32380 this.$element.find('[data-mutate]').trigger('mutateme.zf.trigger'); 32381 } 32382 }, { 32383 key: "_toggleAnimate", 32384 value: function _toggleAnimate() { 32385 var _this = this; 32386 32387 if (this.$element.is(':hidden')) { 32388 _foundation_util_motion__WEBPACK_IMPORTED_MODULE_1__["Motion"].animateIn(this.$element, this.animationIn, function () { 32389 _this._updateARIA(true); 32390 32391 this.trigger('on.zf.toggler'); 32392 this.find('[data-mutate]').trigger('mutateme.zf.trigger'); 32393 }); 32394 } else { 32395 _foundation_util_motion__WEBPACK_IMPORTED_MODULE_1__["Motion"].animateOut(this.$element, this.animationOut, function () { 32396 _this._updateARIA(false); 32397 32398 this.trigger('off.zf.toggler'); 32399 this.find('[data-mutate]').trigger('mutateme.zf.trigger'); 32400 }); 32401 } 32402 } 32403 }, { 32404 key: "_updateARIA", 32405 value: function _updateARIA(isOn) { 32406 var id = this.$element[0].id; 32407 jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-open=\"".concat(id, "\"], [data-close=\"").concat(id, "\"], [data-toggle=\"").concat(id, "\"]")).attr({ 32408 'aria-expanded': isOn ? true : false 32409 }); 32410 } 32411 /** 32412 * Destroys the instance of Toggler on the element. 32413 * @function 32414 */ 32415 32416 }, { 32417 key: "_destroy", 32418 value: function _destroy() { 32419 this.$element.off('.zf.toggler'); 32420 } 32421 }]); 32422 32423 return Toggler; 32424}
32424(_foundation_core_plugin__WEBPACK_IMPORTED_MODULE_2__["Plugin"]); 32425 32426Toggler.defaults = { 32427 /** 32428 * Class of the element to toggle. It can be provided with or without "." 32429 * @option 32430 * @type {string} 32431 */ 32432 toggler: undefined, 32433 32434 /** 32435 * Tells the plugin if the element should animated when toggled. 32436 * @option 32437 * @type {boolean} 32438 * @default false 32439 */ 32440 animate: false 32441}; 32442 32443 32444/***/ }), 32445
vendor: 12,977 bytes, lines 32446-32760
32446/***/ "./js/foundation.util.triggers.js": 32447/*!****************************************!*\ 32448 !*** ./js/foundation.util.triggers.js ***! 32449 \****************************************/ 32450/*! exports provided: Triggers */ 32451/***/ (function(module, __webpack_exports__, __webpack_require__) { 32452 32453"use strict"; 32454__webpack_require__.r(__webpack_exports__); 32455/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "Triggers", function() { return Triggers; }); 32456/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery"); 32457/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__); 32458/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.core.utils */ "./foundation.core"); 32459/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__); 32460/* harmony import */ var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.util.motion */ "./foundation.util.motion"); 32461/* harmony import */ var _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__); 32462 32463 32464function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } 32465 32466 32467 32468 32469 32470var MutationObserver = function () { 32471 var prefixes = ['WebKit', 'Moz', 'O', 'Ms', '']; 32472 32473 for (var i = 0; i < prefixes.length; i++) { 32474 if ("".concat(prefixes[i], "MutationObserver") in window) { 32475 return window["".concat(prefixes[i], "MutationObserver")]; 32476 } 32477 } 32478 32479 return false; 32480}(); 32481 32482var triggers = function triggers(el, type) { 32483 el.data(type).split(' ').forEach(function (id) { 32484 jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(id))[type === 'close' ? 'trigger' : 'triggerHandler']("".concat(type, ".zf.trigger"), [el]); 32485 }); 32486}; 32487 32488var Triggers = { 32489 Listeners: { 32490 Basic: {}, 32491 Global: {} 32492 }, 32493 Initializers: {} 32494}; 32495Triggers.Listeners.Basic = { 32496 openListener: function openListener() { 32497 triggers(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'open'); 32498 }, 32499 closeListener: function closeListener() { 32500 var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('close'); 32501 32502 if (id) { 32503 triggers(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'close'); 32504 } else { 32505 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger('close.zf.trigger'); 32506 } 32507 }, 32508 toggleListener: function toggleListener() { 32509 var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('toggle'); 32510 32511 if (id) { 32512 triggers(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), 'toggle'); 32513 } else { 32514 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger('toggle.zf.trigger'); 32515 } 32516 }, 32517 closeableListener: function closeableListener(e) { 32518 var animation = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('closable'); // Only close the first closable element. See https://git.io/zf-7833 32519 32520 e.stopPropagation(); 32521 32522 if (animation !== '') { 32523 _foundation_util_motion__WEBPACK_IMPORTED_MODULE_2__["Motion"].animateOut(jquery__WEBPACK_IMPORTED_MODULE_0___default()(this), animation, function () { 32524 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).trigger('closed.zf'); 32525 }); 32526 } else { 32527 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).fadeOut().trigger('closed.zf'); 32528 } 32529 }, 32530 toggleFocusListener: function toggleFocusListener() { 32531 var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).data('toggle-focus'); 32532 jquery__WEBPACK_IMPORTED_MODULE_0___default()("#".concat(id)).triggerHandler('toggle.zf.trigger', [jquery__WEBPACK_IMPORTED_MODULE_0___default()(this)]); 32533 } 32534}; // Elements with [data-open] will reveal a plugin that supports it when clicked. 32535 32536Triggers.Initializers.addOpenListener = function ($elem) { 32537 $elem.off('click.zf.trigger', Triggers.Listeners.Basic.openListener); 32538 $elem.on('click.zf.trigger', '[data-open]', Triggers.Listeners.Basic.openListener); 32539}; // Elements with [data-close] will close a plugin that supports it when clicked. 32540// If used without a value on [data-close], the event will bubble, allowing it to close a parent component. 32541 32542 32543Triggers.Initializers.addCloseListener = function ($elem) { 32544 $elem.off('click.zf.trigger', Triggers.Listeners.Basic.closeListener); 32545 $elem.on('click.zf.trigger', '[data-close]', Triggers.Listeners.Basic.closeListener); 32546}; // Elements with [data-toggle] will toggle a plugin that supports it when clicked. 32547 32548 32549Triggers.Initializers.addToggleListener = function ($elem) { 32550 $elem.off('click.zf.trigger', Triggers.Listeners.Basic.toggleListener); 32551 $elem.on('click.zf.trigger', '[data-toggle]', Triggers.Listeners.Basic.toggleListener); 32552}; // Elements with [data-closable] will respond to close.zf.trigger events. 32553 32554 32555Triggers.Initializers.addCloseableListener = function ($elem) { 32556 $elem.off('close.zf.trigger', Triggers.Listeners.Basic.closeableListener); 32557 $elem.on('close.zf.trigger', '[data-closeable], [data-closable]', Triggers.Listeners.Basic.closeableListener); 32558}; // Elements with [data-toggle-focus] will respond to coming in and out of focus 32559 32560 32561Triggers.Initializers.addToggleFocusListener = function ($elem) { 32562 $elem.off('focus.zf.trigger blur.zf.trigger', Triggers.Listeners.Basic.toggleFocusListener); 32563 $elem.on('focus.zf.trigger blur.zf.trigger', '[data-toggle-focus]', Triggers.Listeners.Basic.toggleFocusListener); 32564}; // More Global/complex listeners and triggers 32565 32566 32567Triggers.Listeners.Global = { 32568 resizeListener: function resizeListener($nodes) { 32569 if (!MutationObserver) { 32570 //fallback for IE 9 32571 $nodes.each(function () { 32572 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).triggerHandler('resizeme.zf.trigger'); 32573 }); 32574 } //trigger all listening elements and signal a resize event 32575 32576 32577 $nodes.attr('data-events', "resize"); 32578 }, 32579 scrollListener: function scrollListener($nodes) { 32580 if (!MutationObserver) { 32581 //fallback for IE 9 32582 $nodes.each(function () { 32583 jquery__WEBPACK_IMPORTED_MODULE_0___default()(this).triggerHandler('scrollme.zf.trigger'); 32584 }); 32585 } //trigger all listening elements and signal a scroll event 32586 32587 32588 $nodes.attr('data-events', "scroll"); 32589 }, 32590 closeMeListener: function closeMeListener(e, pluginId) { 32591 var plugin = e.namespace.split('.')[0]; 32592 var plugins = jquery__WEBPACK_IMPORTED_MODULE_0___default()("[data-".concat(plugin, "]")).not("[data-yeti-box=\"".concat(pluginId, "\"]")); 32593 plugins.each(function () { 32594 var _this = jquery__WEBPACK_IMPORTED_MODULE_0___default()(this); 32595 32596 _this.triggerHandler('close.zf.trigger', [_this]); 32597 }); 32598 } // Global, parses whole document. 32599 32600}; 32601 32602Triggers.Initializers.addClosemeListener = function (pluginName) { 32603 var yetiBoxes = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-yeti-box]'), 32604 plugNames = ['dropdown', 'tooltip', 'reveal']; 32605 32606 if (pluginName) { 32607 if (typeof pluginName === 'string') { 32608 plugNames.push(pluginName); 32609 } else if (_typeof(pluginName) === 'object' && typeof pluginName[0] === 'string') { 32610 plugNames = plugNames.concat(pluginName); 32611 } else { 32612 console.error('Plugin names must be strings'); 32613 } 32614 } 32615 32616 if (yetiBoxes.length) { 32617 var listeners = plugNames.map(function (name) { 32618 return "closeme.zf.".concat(name); 32619 }).join(' '); 32620 jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(listeners).on(listeners, Triggers.Listeners.Global.closeMeListener); 32621 } 32622}; 32623 32624function debounceGlobalListener(debounce, trigger, listener) { 32625 var timer, 32626 args = Array.prototype.slice.call(arguments, 3); 32627 jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off(trigger).on(trigger, function (e) { 32628 if (timer) { 32629 clearTimeout(timer); 32630 } 32631 32632 timer = setTimeout(function () { 32633 listener.apply(null, args); 32634 }, debounce || 10); //default time to emit scroll event 32635 }); 32636} 32637 32638Triggers.Initializers.addResizeListener = function (debounce) { 32639 var $nodes = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-resize]'); 32640 32641 if ($nodes.length) { 32642 debounceGlobalListener(debounce, 'resize.zf.trigger', Triggers.Listeners.Global.resizeListener, $nodes); 32643 } 32644}; 32645 32646Triggers.Initializers.addScrollListener = function (debounce) { 32647 var $nodes = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-scroll]'); 32648 32649 if ($nodes.length) { 32650 debounceGlobalListener(debounce, 'scroll.zf.trigger', Triggers.Listeners.Global.scrollListener, $nodes); 32651 } 32652}; 32653 32654Triggers.Initializers.addMutationEventsListener = function ($elem) { 32655 if (!MutationObserver) { 32656 return false; 32657 } 32658 32659 var $nodes = $elem.find('[data-resize], [data-scroll], [data-mutate]'); //element callback 32660 32661 var listeningElementsMutation = function listeningElementsMutation(mutationRecordsList) { 32662 var $target = jquery__WEBPACK_IMPORTED_MODULE_0___default()(mutationRecordsList[0].target); //trigger the event handler for the element depending on type 32663 32664 switch (mutationRecordsList[0].type) { 32665 case "attributes": 32666 if ($target.attr("data-events") === "scroll" && mutationRecordsList[0].attributeName === "data-events") { 32667 $target.triggerHandler('scrollme.zf.trigger', [$target, window.pageYOffset]); 32668 } 32669 32670 if ($target.attr("data-events") === "resize" && mutationRecordsList[0].attributeName === "data-events") { 32671 $target.triggerHandler('resizeme.zf.trigger', [$target]); 32672 } 32673 32674 if (mutationRecordsList[0].attributeName === "style") { 32675 $target.closest("[data-mutate]").attr("data-events", "mutate"); 32676 $target.closest("[data-mutate]").triggerHandler('mutateme.zf.trigger', [$target.closest("[data-mutate]")]); 32677 } 32678 32679 break; 32680 32681 case "childList": 32682 $target.closest("[data-mutate]").attr("data-events", "mutate"); 32683 $target.closest("[data-mutate]").triggerHandler('mutateme.zf.trigger', [$target.closest("[data-mutate]")]); 32684 break; 32685 32686 default: 32687 return false; 32688 //nothing 32689 } 32690 }; 32691 32692 if ($nodes.length) { 32693 //for each element that needs to listen for resizing, scrolling, or mutation add a single observer 32694 for (var i = 0; i <= $nodes.length - 1; i++) { 32695 var elementObserver = new MutationObserver(listeningElementsMutation); 32696 elementObserver.observe($nodes[i], { 32697 attributes: true, 32698 childList: true, 32699 characterData: false, 32700 subtree: true, 32701 attributeFilter: ["data-events", "style"] 32702 }); 32703 } 32704 } 32705}; 32706 32707Triggers.Initializers.addSimpleListeners = function () { 32708 var $document = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document); 32709 Triggers.Initializers.addOpenListener($document); 32710 Triggers.Initializers.addCloseListener($document); 32711 Triggers.Initializers.addToggleListener($document); 32712 Triggers.Initializers.addCloseableListener($document); 32713 Triggers.Initializers.addToggleFocusListener($document); 32714}; 32715 32716Triggers.Initializers.addGlobalListeners = function () { 32717 var $document = jquery__WEBPACK_IMPORTED_MODULE_0___default()(document); 32718 Triggers.Initializers.addMutationEventsListener($document); 32719 Triggers.Initializers.addResizeListener(); 32720 Triggers.Initializers.addScrollListener(); 32721 Triggers.Initializers.addClosemeListener(); 32722}; 32723 32724Triggers.init = function ($, Foundation) { 32725 Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_1__["onLoad"])($(window), function () { 32726 if ($.triggersInitialized !== true) { 32727 Triggers.Initializers.addSimpleListeners(); 32728 Triggers.Initializers.addGlobalListeners(); 32729 $.triggersInitialized = true; 32730 } 32731 }); 32732 32733 if (Foundation) { 32734 Foundation.Triggers = Triggers; // Legacy included to be backwards compatible for now. 32735 32736 Foundation.IHearYou = Triggers.Initializers.addGlobalListeners; 32737 } 32738}; 32739 32740 32741 32742/***/ }), 32743 32744/***/ 19: 32745/*!********************************************************!*\ 32746 !*** multi ./js/entries/plugins/foundation.toggler.js ***! 32747 \********************************************************/ 32748/*! no static exports found */ 32749/***/ (function(module, exports, __webpack_require__) { 32750 32751module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.toggler.js */"./js/entries/plugins/foundation.toggler.js"); 32752 32753 32754/***/ }), 32755 32756/***/ "jquery": 32757/*!********************************************************************************************!*\ 32758 !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***! 32759 \********************************************************************************************/ 32760/*! no static exports found */
vendor: 4,388 bytes, lines 32761-32847
32761/***/ (function(module, exports) { 32762 32763module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__; 32764 32765/***/ }) 32766 32767/******/ }); 32768}); 32769//# sourceMappingURL=foundation.toggler.js.map 32770(function webpackUniversalModuleDefinition(root, factory) { 32771 if(typeof exports === 'object' && typeof module === 'object') 32772 module.exports = factory(require("./foundation.accordion"), require("./foundation.core"), require("./foundation.tabs"), require("./foundation.util.mediaQuery"), require("jquery")); 32773 else if(typeof define === 'function' && define.amd) 32774 define(["./foundation.accordion", "./foundation.core", "./foundation.tabs", "./foundation.util.mediaQuery", "jquery"], factory); 32775 else if(typeof exports === 'object') 32776 exports["foundation.responsiveAccordionTabs"] = factory(require("./foundation.accordion"), require("./foundation.core"), require("./foundation.tabs"), require("./foundation.util.mediaQuery"), require("jquery")); 32777 else 32778 root["__FOUNDATION_EXTERNAL__"] = root["__FOUNDATION_EXTERNAL__"] || {}, root["__FOUNDATION_EXTERNAL__"]["foundation.responsiveAccordionTabs"] = factory(root["__FOUNDATION_EXTERNAL__"]["foundation.accordion"], root["__FOUNDATION_EXTERNAL__"]["foundation.core"], root["__FOUNDATION_EXTERNAL__"]["foundation.tabs"], root["__FOUNDATION_EXTERNAL__"]["foundation.util.mediaQuery"], root["jQuery"]); 32779})(window, function(__WEBPACK_EXTERNAL_MODULE__foundation_accordion__, __WEBPACK_EXTERNAL_MODULE__foundation_core__, __WEBPACK_EXTERNAL_MODULE__foundation_tabs__, __WEBPACK_EXTERNAL_MODULE__foundation_util_mediaQuery__, __WEBPACK_EXTERNAL_MODULE_jquery__) { 32780return /******/ (function(modules) { // webpackBootstrap 32781/******/ // The module cache 32782/******/ var installedModules = {}; 32783/******/ 32784/******/ // The require function 32785/******/ function __webpack_require__(moduleId) { 32786/******/ 32787/******/ // Check if module is in cache 32788/******/ if(installedModules[moduleId]) { 32789/******/ return installedModules[moduleId].exports; 32790/******/ } 32791/******/ // Create a new module (and put it into the cache) 32792/******/ var module = installedModules[moduleId] = { 32793/******/ i: moduleId, 32794/******/ l: false, 32795/******/ exports: {} 32796/******/ }; 32797/******/ 32798/******/ // Execute the module function 32799/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); 32800/******/ 32801/******/ // Flag the module as loaded 32802/******/ module.l = true; 32803/******/ 32804/******/ // Return the exports of the module 32805/******/ return module.exports; 32806/******/ } 32807/******/ 32808/******/ 32809/******/ // expose the modules object (__webpack_modules__) 32810/******/ __webpack_require__.m = modules; 32811/******/ 32812/******/ // expose the module cache 32813/******/ __webpack_require__.c = installedModules; 32814/******/ 32815/******/ // define getter function for harmony exports 32816/******/ __webpack_require__.d = function(exports, name, getter) { 32817/******/ if(!__webpack_require__.o(exports, name)) { 32818/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); 32819/******/ } 32820/******/ }; 32821/******/ 32822/******/ // define __esModule on exports 32823/******/ __webpack_require__.r = function(exports) { 32824/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { 32825/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); 32826/******/ } 32827/******/ Object.defineProperty(exports, '__esModule', { value: true }); 32828/******/ }; 32829/******/ 32830/******/ // create a fake namespace object 32831/******/ // mode & 1: value is a module id, require it 32832/******/ // mode & 2: merge all properties of value into the ns 32833/******/ // mode & 4: return value when already ns object 32834/******/ // mode & 8|1: behave like require 32835/******/ __webpack_require__.t = function(value, mode) { 32836/******/ if(mode & 1) value = __webpack_require__(value); 32837/******/ if(mode & 8) return value; 32838/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; 32839/******/ var ns = Object.create(null); 32840/******/ __webpack_require__.r(ns); 32841/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); 32842/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); 32843/******/ return ns; 32844/******/ }; 32845/******/ 32846/******/ // getDefaultExport function for compatibility with non-harmony modules 32847/******/ __webpack_require__.n = function(module) {
32848/******/ var getter = module && module.__esModule ? 32849/******/ function getDefault() { return module['default']; } : 32850/******/ function getModuleExports() { return module; }; 32851/******/ __webpack_require__.d(getter, 'a', getter); 32852/******/ return getter; 32853/******/ }; 32854/******/ 32855/******/ // Object.prototype.hasOwnProperty.call 32856/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; 32857/******/ 32858/******/ // __webpack_public_path__ 32859/******/ __webpack_require__.p = ""; 32860/******/ 32861/******/ 32862/******/ // Load entry module and return exports 32863/******/ return __webpack_require__(__webpack_require__.s = 11); 32864/******/ }) 32865/************************************************************************/ 32866/******/ ({ 32867 32868/***/ "./foundation.accordion": 32869/*!************************************************************************************************************************************************************************************!*\ 32870 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.accordion"],"amd":"./foundation.accordion","commonjs":"./foundation.accordion","commonjs2":"./foundation.accordion"} ***! 32871 \************************************************************************************************************************************************************************************/ 32872/*! no static exports found */ 32873/***/ (function(module, exports) { 32874 32875module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_accordion__; 32876 32877/***/ }), 32878 32879/***/ "./foundation.core": 32880/*!****************************************************************************************************************************************************************!*\ 32881 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.core"],"amd":"./foundation.core","commonjs":"./foundation.core","commonjs2":"./foundation.core"} ***! 32882 \****************************************************************************************************************************************************************/ 32883/*! no static exports found */ 32884/***/ (function(module, exports) { 32885 32886module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_core__; 32887 32888/***/ }), 32889 32890/***/ "./foundation.tabs": 32891/*!****************************************************************************************************************************************************************!*\ 32892 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.tabs"],"amd":"./foundation.tabs","commonjs":"./foundation.tabs","commonjs2":"./foundation.tabs"} ***! 32893 \****************************************************************************************************************************************************************/ 32894/*! no static exports found */ 32895/***/ (function(module, exports) { 32896 32897module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_tabs__; 32898 32899/***/ }), 32900 32901/***/ "./foundation.util.mediaQuery": 32902/*!************************************************************************************************************************************************************************************************************!*\ 32903 !*** external {"root":["__FOUNDATION_EXTERNAL__","foundation.util.mediaQuery"],"amd":"./foundation.util.mediaQuery","commonjs":"./foundation.util.mediaQuery","commonjs2":"./foundation.util.mediaQuery"} ***! 32904 \************************************************************************************************************************************************************************************************************/ 32905/*! no static exports found */ 32906/***/ (function(module, exports) { 32907 32908module.exports = __WEBPACK_EXTERNAL_MODULE__foundation_util_mediaQuery__; 32909 32910/***/ }), 32911
32912/***/ "./js/entries/plugins/foundation.responsiveAccordionTabs.js": 32913/*!******************************************************************!*\ 32914 !*** ./js/entries/plugins/foundation.responsiveAccordionTabs.js ***! 32915 \******************************************************************/ 32916/*! exports provided: Foundation, ResponsiveAccordionTabs */ 32917/***/ (function(module, __webpack_exports__, __webpack_require__) { 32918 32919"use strict"; 32920__webpack_require__.r(__webpack_exports__); 32921/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./foundation.core */ "./foundation.core"); 32922/* harmony import */ var _foundation_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_foundation_core__WEBPACK_IMPORTED_MODULE_0__); 32923/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "Foundation", function() { return _foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"]; }); 32924 32925/* harmony import */ var _foundation_responsiveAccordionTabs__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../../foundation.responsiveAccordionTabs */ "./js/foundation.responsiveAccordionTabs.js"); 32926/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, "ResponsiveAccordionTabs", function() { return _foundation_responsiveAccordionTabs__WEBPACK_IMPORTED_MODULE_1__["ResponsiveAccordionTabs"]; }); 32927 32928 32929 32930_foundation_core__WEBPACK_IMPORTED_MODULE_0__["Foundation"].plugin(_foundation_responsiveAccordionTabs__WEBPACK_IMPORTED_MODULE_1__["ResponsiveAccordionTabs"], 'ResponsiveAccordionTabs'); 32931 32932 32933/***/ }), 32934
32935/***/ "./js/foundation.responsiveAccordionTabs.js": 32936/*!**************************************************!*\ 32937 !*** ./js/foundation.responsiveAccordionTabs.js ***! 32938 \**************************************************/ 32939/*! exports provided: ResponsiveAccordionTabs */ 32940/***/ (function(module, __webpack_exports__, __webpack_require__) { 32941 32942"use strict"; 32943__webpack_require__.r(__webpack_exports__); 32944/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "ResponsiveAccordionTabs", function() { return ResponsiveAccordionTabs; }); 32945/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jquery */ "jquery"); 32946/* harmony import */ var jquery__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jquery__WEBPACK_IMPORTED_MODULE_0__); 32947/* harmony import */ var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./foundation.util.mediaQuery */ "./foundation.util.mediaQuery"); 32948/* harmony import */ var _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__); 32949/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./foundation.core.utils */ "./foundation.core"); 32950/* harmony import */ var _foundation_core_utils__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__); 32951/* harmony import */ var _foundation_accordion__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./foundation.accordion */ "./foundation.accordion"); 32952/* harmony import */ var _foundation_accordion__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_foundation_accordion__WEBPACK_IMPORTED_MODULE_3__); 32953/* harmony import */ var _foundation_tabs__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./foundation.tabs */ "./foundation.tabs"); 32954/* harmony import */ var _foundation_tabs__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_foundation_tabs__WEBPACK_IMPORTED_MODULE_4__); 32955 32956 32957function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); } 32958 32959function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } } 32960 32961function _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); } } 32962 32963function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; } 32964 32965function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); } 32966 32967function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); } 32968 32969function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; } 32970 32971function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); } 32972 32973function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); } 32974 32975 32976 32977 32978 32979 32980 // The plugin matches the plugin classes with these plugin instances. 32981 32982var MenuPlugins = { 32983 tabs: { 32984 cssClass: 'tabs', 32985 plugin: _foundation_tabs__WEBPACK_IMPORTED_MODULE_4__["Tabs"], 32986 open: function open(plugin, target) { 32987 return plugin.selectTab(target); 32988 }, 32989 close: null 32990 /* not supported */ 32991 , 32992 toggle: null 32993 /* not supported */ 32994 32995 }, 32996 accordion: { 32997 cssClass: 'accordion', 32998 plugin: _foundation_accordion__WEBPACK_IMPORTED_MODULE_3__["Accordion"], 32999 open: function open(plugin, target) { 33000 return plugin.down(jquery__WEBPACK_IMPORTED_MODULE_0___default()(target)); 33001 }, 33002 close: function close(plugin, target) { 33003 return plugin.up(jquery__WEBPACK_IMPORTED_MODULE_0___default()(target)); 33004 }, 33005 toggle: function toggle(plugin, target) { 33006 return plugin.toggle(jquery__WEBPACK_IMPORTED_MODULE_0___default()(target)); 33007 } 33008 } 33009}; 33010/** 33011 * ResponsiveAccordionTabs module. 33012 * @module foundation.responsiveAccordionTabs 33013 * @requires foundation.util.motion 33014 * @requires foundation.accordion 33015 * @requires foundation.tabs 33016 */ 33017 33018var ResponsiveAccordionTabs = 33019/*#__PURE__*/ 33020function (_Plugin) { 33021 _inherits(ResponsiveAccordionTabs, _Plugin); 33022 33023 function ResponsiveAccordionTabs(element, options) { 33024 var _this2; 33025 33026 _classCallCheck(this, ResponsiveAccordionTabs); 33027 33028 _this2 = _possibleConstructorReturn(this, _getPrototypeOf(ResponsiveAccordionTabs).call(this, element, options)); 33029 return _possibleConstructorReturn(_this2, _this2.options.reflow && _this2.storezfData || _assertThisInitialized(_this2)); 33030 } 33031 /** 33032 * Creates a new instance of a responsive accordion tabs. 33033 * @class 33034 * @name ResponsiveAccordionTabs 33035 * @fires ResponsiveAccordionTabs#init 33036 * @param {jQuery} element - jQuery object to make into Responsive Accordion Tabs. 33037 * @param {Object} options - Overrides to the default plugin settings. 33038 */ 33039 33040 33041 _createClass(ResponsiveAccordionTabs, [{ 33042 key: "_setup", 33043 value: function _setup(element, options) { 33044 this.$element = jquery__WEBPACK_IMPORTED_MODULE_0___default()(element); 33045 this.$element.data('zfPluginBase', this); 33046 this.options = jquery__WEBPACK_IMPORTED_MODULE_0___default.a.extend({}, ResponsiveAccordionTabs.defaults, this.$element.data(), options); 33047 this.rules = this.$element.data('responsive-accordion-tabs'); 33048 this.currentMq = null; 33049 this.currentRule = null; 33050 this.currentPlugin = null; 33051 this.className = 'ResponsiveAccordionTabs'; // ie9 back compat 33052 33053 if (!this.$element.attr('id')) { 33054 this.$element.attr('id', Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["GetYoDigits"])(6, 'responsiveaccordiontabs')); 33055 } 33056 33057 this._init(); 33058 33059 this._events(); 33060 } 33061 /** 33062 * Initializes the Menu by parsing the classes from the 'data-responsive-accordion-tabs' attribute on the element. 33063 * @function 33064 * @private 33065 */ 33066 33067 }, { 33068 key: "_init", 33069 value: function _init() { 33070 _foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"]._init(); // The first time an Interchange plugin is initialized, this.rules is converted from a string of "classes" to an object of rules 33071 33072 33073 if (typeof this.rules === 'string') { 33074 var rulesTree = {}; // Parse rules from "classes" pulled from data attribute 33075 33076 var rules = this.rules.split(' '); // Iterate through every rule found 33077 33078 for (var i = 0; i < rules.length; i++) { 33079 var rule = rules[i].split('-'); 33080 var ruleSize = rule.length > 1 ? rule[0] : 'small'; 33081 var rulePlugin = rule.length > 1 ? rule[1] : rule[0]; 33082 33083 if (MenuPlugins[rulePlugin] !== null) { 33084 rulesTree[ruleSize] = MenuPlugins[rulePlugin]; 33085 } 33086 } 33087 33088 this.rules = rulesTree; 33089 } 33090 33091 this._getAllOptions(); 33092 33093 if (!jquery__WEBPACK_IMPORTED_MODULE_0___default.a.isEmptyObject(this.rules)) { 33094 this._checkMediaQueries(); 33095 } 33096 } 33097 }, { 33098 key: "_getAllOptions", 33099 value: function _getAllOptions() { 33100 //get all defaults and options 33101 var _this = this; 33102 33103 _this.allOptions = {}; 33104 33105 for (var key in MenuPlugins) { 33106 if (MenuPlugins.hasOwnProperty(key)) { 33107 var obj = MenuPlugins[key]; 33108 33109 try { 33110 var dummyPlugin = jquery__WEBPACK_IMPORTED_MODULE_0___default()('<ul></ul>'); 33111 var tmpPlugin = new obj.plugin(dummyPlugin, _this.options); 33112 33113 for (var keyKey in tmpPlugin.options) { 33114 if (tmpPlugin.options.hasOwnProperty(keyKey) && keyKey !== 'zfPlugin') { 33115 var objObj = tmpPlugin.options[keyKey]; 33116 _this.allOptions[keyKey] = objObj; 33117 } 33118 } 33119 33120 tmpPlugin.destroy(); 33121 } catch (e) {} 33122 } 33123 } 33124 } 33125 /** 33126 * Initializes events for the Menu. 33127 * @function 33128 * @private 33129 */ 33130 33131 }, { 33132 key: "_events", 33133 value: function _events() { 33134 this._changedZfMediaQueryHandler = this._checkMediaQueries.bind(this); 33135 jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).on('changed.zf.mediaquery', this._changedZfMediaQueryHandler); 33136 } 33137 /** 33138 * Checks the current screen width against available media queries. If the media query has changed, and the plugin needed has changed, the plugins will swap out. 33139 * @function 33140 * @private 33141 */ 33142 33143 }, { 33144 key: "_checkMediaQueries", 33145 value: function _checkMediaQueries() { 33146 var matchedMq, 33147 _this = this; // Iterate through each rule and find the last matching rule 33148 33149 33150 jquery__WEBPACK_IMPORTED_MODULE_0___default.a.each(this.rules, function (key) { 33151 if (_foundation_util_mediaQuery__WEBPACK_IMPORTED_MODULE_1__["MediaQuery"].atLeast(key)) { 33152 matchedMq = key; 33153 } 33154 }); // No match? No dice 33155 33156 if (!matchedMq) return; // Plugin already initialized? We good 33157 33158 if (this.currentPlugin instanceof this.rules[matchedMq].plugin) return; // Remove existing plugin-specific CSS classes 33159 33160 jquery__WEBPACK_IMPORTED_MODULE_0___default.a.each(MenuPlugins, function (key, value) { 33161 _this.$element.removeClass(value.cssClass); 33162 }); // Add the CSS class for the new plugin 33163 33164 this.$element.addClass(this.rules[matchedMq].cssClass); // Create an instance of the new plugin 33165 33166 if (this.currentPlugin) {
vendor: 6,717 bytes, lines 33167-33322
33167 //don't know why but on nested elements data zfPlugin get's lost 33168 if (!this.currentPlugin.$element.data('zfPlugin') && this.storezfData) this.currentPlugin.$element.data('zfPlugin', this.storezfData); 33169 this.currentPlugin.destroy(); 33170 } 33171 33172 this._handleMarkup(this.rules[matchedMq].cssClass); 33173 33174 this.currentRule = this.rules[matchedMq]; 33175 this.currentPlugin = new this.currentRule.plugin(this.$element, this.options); 33176 this.storezfData = this.currentPlugin.$element.data('zfPlugin'); 33177 } 33178 }, { 33179 key: "_handleMarkup", 33180 value: function _handleMarkup(toSet) { 33181 var _this = this, 33182 fromString = 'accordion'; 33183 33184 var $panels = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-tabs-content=' + this.$element.attr('id') + ']'); 33185 if ($panels.length) fromString = 'tabs'; 33186 33187 if (fromString === toSet) { 33188 return; 33189 } 33190 33191 var tabsTitle = _this.allOptions.linkClass ? _this.allOptions.linkClass : 'tabs-title'; 33192 var tabsPanel = _this.allOptions.panelClass ? _this.allOptions.panelClass : 'tabs-panel'; 33193 this.$element.removeAttr('role'); 33194 var $liHeads = this.$element.children('.' + tabsTitle + ',[data-accordion-item]').removeClass(tabsTitle).removeClass('accordion-item').removeAttr('data-accordion-item'); 33195 var $liHeadsA = $liHeads.children('a').removeClass('accordion-title'); 33196 33197 if (fromString === 'tabs') { 33198 $panels = $panels.children('.' + tabsPanel).removeClass(tabsPanel).removeAttr('role').removeAttr('aria-hidden').removeAttr('aria-labelledby'); 33199 $panels.children('a').removeAttr('role').removeAttr('aria-controls').removeAttr('aria-selected'); 33200 } else { 33201 $panels = $liHeads.children('[data-tab-content]').removeClass('accordion-content'); 33202 } 33203 33204 $panels.css({ 33205 display: '', 33206 visibility: '' 33207 }); 33208 $liHeads.css({ 33209 display: '', 33210 visibility: '' 33211 }); 33212 33213 if (toSet === 'accordion') { 33214 $panels.each(function (key, value) { 33215 jquery__WEBPACK_IMPORTED_MODULE_0___default()(value).appendTo($liHeads.get(key)).addClass('accordion-content').attr('data-tab-content', '').removeClass('is-active').css({ 33216 height: '' 33217 }); 33218 jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-tabs-content=' + _this.$element.attr('id') + ']').after('<div id="tabs-placeholder-' + _this.$element.attr('id') + '"></div>').detach(); 33219 $liHeads.addClass('accordion-item').attr('data-accordion-item', ''); 33220 $liHeadsA.addClass('accordion-title'); 33221 }); 33222 } else if (toSet === 'tabs') { 33223 var $tabsContent = jquery__WEBPACK_IMPORTED_MODULE_0___default()('[data-tabs-content=' + _this.$element.attr('id') + ']'); 33224 var $placeholder = jquery__WEBPACK_IMPORTED_MODULE_0___default()('#tabs-placeholder-' + _this.$element.attr('id')); 33225 33226 if ($placeholder.length) { 33227 $tabsContent = jquery__WEBPACK_IMPORTED_MODULE_0___default()('<div class="tabs-content"></div>').insertAfter($placeholder).attr('data-tabs-content', _this.$element.attr('id')); 33228 $placeholder.remove(); 33229 } else { 33230 $tabsContent = jquery__WEBPACK_IMPORTED_MODULE_0___default()('<div class="tabs-content"></div>').insertAfter(_this.$element).attr('data-tabs-content', _this.$element.attr('id')); 33231 } 33232 33233 $panels.each(function (key, value) { 33234 var tempValue = jquery__WEBPACK_IMPORTED_MODULE_0___default()(value).appendTo($tabsContent).addClass(tabsPanel); 33235 var hash = $liHeadsA.get(key).hash.slice(1); 33236 var id = jquery__WEBPACK_IMPORTED_MODULE_0___default()(value).attr('id') || Object(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["GetYoDigits"])(6, 'accordion'); 33237 33238 if (hash !== id) { 33239 if (hash !== '') { 33240 jquery__WEBPACK_IMPORTED_MODULE_0___default()(value).attr('id', hash); 33241 } else { 33242 hash = id; 33243 jquery__WEBPACK_IMPORTED_MODULE_0___default()(value).attr('id', hash); 33244 jquery__WEBPACK_IMPORTED_MODULE_0___default()($liHeadsA.get(key)).attr('href', jquery__WEBPACK_IMPORTED_MODULE_0___default()($liHeadsA.get(key)).attr('href').replace('#', '') + '#' + hash); 33245 } 33246 } 33247 33248 var isActive = jquery__WEBPACK_IMPORTED_MODULE_0___default()($liHeads.get(key)).hasClass('is-active'); 33249 33250 if (isActive) { 33251 tempValue.addClass('is-active'); 33252 } 33253 }); 33254 $liHeads.addClass(tabsTitle); 33255 } 33256 33257 ; 33258 } 33259 /** 33260 * Opens the plugin pane defined by `target`. 33261 * @param {jQuery | String} target - jQuery object or string of the id of the pane to open. 33262 * @see Accordion.down 33263 * @see Tabs.selectTab 33264 * @function 33265 */ 33266 33267 }, { 33268 key: "open", 33269 value: function open(_target) { 33270 if (this.currentRule && typeof this.currentRule.open === 'function') { 33271 var _this$currentRule; 33272 33273 return (_this$currentRule = this.currentRule).open.apply(_this$currentRule, [this.currentPlugin].concat(Array.prototype.slice.call(arguments))); 33274 } 33275 } 33276 /** 33277 * Closes the plugin pane defined by `target`. Not availaible for Tabs. 33278 * @param {jQuery | String} target - jQuery object or string of the id of the pane to close. 33279 * @see Accordion.up 33280 * @function 33281 */ 33282 33283 }, { 33284 key: "close", 33285 value: function close(_target) { 33286 if (this.currentRule && typeof this.currentRule.close === 'function') { 33287 var _this$currentRule2; 33288 33289 return (_this$currentRule2 = this.currentRule).close.apply(_this$currentRule2, [this.currentPlugin].concat(Array.prototype.slice.call(arguments))); 33290 } 33291 } 33292 /** 33293 * Toggles the plugin pane defined by `target`. Not availaible for Tabs. 33294 * @param {jQuery | String} target - jQuery object or string of the id of the pane to toggle. 33295 * @see Accordion.toggle 33296 * @function 33297 */ 33298 33299 }, { 33300 key: "toggle", 33301 value: function toggle(_target) { 33302 if (this.currentRule && typeof this.currentRule.toggle === 'function') { 33303 var _this$currentRule3; 33304 33305 return (_this$currentRule3 = this.currentRule).toggle.apply(_this$currentRule3, [this.currentPlugin].concat(Array.prototype.slice.call(arguments))); 33306 } 33307 } 33308 /** 33309 * Destroys the instance of the current plugin on this element, as well as the window resize handler that switches the plugins out. 33310 * @function 33311 */ 33312 33313 }, { 33314 key: "_destroy", 33315 value: function _destroy() { 33316 if (this.currentPlugin) this.currentPlugin.destroy(); 33317 jquery__WEBPACK_IMPORTED_MODULE_0___default()(window).off('changed.zf.mediaquery', this._changedZfMediaQueryHandler); 33318 } 33319 }]); 33320 33321 return ResponsiveAccordionTabs; 33322}
33322(_foundation_core_utils__WEBPACK_IMPORTED_MODULE_2__["Plugin"]); 33323 33324ResponsiveAccordionTabs.defaults = {}; 33325 33326 33327/***/ }), 33328 33329/***/ 11: 33330/*!************************************************************************!*\ 33331 !*** multi ./js/entries/plugins/foundation.responsiveAccordionTabs.js ***! 33332 \************************************************************************/ 33333/*! no static exports found */ 33334/***/ (function(module, exports, __webpack_require__) { 33335 33336module.exports = __webpack_require__(/*! /Users/joeworkman/Development/foundation-sites/js/entries/plugins/foundation.responsiveAccordionTabs.js */"./js/entries/plugins/foundation.responsiveAccordionTabs.js"); 33337 33338 33339/***/ }), 33340 33341/***/ "jquery": 33342/*!********************************************************************************************!*\ 33343 !*** external {"root":["jQuery"],"amd":"jquery","commonjs":"jquery","commonjs2":"jquery"} ***! 33344 \********************************************************************************************/ 33345/*! no static exports found */ 33346/***/ (function(module, exports) { 33347 33348module.exports = __WEBPACK_EXTERNAL_MODULE_jquery__; 33349 33350/***/ }) 33351 33352/******/ }); 33353}); 33354//# sourceMappingURL=foundation.responsiveAccordionTabs.js.map 33355function btbLazyLoad(el) { 33356 el.Lazy({ 33357 afterLoad: function (element) { 33358 if (element.hasClass("inline-svg")) { 33359 inlineSvg(element); 33360 } 33361 $(window).resize(); 33362 } 33363 }); 33364} 33365 33366$(function() { 33367 btbLazyLoad($('.lazy')); 33368}); 33369 33370function slickLazyLoadSlide (slick, slideIndex) { 33371 var slide = $(slick.$slides.get(slideIndex)); 33372 33373 slide.find("[data-lazy-slick-interchange]").each(function () { 33374 $(this).attr('data-interchange', $(this).attr('data-lazy-slick-interchange')); 33375 $(this).removeAttr('data-lazy-slick-interchange'); 33376 $(this).foundation(); 33377 }); 33378 33379 slide.find("[data-lazy-slick-src]").each(function () { 33380 $(this).attr('data-src', $(this).attr('data-lazy-slick-src')); 33381 $(this).removeAttr('data-lazy-slick-src'); 33382 $(this).addClass("lazy"); 33383 btbLazyLoad($(this)); 33384 }); 33385} 33386/* 33387 * Replace all SVG images with inline SVG if it has the class "inline-svg" 33388 */ 33389function inlineSvg(el) { 33390 var $img = el; 33391 var imgID = $img.attr('id'); 33392 var imgClass = $img.attr('class'); 33393 var imgURL = $img.attr('src'); 33394 33395 jQuery.get(imgURL, function (data) { 33396 // Get the SVG tag, ignore the rest 33397 var $svg = jQuery(data).find('svg'); 33398 33399 // Add replaced image's ID to the new SVG 33400 if (typeof imgID !== 'undefined') { 33401 $svg = $svg.attr('id', imgID); 33402 } 33403 // Add replaced image's classes to the new SVG 33404 if (typeof imgClass !== 'undefined') { 33405 $svg = $svg.attr('class', imgClass + ' replaced-svg'); 33406 } 33407 33408 // Remove any invalid XML tags as per http://validator.w3.org 33409 $svg = $svg.removeAttr('xmlns:a'); 33410 33411 // Check if the viewport is set, if the viewport is not set the SVG wont't scale. 33412 if (!$svg.attr('viewBox') && $svg.attr('height') && $svg.attr('width')) { 33413 $svg.attr('viewBox', '0 0 ' + $svg.attr('height') + ' ' + $svg.attr('width')) 33414 } 33415 33416 // Replace image with new SVG 33417 $img.replaceWith($svg); 33418 33419 }, 'xml'); 33420} 33421 33422$(document).ready(function() { 33423 jQuery('img.inline-svg').each(function () { 33424 if (!$(this).hasClass("lazy")) { 33425 inlineSvg($(this)); 33426 } 33427 }); 33428}); 33429 33430//--animate the label of an input (instead of using a placeholder) 33431//--this script gives a class to an input with a value 33432 33433$(function(){ 33434 33435 $('.animated-input input, .animated-input textarea').focusout(function(){ 33436 33437 var text_val = $(this).val(); 33438 33439 if(text_val === "") { 33440 $(this).removeClass('has-value'); 33441 } else { 33442 $(this).addClass('has-value'); 33443 } 33444 33445 }); 33446 33447}); 33448 33449$(document).ready(function() { 33450 33451 $('.animated-input input, .animated-input textarea').each(function () { 33452 33453 var text_val = $(this).val(); 33454 33455 if (text_val === "") { 33456 $(this).removeClass('has-value'); 33457 } else { 33458 $(this).addClass('has-value'); 33459 } 33460 }); 33461 33462}); 33463 33464 33465//--this adds a class to the button when it's active. Useful for turning it into a cross or something. 33466 33467$(document).ready(function() { 33468 $("#animated-menu-icon").on("click", function(){ 33469 33470 var activeClass = "animated-menu-icon--active"; 33471 33472 if ($(this).hasClass(activeClass)) { 33473 33474 $(this).removeClass(activeClass); 33475 } else { 33476 33477 $(this).addClass(activeClass); 33478 } 33479 }); 33480}); 33481 33482 33483//toggles desktop search dropdown 33484// function toggleSearch(){ 33485// $("#desktop-search-box").fadeToggle("fast","linear"); 33486// $(".desktop-search-box__input").focus(); 33487// } 33488 33489/* 33490 Evenup: 33491 Author: Matt Brunt <[email protected]> 33492 A way equalize the height of 'rows' of items responsively, that is, when the number of items per 'row' can change dynamically based on the size of the screen with your media queries. 33493 In the context of evenup - a 'row' is not necessarily a collection of items in a row container, it's best explained with an example: 33494 33495 Given 12 items in a grid with the following arrangement: 33496 large screen @ 4 x 3 33497 medium screen @ 3 x 4 33498 small screen @ 2 x 6 33499 33500 Effectively, it's just a collection of 12 items: 33501 33502 In foundation w/ Emmet coding it'd be something like: 33503 .row>small-6.medium-4.large-3.columns*12 33504 33505 Now on a large screen, we want 'rows' of 4 items equal heights, but then on medium, rows of 3, on small, rows of 2 33506 33507 Foundation has a built in equalizer, but that equalizes all items within a collection, so one row with shorter items will still be the same height as the largest item in the whole group. 33508 33509 This plugin for jQuery solves the issue of having 'rows' of items equal heights on various screen sizes. 33510 33511 Usage: 33512 33513 On the wrappers around the items you want to make even, you must specify the number of items at each of your breakpoints, if not, it won't work. 33514 33515 <div class="row" data-evenup data-options='{ "small": 2, "medium": 4, "large": 5 }'> 33516 33517 </div> 33518 33519 Then within that block, you assign data-evenup-item to the things you want to make the same height: 33520 33521 <div class="small-6 medium-4 large-3 columns" data-evenup-item> 33522 33523 </div> 33524 33525 Then you just need to run the evenup plugin like so: 33526 33527 $(document).ready(function() { 33528 var breakpoints = { small: 0, medium: 641, large: 1025 }; 33529 $('[data-evenup]').evenup(breakpoints); 33530 }); 33531 33532 33533 33534 */ 33535(function($) { 33536 33537 $.fn.evenup = function(breakpoints) { 33538 // loop through each one of the evenups we have 33539 this.each(function() { 33540 33541 var options = $(this).data('options'); // data-options='{ "breakpointLabel": numItems }' 33542 33543 if( ! options) return; // no options, just return 33544 33545 var windowWidth = window.innerWidth || $(window).width(); 33546 33547 // work out where we are in respect to our breakpoints 33548 var currentBreakpoint = ''; 33549 $.each(breakpoints, function( breakpointLabel, breakpointSize ) 33550 { 33551 if(windowWidth >= breakpointSize) 33552 { 33553 currentBreakpoint = breakpointLabel; 33554 } 33555 }); 33556 33557 // get our items to even up, count them, work out how many per 'row' for the breakpoint we're at. 33558 var evenupItems = $(this).find('[data-evenup-item]'); 33559 var count = evenupItems.length; 33560 var perRow = options[currentBreakpoint]; 33561 33562 // if we have items and we have a number per row set for the breakpoint we've found 33563 if(evenupItems.length > 0 && perRow) 33564 { 33565 // set the height on all items to auto so it can correctly re-calculate the tallest item in a row 33566 evenupItems.height('auto'); 33567 33568 // how many rows do we have? 33569 var rows = Math.ceil(count/perRow); 33570 33571 // loop through our rows for the number per row we have at this breakpoint 33572 for(var i = 1; i <= rows; i++) 33573 { 33574 // reset the row height 33575 var rowHeight = 0; 33576 33577 // loop through the items in this row and assign the tallest item to rowHeight 33578 for(var j = 1; j <= perRow; j++) 33579 { 33580 var sliceStart = (i-1)*perRow+j-1; // get the starting item for the 'row' we're in 33581 var sliceEnd = (i-1)*perRow+j; // get the last item for the 'row' we're in 33582 33583 var thisHeight = evenupItems.slice(sliceStart, sliceEnd).height(); 33584 if(thisHeight > rowHeight) rowHeight = thisHeight; 33585 } 33586 33587 // set the height of the items on this row to the tallest item 33588 var sliceStart = (i-1)*perRow; // get the starting item for the 'row' we're in 33589 var sliceEnd = (i-1)*perRow+perRow; // get the last item for the 'row' we're in 33590 33591 evenupItems.slice(sliceStart, sliceEnd).height(rowHeight); 33592 } 33593 } 33594 }); 33595 }; 33596}(jQuery)); 33597$(document).ready(function() { 33598 if ($("[data-gallery]").length > 0) { 33599 loadResource('js/packery.min.js', 'js', function () { 33600 loadResource('js/html5lightbox.min.js', 'js', function () { 33601 (function ($) { 33602 $.fn.rePackerise = function () { 33603 this.packery('destroy'); 33604 this.packery({ 33605 // options 33606 itemSelector: '.grid-item', 33607 gutter: 0 33608 }); 33609 } 33610 })(jQuery); 33611 }); 33612 }); 33613 } 33614}); 33615// an ajax call to load more items to a list. 33616// used for gallery items, testimonials list, news & events 33617// limitation - can only be one of these per page because it uses a class to identify a div with data attributes, & if that's not unique will get confused 33618function loadMore(source, listClass, button, filter) { 33619 33620 var currentY = $(document).scrollTop(); 33621 33622 if ($(listClass)[0].hasAttribute("data-offset")) { 33623 var offset = $(listClass).attr("data-offset"); 33624 } 33625 33626 if ($(listClass)[0].hasAttribute("data-limit")) { 33627 var limit = $(listClass).attr("data-limit"); 33628 } 33629 33630 if ($(listClass)[0].hasAttribute("data-total-items")) { 33631 var totalItems = $(listClass).attr("data-total-items"); 33632 } 33633 33634 if ($(listClass)[0].hasAttribute("data-sort")) { 33635 var sort = $(listClass).attr("data-sort"); 33636 } 33637 33638 var updatedOffset = parseInt(offset) + parseInt(limit); 33639 33640 $.get("ajax/"+source+"/load-more?offset=" + offset + "&limit=" + limit + '&sort=' + sort + '&filter1=' + filter, function (data) { 33641
33642 $(data).appendTo(listClass).hide().fadeIn(1000); 33643 33644 // init lazy load on new elements 33645 $(listClass).find(".lazy").each(function () { 33646 btbLazyLoad($(this)); 33647 }); 33648 33649 //--amend the offset param 33650 $(listClass).attr("data-offset", updatedOffset); 33651 33652 console.log(updatedOffset); 33653 console.log(totalItems); 33654 33655 if (updatedOffset >= totalItems) { 33656 $(button).remove(); 33657 } 33658 33659 // reload packery as we now have more elements in dom 33660 if ($.fn.rePackerise) { 33661 $(".grid").rePackerise(); 33662 } 33663 33664 //--run F6's Equalizer to match heights of new items 33665 new Foundation.Equalizer($(listClass)).applyHeight(); 33666 33667 //console.log('trying to keep scroll at ' + currentY); 33668 $('html, body').animate({scrollTop: currentY}, 0); 33669 33670 //--reinitialise the gallery lightboxes 33671 if ($.fn.html5lightbox) { 33672 $(".html5lightbox").html5lightbox(); 33673 } 33674 33675 33676 }); 33677} 33678 33679$(document).ready(function() { 33680 33681 $(window).on('resize load', function() { 33682 33683 // init evenup plugin 33684 var breakpoints = { small: 0, medium: 641, large: 1025 }; 33685 $('[data-evenup]').evenup(breakpoints); 33686 33687 }); 33688 33689 33690 $(document).foundation(); 33691 33692}); 33693 33694 33695 33696 33697 33698 33699 33700$(document).ready(function() { 33701 33702 var $animation_elements = $('.reveal-on-scroll'); 33703 var $window = $(window); 33704 33705 function check_if_in_view() { 33706 var window_height = $window.height(); 33707 var window_top_position = $window.scrollTop(); 33708 var window_bottom_position = (window_top_position + window_height); 33709 33710 $.each($animation_elements, function() { 33711 var $element = $(this); 33712 var element_height = $element.outerHeight(); 33713 var element_top_position = $element.offset().top; 33714 var element_bottom_position = (element_top_position + element_height); 33715 33716 //check to see if this current container is within viewport 33717 if ((element_bottom_position >= window_top_position) && 33718 (element_top_position <= window_bottom_position)) { 33719 $element.addClass('in-view'); 33720 } else { 33721 //$element.removeClass('in-view'); 33722 } 33723 }); 33724 } 33725 33726 $window.on('scroll resize', check_if_in_view); 33727 $window.trigger('scroll'); 33728}); 33729//toggles search dropdown 33730function toggleSearch(){ 33731 33732 var searchBox = $("#search-box"); 33733 var mobileSearchBtn = $("#search-btn-mobile"); 33734 var mobileSearchCloseBtn = $("#search-btn-close-mobile"); 33735 33736 searchBox.toggleClass("search-box--active"); 33737 33738 if(searchBox.hasClass("search-box--active")){ 33739 33740 33741 searchBox.fadeIn(400,"linear"); 33742 mobileSearchBtn.fadeOut(400,"linear"); 33743 mobileSearchCloseBtn.fadeIn(400,"linear",function(){ 33744 console.log("faded in"); 33745 $(".search-box__input").focus(); 33746 }); 33747 }else { 33748 searchBox.fadeOut(400,"linear"); 33749 mobileSearchBtn.fadeIn(400,"linear"); 33750 mobileSearchCloseBtn.fadeOut(400,"linear"); 33751 } 33752} 33753 33754$(document).ready(function() { 33755 33756 $(".share-btn__button").on("click", function() { 33757 33758 if ($(".share-btn").hasClass("share-btn--expanded")){ 33759 $(this).parents(".share-btn").removeClass("share-btn--expanded"); 33760 }else{ 33761 $(this).parents(".share-btn").addClass("share-btn--expanded"); 33762 } 33763 33764 33765 }); 33766}); 33767//--smooth scroll 33768$(document).ready(function() { 33769 //--scroll down to the "scroll-instruction" element (itself) 33770 $("a.scroll-instruction").on("click", function() { 33771 $('html, body').animate({ 33772 scrollTop: $(window).height() 33773 }, 500); 33774 return false; 33775 }); 33776 //--scroll to top of page 33777 $("a.back-to-top").on("click", function() { 33778 $('html, body').animate({ 33779 scrollTop: 0 33780 }, 500); 33781 return false; 33782 }); 33783 33784 //-- scroll to element with id we specify 33785 //-- e.g. <button data-scroll-to="here"> finds <div id="here"> 33786 $(document).on("click", "[data-scroll-to]", function() { 33787 var elementIdString = $(this).data("scroll-to"); 33788 33789 //--get height of topbar 33790 var topBarHeight = 64; 33791 33792 if($('.top-nav-desktop').height() >
33792 topBarHeight) { 33793 topBarHeight = $('.top-nav-desktop').height(); 33794 } 33795 33796 var scrollTo = $("#"+elementIdString).offset().top - topBarHeight; 33797 console.log(scrollTo); 33798 $("html, body").animate({scrollTop: scrollTo}); 33799 }); 33800 33801 33802 // Add smooth scrolling to all internal links 33803 $('a[href*="#"]') 33804 // Remove links that don't actually link to anything 33805 .not('[href="#"]') 33806 .not('[href="#0"]') 33807 .click(function(event) { 33808 // On-page links 33809 if ( 33810 location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') 33811 && 33812 location.hostname == this.hostname 33813 ) { 33814 // Figure out element to scroll to 33815 var target = $(this.hash); 33816 target = target.length ? target : $('[name=' + this.hash.slice(1) + ']'); 33817 // Does a scroll target exist? 33818 if (target.length) { 33819 // Only prevent default if animation is actually gonna happen 33820 event.preventDefault(); 33821 //--get height of topbar 33822 var topBarHeight = 64; 33823 33824 if($('.top-nav-desktop').height() > topBarHeight) { 33825 topBarHeight = $('.top-nav-desktop').height(); 33826 } 33827 33828 $('html, body').animate({ 33829 scrollTop: target.offset().top - topBarHeight 33830 }, 1000, function() { 33831 // Callback after animation 33832 // Must change focus! 33833 var $target = $(target); 33834 $target.focus(); 33835 if ($target.is(":focus")) { // Checking if the target was focused 33836 return false; 33837 } else { 33838 $target.attr('tabindex','-1'); // Adding tabindex for elements not focusable 33839 $target.focus(); // Set focus again 33840 }; 33841 }); 33842 } 33843 } 33844 }); 33845}); 33846 33847// Removes tel: links on desktop and adds them on mobile 33848 33849$(document).ready(function() { 33850 33851 $(window).on("load resize", function() { 33852 33853 if(winSize("small")) { 33854 // add tel: links 33855 $("a[data-tel-link]").each(function() { 33856 $(this).attr("href", $(this).data("tel-link")); 33857 }); 33858 } else { 33859 // remove tel: links 33860 $("a[href^='tel:']").each(function() { 33861 $(this).attr("data-tel-link", $(this).attr("href")).removeAttr("href"); 33862 }); 33863 } 33864 33865 }); 33866 33867}); 33868document.addEventListener("scroll", function () { 33869 var topbarTopHeight = document.getElementById('top-bar-top').offsetHeight; 33870 33871 const distanceFromTop = Math.abs( 33872 document.body.getBoundingClientRect().top 33873 ); 33874 33875 if (distanceFromTop >= topbarTopHeight){ 33876 document.body.classList.add("top-nav-desktop-fixed"); 33877 } else { 33878 document.body.classList.remove("top-nav-desktop-fixed"); 33879 } 33880 33881 if (distanceFromTop >= topbarTopHeight + 50){ 33882 document.body.classList.add("sticky-active"); 33883 } else { 33884 document.body.classList.remove("sticky-active"); 33885 } 33886}); 33887function toggleMenuMobile() { 33888 33889 var expandableMenu = $('#top-nav-mobile'); 33890 var menuButton = $("#animated-menu-icon"); 33891 var overlay = $('#mobile-nav-overlay'); 33892 var expandableClass = "top-nav-mobile--active"; 33893 var overlayShowClass = "mobile-nav-overlay--active"; 33894 var overlayHideClass = "mobile-nav-overlay--hide"; 33895 33896 //--toggle the menu 33897 expandableMenu.toggleClass(expandableClass); 33898 33899 if(expandableMenu.hasClass(expandableClass)){ 33900 33901 //--menu is being opened 33902 expandableMenu.attr("aria-hidden", "false"); 33903 menuButton.attr("aria-expanded", "true"); 33904 33905 //-- show the overlay 33906 overlay.addClass(overlayShowClass); 33907 33908 } else { 33909 //-- menu is being closed 33910 expandableMenu.attr("aria-hidden", "true"); 33911 menuButton.attr("aria-expanded", "false"); 33912 33913 //-- hide the overlay, giving it chance to animate out 33914 overlay.addClass(overlayHideClass); 33915 33916 setTimeout(function() { 33917 overlay.removeClass(overlayShowClass); 33918 overlay.removeClass(overlayHideClass); 33919 }, 800); 33920 } 33921} 33922 33923 33924$(document).ready(function() { 33925 33926 //--remove initial styles that setup the menu 33927 $('#top-nav-mobile').removeClass("top-nav-mobile--initial"); 33928 $('#mobile-nav-overlay').removeClass("mobile-nav-overlay--initial"); 33929 33930 //--close mobile menu if esc pressed 33931 document.onkeydown = function (evt) { 33932 evt = evt || window.event; 33933 if (evt.key == "Escape") { 33934 33935 var mobMenu = $("#top-nav-mobile"); 33936 var mobMenuBtn = $('#animated-menu-icon'); 33937 33938 if (mobMenu.attr('aria-hidden') == 'false') { 33939 mobMenuBtn.trigger("click"); 33940 } 33941 } 33942 }; 33943}); 33944 33945 33946//--wrap an iframe in a copy with F6 youtube classes 33947$(document).ready(function() { 33948 33949 $(".copy iframe").each(function () { 33950 $(this).wrap( "<div class='responsive-embed widescreen'></div>" ); 33951 }) 33952}); 33953//--our video component only works for youtube 33954 33955function playVideo(embed) { 33956 var iframe = '' + 33957 '<iframe width="1280" height="720" src="https://www.youtube.com/embed/' 33958 + embed + 33959 '?rel=0&controls=1&showinfo=0&autoplay=1" frameborder="0" allowfullscreen=""></iframe>'; 33960 $('#video' + embed).html(iframe); 33961} 33962 33963function stopVideo(embed) { 33964 $('#video' + embed).empty(); 33965} 33966 33967$(document).ready(function() { 33968 33969 //--stop the video when the lightbox is closed 33970 $('.video__lightbox').on('closed.zf.reveal', function() { 33971 var embed = $(this).attr("data-embed"); 33972 console.log("stop video "+embed); 33973 stopVideo(embed); 33974 }); 33975}); 33976 33977// check if window size is 'small','medium','large','medium-up','medium-down' 33978 33979function winSize(size) { 33980 var large = 1025; 33981 var medium = 640; 33982 var width = window.innerWidth || $(window).width(); 33983 var returnVar = false;
33984 33985 if( (size == 'large' && width >= large) || 33986 (size == 'medium' && width >= medium && width < large) || 33987 (size == 'small' && width < medium) || 33988 (size == 'medium-up' && width >= medium) || 33989 (size == 'medium-down' && width < large) ) 33990 returnVar = true; 33991 33992 return returnVar; 33993} 33994function toggleAnnieModal() { 33995 var annieModal = document.getElementById('ask-annie-modal'); 33996 var annieAvatar = document.getElementById('ask-annie-avatar'); 33997 var annieCross = document.getElementById('ask-annie-cross'); 33998 33999 var annieInitial = document.getElementById('ask-annie-initial-message'); 34000 var annieForm = document.getElementById('ask-annie-form'); 34001 var annieSuccess = document.getElementById('ask-annie-success'); 34002 34003 const url = new URL(window.location); 34004 34005 if (annieInitial) { 34006 if (annieModal.classList.contains("active")) { 34007 if (url.searchParams.has('success')) { 34008 console.log('Success param detected, removing it...'); 34009 url.searchParams.delete('success'); 34010 window.history.replaceState({}, document.title, url); 34011 34012 annieModal.classList.remove("active"); 34013 annieAvatar.classList.add("active"); 34014 annieCross.classList.remove("active"); 34015 annieSuccess.classList.remove("active"); 34016 } else { 34017 annieModal.classList.remove("active"); 34018 annieAvatar.classList.add("active"); 34019 annieCross.classList.remove("active"); 34020 //Reset the state of the modal 34021 annieInitial.classList.add("active"); 34022 } 34023 } else { 34024 annieModal.classList.add("active"); 34025 annieAvatar.classList.remove("active"); 34026 annieCross.classList.add("active"); 34027 annieInitial.classList.add("active"); 34028 } 34029 } else { 34030 if (annieModal.classList.contains("active")) { 34031 if (url.searchParams.has('success')) { 34032 console.log('Success param detected, removing it...'); 34033 url.searchParams.delete('success'); 34034 window.history.replaceState({}, document.title, url); 34035 annieModal.classList.remove("active"); 34036 annieAvatar.classList.add("active"); 34037 annieCross.classList.remove("active"); 34038 annieSuccess.classList.remove("active"); 34039 annieModal.style.width = "300px"; 34040 } else { 34041 annieModal.classList.remove("active"); 34042 annieAvatar.classList.add("active"); 34043 annieCross.classList.remove("active"); 34044 //Reset the state of the modal 34045 annieForm.classList.add("active"); 34046 annieModal.style.width = "300px"; 34047 } 34048 } else { 34049 annieModal.classList.add("active"); 34050 annieAvatar.classList.remove("active"); 34051 annieCross.classList.add("active"); 34052 annieForm.classList.add("active"); 34053 annieModal.style.width = "300px"; 34054 } 34055 } 34056} 34057 34058document.addEventListener("DOMContentLoaded", () => { 34059 const url = new URL(window.location); 34060 34061 var annieAvatar = document.getElementById('ask-annie-avatar'); 34062 var annieCross = document.getElementById('ask-annie-cross'); 34063 var annieModal = document.getElementById('ask-annie-modal'); 34064 var annieSuccess = document.getElementById('ask-annie-success'); 34065 var annieForm = document.getElementById('ask-annie-form'); 34066 var annieInitial = document.getElementById('ask-annie-initial-message'); 34067 34068 if (annieForm) { 34069 if (url.searchParams.has('success')) { 34070 annieAvatar.classList.remove("active"); 34071 annieForm.classList.remove("active"); 34072 annieCross.classList.add("active"); 34073 34074 annieModal.classList.add("active"); 34075 annieSuccess.classList.add("active"); 34076 } 34077 } else { 34078 if (url.searchParams.has('success')) { 34079 annieAvatar.classList.remove("active"); 34080 annieInitial.classList.remove("active"); 34081 annieCross.classList.add("active"); 34082 34083 annieModal.classList.add("active"); 34084 annieSuccess.classList.add("active"); 34085 } 34086 } 34087 34088}); 34089 34090// function cookieConsentRevoked(name) { 34091// window.dataLayer = window.dataLayer || []; 34092// window.dataLayer.push({'event': 'cookie_consent_revoked_' + name}); 34093// var obj = {}; 34094// obj['cookie_consent_revoked_' + name] = 'true'; 34095// window.dataLayer.push(obj); 34096// document.cookie = "cookieconsent=null; path=/"; 34097// } 34098// 34099// function cookieConsentAccepted(name) { 34100// window.dataLayer = window.dataLayer || []; 34101// window.dataLayer.push({'event': 'cookie_consent_given_' + name}); 34102// var obj = {}; 34103// obj['cookie_consent_given_' + name] = 'true'; 34104// window.dataLayer.push(obj); 34105// document.cookie = "cookieconsent=actioned; path=/"; 34106// } 34107 34108$(document).ready(function () { 34109 34110 var config = { 34111 apiKey: '2fca2aa8be5d7f838bcbe8edea7efad320cb645f', 34112 product: 'PRO_MULTISITE', 34113 consentCookieExpiry: 90, 34114 initialState: "notify", 34115 position: "LEFT", 34116 theme: "DARK", 34117 notifyDismissButton: 'false',
34118 rejectButton: false, 34119 settingsStyle: 'button', 34120 // closeStyle: 'button', 34121 necessaryCookies: ['exp_*', 'PHPSESSID', 'phpbb3*', 'remember', 'style_cookie', 'cookieconsent'], 34122 optionalCookies: [ 34123 { 34124 name: 'analytical', 34125 label: 'Analytical Cookies', 34126 description: 'Analytical cookies help us to improve our website by collecting and reporting information on its usage.', 34127 cookies: ['_ga', '_gid', '_gat*', '__utma', '__utmt', '__utmb', '__utmc', '__utmz', '__utmv'], 34128 onAccept: function () { 34129 window.dataLayer = window.dataLayer || []; 34130 window.dataLayer.push({'event': 'cookie_consent_given_analytical'}); 34131 }, 34132 onRevoke: function () { 34133 window.dataLayer = window.dataLayer || []; 34134 window.dataLayer.push({'event': 'cookie_consent_revoked_analytical'}); 34135 }, 34136 thirdPartyCookies: [ 34137 { 34138 'name': 'Google', 34139 'optOutLink': 'https://policies.google.com/technologies/cookies' 34140 }, 34141 { 34142 'name': 'Google Ads', 34143 'optOutLink': 'https://adssettings.google.com/' 34144 } 34145 ] 34146 }, 34147 { 34148 name: 'marketing', 34149 label: 'Marketing Cookies', 34150 description: 'We use marketing cookies that store user data and behaviour information. Collecting data helps us target our audience a lot more effectively according to variables.', 34151 cookies: ['uuid2', 'TDID', 'TDCPM', 'bkdc', 'bku', '_cc_cc', '_cc_dc', '_cc_id', '_cc_aud', 'demdex', 34152 'test_cookie', 'IDE', 'dpm', 'fr', 'ck', 'oo', 'pt', 'cu', 'ci_rtc', 'uuid', 'uuidc', 'SEUNCY', 34153 'OT2', 'u2', 'ActivityInfo2', 'TapAd_TS', 'TapAd_DID', 'tidal_ttid', 'sync-his', 'ANON_ID', 34154 '_tmid', 'uid', 'personalization_id', 'wfivefivec', 'matchaddthis', 'wui', 'wam-sync', 'AFFICHE_W', 34155 'OT_8149', 'lang', '__gads', '__gac'], 34156 onAccept: function () { 34157 window.dataLayer = window.dataLayer || []; 34158 window.dataLayer.push({'event': 'cookie_consent_given_marketing'}); 34159 }, 34160 onRevoke: function () { 34161 window.dataLayer = window.dataLayer || []; 34162 window.dataLayer.push({'event': 'cookie_consent_revoked_marketing'}); 34163 }, 34164 thirdPartyCookies: [ 34165 { 34166 'name': 'Facebook', 34167 'optOutLink': 'https://en-gb.facebook.com/policies/cookies/' 34168 } 34169 ] 34170 } 34171 ], 34172 text: { 34173 accept: "Accept", 34174 settings: "Manage Cookies", 34175 acceptSettings: "Accept Recommended Cookies", 34176 notifyTitle: "We care about your privacy" 34177 }, 34178 branding: { 34179 acceptBackground: "#FFFFFF", 34180 acceptText: "#313147", 34181 buttonIcon: null, 34182 removeAbout: true 34183 }, 34184 accessibility: { 34185 //If set to true (default), can't navigate page without 34186 overlay: false, 34187 } 34188 }; 34189 34190 CookieControl.load(config); 34191 34192}); 34193function DocumentListing() { 34194 var 34195 classes = { 34196 tabHandleActive: 'active', 34197 }, 34198 selectors = { 34199 listContainer: '[data-entry-creation-list]', 34200 listMinifiedContainer: '[data-entry-creation-list-minified]', 34201 filter: '[data-entry-creation-filter]', 34202 filterForm: '[data-entry-creation-filter-form]', 34203 mapFiltersContainer: '[data-entry-creation-map-filters]', 34204 listFiltersContainer: '[data-entry-creation-list-filters]', 34205 paginationContainer: '[data-entry-creation-pagination]', 34206 paginationContainerMinified: '[data-entry-creation-pagination-minified]', 34207 paginationLink: '[data-entry-creation-pagination] a[href]', 34208 tab: '[data-entry-creation-tab]', 34209 tabHandle: '[data-entry-creation-tab-handle]' 34210 }, 34211 34212 listContainer = $(selectors.listContainer), 34213 listMinifiedContainer = $(selectors.listMinifiedContainer), 34214 paginationContainer = $(selectors.paginationContainer), 34215 paginationMinifiedContainer = $(selectors.paginationContainerMinified), 34216 34217 showPreloader = function () { 34218 $('#loading').show(); 34219 }, 34220 hidePreloader = function () { 34221 $('#loading').hide(); 34222 }, 34223 34224 // AJAX success handler 34225 onAjaxLoaded = function (data) { 34226 var result = $(data), 34227 pagination = result.find(selectors.paginationContainerMinified).html() || '', 34228 list = result.find(selectors.listContainer).html() || '', 34229 listMinified = result.find(selectors.listMinifiedContainer).html() || ''; 34230 searchSummary = result.find('[data-entry-creation-search-summary]').html() || ''; 34231 34232 listContainer.html(list); 34233 paginationContainer.html(pagination); 34234 34235 listMinifiedContainer.html(listMinified); 34236 paginationMinifiedContainer.html(pagination); 34237 34238 if (searchSummary) { 34239 $('[data-entry-creation-search-summary]').html(searchSummary); 34240 } else { 34241 $('[data-entry-creation-search-summary]').remove(); // if no keyword 34242 } 34243 34244 $(listContainer).find(".lazy").each(function () { 34245 btbLazyLoad($(this)); 34246 }); 34247 34248 hidePreloader(); 34249 }, 34250 34251 // Handle pagination links 34252 onPaginationClick = function (e) { 34253 e.preventDefault(); 34254 showPreloader(); 34255 var url = $(e.currentTarget).attr('href'); 34256 $.get(url, { skipMap: 1 }, onAjaxLoaded); 34257 history.pushState(url, null, url); 34258 }, 34259 34260 // Handle filter form submit (AJAX) 34261 onFilterFormSubmit = function (e) { 34262 if (e) e.preventDefault(); 34263 showPreloader(); 34264 34265 var windowUrl = window.location.href.split('?')[0]; 34266 var regex = /[a-zA-Z]\d$/; 34267 34268 if (regex.test(windowUrl) === true) { 34269 windowUrl = windowUrl.slice(0, -3); 34270 } 34271 34272 var url = windowUrl + '?' + $(selectors.filterForm).serialize(); 34273 $.get(url, onAjaxLoaded); 34274 history.pushState(url, null, url); 34275 }, 34276 34277 onHistoryPopstate = function (e) { 34278 if (!e.state) return; 34279 window.location.replace(e.state); 34280 }, 34281 34282 moveFilters = function () { 34283 var from, to; 34284 if ($(selectors.mapFiltersContainer).find(selectors.filterForm).length > 0) { 34285 from = $(selectors.mapFiltersContainer); 34286 to = $(selectors.listFiltersContainer); 34287 } else { 34288 from = $(selectors.listFiltersContainer); 34289 to = $(selectors.mapFiltersContainer); 34290 } 34291 from.children().appendTo(to); 34292 }, 34293 34294 toggleTabs = function () {
34295 $(selectors.tabHandle).toggleClass(classes.tabHandleActive); 34296 $(selectors.tab).toggle(); 34297 moveFilters(); 34298 }, 34299 34300 init = function () { 34301 $(document).off('change', selectors.filter) 34302 .on('change', selectors.filter, onFilterFormSubmit); 34303 34304 $(document).off('submit', selectors.filterForm) 34305 .on('submit', selectors.filterForm, onFilterFormSubmit); 34306 34307 $(document).off('click', selectors.paginationLink) 34308 .on('click', selectors.paginationLink, onPaginationClick); 34309 34310 $(document).off('click', selectors.tabHandle + ':not(.' + classes.tabHandleActive + ')') 34311 .on('click', selectors.tabHandle + ':not(.' + classes.tabHandleActive + ')', toggleTabs); 34312 34313 window.addEventListener('popstate', onHistoryPopstate); 34314 }; 34315 34316 this.showPreloader = showPreloader; 34317 this.hidePreloader = hidePreloader; 34318 this.submitFilterForm = onFilterFormSubmit; 34319 34320 init(); 34321} 34322 34323$(document).ready(function () { 34324 window.documentListing = new DocumentListing(); 34325}); 34326 34327function EventsList() { 34328 var 34329 classes = { 34330 tabHandleActive: 'active', 34331 }, 34332 selectors = { 34333 listContainer: "[events-list]", 34334 filter: "[events-list-filter]", 34335 filterForm: "[events-list-filter-form]", 34336 mapFiltersContainer: '[data-entry-creation-map-filters]', 34337 listFiltersContainer: "[events-list-list-filters]", 34338 paginationContainer: "[events-list-pagination]", 34339 paginationLink: "[events-list-pagination] a[href]", 34340 tab: "[events-list-tab]", 34341 tabHandle: "[events-list-tab-handle]", 34342 }, 34343 listContainer = $(selectors.listContainer), 34344 paginationContainer = $(selectors.paginationContainer), 34345 showPreloader = function () { 34346 $("#loading").show(); 34347 }, 34348 hidePreloader = function () { 34349 $("#loading").hide(); 34350 }, 34351 submitFilterForm = function () { 34352 $(selectors.filterForm).submit(); 34353 }, 34354 onAjaxLoaded = function (data) { 34355 var result = $(data), 34356 pagination = result.find(selectors.paginationContainer).html() || "", 34357 list = result.find(selectors.listContainer).html() || ""; 34358 34359 listContainer.html(list); 34360 paginationContainer.html(pagination); 34361 34362 $(listContainer) 34363 .find(".lazy") 34364 .each(function () { 34365 btbLazyLoad($(this)); 34366 }); 34367 34368 hidePreloader(); 34369 }, 34370 onPaginationClick = function (e) { 34371 e.preventDefault(); 34372 showPreloader(); 34373 var url = $(e.target).attr("href"); 34374 $.get(url, { skipMap: 1 }, onAjaxLoaded); 34375 history.pushState(url, null, url); 34376 }, 34377 onFilterFormSubmit = function (e) { 34378 e.preventDefault(); 34379 showPreloader(); 34380 34381 var windowUrl = window.location.href.split("?")[0]; 34382 var regex = /[a-zA-Z]\d$/; 34383 34384 if (regex.test(windowUrl) === true) { 34385 windowUrl = windowUrl.slice(0, -3); 34386 } 34387 34388 var url = windowUrl + "?" + $(this).serialize(); 34389 $.get(url, onAjaxLoaded); 34390 history.pushState(url, null, url); 34391 }, 34392 onHistoryPopstate = function (e) { 34393 if (!e.state) { 34394 return; 34395 } 34396 window.location.replace(e.state); 34397 }, 34398 34399 init = function () { 34400 $(document).on("change", selectors.filter, submitFilterForm); 34401 $(document).on("submit", selectors.filterForm, onFilterFormSubmit); 34402 $(document).on("click", selectors.paginationLink, onPaginationClick); 34403 34404 window.addEventListener("popstate", onHistoryPopstate); 34405 }; 34406 34407 this.showPreloader = showPreloader; 34408 this.hidePreloader = hidePreloader; 34409 this.submitFilterForm = submitFilterForm; 34410 34411 init(); 34412} 34413 34414$(document).ready(function () { 34415 34416 window.documentListing = new EventsList(); 34417 34418}); 34419 34420$(document) 34421 .off("click", ".filter__icon") 34422 .on("click", ".filter__icon", function () { 34423 console.log($(this)); 34424 $(this).toggleClass("active"); 34425 $(this).siblings(".filter__checkboxes").toggleClass("active"); 34426 }); 34427 34428function toggleFilters() { 34429 var filters = document.getElementById('filterExpander'); 34430 var tint = document.getElementById('popout-tint'); 34431 34432 filters.classList.toggle('active'); 34433 tint.classList.toggle('active'); 34434} 34435 34436function ProductsList(element) { 34437 var $component = $(element); 34438 34439 var config = { 34440 ajaxUrl: $component.data('ajax-url'), 34441 itemSelector: $component.data('item-selector'), 34442 itemName: $component.data('item-name') || 'item', 34443 itemNamePlural: $component.data('item-name-plural') || 'items' 34444 }; 34445 34446 var selectors = { 34447 productsList: '.product-list', 34448 productsListWrapper: '.product-list__wrapper', 34449 filters: '#filterExpander .filter input', 34450 search: '.filters__search-input', 34451 amount: '[data-product-amount]', 34452 pagination: '[data-product-pagination]' 34453 }, 34454 34455 classes = { 34456 productsListWrapperLoading: 'product-list__wrapper--loading' 34457 }, 34458 34459 filters = function () { 34460 return $(selectors.filters) 34461 .filter(':checked') 34462 .map(function () { 34463 return '&' + 34464 encodeURIComponent($(this).attr('name')) + 34465 '=' + 34466 encodeURIComponent($(this).val()); 34467 }) 34468 .get(); 34469 }, 34470 34471 totalItems = function () { 34472 return parseInt( 34473 $(selectors.productsList).attr('data-total-items'), 34474 10 34475 ); 34476 }, 34477 34478 limit = function () { 34479 return parseInt( 34480 $(selectors.productsList).attr('data-limit'), 34481 10 34482 ); 34483 }, 34484 34485 currentPage = function () { 34486 return parseInt( 34487 $(selectors.productsList).attr('data-current-page'), 34488 10 34489 ); 34490 }, 34491 34492 totalPages = function () { 34493 return parseInt( 34494 $(selectors.productsList).attr('data-total-pages'), 34495 10 34496 ); 34497 }, 34498 34499 search = function () { 34500 return $(selectors.search).val().trim(); 34501 }, 34502 updateSearchClear = function () { 34503 var $search = $(selectors.search); 34504 var $wrapper = $search.closest('.filters__search--input'); 34505 34506 $wrapper.toggleClass( 34507 'filters__search--has-value', 34508 $search.val().trim().length > 0 34509 ); 34510 }, 34511 ajaxUrl = function (offset, limit, filters, search) { 34512 var url = config.ajaxUrl + '?offset=' + offset + '&limit=' + limit; 34513 34514 url += filters.join(''); 34515 34516 if (search) { 34517 url += '&search=' + encodeURIComponent(search); 34518 } 34519 34520 return url; 34521 }, 34522 34523 showSpinner = function () { 34524 $(selectors.productsListWrapper)
34525 .addClass(classes.productsListWrapperLoading); 34526 }, 34527 34528 hideSpinner = function () { 34529 $(selectors.productsListWrapper) 34530 .removeClass(classes.productsListWrapperLoading); 34531 }, 34532 34533 updateAmount = function () { 34534 var total = totalItems(); 34535 var pageLimit = limit(); 34536 var page = currentPage(); 34537 var visible = $component.find(config.itemSelector).length; 34538 var searchTerm = search(); 34539 34540 if (searchTerm) { 34541 $(selectors.amount).text( 34542 total + ' result' + (total === 1 ? '' : 's') + 34543 ' for your search \u2018' + searchTerm + '\u2019' 34544 ); 34545 34546 return; 34547 } 34548 34549 if (total === 0) { 34550 $(selectors.amount).text( 34551 'Showing 0 ' + config.itemNamePlural 34552 ); 34553 return; 34554 } 34555 34556 var start = ((page - 1) * pageLimit) + 1; 34557 var end = start + visible - 1; 34558 34559 if (total <= pageLimit) { 34560 $(selectors.amount).text( 34561 'Showing ' + 34562 total + 34563 ' ' + 34564 (total === 1 ? config.itemName : config.itemNamePlural) 34565 ); 34566 } else { 34567 $(selectors.amount).text( 34568 'Showing ' + 34569 start + 34570 '–' + 34571 end + 34572 ' of ' + 34573 total + 34574 ' ' + 34575 config.itemNamePlural 34576 ); 34577 } 34578 }, 34579 34580 renderPagination = function () { 34581 var current = currentPage(); 34582 var total = totalPages(); 34583 var html = ''; 34584 34585 if (!total || total <= 1) { 34586 $(selectors.pagination).empty(); 34587 return; 34588 } 34589 34590 // Previous - always show 34591 html += 34592 '<button type="button" ' + 34593 'class="pagination-button pagination-button--previous" ' + 34594 'data-page="' + (current - 1) + '" ' + 34595 'aria-label="Previous page" ' + 34596 (current <= 1 ? 'disabled' : '') + 34597 '>' + 34598 '<img src="/images/icons/arrow-right-green-filter.svg" alt="">' + 34599 '</button>'; 34600 34601 // Page numbers 34602 for (var page = 1; page <= total; page++) { 34603 html += 34604 '<button type="button" ' + 34605 'class="pagination-button' + (page === current ? ' active' : '') + '" ' + 34606 'data-page="' + page + '"' + 34607 (page === current ? ' aria-current="page"' : '') + 34608 '>' + 34609 page + 34610 '</button>'; 34611 } 34612 34613 // Next - always show 34614 html += 34615 '<button type="button" ' + 34616 'class="pagination-button pagination-button--next" ' + 34617 'data-page="' + (current + 1) + '" ' + 34618 'aria-label="Next page" ' + 34619 (current >= total ? 'disabled' : '') + 34620 '>' + 34621 '<img src="/images/icons/arrow-right-green-filter.svg" alt="">' + 34622 '</button>'; 34623 34624 $(selectors.pagination).html(html); 34625 }, 34626 34627 replaceProducts = function (data) { 34628 var newList = $(data).filter(selectors.productsList); 34629 34630 $(selectors.productsList).replaceWith(newList); 34631 34632 btbLazyLoad( 34633 $(selectors.productsList).find('.lazy') 34634 ); 34635 34636 updateAmount(); 34637 renderPagination(); 34638 }, 34639 34640 reload = function () { 34641 var url = ajaxUrl( 34642 0, 34643 limit(), 34644 filters(), 34645 search() 34646 ); 34647 34648 showSpinner(); 34649 34650 $.get(url, function (data) { 34651 replaceProducts(data); 34652 hideSpinner(); 34653 }).fail(function () { 34654 hideSpinner(); 34655 }); 34656 }, 34657 34658 goToPage = function (page) { 34659 var pageLimit = limit(); 34660 var newOffset = (page - 1) * pageLimit; 34661 34662 var url = ajaxUrl( 34663 newOffset, 34664 pageLimit, 34665 filters(), 34666 search() 34667 ); 34668 34669 showSpinner(); 34670 34671 $.get(url, function (data) { 34672 replaceProducts(data); 34673 hideSpinner(); 34674 34675 $('html, body').animate({ 34676 scrollTop: $('[data-product-list]').offset().top - 100 34677 }, 300); 34678 34679 }).fail(function () { 34680 hideSpinner(); 34681 }); 34682 }; 34683 34684 this.reload = reload; 34685 34686 this.init = function () { 34687 var searchTimeout; 34688 renderPagination(); 34689 updateSearchClear(); 34690 $(document) 34691 .off('change.productsList', selectors.filters) 34692 .on('change.productsList', selectors.filters, function () { 34693 reload(); 34694 }) 34695 34696 .off('click.productsList', selectors.pagination + ' [data-page]') 34697 .on( 34698 'click.productsList', 34699 selectors.pagination + ' [data-page]', 34700 function () { 34701 var page = parseInt( 34702 $(this).attr('data-page'), 34703 10 34704 ); 34705 34706 goToPage(page); 34707 } 34708 ) 34709 34710 .off('input.productsList', selectors.search) 34711 .on('input.productsList', selectors.search, function () { 34712 clearTimeout(searchTimeout); 34713 34714 updateSearchClear(); 34715 34716 searchTimeout = setTimeout(function () { 34717 reload(); 34718 }, 300); 34719 }) 34720 34721 .off('click.productsList', '.filters__clear') 34722 .on('click.productsList', '.filters__clear', function () { 34723 $(selectors.search).val(''); 34724 34725 updateSearchClear(); 34726 reload(); 34727 34728 $(selectors.search).focus(); 34729 }); 34730 }; 34731} 34732 34733$(window).on('load', function () { 34734 $('[data-product-list]').each(function () { 34735 var productsList = new ProductsList(this);
34736 productsList.init(); 34737 }); 34738}); 34739$(document).ready(function () { 34740 // Select all buttons with the class 'hauc-contacts__option' 34741 function scrollToView() { 34742 const buttons = document.querySelectorAll(".hauc-contacts__option"); 34743 const mapRegions = document.querySelectorAll(".hauc-map-region"); 34744 const targetSection = document.getElementById("hauc-contacts-lists"); 34745 34746 buttons.forEach((button) => { 34747 button.addEventListener("click", function () { 34748 targetSection.scrollIntoView({ behavior: "smooth" }); 34749 }); 34750 }); 34751 mapRegions.forEach((region) => { 34752 region.addEventListener("click", function () { 34753 targetSection.scrollIntoView({ behavior: "smooth" }); 34754 }); 34755 }); 34756 } 34757 scrollToView(); 34758 34759 $(".hauc-contacts__option").on("click", function () { 34760 var region = $(this).data("region"); 34761 34762 removeActive(); 34763 addActive(this, "#hauc-contacts__" + region); 34764 showContacts(region); 34765 }); 34766 34767 $(".hauc-contacts__region").on("click", function () { 34768 var name = $(this).attr("id").split("__")[1]; 34769 var button = $(".hauc-contacts__option[data-region=" + name + "]"); 34770 34771 removeActive(); 34772 addActive(button, "#hauc-contacts__" + name); 34773 showContacts(name); 34774 }); 34775 34776 function removeActive() { 34777 $(".hauc-contacts__option").removeClass("active"); 34778 $(".hauc-contacts__region").removeClass("active"); 34779 } 34780 34781 function addActive(button, mapElement) { 34782 $(button).addClass("active"); 34783 $(mapElement).addClass("active"); 34784 } 34785 34786 function showContacts(slug) { 34787 $(".hauc-contacts__group").hide(); 34788 34789 var item = $(".hauc-contacts__group[data-region=" + slug + "]")[0]; 34790 34791 if ($(item).data("also")) { 34792 var _slug = $(item).data("also"); 34793 $(".hauc-contacts__group[data-region=" + _slug + "]").show(); 34794 } 34795 34796 $(item).show(); 34797 } 34798}); 34799 34800// $(document).ready(function() { 34801// 34802// if (document.body.classList.contains('homepage')){ 34803// var heroSplit = document.getElementsByClassName('hero-split').item(0); 34804// var topBarHeight = document.getElementById('top-bar-top').offsetHeight; 34805// 34806// console.log("screen " + window.innerHeight); 34807// 34808// heroSplit.style.height = window.innerHeight - topBarHeight + "px"; 34809// } 34810// 34811// }); 34812// $(document).ready(function(){ 34813// $(window).scroll(function(){ 34814// 34815// if ($(document).scrollTop() > 750) { 34816// $('#heroBannerVideo').get(0).pause(); 34817// } 34818// 34819// else if ($(document).scrollTop() < 650 ) { 34820// $('#heroBannerVideo').get(0).play(); 34821// } 34822// }); 34823// }); 34824$(document).ready(function() { 34825 $('.legislation__section h2').click(function () { 34826 $(this).toggleClass('active'); 34827 $(this).siblings().toggleClass('active'); 34828 }) 34829}); 34830$(document).ready(function() { 34831 34832 var notify = $("#notify"); 34833 34834 if (notify.length) { 34835 var notifyAlert = $(".notify__alert--inactive"); 34836 34837 //--check for a cookie/localstorage 34838 var closedCookie = window.localStorage.getItem('closedNotification'); 34839 34840 if (closedCookie === '0') { 34841 notify.removeClass("notify--collapsed"); 34842 } 34843 } 34844 34845 //--close the notification & set a cookie so we don't show it again 34846 $("#notify-close").on("click", function() { 34847 notify.addClass("notify--collapsed"); 34848 34849 setLocalStorageItem('closedNotification', 1) 34850 }); 34851 34852 //--close the notification & set a cookie so we don't show it again 34853 $(notifyAlert).on("click", function() { 34854 notify.removeClass("notify--collapsed"); 34855 34856 setLocalStorageItem('closedNotification', 0) 34857 }); 34858 34859 function setLocalStorageItem(name, val) { 34860 window.localStorage.setItem(name, val); 34861 } 34862}); 34863function ProjectListing() { 34864 var 34865 selectors = { 34866 listContainer: '[project-listing]', 34867 filter: '[project-listing-filter]', 34868 filterForm: '[project-listing-filter-form]', 34869 listFiltersContainer: '[project-listing-list-filters]', 34870 paginationContainer: '[project-listing-pagination]', 34871 paginationLink: '[project-listing-pagination] a[href]', 34872 tab: '[project-listing-tab]', 34873 tabHandle: '[project-listing-tab-handle]' 34874 }, 34875 34876 listContainer = $(selectors.listContainer), 34877 paginationContainer = $(selectors.paginationContainer), 34878 showPreloader = function () { 34879 $('#loading').show(); 34880 }, 34881 hidePreloader = function () { 34882 $('#loading').hide(); 34883 }, 34884 submitFilterForm = function () { 34885 $(selectors.filterForm).submit(); 34886 }, 34887 onAjaxLoaded = function (data) { 34888 var result = $(data), 34889 pagination = result.find(selectors.paginationContainer).html() || '', 34890 list = result.find(selectors.listContainer).html() || ''; 34891 34892 listContainer.html(list); 34893 paginationContainer.html(pagination); 34894 34895 $(listContainer).find(".lazy").each(function () { 34896 btbLazyLoad($(this)); 34897 }); 34898 34899 34900 hidePreloader(); 34901 }, 34902 onPaginationClick = function (e) { 34903 e.preventDefault(); 34904 showPreloader(); 34905 var url = $(e.target).attr('href');
34906 $.get(url, {skipMap: 1}, onAjaxLoaded); 34907 history.pushState(url, null, url); 34908 }, 34909 onFilterFormSubmit = function (e) { 34910 e.preventDefault(); 34911 showPreloader(); 34912 34913 var windowUrl = window.location.href.split('?')[0]; 34914 var regex = /[a-zA-Z]\d$/; 34915 34916 if (regex.test(windowUrl) === true) { 34917 windowUrl = windowUrl.slice(0, -3); 34918 } 34919 34920 var url = windowUrl + '?' + $(this).serialize(); 34921 $.get(url, onAjaxLoaded); 34922 history.pushState(url, null, url); 34923 }, 34924 onHistoryPopstate = function (e) { 34925 if (!e.state) { 34926 return; 34927 } 34928 window.location.replace(e.state); 34929 }, 34930 34931 init = function () { 34932 34933 $(document).on('change', selectors.filter, submitFilterForm); 34934 $(document).on('submit', selectors.filterForm, onFilterFormSubmit); 34935 $(document).on('click', selectors.paginationLink, onPaginationClick); 34936 34937 window.addEventListener('popstate', onHistoryPopstate); 34938 }; 34939 34940 this.showPreloader = showPreloader; 34941 this.hidePreloader = hidePreloader; 34942 this.submitFilterForm = submitFilterForm; 34943 34944 init(); 34945} 34946 34947$(document).ready(function () { 34948 window.projectListing = new ProjectListing(); 34949}); 34950 34951 34952$(document).ready(function () { 34953 $(document) 34954 .off("click", ".team-member") 34955 .on("click", ".team-member", function () { 34956 console.log("click"); 34957 34958 $(this).siblings(".team-member__content").slideUp(300); 34959 $(this).siblings(".team-member").removeClass("active"); 34960 34961 $(this).toggleClass("active"); 34962 34963 if ($(this).hasClass("active")) { 34964 $(this).next(".team-member__content").slideDown(300); 34965 } 34966 }); 34967}); 34968 34969function TeamMembers() { 34970 var selectors = { 34971 categoryButton: "button.team-members__category", 34972 teamMembersContainer: "[team-members-list]", 34973 }, 34974 teamMembersContainer = $(selectors.teamMembersContainer), 34975 showPreloader = function () { 34976 $("#loading").show(); 34977 }, 34978 hidePreloader = function () { 34979 $("#loading").hide(); 34980 }, 34981 onButtonClicked = function (e) { 34982 e.preventDefault(); 34983 34984 $(selectors.categoryButton).removeClass("active"); 34985 e.target.classList.add("active"); 34986 34987 var id = e.target.getAttribute("data-id"); 34988 showPreloader(); 34989 34990 var url = window.location.href.split("?")[0]; 34991 34992 if (id !== 0) { 34993 url = url + "?category-id=" + id; 34994 } 34995 34996 $.get(url, onAjaxLoaded); 34997 history.pushState(url, null, url); 34998 }, 34999 onAjaxLoaded = function (data) { 35000 var result = $(data), 35001 list = result.find(selectors.teamMembersContainer).html() || ""; 35002 35003 teamMembersContainer.html(list); 35004 35005 hidePreloader(); 35006 }, 35007 onHistoryPopstate = function (e) { 35008 if (!e.state) { 35009 return; 35010 } 35011 window.location.replace(e.state); 35012 }, 35013 init = function () { 35014 $(document).on("click", selectors.categoryButton, onButtonClicked); 35015 35016 window.addEventListener("popstate", onHistoryPopstate); 35017 }; 35018 35019 this.showPreloader = showPreloader; 35020 this.hidePreloader = hidePreloader; 35021 35022 init(); 35023} 35024 35025$(document).ready(function () { 35026 window.teamMembers = new TeamMembers(); 35027}); 35028 35029$(document).ready(function () { 35030 35031 // $(".featured-team-member__filter").change(function () { 35032 // var id = $(this).val(); 35033 // 35034 // $('*[class*="workingGroup"]').hide(); 35035 // $('.workingGroup' + id).show(); 35036 // 35037 // $(".featured-team-member__filter").val(id); 35038 // 35039 // }); 35040 35041}); 35042function loadResource(filename, fileType, callback) { 35043 var fileRef = null; 35044 35045 if (fileType === "js") { //if filename is a external JavaScript file 35046 fileRef = document.createElement('script'); 35047 fileRef.setAttribute("type","text/javascript"); 35048 fileRef.setAttribute("src", filename); 35049 } 35050 else if (fileType === "css") { //if filename is an external CSS file 35051 fileRef = document.createElement("link"); 35052 fileRef.setAttribute("rel", "stylesheet"); 35053 fileRef.setAttribute("type", "text/css"); 35054 fileRef.setAttribute("href", filename); 35055 } 35056 35057 if (typeof fileRef === "undefined" || fileRef === null) { 35058 return 35059 } 35060 35061 if (callback) { 35062 fileRef.addEventListener('load', callback); 35063 } 35064 35065 document.getElementsByTagName("head")[0].appendChild(fileRef); 35066} 35067/** 35068 * what-input - A global utility for tracking the current input method (mouse, keyboard or touch). 35069 * @version v5.2.10 35070 * @link https://github.com/ten1seven/what-input 35071 * @license MIT 35072 */ 35073!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define("whatInput",[],t):"object"==typeof exports?exp
vendor: 4,316 bytes, line 35073
35073orts.whatInput=t():e.whatInput=t()}(this,function(){return i={},n.m=o=[function(e,t){"use strict";e.exports=function(){if("undefined"==typeof document||"undefined"==typeof window)return{ask:function(){return"initial"},element:function(){return null},ignoreKeys:function(){},specificKeys:function(){},registerOnChange:function(){},unRegisterOnChange:function(){}};var t=document.documentElement,n=null,s="initial",u=s,o=Date.now(),i="false",d=["button","input","select","textarea"],r=[],c=[16,17,18,91,93],w=[],p={keydown:"keyboard",keyup:"keyboard",mousedown:"mouse",mousemove:"mouse",MSPointerDown:"pointer",MSPointerMove:"pointer",pointerdown:"pointer",pointermove:"pointer",touchstart:"touch",touchend:"touch"},a=!1,f={x:null,y:null},l={2:"touch",3:"touch",4:"mouse"},m=!1;try{var e=Object.defineProperty({},"passive",{get:function(){m=!0}});window.addEventListener("test",null,e)}catch(e){}var h=function(){var e=!!m&&{passive:!0};document.addEventListener("DOMContentLoaded",v),window.PointerEvent?(window.addEventListener("pointerdown",y),window.addEventListener("pointermove",E)):window.MSPointerEvent?(window.addEventListener("MSPointerDown",y),window.addEventListener("MSPointerMove",E)):(window.addEventListener("mousedown",y),window.addEventListener("mousemove",E),"ontouchstart"in window&&(window.addEventListener("touchstart",y,e),window.addEventListener("touchend",y))),window.addEventListener(O(),E,e),window.addEventListener("keydown",y),window.addEventListener("keyup",y),window.addEventListener("focusin",L),window.addEventListener("focusout",b)},v=function(){if(i=!(t.getAttribute("data-whatpersist")||"false"===document.body.getAttribute("data-whatpersist")))try{window.sessionStorage.getItem("what-input")&&(s=window.sessionStorage.getItem("what-input")),window.sessionStorage.getItem("what-intent")&&(u=window.sessionStorage.getItem("what-intent"))}catch(e){}g("input"),g("intent")},y=function(e){var t=e.which,n=p[e.type];"pointer"===n&&(n=S(e));var o=!w.length&&-1===c.indexOf(t),i=w.length&&-1!==w.indexOf(t),r="keyboard"===n&&t&&(o||i)||"mouse"===n||"touch"===n;if(M(n)&&(r=!1),r&&s!==n&&(x("input",s=n),g("input")),r&&u!==n){var a=document.activeElement;a&&a.nodeName&&(-1===d.indexOf(a.nodeName.toLowerCase())||"button"===a.nodeName.toLowerCase()&&!C(a,"form"))&&(x("intent",u=n),g("intent"))}},g=function(e){t.setAttribute("data-what"+e,"input"===e?s:u),k(e)},E=function(e){var t=p[e.type];"pointer"===t&&(t=S(e)),A(e),(!a&&!M(t)||a&&"wheel"===e.type||"mousewheel"===e.type||"DOMMouseScroll"===e.type)&&u!==t&&(x("intent",u=t),g("intent"))},L=function(e){e.target.nodeName?(n=e.target.nodeName.toLowerCase(),t.setAttribute("data-whatelement",n),e.target.classList&&e.target.classList.length&&t.setAttribute("data-whatclasses",e.target.classList.toString().replace(" ",","))):b()},b=function(){n=null,t.removeAttribute("data-whatelement"),t.removeAttribute("data-whatclasses")},x=function(e,t){if(i)try{window.sessionStorage.setItem("what-"+e,t)}catch(e){}},S=function(e){return"number"==typeof e.pointerType?l[e.pointerType]:"pen"===e.pointerType?"touch":e.pointerType},M=function(e){var t=Date.now(),n="mouse"===e&&"touch"===s&&t-o<200;return o=t,n},O=function(){return"onwheel"in document.createElement("div")?"wheel":void 0!==document.onmousewheel?"mousewheel":"DOMMouseScroll"},k=function(e){for(var t=0,n=r.length;t<n;t++)r[t].type===e&&r[t].fn.call(void 0,"input"===e?s:u)},A=function(e){f.x!==e.screenX||f.y!==e.screenY?(a=!1,f.x=e.screenX,f.y=e.screenY):a=!0},C=function(e,t){var n=window.Element.prototype;if(n.matches||(n.matches=n.msMatchesSelector||n.webkitMatchesSelector),n.closest)return e.closest(t);do{if(e.matches(t))return e;e=e.parentElement||e.parentNode}while(null!==e&&1===e.nodeType);return null};return"addEventListener"in window&&Array.prototype.indexOf&&(p[O()]="mouse",h()),{ask:function(e){return"intent"===e?u:s},element:function(){return n},ignoreKeys:function(e){c=e},specificKeys:function(e){w=e},registerOnChange:function(e,t){r.push({fn:e,type:t||"input"})},unRegisterOnChange:function(e){var t=function(e){for(var t=0,n=r.length;t<n;t++)if(r[t].fn===e)return t}(e);!t&&0!==t||r.splice(t,1)},clearStorage:function(){window.sessionStorage.clear()}}}()}],n.c=i,n.p="",n(0);function n(e){if(i[e])return i[e].exports;var t=i[e]={exports:{},id:e,loaded:!1};
35073return o[e].call(t.exports,t,t.exports,n),t.loaded=!0,t.exports}var o,i}); 35074//# sourceMappingURL=what-input.min.js.map 35075 35076/*! 35077 * viewport-units-buggyfill v0.6.2 35078 * @web: https://github.com/rodneyrehm/viewport-units-buggyfill/ 35079 * @author: Rodney Rehm - http://rodneyrehm.de/en/ 35080 */ 35081 35082(function() { 35083 (function(root, factory) { 35084 'use strict'; 35085 if (typeof define === 'function' && define.amd) { 35086 // AMD. Register as an anonymous module. 35087 define([], factory); 35088 } else if (typeof exports === 'object') { 35089 // Node. Does not work with strict CommonJS, but 35090 // only CommonJS-like enviroments that support module.exports, 35091 // like Node. 35092 module.exports = factory(); 35093 } else { 35094 // Browser globals (root is window) 35095 root.viewportUnitsBuggyfill = factory(); 35096 } 35097 }(this, function() { 35098 'use strict'; 35099 /* global document, window, navigator, location, XMLHttpRequest, XDomainRequest, CustomEvent */ 35100 35101 var initialized = false; 35102 var options; 35103 var userAgent = window.navigator.userAgent; 35104 var viewportUnitExpression = /([+-]?[0-9.]+)(vh|vw|vmin|vmax)/g; 35105 var urlExpression = /(https?:)?\/\// 35106 var forEach = [].forEach; 35107 var dimensions; 35108 var declarations; 35109 var styleNode; 35110 var isBuggyIE = /MSIE [0-9]\./i.test(userAgent); 35111 var isOldIE = /MSIE [0-8]\./i.test(userAgent); 35112 var isOperaMini = userAgent.indexOf('Opera Mini') > -1; 35113 35114 var isMobileSafari = /(iPhone|iPod|iPad).+AppleWebKit/i.test(userAgent) && (function() { 35115 // Regexp for iOS-version tested against the following userAgent strings: 35116 // Example WebView UserAgents: 35117 // * iOS Chrome on iOS8: "Mozilla/5.0 (iPad; CPU OS 8_1 like Mac OS X) AppleWebKit/600.1.4 (KHTML, like Gecko) CriOS/39.0.2171.50 Mobile/12B410 Safari/600.1.4" 35118 // * iOS Facebook on iOS7: "Mozilla/5.0 (iPhone; CPU iPhone OS 7_1_1 like Mac OS X) AppleWebKit/537.51.2 (KHTML, like Gecko) Mobile/11D201 [FBAN/FBIOS;FBAV/12.1.0.24.20; FBBV/3214247; FBDV/iPhone6,1;FBMD/iPhone; FBSN/iPhone OS;FBSV/7.1.1; FBSS/2; FBCR/AT&T;FBID/phone;FBLC/en_US;FBOP/5]" 35119 // Example Safari UserAgents: 35120 // * Safari iOS8: "Mozilla/5.0 (iPhone; CPU iPhone OS 8_0 like Mac OS X) AppleWebKit/600.1.3 (KHTML, like Gecko) Version/8.0 Mobile/12A4345d Safari/600.1.4" 35121 // * Safari iOS7: "Mozilla/5.0 (iPhone; CPU iPhone OS 7_0 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) Version/7.0 Mobile/11A4449d Safari/9537.53" 35122 var iOSversion = userAgent.match(/OS (\d)/); 35123 // viewport units work fine in mobile Safari and webView on iOS 8+ 35124 return iOSversion && iOSversion.length > 1 && parseInt(iOSversion[1]) < 10; 35125 })(); 35126 35127 var isBadStockAndroid = (function() { 35128 // Android stock browser test derived from 35129 // http://stackoverflow.com/questions/24926221/distinguish-android-chrome-from-stock-browser-stock-browsers-user-agent-contai 35130 var isAndroid = userAgent.indexOf(' Android ') > -1; 35131 if (!isAndroid) { 35132 return false; 35133 } 35134 35135 var isStockAndroid = userAgent.indexOf('Version/') > -1; 35136 if (!isStockAndroid) { 35137 return false; 35138 } 35139 35140 var versionNumber = parseFloat((userAgent.match('Android ([0-9.]+)') || [])[1]); 35141 // anything below 4.4 uses WebKit without *any* viewport support, 35142 // 4.4 has issues with viewport units within calc() 35143 return versionNumber <= 4.4; 35144 })(); 35145 35146 // added check for IE10, IE11 and Edge < 20, since it *still* doesn't understand vmax 35147 // http://caniuse.com/#feat=viewport-units 35148 if (!isBuggyIE) { 35149 isBuggyIE = !!navigator.userAgent.match(/MSIE 10\.|Trident.*rv[ :]*1[01]\.| Edge\/1\d\./); 35150 } 35151 35152 // Polyfill for creating CustomEvents on IE9/10/11 35153 // from https://github.com/krambuhl/custom-event-polyfill 35154 try { 35155 // eslint-disable-next-line no-new, no-use-before-define 35156 new CustomEvent('test'); 35157 } catch (e) { 35158 var CustomEvent = function(event, params) { 35159 var evt; 35160 params = params || { 35161 bubbles: false, 35162 cancelable: false, 35163 detail: undefined, 35164 }; 35165 35166 evt = document.createEvent('CustomEvent'); 35167 evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail); 35168 return evt; 35169 }; 35170 CustomEvent.prototype = window.Event.prototype; 35171 window.CustomEvent = CustomEvent; // expose definition to window 35172 } 35173 35174 function debounce(func, wait) { 35175 var timeout; 35176 return function() { 35177 var context = this; 35178 var args = arguments; 35179 var callback = function() {
35180 func.apply(context, args); 35181 }; 35182 35183 clearTimeout(timeout); 35184 timeout = setTimeout(callback, wait); 35185 }; 35186 } 35187 35188 // from http://stackoverflow.com/questions/326069/how-to-identify-if-a-webpage-is-being-loaded-inside-an-iframe-or-directly-into-t 35189 function inIframe() { 35190 try { 35191 return window.self !== window.top; 35192 } catch (e) { 35193 return true; 35194 } 35195 } 35196 35197 function initialize(initOptions) { 35198 if (initialized) { 35199 return; 35200 } 35201 35202 if (initOptions === true) { 35203 initOptions = { 35204 force: true, 35205 }; 35206 } 35207 35208 options = initOptions || {}; 35209 options.isMobileSafari = isMobileSafari; 35210 options.isBadStockAndroid = isBadStockAndroid; 35211 35212 if (options.ignoreVmax && !options.force && !isOldIE) { 35213 // modern IE (10 and up) do not support vmin/vmax, 35214 // but chances are this unit is not even used, so 35215 // allow overwriting the "hacktivation" 35216 // https://github.com/rodneyrehm/viewport-units-buggyfill/issues/56 35217 isBuggyIE = false; 35218 } 35219 35220 if (isOldIE || (!options.force && !isMobileSafari && !isBuggyIE && !isBadStockAndroid && !isOperaMini && (!options.hacks || !options.hacks.required(options)))) { 35221 // this buggyfill only applies to mobile safari, IE9-10 and the Stock Android Browser. 35222 if (window.console && isOldIE) { 35223 console.info('viewport-units-buggyfill requires a proper CSSOM and basic viewport unit support, which are not available in IE8 and below'); 35224 } 35225 35226 return { 35227 init: function() {}, 35228 }; 35229 } 35230 35231 // fire a custom event that buggyfill was initialize 35232 window.dispatchEvent(new CustomEvent('viewport-units-buggyfill-init')); 35233 35234 options.hacks && options.hacks.initialize(options); 35235 35236 initialized = true; 35237 styleNode = document.createElement('style'); 35238 styleNode.id = 'patched-viewport'; 35239 document[options.appendToBody ? 'body' : 'head'].appendChild(styleNode); 35240 35241 // Issue #6: Cross Origin Stylesheets are not accessible through CSSOM, 35242 // therefore download and inject them as <style> to circumvent SOP. 35243 importCrossOriginLinks(function() { 35244 var _refresh = debounce(refresh, options.refreshDebounceWait || 100); 35245 // doing a full refresh rather than updateStyles because an orientationchange 35246 // could activate different stylesheets 35247 window.addEventListener('orientationchange', _refresh, true); 35248 // orientationchange might have happened while in a different window 35249 window.addEventListener('pageshow', _refresh, true); 35250 35251 if (options.force || isBuggyIE || inIframe()) { 35252 window.addEventListener('resize', _refresh, true); 35253 options._listeningToResize = true; 35254 } 35255 35256 options.hacks && options.hacks.initializeEvents(options, refresh, _refresh); 35257 35258 refresh(); 35259 }); 35260 } 35261 35262 function updateStyles() { 35263 styleNode.textContent = getReplacedViewportUnits(); 35264 // move to the end in case inline <style>s were added dynamically 35265 styleNode.parentNode.appendChild(styleNode); 35266 // fire a custom event that styles were updated 35267 window.dispatchEvent(new CustomEvent('viewport-units-buggyfill-style')); 35268 } 35269 35270 function refresh() { 35271 if (!initialized) { 35272 return; 35273 } 35274 35275 findProperties(); 35276 35277 // iOS Safari will report window.innerWidth and .innerHeight as 0 unless a timeout is used here.
35278 // TODO: figure out WHY innerWidth === 0 35279 setTimeout(function() { 35280 updateStyles(); 35281 }, 1); 35282 } 35283 35284 // http://stackoverflow.com/a/23613052 35285 function processStylesheet(ss) { 35286 // cssRules respects same-origin policy, as per 35287 // https://code.google.com/p/chromium/issues/detail?id=49001#c10. 35288 try { 35289 if (!ss.cssRules) { return; } 35290 } catch (e) { 35291 if (e.name !== 'SecurityError') { throw e; } 35292 return; 35293 } 35294 // ss.cssRules is available, so proceed with desired operations. 35295 var rules = []; 35296 for (var i = 0; i < ss.cssRules.length; i++) { 35297 var rule = ss.cssRules[i]; 35298 rules.push(rule); 35299 } 35300 return rules; 35301 } 35302 35303 function findProperties() { 35304 declarations = []; 35305 forEach.call(document.styleSheets, function(sheet) { 35306 var cssRules = processStylesheet(sheet); 35307 35308 if (!cssRules || sheet.ownerNode.id === 'patched-viewport' || sheet.ownerNode.getAttribute('data-viewport-units-buggyfill') === 'ignore') { 35309 // skip entire sheet because no rules are present, it's supposed to be ignored or it's the target-element of the buggyfill 35310 return; 35311 } 35312 35313 if (sheet.media && sheet.media.mediaText && window.matchMedia && !window.matchMedia(sheet.media.mediaText).matches) { 35314 // skip entire sheet because media attribute doesn't match 35315 return; 35316 } 35317 35318 forEach.call(cssRules, findDeclarations); 35319 }); 35320 35321 return declarations; 35322 } 35323 35324 function findDeclarations(rule) { 35325 if (rule.type === 7) { 35326 var value; 35327 35328 // there may be a case where accessing cssText throws an error. 35329 // I could not reproduce this issue, but the worst that can happen 35330 // this way is an animation not running properly. 35331 // not awesome, but probably better than a script error 35332 // see https://github.com/rodneyrehm/viewport-units-buggyfill/issues/21 35333 try { 35334 value = rule.cssText; 35335 } catch (e) { 35336 return; 35337 } 35338 35339 viewportUnitExpression.lastIndex = 0; 35340 if (viewportUnitExpression.test(value) && !urlExpression.test(value)) { 35341 // KeyframesRule does not have a CSS-PropertyName 35342 declarations.push([rule, null, value]); 35343 options.hacks && options.hacks.findDeclarations(declarations, rule, null, value); 35344 } 35345 35346 return; 35347 } 35348 35349 if (!rule.style) { 35350 if (!rule.cssRules) { 35351 return; 35352 } 35353 35354 forEach.call(rule.cssRules, function(_rule) { 35355 findDeclarations(_rule); 35356 }); 35357 35358 return; 35359 } 35360 35361 forEach.call(rule.style, function(name) { 35362 var value = rule.style.getPropertyValue(name); 35363 // preserve those !important rules 35364 if (rule.style.getPropertyPriority(name)) { 35365 value += ' !important'; 35366 } 35367 35368 viewportUnitExpression.lastIndex = 0; 35369 if (viewportUnitExpression.test(value)) { 35370 declarations.push([rule, name, value]); 35371 options.hacks && options.hacks.findDeclarations(declarations, rule, name, value); 35372 } 35373 }); 35374 } 35375 35376 function getReplacedViewportUnits() { 35377 dimensions = getViewport(); 35378 35379 var css = []; 35380 var buffer = []; 35381 var open; 35382 var close; 35383 35384 declarations.forEach(function(item) { 35385 var _item = overwriteDeclaration.apply(null, item); 35386 var _open = _item.selector.length ? (_item.selector.join(' {\n') + ' {\n') : ''; 35387 var _close = new Array(_item.selector.length + 1).join('\n}'); 35388 35389 if (!_open || _open !== open) { 35390 if (buffer.length) { 35391 css.push(open + buffer.join('\n') + close); 35392 buffer.length = 0; 35393 } 35394 35395 if (_open) { 35396 open = _open; 35397 close = _close; 35398 buffer.push(_item.content); 35399 } else { 35400 css.push(_item.content); 35401 open = null; 35402 close = null; 35403 } 35404 35405 return; 35406 } 35407 35408 if (_open && !open) { 35409 open = _open; 35410 close = _close; 35411 } 35412 35413 buffer.push(_item.content); 35414 }); 35415 35416 if (buffer.length) { 35417 css.push(open + buffer.join('\n') + close); 35418 } 35419 35420 // Opera Mini messes up on the content hack (it replaces the DOM node's innerHTML with the value). 35421 // This fixes it. We test for Opera Mini only since it is the most expensive CSS selector 35422 // see https://developer.mozilla.org/en-US/docs/Web/CSS/Universal_selectors 35423 if (isOperaMini) { 35424 css.push('* { content: normal !important; }'); 35425 } 35426 35427 return css.join('\n\n'); 35428 } 35429 35430 function overwriteDeclaration(rule, name, value) { 35431 var _value; 35432 var _selectors = []; 35433 35434 _value = value.replace(viewportUnitExpression, replaceValues); 35435 35436 if (options.hacks) { 35437 _value = options.hacks.overwriteDeclaration(rule, name, _value); 35438 } 35439 35440 if (name) { 35441 // skipping KeyframesRule 35442 _selectors.push(rule.selectorText); 35443 _value = name + ': ' + _value + ';'; 35444 } 35445 35446 var _rule = rule.parentRule; 35447 while (_rule) { 35448 if (_rule.media) { 35449 _selectors.unshift('@media ' + _rule.media.mediaText); 35450 } else if (_rule.conditionText) { 35451 _selectors.unshift('@supports ' + _rule.conditionText); 35452 } 35453 35454 _rule = _rule.parentRule; 35455 } 35456 35457 return { 35458 selector: _selectors, 35459 content: _value, 35460 }; 35461 } 35462 35463 function replaceValues(match, number, unit) { 35464 var _base = dimensions[unit]; 35465 var _number = parseFloat(number) / 100; 35466 return (_number * _base) + 'px'; 35467 } 35468 35469 function getViewport() { 35470 var vh = window.innerHeight; 35471 var vw = window.innerWidth; 35472 35473 return { 35474 vh: vh, 35475 vw: vw, 35476 vmax: Math.max(vw, vh), 35477 vmin: Math.min(vw, vh), 35478 }; 35479 } 35480 35481 function importCrossOriginLinks(next) { 35482 var _waiting = 0; 35483 var decrease = function() { 35484 _waiting--; 35485 if (!_waiting) { 35486 next(); 35487 } 35488 }; 35489
vendor: 9,741 bytes, lines 35490-35549
35490 forEach.call(document.styleSheets, function(sheet) { 35491 if (!sheet.href || origin(sheet.href) === origin(location.href) || sheet.ownerNode.getAttribute('data-viewport-units-buggyfill') === 'ignore') { 35492 // skip <style> and <link> from same origin or explicitly declared to ignore 35493 return; 35494 } 35495 35496 _waiting++; 35497 convertLinkToStyle(sheet.ownerNode, decrease); 35498 }); 35499 35500 if (!_waiting) { 35501 next(); 35502 } 35503 } 35504 35505 function origin(url) { 35506 return url.slice(0, url.indexOf('/', url.indexOf('://') + 3)); 35507 } 35508 35509 function convertLinkToStyle(link, next) { 35510 getCors(link.href, function() { 35511 var style = document.createElement('style'); 35512 style.media = link.media; 35513 style.setAttribute('data-href', link.href); 35514 style.textContent = this.responseText; 35515 link.parentNode.replaceChild(style, link); 35516 next(); 35517 }, next); 35518 } 35519 35520 function getCors(url, success, error) { 35521 var xhr = new XMLHttpRequest(); 35522 if ('withCredentials' in xhr) { 35523 // XHR for Chrome/Firefox/Opera/Safari. 35524 xhr.open('GET', url, true); 35525 } else if (typeof XDomainRequest !== 'undefined') { 35526 // XDomainRequest for IE. 35527 xhr = new XDomainRequest(); 35528 xhr.open('GET', url); 35529 } else { 35530 throw new Error('cross-domain XHR not supported'); 35531 } 35532 35533 xhr.onload = success; 35534 xhr.onerror = error; 35535 xhr.send(); 35536 return xhr; 35537 } 35538 35539 return { 35540 version: '0.6.1', 35541 findProperties: findProperties, 35542 getCss: getReplacedViewportUnits, 35543 init: initialize, 35544 refresh: refresh, 35545 }; 35546 })); 35547})(); 35548 35549!function(i){"use strict";"function"==typeof define&&define.amd?define(["jquery"],i):"undefined"!=typeof exports?module.exports=i(require("jquery")):i(jQuery)}(function(i){"use strict";var e=window.Slick||{};(e=function(){var e=0;return function(t,o){var s,n=this;n.defaults={accessibility:!0,adaptiveHeight:!1,appendArrows:i(t),appendDots:i(t),arrows:!0,asNavFor:null,prevArrow:'<button class="slick-prev" aria-label="Previous" type="button">Previous</button>',nextArrow:'<button class="slick-next" aria-label="Next" type="button">Next</button>',autoplay:!1,autoplaySpeed:3e3,centerMode:!1,centerPadding:"50px",cssEase:"ease",customPaging:function(e,t){return i('<button type="button" />').text(t+1)},dots:!1,dotsClass:"slick-dots",draggable:!0,easing:"linear",edgeFriction:.35,fade:!1,focusOnSelect:!1,focusOnChange:!1,infinite:!0,initialSlide:0,lazyLoad:"ondemand",mobileFirst:!1,pauseOnHover:!0,pauseOnFocus:!0,pauseOnDotsHover:!1,respondTo:"window",responsive:null,rows:1,rtl:!1,slide:"",slidesPerRow:1,slidesToShow:1,slidesToScroll:1,speed:500,swipe:!0,swipeToSlide:!1,touchMove:!0,touchThreshold:5,useCSS:!0,useTransform:!0,variableWidth:!1,vertical:!1,verticalSwiping:!1,waitForAnimate:!0,zIndex:1e3},n.initials={animating:!1,dragging:!1,autoPlayTimer:null,currentDirection:0,currentLeft:null,currentSlide:0,direction:1,$dots:null,listWidth:null,listHeight:null,loadIndex:0,$nextArrow:null,$prevArrow:null,scrolling:!1,slideCount:null,slideWidth:null,$slideTrack:null,$slides:null,sliding:!1,slideOffset:0,swipeLeft:null,swiping:!1,$list:null,touchObject:{},transformsEnabled:!1,unslicked:!1},i.extend(n,n.initials),n.activeBreakpoint=null,n.animType=null,n.animProp=null,n.breakpoints=[],n.breakpointSettings=[],n.cssTransitions=!1,n.focussed=!1,n.interrupted=!1,n.hidden="hidden",n.paused=!0,n.positionProp=null,n.respondTo=null,n.rowCount=1,n.shouldClick=!0,n.$slider=i(t),n.$slidesCache=null,n.transformType=null,n.transitionType=null,n.visibilityChange="visibilitychange",n.windowWidth=0,n.windowTimer=null,s=i(t).data("slick")||{},n.options=i.extend({},n.defaults,o,s),n.currentSlide=n.options.initialSlide,n.originalSettings=n.options,void 0!==document.mozHidden?(n.hidden="mozHidden",n.visibilityChange="mozvisibilitychange"):void 0!==document.webkitHidden&&(n.hidden="webkitHidden",n.visibilityChange="webkitvisibilitychange"),n.autoPlay=i.proxy(n.autoPlay,n),n.autoPlayClear=i.proxy(n.autoPlayClear,n),n.autoPlayIterator=i.proxy(n.autoPlayIterator,n),n.changeSlide=i.proxy(n.changeSlide,n),n.clickHandler=i.proxy(n.clickHandler,n),n.selectHandler=i.proxy(n.selectHandler,n),n.setPosition=i.proxy(n.setPosition,n),n.swipeHandler=i.proxy(n.swipeHandler,n),n.dragHandler=i.proxy(n.dragHandler,n),n.keyHandler=i.proxy(n.keyHandler,n),n.instanceUid=e++,n.htmlExpr=/^(?:\s*(<[\w\W]+>)[^>]*)$/,n.registerBreakpoints(),n.init(!0)}}()).prototype.activateADA=function(){this.$slideTrack.find(".slick-active").attr({"aria-hidden":"false"}).find("a, input, button, select").attr({tabindex:"0"})},e.prototype.addSlide=e.prototype.slickAdd=function(e,t,o){var s=this;if("boolean"==typeof t)o=t,t=null;else if(t<0||t>=s.slideCount)return!1;s.unload(),"number"==typeof t?0===t&&0===s.$slides.length?i(e).appendTo(s.$slideTrack):o?i(e).insertBefore(s.$slides.eq(t)):i(e).insertAfter(s.$slides.eq(t)):!0===o?i(e).prependTo(s.$slideTrack):i(e).appendTo(s.$slideTrack),s.$slides=s.$slideTrack.children(this.options.slide),s.$slideTrack.children(this.options.slide).detach(),s.$slideTrack.append(s.$slides),s.$slides.each(function(e,t){i(t).attr("data-slick-index",e)}),s.$slidesCache=s.$slides,s.reinit()},e.prototype.animateHeight=function(){var i=this;if(1===i.options.slidesToShow&&!0===i.options.adaptiveHeight&&!1===i.options.vertical){var e=i.$slides.eq(i.currentSlide).outerHeight(!0);i.$list.animate({height:e},i.options.speed)}},e.prototype.animateSlide=function(e,t){var o={},s=this;s.animateHeight(),!0===s.options.rtl&&!1===s.options.vertical&&(e=-e),!1===s.transformsEnabled?!1===s.options.vertical?s.$slideTrack.animate({left:e},s.options.speed,s.options.easing,t):s.$slideTrack.animate({top:e},s.options.speed,s.options.easing,t):!1===s.cssTransitions?(!0===s.options.rtl&&(s.currentLeft=-s.currentLeft),i({animStart:s.currentLeft}).animate({animStart:e},{duration:s.options.speed,easing:s.options.easing,step:function(i){i=Math.ceil(i),!1===s.options.vertical?(o[s.animType]="translate("+i+"px, 0px)",s.$slideTrack.css(o)):(o[s.animType]="translate(0px,"+i+"px)",s.$slideTrack.css(o))},complete:function(){t&&t.call()}})):(s.applyTransition(),e=Math.ceil(e),!1===s.options.vertical?o[s.animType]="translate3d("+e+"px, 0px, 0px)":o[s.animType]="translate3d(0px,"+e+"px, 0px)",s.$slideTrack.css(o),t&&setTimeout(function(){s.disableTransition(),t.call()},s.options.speed))},e.prototype.getNavTarget=function(){var e=this,t=e.options.asNavFor;return t&&null!==t&&(t=i(t).not(e.$slider)),t},e.prototype.asNavFor=function(e){var t=this.getNavTarget();null!==t&&"object"==typeof t&&t.each(function(){var t=i(this).slick("getSlick");t.unslicked||t.slideHandler(e,!0)})},e.prototype.applyTransition=function(i){var e=this,t={};!1===e.options.fade?t[e.transitionType]=e.transformType+" "+e.options.speed+"ms "+e.options.cssEase:t[e.transitionType]="opacity "+e.options.speed+"ms "+e.options.cssEase,!1===e.options.fade?e.$slideTrack.css(t):e.$slides.eq(i).css(t)},e.prototype.autoPlay=function(){var i=this;i.autoPlayClear(),i.slideCount>i.options.slidesToShow&&(i.autoPlayTimer=setInterval(i.autoPlayIterator,i.options.autoplaySpeed))},e.prototype.autoPlayClear=function(){var i=this;i.autoPlayTimer&&clearInterval(i.autoPlayTimer)},e.prototype.autoPlayIterator=function(){var i=this,e=i.currentSlide+i.options.slidesToScroll;i.paused||i.interrupted||i.focussed||(!1===i.options.infinite&&(1===i.direction&&i.currentSlide+1===i.slideCount-1?i.direction=0:0===i.direction&&(e=i.currentSlide-i.options.slidesToScroll,i.currentSlide-1==0&&(i.direction=1))),i.slideHandler(e))},e.prototype.buildArrows=function(){var e=this;!0===e.options.arrows&&(e.$prevArrow=i(e.options.prevArrow).addClass("slick-arrow"),e.$nextArrow=i(e.options.nextArrow).addClass("slick-arrow"),e.slideCount>e.options.slidesToShow?(e.$prevArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"),e.$nextArrow.removeClass("slick-hidden").removeAttr("aria-hidden tabindex"),e.htmlExpr.test(e.options.prevArrow)&&e.$prevArrow.prependTo(e.options.appendArrows),e.htmlExpr.test(e.options.nextArrow)&&e.$nextArrow.appendTo(e.options.appendArrows),!0!==e.options.infinite&&e.$prevArrow.addClass("slick-disabled").attr("aria-disabled","true")):e.$prevArrow.add(e.$nextArrow).addClass("slick-hidden").attr({"aria-disabled":"true",tabindex:"-1"}))},e.prototype.buildDots=function(){var e,t,o=this;if(!0===o.options.dots){for(o.$slider.addClass("slick-dotted"),t=i("<ul />").addClass(o.options.dotsClass),e=0;e<=o.getDotCount();e+=1)t.append(i("<li />").append(o.options.customPaging.call(this,o,e)));o.$dots=t.appendTo(o.options.appendDots),o.$dots.find("li").first().addClass("slick-active")}},e.prototype.buildOut=function(){var e=this;e.$slides=e.$slider.children(e.options.slide+":not(.slick-cloned)").addClass("slick-slide"),e.slideCount=e.$slides.length,e.$slides.each(function(e,t){i(t).attr("data-slick-index",e).data("originalStyling",i(t).attr("style")||"")}),e.$slider.addClass("slick-slider"),e.$slideTrack=0===e.slideCount?i('<div class="slick-track"/>').appendTo(e.$slider):e.$slides.wrapAll('<div class="slick-track"/>').parent(),e.$list=e.$slideTrack.wrap('<div class="slick-list"/>').parent(),e.$slideTrack.css("opacity",0),!0!==e.options.centerMode&&!0!==e.options.swipeToSlide||(e.options.slidesToScroll=1),i("img[data-lazy]",e.$slider).not("[src]").addClass("slick-loading"),e.setupInfinite(),e.buildArrows(),e.buildDots(),e.updateDots(),e.setSlideClasses("number"==typeof e.currentSlide?e.currentSlide:0),!0===e.options.draggable&&e.$list.addClass("draggable")},e.prototype.buildRows=function(){var i,e,t,o,s,n,r,l=this;if(o=document.createDocumentFragment(),n=l.$slider.children(),l.o
vendor: 3,442 bytes, line 35549
35549ptions.rows>1){for(r=l.options.slidesPerRow*l.options.rows,s=Math.ceil(n.length/r),i=0;i<s;i++){var d=document.createElement("div");for(e=0;e<l.options.rows;e++){var a=document.createElement("div");for(t=0;t<l.options.slidesPerRow;t++){var c=i*r+(e*l.options.slidesPerRow+t);n.get(c)&&a.appendChild(n.get(c))}d.appendChild(a)}o.appendChild(d)}l.$slider.empty().append(o),l.$slider.children().children().children().css({width:100/l.options.slidesPerRow+"%",display:"inline-block"})}},e.prototype.checkResponsive=function(e,t){var o,s,n,r=this,l=!1,d=r.$slider.width(),a=window.innerWidth||i(window).width();if("window"===r.respondTo?n=a:"slider"===r.respondTo?n=d:"min"===r.respondTo&&(n=Math.min(a,d)),r.options.responsive&&r.options.responsive.length&&null!==r.options.responsive){s=null;for(o in r.breakpoints)r.breakpoints.hasOwnProperty(o)&&(!1===r.originalSettings.mobileFirst?n<r.breakpoints[o]&&(s=r.breakpoints[o]):n>r.breakpoints[o]&&(s=r.breakpoints[o]));null!==s?null!==r.activeBreakpoint?(s!==r.activeBreakpoint||t)&&(r.activeBreakpoint=s,"unslick"===r.breakpointSettings[s]?r.unslick(s):(r.options=i.extend({},r.originalSettings,r.breakpointSettings[s]),!0===e&&(r.currentSlide=r.options.initialSlide),r.refresh(e)),l=s):(r.activeBreakpoint=s,"unslick"===r.breakpointSettings[s]?r.unslick(s):(r.options=i.extend({},r.originalSettings,r.breakpointSettings[s]),!0===e&&(r.currentSlide=r.options.initialSlide),r.refresh(e)),l=s):null!==r.activeBreakpoint&&(r.activeBreakpoint=null,r.options=r.originalSettings,!0===e&&(r.currentSlide=r.options.initialSlide),r.refresh(e),l=s),e||!1===l||r.$slider.trigger("breakpoint",[r,l])}},e.prototype.changeSlide=function(e,t){var o,s,n,r=this,l=i(e.currentTarget);switch(l.is("a")&&e.preventDefault(),l.is("li")||(l=l.closest("li")),n=r.slideCount%r.options.slidesToScroll!=0,o=n?0:(r.slideCount-r.currentSlide)%r.options.slidesToScroll,e.data.message){case"previous":s=0===o?r.options.slidesToScroll:r.options.slidesToShow-o,r.slideCount>r.options.slidesToShow&&r.slideHandler(r.currentSlide-s,!1,t);break;case"next":s=0===o?r.options.slidesToScroll:o,r.slideCount>r.options.slidesToShow&&r.slideHandler(r.currentSlide+s,!1,t);break;case"index":var d=0===e.data.index?0:e.data.index||l.index()*r.options.slidesToScroll;r.slideHandler(r.checkNavigable(d),!1,t),l.children().trigger("focus");break;default:return}},e.prototype.checkNavigable=function(i){var e,t;if(e=this.getNavigableIndexes(),t=0,i>e[e.length-1])i=e[e.length-1];else for(var o in e){if(i<e[o]){i=t;break}t=e[o]}return i},e.prototype.cleanUpEvents=function(){var e=this;e.options.dots&&null!==e.$dots&&(i("li",e.$dots).off("click.slick",e.changeSlide).off("mouseenter.slick",i.proxy(e.interrupt,e,!0)).off("mouseleave.slick",i.proxy(e.interrupt,e,!1)),!0===e.options.accessibility&&e.$dots.off("keydown.slick",e.keyHandler)),e.$slider.off("focus.slick blur.slick"),!0===e.options.arrows&&e.slideCount>e.options.slidesToShow&&(e.$prevArrow&&e.$prevArrow.off("click.slick",e.changeSlide),e.$nextArrow&&e.$nextArrow.off("click.slick",e.changeSlide),!0===e.options.accessibility&&(e.$prevArrow&&e.$prevArrow.off("keydown.slick",e.keyHandler),e.$nextArrow&&e.$nextArrow.off("keydown.slick",e.keyHandler))),e.$list.off("touchstart.slick mousedown.slick",e.swipeHandler),e.$list.off("touchmove.slick mousemove.slick",e.swipeHandler),e.$list.off("touchend.slick mouseup.slick",e.swipeHandler),e.$list.off("touchcancel.slick mouseleave.
35549slick",e.swipeHandler),e.$list.off("click.slick",e.clickHandler),i(document).off(e.visibilityChange,e.visibility),e.cleanUpSlideEvents(),!0===e.options.accessibility&&e.$list.off("keydown.slick",e.keyHandler),!0===e.options.focusOnSelect&&i(e.$slideTrack).children().off("click.slick",e.selectHandler),i(window).off("orientationchange.slick.slick-"+e.instanceUid,e.orientationChange),i(window).off("resize.slick.slick-"+e.instanceUid,e.resize),i("[draggable!=true]",e.$slideTrack).off("dragstart",e.preventDefault),i(window).off("load.slick.slick-"+e.instanceUid,e.setPosition)},e.prototype.cleanUpSlideEvents=function(){var e=this;e.$list.off("mouseenter.slick",i.proxy(e.interrupt,e,!0)),e.$list.off("mouseleave.slick",i.proxy(e.interrupt,e,!1))},e.prototype.cleanUpRows=function(){var i,e=this;e.options.rows>1&&((i=e.$slides.children().children()).removeAttr("style"),e.$slider.empty().append(i))},e.prototype.clickHandler=function(i){!1===this.shouldClick&&(i.stopImmediatePropagation(),i.stopPropagation(),i.preventDefault())},e.prototype.destroy=function(e){var t=this;t.autoPlayClear(),t.touchObject={},t.cleanUpEvents(),i(".slick-cloned",t.$slider).detach(),t.$dots&&t.$dots.remove(),t.$prevArrow&&t.$prevArrow.length&&(t.$prevArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display",""),t.htmlExpr.test(t.options.prevArrow)&&t.$prevArrow.remove()),t.$nextArrow&&t.$nextArrow.length&&(t.$nextArrow.removeClass("slick-disabled slick-arrow slick-hidden").removeAttr("aria-hidden aria-disabled tabindex").css("display",""),t.htmlExpr.test(t.options.nextArrow)&&t.$nextArrow.remove()),t.$slides&&(t.$slides.removeClass("slick-slide slick-active slick-center slick-visible slick-current").removeAttr("aria-hidden").removeAttr("data-slick-index").each(function(){i(this).attr("style",i(this).data("originalStyling"))}),t.$slideTrack.children(this.options.slide).detach(),t.$slideTrack.detach(),t.$list.detach(),t.$slider.append(t.$slides)),t.cleanUpRows(),t.$slider.removeClass("slick-slider"),t.$slider.removeClass("slick-initialized"),t.$slider.removeClass("slick-dotted"),t.unslicked=!0,e||t.$slider.trigger("destroy",[t])},e.prototype.disableTransition=function(i){var e=this,t={};t[e.transitionType]="",!1===e.options.fade?e.$slideTrack.css(t):e.$slides.eq(i).css(t)},e.prototype.fadeSlide=function(i,e){var t=this;!1===t.cssTransitions?(t.$slides.eq(i).css({zIndex:t.options.zIndex}),t.$slides.eq(i).animate({opacity:1},t.options.speed,t.options.easing,e)):(t.applyTransition(i),t.$slides.eq(i).css({opacity:1,zIndex:t.options.zIndex}),e&&setTimeout(function(){t.disableTransition(i),e.call()},t.options.speed))},e.prototype.fadeSlideOut=function(i){var e=this;!1===e.cssTransitions?e.$slides.eq(i).animate({opacity:0,zIndex:e.options.zIndex-2},e.options.speed,e.options.easing):(e.applyTransition(i),e.$slides.eq(i).css({opacity:0,zIndex:e.options.zIndex-2}))},e.prototype.filterSlides=e.prototype.slickFilter=function(i){var e=this;null!==i&&(e.$slidesCache=e.$slides,e.unload(),e.$slideTrack.children(this.options.slide).detach(),e.$slidesCache.filter(i).appendTo(e.$slideTrack),e.reinit())},e.prototype.focusHandler=function(){var e=this;e.$slider.off("focus.slick blur.slick").on("focus.slick blur.slick","*",function(t){t.stopImmediatePropagation();var o=i(this);setTimeout(function(){e.options.pauseOnFocus&&(e.focussed=o.is(":focus"),e.autoPlay())},0)})},e.prototype.getCurrent=e.prototype.slickCurrentSlide=function(){return this.currentSlide},e.prototype.getDotCount=function(){var i=this,e=0,t=0,o=0;if(!0===i.options.infinite)if(i.slideCount<=i.options.slidesToShow)++o;else for(;e<i.slideCount;)++o,e=t+i.options.slidesToScroll,t+=i.options.slidesToScroll<=i.options.slidesToShow?i.options.slidesToScroll:i.options.slidesToShow;else if(!0===i.options.centerMode)o=i.slideCount;else if(i.options.asNavFor)for(;e<i.slideCount;)++o,e=t+i.options.slidesToScroll,t+=i.options.slidesToScroll<=i.options.slidesToShow?i.options.slidesToScroll:i.options.slidesToShow;else o=1+Math.ceil((i.slideCount-i.options.slidesToShow)/i.options.slidesToScroll);return o-1},e.prototype.getLeft=function(i){var e,t,o,s,n=this,r=0;return n.slideOffset=0,t=n.$slides.first().outerHeight(!0),!0===n.options.infinite?(n.slideCount>n.options.slidesToShow&&(n.slideOffset=n.slideWidth*n.options.slidesToShow*-1,s=-1,!0===n.options.vertical&&!0===n.options.centerMode&&(2===n.options.slidesToShow?s=-1.5:1===n.options.slidesToShow&&(s=-2)),r=t*n.options.slidesToShow*s),n.slideCount%n.options.slidesToScroll!=0&&i+n.options.slidesToScroll>n.slideCount&&n.slideCount>n.options.slidesToShow&&(i>n.slideCount?(n.slideOffset=(n.options.slidesToShow-(i-n.slideCount))*n.slideWidth*-1,r=(n.options.slidesToShow-(i-n.slideCount))*t*-1):(n.slideOffset=n.slideCount%n.options.slidesToScroll*n.slideWidth*-1,r=n.slideCount%n.options.slidesToScroll*t*-1))):i+n.options.slidesToShow>n.slideCount&&(n.slideOffset=(i+n.options.slidesToShow-n.slideCount)*n.slideWidth,r=(i+n.options.slidesToShow-n.slideCount)*t),n.slideCount<=n.options.slidesToShow&&(n.slideOffset=0,r=0),!0===n.options.centerMode&&n.slideCount<=n.options.slidesToShow?n.slideOffset=n.slideWidth*Math.floor(n.options.slidesToShow)/2-n.slideWidth*n.slideCount/2:!0===n.options.centerMode&&!0===n.options.infinite?n.slideOffset+=n.slideWidth*Math.floor(n.options.slidesToShow/2)-n.slideWidth:!0===n.options.centerMode&&(n.slideOffset=0,n.slideOffset+=n.slideWidth*Math.floor(n.options.slidesToShow/2)),e=!1===n.options.vertical?i*n.slideWidth*-1+n.slideOffset:i*t*-1+r,!0===n.options.variableWidth&&(o=n.slideCount<=n.options.slidesToShow||!1===n.options.infinite?n.$slideTrack.children(".slick-slide").eq(i):n.$slideTrack.children(".slick-slide").eq(i+n.options.slidesToShow),e=!0===n.options.rtl?o[0]?-1*(n.$slideTrack.width()-o[0].offsetLeft-o.width()):0:o[0]?-1*o[0].offsetLeft:0,!0===n.options.centerMode&&(o=n.slideCount<=n.options.slidesToShow||!1===n.options.infinite?n.$slideTrack.children(".slick-slide").eq(i):n.$slideTrack.children(".slick-slide").eq(i+n.options.slidesToShow+1),e=!0===n.options.rtl?o[0]?-1*(n.$slideTrack.width()-o[0].offsetLeft-o.width()):0:o[0]?-1*o[0].offsetLeft:0,e+=(n.$list.width()-o.outerWidth())/2)),e},e.prototype.getOption=e.prototype.slickGetOption=function(i){return this.options[i]},e.prototype.getNavigableIndexes=function(){var i,e=this,t=0,o=0,s=[];for(!1===e.options.infinite?i=e.slideCount:(t=-1*e.options.slidesToScroll,o=-1*e.options.slidesToScroll,i=2*e.slideCount);t<i;)s.push(t),t=o+e.options.slidesToScroll,o+=e.options.slidesToScroll<=e.options.slidesToShow?e.options.slidesToScroll:e.options.slidesToShow;return s},e.prototype.getSlick=function(){return this},e.prototype.getSlideCount=function(){var e,t,o=this;return t=!0===o.options.centerMode?o.slideWidth*Math.floor(o.options.slidesToShow/2):0,!0===o.options.swipeToSlide?(o.$slideTrack.find(".slick-slide").each(function(s,n){if(n.offsetLeft-t+i(n).outerWidth()/2>-1*o.swipeLeft)return e=n,!1}),Math.abs(i(e).attr("data-slick-index")-o.currentSlide)||1):o.options.slidesToScroll},e.prototype.goTo=e.prototype.slickGoTo=function(i,e){this.changeSlide({data:{message:"index",index:
vendor: 2,805 bytes, line 35549
35549parseInt(i)}},e)},e.prototype.init=function(e){var t=this;i(t.$slider).hasClass("slick-initialized")||(i(t.$slider).addClass("slick-initialized"),t.buildRows(),t.buildOut(),t.setProps(),t.startLoad(),t.loadSlider(),t.initializeEvents(),t.updateArrows(),t.updateDots(),t.checkResponsive(!0),t.focusHandler()),e&&t.$slider.trigger("init",[t]),!0===t.options.accessibility&&t.initADA(),t.options.autoplay&&(t.paused=!1,t.autoPlay())},e.prototype.initADA=function(){var e=this,t=Math.ceil(e.slideCount/e.options.slidesToShow),o=e.getNavigableIndexes().filter(function(i){return i>=0&&i<e.slideCount});e.$slides.add(e.$slideTrack.find(".slick-cloned")).attr({"aria-hidden":"true",tabindex:"-1"}).find("a, input, button, select").attr({tabindex:"-1"}),null!==e.$dots&&(e.$slides.not(e.$slideTrack.find(".slick-cloned")).each(function(t){var s=o.indexOf(t);i(this).attr({role:"tabpanel",id:"slick-slide"+e.instanceUid+t,tabindex:-1}),-1!==s&&i(this).attr({"aria-describedby":"slick-slide-control"+e.instanceUid+s})}),e.$dots.attr("role","tablist").find("li").each(function(s){var n=o[s];i(this).attr({role:"presentation"}),i(this).find("button").first().attr({role:"tab",id:"slick-slide-control"+e.instanceUid+s,"aria-controls":"slick-slide"+e.instanceUid+n,"aria-label":s+1+" of "+t,"aria-selected":null,tabindex:"-1"})}).eq(e.currentSlide).find("button").attr({"aria-selected":"true",tabindex:"0"}).end());for(var s=e.currentSlide,n=s+e.options.slidesToShow;s<n;s++)e.$slides.eq(s).attr("tabindex",0);e.activateADA()},e.prototype.initArrowEvents=function(){var i=this;!0===i.options.arrows&&i.slideCount>i.options.slidesToShow&&(i.$prevArrow.off("click.slick").on("click.slick",{message:"previous"},i.changeSlide),i.$nextArrow.off("click.slick").on("click.slick",{message:"next"},i.changeSlide),!0===i.options.accessibility&&(i.$prevArrow.on("keydown.slick",i.keyHandler),i.$nextArrow.on("keydown.slick",i.keyHandler)))},e.prototype.initDotEvents=function(){var e=this;!0===e.options.dots&&(i("li",e.$dots).on("click.slick",{message:"index"},e.changeSlide),!0===e.options.accessibility&&e.$dots.on("keydown.slick",e.keyHandler)),!0===e.options.dots&&!0===e.options.pauseOnDotsHover&&i("li",e.$dots).on("mouseenter.slick",i.proxy(e.interrupt,e,!0)).on("mouseleave.slick",i.proxy(e.interrupt,e,!1))},e.prototype.initSlideEvents=function(){var e=this;e.options.pauseOnHover&&(e.$list.on("mouseenter.slick",i.proxy(e.interrupt,e,!0)),e.$list.on("mouseleave.slick",i.proxy(e.interrupt,e,!1)))},e.prototype.initializeEvents=function(){var e=this;e.initArrowEvents(),e.initDotEvents(),e.initSlideEvents(),e.$list.on("touchstart.slick mousedown.slick",{action:"start"},e.swipeHandler),e.$list.on("touchmove.slick mousemove.slick",{action:"move"},e.swipeHandler),e.$list.on("touchend.slick mouseup.slick",{action:"end"}
35549,e.swipeHandler),e.$list.on("touchcancel.slick mouseleave.slick",{action:"end"},e.swipeHandler),e.$list.on("click.slick",e.clickHandler),i(document).on(e.visibilityChange,i.proxy(e.visibility,e)),!0===e.options.accessibility&&e.$list.on("keydown.slick",e.keyHandler),!0===e.options.focusOnSelect&&i(e.$slideTrack).children().on("click.slick",e.selectHandler),i(window).on("orientationchange.slick.slick-"+e.instanceUid,i.proxy(e.orientationChange,e)),i(window).on("resize.slick.slick-"+e.instanceUid,i.proxy(e.resize,e)),i("[draggable!=true]",e.$slideTrack).on("dragstart",e.preventDefault),i(window).on("load.slick.slick-"+e.instanceUid,e.setPosition),i(e.setPosition)},e.prototype.initUI=function(){var i=this;!0===i.options.arrows&&i.slideCount>i.options.slidesToShow&&(i.$prevArrow.show(),i.$nextArrow.show()),!0===i.options.dots&&i.slideCount>i.options.slidesToShow&&i.$dots.show()},e.prototype.keyHandler=function(i){var e=this;i.target.tagName.match("TEXTAREA|INPUT|SELECT")||(37===i.keyCode&&!0===e.options.accessibility?e.changeSlide({data:{message:!0===e.options.rtl?"next":"previous"}}):39===i.keyCode&&!0===e.options.accessibility&&e.changeSlide({data:{message:!0===e.options.rtl?"previous":"next"}}))},e.prototype.lazyLoad=function(){function e(e){i("img[data-lazy]",e).each(function(){var e=i(this),t=i(this).attr("data-lazy"),o=i(this).attr("data-srcset"),s=i(this).attr("data-sizes")||n.$slider.attr("data-sizes"),r=document.createElement("img");r.onload=function(){e.animate({opacity:0}
vendor: 18,246 bytes, line 35549
35549,100,function(){o&&(e.attr("srcset",o),s&&e.attr("sizes",s)),e.attr("src",t).animate({opacity:1},200,function(){e.removeAttr("data-lazy data-srcset data-sizes").removeClass("slick-loading")}),n.$slider.trigger("lazyLoaded",[n,e,t])})},r.onerror=function(){e.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"),n.$slider.trigger("lazyLoadError",[n,e,t])},r.src=t})}var t,o,s,n=this;if(!0===n.options.centerMode?!0===n.options.infinite?s=(o=n.currentSlide+(n.options.slidesToShow/2+1))+n.options.slidesToShow+2:(o=Math.max(0,n.currentSlide-(n.options.slidesToShow/2+1)),s=n.options.slidesToShow/2+1+2+n.currentSlide):(o=n.options.infinite?n.options.slidesToShow+n.currentSlide:n.currentSlide,s=Math.ceil(o+n.options.slidesToShow),!0===n.options.fade&&(o>0&&o--,s<=n.slideCount&&s++)),t=n.$slider.find(".slick-slide").slice(o,s),"anticipated"===n.options.lazyLoad)for(var r=o-1,l=s,d=n.$slider.find(".slick-slide"),a=0;a<n.options.slidesToScroll;a++)r<0&&(r=n.slideCount-1),t=(t=t.add(d.eq(r))).add(d.eq(l)),r--,l++;e(t),n.slideCount<=n.options.slidesToShow?e(n.$slider.find(".slick-slide")):n.currentSlide>=n.slideCount-n.options.slidesToShow?e(n.$slider.find(".slick-cloned").slice(0,n.options.slidesToShow)):0===n.currentSlide&&e(n.$slider.find(".slick-cloned").slice(-1*n.options.slidesToShow))},e.prototype.loadSlider=function(){var i=this;i.setPosition(),i.$slideTrack.css({opacity:1}),i.$slider.removeClass("slick-loading"),i.initUI(),"progressive"===i.options.lazyLoad&&i.progressiveLazyLoad()},e.prototype.next=e.prototype.slickNext=function(){this.changeSlide({data:{message:"next"}})},e.prototype.orientationChange=function(){var i=this;i.checkResponsive(),i.setPosition()},e.prototype.pause=e.prototype.slickPause=function(){var i=this;i.autoPlayClear(),i.paused=!0},e.prototype.play=e.prototype.slickPlay=function(){var i=this;i.autoPlay(),i.options.autoplay=!0,i.paused=!1,i.focussed=!1,i.interrupted=!1},e.prototype.postSlide=function(e){var t=this;t.unslicked||(t.$slider.trigger("afterChange",[t,e]),t.animating=!1,t.slideCount>t.options.slidesToShow&&t.setPosition(),t.swipeLeft=null,t.options.autoplay&&t.autoPlay(),!0===t.options.accessibility&&(t.initADA(),t.options.focusOnChange&&i(t.$slides.get(t.currentSlide)).attr("tabindex",0).focus()))},e.prototype.prev=e.prototype.slickPrev=function(){this.changeSlide({data:{message:"previous"}})},e.prototype.preventDefault=function(i){i.preventDefault()},e.prototype.progressiveLazyLoad=function(e){e=e||1;var t,o,s,n,r,l=this,d=i("img[data-lazy]",l.$slider);d.length?(t=d.first(),o=t.attr("data-lazy"),s=t.attr("data-srcset"),n=t.attr("data-sizes")||l.$slider.attr("data-sizes"),(r=document.createElement("img")).onload=function(){s&&(t.attr("srcset",s),n&&t.attr("sizes",n)),t.attr("src",o).removeAttr("data-lazy data-srcset data-sizes").removeClass("slick-loading"),!0===l.options.adaptiveHeight&&l.setPosition(),l.$slider.trigger("lazyLoaded",[l,t,o]),l.progressiveLazyLoad()},r.onerror=function(){e<3?setTimeout(function(){l.progressiveLazyLoad(e+1)},500):(t.removeAttr("data-lazy").removeClass("slick-loading").addClass("slick-lazyload-error"),l.$slider.trigger("lazyLoadError",[l,t,o]),l.progressiveLazyLoad())},r.src=o):l.$slider.trigger("allImagesLoaded",[l])},e.prototype.refresh=function(e){var t,o,s=this;o=s.slideCount-s.options.slidesToShow,!s.options.infinite&&s.currentSlide>o&&(s.currentSlide=o),s.slideCount<=s.options.slidesToShow&&(s.currentSlide=0),t=s.currentSlide,s.destroy(!0),i.extend(s,s.initials,{currentSlide:t}),s.init(),e||s.changeSlide({data:{message:"index",index:t}},!1)},e.prototype.registerBreakpoints=function(){var e,t,o,s=this,n=s.options.responsive||null;if("array"===i.type(n)&&n.length){s.respondTo=s.options.respondTo||"window";for(e in n)if(o=s.breakpoints.length-1,n.hasOwnProperty(e)){for(t=n[e].breakpoint;o>=0;)s.breakpoints[o]&&s.breakpoints[o]===t&&s.breakpoints.splice(o,1),o--;s.breakpoints.push(t),s.breakpointSettings[t]=n[e].settings}s.breakpoints.sort(function(i,e){return s.options.mobileFirst?i-e:e-i})}},e.prototype.reinit=function(){var e=this;e.$slides=e.$slideTrack.children(e.options.slide).addClass("slick-slide"),e.slideCount=e.$slides.length,e.currentSlide>=e.slideCount&&0!==e.currentSlide&&(e.currentSlide=e.currentSlide-e.options.slidesToScroll),e.slideCount<=e.options.slidesToShow&&(e.currentSlide=0),e.registerBreakpoints(),e.setProps(),e.setupInfinite(),e.buildArrows(),e.updateArrows(),e.initArrowEvents(),e.buildDots(),e.updateDots(),e.initDotEvents(),e.cleanUpSlideEvents(),e.initSlideEvents(),e.checkResponsive(!1,!0),!0===e.options.focusOnSelect&&i(e.$slideTrack).children().on("click.slick",e.selectHandler),e.setSlideClasses("number"==typeof e.currentSlide?e.currentSlide:0),e.setPosition(),e.focusHandler(),e.paused=!e.options.autoplay,e.autoPlay(),e.$slider.trigger("reInit",[e])},e.prototype.resize=function(){var e=this;i(window).width()!==e.windowWidth&&(clearTimeout(e.windowDelay),e.windowDelay=window.setTimeout(function(){e.windowWidth=i(window).width(),e.checkResponsive(),e.unslicked||e.setPosition()},50))},e.prototype.removeSlide=e.prototype.slickRemove=function(i,e,t){var o=this;if(i="boolean"==typeof i?!0===(e=i)?0:o.slideCount-1:!0===e?--i:i,o.slideCount<1||i<0||i>o.slideCount-1)return!1;o.unload(),!0===t?o.$slideTrack.children().remove():o.$slideTrack.children(this.options.slide).eq(i).remove(),o.$slides=o.$slideTrack.children(this.options.slide),o.$slideTrack.children(this.options.slide).detach(),o.$slideTrack.append(o.$slides),o.$slidesCache=o.$slides,o.reinit()},e.prototype.setCSS=function(i){var e,t,o=this,s={};!0===o.options.rtl&&(i=-i),e="left"==o.positionProp?Math.ceil(i)+"px":"0px",t="top"==o.positionProp?Math.ceil(i)+"px":"0px",s[o.positionProp]=i,!1===o.transformsEnabled?o.$slideTrack.css(s):(s={},!1===o.cssTransitions?(s[o.animType]="translate("+e+", "+t+")",o.$slideTrack.css(s)):(s[o.animType]="translate3d("+e+", "+t+", 0px)",o.$slideTrack.css(s)))},e.prototype.setDimensions=function(){var i=this;!1===i.options.vertical?!0===i.options.centerMode&&i.$list.css({padding:"0px "+i.options.centerPadding}):(i.$list.height(i.$slides.first().outerHeight(!0)*i.options.slidesToShow),!0===i.options.centerMode&&i.$list.css({padding:i.options.centerPadding+" 0px"})),i.listWidth=i.$list.width(),i.listHeight=i.$list.height(),!1===i.options.vertical&&!1===i.options.variableWidth?(i.slideWidth=Math.ceil(i.listWidth/i.options.slidesToShow),i.$slideTrack.width(Math.ceil(i.slideWidth*i.$slideTrack.children(".slick-slide").length))):!0===i.options.variableWidth?i.$slideTrack.width(5e3*i.slideCount):(i.slideWidth=Math.ceil(i.listWidth),i.$slideTrack.height(Math.ceil(i.$slides.first().outerHeight(!0)*i.$slideTrack.children(".slick-slide").length)));var e=i.$slides.first().outerWidth(!0)-i.$slides.first().width();!1===i.options.variableWidth&&i.$slideTrack.children(".slick-slide").width(i.slideWidth-e)},e.prototype.setFade=function(){var e,t=this;t.$slides.each(function(o,s){e=t.slideWidth*o*-1,!0===t.options.rtl?i(s).css({position:"relative",right:e,top:0,zIndex:t.options.zIndex-2,opacity:0}):i(s).css({position:"relative",left:e,top:0,zIndex:t.options.zIndex-2,opacity:0})}),t.$slides.eq(t.currentSlide).css({zIndex:t.options.zIndex-1,opacity:1})},e.prototype.setHeight=function(){var i=this;if(1===i.options.slidesToShow&&!0===i.options.adaptiveHeight&&!1===i.options.vertical){var e=i.$slides.eq(i.currentSlide).outerHeight(!0);i.$list.css("height",e)}},e.prototype.setOption=e.prototype.slickSetOption=function(){var e,t,o,s,n,r=this,l=!1;if("object"===i.type(arguments[0])?(o=arguments[0],l=arguments[1],n="multiple"):"string"===i.type(arguments[0])&&(o=arguments[0],s=arguments[1],l=arguments[2],"responsive"===arguments[0]&&"array"===i.type(arguments[1])?n="responsive":void 0!==arguments[1]&&(n="single")),"single"===n)r.options[o]=s;else if("multiple"===n)i.each(o,function(i,e){r.options[i]=e});else if("responsive"===n)for(t in s)if("array"!==i.type(r.options.responsive))r.options.responsive=[s[t]];else{for(e=r.options.responsive.length-1;e>=0;)r.options.responsive[e].breakpoint===s[t].breakpoint&&r.options.responsive.splice(e,1),e--;r.options.responsive.push(s[t])}l&&(r.unload(),r.reinit())},e.prototype.setPosition=function(){var i=this;i.setDimensions(),i.setHeight(),!1===i.options.fade?i.setCSS(i.getLeft(i.currentSlide)):i.setFade(),i.$slider.trigger("setPosition",[i])},e.prototype.setProps=function(){var i=this,e=document.body.style;i.positionProp=!0===i.options.vertical?"top":"left","top"===i.positionProp?i.$slider.addClass("slick-vertical"):i.$slider.removeClass("slick-vertical"),void 0===e.WebkitTransition&&void 0===e.MozTransition&&void 0===e.msTransition||!0===i.options.useCSS&&(i.cssTransitions=!0),i.options.fade&&("number"==typeof i.options.zIndex?i.options.zIndex<3&&(i.options.zIndex=3):i.options.zIndex=i.defaults.zIndex),void 0!==e.OTransform&&(i.animType="OTransform",i.transformType="-o-transform",i.transitionType="OTransition",void 0===e.perspectiveProperty&&void 0===e.webkitPerspective&&(i.animType=!1)),void 0!==e.MozTransform&&(i.animType="MozTransform",i.transformType="-moz-transform",i.transitionType="MozTransition",void 0===e.perspectiveProperty&&void 0===e.MozPerspective&&(i.animType=!1)),void 0!==e.webkitTransform&&(i.animType="webkitTransform",i.transformType="-webkit-transform",i.transitionType="webkitTransition",void 0===e.perspectiveProperty&&void 0===e.webkitPerspective&&(i.animType=!1)),void 0!==e.msTransform&&(i.animType="msTransform",i.transformType="-ms-transform",i.transitionType="msTransition",void 0===e.msTransform&&(i.animType=!1)),void 0!==e.transform&&!1!==i.animType&&(i.animType="transform",i.transformType="transform",i.transitionType="transition"),i.transformsEnabled=i.options.useTransform&&null!==i.animType&&!1!==i.animType},e.prototype.setSlideClasses=function(i){var e,t,o,s,n=this;if(t=n.$slider.find(".slick-slide").removeClass("slick-active slick-center slick-current").attr("aria-hidden","true"),n.$slides.eq(i).addClass("slick-current"),!0===n.options.centerMode){var r=n.options.slidesToShow%2==0?1:0;e=Math.floor(n.options.slidesToShow/2),!0===n.options.infinite&&(i>=e&&i<=n.slideCount-1-e?n.$slides.slice(i-e+r,i+e+1).addClass("slick-active").attr("aria-hidden","false"):(o=n.options.slidesToShow+i,t.slice(o-e+1+r,o+e+2).addClass("slick-active").attr("aria-hidden","false")),0===i?t.eq(t.length-1-n.options.slidesToShow).addClass("slick-center"):i===n.slideCount-1&&t.eq(n.options.slidesToShow).addClass("slick-center")),n.$slides.eq(i).addClass("slick-center")}else i>=0&&i<=n.slideCount-n.options.slidesToShow?n.$slides.slice(i,i+n.options.slidesToShow).addClass("slick-active").attr("aria-hidden","false"):t.length<=n.options.slidesToShow?t.addClass("slick-active").attr("aria-hidden","false"):(s=n.slideCount%n.options.slidesToShow,o=!0===n.options.infinite?n.options.slidesToShow+i:i,n.options.slidesToShow==n.options.slidesToScroll&&n.slideCount-i<n.options.slidesToShow?t.slice(o-(n.options.slidesToShow-s),o+s).addClass("slick-active").attr("aria-hidden","false"):t.slice(o,o+n.options.slidesToShow).addClass("slick-active").attr("aria-hidden","false"));"ondemand"!==n.options.lazyLoad&&"anticipated"!==n.options.lazyLoad||n.lazyLoad()},e.prototype.setupInfinite=function(){var e,t,o,s=this;if(!0===s.options.fade&&(s.options.centerMode=!1),!0===s.options.infinite&&!1===s.options.fade&&(t=null,s.slideCount>s.options.slidesToShow)){for(o=!0===s.options.centerMode?s.options.slidesToShow+1:s.options.slidesToShow,e=s.slideCount;e>s.slideCount-o;e-=1)t=e-1,i(s.$slides[t]).clone(!0).attr("id","").attr("data-slick-index",t-s.slideCount).prependTo(s.$slideTrack).addClass("slick-cloned");for(e=0;e<o+s.slideCount;e+=1)t=e,i(s.$slides[t]).clone(!0).attr("id","").attr("data-slick-index",t+s.slideCount).appendTo(s.$slideTrack).addClass("slick-cloned");s.$slideTrack.find(".slick-cloned").find("[id]").each(function(){i(this).attr("id","")})}},e.prototype.interrupt=function(i){var e=this;i||e.autoPlay(),e.interrupted=i},e.prototype.selectHandler=function(e){var t=this,o=i(e.target).is(".slick-slide")?i(e.target):i(e.target).parents(".slick-slide"),s=parseInt(o.attr("data-slick-index"));s||(s=0),t.slideCount<=t.options.slidesToShow?t.slideHandler(s,!1,!0):t.slideHandler(s)},e.prototype.slideHandler=function(i,e,t){var o,s,n,r,l,d=null,a=this;if(e=e||!1,!(!0===a.animating&&!0===a.options.waitForAnimate||!0===a.options.fade&&a.currentSlide===i))if(!1===e&&a.asNavFor(i),o=i,d=a.getLeft(o),r=a.getLeft(a.currentSlide),a.currentLeft=null===a.swipeLeft?r:a.swipeLeft,!1===a.options.infinite&&!1===a.options.centerMode&&(i<0||i>a.getDotCount()*a.options.slidesToScroll))!1===a.options.fade&&(o=a.currentSlide,!0!==t?a.animateSlide(r,function(){a.postSlide(o)}):a.postSlide(o));else if(!1===a.options.infinite&&!0===a.options.centerMode&&(i<0||i>a.slideCount-a.options.slidesToScroll))!1===a.options.fade&&(o=a.currentSlide,!0!==t?a.animateSlide(r,function(){a.postSlide(o)}):a.postSlide(o));else{if(a.options.autoplay&&clearInterval(a.autoPlayTimer),s=o<0?a.slideCount%a.options.slidesToScroll!=0?a.slideCount-a.slideCount%a.options.slidesToScroll:a.slideCount+o:o>=a.slideCount?a.slideCount%a.options.slidesToScroll!=0?0:o-a.slideCount:o,a.animating=!0,a.$slider.trigger("beforeChange",[a,a.currentSlide,s]),n=a.currentSlide,a.currentSlide=s,a.setSlideClasses(a.currentSlide),a.options.asNavFor&&(l=(l=a.getNavTarget()).slick("getSlick")).slideCount<=l.options.slidesToShow&&l.setSlideClasses(a.currentSlide),a.updateDots(),a.updateArrows(),!0===a.options.fade)return!0!==t?(a.fadeSlideOut(n),a.fadeSlide(s,function(){a.postSlide(s)})):a.postSlide(s),void a.animateHeight();!0!==t?a.animateSlide(d,function(){a.postSlide(s)}):a.postSlide(s)}},e.prototype.startLoad=function(){var i=this;!0===i.options.arrows&&i.slideCount>i.options.slidesToShow&&(i.$prevArrow.hide(),i.$nextArrow.hide()),!0===i.options.dots&&i.slideCount>i.options.slidesToShow&&i.$dots.hide(),i.$slider.addClass("slick-loading")},e.prototype.swipeDirection=function(){var i,e,t,o,s=this;return i=s.touchObject.startX-s.touchObject.curX,e=s.touchObject.startY-s.touchObject.curY,t=Math.atan2(e,i),(o=Math.round(180*t/Math.PI))<0&&(o=360-Math.abs(o)),o<=45&&o>=0?!1===s.options.rtl?"left":"right":o<=360&&o>=315?!1===s.options.rtl?"left":"right":o>=135&&o<=225?!1===s.options.rtl?"right":"left":!0===s.options.verticalSwiping?o>=35&&o<=135?"down":"up":"vertical"},e.prototype.swipeEnd=function(i){var e,t,o=this;if(o.dragging=!1,o.swiping=!1,o.scrolling)return o.scrolling=!1,!1;if(o.interrupted=!1,o.shouldClick=!(o.touchObject.swipeLength>10),void 0===o.touchObject.curX)return!1;if(!0===o.touchObject.edgeHit&&o.$slider.trigger("edge",[o,o.swipeDirection()]),o.touchObject.swipeLength>=o.touchObject.minSwipe){switch(t=o.swipeDirection()){case"left":case"down":e=o.options.swipeToSlide?o.checkNavigable(o.currentSlide+o.getSlideCount()):o.currentSlide+o.getSlideCount(),o.currentDirection=0;break;case"right":case"up":e=o.options.swipeToSlide?o.checkNavigable(o.currentSlide-o.getSlideCount()):o.currentSlide-o.getSlideCount(),o.currentDirection=1}"vertical"!=t&&(o.slideHandler(e),o.touchObject={},o.$slider.trigger("swipe",[o,t]))}else o.touchObject.startX!==o.touchObject.curX&&(o.slideHandler(o.currentSlide),o.touchObject={})},e.prototype.swipeHandler=function(i){var e=this;if(!(!1===e.options.swipe||"ontouchend"in document&&!1===e.options.swipe||!1===e.options.draggable&&-1!==i.type.indexOf("mouse")))switch(e.touchObject.fingerCount=i.originalEvent&&void 0!==i.originalEvent.touches?i.originalEvent.touches.length:1,e.touchObject.minSwipe=e.listWidth/e.options.touchThreshold,!0===e.options.verticalSwiping&&(e.touchObject.minSwipe=e.listHeight/e.options.touchThreshold),i.data.action){case"start":e.swipeStart(i);break;case"move":e.swipeMove(i);break;case"end":e.swipeEnd(i)}},e.prototype.swipeMove=function(i){var e,t,o,s,n,r,l=this;return n=void 0!==i.originalEvent?i.originalEvent.touches:null,!(!l.dragging||l.scrolling||n&&1!==n.length)&&(e=l.getLeft(l.currentSlide),l.touchObject.curX=void 0!==n?n[0].pageX:i.clientX,l.touchObject.curY=void 0!==n?n[0].pageY:i.clientY,l.touchObject.swipeLength=Math.round(Math.sqrt(Math.pow(l.touchObject.curX-l.touchObject.startX,2))),r=Math.round(Math.sqrt(Math.pow(l.touchObject.curY-l.touchObject.startY,2))),!l.options.verticalSwiping&&!l.swiping&&r>4?(l.scrolling=!0,!1):(!0===l.options.verticalSwiping&&(l.touchObject.swipeLength=r),t=l.swipeDirection(),void 0!==i.originalEvent&&l.touchObject.swipeLength>4&&(l.swiping=!0,i.preventDefault()),s=(!1===l.options.rtl?1:-1)*(l.touchObject.curX>l.touchObject.startX?1:-1),!0===l.options.verticalSwiping&&(s=l.touchObject.curY>l.touchObject.startY?1:-1),o=l.touchObject.swipeLength,l.touchObject.edgeHit=!1,!1===l.options.infinite&&(0===l.currentSlide&&"right"===t||l.currentSlide>=l.getDotCount()&&"left"===t)&&(o=l.touchObject.swipeLength*l.options.edgeFriction,l.touchObject.edgeHit=!0),!1===l.options.vertical?l.swipeLeft=e+o*s:l.swipeLeft=e+o*(l.$list.height()/l.listWidth)*s,!0===l.options.verticalSwiping&&(l.swipeLeft=e+o*s),!0!==l.options.fade&&!1!==l.options.touchMove&&(!0===l.animating?(l.swipeLeft=null,!1):void l.setCSS(l.swipeLeft))))},e.prototype.swipeStart=function(i){var e,t=this;if(t.interrupted=!0,1!==t.touchObject.fingerCount||t.slideCount<=t.options.slidesToShow)return t.touchObject={},!1;void 0!==i.originalEvent&&void 0!==i.originalEvent.touches&&(e=i.originalEvent.touches[0]),t.touchObject.startX=t.touchObject.curX=void 0!==e?e.pageX:i.clientX,t.touchObject.startY=t.touchObject.curY=void 0!==e?e.pageY:i.clientY,t.dragging=!0},e.prototype.unfilterSlides=e.prototype.slickUnfilter=function(){var i=this;null!==i.$slidesCache&&(i.unload(),i.$slideTrack.children(this.options.slide).detach(),i.$slidesCache.appendTo(i.$slideTrack),i.reinit())},e.prototype.unload=function(){var e=this;i(".slick-cloned",e.$slider).remove(),e.$dots&&e.$dots.remove(),e.$prevArrow&&e.htmlExpr.test(e.options.prevArrow)&&e.$prevArrow.remove(),e.$nextArrow&&e.htmlExpr.test(e.options.nextArrow)&&e.$nextArrow.remove(),e.$slides.removeClass("slick-slide slick-active slick-visible slick-current").attr("aria-hidden","true").css("width","")}
35549,e.prototype.unslick=function(i){var e=this;e.$slider.trigger("unslick",[e,i]),e.destroy()},e.prototype.updateArrows=function(){var i=this;Math.floor(i.options.slidesToShow/2),!0===i.options.arrows&&i.slideCount>i.options.slidesToShow&&!i.options.infinite&&(i.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false"),i.$nextArrow.removeClass("slick-disabled").attr("aria-disabled","false"),0===i.currentSlide?(i.$prevArrow.addClass("slick-disabled").attr("aria-disabled","true"),i.$nextArrow.removeClass("slick-disabled").attr("aria-disabled","false")):i.currentSlide>=i.slideCount-i.options.slidesToShow&&!1===i.options.centerMode?(i.$nextArrow.addClass("slick-disabled").attr("aria-disabled","true"),i.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false")):i.currentSlide>=i.slideCount-1&&!0===i.options.centerMode&&(i.$nextArrow.addClass("slick-disabled").attr("aria-disabled","true"),i.$prevArrow.removeClass("slick-disabled").attr("aria-disabled","false")))},e.prototype.updateDots=function(){var i=this;null!==i.$dots&&(i.$dots.find("li").removeClass("slick-active").end(),i.$dots.find("li").eq(Math.floor(i.currentSlide/i.options.slidesToScroll)).addClass("slick-active"))},e.prototype.visibility=function(){var i=this;i.options.autoplay&&(document[i.hidden]?i.interrupted=!0:i.interrupted=!1)},i.fn.slick=function(){var i,t,o=this,s=arguments[0],n=Array.prototype.slice.call(arguments,1),r=o.length;for(i=0;i<r;i++)if("object"==typeof s||void 0===s?o[i].slick=new e(o[i],s):t=o[i].slick[s].apply(o[i].slick,n),void 0!==t)return t;return o}}); 35550 35551!function(t,e){if("object"==typeof exports&&"object"==typeof module)module.exports=e(require("jquery"));else if("function"==typeof define&&define.amd)define(["jquery"],e);else{var n="object"==typeof exports?e(require("jquery")):e(t.jQuery);for(var i in n)("object"==typeof exports?exports:t)[i]=n[i]}}(window,function(n){return s={},o.m=i={
35551"./js/entries/foundation.js":function(t,e,n){"use strict";n.r(e);var i=n("jquery"),o=n.n(i),s=n("./js/foundation.core.js");n.d(e,"Foundation",function(){return s.Foundation});var a=n("./js/foundation.core.utils.js");n.d(e,"CoreUtils",function(){return a});var r=n("./js/foundation.util.box.js");n.d(e,"Box",function(){return r.Box});var l=n("./js/foundation.util.imageLoader.js");n.d(e,"onImagesLoaded",function(){return l.onImagesLoaded});var u=n("./js/foundation.util.keyboard.js");n.d(e,"Keyboard",function(){return u.Keyboard});var c=n("./js/foundation.util.mediaQuery.js");n.d(e,"MediaQuery",function(){return c.MediaQuery});var h=n("./js/foundation.util.motion.js");n.d(e,"Motion",function(){return h.Motion});var d=n("./js/foundation.util.nest.js");n.d(e,"Nest",function(){return d.Nest});var f=n("./js/foundation.util.timer.js");n.d(e,"Timer",function(){return f.Timer});var p=n("./js/foundation.util.touch.js");n.d(e,"Touch",function(){return p.Touch});var m=n("./js/foundation.util.triggers.js");n.d(e,"Triggers",function(){return m.Triggers});var g=n("./js/foundation.abide.js");n.d(e,"Abide",function(){return g.Abide});var v=n("./js/foundation.accordion.js");n.d(e,"Accordion",function(){return v.Accordion});var y=n("./js/foundation.accordionMenu.js");n.d(e,"AccordionMenu",function(){return y.AccordionMenu});var b=n("./js/foundation.drilldown.js");n.d(e,"Drilldown",function(){return b.Drilldown});var w=n("./js/foundation.dropdown.js");n.d(e,"Dropdown",function(){return w.Dropdown});var _=n("./js/foundation.dropdownMenu.js");n.d(e,"DropdownMenu",function(){return _.DropdownMenu});var $=n("./js/foundation.equalizer.js");n.d(e,"Equalizer",function(){return $.Equalizer});var k=n("./js/foundation.interchange.js");n.d(e,"Interchange",function(){return k.Interchange});var j=n("./js/foundation.magellan.js");n.d(e,"Magellan",function(){return j.Magellan});var O=n("./js/foundation.offcanvas.js");n.d(e,"OffCanvas",function(){return O.OffCanvas});var C=n("./js/foundation.orbit.js");n.d(e,"Orbit",function(){return C.Orbit});var z=n("./js/foundation.responsiveMenu.js");n.d(e,"ResponsiveMenu",function(){return z.ResponsiveMenu});var T=n("./js/foundation.responsiveToggle.js");n.d(e,"ResponsiveToggle",function(){return T.ResponsiveToggle});var S=n("./js/foundation.reveal.js");n.d(e,"Reveal",function(){return S.Reveal});var E=n("./js/foundation.slider.js");n.d(e,"Slider",function(){return E.Slider});var P=n("./js/foundation.smoothScroll.js");n.d(e,"SmoothScroll",function(){return P.SmoothScroll});var x=n("./js/foundation.sticky.js");n.d(e,"Sticky",function(){return x.Sticky});var A=n("./js/foundation.tabs.js");n.d(e,"Tabs",function(){return A.Tabs});var L=n("./js/foundation.toggler.js");n.d(e,"Toggler",function(){return L.Toggler});var M=n("./js/foundation.tooltip.js");n.d(e,"Tooltip",function(){return M.Tooltip});var R=n("./js/foundation.responsiveAccordionTabs.js");n.d(e,"ResponsiveAccordionTabs",function(){return R.ResponsiveAccordionTabs}),s.Foundation.addToJquery(o.a),s.Foundation.rtl=a.rtl,s.Foundation.GetYoDigits=a.GetYoDigits,s.Foundation.transitionend=a.transitionend,s.Foundation.RegExpEscape=a.RegExpEscape,s.Foundation.onLoad=a.onLoad,s.Foundation.Box=r.Box,s.Foundation.onImagesLoaded=l.onImagesLoaded,s.Foundation.Keyboard=u.Keyboard,s.Foundation.MediaQuery=c.MediaQuery,s.Foundation.Motion=h.Motion,s.Foundation.Move=h.Move,s.Foundation.Nest=d.Nest,s.Foundation.Timer=f.Timer,p.Touch.init(o.a),m.Triggers.init(o.a,s.Foundation),c.MediaQuery._init(),s.Foundation.plugin(g.Abide,"Abide"),s.Foundation.plugin(v.Accordion,"Accordion"),s.Foundation.plugin(y.AccordionMenu,"AccordionMenu"),s.Foundation.plugin(b.Drilldown,"Drilldown"),s.Foundation.plugin(w.Dropdown,"Dropdown"),s.Foundation.plugin(_.DropdownMenu,"DropdownMenu"),s.Foundation.plugin($.Equalizer,"Equalizer"),s.Foundation.plugin(k.Interchange,"Interchange"),s.Foundation.plugin(j.Magellan,"Magellan"),s.Foundation.plugin(O.OffCanvas,"OffCanvas"),s.Foundation.plugin(C.Orbit,"Orbit"),s.Foundation.plugin(z.ResponsiveMenu,"ResponsiveMenu"),s.Foundation.plugin(T.ResponsiveToggle,"ResponsiveToggle"),s.Foundation.plugin(S.Reveal,"Reveal"),s.Foundation.plugin(E.Slider,"Slider"),s.Foundation.plugin(P.SmoothScroll,"SmoothScroll"),s.Foundation.plugin(x.Sticky,"Sticky"),s.Foundation.plugin(A.Tabs,"Tabs"),s.Foundation.plugin(L.Toggler,"Toggler"),s.Foundation.plugin(M.Tooltip,"Tooltip"),s.Foundation.plugin(R.ResponsiveAccordionTabs,"ResponsiveAccordionTabs"),e.default=s.Foundation},
vendor: 12,549 bytes, line 35551
35551"./js/foundation.abide.js":function(t,e,n){"use strict";n.r(e),n.d(e,"Abide",function(){return d});var i=n("jquery"),h=n.n(i),o=n("./js/foundation.core.plugin.js"),a=n("./js/foundation.core.utils.js");function s(t){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function r(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function l(t,e){return!e||"object"!==s(e)&&"function"!=typeof e?function(t){if(void 0!==t)return t;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(t):e}function u(t){return(u=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function c(t,e){return(c=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var d=function(){function i(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,i),l(this,u(i).apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&c(t,e)}(i,o["Plugin"]),function(t,e,n){e&&r(t.prototype,e),n&&r(t,n)}(i,[{key:"_setup",value:function(t,e){var n=1<arguments.length&&void 0!==e?e:{};this.$element=t,this.options=h.a.extend(!0,{},i.defaults,this.$element.data(),n),this.isEnabled=!0,this.formnovalidate=null,this.className="Abide",this._init()}},{key:"_init",value:function(){var n=this;this.$inputs=h.a.merge(this.$element.find("input").not('[type="submit"]'),this.$element.find("textarea, select")),this.$submits=this.$element.find('[type="submit"]');var t=this.$element.find("[data-abide-error]");this.options.a11yAttributes&&(this.$inputs.each(function(t,e){return n.addA11yAttributes(h()(e))}),t.each(function(t,e){return n.addGlobalErrorA11yAttributes(h()(e))})),this._events()}},{key:"_events",value:function(){var e=this;this.$element.off(".abide").on("reset.zf.abide",function(){e.resetForm()}).on("submit.zf.abide",function(){return e.validateForm()}),this.$submits.off("click.zf.abide keydown.zf.abide").on("click.zf.abide keydown.zf.abide",function(t){t.key&&" "!==t.key&&"Enter"!==t.key||(t.preventDefault(),e.formnovalidate=null!==t.target.getAttribute("formnovalidate"),e.$element.submit())}),"fieldChange"===this.options.validateOn&&this.$inputs.off("change.zf.abide").on("change.zf.abide",function(t){e.validateInput(h()(t.target))}),this.options.liveValidate&&this.$inputs.off("input.zf.abide").on("input.zf.abide",function(t){e.validateInput(h()(t.target))}),this.options.validateOnBlur&&this.$inputs.off("blur.zf.abide").on("blur.zf.abide",function(t){e.validateInput(h()(t.target))})}},{key:"_reflow",value:function(){this._init()}},{key:"_validationIsDisabled",value:function(){return!1===this.isEnabled||("boolean"==typeof this.formnovalidate?this.formnovalidate:!!this.$submits.length&&null!==this.$submits[0].getAttribute("formnovalidate"))}},{key:"enableValidation",value:function(){this.isEnabled=!0}},{key:"disableValidation",value:function(){this.isEnabled=!1}},{key:"requiredCheck",value:function(t){if(!t.attr("required"))return!0;var e=!0;switch(t[0].type){case"checkbox":e=t[0].checked;break;case"select":case"select-one":case"select-multiple":var n=t.find("option:selected");n.length&&n.val()||(e=!1);break;default:t.val()&&t.val().length||(e=!1)}return e}},{key:"findFormError",value:function(e,t){var n=this,i=e.length?e[0].id:"",o=e.siblings(this.options.formErrorSelector);return o.length||(o=e.parent().find(this.options.formErrorSelector)),i&&(o=o.add(this.$element.find('[data-form-error-for="'.concat(i,'"]')))),t&&(o=o.not("[data-form-error-on]"),t.forEach(function(t){o=(o=o.add(e.siblings('[data-form-error-on="'.concat(t,'"]')))).add(n.$element.find('[data-form-error-for="'.concat(i,'"][data-form-error-on="').concat(t,'"]')))})),o}},{key:"findLabel",value:function(t){var e=t[0].id,n=this.$element.find('label[for="'.concat(e,'"]'));return n.length?n:t.closest("label")}},{key:"findRadioLabels",value:function(t){var o=this,e=t.map(function(t,e){var n=e.id,i=o.$element.find('label[for="'.concat(n,'"]'));return i.length||(i=h()(e).closest("label")),i[0]});return h()(e)}},{key:"findCheckboxLabels",value:function(t){var o=this,e=t.map(function(t,e){var n=e.id,i=o.$element.find('label[for="'.concat(n,'"]'));return i.length||(i=h()(e).closest("label")),i[0]});return h()(e)}},{key:"addErrorClasses",value:function(t,e){var n=this.findLabel(t),i=this.findFormError(t,e);n.length&&n.addClass(this.options.labelErrorClass),i.length&&i.addClass(this.options.formErrorClass),t.addClass(this.options.inputErrorClass).attr({"data-invalid":"","aria-invalid":!0})}},{key:"addA11yAttributes",value:function(t){var e=this.findFormError(t),n=e.filter("label"),i=e.first();if(e.length){if(void 0===t.attr("aria-describedby")){var o=i.attr("id");void 0===o&&(o=Object(a.GetYoDigits)(6,"abide-error"),i.attr("id",o)),t.attr("aria-describedby",o)}if(n.filter("[for]").length<n.length){var s=t.attr("id");void 0===s&&(s=Object(a.GetYoDigits)(6,"abide-input"),t.attr("id",s)),n.each(function(t,e){var n=h()(e);void 0===n.attr("for")&&n.attr("for",s)})}e.each(function(t,e){var n=h()(e);void 0===n.attr("role")&&n.attr("role","alert")}).end()}}},{key:"addGlobalErrorA11yAttributes",value:function(t){void 0===t.attr("aria-live")&&t.attr("aria-live",this.options.a11yErrorLevel)}},{key:"removeRadioErrorClasses",value:function(t){var e=this.$element.find(':radio[name="'.concat(t,'"]')),n=this.findRadioLabels(e),i=this.findFormError(e);n.length&&n.removeClass(this.options.labelErrorClass),i.length&&i.removeClass(this.options.formErrorClass),e.removeClass(this.options.inputErrorClass).attr({"data-invalid":null,"aria-invalid":null})}},{key:"removeCheckboxErrorClasses",value:function(t){var e=this.$element.find(':checkbox[name="'.concat(t,'"]')),n=this.findCheckboxLabels(e),i=this.findFormError(e);n.length&&n.removeClass(this.options.labelErrorClass),i.length&&i.removeClass(this.options.formErrorClass),e.removeClass(this.options.inputErrorClass).attr({"data-invalid":null,"aria-invalid":null})}},{key:"removeErrorClasses",value:function(t){if("radio"==t[0].type)return this.removeRadioErrorClasses(t.attr("name"));if("checkbox"==t[0].type)return this.removeCheckboxErrorClasses(t.attr("name"));var e=this.findLabel(t),n=this.findFormError(t);e.length&&e.removeClass(this.options.labelErrorClass),n.length&&n.removeClass(this.options.formErrorClass),t.removeClass(this.options.inputErrorClass).attr({"data-invalid":null,"aria-invalid":null})}},{key:"validateInput",value:function(e){var n=this,t=this.requiredCheck(e),i=e.attr("data-validator"),o=[],s=!0;if(this._validationIsDisabled())return!0;if(e.is("[data-abide-ignore]")||e.is('[type="hidden"]')||e.is("[disabled]"))return!0;switch(e[0].type){case"radio":this.validateRadio(e.attr("name"))||o.push("required");break;case"checkbox":this.validateCheckbox(e.attr("name"))||o.push("required"),s=!1;break;case"select":case"select-one":case"select-multiple":t||o.push("required");break;default:t||o.push("required"),this.validateText(e)||o.push("pattern")}if(i){var a=!!e.attr("required");i.split(" ").forEach(function(t){n.options.validators[t](e,a,e.parent())||o.push(t)})}e.attr("data-equalto")&&(this.options.validators.equalTo(e)||o.push("equalTo"));var r=0===o.length,l=(r?"valid":"invalid")+".zf.abide";if(r){var u=this.$element.find('[data-equalto="'.concat(e.attr("id"),'"]'));if(u.length){var c=this;u.each(function(){h()(this).val()&&c.validateInput(h()(this))})}}return s&&(this.removeErrorClasses(e),r||this.addErrorClasses(e,o)),e.trigger(l,[e]),r}},{key:"validateForm",value:function(){var t,i=this,e=[],n=this;if(this.initialized||(this.initialized=!0),this._validationIsDisabled())return!(this.formnovalidate=null);this.$inputs.each(function(){if("checkbox"===h()(this)[0].type){if(h()(this).attr("name")===t)return!0;t=h()(this).attr("name")}e.push(n.validateInput(h()(this)))});var o=-1===e.indexOf(!1);return this.$element.find("[data-abide-error]").each(function(t,e){var n=h()(e);i.options.a11yAttributes&&i.addGlobalErrorA11yAttributes(n),n.css("display",o?"none":"block")}),this.$element.trigger((o?"formvalid":"forminvalid")+".zf.abide",[this.$element]),o}},{key:"validateText",value:function(t,e){e=e||t.attr("data-pattern")||t.attr("pattern")||t.attr("type");var n=t.val(),i=!0;return n.length&&(this.options.patterns.hasOwnProperty(e)?i=this.options.patterns[e].test(n):e!==t.attr("type")&&(i=new RegExp(e).test(n))),i}},{key:"validateRadio",value:function(t){var e=this.$element.find(':radio[name="'.concat(t,'"]')),n=!1,i=!1;return e.each(function(t,e){h()(e).attr("required")&&(i=!0)}),i||(n=!0),n||e.each(function(t,e){h()(e).prop("checked")&&(n=!0)}),n}},{key:"validateCheckbox",value:function(t){var n=this,e=this.$element.find(':checkbox[name="'.concat(t,'"]')),i=!1,o=!1,s=1,a=0;return e.each(function(t,e){h()(e).attr("required")&&(o=!0)}),o||(i=!0),i||(e.each(function(t,e){h()(e).prop("checked")&&a++,void 0!==h()(e).attr("data-min-required")&&(s=parseInt(h()(e).attr("data-min-required")))}),s<=a&&(i=!0)),!0!==this.initialized&&1<s||(e.each(function(t,e){i?n.removeErrorClasses(h()(e)):n.addErrorClasses(h()(e),["required"])}),i)}},{key:"matchValidation",value:function(e,t,n){var i=this;return n=!!n,-1===t.split(" ").map(function(t){return i.options.validators[t](e,n,e.parent())}).indexOf(!1)}},{key:"resetForm",value:function(){var t=this.$element,e=this.options;h()(".".concat(e.labelErrorClass),t).not("small").removeClass(e.labelErrorClass),h()(".".concat(e.inputErrorClass),t).not("small").removeClass(e.inputErrorClass),h()("".concat(e.formErrorSelector,".").concat(e.formErrorClass)).removeClass(e.formErrorClass),t.find("[data-abide-error]").css("display","none"),h()(":input",t).not(":button, :submit, :reset, :hidden, :radio, :checkbox, [data-abide-ignore]").val("").attr({"data-invalid":null,"aria-invalid":null}),h()(":input:radio",t).not("[data-abide-ignore]").prop("checked",!1).attr({"data-invalid":null,"aria-invalid":null}),h()(":input:checkbox",t).not("[data-abide-ignore]").prop("checked",!1).attr({"data-invalid":null,"aria-invalid":null}),t.trigger("formreset.zf.abide",[t])}},{key:"_destroy",value:function(){var t=this;this.$element.off(".abide").find("[data-abide-error]").css("display","none"),this.$inputs.off(".abide").each(function(){t.removeErrorClasses(h()(this))}),this.$submits.off(".abide")}}]),i}();d.defaults={validateOn:"fieldChange",labelErrorClass:"is-invalid-label",inputErrorClass:"is-invalid-input",formErrorSelector:".form-error",formErrorClass:"is-visible",a11yAttributes:!0,a11yErrorLevel:"assertive",liveValidate:!1,validateOnBlur:!1,patterns:{alpha:/^[a-zA-Z]+$/,alpha_numeric:/^[a-zA-Z0-9]+$/,integer:/^[-+]?\d+$/,number:/^[-+]?\d*(?:[\.\,]\d+)?$/,card:/^(?:4[0-9]{12}(?:[0-9]{3})?|5[1-5][0-9]{14}|(?:222[1-9]|2[3-6][0-9]{2}|27[0-1][0-9]|2720)[0-9]{12}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})$/,cvv:/^([0-9]){3,4}$/,email:/^[a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)+$/,url:/^((?:(https?|ftps?|file|ssh|sftp):\/\/|www\d{0,3}[.]|[a-z0-9.\-]+[.][a-z]{2,4}\/)(?:[^\s()<>]+|\((?:[^\s()<>]+|(?:\([^\s()<>]+\)))*\))+(?:\((?:[^\s()<>]+|(?:\([^\s()<>]+\)))*\)|[^\s`!()\[\]{};:\'".,<>?\xab\xbb\u201c\u201d\u2018\u2019]))$/,domain:/^([a-zA-Z0-9]([a-zA-Z0-9\-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,8}$/,datetime:/^([0-2][0-9]{3})\-([0-1][0-9])\-([0-3][0-9])T([0-5][0-9])\:([0-5][0-9])\:([0-5][0-9])(Z|([\-\+]([0-1][0-9])\:00))$/,date:/(?:19|20)[0-9]{2}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-9])|(?:(?!02)(?:0[1-9]|1[0-2])-(?:30))|(?:(?:0[13578]|1[02])-31))$/,time:/^(0[0-9]|1[0-9]|2[0-3])(:[0-5][0-9]){2}$/,dateISO:/^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/,month_day_year:/^(0[1-9]|1[012])[- \/.](0[1-9]|[12][0-9]|3[01])[- \/.]\d{4}$/,day_month_year:/^(0[1-9]|[12][0-9]|3[01])[- \/.](0[1-9]|1[012])[- \/.]\d{4}$/,color:/^#?([a-fA-F0-9]{6}|[a-fA-F0-9]{3})$/,website:{test:function(t){return d.defaults.patterns.domain.test(t)||d.defaults.patterns.url.test(t)}}},validators:{equalTo:function(t,e,n){return h()("#".concat(t.attr("data-equalto"))).val()===t.val()}}}},
35551"./js/foundation.accordion.js":function(t,e,n){"use strict";n.r(e),n.d(e,"Accordion",function(){return f});var i=n("jquery"),a=n.n(i),o=n("./js/foundation.core.plugin.js"),r=n("./js/foundation.core.utils.js"),s=n("./js/foundation.util.keyboard.js");function l(t){return(l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function u(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function c(t,e){return!e||"object"!==l(e)&&"function"!=typeof e?function(t){if(void 0!==t)return t;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(t):e}function h(t){return(h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function d(t,e){return(d=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var f=function(){function n(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),c(this,h(n).apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&d(t,e)}(n,o["Plugin"]),function(t,e,n){e&&u(t.prototype,e),n&&u(t,n)}(n,[{key:"_setup",value:function(t,e){this.$element=t,this.options=a.a.extend({},n.defaults,this.$element.data(),e),this.className="Accordion",this._init(),s.Keyboard.register("Accordion",{ENTER:"toggle",SPACE:"toggle",ARROW_DOWN:"next",ARROW_UP:"previous"})}},{key:"_init",value:function(){var i=this;this._isInitializing=!0,this.$element.attr("role","tablist"),this.$tabs=this.$element.children("[data-accordion-item]"),this.$tabs.attr({role:"presentation"}),this.$tabs.each(function(t,e){var n=a()(e),i=n.children("[data-tab-content]"),o=i[0].id||Object(r.GetYoDigits)(6,"accordion"),s=e.id?"".concat(e.id,"-label"):"".concat(o,"-label");n.find("a:first").attr({"aria-controls":o,role:"tab",id:s,"aria-expanded":!1,"aria-selected":!1}),i.attr({role:"tabpanel","aria-labelledby":s,"aria-hidden":!0,id:o})});var t=this.$element.find(".is-active").children("[data-tab-content]");t.length&&(this._initialAnchor=t.prev("a").attr("href"),this._openSingleTab(t)),this._checkDeepLink=function(){var t=window.location.hash;if(!t.length){if(i._isInitializing)return;i._initialAnchor&&(t=i._initialAnchor)}var e=t&&a()(t),n=t&&i.$element.find('[href$="'.concat(t,'"]'));!e.length||!n.length||(e&&n&&n.length?n.parent("[data-accordion-item]").hasClass("is-active")||i._openSingleTab(e):i._closeAllTabs(),i.options.deepLinkSmudge&&Object(r.onLoad)(a()(window),function(){var t=i.$element.offset();a()("html, body").animate({scrollTop:t.top-i.options.deepLinkSmudgeOffset},i.options.deepLinkSmudgeDelay)}),i.$element.trigger("deeplink.zf.accordion",[n,e]))},this.options.deepLink&&this._checkDeepLink(),this._events(),this._isInitializing=!1}},{key:"_events",value:function(){var i=this;this.$tabs.each(function(){var e=a()(this),n=e.children("[data-tab-content]");n.length&&e.children("a").off("click.zf.accordion keydown.zf.accordion").on("click.zf.accordion",function(t){t.preventDefault(),i.toggle(n)}).on("keydown.zf.accordion",function(t){s.Keyboard.handleKey(t,"Accordion",{toggle:function(){i.toggle(n)},next:function(){var t=e.next().find("a").focus();i.options.multiExpand||t.trigger("click.zf.accordion")},previous:function(){var t=e.prev().find("a").focus();i.options.multiExpand||t.trigger("click.zf.accordion")},handled:function(){t.preventDefault()}})})}),this.options.deepLink&&a()(window).on("hashchange",this._checkDeepLink)}},{key:"toggle",value:function(t){if(t.closest("[data-accordion]").is("[disabled]"))console.info("Cannot toggle an accordion that is disabled.");else if(t.parent().hasClass("is-active")?this.up(t):this.down(t),this.options.deepLink){var e=t.prev("a").attr("href");this.options.updateHistory?history.pushState({},"",e):history.replaceState({},"",e)}}},{key:"down",value:function(t){t.closest("[data-accordion]").is("[disabled]")?console.info("Cannot call down on an accordion that is disabled."):this.options.multiExpand?this._openTab(t):this._openSingleTab(t)}},{key:"up",value:function(t){if(this.$element.is("[disabled]"))console.info("Cannot call up on an accordion that is disabled.");else{var e=t.parent();if(e.hasClass("is-active")){var n=e.siblings();(this.options.allowAllClosed||n.hasClass("is-active"))&&this._closeTab(t)}}}},{key:"_openSingleTab",value:function(t){var e=this.$element.children(".is-active").children("[data-tab-content]");e.length&&this._closeTab(e.not(t)),this._openTab(t)}},{key:"_openTab",value:function(t){var e=this,n=t.parent(),i=t.attr("aria-labelledby");t.attr("aria-hidden",!1),n.addClass("is-active"),a()("#".concat(i)).attr({"aria-expanded":!0,"aria-selected":!0}),t.finish().slideDown(this.options.slideSpeed,function(){e.$element.trigger("down.zf.accordion",[t])})}},{key:"_closeTab",value:function(t){var e=this,n=t.parent(),i=t.attr("aria-labelledby");t.attr("aria-hidden",!0),n.removeClass("is-active"),a()("#".concat(i)).attr({"aria-expanded":!1,"aria-selected":!1}),t.finish().slideUp(this.options.slideSpeed,function(){e.$element.trigger("up.zf.accordion",[t])})}},{key:"_closeAllTabs",value:function(){var t=this.$element.children(".is-active").children("[data-tab-content]");t.length&&this._closeTab(t)}},{key:"_destroy",value:function(){this.$element.find("[data-tab-content]").stop(!0).slideUp(0).css("display",""),this.$element.find("a").off(".zf.accordion"),this.options.deepLink&&a()(window).off("hashchange",this._checkDeepLink)}}]),n}();f.defaults={slideSpeed:250,multiExpand:!1,allowAllClosed:!1,deepLink:!1,deepLinkSmudge:!1,deepLinkSmudgeDelay:300,deepLinkSmudgeOffset:0,updateHistory:!1}},
35551"./js/foundation.accordionMenu.js":function(t,e,n){"use strict";n.r(e),n.d(e,"AccordionMenu",function(){return p});var i=n("jquery"),r=n.n(i),l=n("./js/foundation.util.keyboard.js"),o=n("./js/foundation.util.nest.js"),a=n("./js/foundation.core.utils.js"),s=n("./js/foundation.core.plugin.js");function u(t){return(u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function c(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function h(t,e){return!e||"object"!==u(e)&&"function"!=typeof e?function(t){if(void 0!==t)return t;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(t):e}function d(t){return(d=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function f(t,e){return(f=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var p=function(){function n(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),h(this,d(n).apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&f(t,e)}(n,s["Plugin"]),function(t,e,n){e&&c(t.prototype,e),n&&c(t,n)}(n,[{key:"_setup",value:function(t,e){this.$element=t,this.options=r.a.extend({},n.defaults,this.$element.data(),e),this.className="AccordionMenu",this._init(),l.Keyboard.register("AccordionMenu",{ENTER:"toggle",SPACE:"toggle",ARROW_RIGHT:"open",ARROW_UP:"up",ARROW_DOWN:"down",ARROW_LEFT:"close",ESCAPE:"closeAll"})}},{key:"_init",value:function(){o.Nest.Feather(this.$element,"accordion");var s=this;this.$element.find("[data-submenu]").not(".is-active").slideUp(0),this.$element.attr({role:"tree","aria-multiselectable":this.options.multiOpen}),this.$menuLinks=this.$element.find(".is-accordion-submenu-parent"),this.$menuLinks.each(function(){var t=this.id||Object(a.GetYoDigits)(6,"acc-menu-link"),e=r()(this),n=e.children("[data-submenu]"),i=n[0].id||Object(a.GetYoDigits)(6,"acc-menu"),o=n.hasClass("is-active");s.options.parentLink&&e.children("a").clone().prependTo(n).wrap('<li data-is-parent-link class="is-submenu-parent-item is-submenu-item is-accordion-submenu-item"></li>');s.options.submenuToggle?(e.addClass("has-submenu-toggle"),e.children("a").after('<button id="'+t+'" class="submenu-toggle" aria-controls="'+i+'" aria-expanded="'+o+'" title="'+s.options.submenuToggleText+'"><span class="submenu-toggle-text">'+s.options.submenuToggleText+"</span></button>")):e.attr({"aria-controls":i,"aria-expanded":o,id:t}),n.attr({"aria-labelledby":t,"aria-hidden":!o,role:"group",id:i})}),this.$element.find("li").attr({role:"treeitem"});var t=this.$element.find(".is-active");t.length&&t.each(function(){s.down(r()(this))}),this._events()}},{key:"_events",value:function(){var a=this;this.$element.find("li").each(function(){var e=r()(this).children("[data-submenu]");e.length&&(a.options.submenuToggle?r()(this).children(".submenu-toggle").off("click.zf.accordionMenu").on("click.zf.accordionMenu",function(t){a.toggle(e)}):r()(this).children("a").off("click.zf.accordionMenu").on("click.zf.accordionMenu",function(t){t.preventDefault(),a.toggle(e)}))}).on("keydown.zf.accordionMenu",function(e){var n,i,o=r()(this),s=o.parent("ul").children("li"),t=o.children("[data-submenu]");s.each(function(t){if(r()(this).is(o))return n=s.eq(Math.max(0,t-1)).find("a").first(),i=s.eq(Math.min(t+1,s.length-1)).find("a").first(),r()(this).children("[data-submenu]:visible").length&&(i=o.find("li:first-child").find("a").first()),r()(this).is(":first-child")?n=o.parents("li").first().find("a").first():n.parents("li").first().children("[data-submenu]:visible").length&&(n=n.parents("li").find("li:last-child").find("a").first()),void(r()(this).is(":last-child")&&(i=o.parents("li").first().next("li").find("a").first()))}),l.Keyboard.handleKey(e,"AccordionMenu",{open:function(){t.is(":hidden")&&(a.down(t),t.find("li").first().find("a").first().focus())},close:function(){t.length&&!t.is(":hidden")?a.up(t):o.parent("[data-submenu]").length&&(a.up(o.parent("[data-submenu]")),o.parents("li").first().find("a").first().focus())},up:function(){return n.focus(),!0},down:function(){return i.focus(),!0},toggle:function(){return!a.options.submenuToggle&&(o.children("[data-submenu]").length?(a.toggle(o.children("[data-submenu]")),!0):void 0)},closeAll:function(){a.hideAll()},handled:function(t){t&&e.preventDefault()}})})}},{key:"hideAll",value:function(){this.up(this.$element.find("[data-submenu]"))}},{key:"showAll",value:function(){this.down(this.$element.find("[data-submenu]"))}},{key:"toggle",value:function(t){t.is(":animated")||(t.is(":hidden")?this.down(t):this.up(t))}},{key:"down",value:function(t){var e=this;
35551if(!this.options.multiOpen){var n=t.parentsUntil(this.$element).add(t).add(t.find(".is-active")),i=this.$element.find(".is-active").not(n);this.up(i)}t.addClass("is-active").attr({"aria-hidden":!1}),this.options.submenuToggle?t.prev(".submenu-toggle").attr({"aria-expanded":!0}):t.parent(".is-accordion-submenu-parent").attr({"aria-expanded":!0}),t.slideDown(this.options.slideSpeed,function(){e.$element.trigger("down.zf.accordionMenu",[t])})}},{key:"up",value:function(t){var e=this,n=t.find("[data-submenu]"),i=t.add(n);n.slideUp(0),i.removeClass("is-active").attr("aria-hidden",!0),this.options.submenuToggle?i.prev(".submenu-toggle").attr("aria-expanded",!1):i.parent(".is-accordion-submenu-parent").attr("aria-expanded",!1),t.slideUp(this.options.slideSpeed,function(){e.$element.trigger("up.zf.accordionMenu",[t])})}},{key:"_destroy",value:function(){this.$element.find("[data-submenu]").slideDown(0).css("display",""),this.$element.find("a").off("click.zf.accordionMenu"),this.$element.find("[data-is-parent-link]").detach(),this.options.submenuToggle&&(this.$element.find(".has-submenu-toggle").removeClass("has-submenu-toggle"),this.$element.find(".submenu-toggle").remove()),o.Nest.Burn(this.$element,"accordion")}}]),n}();p.defaults={parentLink:!1,slideSpeed:250,submenuToggle:!1,submenuToggleText:"Toggle menu",multiOpen:!0}},
35551"./js/foundation.core.js":function(t,e,n){"use strict";n.r(e),n.d(e,"Foundation",function(){return l});var i=n("jquery"),s=n.n(i),o=n("./js/foundation.core.utils.js"),a=n("./js/foundation.util.mediaQuery.js");function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}var l={version:"6.6.3",_plugins:{},_uuids:[],plugin:function(t,e){var n=e||u(t),i=c(n);this._plugins[i]=this[n]=t},registerPlugin:function(t,e){var n=e?c(e):u(t.constructor).toLowerCase();t.uuid=Object(o.GetYoDigits)(6,n),t.$element.attr("data-".concat(n))||t.$element.attr("data-".concat(n),t.uuid),t.$element.data("zfPlugin")||t.$element.data("zfPlugin",t),t.$element.trigger("init.zf.".concat(n)),this._uuids.push(t.uuid)},unregisterPlugin:function(t){var e=c(u(t.$element.data("zfPlugin").constructor));for(var n in this._uuids.splice(this._uuids.indexOf(t.uuid),1),t.$element.removeAttr("data-".concat(e)).removeData("zfPlugin").trigger("destroyed.zf.".concat(e)),t)t[n]=null},reInit:function(t){var e=t instanceof s.a;try{if(e)t.each(function(){s()(this).data("zfPlugin")._init()});else{var n=r(t),i=this;({object:function(t){t.forEach(function(t){t=c(t),s()("[data-"+t+"]").foundation("_init")})},string:function(){t=c(t),s()("[data-"+t+"]").foundation("_init")},undefined:function(){this.object(Object.keys(i._plugins))}})[n](t)}}catch(t){console.error(t)}finally{return t}},reflow:function(i,t){void 0===t?t=Object.keys(this._plugins):"string"==typeof t&&(t=[t]);var o=this;s.a.each(t,function(t,e){var n=o._plugins[e];s()(i).find("[data-"+e+"]").addBack("[data-"+e+"]").filter(function(){return void 0===s()(this).data("zfPlugin")}).each(function(){var t=s()(this),i={reflow:!0};t.attr("data-options")&&t.attr("data-options").split(";").forEach(function(t,e){var n=t.split(":").map(function(t){return t.trim()});n[0]&&(i[n[0]]=function(t){{if("true"===t)return!0;if("false"===t)return!1;if(!isNaN(1*t))return parseFloat(t)}return t}(n[1]))});try{t.data("zfPlugin",new n(s()(this),i))}catch(t){console.error(t)}finally{return}})})},getFnName:u,addToJquery:function(s){return s.fn.foundation=function(n){var t=r(n),e=s(".no-js");if(e.length&&e.removeClass("no-js"),"undefined"===t)a.MediaQuery._init(),l.reflow(this);else{if("string"!==t)throw new TypeError("We're sorry, ".concat(t," is not a valid parameter. You must use a string representing the method you wish to invoke."));var i=Array.prototype.slice.call(arguments,1),o=this.data("zfPlugin");if(void 0===o||void 0===o[n])throw new ReferenceError("We're sorry, '"+n+"' is not an available method for "+(o?u(o):"this element")+".");1===this.length?o[n].apply(o,i):this.each(function(t,e){o[n].apply(s(e).data("zfPlugin"),i)})}return this},s}};function u(t){if(void 0!==Function.prototype.name)return void 0===t.prototype?t.constructor.name:t.prototype.constructor.name;var e=/function\s([^(]{1,})\(/.exec(t.toString());return e&&1<e.length?e[1].trim():""}function c(t){return t.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}l.util={throttle:function(n,i){var o=null;return function(){var t=this,e=arguments;null===o&&(o=setTimeout(function(){n.apply(t,e),o=null},i))}}},window.Foundation=l,function(){Date.now&&window.Date.now||(window.Date.now=Date.now=function(){return(new Date).getTime()});for(var t=["webkit","moz"],e=0;e<t.length&&!window.requestAnimationFrame;++e){var n=t[e];window.requestAnimationFrame=window[n+"RequestAnimationFrame"],window.cancelAnimationFrame=window[n+"CancelAnimationFrame"]||window[n+"CancelRequestAnimationFrame"]}if(/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent)||!window.requestAnimationFrame||!window.cancelAnimationFrame){var i=0;window.requestAnimationFrame=function(t){var e=Date.now(),n=Math.max(i+16,e);return setTimeout(function(){t(i=n)},n-e)},window.cancelAnimationFrame=clearTimeout}window.performance&&window.performance.now||(window.performance={start:Date.now(),now:function(){return Date.now()-this.start}})}(),Function.prototype.bind||(Function.prototype.bind=function(t){if("function"!=typeof this)throw new TypeError("Function.prototype.bind - what is trying to be bound is not callable");function e(){}function n(){return o.apply(this instanceof e?this:t,i.concat(Array.prototype.slice.call(arguments)))}
35551var i=Array.prototype.slice.call(arguments,1),o=this;return this.prototype&&(e.prototype=this.prototype),n.prototype=new e,n})},
35551"./js/foundation.core.plugin.js":function(t,e,n){"use strict";n.r(e),n.d(e,"Plugin",function(){return i});n("jquery");var o=n("./js/foundation.core.utils.js");function s(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}var i=function(){function i(t,e){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,i),this._setup(t,e);var n=a(this);this.uuid=Object(o.GetYoDigits)(6,n),this.$element.attr("data-".concat(n))||this.$element.attr("data-".concat(n),this.uuid),this.$element.data("zfPlugin")||this.$element.data("zfPlugin",this),this.$element.trigger("init.zf.".concat(n))}return function(t,e,n){e&&s(t.prototype,e),n&&s(t,n)}(i,[{key:"destroy",value:function(){this._destroy();var t=a(this);for(var e in this.$element.removeAttr("data-".concat(t)).removeData("zfPlugin").trigger("destroyed.zf.".concat(t)),this)this[e]=null}}]),i}();function a(t){return function(t){return t.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}(t.className)}},
vendor: 8,631 bytes, line 35551
35551"./js/foundation.core.utils.js":function(t,e,n){"use strict";n.r(e),n.d(e,"rtl",function(){return o}),n.d(e,"GetYoDigits",function(){return s}),n.d(e,"RegExpEscape",function(){return a}),n.d(e,"transitionend",function(){return r}),n.d(e,"onLoad",function(){return u}),n.d(e,"ignoreMousedisappear",function(){return c});var i=n("jquery"),l=n.n(i);function o(){return"rtl"===l()("html").attr("dir")}function s(){for(var t=0<arguments.length&&void 0!==arguments[0]?arguments[0]:6,e=1<arguments.length?arguments[1]:void 0,n="",i="0123456789abcdefghijklmnopqrstuvwxyz",o=i.length,s=0;s<t;s++)n+=i[Math.floor(Math.random()*o)];return e?"".concat(n,"-").concat(e):n}function a(t){return t.replace(/[-[\]{}()*+?.,\\^$|#\s]/g,"\\$&")}function r(t){var e,n={transition:"transitionend",WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"otransitionend"},i=document.createElement("div");for(var o in n)void 0!==i.style[o]&&(e=n[o]);return e||(setTimeout(function(){t.triggerHandler("transitionend",[t])},1),"transitionend")}function u(t,e){function n(){return t.triggerHandler(o)}var i="complete"===document.readyState,o=(i?"_didLoad":"load")+".zf.util.onLoad";return t&&(e&&t.one(o,e),i?setTimeout(n):l()(window).one("load",n)),o}function c(s){var t=1<arguments.length&&void 0!==arguments[1]?arguments[1]:{},e=t.ignoreLeaveWindow,a=void 0!==e&&e,n=t.ignoreReappear,r=void 0!==n&&n;return function(e){for(var t=arguments.length,n=new Array(1<t?t-1:0),i=1;i<t;i++)n[i-1]=arguments[i];var o=s.bind.apply(s,[this,e].concat(n));if(null!==e.relatedTarget)return o();setTimeout(function(){if(!a&&document.hasFocus&&!document.hasFocus())return o();r||l()(document).one("mouseenter",function(t){l()(e.currentTarget).has(t.target).length||(e.relatedTarget=t.target,o())})},0)}}},"./js/foundation.drilldown.js":function(t,e,n){"use strict";n.r(e),n.d(e,"Drilldown",function(){return m});var i=n("jquery"),a=n.n(i),r=n("./js/foundation.util.keyboard.js"),o=n("./js/foundation.util.nest.js"),l=n("./js/foundation.core.utils.js"),s=n("./js/foundation.util.box.js"),u=n("./js/foundation.core.plugin.js");function c(t){return(c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function h(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function d(t,e){return!e||"object"!==c(e)&&"function"!=typeof e?function(t){if(void 0!==t)return t;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(t):e}function f(t){return(f=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function p(t,e){return(p=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var m=function(){function n(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),d(this,f(n).apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&p(t,e)}(n,u["Plugin"]),function(t,e,n){e&&h(t.prototype,e),n&&h(t,n)}(n,[{key:"_setup",value:function(t,e){this.$element=t,this.options=a.a.extend({},n.defaults,this.$element.data(),e),this.className="Drilldown",this._init(),r.Keyboard.register("Drilldown",{ENTER:"open",SPACE:"open",ARROW_RIGHT:"next",ARROW_UP:"up",ARROW_DOWN:"down",ARROW_LEFT:"previous",ESCAPE:"close",TAB:"down",SHIFT_TAB:"up"})}},{key:"_init",value:function(){o.Nest.Feather(this.$element,"drilldown"),this.options.autoApplyClass&&this.$element.addClass("drilldown"),this.$element.attr({role:"tree","aria-multiselectable":!1}),this.$submenuAnchors=this.$element.find("li.is-drilldown-submenu-parent").children("a"),this.$submenus=this.$submenuAnchors.parent("li").children("[data-submenu]").attr("role","group"),this.$menuItems=this.$element.find("li").not(".js-drilldown-back").attr("role","treeitem").find("a"),this.$currentMenu=this.$element,this.$element.attr("data-mutate",this.$element.attr("data-drilldown")||Object(l.GetYoDigits)(6,"drilldown")),this._prepareMenu(),this._registerEvents(),this._keyboardEvents()}},{key:"_prepareMenu",value:function(){var n=this;this.$submenuAnchors.each(function(){var t=a()(this),e=t.parent();n.options.parentLink&&t.clone().prependTo(e.children("[data-submenu]")).wrap('<li data-is-parent-link class="is-submenu-parent-item is-submenu-item is-drilldown-submenu-item" role="none"></li>'),t.data("savedHref",t.attr("href")).removeAttr("href").attr("tabindex",0),t.children("[data-submenu]").attr({"aria-hidden":!0,tabindex:0,role:"group"}),n._events(t)}),this.$submenus.each(function(){var t=a()(this);if(!t.find(".js-drilldown-back").length)switch(n.options.backButtonPosition){case"bottom":t.append(n.options.backButton);break;case"top":t.prepend(n.options.backButton);break;default:console.error("Unsupported backButtonPosition value '"+n.options.backButtonPosition+"'")}n._back(t)}),this.$submenus.addClass("invisible"),this.options.autoHeight||this.$submenus.addClass("drilldown-submenu-cover-previous"),this.$element.parent().hasClass("is-drilldown")||(this.$wrapper=a()(this.options.wrapper).addClass("is-drilldown"),this.options.animateHeight&&this.$wrapper.addClass("animate-height"),this.$element.wrap(this.$wrapper)),this.$wrapper=this.$element.parent(),this.$wrapper.css(this._getMaxDims())}},{key:"_resize",value:function(){this.$wrapper.css({"max-width":"none","min-height":"none"}),this.$wrapper.css(this._getMaxDims())}},{key:"_events",value:function(n){var i=this;n.off("click.zf.drilldown").on("click.zf.drilldown",function(t){if(a()(t.target).parentsUntil("ul","li").hasClass("is-drilldown-submenu-parent")&&t.preventDefault(),i._show(n.parent("li")),i.options.closeOnClick){var e=a()("body");e.off(".zf.drilldown").on("click.zf.drilldown",function(t){t.target===i.$element[0]||a.a.contains(i.$element[0],t.target)||(t.preventDefault(),i._hideAll(),e.off(".zf.drilldown"))})}})}},{key:"_registerEvents",value:function(){this.options.scrollTop&&(this._bindHandler=this._scrollTop.bind(this),this.$element.on("open.zf.drilldown hide.zf.drilldown close.zf.drilldown closed.zf.drilldown",this._bindHandler)),this.$element.on("mutateme.zf.trigger",this._resize.bind(this))}},{key:"_scrollTop",value:function(){var t=this,e=""!=t.options.scrollTopElement?a()(t.options.scrollTopElement):t.$element,n=parseInt(e.offset().top+t.options.scrollTopOffset,10);a()("html, body").stop(!0).animate({scrollTop:n},t.options.animationDuration,t.options.animationEasing,function(){this===a()("html")[0]&&t.$element.trigger("scrollme.zf.drilldown")})}},{key:"_keyboardEvents",value:function(){var t=this;this.$menuItems.add(this.$element.find(".js-drilldown-back > a, .is-submenu-parent-item > a")).on("keydown.zf.drilldown",function(e){var n,i,o=a()(this),s=o.parent("li").parent("ul").children("li").children("a");s.each(function(t){if(a()(this).is(o))return n=s.eq(Math.max(0,t-1)),void(i=s.eq(Math.min(t+1,s.length-1)))}),r.Keyboard.handleKey(e,"Drilldown",{next:function(){if(o.is(t.$submenuAnchors))return t._show(o.parent("li")),o.parent("li").one(Object(l.transitionend)(o),function(){o.parent("li").find("ul li a").not(".js-drilldown-back a").first().focus()}),!0},previous:function(){return t._hide(o.parent("li").parent("ul")),o.parent("li").parent("ul").one(Object(l.transitionend)(o),function(){setTimeout(function(){o.parent("li").parent("ul").parent("li").children("a").first().focus()},1)}),!0},up:function(){return n.focus(),!o.is(t.$element.find("> li:first-child > a"))},down:function(){return i.focus(),!o.is(t.$element.find("> li:last-child > a"))},close:function(){o.is(t.$element.find("> li > a"))||(t._hide(o.parent().parent()),o.parent().parent().siblings("a").focus())},open:function(){return(!t.options.parentLink||!o.attr("href"))&&(o.is(t.$menuItems)?o.is(t.$submenuAnchors)?(t._show(o.parent("li")),o.parent("li").one(Object(l.transitionend)(o),function(){o.parent("li").find("ul li a").not(".js-drilldown-back a").first().focus()}),!0):void 0:(t._hide(o.parent("li").parent("ul")),o.parent("li").parent("ul").one(Object(l.transitionend)(o),function(){setTimeout(function(){o.parent("li").parent("ul").parent("li").children("a").first().focus()},1)}),!0))},handled:function(t){t&&e.preventDefault()}})})}},{key:"_hideAll",value:function(){var t=this,e=this.$element.find(".
35551is-drilldown-submenu.is-active");if(e.addClass("is-closing"),this.options.autoHeight){var n=e.parent().closest("ul").data("calcHeight");this.$wrapper.css({height:n})}this.$element.trigger("close.zf.drilldown"),e.one(Object(l.transitionend)(e),function(){e.removeClass("is-active is-closing"),t.$element.trigger("closed.zf.drilldown")})}},{key:"_back",value:function(n){var i=this;n.off("click.zf.drilldown"),n.children(".js-drilldown-back").on("click.zf.drilldown",function(t){i._hide(n);var e=n.parent("li").parent("ul").parent("li");e.length&&i._show(e)})}},{key:"_menuLinkEvents",value:function(){var e=this;this.$menuItems.not(".is-drilldown-submenu-parent").off("click.zf.drilldown").on("click.zf.drilldown",function(t){setTimeout(function(){e._hideAll()},0)})}},{key:"_setShowSubMenuClasses",value:function(t,e){t.addClass("is-active").removeClass("invisible").attr("aria-hidden",!1),t.parent("li").attr("aria-expanded",!0),!0===e&&this.$element.trigger("open.zf.drilldown",[t])}},{key:"_setHideSubMenuClasses",value:function(t,e){t.removeClass("is-active").addClass("invisible").attr("aria-hidden",!0),t.parent("li").attr("aria-expanded",!1),!0===e&&t.trigger("hide.zf.drilldown",[t])}},{key:"_showMenu",value:function(n,i){var o=this;if(this.$element.find('li[aria-expanded="true"] > ul[data-submenu]').each(function(t){o._setHideSubMenuClasses(a()(this))}),(this.$currentMenu=n).is("[data-drilldown]"))return!0===i&&n.find('li[role="treeitem"] > a').first().focus(),void(this.options.autoHeight&&this.$wrapper.css("height",n.data("calcHeight")));var s=n.children().first().parentsUntil("[data-drilldown]","[data-submenu]");s.each(function(t){0===t&&o.options.autoHeight&&o.$wrapper.css("height",a()(this).data("calcHeight"));var e=t==s.length-1;!0==e&&a()(this).one(Object(l.transitionend)(a()(this)),function(){!0===i&&n.find('li[role="treeitem"] > a').first().focus()}),o._setShowSubMenuClasses(a()(this),e)})}},{key:"_show",value:function(t){var e=t.children("[data-submenu]");t.attr("aria-expanded",!0),(this.$currentMenu=e).addClass("is-active").removeClass("invisible").attr("aria-hidden",!1),this.options.autoHeight&&this.$wrapper.css({height:e.data("calcHeight")}),this.$element.trigger("open.zf.drilldown",[t])}},{key:"_hide",value:function(t){this.options.autoHeight&&this.$wrapper.css({height:t.parent().closest("ul").data("calcHeight")});t.parent("li").attr("aria-expanded",!1),t.attr("aria-hidden",!0),t.addClass("is-closing").one(Object(l.transitionend)(t),function(){t.removeClass("is-active is-closing"),t.blur().addClass("invisible")}),t.trigger("hide.zf.drilldown",[t])}},{key:"_getMaxDims",value:function(){var e=0,t={},n=this;return this.$submenus.add(this.$element).each(function(){a()(this).children("li").length;var t=s.Box.GetDimensions(this).height;e=e<t?t:e,n.options.autoHeight&&a()(this).data("calcHeight",t)}),this.options.autoHeight?t.height=this.$currentMenu.data("calcHeight"):t["min-height"]="".concat(e,"px"),t["max-width"]="".concat(this.$element[0].getBoundingClientRect().width,"px"),t}},{key:"_destroy",value:function(){this.options.scrollTop&&this.$element.off(".zf.drilldown",this._bindHandler),this._hideAll(),this.$element.off("mutateme.zf.trigger"),o.Nest.Burn(this.$element,"drilldown"),this.$element.unwrap().find(".js-drilldown-back, .is-submenu-parent-item").remove().end().find(".is-active, .is-closing, .is-drilldown-submenu").removeClass("is-active is-closing is-drilldown-submenu").end().find("[data-submenu]").removeAttr("aria-hidden tabindex role"),this.$submenuAnchors.each(function(){a()(this).off(".zf.drilldown")}),this.$element.find("[data-is-parent-link]").detach(),this.$submenus.removeClass("drilldown-submenu-cover-previous invisible"),this.$element.find("a").each(function(){var t=a()(this);t.removeAttr("tabindex"),t.data("savedHref")&&t.attr("href",t.data("savedHref")).removeData("savedHref")})}}]),n}();m.defaults={autoApplyClass:!0,backButton:'<li class="js-drilldown-back"><a tabindex="0">Back</a></li>',backButtonPosition:"top",wrapper:"<div></div>",parentLink:!1,closeOnClick:!1,autoHeight:!1,animateHeight:!1,scrollTop:!1,scrollTopElement:"",scrollTopOffset:0,animationDuration:500,animationEasing:"swing"}},
vendor: 6,113 bytes, line 35551
35551"./js/foundation.dropdown.js":function(t,e,n){"use strict";n.r(e),n.d(e,"Dropdown",function(){return g});var i=n("jquery"),o=n.n(i),s=n("./js/foundation.util.keyboard.js"),a=n("./js/foundation.core.utils.js"),r=n("./js/foundation.positionable.js"),l=n("./js/foundation.util.triggers.js"),u=n("./js/foundation.util.touch.js");function c(t){return(c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function h(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function d(t,e){return!e||"object"!==c(e)&&"function"!=typeof e?function(t){if(void 0!==t)return t;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(t):e}function f(t,e,n){return(f="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(t,e,n){var i=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=p(t)););return t}(t,e);if(i){var o=Object.getOwnPropertyDescriptor(i,e);return o.get?o.get.call(n):o.value}})(t,e,n||t)}function p(t){return(p=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function m(t,e){return(m=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var g=function(){function n(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),d(this,p(n).apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&m(t,e)}(n,r["Positionable"]),function(t,e,n){e&&h(t.prototype,e),n&&h(t,n)}(n,[{key:"_setup",value:function(t,e){this.$element=t,this.options=o.a.extend({},n.defaults,this.$element.data(),e),this.className="Dropdown",u.Touch.init(o.a),l.Triggers.init(o.a),this._init(),s.Keyboard.register("Dropdown",{ENTER:"toggle",SPACE:"toggle",ESCAPE:"close"})}},{key:"_init",value:function(){var t=this.$element.attr("id");this.$anchors=o()('[data-toggle="'.concat(t,'"]')).length?o()('[data-toggle="'.concat(t,'"]')):o()('[data-open="'.concat(t,'"]')),this.$anchors.attr({"aria-controls":t,"data-is-focus":!1,"data-yeti-box":t,"aria-haspopup":!0,"aria-expanded":!1}),this._setCurrentAnchor(this.$anchors.first()),this.options.parentClass?this.$parent=this.$element.parents("."+this.options.parentClass):this.$parent=null,void 0===this.$element.attr("aria-labelledby")&&(void 0===this.$currentAnchor.attr("id")&&this.$currentAnchor.attr("id",Object(a.GetYoDigits)(6,"dd-anchor")),this.$element.attr("aria-labelledby",this.$currentAnchor.attr("id"))),this.$element.attr({"aria-hidden":"true","data-yeti-box":t,"data-resize":t}),f(p(n.prototype),"_init",this).call(this),this._events()}},{key:"_getDefaultPosition",value:function(){var t=this.$element[0].className.match(/(top|left|right|bottom)/g);return t?t[0]:"bottom"}},{key:"_getDefaultAlignment",value:function(){var t=/float-(\S+)/.exec(this.$currentAnchor.attr("class"));return t?t[1]:f(p(n.prototype),"_getDefaultAlignment",this).call(this)}},{key:"_setPosition",value:function(){this.$element.removeClass("has-position-".concat(this.position," has-alignment-").concat(this.alignment)),f(p(n.prototype),"_setPosition",this).call(this,this.$currentAnchor,this.$element,this.$parent),this.$element.addClass("has-position-".concat(this.position," has-alignment-").concat(this.alignment))}},{key:"_setCurrentAnchor",value:function(t){this.$currentAnchor=o()(t)}},{key:"_events",value:function(){var n=this,e="ontouchstart"in window||void 0!==window.ontouchstart;this.$element.on({"open.zf.trigger":this.open.bind(this),"close.zf.trigger":this.close.bind(this),"toggle.zf.trigger":this.toggle.bind(this),"resizeme.zf.trigger":this._setPosition.bind(this)}),this.$anchors.off("click.zf.trigger").on("click.zf.trigger",function(t){n._setCurrentAnchor(this),(!1===n.options.forceFollow||e&&n.options.hover&&!1===n.$element.hasClass("is-open"))&&t.preventDefault()}),this.options.hover&&(this.$anchors.off("mouseenter.zf.dropdown mouseleave.zf.dropdown").on("mouseenter.zf.dropdown",function(){n._setCurrentAnchor(this);var t=o()("body").data();void 0!==t.whatinput&&"mouse"!==t.whatinput||(clearTimeout(n.timeout),n.timeout=setTimeout(function(){n.open(),n.$anchors.data("hover",!0)},n.options.hoverDelay))}).on("mouseleave.zf.dropdown",Object(a.ignoreMousedisappear)(function(){clearTimeout(n.timeout),n.timeout=setTimeout(function(){n.close(),n.$anchors.data("hover",!1)},n.options.hoverDelay)})),this.options.hoverPane&&this.$element.off("mouseenter.zf.dropdown mouseleave.zf.dropdown").on("mouseenter.zf.dropdown",function(){clearTimeout(n.timeout)}).on("mouseleave.zf.dropdown",Object(a.ignoreMousedisappear)(function(){clearTimeout(n.timeout),n.timeout=setTimeout(function(){n.close(),n.$anchors.data("hover",!1)},n.options.hoverDelay)}))),this.$anchors.add(this.$element).on("keydown.zf.dropdown",function(t){var e=o()(this);s.Keyboard.findFocusable(n.$element);s.Keyboard.handleKey(t,"Dropdown",{open:function(){e.is(n.$anchors)&&!e.is("input, textarea")&&(n.open(),n.$element.attr("tabindex",-1).focus(),t.preventDefault())},close:function(){n.close(),n.$anchors.focus()}})})}},{key:"_addBodyHandler",value:function(){var e=o()(document.body).not(this.$element),n=this;e.off("click.zf.dropdown tap.zf.dropdown").on("click.zf.dropdown tap.zf.dropdown",function(t){n.$anchors.is(t.target)||n.$anchors.find(t.target).length||n.$element.is(t.target)||n.$element.find(t.target).length||(n.close(),e.off("click.zf.dropdown tap.zf.dropdown"))})}},{key:"open",value:function(){if(this.$element.trigger("closeme.zf.dropdown",this.$element.attr("id")),this.$anchors.addClass("hover").attr({"aria-expanded":!0}),this.$element.addClass("is-opening"),this._setPosition(),this.$element.removeClass("is-opening").addClass("is-open").attr({"aria-hidden":!1}
35551),this.options.autoFocus){var t=s.Keyboard.findFocusable(this.$element);t.length&&t.eq(0).focus()}this.options.closeOnClick&&this._addBodyHandler(),this.options.trapFocus&&s.Keyboard.trapFocus(this.$element),this.$element.trigger("show.zf.dropdown",[this.$element])}},{key:"close",value:function(){if(!this.$element.hasClass("is-open"))return!1;this.$element.removeClass("is-open").attr({"aria-hidden":!0}),this.$anchors.removeClass("hover").attr("aria-expanded",!1),this.$element.trigger("hide.zf.dropdown",[this.$element]),this.options.trapFocus&&s.Keyboard.releaseFocus(this.$element)}},{key:"toggle",value:function(){if(this.$element.hasClass("is-open")){if(this.$anchors.data("hover"))return;this.close()}else this.open()}},{key:"_destroy",value:function(){this.$element.off(".zf.trigger").hide(),this.$anchors.off(".zf.dropdown"),o()(document.body).off("click.zf.dropdown tap.zf.dropdown")}}]),n}();g.defaults={parentClass:null,hoverDelay:250,hover:!1,hoverPane:!1,vOffset:0,hOffset:0,position:"auto",alignment:"auto",allowOverlap:!1,allowBottomOverlap:!0,trapFocus:!1,autoFocus:!1,closeOnClick:!1,forceFollow:!0}},
35551"./js/foundation.dropdownMenu.js":function(t,e,n){"use strict";n.r(e),n.d(e,"DropdownMenu",function(){return g});var i=n("jquery"),d=n.n(i),o=n("./js/foundation.core.plugin.js"),r=n("./js/foundation.core.utils.js"),f=n("./js/foundation.util.keyboard.js"),s=n("./js/foundation.util.nest.js"),a=n("./js/foundation.util.box.js"),l=n("./js/foundation.util.touch.js");function u(t){return(u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function c(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function h(t,e){return!e||"object"!==u(e)&&"function"!=typeof e?function(t){if(void 0!==t)return t;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(t):e}function p(t){return(p=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function m(t,e){return(m=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var g=function(){function n(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),h(this,p(n).apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&m(t,e)}(n,o["Plugin"]),function(t,e,n){e&&c(t.prototype,e),n&&c(t,n)}(n,[{key:"_setup",value:function(t,e){this.$element=t,this.options=d.a.extend({},n.defaults,this.$element.data(),e),this.className="DropdownMenu",l.Touch.init(d.a),this._init(),f.Keyboard.register("DropdownMenu",{ENTER:"open",SPACE:"open",ARROW_RIGHT:"next",ARROW_UP:"up",ARROW_DOWN:"down",ARROW_LEFT:"previous",ESCAPE:"close"})}},{key:"_init",value:function(){s.Nest.Feather(this.$element,"dropdown");var t=this.$element.find("li.is-dropdown-submenu-parent");this.$element.children(".is-dropdown-submenu-parent").children(".is-dropdown-submenu").addClass("first-sub"),this.$menuItems=this.$element.find('li[role="none"]'),this.$tabs=this.$element.children('li[role="none"]'),this.$tabs.find("ul.is-dropdown-submenu").addClass(this.options.verticalClass),"auto"===this.options.alignment?this.$element.hasClass(this.options.rightClass)||Object(r.rtl)()||this.$element.parents(".top-bar-right").is("*")?(this.options.alignment="right",t.addClass("opens-left")):(this.options.alignment="left",t.addClass("opens-right")):"right"===this.options.alignment?t.addClass("opens-left"):t.addClass("opens-right"),this.changed=!1,this._events()}},{key:"_isVertical",value:function(){return"block"===this.$tabs.css("display")||"column"===this.$element.css("flex-direction")}},{key:"_isRtl",value:function(){return this.$element.hasClass("align-right")||Object(r.rtl)()&&!this.$element.hasClass("align-left")}},{key:"_events",value:function(){var h=this,s="ontouchstart"in window||void 0!==window.ontouchstart,a="is-dropdown-submenu-parent";(this.options.clickOpen||s)&&this.$menuItems.on("click.zf.dropdownMenu touchstart.zf.dropdownMenu",function(t){var e=d()(t.target).parentsUntil("ul",".".concat(a)),n=e.hasClass(a),i="true"===e.attr("data-is-click"),o=e.children(".is-dropdown-submenu");if(n)if(i){if(!h.options.closeOnClick||!h.options.clickOpen&&!s||h.options.forceFollow&&s)return;t.stopImmediatePropagation(),t.preventDefault(),h._hide(e)}else t.stopImmediatePropagation(),t.preventDefault(),h._show(o),e.add(e.parentsUntil(h.$element,".".concat(a))).attr("data-is-click",!0)}),h.options.closeOnClickInside&&this.$menuItems.on("click.zf.dropdownMenu",function(t){d()(this).hasClass(a)||h._hide()}),this.options.disableHover||this.$menuItems.on("mouseenter.zf.dropdownMenu",function(t){var e=d()(this);e.hasClass(a)&&(clearTimeout(e.data("_delay")),e.data("_delay",setTimeout(function(){h._show(e.children(".is-dropdown-submenu"))},h.options.hoverDelay)))}).on("mouseleave.zf.dropdownMenu",Object(r.ignoreMousedisappear)(function(t){var e=d()(this);if(e.hasClass(a)&&h.options.autoclose){if("true"===e.attr("data-is-click")&&h.options.clickOpen)return!1;clearTimeout(e.data("_delay")),e.data("_delay",setTimeout(function(){h._hide(e)},h.options.closingTime))}})),this.$menuItems.on("keydown.zf.dropdownMenu",function(e){var n,i,o=d()(e.target).parentsUntil("ul",'[role="none"]'),t=-1<h.$tabs.index(o),s=t?h.$tabs:o.siblings("li").add(o);s.each(function(t){if(d()(this).is(o))return n=s.eq(t-1),void(i=s.eq(t+1))});function a(){i.children("a:first").focus(),e.preventDefault()}function r(){n.children("a:first").focus(),e.preventDefault()}function l(){var t=o.children("ul.is-dropdown-submenu");t.length&&(h._show(t),o.find("li > a:first").focus(),e.preventDefault())}function u(){var t=o.parent("ul").parent("li");t.children("a:first").focus(),h._hide(t),e.preventDefault()}var c={open:l,close:function(){h._hide(h.$element),h.$menuItems.eq(0).children("a").focus(),e.preventDefault()}};t?h._isVertical()?h._isRtl()?d.a.extend(c,{down:a,up:r,next:u,previous:l}):d.a.extend(c,{down:a,up:r,next:l,previous:u}):h._isRtl()?d.a.extend(c,{next:r,previous:a,down:l,up:u}):d.a.extend(c,{next:a,previous:r,down:l,up:u}):h._isRtl()?d.a.extend(c,{next:u,previous:l,down:a,up:r}):d.a.extend(c,{next:l,previous:u,down:a,up:r}),f.Keyboard.handleKey(e,"DropdownMenu",c)})}},{key:"_addBodyHandler",value:function(){var e=this,t=d()(document.body);this._removeBodyHandler(),t.on("click.zf.dropdownMenu tap.zf.dropdownMenu",function(t){!d()(t.target).closest(e.$element).length&&(e._hide(),e._removeBodyHandler())})}},{key:"_removeBodyHandler",value:function(){d()(document.body).off("click.zf.dropdownMenu tap.zf.dropdownMenu")}},{key:"_show",value:function(n){var t=this.$tabs.index(this.$tabs.filter(function(t,e){return 0<d()(e).find(n).length})),e=n.parent("li.is-dropdown-submenu-parent").siblings("li.is-dropdown-submenu-parent");this._hide(e,t),n.css("visibility","hidden").addClass("js-dropdown-active").parent("li.is-dropdown-submenu-parent").addClass("is-active");var i=a.Box.ImNotTouchingYou(n,null,!0);if(!i){var o="left"===this.options.alignment?"-right":"-left",s=n.parent(".is-dropdown-submenu-parent");s.removeClass("opens".concat(o)).addClass("opens-".concat(this.options.alignment)),(i=a.Box.ImNotTouchingYou(n,null,!0))||s.removeClass("opens-".concat(this.options.alignment)).addClass("opens-inner"),this.changed=!0}n.css("visibility",""),this.options.closeOnClick&&this._addBodyHandler(),this.$element.trigger("show.zf.dropdownMenu",[n])}},{key:"_hide",value:function(t,n){var e;if((e=t&&t.length?t:void 0!==n?this.$tabs.not(function(t,e){return t===n}
35551):this.$element).hasClass("is-active")||0<e.find(".is-active").length){var i=e.find("li.is-active");if(i.add(e).attr({"data-is-click":!1}).removeClass("is-active"),e.find("ul.js-dropdown-active").removeClass("js-dropdown-active"),this.changed||e.find("opens-inner").length){var o="left"===this.options.alignment?"right":"left";e.find("li.is-dropdown-submenu-parent").add(e).removeClass("opens-inner opens-".concat(this.options.alignment)).addClass("opens-".concat(o)),this.changed=!1}clearTimeout(i.data("_delay")),this._removeBodyHandler(),this.$element.trigger("hide.zf.dropdownMenu",[e])}}},{key:"_destroy",value:function(){this.$menuItems.off(".zf.dropdownMenu").removeAttr("data-is-click").removeClass("is-right-arrow is-left-arrow is-down-arrow opens-right opens-left opens-inner"),d()(document.body).off(".zf.dropdownMenu"),s.Nest.Burn(this.$element,"dropdown")}}]),n}();g.defaults={disableHover:!1,autoclose:!0,hoverDelay:50,clickOpen:!1,closingTime:500,alignment:"auto",closeOnClick:!0,closeOnClickInside:!0,verticalClass:"vertical",rightClass:"align-right",forceFollow:!0}},
vendor: 5,412 bytes, line 35551
35551"./js/foundation.equalizer.js":function(t,e,n){"use strict";n.r(e),n.d(e,"Equalizer",function(){return p});var i=n("jquery"),h=n.n(i),o=n("./js/foundation.util.mediaQuery.js"),s=n("./js/foundation.util.imageLoader.js"),a=n("./js/foundation.core.utils.js"),r=n("./js/foundation.core.plugin.js");function l(t){return(l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function u(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function c(t,e){return!e||"object"!==l(e)&&"function"!=typeof e?function(t){if(void 0!==t)return t;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(t):e}function d(t){return(d=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function f(t,e){return(f=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var p=function(){function n(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),c(this,d(n).apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&f(t,e)}(n,r["Plugin"]),function(t,e,n){e&&u(t.prototype,e),n&&u(t,n)}(n,[{key:"_setup",value:function(t,e){this.$element=t,this.options=h.a.extend({},n.defaults,this.$element.data(),e),this.className="Equalizer",this._init()}},{key:"_init",value:function(){var t=this.$element.attr("data-equalizer")||"",e=this.$element.find('[data-equalizer-watch="'.concat(t,'"]'));o.MediaQuery._init(),this.$watched=e.length?e:this.$element.find("[data-equalizer-watch]"),this.$element.attr("data-resize",t||Object(a.GetYoDigits)(6,"eq")),this.$element.attr("data-mutate",t||Object(a.GetYoDigits)(6,"eq")),this.hasNested=0<this.$element.find("[data-equalizer]").length,this.isNested=0<this.$element.parentsUntil(document.body,"[data-equalizer]").length,this.isOn=!1,this._bindHandler={onResizeMeBound:this._onResizeMe.bind(this),onPostEqualizedBound:this._onPostEqualized.bind(this)};var n,i=this.$element.find("img");this.options.equalizeOn?(n=this._checkMQ(),h()(window).on("changed.zf.mediaquery",this._checkMQ.bind(this))):this._events(),(void 0!==n&&!1===n||void 0===n)&&(i.length?Object(s.onImagesLoaded)(i,this._reflow.bind(this)):this._reflow())}},{key:"_pauseEvents",value:function(){this.isOn=!1,this.$element.off({".zf.equalizer":this._bindHandler.onPostEqualizedBound,"resizeme.zf.trigger":this._bindHandler.onResizeMeBound,"mutateme.zf.trigger":this._bindHandler.onResizeMeBound})}},{key:"_onResizeMe",value:function(t){this._reflow()}},{key:"_onPostEqualized",value:function(t){t.target!==this.$element[0]&&this._reflow()}},{key:"_events",value:function(){this._pauseEvents(),this.hasNested?this.$element.on("postequalized.zf.equalizer",this._bindHandler.onPostEqualizedBound):(this.$element.on("resizeme.zf.trigger",this._bindHandler.onResizeMeBound),this.$element.on("mutateme.zf.trigger",this._bindHandler.onResizeMeBound)),this.isOn=!0}},{key:"_checkMQ",value:function(){var t=!o.MediaQuery.is(this.options.equalizeOn);return t?this.isOn&&(this._pauseEvents(),this.$watched.css("height","auto")):this.isOn||this._events(),t}},{key:"_killswitch",value:function(){}},{key:"_reflow",value:function(){if(!this.options.equalizeOnStack&&this._isStacked())return this.$watched.css("height","auto"),!1;this.options.equalizeByRow?this.getHeightsByRow(this.applyHeightByRow.bind(this)):this.getHeights(this.applyHeight.bind(this))}},{key:"_isStacked",value:function(){return!this.$watched[0]||!this.$watched[1]||this.$watched[0].getBoundingClientRect().top!==this.$watched[1].getBoundingClientRect().top}},{key:"getHeights",value:function(t){for(var e=[],n=0,i=this.$watched.length;n<i;n++)this.$watched[n].style.height="auto",e.push(this.$watched[n].offsetHeight);t(e)}},{key:"getHeightsByRow",value:function(t){var e=this.$watched.length?this.$watched.first().offset().top:0,n=[],i=0;n[i]=[];for(var o=0,s=this.$watched.length;o<s;o++){this.$watched[o].style.height="auto";var a=h()(this.$watched[o]).offset().top;a!=e&&(n[++i]=[],e=a),n[i].push([this.$watched[o],this.$watched[o].offsetHeight])}for(var r=0,l=n.length;r<l;r++){var u=h()(n[r]).map(function(){return this[1]}).get(),c=Math.max.apply(null,u);n[r].push(c)}t(n)}},{key:"applyHeight",value:function(t){var e=Math.max.apply(null,t);this.$element.trigger("preequalized.zf.equalizer"),this.$watched.css("height",e),this.$element.trigger("postequalized.zf.equalizer")}},{key:"applyHeightByRow",value:function(t){this.$element.trigger("preequalized.zf.equalizer");for(var e=0,n=t.length;e<n;e++){var i=t[e].length,o=t[e][i-1];if(i<=2)h()(t[e][0][0]).css({height:"auto"});else{this.$element.trigger("preequalizedrow.zf.equalizer");for(var s=0,a=i-1;s<a;s++)h()(t[e][s][0]).css({height:o});this.$element.trigger("postequalizedrow.zf.equalizer")}}this.$element.trigger("postequalized.zf.equalizer")}},{key:"_destroy",value:function(){this._pauseEvents(),this.$watched.css("height","auto")}}]),n}();p.defaults={equalizeOnStack:!1,equalizeByRow:!1,equalizeOn:""}},
35551"./js/foundation.interchange.js":function(t,e,n){"use strict";n.r(e),n.d(e,"Interchange",function(){return p});var i=n("jquery"),o=n.n(i),s=n("./js/foundation.util.mediaQuery.js"),a=n("./js/foundation.core.plugin.js"),l=n("./js/foundation.core.utils.js"),u=n("./js/foundation.util.triggers.js");function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function c(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function h(t,e){return!e||"object"!==r(e)&&"function"!=typeof e?function(t){if(void 0!==t)return t;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(t):e}function d(t){return(d=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function f(t,e){return(f=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var p=function(){function r(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,r),h(this,d(r).apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&f(t,e)}(r,a["Plugin"]),function(t,e,n){e&&c(t.prototype,e),n&&c(t,n)}(r,[{key:"_setup",value:function(t,e){this.$element=t,this.options=o.a.extend({},r.defaults,this.$element.data(),e),this.rules=[],this.currentPath="",this.className="Interchange",u.Triggers.init(o.a),this._init(),this._events()}},{key:"_init",value:function(){s.MediaQuery._init();var t=this.$element[0].id||Object(l.GetYoDigits)(6,"interchange");this.$element.attr({"data-resize":t,id:t}),this._parseOptions(),this._addBreakpoints(),this._generateRules(),this._reflow()}},{key:"_events",value:function(){var t=this;this.$element.off("resizeme.zf.trigger").on("resizeme.zf.trigger",function(){return t._reflow()})}},{key:"_reflow",value:function(){var t;for(var e in this.rules)if(this.rules.hasOwnProperty(e)){var n=this.rules[e];window.matchMedia(n.query).matches&&(t=n)}t&&this.replace(t.path)}},{key:"_parseOptions",value:function(){void 0===this.options.type?this.options.type="auto":-1===["auto","src","background","html"].indexOf(this.options.type)&&(console.log('Warning: invalid value "'.concat(this.options.type,'" for Interchange option "type"')),this.options.type="auto")}},{key:"_addBreakpoints",value:function(){for(var t in s.MediaQuery.queries)if(s.MediaQuery.queries.hasOwnProperty(t)){var e=s.MediaQuery.queries[t];r.SPECIAL_QUERIES[e.name]=e.value}}},{key:"_generateRules",value:function(t){var e,n=[];for(var i in e="string"==typeof(e=this.options.rules?this.options.rules:this.$element.data("interchange"))?e.match(/\[.*?, .*?\]/g):e)if(e.hasOwnProperty(i)){var o=e[i].slice(1,-1).split(", "),s=o.slice(0,-1).join(""),a=o[o.length-1];r.SPECIAL_QUERIES[a]&&(a=r.SPECIAL_QUERIES[a]),n.push({path:s,query:a})}this.rules=n}},{key:"replace",value:function(e){var n=this;if(this.currentPath!==e){var i="replaced.zf.interchange",t=this.options.type;"auto"===t&&(t="IMG"===this.$element[0].nodeName?"src":e.match(/\.(gif|jpe?g|png|svg|tiff)([?#].*)?/i)?"background":"html"),"src"===t?this.$element.attr("src",e).on("load",function(){n.currentPath=e}).trigger(i):"background"===t?(e=e.replace(/\(/g,"%28").replace(/\)/g,"%29"),this.$element.css({"background-image":"url("+e+")"}).trigger(i)):"html"===t&&o.a.get(e,function(t){n.$element.html(t).trigger(i),o()(t).foundation(),n.currentPath=e})}}},{key:"_destroy",value:function(){this.$element.off("resizeme.zf.trigger")}}]),r}();p.defaults={rules:null,type:"auto"},p.SPECIAL_QUERIES={landscape:"screen and (orientation: landscape)",portrait:"screen and (orientation: portrait)",retina:"only screen and (-webkit-min-device-pixel-ratio: 2), only screen and (min--moz-device-pixel-ratio: 2), only screen and (-o-min-device-pixel-ratio: 2/1), only screen and (min-device-pixel-ratio: 2), only screen and (min-resolution: 192dpi), only screen and (min-resolution: 2dppx)"}},
35551"./js/foundation.magellan.js":function(t,e,n){"use strict";n.r(e),n.d(e,"Magellan",function(){return p});var i=n("jquery"),c=n.n(i),o=n("./js/foundation.core.plugin.js"),s=n("./js/foundation.core.utils.js"),a=n("./js/foundation.smoothScroll.js"),r=n("./js/foundation.util.triggers.js");function l(t){return(l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function u(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function h(t,e){return!e||"object"!==l(e)&&"function"!=typeof e?function(t){if(void 0!==t)return t;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(t):e}function d(t){return(d=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function f(t,e){return(f=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var p=function(){function n(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),h(this,d(n).apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&f(t,e)}(n,o["Plugin"]),function(t,e,n){e&&u(t.prototype,e),n&&u(t,n)}(n,[{key:"_setup",value:function(t,e){this.$element=t,this.options=c.a.extend({},n.defaults,this.$element.data(),e),this.className="Magellan",r.Triggers.init(c.a),this._init(),this.calcPoints()}},{key:"_init",value:function(){var t=this.$element[0].id||Object(s.GetYoDigits)(6,"magellan");this.$targets=c()("[data-magellan-target]"),this.$links=this.$element.find("a"),this.$element.attr({"data-resize":t,"data-scroll":t,id:t}),this.$active=c()(),this.scrollPos=parseInt(window.pageYOffset,10),this._events()}},{key:"calcPoints",value:function(){var n=this,t=document.body,e=document.documentElement;this.points=[],this.winHeight=Math.round(Math.max(window.innerHeight,e.clientHeight)),this.docHeight=Math.round(Math.max(t.scrollHeight,t.offsetHeight,e.clientHeight,e.scrollHeight,e.offsetHeight)),this.$targets.each(function(){var t=c()(this),e=Math.round(t.offset().top-n.options.threshold);t.targetPoint=e,n.points.push(e)})}},{key:"_events",value:function(){var n=this;c()(window).one("load",function(){n.options.deepLinking&&location.hash&&n.scrollToLoc(location.hash),n.calcPoints(),n._updateActive()}),n.onLoadListener=Object(s.onLoad)(c()(window),function(){n.$element.on({"resizeme.zf.trigger":n.reflow.bind(n),"scrollme.zf.trigger":n._updateActive.bind(n)}).on("click.zf.magellan",'a[href^="#"]',function(t){t.preventDefault();var e=this.getAttribute("href");n.scrollToLoc(e)})}),this._deepLinkScroll=function(t){n.options.deepLinking&&n.scrollToLoc(window.location.hash)},c()(window).on("hashchange",this._deepLinkScroll)}},{key:"scrollToLoc",value:function(t){this._inTransition=!0;var e=this,n={animationEasing:this.options.animationEasing,animationDuration:this.options.animationDuration,threshold:this.options.threshold,offset:this.options.offset};a.SmoothScroll.scrollToLoc(t,n,function(){e._inTransition=!1})}},{key:"reflow",value:function(){this.calcPoints(),this._updateActive()}},{key:"_updateActive",value:function(){var n=this;if(!this._inTransition){var t,i=parseInt(window.pageYOffset,10),o=this.scrollPos>i;if((this.scrollPos=i)<this.points[0]);else if(i+this.winHeight===this.docHeight)t=this.points.length-1;else{var e=this.points.filter(function(t,e){return t-n.options.offset-(o?n.options.threshold:0)<=i});t=e.length?e.length-1:0}var s=this.$active,a="";void 0!==t?(this.$active=this.$links.filter('[href="#'+this.$targets.eq(t).data("magellan-target")+'"]'),this.$active.length&&(a=this.$active[0].getAttribute("href"))):this.$active=c()();var r=!(!this.$active.length&&!s.length||this.$active.is(s)),l=a!==window.location.hash;if(r&&(s.removeClass(this.options.activeClass),this.$active.addClass(this.options.activeClass)),this.options.deepLinking&&l)if(window.history.pushState){var u=a||window.location.pathname+window.location.search;this.options.updateHistory?window.history.pushState({},"",u):window.history.replaceState({},"",u)}else window.location.hash=a;r&&this.$element.trigger("update.zf.magellan",[this.$active])}}},{key:"_destroy",value:function(){if(this.$element.off(".zf.trigger .zf.magellan").find(".".concat(this.options.activeClass)).removeClass(this.options.activeClass),this.options.deepLinking){var t=this.$active[0].getAttribute("href");window.location.hash.replace(t,"")}c()(window).off("hashchange",this._deepLinkScroll),this.onLoadListener&&c()(window).off(this.onLoadListener)}}]),n}();p.defaults={animationDuration:500,animationEasing:"linear",threshold:50,activeClass:"is-active",deepLinking:!1,updateHistory:!1,offset:0}},
35551"./js/foundation.offcanvas.js":function(t,e,n){"use strict";n.r(e),n.d(e,"OffCanvas",function(){return m});var i=n("jquery"),s=n.n(i),o=n("./js/foundation.core.plugin.js"),a=n("./js/foundation.core.utils.js"),r=n("./js/foundation.util.keyboard.js"),l=n("./js/foundation.util.mediaQuery.js"),u=n("./js/foundation.util.triggers.js");function c(t){return(c="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function h(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function d(t,e){return!e||"object"!==c(e)&&"function"!=typeof e?function(t){if(void 0!==t)return t;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(t):e}function f(t){return(f=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function p(t,e){return(p=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var m=function(){function i(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,i),d(this,f(i).apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&p(t,e)}(i,o["Plugin"]),function(t,e,n){e&&h(t.prototype,e),n&&h(t,n)}(i,[{key:"_setup",value:function(t,e){var n=this;this.className="OffCanvas",this.$element=t,this.options=s.a.extend({},i.defaults,this.$element.data(),e),this.contentClasses={base:[],reveal:[]},this.$lastTrigger=s()(),this.$triggers=s()(),this.position="left",this.$content=s()(),this.nested=!!this.options.nested,this.$sticky=s()(),this.isInCanvas=!1,s()(["push","overlap"]).each(function(t,e){n.contentClasses.base.push("has-transition-"+e)}),s()(["left","right","top","bottom"]).each(function(t,e){n.contentClasses.base.push("has-position-"+e),n.contentClasses.reveal.push("has-reveal-"+e)}),u.Triggers.init(s.a),l.MediaQuery._init(),this._init(),this._events(),r.Keyboard.register("OffCanvas",{ESCAPE:"close"})}},{key:"_init",value:function(){var t=this.$element.attr("id");if(this.$element.attr("aria-hidden","true"),this.options.contentId?this.$content=s()("#"+this.options.contentId):this.$element.siblings("[data-off-canvas-content]").length?this.$content=this.$element.siblings("[data-off-canvas-content]").first():this.$content=this.$element.closest("[data-off-canvas-content]").first(),this.options.contentId?this.options.contentId&&null===this.options.nested&&console.warn("Remember to use the nested option if using the content ID option!"):this.nested=0===this.$element.siblings("[data-off-canvas-content]").length,!0===this.nested&&(this.options.transition="overlap",this.$element.removeClass("is-transition-push")),this.$element.addClass("is-transition-".concat(this.options.transition," is-closed")),this.$triggers=s()(document).find('[data-open="'+t+'"], [data-close="'+t+'"], [data-toggle="'+t+'"]').attr("aria-expanded","false").attr("aria-controls",t),this.position=this.$element.is(".position-left, .position-top, .position-right, .position-bottom")?this.$element.attr("class").match(/position\-(left|top|right|bottom)/)[1]:this.position,!0===this.options.contentOverlay){var e=document.createElement("div"),n="fixed"===s()(this.$element).css("position")?"is-overlay-fixed":"is-overlay-absolute";e.setAttribute("class","js-off-canvas-overlay "+n),this.$overlay=s()(e),"is-overlay-fixed"==n?s()(this.$overlay).insertAfter(this.$element):this.$content.append(this.$overlay)}var i=new RegExp(Object(a.RegExpEscape)(this.options.revealClass)+"([^\\s]+)","g").exec(this.$element[0].className);i&&(this.options.isRevealed=!0,this.options.revealOn=this.options.revealOn||i[1]),!0===this.options.isRevealed&&this.options.revealOn&&(this.$element.first().addClass("".concat(this.options.revealClass).concat(this.options.revealOn)),this._setMQChecker()),this.options.transitionTime&&this.$element.css("transition-duration",this.options.transitionTime),this.$sticky=this.$content.find("[data-off-canvas-sticky]"),0<this.$sticky.length&&"push"===this.options.transition&&(this.options.contentScroll=!1);var o=this.$element.attr("class").match(/\bin-canvas-for-(\w+)/);o&&2===o.length?this.options.inCanvasOn=o[1]:this.options.inCanvasOn&&this.$element.addClass("in-canvas-for-".concat(this.options.inCanvasOn)),this.options.inCanvasOn&&this._checkInCanvas(),this._removeContentClasses()}},{key:"_events",value:function(){var t=this;this.$element.off(".zf.trigger .zf.offCanvas").on({"open.zf.trigger":this.open.bind(this),"close.zf.trigger":this.close.bind(this),"toggle.zf.trigger":this.toggle.bind(this),"ke
35551ydown.zf.offCanvas":this._handleKeyboard.bind(this)}),!0===this.options.closeOnClick&&(this.options.contentOverlay?this.$overlay:this.$content).on({"click.zf.offCanvas":this.close.bind(this)});this.options.inCanvasOn&&s()(window).on("changed.zf.mediaquery",function(){t._checkInCanvas()})}},{key:"_setMQChecker",value:function(){var t=this;this.onLoadListener=Object(a.onLoad)(s()(window),function(){l.MediaQuery.atLeast(t.options.revealOn)&&t.reveal(!0)}),s()(window).on("changed.zf.mediaquery",function(){l.MediaQuery.atLeast(t.options.revealOn)?t.reveal(!0):t.reveal(!1)})}},{key:"_checkInCanvas",value:function(){this.isInCanvas=l.MediaQuery.atLeast(this.options.inCanvasOn),!0===this.isInCanvas&&this.close()}},{key:"_removeContentClasses",value:function(t){"boolean"!=typeof t?this.$content.removeClass(this.contentClasses.base.join(" ")):!1===t&&this.$content.removeClass("has-reveal-".concat(this.position))}},{key:"_addContentClasses",value:function(t){this._removeContentClasses(t),"boolean"!=typeof t?this.$content.addClass("has-transition-".concat(this.options.transition," has-position-").concat(this.position)):!0===t&&this.$content.addClass("has-reveal-".concat(this.position))}},{key:"_fixStickyElements",value:function(){this.$sticky.each(function(t,e){var n=s()(e);if("fixed"===n.css("position")){var i=parseInt(n.css("top"),10);n.data("offCanvasSticky",{top:i});var o=s()(document).scrollTop()+i;n.css({top:"".concat(o,"px"),width:"100%",transition:"none"})}})}},{key:"_unfixStickyElements",value:function(){this.$sticky.each(function(t,e){var n=s()(e),i=n.data("offCanvasSticky");"object"===c(i)&&(n.css({top:"".concat(i.top,"px"),width:"",transition:""}),n.data("offCanvasSticky",""))})}},{key:"reveal",value:function(t){t?(this.close(),this.isRevealed=!0,this.$element.attr("aria-hidden","false"),this.$element.off("open.zf.trigger toggle.zf.trigger"),this.$element.removeClass("is-closed")):(this.isRevealed=!1,this.$element.attr("aria-hidden","true"),this.$element.off("open.zf.trigger toggle.zf.trigger").on({"open.zf.trigger":this.open.bind(this),"toggle.zf.trigger":this.toggle.bind(this)}),this.$element.addClass("is-closed")),this._addContentClasses(t)}},{key:"_stopScrolling",value:function(t){return!1}},{key:"_recordScrollable",value:function(t){var e=this;e.scrollHeight!==e.clientHeight&&(0===e.scrollTop&&(e.scrollTop=1),e.scrollTop===e.scrollHeight-e.clientHeight&&(e.scrollTop=e.scrollHeight-e.clientHeight-1)),e.allowUp=0<e.scrollTop,e.allowDown=e.scrollTop<e.scrollHeight-e.clientHeight,e.lastY=t.originalEvent.pageY}},{key:"_stopScrollPropagation",value:function(t){var e,n=this,i=t.pageY<n.lastY,o=!i;n.lastY=t.pageY,i&&n.allowUp||o&&n.allowDown?(t.stopPropagation(),n.hasAttribute("data-off-canvas-scrollbox")&&(e=n.closest("[data-off-canvas], [data-off-canvas-scrollbox-outer]"),n.scrollTop<=1&&0<e.scrollTop?e.scrollTop--:n.scrollTop>=n.scrollHeight-n.clientHeight-1&&e.scrollTop<e.scrollHeight-e.clientHeight&&e.scrollTop++)):t.preventDefault()}},{key:"open",value:function(t,e){var n=this;if(!(this.$element.hasClass("is-open")||this.isRevealed||this.isInCanvas)){var i=this;e&&(this.$lastTrigger=e),"top"===this.options.forceTo?window.scrollTo(0,0):"bottom"===this.options.forceTo&&window.scrollTo(0,document.body.scrollHeight),this.options.transitionTime&&"overlap"!==this.options.transition?this.$element.siblings("[data-off-canvas-content]").css("transition-duration",this.options.transitionTime):this.$element.siblings("[data-off-canvas-content]").css("transition-duration",""),this.$element.addClass("is-open").removeClass("is-closed"),this.$triggers.attr("aria-expanded","true"),this.$element.attr("aria-hidden","false"),this.$content.addClass("is-open-"+this.position),!1===this.options.contentScroll&&(s()("body").addClass("is-off-canvas-open").on("touchmove",this._stopScrolling),this.$element.on("touchstart",this._recordScrollable),this.$element.on("touchmove",this._stopScrollPropagation),this.$element.on("touchstart","[data-off-canvas-scrollbox]",this._recordScrollable),this.$element.on("touchmove","[data-off-canvas-scrollbox]",this._stopScrollPropagation)),!0===this.options.contentOverlay&&this.$overlay.addClass("is-visible"),!0===this.options.closeOnClick&&!0===this.options.contentOverlay&&this.$overlay.addClass("is-closable"),!0===this.options.autoFocus&&this.$element.one(Object(a.transitionend)(this.$element),function(){if(i.$element.hasClass("is-open")){var t=i.$element.find("[data-autofocus]");t.length?t.eq(0).focus():i.$element.find("a, button").eq(0).focus()}}),!0===this.options.trapFocus&&(this.$content.attr("tabindex","-1"),r.Keyboard.trapFocus(this.$element)),"push"===this.options.transition&&this._fixStickyElements(),this._addContentClasses(),this.$element.trigger("opened.zf.offCanvas"),this.$element.one(Object(a.transitionend)(this.$element),function(){n.$element.trigger("openedEnd.zf.offCanvas")})}}},{key:"close",value:function(t){var e=this;if(this.$element.hasClass("is-open")&&!this.isRevealed){this.$element.trigger("close.zf.offCanvas");this.$element.removeClass("is-open"),this.$element.attr("aria-hidden","true"),this.$content.removeClass("is-open-left is-open-top is-open-right is-open-bottom"),!0===this.options.contentOverlay&&this.$overlay.removeClass("is-visible"),!0===this.options.closeOnClick&&!0===this.options.contentOverlay&&this.$overlay.removeClass("is-closable"),this.$triggers.attr("aria-expanded","fal
35551se"),this.$element.one(Object(a.transitionend)(this.$element),function(t){e.$element.addClass("is-closed"),e._removeContentClasses(),"push"===e.options.transition&&e._unfixStickyElements(),!1===e.options.contentScroll&&(s()("body").removeClass("is-off-canvas-open").off("touchmove",e._stopScrolling),e.$element.off("touchstart",e._recordScrollable),e.$element.off("touchmove",e._stopScrollPropagation),e.$element.off("touchstart","[data-off-canvas-scrollbox]",e._recordScrollable),e.$element.off("touchmove","[data-off-canvas-scrollbox]",e._stopScrollPropagation)),!0===e.options.trapFocus&&(e.$content.removeAttr("tabindex"),r.Keyboard.releaseFocus(e.$element)),e.$element.trigger("closed.zf.offCanvas")})}}},{key:"toggle",value:function(t,e){this.$element.hasClass("is-open")?this.close(t,e):this.open(t,e)}},{key:"_handleKeyboard",value:function(t){var e=this;r.Keyboard.handleKey(t,"OffCanvas",{close:function(){return e.close(),e.$lastTrigger.focus(),!0},handled:function(){t.preventDefault()}})}},{key:"_destroy",value:function(){this.close(),this.$element.off(".zf.trigger .zf.offCanvas"),this.$overlay.off(".zf.offCanvas"),this.onLoadListener&&s()(window).off(this.onLoadListener)}}]),i}();m.defaults={closeOnClick:!0,contentOverlay:!0,contentId:null,nested:null,contentScroll:!0,transitionTime:null,transition:"push",forceTo:null,isRevealed:!1,revealOn:null,inCanvasOn:null,autoFocus:!0,revealClass:"reveal-for-",trapFocus:!1}},
vendor: 7,132 bytes, line 35551
35551"./js/foundation.orbit.js":function(t,e,n){"use strict";n.r(e),n.d(e,"Orbit",function(){return v});var i=n("jquery"),a=n.n(i),o=n("./js/foundation.util.keyboard.js"),c=n("./js/foundation.util.motion.js"),s=n("./js/foundation.util.timer.js"),r=n("./js/foundation.util.imageLoader.js"),l=n("./js/foundation.core.utils.js"),u=n("./js/foundation.core.plugin.js"),h=n("./js/foundation.util.touch.js");function d(t){return(d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function f(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function p(t,e){return!e||"object"!==d(e)&&"function"!=typeof e?function(t){if(void 0!==t)return t;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(t):e}function m(t){return(m=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function g(t,e){return(g=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var v=function(){function n(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),p(this,m(n).apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&g(t,e)}(n,u["Plugin"]),function(t,e,n){e&&f(t.prototype,e),n&&f(t,n)}(n,[{key:"_setup",value:function(t,e){this.$element=t,this.options=a.a.extend({},n.defaults,this.$element.data(),e),this.className="Orbit",h.Touch.init(a.a),this._init(),o.Keyboard.register("Orbit",{ltr:{ARROW_RIGHT:"next",ARROW_LEFT:"previous"},rtl:{ARROW_LEFT:"next",ARROW_RIGHT:"previous"}})}},{key:"_init",value:function(){this._reset(),this.$wrapper=this.$element.find(".".concat(this.options.containerClass)),this.$slides=this.$element.find(".".concat(this.options.slideClass));var t=this.$element.find("img"),e=this.$slides.filter(".is-active"),n=this.$element[0].id||Object(l.GetYoDigits)(6,"orbit");this.$element.attr({"data-resize":n,id:n}),e.length||this.$slides.eq(0).addClass("is-active"),this.options.useMUI||this.$slides.addClass("no-motionui"),t.length?Object(r.onImagesLoaded)(t,this._prepareForOrbit.bind(this)):this._prepareForOrbit(),this.options.bullets&&this._loadBullets(),this._events(),this.options.autoPlay&&1<this.$slides.length&&this.geoSync(),this.options.accessible&&this.$wrapper.attr("tabindex",0)}},{key:"_loadBullets",value:function(){this.$bullets=this.$element.find(".".concat(this.options.boxOfBullets)).find("button")}},{key:"geoSync",value:function(){var t=this;this.timer=new s.Timer(this.$element,{duration:this.options.timerDelay,infinite:!1},function(){t.changeSlide(!0)}),this.timer.start()}},{key:"_prepareForOrbit",value:function(){this._setWrapperHeight()}},{key:"_setWrapperHeight",value:function(t){var e,n=0,i=0,o=this;this.$slides.each(function(){e=this.getBoundingClientRect().height,a()(this).attr("data-slide",i),/mui/g.test(a()(this)[0].className)||o.$slides.filter(".is-active")[0]===o.$slides.eq(i)[0]||a()(this).css({display:"none"}),n=n<e?e:n,i++}),i===this.$slides.length&&(this.$wrapper.css({height:n}),t&&t(n))}},{key:"_setSlideHeight",value:function(t){this.$slides.each(function(){a()(this).css("max-height",t)})}},{key:"_events",value:function(){var i=this;if(this.$element.off(".resizeme.zf.trigger").on({"resizeme.zf.trigger":this._prepareForOrbit.bind(this)}),1<this.$slides.length){if(this.options.swipe&&this.$slides.off("swipeleft.zf.orbit swiperight.zf.orbit").on("swipeleft.zf.orbit",function(t){t.preventDefault(),i.changeSlide(!0)}).on("swiperight.zf.orbit",function(t){t.preventDefault(),i.changeSlide(!1)}),this.options.autoPlay&&(this.$slides.on("click.zf.orbit",function(){i.$element.data("clickedOn",!i.$element.data("clickedOn")),i.timer[i.$element.data("clickedOn")?"pause":"start"]()}),this.options.pauseOnHover&&this.$element.on("mouseenter.zf.orbit",function(){i.timer.pause()}).on("mouseleave.zf.orbit",function(){i.$element.data("clickedOn")||i.timer.start()})),this.options.navButtons)this.$element.find(".".concat(this.options.nextClass,", .").concat(this.options.prevClass)).attr("tabindex",0).on("click.zf.orbit touchend.zf.orbit",function(t){t.preventDefault(),i.changeSlide(a()(this).hasClass(i.options.nextClass))});this.options.bullets&&this.$bullets.on("click.zf.orbit touchend.zf.orbit",function(){if(/is-active/g.test(this.className))return!1;var t=a()(this).data("slide"),e=t>i.$slides.filter(".is-active").data("slide"),n=i.$slides.eq(t);i.changeSlide(e,n,t)}),this.options.accessible&&this.$wrapper.add(this.$bullets).on("keydown.zf.orbit",function(t){o.Keyboard.handleKey(t,"Orbit",{next:function(){i.changeSlide(!0)},previous:function(){i.changeSlide(!1)},handled:function(){a()(t.target).is(i.$bullets)&&i.$bullets.filter(".is-active").focus()}})})}}},{key:"_reset",value:function(){void 0!==this.$slides&&1<this.$slides.length&&(this.$element.off(".zf.orbit").find("*").off(".zf.orbit"),this.options.autoPlay&&this.timer.restart(),this.$slides.each(function(t){a()(t).removeClass("is-active is-active is-in").removeAttr("aria-live").hide()}),this.$slides.first().addClass("is-active").show(),this.$element.trigger("slidechange.zf.orbit",[this.$slides.first()]),this.options.bullets&&this._updateBullets(0))}},{key:"changeSlide",value:function(t,e,n){if(this.$slides){var i=this.$slides.filter(".is-active").eq(0);if(/mui/g.test(i[0].className))return!1;var o,s=this.$slides.first(),a=this.$slides.last(),r=t?"Right":"Left",l=t?"Left":"Right",u=this;(o=e||(t?this.options.infiniteWrap?i.next(".".concat(this.options.slideClass)).length?i.next(".".concat(this.options.slideClass)):s:i.next(".".concat(this.options.slideClass)):this.options.infiniteWrap?i.prev(".".concat(this.options.slideClass)).length?i.prev(".".concat(this.options.slideClass)):a:i.prev(".".concat(this.options.slideClass)))).length&&(this.$element.trigger("beforeslidechange.zf.orbit",[i,o]),this.options.bullets&&(n=n||this.$slides.index(o),this._updateBullets(n)),this.options.useMUI&&!this.$element.is(":hidden")?(c.Motion.animateIn(o.addClass("is-active"),this.options["animInFrom".concat(r)],function(){o.css({display:"block"}).attr("aria-live","polite")}),c.Motion.animateOut(i.removeClass("is-active"),this.options["animOutTo".concat(l)],function(){i.removeAttr("aria-live"),u.options.autoPlay&&!u.timer.isPaused&&u.timer.restart()})):(i.removeClass("is-active is-in").removeAttr("aria-live").hide(),o.addClass("is-active is-in").attr("aria-live","polite").show(),this.options.autoPlay&&!this.timer.isPaused&&this.timer.restart()),this.$element.trigger("slidechange.zf.orbit",[o]))}}},{key:"_updateBullets",value:function(t){var e=this.$bullets.filter(".is-active"),n=this.$bullets.not(".is-active"),i=this.$bullets.eq(t);e.removeClass("is-active").blur(),i.addClass("is-active");
35551var o=e.children("[data-slide-active-label]").last();if(!o.length){var s=e.children("span");n.toArray().map(function(t){return a()(t).children("span").length}).every(function(t){return t<s.length})&&(o=s.last()).attr("data-slide-active-label","")}o.length&&(o.detach(),i.append(o))}},{key:"_destroy",value:function(){this.$element.off(".zf.orbit").find("*").off(".zf.orbit").end().hide()}}]),n}();v.defaults={bullets:!0,navButtons:!0,animInFromRight:"slide-in-right",animOutToRight:"slide-out-right",animInFromLeft:"slide-in-left",animOutToLeft:"slide-out-left",autoPlay:!0,timerDelay:5e3,infiniteWrap:!0,swipe:!0,pauseOnHover:!0,accessible:!0,containerClass:"orbit-container",slideClass:"orbit-slide",boxOfBullets:"orbit-bullets",nextClass:"orbit-next",prevClass:"orbit-previous",useMUI:!0}},
35551"./js/foundation.positionable.js":function(t,e,n){"use strict";n.r(e),n.d(e,"Positionable",function(){return g});var a=n("./js/foundation.util.box.js"),i=n("./js/foundation.core.plugin.js"),o=n("./js/foundation.core.utils.js");function s(t){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function r(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function l(t,e){return!e||"object"!==s(e)&&"function"!=typeof e?function(t){if(void 0!==t)return t;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(t):e}function u(t){return(u=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function c(t,e){return(c=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var h=["left","right","top","bottom"],d=["top","bottom","center"],f=["left","right","center"],p={left:d,right:d,top:f,bottom:f};function m(t,e){var n=e.indexOf(t);return n===e.length-1?e[0]:e[n+1]}var g=function(){function t(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),l(this,u(t).apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&c(t,e)}(t,i["Plugin"]),function(t,e,n){e&&r(t.prototype,e),n&&r(t,n)}(t,[{key:"_init",value:function(){this.triedPositions={},this.position="auto"===this.options.position?this._getDefaultPosition():this.options.position,this.alignment="auto"===this.options.alignment?this._getDefaultAlignment():this.options.alignment,this.originalPosition=this.position,this.originalAlignment=this.alignment}},{key:"_getDefaultPosition",value:function(){return"bottom"}},{key:"_getDefaultAlignment",value:function(){switch(this.position){case"bottom":case"top":return Object(o.rtl)()?"right":"left";case"left":case"right":return"bottom"}}},{key:"_reposition",value:function(){this._alignmentsExhausted(this.position)?(this.position=m(this.position,h),this.alignment=p[this.position][0]):this._realign()}},{key:"_realign",value:function(){this._addTriedPosition(this.position,this.alignment),this.alignment=m(this.alignment,p[this.position])}},{key:"_addTriedPosition",value:function(t,e){this.triedPositions[t]=this.triedPositions[t]||[],this.triedPositions[t].push(e)}},{key:"_positionsExhausted",value:function(){for(var t=!0,e=0;e<h.length;e++)t=t&&this._alignmentsExhausted(h[e]);return t}},{key:"_alignmentsExhausted",value:function(t){return this.triedPositions[t]&&this.triedPositions[t].length==p[t].length}},{key:"_getVOffset",value:function(){return this.options.vOffset}},{key:"_getHOffset",value:function(){return this.options.hOffset}},{key:"_setPosition",value:function(t,e,n){if("false"===t.attr("aria-expanded"))return!1;if(this.options.allowOverlap||(this.position=this.originalPosition,this.alignment=this.originalAlignment),e.offset(a.Box.GetExplicitOffsets(e,t,this.position,this.alignment,this._getVOffset(),this._getHOffset())),!this.options.allowOverlap){for(var i=1e8,o={position:this.position,alignment:this.alignment};!this._positionsExhausted();){var s=a.Box.OverlapArea(e,n,!1,!1,this.options.allowBottomOverlap);if(0===s)return;s<i&&(i=s,o={position:this.position,alignment:this.alignment}),this._reposition(),e.offset(a.Box.GetExplicitOffsets(e,t,this.position,this.alignment,this._getVOffset(),this._getHOffset()))}this.position=o.position,this.alignment=o.alignment,e.offset(a.Box.GetExplicitOffsets(e,t,this.position,this.alignment,this._getVOffset(),this._getHOffset()))}}}]),t}();g.defaults={position:"auto",alignment:"auto",allowOverlap:!1,allowBottomOverlap:!0,vOffset:0,hOffset:0}},
35551"./js/foundation.responsiveAccordionTabs.js":function(t,e,n){"use strict";n.r(e),n.d(e,"ResponsiveAccordionTabs",function(){return g});var i=n("jquery"),c=n.n(i),a=n("./js/foundation.util.mediaQuery.js"),h=n("./js/foundation.core.utils.js"),o=n("./js/foundation.core.plugin.js"),s=n("./js/foundation.accordion.js");function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function l(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function u(t,e){return!e||"object"!==r(e)&&"function"!=typeof e?f(t):e}function d(t){return(d=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function f(t){if(void 0===t)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function p(t,e){return(p=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var m={tabs:{cssClass:"tabs",plugin:n("./js/foundation.tabs.js").Tabs,open:function(t,e){return t.selectTab(e)},close:null,toggle:null},accordion:{cssClass:"accordion",plugin:s.Accordion,open:function(t,e){return t.down(c()(e))},close:function(t,e){return t.up(c()(e))},toggle:function(t,e){return t.toggle(c()(e))}}},g=function(){function i(t,e){var n;return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,i),u(n=u(this,d(i).call(this,t,e)),n.options.reflow&&n.storezfData||f(n))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&p(t,e)}(i,o["Plugin"]),function(t,e,n){e&&l(t.prototype,e),n&&l(t,n)}(i,[{key:"_setup",value:function(t,e){this.$element=c()(t),this.$element.data("zfPluginBase",this),this.options=c.a.extend({},i.defaults,this.$element.data(),e),this.rules=this.$element.data("responsive-accordion-tabs"),this.currentMq=null,this.currentRule=null,this.currentPlugin=null,this.className="ResponsiveAccordionTabs",this.$element.attr("id")||this.$element.attr("id",Object(h.GetYoDigits)(6,"responsiveaccordiontabs")),this._init(),this._events()}},{key:"_init",value:function(){if(a.MediaQuery._init(),"string"==typeof this.rules){for(var t={},e=this.rules.split(" "),n=0;n<e.length;n++){var i=e[n].split("-"),o=1<i.length?i[0]:"small",s=1<i.length?i[1]:i[0];null!==m[s]&&(t[o]=m[s])}this.rules=t}this._getAllOptions(),c.a.isEmptyObject(this.rules)||this._checkMediaQueries()}},{key:"_getAllOptions",value:function(){for(var t in this.allOptions={},m)if(m.hasOwnProperty(t)){var e=m[t];try{var n=c()("<ul></ul>"),i=new e.plugin(n,this.options);for(var o in i.options)if(i.options.hasOwnProperty(o)&&"zfPlugin"!==o){var s=i.options[o];this.allOptions[o]=s}i.destroy()}catch(t){}}}},{key:"_events",value:function(){this._changedZfMediaQueryHandler=this._checkMediaQueries.bind(this),c()(window).on("changed.zf.mediaquery",this._changedZfMediaQueryHandler)}},{key:"_checkMediaQueries",value:function(){var e,n=this;c.a.each(this.rules,function(t){a.MediaQuery.atLeast(t)&&(e=t)}),e&&(this.currentPlugin instanceof this.rules[e].plugin||(c.a.each(m,function(t,e){n.$element.removeClass(e.cssClass)}),this.$element.addClass(this.rules[e].cssClass),this.currentPlugin&&(!this.currentPlugin.$element.data("zfPlugin")&&this.storezfData&&this.currentPlugin.$element.data("zfPlugin",this.storezfData),this.currentPlugin.destroy()),this._handleMarkup(this.rules[e].cssClass),this.currentRule=this.rules[e],this.currentPlugin=new this.currentRule.plugin(this.$element,this.options),this.storezfData=this.currentPlugin.$element.data("zfPlugin")))}},{key:"_handleMarkup",value:function(t){var n=this,e="accordion",i=c()("[data-tabs-content="+this.$element.attr("id")+"]");if(i.length&&(e="tabs"),e!==t){var o=n.allOptions.linkClass?n.allOptions.linkClass:"tabs-title",s=n.allOptions.panelClass?n.allOptions.panelClass:"tabs-panel";this.$element.removeAttr("role");var a=this.$element.children("."+o+",[data-accordion-item]").removeClass(o).removeClass("accordion-item").removeAttr("data-accordion-item"),r=a.children("a").removeClass("accordion-title");if("tabs"===e?(i=i.children("."+s).removeClass(s).removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby")).children("a").removeAttr("role").removeAttr("aria-controls").removeAttr("aria-selected"):i=a.children("[data-tab-content]").removeClass("accordion-content"),i.css({display:"",visibility:""}),a.css({display:"",visibility:""}),"accordion"===t)i.each(function(t,e){c()(e).appendTo(a.get(t)).addClass("accordion-content").attr("data-tab-content","").removeClass("is-active").css({height:""}),c()("[data-tabs-content="+n.$element.attr("id")+"]").after('<div id="tabs-placeholder-'+n.$element.attr("id")+'"></div>').detach(),a.addClass("accordion-item").attr("data-accordion-item",""),r.addClass("accordion-title")});else if("tabs"===t){var l=c()("[data-tabs-content="+n.$element.attr("id")+"]"),u=c()("#tabs-placeholder-"+n.$element.attr("id"));u.length?(l=c()('<div class="tabs-content"></div>').insertAfter(u).attr("data-tabs-content",n.$element.attr("id")),u.remove()):l=c()('<div class="tabs-content"></div>').insertAfter(n.$element).attr("data-tabs-content",n.$element.attr("id")),i.each(function(t,e){var n=c()(e).appendTo(l).addClass(s),i=r.get(t).hash.slice(1),o=c()(e).attr("id")||Object(h.GetYoDigits)(6,"accordion");i!==o&&(""!==i?c()(e).attr("id",i):(i=o,c()(e).attr("id",i),c()(r.get(t)).attr("href",c()(r.get(t)).attr("href").replace("#","")+"#"+i))),c()(a.get(t)).hasClass("is-active")&&n.addClass("is-active")}),a.addClass(o)}}}},{key:"open",value:function(t){var e;if(this.currentRule&&"function"==typeof this.currentRule.open)return(e=this.currentRule).open.apply(e,[this.currentPlugin].concat(Array.prototype.slice.call(arguments)))}},{key:"close",value:function(t){var e;if(this.currentRule&&"function"==typeof this.currentRule.close)return(e=this.currentRule).close.apply(e,[this.currentPlugin].concat(Array.prototype.slice.call(arguments)))}},{key:"toggle",value:function(t){var e;if(this.currentRule&&"function"==typeof this.currentRule.toggle)return(e=this.currentRule).toggle.apply(e,[this.currentPlugin].concat(Array.prototype.slice.call(arguments)))}},{key:"_destroy",value:function(){this.currentPlugin&&this.currentPlugin.destroy(),c()(window).off("changed.zf.mediaquery",this._changedZfMediaQueryHandler)}}]),i}();g.defaults={}},
35551"./js/foundation.responsiveMenu.js":function(t,e,n){"use strict";n.r(e),n.d(e,"ResponsiveMenu",function(){return v});var i=n("jquery"),a=n.n(i),r=n("./js/foundation.util.mediaQuery.js"),l=n("./js/foundation.core.utils.js"),o=n("./js/foundation.core.plugin.js"),s=n("./js/foundation.dropdownMenu.js"),u=n("./js/foundation.drilldown.js"),c=n("./js/foundation.accordionMenu.js");function h(t){return(h="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function d(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function f(t,e){return!e||"object"!==h(e)&&"function"!=typeof e?function(t){if(void 0!==t)return t;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(t):e}function p(t){return(p=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function m(t,e){return(m=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var g={dropdown:{cssClass:"dropdown",plugin:s.DropdownMenu},drilldown:{cssClass:"drilldown",plugin:u.Drilldown},accordion:{cssClass:"accordion-menu",plugin:c.AccordionMenu}},v=function(){function t(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,t),f(this,p(t).apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&m(t,e)}(t,o["Plugin"]),function(t,e,n){e&&d(t.prototype,e),n&&d(t,n)}(t,[{key:"_setup",value:function(t,e){this.$element=a()(t),this.rules=this.$element.data("responsive-menu"),this.currentMq=null,this.currentPlugin=null,this.className="ResponsiveMenu",this._init(),this._events()}},{key:"_init",value:function(){if(r.MediaQuery._init(),"string"==typeof this.rules){for(var t={},e=this.rules.split(" "),n=0;n<e.length;n++){var i=e[n].split("-"),o=1<i.length?i[0]:"small",s=1<i.length?i[1]:i[0];null!==g[s]&&(t[o]=g[s])}this.rules=t}a.a.isEmptyObject(this.rules)||this._checkMediaQueries(),this.$element.attr("data-mutate",this.$element.attr("data-mutate")||Object(l.GetYoDigits)(6,"responsive-menu"))}},{key:"_events",value:function(){var t=this;a()(window).on("changed.zf.mediaquery",function(){t._checkMediaQueries()})}},{key:"_checkMediaQueries",value:function(){var e,n=this;a.a.each(this.rules,function(t){r.MediaQuery.atLeast(t)&&(e=t)}),e&&(this.currentPlugin instanceof this.rules[e].plugin||(a.a.each(g,function(t,e){n.$element.removeClass(e.cssClass)}),this.$element.addClass(this.rules[e].cssClass),this.currentPlugin&&this.currentPlugin.destroy(),this.currentPlugin=new this.rules[e].plugin(this.$element,{})))}},{key:"_destroy",value:function(){this.currentPlugin.destroy(),a()(window).off(".zf.ResponsiveMenu")}}]),t}();v.defaults={}},
35551"./js/foundation.responsiveToggle.js":function(t,e,n){"use strict";n.r(e),n.d(e,"ResponsiveToggle",function(){return f});var i=n("jquery"),o=n.n(i),s=n("./js/foundation.util.mediaQuery.js"),a=n("./js/foundation.util.motion.js"),r=n("./js/foundation.core.plugin.js");function l(t){return(l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function u(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function c(t,e){return!e||"object"!==l(e)&&"function"!=typeof e?function(t){if(void 0!==t)return t;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(t):e}function h(t){return(h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function d(t,e){return(d=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var f=function(){function n(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),c(this,h(n).apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&d(t,e)}(n,r["Plugin"]),function(t,e,n){e&&u(t.prototype,e),n&&u(t,n)}(n,[{key:"_setup",value:function(t,e){this.$element=o()(t),this.options=o.a.extend({},n.defaults,this.$element.data(),e),this.className="ResponsiveToggle",this._init(),this._events()}},{key:"_init",value:function(){s.MediaQuery._init();var e=this.$element.data("responsive-toggle");if(e||console.error("Your tab bar needs an ID of a Menu as the value of data-tab-bar."),this.$targetMenu=o()("#".concat(e)),this.$toggler=this.$element.find("[data-toggle]").filter(function(){var t=o()(this).data("toggle");return t===e||""===t}),this.options=o.a.extend({},this.options,this.$targetMenu.data()),this.options.animate){var t=this.options.animate.split(" ");this.animationIn=t[0],this.animationOut=t[1]||null}this._update()}},{key:"_events",value:function(){this._updateMqHandler=this._update.bind(this),o()(window).on("changed.zf.mediaquery",this._updateMqHandler),this.$toggler.on("click.zf.responsiveToggle",this.toggleMenu.bind(this))}},{key:"_update",value:function(){s.MediaQuery.atLeast(this.options.hideFor)?(this.$element.hide(),this.$targetMenu.show()):(this.$element.show(),this.$targetMenu.hide())}},{key:"toggleMenu",value:function(){var t=this;s.MediaQuery.atLeast(this.options.hideFor)||(this.options.animate?this.$targetMenu.is(":hidden")?a.Motion.animateIn(this.$targetMenu,this.animationIn,function(){t.$element.trigger("toggled.zf.responsiveToggle"),t.$targetMenu.find("[data-mutate]").triggerHandler("mutateme.zf.trigger")}):a.Motion.animateOut(this.$targetMenu,this.animationOut,function(){t.$element.trigger("toggled.zf.responsiveToggle")}):(this.$targetMenu.toggle(0),this.$targetMenu.find("[data-mutate]").trigger("mutateme.zf.trigger"),this.$element.trigger("toggled.zf.responsiveToggle")))}},{key:"_destroy",value:function(){this.$element.off(".zf.responsiveToggle"),this.$toggler.off(".zf.responsiveToggle"),o()(window).off("changed.zf.mediaquery",this._updateMqHandler)}}]),n}();f.defaults={hideFor:"medium",animate:!1}},
35551"./js/foundation.reveal.js":function(t,e,n){"use strict";n.r(e),n.d(e,"Reveal",function(){return v});var i=n("jquery"),a=n.n(i),o=n("./js/foundation.core.plugin.js"),s=n("./js/foundation.core.utils.js"),r=n("./js/foundation.util.keyboard.js"),l=n("./js/foundation.util.mediaQuery.js"),u=n("./js/foundation.util.motion.js"),c=n("./js/foundation.util.triggers.js"),h=n("./js/foundation.util.touch.js");function d(t){return(d="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function f(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function p(t,e){return!e||"object"!==d(e)&&"function"!=typeof e?function(t){if(void 0!==t)return t;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(t):e}function m(t){return(m=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function g(t,e){return(g=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var v=function(){function n(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),p(this,m(n).apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&g(t,e)}(n,o["Plugin"]),function(t,e,n){e&&f(t.prototype,e),n&&f(t,n)}(n,[{key:"_setup",value:function(t,e){this.$element=t,this.options=a.a.extend({},n.defaults,this.$element.data(),e),this.className="Reveal",this._init(),h.Touch.init(a.a),c.Triggers.init(a.a),r.Keyboard.register("Reveal",{ESCAPE:"close"})}},{key:"_init",value:function(){var t=this;l.MediaQuery._init(),this.id=this.$element.attr("id"),this.isActive=!1,this.cached={mq:l.MediaQuery.current},this.$anchor=a()('[data-open="'.concat(this.id,'"]')).length?a()('[data-open="'.concat(this.id,'"]')):a()('[data-toggle="'.concat(this.id,'"]')),this.$anchor.attr({"aria-controls":this.id,"aria-haspopup":!0,tabindex:0}),(this.options.fullScreen||this.$element.hasClass("full"))&&(this.options.fullScreen=!0,this.options.overlay=!1),this.options.overlay&&!this.$overlay&&(this.$overlay=this._makeOverlay(this.id)),this.$element.attr({role:"dialog","aria-hidden":!0,"data-yeti-box":this.id,"data-resize":this.id}),this.$overlay?this.$element.detach().appendTo(this.$overlay):(this.$element.detach().appendTo(a()(this.options.appendTo)),this.$element.addClass("without-overlay")),this._events(),this.options.deepLink&&window.location.hash==="#".concat(this.id)&&(this.onLoadListener=Object(s.onLoad)(a()(window),function(){return t.open()}))}},{key:"_makeOverlay",value:function(){var t="";return this.options.additionalOverlayClasses&&(t=" "+this.options.additionalOverlayClasses),a()("<div></div>").addClass("reveal-overlay"+t).appendTo(this.options.appendTo)}},{key:"_updatePosition",value:function(){var t,e=this.$element.outerWidth(),n=a()(window).width(),i=this.$element.outerHeight(),o=a()(window).height(),s=null;t="auto"===this.options.hOffset?parseInt((n-e)/2,10):parseInt(this.options.hOffset,10),"auto"===this.options.vOffset?s=o<i?parseInt(Math.min(100,o/10),10):parseInt((o-i)/4,10):null!==this.options.vOffset&&(s=parseInt(this.options.vOffset,10)),null!==s&&this.$element.css({top:s+"px"}),this.$overlay&&"auto"===this.options.hOffset||(this.$element.css({left:t+"px"}),this.$element.css({margin:"0px"}))}},{key:"_events",value:function(){var n=this,i=this;this.$element.on({"open.zf.trigger":this.open.bind(this),"close.zf.trigger":function(t,e){if(t.target===i.$element[0]||a()(t.target).parents("[data-closable]")[0]===e)return n.close.apply(n)},"toggle.zf.trigger":this.toggle.bind(this),"resizeme.zf.trigger":function(){i._updatePosition()}}),this.options.closeOnClick&&this.options.overlay&&this.$overlay.off(".zf.reveal").on("click.zf.dropdown tap.zf.dropdown",function(t){t.target!==i.$element[0]&&!a.a.contains(i.$element[0],t.target)&&a.a.contains(document,t.target)&&i.close()}),this.options.deepLink&&a()(window).on("hashchange.zf.reveal:".concat(this.id
vendor: 4,569 bytes, line 35551
35551),this._handleState.bind(this))}},{key:"_handleState",value:function(t){window.location.hash!=="#"+this.id||this.isActive?this.close():this.open()}},{key:"_disableScroll",value:function(t){t=t||a()(window).scrollTop(),a()(document).height()>a()(window).height()&&a()("html").css("top",-t)}},{key:"_enableScroll",value:function(t){t=t||parseInt(a()("html").css("top")),a()(document).height()>a()(window).height()&&(a()("html").css("top",""),a()(window).scrollTop(-t))}},{key:"open",value:function(){var t=this,e="#".concat(this.id);this.options.deepLink&&window.location.hash!==e&&(window.history.pushState?this.options.updateHistory?window.history.pushState({},"",e):window.history.replaceState({},"",e):window.location.hash=e),this.$activeAnchor=a()(document.activeElement).is(this.$anchor)?a()(document.activeElement):this.$anchor,this.isActive=!0,this.$element.css({visibility:"hidden"}).show().scrollTop(0),this.options.overlay&&this.$overlay.css({visibility:"hidden"}).show(),this._updatePosition(),this.$element.hide().css({visibility:""}),this.$overlay&&(this.$overlay.css({visibility:""}).hide(),this.$element.hasClass("fast")?this.$overlay.addClass("fast"):this.$element.hasClass("slow")&&this.$overlay.addClass("slow")),this.options.multipleOpened||this.$element.trigger("closeme.zf.reveal",this.id),0===a()(".reveal:visible").length&&this._disableScroll();var n=this;if(this.options.animationIn){this.options.overlay&&u.Motion.animateIn(this.$overlay,"fade-in"),u.Motion.animateIn(this.$element,this.options.animationIn,function(){t.$element&&(t.focusableElements=r.Keyboard.findFocusable(t.$element),n.$element.attr({"aria-hidden":!1,tabindex:-1}).focus(),n._addGlobalClasses(),r.Keyboard.trapFocus(n.$element))})}else this.options.overlay&&this.$overlay.show(0),this.$element.show(this.options.showDelay);this.$element.attr({"aria-hidden":!1,tabindex:-1}).focus(),r.Keyboard.trapFocus(this.$element),this._addGlobalClasses(),this._addGlobalListeners(),this.$element.trigger("open.zf.reveal")}},{key:"_addGlobalClasses",value:function(){function t(){a()("html").toggleClass("zf-has-scroll",!!(a()(document).height()>a()(window).height()))}this.$element.on("resizeme.zf.trigger.revealScrollbarListener",function(){return t()}),t(),a()("html").addClass("is-reveal-open")}},{key:"_removeGlobalClasses",value:function(){this.$element.off("resizeme.zf.trigger.revealScrollbarListener"),a()("html").removeClass("is-reveal-open"),a()("html").removeClass("zf-has-scroll")}},{key:"_addGlobalListeners",value:function(){var e=this;this.$element&&(this.focusableElements=r.Keyboard.findFocusable(this.$element),this.options.overlay||!this.options.closeOnClick||this.options.fullScreen||a()("body").on("click.zf.dropdown tap.zf.dropdown",function(t){t.target!==e.$element[0]&&!a.a.contains(e.$element[0],t.target)&&a.a.contains(document,t.target)&&e.close()}),this.options.closeOnEsc&&a()(window).on("keydown.zf.reveal",function(t){r.Keyboard.handleKey(t,"Reveal",{close:function(){e.options.closeOnEsc&&e.close()}})}))}},{key:"close",value:function(){if(!this.isActive||!this.$element.is(":visible"))return!1;var e=this;function t(){var t=parseInt(a()("html").css("top"));0===a()(".reveal:visible").length&&e._removeGlobalClasses(),r.Keyboard.releaseFocus(e.$element),e.$element.attr("aria-hidden",!0),0===a()(".reveal:visible").length&&e._enableScroll(t),e.$element.trigger("closed.zf.reveal")}if(this.options.animationOut?(this.options.overlay&&u.Motion.animateOut(this.$overlay,"fade-out"),u.Motion.animateOut(this.$element,this.options.animationOut,t)):(this.$element.hide(this.options.hideDelay),this.options.overlay?this.$overlay.hide(0,t):t()),this.options.closeOnEsc&&a()(window).off("keydown.zf.reveal"),!this.options.overlay&&this.options.closeOnClick&&a()("body").off("click.zf.dropdown tap.zf.dropdown"),this.$element.off("keydown.zf.reveal"),this.options.resetOnClose&&this.$element.html(this.$element.html()),this.isActive=!1,e.options.deepLink&&window.location.hash==="#".concat(this.id))if(window.history.replaceState){var n=window.location.pathname+window.location.search;this.options.updateHistory?window.history.pushState({},"",n):window.history.replaceState("",document.title,n)}else window.location.hash="";this.$activeAnchor.focus()}},{key:"toggle",value:function(){this.isActive?this.close():this.open()}},{key:"_destroy",value:function(){this.options.overlay&&(this.$element.appendTo(a()(this.options.appendTo)),this.$overlay.hide().off().remove()),this.$element.hide().off(),this.$anchor.off(".zf"),a()(window).off(".zf.reveal:".concat(this.id
35551)),this.onLoadListener&&a()(window).off(this.onLoadListener),0===a()(".reveal:visible").length&&this._removeGlobalClasses()}}]),n}();v.defaults={animationIn:"",animationOut:"",showDelay:0,hideDelay:0,closeOnClick:!0,closeOnEsc:!0,multipleOpened:!1,vOffset:"auto",hOffset:"auto",fullScreen:!1,overlay:!0,resetOnClose:!1,deepLink:!1,updateHistory:!1,appendTo:"body",additionalOverlayClasses:""}},
35551"./js/foundation.slider.js":function(t,e,n){"use strict";n.r(e),n.d(e,"Slider",function(){return f});var i=n("jquery"),p=n.n(i),a=n("./js/foundation.util.keyboard.js"),w=n("./js/foundation.util.motion.js"),m=n("./js/foundation.core.utils.js"),o=n("./js/foundation.core.plugin.js"),s=n("./js/foundation.util.touch.js"),r=n("./js/foundation.util.triggers.js");function l(t){return(l="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function u(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function c(t,e){return!e||"object"!==l(e)&&"function"!=typeof e?function(t){if(void 0!==t)return t;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(t):e}function h(t){return(h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function d(t,e){return(d=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var f=function(){function n(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),c(this,h(n).apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&d(t,e)}(n,o["Plugin"]),function(t,e,n){e&&u(t.prototype,e),n&&u(t,n)}(n,[{key:"_setup",value:function(t,e){this.$element=t,this.options=p.a.extend({},n.defaults,this.$element.data(),e),this.className="Slider",s.Touch.init(p.a),r.Triggers.init(p.a),this._init(),a.Keyboard.register("Slider",{ltr:{ARROW_RIGHT:"increase",ARROW_UP:"increase",ARROW_DOWN:"decrease",ARROW_LEFT:"decrease",SHIFT_ARROW_RIGHT:"increase_fast",SHIFT_ARROW_UP:"increase_fast",SHIFT_ARROW_DOWN:"decrease_fast",SHIFT_ARROW_LEFT:"decrease_fast",HOME:"min",END:"max"},rtl:{ARROW_LEFT:"increase",ARROW_RIGHT:"decrease",SHIFT_ARROW_LEFT:"increase_fast",SHIFT_ARROW_RIGHT:"decrease_fast"}})}},{key:"_init",value:function(){this.inputs=this.$element.find("input"),this.handles=this.$element.find("[data-slider-handle]"),this.$handle=this.handles.eq(0),this.$input=this.inputs.length?this.inputs.eq(0):p()("#".concat(this.$handle.attr("aria-controls"))),this.$fill=this.$element.find("[data-slider-fill]").css(this.options.vertical?"height":"width",0);(this.options.disabled||this.$element.hasClass(this.options.disabledClass))&&(this.options.disabled=!0,this.$element.addClass(this.options.disabledClass)),this.inputs.length||(this.inputs=p()().add(this.$input),this.options.binding=!0),this._setInitAttr(0),this.handles[1]&&(this.options.doubleSided=!0,this.$handle2=this.handles.eq(1),this.$input2=1<this.inputs.length?this.inputs.eq(1):p()("#".concat(this.$handle2.attr("aria-controls"))),this.inputs[1]||(this.inputs=this.inputs.add(this.$input2)),this._setInitAttr(1)),this.setHandles(),this._events()}},{key:"setHandles",value:function(){var t=this;this.handles[1]?this._setHandlePos(this.$handle,this.inputs.eq(0).val(),function(){t._setHandlePos(t.$handle2,t.inputs.eq(1).val())}):this._setHandlePos(this.$handle,this.inputs.eq(0).val())}},{key:"_reflow",value:function(){this.setHandles()}},{key:"_pctOfBar",value:function(t){var e=_(t-this.options.start,this.options.end-this.options.start);switch(this.options.positionValueFunction){case"pow":e=this._logTransform(e);break;case"log":e=this._powTransform(e)}return e.toFixed(2)}},{key:"_value",value:function(t){switch(this.options.positionValueFunction){case"pow":t=this._powTransform(t);break;case"log":t=this._logTransform(t)}return this.options.vertical?parseFloat(this.options.end)+t*(this.options.start-this.options.end):(this.options.end-this.options.start)*t+parseFloat(this.options.start)}},{key:"_logTransform",value:function(t){return function(t,e){return Math.log(e)/Math.log(t)}(this.options.nonLinearBase,t*(this.options.nonLinearBase-1)+1)}},{key:"_powTransform",value:function(t){return(Math.pow(this.options.nonLinearBase,t)-1)/(this.options.nonLinearBase-1)}},{key:"_setHandlePos",value:function(t,e,n){if(!this.$element.hasClass(this.options.disabledClass)){(e=parseFloat(e))<this.options.start?e=this.options.start:e>this.options.end&&(e=this.options.end);var i=this.options.doubleSided;
35551if(i)if(0===this.handles.index(t)){var o=parseFloat(this.$handle2.attr("aria-valuenow"));e=o<=e?o-this.options.step:e}else{var s=parseFloat(this.$handle.attr("aria-valuenow"));e=e<=s?s+this.options.step:e}var a=this,r=this.options.vertical,l=r?"height":"width",u=r?"top":"left",c=t[0].getBoundingClientRect()[l],h=this.$element[0].getBoundingClientRect()[l],d=this._pctOfBar(e),f=(100*_((h-c)*d,h)).toFixed(this.options.decimal);e=parseFloat(e.toFixed(this.options.decimal));var p={};if(this._setValues(t,e),i){var m,g=0===this.handles.index(t),v=~~(100*_(c,h));if(g)p[u]="".concat(f,"%"),m=parseFloat(this.$handle2[0].style[u])-f+v,n&&"function"==typeof n&&n();else{var y=parseFloat(this.$handle[0].style[u]);m=f-(isNaN(y)?(this.options.initialStart-this.options.start)/((this.options.end-this.options.start)/100):y)+v}p["min-".concat(l)]="".concat(m,"%")}this.$element.one("finished.zf.animate",function(){a.$element.trigger("moved.zf.slider",[t])});var b=this.$element.data("dragging")?1e3/60:this.options.moveTime;Object(w.Move)(b,t,function(){isNaN(f)?t.css(u,"".concat(100*d,"%")):t.css(u,"".concat(f,"%")),a.options.doubleSided?a.$fill.css(p):a.$fill.css(l,"".concat(100*d,"%"))}),clearTimeout(a.timeout),a.timeout=setTimeout(function(){a.$element.trigger("changed.zf.slider",[t])},a.options.changedDelay)}}},{key:"_setInitAttr",value:function(t){var e=0===t?this.options.initialStart:this.options.initialEnd,n=this.inputs.eq(t).attr("id")||Object(m.GetYoDigits)(6,"slider");this.inputs.eq(t).attr({id:n,max:this.options.end,min:this.options.start,step:this.options.step}),this.inputs.eq(t).val(e),this.handles.eq(t).attr({role:"slider","aria-controls":n,"aria-valuemax":this.options.end,"aria-valuemin":this.options.start,"aria-valuenow":e,"aria-orientation":this.options.vertical?"vertical":"horizontal",tabindex:0})}},{key:"_setValues",value:function(t,e){var n=this.options.doubleSided?this.handles.index(t):0;this.inputs.eq(n).val(e),t.attr("aria-valuenow",e)}},{key:"_handleEvent",value:function(t,e,n){var i;if(n)i=this._adjustValue(null,n),!0;else{t.preventDefault();var o=this.options.vertical,s=o?"height":"width",a=o?"top":"left",r=o?t.pageY:t.pageX,l=this.$element[0].getBoundingClientRect()[s],u=o?p()(window).scrollTop():p()(window).scrollLeft(),c=this.$element.offset()[a];t.clientY===t.pageY&&(r+=u);var h,d=r-c,f=_(h=d<0?0:l<d?l:d,l);if(i=this._value(f),Object(m.rtl)()&&!this.options.vertical&&(i=this.options.end-i),i=this._adjustValue(null,i),!1,!e)e=g(this.$handle,a,h,s)<=g(this.$handle2,a,h,s)?this.$handle:this.$handle2}this._setHandlePos(e,i)}},{key:"_adjustValue",value:function(t,e){var n,i,o,s=this.options.step,a=parseFloat(s/2);return 0===(i=0<=(n=t?parseFloat(t.attr("aria-valuenow")):e)?n%s:s+n%s)?n:n=(o=n-i)+a<=n?o+s:o}},{key:"_events",value:function(){this._eventsForHandle(this.$handle),this.handles[1]&&this._eventsForHandle(this.$handle2)}},{key:"_eventsForHandle",value:function(e){function n(t){var e=s.inputs.index(p()(this));s._handleEvent(t,s.handles.eq(e),p()(this).val())}var i,s=this;if(this.inputs.off("keyup.zf.slider").on("keyup.zf.slider",function(t){13==t.keyCode&&n.call(this,t)}),this.inputs.off("change.zf.slider").on("change.zf.slider",n),this.options.clickSelect&&this.$element.off("click.zf.slider").on("click.zf.slider",function(t){if(s.$element.data("dragging"))return!1;p()(t.target).is("[data-slider-handle]")||(s.options.doubleSided?s._handleEvent(t):s._handleEvent(t,s.$handle))}),this.options.draggable){this.handles.addTouch();var o=p()("body");e.off("mousedown.zf.slider").on("mousedown.zf.slider",function(t){e.addClass("is-dragging"),s.$fill.addClass("is-dragging"),s.$element.data("dragging",!0),i=p()(t.currentTarget),o.on("mousemove.zf.slider",function(t){t.preventDefault(),s._handleEvent(t,i)}).on("mouseup.zf.slider",function(t){s._handleEvent(t,i),e.removeClass("is-dragging"),s.$fill.removeClass("is-dragging"),s.$element.data("dragging",!1),o.off("mousemove.zf.slider mouseup.zf.slider")})}).on("selectstart.zf.slider touchmove.zf.slider",function(t){t.preventDefault()})}e.off("keydown.zf.slider").on("keydown.zf.slider",function(t){var e,n=p()(this),i=s.options.doubleSided?s.handles.index(n):0,o=parseFloat(s.inputs.eq(i).val());a.Keyboard.handleKey(t,"Slider",{decrease:function(){e=o-s.options.step},increase:function(){e=o+s.options.step},decrease_fast:function(){e=o-10*s.options.step},increase_fast:function(){e=o+10*s.options.step},min:function(){e=s.options.start},max:function(){e=s.options.end},handled:function(){t.preventDefault(),s._setHandlePos(n,e)}})})}},{key:"_destroy",value:function(){this.handles.off(".zf.slider"),this.inputs.off(".zf.slider"),this.$element.off(".zf.slider"),clearTimeout(this.timeout)}}]),n}();function _(t,e){return t/e}function g(t,e,n,i){return Math.abs(t.position()[e]+t[i]()/2-n)}f
vendor: 291 bytes, line 35551
35551.defaults={start:0,end:100,step:1,initialStart:0,initialEnd:100,binding:!1,clickSelect:!0,vertical:!1,draggable:!0,disabled:!1,doubleSided:!1,decimal:2,moveTime:200,disabledClass:"disabled",invertVertical:!1,changedDelay:500,nonLinearBase:5,positionValueFunction:"linear"}},"./js/foundation.
35551smoothScroll.js":function(t,e,n){"use strict";n.r(e),n.d(e,"SmoothScroll",function(){return r});var i=n("jquery"),l=n.n(i),o=n("./js/foundation.core.utils.js"),s=n("./js/foundation.core.plugin.js");function a(t){return(a="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function u(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function c(t,e){return!e||"object"!==a(e)&&"function"!=typeof e?function(t){if(void 0!==t)return t;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(t):e}function h(t){return(h=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function d(t,e){return(d=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var r=function(){function r(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,r),c(this,h(r).apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&d(t,e)}(r,s["Plugin"]),function(t,e,n){e&&u(t.prototype,e),n&&u(t,n)}(r,[{key:"_setup",value:function(t,e){this.$element=t,this.options=l.a.extend({},r.defaults,this.$element.data(),e),this.className="SmoothScroll",this._init()}},{key:"_init",value:function(){var t=this.$element[0].id||Object(o.GetYoDigits)(6,"smooth-scroll");this.$element.attr({id:t}),this._events()}},{key:"_events",value:function(){this._linkClickListener=this._handleLinkClick.bind(this),this.$element.on("click.zf.smoothScroll",this._linkClickListener),this.$element.on("click.zf.smoothScroll",'a[href^="#"]',this._linkClickListener)}},{key:"_handleLinkClick",value:function(t){var e=this;if(l()(t.currentTarget).is('a[href^="#"]')){var n=t.currentTarget.getAttribute("href");this._inTransition=!0,r.scrollToLoc(n,this.options,function(){e._inTransition=!1}),t.preventDefault()}}},{key:"_destroy",value:function(){this.$element.off("click.zf.smoothScroll",this._linkClickListener),this.$element.off("click.zf.smoothScroll",'a[href^="#"]',this._linkClickListener)}}],[{key:"scrollToLoc",value:function(t,e,n){var i=1<arguments.length&&void 0!==e?e:r.defaults,o=2<arguments.length?n:void 0,s=l()(t);if(!s.length)return!1;var a=Math.round(s.offset().top-i.threshold/2-i.offset);l()("html, body").stop(!0).animate({scrollTop:a},i.animationDuration,i.animationEasing,function(){"function"==typeof o&&o()})}}]),r}();r.defaults={animationDuration:500,animationEasing:"linear",threshold:50,offset:0}},
35551"./js/foundation.sticky.js":function(t,e,n){"use strict";n.r(e),n.d(e,"Sticky",function(){return p});var i=n("jquery"),r=n.n(i),o=n("./js/foundation.core.plugin.js"),s=n("./js/foundation.core.utils.js"),l=n("./js/foundation.util.mediaQuery.js"),a=n("./js/foundation.util.triggers.js");function u(t){return(u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function c(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function h(t,e){return!e||"object"!==u(e)&&"function"!=typeof e?function(t){if(void 0!==t)return t;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(t):e}function d(t){return(d=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function f(t,e){return(f=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var p=function(){function n(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),h(this,d(n).apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&f(t,e)}(n,o["Plugin"]),function(t,e,n){e&&c(t.prototype,e),n&&c(t,n)}(n,[{key:"_setup",value:function(t,e){this.$element=t,this.options=r.a.extend({},n.defaults,this.$element.data(),e),this.className="Sticky",a.Triggers.init(r.a),this._init()}},{key:"_init",value:function(){l.MediaQuery._init();var t=this.$element.parent("[data-sticky-container]"),e=this.$element[0].id||Object(s.GetYoDigits)(6,"sticky"),n=this;t.length?this.$container=t:(this.wasWrapped=!0,this.$element.wrap(this.options.container),this.$container=this.$element.parent()),this.$container.addClass(this.options.containerClass),this.$element.addClass(this.options.stickyClass).attr({"data-resize":e,"data-mutate":e}),""!==this.options.anchor&&r()("#"+n.options.anchor).attr({"data-mutate":e}),this.scrollCount=this.options.checkEvery,this.isStuck=!1,this.onLoadListener=Object(s.onLoad)(r()(window),function(){n.containerHeight="none"==n.$element.css("display")?0:n.$element[0].getBoundingClientRect().height,n.$container.css("height",n.containerHeight),n.elemHeight=n.containerHeight,""!==n.options.anchor?n.$anchor=r()("#"+n.options.anchor):n._parsePoints(),n._setSizes(function(){var t=window.pageYOffset;n._calc(!1,t),n.isStuck||n._removeSticky(!(t>=n.topPoint))}),n._events(e.split("-").reverse().join("-"))})}},{key:"_parsePoints",value:function(){for(var t=[""==this.options.topAnchor?1:this.options.topAnchor,""==this.options.btmAnchor?document.documentElement.scrollHeight:this.options.btmAnchor],e={},n=0,i=t.length;n<i&&t[n];n++){var o;if("number"==typeof t[n])o=t[n];else{var s=t[n].split(":"),a=r()("#".concat(s[0]));o=a.offset().top,s[1]&&"bottom"===s[1].toLowerCase()&&(o+=a[0].getBoundingClientRect().height)}e[n]=o}this.points=e}},{key:"_events",value:function(n){var i=this,t=this.scrollListener="scroll.zf.".concat(n);this.isOn||(this.canStick&&(this.isOn=!0,r()(window).off(t).on(t,function(t){0===i.scrollCount?(i.scrollCount=i.options.checkEvery,i._setSizes(function(){i._calc(!1,window.pageYOffset)})):(i.scrollCount--,i._calc(!1,window.pageYOffset))})),this.$element.off("resizeme.zf.trigger").on("resizeme.zf.trigger",function(t,e){i._eventsHandler(n)}),this.$element.on("mutateme.zf.trigger",function(t,e){i._eventsHandler(n)}),this.$anchor&&this.$anchor.on("mutateme.zf.trigger",function(t,e){i._eventsHandler(n)}))}},{key:"_eventsHandler",value:function(t){var e=this,n=this.scrollListener="scroll.zf.".concat(t);e._setSizes(function(){e._calc(!1),e.canStick?e.isOn||e._events(t):e.isOn&&e._pauseListeners(n)})}},{key:"_pauseListeners",value:function(t){this.isOn=!1,r()(window).off(t),this.$element.trigger("pause.zf.sticky")}},{key:"_calc",value:function(t,e){if(t&&this._setSizes(),!this.canStick)return this.isStuck&&this._removeSticky(!0),!1;(e=e||window.pageYOffset)>=this.topPoint?e<=this.bottomPoint?this.isStuck||this._setSticky():this.isStuck&&this._removeSticky(!1):this.isStuck&&this._removeSticky(!0)}},{key:"_setSticky",value:function(){var t=this,e=this.options.stickTo,n="top"===e?"marginTop":"marginBottom",i="top"===e?"bottom":"top",o={};o[n]="".concat(this.options[n],"em"),o[e]=0,o[i]="auto",this.isStuck=!0,this.$element.removeClass("is-anchored is-at-".concat(i)).addClass("is-stuck is-at-".concat(e)).css(o).trigger("sticky.zf.stuckto:".concat(e)),this.$element.on("transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd",function(){t._setSizes()})}},{key:"_removeSticky",value:function(t){var e=this.options.stickTo,n="top"===e,i={},o=(this.points?this.points[1]-this.points[0]:this.anchorHeight)-this.elemHeight,s=t?"top":"bottom";i[n?"marginTop":"marginBottom"]=0,i.bottom="auto",i.top=t?0:o,this.isStuck=!1,this.$element.removeClass("is-stuck is-at-".concat(e)).addClass("is-anchored is-at-".concat(s)).css(i).trigger("sticky.zf.unstuckfrom:".concat(s))}},{key:"_setSizes",value:function(t){this.canStick=l.MediaQuery.is(this.options.stickyOn),this.canStick||t&&"function"==typeof t&&t();var e=this.$container[0].getBoundingClientRect().width,n=window.getComputedStyle(this.$container[0]),i=parseInt(n["padding-left"],10),o=parseInt(n["padding-right"],10);if(this.$anchor&&this.$anchor.length?this.anchorHeight=this.$anchor[0].getBoundingClientRect().height:this._parsePoints(),this.$element.css({"max-width":"".concat(e-i-o,"px")}),this.options.dynamicHeight||!this.containerHeight){var s=this.$element[0].getBoundingClientRect().height||this.containerHeight;s="none"==this.$element.css("display")?0:s,this.$container.css("height",s),this.containerHeight=s}if(this.elemHeight=this.containerHeight,!this.isStuck&&this.$element.hasClass("is-at-bottom")){var a=(this.points?this.points[1]-this.$container.offset().top:this.anchorHeight)-this.elemHeight;this.$element.css("top",a)}this._setBreakPoints(this.containerHeight,function(){t&&"function"==typeof t&&t()})}},{key:"_setBreakPoints",value:function(t,e){if(!this.canStick){if(!e||"function"!=typeof e)return!1;e()}var n=m(this.options.marginTop),i=m(this.options.marginBottom),o=this.points?this.points[0]:this.$anchor.offset().top,s=this.points?this.points[1]:o+this.anchorHeight,a=window.innerHeight;"top"===this.options.stickTo?(o-=n,s-=t+n):"bottom"===this.options.stickTo&&(o-=a-(t+i),s-=a-i),this.topPoint=o,this.bottomPoint=s,e&&"function"==typeof e&&e()}},{key:"_destroy",value:function(){this._removeSticky(!0),this.$element.removeClass("".concat(this.options.stickyClass," is-anchored is-at-top")).css({height:"",top:"",bottom:"","max-width":""}).off("resizeme.zf.trigger").off("mutateme.zf.trigger"),this.$anchor&&this.$anchor.length&&this.$anchor.off("change.zf.sticky"),this.scrollListener&&r()(window).off(this.scrollListener),this.onLoadListener&&r()(window).off(this.onLoadListener),this.wasWrapped?this.$element.unwrap():this.$container.removeClass(this.options.containerClass).css({height:""})}}]),n}();function m(t){return parseInt(window.getComputedStyle(document.body,null).fontSize,10)*t}
35551p.defaults={container:"<div data-sticky-container></div>",stickTo:"top",anchor:"",topAnchor:"",btmAnchor:"",marginTop:1,marginBottom:1,stickyOn:"medium",stickyClass:"sticky",containerClass:"sticky-container",dynamicHeight:!0,checkEvery:-1}},
35551"./js/foundation.tabs.js":function(t,e,n){"use strict";n.r(e),n.d(e,"Tabs",function(){return p});var i=n("jquery"),r=n.n(i),o=n("./js/foundation.core.plugin.js"),l=n("./js/foundation.core.utils.js"),a=n("./js/foundation.util.keyboard.js"),u=n("./js/foundation.util.imageLoader.js");function s(t){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function c(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function h(t,e){return!e||"object"!==s(e)&&"function"!=typeof e?function(t){if(void 0!==t)return t;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(t):e}function d(t){return(d=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function f(t,e){return(f=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var p=function(){function n(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),h(this,d(n).apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&f(t,e)}(n,o["Plugin"]),function(t,e,n){e&&c(t.prototype,e),n&&c(t,n)}(n,[{key:"_setup",value:function(t,e){this.$element=t,this.options=r.a.extend({},n.defaults,this.$element.data(),e),this.className="Tabs",this._init(),a.Keyboard.register("Tabs",{ENTER:"open",SPACE:"open",ARROW_RIGHT:"next",ARROW_UP:"previous",ARROW_DOWN:"next",ARROW_LEFT:"previous"})}},{key:"_init",value:function(){var s=this,a=this;if(this._isInitializing=!0,this.$element.attr({role:"tablist"}),this.$tabTitles=this.$element.find(".".concat(this.options.linkClass)),this.$tabContent=r()('[data-tabs-content="'.concat(this.$element[0].id,'"]')),this.$tabTitles.each(function(){var t=r()(this),e=t.find("a"),n=t.hasClass("".concat(a.options.linkActiveClass)),i=e.attr("data-tabs-target")||e[0].hash.slice(1),o=e[0].id?e[0].id:"".concat(i,"-label"),s=r()("#".concat(i));t.attr({role:"presentation"}),e.attr({role:"tab","aria-controls":i,"aria-selected":n,id:o,tabindex:n?"0":"-1"}),s.attr({role:"tabpanel","aria-labelledby":o}),n&&(a._initialAnchor="#".concat(i)),n||s.attr("aria-hidden","true"),n&&a.options.autoFocus&&(a.onLoadListener=Object(l.onLoad)(r()(window),function(){r()("html, body").animate({scrollTop:t.offset().top},a.options.deepLinkSmudgeDelay,function(){e.focus()})}))}),this.options.matchHeight){var t=this.$tabContent.find("img");t.length?Object(u.onImagesLoaded)(t,this._setHeight.bind(this)):this._setHeight()}this._checkDeepLink=function(){var t=window.location.hash;if(!t.length){if(s._isInitializing)return;s._initialAnchor&&(t=s._initialAnchor)}var e=0<=t.indexOf("#")?t.slice(1):t,n=e&&r()("#".concat(e)),i=t&&s.$element.find('[href$="'.concat(t,'"],[data-tabs-target="').concat(e,'"]')).first();if(!(!n.length||!i.length)){if(n&&n.length&&i&&i.length?s.selectTab(n,!0):s._collapse(),s.options.deepLinkSmudge){var o=s.$element.offset();r()("html, body").animate({scrollTop:o.top},s.options.deepLinkSmudgeDelay)}s.$element.trigger("deeplink.zf.tabs",[i,n])}},this.options.deepLink&&this._checkDeepLink(),this._events(),this._isInitializing=!1}},{key:"_events",value:function(){this._addKeyHandler(),this._addClickHandler(),this._setHeightMqHandler=null,this.options.matchHeight&&(this._setHeightMqHandler=this._setHeight.bind(this),r()(window).on("changed.zf.mediaquery",this._setHeightMqHandler)),this.options.deepLink&&r()(window).on("hashchange",this._checkDeepLink)}},{key:"_addClickHandler",value:function(){var e=this;this.$element.off("click.zf.tabs").on("click.zf.tabs",".".concat(this.options.linkClass),function(t){t.preventDefault(),e._handleTabChange(r()(this))})}},{key:"_addKeyHandler",value:function(){var s=this;this.$tabTitles.off("keydown.zf.tabs").on("keydown.zf.tabs",function(t){if(9!==t.which){var e,n,i=r()(this),o=i.parent("ul").children("li");o.each(function(t){r()(this).is(i)&&(n=s.options.wrapOnKeys?(e=0===t?o.last():o.eq(t-1),t===o.length-1?o.first():o.eq(t+1)):(e=o.eq(Math.max(0,t-1)),o.eq(Math.min(t+1,o.length-1))))}),a.Keyboard.handleKey(t,"Tabs",{open:function(){i.find('[role="tab"]').focus(),s._handleTabChange(i)},previous:function(){e.find('[role="tab"]').focus(),s._handleTabChange(e)},next:function(){n.find('[role="tab"]').focus(),s._handleTabChange(n)},handled:function(){t.preventDefault()}})}})}},{key:"_handleTabChange",value:function(t,e){if(t.hasClass("".concat(this.options.linkActiveClass)))this.options.activeCollapse&&this._collapse();else{var n=this.$element.find(".".concat(this.options.linkClass,".").concat(this.options.linkActiveClass)),i=t.find('[role="tab"]'),o=i.attr("data-tabs-target"),s=o&&o.length?"#".concat(o):i[0].hash,a=this.$tabContent.find(s);this._collapseTab(n),this._openTab(t),this.options.deepLink&&!e&&(this.options.updateHistory?history.pushState({},"",s):history.replaceState({},"",s)),this.$element.trigger("change.zf.tabs",[t,a]),a.find("[data-mutate]").trigger("mutateme.zf.trigger")}}},{key:"_openTab",value:function(t){var e=t.find('[role="tab"]'),n=e.attr("data-tabs-target")||e[0].hash.slice(1),i=this.$tabContent.find("#".concat(n));t.addClass("".concat(this.options.linkActiveClass)),e.attr({"aria-selected":"true",tabindex:"0"}),i.addClass("".concat(this.options.panelActiveClass)).removeAttr("aria-hidden")}},{key:"_collapseTab",value:function(t){var e=t.removeClass("".concat(this.options.linkActiveClass)).find('[role="tab"]').attr({"aria-selected":"false",tabindex:-1});r()("#".concat(e.attr("aria-controls"))).removeClass("".concat(this.options.panelActiveClass)).attr({"aria-hidden":"true"})}},{key:"_collapse",value:function(){var t=this.$element.find(".".concat(this.options.linkClass,".").concat(this.options.linkActiveClass));t.length&&(this._collapseTab(t),this.$element.trigger("collapse.zf.tabs",[t]))}},{key:"selectTab",value:function(t,e){var n,i;(n="object"===s(t)?t[0].id:t).indexOf("#")<0?i="#".concat(n):n=(i=n).slice(1);var o=this.$tabTitles.has('[href$="'.concat(i,'"],[data-tabs-target="').concat(n,'"]')).first();this._handleTabChange(o,e)}},{key:"_setHeight",value:function(){var i=0,o=this;this.$tabContent.find(".".concat(this.options.panelClass)).css("height","").each(function(){var t=r()(this),e=t.hasClass("".concat(o.options.panelActiveClass));e||t.css({visibility:"hidden",display:"block"});var n=this.getBoundingClientRect().height;e||t.css({visibility:"",display:""}),i=i<n?n:i}).css("height","".concat(i,"px"))}},{key:"_destroy",value:function(){this.$element.find(".".concat(this.options.linkClass)).off(".zf.tabs").hide().end().find(".".concat(this.options.panelClass)).hide(),this.options.matchHeight&&null!=this._setHeightMqHandler&&r()(window).off("changed.zf.mediaquery",this._setHeightMqHandler),this.options.deepLink&&r()(window).off("hashchange",this._checkDeepLink),this.onLoadListener&&r()(window).off(this.onLoadListener)}}]),n}();p.defaults={deepLink:!1,deepLinkSmudge:!1,deepLinkSmudgeDelay:300,updateHistory:!1,autoFocus:!1,wrapOnKeys:!0,matchHeight:!1,activeCollapse:!1,linkClass:"tabs-title",linkActiveClass:"is-active",panelClass:"tabs-panel",panelActiveClass:"is-active"}},
35551"./js/foundation.toggler.js":function(t,e,n){"use strict";n.r(e),n.d(e,"Toggler",function(){return p});var i=n("jquery"),s=n.n(i),o=n("./js/foundation.util.motion.js"),a=n("./js/foundation.core.plugin.js"),r=n("./js/foundation.core.utils.js"),l=n("./js/foundation.util.triggers.js");function u(t){return(u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function c(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function h(t,e){return!e||"object"!==u(e)&&"function"!=typeof e?function(t){if(void 0!==t)return t;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(t):e}function d(t){return(d=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function f(t,e){return(f=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var p=function(){function n(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),h(this,d(n).apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&f(t,e)}(n,a["Plugin"]),function(t,e,n){e&&c(t.prototype,e),n&&c(t,n)}(n,[{key:"_setup",value:function(t,e){this.$element=t,this.options=s.a.extend({},n.defaults,t.data(),e),this.className="",this.className="Toggler",l.Triggers.init(s.a),this._init(),this._events()}},{key:"_init",value:function(){var t,o=this.$element[0].id,e=s()('[data-open~="'.concat(o,'"], [data-close~="').concat(o,'"], [data-toggle~="').concat(o,'"]'));if(this.options.animate)t=this.options.animate.split(" "),this.animationIn=t[0],this.animationOut=t[1]||null,e.attr("aria-expanded",!this.$element.is(":hidden"));else{if("string"!=typeof(t=this.options.toggler)||!t.length)throw new Error("The 'toogler' option containing the target class is required, got \"".concat(t,'"'));this.className="."===t[0]?t.slice(1):t,e.attr("aria-expanded",this.$element.hasClass(this.className))}e.each(function(t,e){var n=s()(e),i=n.attr("aria-controls")||"";new RegExp("\\b".concat(Object(r.RegExpEscape)(o),"\\b")).test(i)||n.attr("aria-controls",i?"".concat(i," ").concat(o):o)})}},{key:"_events",value:function(){this.$element.off("toggle.zf.trigger").on("toggle.zf.trigger",this.toggle.bind(this))}},{key:"toggle",value:function(){this[this.options.animate?"_toggleAnimate":"_toggleClass"]()}},{key:"_toggleClass",value:function(){this.$element.toggleClass(this.className);var t=this.$element.hasClass(this.className);t?this.$element.trigger("on.zf.toggler"):this.$element.trigger("off.zf.toggler"),this._updateARIA(t),this.$element.find("[data-mutate]").trigger("mutateme.zf.trigger")}},{key:"_toggleAnimate",value:function(){var t=this;this.$element.is(":hidden")?o.Motion.animateIn(this.$element,this.animationIn,function(){t._updateARIA(!0),this.trigger("on.zf.toggler"),this.find("[data-mutate]").trigger("mutateme.zf.trigger")}):o.Motion.animateOut(this.$element,this.animationOut,function(){t._updateARIA(!1),this.trigger("off.zf.toggler"),this.find("[data-mutate]").trigger("mutateme.zf.trigger")})}},{key:"_updateARIA",value:function(t){var e=this.$element[0].id;s()('[data-open="'.concat(e,'"], [data-close="').concat(e,'"], [data-toggle="').concat(e,'"]')).attr({"aria-expanded":!!t})}},{key:"_destroy",value:function(){this.$element.off(".zf.toggler")}}]),n}();p.defaults={toggler:void 0,animate:!1}},
35551"./js/foundation.tooltip.js":function(t,e,n){"use strict";n.r(e),n.d(e,"Tooltip",function(){return m});var i=n("jquery"),o=n.n(i),s=n("./js/foundation.core.utils.js"),a=n("./js/foundation.util.mediaQuery.js"),r=n("./js/foundation.util.triggers.js"),l=n("./js/foundation.positionable.js");function u(t){return(u="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function c(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}function h(t,e){return!e||"object"!==u(e)&&"function"!=typeof e?function(t){if(void 0!==t)return t;throw new ReferenceError("this hasn't been initialised - super() hasn't been called")}(t):e}function d(t,e,n){return(d="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(t,e,n){var i=function(t,e){for(;!Object.prototype.hasOwnProperty.call(t,e)&&null!==(t=f(t)););return t}(t,e);if(i){var o=Object.getOwnPropertyDescriptor(i,e);return o.get?o.get.call(n):o.value}})(t,e,n||t)}function f(t){return(f=Object.setPrototypeOf?Object.getPrototypeOf:function(t){return t.__proto__||Object.getPrototypeOf(t)})(t)}function p(t,e){return(p=Object.setPrototypeOf||function(t,e){return t.__proto__=e,t})(t,e)}var m=function(){function n(){return function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,n),h(this,f(n).apply(this,arguments))}return function(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),e&&p(t,e)}(n,l["Positionable"]),function(t,e,n){e&&c(t.prototype,e),n&&c(t,n)}(n,[{key:"_setup",value:function(t,e){this.$element=t,this.options=o.a.extend({},n.defaults,this.$element.data(),e),this.className="Tooltip",this.isActive=!1,this.isClick=!1,r.Triggers.init(o.a),this._init()}},{key:"_init",value:function(){a.MediaQuery._init();var t=this.$element.attr("aria-describedby")||Object(s.GetYoDigits)(6,"tooltip");this.options.tipText=this.options.tipText||this.$element.attr("title"),this.template=this.options.template?o()(this.options.template):this._buildTemplate(t),this.options.allowHtml?this.template.appendTo(document.body).html(this.options.tipText).hide():this.template.appendTo(document.body).text(this.options.tipText).hide(),this.$element.attr({title:"","aria-describedby":t,"data-yeti-box":t,"data-toggle":t,"data-resize":t}).addClass(this.options.triggerClass),d(f(n.prototype),"_init",this).call(this),this._events()}},{key:"_getDefaultPosition",value:function(){var t=this.$element[0].className;this.$element[0]instanceof SVGElement&&(t=t.baseVal);var e=t.match(/\b(top|left|right|bottom)\b/g);return e?e[0]:"top"}},{key:"_getDefaultAlignment",value:function(){return"center"}},{key:"_getHOffset",value:function(){return"left"===this.position||"right"===this.position?this.options.hOffset+this.options.tooltipWidth:this.options.hOffset}},{key:"_getVOffset",value:function(){return"top"===this.position||"bottom"===this.position?this.options.vOffset+this.options.tooltipHeight:this.options.vOffset}},{key:"_buildTemplate",value:function(t){var e="".concat(this.options.tooltipClass," ").concat(this.options.templateClasses).trim();return o()("<div></div>").addClass(e).attr({role:"tooltip","aria-hidden":!0,"data-is-active":!1,"data-is-focus":!1,id:t})}},{key:"_setPosition",value:function(){d(f(n.prototype),"_setPosition",this).call(this,this.$element,this.template)}},{key:"show",value:function(){if("all"!==this.options.showOn&&!a.MediaQuery.is(this.options.showOn))return!1;this.template.css("visibility","hidden").show(),this._setPosition(),this.template.removeClass("top bottom left right").addClass(this.position),this.template.removeClass("align-top align-bottom align-left align-right align-center").addClass("align-"+this.alignment),this.$element.trigger("closeme.zf.tooltip",this.template.attr("id")),this.template.attr({"data-is-active":!0,"aria-hidden":!1}),this.isActive=!0,this.template.stop().hide().css("visibility","").fadeIn(this.options.fadeInDuration,function(){}),this.$element.trigger("show.zf.tooltip")}},{key:"hide",value:function(){var t=this;this.template.stop().attr({"aria-hidden":!0,"data-is-active":!1}).fadeOut(this.options.fadeOutDuration,function(){t.isActive=!1,t.isClick=!1}),this.$element.trigger("hide.zf.tooltip")}},{key:"_events",value:function(){var e=this,t="ontouchstart"in window||void 0!==window.ontouchstart,n=(this.template,!1);t&&this.options.disableForTouch||(this.options.disableHover||this.$element.on("mouseenter.zf.tooltip",function(t){e.isActive||(e.timeout=setTimeout(function(){e.show()}
35551,e.options.hoverDelay))}).on("mouseleave.zf.tooltip",Object(s.ignoreMousedisappear)(function(t){clearTimeout(e.timeout),n&&(!e.isClick||e.options.clickOpen)||e.hide()})),t&&this.$element.on("tap.zf.tooltip touchend.zf.tooltip",function(t){e.isActive?e.hide():e.show()}),this.options.clickOpen?this.$element.on("mousedown.zf.tooltip",function(t){e.isClick||(e.isClick=!0,!e.options.disableHover&&e.$element.attr("tabindex")||e.isActive||e.show())}):this.$element.on("mousedown.zf.tooltip",function(t){e.isClick=!0}),this.$element.on({"close.zf.trigger":this.hide.bind(this)}),this.$element.on("focus.zf.tooltip",function(t){if(n=!0,e.isClick)return e.options.clickOpen||(n=!1),!1;e.show()}).on("focusout.zf.tooltip",function(t){n=!1,e.isClick=!1,e.hide()}).on("resizeme.zf.trigger",function(){e.isActive&&e._setPosition()}))}},{key:"toggle",value:function(){this.isActive?this.hide():this.show()}},{key:"_destroy",value:function(){this.$element.attr("title",this.template.text()).off(".zf.trigger .zf.tooltip").removeClass(this.options.triggerClass).removeClass("top right left bottom").removeAttr("aria-describedby data-disable-hover data-resize data-toggle data-tooltip data-yeti-box"),this.template.remove()}}]),n}();m.defaults={hoverDelay:200,fadeInDuration:150,fadeOutDuration:150,disableHover:!1,disableForTouch:!1,templateClasses:"",tooltipClass:"tooltip",triggerClass:"has-tip",showOn:"small",template:"",tipText:"",touchCloseText:"Tap to close.",clickOpen:!0,position:"auto",alignment:"auto",allowOverlap:!1,allowBottomOverlap:!1,vOffset:0,hOffset:0,tooltipHeight:14,tooltipWidth:12,allowHtml:!1}},
vendor: 1,875 bytes, line 35551
35551"./js/foundation.util.box.js":function(t,e,n){"use strict";n.r(e),n.d(e,"Box",function(){return i});var i={ImNotTouchingYou:function(t,e,n,i,o){return 0===s(t,e,n,i,o)},OverlapArea:s,GetDimensions:h,GetExplicitOffsets:function(t,e,n,i,o,s,a){var r,l,u=h(t),c=e?h(e):null;if(null!==c){switch(n){case"top":r=c.offset.top-(u.height+o);break;case"bottom":r=c.offset.top+c.height+o;break;case"left":l=c.offset.left-(u.width+s);break;case"right":l=c.offset.left+c.width+s}switch(n){case"top":case"bottom":switch(i){case"left":l=c.offset.left+s;break;case"right":l=c.offset.left-u.width+c.width-s;break;case"center":l=a?s:c.offset.left+c.width/2-u.width/2+s}break;case"right":case"left":switch(i){case"bottom":r=c.offset.top-o+c.height-u.height;break;case"top":r=c.offset.top+o;break;case"center":r=c.offset.top+o+c.height/2-u.height/2}}}return{top:r,left:l}}};function s(t,e,n,i,o){var s,a,r,l,u=h(t);if(e){var c=h(e);a=c.height+c.offset.top-(u.offset.top+u.height),s=u.offset.top-c.offset.top,r=u.offset.left-c.offset.left,l=c.width+c.offset.left-(u.offset.left+u.width)}else a=u.windowDims.height+u.windowDims.offset.top-(u.offset.top+u.height),s=u.offset.top-u.windowDims.offset.top,r=u.offset.left-u.windowDims.offset.left,l=u.windowDims.width-(u.offset.left+u.width);return a=o?0:Math.min(a,0),s=Math.min(s,0),r=Math.min(r,0),l=Math.min(l,0),n?r+l:i?s+a:Math.sqrt(s*s+a*a+r*r+l*l)}function h(t){if((t=t.length?t[0]:t)===window||t===document)throw new Error("I'm sorry, Dave. I'm afraid I can't do that.");var e=t.getBoundingClientRect(),n=t.parentNode.getBoundingClientRect(),i=document.body.getBoundingClientRect(),o=window.pageYOffset,s=window.pageXOffset;return{width:e.width,height:e.height,offset:{top:e.top+o,left:e.left+s},parentDims:{width:n.width,height:n.height,offset:{top:n.top+o,left:n.left+s}},windowDims:{width:i.width,height:i.height,offset:{top:o,left:s}}}}},
35551"./js/foundation.util.imageLoader.js":function(t,e,n){"use strict";n.r(e),n.d(e,"onImagesLoaded",function(){return s});var i=n("jquery"),o=n.n(i);function s(t,e){var n=t.length;function i(){0===--n&&e()}0===n&&e(),t.each(function(){if(this.complete&&void 0!==this.naturalWidth)i();else{var t=new Image,n="load.zf.images error.zf.images";o()(t).one(n,function t(e){o()(this).off(n,t),i()}),t.src=o()(this).attr("src")}})}},
35551"./js/foundation.util.keyboard.js":function(t,e,n){"use strict";n.r(e),n.d(e,"Keyboard",function(){return c});var i=n("jquery"),r=n.n(i),l=n("./js/foundation.core.utils.js"),o={9:"TAB",13:"ENTER",27:"ESCAPE",32:"SPACE",35:"END",36:"HOME",37:"ARROW_LEFT",38:"ARROW_UP",39:"ARROW_RIGHT",40:"ARROW_DOWN"},u={};function s(t){return!!t&&t.find("a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]").filter(function(){return!(!r()(this).is(":visible")||r()(this).attr("tabindex")<0)})}function a(t){var e=o[t.which||t.keyCode]||String.fromCharCode(t.which).toUpperCase();return e=e.replace(/\W+/,""),t.shiftKey&&(e="SHIFT_".concat(e)),t.ctrlKey&&(e="CTRL_".concat(e)),t.altKey&&(e="ALT_".concat(e)),e=e.replace(/_$/,"")}var c={keys:function(t){var e={};for(var n in t)e[t[n]]=t[n];return e}(o),parseKey:a,handleKey:function(t,e,n){var i,o=u[e],s=this.parseKey(t);if(!o)return console.warn("Component not defined!");if(!0!==t.zfIsKeyHandled)if((i=n[(void 0===o.ltr?o:Object(l.rtl)()?r.a.extend({},o.ltr,o.rtl):r.a.extend({},o.rtl,o.ltr))[s]])&&"function"==typeof i){var a=i.apply();t.zfIsKeyHandled=!0,!n.handled&&"function"!=typeof n.handled||n.handled(a)}else!n.unhandled&&"function"!=typeof n.unhandled||n.unhandled()},findFocusable:s,register:function(t,e){u[t]=e},trapFocus:function(t){var e=s(t),n=e.eq(0),i=e.eq(-1);t.on("keydown.zf.trapfocus",function(t){t.target===i[0]&&"TAB"===a(t)?(t.preventDefault(),n.focus()):t.target===n[0]&&"SHIFT_TAB"===a(t)&&(t.preventDefault(),i.focus())})},releaseFocus:function(t){t.off("keydown.zf.trapfocus")}}},
35551"./js/foundation.util.mediaQuery.js":function(t,e,n){"use strict";n.r(e),n.d(e,"MediaQuery",function(){return r});var i=n("jquery"),o=n.n(i);function s(t){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function a(t,e){return function(t){if(Array.isArray(t))return t}(t)||function(t,e){var n=[],i=!0,o=!1,s=void 0;try{for(var a,r=t[Symbol.iterator]();!(i=(a=r.next()).done)&&(n.push(a.value),!e||n.length!==e);i=!0);}catch(t){o=!0,s=t}finally{try{i||null==r.return||r.return()}finally{if(o)throw s}}return n}(t,e)||function(){throw new TypeError("Invalid attempt to destructure non-iterable instance")}()}window.matchMedia||(window.matchMedia=function(){var e=window.styleMedia||window.media;if(!e){var n,i=document.createElement("style"),t=document.getElementsByTagName("script")[0];i.type="text/css",i.id="matchmediajs-test",t?t.parentNode.insertBefore(i,t):document.head.appendChild(i),n="getComputedStyle"in window&&window.getComputedStyle(i,null)||i.currentStyle,e={matchMedium:function(t){var e="@media "+t+"{ #matchmediajs-test { width: 1px; } }";return i.styleSheet?i.styleSheet.cssText=e:i.textContent=e,"1px"===n.width}}}return function(t){return{matches:e.matchMedium(t||"all"),media:t||"all"}}}());var r={queries:[],current:"",_init:function(){if(!0!==this.isInitialized){this.isInitialized=!0;o()("meta.foundation-mq").length||o()('<meta class="foundation-mq">').appendTo(document.head);var t,e=o()(".foundation-mq").css("font-family");for(var n in t=function(t){var e={};return"string"==typeof t&&(t=t.trim().slice(1,-1))?e=t.split("&").reduce(function(t,e){var n=e.replace(/\+/g," ").split("="),i=n[0],o=n[1];return i=decodeURIComponent(i),o=void 0===o?null:decodeURIComponent(o),t.hasOwnProperty(i)?Array.isArray(t[i])?t[i].push(o):t[i]=[t[i],o]:t[i]=o,t},{}):e}(e),this.queries=[],t)t.hasOwnProperty(n)&&this.queries.push({name:n,value:"only screen and (min-width: ".concat(t[n],")")});this.current=this._getCurrentSize(),this._watcher()}},_reInit:function(){this.isInitialized=!1,this._init()},atLeast:function(t){var e=this.get(t);return!!e&&window.matchMedia(e).matches},only:function(t){return t===this._getCurrentSize()},upTo:function(t){var e=this.next(t);return!e||!this.atLeast(e)},is:function(t){var e=a(t.trim().split(" ").filter(function(t){return!!t.length}),2),n=e[0],i=e[1],o=void 0===i?"":i;if("only"===o)return this.only(n);if(!o||"up"===o)return this.atLeast(n);if("down"===o)return this.upTo(n);throw new Error('\n Invalid breakpoint passed to MediaQuery.is().\n Expected a breakpoint name formatted like "<size> <modifier>", got "'.concat(t,'".\n '))},get:function(t){for(var e in this.queries)if(this.queries.hasOwnProperty(e)){var n=this.queries[e];if(t===n.name)return n.value}return null},next:function(e){var n=this,t=this.queries.findIndex(function(t){return n._getQueryName(t)===e});if(-1===t)throw new Error('\n Unknown breakpoint "'.concat(e,'" passed to MediaQuery.next().\n Ensure it is present in your Sass "$breakpoints" setting.\n '));var i=this.queries[t+1];return i?i.name:null},_getQueryName:function(t){if("string"==typeof t)return t;if("object"===s(t))return t.name;throw new TypeError('\n Invalid value passed to MediaQuery._getQueryName().\n Expected a breakpoint name (String) or a breakpoint query (Object), got "'.concat(t,'" (').concat(s(t),")\n "))},_getCurrentSize:function(){for(var t,e=0;e<this.queries.length;e++){var n=this.queries[e];window.matchMedia(n.value).matches&&(t=n)}return t&&this._getQueryName(t)},_watcher:function(){var n=this;o()(window).off("resize.zf.mediaquery").on("resize.zf.mediaquery",function(){var t=n._getCurrentSize(),e=n.current;t!==e&&(n.current=t,o()(window).trigger("changed.zf.mediaquery",[t,e]))})}}},
35551"./js/foundation.util.motion.js":function(t,e,n){"use strict";n.r(e),n.d(e,"Move",function(){return s}),n.d(e,"Motion",function(){return o});var i=n("jquery"),r=n.n(i),l=n("./js/foundation.core.utils.js"),u=["mui-enter","mui-leave"],c=["mui-enter-active","mui-leave-active"],o={animateIn:function(t,e,n){a(!0,t,e,n)},animateOut:function(t,e,n){a(!1,t,e,n)}};function s(n,i,o){var s,a,r=null;if(0===n)return o.apply(i),void i.trigger("finished.zf.animate",[i]).triggerHandler("finished.zf.animate",[i]);s=window.requestAnimationFrame(function t(e){a=e-(r=r||e),o.apply(i),a<n?s=window.requestAnimationFrame(t,i):(window.cancelAnimationFrame(s),i.trigger("finished.zf.animate",[i]).triggerHandler("finished.zf.animate",[i]))})}function a(t,e,n,i){if((e=r()(e).eq(0)).length){var o=t?u[0]:u[1],s=t?c[0]:c[1];a(),e.addClass(n).css("transition","none"),requestAnimationFrame(function(){e.addClass(o),t&&e.show()}),requestAnimationFrame(function(){e[0].offsetWidth,e.css("transition","").addClass(s)}),e.one(Object(l.transitionend)(e),function(){t||e.hide();a(),i&&i.apply(e)})}function a(){e[0].style.transitionDuration=0,e.removeClass("".concat(o," ").concat(s," ").concat(n))}}},
35551"./js/foundation.util.nest.js":function(t,e,n){"use strict";n.r(e),n.d(e,"Nest",function(){return o});var i=n("jquery"),l=n.n(i),o={Feather:function(t,e){var n=1<arguments.length&&void 0!==e?e:"zf";t.attr("role","menubar"),t.find("a").attr({role:"menuitem"});var i=t.find("li").attr({role:"none"}),o="is-".concat(n,"-submenu"),s="".concat(o,"-item"),a="is-".concat(n,"-submenu-parent"),r="accordion"!==n;i.each(function(){var t=l()(this),e=t.children("ul");e.length&&(t.addClass(a),r&&(t.attr({"aria-haspopup":!0,"aria-label":t.children("a:first").text()}),"drilldown"===n&&t.attr({"aria-expanded":!1})),e.addClass("submenu ".concat(o)).attr({"data-submenu":"",role:"menubar"}),"drilldown"===n&&e.attr({"aria-hidden":!0})),t.parent("[data-submenu]").length&&t.addClass("is-submenu-item ".concat(s))})},Burn:function(t,e){var n="is-".concat(e,"-submenu"),i="".concat(n,"-item"),o="is-".concat(e,"-submenu-parent");t.find(">li, > li > ul, .menu, .menu > li, [data-submenu] > li").removeClass("".concat(n," ").concat(i," ").concat(o," is-submenu-item submenu is-active")).removeAttr("data-submenu").css("display","")}}},
vendor: 639 bytes, line 35551
35551"./js/foundation.util.timer.js":function(t,e,n){"use strict";n.r(e),n.d(e,"Timer",function(){return i});n("jquery");function i(e,t,n){var i,o,s=this,a=t.duration,r=Object.keys(e.data())[0]||"timer",l=-1;this.isPaused=!1,this.restart=function(){l=-1,clearTimeout(o),this.start()},this.start=function(){this.isPaused=!1,clearTimeout(o),l=l<=0?a:l,e.data("paused",!1),i=Date.now(),o=setTimeout(function(){t.infinite&&s.restart(),n&&"function"==typeof n&&n()},l),e.trigger("timerstart.zf.".concat(r))},this.pause=function(){this.isPaused=!0,clearTimeout(o),e.data("paused",!0);var t=Date.now();l-=t-i,e.trigger("timerpaused.zf.".concat(r))}}},
35551"./js/foundation.util.touch.js":function(t,e,n){"use strict";n.r(e),n.d(e,"Touch",function(){return c});var i=n("jquery"),o=n.n(i);function s(t,e){for(var n=0;n<e.length;n++){var i=e[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(t,i.key,i)}}var a,r,l,u,c={},h=!1,d=!1;function f(t){if(this.removeEventListener("touchmove",p),this.removeEventListener("touchend",f),!d){var e=o.a.Event("tap",u||t);o()(this).trigger(e)}u=null,d=h=!1}function p(t){if(o.a.spotSwipe.preventDefault&&t.preventDefault(),h){var e,n=t.touches[0].pageX,i=(t.touches[0].pageY,a-n);d=!0,l=(new Date).getTime()-r,Math.abs(i)>=o.a.spotSwipe.moveThreshold&&l<=o.a.spotSwipe.timeThreshold&&(e=0<i?"left":"right"),e&&(t.preventDefault(),f.apply(this,arguments),o()(this).trigger(o.a.Event("swipe",Object.assign({},t)),e).trigger(o.a.Event("swipe".concat(e),Object.assign({},t))))}}function m(t){1==t.touches.length&&(a=t.touches[0].pageX,t.touches[0].pageY,u=t,d=!(h=!0),r=(new Date).getTime(),this.addEventListener("touchmove",p,!1),this.addEventListener("touchend",f,!1))}function g(){this.addEventListener&&this.addEventListener("touchstart",m,!1)}var v=function(){function e(t){!function(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}(this,e),this.version="1.0.0",this.enabled="ontouchstart"in document.documentElement,this.preventDefault=!1,this.moveThreshold=75,this.timeThreshold=200,this.$=t,this._init()}return function(t,e,n){e&&s(t.prototype,e),n&&s(t,n)}(e,[{key:"_init",value:function(){var t=this.$;t.event.special.swipe={setup:g},t.event.special.tap={setup:g},t.each(["left","up","down","right"],function(){t.event.special["swipe".concat(this)]={setup:function(){t(this).on("swipe",t.noop)}}})}}]),e}();c.setupSpotSwipe=function(t){t.spotSwipe=new v(t)},c.setupTouchHandler=function(i){i.fn.addTouch=function(){this.each(function(t,e){i(e).bind("touchstart touchmove touchend touchcancel",function(t){n(t)})});var n=function(t){var e,n=t.changedTouches[0],i={touchstart:"mousedown",touchmove:"mousemove",touchend:"mouseup"}[t.type];"MouseEvent"in window&&"function"==typeof window.MouseEvent?e=new window.MouseEvent(i,{bubbles:!0,cancelable:!0,screenX:n.screenX,screenY:n.screenY,clientX:n.clientX,clientY:n.clientY}):(e=document.createEvent("MouseEvent")).initMouseEvent(i,!0,!0,window,1,n.screenX,n.screenY,n.clientX,n.clientY,!1,!1,!1,!1,0,null),n.target.dispatchEvent(e)}}},c.init=function(t){void 0===t.spotSwipe&&(c.setupSpotSwipe(t),c.setupTouchHandler(t))}},
vendor: 4,739 bytes, line 35551
35551"./js/foundation.util.triggers.js":function(t,e,n){"use strict";n.r(e),n.d(e,"Triggers",function(){return c});var i=n("jquery"),s=n.n(i),o=n("./js/foundation.core.utils.js"),a=n("./js/foundation.util.motion.js");function r(t){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t})(t)}function l(e,n){e.data(n).split(" ").forEach(function(t){s()("#".concat(t))["close"===n?"trigger":"triggerHandler"]("".concat(n,".zf.trigger"),[e])})}var u=function(){for(var t=["WebKit","Moz","O","Ms",""],e=0;e<t.length;e++)if("".concat(t[e],"MutationObserver")in window)return window["".concat(t[e],"MutationObserver")];return!1}(),c={Listeners:{Basic:{},Global:{}},Initializers:{}};function h(e,t,n){var i,o=Array.prototype.slice.call(arguments,3);s()(window).off(t).on(t,function(t){i&&clearTimeout(i),i=setTimeout(function(){n.apply(null,o)},e||10)})}c.Listeners.Basic={openListener:function(){l(s()(this),"open")},closeListener:function(){s()(this).data("close")?l(s()(this),"close"):s()(this).trigger("close.zf.trigger")},toggleListener:function(){s()(this).data("toggle")?l(s()(this),"toggle"):s()(this).trigger("toggle.zf.trigger")},closeableListener:function(t){var e=s()(this).data("closable");t.stopPropagation(),""!==e?a.Motion.animateOut(s()(this),e,function(){s()(this).trigger("closed.zf")}):s()(this).fadeOut().trigger("closed.zf")},toggleFocusListener:function(){var t=s()(this).data("toggle-focus");s()("#".concat(t)).triggerHandler("toggle.zf.trigger",[s()(this)])}},c.Initializers.addOpenListener=function(t){t.off("click.zf.trigger",c.Listeners.Basic.openListener),t.on("click.zf.trigger","[data-open]",c.Listeners.Basic.openListener)},c.Initializers.addCloseListener=function(t){t.off("click.zf.trigger",c.Listeners.Basic.closeListener),t.on("click.zf.trigger","[data-close]",c.Listeners.Basic.closeListener)},c.Initializers.addToggleListener=function(t){t.off("click.zf.trigger",c.Listeners.Basic.toggleListener),t.on("click.zf.trigger","[data-toggle]",c.Listeners.Basic.toggleListener)},c.Initializers.addCloseableListener=function(t){t.off("close.zf.trigger",c.Listeners.Basic.closeableListener),t.on("close.zf.trigger","[data-closeable], [data-closable]",c.Listeners.Basic.closeableListener)},c.Initializers.addToggleFocusListener=function(t){t.off("focus.zf.trigger blur.zf.trigger",c.Listeners.Basic.toggleFocusListener),t.on("focus.zf.trigger blur.zf.trigger","[data-toggle-focus]",c.Listeners.Basic.toggleFocusListener)},c.Listeners.Global={resizeListener:function(t){u||t.each(function(){s()(this).triggerHandler("resizeme.zf.trigger")}),t.attr("data-events","resize")},scrollListener:function(t){u||t.each(function(){s()(this).triggerHandler("scrollme.zf.trigger")}),t.attr("data-events","scroll")},closeMeListener:function(t,e){var n=t.namespace.split(".")[0];s()("[data-".concat(n,"]")).not('[data-yeti-box="'.concat(e,'"]')).each(function(){var t=s()(this);t.triggerHandler("close.zf.trigger",[t])})}},c.Initializers.addClosemeListener=function(t){var e=s()("[data-yeti-box]"),n=["dropdown","tooltip","reveal"];if(t&&("string"==typeof t?n.push(t):"object"===r(t)&&"string"==typeof t[0]?n=n.concat(t):console.error("Plugin names must be strings")),e.length){var i=n.map(function(t){return"closeme.zf.".concat(t)}).join(" ");s()(window).off(i).on(i,c.Listeners.Global.closeMeListener)}},c.Initializers.addResizeListener=function(t){var e=s()("[data-resize]");e.length&&h(t,"resize.zf.trigger",c.Listeners.Global.resizeListener,e)},c.Initializers.addScrollListener=function(t){var e=s()("[data-scroll]");e.length&&h(t,"scroll.zf.trigger",c.Listeners.Global.scrollListener,e)},c.Initializers.addMutationEventsListener=function(t){if(!u)return!1;function e(t){var e=s()(t[0].target);switch(t[0].type){case"attributes":"scroll"===e.attr("data-events")&&"data-events"===t[0].attributeName&&e.triggerHandler("scrollme.zf.trigger",[e,window.pageYOffset]),"resize"===e.attr("data-events")&&"data-events"===t[0].attributeName&&e.triggerHandler("resizeme.zf.trigger",[e]),"style"===t[0].attributeName&&(e.closest("[data-mutate]").attr("data-events","mutate"),e.closest("[data-mutate]").triggerHandler("mutateme.zf.trigger",[e.closest("[data-mutate]")]));break;case"childList":e.closest("[data-mutate]").attr("data-events","mutate"),e.closest("[data-mutate]").triggerHandler("mutateme.zf.trigger",[e.closest("[data-mutate]")]);break;default:return!1}}var n=t.find("[data-resize], [data-scroll], [data-mutate]");if(n.length)for(var i=0;i<=n.length-1;i++){new u(e).observe(n[i],{attributes:!0,childList:!0,characterData:!1,subtree:!0,attributeFilter:["data-events","style"]})}}
35551,c.Initializers.addSimpleListeners=function(){var t=s()(document);c.Initializers.addOpenListener(t),c.Initializers.addCloseListener(t),c.Initializers.addToggleListener(t),c.Initializers.addCloseableListener(t),c.Initializers.addToggleFocusListener(t)},c.Initializers.addGlobalListeners=function(){var t=s()(document);c.Initializers.addMutationEventsListener(t),c.Initializers.addResizeListener(),c.Initializers.addScrollListener(),c.Initializers.addClosemeListener()},c.init=function(t,e){Object(o.onLoad)(t(window),function(){!0!==t.triggersInitialized&&(c.Initializers.addSimpleListeners(),c.Initializers.addGlobalListeners(),t.triggersInitialized=!0)}),e&&(e.Triggers=c,e.IHearYou=c.Initializers.addGlobalListeners)}}
35551,0:function(t,e,n){t.exports=n("./js/entries/foundation.js")},jquery:function(t,e){t.exports=n}},o.c=s,o.d=function(t,e,n){o.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:n})},o.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},o.t=function(e,t){if(1&t&&(e=o(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(o.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)o.d(n,i,function(t){return e[t]}.bind(null,i));return n},o.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return o.d(e,"a",e),e},o.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},o.p="",o(o.s=0);function o(t){if(s[t])return s[t].exports;var e=s[t]={i:t,l:!1,exports:{}};return i[t].call(e.exports,e,e.exports,o),e.l=!0,e.exports}var i,s}); 35552//# sourceMappingURL=foundation.min.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.