{"version":3,"sources":["kendo.dataviz.gauge.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","mergeSort","a","cmp","merge","b","ai","bi","slice","left","right","Math","floor","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","_buildLabel","label","labelBox","textBox","children","border","background","elements","Group","wrapper","Path","fromRect","Rect","x1","y1","stroke","Text","Point","fill","styleGeometry","_pad","bbox","clone","padding","styleBox","dashType","lineJoin","lineCap","getRange","range","from","MIN_VALUE","to","origin","getOrigin","getSize","spacing","getSpacing","setOrigin","y","top","setSize","bottom","_unpad","ArrowLinearPointerAnimation","BarLinearPointerAnimation","Widget","ui","autoMajorUnit","ChartElement","NumericAxis","Axis","Box2D","interpolateValue","geo","geometry","draw","ANGULAR_SPEED","LINEAR_SPEED","ARROW","ARROW_POINTER","BAR_POINTER","BLACK","CAP_SIZE","COORD_PRECISION","DEFAULT_HEIGHT","DEFAULT_LINE_WIDTH","DEFAULT_WIDTH","DEFAULT_MIN_WIDTH","DEFAULT_MIN_HEIGHT","DEFAULT_MARGIN","DEGREE","GEO_ARC_ADJUST_ANGLE","INSIDE","LINEAR","NEEDLE","OUTSIDE","RADIAL_POINTER","X","Y","Pointer","scale","pointer","scaleOptions","fn","call","newValue","that","_oldValue","repaint","RadialPointer","shape","cap","arrow","animation","type","duration","setRadius","radius","clear","render","parent","center","setAngle","angle","transform","rotate","oldAngle","slotAngle","newAngle","transitions","RadialPointerAnimation","play","arc","startAngle","reverse","_renderNeedle","_renderCap","_renderArrow","reflow","getRadiusX","capSize","fromPoints","minorTickSize","minorTicks","needleColor","needlePath","moveTo","lineTo","close","capColor","circle","Circle","RadialScale","majorUnit","minorUnit","majorTicks","align","visible","endAngle","labels","position","renderArc","labelElements","renderLabels","ticks","renderTicks","ranges","renderRanges","repositionRanges","halfWidth","halfHeight","labelAngle","lp","cx","cy","isInside","lbl","labelPos","prevLabelPos","labelTransform","majorTickSize","tickAngles","count","labelsOptions","rangeDistance","rangeSize","labelsGroup","setRadiusX","setRadiusY","pointAt","cos","sin","translate","union","rangeRadius","newRadius","getRangeRadius","_geometry","segment","rangeGeom","segments","rangeSegments","segmentsCount","Arc","radiusX","radiusY","opacity","rangeSegment","j","gauge","defaultColor","rangePlaceholderColor","drawTicks","unit","tickOptions","tickStart","tickEnd","labelsPosition","allTicks","tickArc","majorTickAngles","_tickDifference","minorTickAngles","normalizeTickAngles","angles","skip","ring","stepValue","tickCount","step","positions","repositionTicks","minor","newPoint","xDiff","yDiff","diff","anchor","Transformation","Gauge","userOptions","themeOptions","themeName","theme","themes","destroy","empty","_originalOptions","isArray","addClass","surface","_createSurface","redraw","plotArea","renderAs","gaugeArea","pointers","_setValueOptions","_draw","_visuals","exportVisual","allValues","concat","_resize","t","_getSize","_createGaugeArea","css","_createModel","_gaugeAreaMargin","areaGeometry","margin","wrap","appendTo","Surface","RadialGauge","radialGauge","notify","_initialPlotArea","fitScale","alignScale","_buildVisual","visuals","minDiff","midDiff","maxDiff","mid","oldDiff","plotAreaBox","abs","getDiff","staleFlag","getPlotBox","plotBbox","plotBox","plotBoxCenter","boxCenter","paddingX","paddingY","LinearGauge","linearGauge","vertical","bboxX","bboxY","bbox2D","_getBox","_alignElements","_shrinkElements","scaleElements","currentOptions","LinearScale","ArrowLinearPointer","BarLinearPointer","y2","x2","scaleBox","pointerBox","mirror","line","_alignLines","scaleLine","renderLine","scaleTicks","slot","slotX","slotY","getSlot","lineBox","linePath","tickPositions","skipUnit","tickLineOptions","tickX","tickY","renderAxisTick","getMajorTickPositions","getMinorTickPositions","start","end","tickPath","LinearPointer","track","pointerRangeBox","trackBox","trackSize","pointerHalfSize","space","pad","getElementOptions","_margin","pointerShape","halfSize","sign","setup","elementOptions","p2","p3","p4","dir","minSlot","axis","sizeAxis","p1","pointerPath","oldShape","oldPoints","newPoints","group","Animation","easing","anim","AnimationFactory","register","fromScale","toScale","distanceTo","translateX","translateY","speed","_set","setter","toUpperCase","points","plugin","ExportMixin"],"mappings":"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","file":"kendo.dataviz.gauge.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 return id in cache ? cache[id] : cache[id] = 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 function mergeSort(a, cmp) {\n if (a.length < 2) {\n return a.slice();\n }\n function merge(a, b) {\n var r = [], ai = 0, bi = 0, i = 0;\n while (ai < a.length && bi < b.length) {\n if (cmp(a[ai], b[bi]) <= 0) {\n r[i++] = a[ai++];\n } else {\n r[i++] = b[bi++];\n }\n }\n if (ai < a.length) {\n r.push.apply(r, a.slice(ai));\n }\n if (bi < b.length) {\n r.push.apply(r, b.slice(bi));\n }\n return r;\n }\n return function sort(a) {\n if (a.length <= 1) {\n return a;\n }\n var m = Math.floor(a.length / 2);\n var left = a.slice(0, m);\n var right = a.slice(m);\n left = sort(left);\n right = sort(right);\n return merge(left, right);\n }(a);\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 mergeSort: mergeSort\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.gauge', [\n 'kendo.dataviz.core',\n 'kendo.drawing',\n 'kendo.dataviz.themes'\n ], f);\n}(function () {\n var __meta__ = {\n id: 'dataviz.gauge',\n name: 'Gauge',\n category: 'dataviz',\n description: 'Radial and Linear gauges.',\n depends: [\n 'dataviz.core',\n 'dataviz.themes'\n ]\n };\n (function ($, undefined) {\n var math = Math, kendo = window.kendo, util = kendo.util, Widget = kendo.ui.Widget, deepExtend = kendo.deepExtend, dataviz = kendo.dataviz, autoMajorUnit = dataviz.autoMajorUnit, ChartElement = dataviz.ChartElement, NumericAxis = dataviz.NumericAxis, Axis = dataviz.Axis, Box2D = dataviz.Box2D, Class = kendo.Class, defined = util.defined, isNumber = util.isNumber, interpolateValue = dataviz.interpolateValue, getSpacing = dataviz.getSpacing, round = dataviz.round, geo = dataviz.geometry, draw = dataviz.drawing, Point = geo.Point, Group = draw.Group, Path = draw.Path, Rect = geo.Rect, Text = draw.Text;\n var ANGULAR_SPEED = 150, LINEAR_SPEED = 250, ARROW = 'arrow', ARROW_POINTER = 'arrowPointer', BAR_POINTER = 'barPointer', BLACK = '#000', CAP_SIZE = 0.05, COORD_PRECISION = dataviz.COORD_PRECISION, MAX_VALUE = Number.MAX_VALUE, MIN_VALUE = -Number.MAX_VALUE, DEFAULT_HEIGHT = 200, DEFAULT_LINE_WIDTH = 0.5, DEFAULT_WIDTH = 200, DEFAULT_MIN_WIDTH = 60, DEFAULT_MIN_HEIGHT = 60, DEFAULT_MARGIN = 5, DEGREE = math.PI / 180, GEO_ARC_ADJUST_ANGLE = 180, INSIDE = 'inside', LINEAR = 'linear', NEEDLE = 'needle', OUTSIDE = 'outside', RADIAL_POINTER = 'radialPointer', X = 'x', Y = 'y';\n var Pointer = Class.extend({\n init: function (scale, options) {\n var pointer = this;\n var scaleOptions = scale.options;\n ChartElement.fn.init.call(pointer, options);\n options = pointer.options;\n options.fill = options.color;\n pointer.scale = scale;\n if (defined(options.value)) {\n options.value = math.min(math.max(options.value, scaleOptions.min), scaleOptions.max);\n } else {\n options.value = scaleOptions.min;\n }\n },\n options: { color: BLACK },\n value: function (newValue) {\n var that = this;\n var options = that.options;\n var value = options.value;\n var scaleOptions = that.scale.options;\n if (arguments.length === 0) {\n return value;\n }\n options._oldValue = options._oldValue !== undefined ? options.value : scaleOptions.min;\n options.value = math.min(math.max(newValue, scaleOptions.min), scaleOptions.max);\n if (that.elements) {\n that.repaint();\n }\n }\n });\n var RadialPointer = Pointer.extend({\n options: {\n shape: NEEDLE,\n cap: { size: CAP_SIZE },\n arrow: {\n width: 16,\n height: 14\n },\n animation: {\n type: RADIAL_POINTER,\n duration: ANGULAR_SPEED\n }\n },\n setRadius: function (radius) {\n var that = this;\n if (radius) {\n that.elements.clear();\n that.render(that.parent, that.center, radius);\n }\n },\n setAngle: function (angle) {\n this.elements.transform(geo.transform().rotate(angle, this.center));\n },\n repaint: function () {\n var that = this;\n var scale = that.scale;\n var options = that.options;\n var oldAngle = scale.slotAngle(options._oldValue);\n var newAngle = scale.slotAngle(options.value);\n if (options.animation.transitions === false) {\n that.setAngle(newAngle);\n } else {\n new RadialPointerAnimation(that.elements, deepExtend(options.animation, {\n oldAngle: oldAngle,\n newAngle: newAngle\n })).play();\n }\n },\n render: function () {\n var that = this;\n var scale = that.scale;\n var center = scale.arc.center;\n var options = that.options;\n var elements = new Group();\n if (options.animation !== false) {\n deepExtend(options.animation, {\n startAngle: 0,\n center: center,\n reverse: scale.options.reverse\n });\n }\n if (options.shape === NEEDLE) {\n elements.append(that._renderNeedle(), that._renderCap());\n } else {\n elements.append(that._renderArrow());\n }\n that.elements = elements;\n that.setAngle(DEGREE);\n return elements;\n },\n reflow: function (arc) {\n var that = this;\n var center = that.center = arc.center;\n var radius = that.radius = arc.getRadiusX();\n var capSize = that.capSize = Math.round(radius * that.options.cap.size);\n that.bbox = Rect.fromPoints(new Point(center.x - capSize, center.y - capSize), new Point(center.x + capSize, center.y + capSize));\n },\n _renderNeedle: function () {\n var that = this;\n var options = that.options;\n var minorTickSize = that.scale.options.minorTicks.size;\n var center = that.center;\n var needleColor = options.color;\n var needlePath = new Path({\n fill: { color: needleColor },\n stroke: {\n color: needleColor,\n width: DEFAULT_LINE_WIDTH\n }\n });\n needlePath.moveTo(center.x + that.radius - minorTickSize, center.y).lineTo(center.x, center.y - that.capSize / 2).lineTo(center.x, center.y + that.capSize / 2).close();\n return needlePath;\n },\n _renderCap: function () {\n var that = this;\n var options = that.options;\n var capColor = options.cap.color || options.color;\n var circle = new geo.Circle(that.center, that.capSize);\n var cap = new draw.Circle(circle, {\n fill: { color: capColor },\n stroke: { color: capColor }\n });\n return cap;\n }\n });\n var RadialScale = NumericAxis.extend({\n init: function (options) {\n var scale = this;\n scale.options = deepExtend({}, scale.options, options);\n scale.options.majorUnit = scale.options.majorUnit || autoMajorUnit(scale.options.min, scale.options.max);\n scale.options.minorUnit = scale.options.minorUnit || scale.options.majorUnit / 10;\n Axis.fn.init.call(scale, scale.options);\n },\n options: {\n min: 0,\n max: 100,\n majorTicks: {\n size: 15,\n align: INSIDE,\n color: BLACK,\n width: DEFAULT_LINE_WIDTH,\n visible: true\n },\n minorTicks: {\n size: 10,\n align: INSIDE,\n color: BLACK,\n width: DEFAULT_LINE_WIDTH,\n visible: true\n },\n startAngle: -30,\n endAngle: 210,\n labels: {\n position: INSIDE,\n padding: 2\n }\n },\n render: function (center, radius) {\n var that = this;\n var arc = that.renderArc(center, radius);\n that.bbox = arc.bbox();\n that.labelElements = that.renderLabels();\n that.ticks = that.renderTicks();\n that.ranges = that.renderRanges();\n },\n reflow: function (bbox) {\n var that = this;\n var center = bbox.center();\n var radius = math.min(bbox.height(), bbox.width()) / 2;\n if (that.bbox !== undefined) {\n that.bbox = that.arc.bbox();\n that.radius(that.arc.getRadiusX());\n that.repositionRanges();\n that.renderLabels();\n } else {\n return that.render(center, radius);\n }\n },\n slotAngle: function (value) {\n var options = this.options;\n var startAngle = options.startAngle;\n var reverse = options.reverse;\n var angle = options.endAngle - startAngle;\n var min = options.min;\n var max = options.max;\n var result;\n if (reverse) {\n result = options.endAngle - (value - min) / (max - min) * angle;\n } else {\n result = (value - min) / (max - min) * angle + startAngle;\n }\n return result + GEO_ARC_ADJUST_ANGLE;\n },\n renderLabels: function () {\n var that = this;\n var options = that.options;\n var majorTickSize = options.majorTicks.size;\n var arc = that.arc.clone();\n var radius = arc.getRadiusX();\n var tickAngles = that.tickAngles(arc, options.majorUnit);\n var labels = that.labels;\n var count = labels.length;\n var labelsOptions = options.labels;\n var padding = labelsOptions.padding;\n var rangeDistance = radius * 0.05;\n var rangeSize = options.rangeSize = options.rangeSize || radius * 0.1;\n var ranges = options.ranges || [];\n var halfWidth, halfHeight, labelAngle;\n var angle, label, lp, i, cx, cy, isInside;\n var labelsGroup = new Group();\n var lbl, labelPos, prevLabelPos, labelTransform;\n if (that.options.rangeDistance !== undefined) {\n rangeDistance = that.options.rangeDistance;\n } else {\n that.options.rangeDistance = rangeDistance;\n }\n if (labelsOptions.position === INSIDE) {\n radius -= majorTickSize;\n if (ranges.length && that.labelElements === undefined) {\n radius -= rangeSize + rangeDistance;\n }\n arc.setRadiusX(radius).setRadiusY(radius);\n }\n for (i = 0; i < count; i++) {\n label = labels[i];\n halfWidth = label.box.width() / 2;\n halfHeight = label.box.height() / 2;\n angle = tickAngles[i];\n labelAngle = (angle - GEO_ARC_ADJUST_ANGLE) * DEGREE;\n isInside = labelsOptions.position === INSIDE;\n lp = arc.pointAt(angle);\n cx = lp.x + math.cos(labelAngle) * (halfWidth + padding) * (isInside ? 1 : -1);\n cy = lp.y + math.sin(labelAngle) * (halfHeight + padding) * (isInside ? 1 : -1);\n label.reflow(new dataviz.Box2D(cx - halfWidth, cy - halfHeight, cx + halfWidth, cy + halfHeight));\n labelPos = new Point(label.box.x1, label.box.y1);\n if (that.labelElements === undefined) {\n lbl = _buildLabel(label, options.labels);\n labelsGroup.append(lbl);\n } else {\n lbl = that.labelElements.children[i];\n prevLabelPos = lbl.bbox().origin;\n labelTransform = lbl.transform() || geo.transform();\n labelTransform.translate(labelPos.x - prevLabelPos.x, labelPos.y - prevLabelPos.y);\n lbl.transform(labelTransform);\n }\n that.bbox = Rect.union(that.bbox, lbl.bbox());\n }\n return labelsGroup;\n },\n repositionRanges: function () {\n var that = this;\n var ranges = that.ranges.children;\n var rangeSize = that.options.rangeSize;\n var rangeDistance = that.options.rangeDistance;\n var rangeRadius, newRadius;\n if (ranges.length > 0) {\n rangeRadius = that.getRangeRadius();\n if (that.options.labels.position === INSIDE) {\n rangeRadius += rangeSize + rangeDistance;\n }\n newRadius = rangeRadius + rangeSize / 2;\n for (var i = 0; i < ranges.length; i++) {\n ranges[i]._geometry.setRadiusX(newRadius).setRadiusY(newRadius);\n }\n that.bbox = Rect.union(that.bbox, that.ranges.bbox());\n }\n },\n renderRanges: function () {\n var that = this;\n var arc = that.arc;\n var result = new Group();\n var from, to;\n var segments = that.rangeSegments();\n var segmentsCount = segments.length;\n var reverse = that.options.reverse;\n var rangeSize = that.options.rangeSize;\n var rangeDistance = that.options.rangeDistance;\n var segment, rangeRadius, rangeGeom, i;\n if (segmentsCount) {\n rangeRadius = that.getRangeRadius();\n that.radius(that.radius() - rangeSize - rangeDistance);\n for (i = 0; i < segmentsCount; i++) {\n segment = segments[i];\n from = that.slotAngle(segment[reverse ? 'to' : 'from']);\n to = that.slotAngle(segment[!reverse ? 'to' : 'from']);\n if (to - from !== 0) {\n rangeGeom = new geo.Arc(arc.center, {\n radiusX: rangeRadius + rangeSize / 2,\n radiusY: rangeRadius + rangeSize / 2,\n startAngle: from,\n endAngle: to\n });\n result.append(new draw.Arc(rangeGeom, {\n stroke: {\n width: rangeSize,\n color: segment.color,\n opacity: segment.opacity\n }\n }));\n }\n }\n }\n return result;\n },\n rangeSegments: function () {\n var gauge = this;\n var options = gauge.options;\n var ranges = options.ranges || [];\n var count = ranges.length;\n var range;\n var segmentsCount;\n var defaultColor = options.rangePlaceholderColor;\n var segments = [];\n var segment;\n var min = options.min;\n var max = options.max;\n var i, j;\n function rangeSegment(from, to, color, opacity) {\n return {\n from: from,\n to: to,\n color: color,\n opacity: opacity\n };\n }\n if (count) {\n segments.push(rangeSegment(min, max, defaultColor));\n for (i = 0; i < count; i++) {\n range = getRange(ranges[i], min, max);\n segmentsCount = segments.length;\n for (j = 0; j < segmentsCount; j++) {\n segment = segments[j];\n if (segment.from <= range.from && range.from <= segment.to) {\n segments.push(rangeSegment(range.from, range.to, range.color, range.opacity));\n if (segment.from <= range.to && range.to <= segment.to) {\n segments.push(rangeSegment(range.to, segment.to, defaultColor, range.opacity));\n }\n segment.to = range.from;\n break;\n }\n }\n }\n }\n return segments;\n },\n getRangeRadius: function () {\n var that = this;\n var options = that.options;\n var majorTickSize = options.majorTicks.size;\n var rangeSize = options.rangeSize;\n var rangeDistance = options.rangeDistance;\n var arc = that.arc;\n var r;\n if (options.labels.position === OUTSIDE) {\n r = arc.getRadiusX() - majorTickSize - rangeDistance - rangeSize;\n } else {\n r = arc.getRadiusX() - rangeSize;\n }\n return r;\n },\n renderArc: function (center, radius) {\n var that = this;\n var options = that.options;\n var arc = that.arc = new geo.Arc(center, {\n radiusX: radius,\n radiusY: radius,\n startAngle: options.startAngle + GEO_ARC_ADJUST_ANGLE,\n endAngle: options.endAngle + GEO_ARC_ADJUST_ANGLE\n });\n return arc;\n },\n renderTicks: function () {\n var that = this;\n var arc = that.arc;\n var options = that.options;\n var labelsPosition = options.labels.position;\n var allTicks = new Group();\n var majorTickSize = options.majorTicks.size;\n var minorTickSize = options.minorTicks.size;\n var tickArc = arc.clone();\n var radius = tickArc.getRadiusX();\n function drawTicks(arc, tickAngles, unit, tickOptions) {\n var ticks = new Group(), center = arc.center, radius = arc.getRadiusX(), i, tickStart, tickEnd, visible = tickOptions.visible;\n if (visible) {\n for (i = 0; i < tickAngles.length; i++) {\n tickStart = arc.pointAt(tickAngles[i]);\n tickEnd = new Point(center.x + radius - tickOptions.size, center.y).rotate(tickAngles[i], center);\n ticks.append(new Path({\n stroke: {\n color: tickOptions.color,\n width: tickOptions.width\n }\n }).moveTo(tickStart).lineTo(tickEnd));\n }\n }\n return ticks;\n }\n that.majorTickAngles = that.tickAngles(arc, options.majorUnit);\n that.majorTicks = drawTicks(tickArc, that.majorTickAngles, options.majorUnit, options.majorTicks);\n allTicks.append(that.majorTicks);\n that._tickDifference = majorTickSize - minorTickSize;\n if (labelsPosition === OUTSIDE) {\n tickArc.setRadiusX(radius - majorTickSize + minorTickSize).setRadiusY(radius - majorTickSize + minorTickSize);\n }\n that.minorTickAngles = that.normalizeTickAngles(that.tickAngles(arc, options.minorUnit));\n that.minorTicks = drawTicks(tickArc, that.minorTickAngles, options.minorUnit, options.minorTicks, options.majorUnit);\n allTicks.append(that.minorTicks);\n return allTicks;\n },\n normalizeTickAngles: function (angles) {\n var that = this;\n var options = that.options;\n var skip = options.majorUnit / options.minorUnit;\n for (var i = angles.length - 1; i >= 0; i--) {\n if (i % skip === 0) {\n angles.splice(i, 1);\n }\n }\n return angles;\n },\n tickAngles: function (ring, stepValue) {\n var scale = this;\n var options = scale.options;\n var reverse = options.reverse;\n var range = options.max - options.min;\n var angle = ring.endAngle - ring.startAngle;\n var pos = ring.startAngle;\n var tickCount = range / stepValue;\n var step = angle / tickCount;\n var positions = [];\n var i;\n if (reverse) {\n pos += angle;\n step = -step;\n }\n for (i = 0; i < tickCount; i++) {\n positions.push(round(pos, COORD_PRECISION));\n pos += step;\n }\n if (round(pos) <= ring.endAngle) {\n positions.push(pos);\n }\n return positions;\n },\n radius: function (radius) {\n var that = this;\n if (radius) {\n that.arc.setRadiusX(radius).setRadiusY(radius);\n that.repositionTicks(that.majorTicks.children, that.majorTickAngles);\n that.repositionTicks(that.minorTicks.children, that.minorTickAngles, true);\n } else {\n return that.arc.getRadiusX();\n }\n },\n repositionTicks: function (ticks, tickAngles, minor) {\n var that = this;\n var diff = minor ? that._tickDifference || 0 : 0;\n var tickArc = that.arc;\n var radius = tickArc.getRadiusX();\n if (minor && that.options.labels.position === OUTSIDE && diff !== 0) {\n tickArc = that.arc.clone();\n tickArc.setRadiusX(radius - diff).setRadiusY(radius - diff);\n }\n for (var i = 0; i < ticks.length; i++) {\n var newPoint = tickArc.pointAt(tickAngles[i]);\n var segments = ticks[i].segments;\n var xDiff = newPoint.x - segments[0].anchor().x;\n var yDiff = newPoint.y - segments[0].anchor().y;\n ticks[i].transform(new geo.Transformation().translate(xDiff, yDiff));\n }\n }\n });\n var Gauge = Widget.extend({\n init: function (element, userOptions) {\n var gauge = this;\n var options;\n var themeOptions;\n var themeName;\n var themes = dataviz.ui.themes || {};\n var theme;\n kendo.destroy(element);\n $(element).empty();\n Widget.fn.init.call(gauge, element);\n gauge.wrapper = gauge.element;\n gauge._originalOptions = deepExtend({}, userOptions);\n options = deepExtend({}, gauge.options, userOptions);\n themeName = options.theme;\n theme = themes[themeName] || themes[themeName.toLowerCase()];\n themeOptions = themeName && theme ? theme.gauge : {};\n gauge.options = deepExtend({}, themeOptions, options);\n if ($.isArray(options.pointer)) {\n for (var i = 0; i < options.pointer.length; i++) {\n gauge.options.pointer[i] = deepExtend({}, themeOptions.pointer, options.pointer[i]);\n }\n }\n gauge.element.addClass('k-gauge');\n gauge.surface = gauge._createSurface();\n gauge.redraw();\n },\n options: {\n plotArea: {},\n theme: 'default',\n renderAs: '',\n pointer: {},\n scale: {},\n gaugeArea: {}\n },\n destroy: function () {\n this.surface.destroy();\n Widget.fn.destroy.call(this);\n },\n value: function (value) {\n var that = this;\n var pointer = that.pointers[0];\n if (arguments.length === 0) {\n return pointer.value();\n }\n pointer.value(value);\n that._setValueOptions(value);\n },\n _draw: function () {\n var surface = this.surface;\n surface.clear();\n surface.draw(this._visuals);\n },\n exportVisual: function () {\n return this._visuals;\n },\n allValues: function (values) {\n var that = this;\n var pointers = that.pointers;\n var allValues = [];\n var i;\n if (arguments.length === 0) {\n for (i = 0; i < pointers.length; i++) {\n allValues.push(pointers[i].value());\n }\n return allValues;\n }\n if ($.isArray(values)) {\n for (i = 0; i < values.length; i++) {\n if (isNumber(values[i])) {\n pointers[i].value(values[i]);\n }\n }\n }\n that._setValueOptions(values);\n },\n _setValueOptions: function (values) {\n var pointers = [].concat(this.options.pointer);\n values = [].concat(values);\n for (var i = 0; i < values.length; i++) {\n pointers[i].value = values[i];\n }\n },\n _resize: function () {\n var that = this;\n var t = that.options.transitions;\n var i;\n that.options.transitions = false;\n for (i = 0; i < that.pointers.length; i++) {\n that.pointers[i].options.animation.transitions = false;\n }\n that.redraw();\n that.options.transitions = t;\n for (i = 0; i < that.pointers.length; i++) {\n that.pointers[i].options.animation.transitions = t;\n }\n },\n redraw: function () {\n var that = this;\n var size = deepExtend(that._getSize(), that.options.gaugeArea);\n var wrapper = new Rect([\n 0,\n 0\n ], [\n size.width,\n size.height\n ]);\n var bbox;\n that.surface.clear();\n that.gaugeArea = that._createGaugeArea();\n that.surface.element.css({\n width: size.width,\n height: size.height\n });\n that._createModel();\n bbox = _unpad(wrapper.bbox(), that._gaugeAreaMargin);\n that.reflow(bbox);\n },\n _createGaugeArea: function () {\n var that = this;\n var options = that.options.gaugeArea;\n var size = that.surface.size();\n var border = options.border || {};\n var areaGeometry = new Rect([\n 0,\n 0\n ], [\n size.width,\n size.height\n ]);\n that._gaugeAreaMargin = options.margin || DEFAULT_MARGIN;\n if (border.width > 0) {\n areaGeometry = _unpad(areaGeometry, border.width);\n }\n var gaugeArea = Path.fromRect(areaGeometry, {\n stroke: {\n color: border.width ? border.color : '',\n width: border.width,\n dashType: border.dashType,\n lineJoin: 'round',\n lineCap: 'round'\n },\n fill: { color: options.background }\n });\n return gaugeArea;\n },\n _createSurface: function () {\n var that = this;\n var options = that.options;\n var size = that._getSize();\n size = options.gaugeArea ? deepExtend(size, options.gaugeArea) : size;\n var wrap = $('').appendTo(that.element).css({\n width: size.width,\n height: size.height\n });\n return new draw.Surface.create(wrap, { type: options.renderAs });\n },\n getSize: function () {\n return this._getSize();\n },\n _getSize: function () {\n var that = this;\n var element = that.element;\n var width = element.width();\n var height = element.height();\n if (!width) {\n width = DEFAULT_WIDTH;\n }\n if (!height) {\n height = DEFAULT_HEIGHT;\n }\n return {\n width: width,\n height: height\n };\n }\n });\n var RadialGauge = Gauge.extend({\n init: function (element, options) {\n var radialGauge = this;\n Gauge.fn.init.call(radialGauge, element, options);\n kendo.notify(radialGauge, dataviz.ui);\n },\n options: {\n name: 'RadialGauge',\n transitions: true,\n gaugeArea: { background: '' }\n },\n reflow: function (bbox) {\n var that = this;\n var pointers = that.pointers;\n that.scale.reflow(bbox);\n that._initialPlotArea = that.scale.bbox;\n for (var i = 0; i < pointers.length; i++) {\n pointers[i].reflow(that.scale.arc);\n that._initialPlotArea = Rect.union(that._initialPlotArea, pointers[i].bbox);\n }\n that.fitScale(bbox);\n that.alignScale(bbox);\n that._buildVisual(that.gaugeArea, pointers, that.scale);\n that._draw();\n },\n _buildVisual: function (gaugeArea, pointers, scale) {\n var visuals = new Group();\n var current;\n visuals.append(gaugeArea);\n visuals.append(scale.ticks);\n visuals.append(scale.ranges);\n for (var i = 0; i < pointers.length; i++) {\n current = pointers[i];\n current.render();\n visuals.append(current.elements);\n current.value(current.options.value);\n }\n visuals.append(scale.labelElements);\n this._visuals = visuals;\n },\n fitScale: function (bbox) {\n var that = this;\n var scale = that.scale;\n var arc = scale.arc;\n var plotAreaBox = that._initialPlotArea;\n var step = math.abs(that.getDiff(plotAreaBox, bbox));\n var min = round(step, COORD_PRECISION);\n var max = round(-step, COORD_PRECISION);\n var minDiff, midDiff, maxDiff, mid, oldDiff;\n var staleFlag = 0;\n var i = 0;\n while (i++ < 100) {\n staleFlag = oldDiff === maxDiff ? staleFlag + 1 : 0;\n if (staleFlag > 5) {\n break;\n }\n if (min != mid) {\n minDiff = that.getPlotBox(min, bbox, arc);\n if (0 <= minDiff && minDiff <= 2) {\n break;\n }\n }\n if (max != mid) {\n maxDiff = that.getPlotBox(max, bbox, arc);\n if (0 <= maxDiff && maxDiff <= 2) {\n break;\n }\n }\n if (minDiff > 0 && maxDiff > 0) {\n mid = min * 2;\n } else if (minDiff < 0 && maxDiff < 0) {\n mid = max * 2;\n } else {\n mid = round((min + max) / 2 || 1, COORD_PRECISION);\n }\n midDiff = that.getPlotBox(mid, bbox, arc);\n if (0 <= midDiff && midDiff <= 2) {\n break;\n }\n oldDiff = maxDiff;\n if (midDiff > 0) {\n max = mid;\n maxDiff = midDiff;\n } else {\n min = mid;\n minDiff = midDiff;\n }\n }\n },\n getPlotBox: function (step, bbox, arc) {\n var that = this;\n var scale = that.scale;\n var pointers = that.pointers;\n var radius = arc.getRadiusX();\n arc = arc.clone();\n arc.setRadiusX(radius + step).setRadiusY(radius + step);\n scale.arc = arc;\n scale.reflow(bbox);\n that.plotBbox = scale.bbox;\n for (var i = 0; i < pointers.length; i++) {\n pointers[i].reflow(arc);\n that.plotBbox = Rect.union(that.plotBbox, pointers[i].bbox);\n }\n return that.getDiff(that.plotBbox, bbox);\n },\n getDiff: function (plotBox, box) {\n return math.min(box.width() - plotBox.width(), box.height() - plotBox.height());\n },\n alignScale: function (bbox) {\n var that = this;\n var plotBoxCenter = that.plotBbox.center();\n var boxCenter = bbox.center();\n var paddingX = plotBoxCenter.x - boxCenter.x;\n var paddingY = plotBoxCenter.y - boxCenter.y;\n var scale = that.scale;\n var pointers = that.pointers;\n scale.arc.center.x -= paddingX;\n scale.arc.center.y -= paddingY;\n scale.reflow(bbox);\n for (var i = 0; i < pointers.length; i++) {\n pointers[i].reflow(scale.arc);\n that.plotBbox = Rect.union(scale.bbox, pointers[i].bbox);\n }\n },\n _createModel: function () {\n var that = this;\n var options = that.options;\n var pointers = options.pointer;\n var scale = that.scale = new RadialScale(options.scale);\n var current;\n that.pointers = [];\n pointers = $.isArray(pointers) ? pointers : [pointers];\n for (var i = 0; i < pointers.length; i++) {\n current = new RadialPointer(scale, deepExtend({}, pointers[i], { animation: { transitions: options.transitions } }));\n that.pointers.push(current);\n }\n }\n });\n var LinearGauge = Gauge.extend({\n init: function (element, options) {\n var linearGauge = this;\n Gauge.fn.init.call(linearGauge, element, options);\n kendo.notify(linearGauge, dataviz.ui);\n },\n options: {\n name: 'LinearGauge',\n transitions: true,\n gaugeArea: { background: '' },\n scale: { vertical: true }\n },\n reflow: function (bbox) {\n var that = this;\n var pointers = that.pointers;\n var bboxX = bbox.origin.x;\n var bboxY = bbox.origin.y;\n var bbox2D = new dataviz.Box2D(bboxX, bboxY, bboxX + bbox.width(), bboxY + bbox.height());\n that.scale.reflow(bbox2D);\n for (var i = 0; i < pointers.length; i++) {\n pointers[i].reflow();\n }\n that.bbox = that._getBox(bbox2D);\n that._alignElements();\n that._shrinkElements();\n that._buildVisual();\n that._draw();\n },\n _buildVisual: function () {\n var that = this;\n var visuals = new Group();\n var scaleElements = that.scale.render();\n var pointers = that.pointers;\n var current;\n visuals.append(that.gaugeArea);\n visuals.append(scaleElements);\n for (var i = 0; i < pointers.length; i++) {\n current = pointers[i];\n visuals.append(current.render());\n current.value(current.options.value);\n }\n that._visuals = visuals;\n },\n _createModel: function () {\n var that = this;\n var options = that.options;\n var pointers = options.pointer;\n var scale = that.scale = new LinearScale(options.scale);\n var current, currentOptions;\n that.pointers = [];\n pointers = $.isArray(pointers) ? pointers : [pointers];\n for (var i = 0; i < pointers.length; i++) {\n currentOptions = deepExtend({}, pointers[i], { animation: { transitions: options.transitions } });\n if (currentOptions.shape === ARROW) {\n current = new ArrowLinearPointer(scale, currentOptions);\n } else {\n current = new BarLinearPointer(scale, currentOptions);\n }\n that.pointers.push(current);\n }\n },\n _getSize: function () {\n var gauge = this;\n var element = gauge.element;\n var width = element.width();\n var height = element.height();\n var vertical = gauge.options.scale.vertical;\n if (!width) {\n width = vertical ? DEFAULT_MIN_WIDTH : DEFAULT_WIDTH;\n }\n if (!height) {\n height = vertical ? DEFAULT_HEIGHT : DEFAULT_MIN_HEIGHT;\n }\n return {\n width: width,\n height: height\n };\n },\n _getBox: function (box) {\n var that = this;\n var scale = that.scale;\n var pointers = that.pointers;\n var boxCenter = box.center();\n var plotAreaBox = pointers[0].box.clone().wrap(scale.box);\n var size;\n for (var i = 0; i < pointers.length; i++) {\n plotAreaBox.wrap(pointers[i].box.clone());\n }\n if (scale.options.vertical) {\n size = plotAreaBox.width() / 2;\n plotAreaBox = new Box2D(boxCenter.x - size, box.y1, boxCenter.x + size, box.y2);\n } else {\n size = plotAreaBox.height() / 2;\n plotAreaBox = new Box2D(box.x1, boxCenter.y - size, box.x2, boxCenter.y + size);\n }\n return plotAreaBox;\n },\n _alignElements: function () {\n var that = this;\n var scale = that.scale;\n var pointers = that.pointers;\n var scaleBox = scale.box;\n var box = pointers[0].box.clone().wrap(scale.box);\n var plotAreaBox = that.bbox;\n var diff, i;\n for (i = 0; i < pointers.length; i++) {\n box.wrap(pointers[i].box.clone());\n }\n if (scale.options.vertical) {\n diff = plotAreaBox.center().x - box.center().x;\n scale.reflow(new Box2D(scaleBox.x1 + diff, plotAreaBox.y1, scaleBox.x2 + diff, plotAreaBox.y2));\n } else {\n diff = plotAreaBox.center().y - box.center().y;\n scale.reflow(new Box2D(plotAreaBox.x1, scaleBox.y1 + diff, plotAreaBox.x2, scaleBox.y2 + diff));\n }\n for (i = 0; i < pointers.length; i++) {\n pointers[i].reflow(that.bbox);\n }\n },\n _shrinkElements: function () {\n var that = this;\n var scale = that.scale;\n var pointers = that.pointers;\n var scaleBox = scale.box.clone();\n var pos = scale.options.vertical ? 'y' : 'x';\n var pointerBox = pointers[0].box;\n var i;\n for (i = 0; i < pointers.length; i++) {\n pointerBox.wrap(pointers[i].box.clone());\n }\n scaleBox[pos + 1] += math.max(scaleBox[pos + 1] - pointerBox[pos + 1], 0);\n scaleBox[pos + 2] -= math.max(pointerBox[pos + 2] - scaleBox[pos + 2], 0);\n scale.reflow(scaleBox);\n for (i = 0; i < pointers.length; i++) {\n pointers[i].reflow(that.bbox);\n }\n }\n });\n var LinearScale = NumericAxis.extend({\n init: function (options) {\n var scale = this;\n scale.options = deepExtend({}, scale.options, options);\n scale.options = deepExtend({}, scale.options, { labels: { mirror: scale.options.mirror } });\n scale.options.majorUnit = scale.options.majorUnit || autoMajorUnit(scale.options.min, scale.options.max);\n Axis.fn.init.call(scale, scale.options);\n scale.options.minorUnit = scale.options.minorUnit || scale.options.majorUnit / 10;\n },\n options: {\n min: 0,\n max: 50,\n majorTicks: {\n size: 15,\n align: INSIDE,\n color: BLACK,\n width: DEFAULT_LINE_WIDTH,\n visible: true\n },\n minorTicks: {\n size: 10,\n align: INSIDE,\n color: BLACK,\n width: DEFAULT_LINE_WIDTH,\n visible: true\n },\n line: { width: DEFAULT_LINE_WIDTH },\n labels: {\n position: INSIDE,\n padding: 2\n },\n mirror: false,\n _alignLines: false\n },\n render: function () {\n var that = this;\n var elements = that.elements = new Group();\n var labels = that.renderLabels();\n var scaleLine = that.renderLine();\n var scaleTicks = that.renderTicks();\n var ranges = that.renderRanges();\n elements.append(scaleLine, labels, scaleTicks, ranges);\n return elements;\n },\n renderRanges: function () {\n var that = this;\n var options = that.options;\n var min = options.min;\n var max = options.max;\n var ranges = options.ranges || [];\n var vertical = options.vertical;\n var mirror = options.labels.mirror;\n var elements = new Group();\n var count = ranges.length;\n var rangeSize = options.rangeSize || options.minorTicks.size / 2;\n var range, slot, slotX, slotY, i;\n if (count) {\n for (i = 0; i < count; i++) {\n range = getRange(ranges[i], min, max);\n slot = that.getSlot(range.from, range.to);\n slotX = vertical ? that.lineBox() : slot;\n slotY = vertical ? slot : that.lineBox();\n if (vertical) {\n slotX.x1 -= rangeSize * (mirror ? -1 : 1);\n } else {\n slotY.y2 += rangeSize * (mirror ? -1 : 1);\n }\n elements.append(Path.fromRect(new Rect([\n slotX.x1,\n slotY.y1\n ], [\n slotX.x2 - slotX.x1,\n slotY.y2 - slotY.y1\n ]), {\n fill: {\n color: range.color,\n opacity: range.opacity\n },\n stroke: {}\n }));\n }\n }\n return elements;\n },\n renderLabels: function () {\n var that = this;\n var options = that.options;\n var labels = that.labels;\n var elements = new Group();\n for (var i = 0; i < labels.length; i++) {\n elements.append(_buildLabel(labels[i], options.labels));\n }\n return elements;\n },\n renderLine: function () {\n var that = this;\n var options = that.options;\n var line = options.line;\n var lineBox = that.lineBox();\n var linePath;\n var elements = new Group();\n if (line.width > 0 && line.visible) {\n linePath = new Path({\n stroke: {\n color: line.color,\n dashType: line.dashType,\n width: line.width\n }\n });\n linePath.moveTo(lineBox.x1, lineBox.y1).lineTo(lineBox.x2, lineBox.y2);\n elements.append(linePath);\n }\n return elements;\n },\n renderTicks: function () {\n var that = this;\n var ticks = new Group();\n var options = that.options;\n var lineBox = that.lineBox();\n var mirror = options.labels.mirror;\n var majorUnit = options.majorTicks.visible ? options.majorUnit : 0;\n var tickLineOptions = {\n _alignLines: options._alignLines,\n vertical: options.vertical\n };\n function render(tickPositions, tickOptions) {\n var i, count = tickPositions.length;\n if (tickOptions.visible) {\n for (i = tickOptions.skip; i < count; i += tickOptions.step) {\n if (i % tickOptions.skipUnit === 0) {\n continue;\n }\n tickLineOptions.tickX = mirror ? lineBox.x2 : lineBox.x2 - tickOptions.size;\n tickLineOptions.tickY = mirror ? lineBox.y1 - tickOptions.size : lineBox.y1;\n tickLineOptions.position = tickPositions[i];\n ticks.append(that.renderAxisTick(tickLineOptions, tickOptions));\n }\n }\n }\n render(that.getMajorTickPositions(), options.majorTicks);\n render(that.getMinorTickPositions(), deepExtend({}, { skipUnit: majorUnit / options.minorUnit }, options.minorTicks));\n return ticks;\n },\n renderAxisTick: function (options, tickOptions) {\n var tickX = options.tickX;\n var tickY = options.tickY;\n var position = options.position;\n var start, end, tickPath;\n if (options.vertical) {\n start = new Point(tickX, position);\n end = new Point(tickX + tickOptions.size, position);\n } else {\n start = new Point(position, tickY);\n end = new Point(position, tickY + tickOptions.size);\n }\n tickPath = new Path({\n stroke: {\n color: tickOptions.color,\n width: tickOptions.width\n }\n }).moveTo(start).lineTo(end);\n return tickPath;\n }\n });\n var LinearPointer = Pointer.extend({\n init: function (scale, options) {\n var pointer = this;\n Pointer.fn.init.call(pointer, scale, options);\n pointer.options = deepExtend({ track: { visible: defined(options.track) } }, pointer.options);\n },\n options: {\n shape: BAR_POINTER,\n track: { border: { width: 1 } },\n color: BLACK,\n border: { width: 1 },\n opacity: 1,\n margin: getSpacing(3),\n animation: { type: BAR_POINTER },\n visible: true\n },\n reflow: function () {\n var pointer = this;\n var options = pointer.options;\n var scale = pointer.scale;\n var scaleLine = scale.lineBox();\n var trackSize = options.track.size || options.size;\n var pointerHalfSize = options.size / 2;\n var mirror = scale.options.mirror;\n var margin = getSpacing(options.margin);\n var vertical = scale.options.vertical;\n var space = vertical ? margin[mirror ? 'left' : 'right'] : margin[mirror ? 'bottom' : 'top'];\n var pointerBox, pointerRangeBox, trackBox;\n space = mirror ? -space : space;\n if (vertical) {\n trackBox = new Box2D(scaleLine.x1 + space, scaleLine.y1, scaleLine.x1 + space, scaleLine.y2);\n if (mirror) {\n trackBox.x1 -= trackSize;\n } else {\n trackBox.x2 += trackSize;\n }\n if (options.shape !== BAR_POINTER) {\n pointerRangeBox = new Box2D(scaleLine.x2 + space, scaleLine.y1 - pointerHalfSize, scaleLine.x2 + space, scaleLine.y2 + pointerHalfSize);\n pointerBox = pointerRangeBox;\n }\n } else {\n trackBox = new Box2D(scaleLine.x1, scaleLine.y1 - space, scaleLine.x2, scaleLine.y1 - space);\n if (mirror) {\n trackBox.y2 += trackSize;\n } else {\n trackBox.y1 -= trackSize;\n }\n if (options.shape !== BAR_POINTER) {\n pointerRangeBox = new Box2D(scaleLine.x1 - pointerHalfSize, scaleLine.y1 - space, scaleLine.x2 + pointerHalfSize, scaleLine.y1 - space);\n pointerBox = pointerRangeBox;\n }\n }\n pointer.trackBox = trackBox;\n pointer.pointerRangeBox = pointerRangeBox;\n pointer.box = pointerBox || trackBox.clone().pad(options.border.width);\n },\n getElementOptions: function () {\n var options = this.options;\n return {\n fill: {\n color: options.color,\n opacity: options.opacity\n },\n stroke: defined(options.border) ? {\n color: options.border.width ? options.border.color || options.color : '',\n width: options.border.width,\n dashType: options.border.dashType,\n opacity: options.opacity\n } : null\n };\n },\n _margin: function () {\n var pointer = this;\n var options = pointer.options;\n var scale = pointer.scale;\n var mirror = scale.options.mirror;\n var margin = getSpacing(options.margin);\n var vertical = scale.options.vertical;\n var space = vertical ? margin[mirror ? 'left' : 'right'] : margin[mirror ? 'bottom' : 'top'];\n return space;\n }\n });\n var ArrowLinearPointer = LinearPointer.extend({\n init: function (scale, options) {\n LinearPointer.fn.init.call(this, scale, options);\n if (this.options.size === undefined) {\n this.options.size = this.scale.options.majorTicks.size * 0.6;\n }\n },\n pointerShape: function () {\n var that = this;\n var options = that.options;\n var scale = that.scale;\n var size = options.size;\n var vertical = scale.options.vertical;\n var halfSize = size / 2;\n var sign = scale.options.mirror ? -1 : 1;\n var reverse = scale.options.reverse;\n var pos, shape;\n if (vertical) {\n pos = reverse ? 'y2' : 'y1';\n shape = [\n new Point(0, 0 - halfSize),\n new Point(0 - sign * size, 0),\n new Point(0, 0 + halfSize)\n ];\n } else {\n pos = reverse ? 'x1' : 'x2';\n shape = [\n new Point(0 - halfSize, 0),\n new Point(0, 0 + sign * size),\n new Point(0 + halfSize, 0)\n ];\n }\n return shape;\n },\n repaint: function () {\n var that = this;\n var scale = that.scale;\n var options = that.options;\n var animation = new ArrowLinearPointerAnimation(that.elements, deepExtend(options.animation, {\n vertical: scale.options.vertical,\n mirror: scale.options.mirror,\n margin: that._margin(options.margin),\n from: scale.getSlot(options._oldValue),\n to: scale.getSlot(options.value)\n }));\n if (options.animation.transitions === false) {\n animation.options.duration = 0;\n }\n animation.setup();\n animation.play();\n },\n render: function () {\n var that = this;\n var options = that.options;\n var elements = new Group();\n var scale = that.scale;\n var elementOptions = that.getElementOptions();\n var shape = that.pointerShape(options.value);\n options.animation.type = ARROW_POINTER;\n elements = new Path({\n stroke: elementOptions.stroke,\n fill: elementOptions.fill\n }).moveTo(shape[0]).lineTo(shape[1]).lineTo(shape[2]).close();\n var slot = scale.getSlot(options.value);\n elements.transform(geo.transform().translate(slot.x1, slot.y1));\n that.elements = elements;\n return elements;\n }\n });\n var BarLinearPointer = LinearPointer.extend({\n init: function (scale, options) {\n LinearPointer.fn.init.call(this, scale, options);\n if (this.options.size === undefined) {\n this.options.size = this.scale.options.majorTicks.size * 0.3;\n }\n },\n pointerShape: function (value) {\n var that = this;\n var options = that.options;\n var scale = that.scale;\n var vertical = scale.options.vertical;\n var mirror = scale.options.mirror;\n var dir = mirror == vertical ? -1 : 1;\n var size = options.size * dir;\n var minSlot = scale.getSlot(scale.options.min);\n var slot = scale.getSlot(value);\n var axis = vertical ? Y : X;\n var sizeAxis = vertical ? X : Y;\n var margin = that._margin() * dir;\n var p1 = new Point();\n p1[axis] = minSlot[axis + '1'];\n p1[sizeAxis] = minSlot[sizeAxis + '1'];\n var p2 = new Point();\n p2[axis] = slot[axis + '1'];\n p2[sizeAxis] = slot[sizeAxis + '1'];\n if (vertical) {\n p1.translate(margin, 0);\n p2.translate(margin, 0);\n } else {\n p1.translate(0, margin);\n p2.translate(0, margin);\n }\n var p3 = p2.clone();\n var p4 = p1.clone();\n if (vertical) {\n p3.translate(size, 0);\n p4.translate(size, 0);\n } else {\n p3.translate(0, size);\n p4.translate(0, size);\n }\n return [\n p1,\n p2,\n p3,\n p4\n ];\n },\n repaint: function () {\n var that = this;\n var scale = that.scale;\n var options = that.options;\n var shape = that.pointerShape(options.value);\n var pointerPath = that.elements.children[0];\n var oldShape = that.pointerShape(options._oldValue);\n pointerPath.moveTo(shape[0]).lineTo(shape[1]).lineTo(shape[2]).lineTo(shape[3]).close();\n var animation = new BarLinearPointerAnimation(pointerPath, deepExtend(options.animation, {\n reverse: scale.options.reverse,\n vertical: scale.options.vertical,\n oldPoints: [\n oldShape[1],\n oldShape[2]\n ],\n newPoints: [\n shape[1],\n shape[2]\n ]\n }));\n if (options.animation.transitions === false) {\n animation.options.duration = 0;\n }\n animation.setup();\n animation.play();\n },\n render: function () {\n var that = this;\n var group = new Group();\n var elementOptions = that.getElementOptions();\n var pointer = new Path({\n stroke: elementOptions.stroke,\n fill: elementOptions.fill\n });\n group.append(pointer);\n that.elements = group;\n return group;\n }\n });\n var RadialPointerAnimation = draw.Animation.extend({\n init: function (element, options) {\n draw.Animation.fn.init.call(this, element, options);\n options = this.options;\n options.duration = math.max(math.abs(options.newAngle - options.oldAngle) / options.duration * 1000, 1);\n },\n options: {\n easing: LINEAR,\n duration: ANGULAR_SPEED\n },\n step: function (pos) {\n var anim = this;\n var options = anim.options;\n var angle = interpolateValue(options.oldAngle, options.newAngle, pos);\n anim.element.transform(geo.transform().rotate(angle, options.center));\n }\n });\n draw.AnimationFactory.current.register(RADIAL_POINTER, RadialPointerAnimation);\n var ArrowLinearPointerAnimation = draw.Animation.extend({\n options: {\n easing: LINEAR,\n duration: LINEAR_SPEED\n },\n setup: function () {\n var options = this.options;\n var margin = options.margin;\n var from = options.from;\n var to = options.to;\n var axis = options.vertical ? 'x1' : 'y1';\n if (options.mirror == options.vertical) {\n from[axis] -= margin;\n to[axis] -= margin;\n } else {\n from[axis] += margin;\n to[axis] += margin;\n }\n var fromScale = this.fromScale = new Point(from.x1, from.y1);\n var toScale = this.toScale = new Point(to.x1, to.y1);\n if (options.duration !== 0) {\n options.duration = math.max(fromScale.distanceTo(toScale) / options.duration * 1000, 1);\n }\n },\n step: function (pos) {\n var translateX = interpolateValue(this.fromScale.x, this.toScale.x, pos);\n var translateY = interpolateValue(this.fromScale.y, this.toScale.y, pos);\n this.element.transform(geo.transform().translate(translateX, translateY));\n }\n });\n draw.AnimationFactory.current.register(ARROW_POINTER, ArrowLinearPointerAnimation);\n var BarLinearPointerAnimation = draw.Animation.extend({\n options: {\n easing: LINEAR,\n speed: LINEAR_SPEED\n },\n setup: function () {\n var options = this.options;\n var newPoints = options.newPoints;\n var oldPoints = options.oldPoints;\n var axis = this.axis = options.vertical ? Y : X;\n var to = this.to = newPoints[0][axis];\n var from = this.from = oldPoints[0][axis];\n if (options.duration !== 0) {\n options.duration = math.max(math.abs(to - from) / options.speed * 1000, 1);\n }\n this._set(from);\n },\n step: function (pos) {\n var value = interpolateValue(this.from, this.to, pos);\n this._set(value);\n },\n _set: function (value) {\n var setter = 'set' + this.axis.toUpperCase();\n var points = this.options.newPoints;\n points[0][setter](value);\n points[1][setter](value);\n }\n });\n draw.AnimationFactory.current.register(BAR_POINTER, BarLinearPointerAnimation);\n function _buildLabel(label, options) {\n var labelBox = label.box;\n var textBox = label.children[0].box;\n var border = options.border || {};\n var background = options.background || '';\n var elements = new Group();\n var styleBox, styleGeometry, wrapper;\n wrapper = Path.fromRect(new Rect([\n labelBox.x1,\n labelBox.y1\n ], [\n labelBox.width(),\n labelBox.height()\n ]), { stroke: {} });\n var text = new Text(label.text, new Point(textBox.x1, textBox.y1), {\n font: options.font,\n fill: { color: options.color }\n });\n styleGeometry = _pad(text.bbox().clone(), options.padding);\n styleBox = Path.fromRect(styleGeometry, {\n stroke: {\n color: border.width ? border.color : '',\n width: border.width,\n dashType: border.dashType,\n lineJoin: 'round',\n lineCap: 'round'\n },\n fill: { color: background }\n });\n elements.append(wrapper);\n elements.append(styleBox);\n elements.append(text);\n return elements;\n }\n function getRange(range, min, max) {\n var from = defined(range.from) ? range.from : MIN_VALUE;\n var to = defined(range.to) ? range.to : MAX_VALUE;\n range.from = math.max(math.min(to, from), min);\n range.to = math.min(math.max(to, from), max);\n return range;\n }\n function _pad(bbox, value) {\n var origin = bbox.getOrigin();\n var size = bbox.getSize();\n var spacing = getSpacing(value);\n bbox.setOrigin([\n origin.x - spacing.left,\n origin.y - spacing.top\n ]);\n bbox.setSize([\n size.width + (spacing.left + spacing.right),\n size.height + (spacing.top + spacing.bottom)\n ]);\n return bbox;\n }\n function _unpad(bbox, value) {\n var spacing = getSpacing(value);\n spacing.left = -spacing.left;\n spacing.top = -spacing.top;\n spacing.right = -spacing.right;\n spacing.bottom = -spacing.bottom;\n return _pad(bbox, spacing);\n }\n dataviz.ui.plugin(RadialGauge);\n dataviz.ui.plugin(LinearGauge);\n dataviz.ExportMixin.extend(Gauge.fn);\n deepExtend(dataviz, {\n Gauge: Gauge,\n RadialPointer: RadialPointer,\n LinearPointer: LinearPointer,\n ArrowLinearPointer: ArrowLinearPointer,\n BarLinearPointer: BarLinearPointer,\n LinearScale: LinearScale,\n RadialScale: RadialScale,\n LinearGauge: LinearGauge,\n RadialGauge: RadialGauge\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/"}