diff --git a/source/Ox.UI/js/Core/UI.js b/source/Ox.UI/js/Core/UI.js new file mode 100644 index 00000000..7ac50e11 --- /dev/null +++ b/source/Ox.UI/js/Core/UI.js @@ -0,0 +1,80 @@ +'use strict'; + +/*@ +Ox.getImageURL Returns the URL of an Ox.UI image + (name[, color[, theme]]) -> Image URL + name Image name + color Color name or RGB values + theme Theme name +@*/ +Ox.getImageURL = Ox.cache(function(name, color, theme) { + var colorName, + image = images[name], + themeData, + type = Ox.toDashes(name).split('-')[0]; + color = color || 'default'; + theme = theme || Ox.Theme(); + themeData = Ox.Theme.getThemeData(theme); + if (type == 'symbol') { + if (Ox.isString(color)) { + colorName = color; + color = themeData[ + 'symbol' + color[0].toUpperCase() + color.slice(1) + 'Color' + ]; + } + image = image.replace(/#808080/g, '#' + Ox.toHex(color)); + } + Ox.forEach(colors[type], function(name, hex) { + image = image.replace( + new RegExp(hex, 'g'), + '$' + Ox.toHex(themeData[name]) + ); + }); + image = image.replace(/\$/g, '#'); + return 'data:image/svg+xml;base64,' + btoa( + image + '' + ); +}, { + key: function(args) { + args[1] = args[1] || 'default'; + args[2] = args[2] || Ox.Theme(); + return JSON.stringify(args); + } +}); + +//@ Ox.getOxElement Returns the Ox.Element of a DOM element, or `undefined` +Ox.getOxElement = function(element) { + return Ox.elements[$(element).data('oxid')]; +}; + +//@ Ox.isOxElement Returns `true` if a DOM element is an Ox.Element +Ox.isOxElement = Ox.UI.isOxElement = function(element) { + return !!$(element).data('oxid'); +}; + +//@ Ox.SCOLLBAR_SIZE size of scrollbars +Ox.SCROLLBAR_SIZE = Ox.UI.SCROLLBAR_SIZE = $.browser.webkit ? 8 : (function() { + var inner = Ox.$('

').css({ + height: '200px', + width: '100%' + }), + outer = Ox.$('

').css({ + height: '150px', + left: 0, + overflow: 'hidden', + position: 'absolute', + top: 0, + visibility: 'hidden', + width: '200px' + }).append(inner).appendTo($('body')), + width = inner[0].offsetWidth; + outer.css({overflow: 'scroll'}); + width = 1 + width - (inner[0].offsetWidth == width + ? outer[0].clientWidth : inner[0].offsetWidth); + outer.remove(); + return width; +})(); \ No newline at end of file