{"version":3,"sources":["kendo.dataviz.chart.funnel.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","FunnelSegment","isFn","isFunction","draw","geom","geometry","Color","ChartElement","PieChartMixin","PlotAreaBase","PlotAreaFactory","Point2D","Box2D","SeriesBinder","TextBox","autoFormat","evalOptions","seriesTotal","CATEGORY","COLOR","FUNNEL","VALUE","BLACK","WHITE","FunnelPlotArea","render","plotArea","series","createFunnelChart","firstSeries","funnelChart","FunnelChart","legend","neckRatio","dynamicHeight","dynamicSlope","segmentSpacing","highlight","appendChart","chart","pane","fn","call","items","legendItems","points","labels","visible","align","position","formatPointValue","point","format","pointData","fields","total","segment","label","colors","seriesColors","colorsCount","data","bindPoint","valueFields","owner","category","dataItem","percentage","abs","visibleInLegend","createSegment","createLabel","evalSegmentOptions","defaults","_defaults","excluded","seriesOptions","createLegendItem","textBox","labelTemplate","brightnessValue","percBrightness","vAlign","labelPadding","padding","left","right","reflow","chartBox","lastUpperSide","offset","firstSegment","maxSegment","nextSegment","nextPercentage","topMostWidth","finalNarrow","segments","count","decreasingWidth","clone","unpad","previousHeight","previousOffset","totalHeight","each","Point","x1","y1","segmentOptions","border","children","y","x2","createVisual","visual","createPath","path","Path","fromPoints","fill","opacity","stroke","close","createHighlight","highlightVisual","highlightVisualArgs","highlightOverlay","view","opt","calcOptions","hlOptions","strokeOpacity","strokeWidth","fillOpacity","createPolyline","tooltipAnchor","tooltipWidth","center","formatValue","PointEventsMixin","register"],"mappings":"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","file":"kendo.dataviz.chart.funnel.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.chart.funnel', [\n 'kendo.dataviz.chart',\n 'kendo.drawing'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'dataviz.chart.funnel',\n name: 'Funnel Chart',\n category: 'dataviz',\n depends: ['dataviz.chart'],\n hidden: true\n };\n (function ($, undefined) {\n var kendo = window.kendo, deepExtend = kendo.deepExtend, extend = $.extend, isFn = kendo.isFunction, template = kendo.template, util = kendo.util, append = util.append, draw = kendo.drawing, geom = kendo.geometry, dataviz = kendo.dataviz, Color = kendo.drawing.Color, ChartElement = dataviz.ChartElement, PieChartMixin = dataviz.PieChartMixin, PlotAreaBase = dataviz.PlotAreaBase, PlotAreaFactory = dataviz.PlotAreaFactory, Point2D = dataviz.Point2D, Box2D = dataviz.Box2D, SeriesBinder = dataviz.SeriesBinder, TextBox = dataviz.TextBox, autoFormat = dataviz.autoFormat, evalOptions = dataviz.evalOptions, limitValue = util.limitValue, seriesTotal = dataviz.seriesTotal;\n var CATEGORY = 'category', COLOR = 'color', FUNNEL = 'funnel', VALUE = 'value', BLACK = 'black', WHITE = 'white';\n var FunnelPlotArea = PlotAreaBase.extend({\n render: function () {\n var plotArea = this, series = plotArea.series;\n plotArea.createFunnelChart(series);\n },\n createFunnelChart: function (series) {\n var plotArea = this, firstSeries = series[0], funnelChart = new FunnelChart(plotArea, {\n series: series,\n legend: plotArea.options.legend,\n neckRatio: firstSeries.neckRatio,\n dynamicHeight: firstSeries.dynamicHeight,\n dynamicSlope: firstSeries.dynamicSlope,\n segmentSpacing: firstSeries.segmentSpacing,\n highlight: firstSeries.highlight\n });\n plotArea.appendChart(funnelChart);\n },\n appendChart: function (chart, pane) {\n PlotAreaBase.fn.appendChart.call(this, chart, pane);\n append(this.options.legend.items, chart.legendItems);\n }\n });\n var FunnelChart = ChartElement.extend({\n init: function (plotArea, options) {\n var chart = this;\n ChartElement.fn.init.call(chart, options);\n chart.plotArea = plotArea;\n chart.points = [];\n chart.labels = [];\n chart.legendItems = [];\n chart.render();\n },\n options: {\n neckRatio: 0.3,\n width: 300,\n dynamicSlope: false,\n dynamicHeight: true,\n segmentSpacing: 0,\n labels: {\n visible: false,\n align: 'center',\n position: 'center'\n }\n },\n formatPointValue: function (point, format) {\n return autoFormat(format, point.value);\n },\n render: function () {\n var chart = this, options = chart.options, colors = chart.plotArea.options.seriesColors || [], colorsCount = colors.length, series = options.series[0], pointData, fields, data = series.data;\n if (!data) {\n return;\n }\n var total = seriesTotal(series), value, i;\n for (i = 0; i < data.length; i++) {\n pointData = SeriesBinder.current.bindPoint(series, i);\n value = pointData.valueFields.value;\n if (value === null || value === undefined) {\n continue;\n }\n fields = pointData.fields;\n if (!isFn(series.color)) {\n series.color = fields.color || colors[i % colorsCount];\n }\n fields = deepExtend({\n index: i,\n owner: chart,\n series: series,\n category: fields.category,\n dataItem: data[i],\n percentage: Math.abs(value) / total,\n visibleInLegend: fields.visibleInLegend,\n visible: fields.visible\n }, fields);\n var segment = chart.createSegment(value, fields);\n var label = chart.createLabel(value, fields);\n if (segment && label) {\n segment.append(label);\n }\n }\n },\n evalSegmentOptions: function (options, value, fields) {\n var series = fields.series;\n evalOptions(options, {\n value: value,\n series: series,\n dataItem: fields.dataItem,\n index: fields.index\n }, {\n defaults: series._defaults,\n excluded: [\n 'data',\n 'toggle',\n 'visual'\n ]\n });\n },\n createSegment: function (value, fields) {\n var chart = this, segment;\n var seriesOptions = deepExtend({}, fields.series);\n chart.evalSegmentOptions(seriesOptions, value, fields);\n chart.createLegendItem(value, seriesOptions, fields);\n if (fields.visible !== false) {\n segment = new FunnelSegment(value, seriesOptions, fields);\n extend(segment, fields);\n chart.append(segment);\n chart.points.push(segment);\n return segment;\n }\n },\n createLabel: function (value, fields) {\n var chart = this, series = fields.series, dataItem = fields.dataItem, labels = deepExtend({}, chart.options.labels, series.labels), text = value, textBox;\n if (labels.visible) {\n if (labels.template) {\n var labelTemplate = template(labels.template);\n text = labelTemplate({\n dataItem: dataItem,\n value: value,\n percentage: fields.percentage,\n category: fields.category,\n series: series\n });\n } else if (labels.format) {\n text = autoFormat(labels.format, text);\n }\n if (!labels.color && labels.align === 'center') {\n var brightnessValue = new Color(series.color).percBrightness();\n if (brightnessValue > 180) {\n labels.color = BLACK;\n } else {\n labels.color = WHITE;\n }\n }\n chart.evalSegmentOptions(labels, value, fields);\n textBox = new TextBox(text, deepExtend({ vAlign: labels.position }, labels));\n chart.labels.push(textBox);\n return textBox;\n }\n },\n labelPadding: function () {\n var labels = this.labels, label, align, width, padding = {\n left: 0,\n right: 0\n }, i;\n for (i = 0; i < labels.length; i++) {\n label = labels[i];\n align = label.options.align;\n if (align !== 'center') {\n width = labels[i].box.width();\n if (align === 'left') {\n padding.left = Math.max(padding.left, width);\n } else {\n padding.right = Math.max(padding.right, width);\n }\n }\n }\n return padding;\n },\n reflow: function (chartBox) {\n var chart = this, options = chart.options, segments = chart.points, count = segments.length, decreasingWidth = options.neckRatio <= 1, i, height, lastUpperSide, points, percentage, offset, box = chartBox.clone().unpad(chart.labelPadding()), width = box.width(), previousHeight = 0, previousOffset = decreasingWidth ? 0 : (width - width / options.neckRatio) / 2, segmentSpacing = options.segmentSpacing, dynamicSlope = options.dynamicSlope, totalHeight = box.height() - segmentSpacing * (count - 1), neckRatio = decreasingWidth ? options.neckRatio * width : width;\n if (!count) {\n return;\n }\n if (dynamicSlope) {\n var firstSegment = segments[0], maxSegment = firstSegment, nextSegment, nextPercentage;\n $.each(segments, function (idx, val) {\n if (val.percentage > maxSegment.percentage) {\n maxSegment = val;\n }\n });\n lastUpperSide = firstSegment.percentage / maxSegment.percentage * width;\n previousOffset = (width - lastUpperSide) / 2;\n for (i = 0; i < count; i++) {\n percentage = segments[i].percentage;\n nextSegment = segments[i + 1];\n nextPercentage = nextSegment ? nextSegment.percentage : percentage;\n points = segments[i].points = [];\n height = options.dynamicHeight ? totalHeight * percentage : totalHeight / count;\n if (!percentage) {\n offset = nextPercentage ? 0 : width / 2;\n } else {\n offset = (width - lastUpperSide * (nextPercentage / percentage)) / 2;\n }\n offset = limitValue(offset, 0, width);\n points.push(new geom.Point(box.x1 + previousOffset, box.y1 + previousHeight));\n points.push(new geom.Point(box.x1 + width - previousOffset, box.y1 + previousHeight));\n points.push(new geom.Point(box.x1 + width - offset, box.y1 + height + previousHeight));\n points.push(new geom.Point(box.x1 + offset, box.y1 + height + previousHeight));\n previousOffset = offset;\n previousHeight += height + segmentSpacing;\n lastUpperSide = limitValue(width - 2 * offset, 0, width);\n }\n } else {\n var topMostWidth = decreasingWidth ? width : width - previousOffset * 2, finalNarrow = (topMostWidth - neckRatio) / 2;\n for (i = 0; i < count; i++) {\n points = segments[i].points = [];\n percentage = segments[i].percentage;\n offset = options.dynamicHeight ? finalNarrow * percentage : finalNarrow / count;\n height = options.dynamicHeight ? totalHeight * percentage : totalHeight / count;\n points.push(new geom.Point(box.x1 + previousOffset, box.y1 + previousHeight));\n points.push(new geom.Point(box.x1 + width - previousOffset, box.y1 + previousHeight));\n points.push(new geom.Point(box.x1 + width - previousOffset - offset, box.y1 + height + previousHeight));\n points.push(new geom.Point(box.x1 + previousOffset + offset, box.y1 + height + previousHeight));\n previousOffset += offset;\n previousHeight += height + segmentSpacing;\n }\n }\n for (i = 0; i < count; i++) {\n segments[i].reflow(chartBox);\n }\n }\n });\n deepExtend(FunnelChart.fn, PieChartMixin);\n var FunnelSegment = ChartElement.extend({\n init: function (value, options, segmentOptions) {\n var segment = this;\n ChartElement.fn.init.call(segment, options);\n segment.value = value;\n segment.options.index = segmentOptions.index;\n },\n options: {\n color: WHITE,\n border: { width: 1 }\n },\n reflow: function (chartBox) {\n var segment = this, points = segment.points, label = segment.children[0];\n segment.box = new Box2D(points[0].x, points[0].y, points[1].x, points[2].y);\n if (label) {\n label.reflow(new Box2D(chartBox.x1, points[0].y, chartBox.x2, points[2].y));\n }\n },\n createVisual: function () {\n var segment = this;\n var options = segment.options;\n var visual;\n ChartElement.fn.createVisual.call(this);\n if (options.visual) {\n visual = options.visual({\n category: segment.category,\n dataItem: segment.dataItem,\n value: segment.value,\n series: segment.series,\n percentage: segment.percentage,\n points: segment.points,\n options: options,\n createVisual: function () {\n return segment.createPath();\n }\n });\n } else {\n visual = segment.createPath();\n }\n if (visual) {\n this.visual.append(visual);\n }\n },\n createPath: function () {\n var options = this.options;\n var border = options.border;\n var path = draw.Path.fromPoints(this.points, {\n fill: {\n color: options.color,\n opacity: options.opacity\n },\n stroke: {\n color: border.color,\n opacity: border.opacity,\n width: border.width\n }\n }).close();\n return path;\n },\n createHighlight: function (style) {\n return draw.Path.fromPoints(this.points, style);\n },\n highlightVisual: function () {\n return this.visual.children[0];\n },\n highlightVisualArgs: function () {\n var path = draw.Path.fromPoints(this.points).close();\n return {\n options: this.options,\n path: path\n };\n },\n highlightOverlay: function (view, opt) {\n var options = this.options, hlOptions = options.highlight || {};\n if (hlOptions.visible === false) {\n return;\n }\n var border = hlOptions.border || {};\n var calcOptions = extend({}, opt, {\n fill: hlOptions.color,\n stroke: border.color,\n strokeOpacity: border.opacity,\n strokeWidth: border.width,\n fillOpacity: hlOptions.opacity\n });\n var element = view.createPolyline(this.points, true, calcOptions);\n return element;\n },\n tooltipAnchor: function (tooltipWidth) {\n var box = this.box;\n return new Point2D(box.center().x - tooltipWidth / 2, box.y1);\n },\n formatValue: function (format) {\n var point = this;\n return point.owner.formatPointValue(point, format);\n }\n });\n deepExtend(FunnelSegment.fn, dataviz.PointEventsMixin);\n PlotAreaFactory.current.register(FunnelPlotArea, [FUNNEL]);\n SeriesBinder.current.register([FUNNEL], [VALUE], [\n CATEGORY,\n COLOR,\n 'visibleInLegend',\n 'visible'\n ]);\n deepExtend(dataviz, {\n FunnelChart: FunnelChart,\n FunnelSegment: FunnelSegment\n });\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/"}