\").css({\n // position : \"absolute\",\n // left : margin.left,\n // top : margin.top,\n // width : pageWidth,\n // height : pageHeight,\n // boxSizing : \"border-box\",\n // background: \"rgba(255, 255, 0, 0.5)\"\n // //border : \"1px solid red\"\n // }).appendTo(page);\n\n if (options && options.pageClassName) {\n page.className = options.pageClassName;\n }\n pages.push(page);\n return page;\n }\n\n function fallsOnMargin(thing) {\n var box = thing.getBoundingClientRect();\n if (box.width === 0 || box.height === 0) {\n // I'd say an element with dimensions zero fits on current page.\n return 0;\n }\n var top = copy.getBoundingClientRect().top;\n var available = pageHeight - adjust;\n return (box.height > available) ? 3\n : (box.top - top > available) ? 1\n : (box.bottom - top > available) ? 2\n : 0;\n }\n\n function splitText(node, isFirst) {\n if (!/\\S/.test(node.data)) {\n return;\n }\n\n var len = node.data.length;\n var range = doc.createRange();\n range.selectNodeContents(node);\n var fall = fallsOnMargin(range);\n if (!fall) {\n return; // the whole text fits on current page\n }\n\n var nextnode = node;\n if (fall == 1) {\n // starts on next page, break before anyway.\n if (isFirst) {\n // avoid leaving an empty
,
, etc. on previous page.\n breakAtElement(node.parentNode);\n } else {\n breakAtElement(node);\n }\n }\n else {\n (function findEOP(min, pos, max) {\n range.setEnd(node, pos);\n if (min == pos || pos == max) {\n return pos;\n }\n if (fallsOnMargin(range)) {\n return findEOP(min, (min + pos) >> 1, pos);\n } else {\n return findEOP(pos, (pos + max) >> 1, max);\n }\n })(0, len >> 1, len);\n\n if (!/\\S/.test(range.toString()) && isFirst) {\n // avoid leaving an empty ,
, etc. on previous page.\n breakAtElement(node.parentNode);\n } else {\n // This is only needed for IE, but it feels cleaner to do it anyway. Without\n // it, IE will truncate a very long text (playground/pdf-long-text-2.html).\n nextnode = node.splitText(range.endOffset);\n\n var page = makePage();\n range.setStartBefore(copy);\n page.appendChild(range.extractContents());\n copy.parentNode.insertBefore(page, copy);\n preventBulletOnListItem(nextnode.parentNode);\n }\n }\n\n splitText(nextnode);\n }\n\n function preventBulletOnListItem(el) {\n // set a hint on continued LI elements, to tell the\n // renderer not to draw the bullet again.\n // https://github.com/telerik/kendo-ui-core/issues/2732\n var li = closest(el, \"li\");\n if (li) {\n li.setAttribute(\"kendo-no-bullet\", \"1\");\n preventBulletOnListItem(li.parentNode);\n }\n }\n }\n\n return promise;\n}\n\n// This is needed for the Spreadsheet print functionality. Since\n// there we only need to draw text, this cuts through the ceremony\n// of drawDOM/renderElement and renders the text node directly.\nfunction drawText(element) {\n var group = new Group();\n nodeInfo._clipbox = false;\n nodeInfo._matrix = Matrix.unit();\n nodeInfo._stackingContext = {\n element: element,\n group: group\n };\n pushNodeInfo(element, getComputedStyle$1(element), group);\n if (element.firstChild.nodeType == 3 /* Text */) {\n // avoid the penalty of renderElement\n renderText(element, element.firstChild, group);\n } else {\n _renderElement(element, group);\n }\n popNodeInfo();\n return group;\n}\n\nvar parseBackgroundImage = (function(){\n var tok_linear_gradient = /^((-webkit-|-moz-|-o-|-ms-)?linear-gradient\\s*)\\(/;\n //var tok_radial_gradient = /^((-webkit-|-moz-|-o-|-ms-)?radial-gradient\\s*)\\(/;\n var tok_percent = /^([-0-9.]+%)/;\n var tok_length = /^([-0-9.]+px)/;\n var tok_keyword = /^(left|right|top|bottom|to|center)\\W/;\n var tok_angle = /^([-0-9.]+(deg|grad|rad|turn)|0)/;\n var tok_whitespace = /^(\\s+)/;\n var tok_popen = /^(\\()/;\n var tok_pclose = /^(\\))/;\n var tok_comma = /^(,)/;\n var tok_url = /^(url)\\(/;\n var tok_content = /^(.*?)\\)/;\n\n var cache1 = {}, cache2 = {};\n\n function parse(input) {\n var orig = input;\n if (hasOwnProperty(cache1, orig)) {\n return cache1[orig];\n }\n function skip_ws() {\n var m = tok_whitespace.exec(input);\n if (m) {\n input = input.substr(m[1].length);\n }\n }\n function read(token) {\n skip_ws();\n var m = token.exec(input);\n if (m) {\n input = input.substr(m[1].length);\n return m[1];\n }\n }\n\n function read_stop() {\n var color = kendo.parseColor(input, true);\n var length, percent;\n if (color) {\n var match =\n /^#[0-9a-f]+/i.exec(input) ||\n /^rgba?\\(.*?\\)/i.exec(input) ||\n /^..*?\\b/.exec(input); // maybe named color\n input = input.substr(match[0].length);\n color = color.toRGB();\n if (!(length = read(tok_length))) {\n percent = read(tok_percent);\n }\n return { color: color, length: length, percent: percent };\n }\n }\n\n function read_linear_gradient(propName) {\n var angle;\n var to1, to2;\n var stops = [];\n var reverse = false;\n\n if (read(tok_popen)) {\n // 1. [ || to , ]?\n angle = read(tok_angle);\n if (angle == \"0\") {\n angle = \"0deg\"; // Edge\n }\n if (angle) {\n angle = parseAngle(angle);\n read(tok_comma);\n }\n else {\n to1 = read(tok_keyword);\n if (to1 == \"to\") {\n to1 = read(tok_keyword);\n } else if (to1 && /^-/.test(propName)) {\n reverse = true;\n }\n to2 = read(tok_keyword);\n read(tok_comma);\n }\n\n if (/-moz-/.test(propName) && angle == null && to1 == null) {\n var x = read(tok_percent), y = read(tok_percent);\n reverse = true;\n if (x == \"0%\") {\n to1 = \"left\";\n } else if (x == \"100%\") {\n to1 = \"right\";\n }\n if (y == \"0%\") {\n to2 = \"top\";\n } else if (y == \"100%\") {\n to2 = \"bottom\";\n }\n read(tok_comma);\n }\n\n // 2. color stops\n while (input && !read(tok_pclose)) {\n var stop = read_stop();\n if (!stop) {\n break;\n }\n stops.push(stop);\n read(tok_comma);\n }\n\n return {\n type : \"linear\",\n angle : angle,\n to : to1 && to2 ? to1 + \" \" + to2 : to1 ? to1 : to2 ? to2 : null,\n stops : stops,\n reverse : reverse\n };\n }\n }\n\n function read_url() {\n if (read(tok_popen)) {\n var url = read(tok_content);\n url = url.replace(/^['\"]+|[\"']+$/g, \"\");\n read(tok_pclose);\n return { type: \"url\", url: url };\n }\n }\n\n var tok;\n\n if ((tok = read(tok_linear_gradient))) {\n tok = read_linear_gradient(tok);\n }\n else if ((tok = read(tok_url))) {\n tok = read_url();\n }\n\n return (cache1[orig] = tok || { type: \"none\" });\n }\n\n return function(input) {\n if (hasOwnProperty(cache2, input)) {\n return cache2[input];\n }\n return (cache2[input] = splitProperty(input).map(parse));\n };\n})();\n\nvar splitProperty = (function(){\n var cache = {};\n return function(input, separator) {\n if (!separator) {\n separator = /^\\s*,\\s*/;\n }\n\n var cacheKey = input + separator;\n\n if (hasOwnProperty(cache, cacheKey)) {\n return cache[cacheKey];\n }\n\n var ret = [];\n var last$$1 = 0, pos = 0;\n var in_paren = 0;\n var in_string = false;\n var m;\n\n function looking_at(rx) {\n return (m = rx.exec(input.substr(pos)));\n }\n\n function trim(str) {\n return str.replace(/^\\s+|\\s+$/g, \"\");\n }\n\n while (pos < input.length) {\n if (!in_string && looking_at(/^[\\(\\[\\{]/)) {\n in_paren++;\n pos++;\n }\n else if (!in_string && looking_at(/^[\\)\\]\\}]/)) {\n in_paren--;\n pos++;\n }\n else if (!in_string && looking_at(/^[\\\"\\']/)) {\n in_string = m[0];\n pos++;\n }\n else if (in_string == \"'\" && looking_at(/^\\\\\\'/)) {\n pos += 2;\n }\n else if (in_string == '\"' && looking_at(/^\\\\\\\"/)) {\n pos += 2;\n }\n else if (in_string == \"'\" && looking_at(/^\\'/)) {\n in_string = false;\n pos++;\n }\n else if (in_string == '\"' && looking_at(/^\\\"/)) {\n in_string = false;\n pos++;\n }\n else if (looking_at(separator)) {\n if (!in_string && !in_paren && pos > last$$1) {\n ret.push(trim(input.substring(last$$1, pos)));\n last$$1 = pos + m[0].length;\n }\n pos += m[0].length;\n }\n else {\n pos++;\n }\n }\n if (last$$1 < pos) {\n ret.push(trim(input.substring(last$$1, pos)));\n }\n return (cache[cacheKey] = ret);\n };\n})();\n\nvar getFontURL = (function(cache){\n return function(el){\n // XXX: for IE we get here the whole cssText of the rule,\n // because the computedStyle.src is empty. Next time we need\n // to fix these regexps we better write a CSS parser. :-\\\n var url = cache[el];\n if (!url) {\n var m;\n if ((m = /url\\((['\"]?)([^'\")]*?)\\1\\)\\s+format\\((['\"]?)truetype\\3\\)/.exec(el))) {\n url = cache[el] = m[2];\n } else if ((m = /url\\((['\"]?)([^'\")]*?\\.ttf)\\1\\)/.exec(el))) {\n url = cache[el] = m[2];\n }\n }\n return url;\n };\n})(Object.create ? Object.create(null) : {});\n\nvar getFontHeight = (function(cache){\n return function(font) {\n var height = cache[font];\n if (height == null) {\n height = cache[font] = kendoUtil.measureText(\"Mapq\", { font: font }).height;\n }\n return height;\n };\n})(Object.create ? Object.create(null) : {});\n\nfunction getFontFaces(doc) {\n if (doc == null) {\n doc = document;\n }\n var result = {};\n for (var i = 0; i < doc.styleSheets.length; ++i) {\n doStylesheet(doc.styleSheets[i]);\n }\n return result;\n function doStylesheet(ss) {\n if (ss) {\n var rules = null;\n try {\n rules = ss.cssRules;\n } catch (ex) {}\n if (rules) {\n addRules(ss, rules);\n }\n }\n }\n function findFonts(rule) {\n var src = getPropertyValue(rule.style, \"src\");\n if (src) {\n return splitProperty(src).reduce(function(a, el){\n var font = getFontURL(el);\n if (font) {\n a.push(font);\n }\n return a;\n }, []);\n } else {\n // Internet Explorer\n // XXX: this is gross. should work though for valid CSS.\n var font = getFontURL(rule.cssText);\n return font ? [ font ] : [];\n }\n }\n function addRules(styleSheet, rules) {\n for (var i = 0; i < rules.length; ++i) {\n var r = rules[i];\n switch (r.type) {\n case 3: // CSSImportRule\n doStylesheet(r.styleSheet);\n break;\n case 5: // CSSFontFaceRule\n var style = r.style;\n var family = splitProperty(getPropertyValue(style, \"font-family\"));\n var bold = /^([56789]00|bold)$/i.test(getPropertyValue(style, \"font-weight\"));\n var italic = \"italic\" == getPropertyValue(style, \"font-style\");\n var src = findFonts(r);\n if (src.length > 0) {\n addRule(styleSheet, family, bold, italic, src[0]);\n }\n }\n }\n }\n function addRule(styleSheet, names, bold, italic, url) {\n // We get full resolved absolute URLs in Chrome, but sadly\n // not in Firefox.\n if (!(/^data:/i.test(url))) {\n if (!(/^[^\\/:]+:\\/\\//.test(url) || /^\\//.test(url))) {\n url = String(styleSheet.href).replace(/[^\\/]*$/, \"\") + url;\n }\n }\n names.forEach(function(name){\n name = name.replace(/^(['\"]?)(.*?)\\1$/, \"$2\"); // it's quoted\n if (bold) {\n name += \"|bold\";\n }\n if (italic) {\n name += \"|italic\";\n }\n result[name] = url;\n });\n }\n}\n\nfunction hasOwnProperty(obj, key) {\n return Object.prototype.hasOwnProperty.call(obj, key);\n}\n\nfunction getCounter(name) {\n name = \"_counter_\" + name;\n return nodeInfo[name];\n}\n\nfunction getAllCounters(name) {\n var values = [], p = nodeInfo;\n name = \"_counter_\" + name;\n while (p) {\n if (hasOwnProperty(p, name)) {\n values.push(p[name]);\n }\n p = Object.getPrototypeOf(p);\n }\n return values.reverse();\n}\n\nfunction incCounter(name, inc) {\n var p = nodeInfo;\n name = \"_counter_\" + name;\n while (p && !hasOwnProperty(p, name)) {\n p = Object.getPrototypeOf(p);\n }\n if (!p) {\n p = nodeInfo._root;\n }\n p[name] = (p[name] || 0) + (inc == null ? 1 : inc);\n}\n\nfunction resetCounter(name, val) {\n name = \"_counter_\" + name;\n nodeInfo[name] = val == null ? 0 : val;\n}\n\nfunction doCounters(a, f, def) {\n for (var i = 0; i < a.length;) {\n var name = a[i++];\n var val = parseFloat(a[i]);\n if (isNaN(val)) {\n f(name, def);\n } else {\n f(name, val);\n ++i;\n }\n }\n}\n\nfunction updateCounters(style) {\n var counterReset = getPropertyValue(style, \"counter-reset\");\n if (counterReset) {\n doCounters(splitProperty(counterReset, /^\\s+/), resetCounter, 0);\n }\n var counterIncrement = getPropertyValue(style, \"counter-increment\");\n if (counterIncrement) {\n doCounters(splitProperty(counterIncrement, /^\\s+/), incCounter, 1);\n }\n}\n\nfunction parseColor$1(str, css) {\n var color = kendo.parseColor(str, true);\n if (color) {\n color = color.toRGB();\n if (css) {\n color = color.toCssRgba();\n } else if (color.a === 0) {\n color = null;\n }\n }\n return color;\n}\n\nfunction whenImagesAreActuallyLoaded(elements, callback) {\n var pending = 0;\n elements.forEach(function(el){\n var images = el.querySelectorAll(\"img\");\n for (var i = 0; i < images.length; ++i) {\n var img = images[i];\n if (!img.complete) {\n pending++;\n img.onload = img.onerror = next;\n }\n }\n });\n if (!pending) {\n next();\n }\n function next() {\n if (--pending <= 0) {\n callback();\n }\n }\n}\n\nfunction cacheImages(elements, callback) {\n var urls = [];\n function add(url) {\n if (!IMAGE_CACHE[url]) {\n IMAGE_CACHE[url] = true;\n urls.push(url);\n }\n }\n\n elements.forEach(function dive(element){\n if (/^img$/i.test(element.tagName)) {\n add(element.src);\n }\n parseBackgroundImage(\n getPropertyValue(\n getComputedStyle$1(element), \"background-image\"\n )\n ).forEach(function(bg){\n if (bg.type == \"url\") {\n add(bg.url);\n }\n });\n\n if (element.children) {\n slice$1$1(element.children).forEach(dive);\n }\n });\n\n var count = urls.length;\n function next() {\n if (--count <= 0) {\n // Even though we cached them, they simply won't be available immediately in the newly\n // created DOM. Previously we'd allow a 10ms timeout, but that's arbitrary and clearly\n // not working in all cases (https://github.com/telerik/kendo/issues/5399), so this\n // function will wait for their .complete attribute.\n whenImagesAreActuallyLoaded(elements, callback);\n }\n }\n if (count === 0) {\n next();\n }\n urls.forEach(function(url){\n var img = IMAGE_CACHE[url] = new window.Image();\n if (!(/^data:/i.test(url))) {\n img.crossOrigin = \"Anonymous\";\n }\n img.src = url;\n if (img.complete) {\n next();\n } else {\n img.onload = next;\n img.onerror = function() {\n IMAGE_CACHE[url] = null;\n next();\n };\n }\n });\n}\n\nfunction alphaNumeral(n) {\n var result = \"\";\n do {\n var r = n % 26;\n result = String.fromCharCode(97 + r) + result;\n n = Math.floor(n / 26);\n } while (n > 0);\n return result;\n}\n\nfunction pushNodeInfo(element, style, group) {\n nodeInfo = Object.create(nodeInfo);\n nodeInfo[element.tagName.toLowerCase()] = {\n element: element,\n style: style\n };\n var decoration = getPropertyValue(style, \"text-decoration\");\n if (decoration && decoration != \"none\") {\n var color = getPropertyValue(style, \"color\");\n decoration.split(/\\s+/g).forEach(function(name){\n if (!nodeInfo[name]) {\n nodeInfo[name] = color;\n }\n });\n }\n\n if (createsStackingContext(style)) {\n nodeInfo._stackingContext = {\n element: element,\n group: group\n };\n }\n}\n\nfunction popNodeInfo() {\n nodeInfo = Object.getPrototypeOf(nodeInfo);\n}\n\nfunction updateClipbox(path) {\n if (nodeInfo._clipbox != null) {\n var box = path.bbox(nodeInfo._matrix);\n if (nodeInfo._clipbox) {\n nodeInfo._clipbox = Rect.intersect(nodeInfo._clipbox, box);\n } else {\n nodeInfo._clipbox = box;\n }\n }\n}\n\nfunction emptyClipbox() {\n var cb = nodeInfo._clipbox;\n if (cb == null) {\n return true;\n }\n if (cb) {\n return cb.width() === 0 || cb.height() === 0;\n }\n}\n\nfunction createsStackingContext(style) {\n function prop(name) { return getPropertyValue(style, name); }\n if (prop(\"transform\") != \"none\" ||\n prop(\"position\") != \"static\" ||\n prop(\"z-index\") != \"auto\" ||\n prop(\"opacity\") < 1) {\n return true;\n }\n}\n\nfunction getComputedStyle$1(element, pseudoElt) {\n return window.getComputedStyle(element, pseudoElt || null);\n}\n\nfunction getPropertyValue(style, prop, defa) {\n var val = style.getPropertyValue(prop);\n if (val == null || val === \"\") {\n if (browser.webkit) {\n val = style.getPropertyValue(\"-webkit-\" + prop );\n } else if (browser.mozilla) {\n val = style.getPropertyValue(\"-moz-\" + prop );\n } else if (browser.opera) {\n val = style.getPropertyValue(\"-o-\" + prop);\n } else if (microsoft) {\n val = style.getPropertyValue(\"-ms-\" + prop);\n }\n }\n if (arguments.length > 2 && (val == null || val === \"\")) {\n return defa;\n } else {\n return val;\n }\n}\n\nfunction pleaseSetPropertyValue(style, prop, value, important) {\n style.setProperty(prop, value, important);\n if (browser.webkit) {\n style.setProperty(\"-webkit-\" + prop, value, important);\n } else if (browser.mozilla) {\n style.setProperty(\"-moz-\" + prop, value, important);\n } else if (browser.opera) {\n style.setProperty(\"-o-\" + prop, value, important);\n } else if (microsoft) {\n style.setProperty(\"-ms-\" + prop, value, important);\n prop = \"ms\" + prop.replace(/(^|-)([a-z])/g, function(s, p1, p2){\n return p1 + p2.toUpperCase();\n });\n style[prop] = value;\n }\n}\n\nfunction getBorder(style, side) {\n side = \"border-\" + side;\n return {\n width: parseFloat(getPropertyValue(style, side + \"-width\")),\n style: getPropertyValue(style, side + \"-style\"),\n color: parseColor$1(getPropertyValue(style, side + \"-color\"), true)\n };\n}\n\nfunction saveStyle(element, func) {\n var prev = element.style.cssText;\n var result = func();\n element.style.cssText = prev;\n return result;\n}\n\nfunction getBorderRadius(style, side) {\n var r = getPropertyValue(style, \"border-\" + side + \"-radius\").split(/\\s+/g).map(parseFloat);\n if (r.length == 1) {\n r.push(r[0]);\n }\n return sanitizeRadius({ x: r[0], y: r[1] });\n}\n\nfunction getContentBox(element) {\n var box = element.getBoundingClientRect();\n box = innerBox(box, \"border-*-width\", element);\n box = innerBox(box, \"padding-*\", element);\n return box;\n}\n\nfunction innerBox(box, prop, element) {\n var style, wt, wr, wb, wl;\n if (typeof prop == \"string\") {\n style = getComputedStyle$1(element);\n wt = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"top\")));\n wr = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"right\")));\n wb = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"bottom\")));\n wl = parseFloat(getPropertyValue(style, prop.replace(\"*\", \"left\")));\n }\n else if (typeof prop == \"number\") {\n wt = wr = wb = wl = prop;\n }\n return {\n top : box.top + wt,\n right : box.right - wr,\n bottom : box.bottom - wb,\n left : box.left + wl,\n width : box.right - box.left - wr - wl,\n height : box.bottom - box.top - wb - wt\n };\n}\n\nfunction getTransform(style) {\n var transform$$1 = getPropertyValue(style, \"transform\");\n if (transform$$1 == \"none\") {\n return null;\n }\n var matrix = /^\\s*matrix\\(\\s*(.*?)\\s*\\)\\s*$/.exec(transform$$1);\n if (matrix) {\n var origin = getPropertyValue(style, \"transform-origin\");\n matrix = matrix[1].split(/\\s*,\\s*/g).map(parseFloat);\n origin = origin.split(/\\s+/g).map(parseFloat);\n return {\n matrix: matrix,\n origin: origin\n };\n }\n}\n\nfunction radiansToDegrees(radians) {\n return ((180 * radians) / Math.PI) % 360;\n}\n\nfunction parseAngle(angle) {\n var num = parseFloat(angle);\n if (/grad$/.test(angle)) {\n return Math.PI * num / 200;\n }\n else if (/rad$/.test(angle)) {\n return num;\n }\n else if (/turn$/.test(angle)) {\n return Math.PI * num * 2;\n }\n else if (/deg$/.test(angle)) {\n return Math.PI * num / 180;\n }\n}\n\nfunction setTransform$1(shape, m) {\n m = new Matrix(m[0], m[1], m[2], m[3], m[4], m[5]);\n shape.transform(m);\n return m;\n}\n\nfunction setClipping(shape, clipPath) {\n shape.clip(clipPath);\n}\n\nfunction addArcToPath(path, x, y, options) {\n var points = new Arc$2([ x, y ], options).curvePoints(), i = 1;\n while (i < points.length) {\n path.curveTo(points[i++], points[i++], points[i++]);\n }\n}\n\nfunction sanitizeRadius(r) {\n if (r.x <= 0 || r.y <= 0) {\n r.x = r.y = 0;\n }\n return r;\n}\n\nfunction adjustBorderRadiusForBox(box, rTL, rTR, rBR, rBL) {\n // adjust border radiuses such that the sum of adjacent\n // radiuses is not bigger than the length of the side.\n // seems the correct algorithm is variant (3) from here:\n // http://www.w3.org/Style/CSS/Tracker/issues/29?changelog\n var tl_x = Math.max(0, rTL.x), tl_y = Math.max(0, rTL.y);\n var tr_x = Math.max(0, rTR.x), tr_y = Math.max(0, rTR.y);\n var br_x = Math.max(0, rBR.x), br_y = Math.max(0, rBR.y);\n var bl_x = Math.max(0, rBL.x), bl_y = Math.max(0, rBL.y);\n\n var f = Math.min(\n box.width / (tl_x + tr_x),\n box.height / (tr_y + br_y),\n box.width / (br_x + bl_x),\n box.height / (bl_y + tl_y)\n );\n\n if (f < 1) {\n tl_x *= f; tl_y *= f;\n tr_x *= f; tr_y *= f;\n br_x *= f; br_y *= f;\n bl_x *= f; bl_y *= f;\n }\n\n return {\n tl: { x: tl_x, y: tl_y },\n tr: { x: tr_x, y: tr_y },\n br: { x: br_x, y: br_y },\n bl: { x: bl_x, y: bl_y }\n };\n}\n\nfunction elementRoundBox(element, box, type) {\n var style = getComputedStyle$1(element);\n\n var rTL = getBorderRadius(style, \"top-left\");\n var rTR = getBorderRadius(style, \"top-right\");\n var rBL = getBorderRadius(style, \"bottom-left\");\n var rBR = getBorderRadius(style, \"bottom-right\");\n\n if (type == \"padding\" || type == \"content\") {\n var bt = getBorder(style, \"top\");\n var br = getBorder(style, \"right\");\n var bb = getBorder(style, \"bottom\");\n var bl = getBorder(style, \"left\");\n rTL.x -= bl.width; rTL.y -= bt.width;\n rTR.x -= br.width; rTR.y -= bt.width;\n rBR.x -= br.width; rBR.y -= bb.width;\n rBL.x -= bl.width; rBL.y -= bb.width;\n if (type == \"content\") {\n var pt = parseFloat(getPropertyValue(style, \"padding-top\"));\n var pr = parseFloat(getPropertyValue(style, \"padding-right\"));\n var pb = parseFloat(getPropertyValue(style, \"padding-bottom\"));\n var pl = parseFloat(getPropertyValue(style, \"padding-left\"));\n rTL.x -= pl; rTL.y -= pt;\n rTR.x -= pr; rTR.y -= pt;\n rBR.x -= pr; rBR.y -= pb;\n rBL.x -= pl; rBL.y -= pb;\n }\n }\n\n if (typeof type == \"number\") {\n rTL.x -= type; rTL.y -= type;\n rTR.x -= type; rTR.y -= type;\n rBR.x -= type; rBR.y -= type;\n rBL.x -= type; rBL.y -= type;\n }\n\n return roundBox(box, rTL, rTR, rBR, rBL);\n}\n\n// Create a drawing.Path for a rounded rectangle. Receives the\n// bounding box and the border-radiuses in CSS order (top-left,\n// top-right, bottom-right, bottom-left). The radiuses must be\n// objects containing x (horiz. radius) and y (vertical radius).\nfunction roundBox(box, rTL0, rTR0, rBR0, rBL0) {\n var tmp = adjustBorderRadiusForBox(box, rTL0, rTR0, rBR0, rBL0);\n var rTL = tmp.tl;\n var rTR = tmp.tr;\n var rBR = tmp.br;\n var rBL = tmp.bl;\n var path = new Path({ fill: null, stroke: null });\n path.moveTo(box.left, box.top + rTL.y);\n if (rTL.x) {\n addArcToPath(path, box.left + rTL.x, box.top + rTL.y, {\n startAngle: -180,\n endAngle: -90,\n radiusX: rTL.x,\n radiusY: rTL.y\n });\n }\n path.lineTo(box.right - rTR.x, box.top);\n if (rTR.x) {\n addArcToPath(path, box.right - rTR.x, box.top + rTR.y, {\n startAngle: -90,\n endAngle: 0,\n radiusX: rTR.x,\n radiusY: rTR.y\n });\n }\n path.lineTo(box.right, box.bottom - rBR.y);\n if (rBR.x) {\n addArcToPath(path, box.right - rBR.x, box.bottom - rBR.y, {\n startAngle: 0,\n endAngle: 90,\n radiusX: rBR.x,\n radiusY: rBR.y\n });\n }\n path.lineTo(box.left + rBL.x, box.bottom);\n if (rBL.x) {\n addArcToPath(path, box.left + rBL.x, box.bottom - rBL.y, {\n startAngle: 90,\n endAngle: 180,\n radiusX: rBL.x,\n radiusY: rBL.y\n });\n }\n return path.close();\n}\n\nfunction formatCounter(val, style) {\n var str = String(parseFloat(val));\n switch (style) {\n case \"decimal-leading-zero\":\n if (str.length < 2) {\n str = \"0\" + str;\n }\n return str;\n case \"lower-roman\":\n return arabicToRoman(val).toLowerCase();\n case \"upper-roman\":\n return arabicToRoman(val).toUpperCase();\n case \"lower-latin\":\n case \"lower-alpha\":\n return alphaNumeral(val - 1);\n case \"upper-latin\":\n case \"upper-alpha\":\n return alphaNumeral(val - 1).toUpperCase();\n default:\n return str;\n }\n}\n\nfunction evalPseudoElementContent(element, content) {\n function displayCounter(name, style, separator) {\n if (!separator) {\n return formatCounter(getCounter(name) || 0, style);\n }\n separator = separator.replace(/^\\s*([\"'])(.*)\\1\\s*$/, \"$2\");\n return getAllCounters(name).map(function(val){\n return formatCounter(val, style);\n }).join(separator);\n }\n var a = splitProperty(content, /^\\s+/);\n var result = [], m;\n a.forEach(function(el){\n var tmp;\n if ((m = /^\\s*([\"'])(.*)\\1\\s*$/.exec(el))) {\n result.push(m[2].replace(/\\\\([0-9a-f]{4})/gi, function(s, p){\n return String.fromCharCode(parseInt(p, 16));\n }));\n }\n else if ((m = /^\\s*counter\\((.*?)\\)\\s*$/.exec(el))) {\n tmp = splitProperty(m[1]);\n result.push(displayCounter(tmp[0], tmp[1]));\n }\n else if ((m = /^\\s*counters\\((.*?)\\)\\s*$/.exec(el))) {\n tmp = splitProperty(m[1]);\n result.push(displayCounter(tmp[0], tmp[2], tmp[1]));\n }\n else if ((m = /^\\s*attr\\((.*?)\\)\\s*$/.exec(el))) {\n result.push(element.getAttribute(m[1]) || \"\");\n }\n else {\n result.push(el);\n }\n });\n return result.join(\"\");\n}\n\nfunction getCssText(style) {\n if (style.cssText) {\n return style.cssText;\n }\n // Status: NEW. Report year: 2002. Current year: 2014.\n // Nice played, Mozillians.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=137687\n var result = [];\n for (var i = 0; i < style.length; ++i) {\n result.push(style[i] + \": \" + getPropertyValue(style, style[i]));\n }\n return result.join(\";\\n\");\n}\n\nfunction _renderWithPseudoElements(element, group) {\n if (element.tagName == KENDO_PSEUDO_ELEMENT) {\n _renderElement(element, group);\n return;\n }\n var fake = [];\n function pseudo(kind, place) {\n var style = getComputedStyle$1(element, kind), content = style.content;\n updateCounters(style);\n if (content && content != \"normal\" && content != \"none\" && style.width != \"0px\") {\n var psel = element.ownerDocument.createElement(KENDO_PSEUDO_ELEMENT);\n psel.style.cssText = getCssText(style);\n psel.textContent = evalPseudoElementContent(element, content);\n element.insertBefore(psel, place);\n fake.push(psel);\n }\n }\n pseudo(\":before\", element.firstChild);\n pseudo(\":after\", null);\n if (fake.length > 0) {\n var saveClass = element.className;\n element.className += \" kendo-pdf-hide-pseudo-elements\";\n _renderElement(element, group);\n element.className = saveClass;\n fake.forEach(function(el){ element.removeChild(el); });\n } else {\n _renderElement(element, group);\n }\n}\n\nfunction _renderElement(element, group) {\n var style = getComputedStyle$1(element);\n\n var top = getBorder(style, \"top\");\n var right = getBorder(style, \"right\");\n var bottom = getBorder(style, \"bottom\");\n var left = getBorder(style, \"left\");\n\n var rTL0 = getBorderRadius(style, \"top-left\");\n var rTR0 = getBorderRadius(style, \"top-right\");\n var rBL0 = getBorderRadius(style, \"bottom-left\");\n var rBR0 = getBorderRadius(style, \"bottom-right\");\n\n var dir = getPropertyValue(style, \"direction\");\n\n var backgroundColor = getPropertyValue(style, \"background-color\");\n backgroundColor = parseColor$1(backgroundColor);\n\n var backgroundImage = parseBackgroundImage( getPropertyValue(style, \"background-image\") );\n var backgroundRepeat = splitProperty( getPropertyValue(style, \"background-repeat\") );\n var backgroundPosition = splitProperty( getPropertyValue(style, \"background-position\") );\n var backgroundOrigin = splitProperty( getPropertyValue(style, \"background-origin\") );\n var backgroundSize = splitProperty( getPropertyValue(style, \"background-size\") );\n\n // IE shrinks the text with text-overflow: ellipsis,\n // apparently because the returned bounding box for the range\n // is limited to the visible area minus space for the dots,\n // instead of being the full width of the text.\n //\n // https://github.com/telerik/kendo/issues/5232\n // https://github.com/telerik/kendo-ui-core/issues/1868\n //\n // We have to test it here rather than in renderText because\n // text-overflow: ellipsis could be set on a parent element (not\n // necessarily the one containing the text); in this case,\n // getComputedStyle(elementWithTheText) will return \"clip\", not\n // \"ellipsis\" (which is probably a bug, but oh well...)\n var textOverflow, saveTextOverflow;\n if (microsoft) {\n textOverflow = style.textOverflow; // computed style\n if (textOverflow == \"ellipsis\") {\n saveTextOverflow = element.style.textOverflow; // own style.\n element.style.textOverflow = \"clip\";\n }\n }\n\n if (browser.msie && browser.version < 10) {\n // IE9 hacks. getPropertyValue won't return the correct\n // value. Sucks that we have to do it here, I'd prefer to\n // move it in getPropertyValue, but we don't have the\n // element.\n backgroundPosition = splitProperty(element.currentStyle.backgroundPosition);\n }\n\n var innerbox = innerBox(element.getBoundingClientRect(), \"border-*-width\", element);\n\n // CSS \"clip\" property - if present, replace the group with a\n // new one which is clipped. This must happen before drawing\n // the borders and background.\n (function(){\n var clip = getPropertyValue(style, \"clip\");\n var m = /^\\s*rect\\((.*)\\)\\s*$/.exec(clip);\n if (m) {\n var a = m[1].split(/[ ,]+/g);\n var top = a[0] == \"auto\" ? innerbox.top : parseFloat(a[0]) + innerbox.top;\n var right = a[1] == \"auto\" ? innerbox.right : parseFloat(a[1]) + innerbox.left;\n var bottom = a[2] == \"auto\" ? innerbox.bottom : parseFloat(a[2]) + innerbox.top;\n var left = a[3] == \"auto\" ? innerbox.left : parseFloat(a[3]) + innerbox.left;\n var tmp = new Group();\n var clipPath = new Path()\n .moveTo(left, top)\n .lineTo(right, top)\n .lineTo(right, bottom)\n .lineTo(left, bottom)\n .close();\n setClipping(tmp, clipPath);\n group.append(tmp);\n group = tmp;\n updateClipbox(clipPath);\n }\n })();\n\n var boxes, i, cells;\n var display = getPropertyValue(style, \"display\");\n\n if (display == \"table-row\") {\n // because of rowspan/colspan, we shouldn't draw background of table row elements on the\n // box given by its getBoundingClientRect, because if we do we risk overwritting a\n // previously rendered cell. https://github.com/telerik/kendo/issues/4881\n boxes = [];\n for (i = 0, cells = element.children; i < cells.length; ++i) {\n boxes.push(cells[i].getBoundingClientRect());\n }\n } else {\n boxes = element.getClientRects();\n if (boxes.length == 1) {\n // Workaround the missing borders in Chrome! getClientRects() boxes contains values\n // rounded to integer. getBoundingClientRect() appears to work fine. We still need\n // getClientRects() to support cases where there are more boxes (continued inline\n // elements that might have border/background).\n boxes = [ element.getBoundingClientRect() ];\n }\n }\n\n // This function workarounds another Chrome bug, where boxes returned for a table with\n // border-collapse: collapse will overlap the table border. Our rendering is not perfect in\n // such case anyway, but with this is better than without it.\n boxes = adjustBoxes(boxes);\n\n for (i = 0; i < boxes.length; ++i) {\n drawOneBox(boxes[i], i === 0, i == boxes.length - 1);\n }\n\n // Render links as separate groups. We can't use boxes returned by element's getClientRects\n // because if display type is \"inline\" (default for ), boxes will not include the height of\n // images inside. https://github.com/telerik/kendo-ui-core/issues/3359\n if (element.tagName == \"A\" && element.href && !/^#?$/.test(element.getAttribute(\"href\"))) {\n if (!nodeInfo._avoidLinks || !matches(element, nodeInfo._avoidLinks)) {\n var r = document.createRange();\n r.selectNodeContents(element);\n slice$1$1(r.getClientRects()).forEach(function(box){\n var g = new Group();\n g._pdfLink = {\n url : element.href,\n top : box.top,\n right : box.right,\n bottom : box.bottom,\n left : box.left\n };\n group.append(g);\n });\n }\n }\n\n if (boxes.length > 0 && display == \"list-item\" && !element.getAttribute(\"kendo-no-bullet\")) {\n drawBullet(boxes[0]);\n }\n\n // overflow: hidden/auto - if present, replace the group with\n // a new one clipped by the inner box.\n (function(){\n function clipit() {\n var clipPath = elementRoundBox(element, innerbox, \"padding\");\n var tmp = new Group();\n setClipping(tmp, clipPath);\n group.append(tmp);\n group = tmp;\n updateClipbox(clipPath);\n }\n if (isFormField(element)) {\n clipit();\n } else if (/^(hidden|auto|scroll)/.test(getPropertyValue(style, \"overflow\"))) {\n clipit();\n } else if (/^(hidden|auto|scroll)/.test(getPropertyValue(style, \"overflow-x\"))) {\n clipit();\n } else if (/^(hidden|auto|scroll)/.test(getPropertyValue(style, \"overflow-y\"))) {\n clipit();\n }\n })();\n\n if (!maybeRenderWidget(element, group)) {\n renderContents(element, group);\n }\n\n if (microsoft && textOverflow == \"ellipsis\") {\n element.style.textOverflow = saveTextOverflow;\n }\n\n return group; // only utility functions after this line.\n\n function adjustBoxes(boxes) {\n if (/^td$/i.test(element.tagName)) {\n var table = nodeInfo.table;\n if (table && getPropertyValue(table.style, \"border-collapse\") == \"collapse\") {\n var tableBorderLeft = getBorder(table.style, \"left\").width;\n var tableBorderTop = getBorder(table.style, \"top\").width;\n // check if we need to adjust\n if (tableBorderLeft === 0 && tableBorderTop === 0) {\n return boxes; // nope\n }\n var tableBox = table.element.getBoundingClientRect();\n var firstCell = table.element.rows[0].cells[0];\n var firstCellBox = firstCell.getBoundingClientRect();\n if (firstCellBox.top == tableBox.top || firstCellBox.left == tableBox.left) {\n return slice$1$1(boxes).map(function(box){\n return {\n left : box.left + tableBorderLeft,\n top : box.top + tableBorderTop,\n right : box.right + tableBorderLeft,\n bottom : box.bottom + tableBorderTop,\n height : box.height,\n width : box.width\n };\n });\n }\n }\n }\n return boxes;\n }\n\n // this function will be called to draw each border. it\n // draws starting at origin and the resulted path must be\n // translated/rotated to be placed in the proper position.\n //\n // arguments are named as if it draws the top border:\n //\n // - `len` the length of the edge\n // - `Wtop` the width of the edge (i.e. border-top-width)\n // - `Wleft` the width of the left edge (border-left-width)\n // - `Wright` the width of the right edge\n // - `rl` and `rl` -- the border radius on the left and right\n // (objects containing x and y, for horiz/vertical radius)\n // - `transform` -- transformation to apply\n //\n function drawEdge(color, len, Wtop, Wleft, Wright, rl, rr, transform$$1) {\n if (Wtop <= 0) {\n return;\n }\n\n var path, edge = new Group();\n setTransform$1(edge, transform$$1);\n group.append(edge);\n\n sanitizeRadius(rl);\n sanitizeRadius(rr);\n\n // draw main border. this is the area without the rounded corners\n path = new Path({\n fill: { color: color },\n stroke: null\n });\n edge.append(path);\n path.moveTo(rl.x ? Math.max(rl.x, Wleft) : 0, 0)\n .lineTo(len - (rr.x ? Math.max(rr.x, Wright) : 0), 0)\n .lineTo(len - Math.max(rr.x, Wright), Wtop)\n .lineTo(Math.max(rl.x, Wleft), Wtop)\n .close();\n\n if (rl.x) {\n drawRoundCorner(Wleft, rl, [ -1, 0, 0, 1, rl.x, 0 ]);\n }\n\n if (rr.x) {\n drawRoundCorner(Wright, rr, [ 1, 0, 0, 1, len - rr.x, 0 ]);\n }\n\n // draws one round corner, starting at origin (needs to be\n // translated/rotated to be placed properly).\n function drawRoundCorner(Wright, r, transform$$1) {\n var angle = Math.PI/2 * Wright / (Wright + Wtop);\n\n // not sanitizing this one, because negative values\n // are useful to fill the box correctly.\n var ri = {\n x: r.x - Wright,\n y: r.y - Wtop\n };\n\n var path = new Path({\n fill: { color: color },\n stroke: null\n }).moveTo(0, 0);\n\n setTransform$1(path, transform$$1);\n\n addArcToPath(path, 0, r.y, {\n startAngle: -90,\n endAngle: -radiansToDegrees(angle),\n radiusX: r.x,\n radiusY: r.y\n });\n\n if (ri.x > 0 && ri.y > 0) {\n path.lineTo(ri.x * Math.cos(angle), r.y - ri.y * Math.sin(angle));\n addArcToPath(path, 0, r.y, {\n startAngle: -radiansToDegrees(angle),\n endAngle: -90,\n radiusX: ri.x,\n radiusY: ri.y,\n anticlockwise: true\n });\n }\n else if (ri.x > 0) {\n path.lineTo(ri.x, Wtop)\n .lineTo(0, Wtop);\n }\n else {\n path.lineTo(ri.x, Wtop)\n .lineTo(ri.x, 0);\n }\n\n edge.append(path.close());\n }\n }\n\n function drawBackground(box) {\n var background = new Group();\n setClipping(background, roundBox(box, rTL0, rTR0, rBR0, rBL0));\n group.append(background);\n\n if (backgroundColor) {\n var path = new Path({\n fill: { color: backgroundColor.toCssRgba() },\n stroke: null\n });\n path.moveTo(box.left, box.top)\n .lineTo(box.right, box.top)\n .lineTo(box.right, box.bottom)\n .lineTo(box.left, box.bottom)\n .close();\n background.append(path);\n }\n\n for (var i = backgroundImage.length; --i >= 0;) {\n drawOneBackground(\n background, box,\n backgroundImage[i],\n backgroundRepeat[i % backgroundRepeat.length],\n backgroundPosition[i % backgroundPosition.length],\n backgroundOrigin[i % backgroundOrigin.length],\n backgroundSize[i % backgroundSize.length]\n );\n }\n }\n\n function drawOneBackground(group, box, background, backgroundRepeat, backgroundPosition, backgroundOrigin, backgroundSize) {\n if (!background || (background == \"none\")) {\n return;\n }\n\n if (background.type == \"url\") {\n var img = IMAGE_CACHE[background.url];\n if (img && img.width > 0 && img.height > 0) {\n drawBackgroundImage(group, box, img.width, img.height, function(group, rect){\n group.append(new Image$1(background.url, rect));\n });\n }\n } else if (background.type == \"linear\") {\n drawBackgroundImage(group, box, box.width, box.height, gradientRenderer(background));\n } else {\n return;\n }\n\n function drawBackgroundImage(group, box, img_width, img_height, renderBG) {\n var aspect_ratio = img_width / img_height, f;\n\n // for background-origin: border-box the box is already appropriate\n var orgBox = box;\n if (backgroundOrigin == \"content-box\") {\n orgBox = innerBox(orgBox, \"border-*-width\", element);\n orgBox = innerBox(orgBox, \"padding-*\", element);\n } else if (backgroundOrigin == \"padding-box\") {\n orgBox = innerBox(orgBox, \"border-*-width\", element);\n }\n\n if (!/^\\s*auto(\\s+auto)?\\s*$/.test(backgroundSize)) {\n if (backgroundSize == \"contain\") {\n f = Math.min(orgBox.width / img_width,\n orgBox.height / img_height);\n img_width *= f;\n img_height *= f;\n }\n else if (backgroundSize == \"cover\") {\n f = Math.max(orgBox.width / img_width,\n orgBox.height / img_height);\n img_width *= f;\n img_height *= f;\n }\n else {\n var size = backgroundSize.split(/\\s+/g);\n // compute width\n if (/%$/.test(size[0])) {\n img_width = orgBox.width * parseFloat(size[0]) / 100;\n } else {\n img_width = parseFloat(size[0]);\n }\n // compute height\n if (size.length == 1 || size[1] == \"auto\") {\n img_height = img_width / aspect_ratio;\n } else if (/%$/.test(size[1])) {\n img_height = orgBox.height * parseFloat(size[1]) / 100;\n } else {\n img_height = parseFloat(size[1]);\n }\n }\n }\n\n var pos = String(backgroundPosition);\n\n // IE sometimes reports single-word positions\n // https://github.com/telerik/kendo-ui-core/issues/2786\n //\n // it seems to switch to percentages when the horizontal\n // position is not \"center\", therefore we don't handle\n // multi-word cases here. All other browsers return\n // percentages or pixels instead of keywords. At least\n // for now...\n switch (pos) {\n case \"bottom\" : pos = \"50% 100%\"; break;\n case \"top\" : pos = \"50% 0\"; break;\n case \"left\" : pos = \"0 50%\"; break;\n case \"right\" : pos = \"100% 50%\"; break;\n case \"center\" : pos = \"50% 50%\"; break;\n }\n\n pos = pos.split(/\\s+/);\n if (pos.length == 1) {\n pos[1] = \"50%\";\n }\n\n if (/%$/.test(pos[0])) {\n pos[0] = parseFloat(pos[0]) / 100 * (orgBox.width - img_width);\n } else {\n pos[0] = parseFloat(pos[0]);\n }\n if (/%$/.test(pos[1])) {\n pos[1] = parseFloat(pos[1]) / 100 * (orgBox.height - img_height);\n } else {\n pos[1] = parseFloat(pos[1]);\n }\n\n var rect = new Rect([ orgBox.left + pos[0], orgBox.top + pos[1] ], [ img_width, img_height ]);\n\n // XXX: background-repeat could be implemented more\n // efficiently as a fill pattern (at least for PDF\n // output, probably SVG too).\n\n function rewX() {\n while (rect.origin.x > box.left) {\n rect.origin.x -= img_width;\n }\n }\n\n function rewY() {\n while (rect.origin.y > box.top) {\n rect.origin.y -= img_height;\n }\n }\n\n function repeatX() {\n while (rect.origin.x < box.right) {\n renderBG(group, rect.clone());\n rect.origin.x += img_width;\n }\n }\n\n if (backgroundRepeat == \"no-repeat\") {\n renderBG(group, rect);\n }\n else if (backgroundRepeat == \"repeat-x\") {\n rewX();\n repeatX();\n }\n else if (backgroundRepeat == \"repeat-y\") {\n rewY();\n while (rect.origin.y < box.bottom) {\n renderBG(group, rect.clone());\n rect.origin.y += img_height;\n }\n }\n else if (backgroundRepeat == \"repeat\") {\n rewX();\n rewY();\n var origin = rect.origin.clone();\n while (rect.origin.y < box.bottom) {\n rect.origin.x = origin.x;\n repeatX();\n rect.origin.y += img_height;\n }\n }\n }\n }\n\n function drawBullet() {\n var listStyleType = getPropertyValue(style, \"list-style-type\");\n if (listStyleType == \"none\") {\n return;\n }\n var listStylePosition = getPropertyValue(style, \"list-style-position\");\n\n function _drawBullet(f) {\n saveStyle(element, function(){\n element.style.position = \"relative\";\n var bullet = element.ownerDocument.createElement(KENDO_PSEUDO_ELEMENT);\n bullet.style.position = \"absolute\";\n bullet.style.boxSizing = \"border-box\";\n if (listStylePosition == \"outside\") {\n bullet.style.width = \"6em\";\n bullet.style.left = \"-6.8em\";\n bullet.style.textAlign = \"right\";\n } else {\n bullet.style.left = \"0px\";\n }\n f(bullet);\n element.insertBefore(bullet, element.firstChild);\n renderElement(bullet, group);\n element.removeChild(bullet);\n });\n }\n\n function elementIndex(f) {\n var a = element.parentNode.children;\n var k = element.getAttribute(\"kendo-split-index\");\n if (k != null) {\n return f(k|0, a.length);\n }\n for (var i = 0; i < a.length; ++i) {\n if (a[i] === element) {\n return f(i, a.length);\n }\n }\n }\n\n switch (listStyleType) {\n case \"circle\":\n case \"disc\":\n case \"square\":\n _drawBullet(function(bullet){\n // XXX: the science behind these values is called \"trial and error\".\n bullet.style.fontSize = \"60%\";\n bullet.style.lineHeight = \"200%\";\n bullet.style.paddingRight = \"0.5em\";\n bullet.style.fontFamily = \"DejaVu Serif\";\n bullet.innerHTML = {\n \"disc\" : \"\\u25cf\",\n \"circle\" : \"\\u25ef\",\n \"square\" : \"\\u25a0\"\n }[listStyleType];\n });\n break;\n\n case \"decimal\":\n case \"decimal-leading-zero\":\n _drawBullet(function(bullet){\n elementIndex(function(idx){\n ++idx;\n if (listStyleType == \"decimal-leading-zero\" && idx < 10) {\n idx = \"0\" + idx;\n }\n bullet.innerHTML = idx + \".\";\n });\n });\n break;\n\n case \"lower-roman\":\n case \"upper-roman\":\n _drawBullet(function(bullet){\n elementIndex(function(idx){\n idx = arabicToRoman(idx + 1);\n if (listStyleType == \"upper-roman\") {\n idx = idx.toUpperCase();\n }\n bullet.innerHTML = idx + \".\";\n });\n });\n break;\n\n case \"lower-latin\":\n case \"lower-alpha\":\n case \"upper-latin\":\n case \"upper-alpha\":\n _drawBullet(function(bullet){\n elementIndex(function(idx){\n idx = alphaNumeral(idx);\n if (/^upper/i.test(listStyleType)) {\n idx = idx.toUpperCase();\n }\n bullet.innerHTML = idx + \".\";\n });\n });\n break;\n }\n }\n\n // draws a single border box\n function drawOneBox(box, isFirst, isLast) {\n if (box.width === 0 || box.height === 0) {\n return;\n }\n\n drawBackground(box);\n\n var shouldDrawLeft = (left.width > 0 && ((isFirst && dir == \"ltr\") || (isLast && dir == \"rtl\")));\n var shouldDrawRight = (right.width > 0 && ((isLast && dir == \"ltr\") || (isFirst && dir == \"rtl\")));\n\n // The most general case is that the 4 borders have different widths and border\n // radiuses. The way that is handled is by drawing 3 Paths for each border: the\n // straight line, and two round corners which represent half of the entire rounded\n // corner. To simplify code those shapes are drawed at origin (by the drawEdge\n // function), then translated/rotated into the right position.\n //\n // However, this leads to poor results due to rounding in the simpler cases where\n // borders are straight lines. Therefore we handle a few such cases separately with\n // straight lines. C^wC^wC^w -- nope, scratch that. poor rendering was because of a bug\n // in Chrome (getClientRects() returns rounded integer values rather than exact floats.\n // web dev is still a ghetto.)\n\n // first, just in case there is no border...\n if (top.width === 0 && left.width === 0 && right.width === 0 && bottom.width === 0) {\n return;\n }\n\n // START paint borders\n // if all borders have equal colors...\n if (top.color == right.color && top.color == bottom.color && top.color == left.color) {\n\n // if same widths too, we can draw the whole border by stroking a single path.\n if (top.width == right.width && top.width == bottom.width && top.width == left.width)\n {\n if (shouldDrawLeft && shouldDrawRight) {\n // reduce box by half the border width, so we can draw it by stroking.\n box = innerBox(box, top.width/2);\n\n // adjust the border radiuses, again by top.width/2, and make the path element.\n var path = elementRoundBox(element, box, top.width/2);\n path.options.stroke = {\n color: top.color,\n width: top.width\n };\n group.append(path);\n return;\n }\n }\n }\n\n // if border radiuses are zero and widths are at most one pixel, we can again use simple\n // paths.\n if (rTL0.x === 0 && rTR0.x === 0 && rBR0.x === 0 && rBL0.x === 0) {\n // alright, 1.9px will do as well. the difference in color blending should not be\n // noticeable.\n if (top.width < 2 && left.width < 2 && right.width < 2 && bottom.width < 2) {\n // top border\n if (top.width > 0) {\n group.append(\n new Path({\n stroke: { width: top.width, color: top.color }\n })\n .moveTo(box.left, box.top + top.width/2)\n .lineTo(box.right, box.top + top.width/2)\n );\n }\n\n // bottom border\n if (bottom.width > 0) {\n group.append(\n new Path({\n stroke: { width: bottom.width, color: bottom.color }\n })\n .moveTo(box.left, box.bottom - bottom.width/2)\n .lineTo(box.right, box.bottom - bottom.width/2)\n );\n }\n\n // left border\n if (shouldDrawLeft) {\n group.append(\n new Path({\n stroke: { width: left.width, color: left.color }\n })\n .moveTo(box.left + left.width/2, box.top)\n .lineTo(box.left + left.width/2, box.bottom)\n );\n }\n\n // right border\n if (shouldDrawRight) {\n group.append(\n new Path({\n stroke: { width: right.width, color: right.color }\n })\n .moveTo(box.right - right.width/2, box.top)\n .lineTo(box.right - right.width/2, box.bottom)\n );\n }\n\n return;\n }\n }\n // END paint borders\n\n var tmp = adjustBorderRadiusForBox(box, rTL0, rTR0, rBR0, rBL0);\n var rTL = tmp.tl;\n var rTR = tmp.tr;\n var rBR = tmp.br;\n var rBL = tmp.bl;\n\n // top border\n drawEdge(top.color,\n box.width, top.width, left.width, right.width,\n rTL, rTR,\n [ 1, 0, 0, 1, box.left, box.top ]);\n\n // bottom border\n drawEdge(bottom.color,\n box.width, bottom.width, right.width, left.width,\n rBR, rBL,\n [ -1, 0, 0, -1, box.right, box.bottom ]);\n\n // for left/right borders we need to invert the border-radiuses\n function inv(p) {\n return { x: p.y, y: p.x };\n }\n\n // left border\n drawEdge(left.color,\n box.height, left.width, bottom.width, top.width,\n inv(rBL), inv(rTL),\n [ 0, -1, 1, 0, box.left, box.bottom ]);\n\n // right border\n drawEdge(right.color,\n box.height, right.width, top.width, bottom.width,\n inv(rTR), inv(rBR),\n [ 0, 1, -1, 0, box.right, box.top ]);\n }\n}\n\nfunction gradientRenderer(gradient) {\n return function(group, rect) {\n var width = rect.width(), height = rect.height();\n\n switch (gradient.type) {\n case \"linear\":\n\n // figure out the angle.\n var angle = gradient.angle != null ? gradient.angle : Math.PI;\n switch (gradient.to) {\n case \"top\":\n angle = 0;\n break;\n case \"left\":\n angle = -Math.PI / 2;\n break;\n case \"bottom\":\n angle = Math.PI;\n break;\n case \"right\":\n angle = Math.PI / 2;\n break;\n case \"top left\": case \"left top\":\n angle = -Math.atan2(height, width);\n break;\n case \"top right\": case \"right top\":\n angle = Math.atan2(height, width);\n break;\n case \"bottom left\": case \"left bottom\":\n angle = Math.PI + Math.atan2(height, width);\n break;\n case \"bottom right\": case \"right bottom\":\n angle = Math.PI - Math.atan2(height, width);\n break;\n }\n\n if (gradient.reverse) {\n angle -= Math.PI;\n }\n\n // limit the angle between 0..2PI\n angle %= 2 * Math.PI;\n if (angle < 0) {\n angle += 2 * Math.PI;\n }\n\n // compute gradient's start/end points. here len is the length of the gradient line\n // and x,y is the end point relative to the center of the rectangle in conventional\n // (math) axis direction.\n\n // this is the original (unscaled) length of the gradient line. needed to deal with\n // absolutely positioned color stops. formula from the CSS spec:\n // http://dev.w3.org/csswg/css-images-3/#linear-gradient-syntax\n var pxlen = Math.abs(width * Math.sin(angle)) + Math.abs(height * Math.cos(angle));\n\n // The math below is pretty simple, but it took a while to figure out. We compute x\n // and y, the *end* of the gradient line. However, we want to transform them into\n // element-based coordinates (SVG's gradientUnits=\"objectBoundingBox\"). That means,\n // x=0 is the left edge, x=1 is the right edge, y=0 is the top edge and y=1 is the\n // bottom edge.\n //\n // A naive approach would use the original angle for these calculations. Say we'd\n // like to draw a gradient angled at 45deg in a 100x400 box. When we use\n // objectBoundingBox, the renderer will draw it in a 1x1 *square* box, and then\n // scale that to the desired dimensions. The 45deg angle will look more like 70deg\n // after scaling. SVG (http://www.w3.org/TR/SVG/pservers.html#LinearGradients) says\n // the following:\n //\n // When gradientUnits=\"objectBoundingBox\" and 'gradientTransform' is the\n // identity matrix, the normal of the linear gradient is perpendicular to the\n // gradient vector in object bounding box space (i.e., the abstract coordinate\n // system where (0,0) is at the top/left of the object bounding box and (1,1) is\n // at the bottom/right of the object bounding box). When the object's bounding\n // box is not square, the gradient normal which is initially perpendicular to\n // the gradient vector within object bounding box space may render\n // non-perpendicular relative to the gradient vector in user space. If the\n // gradient vector is parallel to one of the axes of the bounding box, the\n // gradient normal will remain perpendicular. This transformation is due to\n // application of the non-uniform scaling transformation from bounding box space\n // to user space.\n //\n // which is an extremely long and confusing way to tell what I just said above.\n //\n // For this reason we need to apply the reverse scaling to the original angle, so\n // that when it'll finally be rendered it'll actually be at the desired slope. Now\n // I'll let you figure out the math yourself.\n\n var scaledAngle = Math.atan(width * Math.tan(angle) / height);\n var sin = Math.sin(scaledAngle), cos = Math.cos(scaledAngle);\n var len = Math.abs(sin) + Math.abs(cos);\n var x = len/2 * sin;\n var y = len/2 * cos;\n\n // Because of the arctangent, our scaledAngle ends up between -PI/2..PI/2, possibly\n // losing the intended direction of the gradient. The following fixes it.\n if (angle > Math.PI/2 && angle <= 3*Math.PI/2) {\n x = -x;\n y = -y;\n }\n\n // compute the color stops.\n var implicit = [], right = 0;\n var stops = gradient.stops.map(function(s, i){\n var offset = s.percent;\n if (offset) {\n offset = parseFloat(offset) / 100;\n } else if (s.length) {\n offset = parseFloat(s.length) / pxlen;\n } else if (i === 0) {\n offset = 0;\n } else if (i == gradient.stops.length - 1) {\n offset = 1;\n }\n var stop = {\n color: s.color.toCssRgba(),\n offset: offset\n };\n if (offset != null) {\n right = offset;\n // fix implicit offsets\n implicit.forEach(function(s, i){\n var stop = s.stop;\n stop.offset = s.left + (right - s.left) * (i + 1) / (implicit.length + 1);\n });\n implicit = [];\n } else {\n implicit.push({ left: right, stop: stop });\n }\n return stop;\n });\n\n var start = [ 0.5 - x, 0.5 + y ];\n var end = [ 0.5 + x, 0.5 - y ];\n\n // finally, draw it.\n group.append(\n Path.fromRect(rect)\n .stroke(null)\n .fill(new LinearGradient({\n start : start,\n end : end,\n stops : stops,\n userSpace : false\n }))\n );\n break;\n case \"radial\":\n // XXX:\n if (window.console && window.console.log) {\n window.console.log(\"Radial gradients are not yet supported in HTML renderer\");\n }\n break;\n }\n };\n}\n\nfunction maybeRenderWidget(element, group) {\n var visual;\n\n if (element._kendoExportVisual) {\n visual = element._kendoExportVisual();\n } else if (window.kendo && window.kendo.jQuery && element.getAttribute(window.kendo.attr(\"role\"))) {\n var widget = window.kendo.widgetInstance(window.kendo.jQuery(element));\n if (widget && (widget.exportDOMVisual || widget.exportVisual)) {\n if (widget.exportDOMVisual) {\n visual = widget.exportDOMVisual();\n } else {\n visual = widget.exportVisual();\n }\n }\n }\n\n if (!visual) {\n return false;\n }\n\n var wrap$$1 = new Group();\n wrap$$1.children.push(visual);\n\n var bbox = element.getBoundingClientRect();\n wrap$$1.transform(transform$1().translate(bbox.left, bbox.top));\n\n group.append(wrap$$1);\n\n return true;\n}\n\nfunction renderImage(element, url, group) {\n var box = getContentBox(element);\n var rect = new Rect([ box.left, box.top ], [ box.width, box.height ]);\n var image = new Image$1(url, rect);\n setClipping(image, elementRoundBox(element, box, \"content\"));\n group.append(image);\n}\n\nfunction zIndexSort(a, b) {\n var sa = getComputedStyle$1(a);\n var sb = getComputedStyle$1(b);\n var za = parseFloat(getPropertyValue(sa, \"z-index\"));\n var zb = parseFloat(getPropertyValue(sb, \"z-index\"));\n var pa = getPropertyValue(sa, \"position\");\n var pb = getPropertyValue(sb, \"position\");\n if (isNaN(za) && isNaN(zb)) {\n if ((/static|absolute/.test(pa)) && (/static|absolute/.test(pb))) {\n return 0;\n }\n if (pa == \"static\") {\n return -1;\n }\n if (pb == \"static\") {\n return 1;\n }\n return 0;\n }\n if (isNaN(za)) {\n return zb === 0 ? 0 : zb > 0 ? -1 : 1;\n }\n if (isNaN(zb)) {\n return za === 0 ? 0 : za > 0 ? 1 : -1;\n }\n return parseFloat(za) - parseFloat(zb);\n}\n\nfunction isFormField(element) {\n return /^(?:textarea|select|input)$/i.test(element.tagName);\n}\n\nfunction getSelectedOption(element) {\n if (element.selectedOptions && element.selectedOptions.length > 0) {\n return element.selectedOptions[0];\n }\n return element.options[element.selectedIndex];\n}\n\nfunction renderCheckbox(element, group) {\n var style = getComputedStyle$1(element);\n var color = getPropertyValue(style, \"color\");\n var box = element.getBoundingClientRect();\n if (element.type == \"checkbox\") {\n group.append(\n Path.fromRect(\n new Rect([ box.left+1, box.top+1 ],\n [ box.width-2, box.height-2 ])\n ).stroke(color, 1)\n );\n if (element.checked) {\n // fill a rectangle inside? looks kinda ugly.\n // group.append(\n // Path.fromRect(\n // new geo.Rect([ box.left+4, box.top+4 ],\n // [ box.width-8, box.height-8])\n // ).fill(color).stroke(null)\n // );\n\n // let's draw a checkmark instead. artistic, eh?\n group.append(\n new Path()\n .stroke(color, 1.2)\n .moveTo(box.left + 0.22 * box.width,\n box.top + 0.55 * box.height)\n .lineTo(box.left + 0.45 * box.width,\n box.top + 0.75 * box.height)\n .lineTo(box.left + 0.78 * box.width,\n box.top + 0.22 * box.width)\n );\n }\n } else {\n group.append(\n new Circle(\n new Circle$2([\n (box.left + box.right) / 2,\n (box.top + box.bottom) / 2\n ], Math.min(box.width-2, box.height-2) / 2)\n ).stroke(color, 1)\n );\n if (element.checked) {\n group.append(\n new Circle(\n new Circle$2([\n (box.left + box.right) / 2,\n (box.top + box.bottom) / 2\n ], Math.min(box.width-8, box.height-8) / 2)\n ).fill(color).stroke(null)\n );\n }\n }\n}\n\nfunction renderFormField(element, group) {\n var tag = element.tagName.toLowerCase();\n if (tag == \"input\" && (element.type == \"checkbox\" || element.type == \"radio\")) {\n return renderCheckbox(element, group);\n }\n var p = element.parentNode;\n var doc = element.ownerDocument;\n var el = doc.createElement(KENDO_PSEUDO_ELEMENT);\n var option;\n el.style.cssText = getCssText(getComputedStyle$1(element));\n if (tag == \"input\") {\n el.style.whiteSpace = \"pre\";\n }\n if (tag == \"select\" || tag == \"textarea\") {\n el.style.overflow = \"auto\";\n }\n if (tag == \"select\") {\n if (element.multiple) {\n for (var i = 0; i < element.options.length; ++i) {\n option = doc.createElement(KENDO_PSEUDO_ELEMENT);\n option.style.cssText = getCssText(getComputedStyle$1(element.options[i]));\n option.style.display = \"block\"; // IE9 messes up without this\n option.textContent = element.options[i].textContent;\n el.appendChild(option);\n }\n } else {\n option = getSelectedOption(element);\n if (option) {\n el.textContent = option.textContent;\n }\n }\n } else {\n el.textContent = element.value;\n }\n p.insertBefore(el, element);\n el.scrollLeft = element.scrollLeft;\n el.scrollTop = element.scrollTop;\n\n // must temporarily hide the original element, otherwise it\n // may affect layout of the fake element we want to render.\n element.style.display = \"none\";\n\n renderContents(el, group);\n element.style.display = \"\";\n p.removeChild(el);\n}\n\nfunction serializeSVG(element) {\n var serializer = new window.XMLSerializer();\n var xml = serializer.serializeToString(element);\n\n if (browser.mozilla && !(element.getAttribute(\"width\") && element.getAttribute(\"height\"))) {\n var doc = new window.DOMParser().parseFromString(xml, \"image/svg+xml\");\n var svg$$1 = doc.documentElement;\n var box = getContentBox(element);\n svg$$1.setAttribute(\"width\", box.width);\n svg$$1.setAttribute(\"height\", box.height);\n xml = serializer.serializeToString(svg$$1);\n }\n\n return xml;\n}\n\nfunction renderContents(element, group) {\n if (nodeInfo._stackingContext.element === element) {\n // the group that was set in pushNodeInfo might have\n // changed due to clipping/transforms, update it here.\n nodeInfo._stackingContext.group = group;\n }\n switch (element.tagName.toLowerCase()) {\n case \"img\":\n renderImage(element, element.src, group);\n break;\n\n case \"svg\":\n var xml = serializeSVG(element);\n var dataURL = \"data:image/svg+xml;base64,\" + (encodeBase64(xml));\n renderImage(element, dataURL, group);\n break;\n\n case \"canvas\":\n try {\n renderImage(element, element.toDataURL(\"image/png\"), group);\n } catch (ex) {\n // tainted; can't draw it, ignore.\n }\n break;\n\n case \"textarea\":\n case \"input\":\n case \"select\":\n renderFormField(element, group);\n break;\n\n default:\n var children = [], floats = [], positioned = [];\n for (var i = element.firstChild; i; i = i.nextSibling) {\n switch (i.nodeType) {\n case 3: // Text\n if (/\\S/.test(i.data)) {\n renderText(element, i, group);\n }\n break;\n case 1: // Element\n var style = getComputedStyle$1(i);\n var floating = getPropertyValue(style, \"float\");\n var position = getPropertyValue(style, \"position\");\n if (position != \"static\") {\n positioned.push(i);\n }\n else if (floating != \"none\") {\n floats.push(i);\n } else {\n children.push(i);\n }\n break;\n }\n }\n\n mergeSort(children, zIndexSort).forEach(function(el){ renderElement(el, group); });\n mergeSort(floats, zIndexSort).forEach(function(el){ renderElement(el, group); });\n mergeSort(positioned, zIndexSort).forEach(function(el){ renderElement(el, group); });\n }\n}\n\nfunction renderText(element, node, group) {\n if (emptyClipbox()) {\n return;\n }\n var style = getComputedStyle$1(element);\n\n if (parseFloat(getPropertyValue(style, \"text-indent\")) < -500) {\n // assume it should not be displayed. the slider's\n // draggable handle displays a Drag text for some reason,\n // having text-indent: -3333px.\n return;\n }\n\n var text = node.data;\n var start = 0;\n var end = text.search(/\\S\\s*$/) + 1;\n\n if (!end) {\n return; // whitespace-only node\n }\n\n var fontSize = getPropertyValue(style, \"font-size\");\n var lineHeight = getPropertyValue(style, \"line-height\");\n\n // simply getPropertyValue(\"font\") doesn't work in Firefox :-\\\n var font = [\n getPropertyValue(style, \"font-style\"),\n getPropertyValue(style, \"font-variant\"),\n getPropertyValue(style, \"font-weight\"),\n fontSize, // no need for line height here; it breaks layout in FF\n getPropertyValue(style, \"font-family\")\n ].join(\" \");\n\n fontSize = parseFloat(fontSize);\n lineHeight = parseFloat(lineHeight);\n\n if (fontSize === 0) {\n return;\n }\n\n var color = getPropertyValue(style, \"color\");\n var range = element.ownerDocument.createRange();\n var align$$1 = getPropertyValue(style, \"text-align\");\n var isJustified = align$$1 == \"justify\";\n var columnCount = getPropertyValue(style, \"column-count\", 1);\n var whiteSpace = getPropertyValue(style, \"white-space\");\n var textTransform = getPropertyValue(style, \"text-transform\");\n\n // A line of 500px, with a font of 12px, contains an average of 80 characters, but since we\n // err, we'd like to guess a bigger number rather than a smaller one. Multiplying by 5\n // seems to be a good option.\n var estimateLineLength = element.getBoundingClientRect().width / fontSize * 5;\n if (estimateLineLength === 0) {\n estimateLineLength = 500;\n }\n\n // we'll maintain this so we can workaround bugs in Chrome's Range.getClientRects\n // https://github.com/telerik/kendo/issues/5740\n var prevLineBottom = null;\n\n var underline = nodeInfo[\"underline\"];\n var lineThrough = nodeInfo[\"line-through\"];\n var overline = nodeInfo[\"overline\"];\n var hasDecoration = underline || lineThrough || overline;\n\n // doChunk returns true when all text has been rendered\n while (!doChunk()) {}\n\n if (hasDecoration) {\n range.selectNode(node);\n slice$1$1(range.getClientRects()).forEach(decorate);\n }\n\n return; // only function declarations after this line\n\n function actuallyGetRangeBoundingRect(range) {\n // XXX: to be revised when this Chrome bug is fixed:\n // https://bugs.chromium.org/p/chromium/issues/detail?id=612459\n if (microsoft || browser.chrome || browser.safari) {\n // Workaround browser bugs: IE and Chrome would sometimes\n // return 0 or 1-width rectangles before or after the main\n // one. https://github.com/telerik/kendo/issues/4674\n\n // Actually Chrome 50 got worse, since the rectangles can now have the width of a\n // full character, making it hard to tell whether it's a bogus rectangle or valid\n // selection location. The workaround is to ignore rectangles that fall on the\n // previous line. https://github.com/telerik/kendo/issues/5740\n var rectangles = range.getClientRects(), box = {\n top : Infinity,\n right : -Infinity,\n bottom : -Infinity,\n left : Infinity\n }, done = false;\n for (var i = 0; i < rectangles.length; ++i) {\n var b = rectangles[i];\n if (b.width <= 1 || b.bottom === prevLineBottom) {\n continue; // bogus rectangle\n }\n box.left = Math.min(b.left , box.left);\n box.top = Math.min(b.top , box.top);\n box.right = Math.max(b.right , box.right);\n box.bottom = Math.max(b.bottom , box.bottom);\n done = true;\n }\n if (!done) {\n return range.getBoundingClientRect();\n }\n box.width = box.right - box.left;\n box.height = box.bottom - box.top;\n return box;\n }\n return range.getBoundingClientRect();\n }\n\n // Render a chunk of text, typically one line (but for justified text we render each word as\n // a separate Text object, because spacing is variable). Returns true when it finished the\n // current node. After each chunk it updates `start` to just after the last rendered\n // character.\n function doChunk() {\n var origStart = start;\n var box, pos = text.substr(start).search(/\\S/);\n start += pos;\n if (pos < 0 || start >= end) {\n return true;\n }\n\n // Select a single character to determine the height of a line of text. The box.bottom\n // will be essential for us to figure out where the next line begins.\n range.setStart(node, start);\n range.setEnd(node, start + 1);\n box = actuallyGetRangeBoundingRect(range);\n\n // for justified text we must split at each space, because space has variable width.\n var found = false;\n if (isJustified || columnCount > 1) {\n pos = text.substr(start).search(/\\s/);\n if (pos >= 0) {\n // we can only split there if it's on the same line, otherwise we'll fall back\n // to the default mechanism (see findEOL below).\n range.setEnd(node, start + pos);\n var r = actuallyGetRangeBoundingRect(range);\n if (r.bottom == box.bottom) {\n box = r;\n found = true;\n start += pos;\n }\n }\n }\n\n if (!found) {\n // This code does three things: (1) it selects one line of text in `range`, (2) it\n // leaves the bounding rect of that line in `box` and (3) it returns the position\n // just after the EOL. We know where the line starts (`start`) but we don't know\n // where it ends. To figure this out, we select a piece of text and look at the\n // bottom of the bounding box. If it changes, we have more than one line selected\n // and should retry with a smaller selection.\n //\n // To speed things up, we first try to select all text in the node (`start` ->\n // `end`). If there's more than one line there, then select only half of it. And\n // so on. When we find a value for `end` that fits in one line, we try increasing\n // it (also in halves) until we get to the next line. The algorithm stops when the\n // right side of the bounding box does not change.\n //\n // One more thing to note is that everything happens in a single Text DOM node.\n // There's no other tags inside it, therefore the left/top coordinates of the\n // bounding box will not change.\n pos = (function findEOL(min, eol, max){\n range.setEnd(node, eol);\n var r = actuallyGetRangeBoundingRect(range);\n if (r.bottom != box.bottom && min < eol) {\n return findEOL(min, (min + eol) >> 1, eol);\n } else if (r.right != box.right) {\n box = r;\n if (eol < max) {\n return findEOL(eol, (eol + max) >> 1, max);\n } else {\n return eol;\n }\n } else {\n return eol;\n }\n })(start, Math.min(end, start + estimateLineLength), end);\n\n if (pos == start) {\n // if EOL is at the start, then no more text fits on this line. Skip the\n // remainder of this node entirely to avoid a stack overflow.\n return true;\n }\n start = pos;\n\n pos = range.toString().search(/\\s+$/);\n if (pos === 0) {\n return false; // whitespace only; we should not get here.\n }\n if (pos > 0) {\n // eliminate trailing whitespace\n range.setEnd(node, range.startOffset + pos);\n box = actuallyGetRangeBoundingRect(range);\n }\n }\n\n // another workaround for IE: if we rely on getBoundingClientRect() we'll overlap with the bullet for LI\n // elements. Calling getClientRects() and using the *first* rect appears to give us the correct location.\n // Note: not to be used in Chrome as it randomly returns a zero-width rectangle from the previous line.\n if (microsoft) {\n box = range.getClientRects()[0];\n }\n\n var str = range.toString();\n if (!/^(?:pre|pre-wrap)$/i.test(whiteSpace)) {\n // node with non-significant space -- collapse whitespace.\n str = str.replace(/\\s+/g, \" \");\n }\n else if (/\\t/.test(str)) {\n // with significant whitespace we need to do something about literal TAB characters.\n // There's no TAB glyph in a font so they would be rendered in PDF as an empty box,\n // and the whole text will stretch to fill the original width. The core PDF lib\n // does not have sufficient context to deal with it.\n\n // calculate the starting column here, since we initially discarded any whitespace.\n var cc = 0;\n for (pos = origStart; pos < range.startOffset; ++pos) {\n var code = text.charCodeAt(pos);\n if (code == 9) {\n // when we meet a TAB we must round up to the next tab stop.\n // in all browsers TABs seem to be 8 characters.\n cc += 8 - cc % 8;\n } else if (code == 10 || code == 13) {\n // just in case we meet a newline we must restart.\n cc = 0;\n } else {\n // ordinary character --> advance one column\n cc++;\n }\n }\n\n // based on starting column, replace any TAB characters in the string we actually\n // have to display with spaces so that they align to columns multiple of 8.\n while ((pos = str.search(\"\\t\")) >= 0) {\n var indent = \" \".substr(0, 8 - (cc + pos) % 8);\n str = str.substr(0, pos) + indent + str.substr(pos + 1);\n }\n }\n\n if (!found) {\n prevLineBottom = box.bottom;\n }\n drawText(str, box);\n }\n\n function drawText(str, box) {\n // In IE the box height will be approximately lineHeight, while in\n // other browsers it'll (correctly) be the height of the bounding\n // box for the current text/font. Which is to say, IE sucks again.\n // The only good solution I can think of is to measure the text\n // ourselves and center the bounding box.\n if (microsoft && !isNaN(lineHeight)) {\n var height = getFontHeight(font);\n var top = (box.top + box.bottom - height) / 2;\n box = {\n top : top,\n right : box.right,\n bottom : top + height,\n left : box.left,\n height : height,\n width : box.right - box.left\n };\n }\n\n // var path = new Path({ stroke: { color: \"red\" }});\n // path.moveTo(box.left, box.top)\n // .lineTo(box.right, box.top)\n // .lineTo(box.right, box.bottom)\n // .lineTo(box.left, box.bottom)\n // .close();\n // group.append(path);\n\n switch (textTransform) {\n case \"uppercase\":\n str = str.toUpperCase();\n break;\n case \"lowercase\":\n str = str.toLowerCase();\n break;\n case \"capitalize\":\n str = str.replace(/(?:^|\\s)\\S/g, function (l) { return l.toUpperCase(); });\n break;\n }\n\n var text = new TextRect(\n str, new Rect([ box.left, box.top ],\n [ box.width, box.height ]),\n {\n font: font,\n fill: { color: color }\n }\n );\n group.append(text);\n }\n\n function decorate(box) {\n line(underline, box.bottom);\n line(lineThrough, box.bottom - box.height / 2.7);\n line(overline, box.top);\n function line(color, ypos) {\n if (color) {\n var width = fontSize / 12;\n var path = new Path({ stroke: {\n width: width,\n color: color\n }});\n\n ypos -= width;\n path.moveTo(box.left, ypos)\n .lineTo(box.right, ypos);\n group.append(path);\n }\n }\n }\n}\n\nfunction groupInStackingContext(element, group, zIndex) {\n var main;\n if (zIndex != \"auto\") {\n // use the current stacking context\n main = nodeInfo._stackingContext.group;\n zIndex = parseFloat(zIndex);\n } else {\n // normal flow — use given container. we still have to\n // figure out where should we insert this element with the\n // assumption that its z-index is zero, as the group might\n // already contain elements with higher z-index.\n main = group;\n zIndex = 0;\n }\n var a = main.children;\n for (var i = 0; i < a.length; ++i) {\n if (a[i]._dom_zIndex != null && a[i]._dom_zIndex > zIndex) {\n break;\n }\n }\n\n var tmp = new Group();\n main.insert(i, tmp);\n tmp._dom_zIndex = zIndex;\n\n if (main !== group) {\n // console.log(\"Placing\", element, \"in\", nodeInfo._stackingContext.element, \"at position\", i, \" / \", a.length);\n // console.log(a.slice(i+1));\n\n // if (nodeInfo._matrix) {\n // tmp.transform(nodeInfo._matrix);\n // }\n if (nodeInfo._clipbox) {\n var m = nodeInfo._matrix.invert();\n var r = nodeInfo._clipbox.transformCopy(m);\n setClipping(tmp, Path.fromRect(r));\n // console.log(r);\n // tmp.append(Path.fromRect(r));\n // tmp.append(new Text(element.className || element.id, r.topLeft()));\n }\n }\n\n return tmp;\n}\n\nfunction renderElement(element, container) {\n var style = getComputedStyle$1(element);\n\n updateCounters(style);\n\n if (/^(style|script|link|meta|iframe|col|colgroup)$/i.test(element.tagName)) {\n return;\n }\n\n if (nodeInfo._clipbox == null) {\n return;\n }\n\n var opacity = parseFloat(getPropertyValue(style, \"opacity\"));\n var visibility = getPropertyValue(style, \"visibility\");\n var display = getPropertyValue(style, \"display\");\n\n if (opacity === 0 || visibility == \"hidden\" || display == \"none\") {\n return;\n }\n\n var tr = getTransform(style);\n var group;\n\n var zIndex = getPropertyValue(style, \"z-index\");\n if ((tr || opacity < 1) && zIndex == \"auto\") {\n zIndex = 0;\n }\n group = groupInStackingContext(element, container, zIndex);\n\n // XXX: remove at some point\n // group._pdfElement = element;\n // group.options._pdfDebug = \"\";\n // if (element.id) {\n // group.options._pdfDebug = \"#\" + element.id;\n // }\n // if (element.className) {\n // group.options._pdfDebug += \".\" + element.className.split(\" \").join(\".\");\n // }\n\n if (opacity < 1) {\n group.opacity(opacity * group.opacity());\n }\n\n pushNodeInfo(element, style, group);\n\n if (!tr) {\n _renderWithPseudoElements(element, group);\n }\n else {\n saveStyle(element, function(){\n // must clear transform, so getBoundingClientRect returns correct values.\n pleaseSetPropertyValue(element.style, \"transform\", \"none\", \"important\");\n\n // must also clear transitions, so correct values are returned *immediately*\n pleaseSetPropertyValue(element.style, \"transition\", \"none\", \"important\");\n\n // the presence of any transform makes it behave like it had position: relative,\n // because why not.\n // http://meyerweb.com/eric/thoughts/2011/09/12/un-fixing-fixed-elements-with-css-transforms/\n if (getPropertyValue(style, \"position\") == \"static\") {\n // but only if it's not already positioned. :-/\n pleaseSetPropertyValue(element.style, \"position\", \"relative\", \"important\");\n }\n\n // must translate to origin before applying the CSS\n // transformation, then translate back.\n var bbox = element.getBoundingClientRect();\n var x = bbox.left + tr.origin[0];\n var y = bbox.top + tr.origin[1];\n var m = [ 1, 0, 0, 1, -x, -y ];\n m = mmul(m, tr.matrix);\n m = mmul(m, [ 1, 0, 0, 1, x, y ]);\n m = setTransform$1(group, m);\n\n nodeInfo._matrix = nodeInfo._matrix.multiplyCopy(m);\n\n _renderWithPseudoElements(element, group);\n });\n }\n\n popNodeInfo();\n\n //drawDebugBox(element.getBoundingClientRect(), container);\n}\n\n// function drawDebugBox(box, group, color) {\n// var path = Path.fromRect(new geo.Rect([ box.left, box.top ], [ box.width, box.height ]));\n// if (color) {\n// path.stroke(color);\n// }\n// group.append(path);\n// }\n\n// function dumpTextNode(node) {\n// var txt = node.data.replace(/^\\s+/, \"\");\n// if (txt.length < 100) {\n// console.log(node.data.length + \": |\" + txt);\n// } else {\n// console.log(node.data.length + \": |\" + txt.substr(0, 50) + \"|...|\" + txt.substr(-50));\n// }\n// }\n\nfunction mmul(a, b) {\n var a1 = a[0], b1 = a[1], c1 = a[2], d1 = a[3], e1 = a[4], f1 = a[5];\n var a2 = b[0], b2 = b[1], c2 = b[2], d2 = b[3], e2 = b[4], f2 = b[5];\n return [\n a1*a2 + b1*c2, a1*b2 + b1*d2,\n c1*a2 + d1*c2, c1*b2 + d1*d2,\n e1*a2 + f1*c2 + e2, e1*b2 + f1*d2 + f2\n ];\n}\n\nvar drawing = {\n\tsvg: svg$1,\n\tcanvas: canvas,\n\tutil: util,\n\tHasObservers: HasObservers,\n\tPathParser: PathParser,\n\tparsePath: parsePath,\n\tBaseNode: BaseNode,\n\tOptionsStore: OptionsStore,\n\tSurface: Surface,\n\tSurfaceFactory: SurfaceFactory,\n\texportImage: exportImage,\n\texportSVG: exportSVG,\n\tQuadNode: QuadNode,\n\tShapesQuadTree: ShapesQuadTree,\n\tElement: Element$1,\n\tCircle: Circle,\n\tArc: Arc,\n\tPath: Path,\n\tMultiPath: MultiPath,\n\tText: Text,\n\tImage: Image$1,\n\tGroup: Group,\n\tLayout: Layout,\n\tRect: Rect$2,\n\talign: align,\n\tvAlign: vAlign,\n\tstack: stack,\n\tvStack: vStack,\n\twrap: wrap,\n\tvWrap: vWrap,\n\tfit: fit,\n\tLinearGradient: LinearGradient,\n\tRadialGradient: RadialGradient,\n\tGradientStop: GradientStop,\n\tGradient: Gradient,\n\tAnimation: Animation,\n\tAnimationFactory: AnimationFactory,\n\tdrawDOM: drawDOM,\n\tdrawText: drawText,\n\tgetFontFaces: getFontFaces\n};\n\nkendo.deepExtend(kendo, {\n drawing: drawing,\n geometry: geometry\n});\n\nkendo.drawing.Segment = kendo.geometry.Segment;\nkendo.dataviz.drawing = kendo.drawing;\nkendo.dataviz.geometry = kendo.geometry;\nkendo.drawing.util.measureText = kendo.util.measureText;\nkendo.drawing.util.objectKey = kendo.util.objectKey;\nkendo.drawing.Color = kendo.Color;\nkendo.util.encodeBase64 = kendo.drawing.util.encodeBase64;\n\n})(window.kendo.jQuery);\n\n}, typeof define == 'function' && define.amd ? define : function(a1, a2, a3){ (a3 || a2)(); });\n(function(f, define) {\n define('drawing/surface-tooltip',[ \"kendo.popup\", \"./kendo-drawing\" ], f);\n})(function() {\n\n(function($) {\n\n var NS = \".kendo\";\n var kendo = window.kendo;\n var deepExtend = kendo.deepExtend;\n var utils = kendo.drawing.util;\n var defined = utils.defined;\n var limitValue = utils.limitValue;\n var eventCoordinates = utils.eventCoordinates;\n var outerWidth = kendo._outerWidth;\n var outerHeight = kendo._outerHeight;\n\n var TOOLTIP_TEMPLATE = '';\n var TOOLTIP_CLOSE_TEMPLATE = '';\n\n var SurfaceTooltip = kendo.Class.extend({\n init: function(surface, options) {\n this.element = $(TOOLTIP_TEMPLATE);\n this.content = this.element.children(\".k-tooltip-content\");\n\n options = options || {};\n\n this.options = deepExtend({}, this.options, this._tooltipOptions(options));\n this.popupOptions = {\n appendTo: options.appendTo,\n animation: options.animation,\n copyAnchorStyles: false,\n collision: \"fit fit\"\n };\n\n this._openPopupHandler = this._openPopup.bind(this);\n\n this.surface = surface;\n this._bindEvents();\n },\n\n options: {\n position: \"top\",\n showOn: \"mouseenter\",\n offset: 7,\n autoHide: true,\n hideDelay: 0,\n showAfter: 100\n },\n\n _bindEvents: function() {\n this._showHandler = this._showEvent.bind(this);\n this._surfaceLeaveHandler = this._surfaceLeave.bind(this);\n this._mouseleaveHandler = this._mouseleave.bind(this);\n this._mousemoveHandler = this._mousemove.bind(this);\n\n this.surface.bind(\"click\", this._showHandler);\n this.surface.bind(\"mouseenter\", this._showHandler);\n this.surface.bind(\"mouseleave\", this._mouseleaveHandler);\n this.surface.bind(\"mousemove\", this._mousemoveHandler);\n\n this.surface.element.on(\"mouseleave\" + NS, this._surfaceLeaveHandler);\n\n this.element.on(\"click\" + NS, \".k-tooltip-button\", this._hideClick.bind(this));\n this.element.on(\"mouseleave\" + NS, this._tooltipLeave.bind(this));\n },\n\n getPopup: function() {\n if (!this.popup) {\n this.popup = new kendo.ui.Popup(this.element, this.popupOptions);\n }\n\n return this.popup;\n },\n\n destroy: function() {\n var popup = this.popup;\n\n this.surface.unbind(\"click\", this._showHandler);\n this.surface.unbind(\"mouseenter\", this._showHandler);\n this.surface.unbind(\"mouseleave\", this._mouseleaveHandler);\n this.surface.unbind(\"mousemove\", this._mousemoveHandler);\n\n this.surface.element.off(\"mouseleave\" + NS, this._surfaceLeaveHandler);\n this.element.off(\"click\" + NS);\n this.element.off(\"mouseleave\" + NS);\n\n if (popup) {\n popup.destroy();\n delete this.popup;\n }\n delete this.popupOptions;\n\n clearTimeout(this._timeout);\n\n delete this.element;\n delete this.content;\n delete this.surface;\n },\n\n _tooltipOptions: function(options) {\n options = options || {};\n return {\n position: options.position,\n showOn: options.showOn,\n offset: options.offset,\n autoHide: options.autoHide,\n width: options.width,\n height: options.height,\n content: options.content,\n shared: options.shared,\n hideDelay: options.hideDelay,\n showAfter: options.showAfter\n };\n },\n\n _tooltipShape: function(shape) {\n while (shape && !shape.options.tooltip) {\n shape = shape.parent;\n }\n return shape;\n },\n\n _updateContent: function(target, shape, options) {\n var content = options.content;\n if (kendo.isFunction(content)) {\n content = content({\n element: shape,\n target: target\n });\n }\n\n if (content) {\n this.content.html(content);\n return true;\n }\n },\n\n _position: function(shape, options, elementSize, event) {\n var position = options.position;\n var tooltipOffset = options.offset || 0;\n var surface = this.surface;\n var offset = surface._instance._elementOffset();\n var size = surface.getSize();\n var surfaceOffset = surface._instance._offset;\n var bbox = shape.bbox();\n var width = elementSize.width;\n var height = elementSize.height;\n var left = 0, top = 0;\n\n bbox.origin.translate(offset.left, offset.top);\n if (surfaceOffset) {\n bbox.origin.translate(-surfaceOffset.x, -surfaceOffset.y);\n }\n\n if (position == \"cursor\" && event) {\n var coord = eventCoordinates(event);\n left = coord.x - width / 2;\n top = coord.y - height - tooltipOffset;\n } else if (position == \"left\") {\n left = bbox.origin.x - width - tooltipOffset;\n top = bbox.center().y - height / 2;\n } else if (position == \"right\") {\n left = bbox.bottomRight().x + tooltipOffset;\n top = bbox.center().y - height / 2;\n } else if (position == \"bottom\") {\n left = bbox.center().x - width / 2;\n top = bbox.bottomRight().y + tooltipOffset;\n } else {\n left = bbox.center().x - width / 2;\n top = bbox.origin.y - height - tooltipOffset;\n }\n\n return {\n left: limitValue(left, offset.left, offset.left + size.width),\n top: limitValue(top, offset.top, offset.top + size.height)\n };\n },\n\n show: function(shape, options) {\n this._show(shape, shape, deepExtend({}, this.options, this._tooltipOptions(shape.options.tooltip), options));\n },\n\n hide: function() {\n var popup = this.popup;\n var current = this._current;\n\n delete this._current;\n clearTimeout(this._showTimeout);\n if (popup && popup.visible() && current &&\n !this.surface.trigger(\"tooltipClose\", { element: current.shape, target: current.target, popup: popup })) {\n popup.close();\n }\n },\n\n _hideClick: function(e) {\n e.preventDefault();\n this.hide();\n },\n\n _show: function(target, shape, options, event, delay) {\n var current = this._current;\n\n clearTimeout(this._timeout);\n\n if (current && ((current.shape === shape && options.shared) || current.target === target)) {\n return;\n }\n\n clearTimeout(this._showTimeout);\n\n var popup = this.getPopup();\n\n if (!this.surface.trigger(\"tooltipOpen\", { element: shape, target: target, popup: popup }) &&\n this._updateContent(target, shape, options)) {\n\n this._autoHide(options);\n var elementSize = this._measure(options);\n\n if (popup.visible()) {\n popup.close(true);\n }\n\n this._current = {\n options: options,\n elementSize: elementSize,\n shape: shape,\n target: target,\n position: this._position(options.shared ? shape : target, options, elementSize, event)\n };\n\n if (delay) {\n this._showTimeout = setTimeout(this._openPopupHandler, options.showAfter || 0);\n } else {\n this._openPopup();\n }\n }\n },\n\n _openPopup: function() {\n var current = this._current;\n var position = current.position;\n\n this.getPopup().open(position.left, position.top);\n },\n\n _autoHide: function(options) {\n if (options.autoHide && this._closeButton) {\n this.element.removeClass(\"k-tooltip-closable\");\n this._closeButton.remove();\n delete this._closeButton;\n }\n\n if (!options.autoHide && !this._closeButton) {\n this.element.addClass(\"k-tooltip-closable\");\n this._closeButton = $(TOOLTIP_CLOSE_TEMPLATE).appendTo(this.element);\n }\n },\n\n _showEvent: function(e) {\n var shape = this._tooltipShape(e.element);\n\n if (shape) {\n var options = deepExtend({}, this.options, this._tooltipOptions(shape.options.tooltip));\n\n if (options && options.showOn == e.type) {\n this._show(e.element, shape, options, e.originalEvent, true);\n }\n }\n },\n\n _measure: function(options) {\n var popup = this.getPopup();\n var width, height;\n this.element.css({\n width: \"auto\",\n height: \"auto\"\n });\n var visible = popup.visible();\n if (!visible) {\n popup.wrapper.show();\n }\n\n this.element.css({\n width: defined(options.width) ? options.width : \"auto\",\n height: defined(options.height) ? options.height : \"auto\"\n });\n\n width = outerWidth(this.element);\n height = outerHeight(this.element);\n\n if (!visible) {\n popup.wrapper.hide();\n }\n\n return {\n width: width,\n height: height\n };\n },\n\n _mouseleave: function(e) {\n if (this.popup && !this._popupRelatedTarget(e.originalEvent)) {\n var tooltip = this;\n var current = tooltip._current;\n\n if (current && current.options.autoHide) {\n tooltip._timeout = setTimeout(function() {\n clearTimeout(tooltip._showTimeout);\n tooltip.hide();\n }, current.options.hideDelay || 0);\n }\n }\n },\n\n _mousemove: function(e) {\n var current = this._current;\n if (current && e.element) {\n var options = current.options;\n if (options.position == \"cursor\") {\n var position = this._position(e.element, options, current.elementSize, e.originalEvent);\n current.position = position;\n this.getPopup().wrapper.css({ left: position.left, top: position.top });\n }\n }\n },\n\n _surfaceLeave: function(e) {\n if (this.popup && !this._popupRelatedTarget(e)) {\n clearTimeout(this._showTimeout);\n this.hide();\n }\n },\n\n _popupRelatedTarget: function(e) {\n return e.relatedTarget && $(e.relatedTarget).closest(this.popup.wrapper).length;\n },\n\n _tooltipLeave: function() {\n var tooltip = this;\n var current = tooltip._current;\n if (current && current.options.autoHide) {\n tooltip._timeout = setTimeout(function() {\n tooltip.hide();\n }, current.options.hideDelay || 0);\n }\n }\n });\n\n kendo.drawing.SurfaceTooltip = SurfaceTooltip;\n\n})(window.kendo.jQuery);\n\n}, typeof define == 'function' && define.amd ? define : function(a1, a2, a3) { (a3 || a2)(); });\n(function(f, define) {\n define('drawing/surface',[ \"./kendo-drawing\", \"./surface-tooltip\" ], f);\n})(function() {\n\n(function($) {\n\n var kendo = window.kendo;\n var draw = kendo.drawing;\n var DrawingSurface = draw.Surface;\n var Widget = kendo.ui.Widget;\n var deepExtend = kendo.deepExtend;\n\n kendo.support.svg = DrawingSurface.support.svg;\n kendo.support.canvas = DrawingSurface.support.canvas;\n\n var Surface = Widget.extend({\n init: function(element, options) {\n Widget.fn.init.call(this, element, {});\n\n this.options = deepExtend({}, this.options, options);\n\n this._instance = DrawingSurface.create(this.element[0], options);\n if (this._instance.translate) {\n this.translate = translate;\n }\n\n this._triggerInstanceHandler = this._triggerInstanceEvent.bind(this);\n this._bindHandler(\"click\");\n this._bindHandler(\"mouseenter\");\n this._bindHandler(\"mouseleave\");\n this._bindHandler(\"mousemove\");\n\n this._enableTracking();\n },\n\n options: {\n name: \"Surface\",\n tooltip: {}\n },\n\n events: [\n \"click\",\n \"mouseenter\",\n \"mouseleave\",\n \"mousemove\",\n \"resize\",\n \"tooltipOpen\",\n \"tooltipClose\"\n ],\n\n _triggerInstanceEvent: function(e) {\n this.trigger(e.type, e);\n },\n\n _bindHandler: function(event) {\n this._instance.bind(event, this._triggerInstanceHandler);\n },\n\n draw: function(element) {\n this._instance.draw(element);\n },\n\n clear: function() {\n if (this._instance) {\n this._instance.clear();\n }\n this.hideTooltip();\n },\n\n destroy: function() {\n if (this._instance) {\n this._instance.destroy();\n delete this._instance;\n }\n\n if (this._tooltip) {\n this._tooltip.destroy();\n delete this._tooltip;\n }\n\n Widget.fn.destroy.call(this);\n },\n\n exportVisual: function() {\n return this._instance.exportVisual();\n },\n\n eventTarget: function(e) {\n return this._instance.eventTarget(e);\n },\n\n showTooltip: function(shape, options) {\n if (this._tooltip) {\n this._tooltip.show(shape, options);\n }\n },\n\n hideTooltip: function() {\n if (this._tooltip) {\n this._tooltip.hide();\n }\n },\n\n suspendTracking: function() {\n this._instance.suspendTracking();\n this.hideTooltip();\n },\n\n resumeTracking: function() {\n this._instance.resumeTracking();\n },\n\n getSize: function() {\n return {\n width: this.element.width(),\n height: this.element.height()\n };\n },\n\n setSize: function(size) {\n this.element.css({\n width: size.width,\n height: size.height\n });\n\n this._size = size;\n this._instance.currentSize(size);\n this._resize();\n },\n\n _resize: function() {\n this._instance.currentSize(this._size);\n this._instance._resize();\n },\n\n _enableTracking: function() {\n if (kendo.ui.Popup) {\n this._tooltip = new draw.SurfaceTooltip(this, this.options.tooltip || {});\n }\n }\n });\n\n kendo.ui.plugin(Surface);\n\n Surface.create = function(element, options) {\n return new Surface(element, options);\n };\n\n kendo.drawing.Surface = Surface;\n\n function translate(offset) {\n this._instance.translate(offset);\n }\n\n})(window.kendo.jQuery);\n\n}, typeof define == 'function' && define.amd ? define : function(a1, a2, a3) { (a3 || a2)(); });\n(function(f, define) {\n define('drawing/html',[ \"./kendo-drawing\" ], f);\n})(function() {\n\n(function($) {\n\n var kendo = window.kendo;\n var drawing = kendo.drawing;\n var drawDOM = drawing.drawDOM;\n\n drawing.drawDOM = function(element, options) {\n return drawDOM($(element)[0], options);\n };\n\n // Aliases used by spreadsheet/print.js\n drawing.drawDOM.drawText = drawing.drawText;\n drawing.drawDOM.getFontFaces = drawing.getFontFaces;\n\n})(window.kendo.jQuery);\n\n}, typeof define == 'function' && define.amd ? define : function(a1, a2, a3) { (a3 || a2)(); });\n\n(function(f, define) {\n define('kendo.drawing',[\n \"./drawing/util\",\n \"./drawing/kendo-drawing\",\n \"./drawing/surface-tooltip\",\n \"./drawing/surface\",\n \"./drawing/html\"\n ], f);\n})(function() {\n\n var __meta__ = {\n id: \"drawing\",\n name: \"Drawing API\",\n category: \"framework\",\n description: \"The Kendo UI low-level drawing API\",\n depends: [ \"core\", \"color\", \"popup\" ]\n };\n\n}, typeof define == 'function' && define.amd ? define : function(a1, a2, a3) { (a3 || a2)(); });\n"],"names":["define","$","window","kendo","jQuery","createPromise","Deferred","promiseAll","promises","when","apply","extendStatic","dest","src","__proto__","member","hasOwnProperty","drawing","util","deepExtend","amd","a1","a2","a3","LRUCache","Class","extend","init","size","this","_size","_length","_map","put","key","value","map","entry","_head","_tail","newer","older","get","REPLACE_REGEX","SPACE","normalizeText","text","String","replace","objectKey","object","parts","push","sort","join","hashKey","str","hash","i","length","charCodeAt","zeroSize","width","height","baseline","DEFAULT_OPTIONS","baselineMarkerSize","defaultMeasureBox","document","createElement","style","cssText","TextMetrics","options","_cache","measure","styleKey","cacheKey","cachedResult","measureBox","box","baselineMarker","_baselineMarker","cloneNode","textStr","textContent","appendChild","body","offsetWidth","offsetHeight","offsetTop","parentNode","removeChild","marker","measureText","current","kendoDrawing","kendoDrawingUtil","kendoUtil","support","supportBrowser","browser","HasObservers","Class$$1","arguments","prototype","Object","create","constructor","fn","observers","_observers","addObserver","element","removeObserver","index","indexOf","splice","trigger","methodName","event","_suspended","idx","observer","optionsChange","e","geometryChange","suspend","resume","Math","max","_observerField","field","append$1$1","first","second","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","arabicToRoman","n","values","roman","shift","UNDEFINED","defined","defId","definitionId","DEG_TO_RAD","PI","MAX_NUM","Number","MAX_VALUE","MIN_NUM","deg","radians","fromCharCode","encodeUTF8","input","output","code","hi","low","isNaN","KEY_STR","encodeBase64","utfInput","chr1","chr2","chr3","enc1","enc2","enc3","enc4","charAt","eventCoordinates","x","location","y","pageX","clientX","pageY","clientY","eventElement","touch","initialTouch","target","isTransparent","color","last","array","limitValue","min","mergeSort","a","cmp","slice","merge","b","r","ai","bi","m","floor","left","right","now","Date","getTime","rad","degrees","pow","p","round","precision","power","valueOrDefault","defaultValue","bindEvents","events","eventName","eventNames","trim","split","addEventListener","elementOffset","getBoundingClientRect","documentElement","top","pageYOffset","scrollTop","clientTop","pageXOffset","scrollLeft","clientLeft","elementStyles","styles","result","getComputedStyle","stylesArray","Array","isArray","getPixels","elementSize","size$1","parseInt","unbindEvents","name","removeEventListener","elementPadding","ref","paddingLeft","paddingTop","parseFloat","Matrix","c","d","f","call","multiplyCopy","matrix","invert","g","h","det","clone","equals","other","round$1","toArray","toString","separator","translate","unit","rotate","angle","cos","sin","scale","scaleX","scaleY","matrixRegexp","IDENTITY","parseMatrix","matrixString","match","members","Function","bind","concat","transformMatrix","transform","elementScale","parent","parentElement","parentMatrix","append","toString$1","OptionsStore","HasObservers$$1","prefix","this$1","_wrap","part","set","_set","composite","parentObj","fieldName","obj","_clear","type","wrapped","setAccessor","getAccessor","defineAccessors","fields","capitalized","toUpperCase","substring","withAccessors","TBase","names","toMatrix","transformation","Point","superclass","staticAccessors","ZERO","origin","originPoint","translateWith","point","move","scaleCopy","transformCopy","distanceTo","dx","dy","sqrt","digits","doRound","arg0","arg1","arguments$1","minX","minY","maxX","maxY","minPoint","maxPoint","defineProperties","Size","Rect","cornerRadius","setOrigin","setSize","setCornerRadius","getOrigin","radius","getCornerRadius","getSize","topLeft","bottomRight","topRight","bottomLeft","center","bbox","tl","tr","br","bl","fromPoints","expand","expandCopy","containsPoint","_isOnPath","rectOuter","rectInner","union","intersect","rect1","bottom","rect2","Transformation","_matrix","_optionsChange","multiply","transform$1","Element$1","Element","_initOptions","prototypeAccessors","nodeType","clip","id","parentTransform","currentTransform","elementTransform","elementMatrix","combinedMatrix","visible","opacity","clippedBBox","_clippedBBox","transformedPoint","_hasFill","_containsPoint","_hasStroke","fill","stroke","ellipseExtremeAngles","rx","ry","extremeX","extremeY","atan2","PI_DIV_2","Circle$2","Circle","setCenter","setRadius","getCenter","pointAt","_pointAt","extremeAngles","currentPointX","currentPointY","currentPoint","inCircle","pointDistance","GRADIENT","paintable","anonymous","newFill","IDENTITY_MATRIX_HASH","measurable","matrixHash","_bboxCache","_matrixHash","_bbox","strokeWidth","geometryAccessor","defineGeometryAccessors","withGeometry","DEFAULT_STROKE","geometry","rawBBox","_geometry","PRECISION","close$1","tolerance","abs","closeOrLess","lineIntersection","p0","p1","p2","p3","s1x","s2x","s1y","s2y","nx","ny","s","t","MAX_INTERVAL","pow$1","accessors","Arc$2","Arc","radiusX","radiusY","startAngle","endAngle","anticlockwise","xRotation","radian","curvePoints","dir","interval","_arcInterval","intervalAngle","subIntervalsCount","ceil","subIntervalAngle","currentAngle","nextAngle","points","_intervalCurvePoints","cp1","cp2","endPoint","currentAngleX","bboxStartAngle","currentAngleY","oldStart","p1Derivative","_derivativeAt","p2Derivative","distance","angleRad","pointRadius","startPoint","intersection","calculateAngle","inAngleRange","start","end","largeArc","swipe","rotation","arcParameters","normalizeArcParameters","x1","y1","x2","y2","cx","cy","parameters","cosine","sine","xT","yT","sign","xt2","yt2","rx2","ry2","delta","constT","cxT","cyT","uX","uY","vX","vY","acos","angleCosine","signEndAngle","pop","unshift","ElementsArray","_splice","elements","_change","push$1","_add","slice$1","pop$1","_remove","splice$1","howMany","shift$1","unshift$1","_clearObserver","_setObserver","GeometryElementsArray","ElementsArray$$1","isOutOfEndPoint","controlPoint","rotatedPoint","calculateCurveAt","t1","toCubicPolynomial","ComplexNumber","real","img","add","cNumber","addConstant","negate","multiplyConstant","nthRoot","rad$$1","nthR","isReal","numberSign$1","solveQuadraticEquation","squareRoot","solveCubicEquation","q","Q","b3a","y3","z1","z2","hasRootsInRange","rootField","range","polynomial","roots","curveIntersectionsCount","rayIntersection","intersectsRay","count","lineIntersectionsCount","intersects","inRange","pointAccessor","definePointAccessors","withPoints","Segment","anchor","controlIn","controlOut","bboxTo","toSegment","segmentAnchor","toSegmentAnchor","rect","_curveBoundingBox","_lineBoundingBox","extremesX","_curveExtremesFor","extremesY","xLimits","arrayLimits","yLimits","extremes","_curveExtremes","x3","x4","t2","_intersectionsTo","segment","intersectionsCount","_isOnCurveTo","endSegment","p4","rotatedPoints","_isOnLineTo","_isOnPathTo","isOnPath","arr","WEIGHT","EXTREMUM_ALLOWED_DEVIATION","X","Y","pointsToCurve","pointsIn","closed","segments","removeDuplicates","tangent","getTangent","firstControlPoint","secondControlPoint","initialControlPoint","lastControlPoint","controlPoints","getControlPoints","tangent$1","cp0","controlPoints$1","controlPoints$2","tangent$2","invertAxis","lineFunction","calculateFunction","isLine","xField","yField","restrict","switchOrientation","monotonic","isMonotonicByField","numberSign","secondCP","oldXField","firstCP","restrictControlPoint","cp","xValue","yValue","ShapeMap","l","path","position","isRelative","lineTo","curveTo","v","toLineParamaters","arcTo","previousCommand","lastControlIn","paths","reflectionPoint","cubicControlPoints","quadraticToCubicControlPoints","lastSegment","isVertical","insertPosition","third","scaledPoint","SEGMENT_REGEX","SPLIT_REGEX","MOVE","CLOSE","parseParameters","number","parsePath","pathInstance","params","closePath","command","toLowerCase","moveTo","close","Error","elementsBoundingBox","applyTransform","boundingBox","elementBoundingBox","elementsClippedBoundingBox","printPoints","len","segmentType","segmentStart","segmentEnd","Path","lineJoin","point$$1","arc","_addArcSegments","print","currentType","previous","pathWidth","segmentBox","parse","MultiPath","fromRect","curveFromPoints","fromArc","prototypeAccessors$1","instance","DEFAULT_STROKE$1","toPath","DEFAULT_FONT","DEFAULT_FILL","Text","content","font","metrics","pos","Image$1","Image","_rect","traversable","childrenField","traverse","callback","children","child","Group","childrenChange","action","items","append$1","_reparent","insert","insertAt","remove","removeAt","clear","newParent","translateToPoint","transofrm","alignStart","align","axis","sizeField","alignStartReverse","alignContent","justifyContent","alignItems","spacing","orientation","lineSpacing","wrap","revers","forEach","forEachReverse","Layout","Group$$1","_fieldMap","_initMap","fieldMap","groupsSizeField","groupAxis","groupsAxis","reverse","justifyAlign","reflow","_initGroups","groups","groupsSize","ref$1","groupOrigin","elementOrigin","groupStart","elementStart","group","groupBox","arrangeElements","groupIdx","lineSize","bboxes","scaledStart","scaledSize","newStart","_newGroup","addGroup","_addToGroup","Rect$2","Rect$$1","alignElements","alignment","vAlign","stackElements","stackAxis","otherAxis","previousBBox","createStackElements","stack","vStack","getStacks","maxSize","stacks","stackSize","addElementToStack","wrapElements","startElement","elementIdx","vWrap","fit","rectSize","StopsArray","optionsAccessor","defineOptionsAccessors","withOptions","GradientStop","offset","arg","stop","Gradient","stops","_createStops","_userSpace","userSpace","addStop","removeStop","points$1","LinearGradient","RadialGradient","_radius","_fallbackFill","fallbackFill","swing","linear","easeOutElastic","time","diff","asin","easingFunctions","AnimationFactory","_items","register","Animation","_options","duration","easing","setup","step","play","delay","finish","abort","setTimeout","loop","_stopped","wallTime","easingPosition","animationFrame","destroy","instance$1","PathParser","multiPath","BaseNode","srcElement","childNodes","observe","load","node","removeSelf","invalidate","Surface$2","Observable$$1","Surface","_kendoExportVisual","exportVisual","_click","_handler","_mouseenter","_mouseleave","_mousemove","_visual","_enableTracking","draw","unbind","eventTarget","domNode","_kendoNode","currentSize","_resize","resize","force","suspendTracking","_suspendedTracking","resumeTracking","originalEvent","_elementOffset","padding","_surfacePoint","coord","inverseTransform","Observable","renderAttr","renderAllAttr","attrs","renderStyle","NODE_MAP","SVG_NS","NONE","POINT_DIGITS","renderSVG","container","svg","innerHTML","testFragment","testContainer","hasParser","DOMParser","firstChild","namespaceURI","parser","chartDoc","parseFromString","importedDoc","adoptNode","renderSVG$1","TRANSFORM","DefinitionMap","isDefinition","baseUrl","base","getElementsByTagName","href","url","msie","hashIndex","Node","BaseNode$$1","definitions","clearDefinitions","childNode","createDefinitions","attachTo","root","domElement","render","insertBefore","setElement","nodes","childElement","template","renderChildren","css","updateDefinition","attr","removeAttr","setAttribute","allAttr","allCss","removeAttribute","mapTransform","renderTransform","transformChange","mapStyle","cursor","renderStyle$1","renderOpacity","renderId","hasDefinitions","definition","definitionChange","refUrl","renderDefinitions","mapDefinitions","skipBaseHref","baseHref","baseUrl$1","GradientStopNode","Node$$1","renderOffset","GradientNode","loadStops","stopNode","mapCoordinates","renderCoordinates","mapSpace","LinearGradientNode","GradientNode$$1","RadialGradientNode","ClipNode","DefinitionNode","definitionMap","addDefinitions","removeDefinitions","createDefinition","item","addDefinition","mapItem","removeDefinition","RootNode","defs","firstElementChild","DASH_ARRAYS","dot","dash","longdash","dashdot","longdashdot","longdashdotdot","SOLID","BUTT","ATTRIBUTE_MAP","fill.opacity","stroke.color","stroke.width","stroke.opacity","PathNode","renderData","mapFill","mapStroke","undefined","renderLinecap","dashType","renderDashType","renderStroke","dashArray","lineCap","renderFill","ArcNode","PathNode$$1","CircleNode","GroupNode","ImageNode","mapPosition","mapSource","renderPosition","encode","htmlEncode","renderSource","MultiPathNode","RectNode","ENTITY_REGEX","decodeEntities","test","_element","lastIndex","innerText","TextNode","setY","renderContent","renderTextAnchor","rtl","edge","RTL","alignToScreen","ctm","getScreenCTM","Surface$3","BaseSurface","_root","direction","_template","_rootElement","click","mouseover","mouseout","mousemove","viewBox","_offset","visual","NODE_MAP$2","renderPath","ctx","prevSeg","prevOut","bezierCurveTo","Node$2","initClip","clearClip","setClip","beginPath","setTransform","loadElements","cors","setOpacity","globalAlpha","opactity","GroupNode$2","renderTo","save","restore","FRAME_DELAY","RootNode$2","canvas","getContext","invalidateHandler","_invalidate","throttle","_rescale","_devicePixelRatio","devicePixelRatio","fixedScale","clearRect","QuadRoot","shapes","shape","_quadNode","pointShapes","QuadNode","QuadRoot$$1","inBounds","nodeRect","nodeBottomRight","inserted","_initChildren","halfWidth","halfHeight","ROOT_SIZE","LEVEL_STEP","MAX_LEVEL","ShapesQuadTree","initRoots","rootMap","rootElements","pointShape","sectorRoot","assignZindex","zIndexComparer","zIndex","levelWeight","parents","_zIndex","bboxChange","_insertShape","elementsArray","_insert","sectors","getSectors","inRoot","bottomX","bottomY","SurfaceCursor","surface","addGradientStops","gradient","parseColor","addColorStop","toCssRgba","_resetCursor","_shapeCursor","_current","_defaultCursor","_getCursor","_setCursor","PathNode$2","renderPoints","setLineDash","setLineCap","setLineJoin","setFill","setStroke","hasFill","setGradientFill","fillStyle","createLinearGradient","createRadialGradient","strokeStyle","lineWidth","mozDash","webkitLineDash","ArcNode$2","CircleNode$2","ImageNode$2","onLoad","onError","loading","crossOrigin","complete","onload","onerror","state","drawImage","resolve","reject","MultiPathNode$2","RectNode$2","TextNode$2","textAlign","fillText","strokeText","Surface$4","_mouseTrackHandler","_trackMouse","_searchTree","_cursor","image","rootElement","loadingStates","promise","resolveDataURL","data","toDataURL","then","currentShape","_currentShape","instance$2","support$1","hasDocument","supportsCanvas","supportsSVG","implementation","hasFeature","SurfaceFactory","preferred","logToConsole","navigator","exportGroup","rootGroup","exportRoot","svg$1","exportImage","defaults","surfaceOptions","display","exportSVG","raw","slice$1$1","thing","KENDO_PSEUDO_ELEMENT","IMAGE_CACHE","nodeInfo","inBrowser","microsoft","TextRect","Text$$1","_pdfRect","addClass","el","cls","classList","className","removeClass","reduce","word","setCSS","keys","matches","selector","webkitMatchesSelector","mozMatchesSelector","msMatchesSelector","querySelectorAll","closest","cloneNodes","$el","$clone","tagName","checked","selected","nextSibling","dive","canvases","canvas$$1","orig","getXY","drawDOM","pdf","defineFont","getFontFaces","ownerDocument","doOne","setTransform$1","_clipbox","_stackingContext","avoidLinks","_avoidLinks","renderElement","cacheImages","forceBreak","forcePageBreak","hasPaperSize","paperSize","paperOptions","getPaperOptions","def","pageWidth","pageHeight","margin","hasMargin","Boolean","multiPage","_ignoreMargin","handlePageBreaks","progress","canceled","pageNum","next","pages","page","totalPages","cancel","makeTemplate","div","doc","copy","_destructive","adjust","tfoot","ol","li","boxSizing","paddingRight","overflow","beforePageBreak","whenImagesAreActuallyLoaded","doPageBreak","splitElement","makePage","keepTogether","tag","getAttribute","tableLayout","getComputedStyle$1","bottomPadding","getPropertyValue","bottomBorder","saveAdjust","isFirst","breakAtElement","fall","fallsOnMargin","splitText","firstInParent","table","colgroup","thead","grid","gridHead","querySelector","repeatHeaders","createRange","setStartBefore","setEndBefore","extractContents","preventBulletOnListItem","pageClassName","available","selectNodeContents","nextnode","findEOP","setEnd","endOffset","drawText","pushNodeInfo","renderText","_renderElement","popNodeInfo","parseBackgroundImage","tok_linear_gradient","tok_percent","tok_length","tok_keyword","tok_angle","tok_whitespace","tok_popen","tok_pclose","tok_comma","tok_url","tok_content","cache1","cache2","skip_ws","exec","substr","read","token","read_stop","percent","toRGB","read_linear_gradient","propName","to1","to2","parseAngle","to","read_url","tok","splitProperty","cache","ret","last$$1","in_paren","in_string","looking_at","getFontURL","getFontHeight","styleSheets","doStylesheet","ss","rules","cssRules","ex","addRules","findFonts","rule","styleSheet","family","bold","italic","addRule","getCounter","getAllCounters","getPrototypeOf","incCounter","inc","resetCounter","val","doCounters","updateCounters","counterReset","counterIncrement","parseColor$1","pending","images","urls","bg","alphaNumeral","decoration","createsStackingContext","updateClipbox","emptyClipbox","cb","prop","pseudoElt","defa","webkit","mozilla","opera","pleaseSetPropertyValue","important","setProperty","getBorder","side","saveStyle","func","prev","getBorderRadius","sanitizeRadius","getContentBox","innerBox","wt","wr","wb","wl","getTransform","transform$$1","radiansToDegrees","num","setClipping","clipPath","addArcToPath","adjustBorderRadiusForBox","rTL","rTR","rBR","rBL","tl_x","tl_y","tr_x","tr_y","br_x","br_y","bl_x","bl_y","elementRoundBox","bt","bb","pt","pr","pb","pl","roundBox","rTL0","rTR0","rBR0","rBL0","tmp","formatCounter","evalPseudoElementContent","displayCounter","getCssText","_renderWithPseudoElements","fake","pseudo","kind","place","psel","saveClass","backgroundColor","backgroundImage","backgroundRepeat","backgroundPosition","backgroundOrigin","backgroundSize","textOverflow","saveTextOverflow","version","currentStyle","innerbox","boxes","cells","getClientRects","adjustBoxes","drawOneBox","_pdfLink","drawBullet","clipit","isFormField","maybeRenderWidget","renderContents","tableBorderLeft","tableBorderTop","tableBox","firstCell","rows","firstCellBox","drawEdge","Wtop","Wleft","Wright","rl","rr","drawRoundCorner","ri","drawBackground","background","drawOneBackground","drawBackgroundImage","gradientRenderer","img_width","img_height","renderBG","aspect_ratio","orgBox","rewX","rewY","repeatX","listStyleType","listStylePosition","_drawBullet","bullet","elementIndex","k","fontSize","lineHeight","fontFamily","disc","circle","square","isLast","shouldDrawLeft","shouldDrawRight","inv","pxlen","scaledAngle","atan","tan","implicit","console","log","widget","widgetInstance","exportDOMVisual","wrap$$1","renderImage","zIndexSort","sa","sb","za","zb","pa","getSelectedOption","selectedOptions","selectedIndex","renderCheckbox","renderFormField","option","whiteSpace","multiple","serializeSVG","serializer","XMLSerializer","xml","serializeToString","svg$$1","dataURL","floats","positioned","floating","search","align$$1","isJustified","columnCount","textTransform","estimateLineLength","prevLineBottom","underline","lineThrough","overline","hasDecoration","doChunk","selectNode","decorate","actuallyGetRangeBoundingRect","chrome","safari","rectangles","Infinity","done","origStart","setStart","found","findEOL","eol","startOffset","cc","indent","line","ypos","groupInStackingContext","main","_dom_zIndex","visibility","mmul","b1","c1","d1","e1","f1","b2","c2","d2","e2","f2","dataviz","Color","NS","utils","outerWidth","_outerWidth","outerHeight","_outerHeight","TOOLTIP_TEMPLATE","TOOLTIP_CLOSE_TEMPLATE","SurfaceTooltip","_tooltipOptions","popupOptions","appendTo","animation","copyAnchorStyles","collision","_openPopupHandler","_openPopup","_bindEvents","showOn","autoHide","hideDelay","showAfter","_showHandler","_showEvent","_surfaceLeaveHandler","_surfaceLeave","_mouseleaveHandler","_mousemoveHandler","on","_hideClick","_tooltipLeave","getPopup","popup","ui","Popup","off","clearTimeout","_timeout","shared","_tooltipShape","tooltip","_updateContent","isFunction","html","_position","tooltipOffset","_instance","surfaceOffset","show","_show","hide","_showTimeout","preventDefault","_autoHide","_measure","open","_closeButton","wrapper","_popupRelatedTarget","relatedTarget","DrawingSurface","Widget","_triggerInstanceHandler","_triggerInstanceEvent","_bindHandler","hideTooltip","_tooltip","showTooltip","plugin","__meta__","category","description","depends"],"mappings":"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"}