{"version":3,"file":"js/chunk-vendors-9f68cb3d.4392c556.js","mappings":"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","sources":["webpack://rokk3rfuel/./node_modules/@amcharts/amcharts4/.internal/core/export/Export.js","webpack://rokk3rfuel/./node_modules/@amcharts/amcharts4/.internal/core/export/ExportCSS.js","webpack://rokk3rfuel/./node_modules/@amcharts/amcharts4/.internal/core/export/ExportMenu.js"],"sourcesContent":["/**\r\n * Export module.\r\n *\r\n * Parts of Export functionality rely on the following third party libraries:\r\n *\r\n * [canvg.js](https://github.com/canvg/canvg)\r\n * Copyright (c) Gabe Lerner\r\n * Licensed under [MIT](https://github.com/canvg/canvg/blob/master/LICENSE)\r\n *\r\n * [pdfmake](http://pdfmake.org/)\r\n * Copyright (c) 2014 bpampuch\r\n * Licensed under [MIT](https://github.com/bpampuch/pdfmake/blob/master/LICENSE)\r\n *\r\n * [SheetJS Community Edition](https://github.com/sheetjs/js-xlsx)\r\n * Licensed under [Apache License 2.0](https://github.com/SheetJS/js-xlsx/blob/master/LICENSE)\r\n *\r\n * [JSZip](http://stuartk.com/jszip)\r\n * Copyright (c) Stuart Knightley\r\n * Dual licenced under the [MIT license or GPLv3](https://raw.githubusercontent.com/Stuk/jszip/master/LICENSE.markdown).\r\n */\r\nimport { __awaiter, __extends, __generator } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport { ExportMenu } from \"./ExportMenu\";\r\nimport { Adapter } from \"../utils/Adapter\";\r\nimport { Sprite } from \"../Sprite\";\r\nimport { Modal } from \"../elements/Modal\";\r\nimport { List } from \"../utils/List\";\r\nimport { Dictionary } from \"../utils/Dictionary\";\r\nimport { DateFormatter } from \"../formatters/DateFormatter\";\r\nimport { DurationFormatter } from \"../formatters/DurationFormatter\";\r\nimport { NumberFormatter } from \"../formatters/NumberFormatter\";\r\nimport { Language } from \"../utils/Language\";\r\nimport { Validatable } from \"../utils/Validatable\";\r\nimport { color } from \"../utils/Color\";\r\nimport { registry } from \"../Registry\";\r\nimport { options } from \"../Options\";\r\nimport { StyleRule, getComputedStyle } from \"../utils/DOM\";\r\nimport * as $browser from \"../utils/Browser\";\r\nimport * as $object from \"../utils/Object\";\r\nimport * as $net from \"../utils/Net\";\r\nimport * as $dom from \"../utils/DOM\";\r\nimport * as $type from \"../utils/Type\";\r\nimport * as $log from \"../utils/Log\";\r\nimport * as $utils from \"../utils/Utils\";\r\nimport * as $array from \"../utils/Array\";\r\nimport * as $math from \"../utils/Math\";\r\nimport * as $strings from \"../utils/Strings\";\r\n// This is used to cache the pdfmake loading\r\nvar pdfmakePromise;\r\n/**\r\n * Loads pdfmake dynamic module\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Instance of pdfmake\r\n * @async\r\n */\r\nfunction _pdfmake() {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var a, pdfmake, vfs_fonts, global;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, Promise.all([\r\n import(/* webpackChunkName: \"pdfmake\" */ \"pdfmake/build/pdfmake.js\"),\r\n import(/* webpackChunkName: \"pdfmake\" */ \"../../pdfmake/vfs_fonts\")\r\n ])];\r\n case 1:\r\n a = _a.sent();\r\n pdfmake = a[0];\r\n vfs_fonts = a[1];\r\n global = window;\r\n global.pdfMake = global.pdfMake || {};\r\n global.pdfMake.vfs = vfs_fonts.default;\r\n pdfmake.vfs = vfs_fonts.default;\r\n return [2 /*return*/, pdfmake];\r\n }\r\n });\r\n });\r\n}\r\n// TODO better parsing\r\nvar fontFamilySrcRegexp = /src: ([^;]+);/;\r\n// TODO better checks\r\nfunction supportsBlobUri() {\r\n return window.navigator.msSaveOrOpenBlob != null;\r\n}\r\n// TODO move into utils or something ?\r\nfunction blobToDataUri(blob) {\r\n return new Promise(function (resolve, reject) {\r\n // TODO handle abort ?\r\n var f = new FileReader();\r\n f.onload = function (e) { resolve(f.result); };\r\n f.onerror = function (e) { reject(e); };\r\n f.readAsDataURL(blob);\r\n });\r\n}\r\nfunction getCssRules(s) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var sheet, e_1;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n sheet = s.sheet;\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 2, , 4]);\r\n return [2 /*return*/, sheet.cssRules];\r\n case 2:\r\n e_1 = _a.sent();\r\n return [4 /*yield*/, new Promise(function (success, error) {\r\n s.addEventListener(\"load\", function () {\r\n success(sheet.cssRules);\r\n }, true);\r\n s.addEventListener(\"error\", function (e) {\r\n error(e);\r\n }, true);\r\n setTimeout(function () {\r\n error(new Error(\"Timeout while waiting for \" + this.serializeElement(this.sprite.paper.defs) + this.serializeElement(this.sprite.dom), options, width, height, scale, font, fontSize);\r\n svg = new Blob([data], { type: \"image/svg+xml\" });\r\n url = DOMURL.createObjectURL(svg);\r\n return [4 /*yield*/, this.loadNewImage(url, width * scale * pixelRatio, height * scale * pixelRatio, \"anonymous\")];\r\n case 3:\r\n img = _a.sent();\r\n // Draw image on canvas\r\n ctx.drawImage(img, 0, 0);\r\n return [3 /*break*/, 5];\r\n case 4:\r\n if (url !== null) {\r\n DOMURL.revokeObjectURL(url);\r\n }\r\n if (blobs !== null) {\r\n $array.each(blobs, function (url) {\r\n DOMURL.revokeObjectURL(url);\r\n });\r\n }\r\n // Restore replaced tainted images in DOM\r\n this.restoreRemovedObjects();\r\n return [7 /*endfinally*/];\r\n case 5: return [2 /*return*/, canvas];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Returns canvas representation of the [[Sprite]] using canvg.\r\n *\r\n * @param options Options\r\n * @return Canvas\r\n */\r\n Export.prototype.getCanvasAdvanced = function (options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var background, canvg, width, height, font, fontSize, scale, pixelRatio, data, canvas, config;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n // Options are set?\r\n if (!$type.hasValue(options)) {\r\n options = {};\r\n }\r\n // Convert external images to data uris\r\n return [4 /*yield*/, this.imagesToDataURI(this.sprite.dom, options)];\r\n case 1:\r\n // Convert external images to data uris\r\n _a.sent();\r\n background = this.backgroundColor || this.findBackgroundColor(this.sprite.dom);\r\n return [4 /*yield*/, this.canvg];\r\n case 2:\r\n canvg = _a.sent();\r\n width = this.sprite.pixelWidth;\r\n height = this.sprite.pixelHeight;\r\n font = $dom.findFont(this.sprite.dom);\r\n fontSize = $dom.findFontSize(this.sprite.dom);\r\n scale = options.scale || 1;\r\n pixelRatio = this.getPixelRatio(options);\r\n // Check if scale needs to be updated as per min/max dimensions\r\n scale = this.getAdjustedScale(width * pixelRatio, height * pixelRatio, scale, options);\r\n data = this.normalizeSVG(this.serializeElement(this.sprite.paper.defs) + this.serializeElement(this.sprite.dom), options, width, height, scale, font, fontSize, background);\r\n canvas = this.getDisposableCanvas();\r\n // Set canvas width/height\r\n canvas.style.width = (width * pixelRatio * scale) + 'px';\r\n canvas.style.height = (height * pixelRatio * scale) + 'px';\r\n canvas.width = width * pixelRatio * scale;\r\n canvas.height = height * pixelRatio * scale;\r\n config = {\r\n //ignoreDimensions: true,\r\n useCORS: true\r\n };\r\n if (pixelRatio != 1) {\r\n config.ignoreDimensions = true;\r\n config.scaleWidth = width * pixelRatio * scale;\r\n config.scaleHeight = height * pixelRatio * scale;\r\n }\r\n return [4 /*yield*/, canvg.fromString(canvas.getContext(\"2d\"), data, config).render()];\r\n case 3:\r\n _a.sent();\r\n return [2 /*return*/, canvas];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Tries to dynamically load [canvg.js](https://github.com/canvg/canvg) and\r\n * export an image using its functions.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @param type Image format\r\n * @param options Options\r\n * @return Data uri\r\n */\r\n Export.prototype.getImageAdvanced = function (type, options, includeExtras) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var prehidden, canvas, uri;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n prehidden = this._objectsAlreadyHidden;\r\n if (!prehidden) {\r\n this.hideNonExportableSprites();\r\n }\r\n if (!$type.hasValue(options)) {\r\n options = this.getFormatOptions(type);\r\n }\r\n return [4 /*yield*/, this.getCanvasAdvanced(options)];\r\n case 1:\r\n canvas = _a.sent();\r\n if (!(includeExtras !== false)) return [3 /*break*/, 3];\r\n return [4 /*yield*/, this.addExtras(canvas, options, true)];\r\n case 2:\r\n canvas = _a.sent();\r\n _a.label = 3;\r\n case 3:\r\n uri = canvas.toDataURL(this.getContentType(type), options.quality);\r\n // Get rid of the canvas\r\n this.disposeCanvas(canvas);\r\n if (!prehidden) {\r\n this.restoreNonExportableSprites();\r\n }\r\n return [2 /*return*/, uri];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Creates a `` element and returns it.\r\n *\r\n * @return Canvas element\r\n */\r\n Export.prototype.getDisposableCanvas = function () {\r\n var canvas = document.createElement(\"canvas\");\r\n canvas.style.position = \"fixed\";\r\n canvas.style.top = \"-10000px\";\r\n document.body.appendChild(canvas);\r\n return canvas;\r\n };\r\n /**\r\n * Removes canvas.\r\n *\r\n * @param canvas Canvas element\r\n */\r\n Export.prototype.disposeCanvas = function (canvas) {\r\n if (document.body.contains(canvas)) {\r\n document.body.removeChild(canvas);\r\n }\r\n };\r\n /**\r\n * Returns pixel ratio for retina displays.\r\n *\r\n * @return Pixel ratio\r\n */\r\n Export.prototype.getPixelRatio = function (options) {\r\n // const scale = options && options.scale ? options.scale : 1;\r\n // return (this.useRetina ? $utils.getPixelRatio() : 1) * scale;\r\n return this.useRetina ? $utils.getPixelRatio() : 1;\r\n };\r\n /**\r\n * Calculates adjusted scale if image does not fit or is larger than min/max\r\n * settings.\r\n *\r\n * @param width Width of the source image\r\n * @param height Height of the source image\r\n * @param scale Current scale\r\n * @param options Options\r\n * @return Adjusted scale\r\n */\r\n Export.prototype.getAdjustedScale = function (width, height, scale, options) {\r\n if (!options) {\r\n return scale;\r\n }\r\n var adjWidth = width * scale;\r\n var adjHeight = width * scale;\r\n // Check max restrictions\r\n var widthScale;\r\n var heightScale;\r\n if (options.maxWidth && (adjWidth > options.maxWidth)) {\r\n widthScale = options.maxWidth / width;\r\n }\r\n if (options.maxHeight && (adjHeight > options.maxHeight)) {\r\n heightScale = options.maxHeight / height;\r\n }\r\n if (widthScale || heightScale) {\r\n return $math.min(widthScale, heightScale);\r\n }\r\n // Check min restrictions\r\n if (options.minWidth && (adjWidth < options.minWidth)) {\r\n widthScale = options.minWidth / width;\r\n }\r\n if (options.minHeight && (adjHeight < options.minHeight)) {\r\n heightScale = options.minHeight / height;\r\n }\r\n if (widthScale || heightScale) {\r\n return $math.max(widthScale, heightScale);\r\n }\r\n return scale;\r\n };\r\n /**\r\n * Converts all `` tags in SVG to use data uris instead of external\r\n * URLs\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @ignore Exclude from docs\r\n * @param el SVG node\r\n * @param options Options\r\n * @return Promise\r\n */\r\n Export.prototype.imagesToDataURI = function (el, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var images, promises, count, i, image, href;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n images = el.querySelectorAll(\"image\");\r\n if (!images.length) return [3 /*break*/, 2];\r\n promises = [];\r\n // There are images, process each of them\r\n for (count = images.length, i = 0; i < count; i++) {\r\n image = images[i];\r\n href = image.getAttributeNS(Export.XLINK, \"href\");\r\n // no href?\r\n if (!href) {\r\n continue;\r\n }\r\n if (href.indexOf(\"data:image\") !== -1) {\r\n // Ignore image if it's already in Data URI format\r\n }\r\n else {\r\n // SVG or bitmap image?\r\n if (href.indexOf(\".svg\") !== -1) {\r\n promises.push(this.svgToDataURI(image, options));\r\n }\r\n else {\r\n promises.push(this.imageToDataURI(image, options));\r\n }\r\n }\r\n }\r\n return [4 /*yield*/, Promise.all(promises)];\r\n case 1:\r\n _a.sent();\r\n return [2 /*return*/];\r\n case 2: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * `foreignObject` elements cannot be exported. This function hides them\r\n * temprarily. In the future it might try to convert them to SVG to make them\r\n * exportable.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @ignore Exclude from docs\r\n * @param el SVG node\r\n * @param options Options\r\n * @return Promise\r\n */\r\n Export.prototype.prepForeignObjects = function (el, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var objects, count, i;\r\n return __generator(this, function (_a) {\r\n objects = el.querySelectorAll(\"foreignObject\");\r\n if (objects.length) {\r\n // There are foreign objects, process each of them\r\n for (count = objects.length, i = 0; i < count; i++) {\r\n this.temporarilyRemoveObject(objects[i]);\r\n }\r\n }\r\n return [2 /*return*/];\r\n });\r\n });\r\n };\r\n /**\r\n * Converts an SVG `` to use its data uri for `href` instead of\r\n * external file.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @ignore Exclude from docs\r\n * @param el SVG element\r\n * @param options Options\r\n */\r\n Export.prototype.imageToDataURI = function (el, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var img, canvas, uri, e_5;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n _a.trys.push([0, 2, , 3]);\r\n return [4 /*yield*/, this.loadNewImage(el.getAttributeNS(Export.XLINK, \"href\"), null, null, \"anonymous\")];\r\n case 1:\r\n // Create image\r\n img = _a.sent();\r\n canvas = document.createElement(\"canvas\");\r\n canvas.width = img.width;\r\n canvas.height = img.height;\r\n // Draw new image on it via `toDataURL`\r\n canvas.getContext(\"2d\").drawImage(img, 0, 0);\r\n // Replace image `href` with data uri\r\n // If we got to this point it means image has loaded, however we might\r\n // still get an error with `toDataURL()`\r\n try {\r\n uri = canvas.toDataURL();\r\n el.setAttribute(\"href\", uri);\r\n return [2 /*return*/, uri];\r\n }\r\n catch (e) {\r\n // Give up and temporarily remove the element href temporarily\r\n if (options.keepTainted !== false) {\r\n /*this._removedObjects.push({\r\n \"element\": el,\r\n \"originalHref\": el.getAttributeNS(Export.XLINK, \"href\")\r\n });\r\n el.setAttributeNS(Export.XLINK, \"href\", \"\");*/\r\n this.temporarilyRemoveObject(el);\r\n }\r\n return [2 /*return*/, undefined];\r\n }\r\n return [3 /*break*/, 3];\r\n case 2:\r\n e_5 = _a.sent();\r\n // Give up and temporarily remove the element's href\r\n if (!options || options.keepTainted !== false) {\r\n /*this._removedObjects.push({\r\n \"element\": el,\r\n \"originalHref\": el.getAttributeNS(Export.XLINK, \"href\")\r\n });\r\n el.setAttributeNS(Export.XLINK, \"href\", \"\");*/\r\n this.temporarilyRemoveObject(el);\r\n }\r\n return [2 /*return*/, undefined];\r\n case 3: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Converts `` with external SVG source to data uri. Loads external SVG\r\n * file, then converts it to data uri and replaces the `xlink:href` parameter.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @ignore Exclude from docs\r\n * @param el An SVG element\r\n * @param options Options\r\n */\r\n Export.prototype.svgToDataURI = function (el, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var href, data, charset, uri, e_6;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n href = el.getAttributeNS(Export.XLINK, \"href\");\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 3, , 4]);\r\n return [4 /*yield*/, $net.load(href)];\r\n case 2:\r\n data = _a.sent();\r\n charset = this.adapter.apply(\"charset\", {\r\n charset: \"base64\",\r\n type: \"svg\",\r\n options: options\r\n }).charset;\r\n uri = this.adapter.apply(\"svgToDataURI\", {\r\n data: \"data:\" + this.getContentType(\"svg\") + \";\" + charset + \",\" + btoa(data.response),\r\n options: options\r\n }).data;\r\n el.setAttributeNS(Export.XLINK, \"href\", uri);\r\n return [2 /*return*/, uri];\r\n case 3:\r\n e_6 = _a.sent();\r\n // Disable temporarily\r\n if (!options || options.keepTainted !== false) {\r\n /*this._removedObjects.push({\r\n \"element\": el,\r\n \"originalHref\": href\r\n });\r\n el.setAttributeNS(Export.XLINK, \"href\", \"\");*/\r\n this.temporarilyRemoveObject(el);\r\n }\r\n return [2 /*return*/, undefined];\r\n case 4: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Temporarily removes element from DOM, and replaces it with a dummy\r\n * placeholder, as well as stores it for later restoration.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @ignore Exclude from docs\r\n * @param el Node\r\n */\r\n Export.prototype.temporarilyRemoveObject = function (el, placeholder) {\r\n // Get parent\r\n var parent = el.parentElement || el.parentNode;\r\n // Create a placeholder group element if it has not been passed in\r\n if (!placeholder) {\r\n placeholder = this.sprite.paper.add(\"g\").node;\r\n }\r\n parent.insertBefore(placeholder, el);\r\n // Check if we have a textContents we can replace with\r\n // @todo Perhaps we should explore alternatives to creating text nodes\r\n // i.e. creating a text version of the HTML-based Text, just for export\r\n // purposes. Converting HTML into SVG is very complicated\r\n if (el.textContent) {\r\n /*let text = this.sprite.paper.add(\"text\").node;\r\n text.textContent = el.textContent;\r\n placeholder.appendChild(text);\r\n\r\n // Copy properties from the removing element to the placeholder\r\n $dom.copyAttributes(el, placeholder);*/\r\n }\r\n // Remove the old element\r\n parent.removeChild(el);\r\n // Log removed item\r\n this._removedObjects.push({\r\n \"element\": el,\r\n \"placeholder\": placeholder\r\n });\r\n };\r\n /**\r\n * Restores all (possibly tainted or unsupported) objects that were\r\n * temporarily removed when exporting.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Export.prototype.restoreRemovedObjects = function () {\r\n var obj;\r\n while (true) {\r\n obj = this._removedObjects.pop();\r\n if (!obj) {\r\n break;\r\n }\r\n //obj.element.setAttribute(\"href\", obj.originalHref);\r\n var parent_1 = obj.placeholder.parentElement || obj.placeholder.parentNode;\r\n parent_1.insertBefore(obj.element, obj.placeholder);\r\n //parent.removeChild(obj.placeholder);\r\n }\r\n };\r\n /**\r\n * Checkes if simplified export can be used using `createObjectURL` and SVG\r\n * document does not contain any external images.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @ignore Exclude from docs\r\n * @return `true` if simplified export can be used\r\n */\r\n Export.prototype.simplifiedImageExport = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var cache, canvas, ctx, DOMURL, svg, url, img, e_7, e_8;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (this.useSimplifiedExport === false) {\r\n return [2 /*return*/, false];\r\n }\r\n cache = registry.getCache(\"simplifiedImageExport\");\r\n if (cache === false || cache === true) {\r\n return [2 /*return*/, cache];\r\n }\r\n _a.label = 1;\r\n case 1:\r\n _a.trys.push([1, 6, , 7]);\r\n canvas = document.createElement(\"canvas\");\r\n canvas.width = 1;\r\n canvas.height = 1;\r\n ctx = canvas.getContext(\"2d\");\r\n DOMURL = this.getDOMURL();\r\n svg = new Blob([this.normalizeSVG(\"\", {}, 1, 1)], { type: \"image/svg+xml\" });\r\n url = DOMURL.createObjectURL(svg);\r\n img = void 0;\r\n _a.label = 2;\r\n case 2:\r\n _a.trys.push([2, 4, , 5]);\r\n return [4 /*yield*/, this.loadNewImage(url, 1, 1)];\r\n case 3:\r\n img = _a.sent();\r\n return [3 /*break*/, 5];\r\n case 4:\r\n e_7 = _a.sent();\r\n return [2 /*return*/, false];\r\n case 5:\r\n ctx.drawImage(img, 0, 0);\r\n DOMURL.revokeObjectURL(url);\r\n try {\r\n //let uri = canvas.toDataURL(\"image/png\");\r\n registry.setCache(\"simplifiedImageExport\", true);\r\n return [2 /*return*/, true];\r\n }\r\n catch (e) {\r\n registry.setCache(\"simplifiedImageExport\", false);\r\n return [2 /*return*/, false];\r\n }\r\n return [3 /*break*/, 7];\r\n case 6:\r\n e_8 = _a.sent();\r\n registry.setCache(\"simplifiedImageExport\", false);\r\n return [2 /*return*/, false];\r\n case 7: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Returns a new `` element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param url URL of the image\r\n * @param width Width (px)\r\n * @param height Height (px)\r\n * @param crossOrigin Cross-Origin setting\r\n * @return Promise\r\n */\r\n Export.prototype.loadNewImage = function (url, width, height, crossOrigin) {\r\n return new Promise(function (success, error) {\r\n // New image\r\n var image;\r\n if (width && height) {\r\n image = new Image(width, height);\r\n }\r\n else {\r\n image = new Image();\r\n }\r\n // Set crossorigin\r\n if (crossOrigin) {\r\n image.setAttribute(\"crossOrigin\", crossOrigin);\r\n }\r\n // Report success on load\r\n image.onload = function () {\r\n success(image);\r\n };\r\n function onerror() {\r\n // Error occurred. Just in case it's the crossOrigin issue, let's try\r\n // stripping off this attribute and trying again\r\n if (crossOrigin) {\r\n // Retain old uri\r\n var currentHref = image.src;\r\n // Set up another `onerror` to handle situations where image is not\r\n // loadable at all (i.e. protected by CORS)\r\n image.onerror = function () {\r\n // Nope, no luck\r\n error(new Error(\"Loading image \\\"\" + url + \"\\\" failed\"));\r\n };\r\n // remove the `crossOrigin` attribute\r\n image.removeAttribute(\"crossorigin\");\r\n // retry\r\n image.src = \"\";\r\n image.src = currentHref;\r\n }\r\n else {\r\n error(new Error(\"Loading image \\\"\" + url + \"\\\" failed\"));\r\n }\r\n }\r\n // Set image error handlers\r\n image.onabort = onerror;\r\n image.onerror = onerror;\r\n // Trigger load\r\n image.src = url;\r\n });\r\n };\r\n /**\r\n * Returns current DOM URL.\r\n *\r\n * @ignore Exclude from docs\r\n * @return URL\r\n */\r\n Export.prototype.getDOMURL = function () {\r\n return self.URL || self.webkitURL || self;\r\n };\r\n /**\r\n * Returns an SVG representation of the chart.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @param type Type of the export\r\n * @param options Options\r\n * @param encodeURI If true, will return result will be data URI\r\n * @return Promise\r\n */\r\n Export.prototype.getSVG = function (type, options, encodeURI) {\r\n if (encodeURI === void 0) { encodeURI = true; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var prehidden, width, height, font, fontSize, scale, pixelRatio, svg, charset, uri;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n prehidden = this._objectsAlreadyHidden;\r\n if (!prehidden) {\r\n this.hideNonExportableSprites();\r\n }\r\n if (!$type.hasValue(options)) {\r\n options = this.getFormatOptions(\"svg\");\r\n }\r\n // Wait for required elements to be ready before proceeding\r\n return [4 /*yield*/, this.awaitValidSprites()];\r\n case 1:\r\n // Wait for required elements to be ready before proceeding\r\n _a.sent();\r\n width = this.sprite.pixelWidth;\r\n height = this.sprite.pixelHeight;\r\n font = $dom.findFont(this.sprite.dom);\r\n fontSize = $dom.findFontSize(this.sprite.dom);\r\n scale = options.scale || 1;\r\n pixelRatio = this.getPixelRatio(options);\r\n // Check if scale needs to be updated as per min/max dimensions\r\n scale = this.getAdjustedScale(width * pixelRatio, height * pixelRatio, scale, options);\r\n svg = this.normalizeSVG(this.serializeElement(this.sprite.paper.defs) + this.serializeElement(this.sprite.dom), options, width, height, scale, font, fontSize);\r\n charset = this.adapter.apply(\"charset\", {\r\n charset: \"charset=utf-8\",\r\n type: \"svg\",\r\n options: options\r\n }).charset;\r\n uri = this.adapter.apply(\"getSVG\", {\r\n data: encodeURI ? \"data:\" + this.getContentType(type) + \";\" + charset + \",\" + encodeURIComponent(svg) : svg,\r\n options: options\r\n }).data;\r\n if (!prehidden) {\r\n this.restoreNonExportableSprites();\r\n }\r\n return [2 /*return*/, uri];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Checks if SVG is fully formatted. Encloses in `...` if\r\n * necessary.\r\n *\r\n * @ignore Exclude from docs\r\n * @param svg Input SVG\r\n * @param options Options\r\n * @param width Width of the SVG viewport\r\n * @param height Height of the SVG viewport\r\n * @param font Font family to use as a base\r\n * @param fontSize Font size to use as a base\r\n * @return Output SVG\r\n * @todo Add style params to existing \r\n */\r\n Export.prototype.normalizeSVG = function (svg, options, width, height, scale, font, fontSize, background) {\r\n // Construct width/height params\r\n var dimParams = \"\";\r\n if (width) {\r\n dimParams += \"width=\\\"\" + Math.round(width * (scale || 1)) + \"px\\\" \";\r\n }\r\n if (height) {\r\n dimParams += \"height=\\\"\" + Math.round(height * (scale || 1)) + \"px\\\" \";\r\n }\r\n // Apply font settings\r\n var styleParams = \"\";\r\n if (font) {\r\n styleParams += \"font-family: \" + font.replace(/\"/g, \"\") + \";\";\r\n }\r\n if (fontSize) {\r\n styleParams += \"font-size: \" + fontSize + \";\";\r\n }\r\n // Scale\r\n if (scale) {\r\n dimParams += \"viewBox=\\\"0 0 \" + (width) + \" \" + (height) + \"\\\" \";\r\n }\r\n // Remove foreign objects temporarily\r\n var fos = [];\r\n var ms = svg.match(//gi);\r\n if (ms) {\r\n for (var i = 0; i < ms.length; i++) {\r\n svg = svg.replace(ms[i], $strings.PLACEHOLDER);\r\n fos.push(ms[i]);\r\n }\r\n }\r\n // Add missing enclosure\r\n if (!svg.match(/\" + svg + \"\";\r\n }\r\n else {\r\n if (dimParams !== \"\") {\r\n // Clear current params\r\n svg = svg.replace(/(]*)width=\"[^\"]*\"/, \"$1\");\r\n svg = svg.replace(/(]*)height=\"[^\"]*\"/, \"$1\");\r\n // Add new params\r\n svg = svg.replace(/(]*)stylewidth=\"[^\"]*\"/, \"$1\");\r\n svg = svg.replace(/(]*)height=\"[^\"]*\"/, \"$1\");\r\n\r\n // Add new params\r\n svg = svg.replace(/(]*>)/, \"$1\");\r\n //svg = svg.replace(/<\\/svg>/, \"\");\r\n }\r\n if ($browser.isInternetExplorer()) {\r\n // IE can't handle exporting for some reason\r\n svg = svg.replace(/]*\\/>/gi, \"\");\r\n }\r\n // Remove base uri-related stuff\r\n var reg = new RegExp(\"url\\\\(\" + $utils.escapeForRgex($utils.getBaseURI()), \"g\");\r\n svg = svg.replace(reg, \"url(#\");\r\n // Remove escaped quotes in url() parameters\r\n svg = svg.replace(/url\\("([^)]*)"\\)/gm, \"url($1)\");\r\n // Put foreignObjects back in\r\n if (fos.length) {\r\n for (var i = 0; i < fos.length; i++) {\r\n svg = svg.replace($strings.PLACEHOLDER, fos[i]);\r\n }\r\n }\r\n svg = this.adapter.apply(\"normalizeSVG\", {\r\n data: svg,\r\n options: options\r\n }).data;\r\n return svg;\r\n };\r\n /**\r\n * Serializes an element and returns its contents.\r\n *\r\n * @ignore Exclude from docs\r\n * @param element An element to serialize\r\n * @return A serialized XML\r\n */\r\n Export.prototype.serializeElement = function (element) {\r\n return new XMLSerializer().serializeToString(element);\r\n };\r\n /**\r\n * Returns a PDF containing chart image.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @param type Type of the export\r\n * @param options Options\r\n * @return Promise\r\n * @async\r\n * @todo Account for header when calculating vertical fit\r\n */\r\n Export.prototype.getPDF = function (type, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n function addFont(font) {\r\n var paths = {};\r\n paths.normal = font.normal.path;\r\n vfs[font.normal.path] = font.normal.bytes;\r\n if (font.bold) {\r\n paths.bold = font.bold.path;\r\n vfs[font.bold.path] = font.bold.bytes;\r\n }\r\n else {\r\n paths.bold = font.normal.path;\r\n }\r\n if (font.italics) {\r\n paths.italics = font.italics.path;\r\n vfs[font.italics.path] = font.italics.bytes;\r\n }\r\n else {\r\n paths.italics = font.normal.path;\r\n }\r\n if (font.bolditalics) {\r\n paths.bolditalics = font.bolditalics.path;\r\n vfs[font.bolditalics.path] = font.bolditalics.bytes;\r\n }\r\n else {\r\n paths.bolditalics = font.normal.path;\r\n }\r\n fonts[font.name] = paths;\r\n }\r\n var image, pdfmake, defaultMargins, doc, title, extraMargin, _a, _b, _c, fonts, vfs;\r\n return __generator(this, function (_d) {\r\n switch (_d.label) {\r\n case 0: return [4 /*yield*/, this.getImage(options.imageFormat || \"png\", options)];\r\n case 1:\r\n image = _d.sent();\r\n return [4 /*yield*/, this.pdfmake];\r\n case 2:\r\n pdfmake = _d.sent();\r\n defaultMargins = [30, 30, 30, 30];\r\n doc = {\r\n pageSize: options.pageSize || \"A4\",\r\n pageOrientation: options.pageOrientation || \"portrait\",\r\n pageMargins: options.pageMargins || defaultMargins,\r\n defaultStyle: {\r\n font: options.font ? options.font.name : undefined\r\n },\r\n //header: [],\r\n content: []\r\n };\r\n title = this.adapter.apply(\"title\", {\r\n title: this.title,\r\n options: options\r\n }).title;\r\n extraMargin = 0;\r\n if (title) {\r\n doc.content.push({\r\n text: title,\r\n fontSize: options.fontSize || 14,\r\n bold: true,\r\n margin: [0, 0, 0, 15]\r\n });\r\n // Add some leftover margin for title\r\n extraMargin += 50;\r\n }\r\n // Add page URL?\r\n if (options.addURL) {\r\n doc.content.push({\r\n text: this.language.translate(\"Saved from\") + \": \" + document.location.href,\r\n fontSize: options.fontSize,\r\n margin: [0, 0, 0, 15]\r\n });\r\n // Add some leftover margin for URL\r\n extraMargin += 50;\r\n }\r\n // Add image\r\n if (type != \"pdfdata\") {\r\n doc.content.push({\r\n image: image,\r\n alignment: options.align || \"left\",\r\n fit: this.getPageSizeFit(doc.pageSize, doc.pageMargins, extraMargin)\r\n });\r\n }\r\n if (!(type == \"pdfdata\" || options.addData)) return [3 /*break*/, 4];\r\n _b = (_a = doc.content).push;\r\n _c = {};\r\n return [4 /*yield*/, this.getPDFData(\"pdf\", options)];\r\n case 3:\r\n _b.apply(_a, [(_c.table = _d.sent(),\r\n _c.fontSize = options.fontSize || 14,\r\n _c)]);\r\n _d.label = 4;\r\n case 4:\r\n // Apply adapters\r\n doc = this.adapter.apply(\"pdfmakeDocument\", {\r\n doc: doc,\r\n options: options\r\n }).doc;\r\n fonts = null;\r\n vfs = null;\r\n if (options.font) {\r\n fonts = {};\r\n vfs = {};\r\n addFont(options.font);\r\n if (options.extraFonts) {\r\n $array.each(options.extraFonts, addFont);\r\n }\r\n }\r\n return [4 /*yield*/, new Promise(function (success, error) {\r\n pdfmake.createPdf(doc, null, fonts, vfs).getDataUrl(function (uri) {\r\n success(uri);\r\n });\r\n })];\r\n case 5: \r\n // Create PDF\r\n return [2 /*return*/, _d.sent()];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Returns chart's data formatted suitable for PDF export (pdfmake).\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @since 4.7.0\r\n * @param type Type of the export\r\n * @param options Options\r\n * @return Promise\r\n * @async\r\n */\r\n Export.prototype.getPDFData = function (type, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var content, dataFields, data, dataFieldsOrder_1, len, i;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n content = {\r\n \"body\": []\r\n };\r\n dataFields = this.adapter.apply(\"formatDataFields\", {\r\n dataFields: this.dataFields,\r\n format: \"pdf\"\r\n }).dataFields;\r\n data = this.data;\r\n // Vertical or horizontal (default) layout\r\n if (options.pivot) {\r\n dataFieldsOrder_1 = this.adapter.apply(\"dataFieldsOrder\", {\r\n dataFieldsOrder: this.dataFieldsOrder,\r\n format: \"pdfdata\"\r\n }).dataFieldsOrder;\r\n $object.eachOrdered(dataFields, function (key, val) {\r\n var dataRow = [];\r\n if (options.addColumnNames) {\r\n dataRow.push(val);\r\n }\r\n for (var len = data.length, i = 0; i < len; i++) {\r\n var dataValue = data[i][key];\r\n dataRow.push(_this.convertToSpecialFormat(key, dataValue, options, true));\r\n }\r\n content.body.push(_this.getPDFDataRow(dataRow, options, undefined, true));\r\n }, function (a, b) {\r\n //console.log(a, b)\r\n var ai = dataFieldsOrder_1.indexOf(a);\r\n var bi = dataFieldsOrder_1.indexOf(b);\r\n if (ai > bi) {\r\n return 1;\r\n }\r\n else if (ai < bi) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n }\r\n else {\r\n // Add column names?\r\n if (options.addColumnNames) {\r\n content.body.push(this.getPDFDataRow(dataFields, options, undefined, true));\r\n content.headerRows = 1;\r\n }\r\n for (len = data.length, i = 0; i < len; i++) {\r\n content.body.push(this.getPDFDataRow(data[i], options, dataFields));\r\n }\r\n }\r\n return [2 /*return*/, this.adapter.apply(\"pdfmakeTable\", {\r\n table: content,\r\n options: options\r\n }).table];\r\n });\r\n });\r\n };\r\n /**\r\n * Formats a row of data for use in PDF data table (pdfmake).\r\n *\r\n * @ignore Exclude from docs\r\n * @since 4.7.0\r\n * @param row An object holding data for the row\r\n * @param options Options\r\n * @param dataFields Data fields\r\n * @param asIs Do not try to convert to dates\r\n * @return Formated Data line\r\n */\r\n Export.prototype.getPDFDataRow = function (row, options, dataFields, asIs) {\r\n var _this = this;\r\n if (asIs === void 0) { asIs = false; }\r\n // Init\r\n var items = [];\r\n // Data fields\r\n if (!dataFields) {\r\n dataFields = row;\r\n }\r\n // Data fields order\r\n var dataFieldsOrder = this.adapter.apply(\"dataFieldsOrder\", {\r\n dataFieldsOrder: this.dataFieldsOrder,\r\n format: \"pdfdata\"\r\n }).dataFieldsOrder;\r\n // Process each row item\r\n $object.eachOrdered(dataFields, function (key, name) {\r\n // Get value\r\n var value = _this.convertEmptyValue(key, row[key], options);\r\n // Convert dates\r\n var item = asIs ? value : _this.convertToSpecialFormat(key, value, options);\r\n item = \"\" + item;\r\n // Add to item\r\n items.push(item);\r\n }, function (a, b) {\r\n //console.log(a, b)\r\n var ai = dataFieldsOrder.indexOf(a);\r\n var bi = dataFieldsOrder.indexOf(b);\r\n if (ai > bi) {\r\n return 1;\r\n }\r\n else if (ai < bi) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n return items;\r\n };\r\n /**\r\n * Returns fit dimensions for available page sizes.\r\n *\r\n * @ignore Exclude from docs\r\n * @param pageSize Page size\r\n * @return `[width, height]` in pixels\r\n */\r\n Export.prototype.getPageSizeFit = function (pageSize, margins, extraMargin) {\r\n if (extraMargin === void 0) { extraMargin = 0; }\r\n // Check margins\r\n var newMargins = [0, 0, 0, 0];\r\n if (typeof margins == \"number\") {\r\n newMargins = [margins, margins, margins, margins];\r\n }\r\n else if (margins.length == 2) {\r\n newMargins = [margins[0], margins[1], margins[0], margins[1]];\r\n }\r\n else if (margins.length == 4) {\r\n newMargins = margins;\r\n }\r\n // Define available page sizes\r\n var sizes = {\r\n \"4A0\": [4767.87, 6740.79],\r\n \"2A0\": [3370.39, 4767.87],\r\n A0: [2383.94, 3370.39],\r\n A1: [1683.78, 2383.94],\r\n A2: [1190.55, 1683.78],\r\n A3: [841.89, 1190.55],\r\n A4: [595.28, 841.89],\r\n A5: [419.53, 595.28],\r\n A6: [297.64, 419.53],\r\n A7: [209.76, 297.64],\r\n A8: [147.40, 209.76],\r\n A9: [104.88, 147.40],\r\n A10: [73.70, 104.88],\r\n B0: [2834.65, 4008.19],\r\n B1: [2004.09, 2834.65],\r\n B2: [1417.32, 2004.09],\r\n B3: [1000.63, 1417.32],\r\n B4: [708.66, 1000.63],\r\n B5: [498.90, 708.66],\r\n B6: [354.33, 498.90],\r\n B7: [249.45, 354.33],\r\n B8: [175.75, 249.45],\r\n B9: [124.72, 175.75],\r\n B10: [87.87, 124.72],\r\n C0: [2599.37, 3676.54],\r\n C1: [1836.85, 2599.37],\r\n C2: [1298.27, 1836.85],\r\n C3: [918.43, 1298.27],\r\n C4: [649.13, 918.43],\r\n C5: [459.21, 649.13],\r\n C6: [323.15, 459.21],\r\n C7: [229.61, 323.15],\r\n C8: [161.57, 229.61],\r\n C9: [113.39, 161.57],\r\n C10: [79.37, 113.39],\r\n RA0: [2437.80, 3458.27],\r\n RA1: [1729.13, 2437.80],\r\n RA2: [1218.90, 1729.13],\r\n RA3: [864.57, 1218.90],\r\n RA4: [609.45, 864.57],\r\n SRA0: [2551.18, 3628.35],\r\n SRA1: [1814.17, 2551.18],\r\n SRA2: [1275.59, 1814.17],\r\n SRA3: [907.09, 1275.59],\r\n SRA4: [637.80, 907.09],\r\n EXECUTIVE: [521.86, 756.00],\r\n FOLIO: [612.00, 936.00],\r\n LEGAL: [612.00, 1008.00],\r\n LETTER: [612.00, 792.00],\r\n TABLOID: [792.00, 1224.00]\r\n };\r\n // Calculate size\r\n var fitSize = sizes[pageSize];\r\n fitSize[0] -= newMargins[0] + newMargins[2];\r\n fitSize[1] -= newMargins[1] + newMargins[3] + extraMargin;\r\n return fitSize;\r\n };\r\n /**\r\n * Returns an Excel file of chart's data.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @param type Type of the export\r\n * @param options Options\r\n * @return Promise\r\n * @async\r\n * @todo Handle dates\r\n * @todo Support for multi-sheet\r\n */\r\n Export.prototype.getExcel = function (type, options) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var XLSX, wbOptions, sheetName, wb, data, dataFields, dataFieldsOrder_2, len, i, uri;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n if (!$type.hasValue(options)) {\r\n options = this.getFormatOptions(\"xlsx\");\r\n }\r\n return [4 /*yield*/, this.xlsx];\r\n case 1:\r\n XLSX = _a.sent();\r\n wbOptions = this.adapter.apply(\"xlsxWorkbookOptions\", {\r\n xlsx: XLSX,\r\n options: {\r\n bookType: \"xlsx\",\r\n bookSST: false,\r\n type: \"base64\",\r\n }\r\n }).options;\r\n sheetName = this.normalizeExcelSheetName(this.adapter.apply(\"xlsxSheetName\", {\r\n xlsx: XLSX,\r\n name: this.title || this.language.translate(\"Data\")\r\n }).name);\r\n wb = {\r\n SheetNames: [sheetName],\r\n Sheets: {}\r\n };\r\n data = [];\r\n dataFields = this.adapter.apply(\"formatDataFields\", {\r\n dataFields: this.dataFields,\r\n format: \"xslx\"\r\n }).dataFields;\r\n // Vertical or horizontal (default) layout\r\n if (options.pivot) {\r\n dataFieldsOrder_2 = this.adapter.apply(\"dataFieldsOrder\", {\r\n dataFieldsOrder: this.dataFieldsOrder,\r\n format: \"xlsx\"\r\n }).dataFieldsOrder;\r\n $object.eachOrdered(dataFields, function (key, val) {\r\n var dataRow = [];\r\n if (options.addColumnNames) {\r\n dataRow.push(val);\r\n }\r\n for (var len = _this.data.length, i = 0; i < len; i++) {\r\n var dataValue = _this.data[i][key];\r\n dataRow.push(_this.convertToSpecialFormat(key, dataValue, options, true));\r\n }\r\n data.push(_this.getExcelRow(dataRow, options, undefined, true));\r\n }, function (a, b) {\r\n //console.log(a, b)\r\n var ai = dataFieldsOrder_2.indexOf(a);\r\n var bi = dataFieldsOrder_2.indexOf(b);\r\n if (ai > bi) {\r\n return 1;\r\n }\r\n else if (ai < bi) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n }\r\n else {\r\n // Add column names?\r\n if (options.addColumnNames) {\r\n data.push(this.getExcelRow(dataFields, options, undefined, true));\r\n }\r\n // Add lines\r\n for (len = this.data.length, i = 0; i < len; i++) {\r\n data.push(this.getExcelRow(this.data[i], options, dataFields));\r\n }\r\n }\r\n // Create sheet and add data\r\n wb.Sheets[sheetName] = XLSX.utils.aoa_to_sheet(data);\r\n // Apply adapters\r\n wb = this.adapter.apply(\"xlsxWorkbook\", {\r\n xlsx: XLSX,\r\n workbook: wb,\r\n options: options\r\n }).workbook;\r\n uri = this.adapter.apply(\"getExcel\", {\r\n data: \"data:\" + this.getContentType(type) + \";base64,\" + XLSX.write(wb, wbOptions),\r\n options: options\r\n }).data;\r\n return [2 /*return*/, uri];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * This is needed to work around Excel limitations.\r\n *\r\n * @param name Source name\r\n * @return Normalized name\r\n */\r\n Export.prototype.normalizeExcelSheetName = function (name) {\r\n name = name.replace(/([:\\\\\\/?*\\[\\]]+)/g, \" \");\r\n return $utils.truncateWithEllipsis(name, 31, \"...\", true);\r\n };\r\n /**\r\n * Rertuns an array of values to be used as Excel row.\r\n *\r\n * @ignore Exclude from docs\r\n * @param row Row data\r\n * @param options Options\r\n * @param dataFields Data fields\r\n * @param asIs Do not try to convert to dates\r\n * @return Array of values\r\n */\r\n Export.prototype.getExcelRow = function (row, options, dataFields, asIs) {\r\n var _this = this;\r\n if (asIs === void 0) { asIs = false; }\r\n // Init\r\n var items = [];\r\n // Data fields\r\n if (!dataFields) {\r\n dataFields = row;\r\n }\r\n // Data fields order\r\n var dataFieldsOrder = this.adapter.apply(\"dataFieldsOrder\", {\r\n dataFieldsOrder: this.dataFieldsOrder,\r\n format: \"xlsx\"\r\n }).dataFieldsOrder;\r\n // Process each row item\r\n $object.eachOrdered(dataFields, function (key, name) {\r\n // Get value\r\n var value = _this.convertEmptyValue(key, row[key], options);\r\n // Convert dates\r\n var item = asIs ? value : _this.convertToSpecialFormat(key, value, options, true);\r\n items.push(item);\r\n }, function (a, b) {\r\n //console.log(a, b)\r\n var ai = dataFieldsOrder.indexOf(a);\r\n var bi = dataFieldsOrder.indexOf(b);\r\n if (ai > bi) {\r\n return 1;\r\n }\r\n else if (ai < bi) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n return items;\r\n };\r\n /**\r\n * Returns chart's data formatted as CSV.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @param type Type of the export\r\n * @param options Options\r\n * @param encodeURI If true, will return result will be data URI\r\n * @return Promise\r\n * @async\r\n */\r\n Export.prototype.getCSV = function (type, options, encodeURI) {\r\n if (encodeURI === void 0) { encodeURI = true; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var csv, dataFields, br, data, dataFieldsOrder_3, len, i, row, charset, uri;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n if (!$type.hasValue(options)) {\r\n options = this.getFormatOptions(\"csv\");\r\n }\r\n csv = \"\";\r\n dataFields = this.adapter.apply(\"formatDataFields\", {\r\n dataFields: this.dataFields,\r\n format: \"csv\"\r\n }).dataFields;\r\n br = \"\";\r\n data = this.data;\r\n // Vertical or horizontal (default) layout\r\n if (options.pivot) {\r\n dataFieldsOrder_3 = this.adapter.apply(\"dataFieldsOrder\", {\r\n dataFieldsOrder: this.dataFieldsOrder,\r\n format: \"csv\"\r\n }).dataFieldsOrder;\r\n $object.eachOrdered(dataFields, function (key, val) {\r\n var dataRow = [];\r\n if (options.addColumnNames) {\r\n dataRow.push(val);\r\n }\r\n for (var len = data.length, i = 0; i < len; i++) {\r\n var dataValue = data[i][key];\r\n dataRow.push(_this.convertToSpecialFormat(key, dataValue, options, true));\r\n }\r\n csv += br + _this.getCSVRow(dataRow, options, undefined, true);\r\n br = \"\\n\";\r\n }, function (a, b) {\r\n var ai = dataFieldsOrder_3.indexOf(a);\r\n var bi = dataFieldsOrder_3.indexOf(b);\r\n if (ai > bi) {\r\n return -1;\r\n }\r\n else if (ai < bi) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n }\r\n else {\r\n for (len = data.length, i = 0; i < len; i++) {\r\n row = this.getCSVRow(data[i], options, dataFields);\r\n if (options.reverse) {\r\n csv = row + br + csv;\r\n }\r\n else {\r\n csv += br + row;\r\n }\r\n br = \"\\n\";\r\n }\r\n // Add column names?\r\n if (options.addColumnNames) {\r\n csv = this.getCSVRow(dataFields, options, undefined, true) + br + csv;\r\n }\r\n }\r\n charset = this.adapter.apply(\"charset\", {\r\n charset: \"charset=utf-8\",\r\n type: type,\r\n options: options\r\n }).charset;\r\n uri = this.adapter.apply(\"getCSV\", {\r\n data: encodeURI ? \"data:\" + this.getContentType(type) + \";\" + charset + \",\" + encodeURIComponent(csv) : csv,\r\n options: options\r\n }).data;\r\n return [2 /*return*/, uri];\r\n });\r\n });\r\n };\r\n /**\r\n * Formats a row of CSV data.\r\n *\r\n * @ignore Exclude from docs\r\n * @param row An object holding data for the row\r\n * @param options Options\r\n * @param dataFields Data fields\r\n * @param asIs Do not try to convert to dates\r\n * @return Formated CSV line\r\n */\r\n Export.prototype.getCSVRow = function (row, options, dataFields, asIs) {\r\n var _this = this;\r\n if (asIs === void 0) { asIs = false; }\r\n // Init\r\n var separator = options.separator || \",\";\r\n var items = [];\r\n // Data fields\r\n if (!dataFields) {\r\n dataFields = row;\r\n }\r\n // Data fields order\r\n var dataFieldsOrder = this.adapter.apply(\"dataFieldsOrder\", {\r\n dataFieldsOrder: this.dataFieldsOrder,\r\n format: \"csv\"\r\n }).dataFieldsOrder;\r\n // Process each row item\r\n $object.eachOrdered(dataFields, function (key, name) {\r\n // Get value\r\n var value = _this.convertEmptyValue(key, row[key], options);\r\n // Check if we need to skip\r\n // This is no longer required because we are iterating via dataFields anyway\r\n /*if ($type.hasValue(this.dataFields) && !$type.hasValue(this.dataFields[key])) {\r\n return;\r\n }*/\r\n // Convert dates\r\n var item = asIs ? value : _this.convertToSpecialFormat(key, value, options);\r\n // Cast and escape doublequotes\r\n item = \"\" + item;\r\n item = item.replace(/\"/g, '\"\"');\r\n // Enclose into double quotes\r\n if (options.forceQuotes || (item.search(new RegExp(\"\\\"|\\n|\" + separator, \"g\")) >= 0)) {\r\n item = \"\\\"\" + item + \"\\\"\";\r\n }\r\n // Add to item\r\n items.push(item);\r\n }, function (a, b) {\r\n //console.log(a, b)\r\n var ai = dataFieldsOrder.indexOf(a);\r\n var bi = dataFieldsOrder.indexOf(b);\r\n if (ai > bi) {\r\n return 1;\r\n }\r\n else if (ai < bi) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n return items.join(separator);\r\n };\r\n /**\r\n * Returns chart's data formatted as HTML table.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @since 4.7.0\r\n * @param type Type of the export\r\n * @param options Options\r\n * @param encodeURI If true, will return result will be data URI\r\n * @return Promise\r\n * @async\r\n */\r\n Export.prototype.getHTML = function (type, options, encodeURI) {\r\n if (encodeURI === void 0) { encodeURI = true; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var html, dataFields, data, dataFieldsOrder_4, len, i, charset, uri;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n if (!$type.hasValue(options)) {\r\n options = this.getFormatOptions(\"html\");\r\n }\r\n html = \"\";\r\n if (options.tableClass) {\r\n html = \"
\";\r\n }\r\n dataFields = this.adapter.apply(\"formatDataFields\", {\r\n dataFields: this.dataFields,\r\n format: \"html\"\r\n }).dataFields;\r\n data = this.data;\r\n // Vertical or horizontal (default) layout\r\n if (options.pivot) {\r\n dataFieldsOrder_4 = this.adapter.apply(\"dataFieldsOrder\", {\r\n dataFieldsOrder: this.dataFieldsOrder,\r\n format: \"html\"\r\n }).dataFieldsOrder;\r\n html += \"\\n\";\r\n $object.eachOrdered(dataFields, function (key, val) {\r\n var dataRow = [];\r\n if (options.addColumnNames) {\r\n dataRow.push(val);\r\n }\r\n for (var len = data.length, i = 0; i < len; i++) {\r\n var dataValue = data[i][key];\r\n dataRow.push(_this.convertToSpecialFormat(key, dataValue, options, true));\r\n }\r\n html += \"\\n\" + _this.getHTMLRow(dataRow, options, undefined, true);\r\n }, function (a, b) {\r\n var ai = dataFieldsOrder_4.indexOf(a);\r\n var bi = dataFieldsOrder_4.indexOf(b);\r\n if (ai > bi) {\r\n return -1;\r\n }\r\n else if (ai < bi) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n html += \"\\n\";\r\n }\r\n else {\r\n // Add column names?\r\n if (options.addColumnNames) {\r\n html += \"\\n\\n\" + this.getHTMLRow(dataFields, options, undefined, true, true) + \"\\n\";\r\n }\r\n html += \"\\n\";\r\n for (len = data.length, i = 0; i < len; i++) {\r\n html += \"\\n\" + this.getHTMLRow(data[i], options, dataFields);\r\n }\r\n html += \"\\n\";\r\n }\r\n html += \"\\n
\";\r\n charset = this.adapter.apply(\"charset\", {\r\n charset: \"charset=utf-8\",\r\n type: type,\r\n options: options\r\n }).charset;\r\n uri = this.adapter.apply(\"getHTML\", {\r\n data: encodeURI ? \"data:\" + this.getContentType(type) + \";\" + charset + \",\" + encodeURIComponent(html) : html,\r\n options: options\r\n }).data;\r\n return [2 /*return*/, uri];\r\n });\r\n });\r\n };\r\n /**\r\n * Formats a row of HTML data.\r\n *\r\n * @since 4.7.0\r\n * @ignore Exclude from docs\r\n * @param row An object holding data for the row\r\n * @param options Options\r\n * @param dataFields Data fields\r\n * @param asIs Do not try to convert to dates\r\n * @return Formated HTML row\r\n */\r\n Export.prototype.getHTMLRow = function (row, options, dataFields, asIs, headerRow) {\r\n var _this = this;\r\n if (asIs === void 0) { asIs = false; }\r\n if (headerRow === void 0) { headerRow = false; }\r\n // Init output\r\n var html = \"\\t\";\r\n if (options.rowClass) {\r\n html = \"\\t\";\r\n }\r\n // Data fields\r\n if (!dataFields) {\r\n dataFields = row;\r\n }\r\n // Data fields order\r\n var dataFieldsOrder = this.adapter.apply(\"dataFieldsOrder\", {\r\n dataFieldsOrder: this.dataFieldsOrder,\r\n format: \"html\"\r\n }).dataFieldsOrder;\r\n // th or dh?\r\n var tag = headerRow ? \"th\" : \"td\";\r\n // Process each row item\r\n var first = true;\r\n $object.eachOrdered(dataFields, function (key, name) {\r\n // Get value\r\n var value = _this.convertEmptyValue(key, row[key], options);\r\n // Convert dates\r\n var item = asIs ? value : _this.convertToSpecialFormat(key, value, options);\r\n // Escape HTML entities\r\n item = \"\" + item;\r\n item = item.replace(/[\\u00A0-\\u9999<>\\&]/gim, function (i) {\r\n return \"&#\" + i.charCodeAt(0) + \";\";\r\n });\r\n // Which tag to use\r\n var useTag = tag;\r\n if (options.pivot && first) {\r\n useTag = \"th\";\r\n }\r\n // Add cell\r\n if (options.cellClass) {\r\n html += \"\\n\\t\\t<\" + useTag + \" class=\\\"\" + options.cellClass + \"\\\">\" + item + \"\";\r\n }\r\n else {\r\n html += \"\\n\\t\\t<\" + useTag + \">\" + item + \"\";\r\n }\r\n first = false;\r\n }, function (a, b) {\r\n var ai = dataFieldsOrder.indexOf(a);\r\n var bi = dataFieldsOrder.indexOf(b);\r\n if (ai > bi) {\r\n return 1;\r\n }\r\n else if (ai < bi) {\r\n return -1;\r\n }\r\n return 0;\r\n });\r\n html += \"\\n\\t\";\r\n return html;\r\n };\r\n /**\r\n * Returns chart's data in JSON format.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @param type Type of the export\r\n * @param options Options\r\n * @param encodeURI If true, will return result will be data URI\r\n * @return Promise\r\n * @async\r\n */\r\n Export.prototype.getJSON = function (type, options, encodeURI) {\r\n if (encodeURI === void 0) { encodeURI = true; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var data, dataFields, sourceData, _loop_1, len, i, json, charset, uri;\r\n var _this = this;\r\n return __generator(this, function (_a) {\r\n if (!$type.hasValue(options)) {\r\n options = this.getFormatOptions(\"json\");\r\n }\r\n dataFields = this.adapter.apply(\"formatDataFields\", {\r\n dataFields: this.dataFields,\r\n format: \"json\"\r\n }).dataFields;\r\n if (!this._dynamicDataFields) {\r\n data = [];\r\n sourceData = this.data;\r\n _loop_1 = function (len, i) {\r\n var value = sourceData[i];\r\n if (typeof value == \"object\") {\r\n var newValue_1 = {};\r\n $object.each(value, function (field, item) {\r\n if ($type.hasValue(dataFields[field])) {\r\n newValue_1[dataFields[field]] = _this.convertToSpecialFormat(field, item, options);\r\n }\r\n });\r\n data.push(newValue_1);\r\n }\r\n };\r\n for (len = sourceData.length, i = 0; i < len; i++) {\r\n _loop_1(len, i);\r\n }\r\n }\r\n else {\r\n data = this.data;\r\n }\r\n json = JSON.stringify(data, function (key, value) {\r\n if (typeof value == \"object\") {\r\n $object.each(value, function (field, item) {\r\n value[field] = _this.convertToSpecialFormat(field, item, options);\r\n });\r\n }\r\n return value;\r\n }, options.indent);\r\n charset = this.adapter.apply(\"charset\", {\r\n charset: \"charset=utf-8\",\r\n type: type,\r\n options: options\r\n }).charset;\r\n uri = this.adapter.apply(\"getJSON\", {\r\n data: encodeURI ? \"data:\" + this.getContentType(type) + \";\" + charset + \",\" + encodeURIComponent(json) : json,\r\n options: options\r\n }).data;\r\n return [2 /*return*/, uri];\r\n });\r\n });\r\n };\r\n /**\r\n * Converts the value to proper date format.\r\n *\r\n * @ignore Exclude from docs\r\n * @param field Field name\r\n * @param value Value\r\n * @param options Options\r\n * @param keepOriginal Will ignore formatting and will keep value as it is in data\r\n * @return Formatted date value or unmodified value\r\n */\r\n Export.prototype.convertToSpecialFormat = function (field, value, options, keepOriginal) {\r\n // Is this a timestamp or duration?\r\n if (typeof value == \"number\") {\r\n if (this.isDateField(field)) {\r\n value = new Date(value);\r\n }\r\n else if (this.isDurationField(field)) {\r\n return this.durationFormatter.format(value, this.durationFormat);\r\n }\r\n else if (this.isNumberField(field) && this.numberFormat) {\r\n return this.numberFormatter.format(value, this.numberFormat);\r\n }\r\n }\r\n if (value instanceof Date) {\r\n if (options.useTimestamps) {\r\n value = value.getTime();\r\n }\r\n else if (options.useLocale) {\r\n if (!keepOriginal) {\r\n value = value.toLocaleString();\r\n }\r\n }\r\n else {\r\n value = this.dateFormatter.format(value, this.dateFormat);\r\n }\r\n }\r\n else if ($type.isString(value) && this.isDateField(field) && this.dateFormat) {\r\n value = this.dateFormatter.format(this.dateFormatter.parse(value), this.dateFormat);\r\n }\r\n return value;\r\n };\r\n /**\r\n * Converts empty value based on `emptyAs` option.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Export.prototype.convertEmptyValue = function (field, value, options) {\r\n return $type.hasValue(value) ? value : options.emptyAs;\r\n };\r\n /**\r\n * Triggers download of the file.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @param uri Data URI with file content\r\n * @param fileName File name\r\n * @return Promise\r\n * @async\r\n */\r\n Export.prototype.download = function (uri, fileName, addBOM) {\r\n if (addBOM === void 0) { addBOM = false; }\r\n return __awaiter(this, void 0, void 0, function () {\r\n var parts, contentType, decoded, blob_1, chars, i, charCode, blob, link_1, parts, contentType, decoded, blob_2, url_2, chars, i, charCode, blob, url_3, link, parts, contentType, iframe, idoc;\r\n return __generator(this, function (_a) {\r\n if (this.msBlobDownloadSupport()) {\r\n parts = uri.split(\";\");\r\n contentType = parts.shift().replace(/data:/, \"\");\r\n uri = decodeURIComponent(parts.join(\";\").replace(/^[^,]*,/, \"\"));\r\n // Check if we need to Base64-decode\r\n if ([\"image/svg+xml\", \"application/json\", \"text/csv\"].indexOf(contentType) == -1) {\r\n try {\r\n decoded = atob(uri);\r\n uri = decoded;\r\n }\r\n catch (e) {\r\n // Error occurred, meaning string was not Base64-encoded. Do nothing.\r\n return [2 /*return*/, false];\r\n }\r\n }\r\n else {\r\n blob_1 = new Blob([uri], { type: contentType });\r\n window.navigator.msSaveBlob(blob_1, fileName);\r\n return [2 /*return*/, true];\r\n }\r\n chars = new Array(uri.length);\r\n for (i = 0; i < uri.length; ++i) {\r\n charCode = uri.charCodeAt(i);\r\n chars[i] = charCode;\r\n }\r\n blob = new Blob([new Uint8Array(chars)], { type: contentType });\r\n window.navigator.msSaveBlob(blob, fileName);\r\n }\r\n else if (this.blobDownloadSupport()) {\r\n link_1 = document.createElement(\"a\");\r\n link_1.download = fileName;\r\n document.body.appendChild(link_1);\r\n parts = uri.split(\";\");\r\n contentType = parts.shift().replace(/data:/, \"\");\r\n uri = decodeURIComponent(parts.join(\";\").replace(/^[^,]*,/, \"\"));\r\n if ([\"image/svg+xml\", \"application/json\", \"text/csv\", \"text/html\"].indexOf(contentType) == -1) {\r\n try {\r\n decoded = atob(uri);\r\n uri = decoded;\r\n }\r\n catch (e) {\r\n // Error occurred, meaning string was not Base64-encoded. Do nothing.\r\n return [2 /*return*/, false];\r\n }\r\n }\r\n else {\r\n if (addBOM) {\r\n uri = \"\\ufeff\" + uri;\r\n }\r\n blob_2 = new Blob([uri], { type: contentType });\r\n url_2 = window.URL.createObjectURL(blob_2);\r\n link_1.href = url_2;\r\n link_1.download = fileName;\r\n link_1.click();\r\n setTimeout(function () {\r\n document.body.removeChild(link_1);\r\n window.URL.revokeObjectURL(url_2);\r\n }, 100);\r\n return [2 /*return*/, true];\r\n }\r\n chars = new Array(uri.length);\r\n for (i = 0; i < uri.length; ++i) {\r\n charCode = uri.charCodeAt(i);\r\n chars[i] = charCode;\r\n }\r\n if (addBOM) {\r\n chars = [0xEF, 0xBB, 0xBF].concat(chars);\r\n }\r\n blob = new Blob([new Uint8Array(chars)], { type: contentType });\r\n url_3 = window.URL.createObjectURL(blob);\r\n link_1.href = url_3;\r\n link_1.download = fileName;\r\n document.body.appendChild(link_1);\r\n link_1.click();\r\n document.body.removeChild(link_1);\r\n setTimeout(function () {\r\n window.URL.revokeObjectURL(url_3);\r\n }, 100);\r\n }\r\n else if (this.linkDownloadSupport()) {\r\n link = document.createElement(\"a\");\r\n link.download = fileName;\r\n link.href = uri;\r\n document.body.appendChild(link);\r\n link.click();\r\n document.body.removeChild(link);\r\n }\r\n else if (this.legacyIE()) {\r\n parts = uri.match(/^data:(.*);[ ]*([^,]*),(.*)$/);\r\n if (parts.length === 4) {\r\n // Base64-encoded or text-based stuff?\r\n if (parts[2] == \"base64\") {\r\n // Base64-encoded - probably an image\r\n if (parts[1].match(/^image\\//)) {\r\n // Yep, an image. Let's create a temporary image placeholder,\r\n // so that user can use do Save As.\r\n this.showModal(\"\" +\r\n \"

\" + this.language.translate(\"To save the image, right-click thumbnail on the left and choose \\\"Save picture as...\\\"\") +\r\n \"

\" +\r\n \"

\" + this.language.translate(\"(Press ESC to close this message)\") + \"

\", this.language.translate(\"Image Export Complete\"));\r\n }\r\n }\r\n else {\r\n contentType = void 0;\r\n if (fileName.match(/\\.svg$/)) {\r\n contentType = \"image/svg+xml\";\r\n }\r\n else {\r\n contentType = \"text/plain\";\r\n fileName += \".txt\";\r\n }\r\n iframe = document.createElement(\"iframe\");\r\n iframe.width = \"1px\";\r\n iframe.height = \"1px\";\r\n iframe.style.display = \"none\";\r\n document.body.appendChild(iframe);\r\n idoc = iframe.contentDocument;\r\n idoc.open(contentType, \"replace\");\r\n // TODO test this with various encodings (e.g. UTF)\r\n //idoc.charset = parts[2].replace(/charset=/, \"\");\r\n idoc.write(decodeURIComponent(parts[3]));\r\n idoc.close();\r\n idoc.execCommand(\"SaveAs\", true, fileName);\r\n // Destroy the iframe\r\n document.body.removeChild(iframe);\r\n }\r\n }\r\n }\r\n else {\r\n /**\r\n * Something else - perhaps a mobile.\r\n * Let's just display it in the same page.\r\n * (hey we don't like it either)\r\n */\r\n window.location.href = uri;\r\n }\r\n return [2 /*return*/, true];\r\n });\r\n });\r\n };\r\n /**\r\n * Returns `true` if browser has any supported methods to trigger download\r\n * of a binary file.\r\n *\r\n * @return Supports downloads?\r\n */\r\n Export.prototype.downloadSupport = function () {\r\n //return !this.legacyIE();\r\n return this.linkDownloadSupport() || this.msBlobDownloadSupport();\r\n };\r\n /**\r\n * Checks if the browser supports \"download\" attribute on links.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Browser supports triggering downloads?\r\n */\r\n Export.prototype.linkDownloadSupport = function () {\r\n // Do we have this cached?\r\n var cache = registry.getCache(\"linkDownloadSupport\");\r\n if (cache === false || cache === true) {\r\n return cache;\r\n }\r\n var a = document.createElement(\"a\");\r\n var res = typeof a.download !== \"undefined\";\r\n registry.setCache(\"linkDownloadSupport\", res);\r\n return res;\r\n };\r\n /**\r\n * Checks if the browser supports download via `msBlob`.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Browser supports triggering downloads?\r\n */\r\n Export.prototype.blobDownloadSupport = function () {\r\n return $type.hasValue(window.Blob);\r\n };\r\n /**\r\n * Checks if the browser supports download via `msBlob`.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Browser supports triggering downloads?\r\n */\r\n Export.prototype.msBlobDownloadSupport = function () {\r\n return $type.hasValue(window.navigator.msSaveOrOpenBlob);\r\n };\r\n /**\r\n * Checks if this is a legacy version of IE.\r\n *\r\n * @ignore Exclude from docs\r\n * @return IE9 or less?\r\n */\r\n Export.prototype.legacyIE = function () {\r\n // Create a temporary
with conditional tags in it an an tag.\r\n // Count s. If there are some, we have IE9 or late on our hands.\r\n var div = document.createElement(\"div\");\r\n div.innerHTML = \"\";\r\n return div.getElementsByTagName(\"i\").length == 1;\r\n };\r\n /**\r\n * Initiates print of the chart.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @param data Data URI for the image\r\n * @param options Options\r\n * @param title Optional title to use (uses window's title by default)\r\n * @return Promise\r\n * @async\r\n */\r\n Export.prototype.print = function (data, options, title) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n if (options.printMethod == \"css\") {\r\n return [2 /*return*/, this.printViaCSS(data, options, title)];\r\n }\r\n else {\r\n return [2 /*return*/, this.printViaIframe(data, options, title)];\r\n }\r\n return [2 /*return*/];\r\n });\r\n });\r\n };\r\n Export.prototype.printViaCSS = function (data, options, title) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var scroll, rule, originalTitle, img, isIOS;\r\n return __generator(this, function (_a) {\r\n scroll = document.documentElement.scrollTop || document.body.scrollTop;\r\n rule = new StyleRule($dom.getShadowRoot(this.container), \"body > *\", {\r\n \"display\": \"none\",\r\n \"position\": \"fixed\",\r\n \"visibility\": \"hidden\",\r\n \"opacity\": \"0\",\r\n \"clipPath\": \"polygon(0px 0px,0px 0px,0px 0px,0px 0px);\"\r\n });\r\n if (title && document && document.title) {\r\n originalTitle = document.title;\r\n document.title = title;\r\n }\r\n img = new Image();\r\n img.src = data;\r\n img.style.maxWidth = \"100%\";\r\n img.style.display = \"block\";\r\n img.style.position = \"relative\";\r\n img.style.visibility = \"visible\";\r\n img.style.opacity = \"1\";\r\n img.style.clipPath = \"none\";\r\n document.body.appendChild(img);\r\n // Print\r\n this.setTimeout(function () {\r\n window.print();\r\n }, 50);\r\n isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\r\n if (isIOS && (options.delay < 1000)) {\r\n options.delay = 1000;\r\n }\r\n else if (options.delay < 100) {\r\n options.delay = 100;\r\n }\r\n // Delay function that resets back the document the way ot was before\r\n this.setTimeout(function () {\r\n // Remove image\r\n document.body.removeChild(img);\r\n // Reset back all elements\r\n /*for (let len = items.length, i = 0; i < len; i++) {\r\n let item = items[i];\r\n if ($dom.isElement(item)) {\r\n item.style.display = states[i];\r\n }\r\n }*/\r\n rule.dispose();\r\n // Restore title\r\n if (originalTitle) {\r\n document.title = document.title;\r\n }\r\n // Scroll back the document the way it was before\r\n document.documentElement.scrollTop = document.body.scrollTop = scroll;\r\n }, options.delay || 500);\r\n return [2 /*return*/, true];\r\n });\r\n });\r\n };\r\n Export.prototype.printViaIframe = function (data, options, title) {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var iframe, img, isIOS;\r\n return __generator(this, function (_a) {\r\n iframe = document.createElement(\"iframe\");\r\n iframe.style.visibility = \"hidden\";\r\n document.body.appendChild(iframe);\r\n // This is needed for FireFox\r\n iframe.contentWindow.document.open();\r\n iframe.contentWindow.document.close();\r\n img = new Image();\r\n img.src = data;\r\n img.style.maxWidth = \"100%\";\r\n img.style.height = \"auto\";\r\n if (title) {\r\n iframe.contentWindow.document.title = title;\r\n }\r\n iframe.contentWindow.document.body.appendChild(img);\r\n iframe.load = function () {\r\n iframe.contentWindow.document.body.appendChild(img);\r\n };\r\n // Print\r\n this.setTimeout(function () {\r\n try {\r\n if (!iframe.contentWindow.document.execCommand(\"print\", false, null)) {\r\n iframe.contentWindow.print();\r\n }\r\n }\r\n catch (e) {\r\n iframe.contentWindow.print();\r\n }\r\n }, options.delay || 50);\r\n isIOS = /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream;\r\n if (isIOS && (options.delay < 1000)) {\r\n options.delay = 1000;\r\n }\r\n else if (options.delay < 100) {\r\n options.delay = 100;\r\n }\r\n // Delay function that resets back the document the way ot was before\r\n this.setTimeout(function () {\r\n // Remove image\r\n document.body.removeChild(iframe);\r\n }, options.delay + 50 || 100);\r\n return [2 /*return*/, true];\r\n });\r\n });\r\n };\r\n /**\r\n * Finds a background color for the element. If element is transparent it goes\r\n * up the DOM hierarchy to find a parent element that does.\r\n *\r\n * @ignore Exclude from docs\r\n * @param element Element\r\n * @return Color code\r\n */\r\n Export.prototype.findBackgroundColor = function (element) {\r\n // Check if element has styles set\r\n var opacity = 1, currentColor = getComputedStyle(element, \"background-color\");\r\n // Check opacity\r\n if (currentColor.match(/[^,]*,[^,]*,[^,]*,[ ]?0/) || currentColor == \"transparent\") {\r\n opacity = 0;\r\n }\r\n if (opacity == 0) {\r\n var parent_2 = element.parentElement; // || element.parentNode;\r\n // Completely transparent. Look for a parent\r\n if (parent_2) {\r\n return this.findBackgroundColor(parent_2);\r\n }\r\n else {\r\n return color(\"#fff\");\r\n }\r\n }\r\n else {\r\n return color(currentColor, opacity);\r\n }\r\n };\r\n Object.defineProperty(Export.prototype, \"container\", {\r\n /**\r\n * @return Reference\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"container\", {\r\n container: this._container\r\n }).container;\r\n },\r\n /**\r\n * A reference to a container to be used to place [[ExportMenu]] in.\r\n *\r\n * @param value Reference\r\n */\r\n set: function (value) {\r\n this._container = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"sprite\", {\r\n /**\r\n * @return Sprite\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"sprite\", {\r\n sprite: this._sprite\r\n }).sprite;\r\n },\r\n /**\r\n * A reference to [[Sprite]] to export. Can be any Sprite, including some\r\n * internal elements.\r\n *\r\n * @param value Sprite\r\n */\r\n set: function (value) {\r\n this._sprite = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"extraSprites\", {\r\n /**\r\n * @return Sprite\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"extraSprites\", {\r\n extraSprites: this._extraSprites\r\n }).extraSprites;\r\n },\r\n /**\r\n * An array of extra [[Sprite]] elements to include in export.\r\n *\r\n * It can be used to export any external elements, or even other charts.\r\n *\r\n * E.g.:\r\n *\r\n * ```TypeScript\r\n * chart.exporting.extraSprites.push(chart2);\r\n * ```\r\n * ```JavaScript\r\n * chart.exporting.extraSprites.push(chart2);\r\n * ```\r\n *\r\n * IMPORTANT: This setting is ignored when exporting to SVG format.\r\n *\r\n * @since 4.2.0\r\n * @param value Sprite\r\n */\r\n set: function (value) {\r\n this._extraSprites = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"validateSprites\", {\r\n /**\r\n * @return Sprite\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"validateSprites\", {\r\n validateSprites: this._validateSprites\r\n }).validateSprites;\r\n },\r\n /**\r\n * An array of [[Sprite]] elements that need to be valid before export\r\n * commences.\r\n *\r\n * If any of those elements is not completely ready when export is triggered,\r\n * the export will wait until they are (their `validated` event triggers)\r\n * before going through with the export opertaion.\r\n *\r\n * This is useful if you need to modify chart appearance for the export.\r\n *\r\n * E.g.:\r\n *\r\n * ```TypeScript\r\n * // Add watermark\r\n * let watermark = chart.createChild(am4core.Label);\r\n * watermark.text = \"Copyright (C) 2019\";\r\n * watermark.disabled = true;\r\n *\r\n * // Add watermark to validated sprites\r\n * chart.exporting.validateSprites.push(watermark);\r\n *\r\n * // Enable watermark on export\r\n * chart.exporting.events.on(\"exportstarted\", function(ev) {\r\n * watermark.disabled = false;\r\n * });\r\n *\r\n * // Disable watermark when export finishes\r\n * chart.exporting.events.on(\"exportfinished\", function(ev) {\r\n * watermark.disabled = true;\r\n * });\r\n * ```\r\n * ```JavaScript\r\n * // Add watermark\r\n * var watermark = chart.createChild(am4core.Label);\r\n * watermark.text = \"Copyright (C) 2019\";\r\n * watermark.disabled = true;\r\n *\r\n * // Add watermark to validated sprites\r\n * chart.exporting.validateSprites.push(watermark);\r\n *\r\n * // Enable watermark on export\r\n * chart.exporting.events.on(\"exportstarted\", function(ev) {\r\n * watermark.disabled = false;\r\n * });\r\n *\r\n * // Disable watermark when export finishes\r\n * chart.exporting.events.on(\"exportfinished\", function(ev) {\r\n * watermark.disabled = true;\r\n * });\r\n * ```\r\n *\r\n * @since 4.6.8\r\n * @param value Sprite\r\n */\r\n set: function (value) {\r\n this._validateSprites = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"data\", {\r\n /**\r\n * @return Data\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"data\", {\r\n data: this._data\r\n }).data;\r\n },\r\n /**\r\n * Data to export.\r\n *\r\n * @param value Data\r\n */\r\n set: function (value) {\r\n this._data = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"dataFields\", {\r\n /**\r\n * @return Field names `{ field: fieldName }`\r\n */\r\n get: function () {\r\n if (!this._dataFields) {\r\n this.generateDataFields();\r\n }\r\n return this.adapter.apply(\"dataFields\", {\r\n dataFields: this._dataFields\r\n }).dataFields;\r\n },\r\n /**\r\n * Data fields in `{ field: fieldName }` format. Those are used for\r\n * exporting in data formats to name the columns.\r\n *\r\n * @see {@link https://www.amcharts.com/docs/v4/concepts/exporting/#Changing_order_and_names_of_columns} for examples and details\r\n * @param value Field names\r\n */\r\n set: function (value) {\r\n this._dataFields = value;\r\n this._dynamicDataFields = false;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Called after target chart's data updates.\r\n *\r\n * @ignore\r\n */\r\n Export.prototype.handleDataUpdated = function () {\r\n if (this._dynamicDataFields) {\r\n this._dataFields = undefined;\r\n }\r\n var hasData = this.data.length > 0;\r\n if (this._prevHasData != hasData) {\r\n this._prevHasData = hasData;\r\n if (this.menu) {\r\n this.menu.invalidate();\r\n }\r\n }\r\n };\r\n Object.defineProperty(Export.prototype, \"dateFormatter\", {\r\n /**\r\n * @return A DateFormatter instance\r\n */\r\n get: function () {\r\n if (!this._dateFormatter) {\r\n this._dateFormatter = new DateFormatter();\r\n this._dateFormatter.language = this.language;\r\n }\r\n return this.adapter.apply(\"dateFormatter\", {\r\n dateFormatter: this._dateFormatter\r\n }).dateFormatter;\r\n },\r\n /**\r\n * A [[DateFormatter]] to use when formatting dates when exporting data.\r\n *\r\n * @param value DateFormatter instance\r\n */\r\n set: function (value) {\r\n this._dateFormatter = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"dateFormat\", {\r\n /**\r\n * @return Date format\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"dateFormat\", {\r\n dateFormat: this._dateFormat\r\n }).dateFormat;\r\n },\r\n /**\r\n * A date format to use for exporting dates. Will use [[DateFormatter]]\r\n * format if not set.\r\n *\r\n * @param value Date format\r\n */\r\n set: function (value) {\r\n this._dateFormat = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"dateFields\", {\r\n /**\r\n * @return Date field list\r\n */\r\n get: function () {\r\n if (!this._dateFields) {\r\n this._dateFields = new List();\r\n }\r\n return this.adapter.apply(\"dateFields\", {\r\n dateFields: this._dateFields\r\n }).dateFields;\r\n },\r\n /**\r\n * A list of fields that hold date values.\r\n *\r\n * @param value Date field list\r\n */\r\n set: function (value) {\r\n this._dateFields = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"numberFormatter\", {\r\n /**\r\n * @return A NumberFormatter instance\r\n */\r\n get: function () {\r\n if (!this._numberFormatter) {\r\n this._numberFormatter = new NumberFormatter();\r\n this._numberFormatter.language = this.language;\r\n }\r\n return this.adapter.apply(\"numberFormatter\", {\r\n numberFormatter: this._numberFormatter\r\n }).numberFormatter;\r\n },\r\n /**\r\n * A [[NumberFormatter]] to use when formatting dates when exporting data.\r\n *\r\n * @since 4.5.15\r\n * @param value NumberFormatter instance\r\n */\r\n set: function (value) {\r\n this._numberFormatter = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"numberFormat\", {\r\n /**\r\n * @return Number format\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"numberFormat\", {\r\n numberFormat: this._numberFormat\r\n }).numberFormat;\r\n },\r\n /**\r\n * A number format to use for exporting dates. Will use [[NumberFormatter]]\r\n * format if not set.\r\n *\r\n * @since 4.5.15\r\n * @param value Number format\r\n */\r\n set: function (value) {\r\n this._numberFormat = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"numberFields\", {\r\n /**\r\n * @return Number field list\r\n */\r\n get: function () {\r\n if (!this._numberFields) {\r\n this._numberFields = new List();\r\n }\r\n return this.adapter.apply(\"numberFields\", {\r\n numberFields: this._numberFields\r\n }).numberFields;\r\n },\r\n /**\r\n * A list of fields that hold number values.\r\n *\r\n * @since 4.5.15\r\n * @param value Number field list\r\n */\r\n set: function (value) {\r\n this._numberFields = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"durationFormatter\", {\r\n /**\r\n * @return A DurationFormatter instance\r\n */\r\n get: function () {\r\n if (!this._durationFormatter) {\r\n this._durationFormatter = new DurationFormatter();\r\n this._durationFormatter.language = this.language;\r\n }\r\n return this.adapter.apply(\"durationFormatter\", {\r\n durationFormatter: this._durationFormatter\r\n }).durationFormatter;\r\n },\r\n /**\r\n * A [[DurationFormatter]] to use when formatting duration values when\r\n * exporting data.\r\n *\r\n * @param value DurationFormatter instance\r\n */\r\n set: function (value) {\r\n this._durationFormatter = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"durationFormat\", {\r\n /**\r\n * @return Duration format\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"durationFormat\", {\r\n durationFormat: this._durationFormat\r\n }).durationFormat;\r\n },\r\n /**\r\n * A format to use when formatting values from `durationFields`.\r\n * Will use [[DurationFormatter]] format if not set.\r\n *\r\n * @param value Duration format\r\n */\r\n set: function (value) {\r\n this._durationFormat = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"durationFields\", {\r\n /**\r\n * @return Duration field list\r\n */\r\n get: function () {\r\n if (!this._durationFields) {\r\n this._durationFields = new List();\r\n }\r\n return this.adapter.apply(\"durationFields\", {\r\n durationFields: this._durationFields\r\n }).durationFields;\r\n },\r\n /**\r\n * A list of fields that hold duration values.\r\n *\r\n * @param value Duration field list\r\n */\r\n set: function (value) {\r\n this._durationFields = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Generates data fields out of the first row of data.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Export.prototype.generateDataFields = function () {\r\n var _this = this;\r\n this._dataFields = {};\r\n if (this.data.length) {\r\n $array.each(this.data, function (row) {\r\n $object.each(row, function (key, value) {\r\n if (!$type.hasValue(_this._dataFields[key])) {\r\n _this._dataFields[key] = _this.adapter.apply(\"dataFieldName\", {\r\n name: key,\r\n field: key\r\n }).name;\r\n }\r\n });\r\n });\r\n }\r\n };\r\n /**\r\n * Cheks against `dateFields` property to determine if this field holds\r\n * dates.\r\n *\r\n * @ignore Exclude from docs\r\n * @param field Field name\r\n * @param options Options\r\n * @return `true` if it's a date field\r\n */\r\n Export.prototype.isDateField = function (field) {\r\n return this.adapter.apply(\"isDateField\", {\r\n isDateField: this.dateFields.contains(field),\r\n field: field\r\n }).isDateField;\r\n };\r\n /**\r\n * Cheks against `numberFields` property to determine if this field holds\r\n * numbers.\r\n *\r\n * @ignore Exclude from docs\r\n * @param field Field name\r\n * @param options Options\r\n * @return `true` if it's a number field\r\n */\r\n Export.prototype.isNumberField = function (field) {\r\n return this.adapter.apply(\"isNumberField\", {\r\n isNumberField: this.numberFields.contains(field),\r\n field: field\r\n }).isNumberField;\r\n };\r\n /**\r\n * Cheks against `durationFields` property to determine if this field holds\r\n * durations.\r\n *\r\n * @ignore Exclude from docs\r\n * @param field Field name\r\n * @param options Options\r\n * @return `true` if it's a date field\r\n */\r\n Export.prototype.isDurationField = function (field) {\r\n return this.adapter.apply(\"isDurationField\", {\r\n isDurationField: this.durationFields.contains(field),\r\n field: field\r\n }).isDurationField;\r\n };\r\n /**\r\n * Returns proper content type for the export type.\r\n *\r\n * @param type Export format/type\r\n * @return Proper content type, i.e. \"image/jpeg\"\r\n */\r\n Export.prototype.getContentType = function (type) {\r\n var contentType = \"\";\r\n switch (type) {\r\n case \"png\":\r\n case \"gif\":\r\n contentType = \"image/\" + type;\r\n break;\r\n case \"jpg\":\r\n contentType = \"image/jpeg\";\r\n break;\r\n case \"svg\":\r\n contentType = \"image/svg+xml\";\r\n break;\r\n case \"csv\":\r\n contentType = \"text/csv\";\r\n break;\r\n case \"json\":\r\n contentType = \"application/json\";\r\n break;\r\n case \"html\":\r\n contentType = \"text/html\";\r\n break;\r\n case \"pdf\":\r\n case \"pdfdata\":\r\n contentType = \"application/pdf\";\r\n break;\r\n case \"xlsx\":\r\n contentType = \"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet\";\r\n break;\r\n }\r\n return this.adapter.apply(\"contentType\", {\r\n contentType: contentType,\r\n type: type\r\n }).contentType;\r\n };\r\n Object.defineProperty(Export.prototype, \"filePrefix\", {\r\n /**\r\n * @return File prefix\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"filePrefix\", {\r\n filePrefix: this._filePrefix\r\n }).filePrefix;\r\n },\r\n /**\r\n * A file prefix to be used for all exported formats.\r\n *\r\n * Export will apply format-related extension to it. E.g. if this is set to\r\n * \"myExport\", the file name of the PNG exported image will be \"myExport.png\".\r\n *\r\n * @param value File prefix\r\n */\r\n set: function (value) {\r\n this._filePrefix = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"backgroundColor\", {\r\n /**\r\n * @return Background color\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"backgroundColor\", {\r\n backgroundColor: this._backgroundColor\r\n }).backgroundColor;\r\n },\r\n /**\r\n * A background color to be used for exported images. If set, this will\r\n * override the automatically acquired background color.\r\n *\r\n * @param value Color\r\n */\r\n set: function (value) {\r\n this._backgroundColor = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"title\", {\r\n /**\r\n * @return Title\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"title\", {\r\n title: this._title\r\n }).title;\r\n },\r\n /**\r\n * A title to be used when printing.\r\n *\r\n * @param value Title\r\n */\r\n set: function (value) {\r\n this._title = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Displays a preloader/exporting indicator.\r\n *\r\n * @ignore Exclude from docs\r\n * @todo Add ability to change text\r\n */\r\n Export.prototype.showPreloader = function () {\r\n var preloader = this.preloader;\r\n if (preloader) {\r\n preloader.progress = 0.5;\r\n preloader.label.text = \"...\";\r\n }\r\n };\r\n /**\r\n * Hides preloader/exporting indicator\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Export.prototype.hidePreloader = function () {\r\n var preloader = this.preloader;\r\n if (preloader) {\r\n preloader.progress = 1;\r\n }\r\n };\r\n Object.defineProperty(Export.prototype, \"preloader\", {\r\n /**\r\n * Returns a an instance of [[Preloader]] associated with the Sprite being\r\n * exported.\r\n *\r\n * @return Preloader\r\n */\r\n get: function () {\r\n return this._sprite && this._sprite.parent && this._sprite.parent.preloader ?\r\n this._sprite.parent.preloader :\r\n undefined;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Displays a modal saying export is taking longer than expected.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Export.prototype.showTimeout = function () {\r\n this.showModal(this.adapter.apply(\"timeoutMessage\", {\r\n message: this.language.translate(\"Export operation took longer than expected. Something might have gone wrong.\")\r\n }).message);\r\n };\r\n /**\r\n * Hides preloader/exporting indicator.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Export.prototype.hideTimeout = function () {\r\n if (this._timeoutTimeout) {\r\n this.removeDispose(this._timeoutTimeout);\r\n this._timeoutTimeout = null;\r\n }\r\n this.hideModal();\r\n };\r\n Object.defineProperty(Export.prototype, \"language\", {\r\n /**\r\n * @return A [[Language]] instance to be used\r\n */\r\n get: function () {\r\n if (!this._language) {\r\n this._language = new Language();\r\n }\r\n return this._language;\r\n },\r\n /**\r\n * A [[Language]] instance to be used for translations.\r\n *\r\n * @param value An instance of [[Language]]\r\n */\r\n set: function (value) {\r\n this._language = value;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"modal\", {\r\n /**\r\n * Returns (and creates) [[Modal]].\r\n *\r\n * @ignore Exclude from docs\r\n * @return Modal instance\r\n */\r\n get: function () {\r\n if (!this._modal) {\r\n this._modal = new Modal();\r\n // Prefix with Sprite's class name\r\n this._modal.adapter.add(\"classPrefix\", function (value) {\r\n value = options.classNamePrefix + value;\r\n return value;\r\n });\r\n }\r\n return this._modal;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Shows [[Modal]] with specific text.\r\n *\r\n * @ignore Exclude from docs\r\n * @param text Modal contents\r\n */\r\n Export.prototype.showModal = function (text, title) {\r\n // Hide previous modal and preloader\r\n this.hideModal();\r\n this.hidePreloader();\r\n // Create modal\r\n var modal = this.modal;\r\n modal.container = this.sprite.svgContainer.SVGContainer;\r\n modal.content = text;\r\n modal.readerTitle = title;\r\n modal.open();\r\n };\r\n /**\r\n * Hides modal window if one's currently open.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Export.prototype.hideModal = function () {\r\n if (this._modal) {\r\n this.modal.close();\r\n }\r\n };\r\n /**\r\n * Loads canvg dynamic module.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Instance of canvg\r\n * @async\r\n */\r\n Export.prototype._canvg = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var canvg;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, import(/* webpackChunkName: \"canvg\" */ \"../../canvg/index.js\")];\r\n case 1:\r\n canvg = (_a.sent());\r\n if (canvg.default != null) {\r\n return [2 /*return*/, canvg.default];\r\n }\r\n else {\r\n return [2 /*return*/, canvg];\r\n }\r\n return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n Object.defineProperty(Export.prototype, \"canvg\", {\r\n /**\r\n * Returns canvg instance.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Instance of canvg\r\n */\r\n get: function () {\r\n return this._canvg();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(Export.prototype, \"pdfmake\", {\r\n /**\r\n * Returns pdfmake instance.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Instance of pdfmake\r\n */\r\n get: function () {\r\n if (pdfmakePromise == null) {\r\n pdfmakePromise = _pdfmake();\r\n }\r\n return pdfmakePromise;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Loads xlsx dynamic module.\r\n *\r\n * This is an asynchronous function. Check the description of `getImage()`\r\n * for description and example usage.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Instance of pdfmake\r\n * @async\r\n */\r\n Export.prototype._xlsx = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0: return [4 /*yield*/, import(/* webpackChunkName: \"xlsx\" */ \"xlsx/dist/xlsx.core.min.js\")];\r\n case 1: return [2 /*return*/, _a.sent()];\r\n }\r\n });\r\n });\r\n };\r\n Object.defineProperty(Export.prototype, \"xlsx\", {\r\n /**\r\n * Returns xlsx instance.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Instance of pdfmake\r\n */\r\n get: function () {\r\n return this._xlsx();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Sets options for a format.\r\n */\r\n Export.prototype.setFormatOptions = function (type, options) {\r\n this._formatOptions.setKey(type, options);\r\n };\r\n /**\r\n * Returns current options for a format.\r\n */\r\n Export.prototype.getFormatOptions = function (type) {\r\n return this._formatOptions.getKey(type);\r\n };\r\n Object.defineProperty(Export.prototype, \"formatOptions\", {\r\n /**\r\n * A [[Dictionary]] object containing format-specific options.\r\n *\r\n * May be used to change specific option for the format:\r\n *\r\n * ```TypeScript\r\n * chart.exporting.formatOptions.getKey(\"csv\").disabled = true;\r\n * ```\r\n * ```JavaScript\r\n * chart.exporting.formatOptions.getKey(\"csv\").disabled = true;\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"exporting\": {\r\n * // ...\r\n * \"formatOptions\": {\r\n * \"csv\": {\r\n * \"disabled\": true\r\n * }\r\n * }\r\n * }\r\n * }\r\n * ```\r\n *\r\n * @since 4.9.12\r\n * @return Options\r\n */\r\n get: function () {\r\n return this._formatOptions;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Disables interactivity on parent chart.\r\n */\r\n Export.prototype._disablePointers = function () {\r\n if (!$type.hasValue(this._spriteInteractionsEnabled)) {\r\n this._spriteInteractionsEnabled = this.sprite.interactionsEnabled;\r\n }\r\n this.sprite.interactionsEnabled = false;\r\n };\r\n /**\r\n * Releases temporarily disabled pointers on parent chart.\r\n */\r\n Export.prototype._releasePointers = function () {\r\n if ($type.hasValue(this._spriteInteractionsEnabled) && !this._exportRunning) {\r\n this.sprite.interactionsEnabled = this._spriteInteractionsEnabled;\r\n }\r\n };\r\n /**\r\n * Hides all elements that should not be included in the exported image.\r\n */\r\n Export.prototype.hideNonExportableSprites = function () {\r\n var _this = this;\r\n if (this._objectsAlreadyHidden) {\r\n return;\r\n }\r\n var svgContainer = this.sprite.svgContainer;\r\n if (svgContainer) {\r\n $array.each(svgContainer.nonExportableSprites, function (item) {\r\n if (!item.isHidden && !item.isHiding && item.visible) {\r\n _this._hiddenObjects.push(item);\r\n }\r\n item.hide(0);\r\n });\r\n }\r\n this._objectsAlreadyHidden = true;\r\n };\r\n /**\r\n * Respores elements that were hidden before export.\r\n */\r\n Export.prototype.restoreNonExportableSprites = function () {\r\n if (!this._objectsAlreadyHidden) {\r\n return;\r\n }\r\n $array.each(this._hiddenObjects, function (item) {\r\n item.show(0);\r\n });\r\n this._hiddenObjects = [];\r\n this._objectsAlreadyHidden = false;\r\n };\r\n /**\r\n * Checks if there are elements that absolutely need to be validated before\r\n * export.\r\n *\r\n * If there are invalid elements, it will await for them to be validated.\r\n *\r\n * @return Promise\r\n */\r\n Export.prototype.awaitValidSprites = function () {\r\n return __awaiter(this, void 0, void 0, function () {\r\n var promises;\r\n return __generator(this, function (_a) {\r\n switch (_a.label) {\r\n case 0:\r\n promises = [];\r\n if (this.validateSprites.length) {\r\n $array.each(this.validateSprites, function (sprite, index) {\r\n if (sprite.invalid) {\r\n promises.push(new Promise(function (resolve, reject) {\r\n sprite.events.once(\"validated\", function (ev) {\r\n resolve();\r\n });\r\n }));\r\n }\r\n });\r\n }\r\n if (!promises.length) return [3 /*break*/, 2];\r\n return [4 /*yield*/, Promise.all(promises)];\r\n case 1:\r\n _a.sent();\r\n _a.label = 2;\r\n case 2: return [2 /*return*/];\r\n }\r\n });\r\n });\r\n };\r\n /**\r\n * Processes JSON-based config before it is applied to the object.\r\n *\r\n * @ignore Exclude from docs\r\n * @param config Config\r\n */\r\n Export.prototype.processConfig = function (config) {\r\n registry.registeredClasses[\"ExportMenu\"] = ExportMenu;\r\n if (config) {\r\n // Set up menu\r\n if ($type.hasValue(config.menu) && !$type.hasValue(config.menu.type)) {\r\n config.menu.type = \"ExportMenu\";\r\n }\r\n if ($type.hasValue(config.dataFields) && $type.isObject(config.dataFields)) {\r\n this.dataFields = config.dataFields;\r\n delete config.dataFields;\r\n }\r\n }\r\n _super.prototype.processConfig.call(this, config);\r\n };\r\n /**\r\n * XLINK namespace definition.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n Export.XLINK = \"http://www.w3.org/1999/xlink\";\r\n return Export;\r\n}(Validatable));\r\nexport { Export };\r\n//# sourceMappingURL=Export.js.map","import { StyleRule } from \"../utils/DOM\";\r\nimport { InterfaceColorSet } from \"../utils/InterfaceColorSet\";\r\nimport { Dictionary } from \"../utils/Dictionary\";\r\nimport { MultiDisposer, CounterDisposer } from \"../utils/Disposer\";\r\nvar rules = new Dictionary();\r\n/**\r\n * A dynamically-loadable CSS module for Export menu.\r\n *\r\n * @ignore Exclude from docs\r\n * @param prefix Prefix to addtach to class names\r\n * @return A MultiDisposer with style rules\r\n */\r\nexport default function (element, prefix) {\r\n var newPrefix = (prefix ? prefix : \"amexport\");\r\n var colorSet = new InterfaceColorSet();\r\n var counter = rules.insertKeyIfEmpty(newPrefix, function () {\r\n var disposer = new MultiDisposer([\r\n /*new StyleRule(`.${newPrefix}-menu`, {\r\n \"opacity\": \"0.3\",\r\n \"transition\": \"all 100ms ease-in-out\",\r\n }),\r\n\r\n new StyleRule(`div:hover .${newPrefix}-menu, .${newPrefix}-menu.active`, {\r\n \"opacity\": \"0.9\",\r\n }),*/\r\n new StyleRule(element, \".\" + newPrefix + \"-menu *\", {\r\n \"box-sizing\": \"border-box\"\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-menu-level-0\", {\r\n \"position\": \"absolute\",\r\n \"top\": \"5px\",\r\n \"right\": \"5px\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-menu-level-0.\" + newPrefix + \"-left\", {\r\n \"right\": \"auto\",\r\n \"left\": \"5px\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-menu-level-0.\" + newPrefix + \"-right\", {\r\n \"right\": \"5px\",\r\n \"left\": \"auto\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-menu-level-0.\" + newPrefix + \"-top\", {\r\n \"top\": \"5px\",\r\n \"bottom\": \"auto\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-menu-level-0.\" + newPrefix + \"-bottom\", {\r\n \"top\": \"auto\",\r\n \"bottom\": \"5px\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-item.\" + newPrefix + \"-item-level-0\", {\r\n \"opacity\": \"0.3\",\r\n \"width\": \"30px\",\r\n \"min-height\": \"30px\",\r\n \"transition\": \"all 100ms ease-in-out\",\r\n }),\r\n new StyleRule(element, \"div:hover > div > .\" + newPrefix + \"-menu .\" + newPrefix + \"-item.\" + newPrefix + \"-item-level-0, .\" + newPrefix + \"-item.\" + newPrefix + \"-item-level-0.active\", {\r\n \"opacity\": \"0.9\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-item.\" + newPrefix + \"-item-level-0 > a\", {\r\n \"padding\": \"0\",\r\n \"text-align\": \"center\",\r\n \"overflow\": \"hidden\"\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-item.\" + newPrefix + \"-item-level-0:before\", {\r\n \"display\": \"block\"\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-item\", {\r\n \"position\": \"relative\",\r\n \"display\": \"block\",\r\n \"opacity\": \"0\",\r\n \"z-index\": \"1\",\r\n \"border-radius\": \"3px\",\r\n \"background-color\": colorSet.getFor(\"secondaryButton\").hex,\r\n \"padding\": \"0\",\r\n \"margin\": \"1px 1px 0 0\",\r\n \"color\": colorSet.getFor(\"secondaryButton\").alternative.hex,\r\n \"transition\": \"all 100ms ease-in-out, opacity 0.5s ease 0.5s\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-left .\" + newPrefix + \"-item\", {\r\n \"margin\": \"1px 0 0 1px\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-item:hover, .\" + newPrefix + \"-item.active\", {\r\n \"background\": colorSet.getFor(\"secondaryButtonHover\").hex,\r\n \"color\": colorSet.getFor(\"secondaryButtonText\").hex,\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-item > .\" + newPrefix + \"-menu\", {\r\n \"position\": \"absolute\",\r\n \"top\": \"-1px\",\r\n \"right\": \"0\",\r\n \"margin-right\": \"100%\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-left .\" + newPrefix + \"-item > .\" + newPrefix + \"-menu\", {\r\n \"left\": \"0\",\r\n \"right\": \"auto\",\r\n \"margin-left\": \"100%\",\r\n \"margin-right\": \"auto\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-right .\" + newPrefix + \"-item > .\" + newPrefix + \"-menu\", {\r\n \"left\": \"auto\",\r\n \"right\": \"0\",\r\n \"margin-left\": \"auto\",\r\n \"margin-right\": \"100%\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-top .\" + newPrefix + \"-item > .\" + newPrefix + \"-menu\", {\r\n \"top\": \"-1px\",\r\n \"bottom\": \"auto\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-bottom .\" + newPrefix + \"-item > .\" + newPrefix + \"-menu\", {\r\n \"top\": \"auto\",\r\n \"bottom\": \"0\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-item > .\" + newPrefix + \"-menu\", {\r\n \"display\": \"none\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-item:hover > .\" + newPrefix + \"-menu, .\" + newPrefix + \"-item.active > .\" + newPrefix + \"-menu\", {\r\n \"display\": \"block\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-item:hover > .\" + newPrefix + \"-menu > .\" + newPrefix + \"-item, .\" + newPrefix + \"-item.active > .\" + newPrefix + \"-menu > .\" + newPrefix + \"-item\", {\r\n \"opacity\": \"1\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-menu\", {\r\n \"display\": \"block\",\r\n \"list-style\": \"none\",\r\n \"margin\": \"0\",\r\n \"padding\": \"0\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-label\", {\r\n \"display\": \"block\",\r\n \"cursor\": \"default\",\r\n \"padding\": \"0.5em 1em\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-icon\", {\r\n \"display\": \"block\",\r\n \"cursor\": \"default\",\r\n \"padding\": \"0.2em 0.4em\",\r\n \"width\": \"1.2em\",\r\n \"height\": \"1.2em\",\r\n \"min-width\": \"32px\",\r\n \"min-height\": \"32px\",\r\n \"margin\": \"auto auto\",\r\n \"border-radius\": \"3px\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-item-level-0 > .\" + newPrefix + \"-icon\", {\r\n \"padding\": \"0.1em 0.2em\",\r\n }),\r\n new StyleRule(element, \".\" + newPrefix + \"-clickable\", {\r\n \"cursor\": \"pointer\",\r\n }),\r\n ]);\r\n return new CounterDisposer(function () {\r\n rules.removeKey(newPrefix);\r\n disposer.dispose();\r\n });\r\n });\r\n return counter.increment();\r\n}\r\n//# sourceMappingURL=ExportCSS.js.map","/**\r\n * ExportMenu provides functionality for building Export menu\r\n */\r\nimport { __extends } from \"tslib\";\r\n/**\r\n * ============================================================================\r\n * IMPORTS\r\n * ============================================================================\r\n * @hidden\r\n */\r\nimport exportCSS from \"./ExportCSS\";\r\nimport { Adapter } from \"../utils/Adapter\";\r\nimport { List } from \"../utils/List\";\r\nimport { getInteraction } from \"../interaction/Interaction\";\r\nimport { MutableValueDisposer } from \"../utils/Disposer\";\r\nimport { Language } from \"../utils/Language\";\r\nimport { Validatable } from \"../utils/Validatable\";\r\nimport { keyboard } from \"../utils/Keyboard\";\r\nimport * as $utils from \"../utils/Utils\";\r\nimport * as $iter from \"../utils/Iterator\";\r\nimport * as $dom from \"../utils/DOM\";\r\nimport * as $type from \"../utils/Type\";\r\n/**\r\n * ============================================================================\r\n * MAIN CLASS\r\n * ============================================================================\r\n * @hidden\r\n */\r\n/**\r\n * Creates a menu for Export operations.\r\n *\r\n * To add an export menu to a chart, set this to a new instance of\r\n * [[ExportMenu]].\r\n *\r\n * ```TypeScript\r\n * chart.exporting.menu = new am4core.ExportMenu();\r\n * ```\r\n * ```JavaScript\r\n * chart.exporting.menu = new am4core.ExportMenu();\r\n * ```\r\n * ```JSON\r\n * {\r\n * // ...\r\n * \"exporting\": {\r\n * \"menu\": {}\r\n * }\r\n * }\r\n * ```\r\n * @important\r\n */\r\nvar ExportMenu = /** @class */ (function (_super) {\r\n __extends(ExportMenu, _super);\r\n /**\r\n * Constructor\r\n */\r\n function ExportMenu() {\r\n var _this = _super.call(this) || this;\r\n /**\r\n * An [[Adapter]].\r\n */\r\n _this.adapter = new Adapter(_this);\r\n /**\r\n * How many milliseconds to hold menu/sub-menu open after it loses focus or\r\n * hover, before auto-closing it.\r\n *\r\n * @default 1000\r\n */\r\n _this.closeDelay = 1000;\r\n /**\r\n * Close the menu automatically when some export operation is triggered.\r\n *\r\n * @default true\r\n * @since 4.2.2\r\n */\r\n _this.closeOnClick = true;\r\n /**\r\n * An instance of [[Language]].\r\n */\r\n _this._language = new MutableValueDisposer();\r\n /**\r\n * What HTML tags to use to build menu.\r\n */\r\n _this._menuTag = \"ul\";\r\n /**\r\n * Which tag to use to enclose individual menu items.\r\n */\r\n _this._itemTag = \"li\";\r\n /**\r\n * Tag to wrap menu item labels in.\r\n */\r\n _this._labelTag = \"a\";\r\n /**\r\n * Tag to use for icons\r\n */\r\n _this._iconTag = \"img\";\r\n /**\r\n * Prefix for class names applied to menu elements.\r\n */\r\n _this._classPrefix = \"amexport\";\r\n /**\r\n * If set to `true` [[ExportMenu]] will load it's own external CSS when\r\n * instantiated.\r\n */\r\n _this._defaultStyles = true;\r\n /**\r\n * Horizontal positioning.\r\n */\r\n _this._align = \"right\";\r\n /**\r\n * Vertical positioning.\r\n */\r\n _this._verticalAlign = \"top\";\r\n /**\r\n * A tabindex to apply to Export Menu.\r\n */\r\n _this._tabindex = 0;\r\n /**\r\n * Whether next menu close event should be ignored.\r\n */\r\n _this._ignoreNextClose = false;\r\n /**\r\n * Default menu items.\r\n */\r\n _this._items = [\r\n {\r\n \"label\": \"...\",\r\n \"menu\": [\r\n {\r\n \"label\": \"Image\",\r\n \"menu\": [\r\n { \"type\": \"png\", \"label\": \"PNG\" },\r\n { \"type\": \"jpg\", \"label\": \"JPG\" },\r\n { \"type\": \"svg\", \"label\": \"SVG\" },\r\n { \"type\": \"pdf\", \"label\": \"PDF\" }\r\n ]\r\n }, {\r\n \"label\": \"Data\",\r\n \"menu\": [\r\n { \"type\": \"json\", \"label\": \"JSON\" },\r\n { \"type\": \"csv\", \"label\": \"CSV\" },\r\n { \"type\": \"xlsx\", \"label\": \"XLSX\" },\r\n { \"type\": \"html\", \"label\": \"HTML\" },\r\n { \"type\": \"pdfdata\", \"label\": \"PDF\" }\r\n ]\r\n }, {\r\n \"label\": \"Print\", \"type\": \"print\"\r\n }\r\n ]\r\n }\r\n ];\r\n _this.className = \"ExportMenu\";\r\n _this._disposers.push(_this._language);\r\n _this.invalidate();\r\n _this.applyTheme();\r\n return _this;\r\n }\r\n /**\r\n * (Re)draws the Export menu.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n ExportMenu.prototype.validate = function () {\r\n this.draw();\r\n _super.prototype.validate.call(this);\r\n };\r\n /**\r\n * Draws the menu based on current items.\r\n *\r\n * Normally, there's no need to call this explicitly. The chart, if it has\r\n * export menu enabled, will automatically draw the menu.\r\n */\r\n ExportMenu.prototype.draw = function () {\r\n var _this = this;\r\n // Create top-level menu item, or clear it\r\n if (!this._element) {\r\n this._element = this.createMenuElement(0);\r\n }\r\n else {\r\n this._element.innerHTML = \"\";\r\n this._element.className = this.getMenuItemClass(0);\r\n }\r\n // See if we're loading external CSS\r\n // Hide it until CSS is loaded\r\n if (this.defaultStyles) {\r\n this._element.style.display = \"none\";\r\n }\r\n // Append to container\r\n $type.getValue(this._container).appendChild(this._element);\r\n // Apply adapter to menu items before processing\r\n var items = this.adapter.apply(\"items\", {\r\n items: this._items\r\n }).items;\r\n for (var len = items.length, i = 0; i < len; i++) {\r\n this.drawBranch(this._element, items[i], 0);\r\n }\r\n // Apply adapter to finalized menu element\r\n this._element = this.adapter.apply(\"menuElement\", {\r\n menuElement: this._element\r\n }).menuElement;\r\n // Set up global \"down\" event\r\n this._disposers.push(getInteraction().body.events.on(\"down\", function (ev) {\r\n if (!ev.pointer.touch) {\r\n _this._ignoreNextClose = false;\r\n }\r\n _this.close();\r\n }));\r\n // Set up global event on ESC press to close the menu\r\n this._disposers.push(getInteraction().body.events.on(\"keydown\", function (ev) {\r\n var key = keyboard.getEventKey(ev.event);\r\n switch (key) {\r\n case \"esc\":\r\n _this.close();\r\n break;\r\n case \"up\":\r\n case \"down\":\r\n case \"left\":\r\n case \"right\":\r\n if (_this._currentSelection) {\r\n ev.event.preventDefault();\r\n }\r\n _this.moveSelection(key);\r\n break;\r\n }\r\n }));\r\n if (this.defaultStyles) {\r\n this.loadDefaultCSS();\r\n }\r\n };\r\n /**\r\n * Creates a new branch in export menu. This function is recursive for\r\n * building multi-level menus.\r\n *\r\n * @ignore Exclude from docs\r\n * @param container Container to put branch elements in\r\n * @param branch Menu item\r\n * @param level Current nesting level\r\n */\r\n ExportMenu.prototype.drawBranch = function (container, branch, level) {\r\n var _this = this;\r\n // Apply adapter\r\n branch = this.adapter.apply(\"branch\", {\r\n branch: branch,\r\n level: level\r\n }).branch;\r\n // Unsupported?\r\n // ExportMenu does not check or know for specific browser/system\r\n // capabilities. It must happen in some other code and applied via Adapter.\r\n // Export itself will check compatibility, but there might be other plugins\r\n // that influence it or even add any specific export functionality.\r\n if (branch.unsupported === true) {\r\n return;\r\n }\r\n // Init ascendants\r\n if (!branch.ascendants) {\r\n branch.ascendants = new List();\r\n }\r\n // Get type\r\n var type = branch.type;\r\n // Create an item\r\n var element = this.createItemElement(level, type);\r\n // Create label\r\n var label;\r\n // Create icon\r\n if (branch.icon) {\r\n label = this.createIconElement(level, type);\r\n label.src = branch.icon;\r\n if (branch.label || branch.title) {\r\n label.title = branch.title || branch.label;\r\n }\r\n }\r\n else if (branch.svg) {\r\n label = this.createSvgElement(level, type, branch.svg);\r\n if (branch.label || branch.title) {\r\n label.title = branch.title || branch.label;\r\n }\r\n }\r\n else {\r\n label = this.createLabelElement(level, type);\r\n label.innerHTML = (branch.label ? this.language.translate(branch.label) : \"\");\r\n if (branch.title) {\r\n label.title = branch.title;\r\n }\r\n }\r\n // Apply reader text to label\r\n var readerLabel = this.getReaderLabel(branch, label.innerHTML);\r\n label.setAttribute(\"aria-label\", readerLabel);\r\n // Add Label\r\n element.appendChild(label);\r\n // Create interaction object\r\n // TODO clean this up when it's disposed\r\n branch.interactions = getInteraction().getInteraction(element);\r\n branch.element = element;\r\n // Create interaction manager we can set event listeners to\r\n if (this.typeClickable(type)) {\r\n //branch.interactions.clickable = true;\r\n // TODO clean this up when it's disposed\r\n branch.interactions.events.on(\"hit\", function (ev) {\r\n if (_this.events.isEnabled(\"hit\") && !_this.isDisposed()) {\r\n var event_1 = {\r\n \"type\": \"hit\",\r\n \"event\": ev.event,\r\n \"target\": _this,\r\n \"branch\": branch\r\n };\r\n _this.events.dispatchImmediately(\"hit\", event_1);\r\n }\r\n });\r\n // TODO clean this up when it's disposed\r\n branch.interactions.events.on(\"keyup\", function (ev) {\r\n if (keyboard.isKey(ev.event, \"enter\")) {\r\n if (_this.events.isEnabled(\"enter\")) {\r\n var event_2 = {\r\n \"type\": \"enter\",\r\n \"event\": ev.event,\r\n \"target\": _this,\r\n \"branch\": branch\r\n };\r\n _this.events.dispatchImmediately(\"enter\", event_2);\r\n }\r\n }\r\n });\r\n }\r\n {\r\n var submenu_1 = this.getSubMenu(branch);\r\n // Add ENTER event to open sub-menus\r\n if (submenu_1 != null) {\r\n // TODO clean this up when it's disposed\r\n branch.interactions.events.on(\"keyup\", function (ev) {\r\n if (keyboard.isKey(ev.event, \"enter\")) {\r\n // This is item has sub-menu, activate the first child on ENTER\r\n _this.selectBranch(submenu_1[0]);\r\n // Attempt to set focus\r\n _this.setFocus(submenu_1[0]);\r\n }\r\n });\r\n branch.interactions.events.on(\"hit\", function (ev) {\r\n _this.selectBranch(branch);\r\n });\r\n }\r\n }\r\n // Add events\r\n // TODO clean this up when it's disposed\r\n branch.interactions.events.on(\"over\", function (ev) {\r\n if (ev.pointer.touch) {\r\n // Cancel pending menu closure\r\n _this._ignoreNextClose = true;\r\n }\r\n _this.selectBranch(branch);\r\n if (_this.events.isEnabled(\"over\")) {\r\n var event_3 = {\r\n \"type\": \"over\",\r\n \"event\": ev.event,\r\n \"target\": _this,\r\n \"branch\": branch\r\n };\r\n _this.events.dispatchImmediately(\"over\", event_3);\r\n }\r\n });\r\n // TODO clean this up when it's disposed\r\n branch.interactions.events.on(\"out\", function (ev) {\r\n if (_this.isDisposed()) {\r\n return;\r\n }\r\n if (!ev.pointer.touch) {\r\n _this.delayUnselectBranch(branch);\r\n }\r\n if (_this.events.isEnabled(\"out\")) {\r\n var event_4 = {\r\n \"type\": \"out\",\r\n \"event\": ev.event,\r\n \"target\": _this,\r\n \"branch\": branch\r\n };\r\n _this.events.dispatchImmediately(\"out\", event_4);\r\n }\r\n });\r\n // TODO clean this up when it's disposed\r\n branch.interactions.events.on(\"focus\", function (ev) {\r\n _this.selectBranch(branch);\r\n });\r\n // TODO clean this up when it's disposed\r\n branch.interactions.events.on(\"blur\", function (ev) {\r\n _this.delayUnselectBranch(branch);\r\n });\r\n // Increment level\r\n var local_level = level + 1;\r\n // Has sub-menu?\r\n if (branch.menu) {\r\n var submenu = this.createMenuElement(local_level);\r\n branch.submenuElement = submenu;\r\n for (var len = branch.menu.length, i = 0; i < len; i++) {\r\n var ascendants = new List();\r\n branch.menu[i].ascendants = ascendants;\r\n if (branch.ascendants.length) {\r\n ascendants.copyFrom(branch.ascendants);\r\n }\r\n ascendants.push(branch);\r\n this.drawBranch(submenu, branch.menu[i], local_level);\r\n }\r\n // Sub-menu is empty (all items are not supported)\r\n // Do not draw this menu item at all\r\n if (submenu.innerHTML == \"\") {\r\n return;\r\n }\r\n element.appendChild(submenu);\r\n }\r\n // Should this item be hidden?\r\n if (branch.hidden) {\r\n this.hideBranch(branch);\r\n }\r\n // Add id?\r\n if (branch.id) {\r\n element.setAttribute(\"id\", branch.id);\r\n }\r\n // Background color?\r\n if (branch.color) {\r\n element.style.backgroundColor = branch.color.hex;\r\n }\r\n // Append to container\r\n container.appendChild(element);\r\n };\r\n /**\r\n * Creates a menu element to hold its elements in. Usually it's an `
    `\r\n * tag.\r\n *\r\n * @ignore Exclude from docs\r\n * @param level Current nesting level\r\n * @return HTML element reference\r\n */\r\n ExportMenu.prototype.createMenuElement = function (level) {\r\n var element = document.createElement(this.menuTag);\r\n element.className = this.getMenuItemClass(level);\r\n // Accessibility\r\n if (level === 0) {\r\n element.setAttribute(\"role\", \"menubar\");\r\n }\r\n else {\r\n element.setAttribute(\"role\", \"menu\");\r\n }\r\n return element;\r\n };\r\n /**\r\n * Generates a class name for the menu element based on its nesting level.\r\n *\r\n * @ignore Exclude from docs\r\n * @param level Current nesting level\r\n * @return Class name(s)\r\n */\r\n ExportMenu.prototype.getMenuItemClass = function (level) {\r\n var className = this.classPrefix + \"-menu \" + this.classPrefix + \"-menu-level-\" + level;\r\n if (level === 0) {\r\n className += \" \" + this.classPrefix + \"-menu-root \" +\r\n this.classPrefix + \"-\" + this.align + \" \" +\r\n this.classPrefix + \"-\" + this.verticalAlign;\r\n }\r\n return this.adapter.apply(\"menuClass\", {\r\n className: className,\r\n level: level\r\n }).className;\r\n };\r\n /**\r\n * Creates menu item. Usually `
  • ` tag. Its label and sub-elements will go\r\n * into this element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param level Current nesting level\r\n * @param type Type of the menu item\r\n * @return HTML element reference\r\n */\r\n ExportMenu.prototype.createItemElement = function (level, type) {\r\n var element = document.createElement(this.itemTag);\r\n var className = this.classPrefix + \"-item \" + this.classPrefix\r\n + \"-item-level-\" + level\r\n + \" \" + this.classPrefix + \"-item-\" + (type || \"blank\");\r\n element.className = this.adapter.apply(\"itemClass\", {\r\n className: className,\r\n level: level,\r\n type: type\r\n }).className;\r\n element.setAttribute(\"role\", \"menuitem\");\r\n element.setAttribute(\"tabindex\", this.tabindex.toString());\r\n return element;\r\n };\r\n /**\r\n * Creates a \"label\" part of the menu item. It could be text or any HTML\r\n * content.\r\n *\r\n * @ignore Exclude from docs\r\n * @param level Current nesting level\r\n * @param type Type of the menu item\r\n * @return An HTML Element\r\n */\r\n ExportMenu.prototype.createLabelElement = function (level, type) {\r\n var element = document.createElement(this.labelTag);\r\n var className = this.classPrefix + \"-label \" + this.classPrefix\r\n + \"-label-level-\" + level\r\n + \" \" + this.classPrefix + \"-item-\" + (type || \"blank\");\r\n if (this.typeClickable(type)) {\r\n className += \" \" + this.classPrefix + \"-clickable\";\r\n }\r\n element.className = this.adapter.apply(\"labelClass\", {\r\n className: className,\r\n level: level,\r\n type: type\r\n }).className;\r\n // Accessible navigation\r\n //element.setAttribute(\"tabindex\", this.tabindex.toString());\r\n //element.setAttribute(\"role\", \"menuitem\");\r\n return element;\r\n };\r\n /**\r\n * Creates a \"icon\" part of the menu item.\r\n *\r\n * @ignore Exclude from docs\r\n * @param level Current nesting level\r\n * @param type Type of the menu item\r\n * @return An HTML Element\r\n */\r\n ExportMenu.prototype.createIconElement = function (level, type) {\r\n var element = document.createElement(this.iconTag);\r\n var className = this.classPrefix + \"-icon \" + this.classPrefix\r\n + \"-icon-level-\" + level\r\n + \" \" + this.classPrefix + \"-item-\" + (type || \"blank\");\r\n if (this.typeClickable(type)) {\r\n className += \" \" + this.classPrefix + \"-clickable\";\r\n }\r\n element.className = this.adapter.apply(\"labelClass\", {\r\n className: className,\r\n level: level,\r\n type: type\r\n }).className;\r\n // Accessible navigation\r\n element.setAttribute(\"tabindex\", this.tabindex.toString());\r\n element.setAttribute(\"role\", \"menuitem\");\r\n return element;\r\n };\r\n /**\r\n * Creates a a custom element out of raw HTML.\r\n *\r\n * @ignore Exclude from docs\r\n * @param level Current nesting level\r\n * @param type Type of the menu item\r\n * @return An HTML Element\r\n */\r\n ExportMenu.prototype.createSvgElement = function (level, type, svg) {\r\n var parser = new DOMParser();\r\n var element = parser.parseFromString(svg, \"image/svg+xml\").documentElement;\r\n var className = this.classPrefix + \"-icon \" + this.classPrefix\r\n + \"-icon-level-\" + level\r\n + \" \" + this.classPrefix + \"-item-\" + (type || \"blank\");\r\n if (this.typeClickable(type)) {\r\n className += \" \" + this.classPrefix + \"-clickable\";\r\n }\r\n element.setAttribute(\"class\", this.adapter.apply(\"labelClass\", {\r\n className: className,\r\n level: level,\r\n type: type\r\n }).className);\r\n // Accessible navigation\r\n element.setAttribute(\"tabindex\", this.tabindex.toString());\r\n element.setAttribute(\"role\", \"menuitem\");\r\n return element;\r\n };\r\n /**\r\n * Destroys the menu and all its elements.\r\n */\r\n ExportMenu.prototype.dispose = function () {\r\n if (!this._disposed) {\r\n _super.prototype.dispose.call(this);\r\n if (this._element && this._element.parentNode) {\r\n this._element.parentNode.removeChild(this._element);\r\n }\r\n }\r\n };\r\n /**\r\n * Checks whether menu item type is supposed to be clickable.\r\n *\r\n * @ignore Exclude from docs\r\n * @param type Menu item type\r\n * @return Is clickable?\r\n */\r\n ExportMenu.prototype.typeClickable = function (type) {\r\n return $type.hasValue(type);\r\n };\r\n /**\r\n * Checks whether menu item has any sub-items.\r\n *\r\n * @ignore Exclude from docs\r\n * @param branch A menu item\r\n * @return Has sub-items?\r\n */\r\n ExportMenu.prototype.hasSubMenu = function (branch) {\r\n return (branch.menu && branch.menu.length) ? true : false;\r\n };\r\n /**\r\n * Returns sub-items (if they exist).\r\n *\r\n * @ignore Exclude from docs\r\n * @param branch A menu item\r\n * @return Submenus\r\n */\r\n ExportMenu.prototype.getSubMenu = function (branch) {\r\n if (branch.menu && branch.menu.length) {\r\n return branch.menu;\r\n }\r\n };\r\n /**\r\n * Generates and returns an applicable label to be used for screen readers.\r\n *\r\n * @ignore Exclude from docs\r\n * @param item A menu item instance\r\n * @param label Current label\r\n * @return Reader text\r\n */\r\n ExportMenu.prototype.getReaderLabel = function (branch, label) {\r\n // Strip any HTML from the label\r\n label = $utils.stripTags(label);\r\n // Add textual note if the branch is clickable\r\n if (branch.ascendants.length == 0) {\r\n label = label == \"...\" ? this.language.translate(\"Export\") : label;\r\n label += \" [\" + this.language.translate(\"Press ENTER or use arrow keys to navigate\") + \"]\";\r\n }\r\n else if (this.hasSubMenu(branch)) {\r\n label += \" [\" + this.language.translate(\"Click, tap or press ENTER to open\") + \"]\";\r\n }\r\n else if (branch.type == \"print\") {\r\n label = this.language.translate(\"Click, tap or press ENTER to print.\");\r\n }\r\n else if (this.typeClickable(branch.type)) {\r\n label = this.language.translate(\"Click, tap or press ENTER to export as %1.\", undefined, label);\r\n }\r\n return this.adapter.apply(\"rederLabel\", {\r\n label: label,\r\n branch: branch\r\n }).label;\r\n };\r\n Object.defineProperty(ExportMenu.prototype, \"container\", {\r\n /**\r\n * @return Container\r\n */\r\n get: function () {\r\n return this._container;\r\n },\r\n /**\r\n * Getters and setters\r\n */\r\n /**\r\n * An HTML container to place the Menu in.\r\n *\r\n * A container must be an HTML element, because menu itself is HTML, and\r\n * cannot be placed into SVG.\r\n *\r\n * @param container Reference to container element\r\n * @todo Check if menu is already build. If it is, just move it to a new container\r\n */\r\n set: function (container) {\r\n this._container = container;\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ExportMenu.prototype, \"items\", {\r\n /**\r\n * @return Menu items\r\n */\r\n get: function () {\r\n return this._items;\r\n },\r\n /**\r\n * A list of menu items. Can be nested.\r\n *\r\n * @param items Menu items\r\n */\r\n set: function (items) {\r\n this._items = items;\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ExportMenu.prototype, \"tag\", {\r\n /**\r\n * Sets main menu tag to place menu in.\r\n *\r\n * This also sets up how menu items are built.\r\n *\r\n * If you set this to \"ul\", menu items will be wrapped into `
  • ` tags.\r\n *\r\n * If set to \"div\", menu items will be wrapped in `
    ` tags.\r\n *\r\n * @default \"ul\"\r\n * @param tag Tag to use for menu\r\n */\r\n set: function (tag) {\r\n this._menuTag = tag;\r\n this._itemTag = tag == \"ul\" ? \"li\" : \"div\";\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ExportMenu.prototype, \"menuTag\", {\r\n /**\r\n * Returns current menu tag.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Menu tag (item that contains sub-items)\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"menuTag\", {\r\n tag: this._menuTag\r\n }).tag;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ExportMenu.prototype, \"itemTag\", {\r\n /**\r\n * Returns tag to wrap items into.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Item tag\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"itemTag\", {\r\n tag: this._itemTag\r\n }).tag;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ExportMenu.prototype, \"labelTag\", {\r\n /**\r\n * Returns menu label tag.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Label tag\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"labelTag\", {\r\n tag: this._labelTag\r\n }).tag;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ExportMenu.prototype, \"iconTag\", {\r\n /**\r\n * Returns icon tag.\r\n *\r\n * @ignore Exclude from docs\r\n * @return Icon tag\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"iconTag\", {\r\n tag: this._iconTag\r\n }).tag;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ExportMenu.prototype, \"align\", {\r\n /**\r\n * @return Horizontal alignment\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"align\", {\r\n align: this._align\r\n }).align;\r\n },\r\n /**\r\n * A horizontal alignment for the menu placement.\r\n *\r\n * @param value Horizontal alignment\r\n */\r\n set: function (value) {\r\n this._align = value;\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ExportMenu.prototype, \"verticalAlign\", {\r\n /**\r\n * @return Vertical alignment\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"verticalAlign\", {\r\n verticalAlign: this._verticalAlign\r\n }).verticalAlign;\r\n },\r\n /**\r\n * A vertical alignment for the menu placement.\r\n *\r\n * @param value Vertical alignment\r\n */\r\n set: function (value) {\r\n this._verticalAlign = value;\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ExportMenu.prototype, \"classPrefix\", {\r\n /**\r\n * @return Class name prefix\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"classPrefix\", {\r\n classPrefix: this._classPrefix\r\n }).classPrefix;\r\n },\r\n /**\r\n * Class name prefix.\r\n *\r\n * @default \"amexport\"\r\n * @param value Class name prefix\r\n */\r\n set: function (value) {\r\n this._classPrefix = value;\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ExportMenu.prototype, \"defaultStyles\", {\r\n /**\r\n * @return Should ExportMenu load its own CSS?\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"defaultStyles\", {\r\n defaultStyles: this._defaultStyles\r\n }).defaultStyles;\r\n },\r\n /**\r\n * Indicates whether [[ExportMenu]] should load external CSS to style itself.\r\n *\r\n * If set to `false`, the menu will not be styled, and will rely on some\r\n * external CSS.\r\n *\r\n * @default true\r\n * @param Should ExportMenu load its own CSS?\r\n */\r\n set: function (value) {\r\n if (this._defaultStyles != value) {\r\n this._defaultStyles = value;\r\n if (value) {\r\n this.loadDefaultCSS();\r\n }\r\n }\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Loads the default CSS.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n ExportMenu.prototype.loadDefaultCSS = function () {\r\n this._disposers.push(exportCSS($dom.getShadowRoot(this.container), this.classPrefix));\r\n if (this._element) {\r\n this._element.style.display = \"\";\r\n }\r\n };\r\n Object.defineProperty(ExportMenu.prototype, \"tabindex\", {\r\n /**\r\n * @return Tab index\r\n */\r\n get: function () {\r\n return this.adapter.apply(\"tabindex\", {\r\n tabindex: this._tabindex\r\n }).tabindex;\r\n },\r\n /**\r\n * A tab index for the menu.\r\n *\r\n * Tab index will influence the order in which elements on the chart and\r\n * the whole page are selected when pressing TAB key.\r\n *\r\n * @param value Tab index\r\n */\r\n set: function (value) {\r\n this._tabindex = value;\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n Object.defineProperty(ExportMenu.prototype, \"language\", {\r\n /**\r\n * @return A [[Language]] instance to be used\r\n */\r\n get: function () {\r\n var _this = this;\r\n var language = this._language.get();\r\n if (language == null) {\r\n language = new Language();\r\n // TODO code duplication with `set language()`\r\n this._language.set(language, language.events.on(\"localechanged\", function (ev) {\r\n _this.invalidate();\r\n }));\r\n }\r\n return language;\r\n },\r\n /**\r\n * A [[Language]] instance.\r\n *\r\n * @param value An instance of [[Language]]\r\n */\r\n set: function (value) {\r\n var _this = this;\r\n this._language.set(value, value.events.on(\"localechanged\", function (ev) {\r\n _this.invalidate();\r\n }));\r\n this.invalidate();\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n /**\r\n * Controlling the menu\r\n */\r\n /**\r\n * Removes all active classes from menu items. Useful on touch devices and\r\n * keyboard navigation where open menu can be closed instantly by clicking or\r\n * tapping outside it.\r\n *\r\n * @ignore Exclude from docs\r\n */\r\n ExportMenu.prototype.close = function () {\r\n var _this = this;\r\n if (this.isDisposed()) {\r\n return;\r\n }\r\n if (this._ignoreNextClose) {\r\n this._ignoreNextClose = false;\r\n return;\r\n }\r\n if (this.closeOnClick) {\r\n this._element.style.pointerEvents = \"none\";\r\n setTimeout(function () {\r\n _this._element.style.pointerEvents = \"auto\";\r\n }, 100);\r\n }\r\n if (this._currentSelection) {\r\n this.setBlur(this._currentSelection);\r\n this._currentSelection = undefined;\r\n }\r\n if (this._element) {\r\n var items = this._element.getElementsByClassName(\"active\");\r\n for (var len = items.length, i = len - 1; i >= 0; i--) {\r\n if (items[i]) {\r\n $dom.removeClass(items[i], \"active\");\r\n }\r\n }\r\n }\r\n this.events.dispatchImmediately(\"closed\", {\r\n type: \"closed\",\r\n target: this\r\n });\r\n };\r\n /**\r\n * Selects a branch in the menu.\r\n *\r\n * Handles closing of currently open branch.\r\n *\r\n * @ignore Exclude from docs\r\n * @param branch Branch to select\r\n */\r\n ExportMenu.prototype.selectBranch = function (branch) {\r\n var _this = this;\r\n if (this.isDisposed()) {\r\n return;\r\n }\r\n // Cancel previous closure\r\n if (branch.closeTimeout) {\r\n this.removeDispose(branch.closeTimeout);\r\n branch.closeTimeout = undefined;\r\n }\r\n // Add active class\r\n $dom.addClass(branch.element, \"active\");\r\n // Set expanded\r\n if (branch.submenuElement) {\r\n branch.submenuElement.setAttribute(\"aria-expanded\", \"true\");\r\n }\r\n // Remove current selection\r\n if (this._currentSelection && this._currentSelection !== branch && this._currentSelection.ascendants) {\r\n $iter.each($iter.concat($iter.fromArray([this._currentSelection]), this._currentSelection.ascendants.iterator()), function (ascendant) {\r\n if (!branch.ascendants.contains(ascendant) && branch !== ascendant) {\r\n _this.unselectBranch(ascendant, true);\r\n }\r\n });\r\n }\r\n // Select and/or cancel timeout for current ascendants\r\n $iter.each(branch.ascendants.iterator(), function (ascendant) {\r\n if (ascendant.closeTimeout) {\r\n _this.removeDispose(ascendant.closeTimeout);\r\n ascendant.closeTimeout = undefined;\r\n }\r\n $dom.addClass(ascendant.element, \"active\");\r\n });\r\n // Log current selection\r\n this._currentSelection = branch;\r\n // Invoke event\r\n if (this.events.isEnabled(\"branchselected\")) {\r\n var event_5 = {\r\n type: \"branchselected\",\r\n target: this,\r\n branch: branch\r\n };\r\n this.events.dispatchImmediately(\"branchselected\", event_5);\r\n }\r\n };\r\n /**\r\n * Unselects a branch. Also selects a branch one level up if necessary.\r\n *\r\n * @ignore Exclude from docs\r\n * @param branch Branch to unselect\r\n * @param simple If `true`, only the branch will be unselected without selecting parent branch\r\n */\r\n ExportMenu.prototype.unselectBranch = function (branch, simple) {\r\n if (this.isDisposed()) {\r\n return;\r\n }\r\n // Remove active class\r\n $dom.removeClass(branch.element, \"active\");\r\n // Set expanded\r\n if (branch.submenuElement) {\r\n branch.submenuElement.removeAttribute(\"aria-expanded\");\r\n }\r\n // Remove current selection\r\n if (this._currentSelection == branch) {\r\n this._currentSelection = undefined;\r\n }\r\n // Invoke event\r\n if (this.events.isEnabled(\"branchunselected\")) {\r\n var event_6 = {\r\n type: \"branchunselected\",\r\n target: this,\r\n branch: branch\r\n };\r\n this.events.dispatchImmediately(\"branchunselected\", event_6);\r\n }\r\n };\r\n /**\r\n * Delay unselection of a branch. This can still be cancelled in some other\r\n * place if the branch or its children regain focus.\r\n *\r\n * @ignore Exclude from docs\r\n * @param branch Branch to unselect\r\n * @param simple If `true`, only the branch will be unselected without selecting parent branch\r\n */\r\n ExportMenu.prototype.delayUnselectBranch = function (branch, simple) {\r\n var _this = this;\r\n if (this.isDisposed()) {\r\n return;\r\n }\r\n // Schedule branch unselection\r\n if (branch.closeTimeout) {\r\n this.removeDispose(branch.closeTimeout);\r\n branch.closeTimeout = undefined;\r\n }\r\n branch.closeTimeout = this.setTimeout(function () {\r\n _this.unselectBranch(branch, simple);\r\n }, this.closeDelay);\r\n // Schedule unselection of all ascendants\r\n // In case focus went away from the export menu altogether, this will ensure\r\n // that all items will be closed.\r\n // In case we're jumping to other menu item, those delayed unselections will\r\n // be cancelled by `selectBranch`\r\n if (simple !== true && branch.ascendants) {\r\n $iter.each(branch.ascendants.iterator(), function (ascendant) {\r\n _this.delayUnselectBranch(ascendant, true);\r\n });\r\n }\r\n };\r\n /**\r\n * Navigates the menu based on which direction kayboard key was pressed.\r\n *\r\n * @ignore Exclude from docs\r\n * @param key A key that was pressed\r\n */\r\n ExportMenu.prototype.moveSelection = function (key) {\r\n if (this.isDisposed()) {\r\n return;\r\n }\r\n // Check if there's a current selection\r\n if (!this._currentSelection) {\r\n return;\r\n }\r\n var newSelection;\r\n if (key == \"up\") {\r\n // Try moving up in current menu list, or to the last item if already\r\n // at the top\r\n newSelection = this.getPrevSibling(this._currentSelection);\r\n }\r\n else if (key == \"down\") {\r\n // Try moving down in current menu list, or to the top item if already\r\n // at the bottom\r\n newSelection = this.getNextSibling(this._currentSelection);\r\n }\r\n else if ((key == \"left\" && this.align == \"right\") || (key == \"right\" && this.align == \"left\")) {\r\n var menu = this.getSubMenu(this._currentSelection);\r\n // Go one level-deeper\r\n if (menu != null) {\r\n newSelection = menu[0];\r\n }\r\n }\r\n else if ((key == \"right\" && this.align == \"right\") || (key == \"left\" && this.align == \"left\")) {\r\n // Go one level-deeper\r\n newSelection = this.getParentItem(this._currentSelection);\r\n }\r\n if (newSelection && newSelection !== this._currentSelection) {\r\n this.selectBranch(newSelection);\r\n this.setFocus(newSelection);\r\n this._currentSelection = newSelection;\r\n }\r\n };\r\n /**\r\n * Returns all siblings of a menu item, including this same menu item.\r\n *\r\n * @ignore Exclude from docs\r\n * @param branch Menu item\r\n * @return List of sibling menu items\r\n */\r\n ExportMenu.prototype.getSiblings = function (branch) {\r\n var parent = this.getParentItem(branch);\r\n if (parent && parent.menu) {\r\n return parent.menu;\r\n }\r\n else {\r\n return [];\r\n }\r\n };\r\n /**\r\n * Returns menu items parent item.\r\n *\r\n * @ignore Exclude from docs\r\n * @param branch Menu item\r\n * @return Parent menu item\r\n */\r\n ExportMenu.prototype.getParentItem = function (branch) {\r\n if (branch.ascendants && branch.ascendants.length) {\r\n return branch.ascendants.getIndex(branch.ascendants.length - 1);\r\n }\r\n else {\r\n return undefined;\r\n }\r\n };\r\n /**\r\n * Returns next sibling in the same menu branch. If there is no next sibling,\r\n * the first one is returned. If there is just one item, that item is\r\n * returned. Unsupported menu items are skipped.\r\n *\r\n * @ignore Exclude from docs\r\n * @param branch Menu item to search siblings for\r\n * @return Menu item\r\n */\r\n ExportMenu.prototype.getNextSibling = function (branch) {\r\n var siblings = this.getSiblings(branch);\r\n if (siblings.length > 1) {\r\n var next = siblings.indexOf(branch) + 1;\r\n next = siblings.length == next ? 0 : next;\r\n return siblings[next].unsupported ? this.getNextSibling(siblings[next]) : siblings[next];\r\n }\r\n else {\r\n return branch;\r\n }\r\n };\r\n /**\r\n * Returns previous sibling in the same menu branch. If there is no next\r\n * sibling, the first one is returned. If there is just one item, that item is\r\n * returned. Unsupported menu items are skipped.\r\n *\r\n * @ignore Exclude from docs\r\n * @param branch Menu item to search siblings for\r\n * @return Menu item\r\n */\r\n ExportMenu.prototype.getPrevSibling = function (branch) {\r\n var siblings = this.getSiblings(branch);\r\n if (siblings.length > 1) {\r\n var prev = siblings.indexOf(branch) - 1;\r\n prev = prev == -1 ? siblings.length - 1 : prev;\r\n return siblings[prev].unsupported ? this.getPrevSibling(siblings[prev]) : siblings[prev];\r\n }\r\n else {\r\n return branch;\r\n }\r\n };\r\n /**\r\n * Attempts to set focus on particular menu element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param branch Menu item\r\n */\r\n ExportMenu.prototype.setFocus = function (branch) {\r\n if (branch.interactions) {\r\n try {\r\n branch.interactions.element.focus();\r\n }\r\n catch (e) {\r\n // nothing\r\n }\r\n }\r\n };\r\n /**\r\n * Attempts to remove focus from the menu element.\r\n *\r\n * @ignore Exclude from docs\r\n * @param branch Menu item\r\n */\r\n ExportMenu.prototype.setBlur = function (branch) {\r\n if (branch.interactions) {\r\n try {\r\n branch.interactions.element.blur();\r\n }\r\n catch (e) {\r\n // nothing\r\n }\r\n }\r\n };\r\n /**\r\n * Hides the whole branch of menu.\r\n *\r\n * @param branch branch\r\n */\r\n ExportMenu.prototype.hideBranch = function (branch) {\r\n branch.element.style.display = \"none\";\r\n };\r\n /**\r\n * Show the branch of menu.\r\n *\r\n * @param branch branch\r\n */\r\n ExportMenu.prototype.showBranch = function (branch) {\r\n branch.element.style.display = \"\";\r\n };\r\n Object.defineProperty(ExportMenu.prototype, \"element\", {\r\n /**\r\n * The main element o fthe menu - usually `
      `.\r\n *\r\n * @since 4.10.6\r\n * @return Menu element\r\n */\r\n get: function () {\r\n return this._element;\r\n },\r\n enumerable: true,\r\n configurable: true\r\n });\r\n return ExportMenu;\r\n}(Validatable));\r\nexport { ExportMenu };\r\n//# sourceMappingURL=ExportMenu.js.map"],"names":["pdfmakePromise","_pdfmake","this","a","pdfmake","vfs_fonts","global","_a","label","Promise","all","sent","window","pdfMake","vfs","default","fontFamilySrcRegexp","supportsBlobUri","navigator","msSaveOrOpenBlob","blobToDataUri","blob","resolve","reject","f","FileReader","onload","e","result","onerror","readAsDataURL","getCssRules","s","sheet","trys","push","cssRules","success","error","addEventListener","setTimeout","Error","loadStylesheet","doc","url","response","e_2","rules","console","createElement","textContent","setAttribute","head","appendChild","eachStylesheet","removeChild","topUrl","promises","length","i","rule","type","CSSRule","IMPORT_RULE","href","eachStylesheets","iframe","doc_1","document","src","contentDocument","styleSheets","location","Export","_super","container","_this","call","adapter","_formatOptions","_extraSprites","_validateSprites","dataFieldsOrder","_dynamicDataFields","_removedObjects","_hiddenObjects","_objectsAlreadyHidden","_filePrefix","useWebFonts","useRetina","useSimplifiedExport","timeoutDelay","_exportRunning","_prevHasData","_container","className","setKey","quality","fontSize","imageFormat","align","addURL","addColumnNames","indent","useLocale","emptyAs","addBOM","delay","printMethod","add","arg","formatOptions","getKey","options","applyTheme","dispatchImmediately","Object","defineProperty","prototype","get","_menu","set","menu","removeDispose","language","_language","branch","unsupported","typeSupported","events","on","ev","export","close","_disablePointers","_releasePointers","obj","classPrefix","_disposers","enumerable","configurable","supported","getFormatOptions","disabled","_hasData","print","indexOf","apply","data","_getFunction","getImage","getSVG","getPDF","getExcel","getCSV","getJSON","getHTML","getPrint","event_1","func","event_2","event_3","handleCustom","isEnabled","showPreloader","hideTimeout","_timeoutTimeout","event_4","showTimeout","hideNonExportableSprites","restoreNonExportableSprites","hidePreloader","title","download","filePrefix","callback","callbackTarget","getFontFamilies","DOMURL","blobs","getDOMURL","FONT_FACE_RULE","cssText_1","cssText","exec","urls","split","map","after","fullUrl","url_1","e_3","webFontFilter","match","undefined","responseType","createObjectURL","then","filter","x","replace","join","includeExtras","prehidden","canvas","newCanvas","uri","e_4","awaitValidSprites","simplifiedImageExport","getCanvas","addExtras","disposeCanvas","toDataURL","getContentType","message","stack","getImageAdvanced","advanced","middleLeft_1","middleTop_1","middleWidth_1","middleHeight_1","extraRight_1","extraBottom_1","extras","ctx_1","background","left_1","top_1","right_1","bottom_1","extraSprites","width","height","extraSprite","extra","extraCanvas","extraWidth","extraHeight","sprite","position","marginTop","marginRight","marginBottom","marginLeft","exporting","getCanvasAdvanced","crop","left","top","getDisposableCanvas","getContext","backgroundColor","findBackgroundColor","dom","fillStyle","toString","fillRect","drawImage","font","scale","pixelRatio","ctx","svg","img","pixelWidth","pixelHeight","getPixelRatio","getAdjustedScale","style","fonts","imagesToDataURI","prepForeignObjects","normalizeSVG","serializeElement","paper","defs","Blob","loadNewImage","revokeObjectURL","restoreRemovedObjects","canvg","config","useCORS","ignoreDimensions","scaleWidth","scaleHeight","fromString","render","body","contains","widthScale","heightScale","adjWidth","adjHeight","maxWidth","maxHeight","minWidth","minHeight","el","images","count","image","querySelectorAll","getAttributeNS","XLINK","svgToDataURI","imageToDataURI","objects","temporarilyRemoveObject","keepTainted","charset","btoa","setAttributeNS","placeholder","parent","parentElement","parentNode","node","insertBefore","pop","parent_1","element","cache","crossOrigin","currentHref","removeAttribute","Image","onabort","self","URL","webkitURL","encodeURI","encodeURIComponent","dimParams","Math","round","styleParams","fos","ms","rgba","reg","RegExp","XMLSerializer","serializeToString","addFont","paths","normal","path","bytes","bold","italics","bolditalics","name","defaultMargins","extraMargin","_b","_c","_d","pageSize","pageOrientation","pageMargins","defaultStyle","content","text","margin","translate","alignment","fit","getPageSizeFit","addData","getPDFData","table","extraFonts","createPdf","getDataUrl","dataFields","dataFieldsOrder_1","len","format","pivot","key","val","dataRow","dataValue","convertToSpecialFormat","getPDFDataRow","b","ai","bi","headerRows","row","asIs","items","value","convertEmptyValue","item","margins","newMargins","sizes","A0","A1","A2","A3","A4","A5","A6","A7","A8","A9","A10","B0","B1","B2","B3","B4","B5","B6","B7","B8","B9","B10","C0","C1","C2","C3","C4","C5","C6","C7","C8","C9","C10","RA0","RA1","RA2","RA3","RA4","SRA0","SRA1","SRA2","SRA3","SRA4","EXECUTIVE","FOLIO","LEGAL","LETTER","TABLOID","fitSize","XLSX","wbOptions","sheetName","wb","dataFieldsOrder_2","xlsx","bookType","bookSST","normalizeExcelSheetName","SheetNames","Sheets","getExcelRow","utils","aoa_to_sheet","workbook","write","csv","br","dataFieldsOrder_3","getCSVRow","reverse","separator","forceQuotes","search","html","dataFieldsOrder_4","tableClass","getHTMLRow","headerRow","rowClass","tag","first","charCodeAt","useTag","cellClass","sourceData","_loop_1","json","newValue_1","field","JSON","stringify","keepOriginal","isDateField","Date","isDurationField","durationFormatter","durationFormat","isNumberField","numberFormat","numberFormatter","useTimestamps","getTime","toLocaleString","dateFormatter","dateFormat","parse","fileName","blob_1","link_1","decoded","blob_2","url_2","chars","charCode","url_3","link","parts","contentType","idoc","msBlobDownloadSupport","shift","decodeURIComponent","msSaveBlob","atob","Array","Uint8Array","blobDownloadSupport","click","concat","linkDownloadSupport","legacyIE","showModal","display","open","execCommand","downloadSupport","res","div","innerHTML","getElementsByTagName","printViaCSS","printViaIframe","scroll","originalTitle","isIOS","documentElement","scrollTop","visibility","opacity","clipPath","test","userAgent","MSStream","dispose","contentWindow","load","currentColor","parent_2","_sprite","validateSprites","_data","_dataFields","generateDataFields","handleDataUpdated","hasData","invalidate","_dateFormatter","_dateFormat","_dateFields","dateFields","_numberFormatter","_numberFormat","_numberFields","numberFields","_durationFormatter","_durationFormat","_durationFields","durationFields","_backgroundColor","_title","preloader","progress","hideModal","_modal","modal","svgContainer","SVGContainer","readerTitle","_canvg","_xlsx","setFormatOptions","_spriteInteractionsEnabled","interactionsEnabled","nonExportableSprites","isHidden","isHiding","visible","hide","show","index","invalid","once","processConfig","Dictionary","prefix","newPrefix","colorSet","InterfaceColorSet","counter","insertKeyIfEmpty","disposer","getFor","hex","alternative","removeKey","increment","ExportMenu","Adapter","closeDelay","closeOnClick","_menuTag","_itemTag","_labelTag","_iconTag","_classPrefix","_defaultStyles","_align","_verticalAlign","_tabindex","_ignoreNextClose","_items","validate","draw","_element","getMenuItemClass","createMenuElement","defaultStyles","drawBranch","menuElement","pointer","touch","event","_currentSelection","preventDefault","moveSelection","loadDefaultCSS","level","ascendants","List","createItemElement","icon","createIconElement","createSvgElement","createLabelElement","readerLabel","getReaderLabel","interactions","getInteraction","typeClickable","isDisposed","submenu_1","getSubMenu","selectBranch","setFocus","delayUnselectBranch","local_level","submenu","submenuElement","copyFrom","hidden","hideBranch","id","color","menuTag","verticalAlign","itemTag","tabindex","labelTag","iconTag","parser","DOMParser","parseFromString","_disposed","hasSubMenu","Language","pointerEvents","setBlur","getElementsByClassName","target","closeTimeout","iterator","ascendant","unselectBranch","event_5","simple","event_6","newSelection","getPrevSibling","getNextSibling","getParentItem","getSiblings","getIndex","siblings","next","prev","focus","blur","showBranch","Validatable"],"sourceRoot":""}