@elyra/canvas 12.10.0 → 12.11.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 (197) hide show
  1. package/dist/canvas-constants-7f93e705.js +2 -0
  2. package/dist/canvas-constants-7f93e705.js.map +1 -0
  3. package/dist/canvas-constants-ac5daafb.js +2 -0
  4. package/dist/canvas-constants-ac5daafb.js.map +1 -0
  5. package/dist/canvas-controller-183ff6a7.js +2 -0
  6. package/dist/canvas-controller-183ff6a7.js.map +1 -0
  7. package/dist/canvas-controller-d70a731e.js +2 -0
  8. package/dist/canvas-controller-d70a731e.js.map +1 -0
  9. package/dist/canvas-logger-815781bb.js +2 -0
  10. package/dist/canvas-logger-815781bb.js.map +1 -0
  11. package/dist/canvas-logger-a0f1beaa.js +2 -0
  12. package/dist/canvas-logger-a0f1beaa.js.map +1 -0
  13. package/dist/common-canvas-3e832a84.js +2 -0
  14. package/dist/common-canvas-3e832a84.js.map +1 -0
  15. package/dist/common-canvas-c50cb3f3.js +2 -0
  16. package/dist/common-canvas-c50cb3f3.js.map +1 -0
  17. package/dist/common-canvas.es.js +1 -1
  18. package/dist/common-canvas.es.js.map +1 -1
  19. package/dist/common-canvas.js +1 -1
  20. package/dist/common-canvas.js.map +1 -1
  21. package/dist/common-properties-4f471b2b.js +2 -0
  22. package/dist/common-properties-4f471b2b.js.map +1 -0
  23. package/dist/common-properties-9161cd27.js +2 -0
  24. package/dist/common-properties-9161cd27.js.map +1 -0
  25. package/dist/datarecord-metadata-v3-schema-bda88f2e.js +2 -0
  26. package/dist/datarecord-metadata-v3-schema-bda88f2e.js.map +1 -0
  27. package/dist/datarecord-metadata-v3-schema-d7ad05cd.js +2 -0
  28. package/dist/datarecord-metadata-v3-schema-d7ad05cd.js.map +1 -0
  29. package/dist/en-2ed89528.js +2 -0
  30. package/dist/en-2ed89528.js.map +1 -0
  31. package/dist/en-e93855cc.js +2 -0
  32. package/dist/en-e93855cc.js.map +1 -0
  33. package/dist/extends-39f57612.js +7 -0
  34. package/dist/extends-39f57612.js.map +1 -0
  35. package/dist/extends-51d9ddcc.js +7 -0
  36. package/dist/extends-51d9ddcc.js.map +1 -0
  37. package/dist/flexible-table-154a3359.js +2 -0
  38. package/dist/flexible-table-154a3359.js.map +1 -0
  39. package/dist/flexible-table-5e4a1e6d.js +2 -0
  40. package/dist/flexible-table-5e4a1e6d.js.map +1 -0
  41. package/dist/icon-811ffddd.js +2 -0
  42. package/dist/icon-811ffddd.js.map +1 -0
  43. package/dist/icon-d6909a68.js +2 -0
  44. package/dist/icon-d6909a68.js.map +1 -0
  45. package/dist/index-4fd90a14.js +2 -0
  46. package/dist/index-4fd90a14.js.map +1 -0
  47. package/dist/index-6d138021.js +2 -0
  48. package/dist/index-6d138021.js.map +1 -0
  49. package/dist/isArrayLikeObject-31e5e646.js +2 -0
  50. package/dist/isArrayLikeObject-31e5e646.js.map +1 -0
  51. package/dist/isArrayLikeObject-7c33c7fd.js +2 -0
  52. package/dist/isArrayLikeObject-7c33c7fd.js.map +1 -0
  53. package/dist/lib/canvas-controller.es.js +2 -0
  54. package/dist/lib/canvas-controller.es.js.map +1 -0
  55. package/dist/lib/canvas-controller.js +2 -0
  56. package/dist/lib/canvas-controller.js.map +1 -0
  57. package/dist/lib/canvas.es.js +1 -1
  58. package/dist/lib/canvas.js +1 -1
  59. package/dist/lib/context-menu.es.js +1 -1
  60. package/dist/lib/context-menu.es.js.map +1 -1
  61. package/dist/lib/context-menu.js +1 -1
  62. package/dist/lib/context-menu.js.map +1 -1
  63. package/dist/lib/properties/field-picker.es.js +1 -1
  64. package/dist/lib/properties/field-picker.js +1 -1
  65. package/dist/lib/properties/flexible-table.es.js +1 -1
  66. package/dist/lib/properties/flexible-table.js +1 -1
  67. package/dist/lib/properties.es.js +1 -1
  68. package/dist/lib/properties.js +1 -1
  69. package/dist/lib/tooltip.es.js +1 -1
  70. package/dist/lib/tooltip.es.js.map +1 -1
  71. package/dist/lib/tooltip.js +1 -1
  72. package/dist/lib/tooltip.js.map +1 -1
  73. package/dist/styles/common-canvas.min.css +1 -1
  74. package/dist/styles/common-canvas.min.css.map +1 -1
  75. package/dist/toolbar-335252dd.js +2 -0
  76. package/dist/toolbar-335252dd.js.map +1 -0
  77. package/dist/toolbar-85e6c77b.js +2 -0
  78. package/dist/toolbar-85e6c77b.js.map +1 -0
  79. package/locales/command-actions/locales/en.json +7 -1
  80. package/locales/command-actions/locales/eo.json +7 -1
  81. package/locales/command-actions/locales/index.js +3 -1
  82. package/locales/command-actions/locales/ko.json +9 -0
  83. package/locales/common-canvas/locales/en.json +1 -0
  84. package/locales/common-canvas/locales/eo.json +1 -0
  85. package/locales/common-canvas/locales/index.js +3 -1
  86. package/locales/common-canvas/locales/ko.json +32 -0
  87. package/locales/common-properties/locales/index.js +3 -1
  88. package/locales/common-properties/locales/ko.json +93 -0
  89. package/locales/palette/locales/index.js +3 -1
  90. package/locales/palette/locales/ko.json +10 -0
  91. package/locales/toolbar/locales/index.js +3 -1
  92. package/locales/toolbar/locales/ko.json +8 -0
  93. package/package.json +7 -3
  94. package/rollup.config.js +10 -7
  95. package/src/color-picker/color-picker-panel.jsx +61 -0
  96. package/src/color-picker/color-picker.jsx +37 -0
  97. package/src/color-picker/color-picker.scss +46 -0
  98. package/src/command-actions/colorSelectedObjectsAction.js +72 -0
  99. package/src/command-actions/deleteObjectsAction.js +16 -11
  100. package/src/command-actions/pasteAction.js +50 -21
  101. package/src/common-canvas/canvas-controller.js +32 -5
  102. package/src/common-canvas/cc-bottom-panel.jsx +34 -37
  103. package/src/common-canvas/cc-contents.jsx +114 -12
  104. package/src/common-canvas/cc-toolbar.jsx +3 -2
  105. package/src/common-canvas/common-canvas-utils.js +39 -78
  106. package/src/common-canvas/common-canvas.scss +28 -14
  107. package/src/common-canvas/constants/canvas-constants.js +17 -16
  108. package/src/common-canvas/label-util.js +1 -1
  109. package/src/common-canvas/svg-canvas-d3.js +20 -107
  110. package/src/common-canvas/svg-canvas-d3.scss +67 -6
  111. package/src/common-canvas/svg-canvas-pipeline.js +201 -0
  112. package/src/common-canvas/svg-canvas-renderer.js +155 -164
  113. package/src/common-canvas/svg-canvas-utils-links.js +3 -3
  114. package/src/common-canvas/svg-canvas-utils-nodes.js +22 -34
  115. package/src/common-properties/actions.js +4 -0
  116. package/src/common-properties/components/field-picker/field-picker.jsx +33 -36
  117. package/src/common-properties/components/field-picker/field-picker.scss +20 -23
  118. package/src/common-properties/components/flexible-table/flexible-table.jsx +46 -31
  119. package/src/common-properties/components/flexible-table/flexible-table.scss +14 -17
  120. package/src/common-properties/components/properties-buttons/properties-buttons.jsx +28 -21
  121. package/src/common-properties/components/table-buttons/table-buttons.jsx +3 -1
  122. package/src/common-properties/components/table-buttons/table-buttons.scss +8 -8
  123. package/src/common-properties/components/title-editor/title-editor.jsx +31 -4
  124. package/src/common-properties/components/title-editor/title-editor.scss +30 -5
  125. package/src/common-properties/components/virtualized-table/virtualized-table.jsx +120 -29
  126. package/src/common-properties/components/virtualized-table/virtualized-table.scss +72 -8
  127. package/src/common-properties/constants/constants.js +5 -1
  128. package/src/common-properties/constants/form-constants.js +1 -0
  129. package/src/common-properties/controls/abstract-table.jsx +12 -11
  130. package/src/common-properties/controls/abstract-table.scss +6 -2
  131. package/src/common-properties/controls/dropdown/dropdown.scss +4 -0
  132. package/src/common-properties/controls/expression/expression-builder/expression-select-field-function.jsx +2 -2
  133. package/src/common-properties/controls/passwordfield/passwordfield.jsx +2 -2
  134. package/src/common-properties/controls/readonlytable/readonlytable.jsx +4 -2
  135. package/src/common-properties/controls/selectcolumns/selectcolumns.scss +0 -19
  136. package/src/common-properties/controls/someofselect/someofselect.scss +2 -2
  137. package/src/common-properties/form/ControlInfo.js +8 -0
  138. package/src/common-properties/form/EditorForm.js +4 -0
  139. package/src/common-properties/form/ParameterInfo.js +4 -0
  140. package/src/common-properties/panels/sub-panel/cell.jsx +18 -23
  141. package/src/common-properties/panels/sub-panel/sub-panel.scss +5 -22
  142. package/src/common-properties/properties-controller.js +18 -0
  143. package/src/common-properties/properties-main/properties-main.jsx +15 -9
  144. package/src/common-properties/properties-main/properties-main.scss +9 -2
  145. package/src/common-properties/properties-store.js +27 -1
  146. package/src/common-properties/reducers/properties-settings.js +17 -1
  147. package/src/context-menu/common-context-menu.jsx +74 -29
  148. package/src/context-menu/context-menu-wrapper.jsx +2 -2
  149. package/src/icons/icon.jsx +5 -46
  150. package/src/index.scss +1 -0
  151. package/src/object-model/api-pipeline.js +25 -42
  152. package/src/object-model/object-model.js +27 -3
  153. package/src/object-model/redux/canvas-store.js +68 -0
  154. package/src/object-model/redux/reducers/canvasinfo.js +36 -0
  155. package/src/object-model/redux/reducers/comments.js +58 -10
  156. package/src/object-model/redux/reducers/externalpipelineflows.js +1 -0
  157. package/src/object-model/redux/reducers/links.js +9 -7
  158. package/src/object-model/redux/reducers/selectioninfo.js +2 -1
  159. package/src/palette/palette-content-list-item.jsx +8 -1
  160. package/src/palette/palette-dialog-content-grid-node.jsx +8 -1
  161. package/src/palette/palette-flyout-utils.js +3 -3
  162. package/src/toolbar/toolbar-action-item.jsx +77 -14
  163. package/src/toolbar/toolbar-overflow-item.jsx +2 -3
  164. package/src/tooltip/tooltip.jsx +4 -1
  165. package/stats.html +1 -1
  166. package/dist/canvas-controller-5c90a709.js +0 -2
  167. package/dist/canvas-controller-5c90a709.js.map +0 -1
  168. package/dist/canvas-controller-a851a663.js +0 -2
  169. package/dist/canvas-controller-a851a663.js.map +0 -1
  170. package/dist/common-properties-3758e3b2.js +0 -2
  171. package/dist/common-properties-3758e3b2.js.map +0 -1
  172. package/dist/common-properties-6334cca1.js +0 -2
  173. package/dist/common-properties-6334cca1.js.map +0 -1
  174. package/dist/datarecord-metadata-v3-schema-3a2957c3.js +0 -2
  175. package/dist/datarecord-metadata-v3-schema-3a2957c3.js.map +0 -1
  176. package/dist/datarecord-metadata-v3-schema-82f2b977.js +0 -2
  177. package/dist/datarecord-metadata-v3-schema-82f2b977.js.map +0 -1
  178. package/dist/en-9e368daa.js +0 -2
  179. package/dist/en-9e368daa.js.map +0 -1
  180. package/dist/en-a3710fcf.js +0 -2
  181. package/dist/en-a3710fcf.js.map +0 -1
  182. package/dist/extends-41535aa9.js +0 -7
  183. package/dist/extends-41535aa9.js.map +0 -1
  184. package/dist/extends-76e6b8d2.js +0 -8
  185. package/dist/extends-76e6b8d2.js.map +0 -1
  186. package/dist/flexible-table-2bbb9e48.js +0 -2
  187. package/dist/flexible-table-2bbb9e48.js.map +0 -1
  188. package/dist/flexible-table-756ff86a.js +0 -2
  189. package/dist/flexible-table-756ff86a.js.map +0 -1
  190. package/dist/index-1eff5860.js +0 -2
  191. package/dist/index-1eff5860.js.map +0 -1
  192. package/dist/index-7fba99b9.js +0 -2
  193. package/dist/index-7fba99b9.js.map +0 -1
  194. package/dist/isEmpty-3550e76f.js +0 -2
  195. package/dist/isEmpty-3550e76f.js.map +0 -1
  196. package/dist/isEmpty-c6f783dd.js +0 -2
  197. package/dist/isEmpty-c6f783dd.js.map +0 -1
