mirror of https://github.com/MISP/misp-dashboard
fix: [web] Added missing thirdparty dependencies
parent
c34d94cf7f
commit
93f3a8143e
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
@ -0,0 +1,314 @@
|
||||||
|
.selected-path-container {
|
||||||
|
padding-left: 10px;
|
||||||
|
border: 1px solid #DCC896;
|
||||||
|
background: rgb(250, 240, 210);
|
||||||
|
border-radius: 4px;
|
||||||
|
margin-bottom: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.group-conditions > button[data-not="group"].active {
|
||||||
|
color: #FFF;
|
||||||
|
background-color: #C9302C;
|
||||||
|
border-color: #AC2925;
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-builder, .query-builder * {
|
||||||
|
margin: 0;
|
||||||
|
padding: 0;
|
||||||
|
box-sizing: border-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-builder {
|
||||||
|
font-family: sans-serif;
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-builder .hide {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-builder .pull-right {
|
||||||
|
float: right !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-builder .btn {
|
||||||
|
text-transform: none;
|
||||||
|
display: inline-block;
|
||||||
|
padding: 6px 12px;
|
||||||
|
margin-bottom: 0px;
|
||||||
|
font-size: 14px;
|
||||||
|
font-weight: 400;
|
||||||
|
line-height: 1.42857;
|
||||||
|
text-align: center;
|
||||||
|
white-space: nowrap;
|
||||||
|
vertical-align: middle;
|
||||||
|
touch-action: manipulation;
|
||||||
|
cursor: pointer;
|
||||||
|
user-select: none;
|
||||||
|
background-image: none;
|
||||||
|
border: 1px solid transparent;
|
||||||
|
border-radius: 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-builder .btn.focus, .query-builder .btn:focus, .query-builder .btn:hover {
|
||||||
|
color: #333;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-builder .btn.active, .query-builder .btn:active {
|
||||||
|
background-image: none;
|
||||||
|
outline: 0px none;
|
||||||
|
box-shadow: 0px 3px 5px rgba(0, 0, 0, 0.125) inset;
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-builder .btn-success {
|
||||||
|
color: #FFF;
|
||||||
|
background-color: #5CB85C;
|
||||||
|
border-color: #4CAE4C;
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-builder .btn-primary {
|
||||||
|
color: #FFF;
|
||||||
|
background-color: #337AB7;
|
||||||
|
border-color: #2E6DA4;
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-builder .btn-danger {
|
||||||
|
color: #FFF;
|
||||||
|
background-color: #D9534F;
|
||||||
|
border-color: #D43F3A;
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-builder .btn-success.active, .query-builder .btn-success.focus,
|
||||||
|
.query-builder .btn-success:active, .query-builder .btn-success:focus,
|
||||||
|
.query-builder .btn-success:hover {
|
||||||
|
color: #FFF;
|
||||||
|
background-color: #449D44;
|
||||||
|
border-color: #398439;
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-builder .btn-primary.active, .query-builder .btn-primary.focus,
|
||||||
|
.query-builder .btn-primary:active, .query-builder .btn-primary:focus,
|
||||||
|
.query-builder .btn-primary:hover {
|
||||||
|
color: #FFF;
|
||||||
|
background-color: #286090;
|
||||||
|
border-color: #204D74;
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-builder .btn-danger.active, .query-builder .btn-danger.focus,
|
||||||
|
.query-builder .btn-danger:active, .query-builder .btn-danger:focus,
|
||||||
|
.query-builder .btn-danger:hover {
|
||||||
|
color: #FFF;
|
||||||
|
background-color: #C9302C;
|
||||||
|
border-color: #AC2925;
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-builder .btn-group {
|
||||||
|
position: relative;
|
||||||
|
display: inline-block;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-builder .btn-group > .btn {
|
||||||
|
position: relative;
|
||||||
|
float: left;
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-builder .btn-group > .btn:first-child {
|
||||||
|
margin-left: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-builder .btn-group > .btn:first-child:not(:last-child) {
|
||||||
|
border-top-right-radius: 0px;
|
||||||
|
border-bottom-right-radius: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-builder .btn-group > .btn:last-child:not(:first-child) {
|
||||||
|
border-top-left-radius: 0px;
|
||||||
|
border-bottom-left-radius: 0px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-builder .btn-group .btn + .btn, .query-builder .btn-group .btn + .btn-group,
|
||||||
|
.query-builder .btn-group .btn-group + .btn, .query-builder .btn-group .btn-group + .btn-group {
|
||||||
|
margin-left: -1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-builder .btn-xs, .query-builder .btn-group-xs > .btn {
|
||||||
|
padding: 1px 5px;
|
||||||
|
line-height: 1.5;
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* jQuery QueryBuilder 2.5.2
|
||||||
|
* Copyright 2014-2018 Damien "Mistic" Sorel (http://www.strangeplanet.fr)
|
||||||
|
* Licensed under MIT (https://opensource.org/licenses/MIT)
|
||||||
|
*/
|
||||||
|
.query-builder .rules-group-container, .query-builder .rule-container, .query-builder .rule-placeholder {
|
||||||
|
position: relative;
|
||||||
|
margin: 4px 0;
|
||||||
|
border-radius: 5px;
|
||||||
|
padding: 5px;
|
||||||
|
border: 1px solid #EEE;
|
||||||
|
background: rgba(255, 255, 255, 0.9);
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-builder .rule-container .rule-filter-container,
|
||||||
|
.query-builder .rule-container .rule-operator-container,
|
||||||
|
.query-builder .rule-container .rule-value-container, .query-builder .error-container, .query-builder .drag-handle {
|
||||||
|
display: inline-block;
|
||||||
|
margin: 0 5px 0 0;
|
||||||
|
vertical-align: middle;
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-builder .rules-group-container {
|
||||||
|
padding: 10px;
|
||||||
|
padding-bottom: 6px;
|
||||||
|
border: 1px solid #DCC896;
|
||||||
|
background: rgba(250, 240, 210, 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-builder .rules-group-header {
|
||||||
|
margin-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-builder .rules-group-header .group-conditions .btn.readonly:not(.active),
|
||||||
|
.query-builder .rules-group-header .group-conditions input[name$='_cond'] {
|
||||||
|
border: 0;
|
||||||
|
clip: rect(0 0 0 0);
|
||||||
|
height: 1px;
|
||||||
|
margin: -1px;
|
||||||
|
overflow: hidden;
|
||||||
|
padding: 0;
|
||||||
|
position: absolute;
|
||||||
|
width: 1px;
|
||||||
|
white-space: nowrap;
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-builder .rules-group-header .group-conditions .btn.readonly {
|
||||||
|
border-radius: 3px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-builder .rules-list {
|
||||||
|
list-style: none;
|
||||||
|
padding: 0 0 0 15px;
|
||||||
|
margin: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-builder .rule-value-container {
|
||||||
|
border-left: 1px solid #DDD;
|
||||||
|
padding-left: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-builder .rule-value-container label {
|
||||||
|
margin-bottom: 0;
|
||||||
|
font-weight: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-builder .rule-value-container label.block {
|
||||||
|
display: block;
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-builder .rule-value-container select,
|
||||||
|
.query-builder .rule-value-container input[type='text'],
|
||||||
|
.query-builder .rule-value-container input[type='number'] {
|
||||||
|
padding: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-builder .error-container {
|
||||||
|
display: none;
|
||||||
|
cursor: help;
|
||||||
|
color: #F00;
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-builder .has-error {
|
||||||
|
background-color: #FDD;
|
||||||
|
border-color: #F99;
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-builder .has-error .error-container {
|
||||||
|
display: inline-block !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-builder .rules-list > *::before, .query-builder .rules-list > *::after {
|
||||||
|
content: '';
|
||||||
|
position: absolute;
|
||||||
|
left: -10px;
|
||||||
|
width: 10px;
|
||||||
|
height: calc(50% + 4px);
|
||||||
|
border-color: #CCC;
|
||||||
|
border-style: solid;
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-builder .rules-list > *::before {
|
||||||
|
top: -4px;
|
||||||
|
border-width: 0 0 2px 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-builder .rules-list > *::after {
|
||||||
|
top: 50%;
|
||||||
|
border-width: 0 0 0 2px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-builder .rules-list > *:first-child::before {
|
||||||
|
top: -12px;
|
||||||
|
height: calc(50% + 14px);
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-builder .rules-list > *:last-child::before {
|
||||||
|
border-radius: 0 0 0 4px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-builder .rules-list > *:last-child::after {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-builder.bt-checkbox-glyphicons .checkbox input[type='checkbox']:checked + label::after {
|
||||||
|
font-family: 'Glyphicons Halflings';
|
||||||
|
content: '\e013';
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-builder.bt-checkbox-glyphicons .checkbox label::after {
|
||||||
|
padding-left: 4px;
|
||||||
|
padding-top: 2px;
|
||||||
|
font-size: 9px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-builder .error-container + .tooltip .tooltip-inner {
|
||||||
|
color: #F99 !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-builder p.filter-description {
|
||||||
|
margin: 5px 0 0 0;
|
||||||
|
background: #D9EDF7;
|
||||||
|
border: 1px solid #BCE8F1;
|
||||||
|
color: #31708F;
|
||||||
|
border-radius: 5px;
|
||||||
|
padding: 2.5px 5px;
|
||||||
|
font-size: .8em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-builder .rules-group-header [data-invert] {
|
||||||
|
margin-left: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-builder .drag-handle {
|
||||||
|
cursor: move;
|
||||||
|
vertical-align: middle;
|
||||||
|
margin-left: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-builder .dragging {
|
||||||
|
position: fixed;
|
||||||
|
opacity: .5;
|
||||||
|
z-index: 100;
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-builder .dragging::before, .query-builder .dragging::after {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
|
.query-builder .rule-placeholder {
|
||||||
|
border: 1px dashed #BBB;
|
||||||
|
opacity: .7;
|
||||||
|
}
|
|
@ -0,0 +1,144 @@
|
||||||
|
// doT.js
|
||||||
|
// 2011-2014, Laura Doktorova, https://github.com/olado/doT
|
||||||
|
// Licensed under the MIT license.
|
||||||
|
|
||||||
|
(function () {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
var doT = {
|
||||||
|
name: "doT",
|
||||||
|
version: "1.1.1",
|
||||||
|
templateSettings: {
|
||||||
|
evaluate: /\{\{([\s\S]+?(\}?)+)\}\}/g,
|
||||||
|
interpolate: /\{\{=([\s\S]+?)\}\}/g,
|
||||||
|
encode: /\{\{!([\s\S]+?)\}\}/g,
|
||||||
|
use: /\{\{#([\s\S]+?)\}\}/g,
|
||||||
|
useParams: /(^|[^\w$])def(?:\.|\[[\'\"])([\w$\.]+)(?:[\'\"]\])?\s*\:\s*([\w$\.]+|\"[^\"]+\"|\'[^\']+\'|\{[^\}]+\})/g,
|
||||||
|
define: /\{\{##\s*([\w\.$]+)\s*(\:|=)([\s\S]+?)#\}\}/g,
|
||||||
|
defineParams:/^\s*([\w$]+):([\s\S]+)/,
|
||||||
|
conditional: /\{\{\?(\?)?\s*([\s\S]*?)\s*\}\}/g,
|
||||||
|
iterate: /\{\{~\s*(?:\}\}|([\s\S]+?)\s*\:\s*([\w$]+)\s*(?:\:\s*([\w$]+))?\s*\}\})/g,
|
||||||
|
varname: "it",
|
||||||
|
strip: true,
|
||||||
|
append: true,
|
||||||
|
selfcontained: false,
|
||||||
|
doNotSkipEncoded: false
|
||||||
|
},
|
||||||
|
template: undefined, //fn, compile template
|
||||||
|
compile: undefined, //fn, for express
|
||||||
|
log: true
|
||||||
|
}, _globals;
|
||||||
|
|
||||||
|
doT.encodeHTMLSource = function(doNotSkipEncoded) {
|
||||||
|
var encodeHTMLRules = { "&": "&", "<": "<", ">": ">", '"': """, "'": "'", "/": "/" },
|
||||||
|
matchHTML = doNotSkipEncoded ? /[&<>"'\/]/g : /&(?!#?\w+;)|<|>|"|'|\//g;
|
||||||
|
return function(code) {
|
||||||
|
return code ? code.toString().replace(matchHTML, function(m) {return encodeHTMLRules[m] || m;}) : "";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
_globals = (function(){ return this || (0,eval)("this"); }());
|
||||||
|
|
||||||
|
/* istanbul ignore else */
|
||||||
|
if (typeof module !== "undefined" && module.exports) {
|
||||||
|
module.exports = doT;
|
||||||
|
} else if (typeof define === "function" && define.amd) {
|
||||||
|
define(function(){return doT;});
|
||||||
|
} else {
|
||||||
|
_globals.doT = doT;
|
||||||
|
}
|
||||||
|
|
||||||
|
var startend = {
|
||||||
|
append: { start: "'+(", end: ")+'", startencode: "'+encodeHTML(" },
|
||||||
|
split: { start: "';out+=(", end: ");out+='", startencode: "';out+=encodeHTML(" }
|
||||||
|
}, skip = /$^/;
|
||||||
|
|
||||||
|
function resolveDefs(c, block, def) {
|
||||||
|
return ((typeof block === "string") ? block : block.toString())
|
||||||
|
.replace(c.define || skip, function(m, code, assign, value) {
|
||||||
|
if (code.indexOf("def.") === 0) {
|
||||||
|
code = code.substring(4);
|
||||||
|
}
|
||||||
|
if (!(code in def)) {
|
||||||
|
if (assign === ":") {
|
||||||
|
if (c.defineParams) value.replace(c.defineParams, function(m, param, v) {
|
||||||
|
def[code] = {arg: param, text: v};
|
||||||
|
});
|
||||||
|
if (!(code in def)) def[code]= value;
|
||||||
|
} else {
|
||||||
|
new Function("def", "def['"+code+"']=" + value)(def);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
})
|
||||||
|
.replace(c.use || skip, function(m, code) {
|
||||||
|
if (c.useParams) code = code.replace(c.useParams, function(m, s, d, param) {
|
||||||
|
if (def[d] && def[d].arg && param) {
|
||||||
|
var rw = (d+":"+param).replace(/'|\\/g, "_");
|
||||||
|
def.__exp = def.__exp || {};
|
||||||
|
def.__exp[rw] = def[d].text.replace(new RegExp("(^|[^\\w$])" + def[d].arg + "([^\\w$])", "g"), "$1" + param + "$2");
|
||||||
|
return s + "def.__exp['"+rw+"']";
|
||||||
|
}
|
||||||
|
});
|
||||||
|
var v = new Function("def", "return " + code)(def);
|
||||||
|
return v ? resolveDefs(c, v, def) : v;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
function unescape(code) {
|
||||||
|
return code.replace(/\\('|\\)/g, "$1").replace(/[\r\t\n]/g, " ");
|
||||||
|
}
|
||||||
|
|
||||||
|
doT.template = function(tmpl, c, def) {
|
||||||
|
c = c || doT.templateSettings;
|
||||||
|
var cse = c.append ? startend.append : startend.split, needhtmlencode, sid = 0, indv,
|
||||||
|
str = (c.use || c.define) ? resolveDefs(c, tmpl, def || {}) : tmpl;
|
||||||
|
|
||||||
|
str = ("var out='" + (c.strip ? str.replace(/(^|\r|\n)\t* +| +\t*(\r|\n|$)/g," ")
|
||||||
|
.replace(/\r|\n|\t|\/\*[\s\S]*?\*\//g,""): str)
|
||||||
|
.replace(/'|\\/g, "\\$&")
|
||||||
|
.replace(c.interpolate || skip, function(m, code) {
|
||||||
|
return cse.start + unescape(code) + cse.end;
|
||||||
|
})
|
||||||
|
.replace(c.encode || skip, function(m, code) {
|
||||||
|
needhtmlencode = true;
|
||||||
|
return cse.startencode + unescape(code) + cse.end;
|
||||||
|
})
|
||||||
|
.replace(c.conditional || skip, function(m, elsecase, code) {
|
||||||
|
return elsecase ?
|
||||||
|
(code ? "';}else if(" + unescape(code) + "){out+='" : "';}else{out+='") :
|
||||||
|
(code ? "';if(" + unescape(code) + "){out+='" : "';}out+='");
|
||||||
|
})
|
||||||
|
.replace(c.iterate || skip, function(m, iterate, vname, iname) {
|
||||||
|
if (!iterate) return "';} } out+='";
|
||||||
|
sid+=1; indv=iname || "i"+sid; iterate=unescape(iterate);
|
||||||
|
return "';var arr"+sid+"="+iterate+";if(arr"+sid+"){var "+vname+","+indv+"=-1,l"+sid+"=arr"+sid+".length-1;while("+indv+"<l"+sid+"){"
|
||||||
|
+vname+"=arr"+sid+"["+indv+"+=1];out+='";
|
||||||
|
})
|
||||||
|
.replace(c.evaluate || skip, function(m, code) {
|
||||||
|
return "';" + unescape(code) + "out+='";
|
||||||
|
})
|
||||||
|
+ "';return out;")
|
||||||
|
.replace(/\n/g, "\\n").replace(/\t/g, '\\t').replace(/\r/g, "\\r")
|
||||||
|
.replace(/(\s|;|\}|^|\{)out\+='';/g, '$1').replace(/\+''/g, "");
|
||||||
|
//.replace(/(\s|;|\}|^|\{)out\+=''\+/g,'$1out+=');
|
||||||
|
|
||||||
|
if (needhtmlencode) {
|
||||||
|
if (!c.selfcontained && _globals && !_globals._encodeHTML) _globals._encodeHTML = doT.encodeHTMLSource(c.doNotSkipEncoded);
|
||||||
|
str = "var encodeHTML = typeof _encodeHTML !== 'undefined' ? _encodeHTML : ("
|
||||||
|
+ doT.encodeHTMLSource.toString() + "(" + (c.doNotSkipEncoded || '') + "));"
|
||||||
|
+ str;
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
return new Function(c.varname, str);
|
||||||
|
} catch (e) {
|
||||||
|
/* istanbul ignore else */
|
||||||
|
if (typeof console !== "undefined") console.log("Could not create a template function: " + str);
|
||||||
|
throw e;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
doT.compile = function(tmpl, def) {
|
||||||
|
return doT.template(tmpl, null, def);
|
||||||
|
};
|
||||||
|
}());
|
|
@ -0,0 +1,132 @@
|
||||||
|
/*!
|
||||||
|
* jQuery.extendext 0.1.2
|
||||||
|
*
|
||||||
|
* Copyright 2014-2016 Damien "Mistic" Sorel (http://www.strangeplanet.fr)
|
||||||
|
* Licensed under MIT (http://opensource.org/licenses/MIT)
|
||||||
|
*
|
||||||
|
* Based on jQuery.extend by jQuery Foundation, Inc. and other contributors
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*jshint -W083 */
|
||||||
|
|
||||||
|
(function (root, factory) {
|
||||||
|
if (typeof define === 'function' && define.amd) {
|
||||||
|
define(['jquery'], factory);
|
||||||
|
}
|
||||||
|
else if (typeof module === 'object' && module.exports) {
|
||||||
|
module.exports = factory(require('jquery'));
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
factory(root.jQuery);
|
||||||
|
}
|
||||||
|
}(this, function ($) {
|
||||||
|
"use strict";
|
||||||
|
|
||||||
|
$.extendext = function () {
|
||||||
|
var options, name, src, copy, copyIsArray, clone,
|
||||||
|
target = arguments[0] || {},
|
||||||
|
i = 1,
|
||||||
|
length = arguments.length,
|
||||||
|
deep = false,
|
||||||
|
arrayMode = 'default';
|
||||||
|
|
||||||
|
// Handle a deep copy situation
|
||||||
|
if (typeof target === "boolean") {
|
||||||
|
deep = target;
|
||||||
|
|
||||||
|
// Skip the boolean and the target
|
||||||
|
target = arguments[i++] || {};
|
||||||
|
}
|
||||||
|
|
||||||
|
// Handle array mode parameter
|
||||||
|
if (typeof target === "string") {
|
||||||
|
arrayMode = target.toLowerCase();
|
||||||
|
if (arrayMode !== 'concat' && arrayMode !== 'replace' && arrayMode !== 'extend') {
|
||||||
|
arrayMode = 'default';
|
||||||
|
}
|
||||||
|
|
||||||
|
// Skip the string param
|
||||||
|
target = arguments[i++] || {};
|
||||||
|
}
|
||||||
|
|
||||||
|
// Handle case when target is a string or something (possible in deep copy)
|
||||||
|
if (typeof target !== "object" && !$.isFunction(target)) {
|
||||||
|
target = {};
|
||||||
|
}
|
||||||
|
|
||||||
|
// Extend jQuery itself if only one argument is passed
|
||||||
|
if (i === length) {
|
||||||
|
target = this;
|
||||||
|
i--;
|
||||||
|
}
|
||||||
|
|
||||||
|
for (; i < length; i++) {
|
||||||
|
// Only deal with non-null/undefined values
|
||||||
|
if ((options = arguments[i]) !== null) {
|
||||||
|
// Special operations for arrays
|
||||||
|
if ($.isArray(options) && arrayMode !== 'default') {
|
||||||
|
clone = target && $.isArray(target) ? target : [];
|
||||||
|
|
||||||
|
switch (arrayMode) {
|
||||||
|
case 'concat':
|
||||||
|
target = clone.concat($.extend(deep, [], options));
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'replace':
|
||||||
|
target = $.extend(deep, [], options);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'extend':
|
||||||
|
options.forEach(function (e, i) {
|
||||||
|
if (typeof e === 'object') {
|
||||||
|
var type = $.isArray(e) ? [] : {};
|
||||||
|
clone[i] = $.extendext(deep, arrayMode, clone[i] || type, e);
|
||||||
|
|
||||||
|
} else if (clone.indexOf(e) === -1) {
|
||||||
|
clone.push(e);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
target = clone;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
// Extend the base object
|
||||||
|
for (name in options) {
|
||||||
|
src = target[name];
|
||||||
|
copy = options[name];
|
||||||
|
|
||||||
|
// Prevent never-ending loop
|
||||||
|
if (target === copy) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Recurse if we're merging plain objects or arrays
|
||||||
|
if (deep && copy && ( $.isPlainObject(copy) ||
|
||||||
|
(copyIsArray = $.isArray(copy)) )) {
|
||||||
|
|
||||||
|
if (copyIsArray) {
|
||||||
|
copyIsArray = false;
|
||||||
|
clone = src && $.isArray(src) ? src : [];
|
||||||
|
|
||||||
|
} else {
|
||||||
|
clone = src && $.isPlainObject(src) ? src : {};
|
||||||
|
}
|
||||||
|
|
||||||
|
// Never move original objects, clone them
|
||||||
|
target[name] = $.extendext(deep, arrayMode, clone, copy);
|
||||||
|
|
||||||
|
// Don't bring in undefined values
|
||||||
|
} else if (copy !== undefined) {
|
||||||
|
target[name] = copy;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Return the modified object
|
||||||
|
return target;
|
||||||
|
};
|
||||||
|
}));
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue