Devel-SizeMe
view release on metacpan or search on metacpan
lib/Devel/SizeMe/Graph/static/jit.js view on Meta::CPAN
var object = arguments[i];
if ($.type(object) != 'object')
continue;
for ( var key in object) {
var op = object[key], mp = mix[key];
mix[key] = (mp && $.type(op) == 'object' && $.type(mp) == 'object') ? $
.merge(mp, op) : $.unlink(op);
}
}
return mix;
};
$.unlink = function(object) {
var unlinked;
switch ($.type(object)) {
case 'object':
unlinked = {};
for ( var p in object)
unlinked[p] = $.unlink(object[p]);
break;
case 'array':
unlinked = [];
for ( var i = 0, l = object.length; i < l; i++)
unlinked[i] = $.unlink(object[i]);
break;
default:
return object;
}
return unlinked;
};
$.zip = function() {
if(arguments.length === 0) return [];
for(var j=0, ans=[], l=arguments.length, ml=arguments[0].length; j<ml; j++) {
for(var i=0, row=[]; i<l; i++) {
row.push(arguments[i][j]);
}
ans.push(row);
}
return ans;
};
/*
Method: rgbToHex
Converts an RGB array into a Hex string.
Parameters:
srcArray - (array) An array with R, G and B values
Example:
(start code js)
$jit.util.rgbToHex([255, 255, 255]); //'#ffffff'
(end code)
*/
$.rgbToHex = function(srcArray, array) {
if (srcArray.length < 3)
return null;
if (srcArray.length == 4 && srcArray[3] == 0 && !array)
return 'transparent';
var hex = [];
for ( var i = 0; i < 3; i++) {
var bit = (srcArray[i] - 0).toString(16);
hex.push(bit.length == 1 ? '0' + bit : bit);
}
return array ? hex : '#' + hex.join('');
};
/*
Method: hexToRgb
Converts an Hex color string into an RGB array.
Parameters:
hex - (string) A color hex string.
Example:
(start code js)
$jit.util.hexToRgb('#fff'); //[255, 255, 255]
(end code)
*/
$.hexToRgb = function(hex) {
if (hex.length != 7) {
hex = hex.match(/^#?(\w{1,2})(\w{1,2})(\w{1,2})$/);
hex.shift();
if (hex.length != 3)
return null;
var rgb = [];
for ( var i = 0; i < 3; i++) {
var value = hex[i];
if (value.length == 1)
value += value;
rgb.push(parseInt(value, 16));
}
return rgb;
} else {
hex = parseInt(hex.slice(1), 16);
return [ hex >> 16, hex >> 8 & 0xff, hex & 0xff ];
}
};
$.destroy = function(elem) {
$.clean(elem);
if (elem.parentNode)
elem.parentNode.removeChild(elem);
if (elem.clearAttributes)
elem.clearAttributes();
};
$.clean = function(elem) {
for (var ch = elem.childNodes, i = 0, l = ch.length; i < l; i++) {
$.destroy(ch[i]);
}
};
/*
Method: addEvent
Cross-browser add event listener.
( run in 0.759 second using v1.01-cache-2.11-cpan-39bf76dae61 )