@carbon/charts 1.3.1 → 1.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +33 -0
- package/build/demo/data/bar.d.ts +18 -0
- package/build/src/interfaces/charts.d.ts +5 -1
- package/build/src/interfaces/enums.d.ts +1 -1
- package/build/src/services/time-series.d.ts +415 -0
- package/bundle.js +1 -1
- package/components/essentials/tooltip.js +7 -0
- package/components/essentials/tooltip.js.map +1 -1
- package/configuration.js +2 -1
- package/configuration.js.map +1 -1
- package/demo/data/bar.d.ts +18 -0
- package/demo/data/bar.js +35 -0
- package/demo/data/bar.js.map +1 -1
- package/demo/data/bundle.js +1 -1
- package/demo/data/index.js +5 -0
- package/demo/data/index.js.map +1 -1
- package/demo/styles.css +1 -1675
- package/demo/styles.css.map +1 -1
- package/demo/styles.min.css +1 -1
- package/demo/styles.min.css.map +1 -1
- package/demo/tsconfig.tsbuildinfo +4 -4
- package/demo/utils.js +14 -5
- package/demo/utils.js.map +1 -1
- package/interfaces/charts.d.ts +5 -1
- package/interfaces/charts.js.map +1 -1
- package/interfaces/enums.d.ts +1 -1
- package/interfaces/enums.js +1 -1
- package/interfaces/enums.js.map +1 -1
- package/model/model.js +8 -1
- package/model/model.js.map +1 -1
- package/package.json +1 -2
- package/services/essentials/dom-to-image.d.ts +120 -0
- package/services/essentials/dom-to-image.js +720 -0
- package/services/essentials/dom-to-image.js.map +1 -0
- package/services/essentials/dom-utils.js +6 -4
- package/services/essentials/dom-utils.js.map +1 -1
- package/services/time-series.d.ts +1 -0
- package/services/time-series.js +13 -0
- package/services/time-series.js.map +1 -1
- package/tsconfig.tsbuildinfo +90 -75
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dom-to-image.js","sourceRoot":"","sources":["dom-to-image.js"],"names":[],"mappings":"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","sourcesContent":["/**\nThe MIT License (MIT)\n\nCopyright 2015 Anatolii Saienko\nhttps://github.com/tsayen\n\nCopyright 2012 Paul Bakaus\nhttp://paulbakaus.com/\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this software and associated documentation files (the\n\"Software\"), to deal in the Software without restriction, including\nwithout limitation the rights to use, copy, modify, merge, publish,\ndistribute, sublicense, and/or sell copies of the Software, and to\npermit persons to whom the Software is furnished to do so, subject to\nthe following conditions:\n\nThe above copyright notice and this permission notice shall be\nincluded in all copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\nEXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\nMERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\nNONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\nLIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\nOF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\nWITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n*/\n\n(function (global) {\n\t'use strict';\n\n\tvar util = newUtil();\n\tvar inliner = newInliner();\n\tvar fontFaces = newFontFaces();\n\tvar images = newImages();\n\n\t// Default impl options\n\tvar defaultOptions = {\n\t\t// Default is to fail on error, no placeholder\n\t\timagePlaceholder: undefined,\n\t\t// Default cache bust is false, it will use the cache\n\t\tcacheBust: false,\n\t};\n\n\tvar domtoimage = {\n\t\ttoSvg: toSvg,\n\t\ttoPng: toPng,\n\t\ttoJpeg: toJpeg,\n\t\ttoBlob: toBlob,\n\t\ttoPixelData: toPixelData,\n\t\timpl: {\n\t\t\tfontFaces: fontFaces,\n\t\t\timages: images,\n\t\t\tutil: util,\n\t\t\tinliner: inliner,\n\t\t\toptions: {},\n\t\t},\n\t};\n\n\tif (typeof module !== 'undefined') module.exports = domtoimage;\n\telse global.domtoimage = domtoimage;\n\n\t/**\n\t * @param {Node} node - The DOM Node object to render\n\t * @param {Object} options - Rendering options\n\t * @param {Function} options.filter - Should return true if passed node should be included in the output\n\t * (excluding node means excluding it's children as well). Not called on the root node.\n\t * @param {String} options.bgcolor - color for the background, any valid CSS color value.\n\t * @param {Number} options.width - width to be applied to node before rendering.\n\t * @param {Number} options.height - height to be applied to node before rendering.\n\t * @param {Object} options.style - an object whose properties to be copied to node's style before rendering.\n\t * @param {Number} options.quality - a Number between 0 and 1 indicating image quality (applicable to JPEG only),\n\t\t\t\tdefaults to 1.0.\n\t * @param {String} options.imagePlaceholder - dataURL to use as a placeholder for failed images, default behaviour is to fail fast on images we can't fetch\n\t * @param {Boolean} options.cacheBust - set to true to cache bust by appending the time to the request url\n\t * @return {Promise} - A promise that is fulfilled with a SVG image data URL\n\t * */\n\tfunction toSvg(node, options) {\n\t\toptions = options || {};\n\t\tcopyOptions(options);\n\t\treturn Promise.resolve(node)\n\t\t\t.then(function (node) {\n\t\t\t\treturn cloneNode(node, options.filter, true);\n\t\t\t})\n\t\t\t.then(embedFonts)\n\t\t\t.then(inlineImages)\n\t\t\t.then(applyOptions)\n\t\t\t.then(function (clone) {\n\t\t\t\treturn makeSvgDataUri(\n\t\t\t\t\tclone,\n\t\t\t\t\toptions.width || util.width(node),\n\t\t\t\t\toptions.height || util.height(node)\n\t\t\t\t);\n\t\t\t});\n\n\t\tfunction applyOptions(clone) {\n\t\t\tif (options.bgcolor) clone.style.backgroundColor = options.bgcolor;\n\n\t\t\tif (options.width) clone.style.width = options.width + 'px';\n\t\t\tif (options.height) clone.style.height = options.height + 'px';\n\n\t\t\tif (options.style)\n\t\t\t\tObject.keys(options.style).forEach(function (property) {\n\t\t\t\t\tclone.style[property] = options.style[property];\n\t\t\t\t});\n\n\t\t\treturn clone;\n\t\t}\n\t}\n\n\t/**\n\t * @param {Node} node - The DOM Node object to render\n\t * @param {Object} options - Rendering options, @see {@link toSvg}\n\t * @return {Promise} - A promise that is fulfilled with a Uint8Array containing RGBA pixel data.\n\t * */\n\tfunction toPixelData(node, options) {\n\t\treturn draw(node, options || {}).then(function (canvas) {\n\t\t\treturn canvas\n\t\t\t\t.getContext('2d')\n\t\t\t\t.getImageData(0, 0, util.width(node), util.height(node)).data;\n\t\t});\n\t}\n\n\t/**\n\t * @param {Node} node - The DOM Node object to render\n\t * @param {Object} options - Rendering options, @see {@link toSvg}\n\t * @return {Promise} - A promise that is fulfilled with a PNG image data URL\n\t * */\n\tfunction toPng(node, options) {\n\t\treturn draw(node, options || {}).then(function (canvas) {\n\t\t\treturn canvas.toDataURL();\n\t\t});\n\t}\n\n\t/**\n\t * @param {Node} node - The DOM Node object to render\n\t * @param {Object} options - Rendering options, @see {@link toSvg}\n\t * @return {Promise} - A promise that is fulfilled with a JPEG image data URL\n\t * */\n\tfunction toJpeg(node, options) {\n\t\toptions = options || {};\n\t\treturn draw(node, options).then(function (canvas) {\n\t\t\treturn canvas.toDataURL('image/jpeg', options.quality || 1.0);\n\t\t});\n\t}\n\n\t/**\n\t * @param {Node} node - The DOM Node object to render\n\t * @param {Object} options - Rendering options, @see {@link toSvg}\n\t * @return {Promise} - A promise that is fulfilled with a PNG image blob\n\t * */\n\tfunction toBlob(node, options) {\n\t\treturn draw(node, options || {}).then(util.canvasToBlob);\n\t}\n\n\tfunction copyOptions(options) {\n\t\t// Copy options to impl options for use in impl\n\t\tif (typeof options.imagePlaceholder === 'undefined') {\n\t\t\tdomtoimage.impl.options.imagePlaceholder =\n\t\t\t\tdefaultOptions.imagePlaceholder;\n\t\t} else {\n\t\t\tdomtoimage.impl.options.imagePlaceholder = options.imagePlaceholder;\n\t\t}\n\n\t\tif (typeof options.cacheBust === 'undefined') {\n\t\t\tdomtoimage.impl.options.cacheBust = defaultOptions.cacheBust;\n\t\t} else {\n\t\t\tdomtoimage.impl.options.cacheBust = options.cacheBust;\n\t\t}\n\t}\n\n\tfunction draw(domNode, options) {\n\t\treturn toSvg(domNode, options)\n\t\t\t.then(util.makeImage)\n\t\t\t.then(util.delay(100))\n\t\t\t.then(function (image) {\n\t\t\t\tvar canvas = newCanvas(domNode);\n\t\t\t\tcanvas.getContext('2d').drawImage(image, 0, 0);\n\t\t\t\treturn canvas;\n\t\t\t});\n\n\t\tfunction newCanvas(domNode) {\n\t\t\tvar canvas = document.createElement('canvas');\n\t\t\tcanvas.width = options.width || util.width(domNode);\n\t\t\tcanvas.height = options.height || util.height(domNode);\n\n\t\t\tif (options.bgcolor) {\n\t\t\t\tvar ctx = canvas.getContext('2d');\n\t\t\t\tctx.fillStyle = options.bgcolor;\n\t\t\t\tctx.fillRect(0, 0, canvas.width, canvas.height);\n\t\t\t}\n\n\t\t\treturn canvas;\n\t\t}\n\t}\n\n\tfunction cloneNode(node, filter, root) {\n\t\tif (!root && filter && !filter(node)) return Promise.resolve();\n\n\t\treturn Promise.resolve(node)\n\t\t\t.then(makeNodeCopy)\n\t\t\t.then(function (clone) {\n\t\t\t\treturn cloneChildren(node, clone, filter);\n\t\t\t})\n\t\t\t.then(function (clone) {\n\t\t\t\treturn processClone(node, clone);\n\t\t\t});\n\n\t\tfunction makeNodeCopy(node) {\n\t\t\tif (node instanceof HTMLCanvasElement)\n\t\t\t\treturn util.makeImage(node.toDataURL());\n\t\t\treturn node.cloneNode(false);\n\t\t}\n\n\t\tfunction cloneChildren(original, clone, filter) {\n\t\t\tvar children = original.childNodes;\n\t\t\tif (children.length === 0) return Promise.resolve(clone);\n\n\t\t\treturn cloneChildrenInOrder(\n\t\t\t\tclone,\n\t\t\t\tutil.asArray(children),\n\t\t\t\tfilter\n\t\t\t).then(function () {\n\t\t\t\treturn clone;\n\t\t\t});\n\n\t\t\tfunction cloneChildrenInOrder(parent, children, filter) {\n\t\t\t\tvar done = Promise.resolve();\n\t\t\t\tchildren.forEach(function (child) {\n\t\t\t\t\tdone = done\n\t\t\t\t\t\t.then(function () {\n\t\t\t\t\t\t\treturn cloneNode(child, filter);\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.then(function (childClone) {\n\t\t\t\t\t\t\tif (childClone) parent.appendChild(childClone);\n\t\t\t\t\t\t});\n\t\t\t\t});\n\t\t\t\treturn done;\n\t\t\t}\n\t\t}\n\n\t\tfunction processClone(original, clone) {\n\t\t\tif (!(clone instanceof Element)) return clone;\n\n\t\t\treturn Promise.resolve()\n\t\t\t\t.then(cloneStyle)\n\t\t\t\t.then(clonePseudoElements)\n\t\t\t\t.then(copyUserInput)\n\t\t\t\t.then(fixSvg)\n\t\t\t\t.then(function () {\n\t\t\t\t\treturn clone;\n\t\t\t\t});\n\n\t\t\tfunction cloneStyle() {\n\t\t\t\tcopyStyle(window.getComputedStyle(original), clone.style);\n\n\t\t\t\tfunction copyStyle(source, target) {\n\t\t\t\t\tif (source.cssText) target.cssText = source.cssText;\n\t\t\t\t\telse copyProperties(source, target);\n\n\t\t\t\t\tfunction copyProperties(source, target) {\n\t\t\t\t\t\tutil.asArray(source).forEach(function (name) {\n\t\t\t\t\t\t\ttarget.setProperty(\n\t\t\t\t\t\t\t\tname,\n\t\t\t\t\t\t\t\tsource.getPropertyValue(name),\n\t\t\t\t\t\t\t\tsource.getPropertyPriority(name)\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction clonePseudoElements() {\n\t\t\t\t[':before', ':after'].forEach(function (element) {\n\t\t\t\t\tclonePseudoElement(element);\n\t\t\t\t});\n\n\t\t\t\tfunction clonePseudoElement(element) {\n\t\t\t\t\tvar style = window.getComputedStyle(original, element);\n\t\t\t\t\tvar content = style.getPropertyValue('content');\n\n\t\t\t\t\tif (content === '' || content === 'none') return;\n\n\t\t\t\t\tvar className = util.uid();\n\t\t\t\t\tclone.className = clone.className + ' ' + className;\n\t\t\t\t\tvar styleElement = document.createElement('style');\n\t\t\t\t\tstyleElement.appendChild(\n\t\t\t\t\t\tformatPseudoElementStyle(className, element, style)\n\t\t\t\t\t);\n\t\t\t\t\tclone.appendChild(styleElement);\n\n\t\t\t\t\tfunction formatPseudoElementStyle(\n\t\t\t\t\t\tclassName,\n\t\t\t\t\t\telement,\n\t\t\t\t\t\tstyle\n\t\t\t\t\t) {\n\t\t\t\t\t\tvar selector = '.' + className + ':' + element;\n\t\t\t\t\t\tvar cssText = style.cssText\n\t\t\t\t\t\t\t? formatCssText(style)\n\t\t\t\t\t\t\t: formatCssProperties(style);\n\t\t\t\t\t\treturn document.createTextNode(\n\t\t\t\t\t\t\tselector + '{' + cssText + '}'\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tfunction formatCssText(style) {\n\t\t\t\t\t\t\tvar content = style.getPropertyValue('content');\n\t\t\t\t\t\t\treturn style.cssText + ' content: ' + content + ';';\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction formatCssProperties(style) {\n\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\tutil\n\t\t\t\t\t\t\t\t\t.asArray(style)\n\t\t\t\t\t\t\t\t\t.map(formatProperty)\n\t\t\t\t\t\t\t\t\t.join('; ') + ';'\n\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\tfunction formatProperty(name) {\n\t\t\t\t\t\t\t\treturn (\n\t\t\t\t\t\t\t\t\tname +\n\t\t\t\t\t\t\t\t\t': ' +\n\t\t\t\t\t\t\t\t\tstyle.getPropertyValue(name) +\n\t\t\t\t\t\t\t\t\t(style.getPropertyPriority(name)\n\t\t\t\t\t\t\t\t\t\t? ' !important'\n\t\t\t\t\t\t\t\t\t\t: '')\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfunction copyUserInput() {\n\t\t\t\tif (original instanceof HTMLTextAreaElement)\n\t\t\t\t\tclone.innerHTML = original.value;\n\t\t\t\tif (original instanceof HTMLInputElement)\n\t\t\t\t\tclone.setAttribute('value', original.value);\n\t\t\t}\n\n\t\t\tfunction fixSvg() {\n\t\t\t\tif (!(clone instanceof SVGElement)) return;\n\t\t\t\tclone.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n\n\t\t\t\tif (!(clone instanceof SVGRectElement)) return;\n\t\t\t\t['width', 'height'].forEach(function (attribute) {\n\t\t\t\t\tvar value = clone.getAttribute(attribute);\n\t\t\t\t\tif (!value) return;\n\n\t\t\t\t\tclone.style.setProperty(attribute, value);\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction embedFonts(node) {\n\t\treturn fontFaces.resolveAll().then(function (cssText) {\n\t\t\tvar styleNode = document.createElement('style');\n\t\t\tnode.appendChild(styleNode);\n\t\t\tstyleNode.appendChild(document.createTextNode(cssText));\n\t\t\treturn node;\n\t\t});\n\t}\n\n\tfunction inlineImages(node) {\n\t\treturn images.inlineAll(node).then(function () {\n\t\t\treturn node;\n\t\t});\n\t}\n\n\tfunction makeSvgDataUri(node, width, height) {\n\t\treturn Promise.resolve(node)\n\t\t\t.then(function (node) {\n\t\t\t\tnode.setAttribute('xmlns', 'http://www.w3.org/1999/xhtml');\n\t\t\t\treturn new XMLSerializer().serializeToString(node);\n\t\t\t})\n\t\t\t.then(util.escapeXhtml)\n\t\t\t.then(function (xhtml) {\n\t\t\t\treturn (\n\t\t\t\t\t'<foreignObject x=\"0\" y=\"0\" width=\"100%\" height=\"100%\">' +\n\t\t\t\t\txhtml +\n\t\t\t\t\t'</foreignObject>'\n\t\t\t\t);\n\t\t\t})\n\t\t\t.then(function (foreignObject) {\n\t\t\t\treturn (\n\t\t\t\t\t'<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"' +\n\t\t\t\t\twidth +\n\t\t\t\t\t'\" height=\"' +\n\t\t\t\t\theight +\n\t\t\t\t\t'\">' +\n\t\t\t\t\tforeignObject +\n\t\t\t\t\t'</svg>'\n\t\t\t\t);\n\t\t\t})\n\t\t\t.then(function (svg) {\n\t\t\t\treturn 'data:image/svg+xml;charset=utf-8,' + svg;\n\t\t\t});\n\t}\n\n\tfunction newUtil() {\n\t\treturn {\n\t\t\tescape: escape,\n\t\t\tparseExtension: parseExtension,\n\t\t\tmimeType: mimeType,\n\t\t\tdataAsUrl: dataAsUrl,\n\t\t\tisDataUrl: isDataUrl,\n\t\t\tcanvasToBlob: canvasToBlob,\n\t\t\tresolveUrl: resolveUrl,\n\t\t\tgetAndEncode: getAndEncode,\n\t\t\tuid: uid(),\n\t\t\tdelay: delay,\n\t\t\tasArray: asArray,\n\t\t\tescapeXhtml: escapeXhtml,\n\t\t\tmakeImage: makeImage,\n\t\t\twidth: width,\n\t\t\theight: height,\n\t\t};\n\n\t\tfunction mimes() {\n\t\t\t/*\n\t\t\t * Only WOFF and EOT mime types for fonts are 'real'\n\t\t\t * see http://www.iana.org/assignments/media-types/media-types.xhtml\n\t\t\t */\n\t\t\tvar WOFF = 'application/font-woff';\n\t\t\tvar JPEG = 'image/jpeg';\n\n\t\t\treturn {\n\t\t\t\twoff: WOFF,\n\t\t\t\twoff2: WOFF,\n\t\t\t\tttf: 'application/font-truetype',\n\t\t\t\teot: 'application/vnd.ms-fontobject',\n\t\t\t\tpng: 'image/png',\n\t\t\t\tjpg: JPEG,\n\t\t\t\tjpeg: JPEG,\n\t\t\t\tgif: 'image/gif',\n\t\t\t\ttiff: 'image/tiff',\n\t\t\t\tsvg: 'image/svg+xml',\n\t\t\t};\n\t\t}\n\n\t\tfunction parseExtension(url) {\n\t\t\tvar match = /\\.([^\\.\\/]*?)$/g.exec(url);\n\t\t\tif (match) return match[1];\n\t\t\telse return '';\n\t\t}\n\n\t\tfunction mimeType(url) {\n\t\t\tvar extension = parseExtension(url).toLowerCase();\n\t\t\treturn mimes()[extension] || '';\n\t\t}\n\n\t\tfunction isDataUrl(url) {\n\t\t\treturn url.search(/^(data:)/) !== -1;\n\t\t}\n\n\t\tfunction toBlob(canvas) {\n\t\t\treturn new Promise(function (resolve) {\n\t\t\t\tvar binaryString = window.atob(\n\t\t\t\t\tcanvas.toDataURL().split(',')[1]\n\t\t\t\t);\n\t\t\t\tvar length = binaryString.length;\n\t\t\t\tvar binaryArray = new Uint8Array(length);\n\n\t\t\t\tfor (var i = 0; i < length; i++)\n\t\t\t\t\tbinaryArray[i] = binaryString.charCodeAt(i);\n\n\t\t\t\tresolve(\n\t\t\t\t\tnew Blob([binaryArray], {\n\t\t\t\t\t\ttype: 'image/png',\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t});\n\t\t}\n\n\t\tfunction canvasToBlob(canvas) {\n\t\t\tif (canvas.toBlob)\n\t\t\t\treturn new Promise(function (resolve) {\n\t\t\t\t\tcanvas.toBlob(resolve);\n\t\t\t\t});\n\n\t\t\treturn toBlob(canvas);\n\t\t}\n\n\t\tfunction resolveUrl(url, baseUrl) {\n\t\t\tvar doc = document.implementation.createHTMLDocument();\n\t\t\tvar base = doc.createElement('base');\n\t\t\tdoc.head.appendChild(base);\n\t\t\tvar a = doc.createElement('a');\n\t\t\tdoc.body.appendChild(a);\n\t\t\tbase.href = baseUrl;\n\t\t\ta.href = url;\n\t\t\treturn a.href;\n\t\t}\n\n\t\tfunction uid() {\n\t\t\tvar index = 0;\n\n\t\t\treturn function () {\n\t\t\t\treturn 'u' + fourRandomChars() + index++;\n\n\t\t\t\tfunction fourRandomChars() {\n\t\t\t\t\t/* see http://stackoverflow.com/a/6248722/2519373 */\n\t\t\t\t\treturn (\n\t\t\t\t\t\t'0000' +\n\t\t\t\t\t\t((Math.random() * Math.pow(36, 4)) << 0).toString(36)\n\t\t\t\t\t).slice(-4);\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\n\t\tfunction makeImage(uri) {\n\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\tvar image = new Image();\n\t\t\t\timage.onload = function () {\n\t\t\t\t\tresolve(image);\n\t\t\t\t};\n\t\t\t\timage.onerror = reject;\n\t\t\t\timage.src = uri;\n\t\t\t});\n\t\t}\n\n\t\tfunction getAndEncode(url) {\n\t\t\tvar TIMEOUT = 30000;\n\t\t\tif (domtoimage.impl.options.cacheBust) {\n\t\t\t\t// Cache bypass so we dont have CORS issues with cached images\n\t\t\t\t// Source: https://developer.mozilla.org/en/docs/Web/API/XMLHttpRequest/Using_XMLHttpRequest#Bypassing_the_cache\n\t\t\t\turl += (/\\?/.test(url) ? '&' : '?') + new Date().getTime();\n\t\t\t}\n\n\t\t\treturn new Promise(function (resolve) {\n\t\t\t\tvar request = new XMLHttpRequest();\n\n\t\t\t\trequest.onreadystatechange = done;\n\t\t\t\trequest.ontimeout = timeout;\n\t\t\t\trequest.responseType = 'blob';\n\t\t\t\trequest.timeout = TIMEOUT;\n\t\t\t\trequest.open('GET', url, true);\n\t\t\t\trequest.send();\n\n\t\t\t\tvar placeholder;\n\t\t\t\tif (domtoimage.impl.options.imagePlaceholder) {\n\t\t\t\t\tvar split = domtoimage.impl.options.imagePlaceholder.split(\n\t\t\t\t\t\t/,/\n\t\t\t\t\t);\n\t\t\t\t\tif (split && split[1]) {\n\t\t\t\t\t\tplaceholder = split[1];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfunction done() {\n\t\t\t\t\tif (request.readyState !== 4) return;\n\n\t\t\t\t\tif (request.status !== 200) {\n\t\t\t\t\t\tif (placeholder) {\n\t\t\t\t\t\t\tresolve(placeholder);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tfail(\n\t\t\t\t\t\t\t\t'cannot fetch resource: ' +\n\t\t\t\t\t\t\t\t\turl +\n\t\t\t\t\t\t\t\t\t', status: ' +\n\t\t\t\t\t\t\t\t\trequest.status\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\n\t\t\t\t\tvar encoder = new FileReader();\n\t\t\t\t\tencoder.onloadend = function () {\n\t\t\t\t\t\tvar content = encoder.result.split(/,/)[1];\n\t\t\t\t\t\tresolve(content);\n\t\t\t\t\t};\n\t\t\t\t\tencoder.readAsDataURL(request.response);\n\t\t\t\t}\n\n\t\t\t\tfunction timeout() {\n\t\t\t\t\tif (placeholder) {\n\t\t\t\t\t\tresolve(placeholder);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tfail(\n\t\t\t\t\t\t\t'timeout of ' +\n\t\t\t\t\t\t\t\tTIMEOUT +\n\t\t\t\t\t\t\t\t'ms occured while fetching resource: ' +\n\t\t\t\t\t\t\t\turl\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tfunction fail(message) {\n\t\t\t\t\tconsole.error(message);\n\t\t\t\t\tresolve('');\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tfunction dataAsUrl(content, type) {\n\t\t\treturn 'data:' + type + ';base64,' + content;\n\t\t}\n\n\t\tfunction escape(string) {\n\t\t\treturn string.replace(/([.*+?^${}()|\\[\\]\\/\\\\])/g, '\\\\$1');\n\t\t}\n\n\t\tfunction delay(ms) {\n\t\t\treturn function (arg) {\n\t\t\t\treturn new Promise(function (resolve) {\n\t\t\t\t\tsetTimeout(function () {\n\t\t\t\t\t\tresolve(arg);\n\t\t\t\t\t}, ms);\n\t\t\t\t});\n\t\t\t};\n\t\t}\n\n\t\tfunction asArray(arrayLike) {\n\t\t\tvar array = [];\n\t\t\tvar length = arrayLike.length;\n\t\t\tfor (var i = 0; i < length; i++) array.push(arrayLike[i]);\n\t\t\treturn array;\n\t\t}\n\n\t\tfunction escapeXhtml(string) {\n\t\t\treturn string.replace(/#/g, '%23').replace(/\\n/g, '%0A');\n\t\t}\n\n\t\tfunction width(node) {\n\t\t\tvar leftBorder = px(node, 'border-left-width');\n\t\t\tvar rightBorder = px(node, 'border-right-width');\n\t\t\treturn node.scrollWidth + leftBorder + rightBorder;\n\t\t}\n\n\t\tfunction height(node) {\n\t\t\tvar topBorder = px(node, 'border-top-width');\n\t\t\tvar bottomBorder = px(node, 'border-bottom-width');\n\t\t\treturn node.scrollHeight + topBorder + bottomBorder;\n\t\t}\n\n\t\tfunction px(node, styleProperty) {\n\t\t\tvar value = window\n\t\t\t\t.getComputedStyle(node)\n\t\t\t\t.getPropertyValue(styleProperty);\n\t\t\treturn parseFloat(value.replace('px', ''));\n\t\t}\n\t}\n\n\tfunction newInliner() {\n\t\tvar URL_REGEX = /url\\(['\"]?([^'\"]+?)['\"]?\\)/g;\n\n\t\treturn {\n\t\t\tinlineAll: inlineAll,\n\t\t\tshouldProcess: shouldProcess,\n\t\t\timpl: {\n\t\t\t\treadUrls: readUrls,\n\t\t\t\tinline: inline,\n\t\t\t},\n\t\t};\n\n\t\tfunction shouldProcess(string) {\n\t\t\treturn string.search(URL_REGEX) !== -1;\n\t\t}\n\n\t\tfunction readUrls(string) {\n\t\t\tvar result = [];\n\t\t\tvar match;\n\t\t\twhile ((match = URL_REGEX.exec(string)) !== null) {\n\t\t\t\tresult.push(match[1]);\n\t\t\t}\n\t\t\treturn result.filter(function (url) {\n\t\t\t\treturn !util.isDataUrl(url);\n\t\t\t});\n\t\t}\n\n\t\tfunction inline(string, url, baseUrl, get) {\n\t\t\treturn Promise.resolve(url)\n\t\t\t\t.then(function (url) {\n\t\t\t\t\treturn baseUrl ? util.resolveUrl(url, baseUrl) : url;\n\t\t\t\t})\n\t\t\t\t.then(get || util.getAndEncode)\n\t\t\t\t.then(function (data) {\n\t\t\t\t\treturn util.dataAsUrl(data, util.mimeType(url));\n\t\t\t\t})\n\t\t\t\t.then(function (dataUrl) {\n\t\t\t\t\treturn string.replace(\n\t\t\t\t\t\turlAsRegex(url),\n\t\t\t\t\t\t'$1' + dataUrl + '$3'\n\t\t\t\t\t);\n\t\t\t\t});\n\n\t\t\tfunction urlAsRegex(url) {\n\t\t\t\treturn new RegExp(\n\t\t\t\t\t'(url\\\\([\\'\"]?)(' + util.escape(url) + ')([\\'\"]?\\\\))',\n\t\t\t\t\t'g'\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tfunction inlineAll(string, baseUrl, get) {\n\t\t\tif (nothingToInline()) return Promise.resolve(string);\n\n\t\t\treturn Promise.resolve(string)\n\t\t\t\t.then(readUrls)\n\t\t\t\t.then(function (urls) {\n\t\t\t\t\tvar done = Promise.resolve(string);\n\t\t\t\t\turls.forEach(function (url) {\n\t\t\t\t\t\tdone = done.then(function (string) {\n\t\t\t\t\t\t\treturn inline(string, url, baseUrl, get);\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t\t\treturn done;\n\t\t\t\t});\n\n\t\t\tfunction nothingToInline() {\n\t\t\t\treturn !shouldProcess(string);\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction newFontFaces() {\n\t\treturn {\n\t\t\tresolveAll: resolveAll,\n\t\t\timpl: {\n\t\t\t\treadAll: readAll,\n\t\t\t},\n\t\t};\n\n\t\tfunction resolveAll() {\n\t\t\treturn readAll(document)\n\t\t\t\t.then(function (webFonts) {\n\t\t\t\t\treturn Promise.all(\n\t\t\t\t\t\twebFonts.map(function (webFont) {\n\t\t\t\t\t\t\treturn webFont.resolve();\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\t\t\t\t})\n\t\t\t\t.then(function (cssStrings) {\n\t\t\t\t\treturn cssStrings.join('\\n');\n\t\t\t\t});\n\t\t}\n\n\t\tfunction readAll() {\n\t\t\treturn Promise.resolve(util.asArray(document.styleSheets))\n\t\t\t\t.then(getCssRules)\n\t\t\t\t.then(selectWebFontRules)\n\t\t\t\t.then(function (rules) {\n\t\t\t\t\treturn rules.map(newWebFont);\n\t\t\t\t});\n\n\t\t\tfunction selectWebFontRules(cssRules) {\n\t\t\t\treturn cssRules\n\t\t\t\t\t.filter(function (rule) {\n\t\t\t\t\t\treturn rule.type === CSSRule.FONT_FACE_RULE;\n\t\t\t\t\t})\n\t\t\t\t\t.filter(function (rule) {\n\t\t\t\t\t\treturn inliner.shouldProcess(\n\t\t\t\t\t\t\trule.style.getPropertyValue('src')\n\t\t\t\t\t\t);\n\t\t\t\t\t});\n\t\t\t}\n\n\t\t\tfunction getCssRules(styleSheets) {\n\t\t\t\tvar cssRules = [];\n\t\t\t\tstyleSheets.forEach(function (sheet) {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tutil.asArray(sheet.cssRules || []).forEach(\n\t\t\t\t\t\t\tcssRules.push.bind(cssRules)\n\t\t\t\t\t\t);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\tconsole.log(\n\t\t\t\t\t\t\t'Error while reading CSS rules from ' + sheet.href,\n\t\t\t\t\t\t\te.toString()\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t\treturn cssRules;\n\t\t\t}\n\n\t\t\tfunction newWebFont(webFontRule) {\n\t\t\t\treturn {\n\t\t\t\t\tresolve: function resolve() {\n\t\t\t\t\t\tvar baseUrl = (webFontRule.parentStyleSheet || {}).href;\n\t\t\t\t\t\treturn inliner.inlineAll(webFontRule.cssText, baseUrl);\n\t\t\t\t\t},\n\t\t\t\t\tsrc: function () {\n\t\t\t\t\t\treturn webFontRule.style.getPropertyValue('src');\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\t}\n\n\tfunction newImages() {\n\t\treturn {\n\t\t\tinlineAll: inlineAll,\n\t\t\timpl: {\n\t\t\t\tnewImage: newImage,\n\t\t\t},\n\t\t};\n\n\t\tfunction newImage(element) {\n\t\t\treturn {\n\t\t\t\tinline: inline,\n\t\t\t};\n\n\t\t\tfunction inline(get) {\n\t\t\t\tif (util.isDataUrl(element.src)) return Promise.resolve();\n\n\t\t\t\treturn Promise.resolve(element.src)\n\t\t\t\t\t.then(get || util.getAndEncode)\n\t\t\t\t\t.then(function (data) {\n\t\t\t\t\t\treturn util.dataAsUrl(data, util.mimeType(element.src));\n\t\t\t\t\t})\n\t\t\t\t\t.then(function (dataUrl) {\n\t\t\t\t\t\treturn new Promise(function (resolve, reject) {\n\t\t\t\t\t\t\telement.onload = resolve;\n\t\t\t\t\t\t\telement.onerror = reject;\n\t\t\t\t\t\t\telement.src = dataUrl;\n\t\t\t\t\t\t});\n\t\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\tfunction inlineAll(node) {\n\t\t\tif (!(node instanceof Element)) return Promise.resolve(node);\n\n\t\t\treturn inlineBackground(node).then(function () {\n\t\t\t\tif (node instanceof HTMLImageElement)\n\t\t\t\t\treturn newImage(node).inline();\n\t\t\t\telse\n\t\t\t\t\treturn Promise.all(\n\t\t\t\t\t\tutil.asArray(node.childNodes).map(function (child) {\n\t\t\t\t\t\t\treturn inlineAll(child);\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\t\t\t});\n\n\t\t\tfunction inlineBackground(node) {\n\t\t\t\tvar background = node.style.getPropertyValue('background');\n\n\t\t\t\tif (!background) return Promise.resolve(node);\n\n\t\t\t\treturn inliner\n\t\t\t\t\t.inlineAll(background)\n\t\t\t\t\t.then(function (inlined) {\n\t\t\t\t\t\tnode.style.setProperty(\n\t\t\t\t\t\t\t'background',\n\t\t\t\t\t\t\tinlined,\n\t\t\t\t\t\t\tnode.style.getPropertyPriority('background')\n\t\t\t\t\t\t);\n\t\t\t\t\t})\n\t\t\t\t\t.then(function () {\n\t\t\t\t\t\treturn node;\n\t\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n})(this);\n"]}
|
|
@@ -21,7 +21,7 @@ import { Tools } from '../../tools';
|
|
|
21
21
|
import { carbonPrefix } from '../../configuration-non-customizable';
|
|
22
22
|
// MISC
|
|
23
23
|
import ResizeObserver from 'resize-observer-polyfill';
|
|
24
|
-
import domToImage from 'dom-to-image';
|
|
24
|
+
import domToImage from './dom-to-image';
|
|
25
25
|
var CSS_VERIFIER_ELEMENT_CLASSNAME = 'DONT_STYLE_ME_css_styles_verifier';
|
|
26
26
|
var DOMUtils = /** @class */ (function (_super) {
|
|
27
27
|
__extends(DOMUtils, _super);
|
|
@@ -198,12 +198,10 @@ var DOMUtils = /** @class */ (function (_super) {
|
|
|
198
198
|
};
|
|
199
199
|
DOMUtils.prototype.styleHolderElement = function () {
|
|
200
200
|
var holderElement = this.getHolder();
|
|
201
|
-
// Add class to chart holder
|
|
202
|
-
select(this.getHolder()).classed(carbonPrefix + "--chart-holder", true);
|
|
203
201
|
// In order for resize events to not clash with these updates
|
|
204
202
|
// We'll check if the width & height values passed in options
|
|
205
203
|
// Have changed, before setting them to the holder
|
|
206
|
-
var _a = this.model.getOptions(), width = _a.width, height = _a.height;
|
|
204
|
+
var _a = this.model.getOptions(), width = _a.width, height = _a.height, theme = _a.theme;
|
|
207
205
|
if (width !== this.width) {
|
|
208
206
|
// Apply formatted width attribute to chart
|
|
209
207
|
holderElement.style.width = width;
|
|
@@ -214,6 +212,10 @@ var DOMUtils = /** @class */ (function (_super) {
|
|
|
214
212
|
holderElement.style.height = height;
|
|
215
213
|
this.height = height;
|
|
216
214
|
}
|
|
215
|
+
// Add class to chart holder
|
|
216
|
+
select(this.getHolder())
|
|
217
|
+
.classed(carbonPrefix + "--chart-holder", true)
|
|
218
|
+
.attr('data-carbon-theme', theme);
|
|
217
219
|
};
|
|
218
220
|
DOMUtils.prototype.getHolder = function () {
|
|
219
221
|
return this.model.get('holder');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dom-utils.js","sourceRoot":"","sources":["dom-utils.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Service } from '../service';\nimport { Events } from './../../interfaces';\n\n// D3 Imports\nimport { select, Selection } from 'd3-selection';\nimport { Tools } from '../../tools';\n\n// import the settings for the css prefix\nimport { carbonPrefix } from '../../configuration-non-customizable';\n\n// MISC\nimport ResizeObserver from 'resize-observer-polyfill';\n\nimport domToImage from 'dom-to-image';\n\nconst CSS_VERIFIER_ELEMENT_CLASSNAME = 'DONT_STYLE_ME_css_styles_verifier';\n\ninterface getSVGElementSizeOptions {\n\tuseAttrs?: boolean;\n\tuseClientDimensions?: boolean;\n\tuseBBox?: boolean;\n\tuseBoundingRect?: boolean;\n}\n\nexport class DOMUtils extends Service {\n\t// Initialized in init\n\tprivate chartID;\n\n\tconstructor(model: any, services: any) {\n\t\tsuper(model, services);\n\t}\n\n\tstatic getHTMLElementSize(element: HTMLElement) {\n\t\treturn {\n\t\t\twidth: element.clientWidth,\n\t\t\theight: element.clientHeight,\n\t\t};\n\t}\n\n\tstatic getSVGElementSize(\n\t\tsvgSelector: Selection<any, any, any, any>,\n\t\toptions: getSVGElementSizeOptions = {\n\t\t\tuseAttrs: false,\n\t\t\tuseClientDimensions: false,\n\t\t\tuseBBox: false,\n\t\t\tuseBoundingRect: false,\n\t\t}\n\t) {\n\t\tif (!svgSelector.attr) {\n\t\t\tsvgSelector = select(svgSelector as any);\n\t\t}\n\n\t\tconst finalDimensions = {\n\t\t\twidth: 0,\n\t\t\theight: 0,\n\t\t};\n\n\t\tconst validateAndSetDimensions = (dimensions) => {\n\t\t\tif (dimensions) {\n\t\t\t\tObject.keys(finalDimensions).forEach((dimensionKey) => {\n\t\t\t\t\tif (dimensions[dimensionKey]) {\n\t\t\t\t\t\tconst dimension = dimensions[dimensionKey];\n\t\t\t\t\t\tconst dimensionNumber = parseFloat(dimension);\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tdimension &&\n\t\t\t\t\t\t\tdimensionNumber > finalDimensions[dimensionKey] &&\n\t\t\t\t\t\t\t('' + dimension).indexOf('%') === -1\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tfinalDimensions[dimensionKey] = dimensionNumber;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\n\t\tconst attrDimensions = {\n\t\t\twidth: svgSelector.attr('width'),\n\t\t\theight: svgSelector.attr('height'),\n\t\t};\n\n\t\tlet bbox, bboxDimensions, boundingRect, boundingRectDimensions;\n\t\t// In many versions of Firefox\n\t\t// getBBox will cause an \"NSFailure\" error\n\t\ttry {\n\t\t\tbbox = svgSelector.node().getBBox();\n\t\t\tbboxDimensions = {\n\t\t\t\twidth: bbox.width,\n\t\t\t\theight: bbox.height,\n\t\t\t};\n\t\t} catch (e) {}\n\n\t\ttry {\n\t\t\tboundingRect = svgSelector.node().getBoundingClientRect();\n\t\t\tboundingRectDimensions = {\n\t\t\t\twidth: boundingRect.width,\n\t\t\t\theight: boundingRect.height,\n\t\t\t};\n\t\t} catch (e) {}\n\n\t\tconst clientDimensions = {\n\t\t\twidth: svgSelector.node().clientWidth,\n\t\t\theight: svgSelector.node().clientHeight,\n\t\t};\n\n\t\t// If both attribute values are numbers\n\t\t// And not percentages or NaN\n\t\tif (options) {\n\t\t\tif (options.useAttrs) {\n\t\t\t\tvalidateAndSetDimensions(attrDimensions);\n\n\t\t\t\tif (finalDimensions.width > 0 && finalDimensions.height > 0) {\n\t\t\t\t\treturn finalDimensions;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (options.useClientDimensions) {\n\t\t\t\tvalidateAndSetDimensions(clientDimensions);\n\n\t\t\t\tif (finalDimensions.width > 0 && finalDimensions.height > 0) {\n\t\t\t\t\treturn clientDimensions;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (options.useBBox) {\n\t\t\t\tvalidateAndSetDimensions(bboxDimensions);\n\n\t\t\t\tif (finalDimensions.width > 0 && finalDimensions.height > 0) {\n\t\t\t\t\treturn bboxDimensions;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (options.useBoundingRect) {\n\t\t\t\tvalidateAndSetDimensions(boundingRectDimensions);\n\n\t\t\t\tif (finalDimensions.width > 0 && finalDimensions.height > 0) {\n\t\t\t\t\treturn boundingRectDimensions;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ttry {\n\t\t\tconst nativeDimensions = {\n\t\t\t\twidth: Tools.getProperty(\n\t\t\t\t\tsvgSelector.node(),\n\t\t\t\t\t'width',\n\t\t\t\t\t'baseVal',\n\t\t\t\t\t'value'\n\t\t\t\t),\n\t\t\t\theight: Tools.getProperty(\n\t\t\t\t\tsvgSelector.node(),\n\t\t\t\t\t'height',\n\t\t\t\t\t'baseVal',\n\t\t\t\t\t'value'\n\t\t\t\t),\n\t\t\t};\n\n\t\t\tvalidateAndSetDimensions(nativeDimensions);\n\t\t} catch (e) {\n\t\t\tvalidateAndSetDimensions(clientDimensions);\n\t\t\tvalidateAndSetDimensions(bboxDimensions);\n\t\t\tvalidateAndSetDimensions(attrDimensions);\n\t\t}\n\n\t\treturn finalDimensions;\n\t}\n\n\tstatic appendOrSelect(parent, query) {\n\t\tconst selection = parent.select(`${query}`);\n\n\t\tif (selection.empty()) {\n\t\t\t// see if there is an id\n\t\t\tlet querySections = query.split('#');\n\t\t\tlet elementToAppend;\n\t\t\tlet id;\n\t\t\t// if there is an id\n\t\t\tif (querySections.length === 2) {\n\t\t\t\t// take out the element to append\n\t\t\t\telementToAppend = querySections[0];\n\t\t\t\t// split it by classes\n\t\t\t\tquerySections = querySections[1].split('.');\n\t\t\t\t// the first string is the id\n\t\t\t\tid = querySections[0];\n\t\t\t} else {\n\t\t\t\tquerySections = query.split('.');\n\t\t\t\telementToAppend = querySections[0];\n\t\t\t}\n\n\t\t\treturn parent\n\t\t\t\t.append(elementToAppend)\n\t\t\t\t.attr('id', id)\n\t\t\t\t.attr('class', querySections.slice(1).join(' '));\n\t\t}\n\n\t\treturn selection;\n\t}\n\n\tprotected mainContainer: HTMLElement;\n\tprotected width: string;\n\tprotected height: string;\n\n\tinit() {\n\t\t// Add width & height to the chart holder if necessary, and add a classname\n\t\tthis.styleHolderElement();\n\n\t\t// Initialize chart ID\n\t\tthis.initializeID();\n\n\t\tthis.addMainContainer();\n\t\tthis.verifyCSSStylesBeingApplied();\n\n\t\tif (this.model.getOptions().resizable) {\n\t\t\tthis.addResizeListener();\n\t\t}\n\n\t\tthis.addHolderListeners();\n\n\t\tthis.handleFullscreenChange();\n\t}\n\n\tgetChartID() {\n\t\treturn this.chartID;\n\t}\n\n\tgenerateElementIDString(originalID) {\n\t\treturn `chart-${this.chartID}-${originalID}`;\n\t}\n\n\tprivate initializeID() {\n\t\tthis.chartID = Math.floor(\n\t\t\t(1 + Math.random()) * 0x1000000000000\n\t\t).toString(16);\n\t}\n\n\taddMainContainer() {\n\t\tconst options = this.model.getOptions();\n\t\tconst chartsprefix = Tools.getProperty(options, 'style', 'prefix');\n\n\t\tconst mainContainer = select(this.getHolder())\n\t\t\t.append('div')\n\t\t\t.classed(`${carbonPrefix}--${chartsprefix}--chart-wrapper`, true)\n\t\t\t.attr('id', `chart-${this.getChartID()}`)\n\t\t\t.style('height', '100%')\n\t\t\t.style('width', '100%');\n\n\t\tmainContainer.append('g').attr('class', CSS_VERIFIER_ELEMENT_CLASSNAME);\n\n\t\tthis.mainContainer = mainContainer.node();\n\t}\n\n\tupdate() {\n\t\tthis.styleHolderElement();\n\t}\n\n\tstyleHolderElement() {\n\t\tconst holderElement = this.getHolder() as HTMLElement;\n\n\t\t// Add class to chart holder\n\t\tselect(this.getHolder()).classed(`${carbonPrefix}--chart-holder`, true);\n\n\t\t// In order for resize events to not clash with these updates\n\t\t// We'll check if the width & height values passed in options\n\t\t// Have changed, before setting them to the holder\n\t\tconst { width, height } = this.model.getOptions();\n\t\tif (width !== this.width) {\n\t\t\t// Apply formatted width attribute to chart\n\t\t\tholderElement.style.width = width;\n\n\t\t\tthis.width = width;\n\t\t}\n\n\t\tif (height !== this.height) {\n\t\t\t// Apply formatted width attribute to chart\n\t\t\tholderElement.style.height = height;\n\n\t\t\tthis.height = height;\n\t\t}\n\t}\n\n\tgetHolder() {\n\t\treturn this.model.get('holder');\n\t}\n\n\texportToJPG() {\n\t\tconst self = this;\n\n\t\tconst holder = this.getHolder();\n\t\tconst holderSelection = select(holder);\n\t\tholderSelection.classed('filled', true);\n\n\t\tdomToImage\n\t\t\t.toJpeg(this.getMainContainer(), {\n\t\t\t\tbgcolor:\n\t\t\t\t\ttypeof window !== 'undefined'\n\t\t\t\t\t\t? window\n\t\t\t\t\t\t\t\t.getComputedStyle(holder)\n\t\t\t\t\t\t\t\t.getPropertyValue('background-color')\n\t\t\t\t\t\t: undefined,\n\t\t\t\tquality: 1,\n\t\t\t\t// Remove the toolbar\n\t\t\t\tfilter: (node) => {\n\t\t\t\t\tif (\n\t\t\t\t\t\tnode.classList &&\n\t\t\t\t\t\tnode.classList.contains('cds--cc--toolbar')\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn true;\n\t\t\t\t},\n\t\t\t})\n\t\t\t.then(function (dataUrl) {\n\t\t\t\tself.services.files.downloadImage(dataUrl, 'myChart.jpg');\n\t\t\t\tholderSelection.classed('filled', false);\n\t\t\t});\n\t}\n\n\texportToPNG() {\n\t\tconst self = this;\n\n\t\tconst holder = this.getHolder();\n\t\tconst holderSelection = select(holder);\n\t\tholderSelection.classed('filled', true);\n\n\t\tdomToImage\n\t\t\t.toPng(this.getMainContainer(), {\n\t\t\t\tbgcolor:\n\t\t\t\t\ttypeof window !== 'undefined'\n\t\t\t\t\t\t? window\n\t\t\t\t\t\t\t\t.getComputedStyle(holder)\n\t\t\t\t\t\t\t\t.getPropertyValue('background-color')\n\t\t\t\t\t\t: undefined,\n\t\t\t\tquality: 1,\n\t\t\t\t// Remove the toolbar\n\t\t\t\tfilter: (node) => {\n\t\t\t\t\tif (\n\t\t\t\t\t\tnode.classList &&\n\t\t\t\t\t\tnode.classList.contains('cds--cc--toolbar')\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn true;\n\t\t\t\t},\n\t\t\t})\n\t\t\t.then(function (dataUrl) {\n\t\t\t\tself.services.files.downloadImage(dataUrl, 'myChart.png');\n\t\t\t\tholderSelection.classed('filled', false);\n\t\t\t})\n\t\t\t.catch(function (error) {\n\t\t\t\tconsole.error('oops, something went wrong!', error);\n\t\t\t});\n\t}\n\n\ttoggleFullscreen() {\n\t\tconst holder = this.getHolder();\n\t\tconst holderSelection = select(holder);\n\n\t\tconst isFullScreen = holderSelection.classed('fullscreen');\n\n\t\tif (\n\t\t\tisFullScreen &&\n\t\t\t(document.fullscreenElement ||\n\t\t\t\tdocument['webkitFullscreenElement'] ||\n\t\t\t\tdocument['mozFullScreenElement'] ||\n\t\t\t\tdocument['msFullscreenElement'])\n\t\t) {\n\t\t\t// Call the correct function depending on the browser\n\t\t\tif (document.exitFullscreen) {\n\t\t\t\tdocument.exitFullscreen();\n\t\t\t} else if (document['webkitExitFullscreen']) {\n\t\t\t\tdocument['webkitExitFullscreen']();\n\t\t\t} else if (document['mozCancelFullScreen']) {\n\t\t\t\tdocument['mozCancelFullScreen']();\n\t\t\t} else if (document['msExitFullscreen']) {\n\t\t\t\tdocument['msExitFullscreen']();\n\t\t\t}\n\t\t} else {\n\t\t\t// Call the correct function depending on the browser\n\t\t\tif (holder.requestFullscreen) {\n\t\t\t\tholder.requestFullscreen();\n\t\t\t} else if (holder.webkitRequestFullscreen) {\n\t\t\t\tholder.webkitRequestFullscreen();\n\t\t\t} else if (holder.mozRequestFullScreen) {\n\t\t\t\tholder.mozRequestFullScreen();\n\t\t\t} else if (holder.msRequestFullscreen) {\n\t\t\t\tholder.msRequestFullscreen();\n\t\t\t}\n\t\t}\n\t}\n\n\thandleFullscreenChange() {\n\t\tdocument.addEventListener('fullscreenchange', () => {\n\t\t\tconst holderSelection = select(this.getHolder());\n\t\t\tconst isFullScreen = holderSelection.classed('fullscreen');\n\n\t\t\t// Toggle the `fullscreen` classname\n\t\t\tholderSelection.classed('fullscreen', !isFullScreen);\n\t\t});\n\t}\n\n\tverifyCSSStylesBeingApplied() {\n\t\t// setTimeout is needed here since in `addSVGElement()` we're appending the\n\t\t// CSS verifier element, and need to allow some time for it to become available\n\t\t// in the DOM\n\t\tsetTimeout(() => {\n\t\t\tconst cssVerifierElement = select(this.mainContainer)\n\t\t\t\t.select(`g.${CSS_VERIFIER_ELEMENT_CLASSNAME}`)\n\t\t\t\t.node();\n\t\t\tconst computedStyles = getComputedStyle(cssVerifierElement as any);\n\t\t\tif (\n\t\t\t\tcomputedStyles.getPropertyValue('overflow') !== 'hidden' ||\n\t\t\t\tcomputedStyles.getPropertyValue('opacity') !== '0'\n\t\t\t) {\n\t\t\t\tconsole.error(\n\t\t\t\t\t'Missing CSS styles for Carbon Charts. Please read the Carbon Charts getting started guide.'\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t}\n\n\tsetSVGMaxHeight() {\n\t\t// if there is a set height on the holder, leave the chart svg height at 100%\n\t\tif (!this.model.getOptions().height) {\n\t\t\tconst { height: chartHeight } = DOMUtils.getSVGElementSize(\n\t\t\t\tselect(this.mainContainer),\n\t\t\t\t{ useBBox: true }\n\t\t\t);\n\t\t\tconst chartSVGSelector = select(this.mainContainer).attr('class');\n\t\t\tconst children = select(this.mainContainer).selectAll(\n\t\t\t\t`.${chartSVGSelector} > svg`\n\t\t\t);\n\n\t\t\t// get the height of the children SVGs (spacers, titles, etc)\n\t\t\tlet childrenHeight = 0;\n\t\t\tchildren.nodes().forEach(function (childSVG) {\n\t\t\t\tchildrenHeight += Number(\n\t\t\t\t\tDOMUtils.getSVGElementSize(select(childSVG), {\n\t\t\t\t\t\tuseBBox: true,\n\t\t\t\t\t}).height\n\t\t\t\t);\n\t\t\t});\n\n\t\t\t// set the chart svg height to the children height\n\t\t\t// forcing the chart not to take up any more space than it requires\n\t\t\tchildrenHeight <= chartHeight\n\t\t\t\t? select(this.mainContainer).attr('height', childrenHeight)\n\t\t\t\t: select(this.mainContainer).attr('height', '100%');\n\t\t}\n\t}\n\n\tgetMainContainer() {\n\t\treturn this.mainContainer;\n\t}\n\n\taddHolderListeners() {\n\t\tconst holder = this.getHolder();\n\n\t\tif (!holder) {\n\t\t\treturn;\n\t\t}\n\n\t\tselect(holder)\n\t\t\t.on('mouseover', () => {\n\t\t\t\t// Dispatch event\n\t\t\t\tthis.services.events.dispatchEvent(Events.Chart.MOUSEOVER);\n\t\t\t})\n\t\t\t.on('mouseout', () => {\n\t\t\t\t// Dispatch event\n\t\t\t\tthis.services.events.dispatchEvent(Events.Chart.MOUSEOUT);\n\t\t\t});\n\t}\n\n\taddResizeListener() {\n\t\tconst holder = this.getHolder();\n\n\t\tif (!holder) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Grab current dimensions of the chart holder\n\t\tlet containerWidth = holder.clientWidth;\n\t\tlet containerHeight = holder.clientHeight;\n\n\t\t// The resize callback function\n\t\tconst resizeCallback = Tools.debounce((entries, observer) => {\n\t\t\tif (!holder) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tMath.abs(containerWidth - holder.clientWidth) > 1 ||\n\t\t\t\tMath.abs(containerHeight - holder.clientHeight) > 1\n\t\t\t) {\n\t\t\t\tcontainerWidth = holder.clientWidth;\n\t\t\t\tcontainerHeight = holder.clientHeight;\n\n\t\t\t\tthis.services.events.dispatchEvent(Events.Chart.RESIZE);\n\t\t\t}\n\t\t}, 12.5);\n\n\t\t// Observe the behaviour of resizing on the holder\n\t\tconst resizeObserver = new ResizeObserver(resizeCallback);\n\t\tresizeObserver.observe(holder);\n\t}\n}\n"]}
|
|
1
|
+
{"version":3,"file":"dom-utils.js","sourceRoot":"","sources":["dom-utils.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Service } from '../service';\nimport { Events } from './../../interfaces';\n\n// D3 Imports\nimport { select, Selection } from 'd3-selection';\nimport { Tools } from '../../tools';\n\n// import the settings for the css prefix\nimport { carbonPrefix } from '../../configuration-non-customizable';\n\n// MISC\nimport ResizeObserver from 'resize-observer-polyfill';\n\nimport domToImage from './dom-to-image';\n\nconst CSS_VERIFIER_ELEMENT_CLASSNAME = 'DONT_STYLE_ME_css_styles_verifier';\n\ninterface getSVGElementSizeOptions {\n\tuseAttrs?: boolean;\n\tuseClientDimensions?: boolean;\n\tuseBBox?: boolean;\n\tuseBoundingRect?: boolean;\n}\n\nexport class DOMUtils extends Service {\n\t// Initialized in init\n\tprivate chartID;\n\n\tconstructor(model: any, services: any) {\n\t\tsuper(model, services);\n\t}\n\n\tstatic getHTMLElementSize(element: HTMLElement) {\n\t\treturn {\n\t\t\twidth: element.clientWidth,\n\t\t\theight: element.clientHeight,\n\t\t};\n\t}\n\n\tstatic getSVGElementSize(\n\t\tsvgSelector: Selection<any, any, any, any>,\n\t\toptions: getSVGElementSizeOptions = {\n\t\t\tuseAttrs: false,\n\t\t\tuseClientDimensions: false,\n\t\t\tuseBBox: false,\n\t\t\tuseBoundingRect: false,\n\t\t}\n\t) {\n\t\tif (!svgSelector.attr) {\n\t\t\tsvgSelector = select(svgSelector as any);\n\t\t}\n\n\t\tconst finalDimensions = {\n\t\t\twidth: 0,\n\t\t\theight: 0,\n\t\t};\n\n\t\tconst validateAndSetDimensions = (dimensions) => {\n\t\t\tif (dimensions) {\n\t\t\t\tObject.keys(finalDimensions).forEach((dimensionKey) => {\n\t\t\t\t\tif (dimensions[dimensionKey]) {\n\t\t\t\t\t\tconst dimension = dimensions[dimensionKey];\n\t\t\t\t\t\tconst dimensionNumber = parseFloat(dimension);\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\tdimension &&\n\t\t\t\t\t\t\tdimensionNumber > finalDimensions[dimensionKey] &&\n\t\t\t\t\t\t\t('' + dimension).indexOf('%') === -1\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\tfinalDimensions[dimensionKey] = dimensionNumber;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t};\n\n\t\tconst attrDimensions = {\n\t\t\twidth: svgSelector.attr('width'),\n\t\t\theight: svgSelector.attr('height'),\n\t\t};\n\n\t\tlet bbox, bboxDimensions, boundingRect, boundingRectDimensions;\n\t\t// In many versions of Firefox\n\t\t// getBBox will cause an \"NSFailure\" error\n\t\ttry {\n\t\t\tbbox = svgSelector.node().getBBox();\n\t\t\tbboxDimensions = {\n\t\t\t\twidth: bbox.width,\n\t\t\t\theight: bbox.height,\n\t\t\t};\n\t\t} catch (e) {}\n\n\t\ttry {\n\t\t\tboundingRect = svgSelector.node().getBoundingClientRect();\n\t\t\tboundingRectDimensions = {\n\t\t\t\twidth: boundingRect.width,\n\t\t\t\theight: boundingRect.height,\n\t\t\t};\n\t\t} catch (e) {}\n\n\t\tconst clientDimensions = {\n\t\t\twidth: svgSelector.node().clientWidth,\n\t\t\theight: svgSelector.node().clientHeight,\n\t\t};\n\n\t\t// If both attribute values are numbers\n\t\t// And not percentages or NaN\n\t\tif (options) {\n\t\t\tif (options.useAttrs) {\n\t\t\t\tvalidateAndSetDimensions(attrDimensions);\n\n\t\t\t\tif (finalDimensions.width > 0 && finalDimensions.height > 0) {\n\t\t\t\t\treturn finalDimensions;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (options.useClientDimensions) {\n\t\t\t\tvalidateAndSetDimensions(clientDimensions);\n\n\t\t\t\tif (finalDimensions.width > 0 && finalDimensions.height > 0) {\n\t\t\t\t\treturn clientDimensions;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (options.useBBox) {\n\t\t\t\tvalidateAndSetDimensions(bboxDimensions);\n\n\t\t\t\tif (finalDimensions.width > 0 && finalDimensions.height > 0) {\n\t\t\t\t\treturn bboxDimensions;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (options.useBoundingRect) {\n\t\t\t\tvalidateAndSetDimensions(boundingRectDimensions);\n\n\t\t\t\tif (finalDimensions.width > 0 && finalDimensions.height > 0) {\n\t\t\t\t\treturn boundingRectDimensions;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\ttry {\n\t\t\tconst nativeDimensions = {\n\t\t\t\twidth: Tools.getProperty(\n\t\t\t\t\tsvgSelector.node(),\n\t\t\t\t\t'width',\n\t\t\t\t\t'baseVal',\n\t\t\t\t\t'value'\n\t\t\t\t),\n\t\t\t\theight: Tools.getProperty(\n\t\t\t\t\tsvgSelector.node(),\n\t\t\t\t\t'height',\n\t\t\t\t\t'baseVal',\n\t\t\t\t\t'value'\n\t\t\t\t),\n\t\t\t};\n\n\t\t\tvalidateAndSetDimensions(nativeDimensions);\n\t\t} catch (e) {\n\t\t\tvalidateAndSetDimensions(clientDimensions);\n\t\t\tvalidateAndSetDimensions(bboxDimensions);\n\t\t\tvalidateAndSetDimensions(attrDimensions);\n\t\t}\n\n\t\treturn finalDimensions;\n\t}\n\n\tstatic appendOrSelect(parent, query) {\n\t\tconst selection = parent.select(`${query}`);\n\n\t\tif (selection.empty()) {\n\t\t\t// see if there is an id\n\t\t\tlet querySections = query.split('#');\n\t\t\tlet elementToAppend;\n\t\t\tlet id;\n\t\t\t// if there is an id\n\t\t\tif (querySections.length === 2) {\n\t\t\t\t// take out the element to append\n\t\t\t\telementToAppend = querySections[0];\n\t\t\t\t// split it by classes\n\t\t\t\tquerySections = querySections[1].split('.');\n\t\t\t\t// the first string is the id\n\t\t\t\tid = querySections[0];\n\t\t\t} else {\n\t\t\t\tquerySections = query.split('.');\n\t\t\t\telementToAppend = querySections[0];\n\t\t\t}\n\n\t\t\treturn parent\n\t\t\t\t.append(elementToAppend)\n\t\t\t\t.attr('id', id)\n\t\t\t\t.attr('class', querySections.slice(1).join(' '));\n\t\t}\n\n\t\treturn selection;\n\t}\n\n\tprotected mainContainer: HTMLElement;\n\tprotected width: string;\n\tprotected height: string;\n\n\tinit() {\n\t\t// Add width & height to the chart holder if necessary, and add a classname\n\t\tthis.styleHolderElement();\n\n\t\t// Initialize chart ID\n\t\tthis.initializeID();\n\n\t\tthis.addMainContainer();\n\t\tthis.verifyCSSStylesBeingApplied();\n\n\t\tif (this.model.getOptions().resizable) {\n\t\t\tthis.addResizeListener();\n\t\t}\n\n\t\tthis.addHolderListeners();\n\n\t\tthis.handleFullscreenChange();\n\t}\n\n\tgetChartID() {\n\t\treturn this.chartID;\n\t}\n\n\tgenerateElementIDString(originalID) {\n\t\treturn `chart-${this.chartID}-${originalID}`;\n\t}\n\n\tprivate initializeID() {\n\t\tthis.chartID = Math.floor(\n\t\t\t(1 + Math.random()) * 0x1000000000000\n\t\t).toString(16);\n\t}\n\n\taddMainContainer() {\n\t\tconst options = this.model.getOptions();\n\t\tconst chartsprefix = Tools.getProperty(options, 'style', 'prefix');\n\n\t\tconst mainContainer = select(this.getHolder())\n\t\t\t.append('div')\n\t\t\t.classed(`${carbonPrefix}--${chartsprefix}--chart-wrapper`, true)\n\t\t\t.attr('id', `chart-${this.getChartID()}`)\n\t\t\t.style('height', '100%')\n\t\t\t.style('width', '100%');\n\n\t\tmainContainer.append('g').attr('class', CSS_VERIFIER_ELEMENT_CLASSNAME);\n\n\t\tthis.mainContainer = mainContainer.node();\n\t}\n\n\tupdate() {\n\t\tthis.styleHolderElement();\n\t}\n\n\tstyleHolderElement() {\n\t\tconst holderElement = this.getHolder() as HTMLElement;\n\n\t\t// In order for resize events to not clash with these updates\n\t\t// We'll check if the width & height values passed in options\n\t\t// Have changed, before setting them to the holder\n\t\tconst { width, height, theme } = this.model.getOptions();\n\t\tif (width !== this.width) {\n\t\t\t// Apply formatted width attribute to chart\n\t\t\tholderElement.style.width = width;\n\n\t\t\tthis.width = width;\n\t\t}\n\n\t\tif (height !== this.height) {\n\t\t\t// Apply formatted width attribute to chart\n\t\t\tholderElement.style.height = height;\n\n\t\t\tthis.height = height;\n\t\t}\n\n\t\t// Add class to chart holder\n\t\tselect(this.getHolder())\n\t\t\t.classed(`${carbonPrefix}--chart-holder`, true)\n\t\t\t.attr('data-carbon-theme', theme);\n\t}\n\n\tgetHolder() {\n\t\treturn this.model.get('holder');\n\t}\n\n\texportToJPG() {\n\t\tconst self = this;\n\n\t\tconst holder = this.getHolder();\n\t\tconst holderSelection = select(holder);\n\t\tholderSelection.classed('filled', true);\n\n\t\tdomToImage\n\t\t\t.toJpeg(this.getMainContainer(), {\n\t\t\t\tbgcolor:\n\t\t\t\t\ttypeof window !== 'undefined'\n\t\t\t\t\t\t? window\n\t\t\t\t\t\t\t\t.getComputedStyle(holder)\n\t\t\t\t\t\t\t\t.getPropertyValue('background-color')\n\t\t\t\t\t\t: undefined,\n\t\t\t\tquality: 1,\n\t\t\t\t// Remove the toolbar\n\t\t\t\tfilter: (node) => {\n\t\t\t\t\tif (\n\t\t\t\t\t\tnode.classList &&\n\t\t\t\t\t\tnode.classList.contains('cds--cc--toolbar')\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn true;\n\t\t\t\t},\n\t\t\t})\n\t\t\t.then(function (dataUrl) {\n\t\t\t\tself.services.files.downloadImage(dataUrl, 'myChart.jpg');\n\t\t\t\tholderSelection.classed('filled', false);\n\t\t\t});\n\t}\n\n\texportToPNG() {\n\t\tconst self = this;\n\n\t\tconst holder = this.getHolder();\n\t\tconst holderSelection = select(holder);\n\t\tholderSelection.classed('filled', true);\n\n\t\tdomToImage\n\t\t\t.toPng(this.getMainContainer(), {\n\t\t\t\tbgcolor:\n\t\t\t\t\ttypeof window !== 'undefined'\n\t\t\t\t\t\t? window\n\t\t\t\t\t\t\t\t.getComputedStyle(holder)\n\t\t\t\t\t\t\t\t.getPropertyValue('background-color')\n\t\t\t\t\t\t: undefined,\n\t\t\t\tquality: 1,\n\t\t\t\t// Remove the toolbar\n\t\t\t\tfilter: (node) => {\n\t\t\t\t\tif (\n\t\t\t\t\t\tnode.classList &&\n\t\t\t\t\t\tnode.classList.contains('cds--cc--toolbar')\n\t\t\t\t\t) {\n\t\t\t\t\t\treturn false;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn true;\n\t\t\t\t},\n\t\t\t})\n\t\t\t.then(function (dataUrl) {\n\t\t\t\tself.services.files.downloadImage(dataUrl, 'myChart.png');\n\t\t\t\tholderSelection.classed('filled', false);\n\t\t\t})\n\t\t\t.catch(function (error) {\n\t\t\t\tconsole.error('oops, something went wrong!', error);\n\t\t\t});\n\t}\n\n\ttoggleFullscreen() {\n\t\tconst holder = this.getHolder();\n\t\tconst holderSelection = select(holder);\n\n\t\tconst isFullScreen = holderSelection.classed('fullscreen');\n\n\t\tif (\n\t\t\tisFullScreen &&\n\t\t\t(document.fullscreenElement ||\n\t\t\t\tdocument['webkitFullscreenElement'] ||\n\t\t\t\tdocument['mozFullScreenElement'] ||\n\t\t\t\tdocument['msFullscreenElement'])\n\t\t) {\n\t\t\t// Call the correct function depending on the browser\n\t\t\tif (document.exitFullscreen) {\n\t\t\t\tdocument.exitFullscreen();\n\t\t\t} else if (document['webkitExitFullscreen']) {\n\t\t\t\tdocument['webkitExitFullscreen']();\n\t\t\t} else if (document['mozCancelFullScreen']) {\n\t\t\t\tdocument['mozCancelFullScreen']();\n\t\t\t} else if (document['msExitFullscreen']) {\n\t\t\t\tdocument['msExitFullscreen']();\n\t\t\t}\n\t\t} else {\n\t\t\t// Call the correct function depending on the browser\n\t\t\tif (holder.requestFullscreen) {\n\t\t\t\tholder.requestFullscreen();\n\t\t\t} else if (holder.webkitRequestFullscreen) {\n\t\t\t\tholder.webkitRequestFullscreen();\n\t\t\t} else if (holder.mozRequestFullScreen) {\n\t\t\t\tholder.mozRequestFullScreen();\n\t\t\t} else if (holder.msRequestFullscreen) {\n\t\t\t\tholder.msRequestFullscreen();\n\t\t\t}\n\t\t}\n\t}\n\n\thandleFullscreenChange() {\n\t\tdocument.addEventListener('fullscreenchange', () => {\n\t\t\tconst holderSelection = select(this.getHolder());\n\t\t\tconst isFullScreen = holderSelection.classed('fullscreen');\n\n\t\t\t// Toggle the `fullscreen` classname\n\t\t\tholderSelection.classed('fullscreen', !isFullScreen);\n\t\t});\n\t}\n\n\tverifyCSSStylesBeingApplied() {\n\t\t// setTimeout is needed here since in `addSVGElement()` we're appending the\n\t\t// CSS verifier element, and need to allow some time for it to become available\n\t\t// in the DOM\n\t\tsetTimeout(() => {\n\t\t\tconst cssVerifierElement = select(this.mainContainer)\n\t\t\t\t.select(`g.${CSS_VERIFIER_ELEMENT_CLASSNAME}`)\n\t\t\t\t.node();\n\t\t\tconst computedStyles = getComputedStyle(cssVerifierElement as any);\n\t\t\tif (\n\t\t\t\tcomputedStyles.getPropertyValue('overflow') !== 'hidden' ||\n\t\t\t\tcomputedStyles.getPropertyValue('opacity') !== '0'\n\t\t\t) {\n\t\t\t\tconsole.error(\n\t\t\t\t\t'Missing CSS styles for Carbon Charts. Please read the Carbon Charts getting started guide.'\n\t\t\t\t);\n\t\t\t}\n\t\t});\n\t}\n\n\tsetSVGMaxHeight() {\n\t\t// if there is a set height on the holder, leave the chart svg height at 100%\n\t\tif (!this.model.getOptions().height) {\n\t\t\tconst { height: chartHeight } = DOMUtils.getSVGElementSize(\n\t\t\t\tselect(this.mainContainer),\n\t\t\t\t{ useBBox: true }\n\t\t\t);\n\t\t\tconst chartSVGSelector = select(this.mainContainer).attr('class');\n\t\t\tconst children = select(this.mainContainer).selectAll(\n\t\t\t\t`.${chartSVGSelector} > svg`\n\t\t\t);\n\n\t\t\t// get the height of the children SVGs (spacers, titles, etc)\n\t\t\tlet childrenHeight = 0;\n\t\t\tchildren.nodes().forEach(function (childSVG) {\n\t\t\t\tchildrenHeight += Number(\n\t\t\t\t\tDOMUtils.getSVGElementSize(select(childSVG), {\n\t\t\t\t\t\tuseBBox: true,\n\t\t\t\t\t}).height\n\t\t\t\t);\n\t\t\t});\n\n\t\t\t// set the chart svg height to the children height\n\t\t\t// forcing the chart not to take up any more space than it requires\n\t\t\tchildrenHeight <= chartHeight\n\t\t\t\t? select(this.mainContainer).attr('height', childrenHeight)\n\t\t\t\t: select(this.mainContainer).attr('height', '100%');\n\t\t}\n\t}\n\n\tgetMainContainer() {\n\t\treturn this.mainContainer;\n\t}\n\n\taddHolderListeners() {\n\t\tconst holder = this.getHolder();\n\n\t\tif (!holder) {\n\t\t\treturn;\n\t\t}\n\n\t\tselect(holder)\n\t\t\t.on('mouseover', () => {\n\t\t\t\t// Dispatch event\n\t\t\t\tthis.services.events.dispatchEvent(Events.Chart.MOUSEOVER);\n\t\t\t})\n\t\t\t.on('mouseout', () => {\n\t\t\t\t// Dispatch event\n\t\t\t\tthis.services.events.dispatchEvent(Events.Chart.MOUSEOUT);\n\t\t\t});\n\t}\n\n\taddResizeListener() {\n\t\tconst holder = this.getHolder();\n\n\t\tif (!holder) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Grab current dimensions of the chart holder\n\t\tlet containerWidth = holder.clientWidth;\n\t\tlet containerHeight = holder.clientHeight;\n\n\t\t// The resize callback function\n\t\tconst resizeCallback = Tools.debounce((entries, observer) => {\n\t\t\tif (!holder) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\tMath.abs(containerWidth - holder.clientWidth) > 1 ||\n\t\t\t\tMath.abs(containerHeight - holder.clientHeight) > 1\n\t\t\t) {\n\t\t\t\tcontainerWidth = holder.clientWidth;\n\t\t\t\tcontainerHeight = holder.clientHeight;\n\n\t\t\t\tthis.services.events.dispatchEvent(Events.Chart.RESIZE);\n\t\t\t}\n\t\t}, 12.5);\n\n\t\t// Observe the behaviour of resizing on the holder\n\t\tconst resizeObserver = new ResizeObserver(resizeCallback);\n\t\tresizeObserver.observe(holder);\n\t}\n}\n"]}
|
package/services/time-series.js
CHANGED
|
@@ -71,6 +71,11 @@ export function formatTick(tick, i, allTicks, interval, timeScaleOptions) {
|
|
|
71
71
|
var formatString = isTickPrimary(tick, i, allTicks, interval, showDayName)
|
|
72
72
|
? primary
|
|
73
73
|
: secondary;
|
|
74
|
+
// if the interval, and the timestamp includes milliseconds value
|
|
75
|
+
if (interval === '15seconds' && date.getMilliseconds() !== 0) {
|
|
76
|
+
// show milliseconds in tick
|
|
77
|
+
formatString = formatString.replace('pp', 'h:m:s.SSS a');
|
|
78
|
+
}
|
|
74
79
|
var locale = timeScaleOptions.localeObject;
|
|
75
80
|
return format(date, formatString, { locale: locale });
|
|
76
81
|
}
|
|
@@ -131,4 +136,12 @@ function isYearChanged(timestamp) {
|
|
|
131
136
|
var _a = getTimeformats(timestamp), M = _a.M, d = _a.d, s = _a.s, m = _a.m, H = _a.H;
|
|
132
137
|
return M === 1 && d === 1 && H === 0 && m === 0 && s === 0;
|
|
133
138
|
}
|
|
139
|
+
// Return string value of Date with milliseconds
|
|
140
|
+
export function formatDateTillMilliSeconds(date) {
|
|
141
|
+
if (date === undefined) {
|
|
142
|
+
return '';
|
|
143
|
+
}
|
|
144
|
+
// The only valid format with millisecond is ISO 8601
|
|
145
|
+
return date.toISOString();
|
|
146
|
+
}
|
|
134
147
|
//# sourceMappingURL=../../src/services/time-series.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"time-series.js","sourceRoot":"","sources":["time-series.ts"],"names":[],"mappings":"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","sourcesContent":["import { format } from 'date-fns';\nimport { TimeScaleOptions } from '../interfaces/axis-scales';\nimport { Tools } from '../tools';\n\n// D3 Imports\nimport { min } from 'd3-array';\n\nexport const TIME_INTERVALS = [\n\t['15seconds', 15 * 1000],\n\t['minute', 60 * 1000],\n\t['30minutes', 30 * 60 * 1000],\n\t['hourly', 60 * 60 * 1000],\n\t['daily', 24 * 60 * 60 * 1000],\n\t['monthly', 30 * 24 * 60 * 60 * 1000],\n\t['quarterly', 3 * 30 * 24 * 60 * 60 * 1000],\n\t['yearly', 12 * 30 * 24 * 60 * 60 * 1000],\n];\n\n// Return true if the tick is a primary tick, false otherwise\nexport function isTickPrimary(\n\ttick: number,\n\ti: number,\n\tallTicks: Array<number>,\n\tinterval: string,\n\tshowDayName: boolean\n): boolean {\n\tconst isFirstTick = i === 0;\n\tconst hasANewWeekStarted = Number(format(new Date(tick), 'c')) === 2;\n\tconst isFirstQuarter = Number(format(new Date(tick), 'q')) === 1;\n\tconst previousTick = i !== 0 ? allTicks[i - 1] : null;\n\tswitch (interval) {\n\t\tcase '15seconds':\n\t\t\treturn (\n\t\t\t\tisFirstTick ||\n\t\t\t\tisDayOfMonthChanged(tick) ||\n\t\t\t\tisMonthChanged(tick, previousTick) ||\n\t\t\t\tisYearChanged(tick)\n\t\t\t);\n\t\tcase 'minute':\n\t\t\treturn (\n\t\t\t\tisFirstTick ||\n\t\t\t\tisDayOfMonthChanged(tick) ||\n\t\t\t\tisMonthChanged(tick, previousTick) ||\n\t\t\t\tisYearChanged(tick)\n\t\t\t);\n\t\tcase '30minutes':\n\t\t\treturn (\n\t\t\t\tisFirstTick ||\n\t\t\t\tisDayOfMonthChanged(tick) ||\n\t\t\t\tisMonthChanged(tick, previousTick) ||\n\t\t\t\tisYearChanged(tick)\n\t\t\t);\n\t\tcase 'hourly':\n\t\t\treturn (\n\t\t\t\tisFirstTick ||\n\t\t\t\tisDayOfMonthChanged(tick) ||\n\t\t\t\tisMonthChanged(tick, previousTick) ||\n\t\t\t\tisYearChanged(tick)\n\t\t\t);\n\t\tcase 'daily':\n\t\t\tif (!showDayName) {\n\t\t\t\t// daily\n\t\t\t\treturn (\n\t\t\t\t\tisFirstTick ||\n\t\t\t\t\tisMonthChanged(tick, previousTick) ||\n\t\t\t\t\tisYearChanged(tick)\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\t// weekly\n\t\t\t\treturn isFirstTick || hasANewWeekStarted || isYearChanged(tick);\n\t\t\t}\n\t\tcase 'monthly':\n\t\t\treturn isFirstTick || isYearChanged(tick);\n\t\tcase 'quarterly':\n\t\t\treturn isFirstTick || isFirstQuarter;\n\t\tcase 'yearly':\n\t\t\treturn false;\n\t\tdefault:\n\t\t\tthrow new Error(`${interval} is not a valid time interval.`);\n\t}\n}\n\n// Return the formatted current tick\nexport function formatTick(\n\ttick: number,\n\ti: number,\n\tallTicks: Array<number>,\n\tinterval: string,\n\ttimeScaleOptions: TimeScaleOptions\n): string {\n\tconst showDayName = timeScaleOptions.showDayName;\n\tconst intervalConsideringAlsoShowDayNameOption =\n\t\tinterval === 'daily' && showDayName ? 'weekly' : interval;\n\tconst date = new Date(tick);\n\tconst formats = Tools.getProperty(timeScaleOptions, 'timeIntervalFormats')[\n\t\tintervalConsideringAlsoShowDayNameOption\n\t];\n\tconst primary = Tools.getProperty(formats, 'primary');\n\tconst secondary = Tools.getProperty(formats, 'secondary');\n\tconst formatString = isTickPrimary(tick, i, allTicks, interval, showDayName)\n\t\t? primary\n\t\t: secondary;\n\tconst locale = timeScaleOptions.localeObject;\n\n\treturn format(date, formatString, { locale });\n}\n\n// Given a timestamp, return an object of useful time formats\n// Use Unicode date field symbol (https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table)\nexport function getTimeformats(timestamp: number) {\n\tconst date = new Date(timestamp);\n\treturn {\n\t\tM: date.getMonth() + 1, // month: 1-12\n\t\td: date.getDate(), // day of the month: 1-31\n\t\tH: date.getHours(), // 24-hour clock: 0-23\n\t\tm: date.getMinutes(), // minute: 0-59\n\t\ts: date.getSeconds(), // seconds: 0-59\n\t};\n}\n\n// Find the differences between consecutive numbers in an array\nfunction getConsecutiveDifferences(elements: number[]): number[] {\n\tif (!elements) {\n\t\treturn;\n\t}\n\treturn elements.slice(1).map((elem, i) => elem - elements[i]);\n}\n\n// Given a duration in ms, return the closest TIME_INTERVAL name\nfunction closestTimeIntervalName(duration: number): string {\n\tconst index = TIME_INTERVALS.reduce(\n\t\t(nearestIndex, [intervalName, delta]: [string, number], i) => {\n\t\t\tconst deltaNearest = TIME_INTERVALS[nearestIndex][1] as number;\n\t\t\tconst oldNearestSpan = Math.abs(deltaNearest - duration);\n\t\t\tconst currentSpan = Math.abs(delta - duration);\n\t\t\treturn oldNearestSpan < currentSpan ? nearestIndex : i;\n\t\t},\n\t\t0\n\t);\n\treturn TIME_INTERVALS[index][0] as string;\n}\n\n// Given an array of timestamps, return the interval name\n// between 15seconds, minute, 30minutes, hourly, daily, weekly, monthly, quarterly, yearly\nexport function computeTimeIntervalName(ticks: number[]): string {\n\t// special case: if the dataset has only one datum, we show the tick in the most detailed way possible\n\tif (ticks.length === 1) {\n\t\treturn '15seconds';\n\t}\n\tconst differences = getConsecutiveDifferences(ticks);\n\tconst minDifference = min(differences);\n\treturn closestTimeIntervalName(minDifference);\n}\n\n// Return true if the day of the month (D = 1-31) is changed, false otherwise\nfunction isDayOfMonthChanged(timestamp: number): boolean {\n\tconst { s, m, H } = getTimeformats(timestamp);\n\treturn H === 0 && m === 0 && s === 0;\n}\n\n// Return true if the month (M = 1-12) is changed from previous tick's timestamp, false otherwise\nfunction isMonthChanged(\n\ttimestamp: number,\n\tpreviousTimestamp?: number\n): boolean {\n\tconst currentMonth = getTimeformats(timestamp).M;\n\tconst previousMonth = getTimeformats(previousTimestamp).M;\n\treturn currentMonth !== previousMonth;\n}\n\n// Return true if the year (YYYY) is changed, false otherwise\nfunction isYearChanged(timestamp: number): boolean {\n\tconst { M, d, s, m, H } = getTimeformats(timestamp);\n\treturn M === 1 && d === 1 && H === 0 && m === 0 && s === 0;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"time-series.js","sourceRoot":"","sources":["time-series.ts"],"names":[],"mappings":"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","sourcesContent":["import { format } from 'date-fns';\nimport { TimeScaleOptions } from '../interfaces/axis-scales';\nimport { Tools } from '../tools';\n\n// D3 Imports\nimport { min } from 'd3-array';\n\nexport const TIME_INTERVALS = [\n\t['15seconds', 15 * 1000],\n\t['minute', 60 * 1000],\n\t['30minutes', 30 * 60 * 1000],\n\t['hourly', 60 * 60 * 1000],\n\t['daily', 24 * 60 * 60 * 1000],\n\t['monthly', 30 * 24 * 60 * 60 * 1000],\n\t['quarterly', 3 * 30 * 24 * 60 * 60 * 1000],\n\t['yearly', 12 * 30 * 24 * 60 * 60 * 1000],\n];\n\n// Return true if the tick is a primary tick, false otherwise\nexport function isTickPrimary(\n\ttick: number,\n\ti: number,\n\tallTicks: Array<number>,\n\tinterval: string,\n\tshowDayName: boolean\n): boolean {\n\tconst isFirstTick = i === 0;\n\tconst hasANewWeekStarted = Number(format(new Date(tick), 'c')) === 2;\n\tconst isFirstQuarter = Number(format(new Date(tick), 'q')) === 1;\n\tconst previousTick = i !== 0 ? allTicks[i - 1] : null;\n\tswitch (interval) {\n\t\tcase '15seconds':\n\t\t\treturn (\n\t\t\t\tisFirstTick ||\n\t\t\t\tisDayOfMonthChanged(tick) ||\n\t\t\t\tisMonthChanged(tick, previousTick) ||\n\t\t\t\tisYearChanged(tick)\n\t\t\t);\n\t\tcase 'minute':\n\t\t\treturn (\n\t\t\t\tisFirstTick ||\n\t\t\t\tisDayOfMonthChanged(tick) ||\n\t\t\t\tisMonthChanged(tick, previousTick) ||\n\t\t\t\tisYearChanged(tick)\n\t\t\t);\n\t\tcase '30minutes':\n\t\t\treturn (\n\t\t\t\tisFirstTick ||\n\t\t\t\tisDayOfMonthChanged(tick) ||\n\t\t\t\tisMonthChanged(tick, previousTick) ||\n\t\t\t\tisYearChanged(tick)\n\t\t\t);\n\t\tcase 'hourly':\n\t\t\treturn (\n\t\t\t\tisFirstTick ||\n\t\t\t\tisDayOfMonthChanged(tick) ||\n\t\t\t\tisMonthChanged(tick, previousTick) ||\n\t\t\t\tisYearChanged(tick)\n\t\t\t);\n\t\tcase 'daily':\n\t\t\tif (!showDayName) {\n\t\t\t\t// daily\n\t\t\t\treturn (\n\t\t\t\t\tisFirstTick ||\n\t\t\t\t\tisMonthChanged(tick, previousTick) ||\n\t\t\t\t\tisYearChanged(tick)\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\t// weekly\n\t\t\t\treturn isFirstTick || hasANewWeekStarted || isYearChanged(tick);\n\t\t\t}\n\t\tcase 'monthly':\n\t\t\treturn isFirstTick || isYearChanged(tick);\n\t\tcase 'quarterly':\n\t\t\treturn isFirstTick || isFirstQuarter;\n\t\tcase 'yearly':\n\t\t\treturn false;\n\t\tdefault:\n\t\t\tthrow new Error(`${interval} is not a valid time interval.`);\n\t}\n}\n\n// Return the formatted current tick\nexport function formatTick(\n\ttick: number,\n\ti: number,\n\tallTicks: Array<number>,\n\tinterval: string,\n\ttimeScaleOptions: TimeScaleOptions\n): string {\n\tconst showDayName = timeScaleOptions.showDayName;\n\tconst intervalConsideringAlsoShowDayNameOption =\n\t\tinterval === 'daily' && showDayName ? 'weekly' : interval;\n\tconst date = new Date(tick);\n\tconst formats = Tools.getProperty(timeScaleOptions, 'timeIntervalFormats')[\n\t\tintervalConsideringAlsoShowDayNameOption\n\t];\n\tconst primary = Tools.getProperty(formats, 'primary');\n\tconst secondary = Tools.getProperty(formats, 'secondary');\n\tlet formatString = isTickPrimary(tick, i, allTicks, interval, showDayName)\n\t\t? primary\n\t\t: secondary;\n\n\t// if the interval, and the timestamp includes milliseconds value\n\tif (interval === '15seconds' && date.getMilliseconds() !== 0){\n\t\t// show milliseconds in tick\n\t\tformatString = formatString.replace('pp', 'h:m:s.SSS a');\n\t}\n\n\tconst locale = timeScaleOptions.localeObject;\n\n\treturn format(date, formatString, { locale });\n}\n\n// Given a timestamp, return an object of useful time formats\n// Use Unicode date field symbol (https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table)\nexport function getTimeformats(timestamp: number) {\n\tconst date = new Date(timestamp);\n\treturn {\n\t\tM: date.getMonth() + 1, // month: 1-12\n\t\td: date.getDate(), // day of the month: 1-31\n\t\tH: date.getHours(), // 24-hour clock: 0-23\n\t\tm: date.getMinutes(), // minute: 0-59\n\t\ts: date.getSeconds(), // seconds: 0-59\n\t};\n}\n\n// Find the differences between consecutive numbers in an array\nfunction getConsecutiveDifferences(elements: number[]): number[] {\n\tif (!elements) {\n\t\treturn;\n\t}\n\treturn elements.slice(1).map((elem, i) => elem - elements[i]);\n}\n\n// Given a duration in ms, return the closest TIME_INTERVAL name\nfunction closestTimeIntervalName(duration: number): string {\n\tconst index = TIME_INTERVALS.reduce(\n\t\t(nearestIndex, [intervalName, delta]: [string, number], i) => {\n\t\t\tconst deltaNearest = TIME_INTERVALS[nearestIndex][1] as number;\n\t\t\tconst oldNearestSpan = Math.abs(deltaNearest - duration);\n\t\t\tconst currentSpan = Math.abs(delta - duration);\n\t\t\treturn oldNearestSpan < currentSpan ? nearestIndex : i;\n\t\t},\n\t\t0\n\t);\n\treturn TIME_INTERVALS[index][0] as string;\n}\n\n// Given an array of timestamps, return the interval name\n// between 15seconds, minute, 30minutes, hourly, daily, weekly, monthly, quarterly, yearly\nexport function computeTimeIntervalName(ticks: number[]): string {\n\t// special case: if the dataset has only one datum, we show the tick in the most detailed way possible\n\tif (ticks.length === 1) {\n\t\treturn '15seconds';\n\t}\n\tconst differences = getConsecutiveDifferences(ticks);\n\tconst minDifference = min(differences);\n\treturn closestTimeIntervalName(minDifference);\n}\n\n// Return true if the day of the month (D = 1-31) is changed, false otherwise\nfunction isDayOfMonthChanged(timestamp: number): boolean {\n\tconst { s, m, H } = getTimeformats(timestamp);\n\treturn H === 0 && m === 0 && s === 0;\n}\n\n// Return true if the month (M = 1-12) is changed from previous tick's timestamp, false otherwise\nfunction isMonthChanged(\n\ttimestamp: number,\n\tpreviousTimestamp?: number\n): boolean {\n\tconst currentMonth = getTimeformats(timestamp).M;\n\tconst previousMonth = getTimeformats(previousTimestamp).M;\n\treturn currentMonth !== previousMonth;\n}\n\n// Return true if the year (YYYY) is changed, false otherwise\nfunction isYearChanged(timestamp: number): boolean {\n\tconst { M, d, s, m, H } = getTimeformats(timestamp);\n\treturn M === 1 && d === 1 && H === 0 && m === 0 && s === 0;\n}\n\n// Return string value of Date with milliseconds\nexport function formatDateTillMilliSeconds(date: Date) {\n\tif (date === undefined) {\n\t\treturn '';\n\t}\n\n\t// The only valid format with millisecond is ISO 8601\n\treturn date.toISOString();\n}\n"]}
|