@carbon/charts 0.41.53 → 0.41.57

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.
Files changed (74) hide show
  1. package/CHANGELOG.md +21 -3
  2. package/axis-chart.js +4 -3
  3. package/axis-chart.js.map +1 -1
  4. package/build/demo/data/bar.d.ts +18 -0
  5. package/build/demo/data/bubble.d.ts +6 -0
  6. package/build/demo/data/line.d.ts +19 -0
  7. package/build/src/components/essentials/legend.d.ts +4 -1
  8. package/build/src/configuration-non-customizable.d.ts +36 -1
  9. package/build/src/interfaces/charts.d.ts +7 -2
  10. package/build/src/interfaces/components.d.ts +12 -0
  11. package/build/src/interfaces/enums.d.ts +11 -0
  12. package/build/src/tools.d.ts +7 -0
  13. package/bundle.js +1 -1
  14. package/charts/wordcloud.js.map +1 -1
  15. package/components/axes/grid.js.map +1 -1
  16. package/components/axes/zoom-bar.js +3 -2
  17. package/components/axes/zoom-bar.js.map +1 -1
  18. package/components/essentials/legend.d.ts +4 -1
  19. package/components/essentials/legend.js +263 -81
  20. package/components/essentials/legend.js.map +1 -1
  21. package/components/essentials/tooltip-axis.js +17 -9
  22. package/components/essentials/tooltip-axis.js.map +1 -1
  23. package/components/graphs/boxplot.js.map +1 -1
  24. package/components/graphs/scatter.js +8 -1
  25. package/components/graphs/scatter.js.map +1 -1
  26. package/components/graphs/wordcloud.js +4 -4
  27. package/components/graphs/wordcloud.js.map +1 -1
  28. package/components/index.js.map +1 -1
  29. package/components/layout/layout.js +0 -8
  30. package/components/layout/layout.js.map +1 -1
  31. package/configuration-non-customizable.d.ts +36 -1
  32. package/configuration-non-customizable.js +32 -1
  33. package/configuration-non-customizable.js.map +1 -1
  34. package/configuration.js +13 -3
  35. package/configuration.js.map +1 -1
  36. package/demo/data/area.js +1 -1
  37. package/demo/data/area.js.map +1 -1
  38. package/demo/data/bar.d.ts +18 -0
  39. package/demo/data/bar.js +36 -0
  40. package/demo/data/bar.js.map +1 -1
  41. package/demo/data/bubble.d.ts +6 -0
  42. package/demo/data/bubble.js +8 -0
  43. package/demo/data/bubble.js.map +1 -1
  44. package/demo/data/bundle.js +1 -1
  45. package/demo/data/index.js +10 -0
  46. package/demo/data/index.js.map +1 -1
  47. package/demo/data/line.d.ts +19 -0
  48. package/demo/data/line.js +21 -2
  49. package/demo/data/line.js.map +1 -1
  50. package/demo/styles.css +0 -3
  51. package/demo/styles.css.map +1 -1
  52. package/demo/styles.min.css +1 -1
  53. package/demo/styles.min.css.map +1 -1
  54. package/demo/tsconfig.tsbuildinfo +8 -8
  55. package/interfaces/charts.d.ts +7 -2
  56. package/interfaces/charts.js.map +1 -1
  57. package/interfaces/components.d.ts +12 -0
  58. package/interfaces/components.js.map +1 -1
  59. package/interfaces/enums.d.ts +11 -0
  60. package/interfaces/enums.js +12 -0
  61. package/interfaces/enums.js.map +1 -1
  62. package/interfaces/events.js.map +1 -1
  63. package/model-boxplot.js +1 -3
  64. package/model-boxplot.js.map +1 -1
  65. package/model.js +3 -1
  66. package/model.js.map +1 -1
  67. package/package.json +1 -1
  68. package/services/essentials/gradient-utils.js +1 -1
  69. package/services/essentials/gradient-utils.js.map +1 -1
  70. package/styles/_type.scss +2 -2
  71. package/tools.d.ts +7 -0
  72. package/tools.js +25 -2
  73. package/tools.js.map +1 -1
  74. package/tsconfig.tsbuildinfo +27 -27
