mirror of
https://github.com/LaCasemate/fab-manager.git
synced 2025-02-06 01:08:21 +01:00
130 lines
2.9 KiB
JavaScript
130 lines
2.9 KiB
JavaScript
/**
|
|
* Shallow object clone and merge
|
|
*
|
|
* @param a Object A
|
|
* @param b Object B
|
|
* @returns {Object} New object with all of A's properties, and all of B's properties, overwriting A's properties
|
|
*/
|
|
exports.extend = function(a, b) {
|
|
var c = {};
|
|
for (var x in a) {
|
|
if (a.hasOwnProperty(x)) {
|
|
c[x] = a[x];
|
|
}
|
|
}
|
|
if (b != null) {
|
|
for (var y in b) {
|
|
if (b.hasOwnProperty(y)) {
|
|
c[y] = b[y];
|
|
}
|
|
}
|
|
}
|
|
return c;
|
|
};
|
|
|
|
/**
|
|
* Takes a k/v list of CSS properties and returns a rule
|
|
*
|
|
* @param props CSS properties object
|
|
*/
|
|
exports.cssProps = function(props) {
|
|
var ret = [];
|
|
for (var p in props) {
|
|
if (props.hasOwnProperty(p)) {
|
|
ret.push(p + ':' + props[p]);
|
|
}
|
|
}
|
|
return ret.join(';');
|
|
};
|
|
|
|
/**
|
|
* Encodes HTML entities in a string
|
|
*
|
|
* @param str Input string
|
|
*/
|
|
exports.encodeHtmlEntity = function(str) {
|
|
var buf = [];
|
|
var charCode = 0;
|
|
for (var i = str.length - 1; i >= 0; i--) {
|
|
charCode = str.charCodeAt(i);
|
|
if (charCode > 128) {
|
|
buf.unshift(['&#', charCode, ';'].join(''));
|
|
} else {
|
|
buf.unshift(str[i]);
|
|
}
|
|
}
|
|
return buf.join('');
|
|
};
|
|
|
|
|
|
/**
|
|
* Converts a value into an array of DOM nodes
|
|
*
|
|
* @param val A string, a NodeList, a Node, or an HTMLCollection
|
|
*/
|
|
exports.getNodeArray = function(val) {
|
|
var retval = null;
|
|
if (typeof(val) == 'string') {
|
|
retval = document.querySelectorAll(val);
|
|
} else if (global.NodeList && val instanceof global.NodeList) {
|
|
retval = val;
|
|
} else if (global.Node && val instanceof global.Node) {
|
|
retval = [val];
|
|
} else if (global.HTMLCollection && val instanceof global.HTMLCollection) {
|
|
retval = val;
|
|
} else if (val instanceof Array) {
|
|
retval = val;
|
|
} else if (val === null) {
|
|
retval = [];
|
|
}
|
|
return retval;
|
|
};
|
|
|
|
/**
|
|
* Checks if an image exists
|
|
*
|
|
* @param src URL of image
|
|
* @param callback Callback to call once image status has been found
|
|
*/
|
|
exports.imageExists = function(src, callback) {
|
|
var image = new Image();
|
|
image.onerror = function() {
|
|
callback.call(this, false);
|
|
};
|
|
image.onload = function() {
|
|
callback.call(this, true);
|
|
};
|
|
image.src = src;
|
|
};
|
|
|
|
/**
|
|
* Decodes HTML entities in a string
|
|
*
|
|
* @param str Input string
|
|
*/
|
|
exports.decodeHtmlEntity = function(str) {
|
|
return str.replace(/&#(\d+);/g, function(match, dec) {
|
|
return String.fromCharCode(dec);
|
|
});
|
|
};
|
|
|
|
|
|
/**
|
|
* Returns an element's dimensions if it's visible, `false` otherwise.
|
|
*
|
|
* @private
|
|
* @param el DOM element
|
|
*/
|
|
exports.dimensionCheck = function(el) {
|
|
var dimensions = {
|
|
height: el.clientHeight,
|
|
width: el.clientWidth
|
|
};
|
|
|
|
if (dimensions.height && dimensions.width) {
|
|
return dimensions;
|
|
} else {
|
|
return false;
|
|
}
|
|
};
|