@elyra/canvas 13.41.2 → 13.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 (39) hide show
  1. package/dist/canvas-controller-40365e79.js +2 -0
  2. package/dist/canvas-controller-40365e79.js.map +1 -0
  3. package/dist/canvas-controller-6e8175f3.js +2 -0
  4. package/dist/canvas-controller-6e8175f3.js.map +1 -0
  5. package/dist/{common-canvas-f6aa2d68.js → common-canvas-60e6c495.js} +2 -2
  6. package/dist/common-canvas-60e6c495.js.map +1 -0
  7. package/dist/{common-canvas-76637856.js → common-canvas-c6a5094d.js} +2 -2
  8. package/dist/common-canvas-c6a5094d.js.map +1 -0
  9. package/dist/common-canvas.es.js +1 -1
  10. package/dist/common-canvas.js +1 -1
  11. package/dist/common-properties-2010da23.js +2 -0
  12. package/dist/common-properties-2010da23.js.map +1 -0
  13. package/dist/common-properties-abcfd713.js +2 -0
  14. package/dist/common-properties-abcfd713.js.map +1 -0
  15. package/dist/lib/canvas-controller.es.js +1 -1
  16. package/dist/lib/canvas-controller.js +1 -1
  17. package/dist/lib/canvas.es.js +1 -1
  18. package/dist/lib/canvas.js +1 -1
  19. package/dist/lib/properties.es.js +1 -1
  20. package/dist/lib/properties.js +1 -1
  21. package/package.json +2 -2
  22. package/src/command-actions/arrangeLayoutAction.js +4 -0
  23. package/src/common-canvas/svg-canvas-renderer.js +38 -1
  24. package/src/common-properties/components/wide-flyout/wide-flyout.jsx +10 -6
  25. package/src/object-model/api-pipeline.js +4 -0
  26. package/src/object-model/redux/reducers/canvasinfo.js +1 -0
  27. package/src/object-model/redux/reducers/comments.js +4 -0
  28. package/stats.html +1 -1
  29. package/types/common-properties.d.ts +1 -1
  30. package/dist/canvas-controller-73f1a168.js +0 -2
  31. package/dist/canvas-controller-73f1a168.js.map +0 -1
  32. package/dist/canvas-controller-8093b1c5.js +0 -2
  33. package/dist/canvas-controller-8093b1c5.js.map +0 -1
  34. package/dist/common-canvas-76637856.js.map +0 -1
  35. package/dist/common-canvas-f6aa2d68.js.map +0 -1
  36. package/dist/common-properties-2c1ae93f.js +0 -2
  37. package/dist/common-properties-2c1ae93f.js.map +0 -1
  38. package/dist/common-properties-44874063.js +0 -2
  39. package/dist/common-properties-44874063.js.map +0 -1
@@ -1,2 +1,2 @@
1
- import"../createClass-a140e270.js";import"../en-ba70b655.js";import"../isArrayLikeObject-78364f29.js";import"../common-canvas-utils-99c8d7d1.js";export{C as default}from"../canvas-controller-8093b1c5.js";import"./command-stack.es.js";import"../canvas-logger-3584cb6d.js";import"../defineProperty-f3298a15.js";import"../inherits-860188e5.js";import"../datarecord-metadata-v3-schema-e5869fb9.js";import"uuid";import"redux";import"jsonschema";import"@elyra/pipeline-schemas";import"immutable";
1
+ import"../createClass-a140e270.js";import"../en-ba70b655.js";import"../isArrayLikeObject-78364f29.js";import"../common-canvas-utils-99c8d7d1.js";export{C as default}from"../canvas-controller-6e8175f3.js";import"./command-stack.es.js";import"../canvas-logger-3584cb6d.js";import"../defineProperty-f3298a15.js";import"../inherits-860188e5.js";import"../datarecord-metadata-v3-schema-e5869fb9.js";import"uuid";import"redux";import"jsonschema";import"@elyra/pipeline-schemas";import"immutable";
2
2
  //# sourceMappingURL=canvas-controller.es.js.map
