{"version":3,"sources":["kendo.dataviz.treemap.js"],"names":["f","define","defined","value","UNDEFINED","round","precision","power","pow","math","p","limitValue","min","max","rad","degrees","DEG_TO_RAD","deg","radians","isNumber","val","isNaN","valueOrDefault","defaultValue","sqr","objectKey","object","key","parts","push","sort","join","hashKey","str","i","hash","length","charCodeAt","hashObject","arrayLimits","arr","MAX_NUM","MIN_NUM","arrayMin","arrayMax","sparseArrayMin","sparseArrayLimits","sparseArrayMax","n","isFinite","undefined","last","array","append","first","second","apply","renderTemplate","text","kendo","template","useWithBlock","paramName","renderAttr","name","renderAllAttr","attrs","output","renderStyle","renderSize","size","renderPos","pos","result","toHyphens","split","isTransparent","color","arabicToRoman","literals",1,10,100,2,20,200,3,30,300,4,40,400,5,50,500,6,60,600,7,70,700,8,80,800,9,90,900,1000,"values","roman","shift","romanToArabic","r","digits","prev","v","toLowerCase","x","l","c","d","m","charAt","memoize","cache","Object","create","id","arguments","this","ucs2decode","string","extra","counter","ucs2encode","map","String","fromCharCode","Math","window","deepExtend","PI","Number","MAX_VALUE","now","Date","getTime","util","drawing","dataviz","amd","a1","a2","a3","$","zeroSize","width","height","baseline","measureText","style","measureBox","TextMetrics","current","measure","loadFonts","fonts","callback","promises","document","font","load","e","logToConsole","Promise","all","then","doc","Class","LRUCache","extend","init","_size","_length","_map","put","lru","entry","_head","_tail","newer","older","get","defaultMeasureBox","options","_cache","_initOptions","baselineMarkerSize","box","styleKey","cacheKey","cachedResult","baselineMarker","_baselineMarker","cloneNode","appendChild","body","offsetWidth","offsetHeight","offsetTop","parentNode","removeChild","jQuery","encodeBase64","input","chr1","chr2","chr3","enc1","enc2","enc3","enc4","encodeUTF8","KEY_STR","inArray","ObserversMixin","observers","_observers","addObserver","element","removeObserver","index","splice","trigger","methodName","event","observer","idx","_suspended","optionsChange","geometryChange","suspend","resume","_observerField","field","mixins","getField","row","getter","colorsByLength","rgbColor","minRGBtoDecimal","rgbToDecimal","maxRGBtoDecimal","isDarker","colorBrightness","colors","colorByIndex","g","b","buildColorFromRGB","minColor","abs","maxColor","step","currentStep","decimalToRgb","replace","colorToRGB","rgbToHex","number","toString","toUpperCase","colorLength","substring","rgb","parseInt","brightness","sqrt","proxy","isArray","Widget","ui","HierarchicalDataSource","data","NS","CHANGE","DATA_BOUND","ITEM_CREATED","MOUSEOVER_NS","MOUSELEAVE_NS","TreeMap","destroy","empty","fn","call","wrapper","_initTheme","addClass","_setLayout","_originalOptions","_initDataSource","_attachEvents","notify","theme","autoBind","textField","valueField","colorField","events","that","themes","themeName","themeOptions","treeMap","on","_mouseover","_mouseleave","_resizeHandler","resize","onResize","type","_layout","SliceAndDice","_view","SliceAndDiceView","Squarified","SquarifiedView","dataSource","_dataChangeHandler","_onDataChange","bind","fetch","setDataSource","unbind","item","root","htmlSize","node","items","_getByUid","uid","children","Query","_sortForGrouping","_wrapItem","compute","coord","_setColors","render","_cleanItems","createRoot","outerWidth","outerHeight","_root","_colorIdx","angular","elements","find","colorRange","leafNodes","colorIdx","dataItem","hasChildren","_contentSize","view","renderHeight","wrap","level","pop","concat","attr","getByUid","findByUid","target","hasClass","_removeActiveState","removeClass","off","unbindResize","getSize","dimensions","_resize","rootElement","css","_resizeItems","child","childElement","titleSize","filter","setItemSize","setOptions","_setEvents","top","left","leaf","tree","layoutChildren","minimumSideValue","firstElement","tail","parentArea","totalArea","itemsArea","parseFloat","area","layoutHorizontal","slice","squarify","initElement","computeDim","newCoords","layoutLast","layoutRow","worstAspectRatio","dim","w","layoutV","layoutH","orientation","layoutVertical","layoutChange","areaSum","maxArea","minArea","rootCoord","newRootCoord","ans","_totalArea","total","offset","title","_clean","_getText","_createTitle","_compile","_createWrap","innerWidth","rootWrap","htmlElement","_createLeaf","_createTile","toggleClass","_tileColorBrightness","html","tile","_itemCoordinates","coordinates","_renderTemplate","titleTemplate","vertical","quotient","sliceAndDice","plugin"],"mappings":"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","file":"kendo.dataviz.treemap.min.js","sourcesContent":["/*!\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n*/\n(function (f, define) {\n define('util/main', ['kendo.core'], f);\n}(function () {\n (function () {\n var math = Math, kendo = window.kendo, deepExtend = kendo.deepExtend;\n var DEG_TO_RAD = math.PI / 180, MAX_NUM = Number.MAX_VALUE, MIN_NUM = -Number.MAX_VALUE, UNDEFINED = 'undefined';\n function defined(value) {\n return typeof value !== UNDEFINED;\n }\n function round(value, precision) {\n var power = pow(precision);\n return math.round(value * power) / power;\n }\n function pow(p) {\n if (p) {\n return math.pow(10, p);\n } else {\n return 1;\n }\n }\n function limitValue(value, min, max) {\n return math.max(math.min(value, max), min);\n }\n function rad(degrees) {\n return degrees * DEG_TO_RAD;\n }\n function deg(radians) {\n return radians / DEG_TO_RAD;\n }\n function isNumber(val) {\n return typeof val === 'number' && !isNaN(val);\n }\n function valueOrDefault(value, defaultValue) {\n return defined(value) ? value : defaultValue;\n }\n function sqr(value) {\n return value * value;\n }\n function objectKey(object) {\n var parts = [];\n for (var key in object) {\n parts.push(key + object[key]);\n }\n return parts.sort().join('');\n }\n function hashKey(str) {\n var hash = 2166136261;\n for (var i = 0; i < str.length; ++i) {\n hash += (hash << 1) + (hash << 4) + (hash << 7) + (hash << 8) + (hash << 24);\n hash ^= str.charCodeAt(i);\n }\n return hash >>> 0;\n }\n function hashObject(object) {\n return hashKey(objectKey(object));\n }\n var now = Date.now;\n if (!now) {\n now = function () {\n return new Date().getTime();\n };\n }\n function arrayLimits(arr) {\n var length = arr.length, i, min = MAX_NUM, max = MIN_NUM;\n for (i = 0; i < length; i++) {\n max = math.max(max, arr[i]);\n min = math.min(min, arr[i]);\n }\n return {\n min: min,\n max: max\n };\n }\n function arrayMin(arr) {\n return arrayLimits(arr).min;\n }\n function arrayMax(arr) {\n return arrayLimits(arr).max;\n }\n function sparseArrayMin(arr) {\n return sparseArrayLimits(arr).min;\n }\n function sparseArrayMax(arr) {\n return sparseArrayLimits(arr).max;\n }\n function sparseArrayLimits(arr) {\n var min = MAX_NUM, max = MIN_NUM;\n for (var i = 0, length = arr.length; i < length; i++) {\n var n = arr[i];\n if (n !== null && isFinite(n)) {\n min = math.min(min, n);\n max = math.max(max, n);\n }\n }\n return {\n min: min === MAX_NUM ? undefined : min,\n max: max === MIN_NUM ? undefined : max\n };\n }\n function last(array) {\n if (array) {\n return array[array.length - 1];\n }\n }\n function append(first, second) {\n first.push.apply(first, second);\n return first;\n }\n function renderTemplate(text) {\n return kendo.template(text, {\n useWithBlock: false,\n paramName: 'd'\n });\n }\n function renderAttr(name, value) {\n return defined(value) && value !== null ? ' ' + name + '=\\'' + value + '\\' ' : '';\n }\n function renderAllAttr(attrs) {\n var output = '';\n for (var i = 0; i < attrs.length; i++) {\n output += renderAttr(attrs[i][0], attrs[i][1]);\n }\n return output;\n }\n function renderStyle(attrs) {\n var output = '';\n for (var i = 0; i < attrs.length; i++) {\n var value = attrs[i][1];\n if (defined(value)) {\n output += attrs[i][0] + ':' + value + ';';\n }\n }\n if (output !== '') {\n return output;\n }\n }\n function renderSize(size) {\n if (typeof size !== 'string') {\n size += 'px';\n }\n return size;\n }\n function renderPos(pos) {\n var result = [];\n if (pos) {\n var parts = kendo.toHyphens(pos).split('-');\n for (var i = 0; i < parts.length; i++) {\n result.push('k-pos-' + parts[i]);\n }\n }\n return result.join(' ');\n }\n function isTransparent(color) {\n return color === '' || color === null || color === 'none' || color === 'transparent' || !defined(color);\n }\n function arabicToRoman(n) {\n var literals = {\n 1: 'i',\n 10: 'x',\n 100: 'c',\n 2: 'ii',\n 20: 'xx',\n 200: 'cc',\n 3: 'iii',\n 30: 'xxx',\n 300: 'ccc',\n 4: 'iv',\n 40: 'xl',\n 400: 'cd',\n 5: 'v',\n 50: 'l',\n 500: 'd',\n 6: 'vi',\n 60: 'lx',\n 600: 'dc',\n 7: 'vii',\n 70: 'lxx',\n 700: 'dcc',\n 8: 'viii',\n 80: 'lxxx',\n 800: 'dccc',\n 9: 'ix',\n 90: 'xc',\n 900: 'cm',\n 1000: 'm'\n };\n var values = [\n 1000,\n 900,\n 800,\n 700,\n 600,\n 500,\n 400,\n 300,\n 200,\n 100,\n 90,\n 80,\n 70,\n 60,\n 50,\n 40,\n 30,\n 20,\n 10,\n 9,\n 8,\n 7,\n 6,\n 5,\n 4,\n 3,\n 2,\n 1\n ];\n var roman = '';\n while (n > 0) {\n if (n < values[0]) {\n values.shift();\n } else {\n roman += literals[values[0]];\n n -= values[0];\n }\n }\n return roman;\n }\n function romanToArabic(r) {\n r = r.toLowerCase();\n var digits = {\n i: 1,\n v: 5,\n x: 10,\n l: 50,\n c: 100,\n d: 500,\n m: 1000\n };\n var value = 0, prev = 0;\n for (var i = 0; i < r.length; ++i) {\n var v = digits[r.charAt(i)];\n if (!v) {\n return null;\n }\n value += v;\n if (v > prev) {\n value -= 2 * prev;\n }\n prev = v;\n }\n return value;\n }\n function memoize(f) {\n var cache = Object.create(null);\n return function () {\n var id = '';\n for (var i = arguments.length; --i >= 0;) {\n id += ':' + arguments[i];\n }\n if (id in cache) {\n return cache[id];\n }\n return f.apply(this, arguments);\n };\n }\n function ucs2decode(string) {\n var output = [], counter = 0, length = string.length, value, extra;\n while (counter < length) {\n value = string.charCodeAt(counter++);\n if (value >= 55296 && value <= 56319 && counter < length) {\n extra = string.charCodeAt(counter++);\n if ((extra & 64512) == 56320) {\n output.push(((value & 1023) << 10) + (extra & 1023) + 65536);\n } else {\n output.push(value);\n counter--;\n }\n } else {\n output.push(value);\n }\n }\n return output;\n }\n function ucs2encode(array) {\n return array.map(function (value) {\n var output = '';\n if (value > 65535) {\n value -= 65536;\n output += String.fromCharCode(value >>> 10 & 1023 | 55296);\n value = 56320 | value & 1023;\n }\n output += String.fromCharCode(value);\n return output;\n }).join('');\n }\n deepExtend(kendo, {\n util: {\n MAX_NUM: MAX_NUM,\n MIN_NUM: MIN_NUM,\n append: append,\n arrayLimits: arrayLimits,\n arrayMin: arrayMin,\n arrayMax: arrayMax,\n defined: defined,\n deg: deg,\n hashKey: hashKey,\n hashObject: hashObject,\n isNumber: isNumber,\n isTransparent: isTransparent,\n last: last,\n limitValue: limitValue,\n now: now,\n objectKey: objectKey,\n round: round,\n rad: rad,\n renderAttr: renderAttr,\n renderAllAttr: renderAllAttr,\n renderPos: renderPos,\n renderSize: renderSize,\n renderStyle: renderStyle,\n renderTemplate: renderTemplate,\n sparseArrayLimits: sparseArrayLimits,\n sparseArrayMin: sparseArrayMin,\n sparseArrayMax: sparseArrayMax,\n sqr: sqr,\n valueOrDefault: valueOrDefault,\n romanToArabic: romanToArabic,\n arabicToRoman: arabicToRoman,\n memoize: memoize,\n ucs2encode: ucs2encode,\n ucs2decode: ucs2decode\n }\n });\n kendo.drawing.util = kendo.util;\n kendo.dataviz.util = kendo.util;\n }());\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('util/text-metrics', [\n 'kendo.core',\n 'util/main'\n ], f);\n}(function () {\n (function ($) {\n var doc = document, kendo = window.kendo, Class = kendo.Class, util = kendo.util, defined = util.defined;\n var LRUCache = Class.extend({\n init: function (size) {\n this._size = size;\n this._length = 0;\n this._map = {};\n },\n put: function (key, value) {\n var lru = this, map = lru._map, entry = {\n key: key,\n value: value\n };\n map[key] = entry;\n if (!lru._head) {\n lru._head = lru._tail = entry;\n } else {\n lru._tail.newer = entry;\n entry.older = lru._tail;\n lru._tail = entry;\n }\n if (lru._length >= lru._size) {\n map[lru._head.key] = null;\n lru._head = lru._head.newer;\n lru._head.older = null;\n } else {\n lru._length++;\n }\n },\n get: function (key) {\n var lru = this, entry = lru._map[key];\n if (entry) {\n if (entry === lru._head && entry !== lru._tail) {\n lru._head = entry.newer;\n lru._head.older = null;\n }\n if (entry !== lru._tail) {\n if (entry.older) {\n entry.older.newer = entry.newer;\n entry.newer.older = entry.older;\n }\n entry.older = lru._tail;\n entry.newer = null;\n lru._tail.newer = entry;\n lru._tail = entry;\n }\n return entry.value;\n }\n }\n });\n var defaultMeasureBox = $('
')[0];\n function zeroSize() {\n return {\n width: 0,\n height: 0,\n baseline: 0\n };\n }\n var TextMetrics = Class.extend({\n init: function (options) {\n this._cache = new LRUCache(1000);\n this._initOptions(options);\n },\n options: { baselineMarkerSize: 1 },\n measure: function (text, style, box) {\n if (!text) {\n return zeroSize();\n }\n var styleKey = util.objectKey(style), cacheKey = util.hashKey(text + styleKey), cachedResult = this._cache.get(cacheKey);\n if (cachedResult) {\n return cachedResult;\n }\n var size = zeroSize();\n var measureBox = box ? box : defaultMeasureBox;\n var baselineMarker = this._baselineMarker().cloneNode(false);\n for (var key in style) {\n var value = style[key];\n if (defined(value)) {\n measureBox.style[key] = value;\n }\n }\n $(measureBox).text(text);\n measureBox.appendChild(baselineMarker);\n doc.body.appendChild(measureBox);\n if ((text + '').length) {\n size.width = measureBox.offsetWidth - this.options.baselineMarkerSize;\n size.height = measureBox.offsetHeight;\n size.baseline = baselineMarker.offsetTop + this.options.baselineMarkerSize;\n }\n if (size.width > 0 && size.height > 0) {\n this._cache.put(cacheKey, size);\n }\n measureBox.parentNode.removeChild(measureBox);\n return size;\n },\n _baselineMarker: function () {\n return $('')[0];\n }\n });\n TextMetrics.current = new TextMetrics();\n function measureText(text, style, measureBox) {\n return TextMetrics.current.measure(text, style, measureBox);\n }\n function loadFonts(fonts, callback) {\n var promises = [];\n if (fonts.length > 0 && document.fonts) {\n try {\n promises = fonts.map(function (font) {\n return document.fonts.load(font);\n });\n } catch (e) {\n kendo.logToConsole(e);\n }\n Promise.all(promises).then(callback, callback);\n } else {\n callback();\n }\n }\n kendo.util.TextMetrics = TextMetrics;\n kendo.util.LRUCache = LRUCache;\n kendo.util.loadFonts = loadFonts;\n kendo.util.measureText = measureText;\n }(window.kendo.jQuery));\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('util/base64', ['util/main'], f);\n}(function () {\n (function () {\n var kendo = window.kendo, deepExtend = kendo.deepExtend, fromCharCode = String.fromCharCode;\n var KEY_STR = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';\n function encodeBase64(input) {\n var output = '';\n var chr1, chr2, chr3, enc1, enc2, enc3, enc4;\n var i = 0;\n input = encodeUTF8(input);\n while (i < input.length) {\n chr1 = input.charCodeAt(i++);\n chr2 = input.charCodeAt(i++);\n chr3 = input.charCodeAt(i++);\n enc1 = chr1 >> 2;\n enc2 = (chr1 & 3) << 4 | chr2 >> 4;\n enc3 = (chr2 & 15) << 2 | chr3 >> 6;\n enc4 = chr3 & 63;\n if (isNaN(chr2)) {\n enc3 = enc4 = 64;\n } else if (isNaN(chr3)) {\n enc4 = 64;\n }\n output = output + KEY_STR.charAt(enc1) + KEY_STR.charAt(enc2) + KEY_STR.charAt(enc3) + KEY_STR.charAt(enc4);\n }\n return output;\n }\n function encodeUTF8(input) {\n var output = '';\n for (var i = 0; i < input.length; i++) {\n var c = input.charCodeAt(i);\n if (c < 128) {\n output += fromCharCode(c);\n } else if (c < 2048) {\n output += fromCharCode(192 | c >>> 6);\n output += fromCharCode(128 | c & 63);\n } else if (c < 65536) {\n output += fromCharCode(224 | c >>> 12);\n output += fromCharCode(128 | c >>> 6 & 63);\n output += fromCharCode(128 | c & 63);\n }\n }\n return output;\n }\n deepExtend(kendo.util, {\n encodeBase64: encodeBase64,\n encodeUTF8: encodeUTF8\n });\n }());\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('mixins/observers', ['kendo.core'], f);\n}(function () {\n (function ($) {\n var math = Math, kendo = window.kendo, deepExtend = kendo.deepExtend, inArray = $.inArray;\n var ObserversMixin = {\n observers: function () {\n this._observers = this._observers || [];\n return this._observers;\n },\n addObserver: function (element) {\n if (!this._observers) {\n this._observers = [element];\n } else {\n this._observers.push(element);\n }\n return this;\n },\n removeObserver: function (element) {\n var observers = this.observers();\n var index = inArray(element, observers);\n if (index != -1) {\n observers.splice(index, 1);\n }\n return this;\n },\n trigger: function (methodName, event) {\n var observers = this._observers;\n var observer;\n var idx;\n if (observers && !this._suspended) {\n for (idx = 0; idx < observers.length; idx++) {\n observer = observers[idx];\n if (observer[methodName]) {\n observer[methodName](event);\n }\n }\n }\n return this;\n },\n optionsChange: function (e) {\n e = e || {};\n e.element = this;\n this.trigger('optionsChange', e);\n },\n geometryChange: function () {\n this.trigger('geometryChange', { element: this });\n },\n suspend: function () {\n this._suspended = (this._suspended || 0) + 1;\n return this;\n },\n resume: function () {\n this._suspended = math.max((this._suspended || 0) - 1, 0);\n return this;\n },\n _observerField: function (field, value) {\n if (this[field]) {\n this[field].removeObserver(this);\n }\n this[field] = value;\n value.addObserver(this);\n }\n };\n deepExtend(kendo, { mixins: { ObserversMixin: ObserversMixin } });\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));\n(function (f, define) {\n define('kendo.dataviz.treemap', [\n 'kendo.data',\n 'kendo.userevents',\n 'kendo.dataviz.themes'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'dataviz.treeMap',\n name: 'TreeMap',\n category: 'dataviz',\n description: 'The Kendo DataViz TreeMap',\n depends: [\n 'data',\n 'userevents',\n 'dataviz.themes'\n ]\n };\n (function ($, undefined) {\n var math = Math, proxy = $.proxy, isArray = $.isArray, kendo = window.kendo, Class = kendo.Class, Widget = kendo.ui.Widget, template = kendo.template, deepExtend = kendo.deepExtend, HierarchicalDataSource = kendo.data.HierarchicalDataSource, getter = kendo.getter, dataviz = kendo.dataviz;\n var NS = '.kendoTreeMap', CHANGE = 'change', DATA_BOUND = 'dataBound', ITEM_CREATED = 'itemCreated', MAX_VALUE = Number.MAX_VALUE, MOUSEOVER_NS = 'mouseover' + NS, MOUSELEAVE_NS = 'mouseleave' + NS, UNDEFINED = 'undefined';\n var TreeMap = Widget.extend({\n init: function (element, options) {\n kendo.destroy(element);\n $(element).empty();\n Widget.fn.init.call(this, element, options);\n this.wrapper = this.element;\n this._initTheme(this.options);\n this.element.addClass('k-widget k-treemap');\n this._setLayout();\n this._originalOptions = deepExtend({}, this.options);\n this._initDataSource();\n this._attachEvents();\n kendo.notify(this, dataviz.ui);\n },\n options: {\n name: 'TreeMap',\n theme: 'default',\n autoBind: true,\n textField: 'text',\n valueField: 'value',\n colorField: 'color'\n },\n events: [\n DATA_BOUND,\n ITEM_CREATED\n ],\n _initTheme: function (options) {\n var that = this, themes = dataviz.ui.themes || {}, themeName = ((options || {}).theme || '').toLowerCase(), themeOptions = (themes[themeName] || {}).treeMap;\n that.options = deepExtend({}, themeOptions, options);\n },\n _attachEvents: function () {\n this.element.on(MOUSEOVER_NS, proxy(this._mouseover, this)).on(MOUSELEAVE_NS, proxy(this._mouseleave, this));\n this._resizeHandler = proxy(this.resize, this, false);\n kendo.onResize(this._resizeHandler);\n },\n _setLayout: function () {\n if (this.options.type === 'horizontal') {\n this._layout = new SliceAndDice(false);\n this._view = new SliceAndDiceView(this, this.options);\n } else if (this.options.type === 'vertical') {\n this._layout = new SliceAndDice(true);\n this._view = new SliceAndDiceView(this, this.options);\n } else {\n this._layout = new Squarified();\n this._view = new SquarifiedView(this, this.options);\n }\n },\n _initDataSource: function () {\n var that = this, options = that.options, dataSource = options.dataSource;\n that._dataChangeHandler = proxy(that._onDataChange, that);\n that.dataSource = HierarchicalDataSource.create(dataSource).bind(CHANGE, that._dataChangeHandler);\n if (dataSource) {\n if (that.options.autoBind) {\n that.dataSource.fetch();\n }\n }\n },\n setDataSource: function (dataSource) {\n var that = this;\n that.dataSource.unbind(CHANGE, that._dataChangeHandler);\n that.dataSource = dataSource.bind(CHANGE, that._dataChangeHandler);\n if (dataSource) {\n if (that.options.autoBind) {\n that.dataSource.fetch();\n }\n }\n },\n _onDataChange: function (e) {\n var node = e.node;\n var items = e.items;\n var options = this.options;\n var item, i;\n if (!node) {\n this._cleanItems();\n this.element.empty();\n item = this._wrapItem(items[0]);\n this._layout.createRoot(item, this.element.outerWidth(), this.element.outerHeight(), this.options.type === 'vertical');\n this._view.createRoot(item);\n this._root = item;\n this._colorIdx = 0;\n } else {\n if (items.length) {\n var root = this._getByUid(node.uid);\n root.children = [];\n items = new kendo.data.Query(items)._sortForGrouping(options.valueField, 'desc');\n for (i = 0; i < items.length; i++) {\n item = items[i];\n root.children.push(this._wrapItem(item));\n }\n var htmlSize = this._view.htmlSize(root);\n this._layout.compute(root.children, root.coord, htmlSize);\n this._setColors(root.children);\n this._view.render(root);\n }\n }\n for (i = 0; i < items.length; i++) {\n items[i].load();\n }\n if (node) {\n this.trigger(DATA_BOUND, { node: node });\n }\n },\n _cleanItems: function () {\n var that = this;\n that.angular('cleanup', function () {\n return { elements: that.element.find('.k-leaf div,.k-treemap-title,.k-treemap-title-vertical') };\n });\n },\n _setColors: function (items) {\n var colors = this.options.colors;\n var colorIdx = this._colorIdx;\n var color = colors[colorIdx % colors.length];\n var colorRange, item;\n if (isArray(color)) {\n colorRange = colorsByLength(color[0], color[1], items.length);\n }\n var leafNodes = false;\n for (var i = 0; i < items.length; i++) {\n item = items[i];\n if (!defined(item.color)) {\n if (colorRange) {\n item.color = colorRange[i];\n } else {\n item.color = color;\n }\n }\n if (!item.dataItem.hasChildren) {\n leafNodes = true;\n }\n }\n if (leafNodes) {\n this._colorIdx++;\n }\n },\n _contentSize: function (root) {\n this.view.renderHeight(root);\n },\n _wrapItem: function (item) {\n var wrap = {};\n if (defined(this.options.valueField)) {\n wrap.value = getField(this.options.valueField, item);\n }\n if (defined(this.options.colorField)) {\n wrap.color = getField(this.options.colorField, item);\n }\n if (defined(this.options.textField)) {\n wrap.text = getField(this.options.textField, item);\n }\n wrap.level = item.level();\n wrap.dataItem = item;\n return wrap;\n },\n _getByUid: function (uid) {\n var items = [this._root];\n var item;\n while (items.length) {\n item = items.pop();\n if (item.dataItem.uid === uid) {\n return item;\n }\n if (item.children) {\n items = items.concat(item.children);\n }\n }\n },\n dataItem: function (node) {\n var uid = $(node).attr(kendo.attr('uid')), dataSource = this.dataSource;\n return dataSource && dataSource.getByUid(uid);\n },\n findByUid: function (uid) {\n return this.element.find('.k-treemap-tile[' + kendo.attr('uid') + '=\\'' + uid + '\\']');\n },\n _mouseover: function (e) {\n var target = $(e.target);\n if (target.hasClass('k-leaf')) {\n this._removeActiveState();\n target.removeClass('k-state-hover').addClass('k-state-hover');\n }\n },\n _removeActiveState: function () {\n this.element.find('.k-state-hover').removeClass('k-state-hover');\n },\n _mouseleave: function () {\n this._removeActiveState();\n },\n destroy: function () {\n Widget.fn.destroy.call(this);\n this.element.off(NS);\n if (this.dataSource) {\n this.dataSource.unbind(CHANGE, this._dataChangeHandler);\n }\n this._root = null;\n kendo.unbindResize(this._resizeHandler);\n kendo.destroy(this.element);\n },\n items: function () {\n return $();\n },\n getSize: function () {\n return kendo.dimensions(this.element);\n },\n _resize: function () {\n var root = this._root;\n if (root) {\n var element = this.element;\n var rootElement = element.children();\n root.coord.width = element.outerWidth();\n root.coord.height = element.outerHeight();\n rootElement.css({\n width: root.coord.width,\n height: root.coord.height\n });\n this._resizeItems(root, rootElement);\n }\n },\n _resizeItems: function (root, element) {\n if (root.children && root.children.length) {\n var elements = element.children('.k-treemap-wrap').children();\n var child, childElement;\n this._layout.compute(root.children, root.coord, { text: this._view.titleSize(root, element) });\n for (var idx = 0; idx < root.children.length; idx++) {\n child = root.children[idx];\n childElement = elements.filter('[' + kendo.attr('uid') + '=\\'' + child.dataItem.uid + '\\']');\n this._view.setItemSize(child, childElement);\n this._resizeItems(child, childElement);\n }\n }\n },\n setOptions: function (options) {\n var dataSource = options.dataSource;\n options.dataSource = undefined;\n this._originalOptions = deepExtend(this._originalOptions, options);\n this.options = deepExtend({}, this._originalOptions);\n this._setLayout();\n this._initTheme(this.options);\n Widget.fn._setEvents.call(this, options);\n if (dataSource) {\n this.setDataSource(HierarchicalDataSource.create(dataSource));\n }\n if (this.options.autoBind) {\n this.dataSource.fetch();\n }\n }\n });\n var Squarified = Class.extend({\n createRoot: function (root, width, height) {\n root.coord = {\n width: width,\n height: height,\n top: 0,\n left: 0\n };\n },\n leaf: function (tree) {\n return !tree.children;\n },\n layoutChildren: function (items, coord) {\n var parentArea = coord.width * coord.height;\n var totalArea = 0, itemsArea = [], i;\n for (i = 0; i < items.length; i++) {\n itemsArea[i] = parseFloat(items[i].value);\n totalArea += itemsArea[i];\n }\n for (i = 0; i < itemsArea.length; i++) {\n items[i].area = parentArea * itemsArea[i] / totalArea;\n }\n var minimumSideValue = this.layoutHorizontal() ? coord.height : coord.width;\n var firstElement = [items[0]];\n var tail = items.slice(1);\n this.squarify(tail, firstElement, minimumSideValue, coord);\n },\n squarify: function (tail, initElement, width, coord) {\n this.computeDim(tail, initElement, width, coord);\n },\n computeDim: function (tail, initElement, width, coord) {\n if (tail.length + initElement.length == 1) {\n var element = tail.length == 1 ? tail : initElement;\n this.layoutLast(element, width, coord);\n return;\n }\n if (tail.length >= 2 && initElement.length === 0) {\n initElement = [tail[0]];\n tail = tail.slice(1);\n }\n if (tail.length === 0) {\n if (initElement.length > 0) {\n this.layoutRow(initElement, width, coord);\n }\n return;\n }\n var firstElement = tail[0];\n if (this.worstAspectRatio(initElement, width) >= this.worstAspectRatio([firstElement].concat(initElement), width)) {\n this.computeDim(tail.slice(1), initElement.concat([firstElement]), width, coord);\n } else {\n var newCoords = this.layoutRow(initElement, width, coord);\n this.computeDim(tail, [], newCoords.dim, newCoords);\n }\n },\n layoutLast: function (items, w, coord) {\n items[0].coord = coord;\n },\n layoutRow: function (items, width, coord) {\n if (this.layoutHorizontal()) {\n return this.layoutV(items, width, coord);\n } else {\n return this.layoutH(items, width, coord);\n }\n },\n orientation: 'h',\n layoutVertical: function () {\n return this.orientation === 'v';\n },\n layoutHorizontal: function () {\n return this.orientation === 'h';\n },\n layoutChange: function () {\n this.orientation = this.layoutVertical() ? 'h' : 'v';\n },\n worstAspectRatio: function (items, width) {\n if (!items || items.length === 0) {\n return MAX_VALUE;\n }\n var areaSum = 0, maxArea = 0, minArea = MAX_VALUE;\n for (var i = 0; i < items.length; i++) {\n var area = items[i].area;\n areaSum += area;\n minArea = minArea < area ? minArea : area;\n maxArea = maxArea > area ? maxArea : area;\n }\n return math.max(width * width * maxArea / (areaSum * areaSum), areaSum * areaSum / (width * width * minArea));\n },\n compute: function (children, rootCoord, htmlSize) {\n if (!(rootCoord.width >= rootCoord.height && this.layoutHorizontal())) {\n this.layoutChange();\n }\n if (children && children.length > 0) {\n var newRootCoord = {\n width: rootCoord.width,\n height: rootCoord.height - htmlSize.text,\n top: 0,\n left: 0\n };\n this.layoutChildren(children, newRootCoord);\n }\n },\n layoutV: function (items, width, coord) {\n var totalArea = this._totalArea(items), top = 0;\n width = round(totalArea / width);\n for (var i = 0; i < items.length; i++) {\n var height = round(items[i].area / width);\n items[i].coord = {\n height: height,\n width: width,\n top: coord.top + top,\n left: coord.left\n };\n top += height;\n }\n var ans = {\n height: coord.height,\n width: coord.width - width,\n top: coord.top,\n left: coord.left + width\n };\n ans.dim = math.min(ans.width, ans.height);\n if (ans.dim != ans.height) {\n this.layoutChange();\n }\n return ans;\n },\n layoutH: function (items, width, coord) {\n var totalArea = this._totalArea(items);\n var height = round(totalArea / width), top = coord.top, left = 0;\n for (var i = 0; i < items.length; i++) {\n items[i].coord = {\n height: height,\n width: round(items[i].area / height),\n top: top,\n left: coord.left + left\n };\n left += items[i].coord.width;\n }\n var ans = {\n height: coord.height - height,\n width: coord.width,\n top: coord.top + height,\n left: coord.left\n };\n ans.dim = math.min(ans.width, ans.height);\n if (ans.dim != ans.width) {\n this.layoutChange();\n }\n return ans;\n },\n _totalArea: function (items) {\n var total = 0;\n for (var i = 0; i < items.length; i++) {\n total += items[i].area;\n }\n return total;\n }\n });\n var SquarifiedView = Class.extend({\n init: function (treeMap, options) {\n this.options = deepExtend({}, this.options, options);\n this.treeMap = treeMap;\n this.element = $(treeMap.element);\n this.offset = 0;\n },\n titleSize: function (item, element) {\n var text = element.children('.k-treemap-title');\n return text.height();\n },\n htmlSize: function (root) {\n var rootElement = this._getByUid(root.dataItem.uid);\n var htmlSize = { text: 0 };\n if (root.children) {\n this._clean(rootElement);\n var text = this._getText(root);\n if (text) {\n var title = this._createTitle(root);\n rootElement.append(title);\n this._compile(title, root.dataItem);\n htmlSize.text = title.height();\n }\n rootElement.append(this._createWrap());\n this.offset = (rootElement.outerWidth() - rootElement.innerWidth()) / 2;\n }\n return htmlSize;\n },\n _compile: function (element, dataItem) {\n this.treeMap.angular('compile', function () {\n return {\n elements: element,\n data: [{ dataItem: dataItem }]\n };\n });\n },\n _getByUid: function (uid) {\n return this.element.find('.k-treemap-tile[' + kendo.attr('uid') + '=\\'' + uid + '\\']');\n },\n render: function (root) {\n var rootElement = this._getByUid(root.dataItem.uid);\n var children = root.children;\n if (children) {\n var rootWrap = rootElement.find('.k-treemap-wrap');\n for (var i = 0; i < children.length; i++) {\n var leaf = children[i];\n var htmlElement = this._createLeaf(leaf);\n rootWrap.append(htmlElement);\n this._compile(htmlElement.children(), leaf.dataItem);\n this.treeMap.trigger(ITEM_CREATED, { element: htmlElement });\n }\n }\n },\n createRoot: function (root) {\n var htmlElement = this._createLeaf(root);\n this.element.append(htmlElement);\n this._compile(htmlElement.children(), root.dataItem);\n this.treeMap.trigger(ITEM_CREATED, { element: htmlElement });\n },\n _clean: function (root) {\n this.treeMap.angular('cleanup', function () {\n return { elements: root.children(':not(.k-treemap-wrap)') };\n });\n root.css('background-color', '');\n root.removeClass('k-leaf');\n root.removeClass('k-inverse');\n root.empty();\n },\n _createLeaf: function (item) {\n return this._createTile(item).css('background-color', item.color).addClass('k-leaf').toggleClass('k-inverse', this._tileColorBrightness(item) > 180).append($('').html(this._getText(item)));\n },\n _createTile: function (item) {\n var tile = $('');\n this.setItemSize(item, tile);\n if (defined(item.dataItem) && defined(item.dataItem.uid)) {\n tile.attr(kendo.attr('uid'), item.dataItem.uid);\n }\n return tile;\n },\n _itemCoordinates: function (item) {\n var coordinates = {\n width: item.coord.width,\n height: item.coord.height,\n left: item.coord.left,\n top: item.coord.top\n };\n if (coordinates.left && this.offset) {\n coordinates.width += this.offset * 2;\n } else {\n coordinates.width += this.offset;\n }\n if (coordinates.top) {\n coordinates.height += this.offset * 2;\n } else {\n coordinates.height += this.offset;\n }\n return coordinates;\n },\n setItemSize: function (item, element) {\n var coordinates = this._itemCoordinates(item);\n element.css({\n width: coordinates.width,\n height: coordinates.height,\n left: coordinates.left,\n top: coordinates.top\n });\n },\n _getText: function (item) {\n var text = item.text;\n if (this.options.template) {\n text = this._renderTemplate(item);\n }\n return text;\n },\n _renderTemplate: function (item) {\n var titleTemplate = template(this.options.template);\n return titleTemplate({\n dataItem: item.dataItem,\n text: item.text\n });\n },\n _createTitle: function (item) {\n return $('').append($('').html(this._getText(item)));\n },\n _createWrap: function () {\n return $('');\n },\n _tileColorBrightness: function (item) {\n return colorBrightness(item.color);\n }\n });\n var SliceAndDice = Class.extend({\n createRoot: function (root, width, height, vertical) {\n root.coord = {\n width: width,\n height: height,\n top: 0,\n left: 0\n };\n root.vertical = vertical;\n },\n init: function (vertical) {\n this.vertical = vertical;\n this.quotient = vertical ? 1 : 0;\n },\n compute: function (children, rootCoord, htmlSize) {\n if (children.length > 0) {\n var width = rootCoord.width;\n var height = rootCoord.height;\n if (this.vertical) {\n height -= htmlSize.text;\n } else {\n width -= htmlSize.text;\n }\n var newRootCoord = {\n width: width,\n height: height,\n top: 0,\n left: 0\n };\n this.layoutChildren(children, newRootCoord);\n }\n },\n layoutChildren: function (items, coord) {\n var parentArea = coord.width * coord.height;\n var totalArea = 0;\n var itemsArea = [];\n var i;\n for (i = 0; i < items.length; i++) {\n var item = items[i];\n itemsArea[i] = parseFloat(items[i].value);\n totalArea += itemsArea[i];\n item.vertical = this.vertical;\n }\n for (i = 0; i < itemsArea.length; i++) {\n items[i].area = parentArea * itemsArea[i] / totalArea;\n }\n this.sliceAndDice(items, coord);\n },\n sliceAndDice: function (items, coord) {\n var totalArea = this._totalArea(items);\n if (items[0].level % 2 === this.quotient) {\n this.layoutHorizontal(items, coord, totalArea);\n } else {\n this.layoutVertical(items, coord, totalArea);\n }\n },\n layoutHorizontal: function (items, coord, totalArea) {\n var left = 0;\n for (var i = 0; i < items.length; i++) {\n var item = items[i];\n var width = item.area / (totalArea / coord.width);\n item.coord = {\n height: coord.height,\n width: width,\n top: coord.top,\n left: coord.left + left\n };\n left += width;\n }\n },\n layoutVertical: function (items, coord, totalArea) {\n var top = 0;\n for (var i = 0; i < items.length; i++) {\n var item = items[i];\n var height = item.area / (totalArea / coord.height);\n item.coord = {\n height: height,\n width: coord.width,\n top: coord.top + top,\n left: coord.left\n };\n top += height;\n }\n },\n _totalArea: function (items) {\n var total = 0;\n for (var i = 0; i < items.length; i++) {\n total += items[i].area;\n }\n return total;\n }\n });\n var SliceAndDiceView = SquarifiedView.extend({\n htmlSize: function (root) {\n var rootElement = this._getByUid(root.dataItem.uid);\n var htmlSize = {\n text: 0,\n offset: 0\n };\n if (root.children) {\n this._clean(rootElement);\n var text = this._getText(root);\n if (text) {\n var title = this._createTitle(root);\n rootElement.append(title);\n this._compile(title, root.dataItem);\n if (root.vertical) {\n htmlSize.text = title.height();\n } else {\n htmlSize.text = title.width();\n }\n }\n rootElement.append(this._createWrap());\n this.offset = (rootElement.outerWidth() - rootElement.innerWidth()) / 2;\n }\n return htmlSize;\n },\n titleSize: function (item, element) {\n var size;\n if (item.vertical) {\n size = element.children('.k-treemap-title').height();\n } else {\n size = element.children('.k-treemap-title-vertical').width();\n }\n return size;\n },\n _createTitle: function (item) {\n var title;\n if (item.vertical) {\n title = $('');\n } else {\n title = $('');\n }\n return title.append($('').html(this._getText(item)));\n }\n });\n function getField(field, row) {\n if (row === null) {\n return row;\n }\n var get = getter(field, true);\n return get(row);\n }\n function defined(value) {\n return typeof value !== UNDEFINED;\n }\n function colorsByLength(min, max, length) {\n var minRGBtoDecimal = rgbToDecimal(min);\n var maxRGBtoDecimal = rgbToDecimal(max);\n var isDarker = colorBrightness(min) - colorBrightness(max) < 0;\n var colors = [];\n colors.push(min);\n for (var i = 0; i < length; i++) {\n var rgbColor = {\n r: colorByIndex(minRGBtoDecimal.r, maxRGBtoDecimal.r, i, length, isDarker),\n g: colorByIndex(minRGBtoDecimal.g, maxRGBtoDecimal.g, i, length, isDarker),\n b: colorByIndex(minRGBtoDecimal.b, maxRGBtoDecimal.b, i, length, isDarker)\n };\n colors.push(buildColorFromRGB(rgbColor));\n }\n colors.push(max);\n return colors;\n }\n function colorByIndex(min, max, index, length, isDarker) {\n var minColor = math.min(math.abs(min), math.abs(max));\n var maxColor = math.max(math.abs(min), math.abs(max));\n var step = (maxColor - minColor) / (length + 1);\n var currentStep = step * (index + 1);\n var color;\n if (isDarker) {\n color = minColor + currentStep;\n } else {\n color = maxColor - currentStep;\n }\n return color;\n }\n function buildColorFromRGB(color) {\n return '#' + decimalToRgb(color.r) + decimalToRgb(color.g) + decimalToRgb(color.b);\n }\n function rgbToDecimal(color) {\n color = color.replace('#', '');\n var rgbColor = colorToRGB(color);\n return {\n r: rgbToHex(rgbColor.r),\n g: rgbToHex(rgbColor.g),\n b: rgbToHex(rgbColor.b)\n };\n }\n function decimalToRgb(number) {\n var result = math.round(number).toString(16).toUpperCase();\n if (result.length === 1) {\n result = '0' + result;\n }\n return result;\n }\n function colorToRGB(color) {\n var colorLength = color.length;\n var rgbColor = {};\n if (colorLength === 3) {\n rgbColor.r = color[0];\n rgbColor.g = color[1];\n rgbColor.b = color[2];\n } else {\n rgbColor.r = color.substring(0, 2);\n rgbColor.g = color.substring(2, 4);\n rgbColor.b = color.substring(4, 6);\n }\n return rgbColor;\n }\n function rgbToHex(rgb) {\n return parseInt(rgb.toString(16), 16);\n }\n function colorBrightness(color) {\n var brightness = 0;\n if (color) {\n color = rgbToDecimal(color);\n brightness = math.sqrt(0.241 * color.r * color.r + 0.691 * color.g * color.g + 0.068 * color.b * color.b);\n }\n return brightness;\n }\n function round(value) {\n var power = math.pow(10, 4);\n return math.round(value * power) / power;\n }\n dataviz.ui.plugin(TreeMap);\n }(window.kendo.jQuery));\n return window.kendo;\n}, typeof define == 'function' && define.amd ? define : function (a1, a2, a3) {\n (a3 || a2)();\n}));"],"sourceRoot":"/source/"}