@carbon/charts 1.6.9 → 1.6.14
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 +43 -0
- package/axis-chart.js +1 -1
- package/axis-chart.js.map +1 -1
- package/build/src/components/essentials/tooltip.d.ts +1 -1
- package/build/src/services/scales-cartesian.d.ts +1 -1
- package/build/src/tools.d.ts +2420 -151
- package/bundle.js +1 -1
- package/chart.js +1 -1
- package/chart.js.map +1 -1
- package/charts/alluvial.js +1 -1
- package/charts/alluvial.js.map +1 -1
- package/charts/area-stacked.js +1 -1
- package/charts/area-stacked.js.map +1 -1
- package/charts/area.js +1 -1
- package/charts/area.js.map +1 -1
- package/charts/bar-grouped.js +1 -1
- package/charts/bar-grouped.js.map +1 -1
- package/charts/bar-simple.js +1 -1
- package/charts/bar-simple.js.map +1 -1
- package/charts/bar-stacked.js +1 -1
- package/charts/bar-stacked.js.map +1 -1
- package/charts/boxplot.js +1 -1
- package/charts/boxplot.js.map +1 -1
- package/charts/bubble.js +1 -1
- package/charts/bubble.js.map +1 -1
- package/charts/bullet.js +1 -1
- package/charts/bullet.js.map +1 -1
- package/charts/circle-pack.js +1 -1
- package/charts/circle-pack.js.map +1 -1
- package/charts/combo.js +1 -1
- package/charts/combo.js.map +1 -1
- package/charts/donut.js +1 -1
- package/charts/donut.js.map +1 -1
- package/charts/gauge.js +1 -1
- package/charts/gauge.js.map +1 -1
- package/charts/heatmap.js +1 -1
- package/charts/heatmap.js.map +1 -1
- package/charts/histogram.js +1 -1
- package/charts/histogram.js.map +1 -1
- package/charts/line.js +1 -1
- package/charts/line.js.map +1 -1
- package/charts/lollipop.js +1 -1
- package/charts/lollipop.js.map +1 -1
- package/charts/meter.js +1 -1
- package/charts/meter.js.map +1 -1
- package/charts/pie.js +1 -1
- package/charts/pie.js.map +1 -1
- package/charts/radar.js +1 -1
- package/charts/radar.js.map +1 -1
- package/charts/scatter.js +1 -1
- package/charts/scatter.js.map +1 -1
- package/charts/tree.js +1 -1
- package/charts/tree.js.map +1 -1
- package/charts/treemap.js +1 -1
- package/charts/treemap.js.map +1 -1
- package/charts/wordcloud.js +1 -1
- package/charts/wordcloud.js.map +1 -1
- package/components/axes/axis.js +3 -3
- package/components/axes/axis.js.map +1 -1
- package/components/axes/grid.js +1 -1
- package/components/axes/grid.js.map +1 -1
- package/components/axes/hover-axis.js +1 -1
- package/components/axes/hover-axis.js.map +1 -1
- package/components/axes/ruler-binned.js +1 -1
- package/components/axes/ruler-binned.js.map +1 -1
- package/components/axes/ruler.js +1 -1
- package/components/axes/ruler.js.map +1 -1
- package/components/axes/toolbar.js +1 -1
- package/components/axes/toolbar.js.map +1 -1
- package/components/axes/two-dimensional-axes.js +1 -1
- package/components/axes/two-dimensional-axes.js.map +1 -1
- package/components/axes/zero-line.js +1 -1
- package/components/axes/zero-line.js.map +1 -1
- package/components/axes/zoom-bar.js +1 -1
- package/components/axes/zoom-bar.js.map +1 -1
- package/components/component.js +1 -1
- package/components/component.js.map +1 -1
- package/components/essentials/color-scale-legend.js +1 -1
- package/components/essentials/color-scale-legend.js.map +1 -1
- package/components/essentials/highlights.js +1 -1
- package/components/essentials/highlights.js.map +1 -1
- package/components/essentials/legend.js +1 -1
- package/components/essentials/legend.js.map +1 -1
- package/components/essentials/modal.js +1 -1
- package/components/essentials/modal.js.map +1 -1
- package/components/essentials/threshold.js +1 -1
- package/components/essentials/threshold.js.map +1 -1
- package/components/essentials/title-meter.js +1 -1
- package/components/essentials/title-meter.js.map +1 -1
- package/components/essentials/title.js +1 -1
- package/components/essentials/title.js.map +1 -1
- package/components/essentials/tooltip-axis.js +1 -1
- package/components/essentials/tooltip-axis.js.map +1 -1
- package/components/essentials/tooltip.d.ts +1 -1
- package/components/essentials/tooltip.js +33 -27
- package/components/essentials/tooltip.js.map +1 -1
- package/components/graphs/alluvial.js +1 -1
- package/components/graphs/alluvial.js.map +1 -1
- package/components/graphs/area-stacked.js +1 -1
- package/components/graphs/area-stacked.js.map +1 -1
- package/components/graphs/area.js +1 -1
- package/components/graphs/area.js.map +1 -1
- package/components/graphs/bar-grouped.js +1 -1
- package/components/graphs/bar-grouped.js.map +1 -1
- package/components/graphs/bar-simple.js +1 -1
- package/components/graphs/bar-simple.js.map +1 -1
- package/components/graphs/bar-stacked.js +1 -1
- package/components/graphs/bar-stacked.js.map +1 -1
- package/components/graphs/bar.js +1 -1
- package/components/graphs/bar.js.map +1 -1
- package/components/graphs/boxplot.js +1 -1
- package/components/graphs/boxplot.js.map +1 -1
- package/components/graphs/bubble.js +1 -1
- package/components/graphs/bubble.js.map +1 -1
- package/components/graphs/bullet.js +1 -1
- package/components/graphs/bullet.js.map +1 -1
- package/components/graphs/circle-pack.js +1 -1
- package/components/graphs/circle-pack.js.map +1 -1
- package/components/graphs/donut.js +1 -1
- package/components/graphs/donut.js.map +1 -1
- package/components/graphs/gauge.js +1 -1
- package/components/graphs/gauge.js.map +1 -1
- package/components/graphs/heatmap.js +1 -1
- package/components/graphs/heatmap.js.map +1 -1
- package/components/graphs/histogram.js +1 -1
- package/components/graphs/histogram.js.map +1 -1
- package/components/graphs/line.js +1 -1
- package/components/graphs/line.js.map +1 -1
- package/components/graphs/lollipop.js +1 -1
- package/components/graphs/lollipop.js.map +1 -1
- package/components/graphs/meter.js +1 -1
- package/components/graphs/meter.js.map +1 -1
- package/components/graphs/pie.js +1 -1
- package/components/graphs/pie.js.map +1 -1
- package/components/graphs/radar.js +1 -1
- package/components/graphs/radar.js.map +1 -1
- package/components/graphs/scatter-stacked.js +1 -1
- package/components/graphs/scatter-stacked.js.map +1 -1
- package/components/graphs/scatter.js +1 -1
- package/components/graphs/scatter.js.map +1 -1
- package/components/graphs/skeleton-lines.js +1 -1
- package/components/graphs/skeleton-lines.js.map +1 -1
- package/components/graphs/skeleton.js +1 -1
- package/components/graphs/skeleton.js.map +1 -1
- package/components/graphs/tree.js +1 -1
- package/components/graphs/tree.js.map +1 -1
- package/components/graphs/treemap.js +1 -1
- package/components/graphs/treemap.js.map +1 -1
- package/components/graphs/wordcloud.js +1 -1
- package/components/graphs/wordcloud.js.map +1 -1
- package/components/layout/layout.js +1 -1
- package/components/layout/layout.js.map +1 -1
- package/configuration.js +1 -1
- package/configuration.js.map +1 -1
- package/demo/styles.css +1 -1
- package/demo/styles.css.map +1 -1
- package/demo/styles.min.css +1 -1
- package/demo/styles.min.css.map +1 -1
- package/model/boxplot.js +1 -1
- package/model/boxplot.js.map +1 -1
- package/model/bullet.js +1 -1
- package/model/bullet.js.map +1 -1
- package/model/cartesian-charts.js +1 -1
- package/model/cartesian-charts.js.map +1 -1
- package/model/circle-pack.js +1 -1
- package/model/circle-pack.js.map +1 -1
- package/model/heatmap.js +1 -1
- package/model/heatmap.js.map +1 -1
- package/model/meter.js +1 -1
- package/model/meter.js.map +1 -1
- package/model/model.js +1 -1
- package/model/model.js.map +1 -1
- package/model/radar.js +1 -1
- package/model/radar.js.map +1 -1
- package/model/treemap.js +1 -1
- package/model/treemap.js.map +1 -1
- package/package.json +1 -1
- package/services/essentials/dom-utils.js +1 -1
- package/services/essentials/dom-utils.js.map +1 -1
- package/services/essentials/transitions.js +1 -1
- package/services/essentials/transitions.js.map +1 -1
- package/services/scales-cartesian.js +1 -1
- package/services/scales-cartesian.js.map +1 -1
- package/services/time-series.js +1 -1
- package/services/time-series.js.map +1 -1
- package/services/zoom.js +1 -1
- package/services/zoom.js.map +1 -1
- package/styles/components/_tooltip.scss +4 -1
- package/styles.css +1 -1
- package/styles.css.map +1 -1
- package/styles.min.css +1 -1
- package/styles.min.css.map +1 -1
- package/tools.d.ts +141 -155
- package/tools.js +315 -344
- package/tools.js.map +1 -1
- package/tsconfig.tsbuildinfo +91 -91
package/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["tools.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal imports\nimport {\n\tAxisChartOptions,\n\tCartesianOrientations,\n\tScaleTypes,\n\tTruncationTypes,\n\tLegendItemType,\n} from './interfaces';\n\nimport { defaultLegendAdditionalItems } from './configuration-non-customizable';\n\nimport {\n\tdebounce as lodashDebounce,\n\tmerge as lodashMerge,\n\tcloneDeep as lodashCloneDeep,\n\tunionBy as lodashUnionBy,\n\tuniq as lodashUnique,\n\tclamp as lodashClamp,\n\tflatten as lodashFlatten,\n\tgroupBy as lodashGroupBy,\n\tcamelCase as lodashCamelCase,\n\tisEmpty as lodashIsEmpty,\n\tisEqual as lodashIsEqual,\n\tflatMapDeep as lodashFlatMapDeep,\n\tkebabCase as lodashKebabCase,\n\tfromPairs as lodashFromPairs,\n\tsome as lodashSome,\n\t// the imports below are needed because of typescript bug (error TS4029)\n\tCancelable,\n\tDebounceSettings,\n} from 'lodash-es';\n\n// D3 Imports\n// @ts-ignore\n// ts-ignore is needed because `@types/d3`\n// is missing the `pointer` function\nimport { pointer } from 'd3-selection';\nimport { Numeric } from 'd3-array';\n\n// Functions\nexport namespace Tools {\n\t// Export these functions from lodash\n\texport const debounce = lodashDebounce;\n\texport const clone = lodashCloneDeep;\n\texport const merge = lodashMerge;\n\texport const unionBy = lodashUnionBy;\n\texport const removeArrayDuplicates = lodashUnique;\n\texport const clamp = lodashClamp;\n\texport const flatten = lodashFlatten;\n\texport const groupBy = lodashGroupBy;\n\texport const camelCase = lodashCamelCase;\n\texport const isEmpty = lodashIsEmpty;\n\texport const isEqual = lodashIsEqual;\n\texport const flatMapDeep = lodashFlatMapDeep;\n\texport const kebabCase = lodashKebabCase;\n\texport const fromPairs = lodashFromPairs;\n\texport const some = lodashSome;\n\n\texport function debounceWithD3MousePosition(fn, delay, holder) {\n\t\tvar timer = null;\n\t\treturn function () {\n\t\t\tconst context = this;\n\t\t\tconst args = arguments;\n\n\t\t\t//we get the D3 event here\n\t\t\tcontext.mousePosition = pointer(args[0], holder);\n\n\t\t\tclearTimeout(timer);\n\n\t\t\ttimer = setTimeout(function () {\n\t\t\t\t// and use the reference here\n\t\t\t\tfn.apply(context, args);\n\t\t\t}, delay);\n\t\t};\n\t}\n\n\t/**\n\t * Returns default chart options merged with provided options,\n\t * with special cases for axes.\n\t * Axes object will not merge the not provided axes.\n\t *\n\t * @export\n\t * @param {AxisChartOptions} defaultOptions Configuration.options[chartType]\n\t * @param {AxisChartOptions} providedOptions user provided options\n\t * @returns merged options\n\t */\n\texport function mergeDefaultChartOptions(\n\t\tdefaultOptions: any,\n\t\tprovidedOptions: any\n\t) {\n\t\tconst clonedDefaultOptions = Tools.clone(defaultOptions);\n\t\tconst providedAxesNames = Object.keys(providedOptions.axes || {});\n\n\t\t// Use provide controls list if it exists\n\t\t// Prevents merging and element overriding of the two lists\n\t\tif (providedOptions?.toolbar?.controls) {\n\t\t\tdelete clonedDefaultOptions.toolbar.controls;\n\t\t}\n\n\t\tif (providedAxesNames.length === 0) {\n\t\t\tdelete clonedDefaultOptions.axes;\n\t\t}\n\n\t\t// Update deprecated options to work with the tabular data format\n\t\t// Similar to the functionality in model.transformToTabularData()\n\t\tfor (const axisName in clonedDefaultOptions.axes) {\n\t\t\tif (providedAxesNames.includes(axisName)) {\n\t\t\t\tconst providedAxisOptions = providedOptions.axes[axisName];\n\n\t\t\t\tif (\n\t\t\t\t\tprovidedAxisOptions['primary'] ||\n\t\t\t\t\tprovidedAxisOptions['secondary']\n\t\t\t\t) {\n\t\t\t\t\tconsole.warn(\n\t\t\t\t\t\t'`primary` & `secondary` are no longer needed for axis configurations. Read more here https://carbon-design-system.github.io/carbon-charts/?path=/story/docs-tutorials--tabular-data-format'\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst identifier = providedAxisOptions['mapsTo'];\n\t\t\t\tif (identifier === undefined || identifier === null) {\n\t\t\t\t\tconst scaleType = providedAxisOptions['scaleType'];\n\n\t\t\t\t\tif (scaleType === undefined || scaleType === null) {\n\t\t\t\t\t\tprovidedAxisOptions['mapsTo'] = 'value';\n\t\t\t\t\t} else if (scaleType === ScaleTypes.TIME) {\n\t\t\t\t\t\tprovidedAxisOptions['mapsTo'] = 'date';\n\t\t\t\t\t} else if (scaleType === ScaleTypes.LABELS) {\n\t\t\t\t\t\tprovidedAxisOptions['mapsTo'] = 'key';\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdelete clonedDefaultOptions.axes[axisName];\n\t\t\t}\n\t\t}\n\n\t\tupdateLegendAdditionalItems(clonedDefaultOptions, providedOptions);\n\n\t\treturn Tools.merge(clonedDefaultOptions, providedOptions);\n\t}\n\n\t/**************************************\n\t * DOM-related operations *\n\t *************************************/\n\n\t/**\n\t * Get width & height of an element\n\t *\n\t * @export\n\t * @param {any} el element to get dimensions from\n\t * @returns an object containing the width and height of el\n\t */\n\texport function getDimensions(el) {\n\t\treturn {\n\t\t\twidth: parseFloat(\n\t\t\t\tel.style.width.replace('px', '') || el.offsetWidth\n\t\t\t),\n\t\t\theight: parseFloat(\n\t\t\t\tel.style.height.replace('px', '') || el.offsetHeight\n\t\t\t),\n\t\t};\n\t}\n\n\t/**\n\t * Gets elements's x and y translations from transform attribute or returns null\n\t *\n\t * @param {HTMLElement} element\n\t * @returns an object containing the translated x and y values or null\n\t */\n\texport function getTranslationValues(elementRef: HTMLElement) {\n\t\tif (!elementRef) {\n\t\t\treturn;\n\t\t}\n\n\t\t// regex to ONLY get values for translate (instead of all rotate, translate, skew, etc)\n\t\tconst translateRegex = /translate\\([0-9]+\\.?[0-9]*,[0-9]+\\.?[0-9]*\\)/;\n\n\t\tconst transformStr = elementRef\n\t\t\t.getAttribute('transform')\n\t\t\t.match(translateRegex);\n\t\tif (!transformStr) {\n\t\t\treturn null;\n\t\t}\n\n\t\t// check for the match\n\t\tif (transformStr[0]) {\n\t\t\tconst transforms = transformStr[0]\n\t\t\t\t.replace(/translate\\(/, '')\n\t\t\t\t.replace(/\\)/, '')\n\t\t\t\t.split(',');\n\n\t\t\treturn {\n\t\t\t\ttx: transforms[0],\n\t\t\t\tty: transforms[1],\n\t\t\t};\n\t\t}\n\t\treturn null;\n\t}\n\n\t/**************************************\n\t * Formatting & calculations *\n\t *************************************/\n\n\t/**\n\t * Gets x and y coordinates from HTML transform attribute\n\t *\n\t * @export\n\t * @param {any} string the transform attribute string ie. transform(x,y)\n\t * @returns Returns an object with x and y offsets of the transform\n\t */\n\texport function getTranformOffsets(string) {\n\t\tconst regExp = /\\(([^)]+)\\)/;\n\t\tconst match = regExp.exec(string)[1];\n\t\tconst xyString = match.split(',');\n\n\t\treturn {\n\t\t\tx: parseFloat(xyString[0]),\n\t\t\ty: parseFloat(xyString[1]),\n\t\t};\n\t}\n\n\t/**\n\t * Returns string value for height/width using pixels if there isn't a specified unit of measure\n\t *\n\t * @param value string or number value to be checked for unit of measure\n\t */\n\texport function formatWidthHeightValues(value) {\n\t\tconst stringValue = value.toString();\n\n\t\t// If the value provided contains any letters\n\t\t// Return it the same way\n\t\tif (stringValue.match(/[a-z]/i)) {\n\t\t\treturn stringValue;\n\t\t}\n\n\t\treturn stringValue + 'px';\n\t}\n\n\t/**\n\t * Capitalizes first letter of a string\n\t *\n\t * @export\n\t * @param {any} string the input string to perform first letter capitalization with\n\t * @returns The transformed string after first letter is capitalized\n\t */\n\texport function capitalizeFirstLetter(string) {\n\t\treturn string[0].toUpperCase() + string.slice(1);\n\t}\n\n\t/**\n\t * Get the percentage of a datapoint compared to the entire dataset.\n\t * @export\n\t * @param {any} item\n\t * @param {any} fullData\n\t * @param {string} key\n\t * @returns The percentage in the form of a number (1 significant digit if necessary)\n\t */\n\texport function convertValueToPercentage(item, fullData, key = 'value') {\n\t\tconst percentage =\n\t\t\t(item / fullData.reduce((accum, val) => accum + val[key], 0)) * 100;\n\t\t// if the value has any significant figures, keep 1\n\t\treturn percentage % 1 !== 0\n\t\t\t? parseFloat(percentage.toFixed(1))\n\t\t\t: percentage;\n\t}\n\n\t/**\n\t * Truncate the labels\n\t * @export\n\t * @param {any} fullText\n\t * @param {any} truncationType\n\t * @param {any} numCharacter\n\t * @returns Truncated text\n\t */\n\texport function truncateLabel(fullText, truncationType, numCharacter) {\n\t\tif (numCharacter > fullText.length) {\n\t\t\treturn fullText;\n\t\t}\n\t\tif (truncationType === TruncationTypes.MID_LINE) {\n\t\t\treturn (\n\t\t\t\tfullText.substr(0, numCharacter / 2) +\n\t\t\t\t'...' +\n\t\t\t\tfullText.substr(-numCharacter / 2)\n\t\t\t);\n\t\t} else if (truncationType === TruncationTypes.FRONT_LINE) {\n\t\t\treturn '...' + fullText.substr(-numCharacter);\n\t\t} else if (truncationType === TruncationTypes.END_LINE) {\n\t\t\treturn fullText.substr(0, numCharacter) + '...';\n\t\t}\n\t}\n\n\t/**\n\t * Update legend additional items\n\t * @param {any} defaultOptions\n\t * @param {any} providedOptions\n\t */\n\texport function updateLegendAdditionalItems(\n\t\tdefaultOptions,\n\t\tprovidedOptions\n\t) {\n\t\tlet defaultAdditionalItems = Tools.getProperty(\n\t\t\tdefaultOptions,\n\t\t\t'legend',\n\t\t\t'additionalItems'\n\t\t);\n\t\tconst userProvidedAdditionalItems = Tools.getProperty(\n\t\t\tprovidedOptions,\n\t\t\t'legend',\n\t\t\t'additionalItems'\n\t\t);\n\n\t\t// Retain default legend additional items\n\t\tif (defaultAdditionalItems && userProvidedAdditionalItems) {\n\t\t\tconst providedTypes = userProvidedAdditionalItems.map(\n\t\t\t\t(item) => item.type\n\t\t\t);\n\n\t\t\tconst defaultTypes = defaultAdditionalItems.map(\n\t\t\t\t(item) => item.type\n\t\t\t);\n\n\t\t\t// Get default items in default options but not in provided options\n\t\t\tconst updatedDefaultItems = defaultLegendAdditionalItems.filter(\n\t\t\t\t(item) =>\n\t\t\t\t\tdefaultTypes.includes(item.type) &&\n\t\t\t\t\t!providedTypes.includes(item.type)\n\t\t\t);\n\n\t\t\tdefaultOptions.legend.additionalItems = updatedDefaultItems;\n\n\t\t\tprovidedOptions.legend.additionalItems = Tools.unionBy(\n\t\t\t\tupdatedDefaultItems,\n\t\t\t\tuserProvidedAdditionalItems,\n\t\t\t\t'name'\n\t\t\t);\n\t\t}\n\t}\n\n\t/**************************************\n\t * Object/array related checks *\n\t *************************************/\n\n\t/**\n\t * Compares two arrays to return the difference between two arrays' items.\n\t *\n\t * @export\n\t * @param {any[]} oldArray the array to check for missing items\n\t * @param {any[]} newArray the array to check for newly added items\n\t * @returns An object containing items missing (existing in oldArray but not newArray)\n\t * and items added (existing in newArray but not in oldArray). Object is of the form { missing: [], added: [] }\n\t */\n\texport function arrayDifferences(oldArray: any[], newArray: any[]) {\n\t\tconst difference = {\n\t\t\tmissing: [],\n\t\t\tadded: [],\n\t\t};\n\n\t\toldArray.forEach((element) => {\n\t\t\tif (newArray.indexOf(element) === -1) {\n\t\t\t\tdifference.missing.push(element);\n\t\t\t}\n\t\t});\n\n\t\tnewArray.forEach((element) => {\n\t\t\tif (oldArray.indexOf(element) === -1) {\n\t\t\t\tdifference.added.push(element);\n\t\t\t}\n\t\t});\n\n\t\treturn difference;\n\t}\n\n\t/**\n\t * Gets the duplicated keys from an array of data\n\t *\n\t * @export\n\t * @param {*} data - array of data\n\t * @returns A list of the duplicated keys in data\n\t */\n\texport function getDuplicateValues(arr: any) {\n\t\tconst values = [];\n\t\tconst duplicateValues = [];\n\n\t\tarr.forEach((value) => {\n\t\t\tif (\n\t\t\t\tvalues.indexOf(value) !== -1 &&\n\t\t\t\tduplicateValues.indexOf(value) === -1\n\t\t\t) {\n\t\t\t\tduplicateValues.push(value);\n\t\t\t}\n\n\t\t\tvalues.push(value);\n\t\t});\n\n\t\treturn duplicateValues;\n\t}\n\n\t// ================================================================================\n\t// D3 Extensions\n\t// ================================================================================\n\n\t/**\n\t * In D3, moves an element to the front of the canvas\n\t *\n\t * @export\n\t * @param {any} element input element to moved in front\n\t * @returns The function to be used by D3 to push element to the top of the canvas\n\t */\n\texport function moveToFront(element) {\n\t\treturn element.each(function () {\n\t\t\tthis.parentNode.appendChild(this);\n\t\t});\n\t}\n\n\t// ================================================================================\n\t// Style Helpers\n\t// ================================================================================\n\n\t/**\n\t * Gets a speicified property from within an object.\n\t *\n\t * @param object the object containing the property to retrieve\n\t * @param propPath nested properties used to extract the final property from within the object\n\t * (i.e \"style\", \"color\" would retrieve the color property from within an object that has \"color\" nested within \"style\")\n\t */\n\texport const getProperty = (object, ...propPath) => {\n\t\tlet position = object;\n\t\tif (position) {\n\t\t\tfor (const prop of propPath) {\n\t\t\t\tif (position[prop] !== null && position[prop] !== undefined) {\n\t\t\t\t\tposition = position[prop];\n\t\t\t\t} else {\n\t\t\t\t\treturn null;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn position;\n\t\t}\n\n\t\treturn null;\n\t};\n\n\tinterface SVGPathCoordinates {\n\t\tx0: number;\n\t\tx1: number;\n\t\ty0: number;\n\t\ty1: number;\n\t}\n\n\texport const flipSVGCoordinatesBasedOnOrientation = (\n\t\tverticalCoordinates: SVGPathCoordinates,\n\t\torientation?: CartesianOrientations\n\t) => {\n\t\tif (orientation === CartesianOrientations.HORIZONTAL) {\n\t\t\treturn {\n\t\t\t\ty0: verticalCoordinates.x0,\n\t\t\t\ty1: verticalCoordinates.x1,\n\t\t\t\tx0: verticalCoordinates.y0,\n\t\t\t\tx1: verticalCoordinates.y1,\n\t\t\t};\n\t\t}\n\n\t\treturn verticalCoordinates;\n\t};\n\n\texport const generateSVGPathString = (\n\t\tverticalCoordinates: SVGPathCoordinates,\n\t\torientation?: CartesianOrientations\n\t) => {\n\t\tconst { x0, x1, y0, y1 } = flipSVGCoordinatesBasedOnOrientation(\n\t\t\tverticalCoordinates,\n\t\t\torientation\n\t\t);\n\n\t\treturn `M${x0},${y0}L${x0},${y1}L${x1},${y1}L${x1},${y0}L${x0},${y0}`;\n\t};\n\n\texport function flipDomainAndRangeBasedOnOrientation<D, R>(\n\t\tdomain: D,\n\t\trange: R,\n\t\torientation?: CartesianOrientations\n\t): [D, R] | [R, D] {\n\t\treturn orientation === CartesianOrientations.VERTICAL\n\t\t\t? [domain, range]\n\t\t\t: [range, domain];\n\t}\n\n\texport const compareNumeric = (a: Numeric, b: Numeric) =>\n\t\tNumber(a) === Number(b);\n}\n"]}
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["tools.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal imports\nimport {\n\tAxisChartOptions,\n\tCartesianOrientations,\n\tScaleTypes,\n\tTruncationTypes,\n\tLegendItemType,\n} from './interfaces';\n\nimport { defaultLegendAdditionalItems } from './configuration-non-customizable';\n\nimport {\n\tdebounce,\n\tmerge,\n\tcloneDeep,\n\tunionBy,\n\tuniq,\n\tclamp,\n\tflatten,\n\tgroupBy,\n\tcamelCase,\n\tisEmpty,\n\tisEqual,\n\tflatMapDeep,\n\tkebabCase,\n\tfromPairs,\n\tsome,\n\t// the imports below are needed because of typescript bug (error TS4029)\n\tCancelable,\n\tDebounceSettings,\n} from 'lodash-es';\n\n// D3 Imports\n// @ts-ignore\n// ts-ignore is needed because `@types/d3`\n// is missing the `pointer` function\nimport { pointer } from 'd3-selection';\nimport { Numeric } from 'd3-array';\n\n// Functions\n\n// Export these functions from lodash\nexport {\n\tdebounce,\n\tmerge,\n\tunionBy,\n\tclamp,\n\tflatten,\n\tgroupBy,\n\tcamelCase,\n\tisEmpty,\n\tisEqual,\n\tflatMapDeep,\n\tkebabCase,\n\tfromPairs,\n\tsome,\n};\nexport const clone = cloneDeep;\nexport const removeArrayDuplicates = uniq;\n\nexport function debounceWithD3MousePosition(fn, delay, holder) {\n\tvar timer = null;\n\treturn function () {\n\t\tconst context = this;\n\t\tconst args = arguments;\n\n\t\t//we get the D3 event here\n\t\tcontext.mousePosition = pointer(args[0], holder);\n\n\t\tclearTimeout(timer);\n\n\t\ttimer = setTimeout(function () {\n\t\t\t// and use the reference here\n\t\t\tfn.apply(context, args);\n\t\t}, delay);\n\t};\n}\n\n/**\n * Returns default chart options merged with provided options,\n * with special cases for axes.\n * Axes object will not merge the not provided axes.\n *\n * @export\n * @param {AxisChartOptions} defaultOptions Configuration.options[chartType]\n * @param {AxisChartOptions} providedOptions user provided options\n * @returns merged options\n */\nexport function mergeDefaultChartOptions(\n\tdefaultOptions: any,\n\tprovidedOptions: any\n) {\n\tconst clonedDefaultOptions = clone(defaultOptions);\n\tconst providedAxesNames = Object.keys(providedOptions.axes || {});\n\n\t// Use provide controls list if it exists\n\t// Prevents merging and element overriding of the two lists\n\tif (providedOptions?.toolbar?.controls) {\n\t\tdelete clonedDefaultOptions.toolbar.controls;\n\t}\n\n\tif (providedAxesNames.length === 0) {\n\t\tdelete clonedDefaultOptions.axes;\n\t}\n\n\t// Update deprecated options to work with the tabular data format\n\t// Similar to the functionality in model.transformToTabularData()\n\tfor (const axisName in clonedDefaultOptions.axes) {\n\t\tif (providedAxesNames.includes(axisName)) {\n\t\t\tconst providedAxisOptions = providedOptions.axes[axisName];\n\n\t\t\tif (\n\t\t\t\tprovidedAxisOptions['primary'] ||\n\t\t\t\tprovidedAxisOptions['secondary']\n\t\t\t) {\n\t\t\t\tconsole.warn(\n\t\t\t\t\t'`primary` & `secondary` are no longer needed for axis configurations. Read more here https://carbon-design-system.github.io/carbon-charts/?path=/story/docs-tutorials--tabular-data-format'\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tconst identifier = providedAxisOptions['mapsTo'];\n\t\t\tif (identifier === undefined || identifier === null) {\n\t\t\t\tconst scaleType = providedAxisOptions['scaleType'];\n\n\t\t\t\tif (scaleType === undefined || scaleType === null) {\n\t\t\t\t\tprovidedAxisOptions['mapsTo'] = 'value';\n\t\t\t\t} else if (scaleType === ScaleTypes.TIME) {\n\t\t\t\t\tprovidedAxisOptions['mapsTo'] = 'date';\n\t\t\t\t} else if (scaleType === ScaleTypes.LABELS) {\n\t\t\t\t\tprovidedAxisOptions['mapsTo'] = 'key';\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tdelete clonedDefaultOptions.axes[axisName];\n\t\t}\n\t}\n\n\tupdateLegendAdditionalItems(clonedDefaultOptions, providedOptions);\n\n\treturn merge(clonedDefaultOptions, providedOptions);\n}\n\n/**************************************\n * DOM-related operations *\n *************************************/\n\n/**\n * Get width & height of an element\n *\n * @export\n * @param {any} el element to get dimensions from\n * @returns an object containing the width and height of el\n */\nexport function getDimensions(el) {\n\treturn {\n\t\twidth: parseFloat(\n\t\t\tel.style.width.replace('px', '') || el.offsetWidth\n\t\t),\n\t\theight: parseFloat(\n\t\t\tel.style.height.replace('px', '') || el.offsetHeight\n\t\t),\n\t};\n}\n\n/**\n * Gets elements's x and y translations from transform attribute or returns null\n *\n * @param {HTMLElement} element\n * @returns an object containing the translated x and y values or null\n */\nexport function getTranslationValues(elementRef: HTMLElement) {\n\tif (!elementRef) {\n\t\treturn;\n\t}\n\n\t// regex to ONLY get values for translate (instead of all rotate, translate, skew, etc)\n\tconst translateRegex = /translate\\([0-9]+\\.?[0-9]*,[0-9]+\\.?[0-9]*\\)/;\n\n\tconst transformStr = elementRef\n\t\t.getAttribute('transform')\n\t\t.match(translateRegex);\n\tif (!transformStr) {\n\t\treturn null;\n\t}\n\n\t// check for the match\n\tif (transformStr[0]) {\n\t\tconst transforms = transformStr[0]\n\t\t\t.replace(/translate\\(/, '')\n\t\t\t.replace(/\\)/, '')\n\t\t\t.split(',');\n\n\t\treturn {\n\t\t\ttx: transforms[0],\n\t\t\tty: transforms[1],\n\t\t};\n\t}\n\treturn null;\n}\n\n/**************************************\n * Formatting & calculations *\n *************************************/\n\n/**\n * Gets x and y coordinates from HTML transform attribute\n *\n * @export\n * @param {any} string the transform attribute string ie. transform(x,y)\n * @returns Returns an object with x and y offsets of the transform\n */\nexport function getTranformOffsets(string) {\n\tconst regExp = /\\(([^)]+)\\)/;\n\tconst match = regExp.exec(string)[1];\n\tconst xyString = match.split(',');\n\n\treturn {\n\t\tx: parseFloat(xyString[0]),\n\t\ty: parseFloat(xyString[1]),\n\t};\n}\n\n/**\n * Returns string value for height/width using pixels if there isn't a specified unit of measure\n *\n * @param value string or number value to be checked for unit of measure\n */\nexport function formatWidthHeightValues(value) {\n\tconst stringValue = value.toString();\n\n\t// If the value provided contains any letters\n\t// Return it the same way\n\tif (stringValue.match(/[a-z]/i)) {\n\t\treturn stringValue;\n\t}\n\n\treturn stringValue + 'px';\n}\n\n/**\n * Capitalizes first letter of a string\n *\n * @export\n * @param {any} string the input string to perform first letter capitalization with\n * @returns The transformed string after first letter is capitalized\n */\nexport function capitalizeFirstLetter(string) {\n\treturn string[0].toUpperCase() + string.slice(1);\n}\n\n/**\n * Get the percentage of a datapoint compared to the entire dataset.\n * @export\n * @param {any} item\n * @param {any} fullData\n * @param {string} key\n * @returns The percentage in the form of a number (1 significant digit if necessary)\n */\nexport function convertValueToPercentage(item, fullData, key = 'value') {\n\tconst percentage =\n\t\t(item / fullData.reduce((accum, val) => accum + val[key], 0)) * 100;\n\t// if the value has any significant figures, keep 1\n\treturn percentage % 1 !== 0\n\t\t? parseFloat(percentage.toFixed(1))\n\t\t: percentage;\n}\n\n/**\n * Truncate the labels\n * @export\n * @param {any} fullText\n * @param {any} truncationType\n * @param {any} numCharacter\n * @returns Truncated text\n */\nexport function truncateLabel(fullText, truncationType, numCharacter) {\n\tif (numCharacter > fullText.length) {\n\t\treturn fullText;\n\t}\n\tif (truncationType === TruncationTypes.MID_LINE) {\n\t\treturn (\n\t\t\tfullText.substr(0, numCharacter / 2) +\n\t\t\t'...' +\n\t\t\tfullText.substr(-numCharacter / 2)\n\t\t);\n\t} else if (truncationType === TruncationTypes.FRONT_LINE) {\n\t\treturn '...' + fullText.substr(-numCharacter);\n\t} else if (truncationType === TruncationTypes.END_LINE) {\n\t\treturn fullText.substr(0, numCharacter) + '...';\n\t}\n}\n\n/**\n * Update legend additional items\n * @param {any} defaultOptions\n * @param {any} providedOptions\n */\nexport function updateLegendAdditionalItems(\n\tdefaultOptions,\n\tprovidedOptions\n) {\n\tlet defaultAdditionalItems = getProperty(\n\t\tdefaultOptions,\n\t\t'legend',\n\t\t'additionalItems'\n\t);\n\tconst userProvidedAdditionalItems = getProperty(\n\t\tprovidedOptions,\n\t\t'legend',\n\t\t'additionalItems'\n\t);\n\n\t// Retain default legend additional items\n\tif (defaultAdditionalItems && userProvidedAdditionalItems) {\n\t\tconst providedTypes = userProvidedAdditionalItems.map(\n\t\t\t(item) => item.type\n\t\t);\n\n\t\tconst defaultTypes = defaultAdditionalItems.map(\n\t\t\t(item) => item.type\n\t\t);\n\n\t\t// Get default items in default options but not in provided options\n\t\tconst updatedDefaultItems = defaultLegendAdditionalItems.filter(\n\t\t\t(item) =>\n\t\t\t\tdefaultTypes.includes(item.type) &&\n\t\t\t\t!providedTypes.includes(item.type)\n\t\t);\n\n\t\tdefaultOptions.legend.additionalItems = updatedDefaultItems;\n\n\t\tprovidedOptions.legend.additionalItems = unionBy(\n\t\t\tupdatedDefaultItems,\n\t\t\tuserProvidedAdditionalItems,\n\t\t\t'name'\n\t\t);\n\t}\n}\n\n/**************************************\n * Object/array related checks *\n *************************************/\n\n/**\n * Compares two arrays to return the difference between two arrays' items.\n *\n * @export\n * @param {any[]} oldArray the array to check for missing items\n * @param {any[]} newArray the array to check for newly added items\n * @returns An object containing items missing (existing in oldArray but not newArray)\n * and items added (existing in newArray but not in oldArray). Object is of the form { missing: [], added: [] }\n */\nexport function arrayDifferences(oldArray: any[], newArray: any[]) {\n\tconst difference = {\n\t\tmissing: [],\n\t\tadded: [],\n\t};\n\n\toldArray.forEach((element) => {\n\t\tif (newArray.indexOf(element) === -1) {\n\t\t\tdifference.missing.push(element);\n\t\t}\n\t});\n\n\tnewArray.forEach((element) => {\n\t\tif (oldArray.indexOf(element) === -1) {\n\t\t\tdifference.added.push(element);\n\t\t}\n\t});\n\n\treturn difference;\n}\n\n/**\n * Gets the duplicated keys from an array of data\n *\n * @export\n * @param {*} data - array of data\n * @returns A list of the duplicated keys in data\n */\nexport function getDuplicateValues(arr: any) {\n\tconst values = [];\n\tconst duplicateValues = [];\n\n\tarr.forEach((value) => {\n\t\tif (\n\t\t\tvalues.indexOf(value) !== -1 &&\n\t\t\tduplicateValues.indexOf(value) === -1\n\t\t) {\n\t\t\tduplicateValues.push(value);\n\t\t}\n\n\t\tvalues.push(value);\n\t});\n\n\treturn duplicateValues;\n}\n\n// ================================================================================\n// D3 Extensions\n// ================================================================================\n\n/**\n * In D3, moves an element to the front of the canvas\n *\n * @export\n * @param {any} element input element to moved in front\n * @returns The function to be used by D3 to push element to the top of the canvas\n */\nexport function moveToFront(element) {\n\treturn element.each(function () {\n\t\tthis.parentNode.appendChild(this);\n\t});\n}\n\n// ================================================================================\n// Style Helpers\n// ================================================================================\n\n/**\n * Gets a speicified property from within an object.\n *\n * @param object the object containing the property to retrieve\n * @param propPath nested properties used to extract the final property from within the object\n * (i.e \"style\", \"color\" would retrieve the color property from within an object that has \"color\" nested within \"style\")\n */\nexport const getProperty = (object, ...propPath) => {\n\tlet position = object;\n\tif (position) {\n\t\tfor (const prop of propPath) {\n\t\t\tif (position[prop] !== null && position[prop] !== undefined) {\n\t\t\t\tposition = position[prop];\n\t\t\t} else {\n\t\t\t\treturn null;\n\t\t\t}\n\t\t}\n\t\treturn position;\n\t}\n\n\treturn null;\n};\n\ninterface SVGPathCoordinates {\n\tx0: number;\n\tx1: number;\n\ty0: number;\n\ty1: number;\n}\n\nexport const flipSVGCoordinatesBasedOnOrientation = (\n\tverticalCoordinates: SVGPathCoordinates,\n\torientation?: CartesianOrientations\n) => {\n\tif (orientation === CartesianOrientations.HORIZONTAL) {\n\t\treturn {\n\t\t\ty0: verticalCoordinates.x0,\n\t\t\ty1: verticalCoordinates.x1,\n\t\t\tx0: verticalCoordinates.y0,\n\t\t\tx1: verticalCoordinates.y1,\n\t\t};\n\t}\n\n\treturn verticalCoordinates;\n};\n\nexport const generateSVGPathString = (\n\tverticalCoordinates: SVGPathCoordinates,\n\torientation?: CartesianOrientations\n) => {\n\tconst { x0, x1, y0, y1 } = flipSVGCoordinatesBasedOnOrientation(\n\t\tverticalCoordinates,\n\t\torientation\n\t);\n\n\treturn `M${x0},${y0}L${x0},${y1}L${x1},${y1}L${x1},${y0}L${x0},${y0}`;\n};\n\nexport function flipDomainAndRangeBasedOnOrientation<D, R>(\n\tdomain: D,\n\trange: R,\n\torientation?: CartesianOrientations\n): [D, R] | [R, D] {\n\treturn orientation === CartesianOrientations.VERTICAL\n\t\t? [domain, range]\n\t\t: [range, domain];\n}\n\nexport const compareNumeric = (a: Numeric, b: Numeric) =>\n\tNumber(a) === Number(b);\n"]}
|