@@ -1,2 +1,2 @@
1
- "use strict";require("../createClass-df7b07d6.js"),require("../en-412ab08a.js"),require("../isArrayLikeObject-9f61d956.js"),require("../common-canvas-utils-0422db0b.js");var e=require("../canvas-controller-73f1a168.js");require("./command-stack.js"),require("../canvas-logger-8c01664d.js"),require("../defineProperty-d68f985b.js"),require("../inherits-74e481d1.js"),require("../datarecord-metadata-v3-schema-e8c37ecf.js"),require("uuid"),require("redux"),require("jsonschema"),require("@elyra/pipeline-schemas"),require("immutable"),module.exports=e.CanvasController;
1
+ "use strict";require("../createClass-df7b07d6.js"),require("../en-412ab08a.js"),require("../isArrayLikeObject-9f61d956.js"),require("../common-canvas-utils-0422db0b.js");var e=require("../canvas-controller-40365e79.js");require("./command-stack.js"),require("../canvas-logger-8c01664d.js"),require("../defineProperty-d68f985b.js"),require("../inherits-74e481d1.js"),require("../datarecord-metadata-v3-schema-e8c37ecf.js"),require("uuid"),require("redux"),require("jsonschema"),require("@elyra/pipeline-schemas"),require("immutable"),module.exports=e.CanvasController;
2
2
  //# sourceMappingURL=canvas-controller.js.map
@@ -1,2 +1,2 @@
1
- export{c as CommonCanvas}from"../common-canvas-f6aa2d68.js";export{C as CanvasController}from"../canvas-controller-8093b1c5.js";import"../createClass-a140e270.js";import"../inherits-860188e5.js";import"react";import"react-redux";import"react-intl";import"../toolbar-ea0499c3.js";import"../common-canvas-utils-99c8d7d1.js";import"../toInteger-a2c772fc.js";import"../isArrayLikeObject-78364f29.js";import"../keyboard-utils-39fd7227.js";import"prop-types";import"../datarecord-metadata-v3-schema-e5869fb9.js";import"../en-ba70b655.js";import"./tooltip.es.js";import"react-portal";import"@carbon/react";import"uuid";import"react-inlinesvg";import"../icon-69d824a6.js";import"../bucket-3-c6b2f22e.js";import"../canvas-logger-3584cb6d.js";import"../context-menu-wrapper-5c84d66f.js";import"../defineProperty-f3298a15.js";import"markdown-it";import"react-dom";import"./command-stack.es.js";import"immutable";import"redux";import"jsonschema";import"@elyra/pipeline-schemas";
1
+ export{c as CommonCanvas}from"../common-canvas-60e6c495.js";export{C as CanvasController}from"../canvas-controller-6e8175f3.js";import"../createClass-a140e270.js";import"../inherits-860188e5.js";import"react";import"react-redux";import"react-intl";import"../toolbar-ea0499c3.js";import"../common-canvas-utils-99c8d7d1.js";import"../toInteger-a2c772fc.js";import"../isArrayLikeObject-78364f29.js";import"../keyboard-utils-39fd7227.js";import"prop-types";import"../datarecord-metadata-v3-schema-e5869fb9.js";import"../en-ba70b655.js";import"./tooltip.es.js";import"react-portal";import"@carbon/react";import"uuid";import"react-inlinesvg";import"../icon-69d824a6.js";import"../bucket-3-c6b2f22e.js";import"../canvas-logger-3584cb6d.js";import"../context-menu-wrapper-5c84d66f.js";import"../defineProperty-f3298a15.js";import"markdown-it";import"react-dom";import"./command-stack.es.js";import"immutable";import"redux";import"jsonschema";import"@elyra/pipeline-schemas";
2
2
  //# sourceMappingURL=canvas.es.js.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../common-canvas-76637856.js"),r=require("../canvas-controller-73f1a168.js");require("../createClass-df7b07d6.js"),require("../inherits-74e481d1.js"),require("react"),require("react-redux"),require("react-intl"),require("../toolbar-f49f9bc4.js"),require("../common-canvas-utils-0422db0b.js"),require("../toInteger-59f8800a.js"),require("../isArrayLikeObject-9f61d956.js"),require("../keyboard-utils-36a4cde5.js"),require("prop-types"),require("../datarecord-metadata-v3-schema-e8c37ecf.js"),require("../en-412ab08a.js"),require("./tooltip.js"),require("react-portal"),require("@carbon/react"),require("uuid"),require("react-inlinesvg"),require("../icon-cd9138da.js"),require("../bucket-3-ce4b6e95.js"),require("../canvas-logger-8c01664d.js"),require("../context-menu-wrapper-0aba15be.js"),require("../defineProperty-d68f985b.js"),require("markdown-it"),require("react-dom"),require("./command-stack.js"),require("immutable"),require("redux"),require("jsonschema"),require("@elyra/pipeline-schemas"),exports.CommonCanvas=e.commonCanvas,exports.CanvasController=r.CanvasController;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../common-canvas-c6a5094d.js"),r=require("../canvas-controller-40365e79.js");require("../createClass-df7b07d6.js"),require("../inherits-74e481d1.js"),require("react"),require("react-redux"),require("react-intl"),require("../toolbar-f49f9bc4.js"),require("../common-canvas-utils-0422db0b.js"),require("../toInteger-59f8800a.js"),require("../isArrayLikeObject-9f61d956.js"),require("../keyboard-utils-36a4cde5.js"),require("prop-types"),require("../datarecord-metadata-v3-schema-e8c37ecf.js"),require("../en-412ab08a.js"),require("./tooltip.js"),require("react-portal"),require("@carbon/react"),require("uuid"),require("react-inlinesvg"),require("../icon-cd9138da.js"),require("../bucket-3-ce4b6e95.js"),require("../canvas-logger-8c01664d.js"),require("../context-menu-wrapper-0aba15be.js"),require("../defineProperty-d68f985b.js"),require("markdown-it"),require("react-dom"),require("./command-stack.js"),require("immutable"),require("redux"),require("jsonschema"),require("@elyra/pipeline-schemas"),exports.CommonCanvas=e.commonCanvas,exports.CanvasController=r.CanvasController;