@@ -79,9 +79,10 @@ $node-port-input-arrow-connected-stroke-color: $inverse-02;
79
79
  $node-port-input-arrow-connected-fill-color: transparent;
80
80
 
81
81
  // Comment colors
82
- $comment-outline-color: $ui-04;
83
- $comment-fill-color: $ui-01;
84
- $comment-text-color: $text-02;
82
+ $comment-outline-color: $active-light-ui;
83
+ $comment-outline-hover-color: $inverse-hover-ui;
84
+ $comment-fill-color: $white-0;
85
+ $comment-text-color: $gray-100;
85
86
 
86
87
  // Comment properties
87
88
  $comment-text-font-size: 12px;
@@ -293,7 +294,6 @@ $link-highlight-color: $support-04;
293
294
  }
294
295
  }
295
296
 
296
-
297
297
  /* Node styles - Error indication */
298
298
 
299
299
  .d3-node-error-label {
@@ -473,7 +473,6 @@ $link-highlight-color: $support-04;
473
473
  }
474
474
  }
475
475
 
476
-
477
476
  /* Error indicator */
478
477
  .d3-error-circle {
479
478
  stroke: $canvas-background-color;
@@ -605,7 +604,14 @@ $link-highlight-color: $support-04;
605
604
 
606
605
  /* Comment styles */
607
606
 
608
- /* Style for comment background rectangle */
607
+ .d3-comment-group:hover {
608
+ .d3-comment-rect {
609
+ stroke: $comment-outline-hover-color
610
+ }
611
+ }
612
+
613
+
614
+ /* Style for default comment background rectangle */
609
615
  .d3-comment-rect {
610
616
  fill: $comment-fill-color;
611
617
  stroke: $comment-outline-color;
@@ -616,6 +622,59 @@ $link-highlight-color: $support-04;
616
622
  user-select: none;
617
623
  }
618
624
 
625
+ @mixin comment-color-overrides($background-color) {
626
+ .d3-comment-rect {
627
+ fill: $background-color;
628
+ }
629
+ .d3-comment-entry {
630
+ background-color: $background-color;
631
+ color: $gray-100;
632
+ }
633
+
634
+ }
635
+
636
+ /* Styles for comments colored by the user */
637
+ // We add g. at the front of each selector below to override any color set
638
+ // by a class provided for the comment by the host application. The
639
+ // assumption is, the user would prefer the color they set in the UI to
640
+ // override any color provided by the host app.
641
+ g.bkg-col-white-0 {
642
+ @include comment-color-overrides($white-0);
643
+ }
644
+ g.bkg-col-yellow-20 {
645
+ @include comment-color-overrides($yellow-20);
646
+ }
647
+ g.bkg-col-gray-20 {
648
+ @include comment-color-overrides($gray-20);
649
+ }
650
+ g.bkg-col-green-20 {
651
+ @include comment-color-overrides($green-20);
652
+ }
653
+ g.bkg-col-teal-20 {
654
+ @include comment-color-overrides($teal-20);
655
+ }
656
+ g.bkg-col-cyan-20 {
657
+ @include comment-color-overrides($cyan-20);
658
+ }
659
+ g.bkg-col-red-50 {
660
+ @include comment-color-overrides($red-50);
661
+ }
662
+ g.bkg-col-orange-40 {
663
+ @include comment-color-overrides($orange-40);
664
+ }
665
+ g.bkg-col-gray-50 {
666
+ @include comment-color-overrides($gray-50);
667
+ }
668
+ g.bkg-col-green-50 {
669
+ @include comment-color-overrides($green-50);
670
+ }
671
+ g.bkg-col-teal-50 {
672
+ @include comment-color-overrides($teal-50);
673
+ }
674
+ g.bkg-col-cyan-50 {
675
+ @include comment-color-overrides($cyan-50);
676
+ }
677
+
619
678
  .d3-comment-selection-highlight {
620
679
  stroke-width: 0;
621
680
  fill: transparent;
@@ -632,6 +691,7 @@ $link-highlight-color: $support-04;
632
691
 
633
692
  @mixin d3-comment-mixin {
634
693
  color: $comment-text-color;
694
+ background-color: transparent;
635
695
  font-size: $comment-text-font-size;
636
696
  font-weight: $comment-text-font-weight;
637
697
  font-family: $comment-text-font-family;
@@ -653,6 +713,7 @@ $link-highlight-color: $support-04;
653
713
  .d3-comment-text {
654
714
  @include d3-comment-mixin;
655
715
  border-width: $comment-text-display-border;
716
+ user-select: none;
656
717
  }
657
718
 
658
719
  /* Style for comment text entry when shown in an HTML textarea control. */
@@ -0,0 +1,201 @@
1
+ /*
2
+ * Copyright 2022 Elyra Authors
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * http://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+ /* eslint brace-style: "off" */
17
+
18
+ import { isEmpty } from "lodash";
19
+ import Logger from "../logging/canvas-logger.js";
20
+ import CanvasUtils from "./common-canvas-utils.js";
21
+ import { COMMENT_LINK } from "./constants/canvas-constants";
22
+
23
+
24
+ export default class SVGCanvasPipeline {
25
+ constructor(pipelineId, canvasInfo) {
26
+ this.logger = new Logger("SVGCanvasActivePipeline");
27
+ this.logger.logStartTimer("constructor");
28
+ this.canvasInfo = canvasInfo;
29
+ this.pipeline = this.getPipeline(pipelineId, canvasInfo);
30
+
31
+ // These variables are accessed directly by svg-canvas-renderer
32
+ this.id = this.pipeline.id;
33
+ this.zoom = this.pipeline.zoom;
34
+ this.nodes = this.pipeline.nodes;
35
+ this.comments = this.pipeline.comments;
36
+ this.links = this.pipeline.links;
37
+
38
+ // We create mapped arrays for quick lookup
39
+ this.mappedNodes = this.getMappedArray(this.pipeline.nodes);
40
+ this.mappedComments = this.getMappedArray(this.pipeline.comments);
41
+ this.mappedLinks = this.getMappedArray(this.pipeline.links);
42
+
43
+ // preProcessPipeline uses the mapped objects so this needs to be done
44
+ // after they have been created.
45
+ this.pipeline = this.preProcessPipeline(this.pipeline);
46
+
47
+ this.logger.logEndTimer("constructor");
48
+ }
49
+
50
+ getCanvasDimensions(gap) {
51
+ return CanvasUtils.getCanvasDimensions(
52
+ this.pipeline.nodes, this.pipeline.comments,
53
+ this.pipeline.links, gap);
54
+ }
55
+
56
+ // Returns the name of the type of object d.
57
+ getObjectTypeName(d) {
58
+ if (this.getComment(d.id)) {
59
+ return "comment";
60
+ } else if (this.getNode(d.id)) {
61
+ return "node";
62
+ }
63
+ return "link";
64
+ }
65
+
66
+ getNode(nodeId) {
67
+ const node = this.mappedNodes[nodeId];
68
+ return (typeof node === "undefined") ? null : node;
69
+ }
70
+
71
+ getNodes(nodeIds) {
72
+ const nodes = [];
73
+ nodeIds.forEach((nId) => {
74
+ const n = this.getNode(nId);
75
+ if (n) {
76
+ nodes.push(n);
77
+ }
78
+ });
79
+ return nodes;
80
+ }
81
+
82
+ getSupernodes() {
83
+ return this.pipeline.nodes.filter((node) => CanvasUtils.isSupernode(node));
84
+ }
85
+
86
+ // Returns true if the pipeline is empty except for any binding nodes.
87
+ isEmptyOrBindingsOnly() {
88
+ return (isEmpty(this.pipeline.nodes) || this.containsOnlyBindingNodes()) &&
89
+ isEmpty(this.pipeline.comments);
90
+ }
91
+
92
+ containsOnlyBindingNodes() {
93
+ return !this.pipeline.nodes.find((node) => !CanvasUtils.isSuperBindingNode(node));
94
+ }
95
+
96
+ getComment(commentId) {
97
+ const com = this.mappedComments[commentId];
98
+ return (typeof com === "undefined") ? null : com;
99
+ }
100
+
101
+ getNodesAndComments() {
102
+ return this.pipeline.nodes.concat(this.pipeline.comments);
103
+ }
104
+
105
+ getNodeOrComment(id) {
106
+ let obj = this.getNode(id);
107
+ if (obj === null) {
108
+ obj = this.getComment(id);
109
+ }
110
+ return obj;
111
+ }
112
+
113
+ getLink(linkId) {
114
+ const link = this.mappedLinks[linkId];
115
+ return (typeof link === "undefined") ? null : link;
116
+ }
117
+
118
+ // Replaces the link in the links array with the one passed in.
119
+ replaceLink(oldLink) {
120
+ const index = this.pipeline.links.findIndex((l) => l.id === oldLink.id);
121
+ this.pipeline.links.splice(index, 1, oldLink);
122
+ this.mappedLinks = this.getMappedArray(this.pipeline.links);
123
+ }
124
+
125
+ getPipeline(pipelineId, canvasInfo) {
126
+ const pipeline = canvasInfo.pipelines.find((p) => p.id === pipelineId);
127
+ if (pipeline) {
128
+ return pipeline;
129
+ }
130
+ return { id: pipelineId, nodes: [], comments: [], links: [] };
131
+ }
132
+
133
+ // Preprocesses the pipeline to set the connected attribute of the ports
134
+ // for each node. This is used when rendering the connection satus of ports.
135
+ preProcessPipeline(pipeline) {
136
+ this.setAllPortsDisconnected(pipeline);
137
+
138
+ pipeline.links.forEach((link) => {
139
+ if (link.type === COMMENT_LINK) {
140
+ link.srcObj = this.getComment(link.srcNodeId);
141
+ link.trgNode = this.getNode(link.trgNodeId);
142
+
143
+ } else {
144
+ link.srcObj = this.getNode(link.srcNodeId);
145
+ link.trgNode = this.getNode(link.trgNodeId);
146
+
147
+ if (link.srcObj) {
148
+ this.setOutputPortConnected(link.srcObj, link.srcNodePortId);
149
+ }
150
+ if (link.trgNode) {
151
+ this.setInputPortConnected(link.trgNode, link.trgNodePortId);
152
+ }
153
+ }
154
+ });
155
+ return pipeline;
156
+ }
157
+
158
+ // Sets the isConnected property of all ports in the pipeline to false.
159
+ setAllPortsDisconnected(pipeline) {
160
+ pipeline.nodes.forEach((n) => {
161
+ if (n.inputs) {
162
+ n.inputs.forEach((inp) => (inp.isConnected = false));
163
+ }
164
+ if (n.outputs) {
165
+ n.outputs.forEach((out) => (out.isConnected = false));
166
+ }
167
+ });
168
+ }
169
+
170
+ // Sets the isConnected property of the port, identified by inPortId,
171
+ // for the trgNode to true.
172
+ setInputPortConnected(trgNode, inPortId) {
173
+ const portId = inPortId || CanvasUtils.getDefaultInputPortId(trgNode);
174
+ if (trgNode.inputs) {
175
+ trgNode.inputs.forEach((inp) => {
176
+ if (inp.id === portId) {
177
+ inp.isConnected = true;
178
+ }
179
+ });
180
+ }
181
+ }
182
+
183
+ // Sets the isConnected property of the port, identified by outPortId,
184
+ // for the srcNode to true.
185
+ setOutputPortConnected(srcNode, outPortId) {
186
+ const portId = outPortId || CanvasUtils.getDefaultOutputPortId(srcNode);
187
+ if (srcNode.outputs) {
188
+ srcNode.outputs.forEach((out) => {
189
+ if (out.id === portId) {
190
+ out.isConnected = true;
191
+ }
192
+ });
193
+ }
194
+ }
195
+
196
+ // Returns an object where each element in the array provided is indexed by
197
+ // the id property of the element.
198
+ getMappedArray(array) {
199
+ return array.reduce((map, o) => { map[o.id] = o; return map; }, {});
200
+ }
201
+ }