@elyra/canvas 12.40.1 → 12.42.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 (173) hide show
  1. package/dist/{_baseIteratee-05ccf6a8.js → _baseIteratee-148093b7.js} +3 -3
  2. package/dist/{_baseIteratee-05ccf6a8.js.map → _baseIteratee-148093b7.js.map} +1 -1
  3. package/dist/{canvas-constants-079172c0.js → canvas-constants-13b58448.js} +2 -2
  4. package/dist/{canvas-constants-079172c0.js.map → canvas-constants-13b58448.js.map} +1 -1
  5. package/dist/canvas-controller-a53943e4.js +2 -0
  6. package/dist/canvas-controller-a53943e4.js.map +1 -0
  7. package/dist/canvas-controller-cb1d7420.js +2 -0
  8. package/dist/canvas-controller-cb1d7420.js.map +1 -0
  9. package/dist/common-canvas-42027a3f.js +2 -0
  10. package/dist/common-canvas-42027a3f.js.map +1 -0
  11. package/dist/common-canvas-f758ff42.js +2 -0
  12. package/dist/common-canvas-f758ff42.js.map +1 -0
  13. package/dist/common-canvas.es.js +1 -1
  14. package/dist/common-canvas.es.js.map +1 -1
  15. package/dist/common-canvas.js +1 -1
  16. package/dist/common-canvas.js.map +1 -1
  17. package/dist/common-properties-2e1b7ec7.js +2 -0
  18. package/dist/common-properties-2e1b7ec7.js.map +1 -0
  19. package/dist/common-properties-5e8870e3.js +2 -0
  20. package/dist/common-properties-5e8870e3.js.map +1 -0
  21. package/dist/context-menu-wrapper-49f9a1af.js +2 -0
  22. package/dist/context-menu-wrapper-49f9a1af.js.map +1 -0
  23. package/dist/context-menu-wrapper-5d6a399f.js +2 -0
  24. package/dist/context-menu-wrapper-5d6a399f.js.map +1 -0
  25. package/dist/{datarecord-metadata-v3-schema-59505bc5.js → datarecord-metadata-v3-schema-98ec66e9.js} +2 -2
  26. package/dist/{datarecord-metadata-v3-schema-59505bc5.js.map → datarecord-metadata-v3-schema-98ec66e9.js.map} +1 -1
  27. package/dist/{flexible-table-5ee2a42b.js → flexible-table-35e9922a.js} +2 -2
  28. package/dist/{flexible-table-5ee2a42b.js.map → flexible-table-35e9922a.js.map} +1 -1
  29. package/dist/{flexible-table-562ae288.js → flexible-table-7c7de0f9.js} +1 -1
  30. package/dist/{flexible-table-562ae288.js.map → flexible-table-7c7de0f9.js.map} +1 -1
  31. package/dist/{icon-0390f1fe.js → icon-9edff40c.js} +2 -2
  32. package/dist/{icon-0390f1fe.js.map → icon-9edff40c.js.map} +1 -1
  33. package/dist/{index-fe8d4201.js → index-94fec521.js} +2 -2
  34. package/dist/index-94fec521.js.map +1 -0
  35. package/dist/index-e2f8a935.js +2 -0
  36. package/dist/index-e2f8a935.js.map +1 -0
  37. package/dist/{isArrayLikeObject-36898fcb.js → isArrayLikeObject-7a30aa4b.js} +2 -2
  38. package/dist/{isArrayLikeObject-36898fcb.js.map → isArrayLikeObject-7a30aa4b.js.map} +1 -1
  39. package/dist/lib/canvas-controller.es.js +1 -1
  40. package/dist/lib/canvas-controller.js +1 -1
  41. package/dist/lib/canvas.es.js +1 -1
  42. package/dist/lib/canvas.js +1 -1
  43. package/dist/lib/context-menu.es.js +1 -1
  44. package/dist/lib/context-menu.js +1 -1
  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.es.js +1 -1
  50. package/dist/lib/properties.js +1 -1
  51. package/dist/lib/tooltip.es.js +1 -1
  52. package/dist/lib/tooltip.es.js.map +1 -1
  53. package/dist/lib/tooltip.js +1 -1
  54. package/dist/lib/tooltip.js.map +1 -1
  55. package/dist/styles/common-canvas.min.css +1 -1
  56. package/dist/styles/common-canvas.min.css.map +1 -1
  57. package/dist/toolbar-6acda0a2.js +2 -0
  58. package/dist/toolbar-6acda0a2.js.map +1 -0
  59. package/dist/toolbar-d5647da2.js +2 -0
  60. package/dist/toolbar-d5647da2.js.map +1 -0
  61. package/locales/common-properties/locales/de.json +1 -0
  62. package/locales/common-properties/locales/es.json +1 -0
  63. package/locales/common-properties/locales/fr.json +1 -0
  64. package/locales/common-properties/locales/it.json +1 -0
  65. package/locales/common-properties/locales/ja.json +1 -0
  66. package/locales/common-properties/locales/ko.json +1 -0
  67. package/locales/common-properties/locales/pt-br.json +1 -0
  68. package/locales/common-properties/locales/sv.json +1 -0
  69. package/locales/common-properties/locales/zh-CN.json +1 -0
  70. package/locales/common-properties/locales/zh-TW.json +1 -0
  71. package/package.json +12 -4
  72. package/src/color-picker/color-picker.jsx +92 -17
  73. package/src/command-actions/arrangeLayoutAction.js +7 -6
  74. package/src/command-actions/attachNodeToLinksAction.js +4 -4
  75. package/src/command-actions/collapseSuperNodeInPlaceAction.js +5 -5
  76. package/src/command-actions/colorSelectedObjectsAction.js +4 -4
  77. package/src/command-actions/commonPropertiesAction.js +1 -1
  78. package/src/command-actions/convertSuperNodeExternalToLocalAction.js +4 -4
  79. package/src/command-actions/convertSuperNodeLocalToExternalAction.js +4 -4
  80. package/src/command-actions/createAutoNodeAction.js +14 -5
  81. package/src/command-actions/createCommentAction.js +4 -10
  82. package/src/command-actions/createCommentLinkAction.js +4 -4
  83. package/src/command-actions/createNodeAction.js +13 -4
  84. package/src/command-actions/createNodeAttachLinksAction.js +4 -4
  85. package/src/command-actions/createNodeLinkAction.js +13 -4
  86. package/src/command-actions/createNodeLinkDetachedAction.js +4 -4
  87. package/src/command-actions/createNodeOnLinkAction.js +4 -4
  88. package/src/command-actions/createSuperNodeAction.js +7 -7
  89. package/src/command-actions/deconstructSuperNodeAction.js +5 -5
  90. package/src/command-actions/deleteLinkAction.js +4 -4
  91. package/src/command-actions/deleteObjectsAction.js +15 -6
  92. package/src/command-actions/disconnectObjectsAction.js +13 -4
  93. package/src/command-actions/displayPreviousPipelineAction.js +4 -4
  94. package/src/command-actions/displaySubPipelineAction.js +4 -4
  95. package/src/command-actions/editCommentAction.js +4 -4
  96. package/src/command-actions/editDecorationLabelAction.js +4 -4
  97. package/src/command-actions/expandSuperNodeInPlaceAction.js +5 -5
  98. package/src/command-actions/insertNodeIntoLinkAction.js +4 -4
  99. package/src/command-actions/moveObjectsAction.js +4 -4
  100. package/src/command-actions/pasteAction.js +16 -7
  101. package/src/command-actions/saveToPaletteAction.js +4 -4
  102. package/src/command-actions/setLinksStyleAction.js +4 -4
  103. package/src/command-actions/setNodeLabelAction.js +4 -4
  104. package/src/command-actions/setObjectsStyleAction.js +4 -4
  105. package/src/command-actions/sizeAndPositionObjectsAction.js +4 -4
  106. package/src/command-actions/updateLinkAction.js +4 -4
  107. package/src/common-canvas/canvas-controller-menu-utils.js +1 -1
  108. package/src/common-canvas/canvas-controller.js +78 -62
  109. package/src/common-canvas/cc-central-items.jsx +1 -1
  110. package/src/common-canvas/cc-context-toolbar.jsx +9 -13
  111. package/src/common-canvas/cc-toolbar.jsx +2 -0
  112. package/src/common-canvas/svg-canvas-d3.scss +1 -1
  113. package/src/common-canvas/svg-canvas-renderer.js +6 -2
  114. package/src/common-canvas/svg-canvas-utils-drag-det-link.js +8 -1
  115. package/src/common-canvas/svg-canvas-utils-drag-new-link.js +1 -1
  116. package/src/common-properties/components/table-buttons/table-buttons.scss +0 -1
  117. package/src/common-properties/components/wide-flyout/wide-flyout.scss +1 -2
  118. package/src/common-properties/constants/form-constants.js +1 -0
  119. package/src/common-properties/controls/control-factory.js +6 -1
  120. package/src/common-properties/controls/controls.scss +1 -0
  121. package/src/common-properties/controls/expression/expression-builder/expression-builder.jsx +32 -26
  122. package/src/common-properties/controls/expression/expression.jsx +146 -117
  123. package/src/common-properties/controls/expression/expression.scss +43 -45
  124. package/src/common-properties/controls/expression/languages/CLEM-hint.js +86 -159
  125. package/src/common-properties/controls/expression/languages/python-hint.js +53 -104
  126. package/src/common-properties/controls/expression/languages/r-hint.js +55 -130
  127. package/src/{toolbar/toolbar-utils.js → common-properties/controls/slider/index.js} +2 -17
  128. package/src/common-properties/controls/slider/slider.jsx +96 -0
  129. package/src/common-properties/controls/slider/slider.scss +44 -0
  130. package/src/common-properties/form/ControlInfo.js +6 -0
  131. package/src/common-properties/form/EditorForm.js +2 -0
  132. package/src/common-properties/form/ParameterInfo.js +8 -0
  133. package/src/common-properties/properties-controller.js +16 -5
  134. package/src/context-menu/common-context-menu.jsx +4 -1
  135. package/src/index.js +12 -2
  136. package/src/object-model/redux/canvas-store.js +4 -3
  137. package/src/toolbar/toolbar-action-item.jsx +90 -314
  138. package/src/toolbar/toolbar-button-item.jsx +354 -0
  139. package/src/toolbar/toolbar-divider-item.jsx +3 -4
  140. package/src/toolbar/toolbar-overflow-item.jsx +82 -36
  141. package/src/toolbar/toolbar-sub-menu-item.jsx +235 -0
  142. package/src/toolbar/toolbar-sub-menu.jsx +254 -0
  143. package/src/toolbar/toolbar-sub-panel.jsx +81 -0
  144. package/src/toolbar/toolbar-sub-utils.js +77 -0
  145. package/src/toolbar/toolbar.jsx +330 -146
  146. package/src/toolbar/toolbar.scss +22 -15
  147. package/src/tooltip/tooltip.jsx +21 -2
  148. package/stats.html +1 -1
  149. package/dist/canvas-controller-1e71b405.js +0 -2
  150. package/dist/canvas-controller-1e71b405.js.map +0 -1
  151. package/dist/canvas-controller-4bed5320.js +0 -2
  152. package/dist/canvas-controller-4bed5320.js.map +0 -1
  153. package/dist/common-canvas-318df796.js +0 -2
  154. package/dist/common-canvas-318df796.js.map +0 -1
  155. package/dist/common-canvas-d41ba910.js +0 -2
  156. package/dist/common-canvas-d41ba910.js.map +0 -1
  157. package/dist/common-properties-6e904e3b.js +0 -2
  158. package/dist/common-properties-6e904e3b.js.map +0 -1
  159. package/dist/common-properties-c91bfb31.js +0 -2
  160. package/dist/common-properties-c91bfb31.js.map +0 -1
  161. package/dist/context-menu-wrapper-3a7fdec8.js +0 -2
  162. package/dist/context-menu-wrapper-3a7fdec8.js.map +0 -1
  163. package/dist/context-menu-wrapper-fc85d853.js +0 -2
  164. package/dist/context-menu-wrapper-fc85d853.js.map +0 -1
  165. package/dist/index-8e8b8729.js +0 -2
  166. package/dist/index-8e8b8729.js.map +0 -1
  167. package/dist/index-fe8d4201.js.map +0 -1
  168. package/dist/toolbar-b01e6749.js +0 -2
  169. package/dist/toolbar-b01e6749.js.map +0 -1
  170. package/dist/toolbar-fd4e4a3a.js +0 -2
  171. package/dist/toolbar-fd4e4a3a.js.map +0 -1
  172. package/src/toolbar/toolbar-action-sub-area.jsx +0 -126
  173. package/src/toolbar/toolbar-overflow-menu.jsx +0 -77
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright 2017-2023 Elyra Authors
2
+ * Copyright 2017-2024 Elyra Authors
3
3
  *