2
2
  //# sourceMappingURL=canvas.js.map
@@ -1,2 +1,2 @@
1
- export{c as CommonProperties,P as PropertiesController}from"../common-properties-2c1ae93f.js";export{F as FlexibleTable}from"../flexible-table-40613b78.js";export{F as FieldPicker}from"../index-2af83c12.js";export{clem}from"./properties/clem.es.js";export{getPythonHints}from"./properties/getPythonHints.es.js";import"../createClass-a140e270.js";import"../inherits-860188e5.js";import"react";import"../toolbar-ea0499c3.js";import"../common-canvas-utils-99c8d7d1.js";import"../toInteger-a2c772fc.js";import"../isArrayLikeObject-78364f29.js";import"../keyboard-utils-39fd7227.js";import"prop-types";import"../datarecord-metadata-v3-schema-e5869fb9.js";import"../en-ba70b655.js";import"./tooltip.es.js";import"react-portal";import"@carbon/react";import"uuid";import"react-inlinesvg";import"../icon-69d824a6.js";import"../bucket-3-c6b2f22e.js";import"react-intl";import"react-redux";import"../defineProperty-f3298a15.js";import"redux";import"seedrandom";import"./command-stack.es.js";import"immutable";import"date-fns";import"@codemirror/view";import"@codemirror/commands";import"@codemirror/search";import"@codemirror/autocomplete";import"@codemirror/state";import"@codemirror/language";import"@codemirror/lang-python";import"@codemirror/lang-sql";import"@codemirror/lang-javascript";import"@codemirror/lang-json";import"jsonschema";import"@tanstack/react-table";import"@tanstack/react-virtual";import"react-virtualized";import"react-draggable";
1
+ export{c as CommonProperties,P as PropertiesController}from"../common-properties-abcfd713.js";export{F as FlexibleTable}from"../flexible-table-40613b78.js";export{F as FieldPicker}from"../index-2af83c12.js";export{clem}from"./properties/clem.es.js";export{getPythonHints}from"./properties/getPythonHints.es.js";import"../createClass-a140e270.js";import"../inherits-860188e5.js";import"react";import"../toolbar-ea0499c3.js";import"../common-canvas-utils-99c8d7d1.js";import"../toInteger-a2c772fc.js";import"../isArrayLikeObject-78364f29.js";import"../keyboard-utils-39fd7227.js";import"prop-types";import"../datarecord-metadata-v3-schema-e5869fb9.js";import"../en-ba70b655.js";import"./tooltip.es.js";import"react-portal";import"@carbon/react";import"uuid";import"react-inlinesvg";import"../icon-69d824a6.js";import"../bucket-3-c6b2f22e.js";import"react-intl";import"react-redux";import"../defineProperty-f3298a15.js";import"redux";import"seedrandom";import"./command-stack.es.js";import"immutable";import"date-fns";import"@codemirror/view";import"@codemirror/commands";import"@codemirror/search";import"@codemirror/autocomplete";import"@codemirror/state";import"@codemirror/language";import"@codemirror/lang-python";import"@codemirror/lang-sql";import"@codemirror/lang-javascript";import"@codemirror/lang-json";import"jsonschema";import"@tanstack/react-table";import"@tanstack/react-virtual";import"react-virtualized";import"react-draggable";
2
2
  //# sourceMappingURL=properties.es.js.map
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../common-properties-44874063.js"),r=require("../flexible-table-9403ff35.js"),i=require("../index-1fccfdbf.js"),t=require("./properties/clem.js"),o=require("./properties/getPythonHints.js");require("../createClass-df7b07d6.js"),require("../inherits-74e481d1.js"),require("react"),require("../toolbar-f49f9bc4.js"),require("../common-canvas-utils-0422db0b.js"),require("../toInteger-59f8800a.js"),require("../isArrayLikeObject-9f61d956.js"),require("../keyboard-utils-36a4cde5.js"),require("prop-types"),require("../datarecord-metadata-v3-schema-e8c37ecf.js"),require("../en-412ab08a.js"),require("./tooltip.js"),require("react-portal"),require("@carbon/react"),require("uuid"),require("react-inlinesvg"),require("../icon-cd9138da.js"),require("../bucket-3-ce4b6e95.js"),require("react-intl"),require("react-redux"),require("../defineProperty-d68f985b.js"),require("redux"),require("seedrandom"),require("./command-stack.js"),require("immutable"),require("date-fns"),require("@codemirror/view"),require("@codemirror/commands"),require("@codemirror/search"),require("@codemirror/autocomplete"),require("@codemirror/state"),require("@codemirror/language"),require("@codemirror/lang-python"),require("@codemirror/lang-sql"),require("@codemirror/lang-javascript"),require("@codemirror/lang-json"),require("jsonschema"),require("@tanstack/react-table"),require("@tanstack/react-virtual"),require("react-virtualized"),require("react-draggable"),exports.CommonProperties=e.commonProperties,exports.PropertiesController=e.PropertiesController,exports.FlexibleTable=r.FlexibleTable,exports.FieldPicker=i.FieldPicker,exports.clem=t.clem,exports.getPythonHints=o.getPythonHints;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var e=require("../common-properties-2010da23.js"),r=require("../flexible-table-9403ff35.js"),i=require("../index-1fccfdbf.js"),t=require("./properties/clem.js"),o=require("./properties/getPythonHints.js");require("../createClass-df7b07d6.js"),require("../inherits-74e481d1.js"),require("react"),require("../toolbar-f49f9bc4.js"),require("../common-canvas-utils-0422db0b.js"),require("../toInteger-59f8800a.js"),require("../isArrayLikeObject-9f61d956.js"),require("../keyboard-utils-36a4cde5.js"),require("prop-types"),require("../datarecord-metadata-v3-schema-e8c37ecf.js"),require("../en-412ab08a.js"),require("./tooltip.js"),require("react-portal"),require("@carbon/react"),require("uuid"),require("react-inlinesvg"),require("../icon-cd9138da.js"),require("../bucket-3-ce4b6e95.js"),require("react-intl"),require("react-redux"),require("../defineProperty-d68f985b.js"),require("redux"),require("seedrandom"),require("./command-stack.js"),require("immutable"),require("date-fns"),require("@codemirror/view"),require("@codemirror/commands"),require("@codemirror/search"),require("@codemirror/autocomplete"),require("@codemirror/state"),require("@codemirror/language"),require("@codemirror/lang-python"),require("@codemirror/lang-sql"),require("@codemirror/lang-javascript"),require("@codemirror/lang-json"),require("jsonschema"),require("@tanstack/react-table"),require("@tanstack/react-virtual"),require("react-virtualized"),require("react-draggable"),exports.CommonProperties=e.commonProperties,exports.PropertiesController=e.PropertiesController,exports.FlexibleTable=r.FlexibleTable,exports.FieldPicker=i.FieldPicker,exports.clem=t.clem,exports.getPythonHints=o.getPythonHints;
2
2
  //# sourceMappingURL=properties.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@elyra/canvas",