@@ -1 +1 @@
1
- {"version":3,"file":"tooltip-axis.js","sourceRoot":"","sources":["tooltip-axis.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC;IAAuC,qCAAO;IAA9C;;IAqHA,CAAC;IApHA,oCAAQ,GAAR,UAAS,CAAc;QAAvB,iBAmHC;QAlHA,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE;YACnB,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SACtB;QAED,IAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC;QAC3B,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE;YAC7B,OAAO,EAAE,CAAC;SACV;QAED,IAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC1B,IAAA,+CAAe,CAAmB;QAC1C,IAAM,iBAAiB,GAAG,eAAe,CAAC,oBAAoB,EAAE,CAAC;QACjE,IAAM,gBAAgB,GAAG,eAAe,CAAC,mBAAmB,EAAE,CAAC;QAE/D,2BAA2B;QACnB,IAAA,sCAAW,CAAkB;QACrC,IAAI,WAAW,GAAG,iBAAiB,CAAC,KAAK,CAAC;QAC1C,IAAI,CAAC,WAAW,EAAE;YACjB,IAAM,kBAAkB,GAAG,eAAe,CAAC,qBAAqB,EAAE,CAAC;YACnE,IACC,kBAAkB,KAAK,aAAa,CAAC,MAAM;gBAC3C,kBAAkB,KAAK,aAAa,CAAC,GAAG,EACvC;gBACD,WAAW,GAAG,SAAS,CAAC;aACxB;iBAAM;gBACN,WAAW,GAAG,SAAS,CAAC;aACxB;SACD;QAED,IAAI,WAAW,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;QAC5C,IAAI,KAAY,CAAC;QACjB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;YACtB,IAAM,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;YACtB,IAAM,iBAAiB,GAAG,eAAe,CAAC,oBAAoB,CAAC;gBAC9D,KAAK,OAAA;aACL,CAAC,CAAC;YACH,IAAM,eAAe,GAAG,eAAe,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;YAClE,IAAM,gBAAgB,GAAG,eAAe,CAAC,cAAc,CACtD,iBAAiB,CACjB,CAAC;YAEF,IAAI,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC;YACxC,IAAI,CAAC,UAAU,EAAE;gBAChB,IACC,iBAAiB,KAAK,aAAa,CAAC,IAAI;oBACxC,iBAAiB,KAAK,aAAa,CAAC,KAAK,EACxC;oBACD,UAAU,GAAG,SAAS,CAAC;iBACvB;qBAAM;oBACN,UAAU,GAAG,SAAS,CAAC;iBACvB;aACD;YAED,KAAK,GAAG;gBACP;oBACC,KAAK,EAAE,WAAW;oBAClB,KAAK,EAAE,WAAW;iBAClB;gBACD;oBACC,KAAK,EAAE,UAAU;oBACjB,KAAK,EAAE,KAAK,CAAC,eAAe,CAAC;iBAC7B;gBACD;oBACC,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,UAAU;oBACjC,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC;oBACzB,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;oBAClD,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;wBACnC,cAAc,EAAE,CAAC,mBAAmB,CAAC,OAAO,CAAC;wBAC7C,aAAa,EAAE,KAAK,CAAC,WAAW,CAAC;qBACjC,CAAC;iBACF;aACD,CAAC;SACF;aAAM,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3B,KAAK,GAAG;gBACP;oBACC,KAAK,EAAE,WAAW;oBAClB,KAAK,EAAE,WAAW;iBAClB;aACD,CAAC;YAEF,KAAK,GAAG,KAAK,CAAC,MAAM,CACnB,IAAI;iBACF,GAAG,CAAC,UAAC,KAAK,IAAK,OAAA,CAAC;gBAChB,KAAK,EAAE,KAAK,CAAC,WAAW,CAAC;gBACzB,KAAK,EAAE,KAAK,CAAC,eAAe,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBACvD,KAAK,EAAE,KAAI,CAAC,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBAClD,KAAK,EAAE,KAAI,CAAC,KAAK,CAAC,iBAAiB,CAAC;oBACnC,cAAc,EAAE,CAAC,mBAAmB,CAAC,OAAO,CAAC;oBAC7C,aAAa,EAAE,KAAK,CAAC,WAAW,CAAC;iBACjC,CAAC;aACF,CAAC,EARc,CAQd,CAAC;iBACF,IAAI,CAAC,UAAC,CAAC,EAAE,CAAC,IAAK,OAAA,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,EAAjB,CAAiB,CAAC,CACnC,CAAC;YAEF,IAAM,QAAQ,GAAG,eAAe,CAAC,UAAU,EAAE,CAAC;YAC9C,IACC,CAAC,QAAQ;gBACT,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,SAAS,EAAE,WAAW,CAAC,KAAK,IAAI,EAC1D;gBACD,gCAAgC;gBAChC,IAAM,iBAAe,GAAG,eAAe,CAAC,kBAAkB,EAAE,CAAC;gBAC7D,KAAK,CAAC,IAAI,CAAC;oBACV,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,UAAU,IAAI,OAAO;oBAC5C,KAAK,EAAE,IAAI,CAAC,MAAM,CACjB,UAAC,WAAW,EAAE,KAAK;wBAClB,OAAA,WAAW,GAAG,KAAK,CAAC,iBAAe,CAAC;oBAApC,CAAoC,EACrC,CAAC,CACD;oBACD,IAAI,EAAE,IAAI;iBACV,CAAC,CAAC;aACH;SACD;QAED,OAAO,KAAK,CAAC;IACd,CAAC;IACF,wBAAC;AAAD,CAAC,AArHD,CAAuC,OAAO,GAqH7C","sourcesContent":["import { Tooltip } from './tooltip';\nimport { AxisPositions, ColorClassNameTypes } from '../../interfaces';\nimport { Tools } from '../../tools';\nexport class AxisChartsTooltip extends Tooltip {\n\tgetItems(e: CustomEvent) {\n\t\tif (e.detail.items) {\n\t\t\treturn e.detail.items;\n\t\t}\n\n\t\tconst data = e.detail.data;\n\t\tif (!data.length || !data[0]) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst options = this.getOptions();\n\t\tconst { cartesianScales } = this.services;\n\t\tconst domainAxisOptions = cartesianScales.getDomainAxisOptions();\n\t\tconst domainIdentifier = cartesianScales.getDomainIdentifier();\n\n\t\t// Generate default tooltip\n\t\tconst { groupMapsTo } = options.data;\n\t\tlet domainLabel = domainAxisOptions.title;\n\t\tif (!domainLabel) {\n\t\t\tconst domainAxisPosition = cartesianScales.getDomainAxisPosition();\n\t\t\tif (\n\t\t\t\tdomainAxisPosition === AxisPositions.BOTTOM ||\n\t\t\t\tdomainAxisPosition === AxisPositions.TOP\n\t\t\t) {\n\t\t\t\tdomainLabel = 'x-value';\n\t\t\t} else {\n\t\t\t\tdomainLabel = 'y-value';\n\t\t\t}\n\t\t}\n\n\t\tlet domainValue = data[0][domainIdentifier];\n\t\tlet items: any[];\n\t\tif (data.length === 1) {\n\t\t\tconst datum = data[0];\n\t\t\tconst rangeAxisPosition = cartesianScales.getRangeAxisPosition({\n\t\t\t\tdatum,\n\t\t\t});\n\t\t\tconst rangeIdentifier = cartesianScales.getRangeIdentifier(datum);\n\t\t\tconst rangeAxisOptions = cartesianScales.getAxisOptions(\n\t\t\t\trangeAxisPosition\n\t\t\t);\n\n\t\t\tlet rangeLabel = rangeAxisOptions.title;\n\t\t\tif (!rangeLabel) {\n\t\t\t\tif (\n\t\t\t\t\trangeAxisPosition === AxisPositions.LEFT ||\n\t\t\t\t\trangeAxisPosition === AxisPositions.RIGHT\n\t\t\t\t) {\n\t\t\t\t\trangeLabel = 'y-value';\n\t\t\t\t} else {\n\t\t\t\t\trangeLabel = 'x-value';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\titems = [\n\t\t\t\t{\n\t\t\t\t\tlabel: domainLabel,\n\t\t\t\t\tvalue: domainValue,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: rangeLabel,\n\t\t\t\t\tvalue: datum[rangeIdentifier],\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: options.tooltip.groupLabel,\n\t\t\t\t\tvalue: datum[groupMapsTo],\n\t\t\t\t\tcolor: this.model.getFillColor(datum[groupMapsTo]),\n\t\t\t\t\tclass: this.model.getColorClassName({\n\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.TOOLTIP],\n\t\t\t\t\t\tdataGroupName: datum[groupMapsTo],\n\t\t\t\t\t}),\n\t\t\t\t},\n\t\t\t];\n\t\t} else if (data.length > 1) {\n\t\t\titems = [\n\t\t\t\t{\n\t\t\t\t\tlabel: domainLabel,\n\t\t\t\t\tvalue: domainValue,\n\t\t\t\t},\n\t\t\t];\n\n\t\t\titems = items.concat(\n\t\t\t\tdata\n\t\t\t\t\t.map((datum) => ({\n\t\t\t\t\t\tlabel: datum[groupMapsTo],\n\t\t\t\t\t\tvalue: datum[cartesianScales.getRangeIdentifier(datum)],\n\t\t\t\t\t\tcolor: this.model.getFillColor(datum[groupMapsTo]),\n\t\t\t\t\t\tclass: this.model.getColorClassName({\n\t\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.TOOLTIP],\n\t\t\t\t\t\t\tdataGroupName: datum[groupMapsTo],\n\t\t\t\t\t\t}),\n\t\t\t\t\t}))\n\t\t\t\t\t.sort((a, b) => b.value - a.value)\n\t\t\t);\n\n\t\t\tconst dualAxes = cartesianScales.isDualAxes();\n\t\t\tif (\n\t\t\t\t!dualAxes &&\n\t\t\t\tTools.getProperty(options, 'tooltip', 'showTotal') === true\n\t\t\t) {\n\t\t\t\t// use the primary/only range id\n\t\t\t\tconst rangeIdentifier = cartesianScales.getRangeIdentifier();\n\t\t\t\titems.push({\n\t\t\t\t\tlabel: options.tooltip.totalLabel || 'Total',\n\t\t\t\t\tvalue: data.reduce(\n\t\t\t\t\t\t(accumulator, datum) =>\n\t\t\t\t\t\t\taccumulator + datum[rangeIdentifier],\n\t\t\t\t\t\t0\n\t\t\t\t\t),\n\t\t\t\t\tbold: true,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn items;\n\t}\n}\n"]}
1
+ {"version":3,"file":"tooltip-axis.js","sourceRoot":"","sources":["tooltip-axis.ts"],"names":[],"mappings":"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","sourcesContent":["import { Tooltip } from './tooltip';\nimport { AxisPositions, ColorClassNameTypes } from '../../interfaces';\nimport { Tools } from '../../tools';\nexport class AxisChartsTooltip extends Tooltip {\n\tgetItems(e: CustomEvent) {\n\t\tif (e.detail.items) {\n\t\t\treturn e.detail.items;\n\t\t}\n\n\t\tconst data = e.detail.data;\n\t\tif (!data.length || !data[0]) {\n\t\t\treturn [];\n\t\t}\n\n\t\tconst options = this.getOptions();\n\t\tconst { cartesianScales } = this.services;\n\t\tconst domainAxisOptions = cartesianScales.getDomainAxisOptions();\n\t\tconst domainIdentifier = cartesianScales.getDomainIdentifier();\n\n\t\t// Generate default tooltip\n\t\tconst { groupMapsTo } = options.data;\n\t\tlet domainLabel = domainAxisOptions.title;\n\t\tif (!domainLabel) {\n\t\t\tconst domainAxisPosition = cartesianScales.getDomainAxisPosition();\n\t\t\tif (\n\t\t\t\tdomainAxisPosition === AxisPositions.BOTTOM ||\n\t\t\t\tdomainAxisPosition === AxisPositions.TOP\n\t\t\t) {\n\t\t\t\tdomainLabel = 'x-value';\n\t\t\t} else {\n\t\t\t\tdomainLabel = 'y-value';\n\t\t\t}\n\t\t}\n\n\t\tlet domainValue = data[0][domainIdentifier];\n\t\tlet items: any[];\n\t\tif (data.length === 1) {\n\t\t\tconst datum = data[0];\n\t\t\tconst rangeAxisPosition = cartesianScales.getRangeAxisPosition({\n\t\t\t\tdatum,\n\t\t\t});\n\t\t\tconst rangeIdentifier = cartesianScales.getRangeIdentifier(datum);\n\t\t\tconst rangeAxisOptions = cartesianScales.getAxisOptions(\n\t\t\t\trangeAxisPosition\n\t\t\t);\n\n\t\t\tlet rangeLabel = rangeAxisOptions.title;\n\t\t\tif (!rangeLabel) {\n\t\t\t\tif (\n\t\t\t\t\trangeAxisPosition === AxisPositions.LEFT ||\n\t\t\t\t\trangeAxisPosition === AxisPositions.RIGHT\n\t\t\t\t) {\n\t\t\t\t\trangeLabel = 'y-value';\n\t\t\t\t} else {\n\t\t\t\t\trangeLabel = 'x-value';\n\t\t\t\t}\n\t\t\t}\n\n\t\t\titems = [\n\t\t\t\t{\n\t\t\t\t\tlabel: domainLabel,\n\t\t\t\t\tvalue: domainValue,\n\t\t\t\t},\n\t\t\t\t{\n\t\t\t\t\tlabel: rangeLabel,\n\t\t\t\t\tvalue: datum[rangeIdentifier],\n\t\t\t\t},\n\t\t\t];\n\n\t\t\tif (e.detail.additionalItems) {\n\t\t\t\te.detail.additionalItems.forEach((additionalItem) =>\n\t\t\t\t\titems.push({\n\t\t\t\t\t\tlabel: additionalItem.label,\n\t\t\t\t\t\tvalue: additionalItem.value,\n\t\t\t\t\t})\n\t\t\t\t);\n\t\t\t}\n\n\t\t\titems.push({\n\t\t\t\tlabel: options.tooltip.groupLabel,\n\t\t\t\tvalue: datum[groupMapsTo],\n\t\t\t\tcolor: this.model.getFillColor(datum[groupMapsTo]),\n\t\t\t\tclass: this.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.TOOLTIP],\n\t\t\t\t\tdataGroupName: datum[groupMapsTo],\n\t\t\t\t}),\n\t\t\t});\n\t\t} else if (data.length > 1) {\n\t\t\titems = [\n\t\t\t\t{\n\t\t\t\t\tlabel: domainLabel,\n\t\t\t\t\tvalue: domainValue,\n\t\t\t\t},\n\t\t\t];\n\n\t\t\titems = items.concat(\n\t\t\t\tdata\n\t\t\t\t\t.map((datum) => ({\n\t\t\t\t\t\tlabel: datum[groupMapsTo],\n\t\t\t\t\t\tvalue: datum[cartesianScales.getRangeIdentifier(datum)],\n\t\t\t\t\t\tcolor: this.model.getFillColor(datum[groupMapsTo]),\n\t\t\t\t\t\tclass: this.model.getColorClassName({\n\t\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.TOOLTIP],\n\t\t\t\t\t\t\tdataGroupName: datum[groupMapsTo],\n\t\t\t\t\t\t}),\n\t\t\t\t\t}))\n\t\t\t\t\t.sort((a, b) => b.value - a.value)\n\t\t\t);\n\n\t\t\tconst dualAxes = cartesianScales.isDualAxes();\n\t\t\tif (\n\t\t\t\t!dualAxes &&\n\t\t\t\tTools.getProperty(options, 'tooltip', 'showTotal') === true\n\t\t\t) {\n\t\t\t\t// use the primary/only range id\n\t\t\t\tconst rangeIdentifier = cartesianScales.getRangeIdentifier();\n\t\t\t\titems.push({\n\t\t\t\t\tlabel: options.tooltip.totalLabel || 'Total',\n\t\t\t\t\tvalue: data.reduce(\n\t\t\t\t\t\t(accumulator, datum) =>\n\t\t\t\t\t\t\taccumulator + datum[rangeIdentifier],\n\t\t\t\t\t\t0\n\t\t\t\t\t),\n\t\t\t\t\tbold: true,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\n\t\treturn items;\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"boxplot.js","sourceRoot":"","sources":["boxplot.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport {\n\tCartesianOrientations,\n\tColorClassNameTypes,\n\tEvents,\n\tRoles,\n} from '../../interfaces';\nimport { Tools } from '../../tools';\nimport * as Configuration from '../../configuration';\n\n// D3 Imports\nimport { select } from 'd3-selection';\n\nexport class Boxplot extends Component {\n\ttype = 'boxplot';\n\n\trender(animate: boolean) {\n\t\t// Grab container SVG\n\t\tconst svg = this.getContainerSVG({ withinChartClip: true });\n\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst dataGroupNames = this.model.getDataGroupNames();\n\n\t\t/*\n\t\t * Get graphable dimensions\n\t\t */\n\t\tconst mainXScale = this.services.cartesianScales.getMainXScale();\n\t\tconst mainYScale = this.services.cartesianScales.getMainYScale();\n\t\tconst [xScaleStart, xScaleEnd] = mainXScale.range();\n\t\tconst [yScaleEnd, yScaleStart] = mainYScale.range();\n\t\tconst width = xScaleEnd - xScaleStart;\n\t\tconst height = yScaleEnd - yScaleStart;\n\t\tif (width === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Get orientation of the chart\n\t\tconst { cartesianScales } = this.services;\n\t\tconst orientation = cartesianScales.getOrientation();\n\t\tconst isInVerticalOrientation =\n\t\t\torientation === CartesianOrientations.VERTICAL;\n\t\tconst [\n\t\t\tgetXValue,\n\t\t\tgetYValue,\n\t\t] = Tools.flipDomainAndRangeBasedOnOrientation(\n\t\t\t(d, i?) => this.services.cartesianScales.getDomainValue(d, i),\n\t\t\t(d, i?) => this.services.cartesianScales.getRangeValue(d, i),\n\t\t\torientation\n\t\t);\n\n\t\tconst gridSize = Math.floor(\n\t\t\t(isInVerticalOrientation ? width : height) / dataGroupNames.length\n\t\t);\n\t\tconst boxWidth = Math.min(gridSize / 2, 16);\n\n\t\tconst boxplotData = this.model.getBoxplotData();\n\n\t\t/*\n\t\t * update or initialize all box groups\n\t\t */\n\t\tconst boxGroups = svg.selectAll('.box-group').data(boxplotData);\n\t\tboxGroups.exit().remove();\n\n\t\tconst boxGroupsEnter = boxGroups\n\t\t\t.enter()\n\t\t\t.append('g')\n\t\t\t.attr('class', 'box-group');\n\n\t\tconst allBoxGroups = boxGroups.merge(boxGroupsEnter);\n\n\t\t/*\n\t\t * draw the 2 range lines for each box\n\t\t */\n\t\t// Start range line\n\t\tboxGroupsEnter\n\t\t\t.append('path')\n\t\t\t.merge(boxGroups.select('path.vertical-line.start'))\n\t\t\t.attr('class', () =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.STROKE],\n\t\t\t\t\toriginalClassName: 'vertical-line start',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('stroke-width', Configuration.boxplot.strokeWidth.default)\n\t\t\t.attr('fill', 'none')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'boxplot-update-verticalstartline',\n\t\t\t\t\tanimate\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('d', d => {\n\t\t\t\tconst x0 = cartesianScales.getDomainValue(d[groupMapsTo]);\n\t\t\t\tconst x1 = x0;\n\t\t\t\tconst y0 = cartesianScales.getRangeValue(d.whiskers.min);\n\t\t\t\tconst y1 = cartesianScales.getRangeValue(d.quartiles.q_25);\n\n\t\t\t\treturn Tools.generateSVGPathString(\n\t\t\t\t\t{ x0, x1, y0, y1 },\n\t\t\t\t\torientation\n\t\t\t\t);\n\t\t\t});\n\n\t\t// End range line\n\t\tboxGroupsEnter\n\t\t\t.append('path')\n\t\t\t.merge(boxGroups.select('path.vertical-line.end'))\n\t\t\t.attr('class', () =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.STROKE],\n\t\t\t\t\toriginalClassName: 'vertical-line end',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('stroke-width', Configuration.boxplot.strokeWidth.default)\n\t\t\t.attr('fill', 'none')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'boxplot-update-verticalendline',\n\t\t\t\t\tanimate\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('d', d => {\n\t\t\t\tconst x0 = cartesianScales.getDomainValue(d[groupMapsTo]);\n\t\t\t\tconst x1 = x0;\n\t\t\t\tconst y0 = cartesianScales.getRangeValue(d.whiskers.max);\n\t\t\t\tconst y1 = cartesianScales.getRangeValue(d.quartiles.q_75);\n\n\t\t\t\treturn Tools.generateSVGPathString(\n\t\t\t\t\t{ x0, x1, y0, y1 },\n\t\t\t\t\torientation\n\t\t\t\t);\n\t\t\t});\n\n\t\t/*\n\t\t * Draw out and update the boxes\n\t\t */\n\t\tboxGroupsEnter\n\t\t\t.append('path')\n\t\t\t.merge(boxGroups.select('path.box'))\n\t\t\t.attr('class', () =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [\n\t\t\t\t\t\tColorClassNameTypes.FILL,\n\t\t\t\t\t\tColorClassNameTypes.STROKE,\n\t\t\t\t\t],\n\t\t\t\t\toriginalClassName: 'box',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('fill-opacity', Configuration.boxplot.box.opacity.default)\n\t\t\t.attr('stroke-width', Configuration.boxplot.strokeWidth.default)\n\t\t\t.attr('role', Roles.GRAPHICS_SYMBOL)\n\t\t\t.attr('aria-roledescription', 'box')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'boxplot-update-quartiles',\n\t\t\t\t\tanimate\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('d', d => {\n\t\t\t\tconst x0 =\n\t\t\t\t\tcartesianScales.getDomainValue(d[groupMapsTo]) -\n\t\t\t\t\tboxWidth / 2;\n\t\t\t\tconst x1 = x0 + boxWidth;\n\t\t\t\tconst y0 = cartesianScales.getRangeValue(\n\t\t\t\t\tMath[isInVerticalOrientation ? 'max' : 'min'](\n\t\t\t\t\t\td.quartiles.q_75,\n\t\t\t\t\t\td.quartiles.q_25\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\tconst y1 =\n\t\t\t\t\ty0 +\n\t\t\t\t\tMath.abs(\n\t\t\t\t\t\tcartesianScales.getRangeValue(d.quartiles.q_75) -\n\t\t\t\t\t\t\tcartesianScales.getRangeValue(d.quartiles.q_25)\n\t\t\t\t\t);\n\n\t\t\t\treturn Tools.generateSVGPathString(\n\t\t\t\t\t{ x0, x1, y0, y1 },\n\t\t\t\t\torientation\n\t\t\t\t);\n\t\t\t});\n\n\t\t/*\n\t\t * Draw out and update highlight areas\n\t\t */\n\t\tboxGroupsEnter\n\t\t\t.append('path')\n\t\t\t.merge(boxGroups.select('path.highlight-area'))\n\t\t\t.attr('class', 'highlight-area')\n\t\t\t.attr('opacity', 0)\n\t\t\t.attr('d', d => {\n\t\t\t\tconst x0 =\n\t\t\t\t\tcartesianScales.getDomainValue(d[groupMapsTo]) -\n\t\t\t\t\tboxWidth / 2;\n\t\t\t\tconst x1 = x0 + boxWidth;\n\t\t\t\tconst y0 = cartesianScales.getRangeValue(d.whiskers.min);\n\t\t\t\tconst y1 = cartesianScales.getRangeValue(d.whiskers.max);\n\n\t\t\t\treturn Tools.generateSVGPathString(\n\t\t\t\t\t{ x0, x1, y0, y1 },\n\t\t\t\t\torientation\n\t\t\t\t);\n\t\t\t});\n\n\t\t/*\n\t\t * Draw out and update the starting whisker\n\t\t */\n\t\tboxGroupsEnter\n\t\t\t.append('path')\n\t\t\t.merge(boxGroups.select('path.whisker.start'))\n\t\t\t.attr('class', () =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.STROKE],\n\t\t\t\t\toriginalClassName: 'whisker start',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('stroke-width', Configuration.boxplot.strokeWidth.thicker)\n\t\t\t.attr('fill', 'none')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'boxplot-update-startingwhisker',\n\t\t\t\t\tanimate\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('d', d => {\n\t\t\t\tconst x0 =\n\t\t\t\t\tcartesianScales.getDomainValue(d[groupMapsTo]) -\n\t\t\t\t\tboxWidth / 4;\n\t\t\t\tconst x1 = x0 + boxWidth / 2;\n\t\t\t\tconst y0 = cartesianScales.getRangeValue(d.whiskers.min);\n\t\t\t\tconst y1 = cartesianScales.getRangeValue(d.whiskers.min);\n\n\t\t\t\treturn Tools.generateSVGPathString(\n\t\t\t\t\t{ x0, x1, y0, y1 },\n\t\t\t\t\torientation\n\t\t\t\t);\n\t\t\t});\n\n\t\t/*\n\t\t * Draw out and update the median line\n\t\t */\n\t\tboxGroupsEnter\n\t\t\t.append('path')\n\t\t\t.merge(boxGroups.select('path.median'))\n\t\t\t.attr('fill', 'none')\n\t\t\t.attr('class', () =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.STROKE],\n\t\t\t\t\toriginalClassName: 'median',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('stroke-width', 2)\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'boxplot-update-median',\n\t\t\t\t\tanimate\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('d', d => {\n\t\t\t\tconst x0 =\n\t\t\t\t\tcartesianScales.getDomainValue(d[groupMapsTo]) -\n\t\t\t\t\tboxWidth / 2;\n\t\t\t\tconst x1 = x0 + boxWidth;\n\t\t\t\tconst y0 = cartesianScales.getRangeValue(d.quartiles.q_50);\n\t\t\t\tconst y1 = y0;\n\n\t\t\t\treturn Tools.generateSVGPathString(\n\t\t\t\t\t{ x0, x1, y0, y1 },\n\t\t\t\t\torientation\n\t\t\t\t);\n\t\t\t});\n\n\t\t/*\n\t\t * Draw out and update the ending whisker\n\t\t */\n\t\tboxGroupsEnter\n\t\t\t.append('path')\n\t\t\t.merge(boxGroups.select('path.whisker.end'))\n\t\t\t.attr('class', () =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.STROKE],\n\t\t\t\t\toriginalClassName: 'whisker end',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('stroke-width', Configuration.boxplot.strokeWidth.thicker)\n\t\t\t.attr('fill', 'none')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'boxplot-update-endingwhisker',\n\t\t\t\t\tanimate\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('d', d => {\n\t\t\t\tconst x0 =\n\t\t\t\t\tcartesianScales.getDomainValue(d[groupMapsTo]) -\n\t\t\t\t\tboxWidth / 4;\n\t\t\t\tconst x1 = x0 + boxWidth / 2;\n\t\t\t\tconst y0 = cartesianScales.getRangeValue(d.whiskers.max);\n\t\t\t\tconst y1 = cartesianScales.getRangeValue(d.whiskers.max);\n\n\t\t\t\treturn Tools.generateSVGPathString(\n\t\t\t\t\t{ x0, x1, y0, y1 },\n\t\t\t\t\torientation\n\t\t\t\t);\n\t\t\t});\n\n\t\t/*\n\t\t * Draw out and update the outlier circles\n\t\t */\n\t\tconst circles = allBoxGroups.selectAll('circle.outlier').data((d) =>\n\t\t\td.outliers.map((outlier) => {\n\t\t\t\treturn {\n\t\t\t\t\tmin: d.whiskers.min,\n\t\t\t\t\tmax: d.whiskers.max,\n\t\t\t\t\t[groupMapsTo]: d[groupMapsTo],\n\t\t\t\t\tvalue: outlier,\n\t\t\t\t};\n\t\t\t})\n\t\t);\n\n\t\tcircles.exit().remove();\n\n\t\tconst circlesEnter = circles.enter().append('circle');\n\n\t\tcircles\n\t\t\t.merge(circlesEnter)\n\t\t\t.attr('r', Configuration.boxplot.circle.radius)\n\t\t\t.attr('class', () =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [\n\t\t\t\t\t\tColorClassNameTypes.FILL,\n\t\t\t\t\t\tColorClassNameTypes.STROKE,\n\t\t\t\t\t],\n\t\t\t\t\toriginalClassName: 'outlier',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('fill-opacity', Configuration.boxplot.circle.opacity.default)\n\t\t\t.attr('cx', getXValue)\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'boxplot-update-circles',\n\t\t\t\t\tanimate\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('cy', getYValue);\n\n\t\tthis.addBoxEventListeners();\n\t\tthis.addCircleEventListeners();\n\t}\n\n\taddBoxEventListeners() {\n\t\tconst self = this;\n\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tthis.parent\n\t\t\t.selectAll('path.highlight-area')\n\t\t\t.on('mouseover', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\tconst parentElement = select(this.parentNode);\n\t\t\t\tparentElement\n\t\t\t\t\t.select('path.box')\n\t\t\t\t\t.classed('hovered', true)\n\t\t\t\t\t.attr('fill-opacity', Configuration.boxplot.box.opacity.hovered);\n\n\t\t\t\t// Show tooltip for single datapoint\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\thoveredElement,\n\t\t\t\t\titems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: options.tooltip.groupLabel,\n\t\t\t\t\t\t\tvalue: datum[groupMapsTo],\n\t\t\t\t\t\t\tclass: self.model.getColorClassName({\n\t\t\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.TOOLTIP],\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Minimum',\n\t\t\t\t\t\t\tvalue: datum.whiskers.min,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Q1',\n\t\t\t\t\t\t\tvalue: datum.quartiles.q_25,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Median',\n\t\t\t\t\t\t\tvalue: datum.quartiles.q_50,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Q3',\n\t\t\t\t\t\t\tvalue: datum.quartiles.q_75,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Maximum',\n\t\t\t\t\t\t\tvalue: datum.whiskers.max,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'IQR',\n\t\t\t\t\t\t\tvalue: datum.quartiles.q_75 - datum.quartiles.q_25,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t});\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Boxplot.BOX_MOUSEOVER,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t})\n\t\t\t.on('mousemove', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Boxplot.BOX_MOUSEMOVE,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.MOVE);\n\t\t\t})\n\t\t\t.on('click', function (datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Boxplot.BOX_CLICK, {\n\t\t\t\t\telement: select(this),\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mouseout', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\tconst parentElement = select(this.parentNode);\n\t\t\t\tparentElement\n\t\t\t\t\t.select('path.box')\n\t\t\t\t\t.classed('hovered', false)\n\t\t\t\t\t.attr('fill-opacity', Configuration.boxplot.box.opacity.default);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Boxplot.BOX_MOUSEOUT,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\t// Hide tooltip\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.HIDE, {\n\t\t\t\t\thoveredElement,\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\taddCircleEventListeners() {\n\t\tconst self = this;\n\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst rangeIdentifier = this.services.cartesianScales.getRangeIdentifier();\n\n\t\tthis.parent\n\t\t\t.selectAll('circle')\n\t\t\t.on('mouseover', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\thoveredElement\n\t\t\t\t\t.classed('hovered', true)\n\t\t\t\t\t.attr('fill-opacity', Configuration.boxplot.circle.opacity.hovered)\n\t\t\t\t\t.classed('unfilled', false);\n\n\t\t\t\t// Show tooltip for single datapoint\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\thoveredElement,\n\t\t\t\t\titems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: options.tooltip.groupLabel,\n\t\t\t\t\t\t\tvalue: datum[groupMapsTo],\n\t\t\t\t\t\t\tclass: self.model.getColorClassName({\n\t\t\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.TOOLTIP],\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Outlier',\n\t\t\t\t\t\t\tvalue: datum[rangeIdentifier],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t});\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Boxplot.OUTLIER_MOUSEOVER,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t})\n\t\t\t.on('mousemove', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Boxplot.OUTLIER_MOUSEMOVE,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.MOVE);\n\t\t\t})\n\t\t\t.on('click', function (datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Boxplot.OUTLIER_CLICK,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: select(this),\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t})\n\t\t\t.on('mouseout', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\thoveredElement\n\t\t\t\t\t.classed('hovered', false)\n\t\t\t\t\t.attr('fill-opacity', Configuration.boxplot.circle.opacity.default);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Boxplot.OUTLIER_MOUSEOUT,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\t// Hide tooltip\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.HIDE, {\n\t\t\t\t\thoveredElement,\n\t\t\t\t});\n\t\t\t});\n\t}\n}\n"]}
1
+ {"version":3,"file":"boxplot.js","sourceRoot":"","sources":["boxplot.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport {\n\tCartesianOrientations,\n\tColorClassNameTypes,\n\tEvents,\n\tRoles,\n} from '../../interfaces';\nimport { Tools } from '../../tools';\nimport * as Configuration from '../../configuration';\n\n// D3 Imports\nimport { select } from 'd3-selection';\n\nexport class Boxplot extends Component {\n\ttype = 'boxplot';\n\n\trender(animate: boolean) {\n\t\t// Grab container SVG\n\t\tconst svg = this.getContainerSVG({ withinChartClip: true });\n\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst dataGroupNames = this.model.getDataGroupNames();\n\n\t\t/*\n\t\t * Get graphable dimensions\n\t\t */\n\t\tconst mainXScale = this.services.cartesianScales.getMainXScale();\n\t\tconst mainYScale = this.services.cartesianScales.getMainYScale();\n\t\tconst [xScaleStart, xScaleEnd] = mainXScale.range();\n\t\tconst [yScaleEnd, yScaleStart] = mainYScale.range();\n\t\tconst width = xScaleEnd - xScaleStart;\n\t\tconst height = yScaleEnd - yScaleStart;\n\t\tif (width === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Get orientation of the chart\n\t\tconst { cartesianScales } = this.services;\n\t\tconst orientation = cartesianScales.getOrientation();\n\t\tconst isInVerticalOrientation =\n\t\t\torientation === CartesianOrientations.VERTICAL;\n\t\tconst [\n\t\t\tgetXValue,\n\t\t\tgetYValue,\n\t\t] = Tools.flipDomainAndRangeBasedOnOrientation(\n\t\t\t(d, i?) => this.services.cartesianScales.getDomainValue(d, i),\n\t\t\t(d, i?) => this.services.cartesianScales.getRangeValue(d, i),\n\t\t\torientation\n\t\t);\n\n\t\tconst gridSize = Math.floor(\n\t\t\t(isInVerticalOrientation ? width : height) / dataGroupNames.length\n\t\t);\n\t\tconst boxWidth = Math.min(gridSize / 2, 16);\n\n\t\tconst boxplotData = this.model.getBoxplotData();\n\n\t\t/*\n\t\t * update or initialize all box groups\n\t\t */\n\t\tconst boxGroups = svg.selectAll('.box-group').data(boxplotData);\n\t\tboxGroups.exit().remove();\n\n\t\tconst boxGroupsEnter = boxGroups\n\t\t\t.enter()\n\t\t\t.append('g')\n\t\t\t.attr('class', 'box-group');\n\n\t\tconst allBoxGroups = boxGroups.merge(boxGroupsEnter);\n\n\t\t/*\n\t\t * draw the 2 range lines for each box\n\t\t */\n\t\t// Start range line\n\t\tboxGroupsEnter\n\t\t\t.append('path')\n\t\t\t.merge(boxGroups.select('path.vertical-line.start'))\n\t\t\t.attr('class', () =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.STROKE],\n\t\t\t\t\toriginalClassName: 'vertical-line start',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('stroke-width', Configuration.boxplot.strokeWidth.default)\n\t\t\t.attr('fill', 'none')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'boxplot-update-verticalstartline',\n\t\t\t\t\tanimate\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('d', (d) => {\n\t\t\t\tconst x0 = cartesianScales.getDomainValue(d[groupMapsTo]);\n\t\t\t\tconst x1 = x0;\n\t\t\t\tconst y0 = cartesianScales.getRangeValue(d.whiskers.min);\n\t\t\t\tconst y1 = cartesianScales.getRangeValue(d.quartiles.q_25);\n\n\t\t\t\treturn Tools.generateSVGPathString(\n\t\t\t\t\t{ x0, x1, y0, y1 },\n\t\t\t\t\torientation\n\t\t\t\t);\n\t\t\t});\n\n\t\t// End range line\n\t\tboxGroupsEnter\n\t\t\t.append('path')\n\t\t\t.merge(boxGroups.select('path.vertical-line.end'))\n\t\t\t.attr('class', () =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.STROKE],\n\t\t\t\t\toriginalClassName: 'vertical-line end',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('stroke-width', Configuration.boxplot.strokeWidth.default)\n\t\t\t.attr('fill', 'none')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'boxplot-update-verticalendline',\n\t\t\t\t\tanimate\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('d', (d) => {\n\t\t\t\tconst x0 = cartesianScales.getDomainValue(d[groupMapsTo]);\n\t\t\t\tconst x1 = x0;\n\t\t\t\tconst y0 = cartesianScales.getRangeValue(d.whiskers.max);\n\t\t\t\tconst y1 = cartesianScales.getRangeValue(d.quartiles.q_75);\n\n\t\t\t\treturn Tools.generateSVGPathString(\n\t\t\t\t\t{ x0, x1, y0, y1 },\n\t\t\t\t\torientation\n\t\t\t\t);\n\t\t\t});\n\n\t\t/*\n\t\t * Draw out and update the boxes\n\t\t */\n\t\tboxGroupsEnter\n\t\t\t.append('path')\n\t\t\t.merge(boxGroups.select('path.box'))\n\t\t\t.attr('class', () =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [\n\t\t\t\t\t\tColorClassNameTypes.FILL,\n\t\t\t\t\t\tColorClassNameTypes.STROKE,\n\t\t\t\t\t],\n\t\t\t\t\toriginalClassName: 'box',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('fill-opacity', Configuration.boxplot.box.opacity.default)\n\t\t\t.attr('stroke-width', Configuration.boxplot.strokeWidth.default)\n\t\t\t.attr('role', Roles.GRAPHICS_SYMBOL)\n\t\t\t.attr('aria-roledescription', 'box')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'boxplot-update-quartiles',\n\t\t\t\t\tanimate\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('d', (d) => {\n\t\t\t\tconst x0 =\n\t\t\t\t\tcartesianScales.getDomainValue(d[groupMapsTo]) -\n\t\t\t\t\tboxWidth / 2;\n\t\t\t\tconst x1 = x0 + boxWidth;\n\t\t\t\tconst y0 = cartesianScales.getRangeValue(\n\t\t\t\t\tMath[isInVerticalOrientation ? 'max' : 'min'](\n\t\t\t\t\t\td.quartiles.q_75,\n\t\t\t\t\t\td.quartiles.q_25\n\t\t\t\t\t)\n\t\t\t\t);\n\t\t\t\tconst y1 =\n\t\t\t\t\ty0 +\n\t\t\t\t\tMath.abs(\n\t\t\t\t\t\tcartesianScales.getRangeValue(d.quartiles.q_75) -\n\t\t\t\t\t\t\tcartesianScales.getRangeValue(d.quartiles.q_25)\n\t\t\t\t\t);\n\n\t\t\t\treturn Tools.generateSVGPathString(\n\t\t\t\t\t{ x0, x1, y0, y1 },\n\t\t\t\t\torientation\n\t\t\t\t);\n\t\t\t});\n\n\t\t/*\n\t\t * Draw out and update highlight areas\n\t\t */\n\t\tboxGroupsEnter\n\t\t\t.append('path')\n\t\t\t.merge(boxGroups.select('path.highlight-area'))\n\t\t\t.attr('class', 'highlight-area')\n\t\t\t.attr('opacity', 0)\n\t\t\t.attr('d', (d) => {\n\t\t\t\tconst x0 =\n\t\t\t\t\tcartesianScales.getDomainValue(d[groupMapsTo]) -\n\t\t\t\t\tboxWidth / 2;\n\t\t\t\tconst x1 = x0 + boxWidth;\n\t\t\t\tconst y0 = cartesianScales.getRangeValue(d.whiskers.min);\n\t\t\t\tconst y1 = cartesianScales.getRangeValue(d.whiskers.max);\n\n\t\t\t\treturn Tools.generateSVGPathString(\n\t\t\t\t\t{ x0, x1, y0, y1 },\n\t\t\t\t\torientation\n\t\t\t\t);\n\t\t\t});\n\n\t\t/*\n\t\t * Draw out and update the starting whisker\n\t\t */\n\t\tboxGroupsEnter\n\t\t\t.append('path')\n\t\t\t.merge(boxGroups.select('path.whisker.start'))\n\t\t\t.attr('class', () =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.STROKE],\n\t\t\t\t\toriginalClassName: 'whisker start',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('stroke-width', Configuration.boxplot.strokeWidth.thicker)\n\t\t\t.attr('fill', 'none')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'boxplot-update-startingwhisker',\n\t\t\t\t\tanimate\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('d', (d) => {\n\t\t\t\tconst x0 =\n\t\t\t\t\tcartesianScales.getDomainValue(d[groupMapsTo]) -\n\t\t\t\t\tboxWidth / 4;\n\t\t\t\tconst x1 = x0 + boxWidth / 2;\n\t\t\t\tconst y0 = cartesianScales.getRangeValue(d.whiskers.min);\n\t\t\t\tconst y1 = cartesianScales.getRangeValue(d.whiskers.min);\n\n\t\t\t\treturn Tools.generateSVGPathString(\n\t\t\t\t\t{ x0, x1, y0, y1 },\n\t\t\t\t\torientation\n\t\t\t\t);\n\t\t\t});\n\n\t\t/*\n\t\t * Draw out and update the median line\n\t\t */\n\t\tboxGroupsEnter\n\t\t\t.append('path')\n\t\t\t.merge(boxGroups.select('path.median'))\n\t\t\t.attr('fill', 'none')\n\t\t\t.attr('class', () =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.STROKE],\n\t\t\t\t\toriginalClassName: 'median',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('stroke-width', 2)\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'boxplot-update-median',\n\t\t\t\t\tanimate\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('d', (d) => {\n\t\t\t\tconst x0 =\n\t\t\t\t\tcartesianScales.getDomainValue(d[groupMapsTo]) -\n\t\t\t\t\tboxWidth / 2;\n\t\t\t\tconst x1 = x0 + boxWidth;\n\t\t\t\tconst y0 = cartesianScales.getRangeValue(d.quartiles.q_50);\n\t\t\t\tconst y1 = y0;\n\n\t\t\t\treturn Tools.generateSVGPathString(\n\t\t\t\t\t{ x0, x1, y0, y1 },\n\t\t\t\t\torientation\n\t\t\t\t);\n\t\t\t});\n\n\t\t/*\n\t\t * Draw out and update the ending whisker\n\t\t */\n\t\tboxGroupsEnter\n\t\t\t.append('path')\n\t\t\t.merge(boxGroups.select('path.whisker.end'))\n\t\t\t.attr('class', () =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.STROKE],\n\t\t\t\t\toriginalClassName: 'whisker end',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('stroke-width', Configuration.boxplot.strokeWidth.thicker)\n\t\t\t.attr('fill', 'none')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'boxplot-update-endingwhisker',\n\t\t\t\t\tanimate\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('d', (d) => {\n\t\t\t\tconst x0 =\n\t\t\t\t\tcartesianScales.getDomainValue(d[groupMapsTo]) -\n\t\t\t\t\tboxWidth / 4;\n\t\t\t\tconst x1 = x0 + boxWidth / 2;\n\t\t\t\tconst y0 = cartesianScales.getRangeValue(d.whiskers.max);\n\t\t\t\tconst y1 = cartesianScales.getRangeValue(d.whiskers.max);\n\n\t\t\t\treturn Tools.generateSVGPathString(\n\t\t\t\t\t{ x0, x1, y0, y1 },\n\t\t\t\t\torientation\n\t\t\t\t);\n\t\t\t});\n\n\t\t/*\n\t\t * Draw out and update the outlier circles\n\t\t */\n\t\tconst circles = allBoxGroups.selectAll('circle.outlier').data((d) =>\n\t\t\td.outliers.map((outlier) => {\n\t\t\t\treturn {\n\t\t\t\t\tmin: d.whiskers.min,\n\t\t\t\t\tmax: d.whiskers.max,\n\t\t\t\t\t[groupMapsTo]: d[groupMapsTo],\n\t\t\t\t\tvalue: outlier,\n\t\t\t\t};\n\t\t\t})\n\t\t);\n\n\t\tcircles.exit().remove();\n\n\t\tconst circlesEnter = circles.enter().append('circle');\n\n\t\tcircles\n\t\t\t.merge(circlesEnter)\n\t\t\t.attr('r', Configuration.boxplot.circle.radius)\n\t\t\t.attr('class', () =>\n\t\t\t\tthis.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [\n\t\t\t\t\t\tColorClassNameTypes.FILL,\n\t\t\t\t\t\tColorClassNameTypes.STROKE,\n\t\t\t\t\t],\n\t\t\t\t\toriginalClassName: 'outlier',\n\t\t\t\t})\n\t\t\t)\n\t\t\t.attr('fill-opacity', Configuration.boxplot.circle.opacity.default)\n\t\t\t.attr('cx', getXValue)\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'boxplot-update-circles',\n\t\t\t\t\tanimate\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('cy', getYValue);\n\n\t\tthis.addBoxEventListeners();\n\t\tthis.addCircleEventListeners();\n\t}\n\n\taddBoxEventListeners() {\n\t\tconst self = this;\n\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tthis.parent\n\t\t\t.selectAll('path.highlight-area')\n\t\t\t.on('mouseover', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\tconst parentElement = select(this.parentNode);\n\t\t\t\tparentElement\n\t\t\t\t\t.select('path.box')\n\t\t\t\t\t.classed('hovered', true)\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'fill-opacity',\n\t\t\t\t\t\tConfiguration.boxplot.box.opacity.hovered\n\t\t\t\t\t);\n\n\t\t\t\t// Show tooltip for single datapoint\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\thoveredElement,\n\t\t\t\t\titems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: options.tooltip.groupLabel,\n\t\t\t\t\t\t\tvalue: datum[groupMapsTo],\n\t\t\t\t\t\t\tclass: self.model.getColorClassName({\n\t\t\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.TOOLTIP],\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Minimum',\n\t\t\t\t\t\t\tvalue: datum.whiskers.min,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Q1',\n\t\t\t\t\t\t\tvalue: datum.quartiles.q_25,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Median',\n\t\t\t\t\t\t\tvalue: datum.quartiles.q_50,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Q3',\n\t\t\t\t\t\t\tvalue: datum.quartiles.q_75,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Maximum',\n\t\t\t\t\t\t\tvalue: datum.whiskers.max,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'IQR',\n\t\t\t\t\t\t\tvalue: datum.quartiles.q_75 - datum.quartiles.q_25,\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t});\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Boxplot.BOX_MOUSEOVER,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t})\n\t\t\t.on('mousemove', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Boxplot.BOX_MOUSEMOVE,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.MOVE);\n\t\t\t})\n\t\t\t.on('click', function (datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(Events.Boxplot.BOX_CLICK, {\n\t\t\t\t\telement: select(this),\n\t\t\t\t\tdatum,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('mouseout', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\tconst parentElement = select(this.parentNode);\n\t\t\t\tparentElement\n\t\t\t\t\t.select('path.box')\n\t\t\t\t\t.classed('hovered', false)\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'fill-opacity',\n\t\t\t\t\t\tConfiguration.boxplot.box.opacity.default\n\t\t\t\t\t);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Boxplot.BOX_MOUSEOUT,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\t// Hide tooltip\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.HIDE, {\n\t\t\t\t\thoveredElement,\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\taddCircleEventListeners() {\n\t\tconst self = this;\n\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst rangeIdentifier = this.services.cartesianScales.getRangeIdentifier();\n\n\t\tthis.parent\n\t\t\t.selectAll('circle')\n\t\t\t.on('mouseover', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\thoveredElement\n\t\t\t\t\t.classed('hovered', true)\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'fill-opacity',\n\t\t\t\t\t\tConfiguration.boxplot.circle.opacity.hovered\n\t\t\t\t\t)\n\t\t\t\t\t.classed('unfilled', false);\n\n\t\t\t\t// Show tooltip for single datapoint\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\thoveredElement,\n\t\t\t\t\titems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: options.tooltip.groupLabel,\n\t\t\t\t\t\t\tvalue: datum[groupMapsTo],\n\t\t\t\t\t\t\tclass: self.model.getColorClassName({\n\t\t\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.TOOLTIP],\n\t\t\t\t\t\t\t}),\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: 'Outlier',\n\t\t\t\t\t\t\tvalue: datum[rangeIdentifier],\n\t\t\t\t\t\t},\n\t\t\t\t\t],\n\t\t\t\t});\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Boxplot.OUTLIER_MOUSEOVER,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t})\n\t\t\t.on('mousemove', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Boxplot.OUTLIER_MOUSEMOVE,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.MOVE);\n\t\t\t})\n\t\t\t.on('click', function (datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Boxplot.OUTLIER_CLICK,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: select(this),\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t})\n\t\t\t.on('mouseout', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\thoveredElement\n\t\t\t\t\t.classed('hovered', false)\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'fill-opacity',\n\t\t\t\t\t\tConfiguration.boxplot.circle.opacity.default\n\t\t\t\t\t);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Boxplot.OUTLIER_MOUSEOUT,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\t// Hide tooltip\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.HIDE, {\n\t\t\t\t\thoveredElement,\n\t\t\t\t});\n\t\t\t});\n\t}\n}\n"]}
@@ -243,10 +243,17 @@ var Scatter = /** @class */ (function (_super) {
243
243
  return self.model.getFillColor(d[groupMapsTo], d[domainIdentifier], d);
244
244
  })
245
245
  .classed('unfilled', false);
246
- // Show tooltip for single datapoint
246
+ // Show tooltip
247
+ var bubbleOptions = Tools.getProperty(self.getOptions(), 'bubble');
247
248
  self.services.events.dispatchEvent(Events.Tooltip.SHOW, {
248
249
  hoveredElement: hoveredElement,
249
250
  data: [datum],
251
+ additionalItems: [
252
+ {
253
+ label: Tools.getProperty(bubbleOptions, 'radiusLabel'),
254
+ value: datum[Tools.getProperty(bubbleOptions, 'radiusMapsTo')],
255
+ },
256
+ ],
250
257
  });
251
258
  // Dispatch mouse event
252
259
  self.services.events.dispatchEvent(Events.Scatter.SCATTER_MOUSEOVER, {
@@ -1 +1 @@
1
- {"version":3,"file":"scatter.js","sourceRoot":"","sources":["scatter.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport { Roles, Events, ColorClassNameTypes } from '../../interfaces';\nimport { Tools } from '../../tools';\n\n// D3 Imports\nimport { select, Selection } from 'd3-selection';\n\nexport class Scatter extends Component {\n\ttype = 'scatter';\n\tscatterData: any;\n\n\tinit() {\n\t\tconst { events } = this.services;\n\t\t// Highlight correct circle on legend item hovers\n\t\tevents.addEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\t\t// Un-highlight circles on legend item mouseouts\n\t\tevents.addEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\n\t\tconst { fadeInOnChartHolderMouseover } = this.configs;\n\t\tif (fadeInOnChartHolderMouseover) {\n\t\t\t// Fade-in scatter circles\n\t\t\tevents.addEventListener(\n\t\t\t\tEvents.Chart.MOUSEOVER,\n\t\t\t\tthis.handleChartHolderOnHover\n\t\t\t);\n\t\t\t// Fade-out scatter circles\n\t\t\tevents.addEventListener(\n\t\t\t\tEvents.Chart.MOUSEOUT,\n\t\t\t\tthis.handleChartHolderOnMouseOut\n\t\t\t);\n\t\t}\n\t}\n\n\tfilterBasedOnZoomDomain(data) {\n\t\tconst domainIdentifier = this.services.cartesianScales.getDomainIdentifier(\n\t\t\tdata\n\t\t);\n\t\tconst zoomDomain = this.model.get('zoomDomain');\n\t\tif (zoomDomain !== undefined) {\n\t\t\treturn data.filter(\n\t\t\t\t(d) =>\n\t\t\t\t\td[domainIdentifier].getTime() > zoomDomain[0].getTime() &&\n\t\t\t\t\td[domainIdentifier].getTime() < zoomDomain[1].getTime()\n\t\t\t);\n\t\t}\n\t\treturn data;\n\t}\n\n\tgetScatterData() {\n\t\tconst options = this.getOptions();\n\n\t\tconst { stacked } = this.configs;\n\n\t\tlet scatterData;\n\t\tif (stacked) {\n\t\t\tconst percentage = Object.keys(options.axes).some(\n\t\t\t\t(axis) => options.axes[axis].percentage\n\t\t\t);\n\t\t\tscatterData = this.model.getStackedData({\n\t\t\t\tgroups: this.configs.groups,\n\t\t\t\tpercentage,\n\t\t\t});\n\t\t} else {\n\t\t\tscatterData = this.model\n\t\t\t\t.getDisplayData(this.configs.groups)\n\t\t\t\t.filter((d) => {\n\t\t\t\t\tconst rangeIdentifier = this.services.cartesianScales.getRangeIdentifier(\n\t\t\t\t\t\td\n\t\t\t\t\t);\n\t\t\t\t\treturn (\n\t\t\t\t\t\td[rangeIdentifier] !== undefined &&\n\t\t\t\t\t\td[rangeIdentifier] !== null\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t}\n\n\t\t// filter out datapoints that aren't part of the zoomed domain\n\t\treturn this.filterBasedOnZoomDomain(scatterData);\n\t}\n\n\trender(animate: boolean) {\n\t\tconst isScatterEnabled =\n\t\t\tTools.getProperty(this.getOptions(), 'points', 'enabled') ||\n\t\t\tTools.getProperty(this.getOptions(), 'bubble', 'enabled');\n\n\t\tif (!isScatterEnabled) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Grab container SVG\n\t\tconst svg = this.getContainerSVG({ withinChartClip: true });\n\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst domainIdentifier = this.services.cartesianScales.getDomainIdentifier();\n\n\t\t// Update data on dot groups\n\t\tconst circles = svg\n\t\t\t.selectAll('circle.dot')\n\t\t\t.data(\n\t\t\t\tthis.getScatterData(),\n\t\t\t\t(datum) => `${datum[groupMapsTo]}-${datum[domainIdentifier]}`\n\t\t\t);\n\n\t\t// Remove circles that need to be removed\n\t\tcircles.exit().attr('opacity', 0).remove();\n\n\t\t// Add the dot groups that need to be introduced\n\t\tconst enteringCircles = circles\n\t\t\t.enter()\n\t\t\t.append('circle')\n\t\t\t.classed('dot', true)\n\t\t\t.attr('opacity', 0);\n\n\t\t// Apply styling & position\n\t\tconst circlesToStyle = enteringCircles.merge(circles);\n\t\tthis.styleCircles(circlesToStyle, animate);\n\n\t\t// Add event listeners to elements drawn\n\t\tthis.addEventListeners();\n\t}\n\n\t// A value is an anomaly if is above all defined domain and range thresholds\n\tisDatapointThresholdAnomaly(datum: any, index: number) {\n\t\tconst { handleThresholds } = this.configs;\n\t\tif (!handleThresholds) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst { cartesianScales } = this.services;\n\t\tconst orientation = cartesianScales.getOrientation();\n\n\t\t// Get highest domain and range thresholds\n\t\tconst [\n\t\t\txThreshold,\n\t\t\tyThreshold,\n\t\t] = Tools.flipDomainAndRangeBasedOnOrientation(\n\t\t\tthis.services.cartesianScales.getHighestDomainThreshold(),\n\t\t\tthis.services.cartesianScales.getHighestRangeThreshold(),\n\t\t\torientation\n\t\t);\n\n\t\tconst [\n\t\t\tgetXValue,\n\t\t\tgetYValue,\n\t\t] = Tools.flipDomainAndRangeBasedOnOrientation(\n\t\t\t(d, i) => this.services.cartesianScales.getDomainValue(d, i),\n\t\t\t(d, i) => this.services.cartesianScales.getRangeValue(d, i),\n\t\t\torientation\n\t\t);\n\n\t\t// Get datum x and y values\n\t\tconst xValue = getXValue(datum, index);\n\t\tconst yValue = getYValue(datum, index);\n\n\t\t// To be an anomaly, the value has to be higher or equal than the threshold value\n\t\t// (if are present, both range and domain threshold values)\n\t\tif (yThreshold && xThreshold) {\n\t\t\treturn (\n\t\t\t\tyValue <= yThreshold.scaleValue &&\n\t\t\t\txValue >= xThreshold.scaleValue\n\t\t\t);\n\t\t}\n\n\t\tif (yThreshold) {\n\t\t\treturn yValue <= yThreshold.scaleValue;\n\t\t}\n\n\t\tif (xThreshold) {\n\t\t\treturn xValue >= xThreshold.scaleValue;\n\t\t}\n\t}\n\n\tstyleCircles(selection: Selection<any, any, any, any>, animate: boolean) {\n\t\t// Chart options mixed with the internal configurations\n\t\tconst options = this.getOptions();\n\t\tconst { filled, fillOpacity } = options.points;\n\t\tconst { cartesianScales, transitions } = this.services;\n\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst getDomainValue = (d, i) => cartesianScales.getDomainValue(d, i);\n\t\tconst getRangeValue = (d, i) => cartesianScales.getRangeValue(d, i);\n\t\tconst [\n\t\t\tgetXValue,\n\t\t\tgetYValue,\n\t\t] = Tools.flipDomainAndRangeBasedOnOrientation(\n\t\t\tgetDomainValue,\n\t\t\tgetRangeValue,\n\t\t\tcartesianScales.getOrientation()\n\t\t);\n\n\t\tconst { fadeInOnChartHolderMouseover } = this.configs;\n\t\tselection\n\t\t\t.raise()\n\t\t\t.classed('dot', true)\n\t\t\t.attr('class', (d) => {\n\t\t\t\tconst domainIdentifier = cartesianScales.getDomainIdentifier(d);\n\t\t\t\tconst isFilled = this.model.getIsFilled(\n\t\t\t\t\td[groupMapsTo],\n\t\t\t\t\td[domainIdentifier],\n\t\t\t\t\td,\n\t\t\t\t\tfilled\n\t\t\t\t);\n\t\t\t\tconst classNamesNeeded = isFilled\n\t\t\t\t\t? [ColorClassNameTypes.FILL, ColorClassNameTypes.STROKE]\n\t\t\t\t\t: [ColorClassNameTypes.STROKE];\n\n\t\t\t\treturn this.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: classNamesNeeded,\n\t\t\t\t\tdataGroupName: d[groupMapsTo],\n\t\t\t\t\toriginalClassName: 'dot',\n\t\t\t\t});\n\t\t\t})\n\t\t\t// Set class to highlight the dots that are above all the thresholds, in both directions (vertical and horizontal)\n\t\t\t.classed('threshold-anomaly', (d, i) =>\n\t\t\t\tthis.isDatapointThresholdAnomaly(d, i)\n\t\t\t)\n\t\t\t.classed('filled', (d) => {\n\t\t\t\tconst domainIdentifier = cartesianScales.getDomainIdentifier(d);\n\t\t\t\treturn this.model.getIsFilled(\n\t\t\t\t\td[groupMapsTo],\n\t\t\t\t\td[domainIdentifier],\n\t\t\t\t\td,\n\t\t\t\t\tfilled\n\t\t\t\t);\n\t\t\t})\n\t\t\t.classed('unfilled', (d) => {\n\t\t\t\tconst domainIdentifier = cartesianScales.getDomainIdentifier(d);\n\t\t\t\treturn !this.model.getIsFilled(\n\t\t\t\t\td[groupMapsTo],\n\t\t\t\t\td[domainIdentifier],\n\t\t\t\t\td,\n\t\t\t\t\tfilled\n\t\t\t\t);\n\t\t\t})\n\t\t\t.transition(\n\t\t\t\ttransitions.getTransition('scatter-update-enter', animate)\n\t\t\t)\n\t\t\t.attr('cx', getXValue)\n\t\t\t.attr('cy', getYValue)\n\t\t\t.attr('r', options.points.radius)\n\t\t\t.style('fill', (d) => {\n\t\t\t\tconst domainIdentifier = cartesianScales.getDomainIdentifier(d);\n\t\t\t\tif (\n\t\t\t\t\tthis.model.getIsFilled(\n\t\t\t\t\t\td[groupMapsTo],\n\t\t\t\t\t\td[domainIdentifier],\n\t\t\t\t\t\td,\n\t\t\t\t\t\tfilled\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\treturn this.model.getFillColor(\n\t\t\t\t\t\td[groupMapsTo],\n\t\t\t\t\t\td[domainIdentifier],\n\t\t\t\t\t\td\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.style('stroke', (d) => {\n\t\t\t\tconst domainIdentifier = cartesianScales.getDomainIdentifier(d);\n\t\t\t\treturn this.model.getStrokeColor(\n\t\t\t\t\td[groupMapsTo],\n\t\t\t\t\td[domainIdentifier],\n\t\t\t\t\td\n\t\t\t\t);\n\t\t\t})\n\t\t\t.attr('fill-opacity', filled ? fillOpacity : 1)\n\t\t\t.attr('opacity', fadeInOnChartHolderMouseover ? 0 : 1)\n\t\t\t// a11y\n\t\t\t.attr('role', Roles.GRAPHICS_SYMBOL)\n\t\t\t.attr('aria-roledescription', 'point')\n\t\t\t.attr('aria-label', (d) => {\n\t\t\t\tconst rangeIdentifier = cartesianScales.getRangeIdentifier(d);\n\t\t\t\treturn d[rangeIdentifier];\n\t\t\t});\n\n\t\t// Add event listeners to elements drawn\n\t\tthis.addEventListeners();\n\t}\n\n\thandleChartHolderOnHover = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll('circle.dot')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'chart-holder-hover-scatter'\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('opacity', 1);\n\t};\n\n\thandleChartHolderOnMouseOut = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll('circle.dot')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'chart-holder-mouseout-scatter'\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('opacity', 0);\n\t};\n\n\thandleLegendOnHover = (event: CustomEvent) => {\n\t\tconst { hoveredElement } = event.detail;\n\n\t\tconst { groupMapsTo } = this.getOptions().data;\n\n\t\tthis.parent\n\t\t\t.selectAll('circle.dot')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition('legend-hover-scatter')\n\t\t\t)\n\t\t\t.attr('opacity', (d) =>\n\t\t\t\td[groupMapsTo] !== hoveredElement.datum()['name'] ? 0.3 : 1\n\t\t\t);\n\t};\n\n\thandleLegendMouseOut = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll('circle.dot')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'legend-mouseout-scatter'\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('opacity', 1);\n\t};\n\n\taddEventListeners() {\n\t\tconst self = this;\n\t\tconst { groupMapsTo } = self.getOptions().data;\n\n\t\tthis.parent\n\t\t\t.selectAll('circle')\n\t\t\t.on('mouseover', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\thoveredElement\n\t\t\t\t\t.classed('hovered', true)\n\t\t\t\t\t.attr('class', (d) =>\n\t\t\t\t\t\tself.model.getColorClassName({\n\t\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.FILL],\n\t\t\t\t\t\t\tdataGroupName: d[groupMapsTo],\n\t\t\t\t\t\t\toriginalClassName: hoveredElement.attr('class'),\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t\t.style('fill', (d) => {\n\t\t\t\t\t\tconst domainIdentifier = self.services.cartesianScales.getDomainIdentifier(\n\t\t\t\t\t\t\td\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn self.model.getFillColor(\n\t\t\t\t\t\t\td[groupMapsTo],\n\t\t\t\t\t\t\td[domainIdentifier],\n\t\t\t\t\t\t\td\n\t\t\t\t\t\t);\n\t\t\t\t\t})\n\t\t\t\t\t.classed('unfilled', false);\n\n\t\t\t\t// Show tooltip for single datapoint\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\thoveredElement,\n\t\t\t\t\tdata: [datum],\n\t\t\t\t});\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Scatter.SCATTER_MOUSEOVER,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t})\n\t\t\t.on('mousemove', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Scatter.SCATTER_MOUSEMOVE,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.MOVE);\n\t\t\t})\n\t\t\t.on('click', function (datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Scatter.SCATTER_CLICK,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: select(this),\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t})\n\t\t\t.on('mouseout', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\thoveredElement.classed('hovered', false);\n\n\t\t\t\tif (!self.configs.filled) {\n\t\t\t\t\tconst { filled } = self.getOptions().points;\n\t\t\t\t\tconst domainIdentifier = self.services.cartesianScales.getDomainIdentifier(\n\t\t\t\t\t\tdatum\n\t\t\t\t\t);\n\t\t\t\t\thoveredElement\n\t\t\t\t\t\t.classed(\n\t\t\t\t\t\t\t'unfilled',\n\t\t\t\t\t\t\t!self.model.getIsFilled(\n\t\t\t\t\t\t\t\tdatum[groupMapsTo],\n\t\t\t\t\t\t\t\tdatum[domainIdentifier],\n\t\t\t\t\t\t\t\tdatum,\n\t\t\t\t\t\t\t\tfilled\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.style('fill', (d) =>\n\t\t\t\t\t\t\tfilled\n\t\t\t\t\t\t\t\t? self.model.getFillColor(\n\t\t\t\t\t\t\t\t\t\td[groupMapsTo],\n\t\t\t\t\t\t\t\t\t\td[domainIdentifier],\n\t\t\t\t\t\t\t\t\t\td\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t: null\n\t\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Scatter.SCATTER_MOUSEOUT,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\t// Hide tooltip\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.HIDE, {\n\t\t\t\t\thoveredElement,\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\tdestroy() {\n\t\t// Remove event listeners\n\t\tthis.parent\n\t\t\t.selectAll('circle')\n\t\t\t.on('mousemove', null)\n\t\t\t.on('mouseout', null);\n\n\t\t// Remove legend listeners\n\t\tconst { events } = this.services;\n\t\tevents.removeEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\t\tevents.removeEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\t\tevents.removeEventListener(\n\t\t\tEvents.Chart.MOUSEOVER,\n\t\t\tthis.handleChartHolderOnHover\n\t\t);\n\t\tevents.removeEventListener(\n\t\t\tEvents.Chart.MOUSEOUT,\n\t\t\tthis.handleChartHolderOnMouseOut\n\t\t);\n\t}\n}\n"]}
1
+ {"version":3,"file":"scatter.js","sourceRoot":"","sources":["scatter.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport { Roles, Events, ColorClassNameTypes } from '../../interfaces';\nimport { Tools } from '../../tools';\n\n// D3 Imports\nimport { select, Selection } from 'd3-selection';\n\nexport class Scatter extends Component {\n\ttype = 'scatter';\n\tscatterData: any;\n\n\tinit() {\n\t\tconst { events } = this.services;\n\t\t// Highlight correct circle on legend item hovers\n\t\tevents.addEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\t\t// Un-highlight circles on legend item mouseouts\n\t\tevents.addEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\n\t\tconst { fadeInOnChartHolderMouseover } = this.configs;\n\t\tif (fadeInOnChartHolderMouseover) {\n\t\t\t// Fade-in scatter circles\n\t\t\tevents.addEventListener(\n\t\t\t\tEvents.Chart.MOUSEOVER,\n\t\t\t\tthis.handleChartHolderOnHover\n\t\t\t);\n\t\t\t// Fade-out scatter circles\n\t\t\tevents.addEventListener(\n\t\t\t\tEvents.Chart.MOUSEOUT,\n\t\t\t\tthis.handleChartHolderOnMouseOut\n\t\t\t);\n\t\t}\n\t}\n\n\tfilterBasedOnZoomDomain(data) {\n\t\tconst domainIdentifier = this.services.cartesianScales.getDomainIdentifier(\n\t\t\tdata\n\t\t);\n\t\tconst zoomDomain = this.model.get('zoomDomain');\n\t\tif (zoomDomain !== undefined) {\n\t\t\treturn data.filter(\n\t\t\t\t(d) =>\n\t\t\t\t\td[domainIdentifier].getTime() > zoomDomain[0].getTime() &&\n\t\t\t\t\td[domainIdentifier].getTime() < zoomDomain[1].getTime()\n\t\t\t);\n\t\t}\n\t\treturn data;\n\t}\n\n\tgetScatterData() {\n\t\tconst options = this.getOptions();\n\n\t\tconst { stacked } = this.configs;\n\n\t\tlet scatterData;\n\t\tif (stacked) {\n\t\t\tconst percentage = Object.keys(options.axes).some(\n\t\t\t\t(axis) => options.axes[axis].percentage\n\t\t\t);\n\t\t\tscatterData = this.model.getStackedData({\n\t\t\t\tgroups: this.configs.groups,\n\t\t\t\tpercentage,\n\t\t\t});\n\t\t} else {\n\t\t\tscatterData = this.model\n\t\t\t\t.getDisplayData(this.configs.groups)\n\t\t\t\t.filter((d) => {\n\t\t\t\t\tconst rangeIdentifier = this.services.cartesianScales.getRangeIdentifier(\n\t\t\t\t\t\td\n\t\t\t\t\t);\n\t\t\t\t\treturn (\n\t\t\t\t\t\td[rangeIdentifier] !== undefined &&\n\t\t\t\t\t\td[rangeIdentifier] !== null\n\t\t\t\t\t);\n\t\t\t\t});\n\t\t}\n\n\t\t// filter out datapoints that aren't part of the zoomed domain\n\t\treturn this.filterBasedOnZoomDomain(scatterData);\n\t}\n\n\trender(animate: boolean) {\n\t\tconst isScatterEnabled =\n\t\t\tTools.getProperty(this.getOptions(), 'points', 'enabled') ||\n\t\t\tTools.getProperty(this.getOptions(), 'bubble', 'enabled');\n\n\t\tif (!isScatterEnabled) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Grab container SVG\n\t\tconst svg = this.getContainerSVG({ withinChartClip: true });\n\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst domainIdentifier = this.services.cartesianScales.getDomainIdentifier();\n\n\t\t// Update data on dot groups\n\t\tconst circles = svg\n\t\t\t.selectAll('circle.dot')\n\t\t\t.data(\n\t\t\t\tthis.getScatterData(),\n\t\t\t\t(datum) => `${datum[groupMapsTo]}-${datum[domainIdentifier]}`\n\t\t\t);\n\n\t\t// Remove circles that need to be removed\n\t\tcircles.exit().attr('opacity', 0).remove();\n\n\t\t// Add the dot groups that need to be introduced\n\t\tconst enteringCircles = circles\n\t\t\t.enter()\n\t\t\t.append('circle')\n\t\t\t.classed('dot', true)\n\t\t\t.attr('opacity', 0);\n\n\t\t// Apply styling & position\n\t\tconst circlesToStyle = enteringCircles.merge(circles);\n\t\tthis.styleCircles(circlesToStyle, animate);\n\n\t\t// Add event listeners to elements drawn\n\t\tthis.addEventListeners();\n\t}\n\n\t// A value is an anomaly if is above all defined domain and range thresholds\n\tisDatapointThresholdAnomaly(datum: any, index: number) {\n\t\tconst { handleThresholds } = this.configs;\n\t\tif (!handleThresholds) {\n\t\t\treturn false;\n\t\t}\n\n\t\tconst { cartesianScales } = this.services;\n\t\tconst orientation = cartesianScales.getOrientation();\n\n\t\t// Get highest domain and range thresholds\n\t\tconst [\n\t\t\txThreshold,\n\t\t\tyThreshold,\n\t\t] = Tools.flipDomainAndRangeBasedOnOrientation(\n\t\t\tthis.services.cartesianScales.getHighestDomainThreshold(),\n\t\t\tthis.services.cartesianScales.getHighestRangeThreshold(),\n\t\t\torientation\n\t\t);\n\n\t\tconst [\n\t\t\tgetXValue,\n\t\t\tgetYValue,\n\t\t] = Tools.flipDomainAndRangeBasedOnOrientation(\n\t\t\t(d, i) => this.services.cartesianScales.getDomainValue(d, i),\n\t\t\t(d, i) => this.services.cartesianScales.getRangeValue(d, i),\n\t\t\torientation\n\t\t);\n\n\t\t// Get datum x and y values\n\t\tconst xValue = getXValue(datum, index);\n\t\tconst yValue = getYValue(datum, index);\n\n\t\t// To be an anomaly, the value has to be higher or equal than the threshold value\n\t\t// (if are present, both range and domain threshold values)\n\t\tif (yThreshold && xThreshold) {\n\t\t\treturn (\n\t\t\t\tyValue <= yThreshold.scaleValue &&\n\t\t\t\txValue >= xThreshold.scaleValue\n\t\t\t);\n\t\t}\n\n\t\tif (yThreshold) {\n\t\t\treturn yValue <= yThreshold.scaleValue;\n\t\t}\n\n\t\tif (xThreshold) {\n\t\t\treturn xValue >= xThreshold.scaleValue;\n\t\t}\n\t}\n\n\tstyleCircles(selection: Selection<any, any, any, any>, animate: boolean) {\n\t\t// Chart options mixed with the internal configurations\n\t\tconst options = this.getOptions();\n\t\tconst { filled, fillOpacity } = options.points;\n\t\tconst { cartesianScales, transitions } = this.services;\n\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst getDomainValue = (d, i) => cartesianScales.getDomainValue(d, i);\n\t\tconst getRangeValue = (d, i) => cartesianScales.getRangeValue(d, i);\n\t\tconst [\n\t\t\tgetXValue,\n\t\t\tgetYValue,\n\t\t] = Tools.flipDomainAndRangeBasedOnOrientation(\n\t\t\tgetDomainValue,\n\t\t\tgetRangeValue,\n\t\t\tcartesianScales.getOrientation()\n\t\t);\n\n\t\tconst { fadeInOnChartHolderMouseover } = this.configs;\n\t\tselection\n\t\t\t.raise()\n\t\t\t.classed('dot', true)\n\t\t\t.attr('class', (d) => {\n\t\t\t\tconst domainIdentifier = cartesianScales.getDomainIdentifier(d);\n\t\t\t\tconst isFilled = this.model.getIsFilled(\n\t\t\t\t\td[groupMapsTo],\n\t\t\t\t\td[domainIdentifier],\n\t\t\t\t\td,\n\t\t\t\t\tfilled\n\t\t\t\t);\n\t\t\t\tconst classNamesNeeded = isFilled\n\t\t\t\t\t? [ColorClassNameTypes.FILL, ColorClassNameTypes.STROKE]\n\t\t\t\t\t: [ColorClassNameTypes.STROKE];\n\n\t\t\t\treturn this.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: classNamesNeeded,\n\t\t\t\t\tdataGroupName: d[groupMapsTo],\n\t\t\t\t\toriginalClassName: 'dot',\n\t\t\t\t});\n\t\t\t})\n\t\t\t// Set class to highlight the dots that are above all the thresholds, in both directions (vertical and horizontal)\n\t\t\t.classed('threshold-anomaly', (d, i) =>\n\t\t\t\tthis.isDatapointThresholdAnomaly(d, i)\n\t\t\t)\n\t\t\t.classed('filled', (d) => {\n\t\t\t\tconst domainIdentifier = cartesianScales.getDomainIdentifier(d);\n\t\t\t\treturn this.model.getIsFilled(\n\t\t\t\t\td[groupMapsTo],\n\t\t\t\t\td[domainIdentifier],\n\t\t\t\t\td,\n\t\t\t\t\tfilled\n\t\t\t\t);\n\t\t\t})\n\t\t\t.classed('unfilled', (d) => {\n\t\t\t\tconst domainIdentifier = cartesianScales.getDomainIdentifier(d);\n\t\t\t\treturn !this.model.getIsFilled(\n\t\t\t\t\td[groupMapsTo],\n\t\t\t\t\td[domainIdentifier],\n\t\t\t\t\td,\n\t\t\t\t\tfilled\n\t\t\t\t);\n\t\t\t})\n\t\t\t.transition(\n\t\t\t\ttransitions.getTransition('scatter-update-enter', animate)\n\t\t\t)\n\t\t\t.attr('cx', getXValue)\n\t\t\t.attr('cy', getYValue)\n\t\t\t.attr('r', options.points.radius)\n\t\t\t.style('fill', (d) => {\n\t\t\t\tconst domainIdentifier = cartesianScales.getDomainIdentifier(d);\n\t\t\t\tif (\n\t\t\t\t\tthis.model.getIsFilled(\n\t\t\t\t\t\td[groupMapsTo],\n\t\t\t\t\t\td[domainIdentifier],\n\t\t\t\t\t\td,\n\t\t\t\t\t\tfilled\n\t\t\t\t\t)\n\t\t\t\t) {\n\t\t\t\t\treturn this.model.getFillColor(\n\t\t\t\t\t\td[groupMapsTo],\n\t\t\t\t\t\td[domainIdentifier],\n\t\t\t\t\t\td\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t})\n\t\t\t.style('stroke', (d) => {\n\t\t\t\tconst domainIdentifier = cartesianScales.getDomainIdentifier(d);\n\t\t\t\treturn this.model.getStrokeColor(\n\t\t\t\t\td[groupMapsTo],\n\t\t\t\t\td[domainIdentifier],\n\t\t\t\t\td\n\t\t\t\t);\n\t\t\t})\n\t\t\t.attr('fill-opacity', filled ? fillOpacity : 1)\n\t\t\t.attr('opacity', fadeInOnChartHolderMouseover ? 0 : 1)\n\t\t\t// a11y\n\t\t\t.attr('role', Roles.GRAPHICS_SYMBOL)\n\t\t\t.attr('aria-roledescription', 'point')\n\t\t\t.attr('aria-label', (d) => {\n\t\t\t\tconst rangeIdentifier = cartesianScales.getRangeIdentifier(d);\n\t\t\t\treturn d[rangeIdentifier];\n\t\t\t});\n\n\t\t// Add event listeners to elements drawn\n\t\tthis.addEventListeners();\n\t}\n\n\thandleChartHolderOnHover = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll('circle.dot')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'chart-holder-hover-scatter'\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('opacity', 1);\n\t};\n\n\thandleChartHolderOnMouseOut = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll('circle.dot')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'chart-holder-mouseout-scatter'\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('opacity', 0);\n\t};\n\n\thandleLegendOnHover = (event: CustomEvent) => {\n\t\tconst { hoveredElement } = event.detail;\n\n\t\tconst { groupMapsTo } = this.getOptions().data;\n\n\t\tthis.parent\n\t\t\t.selectAll('circle.dot')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition('legend-hover-scatter')\n\t\t\t)\n\t\t\t.attr('opacity', (d) =>\n\t\t\t\td[groupMapsTo] !== hoveredElement.datum()['name'] ? 0.3 : 1\n\t\t\t);\n\t};\n\n\thandleLegendMouseOut = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll('circle.dot')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'legend-mouseout-scatter'\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('opacity', 1);\n\t};\n\n\taddEventListeners() {\n\t\tconst self = this;\n\t\tconst { groupMapsTo } = self.getOptions().data;\n\n\t\tthis.parent\n\t\t\t.selectAll('circle')\n\t\t\t.on('mouseover', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\thoveredElement\n\t\t\t\t\t.classed('hovered', true)\n\t\t\t\t\t.attr('class', (d) =>\n\t\t\t\t\t\tself.model.getColorClassName({\n\t\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.FILL],\n\t\t\t\t\t\t\tdataGroupName: d[groupMapsTo],\n\t\t\t\t\t\t\toriginalClassName: hoveredElement.attr('class'),\n\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t\t.style('fill', (d) => {\n\t\t\t\t\t\tconst domainIdentifier = self.services.cartesianScales.getDomainIdentifier(\n\t\t\t\t\t\t\td\n\t\t\t\t\t\t);\n\t\t\t\t\t\treturn self.model.getFillColor(\n\t\t\t\t\t\t\td[groupMapsTo],\n\t\t\t\t\t\t\td[domainIdentifier],\n\t\t\t\t\t\t\td\n\t\t\t\t\t\t);\n\t\t\t\t\t})\n\t\t\t\t\t.classed('unfilled', false);\n\n\t\t\t\t// Show tooltip\n\t\t\t\tconst bubbleOptions = Tools.getProperty(\n\t\t\t\t\tself.getOptions(),\n\t\t\t\t\t'bubble'\n\t\t\t\t);\n\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\thoveredElement,\n\t\t\t\t\tdata: [datum],\n\t\t\t\t\tadditionalItems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: Tools.getProperty(\n\t\t\t\t\t\t\t\tbubbleOptions,\n\t\t\t\t\t\t\t\t'radiusLabel'\n\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\tvalue:\n\t\t\t\t\t\t\t\tdatum[\n\t\t\t\t\t\t\t\t\tTools.getProperty(\n\t\t\t\t\t\t\t\t\t\tbubbleOptions,\n\t\t\t\t\t\t\t\t\t\t'radiusMapsTo'\n\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},\n\t\t\t\t\t],\n\t\t\t\t});\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Scatter.SCATTER_MOUSEOVER,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t})\n\t\t\t.on('mousemove', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Scatter.SCATTER_MOUSEMOVE,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.MOVE);\n\t\t\t})\n\t\t\t.on('click', function (datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Scatter.SCATTER_CLICK,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: select(this),\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t})\n\t\t\t.on('mouseout', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\thoveredElement.classed('hovered', false);\n\n\t\t\t\tif (!self.configs.filled) {\n\t\t\t\t\tconst { filled } = self.getOptions().points;\n\t\t\t\t\tconst domainIdentifier = self.services.cartesianScales.getDomainIdentifier(\n\t\t\t\t\t\tdatum\n\t\t\t\t\t);\n\t\t\t\t\thoveredElement\n\t\t\t\t\t\t.classed(\n\t\t\t\t\t\t\t'unfilled',\n\t\t\t\t\t\t\t!self.model.getIsFilled(\n\t\t\t\t\t\t\t\tdatum[groupMapsTo],\n\t\t\t\t\t\t\t\tdatum[domainIdentifier],\n\t\t\t\t\t\t\t\tdatum,\n\t\t\t\t\t\t\t\tfilled\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.style('fill', (d) =>\n\t\t\t\t\t\t\tfilled\n\t\t\t\t\t\t\t\t? self.model.getFillColor(\n\t\t\t\t\t\t\t\t\t\td[groupMapsTo],\n\t\t\t\t\t\t\t\t\t\td[domainIdentifier],\n\t\t\t\t\t\t\t\t\t\td\n\t\t\t\t\t\t\t\t )\n\t\t\t\t\t\t\t\t: null\n\t\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Scatter.SCATTER_MOUSEOUT,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\t// Hide tooltip\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.HIDE, {\n\t\t\t\t\thoveredElement,\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\tdestroy() {\n\t\t// Remove event listeners\n\t\tthis.parent\n\t\t\t.selectAll('circle')\n\t\t\t.on('mousemove', null)\n\t\t\t.on('mouseout', null);\n\n\t\t// Remove legend listeners\n\t\tconst { events } = this.services;\n\t\tevents.removeEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\t\tevents.removeEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\t\tevents.removeEventListener(\n\t\t\tEvents.Chart.MOUSEOVER,\n\t\t\tthis.handleChartHolderOnHover\n\t\t);\n\t\tevents.removeEventListener(\n\t\t\tEvents.Chart.MOUSEOUT,\n\t\t\tthis.handleChartHolderOnMouseOut\n\t\t);\n\t}\n}\n"]}
@@ -116,9 +116,7 @@ var WordCloud = /** @class */ (function (_super) {
116
116
  .attr('opacity', 0);
117
117
  enteringText
118
118
  .merge(allText)
119
- .style('font-size', function (d) {
120
- return d.size;
121
- })
119
+ .style('font-size', function (d) { return d.size + "px"; })
122
120
  .text(function (d) {
123
121
  return d.text;
124
122
  })
@@ -128,6 +126,9 @@ var WordCloud = /** @class */ (function (_super) {
128
126
  dataGroupName: d[groupMapsTo],
129
127
  originalClassName: "word " + (d.size > 32 ? 'light' : ''),
130
128
  });
129
+ })
130
+ .style('fill', function (d) {
131
+ return self.model.getFillColor(d[groupMapsTo], d.text, d);
131
132
  })
132
133
  .attr('text-anchor', 'middle')
133
134
  .transition(self.services.transitions.getTransition('wordcloud-text-update-enter', animate))
@@ -139,7 +140,6 @@ var WordCloud = /** @class */ (function (_super) {
139
140
  };
140
141
  WordCloud.prototype.addEventListeners = function () {
141
142
  var options = this.getOptions();
142
- var fontSizeMapsTo = options.wordCloud.fontSizeMapsTo;
143
143
  var groupMapsTo = options.data.groupMapsTo;
144
144
  // Highlights 1 word or unhighlights all
145
145
  var debouncedHighlight = Tools.debounce(function (word) {
@@ -1 +1 @@
1
- {"version":3,"file":"wordcloud.js","sourceRoot":"","sources":["wordcloud.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport { DOMUtils } from '../../services';\nimport { Events, ColorClassNameTypes } from '../../interfaces';\nimport { Tools } from '../../tools';\n\n// D3 Imports\nimport { select } from 'd3-selection';\nimport { scaleLinear } from 'd3-scale';\nimport { extent } from 'd3-array';\nimport cloud from 'd3-cloud';\n\nexport class WordCloud extends Component {\n\ttype = 'wordcloud';\n\n\tinit() {\n\t\tconst eventsFragment = this.services.events;\n\n\t\t// Highlight correct words on legend item hovers\n\t\teventsFragment.addEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\n\t\t// Un-highlight words on legend item mouseouts\n\t\teventsFragment.addEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\t}\n\n\tgetFontSizeScale(data: any) {\n\t\tconst options = this.getOptions();\n\t\tconst { fontSizeMapsTo } = options.wordCloud;\n\n\t\t// Filter out any null/undefined values\n\t\tconst allOccurences = data\n\t\t\t.map((d) => d[fontSizeMapsTo])\n\t\t\t.filter((size) => size);\n\t\tconst chartSize = DOMUtils.getSVGElementSize(\n\t\t\tthis.services.domUtils.getMainSVG(),\n\t\t\t{ useAttr: true }\n\t\t);\n\n\t\t// We need the ternary operator here in case the user\n\t\t// doesn't provide size values in data\n\t\tconst sizeDataIsValid = allOccurences.length > 0;\n\t\tconst domain = sizeDataIsValid ? extent(allOccurences) : [1, 1];\n\t\treturn scaleLinear()\n\t\t\t.domain(domain as any)\n\t\t\t.range(\n\t\t\t\tsizeDataIsValid\n\t\t\t\t\t? options.wordCloud.fontSizeRange(chartSize, data)\n\t\t\t\t\t: [4, 4]\n\t\t\t);\n\t}\n\n\trender(animate = true) {\n\t\tconst self = this;\n\t\tconst svg = this.getContainerSVG();\n\n\t\tconst displayData = this.model.getDisplayData();\n\t\tconst fontSizeScale = this.getFontSizeScale(displayData);\n\n\t\tconst options = this.getOptions();\n\t\tconst { fontSizeMapsTo, wordMapsTo } = options.wordCloud;\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst { width, height } = DOMUtils.getSVGElementSize(this.parent, {\n\t\t\tuseAttrs: true,\n\t\t});\n\n\t\tif (width === 0 || height === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst layout = cloud()\n\t\t\t.size([width, height])\n\t\t\t.words(\n\t\t\t\tdisplayData.map(function (d) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t[groupMapsTo]: d[groupMapsTo],\n\t\t\t\t\t\ttext: d[wordMapsTo],\n\t\t\t\t\t\tsize: d[fontSizeMapsTo],\n\t\t\t\t\t\tvalue: d[fontSizeMapsTo],\n\t\t\t\t\t};\n\t\t\t\t})\n\t\t\t)\n\t\t\t.padding(5)\n\t\t\t.rotate(0)\n\t\t\t.fontSize((d) => fontSizeScale(d.size))\n\t\t\t.on('end', draw);\n\n\t\tlayout.start();\n\n\t\tfunction draw(words) {\n\t\t\tconst textGroup = DOMUtils.appendOrSelect(svg, 'g.words');\n\t\t\ttextGroup.attr(\n\t\t\t\t'transform',\n\t\t\t\t`translate(${layout.size()[0] / 2}, ${layout.size()[1] / 2})`\n\t\t\t);\n\n\t\t\tconst allText = textGroup\n\t\t\t\t.selectAll('text')\n\t\t\t\t.data(words, (d) => `${d[groupMapsTo]}-${d.text}`);\n\n\t\t\t// Remove texts that are no longer needed\n\t\t\tallText.exit().attr('opacity', 0).remove();\n\n\t\t\tconst enteringText = allText\n\t\t\t\t.enter()\n\t\t\t\t.append('text')\n\t\t\t\t.attr('opacity', 0);\n\n\t\t\tenteringText\n\t\t\t\t.merge(allText)\n\t\t\t\t.style('font-size', function (d) {\n\t\t\t\t\treturn d.size;\n\t\t\t\t})\n\t\t\t\t.text(function (d) {\n\t\t\t\t\treturn d.text;\n\t\t\t\t})\n\t\t\t\t.attr('class', (d) =>\n\t\t\t\t\tself.model.getColorClassName({\n\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.FILL],\n\t\t\t\t\t\tdataGroupName: d[groupMapsTo],\n\t\t\t\t\t\toriginalClassName: `word ${d.size > 32 ? 'light' : ''}`,\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t\t.attr('text-anchor', 'middle')\n\t\t\t\t.transition(\n\t\t\t\t\tself.services.transitions.getTransition(\n\t\t\t\t\t\t'wordcloud-text-update-enter',\n\t\t\t\t\t\tanimate\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t.attr('transform', d => `translate(${d.x}, ${d.y})`)\n\t\t\t\t.attr('opacity', 1);\n\t\t}\n\n\t\t// Add event listeners\n\t\tthis.addEventListeners();\n\t}\n\n\t// Highlight elements that match the hovered legend item\n\thandleLegendOnHover = (event: CustomEvent) => {\n\t\tconst { hoveredElement } = event.detail;\n\t\tconst { groupMapsTo } = this.getOptions().data;\n\n\t\tthis.parent\n\t\t\t.selectAll('text.word')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'legend-hover-wordcloud'\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('opacity', (d) =>\n\t\t\t\td[groupMapsTo] !== hoveredElement.datum()['name'] ? 0.3 : 1\n\t\t\t);\n\t};\n\n\t// Un-highlight all elements\n\thandleLegendMouseOut = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll('text.word')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'legend-mouseout-wordcloud'\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('opacity', 1);\n\t};\n\n\taddEventListeners() {\n\t\tconst options = this.getOptions();\n\t\tconst { fontSizeMapsTo } = options.wordCloud;\n\t\tconst { groupMapsTo } = options.data;\n\n\t\t// Highlights 1 word or unhighlights all\n\t\tconst debouncedHighlight = Tools.debounce((word) => {\n\t\t\tconst allWords = self.parent\n\t\t\t\t.selectAll('text.word')\n\t\t\t\t.transition(\n\t\t\t\t\tself.services.transitions.getTransition(\n\t\t\t\t\t\t'wordcloud-word-mouse-highlight'\n\t\t\t\t\t)\n\t\t\t\t);\n\n\t\t\tif (word === null) {\n\t\t\t\tallWords.attr('opacity', 1);\n\t\t\t} else {\n\t\t\t\tallWords.attr('opacity', function () {\n\t\t\t\t\tif (word === this) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn 0.3;\n\t\t\t\t});\n\t\t\t}\n\t\t}, 6);\n\n\t\tconst self = this;\n\t\tthis.parent\n\t\t\t.selectAll('text.word')\n\t\t\t.on('mouseover', function (datum) {\n\t\t\t\tconst hoveredElement = this;\n\t\t\t\tdebouncedHighlight(hoveredElement);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.WordCloud.WORD_MOUSEOVER,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: select(this),\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\t// Show tooltip\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\thoveredElement,\n\t\t\t\t\titems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: options.tooltip.wordLabel,\n\t\t\t\t\t\t\tvalue: datum.text,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: options.tooltip.valueLabel,\n\t\t\t\t\t\t\tvalue: datum.value,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: options.tooltip.groupLabel,\n\t\t\t\t\t\t\tvalue: datum[groupMapsTo],\n\t\t\t\t\t\t\tclass: self.model.getColorClassName({\n\t\t\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.TOOLTIP],\n\t\t\t\t\t\t\t\tdataGroupName: datum[groupMapsTo],\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\t\t\t.on('mousemove', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.WordCloud.WORD_MOUSEMOVE,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\t// Show tooltip\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.MOVE);\n\t\t\t})\n\t\t\t.on('click', function (datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.WordCloud.WORD_CLICK,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: select(this),\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t})\n\t\t\t.on('mouseout', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\tdebouncedHighlight(null);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.WordCloud.WORD_MOUSEOUT,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\t// Hide tooltip\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.HIDE, {\n\t\t\t\t\thoveredElement,\n\t\t\t\t});\n\t\t\t});\n\t}\n}\n"]}
1
+ {"version":3,"file":"wordcloud.js","sourceRoot":"","sources":["wordcloud.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport { DOMUtils } from '../../services';\nimport { Events, ColorClassNameTypes } from '../../interfaces';\nimport { Tools } from '../../tools';\n\n// D3 Imports\nimport { select } from 'd3-selection';\nimport { scaleLinear } from 'd3-scale';\nimport { extent } from 'd3-array';\nimport cloud from 'd3-cloud';\n\nexport class WordCloud extends Component {\n\ttype = 'wordcloud';\n\n\tinit() {\n\t\tconst eventsFragment = this.services.events;\n\n\t\t// Highlight correct words on legend item hovers\n\t\teventsFragment.addEventListener(\n\t\t\tEvents.Legend.ITEM_HOVER,\n\t\t\tthis.handleLegendOnHover\n\t\t);\n\n\t\t// Un-highlight words on legend item mouseouts\n\t\teventsFragment.addEventListener(\n\t\t\tEvents.Legend.ITEM_MOUSEOUT,\n\t\t\tthis.handleLegendMouseOut\n\t\t);\n\t}\n\n\tgetFontSizeScale(data: any) {\n\t\tconst options = this.getOptions();\n\t\tconst { fontSizeMapsTo } = options.wordCloud;\n\n\t\t// Filter out any null/undefined values\n\t\tconst allOccurences = data\n\t\t\t.map((d) => d[fontSizeMapsTo])\n\t\t\t.filter((size) => size);\n\t\tconst chartSize = DOMUtils.getSVGElementSize(\n\t\t\tthis.services.domUtils.getMainSVG(),\n\t\t\t{ useAttr: true }\n\t\t);\n\n\t\t// We need the ternary operator here in case the user\n\t\t// doesn't provide size values in data\n\t\tconst sizeDataIsValid = allOccurences.length > 0;\n\t\tconst domain = sizeDataIsValid ? extent(allOccurences) : [1, 1];\n\t\treturn scaleLinear()\n\t\t\t.domain(domain as any)\n\t\t\t.range(\n\t\t\t\tsizeDataIsValid\n\t\t\t\t\t? options.wordCloud.fontSizeRange(chartSize, data)\n\t\t\t\t\t: [4, 4]\n\t\t\t);\n\t}\n\n\trender(animate = true) {\n\t\tconst self = this;\n\t\tconst svg = this.getContainerSVG();\n\n\t\tconst displayData = this.model.getDisplayData();\n\t\tconst fontSizeScale = this.getFontSizeScale(displayData);\n\n\t\tconst options = this.getOptions();\n\t\tconst { fontSizeMapsTo, wordMapsTo } = options.wordCloud;\n\t\tconst { groupMapsTo } = options.data;\n\n\t\tconst { width, height } = DOMUtils.getSVGElementSize(this.parent, {\n\t\t\tuseAttrs: true,\n\t\t});\n\n\t\tif (width === 0 || height === 0) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst layout = cloud()\n\t\t\t.size([width, height])\n\t\t\t.words(\n\t\t\t\tdisplayData.map(function (d) {\n\t\t\t\t\treturn {\n\t\t\t\t\t\t[groupMapsTo]: d[groupMapsTo],\n\t\t\t\t\t\ttext: d[wordMapsTo],\n\t\t\t\t\t\tsize: d[fontSizeMapsTo],\n\t\t\t\t\t\tvalue: d[fontSizeMapsTo],\n\t\t\t\t\t};\n\t\t\t\t})\n\t\t\t)\n\t\t\t.padding(5)\n\t\t\t.rotate(0)\n\t\t\t.fontSize((d) => fontSizeScale(d.size))\n\t\t\t.on('end', draw);\n\n\t\tlayout.start();\n\n\t\tfunction draw(words) {\n\t\t\tconst textGroup = DOMUtils.appendOrSelect(svg, 'g.words');\n\t\t\ttextGroup.attr(\n\t\t\t\t'transform',\n\t\t\t\t`translate(${layout.size()[0] / 2}, ${layout.size()[1] / 2})`\n\t\t\t);\n\n\t\t\tconst allText = textGroup\n\t\t\t\t.selectAll('text')\n\t\t\t\t.data(words, (d) => `${d[groupMapsTo]}-${d.text}`);\n\n\t\t\t// Remove texts that are no longer needed\n\t\t\tallText.exit().attr('opacity', 0).remove();\n\n\t\t\tconst enteringText = allText\n\t\t\t\t.enter()\n\t\t\t\t.append('text')\n\t\t\t\t.attr('opacity', 0);\n\n\t\t\tenteringText\n\t\t\t\t.merge(allText)\n\t\t\t\t.style('font-size', (d) => `${d.size}px`)\n\t\t\t\t.text(function (d) {\n\t\t\t\t\treturn d.text;\n\t\t\t\t})\n\t\t\t\t.attr('class', (d) =>\n\t\t\t\t\tself.model.getColorClassName({\n\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.FILL],\n\t\t\t\t\t\tdataGroupName: d[groupMapsTo],\n\t\t\t\t\t\toriginalClassName: `word ${d.size > 32 ? 'light' : ''}`,\n\t\t\t\t\t})\n\t\t\t\t)\n\t\t\t\t.style('fill', (d) => {\n\t\t\t\t\treturn self.model.getFillColor(d[groupMapsTo], d.text, d);\n\t\t\t\t})\n\t\t\t\t.attr('text-anchor', 'middle')\n\t\t\t\t.transition(\n\t\t\t\t\tself.services.transitions.getTransition(\n\t\t\t\t\t\t'wordcloud-text-update-enter',\n\t\t\t\t\t\tanimate\n\t\t\t\t\t)\n\t\t\t\t)\n\t\t\t\t.attr('transform', (d) => `translate(${d.x}, ${d.y})`)\n\t\t\t\t.attr('opacity', 1);\n\t\t}\n\n\t\t// Add event listeners\n\t\tthis.addEventListeners();\n\t}\n\n\t// Highlight elements that match the hovered legend item\n\thandleLegendOnHover = (event: CustomEvent) => {\n\t\tconst { hoveredElement } = event.detail;\n\t\tconst { groupMapsTo } = this.getOptions().data;\n\n\t\tthis.parent\n\t\t\t.selectAll('text.word')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'legend-hover-wordcloud'\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('opacity', (d) =>\n\t\t\t\td[groupMapsTo] !== hoveredElement.datum()['name'] ? 0.3 : 1\n\t\t\t);\n\t};\n\n\t// Un-highlight all elements\n\thandleLegendMouseOut = (event: CustomEvent) => {\n\t\tthis.parent\n\t\t\t.selectAll('text.word')\n\t\t\t.transition(\n\t\t\t\tthis.services.transitions.getTransition(\n\t\t\t\t\t'legend-mouseout-wordcloud'\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('opacity', 1);\n\t};\n\n\taddEventListeners() {\n\t\tconst options = this.getOptions();\n\t\tconst { groupMapsTo } = options.data;\n\n\t\t// Highlights 1 word or unhighlights all\n\t\tconst debouncedHighlight = Tools.debounce((word) => {\n\t\t\tconst allWords = self.parent\n\t\t\t\t.selectAll('text.word')\n\t\t\t\t.transition(\n\t\t\t\t\tself.services.transitions.getTransition(\n\t\t\t\t\t\t'wordcloud-word-mouse-highlight'\n\t\t\t\t\t)\n\t\t\t\t);\n\n\t\t\tif (word === null) {\n\t\t\t\tallWords.attr('opacity', 1);\n\t\t\t} else {\n\t\t\t\tallWords.attr('opacity', function () {\n\t\t\t\t\tif (word === this) {\n\t\t\t\t\t\treturn 1;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn 0.3;\n\t\t\t\t});\n\t\t\t}\n\t\t}, 6);\n\n\t\tconst self = this;\n\t\tthis.parent\n\t\t\t.selectAll('text.word')\n\t\t\t.on('mouseover', function (datum) {\n\t\t\t\tconst hoveredElement = this;\n\t\t\t\tdebouncedHighlight(hoveredElement);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.WordCloud.WORD_MOUSEOVER,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: select(this),\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\t// Show tooltip\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\thoveredElement,\n\t\t\t\t\titems: [\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: options.tooltip.wordLabel,\n\t\t\t\t\t\t\tvalue: datum.text,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: options.tooltip.valueLabel,\n\t\t\t\t\t\t\tvalue: datum.value,\n\t\t\t\t\t\t},\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tlabel: options.tooltip.groupLabel,\n\t\t\t\t\t\t\tvalue: datum[groupMapsTo],\n\t\t\t\t\t\t\tclass: self.model.getColorClassName({\n\t\t\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.TOOLTIP],\n\t\t\t\t\t\t\t\tdataGroupName: datum[groupMapsTo],\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\t\t\t.on('mousemove', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.WordCloud.WORD_MOUSEMOVE,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\t// Show tooltip\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.MOVE);\n\t\t\t})\n\t\t\t.on('click', function (datum) {\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.WordCloud.WORD_CLICK,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: select(this),\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\t\t\t})\n\t\t\t.on('mouseout', function (datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\tdebouncedHighlight(null);\n\n\t\t\t\t// Dispatch mouse event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.WordCloud.WORD_MOUSEOUT,\n\t\t\t\t\t{\n\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\tdatum,\n\t\t\t\t\t}\n\t\t\t\t);\n\n\t\t\t\t// Hide tooltip\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.HIDE, {\n\t\t\t\t\thoveredElement,\n\t\t\t\t});\n\t\t\t});\n\t}\n}\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAE5B,aAAa;AACb,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAE1C,SAAS;AACT,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AAGnC,SAAS;AACT,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAEhC,OAAO;AACP,cAAc,6BAA6B,CAAC;AAC5C,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC","sourcesContent":["export * from './component';\n\n// ESSENTIALS\nexport * from './essentials/legend';\nexport * from './essentials/threshold';\nexport * from './essentials/title';\nexport * from './essentials/title-meter';\nexport * from './essentials/tooltip';\nexport * from './essentials/tooltip-axis';\n\n// GRAPHS\nexport * from './graphs/area';\nexport * from './graphs/area-stacked';\nexport * from './graphs/bar-simple';\nexport * from './graphs/bar-grouped';\nexport * from './graphs/bar-stacked';\nexport * from './graphs/boxplot';\nexport * from './graphs/bubble';\nexport * from './graphs/line';\nexport * from './graphs/lollipop';\nexport * from './graphs/scatter';\nexport * from './graphs/scatter-stacked';\nexport * from './graphs/pie';\nexport * from './graphs/gauge';\nexport * from './graphs/donut';\nexport * from './graphs/skeleton';\nexport * from './graphs/skeleton-lines';\nexport * from './graphs/treemap';\nexport * from './graphs/radar';\nexport * from './graphs/wordcloud';\n\n\n// Layout\nexport * from './layout/spacer';\nexport * from './layout/layout';\n\n// MISC\nexport * from './axes/two-dimensional-axes';\nexport * from './axes/axis';\nexport * from './axes/grid-brush';\nexport * from './axes/chart-clip';\nexport * from './axes/grid';\nexport * from './axes/ruler';\nexport * from './axes/ruler-stacked';\nexport * from './axes/toolbar';\nexport * from './axes/zero-line';\nexport * from './axes/zoom-bar';\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAE5B,aAAa;AACb,cAAc,qBAAqB,CAAC;AACpC,cAAc,wBAAwB,CAAC;AACvC,cAAc,oBAAoB,CAAC;AACnC,cAAc,0BAA0B,CAAC;AACzC,cAAc,sBAAsB,CAAC;AACrC,cAAc,2BAA2B,CAAC;AAE1C,SAAS;AACT,cAAc,eAAe,CAAC;AAC9B,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,sBAAsB,CAAC;AACrC,cAAc,sBAAsB,CAAC;AACrC,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,mBAAmB,CAAC;AAClC,cAAc,kBAAkB,CAAC;AACjC,cAAc,0BAA0B,CAAC;AACzC,cAAc,cAAc,CAAC;AAC7B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AAEnC,SAAS;AACT,cAAc,iBAAiB,CAAC;AAChC,cAAc,iBAAiB,CAAC;AAEhC,OAAO;AACP,cAAc,6BAA6B,CAAC;AAC5C,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,kBAAkB,CAAC;AACjC,cAAc,iBAAiB,CAAC","sourcesContent":["export * from './component';\n\n// ESSENTIALS\nexport * from './essentials/legend';\nexport * from './essentials/threshold';\nexport * from './essentials/title';\nexport * from './essentials/title-meter';\nexport * from './essentials/tooltip';\nexport * from './essentials/tooltip-axis';\n\n// GRAPHS\nexport * from './graphs/area';\nexport * from './graphs/area-stacked';\nexport * from './graphs/bar-simple';\nexport * from './graphs/bar-grouped';\nexport * from './graphs/bar-stacked';\nexport * from './graphs/boxplot';\nexport * from './graphs/bubble';\nexport * from './graphs/line';\nexport * from './graphs/lollipop';\nexport * from './graphs/scatter';\nexport * from './graphs/scatter-stacked';\nexport * from './graphs/pie';\nexport * from './graphs/gauge';\nexport * from './graphs/donut';\nexport * from './graphs/skeleton';\nexport * from './graphs/skeleton-lines';\nexport * from './graphs/treemap';\nexport * from './graphs/radar';\nexport * from './graphs/wordcloud';\n\n// Layout\nexport * from './layout/spacer';\nexport * from './layout/layout';\n\n// MISC\nexport * from './axes/two-dimensional-axes';\nexport * from './axes/axis';\nexport * from './axes/grid-brush';\nexport * from './axes/chart-clip';\nexport * from './axes/grid';\nexport * from './axes/ruler';\nexport * from './axes/ruler-stacked';\nexport * from './axes/toolbar';\nexport * from './axes/zero-line';\nexport * from './axes/zoom-bar';\n"]}
@@ -124,14 +124,6 @@ var LayoutComponent = /** @class */ (function (_super) {
124
124
  // Calculate preffered children sizes after internal rendering
125
125
  var growth = Tools.getProperty(d, 'data', 'growth', 'x');
126
126
  var matchingSVGDimensions = DOMUtils.getSVGElementSize(select(this), { useBBox: true });
127
- if (d.data.id === 'legend') {
128
- var svgSize = DOMUtils.getSVGElementSize(select(this), {
129
- useAttrs: true,
130
- });
131
- if (svgSize.height < 40) {
132
- matchingSVGDimensions.height = svgSize.height;
133
- }
134
- }
135
127
  if (growth === LayoutGrowth.PREFERRED) {
136
128
  var matchingSVGWidth = horizontal
137
129
  ? matchingSVGDimensions.width
@@ -1 +1 @@
1
- {"version":3,"file":"layout.js","sourceRoot":"","sources":["layout.ts"],"names":[],"mappings":";;;;;;;;;;;;;AAAA,mBAAmB;AACnB,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AACzC,OAAO,EACN,eAAe,EACf,YAAY,GAGZ,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAG1C,aAAa;AACb,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAE7E,8CAA8C;AAC9C;IAAqC,mCAAS;IAW7C,yBACC,KAAiB,EACjB,QAAa,EACb,QAAgC,EAChC,OAAuB;QAJxB,YAMC,kBAAM,KAAK,EAAE,QAAQ,EAAE,OAAO,CAAC,SAgB/B;QA5BD,UAAI,GAAG,QAAQ,CAAC;QAcf,KAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,KAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEzB,KAAI,CAAC,WAAW,GAAG,eAAe,CAAC,UAAU,EAAE,CAAC;QAEhD,6CAA6C;QAC7C,6BAA6B;QAC7B,IAAM,mBAAmB,GACxB,KAAI,CAAC,OAAO,CAAC,SAAS,KAAK,eAAe,CAAC,WAAW;YACtD,KAAI,CAAC,OAAO,CAAC,SAAS,KAAK,eAAe,CAAC,cAAc,CAAC;QAC3D,IAAI,mBAAmB,EAAE;YACxB,KAAI,CAAC,QAAQ,GAAG,KAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;SACxC;QACD,KAAI,CAAC,IAAI,EAAE,CAAC;;IACb,CAAC;IAED,8BAAI,GAAJ;QACC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAC,KAAK;YAC3B,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,UAAC,SAAS;gBAClC,SAAS,CAAC,IAAI,EAAE,CAAC;YAClB,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,oDAA0B,GAA1B;QACC,IAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;QACxB,IAAI,GAAG,GAAG,CAAC,CAAC;QAEZ,GAAG,CAAC,SAAS,CAAC,sBAAoB,IAAI,CAAC,WAAa,CAAC;aACnD,MAAM,CAAC,UAAC,CAAM;YACd,IAAM,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;YAC3D,OAAO,CACN,MAAM,KAAK,YAAY,CAAC,SAAS;gBACjC,MAAM,KAAK,YAAY,CAAC,KAAK,CAC7B,CAAC;QACH,CAAC,CAAC;aACD,IAAI,CAAC,UAAU,CAAM;YACrB,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QACpB,CAAC,CAAC,CAAC;QAEJ,OAAO,GAAG,CAAC;IACZ,CAAC;IAED,iDAAuB,GAAvB;QACC,IAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;QAExB,OAAO,GAAG;aACR,SAAS,CAAC,sBAAoB,IAAI,CAAC,WAAa,CAAC;aACjD,MAAM,CAAC,UAAC,CAAM;YACd,IAAM,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;YAC3D,OAAO,MAAM,KAAK,YAAY,CAAC,OAAO,CAAC;QACxC,CAAC,CAAC;aACD,IAAI,EAAE,CAAC;IACV,CAAC;IAED,gCAAM,GAAN,UAAO,OAAc;QAArB,iBAoIC;QApIM,wBAAA,EAAA,cAAc;QACpB,qCAAqC;QACrC,IAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;QAClB,IAAA;;UAEJ,EAFM,gBAAK,EAAE,kBAEb,CAAC;QAEH,IAAI,IAAI,GAAG,SAAS,CAAC;YACpB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACvB,CAAC,CAAC,GAAG,CAAC,UAAC,CAAM,IAAK,OAAA,CAAC,CAAC,IAAI,EAAN,CAAM,CAAC,CAAC;QAE3B,4DAA4D;QAC5D,IAAM,QAAQ,GACb,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,eAAe,CAAC,GAAG;YAC9C,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,eAAe,CAAC,WAAW;YACrD,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,YAAY,CAAC;QAEjB,yDAAyD;QACzD,OAAO,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAErD,kBAAkB;QAClB,IAAM,UAAU,GACf,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,eAAe,CAAC,GAAG;YAC9C,IAAI,CAAC,OAAO,CAAC,SAAS,KAAK,eAAe,CAAC,WAAW,CAAC;QAExD,gDAAgD;QAChD,IAAM,WAAW,GAAG,GAAG;aACrB,SAAS,CAAC,sBAAoB,IAAI,CAAC,WAAa,CAAC;aACjD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,UAAC,CAAM,IAAK,OAAA,CAAC,CAAC,IAAI,CAAC,EAAE,EAAT,CAAS,CAAC,CAAC;QAE7C,WAAW;aACT,IAAI,CAAC,OAAO,EAAE,UAAC,CAAM,IAAK,OAAA,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,EAAX,CAAW,CAAC;aACtC,IAAI,CAAC,QAAQ,EAAE,UAAC,CAAM,IAAK,OAAA,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,EAAX,CAAW,CAAC,CAAC;QAE1C,IAAM,YAAY,GAAG,WAAW;aAC9B,KAAK,EAAE;aACP,MAAM,CAAC,KAAK,CAAC;aACb,IAAI,CACJ,OAAO,EACP,UAAC,CAAM;YACN,OAAA,+BAA6B,KAAI,CAAC,WAAW,SAAI,CAAC,CAAC,IAAI,CAAC,EAAI;QAA5D,CAA4D,CAC7D;aACA,IAAI,CAAC,GAAG,EAAE,UAAC,CAAM,IAAK,OAAA,CAAC,CAAC,EAAE,EAAJ,CAAI,CAAC;aAC3B,IAAI,CAAC,GAAG,EAAE,UAAC,CAAM,IAAK,OAAA,CAAC,CAAC,EAAE,EAAJ,CAAI,CAAC,CAAC;QAE9B,YAAY;aACV,KAAK,CAAC,GAAG,CAAC,SAAS,CAAC,sBAAoB,IAAI,CAAC,WAAa,CAAC,CAAC;aAC5D,IAAI,CAAC,UAAU,CAAM;YAAhB,iBAcL;YAbA,sCAAsC;YACtC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,UAAC,aAAa;gBACvC,aAAa,CAAC,SAAS,CAAC,MAAM,CAAC,KAAI,CAAC,CAAC,CAAC;gBAEtC,iCAAiC;gBACjC,IAAM,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;gBAC3D,IACC,MAAM,KAAK,YAAY,CAAC,SAAS;oBACjC,MAAM,KAAK,YAAY,CAAC,KAAK,EAC5B;oBACD,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;iBAC9B;YACF,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEJ,GAAG,CAAC,SAAS,CAAC,sBAAoB,IAAI,CAAC,WAAa,CAAC,CAAC,IAAI,CAAC,UAC1D,CAAM;YAEN,8DAA8D;YAC9D,IAAM,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;YAC3D,IAAM,qBAAqB,GAAG,QAAQ,CAAC,iBAAiB,CACvD,MAAM,CAAC,IAAI,CAAC,EACZ,EAAE,OAAO,EAAE,IAAI,EAAE,CACjB,CAAC;YAEF,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE,KAAK,QAAQ,EAAE;gBAC3B,IAAM,OAAO,GAAG,QAAQ,CAAC,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;oBACxD,QAAQ,EAAE,IAAI;iBACd,CAAC,CAAC;gBAEH,IAAI,OAAO,CAAC,MAAM,GAAG,EAAE,EAAE;oBACxB,qBAAqB,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;iBAC9C;aACD;YAED,IAAI,MAAM,KAAK,YAAY,CAAC,SAAS,EAAE;gBACtC,IAAM,gBAAgB,GAAG,UAAU;oBAClC,CAAC,CAAC,qBAAqB,CAAC,KAAK;oBAC7B,CAAC,CAAC,qBAAqB,CAAC,MAAM,CAAC;gBAChC,IAAM,QAAQ,GAAG,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;gBAE7C,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,gBAAgB,GAAG,QAAQ,CAAC,GAAG,GAAG,CAAC;aAClD;QACF,CAAC,CAAC,CAAC;QAEH,WAAW,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;QAE5B,8BAA8B;QAC9B,IAAI,CAAC,QAAQ;aACX,MAAM,CAAC,UAAC,KAAK;YACb,IAAM,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;YACvD,OAAO,MAAM,KAAK,YAAY,CAAC,OAAO,CAAC;QACxC,CAAC,CAAC;aACD,OAAO,CAAC,UAAC,KAAK,EAAE,CAAC;YACjB,KAAK,CAAC,IAAI;gBACT,CAAC,GAAG,GAAG,CAAC,KAAI,CAAC,0BAA0B,EAAE,CAAC;oBAC1C,CAAC,KAAI,CAAC,uBAAuB,EAAE,CAAC;QAClC,CAAC,CAAC,CAAC;QAEJ,6CAA6C;QAC7C,6BAA6B;QAC7B,IAAI,GAAG,SAAS,CAAC;YAChB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACvB,CAAC,CAAC,GAAG,CAAC,UAAC,CAAM,IAAK,OAAA,CAAC,CAAC,IAAI,EAAN,CAAM,CAAC,CAAC;QAE3B,yDAAyD;QACzD,OAAO,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAEhE,gDAAgD;QAChD,GAAG,CAAC,SAAS,CAAC,sBAAoB,IAAI,CAAC,WAAa,CAAC;aACnD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,UAAC,CAAM,IAAK,OAAA,CAAC,CAAC,IAAI,CAAC,EAAE,EAAT,CAAS,CAAC;aAC1C,IAAI,CAAC,GAAG,EAAE,UAAC,CAAM,IAAK,OAAA,CAAC,CAAC,EAAE,EAAJ,CAAI,CAAC;aAC3B,IAAI,CAAC,GAAG,EAAE,UAAC,CAAM,IAAK,OAAA,CAAC,CAAC,EAAE,EAAJ,CAAI,CAAC;aAC3B,IAAI,CAAC,OAAO,EAAE,UAAC,CAAM,IAAK,OAAA,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,EAAX,CAAW,CAAC;aACtC,IAAI,CAAC,QAAQ,EAAE,UAAC,CAAM,IAAK,OAAA,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,EAAX,CAAW,CAAC;aACvC,IAAI,CAAC,UAAU,CAAM,EAAE,CAAC;YACxB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,UAAC,aAAa;gBACvC,IAAM,MAAM,GAAG,KAAK,CAAC,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;gBAC3D,IAAI,MAAM,KAAK,YAAY,CAAC,OAAO,EAAE;oBACpC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;iBAC9B;YACF,CAAC,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAED,oCAAoC;IACpC,kCAAQ,GAAR,UAAS,MAAM;QACd,iBAAM,QAAQ,YAAC,MAAM,CAAC,CAAC;QAEvB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAC,KAAK;YAC3B,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,UAAC,SAAS,IAAK,OAAA,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,EAA1B,CAA0B,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,yCAAyC;IACzC,qCAAW,GAAX,UAAY,MAAM;QACjB,iBAAM,WAAW,YAAC,MAAM,CAAC,CAAC;QAE1B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAC,KAAK;YAC3B,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,UAAC,SAAS;gBAClC,OAAA,SAAS,CAAC,WAAW,CAAC,MAAM,CAAC;YAA7B,CAA6B,CAC7B,CAAC;QACH,CAAC,CAAC,CAAC;IACJ,CAAC;IAED,iCAAO,GAAP;QACC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAC,KAAK;YAC3B,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,UAAC,SAAS,IAAK,OAAA,SAAS,CAAC,OAAO,EAAE,EAAnB,CAAmB,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;IACJ,CAAC;IAvOD,4CAA4C;IAC5C,iDAAiD;IAC1C,0BAAU,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,WAAW,CAAC,CAAC;IAsO7D,sBAAC;CAAA,AAzOD,CAAqC,SAAS,GAyO7C;SAzOY,eAAe","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport {\n\tLayoutDirection,\n\tLayoutGrowth,\n\tLayoutComponentChild,\n\tLayoutConfigs,\n} from '../../interfaces/index';\nimport { Tools } from '../../tools';\nimport { DOMUtils } from '../../services';\nimport { ChartModel } from '../../model';\n\n// D3 Imports\nimport { select } from 'd3-selection';\nimport { hierarchy, treemap, treemapSlice, treemapDice } from 'd3-hierarchy';\n\n// TODO - What if there is no \"growth\" object?\nexport class LayoutComponent extends Component {\n\t// Give every layout component a distinct ID\n\t// so they don't interfere when querying elements\n\tstatic instanceID = Math.floor(Math.random() * 99999999999);\n\n\ttype = 'layout';\n\n\tchildren: LayoutComponentChild[];\n\n\tprivate _instanceID: number;\n\n\tconstructor(\n\t\tmodel: ChartModel,\n\t\tservices: any,\n\t\tchildren: LayoutComponentChild[],\n\t\tconfigs?: LayoutConfigs\n\t) {\n\t\tsuper(model, services, configs);\n\n\t\tthis.configs = configs;\n\t\tthis.children = children;\n\n\t\tthis._instanceID = LayoutComponent.instanceID++;\n\n\t\t// Pass children data to the hierarchy layout\n\t\t// And calculate sum of sizes\n\t\tconst directionIsReversed =\n\t\t\tthis.configs.direction === LayoutDirection.ROW_REVERSE ||\n\t\t\tthis.configs.direction === LayoutDirection.COLUMN_REVERSE;\n\t\tif (directionIsReversed) {\n\t\t\tthis.children = this.children.reverse();\n\t\t}\n\t\tthis.init();\n\t}\n\n\tinit() {\n\t\tthis.children.forEach((child) => {\n\t\t\tchild.components.forEach((component) => {\n\t\t\t\tcomponent.init();\n\t\t\t});\n\t\t});\n\t}\n\n\tgetPreferedAndFixedSizeSum(): number {\n\t\tconst svg = this.parent;\n\t\tlet sum = 0;\n\n\t\tsvg.selectAll(`svg.layout-child-${this._instanceID}`)\n\t\t\t.filter((d: any) => {\n\t\t\t\tconst growth = Tools.getProperty(d, 'data', 'growth', 'x');\n\t\t\t\treturn (\n\t\t\t\t\tgrowth === LayoutGrowth.PREFERRED ||\n\t\t\t\t\tgrowth === LayoutGrowth.FIXED\n\t\t\t\t);\n\t\t\t})\n\t\t\t.each(function (d: any) {\n\t\t\t\tsum += d.data.size;\n\t\t\t});\n\n\t\treturn sum;\n\t}\n\n\tgetNumOfStretchChildren(): number {\n\t\tconst svg = this.parent;\n\n\t\treturn svg\n\t\t\t.selectAll(`svg.layout-child-${this._instanceID}`)\n\t\t\t.filter((d: any) => {\n\t\t\t\tconst growth = Tools.getProperty(d, 'data', 'growth', 'x');\n\t\t\t\treturn growth === LayoutGrowth.STRETCH;\n\t\t\t})\n\t\t\t.size();\n\t}\n\n\trender(animate = true) {\n\t\t// Get parent SVG to render inside of\n\t\tconst svg = this.parent;\n\t\tconst { width, height } = DOMUtils.getSVGElementSize(svg, {\n\t\t\tuseAttrs: true,\n\t\t});\n\n\t\tlet root = hierarchy({\n\t\t\tchildren: this.children,\n\t\t}).sum((d: any) => d.size);\n\n\t\t// Grab the correct treemap tile function based on direction\n\t\tconst tileType =\n\t\t\tthis.configs.direction === LayoutDirection.ROW ||\n\t\t\tthis.configs.direction === LayoutDirection.ROW_REVERSE\n\t\t\t\t? treemapDice\n\t\t\t\t: treemapSlice;\n\n\t\t// Compute the position of all elements within the layout\n\t\ttreemap().tile(tileType).size([width, height])(root);\n\n\t\t// TODORF - Remove\n\t\tconst horizontal =\n\t\t\tthis.configs.direction === LayoutDirection.ROW ||\n\t\t\tthis.configs.direction === LayoutDirection.ROW_REVERSE;\n\n\t\t// Add new SVGs to the DOM for each layout child\n\t\tconst updatedSVGs = svg\n\t\t\t.selectAll(`svg.layout-child-${this._instanceID}`)\n\t\t\t.data(root.leaves(), (d: any) => d.data.id);\n\n\t\tupdatedSVGs\n\t\t\t.attr('width', (d: any) => d.x1 - d.x0)\n\t\t\t.attr('height', (d: any) => d.y1 - d.y0);\n\n\t\tconst enteringSVGs = updatedSVGs\n\t\t\t.enter()\n\t\t\t.append('svg')\n\t\t\t.attr(\n\t\t\t\t'class',\n\t\t\t\t(d: any) =>\n\t\t\t\t\t`layout-child layout-child-${this._instanceID} ${d.data.id}`\n\t\t\t)\n\t\t\t.attr('x', (d: any) => d.x0)\n\t\t\t.attr('y', (d: any) => d.y0);\n\n\t\tenteringSVGs\n\t\t\t.merge(svg.selectAll(`svg.layout-child-${this._instanceID}`))\n\t\t\t.each(function (d: any) {\n\t\t\t\t// Set parent component for each child\n\t\t\t\td.data.components.forEach((itemComponent) => {\n\t\t\t\t\titemComponent.setParent(select(this));\n\n\t\t\t\t\t// Render preffered & fixed items\n\t\t\t\t\tconst growth = Tools.getProperty(d, 'data', 'growth', 'x');\n\t\t\t\t\tif (\n\t\t\t\t\t\tgrowth === LayoutGrowth.PREFERRED ||\n\t\t\t\t\t\tgrowth === LayoutGrowth.FIXED\n\t\t\t\t\t) {\n\t\t\t\t\t\titemComponent.render(animate);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\n\t\tsvg.selectAll(`svg.layout-child-${this._instanceID}`).each(function (\n\t\t\td: any\n\t\t) {\n\t\t\t// Calculate preffered children sizes after internal rendering\n\t\t\tconst growth = Tools.getProperty(d, 'data', 'growth', 'x');\n\t\t\tconst matchingSVGDimensions = DOMUtils.getSVGElementSize(\n\t\t\t\tselect(this),\n\t\t\t\t{ useBBox: true }\n\t\t\t);\n\n\t\t\tif (d.data.id === 'legend') {\n\t\t\t\tconst svgSize = DOMUtils.getSVGElementSize(select(this), {\n\t\t\t\t\tuseAttrs: true,\n\t\t\t\t});\n\n\t\t\t\tif (svgSize.height < 40) {\n\t\t\t\t\tmatchingSVGDimensions.height = svgSize.height;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (growth === LayoutGrowth.PREFERRED) {\n\t\t\t\tconst matchingSVGWidth = horizontal\n\t\t\t\t\t? matchingSVGDimensions.width\n\t\t\t\t\t: matchingSVGDimensions.height;\n\t\t\t\tconst svgWidth = horizontal ? width : height;\n\n\t\t\t\td.data.size = (matchingSVGWidth / svgWidth) * 100;\n\t\t\t}\n\t\t});\n\n\t\tupdatedSVGs.exit().remove();\n\n\t\t// Run through stretch x-items\n\t\tthis.children\n\t\t\t.filter((child) => {\n\t\t\t\tconst growth = Tools.getProperty(child, 'growth', 'x');\n\t\t\t\treturn growth === LayoutGrowth.STRETCH;\n\t\t\t})\n\t\t\t.forEach((child, i) => {\n\t\t\t\tchild.size =\n\t\t\t\t\t(100 - +this.getPreferedAndFixedSizeSum()) /\n\t\t\t\t\t+this.getNumOfStretchChildren();\n\t\t\t});\n\n\t\t// Pass children data to the hierarchy layout\n\t\t// And calculate sum of sizes\n\t\troot = hierarchy({\n\t\t\tchildren: this.children,\n\t\t}).sum((d: any) => d.size);\n\n\t\t// Compute the position of all elements within the layout\n\t\ttreemap().tile(tileType).size([width, height]).padding(0)(root);\n\n\t\t// Add new SVGs to the DOM for each layout child\n\t\tsvg.selectAll(`svg.layout-child-${this._instanceID}`)\n\t\t\t.data(root.leaves(), (d: any) => d.data.id)\n\t\t\t.attr('x', (d: any) => d.x0)\n\t\t\t.attr('y', (d: any) => d.y0)\n\t\t\t.attr('width', (d: any) => d.x1 - d.x0)\n\t\t\t.attr('height', (d: any) => d.y1 - d.y0)\n\t\t\t.each(function (d: any, i) {\n\t\t\t\td.data.components.forEach((itemComponent) => {\n\t\t\t\t\tconst growth = Tools.getProperty(d, 'data', 'growth', 'x');\n\t\t\t\t\tif (growth === LayoutGrowth.STRETCH) {\n\t\t\t\t\t\titemComponent.render(animate);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\t// Pass on model to children as well\n\tsetModel(newObj) {\n\t\tsuper.setModel(newObj);\n\n\t\tthis.children.forEach((child) => {\n\t\t\tchild.components.forEach((component) => component.setModel(newObj));\n\t\t});\n\t}\n\n\t// Pass on essentials to children as well\n\tsetServices(newObj) {\n\t\tsuper.setServices(newObj);\n\n\t\tthis.children.forEach((child) => {\n\t\t\tchild.components.forEach((component) =>\n\t\t\t\tcomponent.setServices(newObj)\n\t\t\t);\n\t\t});\n\t}\n\n\tdestroy() {\n\t\tthis.children.forEach((child) => {\n\t\t\tchild.components.forEach((component) => component.destroy());\n\t\t});\n\t}\n}\n"]}
1
+ {"version":3,"file":"layout.js","sourceRoot":"","sources":["layout.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport {\n\tLayoutDirection,\n\tLayoutGrowth,\n\tLayoutComponentChild,\n\tLayoutConfigs,\n} from '../../interfaces/index';\nimport { Tools } from '../../tools';\nimport { DOMUtils } from '../../services';\nimport { ChartModel } from '../../model';\n\n// D3 Imports\nimport { select } from 'd3-selection';\nimport { hierarchy, treemap, treemapSlice, treemapDice } from 'd3-hierarchy';\n\n// TODO - What if there is no \"growth\" object?\nexport class LayoutComponent extends Component {\n\t// Give every layout component a distinct ID\n\t// so they don't interfere when querying elements\n\tstatic instanceID = Math.floor(Math.random() * 99999999999);\n\n\ttype = 'layout';\n\n\tchildren: LayoutComponentChild[];\n\n\tprivate _instanceID: number;\n\n\tconstructor(\n\t\tmodel: ChartModel,\n\t\tservices: any,\n\t\tchildren: LayoutComponentChild[],\n\t\tconfigs?: LayoutConfigs\n\t) {\n\t\tsuper(model, services, configs);\n\n\t\tthis.configs = configs;\n\t\tthis.children = children;\n\n\t\tthis._instanceID = LayoutComponent.instanceID++;\n\n\t\t// Pass children data to the hierarchy layout\n\t\t// And calculate sum of sizes\n\t\tconst directionIsReversed =\n\t\t\tthis.configs.direction === LayoutDirection.ROW_REVERSE ||\n\t\t\tthis.configs.direction === LayoutDirection.COLUMN_REVERSE;\n\t\tif (directionIsReversed) {\n\t\t\tthis.children = this.children.reverse();\n\t\t}\n\t\tthis.init();\n\t}\n\n\tinit() {\n\t\tthis.children.forEach((child) => {\n\t\t\tchild.components.forEach((component) => {\n\t\t\t\tcomponent.init();\n\t\t\t});\n\t\t});\n\t}\n\n\tgetPreferedAndFixedSizeSum(): number {\n\t\tconst svg = this.parent;\n\t\tlet sum = 0;\n\n\t\tsvg.selectAll(`svg.layout-child-${this._instanceID}`)\n\t\t\t.filter((d: any) => {\n\t\t\t\tconst growth = Tools.getProperty(d, 'data', 'growth', 'x');\n\t\t\t\treturn (\n\t\t\t\t\tgrowth === LayoutGrowth.PREFERRED ||\n\t\t\t\t\tgrowth === LayoutGrowth.FIXED\n\t\t\t\t);\n\t\t\t})\n\t\t\t.each(function (d: any) {\n\t\t\t\tsum += d.data.size;\n\t\t\t});\n\n\t\treturn sum;\n\t}\n\n\tgetNumOfStretchChildren(): number {\n\t\tconst svg = this.parent;\n\n\t\treturn svg\n\t\t\t.selectAll(`svg.layout-child-${this._instanceID}`)\n\t\t\t.filter((d: any) => {\n\t\t\t\tconst growth = Tools.getProperty(d, 'data', 'growth', 'x');\n\t\t\t\treturn growth === LayoutGrowth.STRETCH;\n\t\t\t})\n\t\t\t.size();\n\t}\n\n\trender(animate = true) {\n\t\t// Get parent SVG to render inside of\n\t\tconst svg = this.parent;\n\t\tconst { width, height } = DOMUtils.getSVGElementSize(svg, {\n\t\t\tuseAttrs: true,\n\t\t});\n\n\t\tlet root = hierarchy({\n\t\t\tchildren: this.children,\n\t\t}).sum((d: any) => d.size);\n\n\t\t// Grab the correct treemap tile function based on direction\n\t\tconst tileType =\n\t\t\tthis.configs.direction === LayoutDirection.ROW ||\n\t\t\tthis.configs.direction === LayoutDirection.ROW_REVERSE\n\t\t\t\t? treemapDice\n\t\t\t\t: treemapSlice;\n\n\t\t// Compute the position of all elements within the layout\n\t\ttreemap().tile(tileType).size([width, height])(root);\n\n\t\t// TODORF - Remove\n\t\tconst horizontal =\n\t\t\tthis.configs.direction === LayoutDirection.ROW ||\n\t\t\tthis.configs.direction === LayoutDirection.ROW_REVERSE;\n\n\t\t// Add new SVGs to the DOM for each layout child\n\t\tconst updatedSVGs = svg\n\t\t\t.selectAll(`svg.layout-child-${this._instanceID}`)\n\t\t\t.data(root.leaves(), (d: any) => d.data.id);\n\n\t\tupdatedSVGs\n\t\t\t.attr('width', (d: any) => d.x1 - d.x0)\n\t\t\t.attr('height', (d: any) => d.y1 - d.y0);\n\n\t\tconst enteringSVGs = updatedSVGs\n\t\t\t.enter()\n\t\t\t.append('svg')\n\t\t\t.attr(\n\t\t\t\t'class',\n\t\t\t\t(d: any) =>\n\t\t\t\t\t`layout-child layout-child-${this._instanceID} ${d.data.id}`\n\t\t\t)\n\t\t\t.attr('x', (d: any) => d.x0)\n\t\t\t.attr('y', (d: any) => d.y0);\n\n\t\tenteringSVGs\n\t\t\t.merge(svg.selectAll(`svg.layout-child-${this._instanceID}`))\n\t\t\t.each(function (d: any) {\n\t\t\t\t// Set parent component for each child\n\t\t\t\td.data.components.forEach((itemComponent) => {\n\t\t\t\t\titemComponent.setParent(select(this));\n\n\t\t\t\t\t// Render preffered & fixed items\n\t\t\t\t\tconst growth = Tools.getProperty(d, 'data', 'growth', 'x');\n\t\t\t\t\tif (\n\t\t\t\t\t\tgrowth === LayoutGrowth.PREFERRED ||\n\t\t\t\t\t\tgrowth === LayoutGrowth.FIXED\n\t\t\t\t\t) {\n\t\t\t\t\t\titemComponent.render(animate);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\n\t\tsvg.selectAll(`svg.layout-child-${this._instanceID}`).each(function (\n\t\t\td: any\n\t\t) {\n\t\t\t// Calculate preffered children sizes after internal rendering\n\t\t\tconst growth = Tools.getProperty(d, 'data', 'growth', 'x');\n\t\t\tconst matchingSVGDimensions = DOMUtils.getSVGElementSize(\n\t\t\t\tselect(this),\n\t\t\t\t{ useBBox: true }\n\t\t\t);\n\n\t\t\tif (growth === LayoutGrowth.PREFERRED) {\n\t\t\t\tconst matchingSVGWidth = horizontal\n\t\t\t\t\t? matchingSVGDimensions.width\n\t\t\t\t\t: matchingSVGDimensions.height;\n\t\t\t\tconst svgWidth = horizontal ? width : height;\n\n\t\t\t\td.data.size = (matchingSVGWidth / svgWidth) * 100;\n\t\t\t}\n\t\t});\n\n\t\tupdatedSVGs.exit().remove();\n\n\t\t// Run through stretch x-items\n\t\tthis.children\n\t\t\t.filter((child) => {\n\t\t\t\tconst growth = Tools.getProperty(child, 'growth', 'x');\n\t\t\t\treturn growth === LayoutGrowth.STRETCH;\n\t\t\t})\n\t\t\t.forEach((child, i) => {\n\t\t\t\tchild.size =\n\t\t\t\t\t(100 - +this.getPreferedAndFixedSizeSum()) /\n\t\t\t\t\t+this.getNumOfStretchChildren();\n\t\t\t});\n\n\t\t// Pass children data to the hierarchy layout\n\t\t// And calculate sum of sizes\n\t\troot = hierarchy({\n\t\t\tchildren: this.children,\n\t\t}).sum((d: any) => d.size);\n\n\t\t// Compute the position of all elements within the layout\n\t\ttreemap().tile(tileType).size([width, height]).padding(0)(root);\n\n\t\t// Add new SVGs to the DOM for each layout child\n\t\tsvg.selectAll(`svg.layout-child-${this._instanceID}`)\n\t\t\t.data(root.leaves(), (d: any) => d.data.id)\n\t\t\t.attr('x', (d: any) => d.x0)\n\t\t\t.attr('y', (d: any) => d.y0)\n\t\t\t.attr('width', (d: any) => d.x1 - d.x0)\n\t\t\t.attr('height', (d: any) => d.y1 - d.y0)\n\t\t\t.each(function (d: any, i) {\n\t\t\t\td.data.components.forEach((itemComponent) => {\n\t\t\t\t\tconst growth = Tools.getProperty(d, 'data', 'growth', 'x');\n\t\t\t\t\tif (growth === LayoutGrowth.STRETCH) {\n\t\t\t\t\t\titemComponent.render(animate);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\t// Pass on model to children as well\n\tsetModel(newObj) {\n\t\tsuper.setModel(newObj);\n\n\t\tthis.children.forEach((child) => {\n\t\t\tchild.components.forEach((component) => component.setModel(newObj));\n\t\t});\n\t}\n\n\t// Pass on essentials to children as well\n\tsetServices(newObj) {\n\t\tsuper.setServices(newObj);\n\n\t\tthis.children.forEach((child) => {\n\t\t\tchild.components.forEach((component) =>\n\t\t\t\tcomponent.setServices(newObj)\n\t\t\t);\n\t\t});\n\t}\n\n\tdestroy() {\n\t\tthis.children.forEach((child) => {\n\t\t\tchild.components.forEach((component) => component.destroy());\n\t\t});\n\t}\n}\n"]}
@@ -52,10 +52,45 @@ export declare const legend: {
52
52
  horizontalSpace: number;
53
53
  verticalSpace: number;
54
54
  textYOffset: number;
55
+ spaceAfter: number;
55
56
  };
56
57
  checkbox: {
57
58
  radius: number;
58
- spaceAfter: number;
59
+ };
60
+ radius: {
61
+ iconData: {
62
+ cx: number;
63
+ cy: number;
64
+ r: number;
65
+ }[];
66
+ color: string;
67
+ };
68
+ line: {
69
+ yPosition: number;
70
+ width: number;
71
+ strokeWidth: number;
72
+ color: string;
73
+ };
74
+ area: {
75
+ width: number;
76
+ height: number;
77
+ color: string;
78
+ };
79
+ size: {
80
+ iconData: {
81
+ width: number;
82
+ height: number;
83
+ }[];
84
+ color: string;
85
+ };
86
+ quartile: {
87
+ iconData: {
88
+ x: number;
89
+ y: number;
90
+ width: number;
91
+ height: number;
92
+ color: string;
93
+ }[];
59
94
  };
60
95
  };
61
96
  export declare const lines: {