4
4
  * Licensed under the Apache License, Version 2.0 (the "License");
5
5
  * you may not use this file except in compliance with the License.
@@ -13,18 +13,27 @@
13
13
  * See the License for the specific language governing permissions and
14
14
  * limitations under the License.
15
15
  */
16
+
17
+ /***************************************************************************/
18
+ /* WARNING: */
19
+ /* This class is exported from Common Canvas. This means host apps can */
20
+ /* extend the class and add to, or alter, this class's member variables. */
21
+ /* So, if the names of any internal this.xxxx variables are changed that */
22
+ /* needs to be communicated clearly through the release notes, Slack, etc. */
23
+ /***************************************************************************/
24
+
16
25
  import Action from "../command-stack/action.js";
17
26
  import CanvasUtils from "../common-canvas/common-canvas-utils.js";
18
27
 
19
28
  export default class PasteAction extends Action {
20
- constructor(data, objectModel, labelUtil, viewportDimensions, areDetachableLinksInUse, isSnapToGridInUse) {
29
+ constructor(data, canvasController) {
21
30
  super(data);
22
31
  this.data = data;
23
- this.objectModel = objectModel;
24
- this.labelUtil = labelUtil;
25
- this.viewportDimensions = viewportDimensions;
26
- this.areDetachableLinksInUse = areDetachableLinksInUse;
27
- this.isSnapToGridInUse = isSnapToGridInUse;
32
+ this.labelUtil = canvasController.labelUtil;
33
+ this.objectModel = canvasController.objectModel;
34
+ this.viewportDimensions = canvasController.getViewPortDimensions();
35
+ this.areDetachableLinksInUse = canvasController.areDetachableLinksInUse();
36
+ this.isSnapToGridInUse = canvasController.isSnapToGridInUse();
28
37
  this.apiPipeline = this.objectModel.getAPIPipeline(data.pipelineId);
29
38
 
30
39
  // Make sure objects to be pasted are in an appropriate position for them
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright 2017-2023 Elyra Authors
2
+ * Copyright 2017-2024 Elyra Authors
3
3
  *
4
4
  * Licensed under the Apache License, Version 2.0 (the "License");
5
5
  * you may not use this file except in compliance with the License.
@@ -18,11 +18,11 @@ import { SAVED_NODES_CATEGORY_ID, SAVED_NODES_FOLDER_ICON }
18
18
  from "../common-canvas/constants/canvas-constants.js";
19
19
 
20
20
  export default class SaveToPaletteAction extends Action {
21
- constructor(data, objectModel, labelUtil) {
21
+ constructor(data, canvasController) {
22
22
  super(data);
23
23
  this.data = data;
24
- this.objectModel = objectModel;
25
- this.labelUtil = labelUtil;
24
+ this.labelUtil = canvasController.labelUtil;
25
+ this.objectModel = canvasController.objectModel;
26
26
  this.apiPipeline = this.objectModel.getAPIPipeline(data.pipelineId);
27
27
  this.data.addedNodeTypes = this.apiPipeline.createNodesForPalette(this.data.selectedObjectIds);
28
28
  }
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright 2017-2023 Elyra Authors
2
+ * Copyright 2017-2024 Elyra Authors
3
3
  *
4
4
  * Licensed under the Apache License, Version 2.0 (the "License");
5
5
  * you may not use this file except in compliance with the License.
@@ -17,11 +17,11 @@ import Action from "../command-stack/action.js";
17
17
  import { forIn } from "lodash";
18
18
 
19
19
  export default class SetLinksStyleAction extends Action {
20
- constructor(data, objectModel, labelUtil) {
20
+ constructor(data, canvasController) {
21
21
  super(data);
22
22
  this.data = data;
23
- this.objectModel = objectModel;
24
- this.labelUtil = labelUtil;
23
+ this.labelUtil = canvasController.labelUtil;
24
+ this.objectModel = canvasController.objectModel;
25
25
  this.oldPipelineLinkStyles = [];
26
26
  forIn(this.data.pipelineLinkIds, (linkIds, pipelineId) => {
27
27
  const apiPipeline = this.objectModel.getAPIPipeline(pipelineId);
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright 2017-2023 Elyra Authors
2
+ * Copyright 2017-2024 Elyra Authors
3
3
  *
4
4
  * Licensed under the Apache License, Version 2.0 (the "License");
5
5
  * you may not use this file except in compliance with the License.
@@ -16,11 +16,11 @@
16
16
  import Action from "../command-stack/action.js";
17
17
 
18
18
  export default class SetNodeLabelAction extends Action {
19
- constructor(data, objectModel, labelUtil) {
19
+ constructor(data, canvasController) {
20
20
  super(data);
21
21
  this.data = data;
22
- this.objectModel = objectModel;
23
- this.labelUtil = labelUtil;
22
+ this.labelUtil = canvasController.labelUtil;
23
+ this.objectModel = canvasController.objectModel;
24
24
  this.apiPipeline = this.objectModel.getAPIPipeline(data.pipelineId);
25
25
  this.previousLabel = this.apiPipeline.getNode(data.nodeId).label;
26
26
  }
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright 2017-2023 Elyra Authors
2
+ * Copyright 2017-2024 Elyra Authors
3
3
  *
4
4
  * Licensed under the Apache License, Version 2.0 (the "License");
5
5
  * you may not use this file except in compliance with the License.
@@ -17,11 +17,11 @@ import Action from "../command-stack/action.js";
17
17
  import { forIn } from "lodash";
18
18
 
19
19
  export default class SetObjectsStyleAction extends Action {
20
- constructor(data, objectModel, labelUtil) {
20
+ constructor(data, canvasController) {
21
21
  super(data);
22
22
  this.data = data;
23
- this.objectModel = objectModel;
24
- this.labelUtil = labelUtil;
23
+ this.labelUtil = canvasController.labelUtil;
24
+ this.objectModel = canvasController.objectModel;
25
25
  this.oldPipelineObjStyles = [];
26
26
  forIn(this.data.pipelineObjectIds, (objectIds, pipelineId) => {
27
27
  const apiPipeline = this.objectModel.getAPIPipeline(pipelineId);
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright 2017-2023 Elyra Authors
2
+ * Copyright 2017-2024 Elyra Authors
3
3
  *
4
4
  * Licensed under the Apache License, Version 2.0 (the "License");
5
5
  * you may not use this file except in compliance with the License.
@@ -16,11 +16,11 @@
16
16
  import Action from "../command-stack/action.js";
17
17
 
18
18
  export default class SizeAndPositionObjectsAction extends Action {
19
- constructor(data, objectModel, labelUtil) {
19
+ constructor(data, canvasController) {
20
20
  super(data);
21
21
  this.data = data;
22
- this.objectModel = objectModel;
23
- this.labelUtil = labelUtil;
22
+ this.labelUtil = canvasController.labelUtil;
23
+ this.objectModel = canvasController.objectModel;
24
24
  this.apiPipeline = this.objectModel.getAPIPipeline(data.pipelineId);
25
25
  this.previousObjectsInfo = this.getPreviousObjectsInfo(data);
26
26
  this.previousDetLinksInfo = this.getPreviousDetachedLinksInfo(data);
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright 2017-2023 Elyra Authors
2
+ * Copyright 2017-2024 Elyra Authors
3
3
  *
4
4
  * Licensed under the Apache License, Version 2.0 (the "License");
5
5
  * you may not use this file except in compliance with the License.
@@ -16,11 +16,11 @@
16
16
  import Action from "../command-stack/action.js";
17
17
 
18
18
  export default class UpdateLinkAction extends Action {
19
- constructor(data, objectModel, labelUtil) {
19
+ constructor(data, canvasController) {
20
20
  super(data);
21
21
  this.data = data;
22
- this.objectModel = objectModel;
23
- this.labelUtil = labelUtil;
22
+ this.labelUtil = canvasController.labelUtil;
23
+ this.objectModel = canvasController.objectModel;
24
24
  this.apiPipeline = this.objectModel.getAPIPipeline(data.pipelineId);
25
25
  this.oldLink = this.apiPipeline.getLink(data.newLink.id);
26
26
  }
@@ -123,7 +123,7 @@ const isEditingAction = (action) =>
123
123
  // controller passed in.
124
124
  const createDefaultContextMenu = (source) => {
125
125
  let menuDefinition = [];
126
- const menuForNonSelectedObj = cc.isContextMenuForNonSelectedObj(source);
126
+ const menuForNonSelectedObj = cc.isContextToolbarForNonSelectedObj(source);
127
127
 
128
128
  // Select all & add comment: canvas only
129
129
  if (source.type === "canvas") {
@@ -1,5 +1,5 @@
1
1
  /*
2
- * Copyright 2017-2023 Elyra Authors
2
+ * Copyright 2017-2024 Elyra Authors
3
3
  *
4
4
  * Licensed under the Apache License, Version 2.0 (the "License");
5
5
  * you may not use this file except in compliance with the License.
@@ -112,7 +112,7 @@ export default class CanvasController {
112
112
  this.contextMenuActionHandler = this.contextMenuActionHandler.bind(this);
113
113
  this.closeContextMenu = this.closeContextMenu.bind(this);
114
114
 
115
- this.isContextMenuForNonSelectedObj = this.isContextMenuForNonSelectedObj.bind(this);
115
+ this.isContextToolbarForNonSelectedObj = this.isContextToolbarForNonSelectedObj.bind(this);
116
116
 
117
117
  // Increment the global instance ID by 1 each time a new
118
118
  // canvas controller is created.
@@ -454,7 +454,7 @@ export default class CanvasController {
454
454
  // Removes nodetypes from a palette category
455
455
  // selObjectIds - an array of object IDs to identify the nodetypes to be
456
456
  // removed
457
- // categoryId - the ID of teh category from which the nodes will be removed
457
+ // categoryId - the ID of the category from which the nodes will be removed
458
458
  removeNodesFromPalette(selObjectIds, categoryId) {
459
459
  this.objectModel.addNodeTypesToPalette(selObjectIds, categoryId);
460
460
  }
@@ -1552,12 +1552,24 @@ export default class CanvasController {
1552
1552
  }
1553
1553
  }
1554
1554
 
1555
+ // Manages the flag that indicates whether the mouse cursor is over
1556
+ // the context toolbar or not. This flag is used for controlling the
1557
+ // display of the context toolbar.
1555
1558
  setMouseInContextToolbar(state) {
1556
1559
  this.mouseInContextToolbar = state;
1557
1560
  }
1558
1561
 
1559
- setMouseInObject(state) {
1560
- this.mouseInObject = state;
1562
+ // Manages the flag that indicates whether the mouse cursor is over
1563
+ // an object (node, comment or link) or not. This flag is used for
1564
+ // controlling the display of the context toolbar. 'id' is either the id
1565
+ // of the object the cursor is over, or null, if it is not over an object.
1566
+ setMouseInObject(id) {
1567
+ // Close the context toolbar immediately if the mouse cursor moves
1568
+ // from one object to another.
1569
+ if (id && id !== this.mouseInObject) {
1570
+ this.closeContextToolbar();
1571
+ }
1572
+ this.mouseInObject = id;
1561
1573
  }
1562
1574
 
1563
1575
  openNotificationPanel() {
@@ -2102,7 +2114,7 @@ export default class CanvasController {
2102
2114
 
2103
2115
  // Returns true if the context toolbar is switched on and the node over which
2104
2116
  // the mouse cursor is hovering is NOT in the list of selected objects.
2105
- isContextMenuForNonSelectedObj(source) {
2117
+ isContextToolbarForNonSelectedObj(source) {
2106
2118
  if (this.getCanvasConfig().enableContextToolbar) {
2107
2119
  if (source.targetObject) {
2108
2120
  return !source.selectedObjectIds.includes(source.targetObject.id);
@@ -2128,7 +2140,7 @@ export default class CanvasController {
2128
2140
 
2129
2141
  this.closeContextMenu();
2130
2142
  if (this.getCanvasConfig().enableContextToolbar &&
2131
- this.isContextMenuForNonSelectedObj(source)) {
2143
+ this.isContextToolbarForNonSelectedObj(source)) {
2132
2144
  this.setSelections([source.targetObject.id]);
2133
2145
  }
2134
2146
  this.canvasContents.focusOnCanvas(); // Set focus on canvas so keybord events go there.
@@ -2168,6 +2180,11 @@ export default class CanvasController {
2168
2180
  }
2169
2181
  }
2170
2182
 
2183
+ // Performs edit actions, based on the cmndData passed in, to the object
2184
+ // model which result in changes to the displayed canvas. Returns true if
2185
+ // the action completes successfully and false if it does not complete,
2186
+ // for example, if the host application cancels the action by returning
2187
+ // false from the beforeEditActionHanlder.
2171
2188
  editActionHandler(cmndData) {
2172
2189
  this.logger.log("editActionHandler - " + cmndData.editType);
2173
2190
  this.logger.log(cmndData);
@@ -2203,17 +2220,17 @@ export default class CanvasController {
2203
2220
  data = this.handlers.beforeEditActionHandler(data, cmnd);
2204
2221
  // If the host app returns null, it doesn't want the action to proceed.
2205
2222
  if (!data) {
2206
- return;
2223
+ return false;
2207
2224
  }
2208
2225
  // If an external pipeline flow was requested, we need to make sure it
2209
2226
  // was provided by the host app. We can't proceed if it was not.
2210
2227
  if (!this.wasExtPipelineFlowLoadSuccessful(data)) {
2211
- return;
2228
+ return false;
2212
2229
  }
2213
2230
  }
2214
2231
 
2215
2232
  // Now preprocessing is complete, execuete the action itself.
2216
- this.editAction(data);
2233
+ return this.editAction(data);
2217
2234
  }
2218
2235
 
2219
2236
  // Performs the edit action using the 'data' parameter, which contains the
@@ -2232,7 +2249,7 @@ export default class CanvasController {
2232
2249
  // 'delete' is pressed on the keyboard.
2233
2250
  if (data.editType === "deleteSelectedObjects" &&
2234
2251
  data.selectedObjectIds.length === 0) {
2235
- return;
2252
+ return false;
2236
2253
  }
2237
2254
 
2238
2255
  // These commands are supported for the external AND internal object models.
@@ -2289,6 +2306,14 @@ export default class CanvasController {
2289
2306
  this.toggleNotificationPanel();
2290
2307
  break;
2291
2308
  }
2309
+ case "openNotificationPanel": {
2310
+ this.openNotificationPanel();
2311
+ break;
2312
+ }
2313
+ case "closeNotificationPanel": {
2314
+ this.closeNotificationPanel();
2315
+ break;
2316
+ }
2292
2317
  case "loadPipelineFlow": {
2293
2318
  this.objectModel.ensurePipelineIsLoaded(data);
2294
2319
  break;
@@ -2302,200 +2327,197 @@ export default class CanvasController {
2302
2327
  if (this.getCanvasConfig().enableInternalObjectModel) {
2303
2328
  switch (data.editType) {
2304
2329
  case "createNode": {
2305
- command = new CreateNodeAction(data, this.objectModel, this.labelUtil);
2330
+ command = new CreateNodeAction(data, this);
2306
2331
  this.commandStack.do(command);
2307
2332
  data = command.getData();
2308
2333
  break;
2309
2334
  }
2310
2335
  case "createNodeOnLink": {
2311
- command = new CreateNodeOnLinkAction(data, this.objectModel, this.labelUtil);
2336
+ command = new CreateNodeOnLinkAction(data, this);
2312
2337
  this.commandStack.do(command);
2313
2338
  data = command.getData();
2314
2339
  break;
2315
2340
  }
2316
2341
  case "createNodeAttachLinks": {
2317
- command = new CreateNodeAttachLinksAction(data, this.objectModel, this.labelUtil);
2342
+ command = new CreateNodeAttachLinksAction(data, this);
2318
2343
  this.commandStack.do(command);
2319
2344
  data = command.getData();
2320
2345
  break;
2321
2346
  }
2322
2347
  case "createAutoNode": {
2323
- const autoLinkSelNodes = this.getCanvasConfig().enableAutoLinkOnlyFromSelNodes;
2324
- command = new CreateAutoNodeAction(data, this.objectModel, this.labelUtil, autoLinkSelNodes);
2348
+ command = new CreateAutoNodeAction(data, this);
2325
2349
  this.commandStack.do(command);
2326
2350
  this.panToReveal(data);
2327
2351
  data = command.getData();
2328
2352
  break;
2329
2353
  }
2330
2354
  case "createComment": {
2331
- command = new CreateCommentAction(data, this.objectModel, this.labelUtil);
2355
+ command = new CreateCommentAction(data, this);
2332
2356
  this.commandStack.do(command);
2333
2357
  break;
2334
2358
  }
2335
2359
  case "createAutoComment": {
2336
- const comPos = this.getNewCommentPosition(data.pipelineId);
2337
- command = new CreateCommentAction(data, this.objectModel, this.labelUtil, comPos);
2360
+ data.mousePos = this.getNewCommentPosition(data.pipelineId);
2361
+ command = new CreateCommentAction(data, this);
2338
2362
  this.commandStack.do(command);
2339
2363
  data = command.getData();
2340
2364
  break;
2341
2365
  }
2342
2366
  case "insertNodeIntoLink": {
2343
- command = new InsertNodeIntoLinkAction(data, this.objectModel, this.labelUtil);
2367
+ command = new InsertNodeIntoLinkAction(data, this);
2344
2368
  this.commandStack.do(command);
2345
2369
  break;
2346
2370
  }
2347
2371
  case "attachNodeToLinks": {
2348
- command = new AttachNodeToLinksAction(data, this.objectModel, this.labelUtil);
2372
+ command = new AttachNodeToLinksAction(data, this);
2349
2373
  this.commandStack.do(command);
2350
2374
  break;
2351
2375
  }
2352
2376
  case "moveObjects": {
2353
- command = new MoveObjectsAction(data, this.objectModel, this.labelUtil);
2377
+ command = new MoveObjectsAction(data, this);
2354
2378
  this.commandStack.do(command);
2355
2379
  break;
2356
2380
  }
2357
2381
  case "resizeObjects": {
2358
- command = new SizeAndPositionObjectsAction(data, this.objectModel, this.labelUtil);
2382
+ command = new SizeAndPositionObjectsAction(data, this);
2359
2383
  this.commandStack.do(command);
2360
2384
  break;
2361
2385
  }
2362
2386
  case "setObjectsStyle": {
2363
- command = new SetObjectsStyleAction(data, this.objectModel, this.labelUtil);
2387
+ command = new SetObjectsStyleAction(data);
2364
2388
  this.commandStack.do(command);
2365
2389
  break;
2366
2390
  }
2367
2391
  case "setLinksStyle": {
2368
- command = new SetLinksStyleAction(data, this.objectModel, this.labelUtil);
2392
+ command = new SetLinksStyleAction(data, this);
2369
2393
  this.commandStack.do(command);
2370
2394
  break;
2371
2395
  }
2372
2396
  case "updateLink": {
2373
- command = new UpdateLinkAction(data, this.objectModel, this.labelUtil);
2397
+ command = new UpdateLinkAction(data, this);
2374
2398
  this.commandStack.do(command);
2375
2399
  break;
2376
2400
  }
2377
2401
  case "setNodeLabel": {
2378
- command = new SetNodeLabelAction(data, this.objectModel, this.labelUtil);
2402
+ command = new SetNodeLabelAction(data, this);
2379
2403
  this.commandStack.do(command);
2380
2404
  break;
2381
2405
  }
2382
2406
  case "editComment": {
2383
- command = new EditCommentAction(data, this.objectModel, this.labelUtil);
2407
+ command = new EditCommentAction(data, this);
2384
2408
  this.commandStack.do(command);
2385
2409
  break;
2386
2410
  }
2387
2411
  case "editDecorationLabel": {
2388
- command = new EditDecorationLabelAction(data, this.objectModel, this.labelUtil);
2412
+ command = new EditDecorationLabelAction(data, this);
2389
2413
  this.commandStack.do(command);
2390
2414
  break;
2391
2415
  }
2392
2416
  case "linkNodes": {
2393
- command = new CreateNodeLinkAction(data, this.objectModel, this.labelUtil);
2417
+ command = new CreateNodeLinkAction(data, this);
2394
2418
  this.commandStack.do(command);
2395
2419
  data = command.getData();
2396
2420
  break;
2397
2421
  }
2398
2422
  case "linkNodesAndReplace": {
2399
- command = new CreateNodeLinkAction(data, this.objectModel, this.labelUtil);
2423
+ command = new CreateNodeLinkAction(data, this);
2400
2424
  this.commandStack.do(command);
2401
2425
  break;
2402
2426
  }
2403
2427
  case "linkComment": {
2404
- command = new CreateCommentLinkAction(data, this.objectModel, this.labelUtil);
2428
+ command = new CreateCommentLinkAction(data, this);
2405
2429
  this.commandStack.do(command);
2406
2430
  data = command.getData();
2407
2431
  break;
2408
2432
  }
2409
2433
  case "createDetachedLink": {
2410
- command = new CreateNodeLinkDetachedAction(data, this.objectModel, this.labelUtil);
2434
+ command = new CreateNodeLinkDetachedAction(data, this);
2411
2435
  this.commandStack.do(command);
2412
2436
  data = command.getData();
2413
2437
  break;
2414
2438
  }
2415
2439
  case "colorSelectedObjects": {
2416
- command = new ColorSelectedObjectsAction(data, this.objectModel, this.labelUtil);
2440
+ command = new ColorSelectedObjectsAction(data, this);
2417
2441
  this.commandStack.do(command);
2418
2442
  break;
2419
2443
  }
2420
2444
  case "deleteSelectedObjects": {
2421
- command = new DeleteObjectsAction(data, this.objectModel, this.labelUtil, this.areDetachableLinksInUse());
2445
+ command = new DeleteObjectsAction(data, this);
2422
2446
  this.commandStack.do(command);
2423
2447
  break;
2424
2448
  }
2425
2449
  case "displaySubPipeline": {
2426
- command = new DisplaySubPipelineAction(data, this.objectModel, this.labelUtil);
2450
+ command = new DisplaySubPipelineAction(data, this);
2427
2451
  this.commandStack.do(command);
2428
2452
  break;
2429
2453
  }
2430
2454
  case "displayPreviousPipeline": {
2431
- command = new DisplayPreviousPipelineAction(data, this.objectModel, this.labelUtil);
2455
+ command = new DisplayPreviousPipelineAction(data, this);
2432
2456
  this.commandStack.do(command);
2433
2457
  break;
2434
2458
  }
2435
2459
  case "arrangeHorizontally": {
2436
- command = new ArrangeLayoutAction(data, this.objectModel, this.labelUtil, constants.HORIZONTAL);
2460
+ data.layoutDirection = constants.HORIZONTAL;
2461
+ command = new ArrangeLayoutAction(data, this);
2437
2462
  this.commandStack.do(command);
2438
2463
  break;
2439
2464
  }
2440
2465
  case "arrangeVertically": {
2441
- command = new ArrangeLayoutAction(data, this.objectModel, this.labelUtil, constants.VERTICAL);
2466
+ data.layoutDirection = constants.VERTICAL;
2467
+ command = new ArrangeLayoutAction(data, this);
2442
2468
  this.commandStack.do(command);
2443
2469
  break;
2444
2470
  }
2445
2471
  case "createSuperNode":
2446
2472
  case "createSuperNodeExternal": {
2447
- command = new CreateSuperNodeAction(data, this.objectModel, this.labelUtil, this.getCanvasConfig().enableUseCardFromOriginalPorts);
2473
+ command = new CreateSuperNodeAction(data, this);
2448
2474
  this.commandStack.do(command);
2449
2475
  break;
2450
2476
  }
2451
2477
  case "deconstructSuperNode": {
2452
- command = new DeconstructSuperNodeAction(data, this.objectModel, this.labelUtil,
2453
- this.getCanvasConfig().enableMoveNodesOnSupernodeResize);
2478
+ command = new DeconstructSuperNodeAction(data, this);
2454
2479
  this.commandStack.do(command);
2455
2480
  break;
2456
2481
  }
2457
2482
 
2458
2483
  case "expandSuperNodeInPlace": {
2459
- command = new ExpandSuperNodeInPlaceAction(data, this.objectModel, this.labelUtil,
2460
- this.getCanvasConfig().enableMoveNodesOnSupernodeResize);
2484
+ command = new ExpandSuperNodeInPlaceAction(data, this);
2461
2485
  this.commandStack.do(command);
2462
2486
  break;
2463
2487
  }
2464
2488
  case "collapseSuperNodeInPlace": {
2465
- command = new CollapseSuperNodeInPlaceAction(data, this.objectModel, this.labelUtil,
2466
- this.getCanvasConfig().enableMoveNodesOnSupernodeResize);
2489
+ command = new CollapseSuperNodeInPlaceAction(data, this);
2467
2490
  this.commandStack.do(command);
2468
2491
  break;
2469
2492
  }
2470
2493
  case "convertSuperNodeExternalToLocal": {
2471
- command = new ConvertSuperNodeExternalToLocal(data, this.objectModel, this.labelUtil);
2494
+ command = new ConvertSuperNodeExternalToLocal(data, this);
2472
2495
  this.commandStack.do(command);
2473
2496
  break;
2474
2497
  }
2475
2498
  case "convertSuperNodeLocalToExternal": {
2476
- command = new ConvertSuperNodeLocalToExternal(data, this.objectModel, this.labelUtil);
2499
+ command = new ConvertSuperNodeLocalToExternal(data, this);
2477
2500
  this.commandStack.do(command);
2478
2501
  break;
2479
2502
  }
2480
2503
  case "deleteLink": {
2481
- command = new DeleteLinkAction(data, this.objectModel, this.labelUtil);
2504
+ command = new DeleteLinkAction(data, this);
2482
2505
  this.commandStack.do(command);
2483
2506
  break;
2484
2507
  }
2485
2508
  case "disconnectNode": {
2486
- command = new DisconnectObjectsAction(data, this.objectModel, this.labelUtil);
2509
+ command = new DisconnectObjectsAction(data, this);
2487
2510
  this.commandStack.do(command);
2488
2511
  break;
2489
2512
  }
2490
2513
  case "saveToPalette": {
2491
- command = new SaveToPaletteAction(data, this.objectModel, this.labelUtil, this.labelUtil);
2514
+ command = new SaveToPaletteAction(data, this);
2492
2515
  this.commandStack.do(command);
2493
2516
  break;
2494
2517
  }
2495
2518
  case "cut": {
2496
2519
  this.objectModel.copyToClipboard(this.areDetachableLinksInUse());
2497
- command = new DeleteObjectsAction(data, this.objectModel, this.labelUtil,
2498
- this.areDetachableLinksInUse());
2520
+ command = new DeleteObjectsAction(data, this);
2499
2521
  this.commandStack.do(command);
2500
2522
  break;
2501
2523
  }
@@ -2507,9 +2529,7 @@ export default class CanvasController {
2507
2529
  const pasteObjects = this.objectModel.getObjectsToPaste();
2508
2530
  if (pasteObjects) {
2509
2531
  data.objects = pasteObjects;
2510
- const vpDims = this.getSVGCanvasD3().getTransformedViewportDimensions();
2511
- command = new PasteAction(data, this.objectModel, this.labelUtil,
2512
- vpDims, this.areDetachableLinksInUse(), this.isSnapToGridInUse());
2532
+ command = new PasteAction(data, this);
2513
2533
  this.commandStack.do(command);
2514
2534
  data = command.getData();
2515
2535
  }
@@ -2540,12 +2560,6 @@ export default class CanvasController {
2540
2560
  this.unsetAllBranchHighlight();
2541
2561
  this.branchHighlighted = false;
2542
2562
  break;
2543
- case "openNotificationPanel":
2544
- this.openNotificationPanel();
2545
- break;
2546
- case "closeNotificationPanel":
2547
- this.closeNotificationPanel();
2548
- break;
2549
2563
  default:
2550
2564
  }
2551
2565
  }
@@ -2561,6 +2575,8 @@ export default class CanvasController {
2561
2575
  // pipeline visible they will be loaded one by one when this check is
2562
2576
  // encountered.
2563
2577
  this.ensureVisibleExpandedPipelinesAreLoaded();
2578
+
2579
+ return true;
2564
2580
  }
2565
2581
 
2566
2582
  // Sets the appropriate values when handling an external pipleine flow
@@ -70,7 +70,7 @@ class CommonCanvasCentralItems extends React.Component {
70
70
  const tip = (<CommonCanvasTooltip canvasController={this.props.canvasController} />);
71
71
  const palette = (<Palette canvasController={this.props.canvasController} containingDivId={this.props.containingDivId} />);
72
72
  const rightFlyout = (<CommonCanvasRightFlyout />);
73
- const canvasToolbar = (<CommonCanvasToolbar canvasController={this.props.canvasController} />);
73
+ const canvasToolbar = (<CommonCanvasToolbar canvasController={this.props.canvasController} containingDivId={this.props.containingDivId} />);
74
74
  const canvasContents = (<CanvasContents canvasController={this.props.canvasController} />);
75
75
  const bottomPanel = (<CanvasBottomPanel canvasController={this.props.canvasController} containingDivId={this.props.containingDivId} />);
76
76
  const topPanel = (<CanvasTopPanel canvasController={this.props.canvasController} containingDivId={this.props.containingDivId} />);
@@ -22,7 +22,7 @@ import Toolbar from "../toolbar/toolbar.jsx";
22
22
  import Logger from "../logging/canvas-logger.js";
23
23
  import ColorPicker from "../color-picker";
24
24
 
25
- const CM_TOOLBAR_GAP = 4;
25
+ const CM_TOOLBAR_GAP = 2;
26
26
  const CM_ICON_SIZE = 32;
27
27
  const CM_ICON_PAD = 2;
28
28
 
@@ -60,23 +60,25 @@ class CommonCanvasContextToolbar extends React.Component {
60
60
  if (menuItem.divider) {
61
61
  return { divider: true };
62
62
  }
63
- const subPanel = this.getSubPanel(menuItem);
64
- const subMenu = !subPanel && menuItem.menu ? this.getSubMenu(menuItem) : null;
63
+ const subPanelInfo = this.getSubPanelInfo(menuItem);
64
+ const subMenu = !subPanelInfo.subPanel && menuItem.menu ? this.getSubMenu(menuItem) : null;
65
+
65
66
  return {
66
67
  action: menuItem.action,
67
68
  label: menuItem.label,
68
69
  subMenu: subMenu,
69
- subPanel: subPanel,
70
+ subPanel: subPanelInfo.subPanel,
71
+ subPanelData: subPanelInfo.subPanelData,
70
72
  enable: this.getEnable(menuItem),
71
73
  iconEnabled: menuItem.icon
72
74
  };
73
75
  }
74
76
 
75
- getSubPanel(menuItem) {
77
+ getSubPanelInfo(menuItem) {
76
78
  if (menuItem.action === "colorBackground") {
77
- return this.buildColorPicker();
79
+ return { subPanel: ColorPicker, subPanelData: { clickActionHandler: (color) => this.colorClicked(color) } };
78
80
  }
79
- return null;
81
+ return {};
80
82
  }
81
83
 
82
84
  getSubMenu(menuItem) {
@@ -150,12 +152,6 @@ class CommonCanvasContextToolbar extends React.Component {
150
152
  this.toolbarActionHandler("colorSelectedObjects", { color });
151
153
  }
152
154
 
153
- buildColorPicker() {
154
- return (
155
- <ColorPicker clickActionHandler={this.colorClicked} />
156
- );
157
- }
158
-
159
155
  shouldCenterJustifyToolbar() {
160
156
  const objType = this.props.contextSource.type;
161
157
  return (
@@ -276,6 +276,7 @@ class CommonCanvasToolbar extends React.Component {
276
276
  <div aria-label={this.getLabel("toolbar.label")} role="navigation" className={"common-canvas-toolbar"} >
277
277
  <Toolbar
278
278
  config={toolbarConfig}
279
+ containingDivId={this.props.containingDivId}
279
280
  instanceId={this.props.canvasController.getInstanceId()}
280
281
  toolbarActionHandler={this.toolbarActionHandler}
281
282
  additionalText={{ overflowMenuLabel: this.getLabel("toolbar.overflowMenu") }}
@@ -291,6 +292,7 @@ CommonCanvasToolbar.propTypes = {
291
292
  // Provided by CommonCanvas
292
293
  intl: PropTypes.object.isRequired,
293
294
  canvasController: PropTypes.object.isRequired,
295
+ containingDivId: PropTypes.string.isRequired,
294
296
 
295
297
  // Provided by redux
296
298
  enableToolbarLayout: PropTypes.string.isRequired,