3
- "version": "13.41.2",
3
+ "version": "13.42.0",
4
4
  "description": "Elyra common-canvas",
5
5
  "main": "dist/common-canvas.js",
6
6
  "module": "dist/common-canvas.es.js",
@@ -56,7 +56,7 @@
56
56
  "d3": "7.9.0",
57
57
  "dagre": "^0.8.5",
58
58
  "date-fns": "^2.28.0",
59
- "immutable": "^4.0.0",
59
+ "immutable": "^5.1.5",
60
60
  "jsonschema": "^1.4.0",
61
61
  "lodash": "^4.17.21",
62
62
  "markdown-it": "^14.1.1",
@@ -27,6 +27,9 @@ export default class ArrangeLayoutAction extends Action {
27
27
  // Copy the nodes to remember their original positions.
28
28
  this.existingNodes = this.apiPipeline.getNodes().map((n) => ({ ...n }));
29
29
 
30
+ // Copy the comments to remember their original positions.
31
+ this.existingComments = this.apiPipeline.getComments().map((c) => ({ ...c }));
32
+
30
33
  // Copy the links (including detached links) to remember their original positions.
31
34
  this.existingLinks = this.apiPipeline.getLinks().map((n) => ({ ...n }));
32
35
  }
@@ -38,6 +41,7 @@ export default class ArrangeLayoutAction extends Action {
38
41
 
39
42
  undo() {
40
43
  this.apiPipeline.replaceNodes(this.existingNodes);
44
+ this.apiPipeline.replaceComments(this.existingComments);
41
45
  this.apiPipeline.updateLinks(this.existingLinks);
42
46
  }
43
47
 
@@ -817,6 +817,43 @@ export default class SVGCanvasRenderer {
817
817
  return { x: pos.x + Math.round(svgRect.left), y: pos.y + Math.round(svgRect.top) };
818
818
  }
819
819
 
820
+ // Converts canvas coordinates to screen coordinates.
821
+ // If we're displaying a sub-flow in place, we need to adjust the position
822
+ // to account for the offset of the sub-flow SVG area within the parent canvas.
823
+ // This is done recursively for nested sub-flows.
824
+ convertCanvasCoordsToScreenCoords(pos) {
825
+ let screenPos = this.zoomUtils.unTransformPos(pos);
826
+
827
+ if (this.dispUtils.isDisplayingSubFlowInPlace()) {
828
+ screenPos = this.addParentSupernodeOffset(screenPos);
829
+ }
830
+
831
+ return screenPos;
832
+ }
833
+
834
+ // Recursively adds the parent supernode offset to the position.
835
+ // This handles nested sub-flows by transforming through each parent's zoom level.
836
+ addParentSupernodeOffset(pos) {
837
+ const parentSVGDims = this.getParentSupernodeSVGDimensions();
838
+
839
+ // Add the offset of this sub-flow's SVG area within the parent's canvas (in canvas coordinates)
840
+ const posWithOffset = {
841
+ x: pos.x + parentSVGDims.x_pos,
842
+ y: pos.y + parentSVGDims.y_pos
843
+ };
844
+
845
+ // Transform through the parent's zoom to get to parent's viewport coordinates
846
+ const transformedPos = this.supernodeInfo.renderer.zoomUtils.unTransformPos(posWithOffset);
847
+
848
+ // If the parent renderer is also displaying a sub-flow in place,
849
+ // recursively transform through its parent's zoom
850
+ if (this.supernodeInfo.renderer.dispUtils.isDisplayingSubFlowInPlace()) {
851
+ return this.supernodeInfo.renderer.addParentSupernodeOffset(transformedPos);
852
+ }
853
+
854
+ return transformedPos;
855
+ }
856
+
820
857
  // Creates the div which contains the ghost node for drag and
821
858
  // drop actions from the palette. The way setDragImage is handled in
822
859
  // browsers for HTML drag and drop is very odd since the image has to be
@@ -3500,7 +3537,7 @@ export default class SVGCanvasRenderer {
3500
3537
  let pos = this.getDefaultContextToolbarPos(objType, d, port);
3501
3538
  pos.x = xPos ? pos.x + xPos : pos.x;
3502
3539
  pos.y = yPos ? pos.y + yPos : pos.y;
3503
- pos = this.zoomUtils.unTransformPos(pos);
3540
+ pos = this.convertCanvasCoordsToScreenCoords(pos);
3504
3541
  this.openContextMenu(d3Event, objType, d, port, pos, cause);
3505
3542
  }
3506
3543
  }
