@carbon/charts 0.54.14 → 0.56.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -55,7 +55,7 @@ var Toolbar = /** @class */ (function (_super) {
55
55
  if (!this.overflowMenu) {
56
56
  this.overflowMenu = container
57
57
  .append('div')
58
- .attr('class', 'bx--overflow-menu-options bx--overflow-menu--flip')
58
+ .attr('class', 'bx--overflow-menu-options bx--overflow-menu--flip cds--overflow-menu-options cds--overflow-menu--flip')
59
59
  .attr('tabindex', -1)
60
60
  .attr('role', 'menu')
61
61
  .html("<ul></ul>");
@@ -73,7 +73,7 @@ var Toolbar = /** @class */ (function (_super) {
73
73
  var enteringToolbarControls = toolbarControls
74
74
  .enter()
75
75
  .append('div')
76
- .attr('class', 'toolbar-control bx--overflow-menu')
76
+ .attr('class', 'toolbar-control bx--overflow-menu cds--overflow-menu')
77
77
  .attr('role', 'button');
78
78
  var self_1 = this;
79
79
  var allToolbarControls = enteringToolbarControls
@@ -81,9 +81,9 @@ var Toolbar = /** @class */ (function (_super) {
81
81
  .classed('disabled', function (d) { return d.shouldBeDisabled(); })
82
82
  .attr('aria-disabled', function (d) { return d.shouldBeDisabled(); })
83
83
  .attr('aria-label', function (d) { return d.title; })
84
- .html(function (d) { return "\n\t\t\t<button\n\t\t\t\tclass=\"bx--overflow-menu__trigger\"\n\t\t\t\taria-haspopup=\"true\" aria-expanded=\"false\" id=\"" + _this.services.domUtils.generateElementIDString("control-" + d.id) + "\" aria-label=\"" + d.title + "\">\n\t\t\t\t<svg focusable=\"false\" preserveAspectRatio=\"xMidYMid meet\" style=\"will-change: transform; width: " + (d.iconSVG.width !== undefined ? d.iconSVG.width : '20px') + "; height: " + (d.iconSVG.height !== undefined
84
+ .html(function (d) { return "\n\t\t\t<button\n\t\t\t\tclass=\"bx--overflow-menu__trigger cds--overflow-menu__trigger\"\n\t\t\t\taria-haspopup=\"true\" aria-expanded=\"false\" id=\"" + _this.services.domUtils.generateElementIDString("control-" + d.id) + "\" aria-label=\"" + d.title + "\">\n\t\t\t\t<svg focusable=\"false\" preserveAspectRatio=\"xMidYMid meet\" style=\"will-change: transform; width: " + (d.iconSVG.width !== undefined ? d.iconSVG.width : '20px') + "; height: " + (d.iconSVG.height !== undefined
85
85
  ? d.iconSVG.height
86
- : '20px') + "\" xmlns=\"http://www.w3.org/2000/svg\" class=\"bx--overflow-menu__icon\" viewBox=\"0 0 32 32\" aria-hidden=\"true\">\n\t\t\t\t\t" + d.iconSVG.content + "\n\t\t\t\t</svg>\n\t\t\t</button>"; })
86
+ : '20px') + "\" xmlns=\"http://www.w3.org/2000/svg\" class=\"bx--overflow-menu__icon cds--overflow-menu__icon\" viewBox=\"0 0 32 32\" aria-hidden=\"true\">\n\t\t\t\t\t" + d.iconSVG.content + "\n\t\t\t\t</svg>\n\t\t\t</button>"; })
87
87
  .each(function (d, index) {
88
88
  var _this = this;
89
89
  select(this)
@@ -127,15 +127,18 @@ var Toolbar = /** @class */ (function (_super) {
127
127
  .attr('id', function (d) {
128
128
  return _this.services.domUtils.generateElementIDString("control-" + d.id);
129
129
  })
130
- .attr('class', 'bx--overflow-menu-options__option')
130
+ .attr('class', 'bx--overflow-menu-options__option cds--overflow-menu-options__option')
131
131
  .attr('role', 'menuitem');
132
132
  enteringOverflowMenuControls
133
133
  .append('button')
134
- .attr('class', 'bx--overflow-menu-options__btn');
134
+ .attr('class', 'bx--overflow-menu-options__btn cds--overflow-menu-options__btn');
135
135
  enteringOverflowMenuControls
136
136
  .merge(overflowMenuControls)
137
137
  .classed('bx--overflow-menu-options__option--disabled', function (d) {
138
138
  return d.shouldBeDisabled();
139
+ })
140
+ .classed('cds--overflow-menu-options__option--disabled', function (d) {
141
+ return d.shouldBeDisabled();
139
142
  })
140
143
  .attr('aria-disabled', function (d) { return d.shouldBeDisabled(); })
141
144
  .selectAll('button')
@@ -153,7 +156,8 @@ var Toolbar = /** @class */ (function (_super) {
153
156
  // update overflow button background
154
157
  if (this.overflowButton) {
155
158
  this.overflowButton.attr('aria-expanded', show);
156
- select(this.overflowButton.node().parentNode).classed('bx--overflow-menu--open', show);
159
+ select(this.overflowButton.node().parentNode)
160
+ .classed('bx--overflow-menu--open', show).classed('cds--overflow-menu--open', show);
157
161
  }
158
162
  if (show) {
159
163
  this.services.events.dispatchEvent(Events.Toolbar.SHOW_OVERFLOW_MENU);
@@ -1 +1 @@
1
- {"version":3,"file":"toolbar.js","sourceRoot":"","sources":["toolbar.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport { Events, RenderTypes, ToolbarControlTypes } from '../../interfaces';\nimport { Tools } from '../../tools';\n\n// D3 Imports\nimport { select } from 'd3-selection';\n\nexport class Toolbar extends Component {\n\tstatic buttonID = 0;\n\ttype = 'toolbar';\n\trenderType = RenderTypes.HTML;\n\n\t// overflow menu button to control background color\n\toverflowButton: any;\n\n\t// div options list element\n\toverflowMenu: any;\n\n\tinit() {\n\t\tconst bodyOnClickHandler = () => this.updateOverflowMenu(false);\n\n\t\t// Grab the tooltip element\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Toolbar.SHOW_OVERFLOW_MENU,\n\t\t\t() => {\n\t\t\t\tthis.renderOverflowMenu();\n\n\t\t\t\t// hide overflow menu if user clicks on somewhere in web page\n\t\t\t\tdocument.body.addEventListener('click', bodyOnClickHandler);\n\t\t\t}\n\t\t);\n\n\t\t// listen to hide overflow menu event to hide the overflow menu\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Toolbar.HIDE_OVERFLOW_MENU,\n\t\t\t() => {\n\t\t\t\t// // hide overflow menu if user clicks on somewhere in web page\n\t\t\t\tdocument.body.removeEventListener('click', bodyOnClickHandler);\n\t\t\t}\n\t\t);\n\t}\n\n\trender(animate = true) {\n\t\tconst container = this.getComponentContainer().attr('role', 'toolbar');\n\n\t\tconst isDataLoading = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'data',\n\t\t\t'loading'\n\t\t);\n\n\t\tif (isDataLoading) {\n\t\t\tcontainer.html('');\n\t\t\t// Set overflow menu to null if data is loading\n\t\t\t// This will render in a new overflow menu when data is done loading\n\t\t\tthis.overflowMenu = null;\n\t\t} else {\n\t\t\tif (!this.overflowMenu) {\n\t\t\t\tthis.overflowMenu = container\n\t\t\t\t\t.append('div')\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'class',\n\t\t\t\t\t\t'bx--overflow-menu-options bx--overflow-menu--flip'\n\t\t\t\t\t)\n\t\t\t\t\t.attr('tabindex', -1)\n\t\t\t\t\t.attr('role', 'menu')\n\t\t\t\t\t.html(`<ul></ul>`);\n\t\t\t}\n\n\t\t\t// get the toolbar buttons\n\t\t\tconst {\n\t\t\t\tbuttonList,\n\t\t\t\toverflowMenuItemList,\n\t\t\t} = this.getControlConfigs();\n\n\t\t\t// overflow button is required only if overflow menu item list is valid\n\t\t\tif (!!overflowMenuItemList) {\n\t\t\t\tbuttonList.push(this.getOverflowButtonConfig());\n\t\t\t}\n\n\t\t\tconst toolbarControls = container\n\t\t\t\t.selectAll('div.toolbar-control')\n\t\t\t\t.data(buttonList, (button) => button.id);\n\n\t\t\ttoolbarControls.exit().remove();\n\n\t\t\tconst enteringToolbarControls = toolbarControls\n\t\t\t\t.enter()\n\t\t\t\t.append('div')\n\t\t\t\t.attr('class', 'toolbar-control bx--overflow-menu')\n\t\t\t\t.attr('role', 'button');\n\n\t\t\tconst self = this;\n\t\t\tconst allToolbarControls = enteringToolbarControls\n\t\t\t\t.merge(toolbarControls)\n\t\t\t\t.classed('disabled', (d) => d.shouldBeDisabled())\n\t\t\t\t.attr('aria-disabled', (d) => d.shouldBeDisabled())\n\t\t\t\t.attr('aria-label', (d) => d.title)\n\t\t\t\t.html(\n\t\t\t\t\t(d) => `\n\t\t\t<button\n\t\t\t\tclass=\"bx--overflow-menu__trigger\"\n\t\t\t\taria-haspopup=\"true\" aria-expanded=\"false\" id=\"${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t`control-${d.id}`\n\t\t\t\t)}\" aria-label=\"${d.title}\">\n\t\t\t\t<svg focusable=\"false\" preserveAspectRatio=\"xMidYMid meet\" style=\"will-change: transform; width: ${\n\t\t\t\t\td.iconSVG.width !== undefined ? d.iconSVG.width : '20px'\n\t\t\t\t}; height: ${\n\t\t\t\t\t\td.iconSVG.height !== undefined\n\t\t\t\t\t\t\t? d.iconSVG.height\n\t\t\t\t\t\t\t: '20px'\n\t\t\t\t\t}\" xmlns=\"http://www.w3.org/2000/svg\" class=\"bx--overflow-menu__icon\" viewBox=\"0 0 32 32\" aria-hidden=\"true\">\n\t\t\t\t\t${d.iconSVG.content}\n\t\t\t\t</svg>\n\t\t\t</button>`\n\t\t\t\t)\n\t\t\t\t.each(function (d, index) {\n\t\t\t\t\tselect(this)\n\t\t\t\t\t\t.select('button')\n\t\t\t\t\t\t.on('click', (event) => {\n\t\t\t\t\t\t\tif (!d.shouldBeDisabled()) {\n\t\t\t\t\t\t\t\tself.triggerFunctionAndEvent(d, event, this);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.on('keydown', (event: KeyboardEvent) => {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t(event.key && event.key === 'Enter') ||\n\t\t\t\t\t\t\t\tevent.key === ' '\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\tself.triggerFunctionAndEvent(d, event, this);\n\t\t\t\t\t\t\t} else if (event.key && event.key === 'ArrowLeft') {\n\t\t\t\t\t\t\t\tself.focusOnPreviousEnabledToolbarItem(index);\n\t\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t\tevent.key &&\n\t\t\t\t\t\t\t\tevent.key === 'ArrowRight'\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tself.focusOnNextEnabledToolbarItem(index);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\tthis.overflowButton = this.getComponentContainer().select(\n\t\t\t\t`button.bx--overflow-menu__trigger#${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t'control-toolbar-overflow-menu'\n\t\t\t\t)}`\n\t\t\t);\n\t\t}\n\t}\n\n\trenderOverflowMenu() {\n\t\tconst { overflowMenuItemList } = this.getControlConfigs();\n\n\t\tconst overflowMenuControls = this.overflowMenu\n\t\t\t.select('ul')\n\t\t\t.selectAll('li.bx--overflow-menu-options__option')\n\t\t\t.data(overflowMenuItemList, (button) =>\n\t\t\t\tTools.getProperty(button, 'id')\n\t\t\t);\n\n\t\toverflowMenuControls.exit().remove();\n\n\t\tconst enteringOverflowMenuControls = overflowMenuControls\n\t\t\t.enter()\n\t\t\t.append('li')\n\t\t\t.attr('id', (d) =>\n\t\t\t\tthis.services.domUtils.generateElementIDString(\n\t\t\t\t\t`control-${d.id}`\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('class', 'bx--overflow-menu-options__option')\n\t\t\t.attr('role', 'menuitem');\n\n\t\tenteringOverflowMenuControls\n\t\t\t.append('button')\n\t\t\t.attr('class', 'bx--overflow-menu-options__btn');\n\n\t\tenteringOverflowMenuControls\n\t\t\t.merge(overflowMenuControls)\n\t\t\t.classed('bx--overflow-menu-options__option--disabled', (d) =>\n\t\t\t\td.shouldBeDisabled()\n\t\t\t)\n\t\t\t.attr('aria-disabled', (d) => d.shouldBeDisabled())\n\t\t\t.selectAll('button')\n\t\t\t.text((d) => d.text);\n\t}\n\n\tisOverflowMenuOpen() {\n\t\treturn this.overflowMenu.classed('is-open');\n\t}\n\n\t// show/hide overflow menu\n\tupdateOverflowMenu(show: boolean) {\n\t\tif (!this.overflowMenu) {\n\t\t\treturn;\n\t\t}\n\t\tthis.overflowMenu.classed('is-open', show);\n\n\t\t// update overflow button background\n\t\tif (this.overflowButton) {\n\t\t\tthis.overflowButton.attr('aria-expanded', show);\n\t\t\tselect(this.overflowButton.node().parentNode).classed(\n\t\t\t\t'bx--overflow-menu--open',\n\t\t\t\tshow\n\t\t\t);\n\t\t}\n\n\t\tif (show) {\n\t\t\tthis.services.events.dispatchEvent(\n\t\t\t\tEvents.Toolbar.SHOW_OVERFLOW_MENU\n\t\t\t);\n\t\t} else {\n\t\t\tthis.services.events.dispatchEvent(\n\t\t\t\tEvents.Toolbar.HIDE_OVERFLOW_MENU\n\t\t\t);\n\t\t}\n\t}\n\n\t// Toolbar controllers\n\tfocusOnPreviousEnabledToolbarItem(currentItemIndex) {\n\t\tconst buttonList = this.getToolbarButtonItems();\n\t\tlet previousItemIndex = buttonList.length;\n\n\t\tfor (let i = currentItemIndex - 1; i >= 0; i--) {\n\t\t\tconst previousButtonItem = buttonList[i];\n\t\t\tif (!previousButtonItem.shouldBeDisabled()) {\n\t\t\t\tpreviousItemIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// only if previous enabled menu item found\n\t\tif (previousItemIndex < buttonList.length) {\n\t\t\tconst previousItemNode = select(\n\t\t\t\t`button#${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t`control-${buttonList[previousItemIndex].id}`\n\t\t\t\t)}`\n\t\t\t).node();\n\t\t\tif ('focus' in previousItemNode) {\n\t\t\t\tpreviousItemNode.focus();\n\t\t\t}\n\t\t}\n\t}\n\n\tfocusOnNextEnabledToolbarItem(currentItemIndex) {\n\t\tconst buttonList = this.getToolbarButtonItems();\n\t\tlet nextItemIndex = -1;\n\n\t\tfor (let i = currentItemIndex + 1; i < buttonList.length; i++) {\n\t\t\tconst nextOverflowMenuItem = buttonList[i];\n\t\t\tif (!nextOverflowMenuItem.shouldBeDisabled()) {\n\t\t\t\tnextItemIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// only if next enabled menu item found\n\t\tif (nextItemIndex > -1) {\n\t\t\tconst nextItemNode = select(\n\t\t\t\t`button#${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t`control-${buttonList[nextItemIndex].id}`\n\t\t\t\t)}`\n\t\t\t).node();\n\n\t\t\tif ('focus' in nextItemNode) {\n\t\t\t\tnextItemNode.focus();\n\t\t\t}\n\t\t}\n\t}\n\n\tfocusOnPreviousEnabledMenuItem(currentItemIndex) {\n\t\tconst overflowMenuItems = this.getOverflowMenuItems();\n\t\tlet previousItemIndex = overflowMenuItems.length;\n\n\t\tfor (let i = currentItemIndex - 1; i >= 0; i--) {\n\t\t\tconst previousOverflowMenuItem = overflowMenuItems[i];\n\t\t\tif (!previousOverflowMenuItem.shouldBeDisabled()) {\n\t\t\t\tpreviousItemIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// only if previous enabled menu item found\n\t\tif (previousItemIndex < overflowMenuItems.length) {\n\t\t\tconst previousItemNode = select(\n\t\t\t\t`#${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t`control-${overflowMenuItems[previousItemIndex].id}`\n\t\t\t\t)} button`\n\t\t\t).node();\n\t\t\tif ('focus' in previousItemNode) {\n\t\t\t\tpreviousItemNode.focus();\n\t\t\t}\n\t\t}\n\t}\n\n\tfocusOnNextEnabledMenuItem(currentItemIndex) {\n\t\tconst overflowMenuItems = this.getOverflowMenuItems();\n\t\tlet nextItemIndex = -1;\n\n\t\tfor (let i = currentItemIndex + 1; i < overflowMenuItems.length; i++) {\n\t\t\tconst nextOverflowMenuItem = overflowMenuItems[i];\n\t\t\tif (!nextOverflowMenuItem.shouldBeDisabled()) {\n\t\t\t\tnextItemIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// only if next enabled menu item found\n\t\tif (nextItemIndex > -1) {\n\t\t\tconst nextItemNode = select(\n\t\t\t\t`#${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t`control-${overflowMenuItems[nextItemIndex].id}`\n\t\t\t\t)} button`\n\t\t\t).node();\n\n\t\t\tif ('focus' in nextItemNode) {\n\t\t\t\tnextItemNode.focus();\n\t\t\t}\n\t\t}\n\t}\n\n\ttoggleOverflowMenu(event) {\n\t\tif (this.isOverflowMenuOpen()) {\n\t\t\t// hide overflow menu\n\t\t\tthis.updateOverflowMenu(false);\n\t\t} else {\n\t\t\t// show overflow menu\n\t\t\tthis.updateOverflowMenu(true);\n\n\t\t\t// setup overflow menu item event listener\n\t\t\tconst self = this;\n\t\t\tconst overflowMenuItems = this.getOverflowMenuItems();\n\t\t\toverflowMenuItems.forEach((menuItem, index) => {\n\t\t\t\tconst element = select(\n\t\t\t\t\t`#${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t\t`control-${menuItem.id}`\n\t\t\t\t\t)}`\n\t\t\t\t);\n\t\t\t\tif (element !== null) {\n\t\t\t\t\telement.on('click', () => {\n\t\t\t\t\t\tself.triggerFunctionAndEvent(\n\t\t\t\t\t\t\tmenuItem,\n\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\telement.node()\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// hide overflow menu\n\t\t\t\t\t\tself.updateOverflowMenu(false);\n\t\t\t\t\t});\n\n\t\t\t\t\telement.on('keydown', (keyEvent: KeyboardEvent) => {\n\t\t\t\t\t\tif (keyEvent && keyEvent.key === 'Enter') {\n\t\t\t\t\t\t\tself.triggerFunctionAndEvent(\n\t\t\t\t\t\t\t\tmenuItem,\n\t\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\t\telement.node()\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else if (keyEvent && keyEvent.key === 'ArrowUp') {\n\t\t\t\t\t\t\t// focus on previous menu item\n\t\t\t\t\t\t\tself.focusOnPreviousEnabledMenuItem(index);\n\t\t\t\t\t\t} else if (keyEvent && keyEvent.key === 'ArrowDown') {\n\t\t\t\t\t\t\t// focus on next menu item\n\t\t\t\t\t\t\tself.focusOnNextEnabledMenuItem(index);\n\t\t\t\t\t\t} else if (keyEvent && keyEvent.key === 'Escape') {\n\t\t\t\t\t\t\tself.updateOverflowMenu(false);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Not hide overflow menu by keyboard arrow up/down event\n\t\t\t\t\t\t// Prevent page from scrolling up/down\n\t\t\t\t\t\tkeyEvent.preventDefault();\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// default to focus on the first enabled menu item\n\t\t\tself.focusOnNextEnabledMenuItem(-1);\n\t\t}\n\n\t\t// propogation should not be stopped for keyboard events\n\t\tif (!!event) {\n\t\t\tevent.stopImmediatePropagation();\n\t\t}\n\t}\n\n\t// Calls passed function && dispatches event\n\ttriggerFunctionAndEvent(control, event, element?) {\n\t\t// Call custom function only if it exists\n\t\tif (typeof control.clickFunction === 'function') {\n\t\t\tcontrol.clickFunction(event);\n\t\t}\n\n\t\t// Dispatch selection event\n\t\tthis.services.events.dispatchEvent(Events.Toolbar.BUTTON_CLICK, {\n\t\t\tcontrol,\n\t\t\tevent,\n\t\t\telement,\n\t\t});\n\t}\n\n\tgetControlConfigs() {\n\t\tconst numberOfIcons =\n\t\t\tTools.getProperty(this.getOptions(), 'toolbar', 'numberOfIcons') -\n\t\t\t1;\n\t\tconst controls = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'toolbar',\n\t\t\t'controls'\n\t\t);\n\n\t\tconst overflowSpecificControls = [];\n\t\tconst buttonList = [];\n\t\tconst overflowList = [];\n\n\t\tcontrols.forEach((control) => {\n\t\t\tlet controlConfig = null;\n\t\t\t// check if button is custom or default control\n\t\t\tif (control.type === ToolbarControlTypes.CUSTOM) {\n\t\t\t\t// add generic id if missing\n\t\t\t\tif (Tools.getProperty(control, 'id') === null) {\n\t\t\t\t\t// add id directly to the data passed so that id isn't reassigned on rerender\n\t\t\t\t\tcontrol.id = `toolbar-button-${Toolbar.buttonID++}`;\n\t\t\t\t}\n\t\t\t\t// define function if missing\n\t\t\t\tif (Tools.getProperty(control, 'shouldBeDisabled') === null) {\n\t\t\t\t\tcontrol.shouldBeDisabled = () => false;\n\t\t\t\t}\n\n\t\t\t\tcontrolConfig = control;\n\t\t\t} else {\n\t\t\t\tcontrolConfig = this.getControlConfigByType(control.type);\n\t\t\t}\n\n\t\t\t// add to list if config is valid\n\t\t\tif (controlConfig) {\n\t\t\t\tcontrolConfig.text = control.text ? control.text : control.type;\n\n\t\t\t\tif (controlConfig.id.indexOf('toolbar-export') !== -1) {\n\t\t\t\t\toverflowSpecificControls.push(controlConfig);\n\t\t\t\t} else if (buttonList.length < numberOfIcons) {\n\t\t\t\t\t// check if icon exists else assign to the overflow list\n\t\t\t\t\tif (\n\t\t\t\t\t\tTools.getProperty(\n\t\t\t\t\t\t\tcontrolConfig,\n\t\t\t\t\t\t\t'iconSVG',\n\t\t\t\t\t\t\t'content'\n\t\t\t\t\t\t) === null\n\t\t\t\t\t) {\n\t\t\t\t\t\toverflowList.push(controlConfig);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbuttonList.push(controlConfig);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\toverflowList.push(controlConfig);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// Ensures the `export` controls are always at the bottom\n\t\toverflowList.push(...overflowSpecificControls);\n\n\t\tif (!overflowList.length) {\n\t\t\treturn {\n\t\t\t\tbuttonList,\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\tbuttonList,\n\t\t\toverflowMenuItemList: overflowList,\n\t\t};\n\t}\n\n\tgetToolbarButtonItems() {\n\t\tconst { buttonList, overflowMenuItemList } = this.getControlConfigs();\n\t\tif (!!overflowMenuItemList) {\n\t\t\tbuttonList.push(this.getOverflowButtonConfig());\n\t\t}\n\t\tif (!!buttonList) {\n\t\t\treturn buttonList;\n\t\t}\n\n\t\treturn [];\n\t}\n\n\tgetOverflowMenuItems() {\n\t\tconst { overflowMenuItemList } = this.getControlConfigs();\n\t\tif (!!overflowMenuItemList) {\n\t\t\treturn overflowMenuItemList;\n\t\t} else {\n\t\t\treturn [];\n\t\t}\n\t}\n\n\t// special button config for overflow button\n\tgetOverflowButtonConfig() {\n\t\treturn {\n\t\t\tid: 'toolbar-overflow-menu',\n\t\t\ttitle: 'More options',\n\t\t\tshouldBeDisabled: () => false,\n\t\t\ticonSVG: {\n\t\t\t\tcontent: `<circle cx=\"16\" cy=\"8\" r=\"2\"></circle>\n\t\t\t\t<circle cx=\"16\" cy=\"16\" r=\"2\"></circle>\n\t\t\t\t<circle cx=\"16\" cy=\"24\" r=\"2\"></circle>`,\n\t\t\t},\n\t\t\tclickFunction: (event) => this.toggleOverflowMenu(event),\n\t\t};\n\t}\n\n\tgetControlConfigByType(controlType: ToolbarControlTypes) {\n\t\tconst isZoomBarEnabled =\n\t\t\tthis.services.zoom &&\n\t\t\tthis.services.zoom.isZoomBarEnabled() &&\n\t\t\t!this.services.zoom.isEmptyState();\n\n\t\tconst displayData = this.model.getDisplayData();\n\n\t\tlet controlConfig;\n\t\tswitch (controlType) {\n\t\t\tcase ToolbarControlTypes.ZOOM_IN:\n\t\t\t\tif (isZoomBarEnabled) {\n\t\t\t\t\tcontrolConfig = {\n\t\t\t\t\t\tid: 'toolbar-zoomIn',\n\t\t\t\t\t\ttitle: 'Zoom in',\n\t\t\t\t\t\tshouldBeDisabled: () =>\n\t\t\t\t\t\t\tthis.services.zoom.isMinZoomDomain(),\n\t\t\t\t\t\ticonSVG: {\n\t\t\t\t\t\t\tcontent: this.getControlIconByType(controlType),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tclickFunction: () => this.services.zoom.zoomIn(),\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase ToolbarControlTypes.ZOOM_OUT:\n\t\t\t\tif (isZoomBarEnabled) {\n\t\t\t\t\tcontrolConfig = {\n\t\t\t\t\t\tid: 'toolbar-zoomOut',\n\t\t\t\t\t\ttitle: 'Zoom out',\n\t\t\t\t\t\tshouldBeDisabled: () =>\n\t\t\t\t\t\t\tthis.services.zoom.isMaxZoomDomain(),\n\t\t\t\t\t\ticonSVG: {\n\t\t\t\t\t\t\tcontent: this.getControlIconByType(controlType),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tclickFunction: () => this.services.zoom.zoomOut(),\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase ToolbarControlTypes.RESET_ZOOM:\n\t\t\t\tif (isZoomBarEnabled) {\n\t\t\t\t\tcontrolConfig = {\n\t\t\t\t\t\tid: 'toolbar-resetZoom',\n\t\t\t\t\t\ttitle: 'Reset zoom',\n\t\t\t\t\t\tshouldBeDisabled: () =>\n\t\t\t\t\t\t\tthis.services.zoom.isMaxZoomDomain(),\n\t\t\t\t\t\ticonSVG: {\n\t\t\t\t\t\t\tcontent: this.getControlIconByType(controlType),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tclickFunction: () =>\n\t\t\t\t\t\t\tthis.services.zoom.resetZoomDomain(),\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase ToolbarControlTypes.MAKE_FULLSCREEN:\n\t\t\t\tcontrolConfig = {\n\t\t\t\t\tid: 'toolbar-makefullscreen',\n\t\t\t\t\ticonSVG: {\n\t\t\t\t\t\tcontent: this.getControlIconByType(controlType),\n\t\t\t\t\t\twidth: '15px',\n\t\t\t\t\t\theight: '15px',\n\t\t\t\t\t},\n\t\t\t\t\ttitle: 'Make fullscreen',\n\t\t\t\t\tshouldBeDisabled: () => false,\n\t\t\t\t\tclickFunction: () => {\n\t\t\t\t\t\tthis.services.domUtils.toggleFullscreen();\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase ToolbarControlTypes.SHOW_AS_DATATABLE:\n\t\t\t\tcontrolConfig = {\n\t\t\t\t\tid: 'toolbar-showasdatatable',\n\t\t\t\t\ticonSVG: {\n\t\t\t\t\t\tcontent: this.getControlIconByType(controlType),\n\t\t\t\t\t},\n\t\t\t\t\ttitle: 'Show as table',\n\t\t\t\t\tshouldBeDisabled: () => displayData.length === 0,\n\t\t\t\t\tclickFunction: () =>\n\t\t\t\t\t\tthis.services.events.dispatchEvent(Events.Modal.SHOW),\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase ToolbarControlTypes.EXPORT_CSV:\n\t\t\t\tcontrolConfig = {\n\t\t\t\t\tid: 'toolbar-export-CSV',\n\t\t\t\t\ttitle: 'Export as CSV',\n\t\t\t\t\tshouldBeDisabled: () => false,\n\t\t\t\t\ticonSVG: {\n\t\t\t\t\t\tcontent: this.getControlIconByType(controlType),\n\t\t\t\t\t},\n\t\t\t\t\tclickFunction: () => this.model.exportToCSV(),\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase ToolbarControlTypes.EXPORT_PNG:\n\t\t\t\tcontrolConfig = {\n\t\t\t\t\tid: 'toolbar-export-PNG',\n\t\t\t\t\ttitle: 'Export as PNG',\n\t\t\t\t\tshouldBeDisabled: () => false,\n\t\t\t\t\ticonSVG: {\n\t\t\t\t\t\tcontent: this.getControlIconByType(controlType),\n\t\t\t\t\t},\n\t\t\t\t\tclickFunction: () => this.services.domUtils.exportToPNG(),\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase ToolbarControlTypes.EXPORT_JPG:\n\t\t\t\tcontrolConfig = {\n\t\t\t\t\tid: 'toolbar-export-JPG',\n\t\t\t\t\ttitle: 'Export as JPG',\n\t\t\t\t\tshouldBeDisabled: () => false,\n\t\t\t\t\ticonSVG: {\n\t\t\t\t\t\tcontent: this.getControlIconByType(controlType),\n\t\t\t\t\t},\n\t\t\t\t\tclickFunction: () => this.services.domUtils.exportToJPG(),\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\t// add more toolbar control configuration here\n\n\t\t\tdefault:\n\t\t\t\tthrow Error(\n\t\t\t\t\t'Not supported toolbar control type: ' + controlType\n\t\t\t\t);\n\t\t}\n\t\treturn controlConfig;\n\t}\n\n\tgetControlIconByType(controlType: ToolbarControlTypes) {\n\t\tswitch (controlType) {\n\t\t\tcase ToolbarControlTypes.ZOOM_IN:\n\t\t\t\treturn `<polygon points=\"19 13 15 13 15 9 13 9 13 13 9 13 9 15 13 15 13 19 15 19 15 15 19 15 19 13\"/>\n\t\t\t\t\t\t<path d=\"M22.45,21A10.87,10.87,0,0,0,25,14,11,11,0,1,0,14,25a10.87,10.87,0,0,0,7-2.55L28.59,30,30,28.59ZM14,23a9,9,0,1,1,9-9A9,9,0,0,1,14,23Z\"/>`;\n\t\t\tcase ToolbarControlTypes.ZOOM_OUT:\n\t\t\t\treturn `<rect x=\"9\" y=\"13\" width=\"10\" height=\"2\"/>\n\t\t\t\t\t\t<path d=\"M22.45,21A10.87,10.87,0,0,0,25,14,11,11,0,1,0,14,25a10.87,10.87,0,0,0,7-2.55L28.59,30,30,28.59ZM14,23a9,9,0,1,1,9-9A9,9,0,0,1,14,23Z\"/>`;\n\t\t\tcase ToolbarControlTypes.RESET_ZOOM:\n\t\t\t\treturn `<path d=\"M22.4478,21A10.855,10.855,0,0,0,25,14,10.99,10.99,0,0,0,6,6.4658V2H4v8h8V8H7.332a8.9768,8.9768,0,1,1-2.1,8H3.1912A11.0118,11.0118,0,0,0,14,25a10.855,10.855,0,0,0,7-2.5522L28.5859,30,30,28.5859Z\"/>`;\n\t\t\tcase ToolbarControlTypes.MAKE_FULLSCREEN:\n\t\t\t\treturn `<polygon points=\"21 2 21 4 26.59 4 17 13.58 18.41 15 28 5.41 28 11 30 11 30 2 21 2\"/><polygon points=\"15 18.42 13.59 17 4 26.59 4 21 2 21 2 30 11 30 11 28 5.41 28 15 18.42\"/>`;\n\t\t\tcase ToolbarControlTypes.SHOW_AS_DATATABLE:\n\t\t\t\treturn `<rect x=\"4\" y=\"6\" width=\"18\" height=\"2\"/><rect x=\"4\" y=\"12\" width=\"18\" height=\"2\"/><rect x=\"4\" y=\"18\" width=\"18\" height=\"2\"/><rect x=\"4\" y=\"24\" width=\"18\" height=\"2\"/><rect x=\"26\" y=\"6\" width=\"2\" height=\"2\"/><rect x=\"26\" y=\"12\" width=\"2\" height=\"2\"/><rect x=\"26\" y=\"18\" width=\"2\" height=\"2\"/><rect x=\"26\" y=\"24\" width=\"2\" height=\"2\"/>`;\n\t\t\tcase ToolbarControlTypes.EXPORT_CSV:\n\t\t\t\treturn `<path d=\"M22.4478,21A10.855,10.855,0,0,0,25,14,10.99,10.99,0,0,0,6,6.4658V2H4v8h8V8H7.332a8.9768,8.9768,0,1,1-2.1,8H3.1912A11.0118,11.0118,0,0,0,14,25a10.855,10.855,0,0,0,7-2.5522L28.5859,30,30,28.5859Z\"/>`;\n\t\t\tcase ToolbarControlTypes.EXPORT_JPG:\n\t\t\t\treturn `<path d=\"M22.4478,21A10.855,10.855,0,0,0,25,14,10.99,10.99,0,0,0,6,6.4658V2H4v8h8V8H7.332a8.9768,8.9768,0,1,1-2.1,8H3.1912A11.0118,11.0118,0,0,0,14,25a10.855,10.855,0,0,0,7-2.5522L28.5859,30,30,28.5859Z\"/>`;\n\t\t\tcase ToolbarControlTypes.EXPORT_PNG:\n\t\t\t\treturn `<path d=\"M22.4478,21A10.855,10.855,0,0,0,25,14,10.99,10.99,0,0,0,6,6.4658V2H4v8h8V8H7.332a8.9768,8.9768,0,1,1-2.1,8H3.1912A11.0118,11.0118,0,0,0,14,25a10.855,10.855,0,0,0,7-2.5522L28.5859,30,30,28.5859Z\"/>`; // add more icons here\n\t\t\t// svg icon must be with 32x32 viewBox\n\n\t\t\tdefault:\n\t\t\t\tthrow Error(\n\t\t\t\t\t'Not supported toolbar control type: ' + controlType\n\t\t\t\t);\n\t\t}\n\t}\n}\n"]}
1
+ {"version":3,"file":"toolbar.js","sourceRoot":"","sources":["toolbar.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal Imports\nimport { Component } from '../component';\nimport { Events, RenderTypes, ToolbarControlTypes } from '../../interfaces';\nimport { Tools } from '../../tools';\n\n// D3 Imports\nimport { select } from 'd3-selection';\n\nexport class Toolbar extends Component {\n\tstatic buttonID = 0;\n\ttype = 'toolbar';\n\trenderType = RenderTypes.HTML;\n\n\t// overflow menu button to control background color\n\toverflowButton: any;\n\n\t// div options list element\n\toverflowMenu: any;\n\n\tinit() {\n\t\tconst bodyOnClickHandler = () => this.updateOverflowMenu(false);\n\n\t\t// Grab the tooltip element\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Toolbar.SHOW_OVERFLOW_MENU,\n\t\t\t() => {\n\t\t\t\tthis.renderOverflowMenu();\n\n\t\t\t\t// hide overflow menu if user clicks on somewhere in web page\n\t\t\t\tdocument.body.addEventListener('click', bodyOnClickHandler);\n\t\t\t}\n\t\t);\n\n\t\t// listen to hide overflow menu event to hide the overflow menu\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Toolbar.HIDE_OVERFLOW_MENU,\n\t\t\t() => {\n\t\t\t\t// // hide overflow menu if user clicks on somewhere in web page\n\t\t\t\tdocument.body.removeEventListener('click', bodyOnClickHandler);\n\t\t\t}\n\t\t);\n\t}\n\n\trender(animate = true) {\n\t\tconst container = this.getComponentContainer().attr('role', 'toolbar');\n\n\t\tconst isDataLoading = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'data',\n\t\t\t'loading'\n\t\t);\n\n\t\tif (isDataLoading) {\n\t\t\tcontainer.html('');\n\t\t\t// Set overflow menu to null if data is loading\n\t\t\t// This will render in a new overflow menu when data is done loading\n\t\t\tthis.overflowMenu = null;\n\t\t} else {\n\t\t\tif (!this.overflowMenu) {\n\t\t\t\tthis.overflowMenu = container\n\t\t\t\t\t.append('div')\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'class',\n\t\t\t\t\t\t'bx--overflow-menu-options bx--overflow-menu--flip cds--overflow-menu-options cds--overflow-menu--flip'\n\t\t\t\t\t)\n\t\t\t\t\t.attr('tabindex', -1)\n\t\t\t\t\t.attr('role', 'menu')\n\t\t\t\t\t.html(`<ul></ul>`);\n\t\t\t}\n\n\t\t\t// get the toolbar buttons\n\t\t\tconst {\n\t\t\t\tbuttonList,\n\t\t\t\toverflowMenuItemList,\n\t\t\t} = this.getControlConfigs();\n\n\t\t\t// overflow button is required only if overflow menu item list is valid\n\t\t\tif (!!overflowMenuItemList) {\n\t\t\t\tbuttonList.push(this.getOverflowButtonConfig());\n\t\t\t}\n\n\t\t\tconst toolbarControls = container\n\t\t\t\t.selectAll('div.toolbar-control')\n\t\t\t\t.data(buttonList, (button) => button.id);\n\n\t\t\ttoolbarControls.exit().remove();\n\n\t\t\tconst enteringToolbarControls = toolbarControls\n\t\t\t\t.enter()\n\t\t\t\t.append('div')\n\t\t\t\t.attr('class', 'toolbar-control bx--overflow-menu cds--overflow-menu')\n\t\t\t\t.attr('role', 'button');\n\n\t\t\tconst self = this;\n\t\t\tconst allToolbarControls = enteringToolbarControls\n\t\t\t\t.merge(toolbarControls)\n\t\t\t\t.classed('disabled', (d) => d.shouldBeDisabled())\n\t\t\t\t.attr('aria-disabled', (d) => d.shouldBeDisabled())\n\t\t\t\t.attr('aria-label', (d) => d.title)\n\t\t\t\t.html(\n\t\t\t\t\t(d) => `\n\t\t\t<button\n\t\t\t\tclass=\"bx--overflow-menu__trigger cds--overflow-menu__trigger\"\n\t\t\t\taria-haspopup=\"true\" aria-expanded=\"false\" id=\"${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t`control-${d.id}`\n\t\t\t\t)}\" aria-label=\"${d.title}\">\n\t\t\t\t<svg focusable=\"false\" preserveAspectRatio=\"xMidYMid meet\" style=\"will-change: transform; width: ${\n\t\t\t\t\td.iconSVG.width !== undefined ? d.iconSVG.width : '20px'\n\t\t\t\t}; height: ${\n\t\t\t\t\t\td.iconSVG.height !== undefined\n\t\t\t\t\t\t\t? d.iconSVG.height\n\t\t\t\t\t\t\t: '20px'\n\t\t\t\t\t}\" xmlns=\"http://www.w3.org/2000/svg\" class=\"bx--overflow-menu__icon cds--overflow-menu__icon\" viewBox=\"0 0 32 32\" aria-hidden=\"true\">\n\t\t\t\t\t${d.iconSVG.content}\n\t\t\t\t</svg>\n\t\t\t</button>`\n\t\t\t\t)\n\t\t\t\t.each(function (d, index) {\n\t\t\t\t\tselect(this)\n\t\t\t\t\t\t.select('button')\n\t\t\t\t\t\t.on('click', (event) => {\n\t\t\t\t\t\t\tif (!d.shouldBeDisabled()) {\n\t\t\t\t\t\t\t\tself.triggerFunctionAndEvent(d, event, this);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.on('keydown', (event: KeyboardEvent) => {\n\t\t\t\t\t\t\tif (\n\t\t\t\t\t\t\t\t(event.key && event.key === 'Enter') ||\n\t\t\t\t\t\t\t\tevent.key === ' '\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\t\tself.triggerFunctionAndEvent(d, event, this);\n\t\t\t\t\t\t\t} else if (event.key && event.key === 'ArrowLeft') {\n\t\t\t\t\t\t\t\tself.focusOnPreviousEnabledToolbarItem(index);\n\t\t\t\t\t\t\t} else if (\n\t\t\t\t\t\t\t\tevent.key &&\n\t\t\t\t\t\t\t\tevent.key === 'ArrowRight'\n\t\t\t\t\t\t\t) {\n\t\t\t\t\t\t\t\tself.focusOnNextEnabledToolbarItem(index);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t});\n\t\t\t\t});\n\n\t\t\tthis.overflowButton = this.getComponentContainer().select(\n\t\t\t\t`button.bx--overflow-menu__trigger#${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t'control-toolbar-overflow-menu'\n\t\t\t\t)}`\n\t\t\t);\n\t\t}\n\t}\n\n\trenderOverflowMenu() {\n\t\tconst { overflowMenuItemList } = this.getControlConfigs();\n\n\t\tconst overflowMenuControls = this.overflowMenu\n\t\t\t.select('ul')\n\t\t\t.selectAll('li.bx--overflow-menu-options__option')\n\t\t\t.data(overflowMenuItemList, (button) =>\n\t\t\t\tTools.getProperty(button, 'id')\n\t\t\t);\n\n\t\toverflowMenuControls.exit().remove();\n\n\t\tconst enteringOverflowMenuControls = overflowMenuControls\n\t\t\t.enter()\n\t\t\t.append('li')\n\t\t\t.attr('id', (d) =>\n\t\t\t\tthis.services.domUtils.generateElementIDString(\n\t\t\t\t\t`control-${d.id}`\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('class', 'bx--overflow-menu-options__option cds--overflow-menu-options__option')\n\t\t\t.attr('role', 'menuitem');\n\n\t\tenteringOverflowMenuControls\n\t\t\t.append('button')\n\t\t\t.attr('class', 'bx--overflow-menu-options__btn cds--overflow-menu-options__btn');\n\n\t\tenteringOverflowMenuControls\n\t\t\t.merge(overflowMenuControls)\n\t\t\t.classed('bx--overflow-menu-options__option--disabled', (d) =>\n\t\t\t\td.shouldBeDisabled()\n\t\t\t)\n\t\t\t.classed('cds--overflow-menu-options__option--disabled', (d) =>\n\t\t\t\td.shouldBeDisabled()\n\t\t\t)\n\t\t\t.attr('aria-disabled', (d) => d.shouldBeDisabled())\n\t\t\t.selectAll('button')\n\t\t\t.text((d) => d.text);\n\t}\n\n\tisOverflowMenuOpen() {\n\t\treturn this.overflowMenu.classed('is-open');\n\t}\n\n\t// show/hide overflow menu\n\tupdateOverflowMenu(show: boolean) {\n\t\tif (!this.overflowMenu) {\n\t\t\treturn;\n\t\t}\n\t\tthis.overflowMenu.classed('is-open', show);\n\n\t\t// update overflow button background\n\t\tif (this.overflowButton) {\n\t\t\tthis.overflowButton.attr('aria-expanded', show);\n\t\t\tselect(this.overflowButton.node().parentNode)\n\t\t\t\t.classed(\n\t\t\t\t\t'bx--overflow-menu--open',\n\t\t\t\t\tshow\n\t\t\t\t).classed(\n\t\t\t\t\t'cds--overflow-menu--open',\n\t\t\t\t\tshow\n\t\t\t\t);\n\t\t}\n\n\t\tif (show) {\n\t\t\tthis.services.events.dispatchEvent(\n\t\t\t\tEvents.Toolbar.SHOW_OVERFLOW_MENU\n\t\t\t);\n\t\t} else {\n\t\t\tthis.services.events.dispatchEvent(\n\t\t\t\tEvents.Toolbar.HIDE_OVERFLOW_MENU\n\t\t\t);\n\t\t}\n\t}\n\n\t// Toolbar controllers\n\tfocusOnPreviousEnabledToolbarItem(currentItemIndex) {\n\t\tconst buttonList = this.getToolbarButtonItems();\n\t\tlet previousItemIndex = buttonList.length;\n\n\t\tfor (let i = currentItemIndex - 1; i >= 0; i--) {\n\t\t\tconst previousButtonItem = buttonList[i];\n\t\t\tif (!previousButtonItem.shouldBeDisabled()) {\n\t\t\t\tpreviousItemIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// only if previous enabled menu item found\n\t\tif (previousItemIndex < buttonList.length) {\n\t\t\tconst previousItemNode = select(\n\t\t\t\t`button#${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t`control-${buttonList[previousItemIndex].id}`\n\t\t\t\t)}`\n\t\t\t).node();\n\t\t\tif ('focus' in previousItemNode) {\n\t\t\t\tpreviousItemNode.focus();\n\t\t\t}\n\t\t}\n\t}\n\n\tfocusOnNextEnabledToolbarItem(currentItemIndex) {\n\t\tconst buttonList = this.getToolbarButtonItems();\n\t\tlet nextItemIndex = -1;\n\n\t\tfor (let i = currentItemIndex + 1; i < buttonList.length; i++) {\n\t\t\tconst nextOverflowMenuItem = buttonList[i];\n\t\t\tif (!nextOverflowMenuItem.shouldBeDisabled()) {\n\t\t\t\tnextItemIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// only if next enabled menu item found\n\t\tif (nextItemIndex > -1) {\n\t\t\tconst nextItemNode = select(\n\t\t\t\t`button#${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t`control-${buttonList[nextItemIndex].id}`\n\t\t\t\t)}`\n\t\t\t).node();\n\n\t\t\tif ('focus' in nextItemNode) {\n\t\t\t\tnextItemNode.focus();\n\t\t\t}\n\t\t}\n\t}\n\n\tfocusOnPreviousEnabledMenuItem(currentItemIndex) {\n\t\tconst overflowMenuItems = this.getOverflowMenuItems();\n\t\tlet previousItemIndex = overflowMenuItems.length;\n\n\t\tfor (let i = currentItemIndex - 1; i >= 0; i--) {\n\t\t\tconst previousOverflowMenuItem = overflowMenuItems[i];\n\t\t\tif (!previousOverflowMenuItem.shouldBeDisabled()) {\n\t\t\t\tpreviousItemIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// only if previous enabled menu item found\n\t\tif (previousItemIndex < overflowMenuItems.length) {\n\t\t\tconst previousItemNode = select(\n\t\t\t\t`#${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t`control-${overflowMenuItems[previousItemIndex].id}`\n\t\t\t\t)} button`\n\t\t\t).node();\n\t\t\tif ('focus' in previousItemNode) {\n\t\t\t\tpreviousItemNode.focus();\n\t\t\t}\n\t\t}\n\t}\n\n\tfocusOnNextEnabledMenuItem(currentItemIndex) {\n\t\tconst overflowMenuItems = this.getOverflowMenuItems();\n\t\tlet nextItemIndex = -1;\n\n\t\tfor (let i = currentItemIndex + 1; i < overflowMenuItems.length; i++) {\n\t\t\tconst nextOverflowMenuItem = overflowMenuItems[i];\n\t\t\tif (!nextOverflowMenuItem.shouldBeDisabled()) {\n\t\t\t\tnextItemIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\t// only if next enabled menu item found\n\t\tif (nextItemIndex > -1) {\n\t\t\tconst nextItemNode = select(\n\t\t\t\t`#${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t`control-${overflowMenuItems[nextItemIndex].id}`\n\t\t\t\t)} button`\n\t\t\t).node();\n\n\t\t\tif ('focus' in nextItemNode) {\n\t\t\t\tnextItemNode.focus();\n\t\t\t}\n\t\t}\n\t}\n\n\ttoggleOverflowMenu(event) {\n\t\tif (this.isOverflowMenuOpen()) {\n\t\t\t// hide overflow menu\n\t\t\tthis.updateOverflowMenu(false);\n\t\t} else {\n\t\t\t// show overflow menu\n\t\t\tthis.updateOverflowMenu(true);\n\n\t\t\t// setup overflow menu item event listener\n\t\t\tconst self = this;\n\t\t\tconst overflowMenuItems = this.getOverflowMenuItems();\n\t\t\toverflowMenuItems.forEach((menuItem, index) => {\n\t\t\t\tconst element = select(\n\t\t\t\t\t`#${this.services.domUtils.generateElementIDString(\n\t\t\t\t\t\t`control-${menuItem.id}`\n\t\t\t\t\t)}`\n\t\t\t\t);\n\t\t\t\tif (element !== null) {\n\t\t\t\t\telement.on('click', () => {\n\t\t\t\t\t\tself.triggerFunctionAndEvent(\n\t\t\t\t\t\t\tmenuItem,\n\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\telement.node()\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// hide overflow menu\n\t\t\t\t\t\tself.updateOverflowMenu(false);\n\t\t\t\t\t});\n\n\t\t\t\t\telement.on('keydown', (keyEvent: KeyboardEvent) => {\n\t\t\t\t\t\tif (keyEvent && keyEvent.key === 'Enter') {\n\t\t\t\t\t\t\tself.triggerFunctionAndEvent(\n\t\t\t\t\t\t\t\tmenuItem,\n\t\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\t\telement.node()\n\t\t\t\t\t\t\t);\n\t\t\t\t\t\t} else if (keyEvent && keyEvent.key === 'ArrowUp') {\n\t\t\t\t\t\t\t// focus on previous menu item\n\t\t\t\t\t\t\tself.focusOnPreviousEnabledMenuItem(index);\n\t\t\t\t\t\t} else if (keyEvent && keyEvent.key === 'ArrowDown') {\n\t\t\t\t\t\t\t// focus on next menu item\n\t\t\t\t\t\t\tself.focusOnNextEnabledMenuItem(index);\n\t\t\t\t\t\t} else if (keyEvent && keyEvent.key === 'Escape') {\n\t\t\t\t\t\t\tself.updateOverflowMenu(false);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Not hide overflow menu by keyboard arrow up/down event\n\t\t\t\t\t\t// Prevent page from scrolling up/down\n\t\t\t\t\t\tkeyEvent.preventDefault();\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// default to focus on the first enabled menu item\n\t\t\tself.focusOnNextEnabledMenuItem(-1);\n\t\t}\n\n\t\t// propogation should not be stopped for keyboard events\n\t\tif (!!event) {\n\t\t\tevent.stopImmediatePropagation();\n\t\t}\n\t}\n\n\t// Calls passed function && dispatches event\n\ttriggerFunctionAndEvent(control, event, element?) {\n\t\t// Call custom function only if it exists\n\t\tif (typeof control.clickFunction === 'function') {\n\t\t\tcontrol.clickFunction(event);\n\t\t}\n\n\t\t// Dispatch selection event\n\t\tthis.services.events.dispatchEvent(Events.Toolbar.BUTTON_CLICK, {\n\t\t\tcontrol,\n\t\t\tevent,\n\t\t\telement,\n\t\t});\n\t}\n\n\tgetControlConfigs() {\n\t\tconst numberOfIcons =\n\t\t\tTools.getProperty(this.getOptions(), 'toolbar', 'numberOfIcons') -\n\t\t\t1;\n\t\tconst controls = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'toolbar',\n\t\t\t'controls'\n\t\t);\n\n\t\tconst overflowSpecificControls = [];\n\t\tconst buttonList = [];\n\t\tconst overflowList = [];\n\n\t\tcontrols.forEach((control) => {\n\t\t\tlet controlConfig = null;\n\t\t\t// check if button is custom or default control\n\t\t\tif (control.type === ToolbarControlTypes.CUSTOM) {\n\t\t\t\t// add generic id if missing\n\t\t\t\tif (Tools.getProperty(control, 'id') === null) {\n\t\t\t\t\t// add id directly to the data passed so that id isn't reassigned on rerender\n\t\t\t\t\tcontrol.id = `toolbar-button-${Toolbar.buttonID++}`;\n\t\t\t\t}\n\t\t\t\t// define function if missing\n\t\t\t\tif (Tools.getProperty(control, 'shouldBeDisabled') === null) {\n\t\t\t\t\tcontrol.shouldBeDisabled = () => false;\n\t\t\t\t}\n\n\t\t\t\tcontrolConfig = control;\n\t\t\t} else {\n\t\t\t\tcontrolConfig = this.getControlConfigByType(control.type);\n\t\t\t}\n\n\t\t\t// add to list if config is valid\n\t\t\tif (controlConfig) {\n\t\t\t\tcontrolConfig.text = control.text ? control.text : control.type;\n\n\t\t\t\tif (controlConfig.id.indexOf('toolbar-export') !== -1) {\n\t\t\t\t\toverflowSpecificControls.push(controlConfig);\n\t\t\t\t} else if (buttonList.length < numberOfIcons) {\n\t\t\t\t\t// check if icon exists else assign to the overflow list\n\t\t\t\t\tif (\n\t\t\t\t\t\tTools.getProperty(\n\t\t\t\t\t\t\tcontrolConfig,\n\t\t\t\t\t\t\t'iconSVG',\n\t\t\t\t\t\t\t'content'\n\t\t\t\t\t\t) === null\n\t\t\t\t\t) {\n\t\t\t\t\t\toverflowList.push(controlConfig);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tbuttonList.push(controlConfig);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\toverflowList.push(controlConfig);\n\t\t\t\t}\n\t\t\t}\n\t\t});\n\n\t\t// Ensures the `export` controls are always at the bottom\n\t\toverflowList.push(...overflowSpecificControls);\n\n\t\tif (!overflowList.length) {\n\t\t\treturn {\n\t\t\t\tbuttonList,\n\t\t\t};\n\t\t}\n\n\t\treturn {\n\t\t\tbuttonList,\n\t\t\toverflowMenuItemList: overflowList,\n\t\t};\n\t}\n\n\tgetToolbarButtonItems() {\n\t\tconst { buttonList, overflowMenuItemList } = this.getControlConfigs();\n\t\tif (!!overflowMenuItemList) {\n\t\t\tbuttonList.push(this.getOverflowButtonConfig());\n\t\t}\n\t\tif (!!buttonList) {\n\t\t\treturn buttonList;\n\t\t}\n\n\t\treturn [];\n\t}\n\n\tgetOverflowMenuItems() {\n\t\tconst { overflowMenuItemList } = this.getControlConfigs();\n\t\tif (!!overflowMenuItemList) {\n\t\t\treturn overflowMenuItemList;\n\t\t} else {\n\t\t\treturn [];\n\t\t}\n\t}\n\n\t// special button config for overflow button\n\tgetOverflowButtonConfig() {\n\t\treturn {\n\t\t\tid: 'toolbar-overflow-menu',\n\t\t\ttitle: 'More options',\n\t\t\tshouldBeDisabled: () => false,\n\t\t\ticonSVG: {\n\t\t\t\tcontent: `<circle cx=\"16\" cy=\"8\" r=\"2\"></circle>\n\t\t\t\t<circle cx=\"16\" cy=\"16\" r=\"2\"></circle>\n\t\t\t\t<circle cx=\"16\" cy=\"24\" r=\"2\"></circle>`,\n\t\t\t},\n\t\t\tclickFunction: (event) => this.toggleOverflowMenu(event),\n\t\t};\n\t}\n\n\tgetControlConfigByType(controlType: ToolbarControlTypes) {\n\t\tconst isZoomBarEnabled =\n\t\t\tthis.services.zoom &&\n\t\t\tthis.services.zoom.isZoomBarEnabled() &&\n\t\t\t!this.services.zoom.isEmptyState();\n\n\t\tconst displayData = this.model.getDisplayData();\n\n\t\tlet controlConfig;\n\t\tswitch (controlType) {\n\t\t\tcase ToolbarControlTypes.ZOOM_IN:\n\t\t\t\tif (isZoomBarEnabled) {\n\t\t\t\t\tcontrolConfig = {\n\t\t\t\t\t\tid: 'toolbar-zoomIn',\n\t\t\t\t\t\ttitle: 'Zoom in',\n\t\t\t\t\t\tshouldBeDisabled: () =>\n\t\t\t\t\t\t\tthis.services.zoom.isMinZoomDomain(),\n\t\t\t\t\t\ticonSVG: {\n\t\t\t\t\t\t\tcontent: this.getControlIconByType(controlType),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tclickFunction: () => this.services.zoom.zoomIn(),\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase ToolbarControlTypes.ZOOM_OUT:\n\t\t\t\tif (isZoomBarEnabled) {\n\t\t\t\t\tcontrolConfig = {\n\t\t\t\t\t\tid: 'toolbar-zoomOut',\n\t\t\t\t\t\ttitle: 'Zoom out',\n\t\t\t\t\t\tshouldBeDisabled: () =>\n\t\t\t\t\t\t\tthis.services.zoom.isMaxZoomDomain(),\n\t\t\t\t\t\ticonSVG: {\n\t\t\t\t\t\t\tcontent: this.getControlIconByType(controlType),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tclickFunction: () => this.services.zoom.zoomOut(),\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase ToolbarControlTypes.RESET_ZOOM:\n\t\t\t\tif (isZoomBarEnabled) {\n\t\t\t\t\tcontrolConfig = {\n\t\t\t\t\t\tid: 'toolbar-resetZoom',\n\t\t\t\t\t\ttitle: 'Reset zoom',\n\t\t\t\t\t\tshouldBeDisabled: () =>\n\t\t\t\t\t\t\tthis.services.zoom.isMaxZoomDomain(),\n\t\t\t\t\t\ticonSVG: {\n\t\t\t\t\t\t\tcontent: this.getControlIconByType(controlType),\n\t\t\t\t\t\t},\n\t\t\t\t\t\tclickFunction: () =>\n\t\t\t\t\t\t\tthis.services.zoom.resetZoomDomain(),\n\t\t\t\t\t};\n\t\t\t\t}\n\t\t\t\tbreak;\n\t\t\tcase ToolbarControlTypes.MAKE_FULLSCREEN:\n\t\t\t\tcontrolConfig = {\n\t\t\t\t\tid: 'toolbar-makefullscreen',\n\t\t\t\t\ticonSVG: {\n\t\t\t\t\t\tcontent: this.getControlIconByType(controlType),\n\t\t\t\t\t\twidth: '15px',\n\t\t\t\t\t\theight: '15px',\n\t\t\t\t\t},\n\t\t\t\t\ttitle: 'Make fullscreen',\n\t\t\t\t\tshouldBeDisabled: () => false,\n\t\t\t\t\tclickFunction: () => {\n\t\t\t\t\t\tthis.services.domUtils.toggleFullscreen();\n\t\t\t\t\t},\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase ToolbarControlTypes.SHOW_AS_DATATABLE:\n\t\t\t\tcontrolConfig = {\n\t\t\t\t\tid: 'toolbar-showasdatatable',\n\t\t\t\t\ticonSVG: {\n\t\t\t\t\t\tcontent: this.getControlIconByType(controlType),\n\t\t\t\t\t},\n\t\t\t\t\ttitle: 'Show as table',\n\t\t\t\t\tshouldBeDisabled: () => displayData.length === 0,\n\t\t\t\t\tclickFunction: () =>\n\t\t\t\t\t\tthis.services.events.dispatchEvent(Events.Modal.SHOW),\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase ToolbarControlTypes.EXPORT_CSV:\n\t\t\t\tcontrolConfig = {\n\t\t\t\t\tid: 'toolbar-export-CSV',\n\t\t\t\t\ttitle: 'Export as CSV',\n\t\t\t\t\tshouldBeDisabled: () => false,\n\t\t\t\t\ticonSVG: {\n\t\t\t\t\t\tcontent: this.getControlIconByType(controlType),\n\t\t\t\t\t},\n\t\t\t\t\tclickFunction: () => this.model.exportToCSV(),\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase ToolbarControlTypes.EXPORT_PNG:\n\t\t\t\tcontrolConfig = {\n\t\t\t\t\tid: 'toolbar-export-PNG',\n\t\t\t\t\ttitle: 'Export as PNG',\n\t\t\t\t\tshouldBeDisabled: () => false,\n\t\t\t\t\ticonSVG: {\n\t\t\t\t\t\tcontent: this.getControlIconByType(controlType),\n\t\t\t\t\t},\n\t\t\t\t\tclickFunction: () => this.services.domUtils.exportToPNG(),\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\tcase ToolbarControlTypes.EXPORT_JPG:\n\t\t\t\tcontrolConfig = {\n\t\t\t\t\tid: 'toolbar-export-JPG',\n\t\t\t\t\ttitle: 'Export as JPG',\n\t\t\t\t\tshouldBeDisabled: () => false,\n\t\t\t\t\ticonSVG: {\n\t\t\t\t\t\tcontent: this.getControlIconByType(controlType),\n\t\t\t\t\t},\n\t\t\t\t\tclickFunction: () => this.services.domUtils.exportToJPG(),\n\t\t\t\t};\n\t\t\t\tbreak;\n\t\t\t// add more toolbar control configuration here\n\n\t\t\tdefault:\n\t\t\t\tthrow Error(\n\t\t\t\t\t'Not supported toolbar control type: ' + controlType\n\t\t\t\t);\n\t\t}\n\t\treturn controlConfig;\n\t}\n\n\tgetControlIconByType(controlType: ToolbarControlTypes) {\n\t\tswitch (controlType) {\n\t\t\tcase ToolbarControlTypes.ZOOM_IN:\n\t\t\t\treturn `<polygon points=\"19 13 15 13 15 9 13 9 13 13 9 13 9 15 13 15 13 19 15 19 15 15 19 15 19 13\"/>\n\t\t\t\t\t\t<path d=\"M22.45,21A10.87,10.87,0,0,0,25,14,11,11,0,1,0,14,25a10.87,10.87,0,0,0,7-2.55L28.59,30,30,28.59ZM14,23a9,9,0,1,1,9-9A9,9,0,0,1,14,23Z\"/>`;\n\t\t\tcase ToolbarControlTypes.ZOOM_OUT:\n\t\t\t\treturn `<rect x=\"9\" y=\"13\" width=\"10\" height=\"2\"/>\n\t\t\t\t\t\t<path d=\"M22.45,21A10.87,10.87,0,0,0,25,14,11,11,0,1,0,14,25a10.87,10.87,0,0,0,7-2.55L28.59,30,30,28.59ZM14,23a9,9,0,1,1,9-9A9,9,0,0,1,14,23Z\"/>`;\n\t\t\tcase ToolbarControlTypes.RESET_ZOOM:\n\t\t\t\treturn `<path d=\"M22.4478,21A10.855,10.855,0,0,0,25,14,10.99,10.99,0,0,0,6,6.4658V2H4v8h8V8H7.332a8.9768,8.9768,0,1,1-2.1,8H3.1912A11.0118,11.0118,0,0,0,14,25a10.855,10.855,0,0,0,7-2.5522L28.5859,30,30,28.5859Z\"/>`;\n\t\t\tcase ToolbarControlTypes.MAKE_FULLSCREEN:\n\t\t\t\treturn `<polygon points=\"21 2 21 4 26.59 4 17 13.58 18.41 15 28 5.41 28 11 30 11 30 2 21 2\"/><polygon points=\"15 18.42 13.59 17 4 26.59 4 21 2 21 2 30 11 30 11 28 5.41 28 15 18.42\"/>`;\n\t\t\tcase ToolbarControlTypes.SHOW_AS_DATATABLE:\n\t\t\t\treturn `<rect x=\"4\" y=\"6\" width=\"18\" height=\"2\"/><rect x=\"4\" y=\"12\" width=\"18\" height=\"2\"/><rect x=\"4\" y=\"18\" width=\"18\" height=\"2\"/><rect x=\"4\" y=\"24\" width=\"18\" height=\"2\"/><rect x=\"26\" y=\"6\" width=\"2\" height=\"2\"/><rect x=\"26\" y=\"12\" width=\"2\" height=\"2\"/><rect x=\"26\" y=\"18\" width=\"2\" height=\"2\"/><rect x=\"26\" y=\"24\" width=\"2\" height=\"2\"/>`;\n\t\t\tcase ToolbarControlTypes.EXPORT_CSV:\n\t\t\t\treturn `<path d=\"M22.4478,21A10.855,10.855,0,0,0,25,14,10.99,10.99,0,0,0,6,6.4658V2H4v8h8V8H7.332a8.9768,8.9768,0,1,1-2.1,8H3.1912A11.0118,11.0118,0,0,0,14,25a10.855,10.855,0,0,0,7-2.5522L28.5859,30,30,28.5859Z\"/>`;\n\t\t\tcase ToolbarControlTypes.EXPORT_JPG:\n\t\t\t\treturn `<path d=\"M22.4478,21A10.855,10.855,0,0,0,25,14,10.99,10.99,0,0,0,6,6.4658V2H4v8h8V8H7.332a8.9768,8.9768,0,1,1-2.1,8H3.1912A11.0118,11.0118,0,0,0,14,25a10.855,10.855,0,0,0,7-2.5522L28.5859,30,30,28.5859Z\"/>`;\n\t\t\tcase ToolbarControlTypes.EXPORT_PNG:\n\t\t\t\treturn `<path d=\"M22.4478,21A10.855,10.855,0,0,0,25,14,10.99,10.99,0,0,0,6,6.4658V2H4v8h8V8H7.332a8.9768,8.9768,0,1,1-2.1,8H3.1912A11.0118,11.0118,0,0,0,14,25a10.855,10.855,0,0,0,7-2.5522L28.5859,30,30,28.5859Z\"/>`; // add more icons here\n\t\t\t// svg icon must be with 32x32 viewBox\n\n\t\t\tdefault:\n\t\t\t\tthrow Error(\n\t\t\t\t\t'Not supported toolbar control type: ' + controlType\n\t\t\t\t);\n\t\t}\n\t}\n}\n"]}
@@ -52,12 +52,12 @@ var Modal = /** @class */ (function (_super) {
52
52
  var options = this.model.getOptions();
53
53
  var chartprefix = Tools.getProperty(options, 'style', 'prefix');
54
54
  var tableArray = this.model.getTabularDataArray();
55
- return "\n\t\t<div class=\"bx--modal-container\">\n\t\t\t<div class=\"bx--modal-header\">\n\t\t\t\t<p class=\"bx--modal-header__label bx--type-delta\" id=\"modal-title\">Tabular representation</p>\n\t\t\t\t<p class=\"bx--modal-header__heading bx--type-beta\" id=\"modal-description\">" + options.title + "</p>\n\t\t\t\t<button class=\"bx--modal-close\" type=\"button\" data-modal-close aria-label=\"close modal\" data-modal-primary-focus>\n\t\t\t\t\t<svg focusable=\"false\" preserveAspectRatio=\"xMidYMid meet\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" aria-label=\"Close\" width=\"20\" height=\"20\" viewBox=\"0 0 32 32\" role=\"img\" class=\"bx--modal-close__icon\">\n\t\t\t\t\t\t<path d=\"M24 9.4L22.6 8 16 14.6 9.4 8 8 9.4 14.6 16 8 22.6 9.4 24 16 17.4 22.6 24 24 22.6 17.4 16 24 9.4z\"></path>\n\t\t\t\t\t</svg>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<div class=\"bx--modal-content\"><table class=\"bx--data-table bx--data-table--no-border\">\n\t\t\t\t\t<thead>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t" + get(tableArray, 0)
56
- .map(function (heading) { return "<th scope=\"col\">\n\t\t\t\t\t\t\t\t<div class=\"bx--table-header-label\">" + heading + "</div>\n\t\t\t\t\t\t\t</th>"; })
57
- .join('') + "\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</thead>\n\t\t\t\t\t<tbody>" + tableArray
55
+ return "\n\t\t<div class=\"bx--modal-container cds--modal-container\">\n\t\t\t<div class=\"bx--modal-header cds--modal-header\">\n\t\t\t\t<p class=\"bx--modal-header__label bx--type-delta cds--modal-header__label cds--type-delta\" id=\"modal-title\">Tabular representation</p>\n\n\t\t\t\t<p class=\"bx--modal-header__heading bx--type-beta cds--modal-header__heading cds--type-beta\" id=\"modal-description\">" + options.title + "</p>\n\n\t\t\t\t<button class=\"bx--modal-close cds--modal-close\" type=\"button\" data-modal-close aria-label=\"close modal\" data-modal-primary-focus>\n\t\t\t\t\t<svg focusable=\"false\" preserveAspectRatio=\"xMidYMid meet\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" aria-label=\"Close\" width=\"20\" height=\"20\" viewBox=\"0 0 32 32\" role=\"img\" class=\"bx--modal-close__icon cds--modal-close__icon\">\n\t\t\t\t\t\t<path d=\"M24 9.4L22.6 8 16 14.6 9.4 8 8 9.4 14.6 16 8 22.6 9.4 24 16 17.4 22.6 24 24 22.6 17.4 16 24 9.4z\"></path>\n\t\t\t\t\t</svg>\n\t\t\t\t</button>\n\t\t\t</div>\n\n\t\t\t<div class=\"bx--modal-content cds--modal-content\">\n\t\t\t\t<table class=\"bx--data-table bx--data-table--no-border cds--data-table cds--data-table--no-border\">\n\t\t\t\t\t<thead>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t" + get(tableArray, 0)
56
+ .map(function (heading) { return "<th scope=\"col\">\n\t\t\t\t\t\t\t\t<div class=\"bx--table-header-label cds--table-header-label\">" + heading + "</div>\n\t\t\t\t\t\t\t</th>"; })
57
+ .join('') + "\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</thead>\n\n\t\t\t\t\t<tbody>" + tableArray
58
58
  .slice(1)
59
59
  .map(function (row) { return "\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t" + row.map(function (column) { return "<td>" + column + "</td>"; }).join('') + "\n\t\t\t\t\t\t\t</tr>"; })
60
- .join('') + "\n\t\t\t\t\t</tbody>\n\t\t\t\t</table>\n\t\t\t</div>\n\t\t\t<div class=\"bx--modal-footer\">\n\t\t\t <div class=\"" + settings.prefix + "--" + chartprefix + "-modal-footer-spacer\"></div>\n\t\t\t <button class=\"bx--btn bx--btn--primary\" type=\"button\" data-modal-primary-focus>Download as CSV</button>\n\t\t\t</div>\n\t\t</div>";
60
+ .join('') + "\n\t\t\t\t\t</tbody>\n\t\t\t\t</table>\n\t\t\t</div>\n\n\t\t\t<div class=\"bx--modal-footer cds--modal-footer\">\n\t\t\t <div class=\"" + settings.prefix + "--" + chartprefix + "-modal-footer-spacer\"></div>\n\t\t\t <button class=\"bx--btn bx--btn--primary cds--btn cds--btn--primary\" type=\"button\" data-modal-primary-focus>Download as CSV</button>\n\t\t\t</div>\n\t\t</div>";
61
61
  };
62
62
  Modal.prototype.render = function () {
63
63
  var options = this.model.getOptions();
@@ -70,7 +70,7 @@ var Modal = /** @class */ (function (_super) {
70
70
  this.isEventListenerAdded = true;
71
71
  this.modal
72
72
  .attr('data-modal', true)
73
- .attr('class', 'bx--modal')
73
+ .attr('class', 'bx--modal cds--modal')
74
74
  .attr('role', 'dialog')
75
75
  .attr('aria-modal', true)
76
76
  .attr('aria-labelledby', 'modal-title')
@@ -1 +1 @@
1
- {"version":3,"file":"modal.js","sourceRoot":"","sources":["modal.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component } from '../component';\nimport { Tools } from '../../tools';\nimport { DOMUtils } from '../../services';\nimport { ChartModel } from '../../model/model';\nimport { Events } from '../../interfaces';\n\n// Carbon modal\nimport { Modal as CarbonModalComponent } from 'carbon-components';\n\n// import the settings for the css prefix\nimport settings from 'carbon-components/es/globals/js/settings';\n\n// D3 Imports\nimport { select } from 'd3-selection';\n\nimport { get } from 'lodash-es';\n\nexport class Modal extends Component {\n\ttype = 'modal';\n\n\t// flag for checking whether tooltip event listener is added or not\n\tisEventListenerAdded = false;\n\tmodal: any;\n\n\tconstructor(model: ChartModel, services: any, configs?: any) {\n\t\tsuper(model, services, configs);\n\n\t\tthis.init();\n\t}\n\n\thandleShowModal = () => {\n\t\tthis.modal.html(this.getModalHTML());\n\t\tthis.modal\n\t\t\t.select('div.bx--modal-footer button.bx--btn')\n\t\t\t.on('click', () => this.model.exportToCSV());\n\n\t\tconst modalInstance = CarbonModalComponent.create(this.modal.node());\n\t\tmodalInstance.show();\n\t};\n\n\taddEventListeners() {\n\t\t// listen to show-modal Custom Events to render the modal\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Modal.SHOW,\n\t\t\tthis.handleShowModal\n\t\t);\n\t}\n\n\tremoveEventListeners() {\n\t\t// remove show-modal Custom Events\n\t\tthis.services.events.removeEventListener(\n\t\t\tEvents.Modal.SHOW,\n\t\t\tthis.handleShowModal\n\t\t);\n\t}\n\n\tgetModalHTML() {\n\t\tconst options = this.model.getOptions();\n\n\t\tconst chartprefix = Tools.getProperty(options, 'style', 'prefix');\n\n\t\tconst tableArray = this.model.getTabularDataArray();\n\n\t\treturn `\n\t\t<div class=\"bx--modal-container\">\n\t\t\t<div class=\"bx--modal-header\">\n\t\t\t\t<p class=\"bx--modal-header__label bx--type-delta\" id=\"modal-title\">Tabular representation</p>\n\t\t\t\t<p class=\"bx--modal-header__heading bx--type-beta\" id=\"modal-description\">${\n\t\t\t\t\toptions.title\n\t\t\t\t}</p>\n\t\t\t\t<button class=\"bx--modal-close\" type=\"button\" data-modal-close aria-label=\"close modal\" data-modal-primary-focus>\n\t\t\t\t\t<svg focusable=\"false\" preserveAspectRatio=\"xMidYMid meet\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" aria-label=\"Close\" width=\"20\" height=\"20\" viewBox=\"0 0 32 32\" role=\"img\" class=\"bx--modal-close__icon\">\n\t\t\t\t\t\t<path d=\"M24 9.4L22.6 8 16 14.6 9.4 8 8 9.4 14.6 16 8 22.6 9.4 24 16 17.4 22.6 24 24 22.6 17.4 16 24 9.4z\"></path>\n\t\t\t\t\t</svg>\n\t\t\t\t</button>\n\t\t\t</div>\n\t\t\t<div class=\"bx--modal-content\"><table class=\"bx--data-table bx--data-table--no-border\">\n\t\t\t\t\t<thead>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t${get(tableArray, 0)\n\t\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t\t(heading) => `<th scope=\"col\">\n\t\t\t\t\t\t\t\t<div class=\"bx--table-header-label\">${heading}</div>\n\t\t\t\t\t\t\t</th>`\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.join('')}\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</thead>\n\t\t\t\t\t<tbody>${tableArray\n\t\t\t\t\t\t.slice(1)\n\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t(row) => `\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t${row.map((column) => `<td>${column}</td>`).join('')}\n\t\t\t\t\t\t\t</tr>`\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.join('')}\n\t\t\t\t\t</tbody>\n\t\t\t\t</table>\n\t\t\t</div>\n\t\t\t<div class=\"bx--modal-footer\">\n\t\t\t <div class=\"${settings.prefix}--${chartprefix}-modal-footer-spacer\"></div>\n\t\t\t <button class=\"bx--btn bx--btn--primary\" type=\"button\" data-modal-primary-focus>Download as CSV</button>\n\t\t\t</div>\n\t\t</div>`;\n\t}\n\n\trender() {\n\t\tconst options = this.model.getOptions();\n\t\tif (!this.isEventListenerAdded) {\n\t\t\t// Grab the tooltip element\n\t\t\tconst holder = select(this.services.domUtils.getHolder());\n\t\t\tconst chartprefix = Tools.getProperty(options, 'style', 'prefix');\n\t\t\tthis.modal = DOMUtils.appendOrSelect(\n\t\t\t\tholder,\n\t\t\t\t`div.${settings.prefix}--${chartprefix}--modal`\n\t\t\t);\n\n\t\t\tthis.addEventListeners();\n\t\t\tthis.isEventListenerAdded = true;\n\t\t\tthis.modal\n\t\t\t\t.attr('data-modal', true)\n\t\t\t\t.attr('class', 'bx--modal')\n\t\t\t\t.attr('role', 'dialog')\n\t\t\t\t.attr('aria-modal', true)\n\t\t\t\t.attr('aria-labelledby', 'modal-title')\n\t\t\t\t.attr('aria-describedby', 'modal-description')\n\t\t\t\t.attr('tabindex', -1);\n\t\t}\n\t}\n\n\tdestroy() {\n\t\t// remove tooltip eventListener\n\t\tthis.removeEventListeners();\n\t\tthis.isEventListenerAdded = false;\n\t}\n}\n"]}
1
+ {"version":3,"file":"modal.js","sourceRoot":"","sources":["modal.ts"],"names":[],"mappings":"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","sourcesContent":["import { Component } from '../component';\nimport { Tools } from '../../tools';\nimport { DOMUtils } from '../../services';\nimport { ChartModel } from '../../model/model';\nimport { Events } from '../../interfaces';\n\n// Carbon modal\nimport { Modal as CarbonModalComponent } from 'carbon-components';\n\n// import the settings for the css prefix\nimport settings from 'carbon-components/es/globals/js/settings';\n\n// D3 Imports\nimport { select } from 'd3-selection';\n\nimport { get } from 'lodash-es';\n\nexport class Modal extends Component {\n\ttype = 'modal';\n\n\t// flag for checking whether tooltip event listener is added or not\n\tisEventListenerAdded = false;\n\tmodal: any;\n\n\tconstructor(model: ChartModel, services: any, configs?: any) {\n\t\tsuper(model, services, configs);\n\n\t\tthis.init();\n\t}\n\n\thandleShowModal = () => {\n\t\tthis.modal.html(this.getModalHTML());\n\t\tthis.modal\n\t\t\t.select('div.bx--modal-footer button.bx--btn')\n\t\t\t.on('click', () => this.model.exportToCSV());\n\n\t\tconst modalInstance = CarbonModalComponent.create(this.modal.node());\n\t\tmodalInstance.show();\n\t};\n\n\taddEventListeners() {\n\t\t// listen to show-modal Custom Events to render the modal\n\t\tthis.services.events.addEventListener(\n\t\t\tEvents.Modal.SHOW,\n\t\t\tthis.handleShowModal\n\t\t);\n\t}\n\n\tremoveEventListeners() {\n\t\t// remove show-modal Custom Events\n\t\tthis.services.events.removeEventListener(\n\t\t\tEvents.Modal.SHOW,\n\t\t\tthis.handleShowModal\n\t\t);\n\t}\n\n\tgetModalHTML() {\n\t\tconst options = this.model.getOptions();\n\n\t\tconst chartprefix = Tools.getProperty(options, 'style', 'prefix');\n\n\t\tconst tableArray = this.model.getTabularDataArray();\n\n\t\treturn `\n\t\t<div class=\"bx--modal-container cds--modal-container\">\n\t\t\t<div class=\"bx--modal-header cds--modal-header\">\n\t\t\t\t<p class=\"bx--modal-header__label bx--type-delta cds--modal-header__label cds--type-delta\" id=\"modal-title\">Tabular representation</p>\n\n\t\t\t\t<p class=\"bx--modal-header__heading bx--type-beta cds--modal-header__heading cds--type-beta\" id=\"modal-description\">${\n\t\t\t\t\toptions.title\n\t\t\t\t}</p>\n\n\t\t\t\t<button class=\"bx--modal-close cds--modal-close\" type=\"button\" data-modal-close aria-label=\"close modal\" data-modal-primary-focus>\n\t\t\t\t\t<svg focusable=\"false\" preserveAspectRatio=\"xMidYMid meet\" xmlns=\"http://www.w3.org/2000/svg\" fill=\"currentColor\" aria-label=\"Close\" width=\"20\" height=\"20\" viewBox=\"0 0 32 32\" role=\"img\" class=\"bx--modal-close__icon cds--modal-close__icon\">\n\t\t\t\t\t\t<path d=\"M24 9.4L22.6 8 16 14.6 9.4 8 8 9.4 14.6 16 8 22.6 9.4 24 16 17.4 22.6 24 24 22.6 17.4 16 24 9.4z\"></path>\n\t\t\t\t\t</svg>\n\t\t\t\t</button>\n\t\t\t</div>\n\n\t\t\t<div class=\"bx--modal-content cds--modal-content\">\n\t\t\t\t<table class=\"bx--data-table bx--data-table--no-border cds--data-table cds--data-table--no-border\">\n\t\t\t\t\t<thead>\n\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t${get(tableArray, 0)\n\t\t\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t\t\t(heading) => `<th scope=\"col\">\n\t\t\t\t\t\t\t\t<div class=\"bx--table-header-label cds--table-header-label\">${heading}</div>\n\t\t\t\t\t\t\t</th>`\n\t\t\t\t\t\t\t\t)\n\t\t\t\t\t\t\t\t.join('')}\n\t\t\t\t\t\t</tr>\n\t\t\t\t\t</thead>\n\n\t\t\t\t\t<tbody>${tableArray\n\t\t\t\t\t\t.slice(1)\n\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t(row) => `\n\t\t\t\t\t\t\t<tr>\n\t\t\t\t\t\t\t\t${row.map((column) => `<td>${column}</td>`).join('')}\n\t\t\t\t\t\t\t</tr>`\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.join('')}\n\t\t\t\t\t</tbody>\n\t\t\t\t</table>\n\t\t\t</div>\n\n\t\t\t<div class=\"bx--modal-footer cds--modal-footer\">\n\t\t\t <div class=\"${settings.prefix}--${chartprefix}-modal-footer-spacer\"></div>\n\t\t\t <button class=\"bx--btn bx--btn--primary cds--btn cds--btn--primary\" type=\"button\" data-modal-primary-focus>Download as CSV</button>\n\t\t\t</div>\n\t\t</div>`;\n\t}\n\n\trender() {\n\t\tconst options = this.model.getOptions();\n\t\tif (!this.isEventListenerAdded) {\n\t\t\t// Grab the tooltip element\n\t\t\tconst holder = select(this.services.domUtils.getHolder());\n\t\t\tconst chartprefix = Tools.getProperty(options, 'style', 'prefix');\n\t\t\tthis.modal = DOMUtils.appendOrSelect(\n\t\t\t\tholder,\n\t\t\t\t`div.${settings.prefix}--${chartprefix}--modal`\n\t\t\t);\n\n\t\t\tthis.addEventListeners();\n\t\t\tthis.isEventListenerAdded = true;\n\t\t\tthis.modal\n\t\t\t\t.attr('data-modal', true)\n\t\t\t\t.attr('class', 'bx--modal cds--modal')\n\t\t\t\t.attr('role', 'dialog')\n\t\t\t\t.attr('aria-modal', true)\n\t\t\t\t.attr('aria-labelledby', 'modal-title')\n\t\t\t\t.attr('aria-describedby', 'modal-description')\n\t\t\t\t.attr('tabindex', -1);\n\t\t}\n\t}\n\n\tdestroy() {\n\t\t// remove tooltip eventListener\n\t\tthis.removeEventListeners();\n\t\tthis.isEventListenerAdded = false;\n\t}\n}\n"]}
@@ -16,10 +16,10 @@ import { Component } from '../component';
16
16
  import { DOMUtils } from '../../services';
17
17
  import { Tools } from '../../tools';
18
18
  import * as Configuration from '../../configuration';
19
- import { Events, ColorClassNameTypes, RenderTypes } from '../../interfaces';
19
+ import { Events, ColorClassNameTypes, RenderTypes, Alignments, } from '../../interfaces';
20
20
  // D3 imports
21
21
  import { select } from 'd3-selection';
22
- import { sankey as d3Sankey, sankeyLinkHorizontal } from 'd3-sankey';
22
+ import { sankey as d3Sankey, sankeyLinkHorizontal, sankeyLeft, sankeyRight, sankeyJustify, } from 'd3-sankey';
23
23
  var Alluvial = /** @class */ (function (_super) {
24
24
  __extends(Alluvial, _super);
25
25
  function Alluvial() {
@@ -53,11 +53,21 @@ var Alluvial = /** @class */ (function (_super) {
53
53
  if (options.alluvial.nodePadding > Configuration.alluvial.minNodePadding) {
54
54
  nodePadding = options.alluvial.nodePadding;
55
55
  }
56
+ var alignment = Tools.getProperty(options, 'alluvial', 'nodeAlignment');
57
+ var nodeAlignment = sankeyJustify;
58
+ if (alignment === Alignments.LEFT) {
59
+ nodeAlignment = sankeyLeft;
60
+ }
61
+ else if (alignment === Alignments.RIGHT) {
62
+ nodeAlignment = sankeyRight;
63
+ }
56
64
  var sankey = d3Sankey()
57
65
  .nodeId(function (d) { return d.name; })
58
66
  .nodeWidth(Configuration.alluvial.nodeWidth)
59
67
  // Distance nodes are apart from each other
60
68
  .nodePadding(nodePadding)
69
+ // Alignment of nodes within chart
70
+ .nodeAlign(nodeAlignment)
61
71
  // Size of the chart and its padding
62
72
  // Chart starts at 2 and ends at width - 2 so the outer nodes can expand from center
63
73
  // Chart starts from 30 so node categories can be displayed
@@ -1 +1 @@
1
- {"version":3,"file":"alluvial.js","sourceRoot":"","sources":["alluvial.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal imports\nimport { Component } from '../component';\nimport { DOMUtils } from '../../services';\nimport { Tools } from '../../tools';\nimport * as Configuration from '../../configuration';\nimport { Events, ColorClassNameTypes, RenderTypes } from '../../interfaces';\n\n// D3 imports\nimport { select } from 'd3-selection';\nimport { sankey as d3Sankey, sankeyLinkHorizontal } from 'd3-sankey';\n\nexport class Alluvial extends Component {\n\ttype = 'alluvial';\n\trenderType = RenderTypes.SVG;\n\n\tprivate graph: any;\n\tgradient_id = 'gradient-id-' + Math.floor(Math.random() * 99999999999);\n\n\trender(animate = true) {\n\t\t// svg and container widths\n\t\tconst svg = this.getComponentContainer({ withinChartClip: true });\n\t\tsvg.html('');\n\n\t\tconst { width, height } = DOMUtils.getSVGElementSize(svg, {\n\t\t\tuseAttrs: true,\n\t\t});\n\n\t\t// Because of a Firefox bug with regards to sizing & d3 packs,\n\t\t// rather than checking if height or width aren't 0,\n\t\t// we have to make sure they're not smaller than 1\n\t\tif (width < 1 || height < 1) {\n\t\t\treturn;\n\t\t}\n\t\tconst options = this.model.getOptions();\n\t\tconst data = this.model.getDisplayData();\n\n\t\t// Is gradient enabled or not\n\t\tconst isGradientAllowed = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'color',\n\t\t\t'gradient',\n\t\t\t'enabled'\n\t\t);\n\n\t\t// Set the custom node padding if provided\n\t\tlet nodePadding = Configuration.alluvial.minNodePadding;\n\t\tif (\n\t\t\toptions.alluvial.nodePadding > Configuration.alluvial.minNodePadding\n\t\t) {\n\t\t\tnodePadding = options.alluvial.nodePadding;\n\t\t}\n\n\t\tconst sankey = d3Sankey()\n\t\t\t.nodeId((d) => d.name)\n\t\t\t.nodeWidth(Configuration.alluvial.nodeWidth)\n\t\t\t// Distance nodes are apart from each other\n\t\t\t.nodePadding(nodePadding)\n\t\t\t// Size of the chart and its padding\n\t\t\t// Chart starts at 2 and ends at width - 2 so the outer nodes can expand from center\n\t\t\t// Chart starts from 30 so node categories can be displayed\n\t\t\t.extent([\n\t\t\t\t[2, 30],\n\t\t\t\t[width - 2, height],\n\t\t\t]);\n\n\t\t// Construct a graph with the provided user data\n\t\t// Data must be deep cloned to ensure user passed data isn't deleted when themes change\n\t\tthis.graph = sankey({\n\t\t\tnodes: options.alluvial.nodes.map((d) => Object.assign({}, d)),\n\t\t\tlinks: data.map((d) => Object.assign({}, d)),\n\t\t});\n\n\t\t// Filter out unused nodes so they are not rendered\n\t\tthis.graph.nodes = this.graph.nodes.filter((node) => node.value !== 0);\n\n\t\t// Determine the category name placement x position\n\t\tconst nodeCoordinates = {};\n\t\tthis.graph.nodes.forEach((element) => {\n\t\t\tconst point = element.x0;\n\n\t\t\t// Only 1 category per x-value\n\t\t\tif (element.category) {\n\t\t\t\tnodeCoordinates[point] = element?.category;\n\t\t\t}\n\t\t});\n\n\t\t// Add node category text\n\t\tconst alluvialCategory = svg\n\t\t\t.append('g')\n\t\t\t.classed('header-arrows', true)\n\t\t\t.selectAll('g')\n\t\t\t.data(Object.keys(nodeCoordinates))\n\t\t\t.join('g')\n\t\t\t.attr('transform', (d) => {\n\t\t\t\treturn `translate(${d}, 0)`;\n\t\t\t});\n\n\t\t// Add the category text\n\t\talluvialCategory\n\t\t\t.append('text')\n\t\t\t.attr('id', (d, i) =>\n\t\t\t\tthis.services.domUtils.generateElementIDString(\n\t\t\t\t\t`alluvial-category-${i}`\n\t\t\t\t)\n\t\t\t)\n\t\t\t.style('font-size', '14px')\n\t\t\t.text((d) => {\n\t\t\t\tif (nodeCoordinates[d]) {\n\t\t\t\t\treturn nodeCoordinates[d];\n\t\t\t\t}\n\t\t\t\treturn '';\n\t\t\t})\n\t\t\t.attr('y', 20)\n\t\t\t.attr('x', (d, i) => {\n\t\t\t\tconst elementID = this.services.domUtils.generateElementIDString(\n\t\t\t\t\t`alluvial-category-${i}`\n\t\t\t\t);\n\n\t\t\t\tconst { width } = DOMUtils.getSVGElementSize(\n\t\t\t\t\tselect(`text#${elementID}`),\n\t\t\t\t\t{ useBBox: true }\n\t\t\t\t);\n\n\t\t\t\t// Make the text on the left on node group (except first column)\n\t\t\t\tlet x = 0;\n\t\t\t\tif (d + x >= width) {\n\t\t\t\t\tx = -width + 4;\n\t\t\t\t}\n\t\t\t\treturn x;\n\t\t\t});\n\n\t\t// Draws the links (Waves)\n\t\tconst links = svg\n\t\t\t.append('g')\n\t\t\t.attr('fill', 'none')\n\t\t\t.selectAll('g')\n\t\t\t.data(this.graph.links);\n\n\t\t// Exit so we can have multiple appends in group\n\t\tlinks.exit().remove();\n\n\t\t// Add gradient if requsted\n\t\tif (isGradientAllowed) {\n\t\t\tconst scale = Tools.getProperty(\n\t\t\t\tthis.getOptions(),\n\t\t\t\t'color',\n\t\t\t\t'scale'\n\t\t\t);\n\n\t\t\tif (scale) {\n\t\t\t\tlinks\n\t\t\t\t\t.enter()\n\t\t\t\t\t.append('linearGradient')\n\t\t\t\t\t.attr('id', (d) => `${this.gradient_id}-link-${d.index}`)\n\t\t\t\t\t.attr('gradientUnits', 'userSpaceOnUse')\n\t\t\t\t\t.call((gradient) =>\n\t\t\t\t\t\tgradient\n\t\t\t\t\t\t\t.append('stop')\n\t\t\t\t\t\t\t.attr('offset', '0%')\n\t\t\t\t\t\t\t.attr('stop-color', (d) => {\n\t\t\t\t\t\t\t\treturn scale[d.source.name];\n\t\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t\t.call((gradient) =>\n\t\t\t\t\t\tgradient\n\t\t\t\t\t\t\t.append('stop')\n\t\t\t\t\t\t\t.attr('offset', '100%')\n\t\t\t\t\t\t\t.attr('stop-color', (d) => {\n\t\t\t\t\t\t\t\treturn scale[d.target.name];\n\t\t\t\t\t\t\t})\n\t\t\t\t\t);\n\t\t\t}\n\t\t\t// Exit so path can be appended to the group\n\t\t\tlinks.exit().remove();\n\t\t}\n\n\t\tlinks\n\t\t\t.enter()\n\t\t\t.append('path')\n\t\t\t.classed('link', true)\n\t\t\t.attr('d', sankeyLinkHorizontal())\n\t\t\t.attr('id', (d) =>\n\t\t\t\tthis.services.domUtils.generateElementIDString(\n\t\t\t\t\t`alluvial-line-${d.index}`\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('class', (d) => {\n\t\t\t\t// Use a single color for the lines\n\t\t\t\tif (options.alluvial.monochrome) {\n\t\t\t\t\treturn this.model.getColorClassName({\n\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.STROKE],\n\t\t\t\t\t\tdataGroupName: 0,\n\t\t\t\t\t\toriginalClassName: 'link',\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn this.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.STROKE],\n\t\t\t\t\tdataGroupName: d.source.index,\n\t\t\t\t\toriginalClassName: 'link',\n\t\t\t\t});\n\t\t\t})\n\t\t\t.style('stroke', (d) => {\n\t\t\t\tif (isGradientAllowed) {\n\t\t\t\t\treturn `url(#${this.gradient_id}-link-${d.index})`;\n\t\t\t\t}\n\n\t\t\t\treturn this.model.getFillColor(d.source.name);\n\t\t\t})\n\t\t\t.attr('stroke-width', (d) => Math.max(1, d.width))\n\t\t\t.style('stroke-opacity', Configuration.alluvial.opacity.default)\n\t\t\t.attr(\n\t\t\t\t'aria-label',\n\t\t\t\t(d) =>\n\t\t\t\t\t`${d.source.name} → ${d.target.name} (${d.value}${\n\t\t\t\t\t\toptions.alluvial.units\n\t\t\t\t\t\t\t? ' ' + options.alluvial.units\n\t\t\t\t\t\t\t: ''\n\t\t\t\t\t})`\n\t\t\t);\n\n\t\t// Creating the groups\n\t\tconst node = svg\n\t\t\t.append('g')\n\t\t\t.selectAll('g')\n\t\t\t.data(this.graph.nodes)\n\t\t\t.enter()\n\t\t\t.append('g')\n\t\t\t.attr('id', (d) =>\n\t\t\t\tthis.services.domUtils.generateElementIDString(\n\t\t\t\t\t`alluvial-node-${d.index}`\n\t\t\t\t)\n\t\t\t)\n\t\t\t.classed('node-group', true)\n\t\t\t.attr('transform', (d) => `translate(${d.x0}, ${d.y0})`);\n\n\t\t// Creating the nodes\n\t\tnode.append('rect')\n\t\t\t.classed('node', true)\n\t\t\t.attr('height', (d) => d.y1 - d.y0)\n\t\t\t.attr('width', (d) => d.x1 - d.x0)\n\t\t\t.attr('fill', 'black');\n\n\t\t// Group to hold the text & rectangle background\n\t\tconst textNode = node\n\t\t\t.append('g')\n\t\t\t.attr('id', (d) =>\n\t\t\t\tthis.services.domUtils.generateElementIDString(\n\t\t\t\t\t`alluvial-node-title-${d.index}`\n\t\t\t\t)\n\t\t\t);\n\n\t\t// Node title - text\n\t\ttextNode\n\t\t\t.append('text')\n\t\t\t.attr('id', (d) =>\n\t\t\t\tthis.services.domUtils.generateElementIDString(\n\t\t\t\t\t`alluvial-node-text-${d.index}`\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('class', 'node-text')\n\t\t\t.style('font-size', '12px')\n\t\t\t.attr('text-anchor', 'start')\n\t\t\t.attr('fill', 'white')\n\t\t\t// Padding to text\n\t\t\t.attr('x', 4)\n\t\t\t// shift 13 pixels down to fit background container\n\t\t\t.attr('dy', 13)\n\t\t\t.text((d) => {\n\t\t\t\treturn `${d.name} (${d.value})`;\n\t\t\t})\n\t\t\t.attr('aria-label', (d) => {\n\t\t\t\treturn `${d.name} (${d.value})`;\n\t\t\t});\n\n\t\t// Text background\n\t\ttextNode\n\t\t\t.append('rect')\n\t\t\t.classed('node-text-bg', true)\n\t\t\t.attr('width', (d, i) => {\n\t\t\t\tconst elementID = this.services.domUtils.generateElementIDString(\n\t\t\t\t\t`alluvial-node-text-${i}`\n\t\t\t\t);\n\n\t\t\t\t// Determine rectangle width based on text width\n\t\t\t\tconst { width } = DOMUtils.getSVGElementSize(\n\t\t\t\t\tselect(`text#${elementID}`),\n\t\t\t\t\t{ useBBox: true }\n\t\t\t\t);\n\n\t\t\t\treturn width + 8;\n\t\t\t})\n\t\t\t.attr('height', 18)\n\t\t\t.attr('stroke-width', 2)\n\t\t\t.lower();\n\n\t\t// Position group based on text width\n\t\ttextNode.attr('transform', (d, i) => {\n\t\t\tconst elementID = this.services.domUtils.generateElementIDString(\n\t\t\t\t`alluvial-node-text-${i}`\n\t\t\t);\n\n\t\t\tconst { width } = DOMUtils.getSVGElementSize(\n\t\t\t\tselect(`text#${elementID}`),\n\t\t\t\t{ useBBox: true }\n\t\t\t);\n\n\t\t\t// Subtracting 9 since text background is 18 to center\n\t\t\tconst y = (d.y1 - d.y0) / 2 - 9;\n\t\t\t// Node width\n\t\t\tlet x = d.x1 - d.x0;\n\n\t\t\t// Display bars on the right instead of left of the node\n\t\t\tif (d.x1 >= width) {\n\t\t\t\t// 16 = node width (4) + text container padding (8) + distance between node and text container (4)\n\t\t\t\tx = x - (width + 16);\n\t\t\t} else {\n\t\t\t\t// Add padding to text containers\n\t\t\t\tx += 4;\n\t\t\t}\n\n\t\t\treturn `translate(${x}, ${y})`;\n\t\t});\n\n\t\tthis.addLineEventListener();\n\t\tthis.addNodeEventListener();\n\t}\n\n\taddLineEventListener() {\n\t\tconst options = this.getOptions();\n\t\tconst self = this;\n\n\t\t// Set delay to counter flashy behaviour\n\t\tconst debouncedLineHighlight = Tools.debounce(\n\t\t\t(link, event = 'mouseover') => {\n\t\t\t\tconst allLinks = self.parent\n\t\t\t\t\t.selectAll('path.link')\n\t\t\t\t\t.transition()\n\t\t\t\t\t.call((t) =>\n\t\t\t\t\t\tself.services.transitions.setupTransition({\n\t\t\t\t\t\t\ttransition: t,\n\t\t\t\t\t\t\tname: 'alluvial-links-mouse-highlight',\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\n\t\t\t\tif (event === 'mouseout') {\n\t\t\t\t\tselect(link).lower();\n\t\t\t\t\tallLinks.style(\n\t\t\t\t\t\t'stroke-opacity',\n\t\t\t\t\t\tConfiguration.alluvial.opacity.default\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tallLinks.style('stroke-opacity', function () {\n\t\t\t\t\t\t// highlight and raise if link is this\n\t\t\t\t\t\tif (link === this) {\n\t\t\t\t\t\t\tselect(this).raise();\n\t\t\t\t\t\t\treturn Configuration.alluvial.opacity.selected;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn Configuration.alluvial.opacity.unfocus;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\t33\n\t\t);\n\n\t\tthis.parent\n\t\t\t.selectAll('path.link')\n\t\t\t.on('mouseover', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\tdebouncedLineHighlight(this, 'mouseover');\n\t\t\t\thoveredElement.classed('link-hovered', true);\n\n\t\t\t\tconst strokeColor = getComputedStyle(this).getPropertyValue(\n\t\t\t\t\t'stroke'\n\t\t\t\t);\n\n\t\t\t\t// Dispatch mouse over event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Alluvial.LINE_MOUSEOVER,\n\t\t\t\t\t{\n\t\t\t\t\t\tevent,\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// Dispatch tooltip show event\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\tevent,\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: datum.target.name,\n\t\t\t\t\t\t\tvalue:\n\t\t\t\t\t\t\t\tdatum.value +\n\t\t\t\t\t\t\t\t(options.alluvial.units\n\t\t\t\t\t\t\t\t\t? ` ${options.alluvial.units}`\n\t\t\t\t\t\t\t\t\t: ''),\n\t\t\t\t\t\t\tcolor: strokeColor,\n\t\t\t\t\t\t\tlabelIcon: self.getRightArrowIcon(),\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 (event, datum) {\n\t\t\t\t// Dispatch mouse move event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Alluvial.LINE_MOUSEMOVE,\n\t\t\t\t\t{\n\t\t\t\t\t\tevent,\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\t// Dispatch tooltip move event\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.MOVE, {\n\t\t\t\t\tevent,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('click', function (event, datum) {\n\t\t\t\t// Dispatch mouse click event\n\t\t\t\tself.services.events.dispatchEvent(Events.Alluvial.LINE_CLICK, {\n\t\t\t\t\tevent,\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 (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\tdebouncedLineHighlight(this, 'mouseout');\n\t\t\t\thoveredElement.classed('link-hovered', false);\n\n\t\t\t\t// Dispatch mouse out event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Alluvial.LINE_MOUSEOUT,\n\t\t\t\t\t{\n\t\t\t\t\t\tevent,\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// Dispatch hide tooltip event\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.HIDE, {\n\t\t\t\t\tevent,\n\t\t\t\t\thoveredElement,\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\taddNodeEventListener() {\n\t\tconst self = this;\n\n\t\t// Set delay to counter flashy behaviour\n\t\tconst debouncedLineHighlight = Tools.debounce(\n\t\t\t(links = [], event = 'mouseover') => {\n\t\t\t\tif (event === 'mouseout' || links.length === 0) {\n\t\t\t\t\t// set all links to default opacity & corret link order\n\t\t\t\t\tself.parent\n\t\t\t\t\t\t.selectAll('path.link')\n\t\t\t\t\t\t.classed('link-hovered', false)\n\t\t\t\t\t\t.data(this.graph.links, (d) => d.index)\n\t\t\t\t\t\t.order()\n\t\t\t\t\t\t.style(\n\t\t\t\t\t\t\t'stroke-opacity',\n\t\t\t\t\t\t\tConfiguration.alluvial.opacity.default\n\t\t\t\t\t\t);\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Highlight all nodes\n\t\t\t\tconst allLinks = self.parent\n\t\t\t\t\t.selectAll('path.link')\n\t\t\t\t\t.transition()\n\t\t\t\t\t.call((t) =>\n\t\t\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\t\t\ttransition: t,\n\t\t\t\t\t\t\tname: 'alluvial-link-mouse-highlight',\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\n\t\t\t\tallLinks.style('stroke-opacity', function (d) {\n\t\t\t\t\t// Raise the links & increase stroke-opacity to selected\n\t\t\t\t\tif (links.some((element) => element === d.index)) {\n\t\t\t\t\t\tselect(this).classed('link-hovered', true).raise();\n\t\t\t\t\t\treturn Configuration.alluvial.opacity.selected;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Configuration.alluvial.opacity.unfocus;\n\t\t\t\t});\n\t\t\t},\n\t\t\t66\n\t\t);\n\n\t\tself.parent\n\t\t\t.selectAll('.node-group')\n\t\t\t.on('mouseover', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Highlight all links that pass through node\n\t\t\t\tconst paths = [];\n\n\t\t\t\t// Outgoing links\n\t\t\t\tself.traverse(\n\t\t\t\t\t{ link: 'sourceLinks', node: 'target' },\n\t\t\t\t\tdatum,\n\t\t\t\t\tpaths\n\t\t\t\t);\n\n\t\t\t\t//Incoming links\n\t\t\t\tself.traverse(\n\t\t\t\t\t{ link: 'targetLinks', node: 'source' },\n\t\t\t\t\tdatum,\n\t\t\t\t\tpaths\n\t\t\t\t);\n\n\t\t\t\t// Highlight all linked lines in the graph data structure\n\t\t\t\tif (paths.length) {\n\t\t\t\t\t// Get transformation value of node\n\t\t\t\t\tconst nodeMatrix = Tools.getTranformOffsets(\n\t\t\t\t\t\thoveredElement.attr('transform')\n\t\t\t\t\t);\n\n\t\t\t\t\t// Move node to the left by 2 to grow node from the center\n\t\t\t\t\thoveredElement.attr(\n\t\t\t\t\t\t'transform',\n\t\t\t\t\t\t`translate(${nodeMatrix.x - 2}, ${nodeMatrix.y})`\n\t\t\t\t\t);\n\n\t\t\t\t\thoveredElement\n\t\t\t\t\t\t.classed('node-hovered', true)\n\t\t\t\t\t\t.selectAll('rect.node')\n\t\t\t\t\t\t.attr('width', 8);\n\n\t\t\t\t\t// Translate first column text container to the\n\t\t\t\t\t// right so it doesn't clash with expanding node\n\t\t\t\t\tif (datum.x0 - 2 === 0) {\n\t\t\t\t\t\tconst elementID = self.services.domUtils.generateElementIDString(\n\t\t\t\t\t\t\t`alluvial-node-title-${datum.index}`\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tconst titleContainer = self.parent.select(\n\t\t\t\t\t\t\t`g#${elementID}`\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst titleMatrix = Tools.getTranformOffsets(\n\t\t\t\t\t\t\ttitleContainer.attr('transform')\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\ttitleContainer.attr(\n\t\t\t\t\t\t\t'transform',\n\t\t\t\t\t\t\t`translate(${titleMatrix.x + 4},${titleMatrix.y})`\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst elementID = self.services.domUtils.generateElementIDString(\n\t\t\t\t\t\t`alluvial-node-text-${datum.index}`\n\t\t\t\t\t);\n\n\t\t\t\t\tself.parent\n\t\t\t\t\t\t.select(`text#${elementID}`)\n\t\t\t\t\t\t.style('font-weight', 'bold');\n\n\t\t\t\t\tdebouncedLineHighlight(paths, 'mouseover');\n\n\t\t\t\t\t// Dispatch mouse over event\n\t\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\t\tEvents.Alluvial.NODE_MOUSEOVER,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\t\tdatum,\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 (event, datum) {\n\t\t\t\t// Dispatch mouse move event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Alluvial.NODE_MOUSEMOVE,\n\t\t\t\t\t{\n\t\t\t\t\t\tevent,\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// Dispatch tooltip move event\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.MOVE, {\n\t\t\t\t\tevent,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('click', function (event, datum) {\n\t\t\t\t// Dispatch mouse click event\n\t\t\t\tself.services.events.dispatchEvent(Events.Alluvial.NODE_CLICK, {\n\t\t\t\t\tevent,\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 (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Set the node position to initial state (unexpanded)\n\t\t\t\tconst nodeMatrix = Tools.getTranformOffsets(\n\t\t\t\t\thoveredElement.attr('transform')\n\t\t\t\t);\n\n\t\t\t\thoveredElement\n\t\t\t\t\t.classed('node-hovered', false)\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'transform',\n\t\t\t\t\t\t`translate(${nodeMatrix.x + 2}, ${nodeMatrix.y})`\n\t\t\t\t\t)\n\t\t\t\t\t.select('rect.node')\n\t\t\t\t\t.attr('width', Configuration.alluvial.nodeWidth);\n\n\t\t\t\t// Translate text container back to initial state\n\t\t\t\tif (datum.x0 - 2 === 0) {\n\t\t\t\t\tconst elementID = self.services.domUtils.generateElementIDString(\n\t\t\t\t\t\t`alluvial-node-title-${datum.index}`\n\t\t\t\t\t);\n\n\t\t\t\t\tconst titleContainer = self.parent.select(`g#${elementID}`);\n\t\t\t\t\tconst titleMatrix = Tools.getTranformOffsets(\n\t\t\t\t\t\ttitleContainer.attr('transform')\n\t\t\t\t\t);\n\n\t\t\t\t\ttitleContainer.attr(\n\t\t\t\t\t\t'transform',\n\t\t\t\t\t\t`translate(${titleMatrix.x - 4},${titleMatrix.y})`\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst elementID = self.services.domUtils.generateElementIDString(\n\t\t\t\t\t`alluvial-node-text-${datum.index}`\n\t\t\t\t);\n\n\t\t\t\tself.parent\n\t\t\t\t\t.select(`text#${elementID}`)\n\t\t\t\t\t.style('font-weight', 'normal');\n\n\t\t\t\tdebouncedLineHighlight([], 'mouseout');\n\n\t\t\t\t// Dispatch mouse out event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Alluvial.NODE_MOUSEOUT,\n\t\t\t\t\t{\n\t\t\t\t\t\tevent,\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// Dispatch hide tooltip event\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\t// Traverse graph and get all connected links to node\n\tprivate traverse(\n\t\tdirection:\n\t\t\t| { link: 'sourceLinks'; node: 'target' }\n\t\t\t| { link: 'targetLinks'; node: 'source' },\n\t\tnode,\n\t\tvisited = []\n\t) {\n\t\tconst links = node[direction.link].map((element) => {\n\t\t\tvisited.push(element.index);\n\t\t\treturn element[direction.node];\n\t\t});\n\n\t\t// Retrieve the child nodes\n\t\tlinks.forEach((element) => this.traverse(direction, element, visited));\n\t}\n\n\tgetRightArrowIcon() {\n\t\treturn `\n\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" viewBox=\"0 0 32 32\">\n\t\t\t<polygon points=\"18 6 16.57 7.393 24.15 15 4 15 4 17 24.15 17 16.57 24.573 18 26 28 16 18 6\"/>\n\t\t\t<rect data-name=\"&lt;Transparent Rectangle&gt;\" style=\"fill: none;\" width=\"32\" height=\"32\"/>\n\t\t</svg>`;\n\t}\n\n\t// Remove event listeners\n\tdestroy() {\n\t\tthis.parent\n\t\t\t.selectAll('path.line,.node-group')\n\t\t\t.on('mouseover', null)\n\t\t\t.on('mousemove', null)\n\t\t\t.on('click', null)\n\t\t\t.on('mouseout', null);\n\t}\n}\n"]}
1
+ {"version":3,"file":"alluvial.js","sourceRoot":"","sources":["alluvial.ts"],"names":[],"mappings":"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","sourcesContent":["// Internal imports\nimport { Component } from '../component';\nimport { DOMUtils } from '../../services';\nimport { Tools } from '../../tools';\nimport * as Configuration from '../../configuration';\nimport {\n\tEvents,\n\tColorClassNameTypes,\n\tRenderTypes,\n\tAlignments,\n} from '../../interfaces';\n\n// D3 imports\nimport { select } from 'd3-selection';\nimport {\n\tsankey as d3Sankey,\n\tsankeyLinkHorizontal,\n\tsankeyLeft,\n\tsankeyRight,\n\tsankeyJustify,\n} from 'd3-sankey';\n\nexport class Alluvial extends Component {\n\ttype = 'alluvial';\n\trenderType = RenderTypes.SVG;\n\n\tprivate graph: any;\n\tgradient_id = 'gradient-id-' + Math.floor(Math.random() * 99999999999);\n\n\trender(animate = true) {\n\t\t// svg and container widths\n\t\tconst svg = this.getComponentContainer({ withinChartClip: true });\n\t\tsvg.html('');\n\n\t\tconst { width, height } = DOMUtils.getSVGElementSize(svg, {\n\t\t\tuseAttrs: true,\n\t\t});\n\n\t\t// Because of a Firefox bug with regards to sizing & d3 packs,\n\t\t// rather than checking if height or width aren't 0,\n\t\t// we have to make sure they're not smaller than 1\n\t\tif (width < 1 || height < 1) {\n\t\t\treturn;\n\t\t}\n\t\tconst options = this.model.getOptions();\n\t\tconst data = this.model.getDisplayData();\n\n\t\t// Is gradient enabled or not\n\t\tconst isGradientAllowed = Tools.getProperty(\n\t\t\tthis.getOptions(),\n\t\t\t'color',\n\t\t\t'gradient',\n\t\t\t'enabled'\n\t\t);\n\n\t\t// Set the custom node padding if provided\n\t\tlet nodePadding = Configuration.alluvial.minNodePadding;\n\t\tif (\n\t\t\toptions.alluvial.nodePadding > Configuration.alluvial.minNodePadding\n\t\t) {\n\t\t\tnodePadding = options.alluvial.nodePadding;\n\t\t}\n\n\t\tconst alignment = Tools.getProperty(\n\t\t\toptions,\n\t\t\t'alluvial',\n\t\t\t'nodeAlignment'\n\t\t);\n\n\t\tlet nodeAlignment = sankeyJustify;\n\n\t\tif (alignment === Alignments.LEFT) {\n\t\t\tnodeAlignment = sankeyLeft;\n\t\t} else if (alignment === Alignments.RIGHT) {\n\t\t\tnodeAlignment = sankeyRight;\n\t\t}\n\n\t\tconst sankey = d3Sankey()\n\t\t\t.nodeId((d) => d.name)\n\t\t\t.nodeWidth(Configuration.alluvial.nodeWidth)\n\t\t\t// Distance nodes are apart from each other\n\t\t\t.nodePadding(nodePadding)\n\t\t\t// Alignment of nodes within chart\n\t\t\t.nodeAlign(nodeAlignment)\n\t\t\t// Size of the chart and its padding\n\t\t\t// Chart starts at 2 and ends at width - 2 so the outer nodes can expand from center\n\t\t\t// Chart starts from 30 so node categories can be displayed\n\t\t\t.extent([\n\t\t\t\t[2, 30],\n\t\t\t\t[width - 2, height],\n\t\t\t]);\n\n\t\t// Construct a graph with the provided user data\n\t\t// Data must be deep cloned to ensure user passed data isn't deleted when themes change\n\t\tthis.graph = sankey({\n\t\t\tnodes: options.alluvial.nodes.map((d) => Object.assign({}, d)),\n\t\t\tlinks: data.map((d) => Object.assign({}, d)),\n\t\t});\n\n\t\t// Filter out unused nodes so they are not rendered\n\t\tthis.graph.nodes = this.graph.nodes.filter((node) => node.value !== 0);\n\n\t\t// Determine the category name placement x position\n\t\tconst nodeCoordinates = {};\n\t\tthis.graph.nodes.forEach((element) => {\n\t\t\tconst point = element.x0;\n\n\t\t\t// Only 1 category per x-value\n\t\t\tif (element.category) {\n\t\t\t\tnodeCoordinates[point] = element?.category;\n\t\t\t}\n\t\t});\n\n\t\t// Add node category text\n\t\tconst alluvialCategory = svg\n\t\t\t.append('g')\n\t\t\t.classed('header-arrows', true)\n\t\t\t.selectAll('g')\n\t\t\t.data(Object.keys(nodeCoordinates))\n\t\t\t.join('g')\n\t\t\t.attr('transform', (d) => {\n\t\t\t\treturn `translate(${d}, 0)`;\n\t\t\t});\n\n\t\t// Add the category text\n\t\talluvialCategory\n\t\t\t.append('text')\n\t\t\t.attr('id', (d, i) =>\n\t\t\t\tthis.services.domUtils.generateElementIDString(\n\t\t\t\t\t`alluvial-category-${i}`\n\t\t\t\t)\n\t\t\t)\n\t\t\t.style('font-size', '14px')\n\t\t\t.text((d) => {\n\t\t\t\tif (nodeCoordinates[d]) {\n\t\t\t\t\treturn nodeCoordinates[d];\n\t\t\t\t}\n\t\t\t\treturn '';\n\t\t\t})\n\t\t\t.attr('y', 20)\n\t\t\t.attr('x', (d, i) => {\n\t\t\t\tconst elementID = this.services.domUtils.generateElementIDString(\n\t\t\t\t\t`alluvial-category-${i}`\n\t\t\t\t);\n\n\t\t\t\tconst { width } = DOMUtils.getSVGElementSize(\n\t\t\t\t\tselect(`text#${elementID}`),\n\t\t\t\t\t{ useBBox: true }\n\t\t\t\t);\n\n\t\t\t\t// Make the text on the left on node group (except first column)\n\t\t\t\tlet x = 0;\n\t\t\t\tif (d + x >= width) {\n\t\t\t\t\tx = -width + 4;\n\t\t\t\t}\n\t\t\t\treturn x;\n\t\t\t});\n\n\t\t// Draws the links (Waves)\n\t\tconst links = svg\n\t\t\t.append('g')\n\t\t\t.attr('fill', 'none')\n\t\t\t.selectAll('g')\n\t\t\t.data(this.graph.links);\n\n\t\t// Exit so we can have multiple appends in group\n\t\tlinks.exit().remove();\n\n\t\t// Add gradient if requsted\n\t\tif (isGradientAllowed) {\n\t\t\tconst scale = Tools.getProperty(\n\t\t\t\tthis.getOptions(),\n\t\t\t\t'color',\n\t\t\t\t'scale'\n\t\t\t);\n\n\t\t\tif (scale) {\n\t\t\t\tlinks\n\t\t\t\t\t.enter()\n\t\t\t\t\t.append('linearGradient')\n\t\t\t\t\t.attr('id', (d) => `${this.gradient_id}-link-${d.index}`)\n\t\t\t\t\t.attr('gradientUnits', 'userSpaceOnUse')\n\t\t\t\t\t.call((gradient) =>\n\t\t\t\t\t\tgradient\n\t\t\t\t\t\t\t.append('stop')\n\t\t\t\t\t\t\t.attr('offset', '0%')\n\t\t\t\t\t\t\t.attr('stop-color', (d) => {\n\t\t\t\t\t\t\t\treturn scale[d.source.name];\n\t\t\t\t\t\t\t})\n\t\t\t\t\t)\n\t\t\t\t\t.call((gradient) =>\n\t\t\t\t\t\tgradient\n\t\t\t\t\t\t\t.append('stop')\n\t\t\t\t\t\t\t.attr('offset', '100%')\n\t\t\t\t\t\t\t.attr('stop-color', (d) => {\n\t\t\t\t\t\t\t\treturn scale[d.target.name];\n\t\t\t\t\t\t\t})\n\t\t\t\t\t);\n\t\t\t}\n\t\t\t// Exit so path can be appended to the group\n\t\t\tlinks.exit().remove();\n\t\t}\n\n\t\tlinks\n\t\t\t.enter()\n\t\t\t.append('path')\n\t\t\t.classed('link', true)\n\t\t\t.attr('d', sankeyLinkHorizontal())\n\t\t\t.attr('id', (d) =>\n\t\t\t\tthis.services.domUtils.generateElementIDString(\n\t\t\t\t\t`alluvial-line-${d.index}`\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('class', (d) => {\n\t\t\t\t// Use a single color for the lines\n\t\t\t\tif (options.alluvial.monochrome) {\n\t\t\t\t\treturn this.model.getColorClassName({\n\t\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.STROKE],\n\t\t\t\t\t\tdataGroupName: 0,\n\t\t\t\t\t\toriginalClassName: 'link',\n\t\t\t\t\t});\n\t\t\t\t}\n\n\t\t\t\treturn this.model.getColorClassName({\n\t\t\t\t\tclassNameTypes: [ColorClassNameTypes.STROKE],\n\t\t\t\t\tdataGroupName: d.source.index,\n\t\t\t\t\toriginalClassName: 'link',\n\t\t\t\t});\n\t\t\t})\n\t\t\t.style('stroke', (d) => {\n\t\t\t\tif (isGradientAllowed) {\n\t\t\t\t\treturn `url(#${this.gradient_id}-link-${d.index})`;\n\t\t\t\t}\n\n\t\t\t\treturn this.model.getFillColor(d.source.name);\n\t\t\t})\n\t\t\t.attr('stroke-width', (d) => Math.max(1, d.width))\n\t\t\t.style('stroke-opacity', Configuration.alluvial.opacity.default)\n\t\t\t.attr(\n\t\t\t\t'aria-label',\n\t\t\t\t(d) =>\n\t\t\t\t\t`${d.source.name} → ${d.target.name} (${d.value}${\n\t\t\t\t\t\toptions.alluvial.units\n\t\t\t\t\t\t\t? ' ' + options.alluvial.units\n\t\t\t\t\t\t\t: ''\n\t\t\t\t\t})`\n\t\t\t);\n\n\t\t// Creating the groups\n\t\tconst node = svg\n\t\t\t.append('g')\n\t\t\t.selectAll('g')\n\t\t\t.data(this.graph.nodes)\n\t\t\t.enter()\n\t\t\t.append('g')\n\t\t\t.attr('id', (d) =>\n\t\t\t\tthis.services.domUtils.generateElementIDString(\n\t\t\t\t\t`alluvial-node-${d.index}`\n\t\t\t\t)\n\t\t\t)\n\t\t\t.classed('node-group', true)\n\t\t\t.attr('transform', (d) => `translate(${d.x0}, ${d.y0})`);\n\n\t\t// Creating the nodes\n\t\tnode.append('rect')\n\t\t\t.classed('node', true)\n\t\t\t.attr('height', (d) => d.y1 - d.y0)\n\t\t\t.attr('width', (d) => d.x1 - d.x0)\n\t\t\t.attr('fill', 'black');\n\n\t\t// Group to hold the text & rectangle background\n\t\tconst textNode = node\n\t\t\t.append('g')\n\t\t\t.attr('id', (d) =>\n\t\t\t\tthis.services.domUtils.generateElementIDString(\n\t\t\t\t\t`alluvial-node-title-${d.index}`\n\t\t\t\t)\n\t\t\t);\n\n\t\t// Node title - text\n\t\ttextNode\n\t\t\t.append('text')\n\t\t\t.attr('id', (d) =>\n\t\t\t\tthis.services.domUtils.generateElementIDString(\n\t\t\t\t\t`alluvial-node-text-${d.index}`\n\t\t\t\t)\n\t\t\t)\n\t\t\t.attr('class', 'node-text')\n\t\t\t.style('font-size', '12px')\n\t\t\t.attr('text-anchor', 'start')\n\t\t\t.attr('fill', 'white')\n\t\t\t// Padding to text\n\t\t\t.attr('x', 4)\n\t\t\t// shift 13 pixels down to fit background container\n\t\t\t.attr('dy', 13)\n\t\t\t.text((d) => {\n\t\t\t\treturn `${d.name} (${d.value})`;\n\t\t\t})\n\t\t\t.attr('aria-label', (d) => {\n\t\t\t\treturn `${d.name} (${d.value})`;\n\t\t\t});\n\n\t\t// Text background\n\t\ttextNode\n\t\t\t.append('rect')\n\t\t\t.classed('node-text-bg', true)\n\t\t\t.attr('width', (d, i) => {\n\t\t\t\tconst elementID = this.services.domUtils.generateElementIDString(\n\t\t\t\t\t`alluvial-node-text-${i}`\n\t\t\t\t);\n\n\t\t\t\t// Determine rectangle width based on text width\n\t\t\t\tconst { width } = DOMUtils.getSVGElementSize(\n\t\t\t\t\tselect(`text#${elementID}`),\n\t\t\t\t\t{ useBBox: true }\n\t\t\t\t);\n\n\t\t\t\treturn width + 8;\n\t\t\t})\n\t\t\t.attr('height', 18)\n\t\t\t.attr('stroke-width', 2)\n\t\t\t.lower();\n\n\t\t// Position group based on text width\n\t\ttextNode.attr('transform', (d, i) => {\n\t\t\tconst elementID = this.services.domUtils.generateElementIDString(\n\t\t\t\t`alluvial-node-text-${i}`\n\t\t\t);\n\n\t\t\tconst { width } = DOMUtils.getSVGElementSize(\n\t\t\t\tselect(`text#${elementID}`),\n\t\t\t\t{ useBBox: true }\n\t\t\t);\n\n\t\t\t// Subtracting 9 since text background is 18 to center\n\t\t\tconst y = (d.y1 - d.y0) / 2 - 9;\n\t\t\t// Node width\n\t\t\tlet x = d.x1 - d.x0;\n\n\t\t\t// Display bars on the right instead of left of the node\n\t\t\tif (d.x1 >= width) {\n\t\t\t\t// 16 = node width (4) + text container padding (8) + distance between node and text container (4)\n\t\t\t\tx = x - (width + 16);\n\t\t\t} else {\n\t\t\t\t// Add padding to text containers\n\t\t\t\tx += 4;\n\t\t\t}\n\n\t\t\treturn `translate(${x}, ${y})`;\n\t\t});\n\n\t\tthis.addLineEventListener();\n\t\tthis.addNodeEventListener();\n\t}\n\n\taddLineEventListener() {\n\t\tconst options = this.getOptions();\n\t\tconst self = this;\n\n\t\t// Set delay to counter flashy behaviour\n\t\tconst debouncedLineHighlight = Tools.debounce(\n\t\t\t(link, event = 'mouseover') => {\n\t\t\t\tconst allLinks = self.parent\n\t\t\t\t\t.selectAll('path.link')\n\t\t\t\t\t.transition()\n\t\t\t\t\t.call((t) =>\n\t\t\t\t\t\tself.services.transitions.setupTransition({\n\t\t\t\t\t\t\ttransition: t,\n\t\t\t\t\t\t\tname: 'alluvial-links-mouse-highlight',\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\n\t\t\t\tif (event === 'mouseout') {\n\t\t\t\t\tselect(link).lower();\n\t\t\t\t\tallLinks.style(\n\t\t\t\t\t\t'stroke-opacity',\n\t\t\t\t\t\tConfiguration.alluvial.opacity.default\n\t\t\t\t\t);\n\t\t\t\t} else {\n\t\t\t\t\tallLinks.style('stroke-opacity', function () {\n\t\t\t\t\t\t// highlight and raise if link is this\n\t\t\t\t\t\tif (link === this) {\n\t\t\t\t\t\t\tselect(this).raise();\n\t\t\t\t\t\t\treturn Configuration.alluvial.opacity.selected;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn Configuration.alluvial.opacity.unfocus;\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t},\n\t\t\t33\n\t\t);\n\n\t\tthis.parent\n\t\t\t.selectAll('path.link')\n\t\t\t.on('mouseover', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\tdebouncedLineHighlight(this, 'mouseover');\n\t\t\t\thoveredElement.classed('link-hovered', true);\n\n\t\t\t\tconst strokeColor = getComputedStyle(this).getPropertyValue(\n\t\t\t\t\t'stroke'\n\t\t\t\t);\n\n\t\t\t\t// Dispatch mouse over event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Alluvial.LINE_MOUSEOVER,\n\t\t\t\t\t{\n\t\t\t\t\t\tevent,\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// Dispatch tooltip show event\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.SHOW, {\n\t\t\t\t\tevent,\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: datum.target.name,\n\t\t\t\t\t\t\tvalue:\n\t\t\t\t\t\t\t\tdatum.value +\n\t\t\t\t\t\t\t\t(options.alluvial.units\n\t\t\t\t\t\t\t\t\t? ` ${options.alluvial.units}`\n\t\t\t\t\t\t\t\t\t: ''),\n\t\t\t\t\t\t\tcolor: strokeColor,\n\t\t\t\t\t\t\tlabelIcon: self.getRightArrowIcon(),\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 (event, datum) {\n\t\t\t\t// Dispatch mouse move event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Alluvial.LINE_MOUSEMOVE,\n\t\t\t\t\t{\n\t\t\t\t\t\tevent,\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\t// Dispatch tooltip move event\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.MOVE, {\n\t\t\t\t\tevent,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('click', function (event, datum) {\n\t\t\t\t// Dispatch mouse click event\n\t\t\t\tself.services.events.dispatchEvent(Events.Alluvial.LINE_CLICK, {\n\t\t\t\t\tevent,\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 (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\t\t\t\tdebouncedLineHighlight(this, 'mouseout');\n\t\t\t\thoveredElement.classed('link-hovered', false);\n\n\t\t\t\t// Dispatch mouse out event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Alluvial.LINE_MOUSEOUT,\n\t\t\t\t\t{\n\t\t\t\t\t\tevent,\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// Dispatch hide tooltip event\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.HIDE, {\n\t\t\t\t\tevent,\n\t\t\t\t\thoveredElement,\n\t\t\t\t});\n\t\t\t});\n\t}\n\n\taddNodeEventListener() {\n\t\tconst self = this;\n\n\t\t// Set delay to counter flashy behaviour\n\t\tconst debouncedLineHighlight = Tools.debounce(\n\t\t\t(links = [], event = 'mouseover') => {\n\t\t\t\tif (event === 'mouseout' || links.length === 0) {\n\t\t\t\t\t// set all links to default opacity & corret link order\n\t\t\t\t\tself.parent\n\t\t\t\t\t\t.selectAll('path.link')\n\t\t\t\t\t\t.classed('link-hovered', false)\n\t\t\t\t\t\t.data(this.graph.links, (d) => d.index)\n\t\t\t\t\t\t.order()\n\t\t\t\t\t\t.style(\n\t\t\t\t\t\t\t'stroke-opacity',\n\t\t\t\t\t\t\tConfiguration.alluvial.opacity.default\n\t\t\t\t\t\t);\n\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Highlight all nodes\n\t\t\t\tconst allLinks = self.parent\n\t\t\t\t\t.selectAll('path.link')\n\t\t\t\t\t.transition()\n\t\t\t\t\t.call((t) =>\n\t\t\t\t\t\tthis.services.transitions.setupTransition({\n\t\t\t\t\t\t\ttransition: t,\n\t\t\t\t\t\t\tname: 'alluvial-link-mouse-highlight',\n\t\t\t\t\t\t})\n\t\t\t\t\t);\n\n\t\t\t\tallLinks.style('stroke-opacity', function (d) {\n\t\t\t\t\t// Raise the links & increase stroke-opacity to selected\n\t\t\t\t\tif (links.some((element) => element === d.index)) {\n\t\t\t\t\t\tselect(this).classed('link-hovered', true).raise();\n\t\t\t\t\t\treturn Configuration.alluvial.opacity.selected;\n\t\t\t\t\t}\n\n\t\t\t\t\treturn Configuration.alluvial.opacity.unfocus;\n\t\t\t\t});\n\t\t\t},\n\t\t\t66\n\t\t);\n\n\t\tself.parent\n\t\t\t.selectAll('.node-group')\n\t\t\t.on('mouseover', function (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Highlight all links that pass through node\n\t\t\t\tconst paths = [];\n\n\t\t\t\t// Outgoing links\n\t\t\t\tself.traverse(\n\t\t\t\t\t{ link: 'sourceLinks', node: 'target' },\n\t\t\t\t\tdatum,\n\t\t\t\t\tpaths\n\t\t\t\t);\n\n\t\t\t\t//Incoming links\n\t\t\t\tself.traverse(\n\t\t\t\t\t{ link: 'targetLinks', node: 'source' },\n\t\t\t\t\tdatum,\n\t\t\t\t\tpaths\n\t\t\t\t);\n\n\t\t\t\t// Highlight all linked lines in the graph data structure\n\t\t\t\tif (paths.length) {\n\t\t\t\t\t// Get transformation value of node\n\t\t\t\t\tconst nodeMatrix = Tools.getTranformOffsets(\n\t\t\t\t\t\thoveredElement.attr('transform')\n\t\t\t\t\t);\n\n\t\t\t\t\t// Move node to the left by 2 to grow node from the center\n\t\t\t\t\thoveredElement.attr(\n\t\t\t\t\t\t'transform',\n\t\t\t\t\t\t`translate(${nodeMatrix.x - 2}, ${nodeMatrix.y})`\n\t\t\t\t\t);\n\n\t\t\t\t\thoveredElement\n\t\t\t\t\t\t.classed('node-hovered', true)\n\t\t\t\t\t\t.selectAll('rect.node')\n\t\t\t\t\t\t.attr('width', 8);\n\n\t\t\t\t\t// Translate first column text container to the\n\t\t\t\t\t// right so it doesn't clash with expanding node\n\t\t\t\t\tif (datum.x0 - 2 === 0) {\n\t\t\t\t\t\tconst elementID = self.services.domUtils.generateElementIDString(\n\t\t\t\t\t\t\t`alluvial-node-title-${datum.index}`\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\tconst titleContainer = self.parent.select(\n\t\t\t\t\t\t\t`g#${elementID}`\n\t\t\t\t\t\t);\n\t\t\t\t\t\tconst titleMatrix = Tools.getTranformOffsets(\n\t\t\t\t\t\t\ttitleContainer.attr('transform')\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\ttitleContainer.attr(\n\t\t\t\t\t\t\t'transform',\n\t\t\t\t\t\t\t`translate(${titleMatrix.x + 4},${titleMatrix.y})`\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\tconst elementID = self.services.domUtils.generateElementIDString(\n\t\t\t\t\t\t`alluvial-node-text-${datum.index}`\n\t\t\t\t\t);\n\n\t\t\t\t\tself.parent\n\t\t\t\t\t\t.select(`text#${elementID}`)\n\t\t\t\t\t\t.style('font-weight', 'bold');\n\n\t\t\t\t\tdebouncedLineHighlight(paths, 'mouseover');\n\n\t\t\t\t\t// Dispatch mouse over event\n\t\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\t\tEvents.Alluvial.NODE_MOUSEOVER,\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tevent,\n\t\t\t\t\t\t\telement: hoveredElement,\n\t\t\t\t\t\t\tdatum,\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 (event, datum) {\n\t\t\t\t// Dispatch mouse move event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Alluvial.NODE_MOUSEMOVE,\n\t\t\t\t\t{\n\t\t\t\t\t\tevent,\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// Dispatch tooltip move event\n\t\t\t\tself.services.events.dispatchEvent(Events.Tooltip.MOVE, {\n\t\t\t\t\tevent,\n\t\t\t\t});\n\t\t\t})\n\t\t\t.on('click', function (event, datum) {\n\t\t\t\t// Dispatch mouse click event\n\t\t\t\tself.services.events.dispatchEvent(Events.Alluvial.NODE_CLICK, {\n\t\t\t\t\tevent,\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 (event, datum) {\n\t\t\t\tconst hoveredElement = select(this);\n\n\t\t\t\t// Set the node position to initial state (unexpanded)\n\t\t\t\tconst nodeMatrix = Tools.getTranformOffsets(\n\t\t\t\t\thoveredElement.attr('transform')\n\t\t\t\t);\n\n\t\t\t\thoveredElement\n\t\t\t\t\t.classed('node-hovered', false)\n\t\t\t\t\t.attr(\n\t\t\t\t\t\t'transform',\n\t\t\t\t\t\t`translate(${nodeMatrix.x + 2}, ${nodeMatrix.y})`\n\t\t\t\t\t)\n\t\t\t\t\t.select('rect.node')\n\t\t\t\t\t.attr('width', Configuration.alluvial.nodeWidth);\n\n\t\t\t\t// Translate text container back to initial state\n\t\t\t\tif (datum.x0 - 2 === 0) {\n\t\t\t\t\tconst elementID = self.services.domUtils.generateElementIDString(\n\t\t\t\t\t\t`alluvial-node-title-${datum.index}`\n\t\t\t\t\t);\n\n\t\t\t\t\tconst titleContainer = self.parent.select(`g#${elementID}`);\n\t\t\t\t\tconst titleMatrix = Tools.getTranformOffsets(\n\t\t\t\t\t\ttitleContainer.attr('transform')\n\t\t\t\t\t);\n\n\t\t\t\t\ttitleContainer.attr(\n\t\t\t\t\t\t'transform',\n\t\t\t\t\t\t`translate(${titleMatrix.x - 4},${titleMatrix.y})`\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tconst elementID = self.services.domUtils.generateElementIDString(\n\t\t\t\t\t`alluvial-node-text-${datum.index}`\n\t\t\t\t);\n\n\t\t\t\tself.parent\n\t\t\t\t\t.select(`text#${elementID}`)\n\t\t\t\t\t.style('font-weight', 'normal');\n\n\t\t\t\tdebouncedLineHighlight([], 'mouseout');\n\n\t\t\t\t// Dispatch mouse out event\n\t\t\t\tself.services.events.dispatchEvent(\n\t\t\t\t\tEvents.Alluvial.NODE_MOUSEOUT,\n\t\t\t\t\t{\n\t\t\t\t\t\tevent,\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// Dispatch hide tooltip event\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\t// Traverse graph and get all connected links to node\n\tprivate traverse(\n\t\tdirection:\n\t\t\t| { link: 'sourceLinks'; node: 'target' }\n\t\t\t| { link: 'targetLinks'; node: 'source' },\n\t\tnode,\n\t\tvisited = []\n\t) {\n\t\tconst links = node[direction.link].map((element) => {\n\t\t\tvisited.push(element.index);\n\t\t\treturn element[direction.node];\n\t\t});\n\n\t\t// Retrieve the child nodes\n\t\tlinks.forEach((element) => this.traverse(direction, element, visited));\n\t}\n\n\tgetRightArrowIcon() {\n\t\treturn `\n\t\t<svg xmlns=\"http://www.w3.org/2000/svg\" width=\"32\" height=\"32\" viewBox=\"0 0 32 32\">\n\t\t\t<polygon points=\"18 6 16.57 7.393 24.15 15 4 15 4 17 24.15 17 16.57 24.573 18 26 28 16 18 6\"/>\n\t\t\t<rect data-name=\"&lt;Transparent Rectangle&gt;\" style=\"fill: none;\" width=\"32\" height=\"32\"/>\n\t\t</svg>`;\n\t}\n\n\t// Remove event listeners\n\tdestroy() {\n\t\tthis.parent\n\t\t\t.selectAll('path.line,.node-group')\n\t\t\t.on('mouseover', null)\n\t\t\t.on('mousemove', null)\n\t\t\t.on('click', null)\n\t\t\t.on('mouseout', null);\n\t}\n}\n"]}
package/configuration.js CHANGED
@@ -191,7 +191,7 @@ var axisChart = Tools.merge({}, chart, {
191
191
  var baseBarChart = Tools.merge({}, axisChart, {
192
192
  bars: {
193
193
  maxWidth: 16,
194
- spacingFactor: 0.25
194
+ spacingFactor: 0.25,
195
195
  },
196
196
  timeScale: Tools.merge(timeScale, {
197
197
  addSpaceOnEdges: 1,
@@ -484,6 +484,7 @@ var alluvialChart = Tools.merge({}, chart, {
484
484
  data: Tools.merge(chart.data, {
485
485
  groupMapsTo: 'source',
486
486
  }),
487
+ nodeAlignment: Alignments.CENTER,
487
488
  nodePadding: 24,
488
489
  monochrome: false,
489
490
  nodes: [],