vendor: 16,419 bytes, lines 1-577
1/* Notify.js - http://notifyjs.com/ Copyright (c) 2015 MIT */ 2(function (factory) { 3 // UMD start 4 // https://github.com/umdjs/umd/blob/master/jqueryPluginCommonjs.js 5 if (typeof define === 'function' && define.amd) { 6 // AMD. Register as an anonymous module. 7 define(['jquery'], factory); 8 } else if (typeof module === 'object' && module.exports) { 9 // Node/CommonJS 10 module.exports = function( root, jQuery ) { 11 if ( jQuery === undefined ) { 12 // require('jQuery') returns a factory that requires window to 13 // build a jQuery instance, we normalize how we use modules 14 // that require this pattern but the window provided is a noop 15 // if it's defined (how jquery works) 16 if ( typeof window !== 'undefined' ) { 17 jQuery = require('jquery'); 18 } 19 else { 20 jQuery = require('jquery')(root); 21 } 22 } 23 factory(jQuery); 24 return jQuery; 25 }; 26 } else { 27 // Browser globals 28 factory(jQuery); 29 } 30}(function ($) { 31 //IE8 indexOf polyfill 32 var indexOf = [].indexOf || function(item) { 33 for (var i = 0, l = this.length; i < l; i++) { 34 if (i in this && this[i] === item) { 35 return i; 36 } 37 } 38 return -1; 39 }; 40 41 var pluginName = "notify"; 42 var pluginClassName = pluginName + "js"; 43 var blankFieldName = pluginName + "!blank"; 44 45 var positions = { 46 t: "top", 47 m: "middle", 48 b: "bottom", 49 l: "left", 50 c: "center", 51 r: "right" 52 }; 53 var hAligns = ["l", "c", "r"]; 54 var vAligns = ["t", "m", "b"]; 55 var mainPositions = ["t", "b", "l", "r"]; 56 var opposites = { 57 t: "b", 58 m: null, 59 b: "t", 60 l: "r", 61 c: null, 62 r: "l" 63 }; 64 65 var parsePosition = function(str) { 66 var pos; 67 pos = []; 68 $.each(str.split(/\W+/), function(i, word) { 69 var w; 70 w = word.toLowerCase().charAt(0); 71 if (positions[w]) { 72 return pos.push(w); 73 } 74 }); 75 return pos; 76 }; 77 78 var styles = {}; 79 80 var coreStyle = { 81 name: "core", 82 html: "<div class=\"" + pluginClassName + "-wrapper\">\n <div class=\"" + pluginClassName + "-arrow\"></div>\n <div class=\"" + pluginClassName + "-container\"></div>\n</div>", 83 css: "." + pluginClassName + "-corner {\n position: fixed;\n margin: 5px;\n z-index: 1050;\n}\n\n." + pluginClassName + "-corner ." + pluginClassName + "-wrapper,\n." + pluginClassName + "-corner ." + pluginClassName + "-container {\n position: relative;\n display: block;\n height: inherit;\n width: inherit;\n margin: 3px;\n}\n\n." + pluginClassName + "-wrapper {\n z-index: 1;\n position: absolute;\n display: inline-block;\n height: 0;\n width: 0;\n}\n\n." + pluginClassName + "-container {\n display: none;\n z-index: 1;\n position: absolute;\n}\n\n." + pluginClassName + "-hidable {\n cursor: pointer;\n}\n\n[data-notify-text],[data-notify-html] {\n position: relative;\n}\n\n." + pluginClassName + "-arrow {\n position: absolute;\n z-index: 2;\n width: 0;\n height: 0;\n}" 84 }; 85 86 var stylePrefixes = { 87 "border-radius": ["-webkit-", "-moz-"] 88 }; 89 90 var getStyle = function(name) { 91 return styles[name]; 92 }; 93 94 var removeStyle = function(name) { 95 if (!name) { 96 throw "Missing Style name"; 97 } 98 if (styles[name]) { 99 delete styles[name]; 100 } 101 }; 102 103 var addStyle = function(name, def) { 104 if (!name) { 105 throw "Missing Style name"; 106 } 107 if (!def) { 108 throw "Missing Style definition"; 109 } 110 if (!def.html) { 111 throw "Missing Style HTML"; 112 } 113 //remove existing style 114 var existing = styles[name]; 115 if (existing && existing.cssElem) { 116 if (window.console) { 117 console.warn(pluginName + ": overwriting style '" + name + "'"); 118 } 119 styles[name].cssElem.remove(); 120 } 121 def.name = name; 122 styles[name] = def; 123 var cssText = ""; 124 if (def.classes) { 125 $.each(def.classes, function(className, props) { 126 cssText += "." + pluginClassName + "-" + def.name + "-" + className + " {\n"; 127 $.each(props, function(name, val) { 128 if (stylePrefixes[name]) { 129 $.each(stylePrefixes[name], function(i, prefix) { 130 return cssText += " " + prefix + name + ": " + val + ";\n"; 131 }); 132 } 133 return cssText += " " + name + ": " + val + ";\n"; 134 }); 135 return cssText += "}\n"; 136 }); 137 } 138 if (def.css) { 139 cssText += "/* styles for " + def.name + " */\n" + def.css; 140 } 141 if (cssText) { 142 def.cssElem = insertCSS(cssText); 143 def.cssElem.attr("id", "notify-" + def.name); 144 } 145 var fields = {}; 146 var elem = $(def.html); 147 findFields("html", elem, fields); 148 findFields("text", elem, fields); 149 def.fields = fields; 150 }; 151 152 var insertCSS = function(cssText) { 153 var e, elem, error; 154 elem = createElem("style"); 155 elem.attr("type", 'text/css'); 156 $("head").append(elem); 157 try { 158 elem.html(cssText); 159 } catch (_) { 160 elem[0].styleSheet.cssText = cssText; 161 } 162 return elem; 163 }; 164 165 var findFields = function(type, elem, fields) { 166 var attr; 167 if (type !== "html") { 168 type = "text"; 169 } 170 attr = "data-notify-" + type; 171 return find(elem, "[" + attr + "]").each(function() { 172 var name; 173 name = $(this).attr(attr); 174 if (!name) { 175 name = blankFieldName; 176 } 177 fields[name] = type; 178 }); 179 }; 180 181 var find = function(elem, selector) { 182 if (elem.is(selector)) { 183 return elem; 184 } else { 185 return elem.find(selector); 186 } 187 }; 188 189 var pluginOptions = { 190 clickToHide: true, 191 autoHide: true, 192 autoHideDelay: 5000, 193 arrowShow: true, 194 arrowSize: 5, 195 breakNewLines: true, 196 elementPosition: "bottom", 197 globalPosition: "top right", 198 style: "bootstrap", 199 className: "error", 200 showAnimation: "slideDown", 201 showDuration: 400, 202 hideAnimation: "slideUp", 203 hideDuration: 200, 204 gap: 5 205 }; 206 207 var inherit = function(a, b) { 208 var F; 209 F = function() {}; 210 F.prototype = a; 211 return $.extend(true, new F(), b); 212 }; 213 214 var defaults = function(opts) { 215 return $.extend(pluginOptions, opts); 216 }; 217 218 var createElem = function(tag) { 219 return $("<" + tag + "></" + tag + ">"); 220 }; 221 222 var globalAnchors = {}; 223 224 var getAnchorElement = function(element) { 225 var radios; 226 if (element.is('[type=radio]')) { 227 radios = element.parents('form:first').find('[type=radio]').filter(function(i, e) { 228 return $(e).attr("name") === element.attr("name"); 229 }); 230 element = radios.first(); 231 } 232 return element; 233 }; 234 235 var incr = function(obj, pos, val) { 236 var opp, temp; 237 if (typeof val === "string") { 238 val = parseInt(val, 10); 239 } else if (typeof val !== "number") { 240 return; 241 } 242 if (isNaN(val)) { 243 return; 244 } 245 opp = positions[opposites[pos.charAt(0)]]; 246 temp = pos; 247 if (obj[opp] !== undefined) { 248 pos = positions[opp.charAt(0)]; 249 val = -val; 250 } 251 if (obj[pos] === undefined) { 252 obj[pos] = val; 253 } else { 254 obj[pos] += val; 255 } 256 return null; 257 }; 258 259 var realign = function(alignment, inner, outer) { 260 if (alignment === "l" || alignment === "t") { 261 return 0; 262 } else if (alignment === "c" || alignment === "m") { 263 return outer / 2 - inner / 2; 264 } else if (alignment === "r" || alignment === "b") { 265 return outer - inner; 266 } 267 throw "Invalid alignment"; 268 }; 269 270 var encode = function(text) { 271 encode.e = encode.e || createElem("div"); 272 return encode.e.text(text).html(); 273 }; 274 275 function Notification(elem, data, options) { 276 if (typeof options === "string") { 277 options = { 278 className: options 279 }; 280 } 281 this.options = inherit(pluginOptions, $.isPlainObject(options) ? options : {}); 282 this.loadHTML(); 283 this.wrapper = $(coreStyle.html); 284 if (this.options.clickToHide) { 285 this.wrapper.addClass(pluginClassName + "-hidable"); 286 } 287 this.wrapper.data(pluginClassName, this); 288 this.arrow = this.wrapper.find("." + pluginClassName + "-arrow"); 289 this.container = this.wrapper.find("." + pluginClassName + "-container"); 290 this.container.append(this.userContainer); 291 if (elem && elem.length) { 292 this.elementType = elem.attr("type"); 293 this.originalElement = elem; 294 this.elem = getAnchorElement(elem); 295 this.elem.data(pluginClassName, this); 296 this.elem.before(this.wrapper); 297 } 298 this.container.hide(); 299 this.run(data); 300 } 301 302 Notification.prototype.loadHTML = function() { 303 var style; 304 style = this.getStyle(); 305 this.userContainer = $(style.html); 306 this.userFields = style.fields; 307 }; 308 309 Notification.prototype.show = function(show, userCallback) { 310 var args, callback, elems, fn, hidden; 311 callback = (function(_this) { 312 return function() { 313 if (!show && !_this.elem) { 314 _this.destroy(); 315 } 316 if (userCallback) { 317 return userCallback(); 318 } 319 }; 320 })(this); 321 hidden = this.container.parent().parents(':hidden').length > 0; 322 elems = this.container.add(this.arrow); 323 args = []; 324 if (hidden && show) { 325 fn = "show"; 326 } else if (hidden && !show) { 327 fn = "hide"; 328 } else if (!hidden && show) { 329 fn = this.options.showAnimation; 330 args.push(this.options.showDuration); 331 } else if (!hidden && !show) { 332 fn = this.options.hideAnimation; 333 args.push(this.options.hideDuration); 334 } else { 335 return callback(); 336 } 337 args.push(callback); 338 return elems[fn].apply(elems, args); 339 }; 340 341 Notification.prototype.setGlobalPosition = function() { 342 var p = this.getPosition(); 343 var pMain = p[0]; 344 var pAlign = p[1]; 345 var main = positions[pMain]; 346 var align = positions[pAlign]; 347 var key = pMain + "|" + pAlign; 348 var anchor = globalAnchors[key]; 349 if (!anchor || !document.contains(anchor[0])) { 350 anchor = globalAnchors[key] = createElem("div"); 351 var css = {}; 352 css[main] = 0; 353 if (align === "middle") { 354 css.top = '45%'; 355 } else if (align === "center") { 356 css.left = '45%'; 357 } else { 358 css[align] = 0; 359 } 360 anchor.css(css).addClass(pluginClassName + "-corner"); 361 $("body").append(anchor); 362 } 363 return anchor.prepend(this.wrapper); 364 }; 365 366 Notification.prototype.setElementPosition = function() { 367 var arrowColor, arrowCss, arrowSize, color, contH, contW, css, elemH, elemIH, elemIW, elemPos, elemW, gap, j, k, len, len1, mainFull, margin, opp, oppFull, pAlign, pArrow, pMain, pos, posFull, position, ref, wrapPos; 368 position = this.getPosition(); 369 pMain = position[0]; 370 pAlign = position[1]; 371 pArrow = position[2]; 372 elemPos = this.elem.position(); 373 elemH = this.elem.outerHeight(); 374 elemW = this.elem.outerWidth(); 375 elemIH = this.elem.innerHeight(); 376 elemIW = this.elem.innerWidth(); 377 wrapPos = this.wrapper.position(); 378 contH = this.container.height(); 379 contW = this.container.width(); 380 mainFull = positions[pMain]; 381 opp = opposites[pMain]; 382 oppFull = positions[opp]; 383 css = {}; 384 css[oppFull] = pMain === "b" ? elemH : pMain === "r" ? elemW : 0; 385 incr(css, "top", elemPos.top - wrapPos.top); 386 incr(css, "left", elemPos.left - wrapPos.left); 387 ref = ["top", "left"]; 388 for (j = 0, len = ref.length; j < len; j++) { 389 pos = ref[j]; 390 margin = parseInt(this.elem.css("margin-" + pos), 10); 391 if (margin) { 392 incr(css, pos, margin); 393 } 394 } 395 gap = Math.max(0, this.options.gap - (this.options.arrowShow ? arrowSize : 0)); 396 incr(css, oppFull, gap); 397 if (!this.options.arrowShow) { 398 this.arrow.hide(); 399 } else { 400 arrowSize = this.options.arrowSize; 401 arrowCss = $.extend({}, css); 402 arrowColor = this.userContainer.css("border-color") || this.userContainer.css("border-top-color") || this.userContainer.css("background-color") || "white"; 403 for (k = 0, len1 = mainPositions.length; k < len1; k++) { 404 pos = mainPositions[k]; 405 posFull = positions[pos]; 406 if (pos === opp) { 407 continue; 408 } 409 color = posFull === mainFull ? arrowColor : "transparent"; 410 arrowCss["border-" + posFull] = arrowSize + "px solid " + color; 411 } 412 incr(css, positions[opp], arrowSize); 413 if (indexOf.call(mainPositions, pAlign) >= 0) { 414 incr(arrowCss, positions[pAlign], arrowSize * 2); 415 } 416 } 417 if (indexOf.call(vAligns, pMain) >= 0) { 418 incr(css, "left", realign(pAlign, contW, elemW)); 419 if (arrowCss) { 420 incr(arrowCss, "left", realign(pAlign, arrowSize, elemIW)); 421 } 422 } else if (indexOf.call(hAligns, pMain) >= 0) { 423 incr(css, "top", realign(pAlign, contH, elemH)); 424 if (arrowCss) { 425 incr(arrowCss, "top", realign(pAlign, arrowSize, elemIH)); 426 } 427 } 428 if (this.container.is(":visible")) { 429 css.display = "block"; 430 } 431 this.container.removeAttr("style").css(css); 432 if (arrowCss) { 433 return this.arrow.removeAttr("style").css(arrowCss); 434 } 435 }; 436 437 Notification.prototype.getPosition = function() { 438 var pos, ref, ref1, ref2, ref3, ref4, ref5, text; 439 text = this.options.position || (this.elem ? this.options.elementPosition : this.options.globalPosition); 440 pos = parsePosition(text); 441 if (pos.length === 0) { 442 pos[0] = "b"; 443 } 444 if (ref = pos[0], indexOf.call(mainPositions, ref) < 0) { 445 throw "Must be one of [" + mainPositions + "]"; 446 } 447 if (pos.length === 1 || ((ref1 = pos[0], indexOf.call(vAligns, ref1) >= 0) && (ref2 = pos[1], indexOf.call(hAligns, ref2) < 0)) || ((ref3 = pos[0], indexOf.call(hAligns, ref3) >= 0) && (ref4 = pos[1], indexOf.call(vAligns, ref4) < 0))) { 448 pos[1] = (ref5 = pos[0], indexOf.call(hAligns, ref5) >= 0) ? "m" : "l"; 449 } 450 if (pos.length === 2) { 451 pos[2] = pos[1]; 452 } 453 return pos; 454 }; 455 456 Notification.prototype.getStyle = function(name) { 457 var style; 458 if (!name) { 459 name = this.options.style; 460 } 461 if (!name) { 462 name = "default"; 463 } 464 style = styles[name]; 465 if (!style) { 466 throw "Missing style: " + name; 467 } 468 return style; 469 }; 470 471 Notification.prototype.updateClasses = function() { 472 var classes, style; 473 classes = ["base"]; 474 if ($.isArray(this.options.className)) { 475 classes = classes.concat(this.options.className); 476 } else if (this.options.className) { 477 classes.push(this.options.className); 478 } 479 style = this.getStyle(); 480 classes = $.map(classes, function(n) { 481 return pluginClassName + "-" + style.name + "-" + n; 482 }).join(" "); 483 return this.userContainer.attr("class", classes); 484 }; 485 486 Notification.prototype.run = function(data, options) { 487 var d, datas, name, type, value; 488 if ($.isPlainObject(options)) { 489 $.extend(this.options, options); 490 } else if ($.type(options) === "string") { 491 this.options.className = options; 492 } 493 if (this.container && !data) { 494 this.show(false); 495 return; 496 } else if (!this.container && !data) { 497 return; 498 } 499 datas = {}; 500 if ($.isPlainObject(data)) { 501 datas = data; 502 } else { 503 datas[blankFieldName] = data; 504 } 505 for (name in datas) { 506 d = datas[name]; 507 type = this.userFields[name]; 508 if (!type) { 509 continue; 510 } 511 if (type === "text") { 512 d = encode(d); 513 if (this.options.breakNewLines) { 514 d = d.replace(/\n/g, '<br/>'); 515 } 516 } 517 value = name === blankFieldName ? '' : '=' + name; 518 find(this.userContainer, "[data-notify-" + type + value + "]").html(d); 519 } 520 this.updateClasses(); 521 if (this.elem) { 522 this.setElementPosition(); 523 } else { 524 this.setGlobalPosition(); 525 } 526 this.show(true); 527 if (this.options.autoHide) { 528 clearTimeout(this.autohideTimer); 529 this.autohideTimer = setTimeout(this.show.bind(this, false), this.options.autoHideDelay); 530 } 531 }; 532 533 Notification.prototype.destroy = function() { 534 this.wrapper.data(pluginClassName, null); 535 this.wrapper.remove(); 536 }; 537 538 $[pluginName] = function(elem, data, options) { 539 if ((elem && elem.nodeName) || elem.jquery) { 540 $(elem)[pluginName](data, options); 541 } else { 542 options = data; 543 data = elem; 544 new Notification(null, data, options); 545 } 546 return elem; 547 }; 548 549 $.fn[pluginName] = function(data, options) { 550 $(this).each(function() { 551 var prev = getAnchorElement($(this)).data(pluginClassName); 552 if (prev) { 553 prev.destroy(); 554 } 555 var curr = new Notification($(this), data, options); 556 }); 557 return this; 558 }; 559 560 $.extend($[pluginName], { 561 defaults: defaults, 562 addStyle: addStyle, 563 removeStyle: removeStyle, 564 pluginOptions: pluginOptions, 565 getStyle: getStyle, 566 insertCSS: insertCSS 567 }); 568 569 //always include the default bootstrap style 570 addStyle("bootstrap", { 571 html: "<div>\n<span data-notify-text></span>\n</div>", 572 classes: { 573 base: { 574 "font-weight": "bold", 575 "padding": "8px 15px 8px 14px", 576 "text-shadow": "0 1px 0 rgba(255, 255, 255, 0.5)", 577 "background-color": "#fcf8e3",
578 "border": "1px solid #fbeed5", 579 "border-radius": "4px", 580 "white-space": "nowrap", 581 "padding-left": "25px", 582 "background-repeat": "no-repeat", 583 "background-position": "3px 7px" 584 }, 585 error: { 586 "color": "#B94A48", 587 "background-color": "#F2DEDE", 588 "border-color": "#EED3D7", 589 "background-image": "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAtRJREFUeNqkVc1u00AQHq+dOD+0poIQfkIjalW0SEGqRMuRnHos3DjwAH0ArlyQeANOOSMeAA5VjyBxKBQhgSpVUKKQNGloFdw4cWw2jtfMOna6JOUArDTazXi/b3dm55socPqQhFka++aHBsI8GsopRJERNFlY88FCEk9Yiwf8RhgRyaHFQpPHCDmZG5oX2ui2yilkcTT1AcDsbYC1NMAyOi7zTX2Agx7A9luAl88BauiiQ/cJaZQfIpAlngDcvZZMrl8vFPK5+XktrWlx3/ehZ5r9+t6e+WVnp1pxnNIjgBe4/6dAysQc8dsmHwPcW9C0h3fW1hans1ltwJhy0GxK7XZbUlMp5Ww2eyan6+ft/f2FAqXGK4CvQk5HueFz7D6GOZtIrK+srupdx1GRBBqNBtzc2AiMr7nPplRdKhb1q6q6zjFhrklEFOUutoQ50xcX86ZlqaZpQrfbBdu2R6/G19zX6XSgh6RX5ubyHCM8nqSID6ICrGiZjGYYxojEsiw4PDwMSL5VKsC8Yf4VRYFzMzMaxwjlJSlCyAQ9l0CW44PBADzXhe7xMdi9HtTrdYjFYkDQL0cn4Xdq2/EAE+InCnvADTf2eah4Sx9vExQjkqXT6aAERICMewd/UAp/IeYANM2joxt+q5VI+ieq2i0Wg3l6DNzHwTERPgo1ko7XBXj3vdlsT2F+UuhIhYkp7u7CarkcrFOCtR3H5JiwbAIeImjT/YQKKBtGjRFCU5IUgFRe7fF4cCNVIPMYo3VKqxwjyNAXNepuopyqnld602qVsfRpEkkz+GFL1wPj6ySXBpJtWVa5xlhpcyhBNwpZHmtX8AGgfIExo0ZpzkWVTBGiXCSEaHh62/PoR0p/vHaczxXGnj4bSo+G78lELU80h1uogBwWLf5YlsPmgDEd4M236xjm+8nm4IuE/9u+/PH2JXZfbwz4zw1WbO+SQPpXfwG/BBgAhCNZiSb/pOQAAAAASUVORK5CYII=)" 590 }, 591 success: { 592 "color": "#468847", 593 "background-color": "#DFF0D8", 594 "border-color": "#D6E9C6", 595 "background-image": "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAutJREFUeNq0lctPE0Ecx38zu/RFS1EryqtgJFA08YCiMZIAQQ4eRG8eDGdPJiYeTIwHTfwPiAcvXIwXLwoXPaDxkWgQ6islKlJLSQWLUraPLTv7Gme32zoF9KSTfLO7v53vZ3d/M7/fIth+IO6INt2jjoA7bjHCJoAlzCRw59YwHYjBnfMPqAKWQYKjGkfCJqAF0xwZjipQtA3MxeSG87VhOOYegVrUCy7UZM9S6TLIdAamySTclZdYhFhRHloGYg7mgZv1Zzztvgud7V1tbQ2twYA34LJmF4p5dXF1KTufnE+SxeJtuCZNsLDCQU0+RyKTF27Unw101l8e6hns3u0PBalORVVVkcaEKBJDgV3+cGM4tKKmI+ohlIGnygKX00rSBfszz/n2uXv81wd6+rt1orsZCHRdr1Imk2F2Kob3hutSxW8thsd8AXNaln9D7CTfA6O+0UgkMuwVvEFFUbbAcrkcTA8+AtOk8E6KiQiDmMFSDqZItAzEVQviRkdDdaFgPp8HSZKAEAL5Qh7Sq2lIJBJwv2scUqkUnKoZgNhcDKhKg5aH+1IkcouCAdFGAQsuWZYhOjwFHQ96oagWgRoUov1T9kRBEODAwxM2QtEUl+Wp+Ln9VRo6BcMw4ErHRYjH4/B26AlQoQQTRdHWwcd9AH57+UAXddvDD37DmrBBV34WfqiXPl61g+vr6xA9zsGeM9gOdsNXkgpEtTwVvwOklXLKm6+/p5ezwk4B+j6droBs2CsGa/gNs6RIxazl4Tc25mpTgw/apPR1LYlNRFAzgsOxkyXYLIM1V8NMwyAkJSctD1eGVKiq5wWjSPdjmeTkiKvVW4f2YPHWl3GAVq6ymcyCTgovM3FzyRiDe2TaKcEKsLpJvNHjZgPNqEtyi6mZIm4SRFyLMUsONSSdkPeFtY1n0mczoY3BHTLhwPRy9/lzcziCw9ACI+yql0VLzcGAZbYSM5CCSZg1/9oc/nn7+i8N9p/8An4JMADxhH+xHfuiKwAAAABJRU5ErkJggg==)" 596 }, 597 info: { 598 "color": "#3A87AD", 599 "background-color": "#D9EDF7", 600 "border-color": "#BCE8F1", 601 "background-image": "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH3QYFAhkSsdes/QAAA8dJREFUOMvVlGtMW2UYx//POaWHXg6lLaW0ypAtw1UCgbniNOLcVOLmAjHZolOYlxmTGXVZdAnRfXQm+7SoU4mXaOaiZsEpC9FkiQs6Z6bdCnNYruM6KNBw6YWewzl9z+sHImEWv+vz7XmT95f/+3/+7wP814v+efDOV3/SoX3lHAA+6ODeUFfMfjOWMADgdk+eEKz0pF7aQdMAcOKLLjrcVMVX3xdWN29/GhYP7SvnP0cWfS8caSkfHZsPE9Fgnt02JNutQ0QYHB2dDz9/pKX8QjjuO9xUxd/66HdxTeCHZ3rojQObGQBcuNjfplkD3b19Y/6MrimSaKgSMmpGU5WevmE/swa6Oy73tQHA0Rdr2Mmv/6A1n9w9suQ7097Z9lM4FlTgTDrzZTu4StXVfpiI48rVcUDM5cmEksrFnHxfpTtU/3BFQzCQF/2bYVoNbH7zmItbSoMj40JSzmMyX5qDvriA7QdrIIpA+3cdsMpu0nXI8cV0MtKXCPZev+gCEM1S2NHPvWfP/hL+7FSr3+0p5RBEyhEN5JCKYr8XnASMT0xBNyzQGQeI8fjsGD39RMPk7se2bd5ZtTyoFYXftF6y37gx7NeUtJJOTFlAHDZLDuILU3j3+H5oOrD3yWbIztugaAzg
601nBKJuBLpGfQrS8wO4FZgV+c1IxaLgWVU0tMLEETCos4xMzEIv9cJXQcyagIwigDGwJgOAtHAwAhisQUjy0ORGERiELgG4iakkzo4MYAxcM5hAMi1WWG1yYCJIcMUaBkVRLdGeSU2995TLWzcUAzONJ7J6FBVBYIggMzmFbvdBV44Corg8vjhzC+EJEl8U1kJtgYrhCzgc/vvTwXKSib1paRFVRVORDAJAsw5FuTaJEhWM2SHB3mOAlhkNxwuLzeJsGwqWzf5TFNdKgtY5qHp6ZFf67Y/sAVadCaVY5YACDDb3Oi4NIjLnWMw2QthCBIsVhsUTU9tvXsjeq9+X1d75/KEs4LNOfcdf/+HthMnvwxOD0wmHaXr7ZItn2wuH2SnBzbZAbPJwpPx+VQuzcm7dgRCB57a1uBzUDRL4bfnI0RE0eaXd9W89mpjqHZnUI5Hh2l2dkZZUhOqpi2qSmpOmZ64Tuu9qlz/SEXo6MEHa3wOip46F1n7633eekV8ds8Wxjn37Wl63VVa+ej5oeEZ/82ZBETJjpJ1Rbij2D3Z/1trXUvLsblCK0XfOx0SX2kMsn9dX+d+7Kf6h8o4AIykuffjT8L20LU+w4AZd5VvEPY+XpWqLV327HR7DzXuDnD8r+ovkBehJ8i+y8YAAAAASUVORK5CYII=)" 602 }, 603 warn: { 604 "color": "#C09853", 605 "background-color": "#FCF8E3", 606 "border-color": "#FBEED5", 607 "background-image": "url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAMAAAC6V+0/AAABJlBMVEXr6eb/2oD/wi7/xjr/0mP/ykf/tQD/vBj/3o7/uQ//vyL/twebhgD/4pzX1K3z8e349vK6tHCilCWbiQymn0jGworr6dXQza3HxcKkn1vWvV/5uRfk4dXZ1bD18+/52YebiAmyr5S9mhCzrWq5t6ufjRH54aLs0oS+qD751XqPhAybhwXsujG3sm+Zk0PTwG6Shg+PhhObhwOPgQL4zV2nlyrf27uLfgCPhRHu7OmLgAafkyiWkD3l49ibiAfTs0C+lgCniwD4sgDJxqOilzDWowWFfAH08uebig6qpFHBvH/aw26FfQTQzsvy8OyEfz20r3jAvaKbhgG9q0nc2LbZxXanoUu/u5WSggCtp1anpJKdmFz/zlX/1nGJiYmuq5Dx7+sAAADoPUZSAAAAAXRSTlMAQObYZgAAAAFiS0dEAIgFHUgAAAAJcEhZcwAACxMAAAsTAQCanBgAAAAHdElNRQfdBgUBGhh4aah5AAAAlklEQVQY02NgoBIIE8EUcwn1FkIXM1Tj5dDUQhPU502Mi7XXQxGz5uVIjGOJUUUW81HnYEyMi2HVcUOICQZzMMYmxrEyMylJwgUt5BljWRLjmJm4pI1hYp5SQLGYxDgmLnZOVxuooClIDKgXKMbN5ggV1ACLJcaBxNgcoiGCBiZwdWxOETBDrTyEFey0jYJ4eHjMGWgEAIpRFRCUt08qAAAAAElFTkSuQmCC)" 608 } 609 } 610 }); 611 612 $(function() { 613 insertCSS(coreStyle.css).attr("id", "core-notify"); 614 $(document).on("click", "." + pluginClassName + "-hidable", function(e) { 615 $(this).trigger("notify-hide"); 616 }); 617 $(document).on("notify-hide", "." + pluginClassName + "-wrapper", function(e) { 618 var elem = $(this).data(pluginClassName); 619 if(elem) { 620 elem.show(false); 621 } 622 }); 623 }); 624 625}));
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.