@elyra/canvas 12.42.0 → 12.43.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.
Files changed (128) hide show
  1. package/dist/{canvas-constants-13b58448.js → canvas-constants-acb99f64.js} +2 -2
  2. package/dist/{canvas-constants-13b58448.js.map → canvas-constants-acb99f64.js.map} +1 -1
  3. package/dist/{canvas-controller-cb1d7420.js → canvas-controller-6726b9ac.js} +2 -2
  4. package/dist/{canvas-controller-a53943e4.js.map → canvas-controller-6726b9ac.js.map} +1 -1
  5. package/dist/{canvas-controller-a53943e4.js → canvas-controller-6c6bc68f.js} +2 -2
  6. package/dist/{canvas-controller-cb1d7420.js.map → canvas-controller-6c6bc68f.js.map} +1 -1
  7. package/dist/common-canvas-9374ef35.js +2 -0
  8. package/dist/common-canvas-9374ef35.js.map +1 -0
  9. package/dist/common-canvas-a6435bdb.js +2 -0
  10. package/dist/common-canvas-a6435bdb.js.map +1 -0
  11. package/dist/common-canvas.es.js +1 -1
  12. package/dist/common-canvas.es.js.map +1 -1
  13. package/dist/common-canvas.js +1 -1
  14. package/dist/common-canvas.js.map +1 -1
  15. package/dist/common-properties-08707efe.js +2 -0
  16. package/dist/common-properties-08707efe.js.map +1 -0
  17. package/dist/common-properties-acd55e94.js +2 -0
  18. package/dist/common-properties-acd55e94.js.map +1 -0
  19. package/dist/context-menu-wrapper-271eb2df.js +2 -0
  20. package/dist/context-menu-wrapper-271eb2df.js.map +1 -0
  21. package/dist/context-menu-wrapper-e4a7ab4d.js +2 -0
  22. package/dist/context-menu-wrapper-e4a7ab4d.js.map +1 -0
  23. package/dist/{datarecord-metadata-v3-schema-98ec66e9.js → datarecord-metadata-v3-schema-03427296.js} +2 -2
  24. package/dist/{datarecord-metadata-v3-schema-98ec66e9.js.map → datarecord-metadata-v3-schema-03427296.js.map} +1 -1
  25. package/dist/{flexible-table-7c7de0f9.js → flexible-table-107ca2fd.js} +1 -1
  26. package/dist/{flexible-table-7c7de0f9.js.map → flexible-table-107ca2fd.js.map} +1 -1
  27. package/dist/{flexible-table-35e9922a.js → flexible-table-5cc1ad6b.js} +1 -1
  28. package/dist/{flexible-table-35e9922a.js.map → flexible-table-5cc1ad6b.js.map} +1 -1
  29. package/dist/{icon-9edff40c.js → icon-2caf035c.js} +2 -2
  30. package/dist/{icon-9edff40c.js.map → icon-2caf035c.js.map} +1 -1
  31. package/dist/{index-94fec521.js → index-5dac3da8.js} +2 -2
  32. package/dist/{index-94fec521.js.map → index-5dac3da8.js.map} +1 -1
  33. package/dist/{index-e2f8a935.js → index-fee06179.js} +2 -2
  34. package/dist/{index-e2f8a935.js.map → index-fee06179.js.map} +1 -1
  35. package/dist/lib/canvas-controller.es.js +1 -1
  36. package/dist/lib/canvas-controller.js +1 -1
  37. package/dist/lib/canvas.es.js +1 -1
  38. package/dist/lib/canvas.js +1 -1
  39. package/dist/lib/context-menu.es.js +1 -1
  40. package/dist/lib/context-menu.js +1 -1
  41. package/dist/lib/properties/clem.es.js +2 -0
  42. package/dist/lib/properties/clem.es.js.map +1 -0
  43. package/dist/lib/properties/clem.js +2 -0
  44. package/dist/lib/properties/clem.js.map +1 -0
  45. package/dist/lib/properties/field-picker.es.js +1 -1
  46. package/dist/lib/properties/field-picker.js +1 -1
  47. package/dist/lib/properties/flexible-table.es.js +1 -1
  48. package/dist/lib/properties/flexible-table.js +1 -1
  49. package/dist/lib/properties/getPythonHints.es.js +2 -0
  50. package/dist/lib/properties/getPythonHints.es.js.map +1 -0
  51. package/dist/lib/properties/getPythonHints.js +2 -0
  52. package/dist/lib/properties/getPythonHints.js.map +1 -0
  53. package/dist/lib/properties.es.js +1 -1
  54. package/dist/lib/properties.js +1 -1
  55. package/dist/lib/tooltip.es.js +1 -1
  56. package/dist/lib/tooltip.es.js.map +1 -1
  57. package/dist/lib/tooltip.js +1 -1
  58. package/dist/lib/tooltip.js.map +1 -1
  59. package/dist/styles/common-canvas.min.css +1 -1
  60. package/dist/styles/common-canvas.min.css.map +1 -1
  61. package/dist/toolbar-ccc1d600.js +2 -0
  62. package/dist/toolbar-ccc1d600.js.map +1 -0
  63. package/dist/toolbar-e4445bf8.js +2 -0
  64. package/dist/toolbar-e4445bf8.js.map +1 -0
  65. package/package.json +3 -3
  66. package/rollup.config.js +2 -0
  67. package/src/color-picker/color-picker.jsx +5 -1
  68. package/src/common-canvas/canvas-controller.js +38 -0
  69. package/src/common-canvas/cc-central-items.jsx +0 -4
  70. package/src/common-canvas/cc-toolbar.jsx +26 -9
  71. package/src/common-canvas/common-canvas.scss +3 -3
  72. package/src/common-canvas/svg-canvas-d3.scss +3 -2
  73. package/src/common-canvas/svg-canvas-renderer.js +44 -21
  74. package/src/common-properties/components/field-picker/field-picker.jsx +4 -0
  75. package/src/common-properties/controls/checkbox/checkbox.scss +0 -1
  76. package/src/common-properties/controls/expression/expression.jsx +3 -5
  77. package/src/common-properties/controls/expression/languages/python-hint.js +18 -30
  78. package/src/common-properties/controls/expression/languages/r-hint.js +16 -8
  79. package/src/common-properties/index.js +4 -2
  80. package/src/index.js +2 -2
  81. package/src/notification-panel/notification-panel.jsx +82 -56
  82. package/src/notification-panel/notification-panel.scss +42 -40
  83. package/src/object-model/object-model.js +19 -5
  84. package/src/object-model/redux/reducers/canvasinfo.js +7 -11
  85. package/src/object-model/redux/reducers/canvastoolbar.js +5 -6
  86. package/src/palette/palette-dialog-topbar.jsx +27 -38
  87. package/src/palette/palette-flyout-content-category.jsx +25 -6
  88. package/src/palette/palette.scss +8 -40
  89. package/src/toolbar/index.js +18 -0
  90. package/src/toolbar/toolbar-action-item.jsx +40 -10
  91. package/src/toolbar/toolbar-button-item.jsx +46 -19
  92. package/src/toolbar/toolbar-divider-item.jsx +1 -1
  93. package/src/toolbar/toolbar-overflow-item.jsx +4 -2
  94. package/src/toolbar/toolbar-sub-menu-item.jsx +6 -5
  95. package/src/toolbar/toolbar-sub-menu.jsx +4 -6
  96. package/src/toolbar/toolbar-sub-panel.jsx +31 -18
  97. package/src/toolbar/toolbar-sub-utils.js +21 -12
  98. package/src/toolbar/toolbar.jsx +79 -25
  99. package/src/toolbar/toolbar.scss +47 -47
  100. package/src/tooltip/tooltip.jsx +56 -10
  101. package/stats.html +1 -1
  102. package/assets/images/palette/close_32.svg +0 -1
  103. package/assets/images/palette/palette_close.svg +0 -4
  104. package/assets/images/palette/palette_grid_deselected.svg +0 -2
  105. package/assets/images/palette/palette_grid_hover.svg +0 -2
  106. package/assets/images/palette/palette_grid_selected.svg +0 -2
  107. package/assets/images/palette/palette_list_deselected.svg +0 -1
  108. package/assets/images/palette/palette_list_hover.svg +0 -1
  109. package/assets/images/palette/palette_list_selected.svg +0 -1
  110. package/assets/images/palette/palette_open.svg +0 -4
  111. package/assets/images/zoom_to_fit.svg +0 -8
  112. package/dist/common-canvas-42027a3f.js +0 -2
  113. package/dist/common-canvas-42027a3f.js.map +0 -1
  114. package/dist/common-canvas-f758ff42.js +0 -2
  115. package/dist/common-canvas-f758ff42.js.map +0 -1
  116. package/dist/common-properties-2e1b7ec7.js +0 -2
  117. package/dist/common-properties-2e1b7ec7.js.map +0 -1
  118. package/dist/common-properties-5e8870e3.js +0 -2
  119. package/dist/common-properties-5e8870e3.js.map +0 -1
  120. package/dist/context-menu-wrapper-49f9a1af.js +0 -2
  121. package/dist/context-menu-wrapper-49f9a1af.js.map +0 -1
  122. package/dist/context-menu-wrapper-5d6a399f.js +0 -2
  123. package/dist/context-menu-wrapper-5d6a399f.js.map +0 -1
  124. package/dist/toolbar-6acda0a2.js +0 -2
  125. package/dist/toolbar-6acda0a2.js.map +0 -1
  126. package/dist/toolbar-d5647da2.js +0 -2
  127. package/dist/toolbar-d5647da2.js.map +0 -1
  128. package/src/palette/palette-dialog-topbar-three-way-icon.jsx +0 -82
