vendor: 12,439 bytes, lines 1-460
1// BEGIN RANDOMIZED LOADING SENTENCES 2jQuery(function(){ 3'use strict'; 4 var random = Math.floor(Math.random() * jQuery('.pageloader-sentence').length); 5 jQuery('.pageloader-sentence').eq(random).show(); 6}); 7// END RANDOMIZED LOADING SENTENCES 8 9 10// BEGIN NPROGRESS INTEGRATION 11/* NProgress, (c) 2013, 2014 Rico Sta. Cruz - http://ricostacruz.com/nprogress 12 * @license MIT */ 13 14;(function(root, factory) { 15 16 if (typeof define === 'function' && define.amd) { 17 define(factory); 18 } else if (typeof exports === 'object') { 19 module.exports = factory(); 20 } else { 21 root.NProgress = factory(); 22 } 23 24 })(this, function() { 25 var NProgress = {}; 26 27 NProgress.version = '0.2.0'; 28 29 var Settings = NProgress.settings = { 30 minimum: 0.08, 31 easing: 'ease', 32 positionUsing: '', 33 speed: 500, 34 trickle: true, 35 trickleRate: 0.02, 36 trickleSpeed: 800, 37 showSpinner: false, 38 barSelector: '[role="bar"]', 39 parent: '#nprogress-inner', 40 template: '<div class="bar" role="bar"></div>' 41 }; 42 43 /** 44 * Updates configuration. 45 * 46 * NProgress.configure({ 47 * minimum: 0.1 48 * }); 49 */ 50 NProgress.configure = function(options) { 51 var key, value; 52 for (key in options) { 53 value = options[key]; 54 if (value !== undefined && options.hasOwnProperty(key)) Settings[key] = value; 55 } 56 57 return this; 58 }; 59 60 /** 61 * Last number. 62 */ 63 64 NProgress.status = null; 65 66 /** 67 * Sets the progress bar status, where `n` is a number from `0.0` to `1.0`. 68 * 69 * NProgress.set(0.4); 70 * NProgress.set(1.0); 71 */ 72 73 NProgress.set = function(n) { 74 var started = NProgress.isStarted(); 75 76 n = clamp(n, Settings.minimum, 1); 77 NProgress.status = (n === 1 ? null : n); 78 79 var progress = NProgress.render(!started), 80 bar = progress.querySelector(Settings.barSelector), 81 speed = Settings.speed, 82 ease = Settings.easing; 83 84 progress.offsetWidth; /* Repaint */ 85 86 queue(function(next) { 87 // Set positionUsing if it hasn't already been set 88 if (Settings.positionUsing === '') Settings.positionUsing = NProgress.getPositioningCSS(); 89 90 // Add transition 91 css(bar, barPositionCSS(n, speed, ease)); 92 93 if (n === 1) { 94 // Fade out 95 css(progress, { 96 transition: 'none', 97 opacity: 1 98 }); 99 progress.offsetWidth; /* Repaint */ 100 101 setTimeout(function() { 102 css(progress, { 103 transition: 'all ' + speed + 'ms linear', 104 opacity: 0 105 }); 106 setTimeout(function() { 107 NProgress.remove(); 108 next(); 109 }, speed); 110 }, 1250); 111 } else { 112 setTimeout(next, speed); 113 } 114 }); 115 116 return this; 117 }; 118 119 NProgress.isStarted = function() { 120 return typeof NProgress.status === 'number'; 121 }; 122 123 /** 124 * Shows the progress bar. 125 * This is the same as setting the status to 0%, except that it doesn't go backwards. 126 * 127 * NProgress.start(); 128 * 129 */ 130 NProgress.start = function() { 131 if (!NProgress.status) NProgress.set(0); 132 133 var work = function() { 134 setTimeout(function() { 135 if (!NProgress.status) return; 136 NProgress.trickle(); 137 work(); 138 }, Settings.trickleSpeed); 139 }; 140 141 if (Settings.trickle) work(); 142 143 return this; 144 }; 145 146 /** 147 * Hides the progress bar. 148 * This is the *sort of* the same as setting the status to 100%, with the 149 * difference being `done()` makes some placebo effect of some realistic motion. 150 * 151 * NProgress.done(); 152 * 153 * If `true` is passed, it will show the progress bar even if its hidden. 154 * 155 * NProgress.done(true); 156 */ 157 158 NProgress.done = function(force) { 159 if (!force && !NProgress.status) return this; 160 161 return NProgress.inc(0.3 + 0.5 * Math.random()).set(1); 162 }; 163 164 /** 165 * Increments by a random amount. 166 */ 167 168 NProgress.inc = function(amount) { 169 var n = NProgress.status; 170 171 if (!n) { 172 return NProgress.start(); 173 } else { 174 if (typeof amount !== 'number') { 175 amount = (1 - n) * clamp(Math.random() * n, 0.1, 0.95); 176 } 177 178 n = clamp(n + amount, 0, 0.95); 179 return NProgress.set(n); 180 } 181 }; 182 183 NProgress.trickle = function() { 184 return NProgress.inc(Math.random() * Settings.trickleRate); 185 }; 186 187 /** 188 * Waits for all supplied jQuery promises and 189 * increases the progress as the promises resolve. 190 * 191 * @param $promise jQUery Promise 192 */ 193 (function() { 194 var initial = 0, current = 0; 195 196 NProgress.promise = function($promise) { 197 if (!$promise || $promise.state() === "resolved") { 198 return this; 199 } 200 201 if (current === 0) { 202 NProgress.start(); 203 } 204 205 initial++; 206 current++; 207 208 $promise.always(function() { 209 current--; 210 if (current === 0) { 211 initial = 0; 212 NProgress.done(); 213 } else { 214 NProgress.set((initial - current) / initial); 215 } 216 }); 217 218 return this; 219 }; 220 221 })(); 222 223 /** 224 * (Internal) renders the progress bar markup based on the `template` 225 * setting. 226 */ 227 228 NProgress.render = function(fromStart) { 229 if (NProgress.isRendered()) return document.getElementById('nprogress'); 230 231 addClass(document.documentElement, 'nprogress-busy'); 232 233 var progress = document.createElement('div'); 234 progress.id = 'nprogress'; 235 progress.innerHTML = Settings.template; 236 237 var bar = progress.querySelector(Settings.barSelector), 238 perc = fromStart ? '-100' : toBarPerc(NProgress.status || 0), 239 parent = document.querySelector(Settings.parent), 240 spinner; 241 242 css(bar, { 243 transition: 'all 0 linear', 244 transform: 'translate3d(' + perc + '%,0,0)' 245 }); 246 247 if (!Settings.showSpinner) { 248 spinner = progress.querySelector(Settings.spinnerSelector); 249 spinner && removeElement(spinner); 250 } 251 252 if (parent !== document.body) { 253 addClass(parent, 'nprogress-custom-parent'); 254 } 255 256 parent.appendChild(progress); 257 return progress; 258 }; 259 260 /** 261 * Removes the element. Opposite of render(). 262 */ 263 264 NProgress.remove = function() { 265 removeClass(document.documentElement, 'nprogress-busy'); 266 removeClass(document.querySelector(Settings.parent), 'nprogress-custom-parent'); 267 var progress = document.getElementById('nprogress'); 268 progress && removeElement(progress); 269 }; 270 271 /** 272 * Checks if the progress bar is rendered. 273 */ 274 275 NProgress.isRendered = function() { 276 return !!document.getElementById('nprogress'); 277 }; 278 279 /** 280 * Determine which positioning CSS rule to use. 281 */ 282 283 NProgress.getPositioningCSS = function() { 284 // Sniff on document.body.style 285 var bodyStyle = document.body.style; 286 287 // Sniff prefixes 288 var vendorPrefix = ('WebkitTransform' in bodyStyle) ? 'Webkit' : 289 ('MozTransform' in bodyStyle) ? 'Moz' : 290 ('msTransform' in bodyStyle) ? 'ms' : 291 ('OTransform' in bodyStyle) ? 'O' : ''; 292 293 if (vendorPrefix + 'Perspective' in bodyStyle) { 294 // Modern browsers with 3D support, e.g. Webkit, IE10 295 return 'translate3d'; 296 } else if (vendorPrefix + 'Transform' in bodyStyle) { 297 // Browsers without 3D support, e.g. IE9 298 return 'translate'; 299 } else { 300 // Browsers without translate() support, e.g. IE7-8 301 return 'margin'; 302 } 303 }; 304 305 /** 306 * Helpers 307 */ 308 309 function clamp(n, min, max) { 310 if (n < min) return min; 311 if (n > max) return max; 312 return n; 313 } 314 315 /** 316 * (Internal) converts a percentage (`0..1`) to a bar translateX 317 * percentage (`-100%..0%`). 318 */ 319 320 function toBarPerc(n) { 321 return (-1 + n) * 100; 322 } 323 324 325 /** 326 * (Internal) returns the correct CSS for changing the bar's 327 * position given an n percentage, and speed and ease from Settings 328 */ 329 330 function barPositionCSS(n, speed, ease) { 331 var barCSS; 332 333 if (Settings.positionUsing === 'translate3d') { 334 barCSS = { transform: 'translate3d('+toBarPerc(n)+'%,0,0)' }; 335 } else if (Settings.positionUsing === 'translate') { 336 barCSS = { transform: 'translate('+toBarPerc(n)+'%,0)' }; 337 } else { 338 barCSS = { 'margin-left': toBarPerc(n)+'%' }; 339 } 340 341 barCSS.transition = 'all '+speed+'ms '+ease; 342 343 return barCSS; 344 } 345 346 /** 347 * (Internal) Queues a function to be executed. 348 */ 349 350 var queue = (function() { 351 var pending = []; 352 353 function next() { 354 var fn = pending.shift(); 355 if (fn) { 356 fn(next); 357 } 358 } 359 360 return function(fn) { 361 pending.push(fn); 362 if (pending.length === 1) next(); 363 }; 364 })(); 365 366 /** 367 * (Internal) Applies css properties to an element, similar to the jQuery 368 * css method. 369 * 370 * While this helper does assist with vendor prefixed property names, it 371 * does not perform any manipulation of values prior to setting styles. 372 */ 373 374 var css = (function() { 375 var cssPrefixes = [ 'Webkit', 'O', 'Moz', 'ms' ], 376 cssProps = {}; 377 378 function camelCase(string) { 379 return string.replace(/^-ms-/, 'ms-').replace(/-([\da-z])/gi, function(match, letter) { 380 return letter.toUpperCase(); 381 }); 382 } 383 384 function getVendorProp(name) { 385 var style = document.body.style; 386 if (name in style) return name; 387 388 var i = cssPrefixes.length, 389 capName = name.charAt(0).toUpperCase() + name.slice(1), 390 vendorName; 391 while (i--) { 392 vendorName = cssPrefixes[i] + capName; 393 if (vendorName in style) return vendorName; 394 } 395 396 return name; 397 } 398 399 function getStyleProp(name) { 400 name = camelCase(name); 401 return cssProps[name] || (cssProps[name] = getVendorProp(name)); 402 } 403 404 function applyCss(element, prop, value) { 405 prop = getStyleProp(prop); 406 element.style[prop] = value; 407 } 408 409 return function(element, properties) { 410 var args = arguments, 411 prop, 412 value; 413 414 if (args.length === 2) { 415 for (prop in properties) { 416 value = properties[prop]; 417 if (value !== undefined && properties.hasOwnProperty(prop)) applyCss(element, prop, value); 418 } 419 } else { 420 applyCss(element, args[1], args[2]); 421 } 422 } 423 })(); 424 425 /** 426 * (Internal) Determines if an element or space separated list of class names contains a class name. 427 */ 428 429 function hasClass(element, name) { 430 var list = typeof element === 'string' ? element : classList(element); 431 return list.indexOf(' ' + name + ' ') >= 0; 432 } 433 434 /** 435 * (Internal) Adds a class to an element. 436 */ 437 438 function addClass(element, name) { 439 var oldList = classList(element), 440 newList = oldList + name; 441 442 if (hasClass(oldList, name)) return; 443 444 // Trim the opening space. 445 element.className = newList.substring(1); 446 } 447 448 /** 449 * (Internal) Removes a class from an element. 450 */ 451 452 function removeClass(element, name) { 453 var oldList = classList(element), 454 newList; 455 456 if (!hasClass(element, name)) return; 457 458 // Replace the class name. 459 newList = oldList.replace(' ' + name + ' ', ' '); 460
461 // Trim the opening and closing spaces. 462 element.className = newList.substring(1, newList.length - 1); 463 } 464 465 /** 466 * (Internal) Gets a space separated list of the class names on the element. 467 * The list is wrapped with a single space on each end to facilitate finding 468 * matches within the list. 469 */ 470 471 function classList(element) { 472 return (' ' + (element.className || '') + ' ').replace(/\s+/gi, ' '); 473 } 474 475 /** 476 * (Internal) Removes an element from the DOM. 477 */ 478 479 function removeElement(element) { 480 element && element.parentNode && element.parentNode.removeChild(element); 481 } 482 483 return NProgress; 484 }); 485 // END NPROGRESS INTEGRATION
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.