@@ -48,11 +48,15 @@ export default class WideFlyout extends Component {
48
48
  return;
49
49
  }
50
50
  if (this.props.show && modal) {
51
- const active = document.activeElement;
52
- // Restore focus if lost due to modal content changes like typing or adding new fields
53
- if (active === document.body || !modal.contains(active)) {
54
- this.focusOnFirstFocusable();
55
- }
51
+ // During render, document.activeElement is document.body temporarily,
52
+ // so we need to wait for last updates before checking focus.
53
+ setTimeout(() => {
54
+ const active = document.activeElement;
55
+ // Restore focus if lost due to modal content changes like typing or adding new fields
56
+ if (active === document.body || !modal.contains(active)) {
57
+ this.focusOnFirstFocusable();
58
+ }
59
+ }, 0);
56
60
  }
57
61
  }
58
62
  componentWillUnmount() {
@@ -67,7 +71,7 @@ export default class WideFlyout extends Component {
67
71
  }
68
72
  return Array.from(
69
73
  modal.querySelectorAll(
70
- "button, a[href], input, select, textarea, [tabindex]:not([tabindex='-1'])"
74
+ "button, a[href], input, select, textarea, [tabindex]:not([tabindex='-1']), [contenteditable='true']"
71
75
  )).filter((el) => el.offsetParent !== null); // Filter out hidden/disabled elements.
72
76
  }