@@ -1,2 +0,0 @@
1
- import{_ as e,a as t}from"./createClass-440000a3.js";import{_ as n,a as o,b as r,c as i}from"./inherits-226dfdb2.js";import c from"react";import{_ as l}from"./defineProperty-3dc7d8d0.js";import{ChevronRight16 as a}from"@carbon/icons-react";import{L as s}from"./canvas-logger-e07a0b4a.js";function u(e,t,n){return t=o(t),r(e,d()?Reflect.construct(t,n||[],o(e).constructor):t.apply(e,n))}function d(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(d=function(){return!!e})()}var h=function(o){function r(t){var n;e(this,r),(n=u(this,r,[t])).logger=new s("CC-Color-Picker"),n.colorIndex=0,n.refss=[];for(var o=0;o<12;o++)n.refss.push(c.createRef());return n.onClick=n.onClick.bind(i(n)),n.onKeyDown=n.onKeyDown.bind(i(n)),n}return n(r,o),t(r,[{key:"componentDidMount",value:function(){this.setFocus(this.colorIndex)}},{key:"onClick",value:function(e){e.stopPropagation(),this.selectColor(e)}},{key:"onKeyDown",value:function(e){if(39===e.keyCode)e.stopPropagation(),this.colorIndex++,this.colorIndex>11&&(this.colorIndex=0);else if(37===e.keyCode)e.stopPropagation(),this.colorIndex--,this.colorIndex<0&&(this.colorIndex=11);else if(38===e.keyCode)e.stopPropagation(),this.colorIndex-=6,this.colorIndex<0&&(this.colorIndex+=6);else if(40===e.keyCode)e.stopPropagation(),this.colorIndex+=6,this.colorIndex>11&&(this.colorIndex-=6);else if(32===e.keyCode)this.selectColor(e);else if(9===e.keyCode)return e.stopPropagation(),void e.preventDefault();this.setFocus(this.colorIndex)}},{key:"setFocus",value:function(e){this.refss[e].current.focus()}},{key:"selectColor",value:function(e){var t=e.target.dataset.color;this.props.subPanelData.clickActionHandler(t),this.props.closeSubPanel()}},{key:"render",value:function(){return this.logger.log("render"),c.createElement("div",{className:"color-picker",tabIndex:"-1",onClick:this.onClick,onKeyDown:this.onKeyDown},c.createElement("div",{ref:this.refss[0],tabIndex:"-1","data-color":"bkg-col-white-0",className:"color-picker-item white-0"}),c.createElement("div",{ref:this.refss[1],tabIndex:"-1","data-color":"bkg-col-yellow-20",className:"color-picker-item yellow-20"}),c.createElement("div",{ref:this.refss[2],tabIndex:"-1","data-color":"bkg-col-gray-20",className:"color-picker-item gray-20"}),c.createElement("div",{ref:this.refss[3],tabIndex:"-1","data-color":"bkg-col-green-20",className:"color-picker-item green-20"}),c.createElement("div",{ref:this.refss[4],tabIndex:"-1","data-color":"bkg-col-teal-20",className:"color-picker-item teal-20"}),c.createElement("div",{ref:this.refss[5],tabIndex:"-1","data-color":"bkg-col-cyan-20",className:"color-picker-item cyan-20"}),c.createElement("div",{ref:this.refss[6],tabIndex:"-1","data-color":"bkg-col-red-50",className:"color-picker-item red-50"}),c.createElement("div",{ref:this.refss[7],tabIndex:"-1","data-color":"bkg-col-orange-40",className:"color-picker-item orange-40"}),c.createElement("div",{ref:this.refss[8],tabIndex:"-1","data-color":"bkg-col-gray-50",className:"color-picker-item gray-50"}),c.createElement("div",{ref:this.refss[9],tabIndex:"-1","data-color":"bkg-col-green-50",className:"color-picker-item green-50"}),c.createElement("div",{ref:this.refss[10],tabIndex:"-1","data-color":"bkg-col-teal-50",className:"color-picker-item teal-50"}),c.createElement("div",{ref:this.refss[11],tabIndex:"-1","data-color":"bkg-col-cyan-50",className:"color-picker-item cyan-50"}))}}]),r}(c.Component);function p(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function f(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?p(Object(n),!0).forEach((function(t){l(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):p(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function m(e,t,n){return t=o(t),r(e,v()?Reflect.construct(t,n||[],o(e).constructor):t.apply(e,n))}function v(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(v=function(){return!!e})()}var b=function(o){function r(t){var n;return e(this,r),(n=m(this,r,[t])).state={displaySubMenuAction:""},n.itemSelected=n.itemSelected.bind(i(n)),n.colorClicked=n.colorClicked.bind(i(n)),n}return n(r,o),t(r,[{key:"onContextMenu",value:function(e){e.preventDefault()}},{key:"itemSelected",value:function(e,t){this.props.contextHandler(e),t&&t.stopPropagation()}},{key:"colorClicked",value:function(e){this.props.contextHandler("colorSelectedObjects",{color:e})}},{key:"calculateMenuSize",value:function(e){for(var t=0,n=0;n<e.length;++n){e[n].divider&&t++}return{height:30*(e.length-t)+1*t,width:160}}},{key:"calculateMenuPos",value:function(e,t,n){var o={x:e.x,y:e.y};return e.y+t.height>n.height&&(o.y=n.height-t.height-5,o.y<0&&(o.y=0)),e.x+t.width>n.width&&(o.x-=t.width),o.x+=1,o.y+=1,o}},{key:"areAllSubmenuItemsDisabled",value:function(e){var t=0,n=0;return e.forEach((function(e){e.divider||t++,!1===e.enable&&n++})),n===t}},{key:"buildMenu",value:function(e,t,n,o){for(var r=[],i=0,l=!1,a=0;a<e.length;++a){var s=e[a].divider,u=e[a].submenu;if(s)l||(r.push(c.createElement("div",{key:a+1,className:"context-menu-divider"})),i+=1,l=!0);else if("colorBackground"===e[a].action){l=!1;var d={width:160,height:50},h=this.buildColorPickerPanel(),p=this.buildSubMenu(e,a,h,i,n,t,d,o,!1);r.push(p),i+=30}else if(u){l=!1;var f=this.areAllSubmenuItemsDisabled(e[a].menu),m=this.calculateMenuSize(e[a].menu),v=this.buildMenu(e[a].menu,t,n,o),b=this.buildSubMenu(e,a,v,i,n,t,m,o,f);r.push(b),i+=30}else{l=!1;var y="context-menu-item"+(!1===e[a].enable?" disabled":""),k=!1===e[a].enable?null:this.itemSelected.bind(null,e[a].action);r.push(c.createElement("div",{key:a+1,className:y,onClick:k,role:"menuitem"},e[a].label)),i+=30}}return r}},{key:"buildColorPickerPanel",value:function(){var e=this,t={clickActionHandler:function(t){return e.colorClicked(t)}};return c.createElement(h,{subPanelData:t,closeSubPanel:function(){return null}})}},{key:"subMenuMouseEnter",value:function(e){this.setState({displaySubMenuAction:e})}},{key:"subMenuMouseLeave",value:function(e){this.setState({displaySubMenuAction:""})}},{key:"buildSubMenu",value:function(e,t,n,o,r,i,l,s,u){var d=this.buildRtlState(r,i,l,s),h=this.buildSubMenuPosStyle(o,r,l,s,d),p=e[t],f=c.createElement(a,null),m=c.createElement("div",null,p.label,f," "),v="context-menu-item "+(u?" disabled":""),b="context-menu-popover context-menu-submenu"+(this.state.displaySubMenuAction===p.action?" context-menu--visible":""),y=u?null:this.subMenuMouseEnter.bind(this,p.action),k=u?null:this.subMenuMouseLeave.bind(this);return c.createElement("div",{key:t+1,className:v,"aria-haspopup":!0,role:"menuitem",onMouseEnter:y,onMouseLeave:k},m,c.createElement("div",{style:h,className:b},n))}},{key:"buildRtlState",value:function(e,t,n,o){return e.x+t.width+n.width>o.right}},{key:"buildSubMenuPosStyle",value:function(e,t,n,o,r){var i=o.bottom-(t.y+e+n.height),c={top:(i>0?0:i-5)+"px"};return r&&(c.left="-160px"),c}},{key:"ensureAllSubMenuItemsHaveAction",value:function(e){return e.map((function(e,t){return e.submenu&&void 0===e.action?f(f({},e),{},{action:"submenu_"+t}):e}))}},{key:"render",value:function(){var e=this.calculateMenuSize(this.props.menuDefinition),t=this.calculateMenuPos(this.props.mousePos,e,this.props.canvasRect),n={left:t.x+"px",top:t.y+"px"},o=this.ensureAllSubMenuItemsHaveAction(this.props.menuDefinition),r=this.buildMenu(o,e,t,this.props.canvasRect);return c.createElement("div",{id:"context-menu-popover",className:"context-menu-popover",style:n,onContextMenu:this.onContextMenu},r)}}]),r}(c.Component);function y(e,t,n){return t=o(t),r(e,k()?Reflect.construct(t,n||[],o(e).constructor):t.apply(e,n))}function k(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(k=function(){return!!e})()}var g=function(o){function r(t){var n;return e(this,r),(n=y(this,r,[t])).state={},n.contextMenuClicked=n.contextMenuClicked.bind(i(n)),n.handleClickOutside=n.handleClickOutside.bind(i(n)),n}return n(r,o),t(r,[{key:"componentDidMount",value:function(){document.addEventListener("click",this.handleClickOutside,!0)}},{key:"componentWillUnmount",value:function(){document.removeEventListener("click",this.handleClickOutside,!0)}},{key:"getCanvasRect",value:function(){var e=document.getElementById(this.props.containingDivId);if(e){var t=e.getBoundingClientRect();return{top:0,bottom:t.bottom-t.top,left:0,right:t.right-t.left,height:t.height,width:t.width}}return{top:0,bottom:200,left:0,right:50,height:200,width:50}}},{key:"handleClickOutside",value:function(e){e.ctrlKey?e.stopPropagation():this.isOverContextMenu(e)||this.isOverEllipsisButton(e)||(this.props.stopPropagation&&e.stopPropagation(),this.props.closeContextMenu())}},{key:"isOverContextMenu",value:function(e){var t=document.getElementById("context-menu-popover");return!t||t.contains(e.target)}},{key:"isOverEllipsisButton",value:function(e){for(var t=document.getElementsByClassName("d3-node-ellipsis-group"),n=!1,o=0;o<t.length;o++)!1===n&&t[o].contains(e.target)&&(n=!0);return n}},{key:"contextMenuClicked",value:function(e,t){this.props.contextMenuActionHandler(e,t)}},{key:"render",value:function(){return c.createElement(b,{contextHandler:this.contextMenuClicked,menuDefinition:this.props.contextMenuDef,canvasRect:this.getCanvasRect(),mousePos:this.props.contextMenuPos})}}]),r}(c.Component);export{g as C,h as a};
2
- //# sourceMappingURL=context-menu-wrapper-49f9a1af.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context-menu-wrapper-49f9a1af.js","sources":["../src/color-picker/color-picker.jsx","../src/context-menu/common-context-menu.jsx","../src/context-menu/context-menu-wrapper.jsx"],"sourcesContent":["/*\n * Copyright 2017-2023 Elyra Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport Logger from \"../logging/canvas-logger.js\";\n\nconst TAB_KEY = 9;\nconst SPACE_KEY = 32;\nconst LEFT_ARROW_KEY = 37;\nconst UP_ARROW_KEY = 38;\nconst RIGHT_ARROW_KEY = 39;\nconst DOWN_ARROW_KEY = 40;\n\n// These values must reflect the layout of the color picker panel\n// decribed by the SCSS/CSS.\nconst COLORS_IN_ROW = 6;\nconst TOTAL_COLORS = 12;\n\nclass ColorPicker extends React.Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.logger = new Logger(\"CC-Color-Picker\");\n\n\t\tthis.colorIndex = 0;\n\n\t\tthis.refss = [];\n\t\tfor (let i = 0; i < TOTAL_COLORS; i++) {\n\t\t\tthis.refss.push(React.createRef());\n\t\t}\n\t\tthis.onClick = this.onClick.bind(this);\n\t\tthis.onKeyDown = this.onKeyDown.bind(this);\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.setFocus(this.colorIndex);\n\t}\n\n\tonClick(evt) {\n\t\tevt.stopPropagation();\n\t\tthis.selectColor(evt);\n\t}\n\n\tonKeyDown(evt) {\n\t\tif (evt.keyCode === RIGHT_ARROW_KEY) {\n\t\t\tevt.stopPropagation();\n\t\t\tthis.colorIndex++;\n\t\t\tif (this.colorIndex > TOTAL_COLORS - 1) {\n\t\t\t\tthis.colorIndex = 0;\n\t\t\t}\n\n\t\t} else if (evt.keyCode === LEFT_ARROW_KEY) {\n\t\t\tevt.stopPropagation();\n\t\t\tthis.colorIndex--;\n\t\t\tif (this.colorIndex < 0) {\n\t\t\t\tthis.colorIndex = TOTAL_COLORS - 1;\n\t\t\t}\n\n\t\t} else if (evt.keyCode === UP_ARROW_KEY) {\n\t\t\tevt.stopPropagation();\n\t\t\tthis.colorIndex -= COLORS_IN_ROW;\n\t\t\tif (this.colorIndex < 0) {\n\t\t\t\tthis.colorIndex += COLORS_IN_ROW;\n\t\t\t}\n\n\t\t} else if (evt.keyCode === DOWN_ARROW_KEY) {\n\t\t\tevt.stopPropagation();\n\t\t\tthis.colorIndex += COLORS_IN_ROW;\n\t\t\tif (this.colorIndex > 11) {\n\t\t\t\tthis.colorIndex -= COLORS_IN_ROW;\n\t\t\t}\n\n\t\t} else if (evt.keyCode === SPACE_KEY) {\n\t\t\tthis.selectColor(evt);\n\n\t\t} else if (evt.keyCode === TAB_KEY) {\n\t\t\tevt.stopPropagation();\n\t\t\tevt.preventDefault();\n\t\t\treturn;\n\t\t}\n\n\t\tthis.setFocus(this.colorIndex);\n\t}\n\n\tsetFocus(index) {\n\t\tthis.refss[index].current.focus();\n\t}\n\n\tselectColor(evt) {\n\t\tconst color = evt.target.dataset.color;\n\t\tthis.props.subPanelData.clickActionHandler(color);\n\t\tthis.props.closeSubPanel();\n\t}\n\n\trender() {\n\t\tthis.logger.log(\"render\");\n\t\treturn (\n\t\t\t<div className=\"color-picker\" tabIndex={\"-1\"} onClick={this.onClick} onKeyDown={this.onKeyDown}>\n\t\t\t\t<div ref={this.refss[0]} tabIndex={\"-1\"} data-color={\"bkg-col-white-0\"} className=\"color-picker-item white-0\" />\n\t\t\t\t<div ref={this.refss[1]} tabIndex={\"-1\"} data-color={\"bkg-col-yellow-20\"} className=\"color-picker-item yellow-20\" />\n\t\t\t\t<div ref={this.refss[2]} tabIndex={\"-1\"} data-color={\"bkg-col-gray-20\"} className=\"color-picker-item gray-20\" />\n\t\t\t\t<div ref={this.refss[3]} tabIndex={\"-1\"} data-color={\"bkg-col-green-20\"} className=\"color-picker-item green-20\" />\n\t\t\t\t<div ref={this.refss[4]} tabIndex={\"-1\"} data-color={\"bkg-col-teal-20\"} className=\"color-picker-item teal-20\" />\n\t\t\t\t<div ref={this.refss[5]} tabIndex={\"-1\"} data-color={\"bkg-col-cyan-20\"} className=\"color-picker-item cyan-20\" />\n\n\t\t\t\t<div ref={this.refss[6]} tabIndex={\"-1\"} data-color={\"bkg-col-red-50\"} className=\"color-picker-item red-50\" />\n\t\t\t\t<div ref={this.refss[7]} tabIndex={\"-1\"} data-color={\"bkg-col-orange-40\"} className=\"color-picker-item orange-40\" />\n\t\t\t\t<div ref={this.refss[8]} tabIndex={\"-1\"} data-color={\"bkg-col-gray-50\"} className=\"color-picker-item gray-50\" />\n\t\t\t\t<div ref={this.refss[9]} tabIndex={\"-1\"} data-color={\"bkg-col-green-50\"} className=\"color-picker-item green-50\" />\n\t\t\t\t<div ref={this.refss[10]} tabIndex={\"-1\"} data-color={\"bkg-col-teal-50\"} className=\"color-picker-item teal-50\" />\n\t\t\t\t<div ref={this.refss[11]} tabIndex={\"-1\"} data-color={\"bkg-col-cyan-50\"} className=\"color-picker-item cyan-50\" />\n\t\t\t</div>\n\t\t);\n\t}\n}\n\nColorPicker.propTypes = {\n\tcloseSubPanel: PropTypes.func,\n\tsubPanelData: PropTypes.object\n};\n\nexport default ColorPicker;\n","/*\n * Copyright 2017-2023 Elyra Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-empty-function: [\"error\", { \"allow\": [\"arrowFunctions\"] }] */\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { ChevronRight16 } from \"@carbon/icons-react\";\nimport ColorPicker from \"../color-picker\";\n\n// context-menu sizing\nconst CONTEXT_MENU_WIDTH = 160; // See context-menu.scss\nconst CONTEXT_MENU_LINK_HEIGHT = 30; // See context-menu.scss\nconst CONTEXT_MENU_DIVIDER_HEIGHT = 1; // See context-menu.scss\nconst EXTRA_OFFSET = 5; // Extra offset for vertical menu positioning\n\n\nclass CommonContextMenu extends React.Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\tdisplaySubMenuAction: \"\"\n\t\t};\n\t\tthis.itemSelected = this.itemSelected.bind(this);\n\t\tthis.colorClicked = this.colorClicked.bind(this);\n\t}\n\n\tonContextMenu(e) {\n\t\te.preventDefault();\n\t}\n\n\titemSelected(data, selectedEvent) {\n\t\tthis.props.contextHandler(data);\n\t\t// This stops the canvasClicked function from being fired which would\n\t\t// clear any current selections.\n\t\tif (selectedEvent) {\n\t\t\tselectedEvent.stopPropagation();\n\t\t}\n\t}\n\n\tcolorClicked(color) {\n\t\tthis.props.contextHandler(\"colorSelectedObjects\", { color });\n\t}\n\n\t// Returns the size of the menu passed in.\n\tcalculateMenuSize(menu) {\n\t\tvar numDividers = 0;\n\t\tfor (let i = 0; i < menu.length; ++i) {\n\t\t\tconst divider = menu[i].divider;\n\t\t\tif (divider) {\n\t\t\t\tnumDividers++;\n\t\t\t}\n\t\t}\n\n\t\tvar menuSize = {\n\t\t\theight: ((menu.length - numDividers) * CONTEXT_MENU_LINK_HEIGHT) + (numDividers * CONTEXT_MENU_DIVIDER_HEIGHT),\n\t\t\twidth: CONTEXT_MENU_WIDTH\n\t\t};\n\n\t\treturn menuSize;\n\t}\n\n\t// Returns a new position and the canvas rectangle for the context menu based on the current\n\t// mouse position and whether the menu would appear outside the edges of the page.\n\tcalculateMenuPos(mousePos, menuSize, canvasRect) {\n\t\tconst menuPos = { x: mousePos.x, y: mousePos.y };\n\n\t\t// Reposition contextMenu if it will show off the bottom of the page\n\t\tif (mousePos.y + menuSize.height > canvasRect.height) {\n\t\t\tmenuPos.y = canvasRect.height - menuSize.height - EXTRA_OFFSET; // Move up by extra offset so it looks nice\n\n\t\t\t// If repositioning the menu would push it off the top of the page\n\t\t\t// (in very short browser windows) position it at the top.\n\t\t\tif (menuPos.y < 0) {\n\t\t\t\tmenuPos.y = 0;\n\t\t\t}\n\t\t}\n\n\t\t// Reposition contextMenu if it will show off the right of the page\n\t\tif (mousePos.x + menuSize.width > canvasRect.width) {\n\t\t\tmenuPos.x -= menuSize.width;\n\t\t}\n\n\t\t// Add a pixel to x and y because on Chrome without this the context menu\n\t\t// appears with the top corner of the first menu item under the mouse\n\t\t// cursor. This highlights the first menu item (which looks weird) and, if\n\t\t// the first item is a cascade menu, automatically opens the sub-menu.\n\t\tmenuPos.x += 1;\n\t\tmenuPos.y += 1;\n\n\t\treturn menuPos;\n\t}\n\n\t// Returns true of all the items in a sub-menu are disabled.\n\tareAllSubmenuItemsDisabled(submenuItems) {\n\t\tlet itemCount = 0;\n\t\tlet disabledCount = 0;\n\t\tsubmenuItems.forEach(function(submenuItem) {\n\t\t\tif (!submenuItem.divider) {\n\t\t\t\titemCount++;\n\t\t\t}\n\t\t\tif (submenuItem.enable === false) {\n\t\t\t\tdisabledCount++;\n\t\t\t}\n\t\t});\n\t\treturn disabledCount === itemCount;\n\t}\n\n\t// Builds a new menu based on the menu defintion passed in.\n\tbuildMenu(menuDefinition, menuSize, menuPos, canvasRect) {\n\t\tconst menuItems = [];\n\n\t\tlet runningYPos = 0;\n\t\t// Records if we have just displayed a divider. This is useful because we\n\t\t// only want to display one divider if there is a divider element\n\t\t// immediately after another divider element in the menuDefintion array.\n\t\tlet previousDivider = false;\n\n\t\tfor (let i = 0; i < menuDefinition.length; ++i) {\n\t\t\tconst divider = menuDefinition[i].divider;\n\t\t\tconst submenu = menuDefinition[i].submenu;\n\n\t\t\tif (divider) {\n\t\t\t\tif (!previousDivider) {\n\t\t\t\t\tmenuItems.push(<div key={i + 1} className={\"context-menu-divider\"} />);\n\t\t\t\t\trunningYPos += CONTEXT_MENU_DIVIDER_HEIGHT;\n\t\t\t\t\tpreviousDivider = true;\n\t\t\t\t}\n\t\t\t} else if (menuDefinition[i].action === \"colorBackground\") {\n\t\t\t\tpreviousDivider = false;\n\t\t\t\tconst disabled = false;\n\t\t\t\tconst subMenuSize = { width: CONTEXT_MENU_WIDTH, height: 50 };\n\t\t\t\tconst subMenuContent = this.buildColorPickerPanel();\n\n\t\t\t\tconst subMenu = this.buildSubMenu(\n\t\t\t\t\tmenuDefinition, i, subMenuContent, runningYPos, menuPos, menuSize, subMenuSize, canvasRect, disabled);\n\t\t\t\tmenuItems.push(subMenu);\n\n\t\t\t\trunningYPos += CONTEXT_MENU_LINK_HEIGHT;\n\n\t\t\t} else if (submenu) {\n\t\t\t\tpreviousDivider = false;\n\t\t\t\tconst disabled = this.areAllSubmenuItemsDisabled(menuDefinition[i].menu);\n\t\t\t\tconst subMenuSize = this.calculateMenuSize(menuDefinition[i].menu);\n\t\t\t\tconst subMenuContent = this.buildMenu(menuDefinition[i].menu, menuSize, menuPos, canvasRect);\n\n\t\t\t\tconst subMenu = this.buildSubMenu(\n\t\t\t\t\tmenuDefinition, i, subMenuContent, runningYPos, menuPos, menuSize, subMenuSize, canvasRect, disabled);\n\t\t\t\tmenuItems.push(subMenu);\n\n\t\t\t\trunningYPos += CONTEXT_MENU_LINK_HEIGHT;\n\n\t\t\t} else {\n\t\t\t\tpreviousDivider = false;\n\t\t\t\tconst className = \"context-menu-item\" +\n\t\t\t\t\t(menuDefinition[i].enable === false ? \" disabled\" : \"\");\n\n\t\t\t\tconst onClickFunction = menuDefinition[i].enable === false\n\t\t\t\t\t? null\n\t\t\t\t\t: this.itemSelected.bind(null, menuDefinition[i].action);\n\n\t\t\t\tmenuItems.push((\n\t\t\t\t\t<div key={i + 1} className={className} onClick={onClickFunction} role=\"menuitem\">\n\t\t\t\t\t\t{menuDefinition[i].label}\n\t\t\t\t\t</div>\n\t\t\t\t));\n\t\t\t\trunningYPos += CONTEXT_MENU_LINK_HEIGHT;\n\t\t\t}\n\t\t}\n\t\treturn menuItems;\n\t}\n\n\tbuildColorPickerPanel() {\n\t\tconst subPanelData = {\n\t\t\tclickActionHandler: (c) => this.colorClicked(c)\n\t\t};\n\t\treturn (\n\t\t\t<ColorPicker subPanelData={subPanelData} closeSubPanel={() => null} />\n\t\t);\n\t}\n\n\tsubMenuMouseEnter(action) {\n\t\tthis.setState({ displaySubMenuAction: action });\n\t}\n\n\tsubMenuMouseLeave(action) {\n\t\tthis.setState({ displaySubMenuAction: \"\" });\n\t}\n\n\t// Builds a sub-menu for the menuitem identified by the index into the menudefintion.\n\tbuildSubMenu(menuDefinition, index, subMenuContent, runningYPos, menuPos,\n\t\tmenuSize, subMenuSize, canvasRect, disabled) {\n\t\tconst rtl = this.buildRtlState(menuPos, menuSize, subMenuSize, canvasRect);\n\t\tconst subMenuPosStyle = this.buildSubMenuPosStyle(runningYPos, menuPos, subMenuSize, canvasRect, rtl);\n\t\tconst menuItem = menuDefinition[index];\n\n\t\tconst icon = (<ChevronRight16 />);\n\t\tconst menuItemContent = <div>{menuItem.label}{icon} </div>;\n\t\tconst menuItemClass = \"context-menu-item \" + (disabled ? \" disabled\" : \"\");\n\t\tconst subMenuClass = \"context-menu-popover context-menu-submenu\" +\n\t\t\t(this.state.displaySubMenuAction === menuItem.action ? \" context-menu--visible\" : \"\");\n\t\tconst onMouseEnter = (disabled ? null : this.subMenuMouseEnter.bind(this, menuItem.action));\n\t\tconst onMouseLeave = (disabled ? null : this.subMenuMouseLeave.bind(this));\n\n\t\treturn (\n\t\t\t<div key={index + 1} className={menuItemClass} aria-haspopup role=\"menuitem\"\n\t\t\t\tonMouseEnter={onMouseEnter}\n\t\t\t\tonMouseLeave={onMouseLeave}\n\t\t\t>\n\t\t\t\t{menuItemContent}\n\t\t\t\t<div style={subMenuPosStyle} className={subMenuClass}>\n\t\t\t\t\t{subMenuContent}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\t// Returns a boolean to indicate whether the submenu should appear on the\n\t// right of the context menu (rtl === false) or on the left of the context\n\t// menu (rtl === true).\n\tbuildRtlState(menuPos, menuSize, subMenuSize, canvasRect) {\n\t\t// Ensure that the combined menu position, plus the menu width,\n\t\t// plus the submenu width, does not exceed the viewport bounds.\n\t\treturn (menuPos.x + menuSize.width + subMenuSize.width > canvasRect.right);\n\t}\n\n\t// Returns a style object that can be applied to the sub-menu to adjust its:\n\t// * vertical (y) position: If the submenu is tall enough that it would be\n\t// displayed off the bottom of the canvas area.\n\t// * horizontal (x) position: If the sub-menu needs to appear on the left\n\t// side of the main menu (rtl === true).\n\tbuildSubMenuPosStyle(runningYPos, menuPos, subMenuSize, canvasRect, rtl) {\n\t\t// Does the submenu go below the bottom of the viewport?\n\t\tconst y = canvasRect.bottom - (menuPos.y + runningYPos + subMenuSize.height);\n\n\t\t// If submenu is not below the viewport bottom set offset to 0 so the\n\t\t// submenu will not be moved. Otherwise, y will be used to move the\n\t\t// submenu up fully into the view port.\n\t\tconst offset = (y > 0) ? 0 : y - EXTRA_OFFSET;\n\n\t\tconst subMenuPosStyle = {\n\t\t\ttop: offset + \"px\" // Use negative to push the menu up\n\t\t};\n\n\t\tif (rtl) {\n\t\t\tsubMenuPosStyle.left = -CONTEXT_MENU_WIDTH + \"px\";\n\t\t}\n\n\t\treturn subMenuPosStyle;\n\t}\n\n\t// Returns the menu definition array passed in making sure any\n\t// submenu items have an action. Note: some applications forget\n\t// to do provide an action because for the submenu it is only\n\t// used by the context menu code.\n\tensureAllSubMenuItemsHaveAction(menuDef) {\n\t\treturn menuDef.map((item, index) => {\n\t\t\tif (item.submenu && typeof item.action === \"undefined\") {\n\t\t\t\treturn { ...item, action: \"submenu_\" + index };\n\t\t\t}\n\t\t\treturn item;\n\t\t});\n\t}\n\n\trender() {\n\t\t// Reposition contextMenu so that it does not show off the screen\n\t\tconst menuSize = this.calculateMenuSize(this.props.menuDefinition);\n\t\tconst menuPos = this.calculateMenuPos(this.props.mousePos, menuSize, this.props.canvasRect);\n\t\tconst posStyle = {\n\t\t\tleft: menuPos.x + \"px\",\n\t\t\ttop: menuPos.y + \"px\"\n\t\t};\n\n\t\tconst menuDefinition = this.ensureAllSubMenuItemsHaveAction(this.props.menuDefinition);\n\t\tconst menuItems = this.buildMenu(menuDefinition, menuSize, menuPos, this.props.canvasRect);\n\n\t\treturn (\n\t\t\t<div id=\"context-menu-popover\" className=\"context-menu-popover\" style={posStyle} onContextMenu={this.onContextMenu}>\n\t\t\t\t{menuItems}\n\t\t\t</div>\n\t\t);\n\t}\n}\n\nCommonContextMenu.propTypes = {\n\tcontextHandler: PropTypes.func.isRequired,\n\tmenuDefinition: PropTypes.array.isRequired,\n\tcanvasRect: PropTypes.object.isRequired,\n\tmousePos: PropTypes.object.isRequired\n};\n\nexport default CommonContextMenu;\n","/*\n * Copyright 2017-2023 Elyra Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport CommonContextMenu from \"./common-context-menu.jsx\";\n\nexport default class ContextMenuWrapper extends React.Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = {};\n\n\t\tthis.contextMenuClicked = this.contextMenuClicked.bind(this);\n\t\tthis.handleClickOutside = this.handleClickOutside.bind(this);\n\t}\n\n\tcomponentDidMount() {\n\t\tdocument.addEventListener(\"click\", this.handleClickOutside, true);\n\t}\n\n\tcomponentWillUnmount() {\n\t\tdocument.removeEventListener(\"click\", this.handleClickOutside, true);\n\t}\n\n\t// Returns an object that describes the dimensions of a rectangle for the\n\t// canvas div with coordinates based on the top left corner of the div. This\n\t// will match the coordinates for the mouse position where the user clicked,\n\t// which is specified in this.props.contextMenuPos object.\n\tgetCanvasRect() {\n\t\tconst containingDiv = document.getElementById(this.props.containingDivId);\n\t\tif (containingDiv) {\n\t\t\tconst clientRect = containingDiv.getBoundingClientRect();\n\t\t\treturn {\n\t\t\t\ttop: 0,\n\t\t\t\tbottom: clientRect.bottom - clientRect.top,\n\t\t\t\tleft: 0,\n\t\t\t\tright: clientRect.right - clientRect.left,\n\t\t\t\theight: clientRect.height,\n\t\t\t\twidth: clientRect.width\n\t\t\t};\n\t\t}\n\t\t// Assist Jests tests to run when containingDiv is not available.\n\t\treturn { top: 0, bottom: 200, left: 0, right: 50, height: 200, width: 50 };\n\t}\n\n\thandleClickOutside(e) {\n\t\t// On Safari, when a user is displaying the context menu with a ctrl-click\n\t\t// (which is a supported context menu gesture on the Mac) a secondary click\n\t\t// event is emmitted which is received here with the ctrlKey field enabled.\n\t\t// So we ignore that event otherwse, if we continue, the context menu will\n\t\t// be closed.\n\t\tif (e.ctrlKey) {\n\t\t\te.stopPropagation();\n\t\t\treturn;\n\t\t}\n\n\t\t// If the click was anywhere outside the context menu and\n\t\t// the ellipsis button we just close the menu.\n\t\tif (!this.isOverContextMenu(e) && !this.isOverEllipsisButton(e)) {\n\t\t\t// This stop propagation is needed in common canvas so that selected nodes will\n\t\t\t// remain selected even after clicking outside the context menu to close the menu.\n\t\t\tif (this.props.stopPropagation) {\n\t\t\t\te.stopPropagation();\n\t\t\t}\n\t\t\tthis.props.closeContextMenu();\n\t\t}\n\t}\n\n\t// Retruns true if the event occurred over the context menu.\n\tisOverContextMenu(e) {\n\t\tconst domNode = document.getElementById(\"context-menu-popover\");\n\t\treturn !domNode || domNode.contains(e.target);\n\t}\n\n\t// Returns true if the event occurred over the ellipsis button. Typically\n\t// there will be only one ellipsis button on the canvas, since they are only\n\t// displayed on hover, but in some test cicumstances there might be more\n\t// than one.\n\tisOverEllipsisButton(e) {\n\t\tconst ellipsisNodes = document.getElementsByClassName(\"d3-node-ellipsis-group\");\n\t\tlet state = false;\n\t\tfor (let i = 0; i < ellipsisNodes.length; i++) {\n\t\t\tif (state === false && ellipsisNodes[i].contains(e.target)) {\n\t\t\t\tstate = true;\n\t\t\t}\n\t\t}\n\t\treturn state;\n\t}\n\n\tcontextMenuClicked(action, param) {\n\t\tthis.props.contextMenuActionHandler(action, param);\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<CommonContextMenu\n\t\t\t\tcontextHandler={this.contextMenuClicked}\n\t\t\t\tmenuDefinition={this.props.contextMenuDef}\n\t\t\t\tcanvasRect={this.getCanvasRect()}\n\t\t\t\tmousePos={this.props.contextMenuPos}\n\t\t\t/>\n\t\t);\n\t}\n}\n\nContextMenuWrapper.propTypes = {\n\tcontextMenuDef: PropTypes.array.isRequired,\n\tcontainingDivId: PropTypes.string.isRequired,\n\tcontextMenuPos: PropTypes.object.isRequired,\n\tcontextMenuActionHandler: PropTypes.func.isRequired,\n\tcloseContextMenu: PropTypes.func.isRequired,\n\tstopPropagation: PropTypes.bool\n};\n"],"names":["_React$Component","ColorPicker","props","_this","_classCallCheck","_callSuper","logger","Logger","colorIndex","refss","i","push","React","createRef","onClick","bind","_assertThisInitialized","onKeyDown","_inherits","_createClass","key","value","this","setFocus","evt","stopPropagation","selectColor","keyCode","TOTAL_COLORS","preventDefault","index","current","focus","color","target","dataset","subPanelData","clickActionHandler","closeSubPanel","log","createElement","className","tabIndex","ref","Component","CommonContextMenu","state","displaySubMenuAction","itemSelected","colorClicked","e","data","selectedEvent","contextHandler","menu","numDividers","length","divider","height","width","mousePos","menuSize","canvasRect","menuPos","x","y","submenuItems","itemCount","disabledCount","forEach","submenuItem","enable","menuDefinition","menuItems","runningYPos","previousDivider","submenu","action","subMenuSize","subMenuContent","buildColorPickerPanel","subMenu","buildSubMenu","disabled","areAllSubmenuItemsDisabled","calculateMenuSize","buildMenu","onClickFunction","role","label","_this2","c","setState","rtl","buildRtlState","subMenuPosStyle","buildSubMenuPosStyle","menuItem","icon","ChevronRight16","menuItemContent","menuItemClass","subMenuClass","onMouseEnter","subMenuMouseEnter","onMouseLeave","subMenuMouseLeave","style","right","bottom","top","left","menuDef","map","item","_objectSpread","calculateMenuPos","posStyle","ensureAllSubMenuItemsHaveAction","id","onContextMenu","ContextMenuWrapper","contextMenuClicked","handleClickOutside","document","addEventListener","removeEventListener","containingDiv","getElementById","containingDivId","clientRect","getBoundingClientRect","ctrlKey","isOverContextMenu","isOverEllipsisButton","closeContextMenu","domNode","contains","ellipsisNodes","getElementsByClassName","param","contextMenuActionHandler","contextMenuDef","getCanvasRect","contextMenuPos"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- "use strict";var e=require("./createClass-5ca26865.js"),t=require("./inherits-41673c87.js"),n=require("react"),o=require("./defineProperty-6d406743.js"),r=require("@carbon/icons-react"),i=require("./canvas-logger-295dafe4.js");function l(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var a=l(n);function c(e,n,o){return n=t._getPrototypeOf(n),t._possibleConstructorReturn(e,s()?Reflect.construct(n,o||[],t._getPrototypeOf(e).constructor):n.apply(e,o))}function s(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(s=function(){return!!e})()}var u=function(n){function o(n){var r;e._classCallCheck(this,o),(r=c(this,o,[n])).logger=new i.Logger("CC-Color-Picker"),r.colorIndex=0,r.refss=[];for(var l=0;l<12;l++)r.refss.push(a.default.createRef());return r.onClick=r.onClick.bind(t._assertThisInitialized(r)),r.onKeyDown=r.onKeyDown.bind(t._assertThisInitialized(r)),r}return t._inherits(o,n),e._createClass(o,[{key:"componentDidMount",value:function(){this.setFocus(this.colorIndex)}},{key:"onClick",value:function(e){e.stopPropagation(),this.selectColor(e)}},{key:"onKeyDown",value:function(e){if(39===e.keyCode)e.stopPropagation(),this.colorIndex++,this.colorIndex>11&&(this.colorIndex=0);else if(37===e.keyCode)e.stopPropagation(),this.colorIndex--,this.colorIndex<0&&(this.colorIndex=11);else if(38===e.keyCode)e.stopPropagation(),this.colorIndex-=6,this.colorIndex<0&&(this.colorIndex+=6);else if(40===e.keyCode)e.stopPropagation(),this.colorIndex+=6,this.colorIndex>11&&(this.colorIndex-=6);else if(32===e.keyCode)this.selectColor(e);else if(9===e.keyCode)return e.stopPropagation(),void e.preventDefault();this.setFocus(this.colorIndex)}},{key:"setFocus",value:function(e){this.refss[e].current.focus()}},{key:"selectColor",value:function(e){var t=e.target.dataset.color;this.props.subPanelData.clickActionHandler(t),this.props.closeSubPanel()}},{key:"render",value:function(){return this.logger.log("render"),a.default.createElement("div",{className:"color-picker",tabIndex:"-1",onClick:this.onClick,onKeyDown:this.onKeyDown},a.default.createElement("div",{ref:this.refss[0],tabIndex:"-1","data-color":"bkg-col-white-0",className:"color-picker-item white-0"}),a.default.createElement("div",{ref:this.refss[1],tabIndex:"-1","data-color":"bkg-col-yellow-20",className:"color-picker-item yellow-20"}),a.default.createElement("div",{ref:this.refss[2],tabIndex:"-1","data-color":"bkg-col-gray-20",className:"color-picker-item gray-20"}),a.default.createElement("div",{ref:this.refss[3],tabIndex:"-1","data-color":"bkg-col-green-20",className:"color-picker-item green-20"}),a.default.createElement("div",{ref:this.refss[4],tabIndex:"-1","data-color":"bkg-col-teal-20",className:"color-picker-item teal-20"}),a.default.createElement("div",{ref:this.refss[5],tabIndex:"-1","data-color":"bkg-col-cyan-20",className:"color-picker-item cyan-20"}),a.default.createElement("div",{ref:this.refss[6],tabIndex:"-1","data-color":"bkg-col-red-50",className:"color-picker-item red-50"}),a.default.createElement("div",{ref:this.refss[7],tabIndex:"-1","data-color":"bkg-col-orange-40",className:"color-picker-item orange-40"}),a.default.createElement("div",{ref:this.refss[8],tabIndex:"-1","data-color":"bkg-col-gray-50",className:"color-picker-item gray-50"}),a.default.createElement("div",{ref:this.refss[9],tabIndex:"-1","data-color":"bkg-col-green-50",className:"color-picker-item green-50"}),a.default.createElement("div",{ref:this.refss[10],tabIndex:"-1","data-color":"bkg-col-teal-50",className:"color-picker-item teal-50"}),a.default.createElement("div",{ref:this.refss[11],tabIndex:"-1","data-color":"bkg-col-cyan-50",className:"color-picker-item cyan-50"}))}}]),o}(a.default.Component);function d(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,o)}return n}function f(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?d(Object(n),!0).forEach((function(t){o._defineProperty(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):d(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function h(e,n,o){return n=t._getPrototypeOf(n),t._possibleConstructorReturn(e,p()?Reflect.construct(n,o||[],t._getPrototypeOf(e).constructor):n.apply(e,o))}function p(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(p=function(){return!!e})()}var v=function(n){function o(n){var r;return e._classCallCheck(this,o),(r=h(this,o,[n])).state={displaySubMenuAction:""},r.itemSelected=r.itemSelected.bind(t._assertThisInitialized(r)),r.colorClicked=r.colorClicked.bind(t._assertThisInitialized(r)),r}return t._inherits(o,n),e._createClass(o,[{key:"onContextMenu",value:function(e){e.preventDefault()}},{key:"itemSelected",value:function(e,t){this.props.contextHandler(e),t&&t.stopPropagation()}},{key:"colorClicked",value:function(e){this.props.contextHandler("colorSelectedObjects",{color:e})}},{key:"calculateMenuSize",value:function(e){for(var t=0,n=0;n<e.length;++n){e[n].divider&&t++}return{height:30*(e.length-t)+1*t,width:160}}},{key:"calculateMenuPos",value:function(e,t,n){var o={x:e.x,y:e.y};return e.y+t.height>n.height&&(o.y=n.height-t.height-5,o.y<0&&(o.y=0)),e.x+t.width>n.width&&(o.x-=t.width),o.x+=1,o.y+=1,o}},{key:"areAllSubmenuItemsDisabled",value:function(e){var t=0,n=0;return e.forEach((function(e){e.divider||t++,!1===e.enable&&n++})),n===t}},{key:"buildMenu",value:function(e,t,n,o){for(var r=[],i=0,l=!1,c=0;c<e.length;++c){var s=e[c].divider,u=e[c].submenu;if(s)l||(r.push(a.default.createElement("div",{key:c+1,className:"context-menu-divider"})),i+=1,l=!0);else if("colorBackground"===e[c].action){l=!1;var d={width:160,height:50},f=this.buildColorPickerPanel(),h=this.buildSubMenu(e,c,f,i,n,t,d,o,!1);r.push(h),i+=30}else if(u){l=!1;var p=this.areAllSubmenuItemsDisabled(e[c].menu),v=this.calculateMenuSize(e[c].menu),m=this.buildMenu(e[c].menu,t,n,o),b=this.buildSubMenu(e,c,m,i,n,t,v,o,p);r.push(b),i+=30}else{l=!1;var y="context-menu-item"+(!1===e[c].enable?" disabled":""),k=!1===e[c].enable?null:this.itemSelected.bind(null,e[c].action);r.push(a.default.createElement("div",{key:c+1,className:y,onClick:k,role:"menuitem"},e[c].label)),i+=30}}return r}},{key:"buildColorPickerPanel",value:function(){var e=this,t={clickActionHandler:function(t){return e.colorClicked(t)}};return a.default.createElement(u,{subPanelData:t,closeSubPanel:function(){return null}})}},{key:"subMenuMouseEnter",value:function(e){this.setState({displaySubMenuAction:e})}},{key:"subMenuMouseLeave",value:function(e){this.setState({displaySubMenuAction:""})}},{key:"buildSubMenu",value:function(e,t,n,o,i,l,c,s,u){var d=this.buildRtlState(i,l,c,s),f=this.buildSubMenuPosStyle(o,i,c,s,d),h=e[t],p=a.default.createElement(r.ChevronRight16,null),v=a.default.createElement("div",null,h.label,p," "),m="context-menu-item "+(u?" disabled":""),b="context-menu-popover context-menu-submenu"+(this.state.displaySubMenuAction===h.action?" context-menu--visible":""),y=u?null:this.subMenuMouseEnter.bind(this,h.action),k=u?null:this.subMenuMouseLeave.bind(this);return a.default.createElement("div",{key:t+1,className:m,"aria-haspopup":!0,role:"menuitem",onMouseEnter:y,onMouseLeave:k},v,a.default.createElement("div",{style:f,className:b},n))}},{key:"buildRtlState",value:function(e,t,n,o){return e.x+t.width+n.width>o.right}},{key:"buildSubMenuPosStyle",value:function(e,t,n,o,r){var i=o.bottom-(t.y+e+n.height),l={top:(i>0?0:i-5)+"px"};return r&&(l.left="-160px"),l}},{key:"ensureAllSubMenuItemsHaveAction",value:function(e){return e.map((function(e,t){return e.submenu&&void 0===e.action?f(f({},e),{},{action:"submenu_"+t}):e}))}},{key:"render",value:function(){var e=this.calculateMenuSize(this.props.menuDefinition),t=this.calculateMenuPos(this.props.mousePos,e,this.props.canvasRect),n={left:t.x+"px",top:t.y+"px"},o=this.ensureAllSubMenuItemsHaveAction(this.props.menuDefinition),r=this.buildMenu(o,e,t,this.props.canvasRect);return a.default.createElement("div",{id:"context-menu-popover",className:"context-menu-popover",style:n,onContextMenu:this.onContextMenu},r)}}]),o}(a.default.Component);function m(e,n,o){return n=t._getPrototypeOf(n),t._possibleConstructorReturn(e,b()?Reflect.construct(n,o||[],t._getPrototypeOf(e).constructor):n.apply(e,o))}function b(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(b=function(){return!!e})()}var y=function(n){function o(n){var r;return e._classCallCheck(this,o),(r=m(this,o,[n])).state={},r.contextMenuClicked=r.contextMenuClicked.bind(t._assertThisInitialized(r)),r.handleClickOutside=r.handleClickOutside.bind(t._assertThisInitialized(r)),r}return t._inherits(o,n),e._createClass(o,[{key:"componentDidMount",value:function(){document.addEventListener("click",this.handleClickOutside,!0)}},{key:"componentWillUnmount",value:function(){document.removeEventListener("click",this.handleClickOutside,!0)}},{key:"getCanvasRect",value:function(){var e=document.getElementById(this.props.containingDivId);if(e){var t=e.getBoundingClientRect();return{top:0,bottom:t.bottom-t.top,left:0,right:t.right-t.left,height:t.height,width:t.width}}return{top:0,bottom:200,left:0,right:50,height:200,width:50}}},{key:"handleClickOutside",value:function(e){e.ctrlKey?e.stopPropagation():this.isOverContextMenu(e)||this.isOverEllipsisButton(e)||(this.props.stopPropagation&&e.stopPropagation(),this.props.closeContextMenu())}},{key:"isOverContextMenu",value:function(e){var t=document.getElementById("context-menu-popover");return!t||t.contains(e.target)}},{key:"isOverEllipsisButton",value:function(e){for(var t=document.getElementsByClassName("d3-node-ellipsis-group"),n=!1,o=0;o<t.length;o++)!1===n&&t[o].contains(e.target)&&(n=!0);return n}},{key:"contextMenuClicked",value:function(e,t){this.props.contextMenuActionHandler(e,t)}},{key:"render",value:function(){return a.default.createElement(v,{contextHandler:this.contextMenuClicked,menuDefinition:this.props.contextMenuDef,canvasRect:this.getCanvasRect(),mousePos:this.props.contextMenuPos})}}]),o}(a.default.Component);exports.ColorPicker=u,exports.ContextMenuWrapper=y;
2
- //# sourceMappingURL=context-menu-wrapper-5d6a399f.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"context-menu-wrapper-5d6a399f.js","sources":["../src/color-picker/color-picker.jsx","../src/context-menu/common-context-menu.jsx","../src/context-menu/context-menu-wrapper.jsx"],"sourcesContent":["/*\n * Copyright 2017-2023 Elyra Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport Logger from \"../logging/canvas-logger.js\";\n\nconst TAB_KEY = 9;\nconst SPACE_KEY = 32;\nconst LEFT_ARROW_KEY = 37;\nconst UP_ARROW_KEY = 38;\nconst RIGHT_ARROW_KEY = 39;\nconst DOWN_ARROW_KEY = 40;\n\n// These values must reflect the layout of the color picker panel\n// decribed by the SCSS/CSS.\nconst COLORS_IN_ROW = 6;\nconst TOTAL_COLORS = 12;\n\nclass ColorPicker extends React.Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.logger = new Logger(\"CC-Color-Picker\");\n\n\t\tthis.colorIndex = 0;\n\n\t\tthis.refss = [];\n\t\tfor (let i = 0; i < TOTAL_COLORS; i++) {\n\t\t\tthis.refss.push(React.createRef());\n\t\t}\n\t\tthis.onClick = this.onClick.bind(this);\n\t\tthis.onKeyDown = this.onKeyDown.bind(this);\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.setFocus(this.colorIndex);\n\t}\n\n\tonClick(evt) {\n\t\tevt.stopPropagation();\n\t\tthis.selectColor(evt);\n\t}\n\n\tonKeyDown(evt) {\n\t\tif (evt.keyCode === RIGHT_ARROW_KEY) {\n\t\t\tevt.stopPropagation();\n\t\t\tthis.colorIndex++;\n\t\t\tif (this.colorIndex > TOTAL_COLORS - 1) {\n\t\t\t\tthis.colorIndex = 0;\n\t\t\t}\n\n\t\t} else if (evt.keyCode === LEFT_ARROW_KEY) {\n\t\t\tevt.stopPropagation();\n\t\t\tthis.colorIndex--;\n\t\t\tif (this.colorIndex < 0) {\n\t\t\t\tthis.colorIndex = TOTAL_COLORS - 1;\n\t\t\t}\n\n\t\t} else if (evt.keyCode === UP_ARROW_KEY) {\n\t\t\tevt.stopPropagation();\n\t\t\tthis.colorIndex -= COLORS_IN_ROW;\n\t\t\tif (this.colorIndex < 0) {\n\t\t\t\tthis.colorIndex += COLORS_IN_ROW;\n\t\t\t}\n\n\t\t} else if (evt.keyCode === DOWN_ARROW_KEY) {\n\t\t\tevt.stopPropagation();\n\t\t\tthis.colorIndex += COLORS_IN_ROW;\n\t\t\tif (this.colorIndex > 11) {\n\t\t\t\tthis.colorIndex -= COLORS_IN_ROW;\n\t\t\t}\n\n\t\t} else if (evt.keyCode === SPACE_KEY) {\n\t\t\tthis.selectColor(evt);\n\n\t\t} else if (evt.keyCode === TAB_KEY) {\n\t\t\tevt.stopPropagation();\n\t\t\tevt.preventDefault();\n\t\t\treturn;\n\t\t}\n\n\t\tthis.setFocus(this.colorIndex);\n\t}\n\n\tsetFocus(index) {\n\t\tthis.refss[index].current.focus();\n\t}\n\n\tselectColor(evt) {\n\t\tconst color = evt.target.dataset.color;\n\t\tthis.props.subPanelData.clickActionHandler(color);\n\t\tthis.props.closeSubPanel();\n\t}\n\n\trender() {\n\t\tthis.logger.log(\"render\");\n\t\treturn (\n\t\t\t<div className=\"color-picker\" tabIndex={\"-1\"} onClick={this.onClick} onKeyDown={this.onKeyDown}>\n\t\t\t\t<div ref={this.refss[0]} tabIndex={\"-1\"} data-color={\"bkg-col-white-0\"} className=\"color-picker-item white-0\" />\n\t\t\t\t<div ref={this.refss[1]} tabIndex={\"-1\"} data-color={\"bkg-col-yellow-20\"} className=\"color-picker-item yellow-20\" />\n\t\t\t\t<div ref={this.refss[2]} tabIndex={\"-1\"} data-color={\"bkg-col-gray-20\"} className=\"color-picker-item gray-20\" />\n\t\t\t\t<div ref={this.refss[3]} tabIndex={\"-1\"} data-color={\"bkg-col-green-20\"} className=\"color-picker-item green-20\" />\n\t\t\t\t<div ref={this.refss[4]} tabIndex={\"-1\"} data-color={\"bkg-col-teal-20\"} className=\"color-picker-item teal-20\" />\n\t\t\t\t<div ref={this.refss[5]} tabIndex={\"-1\"} data-color={\"bkg-col-cyan-20\"} className=\"color-picker-item cyan-20\" />\n\n\t\t\t\t<div ref={this.refss[6]} tabIndex={\"-1\"} data-color={\"bkg-col-red-50\"} className=\"color-picker-item red-50\" />\n\t\t\t\t<div ref={this.refss[7]} tabIndex={\"-1\"} data-color={\"bkg-col-orange-40\"} className=\"color-picker-item orange-40\" />\n\t\t\t\t<div ref={this.refss[8]} tabIndex={\"-1\"} data-color={\"bkg-col-gray-50\"} className=\"color-picker-item gray-50\" />\n\t\t\t\t<div ref={this.refss[9]} tabIndex={\"-1\"} data-color={\"bkg-col-green-50\"} className=\"color-picker-item green-50\" />\n\t\t\t\t<div ref={this.refss[10]} tabIndex={\"-1\"} data-color={\"bkg-col-teal-50\"} className=\"color-picker-item teal-50\" />\n\t\t\t\t<div ref={this.refss[11]} tabIndex={\"-1\"} data-color={\"bkg-col-cyan-50\"} className=\"color-picker-item cyan-50\" />\n\t\t\t</div>\n\t\t);\n\t}\n}\n\nColorPicker.propTypes = {\n\tcloseSubPanel: PropTypes.func,\n\tsubPanelData: PropTypes.object\n};\n\nexport default ColorPicker;\n","/*\n * Copyright 2017-2023 Elyra Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* eslint no-empty-function: [\"error\", { \"allow\": [\"arrowFunctions\"] }] */\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport { ChevronRight16 } from \"@carbon/icons-react\";\nimport ColorPicker from \"../color-picker\";\n\n// context-menu sizing\nconst CONTEXT_MENU_WIDTH = 160; // See context-menu.scss\nconst CONTEXT_MENU_LINK_HEIGHT = 30; // See context-menu.scss\nconst CONTEXT_MENU_DIVIDER_HEIGHT = 1; // See context-menu.scss\nconst EXTRA_OFFSET = 5; // Extra offset for vertical menu positioning\n\n\nclass CommonContextMenu extends React.Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\tdisplaySubMenuAction: \"\"\n\t\t};\n\t\tthis.itemSelected = this.itemSelected.bind(this);\n\t\tthis.colorClicked = this.colorClicked.bind(this);\n\t}\n\n\tonContextMenu(e) {\n\t\te.preventDefault();\n\t}\n\n\titemSelected(data, selectedEvent) {\n\t\tthis.props.contextHandler(data);\n\t\t// This stops the canvasClicked function from being fired which would\n\t\t// clear any current selections.\n\t\tif (selectedEvent) {\n\t\t\tselectedEvent.stopPropagation();\n\t\t}\n\t}\n\n\tcolorClicked(color) {\n\t\tthis.props.contextHandler(\"colorSelectedObjects\", { color });\n\t}\n\n\t// Returns the size of the menu passed in.\n\tcalculateMenuSize(menu) {\n\t\tvar numDividers = 0;\n\t\tfor (let i = 0; i < menu.length; ++i) {\n\t\t\tconst divider = menu[i].divider;\n\t\t\tif (divider) {\n\t\t\t\tnumDividers++;\n\t\t\t}\n\t\t}\n\n\t\tvar menuSize = {\n\t\t\theight: ((menu.length - numDividers) * CONTEXT_MENU_LINK_HEIGHT) + (numDividers * CONTEXT_MENU_DIVIDER_HEIGHT),\n\t\t\twidth: CONTEXT_MENU_WIDTH\n\t\t};\n\n\t\treturn menuSize;\n\t}\n\n\t// Returns a new position and the canvas rectangle for the context menu based on the current\n\t// mouse position and whether the menu would appear outside the edges of the page.\n\tcalculateMenuPos(mousePos, menuSize, canvasRect) {\n\t\tconst menuPos = { x: mousePos.x, y: mousePos.y };\n\n\t\t// Reposition contextMenu if it will show off the bottom of the page\n\t\tif (mousePos.y + menuSize.height > canvasRect.height) {\n\t\t\tmenuPos.y = canvasRect.height - menuSize.height - EXTRA_OFFSET; // Move up by extra offset so it looks nice\n\n\t\t\t// If repositioning the menu would push it off the top of the page\n\t\t\t// (in very short browser windows) position it at the top.\n\t\t\tif (menuPos.y < 0) {\n\t\t\t\tmenuPos.y = 0;\n\t\t\t}\n\t\t}\n\n\t\t// Reposition contextMenu if it will show off the right of the page\n\t\tif (mousePos.x + menuSize.width > canvasRect.width) {\n\t\t\tmenuPos.x -= menuSize.width;\n\t\t}\n\n\t\t// Add a pixel to x and y because on Chrome without this the context menu\n\t\t// appears with the top corner of the first menu item under the mouse\n\t\t// cursor. This highlights the first menu item (which looks weird) and, if\n\t\t// the first item is a cascade menu, automatically opens the sub-menu.\n\t\tmenuPos.x += 1;\n\t\tmenuPos.y += 1;\n\n\t\treturn menuPos;\n\t}\n\n\t// Returns true of all the items in a sub-menu are disabled.\n\tareAllSubmenuItemsDisabled(submenuItems) {\n\t\tlet itemCount = 0;\n\t\tlet disabledCount = 0;\n\t\tsubmenuItems.forEach(function(submenuItem) {\n\t\t\tif (!submenuItem.divider) {\n\t\t\t\titemCount++;\n\t\t\t}\n\t\t\tif (submenuItem.enable === false) {\n\t\t\t\tdisabledCount++;\n\t\t\t}\n\t\t});\n\t\treturn disabledCount === itemCount;\n\t}\n\n\t// Builds a new menu based on the menu defintion passed in.\n\tbuildMenu(menuDefinition, menuSize, menuPos, canvasRect) {\n\t\tconst menuItems = [];\n\n\t\tlet runningYPos = 0;\n\t\t// Records if we have just displayed a divider. This is useful because we\n\t\t// only want to display one divider if there is a divider element\n\t\t// immediately after another divider element in the menuDefintion array.\n\t\tlet previousDivider = false;\n\n\t\tfor (let i = 0; i < menuDefinition.length; ++i) {\n\t\t\tconst divider = menuDefinition[i].divider;\n\t\t\tconst submenu = menuDefinition[i].submenu;\n\n\t\t\tif (divider) {\n\t\t\t\tif (!previousDivider) {\n\t\t\t\t\tmenuItems.push(<div key={i + 1} className={\"context-menu-divider\"} />);\n\t\t\t\t\trunningYPos += CONTEXT_MENU_DIVIDER_HEIGHT;\n\t\t\t\t\tpreviousDivider = true;\n\t\t\t\t}\n\t\t\t} else if (menuDefinition[i].action === \"colorBackground\") {\n\t\t\t\tpreviousDivider = false;\n\t\t\t\tconst disabled = false;\n\t\t\t\tconst subMenuSize = { width: CONTEXT_MENU_WIDTH, height: 50 };\n\t\t\t\tconst subMenuContent = this.buildColorPickerPanel();\n\n\t\t\t\tconst subMenu = this.buildSubMenu(\n\t\t\t\t\tmenuDefinition, i, subMenuContent, runningYPos, menuPos, menuSize, subMenuSize, canvasRect, disabled);\n\t\t\t\tmenuItems.push(subMenu);\n\n\t\t\t\trunningYPos += CONTEXT_MENU_LINK_HEIGHT;\n\n\t\t\t} else if (submenu) {\n\t\t\t\tpreviousDivider = false;\n\t\t\t\tconst disabled = this.areAllSubmenuItemsDisabled(menuDefinition[i].menu);\n\t\t\t\tconst subMenuSize = this.calculateMenuSize(menuDefinition[i].menu);\n\t\t\t\tconst subMenuContent = this.buildMenu(menuDefinition[i].menu, menuSize, menuPos, canvasRect);\n\n\t\t\t\tconst subMenu = this.buildSubMenu(\n\t\t\t\t\tmenuDefinition, i, subMenuContent, runningYPos, menuPos, menuSize, subMenuSize, canvasRect, disabled);\n\t\t\t\tmenuItems.push(subMenu);\n\n\t\t\t\trunningYPos += CONTEXT_MENU_LINK_HEIGHT;\n\n\t\t\t} else {\n\t\t\t\tpreviousDivider = false;\n\t\t\t\tconst className = \"context-menu-item\" +\n\t\t\t\t\t(menuDefinition[i].enable === false ? \" disabled\" : \"\");\n\n\t\t\t\tconst onClickFunction = menuDefinition[i].enable === false\n\t\t\t\t\t? null\n\t\t\t\t\t: this.itemSelected.bind(null, menuDefinition[i].action);\n\n\t\t\t\tmenuItems.push((\n\t\t\t\t\t<div key={i + 1} className={className} onClick={onClickFunction} role=\"menuitem\">\n\t\t\t\t\t\t{menuDefinition[i].label}\n\t\t\t\t\t</div>\n\t\t\t\t));\n\t\t\t\trunningYPos += CONTEXT_MENU_LINK_HEIGHT;\n\t\t\t}\n\t\t}\n\t\treturn menuItems;\n\t}\n\n\tbuildColorPickerPanel() {\n\t\tconst subPanelData = {\n\t\t\tclickActionHandler: (c) => this.colorClicked(c)\n\t\t};\n\t\treturn (\n\t\t\t<ColorPicker subPanelData={subPanelData} closeSubPanel={() => null} />\n\t\t);\n\t}\n\n\tsubMenuMouseEnter(action) {\n\t\tthis.setState({ displaySubMenuAction: action });\n\t}\n\n\tsubMenuMouseLeave(action) {\n\t\tthis.setState({ displaySubMenuAction: \"\" });\n\t}\n\n\t// Builds a sub-menu for the menuitem identified by the index into the menudefintion.\n\tbuildSubMenu(menuDefinition, index, subMenuContent, runningYPos, menuPos,\n\t\tmenuSize, subMenuSize, canvasRect, disabled) {\n\t\tconst rtl = this.buildRtlState(menuPos, menuSize, subMenuSize, canvasRect);\n\t\tconst subMenuPosStyle = this.buildSubMenuPosStyle(runningYPos, menuPos, subMenuSize, canvasRect, rtl);\n\t\tconst menuItem = menuDefinition[index];\n\n\t\tconst icon = (<ChevronRight16 />);\n\t\tconst menuItemContent = <div>{menuItem.label}{icon} </div>;\n\t\tconst menuItemClass = \"context-menu-item \" + (disabled ? \" disabled\" : \"\");\n\t\tconst subMenuClass = \"context-menu-popover context-menu-submenu\" +\n\t\t\t(this.state.displaySubMenuAction === menuItem.action ? \" context-menu--visible\" : \"\");\n\t\tconst onMouseEnter = (disabled ? null : this.subMenuMouseEnter.bind(this, menuItem.action));\n\t\tconst onMouseLeave = (disabled ? null : this.subMenuMouseLeave.bind(this));\n\n\t\treturn (\n\t\t\t<div key={index + 1} className={menuItemClass} aria-haspopup role=\"menuitem\"\n\t\t\t\tonMouseEnter={onMouseEnter}\n\t\t\t\tonMouseLeave={onMouseLeave}\n\t\t\t>\n\t\t\t\t{menuItemContent}\n\t\t\t\t<div style={subMenuPosStyle} className={subMenuClass}>\n\t\t\t\t\t{subMenuContent}\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t);\n\t}\n\n\t// Returns a boolean to indicate whether the submenu should appear on the\n\t// right of the context menu (rtl === false) or on the left of the context\n\t// menu (rtl === true).\n\tbuildRtlState(menuPos, menuSize, subMenuSize, canvasRect) {\n\t\t// Ensure that the combined menu position, plus the menu width,\n\t\t// plus the submenu width, does not exceed the viewport bounds.\n\t\treturn (menuPos.x + menuSize.width + subMenuSize.width > canvasRect.right);\n\t}\n\n\t// Returns a style object that can be applied to the sub-menu to adjust its:\n\t// * vertical (y) position: If the submenu is tall enough that it would be\n\t// displayed off the bottom of the canvas area.\n\t// * horizontal (x) position: If the sub-menu needs to appear on the left\n\t// side of the main menu (rtl === true).\n\tbuildSubMenuPosStyle(runningYPos, menuPos, subMenuSize, canvasRect, rtl) {\n\t\t// Does the submenu go below the bottom of the viewport?\n\t\tconst y = canvasRect.bottom - (menuPos.y + runningYPos + subMenuSize.height);\n\n\t\t// If submenu is not below the viewport bottom set offset to 0 so the\n\t\t// submenu will not be moved. Otherwise, y will be used to move the\n\t\t// submenu up fully into the view port.\n\t\tconst offset = (y > 0) ? 0 : y - EXTRA_OFFSET;\n\n\t\tconst subMenuPosStyle = {\n\t\t\ttop: offset + \"px\" // Use negative to push the menu up\n\t\t};\n\n\t\tif (rtl) {\n\t\t\tsubMenuPosStyle.left = -CONTEXT_MENU_WIDTH + \"px\";\n\t\t}\n\n\t\treturn subMenuPosStyle;\n\t}\n\n\t// Returns the menu definition array passed in making sure any\n\t// submenu items have an action. Note: some applications forget\n\t// to do provide an action because for the submenu it is only\n\t// used by the context menu code.\n\tensureAllSubMenuItemsHaveAction(menuDef) {\n\t\treturn menuDef.map((item, index) => {\n\t\t\tif (item.submenu && typeof item.action === \"undefined\") {\n\t\t\t\treturn { ...item, action: \"submenu_\" + index };\n\t\t\t}\n\t\t\treturn item;\n\t\t});\n\t}\n\n\trender() {\n\t\t// Reposition contextMenu so that it does not show off the screen\n\t\tconst menuSize = this.calculateMenuSize(this.props.menuDefinition);\n\t\tconst menuPos = this.calculateMenuPos(this.props.mousePos, menuSize, this.props.canvasRect);\n\t\tconst posStyle = {\n\t\t\tleft: menuPos.x + \"px\",\n\t\t\ttop: menuPos.y + \"px\"\n\t\t};\n\n\t\tconst menuDefinition = this.ensureAllSubMenuItemsHaveAction(this.props.menuDefinition);\n\t\tconst menuItems = this.buildMenu(menuDefinition, menuSize, menuPos, this.props.canvasRect);\n\n\t\treturn (\n\t\t\t<div id=\"context-menu-popover\" className=\"context-menu-popover\" style={posStyle} onContextMenu={this.onContextMenu}>\n\t\t\t\t{menuItems}\n\t\t\t</div>\n\t\t);\n\t}\n}\n\nCommonContextMenu.propTypes = {\n\tcontextHandler: PropTypes.func.isRequired,\n\tmenuDefinition: PropTypes.array.isRequired,\n\tcanvasRect: PropTypes.object.isRequired,\n\tmousePos: PropTypes.object.isRequired\n};\n\nexport default CommonContextMenu;\n","/*\n * Copyright 2017-2023 Elyra Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport CommonContextMenu from \"./common-context-menu.jsx\";\n\nexport default class ContextMenuWrapper extends React.Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = {};\n\n\t\tthis.contextMenuClicked = this.contextMenuClicked.bind(this);\n\t\tthis.handleClickOutside = this.handleClickOutside.bind(this);\n\t}\n\n\tcomponentDidMount() {\n\t\tdocument.addEventListener(\"click\", this.handleClickOutside, true);\n\t}\n\n\tcomponentWillUnmount() {\n\t\tdocument.removeEventListener(\"click\", this.handleClickOutside, true);\n\t}\n\n\t// Returns an object that describes the dimensions of a rectangle for the\n\t// canvas div with coordinates based on the top left corner of the div. This\n\t// will match the coordinates for the mouse position where the user clicked,\n\t// which is specified in this.props.contextMenuPos object.\n\tgetCanvasRect() {\n\t\tconst containingDiv = document.getElementById(this.props.containingDivId);\n\t\tif (containingDiv) {\n\t\t\tconst clientRect = containingDiv.getBoundingClientRect();\n\t\t\treturn {\n\t\t\t\ttop: 0,\n\t\t\t\tbottom: clientRect.bottom - clientRect.top,\n\t\t\t\tleft: 0,\n\t\t\t\tright: clientRect.right - clientRect.left,\n\t\t\t\theight: clientRect.height,\n\t\t\t\twidth: clientRect.width\n\t\t\t};\n\t\t}\n\t\t// Assist Jests tests to run when containingDiv is not available.\n\t\treturn { top: 0, bottom: 200, left: 0, right: 50, height: 200, width: 50 };\n\t}\n\n\thandleClickOutside(e) {\n\t\t// On Safari, when a user is displaying the context menu with a ctrl-click\n\t\t// (which is a supported context menu gesture on the Mac) a secondary click\n\t\t// event is emmitted which is received here with the ctrlKey field enabled.\n\t\t// So we ignore that event otherwse, if we continue, the context menu will\n\t\t// be closed.\n\t\tif (e.ctrlKey) {\n\t\t\te.stopPropagation();\n\t\t\treturn;\n\t\t}\n\n\t\t// If the click was anywhere outside the context menu and\n\t\t// the ellipsis button we just close the menu.\n\t\tif (!this.isOverContextMenu(e) && !this.isOverEllipsisButton(e)) {\n\t\t\t// This stop propagation is needed in common canvas so that selected nodes will\n\t\t\t// remain selected even after clicking outside the context menu to close the menu.\n\t\t\tif (this.props.stopPropagation) {\n\t\t\t\te.stopPropagation();\n\t\t\t}\n\t\t\tthis.props.closeContextMenu();\n\t\t}\n\t}\n\n\t// Retruns true if the event occurred over the context menu.\n\tisOverContextMenu(e) {\n\t\tconst domNode = document.getElementById(\"context-menu-popover\");\n\t\treturn !domNode || domNode.contains(e.target);\n\t}\n\n\t// Returns true if the event occurred over the ellipsis button. Typically\n\t// there will be only one ellipsis button on the canvas, since they are only\n\t// displayed on hover, but in some test cicumstances there might be more\n\t// than one.\n\tisOverEllipsisButton(e) {\n\t\tconst ellipsisNodes = document.getElementsByClassName(\"d3-node-ellipsis-group\");\n\t\tlet state = false;\n\t\tfor (let i = 0; i < ellipsisNodes.length; i++) {\n\t\t\tif (state === false && ellipsisNodes[i].contains(e.target)) {\n\t\t\t\tstate = true;\n\t\t\t}\n\t\t}\n\t\treturn state;\n\t}\n\n\tcontextMenuClicked(action, param) {\n\t\tthis.props.contextMenuActionHandler(action, param);\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t<CommonContextMenu\n\t\t\t\tcontextHandler={this.contextMenuClicked}\n\t\t\t\tmenuDefinition={this.props.contextMenuDef}\n\t\t\t\tcanvasRect={this.getCanvasRect()}\n\t\t\t\tmousePos={this.props.contextMenuPos}\n\t\t\t/>\n\t\t);\n\t}\n}\n\nContextMenuWrapper.propTypes = {\n\tcontextMenuDef: PropTypes.array.isRequired,\n\tcontainingDivId: PropTypes.string.isRequired,\n\tcontextMenuPos: PropTypes.object.isRequired,\n\tcontextMenuActionHandler: PropTypes.func.isRequired,\n\tcloseContextMenu: PropTypes.func.isRequired,\n\tstopPropagation: PropTypes.bool\n};\n"],"names":["_React$Component","ColorPicker","props","_this","_classCallCheck","_callSuper","logger","Logger","colorIndex","refss","i","push","React","createRef","onClick","bind","_assertThisInitialized","onKeyDown","_inherits","_createClass","key","value","this","setFocus","evt","stopPropagation","selectColor","keyCode","TOTAL_COLORS","preventDefault","index","current","focus","color","target","dataset","subPanelData","clickActionHandler","closeSubPanel","log","createElement","className","tabIndex","ref","Component","CommonContextMenu","state","displaySubMenuAction","itemSelected","colorClicked","e","data","selectedEvent","contextHandler","menu","numDividers","length","divider","height","width","mousePos","menuSize","canvasRect","menuPos","x","y","submenuItems","itemCount","disabledCount","forEach","submenuItem","enable","menuDefinition","menuItems","runningYPos","previousDivider","submenu","action","subMenuSize","subMenuContent","buildColorPickerPanel","subMenu","buildSubMenu","disabled","areAllSubmenuItemsDisabled","calculateMenuSize","buildMenu","onClickFunction","role","label","_this2","c","setState","rtl","buildRtlState","subMenuPosStyle","buildSubMenuPosStyle","menuItem","icon","ChevronRight16","menuItemContent","menuItemClass","subMenuClass","onMouseEnter","subMenuMouseEnter","onMouseLeave","subMenuMouseLeave","style","right","bottom","top","left","menuDef","map","item","_objectSpread","calculateMenuPos","posStyle","ensureAllSubMenuItemsHaveAction","id","onContextMenu","ContextMenuWrapper","contextMenuClicked","handleClickOutside","document","addEventListener","removeEventListener","containingDiv","getElementById","containingDivId","clientRect","getBoundingClientRect","ctrlKey","isOverContextMenu","isOverEllipsisButton","closeContextMenu","domNode","contains","ellipsisNodes","getElementsByClassName","param","contextMenuActionHandler","contextMenuDef","getCanvasRect","contextMenuPos"],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- "use strict";var e=require("./isArrayLikeObject-04f333a5.js"),t=require("./datarecord-metadata-v3-schema-dba0b214.js"),n=require("./createClass-5ca26865.js"),o=require("./inherits-41673c87.js"),s=require("react"),i=require("react-resize-detector"),a=require("./lib/tooltip.js"),r=require("carbon-components-react"),c=require("react-inlinesvg"),u=require("./_baseIteratee-2b75d27c.js"),l=require("@carbon/icons-react"),h=require("./canvas-constants-ff5cf88e.js"),f=require("uuid");function d(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var p=d(s),b=d(i),v=d(c),C=/\s/;var m=function(e){for(var t=e.length;t--&&C.test(e.charAt(t)););return t},g=/^\s+/;var A=function(e){return e?e.slice(0,m(e)+1).replace(g,""):e},I=e.isObject_1,O=e.isSymbol_1,y=/^[-+]0x[0-9a-f]+$/i,E=/^0b[01]+$/i,R=/^0o[0-7]+$/i,k=parseInt;var F=function(e){if("number"==typeof e)return e;if(O(e))return NaN;if(I(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=I(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=A(e);var n=E.test(e);return n||R.test(e)?k(e.slice(2),n?2:8):y.test(e)?NaN:+e},D=F,T=1/0;var M=function(e){return e?(e=D(e))===T||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0};var _=function(e){var t=M(e),n=t%1;return t==t?n?t-n:t:0};function w(e,t,n){return t=o._getPrototypeOf(t),o._possibleConstructorReturn(e,x()?Reflect.construct(t,n||[],o._getPrototypeOf(e).constructor):t.apply(e,n))}function x(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(x=function(){return!!e})()}var S=function(e){function t(e){var o;return n._classCallCheck(this,t),(o=w(this,t,[e])).buttonRef=p.default.createRef(),o}return o._inherits(t,e),n._createClass(t,[{key:"componentDidUpdate",value:function(){this.props.isFocusInToolbar&&this.props.buttonFocusAction===this.props.actionObj.action&&this.buttonRef.current.focus()}},{key:"getDefaultIcon",value:function(e){var t=!e.enable;switch(e.action){case h.TOOLBAR_STOP:return p.default.createElement(l.StopFilledAlt16,{disabled:t});case h.TOOLBAR_RUN:return p.default.createElement(l.Play16,{disabled:t});case h.TOOLBAR_EXPAND_SUPERNODE_IN_PLACE:return p.default.createElement(l.Maximize16,{disabled:t});case h.TOOLBAR_COLLAPSE_SUPERNODE_IN_PLACE:return p.default.createElement(l.Minimize16,{disabled:t});case h.TOOLBAR_EXPAND_SUPERNODE_FULL_PAGE:return p.default.createElement(l.Launch16,{disabled:t});case h.TOOLBAR_UNDO:return p.default.createElement(l.Undo16,{disabled:t});case h.TOOLBAR_REDO:return p.default.createElement(l.Redo16,{disabled:t});case h.TOOLBAR_CLIPBOARD:return p.default.createElement(l.Result16,{disabled:t});case h.TOOLBAR_CUT:return p.default.createElement(l.Cut16,{disabled:t});case h.TOOLBAR_COPY:return p.default.createElement(l.Copy16,{disabled:t});case h.TOOLBAR_PASTE:return p.default.createElement(l.Paste16,{disabled:t});case h.TOOLBAR_CREATE_COMMENT:case h.TOOLBAR_CREATE_AUTO_COMMENT:return p.default.createElement(l.AddComment16,{disabled:t});case h.TOOLBAR_SHOW_COMMENTS:return p.default.createElement(l.Chat16,{disabled:t});case h.TOOLBAR_HIDE_COMMENTS:return p.default.createElement(l.ChatOff16,{disabled:t});case h.TOOLBAR_COLOR_BACKGROUND:return p.default.createElement(l.ColorPalette16,{disabled:t});case h.TOOLBAR_DELETE_LINK:case h.TOOLBAR_DELETE_SELECTED_OBJECTS:return p.default.createElement(l.TrashCan16,{disabled:t});case h.TOOLBAR_SET_COMMENT_EDIT_MODE:case h.TOOLBAR_SET_NODE_LABEL_EDIT:return p.default.createElement(l.Edit16,{disabled:t});case h.TOOLBAR_ZOOM_IN:return p.default.createElement(l.ZoomIn16,{disabled:t});case h.TOOLBAR_ZOOM_OUT:return p.default.createElement(l.ZoomOut16,{disabled:t});case h.TOOLBAR_ZOOM_FIT:return p.default.createElement(v.default,{src:"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2016%2016%22%20fill%3D%22currentColor%22%3E%20%3Cpath%20d%3D%22M6%2C7.5h4v1H6Z%22%2F%3E%20%3Cpath%20d%3D%22M4%2C12h8a.94.94%2C0%2C0%2C0%2C1-1V5a.94.94%2C0%2C0%2C0-1-1H4A.94.94%2C0%2C0%2C0%2C3%2C5v6A.94.94%2C0%2C0%2C0%2C4%2C12ZM4%2C5h8v6H4Z%22%2F%3E%20%3Cpolygon%20points%3D%222%203.5%201%203.5%201%201%203.5%201%203.5%202%202%202%202%203.5%22%2F%3E%20%3Cpolygon%20points%3D%2215%203.5%2014%203.5%2014%202%2012.5%202%2012.5%201%2015%201%2015%203.5%22%2F%3E%20%3Cpolygon%20points%3D%2215%2015%2012.5%2015%2012.5%2014%2014%2014%2014%2012.5%2015%2012.5%2015%2015%22%2F%3E%20%3Cpolygon%20points%3D%223.5%2015%201%2015%201%2012.5%202%2012.5%202%2014%203.5%2014%203.5%2015%22%2F%3E%3C%2Fsvg%3E",disabled:t});case h.TOOLBAR_ARRANGE_HORIZONALLY:return p.default.createElement(v.default,{src:"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2016%2016%22%3E%3Crect%20x%3D%221.5%22%20y%3D%222%22%20width%3D%2213%22%20height%3D%221%22%2F%3E%3Crect%20x%3D%221.5%22%20y%3D%2213%22%20width%3D%2213%22%20height%3D%221%22%2F%3E%3Cpath%20d%3D%22M7%2C10.5H2a.47.47%2C0%2C0%2C1-.5-.5V6A.47.47%2C0%2C0%2C1%2C2%2C5.5H7a.47.47%2C0%2C0%2C1%2C.5.5v4A.47.47%2C0%2C0%2C1%2C7%2C10.5Zm-4.5-1h4v-3h-4Z%22%2F%3E%3Cpath%20d%3D%22M14%2C10.5H9a.47.47%2C0%2C0%2C1-.5-.5V6A.47.47%2C0%2C0%2C1%2C9%2C5.5h5a.47.47%2C0%2C0%2C1%2C.5.5v4A.47.47%2C0%2C0%2C1%2C14%2C10.5Zm-4.5-1h4v-3h-4Z%22%2F%3E%3C%2Fsvg%3E",disabled:t});case h.TOOLBAR_ARRANGE_VERTICALLY:return p.default.createElement(v.default,{src:"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2016%2016%22%3E%3Crect%20x%3D%222%22%20y%3D%221.5%22%20width%3D%221%22%20height%3D%2213%22%2F%3E%3Crect%20x%3D%2213%22%20y%3D%221.5%22%20width%3D%221%22%20height%3D%2213%22%2F%3E%3Cpath%20d%3D%22M10.5%2C7.5h-5A.47.47%2C0%2C0%2C1%2C5%2C7V3a.47.47%2C0%2C0%2C1%2C.5-.5h5A.47.47%2C0%2C0%2C1%2C11%2C3V7A.47.47%2C0%2C0%2C1%2C10.5%2C7.5ZM6%2C6.5h4v-3H6Z%22%2F%3E%3Cpath%20d%3D%22M10.5%2C13.5h-5A.47.47%2C0%2C0%2C1%2C5%2C13V9a.47.47%2C0%2C0%2C1%2C.5-.5h5A.47.47%2C0%2C0%2C1%2C11%2C9v4A.47.47%2C0%2C0%2C1%2C10.5%2C13.5ZM6%2C12.5h4v-3H6Z%22%2F%3E%3C%2Fsvg%3E",disabled:t});case h.TOOLBAR_OPEN_PALETTE:return p.default.createElement(v.default,{src:"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2032%2032%22%20fill%3D%22currentColor%22%3E%20%3Crect%20width%3D%2232%22%20height%3D%2232%22%20fill%3D%22none%22%2F%3E%20%3Cpath%20d%3D%22M28%2C4H4A2%2C2%2C0%2C0%2C0%2C2%2C6V26a2%2C2%2C0%2C0%2C0%2C2%2C2H28a2%2C2%2C0%2C0%2C0%2C2-2V6A2%2C2%2C0%2C0%2C0%2C28%2C4Zm0%2C22H12V17.1h8.9l-2.5%2C2.5%2C1.5%2C1.5L25%2C16l-5.1-5.1-1.5%2C1.5%2C2.5%2C2.5H12V6H28Z%22%2F%3E%3C%2Fsvg%3E",disabled:t});case h.TOOLBAR_CLOSE_PALETTE:return p.default.createElement(v.default,{src:"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2032%2032%22%20fill%3D%22currentColor%22%3E%20%3Crect%20width%3D%2232%22%20height%3D%2232%22%20fill%3D%22none%22%2F%3E%20%3Cpath%20d%3D%22M28%2C4H4A2%2C2%2C0%2C0%2C0%2C2%2C6V26a2%2C2%2C0%2C0%2C0%2C2%2C2H28a2%2C2%2C0%2C0%2C0%2C2-2V6A2%2C2%2C0%2C0%2C0%2C28%2C4Zm0%2C11H19.1l2.5-2.5L20.1%2C11%2C15%2C16l5.1%2C5.1%2C1.5-1.5-2.5-2.5H28V26H12V6H28Z%22%2F%3E%3C%2Fsvg%3E",disabled:t});case h.TOOLBAR_TOGGLE_NOTIFICATION_PANEL:return p.default.createElement(v.default,{src:"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2032%2032%22%20fill%3D%22currentColor%22%3E%20%3Cpath%20d%3D%22M27%2C12V27H5V5H20V3H5A2%2C2%2C0%2C0%2C0%2C3%2C5V27a2%2C2%2C0%2C0%2C0%2C2%2C2H27a2%2C2%2C0%2C0%2C0%2C2-2V12Z%22%2F%3E%20%3Ccircle%20class%3D%22dot%22%20cx%3D%2226.5%22%20cy%3D%225.5%22%20r%3D%223.5%22%2F%3E%3C%2Fsvg%3E",disabled:t});default:return null}}},{key:"generateLabel",value:function(e,t,n,o){var s="toolbar-icon-label";return s+=this.generateLabelType(n,o),s+=t?" disabled":"",p.default.createElement("div",{className:s},e)}},{key:"generateLabelType",value:function(e,t){return e?" overflow":"before"===t?" before":"after"===t?" after":""}},{key:"generateIcon",value:function(e){var t=this.getDefaultIcon(e);if(e.iconEnabled){var n=e.iconEnabled,o=e.iconDisabled||e.iconEnabled,s=e.enable?n:o,i="toolbar-icon-"+this.props.instanceId+" -"+e.action;t="string"==typeof s?p.default.createElement(v.default,{id:i,src:s,disabled:!e.enable}):s}return t?p.default.createElement("div",{className:"toolbar-icon"},t):null}},{key:"generateButton",value:function(e){var t=null,n=null;this.props.isInMenu?n=this.generateLabel(e.label,!e.enable,!0):"before"===e.incLabelWithIcon?t=this.generateLabel(e.label,!e.enable,!1,e.incLabelWithIcon):"after"===e.incLabelWithIcon&&(n=this.generateLabel(e.label,!e.enable,!1,e.incLabelWithIcon));var o=this.generateIcon(e),s=e.textContent?p.default.createElement("div",{className:"toolbar-text-content"}," ",e.textContent," "):null,i=u.classNames("toolbar-item-content",e.className?e.className:null,{overflow:this.props.isInMenu,disabled:!e.enable,default:!e.kind}),a=e.kind||"ghost",c=this.generateChevronIcon(e),l=p.default.createElement("div",{className:i},t,o,n,s,c);l=this.wrapInTooltip(l);var h=e.incLabelWithIcon?null:e.label,f=this.props.buttonFocusAction===e.action?0:-1;return p.default.createElement(r.Button,{kind:a,ref:this.buttonRef,onClick:this.props.actionClickHandler,disabled:!e.enable,"aria-label":h,size:this.props.size,tabIndex:f},l)}},{key:"generateChevronIcon",value:function(e){if(e.subMenu||e.subPanel){if(this.props.isInMenu)return p.default.createElement(l.ChevronRight16,null);if("before"===e.incLabelWithIcon||"after"===e.incLabelWithIcon){var t=this.props.subAreaDisplayed?p.default.createElement(l.ChevronUp16,null):p.default.createElement(l.ChevronDown16,null);return p.default.createElement("div",{className:"toolbar-up-down-chevron"},t)}return this.generateChevronMini()}return null}},{key:"generateChevronMini",value:function(){var e="sm"===this.props.size?"M 29 29 L 29 23 23 29 Z":"M 37 37 L 37 30 30 37 Z";return p.default.createElement("svg",{className:"toolbar-tick-svg"},p.default.createElement("path",{d:e,className:"toolbar-tick-mark"}))}},{key:"wrapInTooltip",value:function(e){if(!this.props.isInMenu&&(this.showLabelAsTip(this.props.actionObj)||this.props.actionObj.tooltip)){var t=this.props.actionObj.tooltip?this.props.actionObj.tooltip:this.props.actionObj.label,n=this.props.actionName+"-"+this.props.instanceId+"-tooltip",o=this.props.actionObj.enable||this.props.actionObj.jsx,s=this.props.tooltipDirection?this.props.tooltipDirection:"bottom";return p.default.createElement(a,{id:n,tip:t,disable:!o,className:"icon-tooltip",direction:s},e)}return e}},{key:"showLabelAsTip",value:function(e){return!!e.label&&("before"!==e.incLabelWithIcon&&"after"!==e.incLabelWithIcon)}},{key:"render",value:function(){var e=this.props.actionObj;return e.jsx?this.wrapInTooltip(e.jsx):this.generateButton(e)}}]),t}(p.default.Component);function B(e,t,n,o){var s=document.getElementById(t).getBoundingClientRect(),i=e.current.getBoundingClientRect(),a=i.bottom-s.bottom,r=i.right-s.right;if("vertical"===n){if(a>0){var c=o.top-s.top>i.height?o.top-i.height:o.bottom-a;e.current.style.top=c+"px"}if(r>0){var u=o.left-r-2;e.current.style.left=u+"px"}}else{if(a>0){var l=i.top-a-2;e.current.style.top=l+"px"}if(r>0){var h=o.left-i.width;e.current.style.left=h+"px"}}}function L(e,t){return"vertical"===e?{top:t.bottom+1,left:t.left}:{top:t.top-1,left:t.left+t.width}}function N(e,t,n){return t=o._getPrototypeOf(t),o._possibleConstructorReturn(e,P()?Reflect.construct(t,n||[],o._getPrototypeOf(e).constructor):t.apply(e,n))}function P(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(P=function(){return!!e})()}var j=function(e){function t(e){var s;return n._classCallCheck(this,t),(s=N(this,t,[e])).areaRef=p.default.createRef(),s.onClick=s.onClick.bind(o._assertThisInitialized(s)),s.onKeyDown=s.onKeyDown.bind(o._assertThisInitialized(s)),s}return o._inherits(t,e),n._createClass(t,[{key:"componentDidMount",value:function(){this.props.containingDivId&&B(this.areaRef,this.props.containingDivId,this.props.expandDirection,this.props.actionItemRect)}},{key:"onClick",value:function(){this.props.closeSubArea()}},{key:"onKeyDown",value:function(e){27===e.keyCode&&(this.props.closeSubArea(),e.stopPropagation())}},{key:"render",value:function(){var e=L(this.props.expandDirection,this.props.actionItemRect);if(this.props.subPanel){var t="object"===n._typeof(this.props.subPanel)?this.props.subPanel:p.default.createElement(this.props.subPanel,{closeSubPanel:this.props.closeSubArea,subPanelData:this.props.subPanelData});return p.default.createElement("div",{ref:this.areaRef,style:e,className:"toolbar-popover-list subpanel",onClick:this.onClick,onKeyDown:this.onKeyDown},t)}return null}}]),t}(p.default.Component);function z(e,t,n){return t=o._getPrototypeOf(t),o._possibleConstructorReturn(e,H()?Reflect.construct(t,n||[],o._getPrototypeOf(e).constructor):t.apply(e,n))}function H(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(H=function(){return!!e})()}var K=function(e){function t(e){var s;return n._classCallCheck(this,t),(s=z(this,t,[e])).state={subAreaDisplayed:!1},s.divRef=p.default.createRef(),s.actionClickHandler=s.actionClickHandler.bind(o._assertThisInitialized(s)),s.onMouseEnter=s.onMouseEnter.bind(o._assertThisInitialized(s)),s.onMouseLeave=s.onMouseLeave.bind(o._assertThisInitialized(s)),s.openSubArea=s.openSubArea.bind(o._assertThisInitialized(s)),s.closeSubArea=s.closeSubArea.bind(o._assertThisInitialized(s)),s.clickOutside=s.clickOutside.bind(o._assertThisInitialized(s)),s}return o._inherits(t,e),n._createClass(t,[{key:"componentWillUnmount",value:function(){document.removeEventListener("click",this.clickOutside,!1)}},{key:"onMouseEnter",value:function(e){(this.props.actionObj.subMenu||this.props.actionObj.subPanel)&&this.openSubArea()}},{key:"onMouseLeave",value:function(e){(this.props.actionObj.subMenu||this.props.actionObj.subPanel)&&this.closeSubArea()}},{key:"clickOutside",value:function(e){if(this.state.subAreaDisplayed){var t=document.getElementsByClassName(this.generateActionName());!!(t&&t.length>0)&&t[0].contains(e.target)||this.closeSubArea()}}},{key:"openSubArea",value:function(){this.setState({subAreaDisplayed:!0})}},{key:"closeSubArea",value:function(e){e&&!this.props.actionObj.closeSubAreaOnClick||this.setState({subAreaDisplayed:!1})}},{key:"actionClickHandler",value:function(e){this.props.actionObj.subMenu||this.props.actionObj.subPanel?this.state.subAreaDisplayed?(document.removeEventListener("click",this.clickOutside,!1),this.closeSubArea()):(document.addEventListener("click",this.clickOutside,!1),this.openSubArea()):(e.stopPropagation(),this.props.isInCascadeMenu?(this.props.closeParentSubArea(),this.props.setSubMenuFocus()):this.props.isInOverflowMenu?this.props.setSubMenuFocus(this.props.actionObj.action):(this.props.closeParentSubArea(),this.props.setToolbarFocusAction()),this.props.toolbarActionHandler(this.props.actionObj.action,e))}},{key:"generateActionName",value:function(){return this.props.actionObj.action+"-action"}},{key:"generateSubArea",value:function(){var e=this.divRef.current.getBoundingClientRect();return this.props.actionObj.subPanel?p.default.createElement(j,{subPanel:this.props.actionObj.subPanel,subPanelData:this.props.actionObj.subPanelData,closeSubArea:this.closeSubArea,actionItemRect:e,expandDirection:"horizontal",containingDivId:this.props.containingDivId}):p.default.createElement(Y,{subMenuActions:this.props.actionObj.subMenu,instanceId:this.props.instanceId,toolbarActionHandler:this.props.toolbarActionHandler,setSubMenuFocus:this.props.setSubMenuFocus,closeSubArea:this.closeSubArea,actionItemRect:e,expandDirection:"horizontal",containingDivId:this.props.containingDivId,parentSelector:this.generateSelector(),isCascadeMenu:!0,size:this.props.size})}},{key:"generateSelector",value:function(){return".toolbar-sub-menu-item"}},{key:"render",value:function(){var e=this.props.actionObj,t=this.generateActionName(),n=e.kind?e.kind:"default",o=u.classNames({"toolbar-sub-menu-item":!0,"toolbar-sub-menu-jsx-item":e.jsx,"toolbar-item-selected":e.isSelected},n,t),s=this.state.subAreaDisplayed?this.generateSubArea():null;return p.default.createElement("div",{ref:this.divRef,className:o,"data-toolbar-action":e.action,onMouseEnter:this.onMouseEnter,onMouseLeave:this.onMouseLeave,onKeyDown:this.onKeyDown},p.default.createElement("div",null,p.default.createElement(S,{actionObj:e,actionName:this.generateActionName(),instanceId:this.props.instanceId,isInMenu:!0,subAreaDisplayed:this.state.subAreaDisplayed,actionClickHandler:this.actionClickHandler,buttonFocusAction:this.props.subMenuFocusAction,isFocusInToolbar:!0,size:this.props.size})),s)}}]),t}(p.default.Component);function Z(e,t,n){return t=o._getPrototypeOf(t),o._possibleConstructorReturn(e,U()?Reflect.construct(t,n||[],o._getPrototypeOf(e).constructor):t.apply(e,n))}function U(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(U=function(){return!!e})()}var V=function(e){function t(){return n._classCallCheck(this,t),Z(this,t,arguments)}return o._inherits(t,e),n._createClass(t,[{key:"render",value:function(){var e=this.props.isInMenu?"toolbar-divider-overflow":"toolbar-divider";return p.default.createElement("div",{className:e,tabIndex:-1,"aria-hidden":!0}," ")}}]),t}(p.default.Component);function W(e,t,n){return t=o._getPrototypeOf(t),o._possibleConstructorReturn(e,q()?Reflect.construct(t,n||[],o._getPrototypeOf(e).constructor):t.apply(e,n))}function q(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(q=function(){return!!e})()}var Y=function(e){function t(e){var s;return n._classCallCheck(this,t),(s=W(this,t,[e])).state={focusAction:"subarea"},s.areaRef=p.default.createRef(),s.onKeyDown=s.onKeyDown.bind(o._assertThisInitialized(s)),s.setFocusAction=s.setFocusAction.bind(o._assertThisInitialized(s)),s.setSubMenuFocus=s.setSubMenuFocus.bind(o._assertThisInitialized(s)),s}return o._inherits(t,e),n._createClass(t,[{key:"componentDidMount",value:function(){this.props.containingDivId&&this.props.subMenuActions.length>0&&B(this.areaRef,this.props.containingDivId,this.props.expandDirection,this.props.actionItemRect),"subarea"===this.state.focusAction&&this.setFocusOnFirstItem()}},{key:"componentDidUpdate",value:function(){var e=this;if("subarea"!==this.state.focusAction){var t=this.props.subMenuActions.find((function(t){return t.action===e.state.focusAction}));if(null==t||!t.enable){var n=this.getClosestEnabledAction(this.state.focusAction);null!==n&&this.setFocusAction(n)}}}},{key:"onKeyDown",value:function(e){27===e.keyCode?(this.props.closeSubArea(),e.stopPropagation()):38===e.keyCode?(this.setFocusOnPreviousItem(),e.stopPropagation()):40===e.keyCode?(this.setFocusOnNextItem(),e.stopPropagation()):(37===e.keyCode||39===e.keyCode)&&e.stopPropagation()}},{key:"setFocusOnFirstItem",value:function(){var e=this.getFocusableActions();e.length>0&&this.setFocusAction(e[0].action)}},{key:"setFocusOnPreviousItem",value:function(){var e=this.getFocusableActions(),t=this.getPreviousFocusAction(e);t&&this.setFocusAction(t.action)}},{key:"setFocusOnNextItem",value:function(){var e=this.getFocusableActions(),t=this.getNextFocusAction(e);t&&this.setFocusAction(t.action)}},{key:"setFocusAction",value:function(e){this.setState({focusAction:e})}},{key:"setSubMenuFocus",value:function(e){var t=e||this.state.focusAction;this.setFocusAction(t)}},{key:"getClosestEnabledAction",value:function(e){for(var t=this.props.subMenuActions.findIndex((function(t){return t.action===e})),n=null,o=t+1,s=t-1;(s>-1||o<this.props.subMenuActions.length)&&null===n;)s>-1&&this.props.subMenuActions[s].enable?n=this.props.subMenuActions[s].action:s--,o<this.props.subMenuActions.length&&this.props.subMenuActions[o].enable?n=this.props.subMenuActions[o].action:o++;return n}},{key:"getFocusableActions",value:function(){for(var e=[],t=0;t<this.props.subMenuActions.length;t++)this.props.subMenuActions[t].enable&&e.push(this.props.subMenuActions[t]);return e}},{key:"getPreviousFocusAction",value:function(e){var t=this,n=e.findIndex((function(e){return e.action===t.state.focusAction}));return n>0?e[n-1]:e[e.length-1]}},{key:"getNextFocusAction",value:function(e){var t=this,n=e.findIndex((function(e){return e.action===t.state.focusAction}));return n<e.length-1?e[n+1]:e[0]}},{key:"generateSubMenuItems",value:function(){for(var e=[],t=0;t<this.props.subMenuActions.length;t++){var n=this.props.subMenuActions[t];n&&e.push(this.generateSubMenuItem(n,t))}return e}},{key:"generateSubMenuItem",value:function(e,t){var n=null;return e&&(n=e.divider?p.default.createElement(V,{key:"toolbar-item-key-"+t,isInMenu:!0}):p.default.createElement(K,{key:"toolbar-item-key-"+t,actionObj:e,toolbarActionHandler:this.props.toolbarActionHandler,closeParentSubArea:this.props.closeSubArea,instanceId:this.props.instanceId,containingDivId:this.props.containingDivId,subMenuFocusAction:this.state.focusAction,setToolbarFocusAction:this.props.setToolbarFocusAction,setSubMenuFocus:this.props.setSubMenuFocus?this.props.setSubMenuFocus:this.setSubMenuFocus,size:this.props.size,isInOverflowMenu:this.props.isOverflowMenu,isInCascadeMenu:this.props.isCascadeMenu})),n}},{key:"render",value:function(){if(this.props.subMenuActions.length>0){var e=this.props.isCascadeMenu?L(this.props.expandDirection,this.props.actionItemRect):null;return this.subMenuItems=this.generateSubMenuItems(),p.default.createElement("div",{ref:this.areaRef,style:e,className:"toolbar-popover-list submenu",tabIndex:-1,onKeyDown:this.onKeyDown},this.subMenuItems)}return null}}]),t}(p.default.Component);function G(e,t,n){return t=o._getPrototypeOf(t),o._possibleConstructorReturn(e,$()?Reflect.construct(t,n||[],o._getPrototypeOf(e).constructor):t.apply(e,n))}function $(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return($=function(){return!!e})()}var X=function(e){function t(e){var s;return n._classCallCheck(this,t),(s=G(this,t,[e])).state={subAreaDisplayed:!1},s.divRef=p.default.createRef(),s.actionClickHandler=s.actionClickHandler.bind(o._assertThisInitialized(s)),s.onKeyDown=s.onKeyDown.bind(o._assertThisInitialized(s)),s.openSubArea=s.openSubArea.bind(o._assertThisInitialized(s)),s.closeSubArea=s.closeSubArea.bind(o._assertThisInitialized(s)),s.clickOutside=s.clickOutside.bind(o._assertThisInitialized(s)),s}return o._inherits(t,e),n._createClass(t,[{key:"componentWillUnmount",value:function(){document.removeEventListener("click",this.clickOutside,!1)}},{key:"onKeyDown",value:function(e){27!==e.keyCode||this.closeSubArea()}},{key:"getBoundingRect",value:function(){return this.divRef.current.getBoundingClientRect()}},{key:"getAction",value:function(){return this.props.actionObj.action}},{key:"isEnabled",value:function(){return this.props.actionObj.enable}},{key:"clickOutside",value:function(e){if(this.state.subAreaDisplayed){var t=document.getElementsByClassName(this.generateActionName());!!(t&&t.length>0)&&t[0].contains(e.target)||this.closeSubArea()}}},{key:"openSubArea",value:function(){this.setState({subAreaDisplayed:!0})}},{key:"closeSubArea",value:function(e){e&&!this.props.actionObj.closeSubAreaOnClick||this.setState({subAreaDisplayed:!1})}},{key:"actionClickHandler",value:function(e){this.props.actionObj.subMenu||this.props.actionObj.subPanel?this.state.subAreaDisplayed?(document.removeEventListener("click",this.clickOutside,!1),this.closeSubArea(),this.props.setToolbarFocusAction(this.props.actionObj.action)):(document.addEventListener("click",this.clickOutside,!1),this.openSubArea()):(this.props.toolbarActionHandler(this.props.actionObj.action,e),this.props.setToolbarFocusAction(this.props.actionObj.action))}},{key:"generateActionName",value:function(){return this.props.actionObj.action+"-action"}},{key:"generateSubArea",value:function(){var e=this.divRef.current.getBoundingClientRect();return this.props.actionObj.subPanel?p.default.createElement(j,{subPanel:this.props.actionObj.subPanel,subPanelData:this.props.actionObj.subPanelData,closeSubArea:this.closeSubArea,setToolbarFocusAction:this.props.setToolbarFocusAction,actionItemRect:e,expandDirection:"vertical",containingDivId:this.props.containingDivId}):p.default.createElement(Y,{subMenuActions:this.props.actionObj.subMenu,instanceId:this.props.instanceId,toolbarActionHandler:this.props.toolbarActionHandler,closeSubArea:this.closeSubArea,setToolbarFocusAction:this.props.setToolbarFocusAction,actionItemRect:e,expandDirection:"vertical",containingDivId:this.props.containingDivId,parentSelector:this.generateSelector(this.props.actionObj),isCascadeMenu:!1,size:this.props.size})}},{key:"generateSelector",value:function(e){return e.jsx?".toolbar-jsx-item":".toolbar-item"}},{key:"render",value:function(){var e=this.props.actionObj,t=this.generateActionName(),n=e.kind?e.kind:"default",o=u.classNames({"toolbar-item":!e.jsx,"toolbar-jsx-item":e.jsx,"toolbar-item-selected":e.isSelected},n,t),s=this.state.subAreaDisplayed?this.generateSubArea():null;return p.default.createElement("div",{ref:this.divRef,className:o,"data-toolbar-action":e.action,"data-toolbar-item":!0,onMouseEnter:this.onMouseEnter,onMouseLeave:this.onMouseLeave,onKeyDown:this.onKeyDown},p.default.createElement("div",null,p.default.createElement(S,{actionObj:e,actionName:this.generateActionName(),tooltipDirection:this.props.tooltipDirection,instanceId:this.props.instanceId,isInMenu:!1,subAreaDisplayed:this.state.subAreaDisplayed,actionClickHandler:this.actionClickHandler,buttonFocusAction:this.state.subAreaDisplayed?null:this.props.toolbarFocusAction,isFocusInToolbar:this.props.isFocusInToolbar,size:this.props.size})),s)}}]),t}(p.default.Component);function J(e,t,n){return t=o._getPrototypeOf(t),o._possibleConstructorReturn(e,Q()?Reflect.construct(t,n||[],o._getPrototypeOf(e).constructor):t.apply(e,n))}function Q(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(Q=function(){return!!e})()}var ee=function(e){function t(e){var s;return n._classCallCheck(this,t),(s=J(this,t,[e])).state={showExtendedMenu:!1},s.buttonRef=p.default.createRef(),s.uuid=f.v4(),s.toggleExtendedMenu=s.toggleExtendedMenu.bind(o._assertThisInitialized(s)),s.clickOutside=s.clickOutside.bind(o._assertThisInitialized(s)),s.closeSubMenu=s.closeSubMenu.bind(o._assertThisInitialized(s)),s}return o._inherits(t,e),n._createClass(t,[{key:"componentDidUpdate",value:function(){this.props.toolbarFocusAction===this.props.action&&this.props.isFocusInToolbar&&!this.state.showExtendedMenu&&this.buttonRef.current.focus()}},{key:"componentWillUnmount",value:function(){document.removeEventListener("click",this.clickOutside,!1)}},{key:"getAction",value:function(){return this.props.action}},{key:"closeSubMenu",value:function(){this.setState({showExtendedMenu:!1})}},{key:"openSubMenu",value:function(){this.setState({showExtendedMenu:!0})}},{key:"genOverflowButtonClassName",value:function(){return"toolbar-overflow-container "+this.genIndexClassName()+" "+this.genUuidClassName()}},{key:"genIndexClassName",value:function(){return"toolbar-index-"+this.props.index}},{key:"genUuidClassName",value:function(){return"toolbar-uuid-"+this.uuid}},{key:"toggleExtendedMenu",value:function(){this.state.showExtendedMenu?(document.removeEventListener("click",this.clickOutside,!1),this.props.setOverflowIndex(null),this.closeSubMenu(),this.props.setToolbarFocusAction(this.props.action)):(document.addEventListener("click",this.clickOutside,!1),this.props.setOverflowIndex(this.props.index),this.openSubMenu(),this.props.setToolbarFocusAction(this.props.action))}},{key:"clickOutside",value:function(e){if(this.state.showExtendedMenu){var t="."+this.genIndexClassName();e.target.closest(t)||this.setState({showExtendedMenu:!1})}}},{key:"render",value:function(){var e=null;if(this.state.showExtendedMenu){var t=this.buttonRef.current.getBoundingClientRect();e=p.default.createElement(Y,{ref:this.subMenuRef,subMenuActions:this.props.subMenuActions,instanceId:this.props.instanceId,toolbarActionHandler:this.props.toolbarActionHandler,closeSubArea:this.closeSubMenu,setToolbarFocusAction:this.props.setToolbarFocusAction,actionItemRect:t,expandDirection:"vertical",containingDivId:this.props.containingDivId,parentSelector:".toolbar-overflow-container",isOverflowMenu:!0,isCascadeMenu:!1,size:this.props.size})}var n=this.props.toolbarFocusAction===this.props.action?0:-1;return p.default.createElement("div",{className:this.genOverflowButtonClassName(),"data-toolbar-action":this.props.action},p.default.createElement("div",{className:"toolbar-overflow-item"},p.default.createElement(r.Button,{ref:this.buttonRef,kind:"ghost",tabIndex:n,onClick:this.toggleExtendedMenu,"aria-label":this.props.label,size:this.props.size},p.default.createElement("div",{className:"toolbar-item-content default"},p.default.createElement("div",{className:"toolbar-icon"},p.default.createElement(l.OverflowMenuVertical16,null))))),e)}}]),t}(p.default.Component);function te(e,t,n){return t=o._getPrototypeOf(t),o._possibleConstructorReturn(e,ne()?Reflect.construct(t,n||[],o._getPrototypeOf(e).constructor):t.apply(e,n))}function ne(){try{var e=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){})))}catch(e){}return(ne=function(){return!!e})()}var oe=function(e){function s(e){var t;return n._classCallCheck(this,s),(t=te(this,s,[e])).state={focusAction:"toolbar",leftOverflowIndex:null,rightOverflowIndex:null},t.isFocusInToolbar=!1,t.leftBar=[],t.rightBar=[],t.leftItemRefs=[],t.rightItemRefs=[],t.overflowItemRefs=[],t.toolbarRef=p.default.createRef(),t.onFocus=t.onFocus.bind(o._assertThisInitialized(t)),t.onBlur=t.onBlur.bind(o._assertThisInitialized(t)),t.onKeyDown=t.onKeyDown.bind(o._assertThisInitialized(t)),t.onToolbarResize=t.onToolbarResize.bind(o._assertThisInitialized(t)),t.setOverflowIndex=t.setOverflowIndex.bind(o._assertThisInitialized(t)),t.generateToolbarItems=t.generateToolbarItems.bind(o._assertThisInitialized(t)),t.setFocusAction=t.setFocusAction.bind(o._assertThisInitialized(t)),t.setFocusOnItem=t.setFocusOnItem.bind(o._assertThisInitialized(t)),t}return o._inherits(s,e),n._createClass(s,[{key:"componentDidUpdate",value:function(){var e=this;this.isFocusInToolbar&&(-1===this.getFocusableItemRefs().findIndex((function(t){return e.getRefAction(t)===e.state.focusAction}))&&this.setFocusOnFirstItem())}},{key:"onFocus",value:function(e){var t,n;this.isFocusInToolbar=!0,null!==(t=e.target)&&void 0!==t&&null!==(n=t.classList)&&void 0!==n&&n.contains("toolbar-div")&&("toolbar"===this.state.focusAction?this.setFocusOnFirstItem():this.setFocusOnItem())}},{key:"onBlur",value:function(){this.isFocusInToolbar=!1}},{key:"onKeyDown",value:function(e){27===e.keyCode?this.setFocusOnItem():37===e.keyCode?this.setFocusOnPreviousItem():39===e.keyCode&&this.setFocusOnNextItem()}},{key:"onScroll",value:function(e){e.currentTarget.scroll(0,0),e.preventDefault()}},{key:"onToolbarResize",value:function(){var e=this;this.leftItemRefs.forEach((function(t){return e.closeSubMenuOnRef(t)})),this.rightItemRefs.forEach((function(t){return e.closeSubMenuOnRef(t)})),this.overflowItemRefs.forEach((function(t){return e.closeOverflowMenuOnRef(t)})),this.isFocusInToolbar&&this.setFocusOnFirstItem()}},{key:"setFocusOnItem",value:function(e){var t=e||this.state.focusAction;this.getFocusableItemRefs().length>0&&this.setFocusAction(t)}},{key:"setFocusOnFirstItem",value:function(){var e=this.getFocusableItemRefs();if(e.length>0){var t=this.getRefAction(e[0]);this.setFocusAction(t)}}},{key:"setFocusOnPreviousItem",value:function(){var e=this.getFocusableItemRefs(),t=this.getPreviousItemRef(e);if(t){var n=this.getRefAction(t);this.setFocusAction(n)}}},{key:"setFocusOnNextItem",value:function(){var e=this.getFocusableItemRefs(),t=this.getNextItemRef(e);if(t){var n=this.getRefAction(t);this.setFocusAction(n)}}},{key:"setFocusAction",value:function(e){this.setState({focusAction:e})}},{key:"getPreviousItemRef",value:function(e){var t=this,n=e.findIndex((function(e){return t.getRefAction(e)===t.state.focusAction}));return n>0?e[n-1]:null}},{key:"getNextItemRef",value:function(e){var t=this,n=e.findIndex((function(e){return t.getRefAction(e)===t.state.focusAction}));return n<e.length-1?e[n+1]:null}},{key:"getRefAction",value:function(e){return e.current.getAction()}},{key:"getFocusableItemRefs",value:function(){return this.getLeftBarFocusableItemRefs().concat(this.getRightBarFocusableItemRefs())}},{key:"getLeftBarFocusableItemRefs",value:function(){var e=this,t=[];if(0===this.leftItemRefs.length)return t;for(var n=this.findToolbarTopYCoordinate(),o=null,s=function(){if(e.leftItemRefs[i].current.getBoundingRect().top===n)e.leftItemRefs[i].current.isEnabled()&&t.push(e.leftItemRefs[i]);else if(!o){var s=e.getRefAction(e.leftItemRefs[i]),a=e.getOverflowAction(s);(o=e.overflowItemRefs.find((function(e){return e.current.getAction()===a})))&&t.push(o)}},i=0;i<this.leftItemRefs.length;i++)s();return t}},{key:"getRightBarFocusableItemRefs",value:function(){var e=[];if(0===this.rightItemRefs)return e;for(var t=this.findToolbarTopYCoordinate(),n=0;n<this.rightItemRefs.length;n++){if(this.rightItemRefs[n].current.isEnabled())this.rightItemRefs[n].current.getBoundingRect().top===t&&e.push(this.rightItemRefs[n])}return e.reverse()}},{key:"getOverflowAction",value:function(e){return"overflow_"+e}},{key:"setOverflowIndex",value:function(e){null===e?this.setState({leftOverflowIndex:null,rightOverflowIndex:null}):this.setState({leftOverflowIndex:e,rightOverflowIndex:this.getRightOverflowIndex()})}},{key:"getRightOverflowIndex",value:function(){var e=this,t=this.findFirstRightItemRefNotOnTopRow();return null===t?this.rightBar.length-1:this.rightBar.findIndex((function(n){return n.action===e.getRefAction(t)}))}},{key:"findFirstRightItemRefNotOnTopRow",value:function(){for(var e=this.findToolbarTopYCoordinate(),t=null,n=0;n<this.rightItemRefs.length;n++){this.rightItemRefs[n].current.getBoundingRect().top!==e&&null===t&&(t=this.rightItemRefs[n])}return t}},{key:"findToolbarTopYCoordinate",value:function(){return this.toolbarRef.current.getBoundingClientRect().top}},{key:"generateToolbarItems",value:function(e,t,n){for(var o=[],s=0;s<e.length;s++){var i=e[s];i&&(!i.divider&&t&&o.push(this.generateOverflowItem(s,i.action)),o.push(this.generateToolbarItem(i,s,n)))}return o}},{key:"generateToolbarItem",value:function(e,t,n){var o=null;if(e)if(e.divider)o=p.default.createElement(V,{key:"toolbar-item-key-"+t,isInMenu:!1});else{var s=p.default.createRef();n&&n.push(s),o=p.default.createElement(X,{ref:s,key:"toolbar-item-key-"+t,actionObj:e,tooltipDirection:this.props.tooltipDirection,toolbarActionHandler:this.props.toolbarActionHandler,instanceId:this.props.instanceId,containingDivId:this.props.containingDivId,toolbarFocusAction:this.state.focusAction,setToolbarFocusAction:this.setFocusOnItem,isFocusInToolbar:this.isFocusInToolbar,size:this.props.size})}return o}},{key:"generateOverflowItem",value:function(e,t){var n=this.props.additionalText?this.props.additionalText.overflowMenuLabel:"",o=this.getOverflowAction(t),s=e===this.state.leftOverflowIndex?this.createSubMenuActions():[],i=p.default.createRef();return this.overflowItemRefs.push(i),p.default.createElement(ee,{ref:i,key:"toolbar-overflow-item-key-"+e,index:e,action:o,label:n,size:this.props.size,subMenuActions:s,setOverflowIndex:this.setOverflowIndex,toolbarActionHandler:this.props.toolbarActionHandler,instanceId:this.props.instanceId,containingDivId:this.props.containingDivId,toolbarFocusAction:this.state.focusAction,setToolbarFocusAction:this.setFocusOnItem,isFocusInToolbar:this.isFocusInToolbar})}},{key:"createSubMenuActions",value:function(){var e=this.leftBar.slice(this.state.leftOverflowIndex),t=this.rightBar.slice(this.state.rightOverflowIndex).reverse();return e.concat(t)}},{key:"closeSubMenuOnRef",value:function(e){e.current.state.subAreaDisplayed&&e.current.closeSubArea()}},{key:"closeOverflowMenuOnRef",value:function(e){e.current.state.showExtendedMenu&&e.current.closeSubMenu()}},{key:"render",value:function(){this.leftBar=this.props.config.leftBar||[],this.rightBar=this.props.config.rightBar||[],this.rightBar=t._toConsumableArray(this.rightBar).reverse()||[],this.leftItemRefs=[],this.rightItemRefs=[],this.overflowItemRefs=[];var e=this.generateToolbarItems(this.leftBar,!0,this.leftItemRefs),n=this.generateToolbarItems(this.rightBar,!1,this.rightItemRefs),o="sm"===this.props.size?"toolbar-div toolbar-size-small":"toolbar-div",s="toolbar"===this.state.focusAction?0:-1;return p.default.createElement(b.default,{handleWidth:!0,onResize:this.onToolbarResize},p.default.createElement("div",{ref:this.toolbarRef,className:o,instanceid:this.props.instanceId,tabIndex:s,onFocus:this.onFocus,onBlur:this.onBlur,onKeyDown:this.onKeyDown},p.default.createElement("div",{className:"toolbar-left-bar",onScroll:this.onScroll},e),p.default.createElement("div",{className:"toolbar-right-bar"},n)))}}]),s}(p.default.Component);exports.Toolbar=oe,exports.toInteger_1=_,exports.toNumber_1=F;
2
- //# sourceMappingURL=toolbar-6acda0a2.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"toolbar-6acda0a2.js","sources":["../node_modules/lodash/_trimmedEndIndex.js","../node_modules/lodash/_baseTrim.js","../node_modules/lodash/toNumber.js","../node_modules/lodash/toFinite.js","../node_modules/lodash/toInteger.js","../src/toolbar/toolbar-button-item.jsx","../assets/images/zoom_to_fit.svg","../assets/images/arrange_horizontally.svg","../assets/images/arrange_vertically.svg","../assets/images/palette/palette_open.svg","../assets/images/palette/palette_close.svg","../assets/images/notification_counter_icon.svg","../src/toolbar/toolbar-sub-utils.js","../src/toolbar/toolbar-sub-panel.jsx","../src/toolbar/toolbar-sub-menu-item.jsx","../src/toolbar/toolbar-divider-item.jsx","../src/toolbar/toolbar-sub-menu.jsx","../src/toolbar/toolbar-action-item.jsx","../src/toolbar/toolbar-overflow-item.jsx","../src/toolbar/toolbar.jsx"],"sourcesContent":["/** Used to match a single whitespace character. */\nvar reWhitespace = /\\s/;\n\n/**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\nfunction trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n}\n\nmodule.exports = trimmedEndIndex;\n","var trimmedEndIndex = require('./_trimmedEndIndex');\n\n/** Used to match leading whitespace. */\nvar reTrimStart = /^\\s+/;\n\n/**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\nfunction baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n}\n\nmodule.exports = baseTrim;\n","var baseTrim = require('./_baseTrim'),\n isObject = require('./isObject'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar NAN = 0 / 0;\n\n/** Used to detect bad signed hexadecimal string values. */\nvar reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n/** Used to detect binary string values. */\nvar reIsBinary = /^0b[01]+$/i;\n\n/** Used to detect octal string values. */\nvar reIsOctal = /^0o[0-7]+$/i;\n\n/** Built-in method references without a dependency on `root`. */\nvar freeParseInt = parseInt;\n\n/**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\nfunction toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n}\n\nmodule.exports = toNumber;\n","var toNumber = require('./toNumber');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_INTEGER = 1.7976931348623157e+308;\n\n/**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\nfunction toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n}\n\nmodule.exports = toFinite;\n","var toFinite = require('./toFinite');\n\n/**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\nfunction toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n}\n\nmodule.exports = toInteger;\n","/*\n * Copyright 2017-2023 Elyra Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport Tooltip from \"../tooltip/tooltip.jsx\";\nimport ArrangeHorizontally from \"./../../assets/images/arrange_horizontally.svg\";\nimport ArrangeVertically from \"./../../assets/images/arrange_vertically.svg\";\nimport ToggleNotificationPanel from \"./../../assets/images/notification_counter_icon.svg\";\nimport PaletteClose from \"./../../assets/images/palette/palette_close.svg\";\nimport PaletteOpen from \"./../../assets/images/palette/palette_open.svg\";\nimport ZoomToFit from \"./../../assets/images/zoom_to_fit.svg\";\n\nimport { Button } from \"carbon-components-react\";\nimport SVG from \"react-inlinesvg\";\nimport classNames from \"classnames\";\nimport { StopFilledAlt16, Play16, Undo16, Redo16, Chat16, ChatOff16, Result16,\n\tCut16, Copy16, Paste16, Edit16,\tColorPalette16, Maximize16, Minimize16,\n\tLaunch16, AddComment16, TrashCan16, ZoomIn16, ZoomOut16,\n\tChevronRight16, ChevronDown16, ChevronUp16 } from \"@carbon/icons-react\";\nimport { TOOLBAR_STOP, TOOLBAR_RUN, TOOLBAR_UNDO, TOOLBAR_REDO,\n\tTOOLBAR_CUT, TOOLBAR_COPY, TOOLBAR_PASTE, TOOLBAR_CLIPBOARD,\n\tTOOLBAR_CREATE_COMMENT, TOOLBAR_CREATE_AUTO_COMMENT, TOOLBAR_COLOR_BACKGROUND,\n\tTOOLBAR_DELETE_SELECTED_OBJECTS, TOOLBAR_DELETE_LINK,\n\tTOOLBAR_ZOOM_IN, TOOLBAR_ZOOM_OUT, TOOLBAR_ZOOM_FIT,\n\tTOOLBAR_ARRANGE_HORIZONALLY, TOOLBAR_ARRANGE_VERTICALLY,\n\tTOOLBAR_OPEN_PALETTE, TOOLBAR_CLOSE_PALETTE, TOOLBAR_TOGGLE_NOTIFICATION_PANEL,\n\tTOOLBAR_SHOW_COMMENTS, TOOLBAR_HIDE_COMMENTS,\n\tTOOLBAR_EXPAND_SUPERNODE_IN_PLACE, TOOLBAR_COLLAPSE_SUPERNODE_IN_PLACE,\n\tTOOLBAR_EXPAND_SUPERNODE_FULL_PAGE, TOOLBAR_SET_NODE_LABEL_EDIT, TOOLBAR_SET_COMMENT_EDIT_MODE }\n\tfrom \"../common-canvas/constants/canvas-constants.js\";\n\nclass ToolbarButtonItem extends React.Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.buttonRef = React.createRef();\n\t}\n\n\tcomponentDidUpdate() {\n\t\tif (this.props.isFocusInToolbar &&\n\t\t\t\tthis.props.buttonFocusAction === this.props.actionObj.action) {\n\t\t\tthis.buttonRef.current.focus();\n\t\t}\n\t}\n\n\t// Returns a default icon, if there is one, for the action passed in.\n\t// It also may be set to disabled state.\n\tgetDefaultIcon(actionObj) {\n\t\tconst disabled = !actionObj.enable;\n\n\t\tswitch (actionObj.action) {\n\t\tcase (TOOLBAR_STOP):\n\t\t\treturn <StopFilledAlt16 disabled={disabled} />;\n\t\tcase (TOOLBAR_RUN):\n\t\t\treturn <Play16 disabled={disabled} />;\n\t\tcase (TOOLBAR_EXPAND_SUPERNODE_IN_PLACE):\n\t\t\treturn <Maximize16 disabled={disabled} />;\n\t\tcase (TOOLBAR_COLLAPSE_SUPERNODE_IN_PLACE):\n\t\t\treturn <Minimize16 disabled={disabled} />;\n\t\tcase (TOOLBAR_EXPAND_SUPERNODE_FULL_PAGE):\n\t\t\treturn <Launch16 disabled={disabled} />;\n\t\tcase (TOOLBAR_UNDO):\n\t\t\treturn <Undo16 disabled={disabled} />;\n\t\tcase (TOOLBAR_REDO):\n\t\t\treturn <Redo16 disabled={disabled} />;\n\t\tcase (TOOLBAR_CLIPBOARD):\n\t\t\treturn <Result16 disabled={disabled} />;\n\t\tcase (TOOLBAR_CUT):\n\t\t\treturn <Cut16 disabled={disabled} />;\n\t\tcase (TOOLBAR_COPY):\n\t\t\treturn <Copy16 disabled={disabled} />;\n\t\tcase (TOOLBAR_PASTE):\n\t\t\treturn <Paste16 disabled={disabled} />;\n\t\tcase (TOOLBAR_CREATE_COMMENT):\n\t\tcase (TOOLBAR_CREATE_AUTO_COMMENT):\n\t\t\treturn <AddComment16 disabled={disabled} />;\n\t\tcase (TOOLBAR_SHOW_COMMENTS):\n\t\t\treturn <Chat16 disabled={disabled} />;\n\t\tcase (TOOLBAR_HIDE_COMMENTS):\n\t\t\treturn <ChatOff16 disabled={disabled} />;\n\t\tcase (TOOLBAR_COLOR_BACKGROUND):\n\t\t\treturn <ColorPalette16 disabled={disabled} />;\n\t\tcase (TOOLBAR_DELETE_LINK):\n\t\tcase (TOOLBAR_DELETE_SELECTED_OBJECTS):\n\t\t\treturn <TrashCan16 disabled={disabled} />;\n\t\tcase (TOOLBAR_SET_COMMENT_EDIT_MODE):\n\t\tcase (TOOLBAR_SET_NODE_LABEL_EDIT):\n\t\t\treturn <Edit16 disabled={disabled} />;\n\t\tcase (TOOLBAR_ZOOM_IN):\n\t\t\treturn <ZoomIn16 disabled={disabled} />;\n\t\tcase (TOOLBAR_ZOOM_OUT):\n\t\t\treturn <ZoomOut16 disabled={disabled} />;\n\n\t\tcase (TOOLBAR_ZOOM_FIT):\n\t\t\treturn <SVG src={ZoomToFit} disabled={disabled} />;\n\t\tcase (TOOLBAR_ARRANGE_HORIZONALLY):\n\t\t\treturn <SVG src={ArrangeHorizontally} disabled={disabled} />;\n\t\tcase (TOOLBAR_ARRANGE_VERTICALLY):\n\t\t\treturn <SVG src={ArrangeVertically} disabled={disabled} />;\n\t\tcase (TOOLBAR_OPEN_PALETTE):\n\t\t\treturn <SVG src={PaletteOpen} disabled={disabled} />;\n\t\tcase (TOOLBAR_CLOSE_PALETTE):\n\t\t\treturn <SVG src={PaletteClose} disabled={disabled} />;\n\t\tcase (TOOLBAR_TOGGLE_NOTIFICATION_PANEL):\n\t\t\treturn <SVG src={ToggleNotificationPanel} disabled={disabled} />;\n\n\t\tdefault:\n\t\t\treturn null;\n\t\t}\n\t}\n\n\tgenerateLabel(label, disable, isInMenu, incLabelWithIcon) {\n\t\tlet className = \"toolbar-icon-label\";\n\t\tclassName += this.generateLabelType(isInMenu, incLabelWithIcon);\n\t\tclassName += disable ? \" disabled\" : \"\";\n\t\treturn (<div className={className}>{label}</div>);\n\t}\n\n\tgenerateLabelType(isInMenu, inLabelWithIcon) {\n\t\tif (isInMenu) {\n\t\t\treturn \" overflow\";\n\t\t} else if (inLabelWithIcon === \"before\") {\n\t\t\treturn \" before\";\n\t\t} else if (inLabelWithIcon === \"after\") {\n\t\t\treturn \" after\";\n\t\t}\n\t\treturn \"\";\n\t}\n\n\tgenerateIcon(actionObj) {\n\t\tlet icon = this.getDefaultIcon(actionObj);\n\n\t\t// Host application provided icon. This will override any default icon.\n\t\tif (actionObj.iconEnabled) {\n\t\t\tconst iconEnabled = actionObj.iconEnabled;\n\t\t\tconst iconDisabled = actionObj.iconDisabled || actionObj.iconEnabled;\n\t\t\tconst customIcon = actionObj.enable ? iconEnabled : iconDisabled;\n\t\t\tconst id = \"toolbar-icon-\" + this.props.instanceId + \" -\" + actionObj.action;\n\n\t\t\tif (typeof customIcon === \"string\") {\n\t\t\t\ticon = (<SVG id={id} src={customIcon} disabled={!actionObj.enable} />);\n\t\t\t} else {\n\t\t\t\ticon = customIcon;\n\t\t\t}\n\t\t}\n\n\t\tif (icon) {\n\t\t\treturn (\n\t\t\t\t<div className={\"toolbar-icon\"}>\n\t\t\t\t\t{icon}\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n\n\tgenerateButton(actionObj) {\n\t\tlet labelBefore = null;\n\t\tlet labelAfter = null;\n\n\t\tif (this.props.isInMenu) {\n\t\t\tlabelAfter = this.generateLabel(actionObj.label, !actionObj.enable, true);\n\n\t\t} else if (actionObj.incLabelWithIcon === \"before\") {\n\t\t\tlabelBefore = this.generateLabel(actionObj.label, !actionObj.enable, false, actionObj.incLabelWithIcon);\n\n\t\t} else if (actionObj.incLabelWithIcon === \"after\") {\n\t\t\tlabelAfter = this.generateLabel(actionObj.label, !actionObj.enable, false, actionObj.incLabelWithIcon);\n\t\t}\n\n\t\tconst icon = this.generateIcon(actionObj);\n\t\tconst textContent = actionObj.textContent ? (<div className=\"toolbar-text-content\"> {actionObj.textContent} </div>) : null;\n\n\t\tconst itemContentClassName = classNames(\n\t\t\t\"toolbar-item-content\",\n\t\t\tactionObj.className ? actionObj.className : null,\n\t\t\t{ \"overflow\": this.props.isInMenu, \"disabled\": !actionObj.enable, \"default\": !actionObj.kind });\n\n\t\t// If no 'kind' is set, use ghost and then override colors using the \"default\" class in innerDivClassName.\n\t\tconst kind = actionObj.kind || \"ghost\";\n\n\t\tconst chevronIcon = this.generateChevronIcon(actionObj);\n\n\t\tlet buttonContent = (\n\t\t\t<div className={itemContentClassName}>\n\t\t\t\t{labelBefore}\n\t\t\t\t{icon}\n\t\t\t\t{labelAfter}\n\t\t\t\t{textContent}\n\t\t\t\t{chevronIcon}\n\t\t\t</div>\n\t\t);\n\n\t\tbuttonContent = this.wrapInTooltip(buttonContent);\n\n\t\t// Only specify an aria label for the button if a label is not displayed\n\t\t// with the button icon.\n\t\tconst ariaLabel = actionObj.incLabelWithIcon ? null : actionObj.label;\n\t\tconst tabIndex = this.props.buttonFocusAction === actionObj.action ? 0 : -1;\n\n\t\tconst button = (\n\t\t\t<Button kind={kind}\n\t\t\t\tref={this.buttonRef}\n\t\t\t\tonClick={this.props.actionClickHandler}\n\t\t\t\tdisabled={!actionObj.enable}\n\t\t\t\taria-label={ariaLabel}\n\t\t\t\tsize={this.props.size}\n\t\t\t\ttabIndex={tabIndex}\n\t\t\t>\n\t\t\t\t{buttonContent}\n\t\t\t</Button>\n\t\t);\n\n\t\treturn button;\n\t}\n\n\t// Returns a chevron icon if the action icon is displaying a sub-menu or\n\t// sub-panel. The chevron will:\n\t// * point right if this action item is in a drop down menu\n\t// * point down if this action item is displayed with text in the toolbar\n\t// and the menu isn't displayed\n\t// * point up if this action item is displayed with text in the toolbar\n\t// and the menu is displayed\n\t// * be a mini-chevron (small triangle in the bottom right of icon) if this\n\t// action item isn't displayed with text.\n\tgenerateChevronIcon(actionObj) {\n\t\tif (actionObj.subMenu || actionObj.subPanel) {\n\t\t\tif (this.props.isInMenu) {\n\t\t\t\treturn (<ChevronRight16 />);\n\t\t\t}\n\t\t\tif (actionObj.incLabelWithIcon === \"before\" ||\n\t\t\t\t\tactionObj.incLabelWithIcon === \"after\") {\n\t\t\t\tconst chev = this.props.subAreaDisplayed ? (<ChevronUp16 />) : (<ChevronDown16 />);\n\t\t\t\treturn (<div className={\"toolbar-up-down-chevron\"}>{chev}</div>);\n\t\t\t}\n\t\t\treturn this.generateChevronMini();\n\t\t}\n\t\treturn null;\n\t}\n\n\t// Returns an svg to display the little triangle that appears in the bottom\n\t// right corner of icons that, when clicked, show a drop down menu.\n\tgenerateChevronMini() {\n\t\tconst path = this.props.size === \"sm\" ? \"M 29 29 L 29 23 23 29 Z\" : \"M 37 37 L 37 30 30 37 Z\";\n\t\treturn (\n\t\t\t<svg className=\"toolbar-tick-svg\">\n\t\t\t\t<path d={path} className=\"toolbar-tick-mark\" />\n\t\t\t</svg>\n\t\t);\n\t}\n\n\twrapInTooltip(content) {\n\t\tif (!this.props.isInMenu && (this.showLabelAsTip(this.props.actionObj) || this.props.actionObj.tooltip)) {\n\t\t\tconst tip = this.props.actionObj.tooltip ? this.props.actionObj.tooltip : this.props.actionObj.label;\n\t\t\tconst tooltipId = this.props.actionName + \"-\" + this.props.instanceId + \"-tooltip\";\n\t\t\tconst enableTooltip = this.props.actionObj.enable || this.props.actionObj.jsx; // JSX 'tools' don't have enable attr so always display a tooltip for them.\n\t\t\tconst direction = this.props.tooltipDirection ? this.props.tooltipDirection : \"bottom\";\n\n\t\t\treturn (\n\t\t\t\t<Tooltip id={tooltipId} tip={tip} disable={!enableTooltip} className=\"icon-tooltip\" direction={direction}>\n\t\t\t\t\t{content}\n\t\t\t\t</Tooltip>\n\t\t\t);\n\t\t}\n\t\treturn content;\n\t}\n\n\t// Returns true if the label should be shown as a tooltip or false if not.\n\t// We do not show the label as a tooltip if it is already shown in the\n\t// toolbar next to the icon (i.e. incLabelWithIcon is set to something).\n\tshowLabelAsTip(actionObj) {\n\t\tif (actionObj.label) {\n\t\t\tif (actionObj.incLabelWithIcon === \"before\" ||\n\t\t\t\t\tactionObj.incLabelWithIcon === \"after\") {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\treturn true;\n\t\t}\n\t\treturn false;\n\t}\n\n\trender() {\n\t\tconst actionObj = this.props.actionObj;\n\t\tlet divContent = null;\n\n\t\tif (actionObj.jsx) {\n\t\t\tdivContent = this.wrapInTooltip(actionObj.jsx);\n\t\t} else {\n\t\t\tdivContent = this.generateButton(actionObj);\n\t\t}\n\n\t\treturn divContent;\n\t}\n}\n\nToolbarButtonItem.propTypes = {\n\tactionObj: PropTypes.shape({\n\t\taction: PropTypes.string.isRequired,\n\t\tlabel: PropTypes.oneOfType([\n\t\t\tPropTypes.string,\n\t\t\tPropTypes.object\n\t\t]),\n\t\tincLabelWithIcon: PropTypes.oneOf([\"no\", \"before\", \"after\"]),\n\t\tenable: PropTypes.bool,\n\t\ticonEnabled: PropTypes.oneOfType([\n\t\t\tPropTypes.string,\n\t\t\tPropTypes.object\n\t\t]),\n\t\ticonDisabled: PropTypes.oneOfType([\n\t\t\tPropTypes.string,\n\t\t\tPropTypes.object\n\t\t]),\n\t\tclassName: PropTypes.string,\n\t\ttextContent: PropTypes.string,\n\t\tisSelected: PropTypes.bool,\n\t\tkind: PropTypes.string,\n\t\tcloseSubAreaOnClick: PropTypes.bool,\n\t\tsubMenu: PropTypes.array,\n\t\tsubPanel: PropTypes.any,\n\t\tsubPanelData: PropTypes.object,\n\t\tjsx: PropTypes.object,\n\t\ttooltip: PropTypes.oneOfType([\n\t\t\tPropTypes.string,\n\t\t\tPropTypes.object,\n\t\t\tPropTypes.func\n\t\t])\n\t}),\n\tactionName: PropTypes.string.isRequired,\n\ttooltipDirection: PropTypes.oneOf([\"top\", \"bottom\"]),\n\tinstanceId: PropTypes.number.isRequired,\n\tisInMenu: PropTypes.bool,\n\tsubAreaDisplayed: PropTypes.bool,\n\tactionClickHandler: PropTypes.func,\n\tbuttonFocusAction: PropTypes.string,\n\tisFocusInToolbar: PropTypes.bool,\n\tsize: PropTypes.oneOf([\"md\", \"sm\"])\n};\n\nexport default ToolbarButtonItem;\n","export default \"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2016%2016%22%20fill%3D%22currentColor%22%3E%20%3Cpath%20d%3D%22M6%2C7.5h4v1H6Z%22%2F%3E%20%3Cpath%20d%3D%22M4%2C12h8a.94.94%2C0%2C0%2C0%2C1-1V5a.94.94%2C0%2C0%2C0-1-1H4A.94.94%2C0%2C0%2C0%2C3%2C5v6A.94.94%2C0%2C0%2C0%2C4%2C12ZM4%2C5h8v6H4Z%22%2F%3E%20%3Cpolygon%20points%3D%222%203.5%201%203.5%201%201%203.5%201%203.5%202%202%202%202%203.5%22%2F%3E%20%3Cpolygon%20points%3D%2215%203.5%2014%203.5%2014%202%2012.5%202%2012.5%201%2015%201%2015%203.5%22%2F%3E%20%3Cpolygon%20points%3D%2215%2015%2012.5%2015%2012.5%2014%2014%2014%2014%2012.5%2015%2012.5%2015%2015%22%2F%3E%20%3Cpolygon%20points%3D%223.5%2015%201%2015%201%2012.5%202%2012.5%202%2014%203.5%2014%203.5%2015%22%2F%3E%3C%2Fsvg%3E\"","export default \"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2016%2016%22%3E%3Crect%20x%3D%221.5%22%20y%3D%222%22%20width%3D%2213%22%20height%3D%221%22%2F%3E%3Crect%20x%3D%221.5%22%20y%3D%2213%22%20width%3D%2213%22%20height%3D%221%22%2F%3E%3Cpath%20d%3D%22M7%2C10.5H2a.47.47%2C0%2C0%2C1-.5-.5V6A.47.47%2C0%2C0%2C1%2C2%2C5.5H7a.47.47%2C0%2C0%2C1%2C.5.5v4A.47.47%2C0%2C0%2C1%2C7%2C10.5Zm-4.5-1h4v-3h-4Z%22%2F%3E%3Cpath%20d%3D%22M14%2C10.5H9a.47.47%2C0%2C0%2C1-.5-.5V6A.47.47%2C0%2C0%2C1%2C9%2C5.5h5a.47.47%2C0%2C0%2C1%2C.5.5v4A.47.47%2C0%2C0%2C1%2C14%2C10.5Zm-4.5-1h4v-3h-4Z%22%2F%3E%3C%2Fsvg%3E\"","export default \"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2016%2016%22%3E%3Crect%20x%3D%222%22%20y%3D%221.5%22%20width%3D%221%22%20height%3D%2213%22%2F%3E%3Crect%20x%3D%2213%22%20y%3D%221.5%22%20width%3D%221%22%20height%3D%2213%22%2F%3E%3Cpath%20d%3D%22M10.5%2C7.5h-5A.47.47%2C0%2C0%2C1%2C5%2C7V3a.47.47%2C0%2C0%2C1%2C.5-.5h5A.47.47%2C0%2C0%2C1%2C11%2C3V7A.47.47%2C0%2C0%2C1%2C10.5%2C7.5ZM6%2C6.5h4v-3H6Z%22%2F%3E%3Cpath%20d%3D%22M10.5%2C13.5h-5A.47.47%2C0%2C0%2C1%2C5%2C13V9a.47.47%2C0%2C0%2C1%2C.5-.5h5A.47.47%2C0%2C0%2C1%2C11%2C9v4A.47.47%2C0%2C0%2C1%2C10.5%2C13.5ZM6%2C12.5h4v-3H6Z%22%2F%3E%3C%2Fsvg%3E\"","export default \"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2032%2032%22%20fill%3D%22currentColor%22%3E%20%3Crect%20width%3D%2232%22%20height%3D%2232%22%20fill%3D%22none%22%2F%3E%20%3Cpath%20d%3D%22M28%2C4H4A2%2C2%2C0%2C0%2C0%2C2%2C6V26a2%2C2%2C0%2C0%2C0%2C2%2C2H28a2%2C2%2C0%2C0%2C0%2C2-2V6A2%2C2%2C0%2C0%2C0%2C28%2C4Zm0%2C22H12V17.1h8.9l-2.5%2C2.5%2C1.5%2C1.5L25%2C16l-5.1-5.1-1.5%2C1.5%2C2.5%2C2.5H12V6H28Z%22%2F%3E%3C%2Fsvg%3E\"","export default \"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2032%2032%22%20fill%3D%22currentColor%22%3E%20%3Crect%20width%3D%2232%22%20height%3D%2232%22%20fill%3D%22none%22%2F%3E%20%3Cpath%20d%3D%22M28%2C4H4A2%2C2%2C0%2C0%2C0%2C2%2C6V26a2%2C2%2C0%2C0%2C0%2C2%2C2H28a2%2C2%2C0%2C0%2C0%2C2-2V6A2%2C2%2C0%2C0%2C0%2C28%2C4Zm0%2C11H19.1l2.5-2.5L20.1%2C11%2C15%2C16l5.1%2C5.1%2C1.5-1.5-2.5-2.5H28V26H12V6H28Z%22%2F%3E%3C%2Fsvg%3E\"","export default \"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20viewBox%3D%220%200%2032%2032%22%20fill%3D%22currentColor%22%3E%20%3Cpath%20d%3D%22M27%2C12V27H5V5H20V3H5A2%2C2%2C0%2C0%2C0%2C3%2C5V27a2%2C2%2C0%2C0%2C0%2C2%2C2H27a2%2C2%2C0%2C0%2C0%2C2-2V12Z%22%2F%3E%20%3Ccircle%20class%3D%22dot%22%20cx%3D%2226.5%22%20cy%3D%225.5%22%20r%3D%223.5%22%2F%3E%3C%2Fsvg%3E\"","/*\n * Copyright 2023 Elyra Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n*/\n\n// These utility functions are used by both toolbar-sub-menu.jsx AND\n// toolbar-sub-panel.jsx to position the areaEf (menu or panel) relative\n// to the parent actionItemRect, passed in, in the direction indicated by\n// the expandDirection parameter and constrained within the <div>\n// specified by the containingDivId parameter.\n\n\n// Adjust the position of the sub-area to make sure it doesn't extend\n// outside the containing divs boundary. We need to do this after the subarea\n// has been mounted so we can query its size and position.\nexport function adjustSubAreaPosition(areaRef, containingDivId, expandDirection, actionItemRect) {\n\tconst containingDiv = document.getElementById(containingDivId);\n\tconst containingDivRect = containingDiv.getBoundingClientRect();\n\n\tconst thisAreaRect = areaRef.current.getBoundingClientRect();\n\n\tconst outsideBottom = thisAreaRect.bottom - containingDivRect.bottom;\n\tconst outsideRight = thisAreaRect.right - containingDivRect.right;\n\n\tif (expandDirection === \"vertical\") {\n\t\tif (outsideBottom > 0) {\n\t\t\tconst topGap = actionItemRect.top - containingDivRect.top;\n\t\t\tconst newTop = (topGap > thisAreaRect.height)\n\t\t\t\t? actionItemRect.top - thisAreaRect.height\n\t\t\t\t: actionItemRect.bottom - outsideBottom;\n\n\t\t\tareaRef.current.style.top = newTop + \"px\";\n\t\t}\n\n\t\tif (outsideRight > 0) {\n\t\t\tconst newLeft = actionItemRect.left - outsideRight - 2;\n\t\t\tareaRef.current.style.left = newLeft + \"px\";\n\t\t}\n\n\t} else {\n\t\tif (outsideBottom > 0) {\n\t\t\tconst newTop = thisAreaRect.top - outsideBottom - 2;\n\t\t\tareaRef.current.style.top = newTop + \"px\";\n\t\t}\n\n\t\tif (outsideRight > 0) {\n\t\t\tconst newLeft = actionItemRect.left - thisAreaRect.width;\n\t\t\tareaRef.current.style.left = newLeft + \"px\";\n\t\t}\n\t}\n}\n\nexport function generateSubAreaStyle(expandDirection, actionItemRect) {\n\tif (expandDirection === \"vertical\") {\n\t\treturn {\n\t\t\ttop: actionItemRect.bottom + 1,\n\t\t\tleft: actionItemRect.left\n\t\t};\n\t}\n\treturn {\n\t\ttop: actionItemRect.top - 1,\n\t\tleft: actionItemRect.left + actionItemRect.width\n\t};\n}\n\n\n","/*\n * Copyright 2023 Elyra Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n*/\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { adjustSubAreaPosition, generateSubAreaStyle } from \"./toolbar-sub-utils.js\";\n\nconst ESC_KEY = 27;\n\nclass ToolbarSubPanel extends React.Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.areaRef = React.createRef();\n\n\t\tthis.onClick = this.onClick.bind(this);\n\t\tthis.onKeyDown = this.onKeyDown.bind(this);\n\t}\n\n\tcomponentDidMount() {\n\t\tif (this.props.containingDivId) {\n\t\t\tadjustSubAreaPosition(this.areaRef,\n\t\t\t\tthis.props.containingDivId, this.props.expandDirection, this.props.actionItemRect);\n\t\t}\n\t}\n\n\tonClick() {\n\t\tthis.props.closeSubArea();\n\t}\n\n\tonKeyDown(evt) {\n\t\tif (evt.keyCode === ESC_KEY) {\n\t\t\tthis.props.closeSubArea();\n\t\t\tevt.stopPropagation();\n\t\t}\n\t}\n\n\trender() {\n\t\tconst style = generateSubAreaStyle(this.props.expandDirection, this.props.actionItemRect);\n\n\t\tif (this.props.subPanel) {\n\t\t\tconst subPanel = typeof this.props.subPanel === \"object\"\n\t\t\t\t? this.props.subPanel\n\t\t\t\t: (<this.props.subPanel closeSubPanel={this.props.closeSubArea} subPanelData={this.props.subPanelData} />);\n\n\t\t\treturn (\n\t\t\t\t<div ref={this.areaRef} style={style} className={\"toolbar-popover-list subpanel\"} onClick={this.onClick} onKeyDown={this.onKeyDown}>\n\t\t\t\t\t{subPanel}\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\n\t\treturn null;\n\t}\n}\n\nToolbarSubPanel.propTypes = {\n\tsubPanel: PropTypes.any,\n\tsubPanelData: PropTypes.object,\n\tcloseSubArea: PropTypes.func,\n\tsetToolbarFocusAction: PropTypes.func,\n\tactionItemRect: PropTypes.object.isRequired,\n\texpandDirection: PropTypes.string.isRequired,\n\tcontainingDivId: PropTypes.string\n};\n\nexport default ToolbarSubPanel;\n","/*\n * Copyright 2017-2023 Elyra Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport ToolbarButtonItem from \"./toolbar-button-item.jsx\";\n\nimport classNames from \"classnames\";\nimport ToolbarSubMenu from \"./toolbar-sub-menu.jsx\";\nimport ToolbarSubPanel from \"./toolbar-sub-panel.jsx\";\n\nclass ToolbarSubMenuItem extends React.Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\tsubAreaDisplayed: false\n\t\t};\n\n\t\tthis.divRef = React.createRef();\n\n\t\tthis.actionClickHandler = this.actionClickHandler.bind(this);\n\t\tthis.onMouseEnter = this.onMouseEnter.bind(this);\n\t\tthis.onMouseLeave = this.onMouseLeave.bind(this);\n\t\tthis.openSubArea = this.openSubArea.bind(this);\n\t\tthis.closeSubArea = this.closeSubArea.bind(this);\n\t\tthis.clickOutside = this.clickOutside.bind(this);\n\t}\n\n\t// We must remove the eventListener in case this class is unmounted due\n\t// to the toolbar getting redrawn.\n\tcomponentWillUnmount() {\n\t\tdocument.removeEventListener(\"click\", this.clickOutside, false);\n\t}\n\n\tonMouseEnter(evt) {\n\t\tif (this.props.actionObj.subMenu || this.props.actionObj.subPanel) {\n\t\t\tthis.openSubArea();\n\t\t}\n\t}\n\n\tonMouseLeave(evt) {\n\t\tif (this.props.actionObj.subMenu || this.props.actionObj.subPanel) {\n\t\t\tthis.closeSubArea();\n\t\t}\n\t}\n\n\tclickOutside(evt) {\n\t\tif (this.state.subAreaDisplayed) {\n\t\t\tconst items = document.getElementsByClassName(this.generateActionName());\n\t\t\tconst isOver = items && items.length > 0 ? items[0].contains(evt.target) : false;\n\n\t\t\tif (!isOver) {\n\t\t\t\tthis.closeSubArea();\n\t\t\t}\n\t\t}\n\t}\n\n\topenSubArea() {\n\t\tthis.setState({ subAreaDisplayed: true });\n\t}\n\n\tcloseSubArea(checkCloseSubAreaOnClick) {\n\t\tif (!checkCloseSubAreaOnClick || this.props.actionObj.closeSubAreaOnClick) {\n\t\t\tthis.setState({ subAreaDisplayed: false });\n\t\t}\n\t}\n\n\tactionClickHandler(evt) {\n\t\tif (this.props.actionObj.subMenu || this.props.actionObj.subPanel) {\n\t\t\tif (this.state.subAreaDisplayed) {\n\t\t\t\tdocument.removeEventListener(\"click\", this.clickOutside, false);\n\t\t\t\tthis.closeSubArea();\n\t\t\t} else {\n\t\t\t\tdocument.addEventListener(\"click\", this.clickOutside, false);\n\t\t\t\tthis.openSubArea();\n\t\t\t}\n\n\t\t} else {\n\t\t\tevt.stopPropagation();\n\t\t\tif (this.props.isInCascadeMenu) {\n\t\t\t\tthis.props.closeParentSubArea();\n\t\t\t\tthis.props.setSubMenuFocus();\n\n\t\t\t} else if (this.props.isInOverflowMenu) {\n\t\t\t\tthis.props.setSubMenuFocus(this.props.actionObj.action);\n\n\t\t\t} else {\n\t\t\t\tthis.props.closeParentSubArea();\n\t\t\t\tthis.props.setToolbarFocusAction(); // Resets the toolbar focus action\n\t\t\t}\n\t\t\tthis.props.toolbarActionHandler(this.props.actionObj.action, evt);\n\t\t}\n\t}\n\n\tgenerateActionName() {\n\t\treturn this.props.actionObj.action + \"-action\";\n\t}\n\n\t// Returns a sub-area for a cascading menu item. The sub-area can be either a\n\t// sub-panel which is a div contaiing whatever the caller passes in within the\n\t// supPanel field OR a sub-menu which is a list of options which is created\n\t// from the array of items the caller passes in the subMenu field.\n\tgenerateSubArea() {\n\t\tconst actionItemRect = this.divRef.current.getBoundingClientRect();\n\n\t\tif (this.props.actionObj.subPanel) {\n\t\t\treturn (\n\t\t\t\t<ToolbarSubPanel\n\t\t\t\t\tsubPanel={this.props.actionObj.subPanel}\n\t\t\t\t\tsubPanelData={this.props.actionObj.subPanelData}\n\t\t\t\t\tcloseSubArea={this.closeSubArea}\n\t\t\t\t\tactionItemRect={actionItemRect}\n\t\t\t\t\texpandDirection={\"horizontal\"}\n\t\t\t\t\tcontainingDivId={this.props.containingDivId}\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\t\treturn (\n\t\t\t<ToolbarSubMenu\n\t\t\t\tsubMenuActions={this.props.actionObj.subMenu}\n\t\t\t\tinstanceId={this.props.instanceId}\n\t\t\t\ttoolbarActionHandler={this.props.toolbarActionHandler}\n\t\t\t\tsetSubMenuFocus={this.props.setSubMenuFocus}\n\t\t\t\tcloseSubArea={this.closeSubArea}\n\t\t\t\tactionItemRect={actionItemRect}\n\t\t\t\texpandDirection={\"horizontal\"}\n\t\t\t\tcontainingDivId={this.props.containingDivId}\n\t\t\t\tparentSelector={this.generateSelector()}\n\t\t\t\tisCascadeMenu\n\t\t\t\tsize={this.props.size}\n\t\t\t/>\n\t\t);\n\t}\n\n\tgenerateSelector() {\n\t\treturn \".toolbar-sub-menu-item\";\n\t}\n\n\trender() {\n\t\tconst actionObj = this.props.actionObj;\n\t\tconst actionName = this.generateActionName();\n\t\tconst kindAsClass = actionObj.kind ? actionObj.kind : \"default\";\n\n\t\tconst itemClassName = classNames(\n\t\t\t{ \"toolbar-sub-menu-item\": true,\n\t\t\t\t\"toolbar-sub-menu-jsx-item\": actionObj.jsx,\n\t\t\t\t\"toolbar-item-selected\": actionObj.isSelected },\n\t\t\tkindAsClass,\n\t\t\tactionName);\n\n\t\tconst subArea = this.state.subAreaDisplayed ? this.generateSubArea() : null;\n\n\t\treturn (\n\t\t\t<div ref={this.divRef} className={itemClassName} data-toolbar-action={actionObj.action}\n\t\t\t\tonMouseEnter={this.onMouseEnter} onMouseLeave={this.onMouseLeave} onKeyDown={this.onKeyDown}\n\t\t\t>\n\t\t\t\t<div>\n\t\t\t\t\t<ToolbarButtonItem\n\t\t\t\t\t\tactionObj={actionObj}\n\t\t\t\t\t\tactionName={this.generateActionName()}\n\t\t\t\t\t\tinstanceId={this.props.instanceId}\n\t\t\t\t\t\tisInMenu\n\t\t\t\t\t\tsubAreaDisplayed={this.state.subAreaDisplayed}\n\t\t\t\t\t\tactionClickHandler={this.actionClickHandler}\n\t\t\t\t\t\tbuttonFocusAction={this.props.subMenuFocusAction}\n\t\t\t\t\t\tisFocusInToolbar // Focus must be in toolbar for this sub-menu item to appear\n\t\t\t\t\t\tsize={this.props.size}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t{subArea}\n\t\t\t</div>\n\t\t);\n\t}\n}\n\nToolbarSubMenuItem.propTypes = {\n\tactionObj: PropTypes.shape({\n\t\taction: PropTypes.string.isRequired,\n\t\tlabel: PropTypes.oneOfType([\n\t\t\tPropTypes.string,\n\t\t\tPropTypes.object\n\t\t]),\n\t\tincLabelWithIcon: PropTypes.oneOf([\"no\", \"before\", \"after\"]),\n\t\tenable: PropTypes.bool,\n\t\ticonEnabled: PropTypes.oneOfType([\n\t\t\tPropTypes.string,\n\t\t\tPropTypes.object\n\t\t]),\n\t\ticonDisabled: PropTypes.oneOfType([\n\t\t\tPropTypes.string,\n\t\t\tPropTypes.object\n\t\t]),\n\t\tclassName: PropTypes.string,\n\t\ttextContent: PropTypes.string,\n\t\tisSelected: PropTypes.bool,\n\t\tkind: PropTypes.string,\n\t\tcloseSubAreaOnClick: PropTypes.bool,\n\t\tsubMenu: PropTypes.array,\n\t\tsubPanel: PropTypes.any,\n\t\tsubPanelData: PropTypes.object,\n\t\tjsx: PropTypes.object,\n\t\ttooltip: PropTypes.oneOfType([\n\t\t\tPropTypes.string,\n\t\t\tPropTypes.object,\n\t\t\tPropTypes.func\n\t\t])\n\t}),\n\ttoolbarActionHandler: PropTypes.func.isRequired,\n\tinstanceId: PropTypes.number.isRequired,\n\tcontainingDivId: PropTypes.string,\n\tcloseParentSubArea: PropTypes.func,\n\tsubMenuFocusAction: PropTypes.string,\n\tsetToolbarFocusAction: PropTypes.func,\n\tsetSubMenuFocus: PropTypes.func,\n\tisInOverflowMenu: PropTypes.bool,\n\tisInCascadeMenu: PropTypes.bool,\n\tsize: PropTypes.oneOf([\"md\", \"sm\"])\n};\n\nexport default ToolbarSubMenuItem;\n","/*\n * Copyright 2017-2023 Elyra Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\nclass ToolbarDividerItem extends React.Component {\n\trender() {\n\t\tconst dividerClassName = this.props.isInMenu ? \"toolbar-divider-overflow\" : \"toolbar-divider\";\n\n\t\t// Add a space as content. When using display: inline-block the div needs\n\t\t// some content so it is displayed inline with the other elements of the\n\t\t// toolbar. With no content it is displayed above (!) the other elements.\n\t\treturn (\n\t\t\t<div className={dividerClassName} tabIndex={-1} aria-hidden >&nbsp;</div>\n\t\t);\n\t}\n}\n\nToolbarDividerItem.propTypes = {\n\tisInMenu: PropTypes.bool\n};\n\nexport default ToolbarDividerItem;\n","/*\n * Copyright 2023 Elyra Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n*/\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport ToolbarSubMenuItem from \"./toolbar-sub-menu-item.jsx\";\nimport ToolbarDividerItem from \"./toolbar-divider-item\";\n\nimport { adjustSubAreaPosition, generateSubAreaStyle } from \"./toolbar-sub-utils.js\";\n\nconst ESC_KEY = 27;\nconst LEFT_ARROW_KEY = 37;\nconst UP_ARROW_KEY = 38;\nconst RIGHT_ARROW_KEY = 39;\nconst DOWN_ARROW_KEY = 40;\n\nclass ToolbarSubMenu extends React.Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\tfocusAction: \"subarea\"\n\t\t};\n\n\t\tthis.areaRef = React.createRef();\n\n\t\tthis.onKeyDown = this.onKeyDown.bind(this);\n\t\tthis.setFocusAction = this.setFocusAction.bind(this);\n\t\tthis.setSubMenuFocus = this.setSubMenuFocus.bind(this);\n\t}\n\n\tcomponentDidMount() {\n\t\tif (this.props.containingDivId && this.props.subMenuActions.length > 0) {\n\t\t\tadjustSubAreaPosition(this.areaRef,\n\t\t\t\tthis.props.containingDivId, this.props.expandDirection, this.props.actionItemRect);\n\t\t}\n\n\t\tif (this.state.focusAction === \"subarea\") {\n\t\t\tthis.setFocusOnFirstItem();\n\t\t}\n\t}\n\n\tcomponentDidUpdate() {\n\t\tif (this.state.focusAction !== \"subarea\") {\n\t\t\tconst actionObj = this.props.subMenuActions.find((sma) => sma.action === this.state.focusAction);\n\t\t\tif (!actionObj?.enable) {\n\t\t\t\tconst actionToSet = this.getClosestEnabledAction(this.state.focusAction);\n\t\t\t\tif (actionToSet !== null) {\n\t\t\t\t\tthis.setFocusAction(actionToSet);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\tonKeyDown(evt) {\n\t\tif (evt.keyCode === ESC_KEY) {\n\t\t\tthis.props.closeSubArea();\n\t\t\tevt.stopPropagation(); // Stop propagation in a case we are a cascade menu\n\n\t\t} else if (evt.keyCode === UP_ARROW_KEY) {\n\t\t\tthis.setFocusOnPreviousItem();\n\t\t\tevt.stopPropagation(); // Stop propagation in a case we are a cascade menu\n\n\t\t} else if (evt.keyCode === DOWN_ARROW_KEY) {\n\t\t\tthis.setFocusOnNextItem();\n\t\t\tevt.stopPropagation(); // Stop propagation in a case we are a cascade menu\n\n\t\t} else if (evt.keyCode === LEFT_ARROW_KEY) {\n\t\t\tevt.stopPropagation(); // Stop propagation in a case we are a cascade menu\n\n\t\t} else if (evt.keyCode === RIGHT_ARROW_KEY) {\n\t\t\tevt.stopPropagation(); // Stop propagation in a case we are a cascade menu\n\t\t}\n\t}\n\n\tsetFocusOnFirstItem() {\n\t\tconst focusableActions = this.getFocusableActions();\n\t\tif (focusableActions.length > 0) {\n\t\t\tthis.setFocusAction(focusableActions[0].action);\n\t\t}\n\t}\n\n\tsetFocusOnPreviousItem() {\n\t\tconst focusableActions = this.getFocusableActions();\n\t\tconst previousFocusAction = this.getPreviousFocusAction(focusableActions);\n\t\tif (previousFocusAction) {\n\t\t\tthis.setFocusAction(previousFocusAction.action);\n\t\t}\n\t}\n\n\tsetFocusOnNextItem() {\n\t\tconst focusableActions = this.getFocusableActions();\n\t\tconst nextFocusAction = this.getNextFocusAction(focusableActions);\n\t\tif (nextFocusAction) {\n\t\t\tthis.setFocusAction(nextFocusAction.action);\n\t\t}\n\t}\n\n\tsetFocusAction(focusAction) {\n\t\tthis.setState({ focusAction });\n\t}\n\n\tsetSubMenuFocus(action) {\n\t\tconst actionToSet = action || this.state.focusAction;\n\t\tthis.setFocusAction(actionToSet);\n\t}\n\n\tgetClosestEnabledAction(action) {\n\t\tconst index = this.props.subMenuActions.findIndex((sma) => sma.action === action);\n\t\tlet newAction = null;\n\t\tlet indexUp = index + 1;\n\t\tlet indexDown = index - 1;\n\n\t\twhile ((indexDown > -1 || indexUp < this.props.subMenuActions.length) && newAction === null) {\n\t\t\tif (indexDown > -1 && this.props.subMenuActions[indexDown].enable) {\n\t\t\t\tnewAction = this.props.subMenuActions[indexDown].action;\n\t\t\t} else {\n\t\t\t\tindexDown--;\n\t\t\t}\n\t\t\tif (indexUp < this.props.subMenuActions.length && this.props.subMenuActions[indexUp].enable) {\n\t\t\t\tnewAction = this.props.subMenuActions[indexUp].action;\n\t\t\t} else {\n\t\t\t\tindexUp++;\n\t\t\t}\n\t\t}\n\t\treturn newAction;\n\t}\n\n\tgetFocusableActions() {\n\t\tconst focusableActions = [];\n\n\t\tfor (let i = 0; i < this.props.subMenuActions.length; i++) {\n\t\t\tif (this.props.subMenuActions[i].enable) {\n\t\t\t\tfocusableActions.push(this.props.subMenuActions[i]);\n\t\t\t}\n\t\t}\n\n\t\treturn focusableActions;\n\t}\n\n\tgetPreviousFocusAction(focuableActions) {\n\t\tconst index = focuableActions.findIndex((fa) => fa.action === this.state.focusAction);\n\t\tif (index > 0) {\n\t\t\treturn focuableActions[index - 1];\n\t\t}\n\t\treturn focuableActions[focuableActions.length - 1];\n\t}\n\n\tgetNextFocusAction(focuableActions) {\n\t\tconst index = focuableActions.findIndex((fa) => fa.action === this.state.focusAction);\n\t\tif (index < focuableActions.length - 1) {\n\t\t\treturn focuableActions[index + 1];\n\t\t}\n\t\treturn focuableActions[0];\n\t}\n\n\t// Generates an array of JSX objects for a sub-menu defined by the\n\t// prop subMenuActions parameter array.\n\tgenerateSubMenuItems() {\n\t\tconst newItems = [];\n\n\t\tfor (let i = 0; i < this.props.subMenuActions.length; i++) {\n\t\t\tconst actionObj = this.props.subMenuActions[i];\n\t\t\tif (actionObj) {\n\t\t\t\tnewItems.push(this.generateSubMenuItem(actionObj, i));\n\t\t\t}\n\t\t}\n\t\treturn newItems;\n\t}\n\n\t// Returns JSX for a toolbar item based on the actionObj passed in.\n\tgenerateSubMenuItem(actionObj, i) {\n\t\tlet jsx = null;\n\n\t\tif (actionObj) {\n\t\t\tif (actionObj.divider) {\n\t\t\t\tjsx = (\n\t\t\t\t\t<ToolbarDividerItem\n\t\t\t\t\t\tkey={\"toolbar-item-key-\" + i}\n\t\t\t\t\t\tisInMenu\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tjsx = (\n\t\t\t\t\t<ToolbarSubMenuItem\n\t\t\t\t\t\tkey={\"toolbar-item-key-\" + i}\n\t\t\t\t\t\tactionObj={actionObj}\n\t\t\t\t\t\ttoolbarActionHandler={this.props.toolbarActionHandler}\n\t\t\t\t\t\tcloseParentSubArea={this.props.closeSubArea}\n\t\t\t\t\t\tinstanceId={this.props.instanceId}\n\t\t\t\t\t\tcontainingDivId={this.props.containingDivId}\n\t\t\t\t\t\tsubMenuFocusAction={this.state.focusAction}\n\t\t\t\t\t\tsetToolbarFocusAction={this.props.setToolbarFocusAction}\n\t\t\t\t\t\tsetSubMenuFocus={this.props.setSubMenuFocus ? this.props.setSubMenuFocus : this.setSubMenuFocus}\n\t\t\t\t\t\tsize={this.props.size}\n\t\t\t\t\t\tisInOverflowMenu={this.props.isOverflowMenu}\n\t\t\t\t\t\tisInCascadeMenu={this.props.isCascadeMenu}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn jsx;\n\t}\n\n\trender() {\n\t\tif (this.props.subMenuActions.length > 0) {\n\t\t\tconst style = this.props.isCascadeMenu\n\t\t\t\t? generateSubAreaStyle(this.props.expandDirection, this.props.actionItemRect)\n\t\t\t\t: null;\n\n\t\t\tthis.subMenuItems = this.generateSubMenuItems();\n\n\t\t\treturn (\n\t\t\t\t<div ref={this.areaRef} style={style} className={\"toolbar-popover-list submenu\"}\n\t\t\t\t\ttabIndex={-1} onKeyDown={this.onKeyDown}\n\t\t\t\t>\n\t\t\t\t\t{this.subMenuItems}\n\t\t\t\t</div>\n\t\t\t);\n\t\t}\n\t\treturn null;\n\t}\n}\n\nToolbarSubMenu.propTypes = {\n\tsubMenuActions: PropTypes.array.isRequired,\n\tinstanceId: PropTypes.number.isRequired,\n\ttoolbarActionHandler: PropTypes.func,\n\tcloseSubArea: PropTypes.func,\n\tsetToolbarFocusAction: PropTypes.func,\n\tsetSubMenuFocus: PropTypes.func,\n\tactionItemRect: PropTypes.object.isRequired,\n\texpandDirection: PropTypes.string.isRequired,\n\tcontainingDivId: PropTypes.string,\n\tparentSelector: PropTypes.string,\n\tisOverflowMenu: PropTypes.bool,\n\tisCascadeMenu: PropTypes.bool,\n\tsize: PropTypes.oneOf([\"md\", \"sm\"])\n};\n\nexport default ToolbarSubMenu;\n","/*\n * Copyright 2017-2023 Elyra Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport ToolbarButtonItem from \"./toolbar-button-item.jsx\";\n\nimport classNames from \"classnames\";\nimport ToolbarSubMenu from \"./toolbar-sub-menu.jsx\";\nimport ToolbarSubPanel from \"./toolbar-sub-panel.jsx\";\n\nconst ESC_KEY = 27;\n\nclass ToolbarActionItem extends React.Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\tsubAreaDisplayed: false\n\t\t};\n\n\t\tthis.divRef = React.createRef();\n\n\t\tthis.actionClickHandler = this.actionClickHandler.bind(this);\n\t\tthis.onKeyDown = this.onKeyDown.bind(this);\n\t\tthis.openSubArea = this.openSubArea.bind(this);\n\t\tthis.closeSubArea = this.closeSubArea.bind(this);\n\t\tthis.clickOutside = this.clickOutside.bind(this);\n\t}\n\n\t// We must remove the eventListener in case this class is unmounted due\n\t// to the toolbar getting redrawn.\n\tcomponentWillUnmount() {\n\t\tdocument.removeEventListener(\"click\", this.clickOutside, false);\n\t}\n\n\tonKeyDown(evt) {\n\t\tif (evt.keyCode === ESC_KEY) {\n\t\t\tthis.closeSubArea();\n\t\t\treturn;\n\t\t}\n\t}\n\n\t// Called by toolbar.jsx\n\tgetBoundingRect() {\n\t\treturn this.divRef.current.getBoundingClientRect();\n\t}\n\n\t// Called by toolbar.jsx\n\tgetAction() {\n\t\treturn this.props.actionObj.action;\n\t}\n\n\t// Called by toolbar.jsx\n\tisEnabled() {\n\t\treturn this.props.actionObj.enable;\n\t}\n\n\tclickOutside(evt) {\n\t\tif (this.state.subAreaDisplayed) {\n\t\t\tconst items = document.getElementsByClassName(this.generateActionName());\n\t\t\tconst isOver = items && items.length > 0 ? items[0].contains(evt.target) : false;\n\n\t\t\tif (!isOver) {\n\t\t\t\tthis.closeSubArea();\n\t\t\t}\n\t\t}\n\t}\n\n\topenSubArea() {\n\t\tthis.setState({ subAreaDisplayed: true });\n\t}\n\n\tcloseSubArea(checkCloseSubAreaOnClick) {\n\t\tif (!checkCloseSubAreaOnClick || this.props.actionObj.closeSubAreaOnClick) {\n\t\t\tthis.setState({ subAreaDisplayed: false });\n\t\t}\n\t}\n\n\tactionClickHandler(evt) {\n\t\tif (this.props.actionObj.subMenu || this.props.actionObj.subPanel) {\n\t\t\tif (this.state.subAreaDisplayed) {\n\t\t\t\tdocument.removeEventListener(\"click\", this.clickOutside, false);\n\t\t\t\tthis.closeSubArea();\n\t\t\t\tthis.props.setToolbarFocusAction(this.props.actionObj.action);\n\n\t\t\t} else {\n\t\t\t\tdocument.addEventListener(\"click\", this.clickOutside, false);\n\t\t\t\tthis.openSubArea();\n\t\t\t}\n\n\t\t} else {\n\t\t\tthis.props.toolbarActionHandler(this.props.actionObj.action, evt);\n\t\t\tthis.props.setToolbarFocusAction(this.props.actionObj.action);\n\t\t}\n\t}\n\n\tgenerateActionName() {\n\t\treturn this.props.actionObj.action + \"-action\";\n\t}\n\n\t// Returns a sub-area for a cascading menu item. The sub-area can be either a\n\t// sub-panel which is a div contaiing whatever the caller passes in within the\n\t// supPanel field OR a sub-menu which is a list of options which is created\n\t// from the array of items the caller passes in the subMenu field.\n\tgenerateSubArea() {\n\t\tconst actionItemRect = this.divRef.current.getBoundingClientRect();\n\n\t\tif (this.props.actionObj.subPanel) {\n\t\t\treturn (\n\t\t\t\t<ToolbarSubPanel\n\t\t\t\t\tsubPanel={this.props.actionObj.subPanel}\n\t\t\t\t\tsubPanelData={this.props.actionObj.subPanelData}\n\t\t\t\t\tcloseSubArea={this.closeSubArea}\n\t\t\t\t\tsetToolbarFocusAction={this.props.setToolbarFocusAction}\n\t\t\t\t\tactionItemRect={actionItemRect}\n\t\t\t\t\texpandDirection={\"vertical\"}\n\t\t\t\t\tcontainingDivId={this.props.containingDivId}\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\t\treturn (\n\t\t\t<ToolbarSubMenu\n\t\t\t\tsubMenuActions={this.props.actionObj.subMenu}\n\t\t\t\tinstanceId={this.props.instanceId}\n\t\t\t\ttoolbarActionHandler={this.props.toolbarActionHandler}\n\t\t\t\tcloseSubArea={this.closeSubArea}\n\t\t\t\tsetToolbarFocusAction={this.props.setToolbarFocusAction}\n\t\t\t\tactionItemRect={actionItemRect}\n\t\t\t\texpandDirection={\"vertical\"}\n\t\t\t\tcontainingDivId={this.props.containingDivId}\n\t\t\t\tparentSelector={this.generateSelector(this.props.actionObj)}\n\t\t\t\tisCascadeMenu={false}\n\t\t\t\tsize={this.props.size}\n\t\t\t/>\n\t\t);\n\t}\n\n\tgenerateSelector(actionObj) {\n\t\tif (actionObj.jsx) {\n\t\t\treturn \".toolbar-jsx-item\";\n\t\t}\n\t\treturn \".toolbar-item\";\n\t}\n\n\trender() {\n\t\tconst actionObj = this.props.actionObj;\n\t\tconst actionName = this.generateActionName();\n\t\tconst kindAsClass = actionObj.kind ? actionObj.kind : \"default\";\n\n\t\tconst itemClassName = classNames(\n\t\t\t{\n\t\t\t\t\"toolbar-item\": !actionObj.jsx,\n\t\t\t\t\"toolbar-jsx-item\": actionObj.jsx,\n\t\t\t\t\"toolbar-item-selected\": actionObj.isSelected\n\t\t\t},\n\t\t\tkindAsClass,\n\t\t\tactionName);\n\n\t\tconst subArea = this.state.subAreaDisplayed ? this.generateSubArea() : null;\n\n\t\treturn (\n\t\t\t<div ref={this.divRef} className={itemClassName} data-toolbar-action={actionObj.action} data-toolbar-item\n\t\t\t\tonMouseEnter={this.onMouseEnter} onMouseLeave={this.onMouseLeave} onKeyDown={this.onKeyDown}\n\t\t\t>\n\t\t\t\t<div>\n\t\t\t\t\t<ToolbarButtonItem\n\t\t\t\t\t\tactionObj={actionObj}\n\t\t\t\t\t\tactionName={this.generateActionName()}\n\t\t\t\t\t\ttooltipDirection={this.props.tooltipDirection}\n\t\t\t\t\t\tinstanceId={this.props.instanceId}\n\t\t\t\t\t\tisInMenu={false}\n\t\t\t\t\t\tsubAreaDisplayed={this.state.subAreaDisplayed}\n\t\t\t\t\t\tactionClickHandler={this.actionClickHandler}\n\t\t\t\t\t\tbuttonFocusAction={this.state.subAreaDisplayed ? null : this.props.toolbarFocusAction}\n\t\t\t\t\t\tisFocusInToolbar={this.props.isFocusInToolbar}\n\t\t\t\t\t\tsize={this.props.size}\n\t\t\t\t\t/>\n\t\t\t\t</div>\n\t\t\t\t{subArea}\n\t\t\t</div>\n\t\t);\n\t}\n}\n\nToolbarActionItem.propTypes = {\n\tactionObj: PropTypes.shape({\n\t\taction: PropTypes.string.isRequired,\n\t\tlabel: PropTypes.oneOfType([\n\t\t\tPropTypes.string,\n\t\t\tPropTypes.object\n\t\t]),\n\t\tincLabelWithIcon: PropTypes.oneOf([\"no\", \"before\", \"after\"]),\n\t\tenable: PropTypes.bool,\n\t\ticonEnabled: PropTypes.oneOfType([\n\t\t\tPropTypes.string,\n\t\t\tPropTypes.object\n\t\t]),\n\t\ticonDisabled: PropTypes.oneOfType([\n\t\t\tPropTypes.string,\n\t\t\tPropTypes.object\n\t\t]),\n\t\tclassName: PropTypes.string,\n\t\ttextContent: PropTypes.string,\n\t\tisSelected: PropTypes.bool,\n\t\tkind: PropTypes.string,\n\t\tcloseSubAreaOnClick: PropTypes.bool,\n\t\tsubMenu: PropTypes.array,\n\t\tsubPanel: PropTypes.any,\n\t\tsubPanelData: PropTypes.object,\n\t\tjsx: PropTypes.object,\n\t\ttooltip: PropTypes.oneOfType([\n\t\t\tPropTypes.string,\n\t\t\tPropTypes.object,\n\t\t\tPropTypes.func\n\t\t])\n\t}),\n\ttooltipDirection: PropTypes.oneOf([\"top\", \"bottom\"]),\n\ttoolbarActionHandler: PropTypes.func.isRequired,\n\tinstanceId: PropTypes.number.isRequired,\n\tcontainingDivId: PropTypes.string,\n\tcloseParentSubArea: PropTypes.func,\n\ttoolbarFocusAction: PropTypes.string,\n\tsetToolbarFocusAction: PropTypes.func,\n\tisFocusInToolbar: PropTypes.bool,\n\tsize: PropTypes.oneOf([\"md\", \"sm\"])\n};\n\nexport default ToolbarActionItem;\n","/*\n * Copyright 2017-2023 Elyra Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\n\nimport { v4 as uuid4 } from \"uuid\";\nimport { Button } from \"carbon-components-react\";\nimport { OverflowMenuVertical16 } from \"@carbon/icons-react\";\nimport ToolbarSubMenu from \"./toolbar-sub-menu.jsx\";\n\nclass ToolbarOverflowItem extends React.Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tthis.state = {\n\t\t\tshowExtendedMenu: false\n\t\t};\n\n\t\tthis.buttonRef = React.createRef();\n\n\t\tthis.uuid = uuid4();\n\t\tthis.toggleExtendedMenu = this.toggleExtendedMenu.bind(this);\n\t\tthis.clickOutside = this.clickOutside.bind(this);\n\t\tthis.closeSubMenu = this.closeSubMenu.bind(this);\n\t}\n\n\tcomponentDidUpdate() {\n\t\tif (this.props.toolbarFocusAction === this.props.action && this.props.isFocusInToolbar && !this.state.showExtendedMenu) {\n\t\t\tthis.buttonRef.current.focus();\n\t\t}\n\t}\n\n\t// We must remove the eventListener in case this class is unmounted due\n\t// to the toolbar getting redrawn.\n\tcomponentWillUnmount() {\n\t\tdocument.removeEventListener(\"click\", this.clickOutside, false);\n\t}\n\n\t// Called by toolbar.jsx\n\tgetAction() {\n\t\treturn this.props.action;\n\t}\n\n\tcloseSubMenu() {\n\t\tthis.setState({ showExtendedMenu: false });\n\t}\n\n\topenSubMenu() {\n\t\tthis.setState({ showExtendedMenu: true });\n\t}\n\n\tgenOverflowButtonClassName() {\n\t\treturn \"toolbar-overflow-container \" + this.genIndexClassName() + \" \" + this.genUuidClassName();\n\t}\n\n\tgenIndexClassName() {\n\t\treturn \"toolbar-index-\" + this.props.index;\n\t}\n\n\tgenUuidClassName() {\n\t\treturn \"toolbar-uuid-\" + this.uuid;\n\t}\n\n\t// When the overflow item is clicked to open the overflow menu we must set the\n\t// index of the overflow items so the overflow menu can be correctly constructed.\n\t// The overflow index values are used to split out the overflow menu action items\n\t// from the left bar and right bar.\n\t// When the overflow menu is closed we set the overflow index values to null.\n\ttoggleExtendedMenu() {\n\t\tif (this.state.showExtendedMenu) {\n\t\t\tdocument.removeEventListener(\"click\", this.clickOutside, false);\n\t\t\tthis.props.setOverflowIndex(null); // Clear the indexes\n\t\t\tthis.closeSubMenu();\n\t\t\tthis.props.setToolbarFocusAction(this.props.action); // This will not set focus on this item\n\n\t\t} else {\n\t\t\tdocument.addEventListener(\"click\", this.clickOutside, false);\n\t\t\tthis.props.setOverflowIndex(this.props.index);\n\t\t\tthis.openSubMenu();\n\t\t\tthis.props.setToolbarFocusAction(this.props.action);\n\t\t}\n\t}\n\n\tclickOutside(evt) {\n\t\tif (this.state.showExtendedMenu) {\n\t\t\t// Selector for the overflow-container that contains the overflow icon\n\t\t\t// and submenu (if submenu is open).\n\t\t\tconst selector = \".\" + this.genIndexClassName();\n\t\t\tconst isClickInOverflowContainer = evt.target.closest(selector);\n\t\t\tif (!isClickInOverflowContainer) {\n\t\t\t\tthis.setState({ showExtendedMenu: false });\n\t\t\t}\n\t\t}\n\t}\n\n\trender() {\n\t\tlet overflowMenu = null;\n\t\tif (this.state.showExtendedMenu) {\n\t\t\tconst actionItemRect = this.buttonRef.current.getBoundingClientRect();\n\t\t\toverflowMenu = (\n\t\t\t\t<ToolbarSubMenu\n\t\t\t\t\tref={this.subMenuRef}\n\t\t\t\t\tsubMenuActions={this.props.subMenuActions}\n\t\t\t\t\tinstanceId={this.props.instanceId}\n\t\t\t\t\ttoolbarActionHandler={this.props.toolbarActionHandler}\n\t\t\t\t\tcloseSubArea={this.closeSubMenu}\n\t\t\t\t\tsetToolbarFocusAction={this.props.setToolbarFocusAction}\n\t\t\t\t\tactionItemRect={actionItemRect}\n\t\t\t\t\texpandDirection={\"vertical\"}\n\t\t\t\t\tcontainingDivId={this.props.containingDivId}\n\t\t\t\t\tparentSelector={\".toolbar-overflow-container\"}\n\t\t\t\t\tisOverflowMenu\n\t\t\t\t\tisCascadeMenu={false}\n\t\t\t\t\tsize={this.props.size}\n\t\t\t\t/>\n\t\t\t);\n\t\t}\n\n\t\tconst tabIndex = this.props.toolbarFocusAction === this.props.action ? 0 : -1;\n\n\t\treturn (\n\t\t\t<div className={this.genOverflowButtonClassName()} data-toolbar-action={this.props.action}>\n\t\t\t\t<div className={\"toolbar-overflow-item\"}>\n\t\t\t\t\t<Button\n\t\t\t\t\t\tref={this.buttonRef}\n\t\t\t\t\t\tkind=\"ghost\"\n\t\t\t\t\t\ttabIndex={tabIndex}\n\t\t\t\t\t\tonClick={this.toggleExtendedMenu}\n\t\t\t\t\t\taria-label={this.props.label}\n\t\t\t\t\t\tsize={this.props.size}\n\t\t\t\t\t>\n\t\t\t\t\t\t<div className=\"toolbar-item-content default\">\n\t\t\t\t\t\t\t<div className=\"toolbar-icon\">\n\t\t\t\t\t\t\t\t<OverflowMenuVertical16 />\n\t\t\t\t\t\t\t</div>\n\t\t\t\t\t\t</div>\n\t\t\t\t\t</Button>\n\t\t\t\t</div>\n\t\t\t\t{overflowMenu}\n\t\t\t</div>\n\t\t);\n\t}\n}\n\nToolbarOverflowItem.propTypes = {\n\tindex: PropTypes.number.isRequired,\n\taction: PropTypes.string,\n\tlabel: PropTypes.string,\n\tsize: PropTypes.oneOf([\"md\", \"sm\"]),\n\tsubMenuActions: PropTypes.array,\n\tsetOverflowIndex: PropTypes.func,\n\ttoolbarActionHandler: PropTypes.func,\n\tinstanceId: PropTypes.number.isRequired,\n\tcontainingDivId: PropTypes.string,\n\ttoolbarFocusAction: PropTypes.string,\n\tsetToolbarFocusAction: PropTypes.func,\n\tisFocusInToolbar: PropTypes.bool\n};\n\nexport default ToolbarOverflowItem;\n","/*\n * Copyright 2017-2023 Elyra Authors\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport React from \"react\";\nimport PropTypes from \"prop-types\";\nimport ReactResizeDetector from \"react-resize-detector\";\n\nimport ToolbarActionItem from \"./toolbar-action-item.jsx\";\nimport ToolbarOverflowItem from \"./toolbar-overflow-item.jsx\";\nimport ToolbarDividerItem from \"./toolbar-divider-item.jsx\";\n\nconst ESC_KEY = 27;\nconst LEFT_ARROW_KEY = 37;\nconst RIGHT_ARROW_KEY = 39;\n\nclass Toolbar extends React.Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\t// this.state.focusAction keeps track of which item has focus.\n\t\t// This is used to ensure the focus goes to the same item that was\n\t\t// previously focused when focus was lost (blurred) from the toolbar\n\t\t// Index values (leftOverflowIndex and rightOverflowIndex) are used\n\t\t// to keep track of how the left and right bar arrays\n\t\t// should be split to be able to create the overflow menu.\n\t\tthis.state = {\n\t\t\tfocusAction: \"toolbar\",\n\t\t\tleftOverflowIndex: null,\n\t\t\trightOverflowIndex: null,\n\t\t};\n\n\t\t// Keeps track of whether the focus is on the toolbar or not. We should\n\t\t// not call focus() on any item in the toolbar if this.isFocusInToolbar\n\t\t// is false, otherwise focus will be moved incorrectly to the toolbar\n\t\t// and away from its current location.\n\t\tthis.isFocusInToolbar = false;\n\n\t\t// Arrays to hold the left and right bar configurations\n\t\tthis.leftBar = [];\n\t\tthis.rightBar = [];\n\n\t\t// Arrays to store references to React objects in toolbar for the\n\t\t// the left bar, right bar and current set of overflow items.\n\t\tthis.leftItemRefs = [];\n\t\tthis.rightItemRefs = [];\n\t\tthis.overflowItemRefs = [];\n\n\t\t// Reference for the toolbar <div>\n\t\tthis.toolbarRef = React.createRef();\n\n\t\tthis.onFocus = this.onFocus.bind(this);\n\t\tthis.onBlur = this.onBlur.bind(this);\n\t\tthis.onKeyDown = this.onKeyDown.bind(this);\n\t\tthis.onToolbarResize = this.onToolbarResize.bind(this);\n\t\tthis.setOverflowIndex = this.setOverflowIndex.bind(this);\n\t\tthis.generateToolbarItems = this.generateToolbarItems.bind(this);\n\t\tthis.setFocusAction = this.setFocusAction.bind(this);\n\t\tthis.setFocusOnItem = this.setFocusOnItem.bind(this);\n\t}\n\n\t// If, after updating, we are left in a situation where this.state.focusAction\n\t// is for an item that is NOT focusable, then set the focus on the first focusable\n\t// item. This might happen when an item with focus is activated and the action it\n\t// performs causes itself to become disabled. For example, if the delete item is\n\t// activated the selected objects are deleted and since no objects are now selected\n\t// the delete item (which has focus) will become disabled.\n\tcomponentDidUpdate() {\n\t\tif (this.isFocusInToolbar) {\n\t\t\tconst index = this.getFocusableItemRefs().findIndex((item) => this.getRefAction(item) === this.state.focusAction);\n\t\t\tif (index === -1) {\n\t\t\t\tthis.setFocusOnFirstItem();\n\t\t\t}\n\t\t}\n\t}\n\n\t// When the toolbar is initially focused, this.state.focusAction\n\t// will be set to the default of \"toolbar\". In that case we set the\n\t// focus on the first focusable toolbar item.\n\tonFocus(evt) {\n\t\tthis.isFocusInToolbar = true;\n\n\t\t// If focus occurs because of a click on the toolbar body\n\t\t// (not on a button) and no button has focus move focus to\n\t\t// the first item otherwise just keep focus the same.\n\t\tif (evt.target?.classList?.contains(\"toolbar-div\")) {\n\t\t\tif (this.state.focusAction === \"toolbar\") {\n\t\t\t\tthis.setFocusOnFirstItem();\n\n\n\t\t\t} else {\n\t\t\t\tthis.setFocusOnItem(); // Reset focus on current focusAction.\n\t\t\t}\n\t\t}\n\t}\n\n\t// When focus leaves the toolbar make sure we record it so we don't\n\t// accidentally set focus on a toolbar item when re-rendering with\n\t// the focus elsewhere.\n\tonBlur() {\n\t\tthis.isFocusInToolbar = false;\n\t}\n\n\t// This is called when the user presses a key with focus on one of the\n\t// toolbar items. We set the focusAction appropriately based on which\n\t// key is pressed.\n\tonKeyDown(evt) {\n\t\tif (evt.keyCode === ESC_KEY) {\n\t\t\tthis.setFocusOnItem(); // Reset focus on current focusAction.\n\n\t\t} else if (evt.keyCode === LEFT_ARROW_KEY) {\n\t\t\tthis.setFocusOnPreviousItem();\n\n\t\t} else if (evt.keyCode === RIGHT_ARROW_KEY) {\n\t\t\tthis.setFocusOnNextItem();\n\t\t}\n\t}\n\n\t// Prevents the inline-block elements of the left bar being scrolled to\n\t// reveal the wrapped elements, when the user tabs through the elements.\n\tonScroll(evt) {\n\t\tevt.currentTarget.scroll(0, 0);\n\t\tevt.preventDefault();\n\t}\n\n\t// When the toolbar resizes, check each toolbar item to see if it has\n\t// a sub-menu open and, if it does, close it.\n\tonToolbarResize() {\n\t\tthis.leftItemRefs.forEach((ref) => this.closeSubMenuOnRef(ref));\n\t\tthis.rightItemRefs.forEach((ref) => this.closeSubMenuOnRef(ref));\n\t\tthis.overflowItemRefs.forEach((ref) => this.closeOverflowMenuOnRef(ref));\n\n\t\tif (this.isFocusInToolbar) {\n\t\t\tthis.setFocusOnFirstItem();\n\t\t}\n\t}\n\n\t// Either sets the focus on the item for the action passed in or, if\n\t// no action is passed in, set the focus on the current focusAction.\n\t// Setting the current focusAction is used to return focus back to an\n\t// item after focus has been moved elsewhere, such as onto a sub-menu\n\t// or out of the toolbar completely.\n\tsetFocusOnItem(action) {\n\t\tconst actionToSet = action || this.state.focusAction;\n\t\tconst focusableItemRefs = this.getFocusableItemRefs();\n\t\tif (focusableItemRefs.length > 0) {\n\t\t\tthis.setFocusAction(actionToSet);\n\t\t}\n\t}\n\n\tsetFocusOnFirstItem() {\n\t\tconst focusableItemRefs = this.getFocusableItemRefs();\n\t\tif (focusableItemRefs.length > 0) {\n\t\t\tconst firstFocusAction = this.getRefAction(focusableItemRefs[0]);\n\t\t\tthis.setFocusAction(firstFocusAction);\n\t\t}\n\t}\n\n\tsetFocusOnPreviousItem() {\n\t\tconst focusableItemRefs = this.getFocusableItemRefs();\n\t\tconst previousRef = this.getPreviousItemRef(focusableItemRefs);\n\t\tif (previousRef) {\n\t\t\tconst previousFocusAction = this.getRefAction(previousRef);\n\t\t\tthis.setFocusAction(previousFocusAction);\n\t\t}\n\t}\n\n\tsetFocusOnNextItem() {\n\t\tconst focusableItemRefs = this.getFocusableItemRefs();\n\t\tconst nextRef = this.getNextItemRef(focusableItemRefs);\n\t\tif (nextRef) {\n\t\t\tconst nextFocusAction = this.getRefAction(nextRef);\n\t\t\tthis.setFocusAction(nextFocusAction);\n\t\t}\n\t}\n\n\tsetFocusAction(focusAction) {\n\t\tthis.setState({ focusAction });\n\t}\n\n\tgetPreviousItemRef(focusableItemRefs) {\n\t\tconst index = focusableItemRefs.findIndex((item) => this.getRefAction(item) === this.state.focusAction);\n\t\tif (index > 0) {\n\t\t\treturn focusableItemRefs[index - 1];\n\t\t}\n\t\treturn null;\n\t}\n\n\tgetNextItemRef(focusableItemRefs) {\n\t\tconst index = focusableItemRefs.findIndex((item) => this.getRefAction(item) === this.state.focusAction);\n\t\tif (index < focusableItemRefs.length - 1) {\n\t\t\treturn focusableItemRefs[index + 1];\n\t\t}\n\t\treturn null;\n\t}\n\n\tgetRefAction(ref) {\n\t\treturn ref.current.getAction();\n\t}\n\n\t// Returns an array of references to focusable (that is enabled)\n\t// toolbar items that are on the top (visible) row of the toolbar.\n\tgetFocusableItemRefs() {\n\t\treturn this.getLeftBarFocusableItemRefs().concat(this.getRightBarFocusableItemRefs());\n\t}\n\n\t// Returns an array of references to left bar items that are\n\t// on the top (visible) row of the toolbar and are focusable.\n\t// That is, not disabled. In addition, there may also be a\n\t// reference to an overflow item if one is visible on the\n\t// top (visible) row of the toolbar.\n\tgetLeftBarFocusableItemRefs() {\n\t\tconst focusableItemRefs = [];\n\n\t\tif (this.leftItemRefs.length === 0) {\n\t\t\treturn focusableItemRefs;\n\t\t}\n\n\t\tconst topRowY = this.findToolbarTopYCoordinate();\n\t\tlet overflowItemRef = null;\n\n\t\tfor (let i = 0; i < this.leftItemRefs.length; i++) {\n\t\t\tconst itemRect = this.leftItemRefs[i].current.getBoundingRect();\n\n\t\t\tif (itemRect.top === topRowY) {\n\t\t\t\tif (this.leftItemRefs[i].current.isEnabled()) {\n\t\t\t\t\tfocusableItemRefs.push(this.leftItemRefs[i]);\n\t\t\t\t}\n\n\t\t\t} else if (!overflowItemRef) {\n\t\t\t\tconst leftRefAction = this.getRefAction(this.leftItemRefs[i]);\n\t\t\t\tconst overflowAction = this.getOverflowAction(leftRefAction);\n\t\t\t\toverflowItemRef = this.overflowItemRefs.find((oRef) => oRef.current.getAction() === overflowAction);\n\t\t\t\tif (overflowItemRef) {\n\t\t\t\t\tfocusableItemRefs.push(overflowItemRef);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn focusableItemRefs;\n\t}\n\n\t// Returns an array of references to right bar items that are\n\t// on the top (visible) row of the toolbar and are focusable.\n\t// That is, not disabled.\n\tgetRightBarFocusableItemRefs() {\n\t\tconst focusableItemRefs = [];\n\n\t\tif (this.rightItemRefs === 0) {\n\t\t\treturn focusableItemRefs;\n\t\t}\n\n\t\tconst topRowY = this.findToolbarTopYCoordinate();\n\n\t\tfor (let i = 0; i < this.rightItemRefs.length; i++) {\n\t\t\tif (this.rightItemRefs[i].current.isEnabled()) {\n\t\t\t\tconst refRect = this.rightItemRefs[i].current.getBoundingRect();\n\n\t\t\t\tif (refRect.top === topRowY) {\n\t\t\t\t\tfocusableItemRefs.push(this.rightItemRefs[i]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn focusableItemRefs.reverse();\n\t}\n\n\t// Items that appear in the overflow menu need unique action names because\n\t// the original action item to which they are related will still exist, but\n\t// hidden, in the toolbar.\n\tgetOverflowAction(action) {\n\t\treturn \"overflow_\" + action;\n\t}\n\n\t// Sets two index values: one for the left bar and one for the right that\n\t// indicate which elements in each array should be put in the overflow menu.\n\t// That is, those elements that do not appear on the top (visible) row of the\n\t// toolbar.\n\tsetOverflowIndex(leftIndex) {\n\t\tif (leftIndex === null) {\n\t\t\tthis.setState({\n\t\t\t\tleftOverflowIndex: null,\n\t\t\t\trightOverflowIndex: null\n\t\t\t});\n\t\t} else {\n\t\t\tthis.setState({\n\t\t\t\tleftOverflowIndex: leftIndex,\n\t\t\t\trightOverflowIndex: this.getRightOverflowIndex()\n\t\t\t});\n\t\t}\n\t}\n\n\t// Returns the index of the first item in the right bar that is\n\t// not on the top (visible) row of the toolbar.\n\tgetRightOverflowIndex() {\n\t\tconst ref = this.findFirstRightItemRefNotOnTopRow();\n\n\t\tconst index = ref === null\n\t\t\t? this.rightBar.length - 1\n\t\t\t: this.rightBar.findIndex((ri) => ri.action === this.getRefAction(ref));\n\n\t\treturn index;\n\t}\n\n\t// Returns a reference to the first item that is not on the\n\t// top (visible) row of the toolbar.\n\tfindFirstRightItemRefNotOnTopRow() {\n\t\tconst topRowY = this.findToolbarTopYCoordinate();\n\n\t\tlet rightItemRef = null;\n\n\t\tfor (let i = 0; i < this.rightItemRefs.length; i++) {\n\t\t\tconst itemRect = this.rightItemRefs[i].current.getBoundingRect();\n\t\t\tif (itemRect.top !== topRowY && rightItemRef === null) {\n\t\t\t\trightItemRef = this.rightItemRefs[i];\n\t\t\t}\n\t\t}\n\t\treturn rightItemRef;\n\t}\n\n\t// Returns the Y coordinate of the top of the toolbar. This is\n\t// used to detecg which toolbar items are on the top (visible)\n\t// row and which are wrapped onto other rows.\n\tfindToolbarTopYCoordinate() {\n\t\tconst rect = this.toolbarRef.current.getBoundingClientRect();\n\t\treturn rect.top;\n\t}\n\n\t// Generates an array of toolbar items from the toolbarActions array passed in. When\n\t// withOverflowItem is true, which it is for the left bar, we also add an overflow item,\n\t// inside an overflow item container, for each left toolbar action. As the canvas is made\n\t// narrower the regular action items wrap onto a second (hidden) row of the toolbar and\n\t// the overflow item, associated with the last wrapped action item, is revealed.\n\tgenerateToolbarItems(toolbarActions, withOverflowItem, refs) {\n\t\tconst newItems = [];\n\n\t\tfor (let i = 0; i < toolbarActions.length; i++) {\n\t\t\tconst actionObj = toolbarActions[i];\n\t\t\tif (actionObj) {\n\t\t\t\tif (!actionObj.divider && withOverflowItem) {\n\t\t\t\t\tnewItems.push(this.generateOverflowItem(i, actionObj.action));\n\t\t\t\t}\n\t\t\t\tnewItems.push(this.generateToolbarItem(actionObj, i, refs));\n\t\t\t}\n\t\t}\n\t\treturn newItems;\n\t}\n\n\t// Returns JSX for a toolbar item based on the actionObj passed in.\n\tgenerateToolbarItem(actionObj, i, refs) {\n\t\tlet jsx = null;\n\n\t\tif (actionObj) {\n\t\t\tif (actionObj.divider) {\n\t\t\t\tjsx = (\n\t\t\t\t\t<ToolbarDividerItem\n\t\t\t\t\t\tkey={\"toolbar-item-key-\" + i}\n\t\t\t\t\t\tisInMenu={false}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tconst ref = React.createRef();\n\t\t\t\tif (refs) {\n\t\t\t\t\trefs.push(ref);\n\t\t\t\t}\n\t\t\t\tjsx = (\n\t\t\t\t\t<ToolbarActionItem\n\t\t\t\t\t\tref={ref}\n\t\t\t\t\t\tkey={\"toolbar-item-key-\" + i}\n\t\t\t\t\t\tactionObj={actionObj}\n\t\t\t\t\t\ttooltipDirection={this.props.tooltipDirection}\n\t\t\t\t\t\ttoolbarActionHandler={this.props.toolbarActionHandler}\n\t\t\t\t\t\tinstanceId={this.props.instanceId}\n\t\t\t\t\t\tcontainingDivId={this.props.containingDivId}\n\t\t\t\t\t\ttoolbarFocusAction={this.state.focusAction}\n\t\t\t\t\t\tsetToolbarFocusAction={this.setFocusOnItem}\n\t\t\t\t\t\tisFocusInToolbar={this.isFocusInToolbar}\n\t\t\t\t\t\tsize={this.props.size}\n\t\t\t\t\t/>\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn jsx;\n\t}\n\n\t// Returns JSX for an overflow toolbar item based on the index and action passed in.\n\tgenerateOverflowItem(index, action) {\n\t\tconst label = this.props.additionalText ? this.props.additionalText.overflowMenuLabel : \"\";\n\t\tconst overflowAction = this.getOverflowAction(action);\n\t\tconst subMenuActions = index === this.state.leftOverflowIndex ? this.createSubMenuActions() : [];\n\n\t\t// Create a ref for the overflow item to add to array of references to\n\t\t// all overflow items.\n\t\tconst ref = React.createRef();\n\t\tthis.overflowItemRefs.push(ref);\n\n\t\tconst jsx = (\n\t\t\t<ToolbarOverflowItem\n\t\t\t\tref={ref}\n\t\t\t\tkey={\"toolbar-overflow-item-key-\" + index}\n\t\t\t\tindex={index}\n\t\t\t\taction={overflowAction}\n\t\t\t\tlabel={label}\n\t\t\t\tsize={this.props.size}\n\t\t\t\tsubMenuActions={subMenuActions}\n\t\t\t\tsetOverflowIndex={this.setOverflowIndex}\n\t\t\t\ttoolbarActionHandler={this.props.toolbarActionHandler}\n\t\t\t\tinstanceId={this.props.instanceId}\n\t\t\t\tcontainingDivId={this.props.containingDivId}\n\t\t\t\ttoolbarFocusAction={this.state.focusAction}\n\t\t\t\tsetToolbarFocusAction={this.setFocusOnItem}\n\t\t\t\tisFocusInToolbar={this.isFocusInToolbar}\n\t\t\t/>\n\t\t);\n\n\t\treturn jsx;\n\t}\n\n\t// Returns an array of overflow menu actions that should be displayed in\n\t// the overflow menu for the overflow item indicated by the index passed in.\n\t// This uses this.state.leftOverflowIndex and this.state.rightOverflowIndex which are\n\t// set when the user clicks on a particular overflow item in the toolbar.\n\tcreateSubMenuActions() {\n\t\tlet subMenuActions = [];\n\t\tconst l = this.leftBar.slice(this.state.leftOverflowIndex);\n\t\tconst r = this.rightBar.slice(this.state.rightOverflowIndex).reverse();\n\t\tsubMenuActions = l.concat(r);\n\n\t\treturn subMenuActions;\n\t}\n\n\tcloseSubMenuOnRef(ref) {\n\t\tif (ref.current.state.subAreaDisplayed) {\n\t\t\tref.current.closeSubArea();\n\t\t}\n\t}\n\n\tcloseOverflowMenuOnRef(ref) {\n\t\tif (ref.current.state.showExtendedMenu) {\n\t\t\tref.current.closeSubMenu();\n\t\t}\n\t}\n\n\trender() {\n\t\tthis.leftBar = this.props.config.leftBar || [];\n\t\tthis.rightBar = this.props.config.rightBar || [];\n\t\tthis.rightBar = [...this.rightBar].reverse() || [];\n\n\t\t// Arrays to store references to React objects in toolbar.\n\t\tthis.leftItemRefs = [];\n\t\tthis.rightItemRefs = [];\n\t\tthis.overflowItemRefs = [];\n\n\t\tconst leftItems = this.generateToolbarItems(this.leftBar, true, this.leftItemRefs);\n\t\tconst rightItems = this.generateToolbarItems(this.rightBar, false, this.rightItemRefs);\n\n\t\tconst toolbarSizeClass = this.props.size === \"sm\" ? \"toolbar-div toolbar-size-small\" : \"toolbar-div\";\n\t\tconst tabIndex = this.state.focusAction === \"toolbar\" ? 0 : -1;\n\n\t\tconst canvasToolbar = (\n\t\t\t<ReactResizeDetector handleWidth onResize={this.onToolbarResize}>\n\t\t\t\t<div ref={this.toolbarRef} className={toolbarSizeClass} instanceid={this.props.instanceId}\n\t\t\t\t\ttabIndex={tabIndex} onFocus={this.onFocus} onBlur={this.onBlur} onKeyDown={this.onKeyDown}\n\t\t\t\t>\n\t\t\t\t\t<div className=\"toolbar-left-bar\" onScroll={this.onScroll}>\n\t\t\t\t\t\t{leftItems}\n\t\t\t\t\t</div>\n\t\t\t\t\t<div className=\"toolbar-right-bar\">\n\t\t\t\t\t\t{rightItems}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</ReactResizeDetector>\n\t\t);\n\t\treturn canvasToolbar;\n\t}\n}\n\nToolbar.propTypes = {\n\tconfig: PropTypes.object.isRequired,\n\tinstanceId: PropTypes.number.isRequired,\n\tcontainingDivId: PropTypes.string,\n\ttoolbarActionHandler: PropTypes.func,\n\ttooltipDirection: PropTypes.string,\n\tadditionalText: PropTypes.object,\n\tsize: PropTypes.oneOf([\"md\", \"sm\"])\n};\n\nexport default Toolbar;\n"],"names":["reWhitespace","trimmedEndIndex","string","index","length","test","charAt","reTrimStart","baseTrim","slice","replace","isObject","require$$1","isSymbol","require$$2","reIsBadHex","reIsBinary","reIsOctal","freeParseInt","parseInt","toNumber_1","value","other","valueOf","isBinary","toNumber","require$$0","INFINITY","toFinite","toInteger_1","result","remainder","_React$Component","ToolbarButtonItem","props","_this","_classCallCheck","_callSuper","buttonRef","React","createRef","_inherits","_createClass","key","this","isFocusInToolbar","buttonFocusAction","actionObj","action","current","focus","disabled","enable","TOOLBAR_STOP","createElement","StopFilledAlt16","TOOLBAR_RUN","Play16","TOOLBAR_EXPAND_SUPERNODE_IN_PLACE","Maximize16","TOOLBAR_COLLAPSE_SUPERNODE_IN_PLACE","Minimize16","TOOLBAR_EXPAND_SUPERNODE_FULL_PAGE","Launch16","TOOLBAR_UNDO","Undo16","TOOLBAR_REDO","Redo16","TOOLBAR_CLIPBOARD","Result16","TOOLBAR_CUT","Cut16","TOOLBAR_COPY","Copy16","TOOLBAR_PASTE","Paste16","TOOLBAR_CREATE_COMMENT","TOOLBAR_CREATE_AUTO_COMMENT","AddComment16","TOOLBAR_SHOW_COMMENTS","Chat16","TOOLBAR_HIDE_COMMENTS","ChatOff16","TOOLBAR_COLOR_BACKGROUND","ColorPalette16","TOOLBAR_DELETE_LINK","TOOLBAR_DELETE_SELECTED_OBJECTS","TrashCan16","TOOLBAR_SET_COMMENT_EDIT_MODE","TOOLBAR_SET_NODE_LABEL_EDIT","Edit16","TOOLBAR_ZOOM_IN","ZoomIn16","TOOLBAR_ZOOM_OUT","ZoomOut16","TOOLBAR_ZOOM_FIT","SVG","src","TOOLBAR_ARRANGE_HORIZONALLY","TOOLBAR_ARRANGE_VERTICALLY","TOOLBAR_OPEN_PALETTE","TOOLBAR_CLOSE_PALETTE","TOOLBAR_TOGGLE_NOTIFICATION_PANEL","label","disable","isInMenu","incLabelWithIcon","className","generateLabelType","inLabelWithIcon","icon","getDefaultIcon","iconEnabled","iconDisabled","customIcon","id","instanceId","labelBefore","labelAfter","generateLabel","generateIcon","textContent","itemContentClassName","classNames","overflow","default","kind","chevronIcon","generateChevronIcon","buttonContent","wrapInTooltip","ariaLabel","tabIndex","Button","ref","onClick","actionClickHandler","size","subMenu","subPanel","ChevronRight16","chev","subAreaDisplayed","ChevronUp16","ChevronDown16","generateChevronMini","path","d","content","showLabelAsTip","tooltip","tip","tooltipId","actionName","enableTooltip","jsx","direction","tooltipDirection","Tooltip","generateButton","Component","adjustSubAreaPosition","areaRef","containingDivId","expandDirection","actionItemRect","containingDivRect","document","getElementById","getBoundingClientRect","thisAreaRect","outsideBottom","bottom","outsideRight","right","newTop","top","height","style","newLeft","left","width","generateSubAreaStyle","ToolbarSubPanel","bind","_assertThisInitialized","onKeyDown","closeSubArea","evt","keyCode","stopPropagation","_typeof","closeSubPanel","subPanelData","ToolbarSubMenuItem","state","divRef","onMouseEnter","onMouseLeave","openSubArea","clickOutside","removeEventListener","items","getElementsByClassName","generateActionName","contains","target","setState","checkCloseSubAreaOnClick","closeSubAreaOnClick","addEventListener","isInCascadeMenu","closeParentSubArea","setSubMenuFocus","isInOverflowMenu","setToolbarFocusAction","toolbarActionHandler","ToolbarSubMenu","subMenuActions","parentSelector","generateSelector","isCascadeMenu","kindAsClass","itemClassName","isSelected","subArea","generateSubArea","subMenuFocusAction","ToolbarDividerItem","arguments","dividerClassName","focusAction","setFocusAction","setFocusOnFirstItem","_this2","find","sma","actionToSet","getClosestEnabledAction","setFocusOnPreviousItem","setFocusOnNextItem","focusableActions","getFocusableActions","previousFocusAction","getPreviousFocusAction","nextFocusAction","getNextFocusAction","findIndex","newAction","indexUp","indexDown","i","push","focuableActions","_this3","fa","_this4","newItems","generateSubMenuItem","divider","isOverflowMenu","subMenuItems","generateSubMenuItems","ToolbarActionItem","toolbarFocusAction","ToolbarOverflowItem","showExtendedMenu","uuid","uuid4","toggleExtendedMenu","closeSubMenu","genIndexClassName","genUuidClassName","setOverflowIndex","openSubMenu","selector","closest","overflowMenu","subMenuRef","genOverflowButtonClassName","OverflowMenuVertical16","Toolbar","leftOverflowIndex","rightOverflowIndex","leftBar","rightBar","leftItemRefs","rightItemRefs","overflowItemRefs","toolbarRef","onFocus","onBlur","onToolbarResize","generateToolbarItems","setFocusOnItem","getFocusableItemRefs","item","getRefAction","_evt$target","_evt$target$classList","classList","currentTarget","scroll","preventDefault","forEach","closeSubMenuOnRef","closeOverflowMenuOnRef","focusableItemRefs","firstFocusAction","previousRef","getPreviousItemRef","nextRef","getNextItemRef","_this5","getAction","getLeftBarFocusableItemRefs","concat","getRightBarFocusableItemRefs","_this6","topRowY","findToolbarTopYCoordinate","overflowItemRef","_loop","getBoundingRect","isEnabled","leftRefAction","overflowAction","getOverflowAction","oRef","reverse","leftIndex","getRightOverflowIndex","_this7","findFirstRightItemRefNotOnTopRow","ri","rightItemRef","toolbarActions","withOverflowItem","refs","generateOverflowItem","generateToolbarItem","additionalText","overflowMenuLabel","createSubMenuActions","l","r","config","_toConsumableArray","leftItems","rightItems","toolbarSizeClass","ReactResizeDetector","handleWidth","onResize","instanceid","onScroll"],"mappings":"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"}