73
77
  // Focus on the first focusable element once modal opens.
@@ -1187,6 +1187,10 @@ export default class APIPipeline {
1187
1187
  this.store.dispatch({ type: "SET_COMMENT_HIGHLIGHT_TEXT", data: { commentIds, highlightText }, pipelineId: this.pipelineId });
1188
1188
  }
1189
1189
 
1190
+ replaceComments(replacementComments) {
1191
+ this.store.dispatch({ type: "REPLACE_COMMENTS", data: replacementComments, pipelineId: this.pipelineId });
1192
+ }
1193
+
1190
1194
  // ---------------------------------------------------------------------------
1191
1195
  // Link methods
1192
1196
  // ---------------------------------------------------------------------------
@@ -159,6 +159,7 @@ export default (state = {}, action) => {
159
159
  case "UPDATE_NODES":
160
160
  case "REPLACE_NODES":
161
161
  case "REPLACE_NODE":
162
+ case "REPLACE_COMMENTS":
162
163
  case "SIZE_AND_POSITION_OBJECTS":
163
164
  case "SET_NODE_PARAMETERS":
164
165
  case "SET_NODE_UI_PARAMETERS":
@@ -222,6 +222,10 @@ export default (state = [], action) => {
222
222
  return comment;
223
223
  });
224
224
 
225
+ case "REPLACE_COMMENTS": {
226
+ return action.data;
227
+ }
228
+
225
229
  default:
226
230
  return state;
227
231
  }