@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
@@ -640,7 +640,7 @@ $link-highlight-color: $support-04;
640
640
  }
641
641
  .d3-comment-entry {
642
642
  background-color: $background-color;
643
- color: $gray-100;
643
+ color: $text-color;
644
644
  }
645
645
  }
646
646
 
@@ -2773,7 +2773,7 @@ export default class SVGCanvasRenderer {
2773
2773
  addContextToolbar(d3Event, d, objType) {
2774
2774
  if (!this.isSizing() && !this.isDragging() &&
2775
2775
  !this.svgCanvasTextArea.isEditingText() && !CanvasUtils.isSuperBindingNode(d)) {
2776
- this.canvasController.setMouseInObject(true);
2776
+ this.canvasController.setMouseInObject(d.id);
2777
2777
  let pos = this.getContextToolbarPos(objType, d);
2778
2778
  pos = this.zoomUtils.unTransformPos(pos);
2779
2779
  this.openContextMenu(d3Event, objType, d, null, pos);
@@ -2781,7 +2781,7 @@ export default class SVGCanvasRenderer {
2781
2781
  }
2782
2782
 
2783
2783
  removeContextToolbar() {
2784
- this.canvasController.setMouseInObject(false);
2784
+ this.canvasController.setMouseInObject(null);
2785
2785
  if (this.canvasController.isContextMenuDisplayed()) {
2786
2786
  setTimeout(() => this.canvasController.closeContextToolbar(), 200);
2787
2787
  }
@@ -2974,6 +2974,8 @@ export default class SVGCanvasRenderer {
2974
2974
 
2975
2975
  }
2976
2976
 
2977
+ // Opens either the context menu or the context toolbar depending on which is
2978
+ // currently enabled.
2977
2979
  openContextMenu(d3Event, type, d, port, pos) {
2978
2980
  CanvasUtils.stopPropagationAndPreventDefault(d3Event); // Stop the browser context menu appearing
2979
2981
  this.canvasController.contextMenuHandler({
@@ -2991,6 +2993,8 @@ export default class SVGCanvasRenderer {
2991
2993
  zoom: this.zoomUtils.getZoomScale() });
2992
2994
  }
2993
2995
 
2996
+ // Closes the conetext menu if open. Called by various drag utility
2997
+ // classes.
2994
2998
  closeContextMenuIfOpen() {
2995
2999
  if (this.canvasController.isContextMenuDisplayed()) {
2996
3000
  this.canvasController.closeContextMenu();
@@ -168,12 +168,19 @@ export default class SVGCanvasUtilsDragDetLink {
168
168
  // If editSubType is set the user did a gesture that requires a change
169
169
  // to the object model.
170
170
  if (editSubType) {
171
- this.ren.canvasController.editActionHandler({
171
+ const success = this.ren.canvasController.editActionHandler({
172
172
  editType: "updateLink",
173
173
  editSubType: editSubType,
174
174
  editSource: "canvas",
175
175
  newLink: newLink,
176
176
  pipelineId: this.ren.activePipeline.id });
177
+
178
+ // The call to editActionHandler might "fail" if the host app
179
+ // uses beforeEditActionHandler to cancel the edit action. In
180
+ // this case, we snap the link back to its old position.
181
+ if (!success) {
182
+ this.snapBackOldLink(draggingLinkData.oldLink);
183
+ }
177
184
  // If editSubType is null, the user performed a gesture which should
178
185
  // not be executed as an action so draw the link back in its old position.
179
186
  } else {
@@ -559,7 +559,7 @@ export default class SVGCanvasUtilsDragNewLink {
559
559
  }
560
560
 
561
561
  // Switches on or off node highlighting depending on whether a node is
562
- // close to teh new link being dragged.
562
+ // close to the new link being dragged.
563
563
  setNewLinkOverNode(d3Event) {
564
564
  const nodeNearMouse = this.ren.getNodeNearMousePos(d3Event, this.ren.canvasLayout.nodeProximity);
565
565
  const highlightState = nodeNearMouse && this.isNewLinkAllowedToNode(nodeNearMouse);
@@ -21,7 +21,6 @@
21
21
  }
22
22
  }
23
23
  .toolbar-popover-list {
24
- top: $spacing-07;
25
24
  right: 0;
26
25
  }
27
26
  }
@@ -24,12 +24,11 @@ $properties-modal-buttons-height: 64px;
24
24
  left: 0;
25
25
  right: 0;
26
26
  bottom: 0;
27
- background-color: $text-01;
27
+ background-color: $overlay-01;
28
28
  z-index: 1000;
29
29
  cursor: default;
30
30
  &.show {
31
31
  display: block;
32
- opacity: 0.5;
33
32
  }
34
33
  }
35
34
 
@@ -81,6 +81,7 @@ const ControlType = {
81
81
  DATEFIELD: "datefield",
82
82
  DATEPICKER: "datepicker",
83
83
  DATEPICKERRANGE: "datepickerRange",
84
+ SLIDER: "slider",
84
85
  TIMEFIELD: "timefield",
85
86
  TIMESTAMP: "timestampfield",
86
87
  CHECKBOX: "checkbox",
@@ -48,6 +48,7 @@ import StructureEditorControl from "./structureeditor";
48
48
  import StructureTableControl from "./structuretable";
49
49
  import StructurelisteditorControl from "./structurelisteditor";
50
50
  import ReadonlyTableControl from "./readonlytable";
51
+ import Slider from "./slider";
51
52
 
52
53
  import ControlItem from "./../components/control-item";
53
54
  import ActionFactory from "./../actions/action-factory.js";
@@ -82,7 +83,8 @@ const accessibleControls = [
82
83
  ControlType.ONEOFSELECT,
83
84
  ControlType.MULTISELECT,
84
85
  ControlType.SELECTSCHEMA,
85
- ControlType.SELECTCOLUMN
86
+ ControlType.SELECTCOLUMN,
87
+ ControlType.SLIDER
86
88
  ];
87
89
 
88
90
  const tableControls = [
@@ -337,6 +339,9 @@ export default class ControlFactory {
337
339
  rightFlyout={this.rightFlyout}
338
340
  />);
339
341
  break;
342
+ case (ControlType.SLIDER):
343
+ createdControl = (<Slider {...props} />);
344
+ break;
340
345
  default:
341
346
  createdControl = (<ReadonlyControl {...props} />);
342
347
  }
@@ -32,6 +32,7 @@
32
32
  @import "./multiselect/multiselect";
33
33
  @import "./datepicker-range/datepicker-range";
34
34
  @import "./datepicker/datepicker";
35
+ @import "./slider/slider";
35
36
 
36
37
  .properties-ctrl-wrapper {
37
38
  padding-bottom: $spacing-05; // Adds padding to the control
@@ -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.
@@ -31,36 +31,40 @@ export default class ExpressionBuilder extends React.Component {
31
31
  this.onChange = this.onChange.bind(this);
32
32
  this.onBlur = this.onBlur.bind(this);
33
33
  this.onSelectionChange = this.onSelectionChange.bind(this);
34
- this.lastCursorPos = null;
35
-
34
+ this.getCodemirrorState = this.getCodemirrorState.bind(this);
36
35
  }
37
36
 
38
37
  onChange(newValue) {
39
38
  const value = (typeof newValue === "string") ? newValue : newValue.toString();
40
- let cursor = this.editor.getCursor();
39
+ const somethingSelected = this.getCodemirrorState()?.selection.ranges.some((r) => !r.empty);
40
+ let cursor = this.getCodemirrorState()?.selection.main.head;
41
+ if (cursor === 0 && !somethingSelected) { // TODO: Doesn't work when I explicitly set the cursor to 0
42
+ // When nothing selected, set cursor at the end of the line
43
+ this.editor.dispatch({ selection: { anchor: this.getCodemirrorState()?.doc.length } });
44
+ cursor = this.getCodemirrorState()?.selection.main.head;
45
+ this.editor.focus();
46
+ }
41
47
  let selectionOffset = 1;
42
- if (this.editor.somethingSelected()) {
48
+ if (somethingSelected) {
43
49
  selectionOffset = 0;
44
- this.editor.replaceSelection(value);
50
+ this.editor.dispatch(this.getCodemirrorState()?.replaceSelection(value), { scrollIntoView: true });
51
+ this.editor.focus();
45
52
  } else {
46
53
  let buffer = " ";
47
- if (this.lastCursorPos) {
48
- this.editor.setCursor(this.lastCursorPos);
49
- cursor = this.lastCursorPos;
50
- }
51
54
  // if adding to a parenth/bracket/brace expression, no need for space
52
- const charBefore = this.editor.getLine(cursor.line)[cursor.ch - 1];
55
+ const currentLineNumber = this.getCodemirrorState()?.doc.lineAt(this.getCodemirrorState()?.selection.main.head).number;
56
+ const charBefore = this.getCodemirrorState()?.doc.line(currentLineNumber).text[cursor - 1];
53
57
  // edge case of cursor being at line 0, char 0 is still handled here
54
58
  if (["(", "[", "{"].indexOf(charBefore) !== -1) {
55
59
  buffer = "";
56
60
  }
57
- this.editor.replaceSelection(buffer + value);
61
+ this.editor.dispatch(this.getCodemirrorState()?.replaceSelection(buffer + value), { scrollIntoView: true });
62
+ this.editor.focus();
58
63
  }
59
64
  this._setSelection(value, cursor, selectionOffset);
60
65
  // This is needed to generate a render so that the selection will appear.
61
- const exprValue = this.editor.getValue();
66
+ const exprValue = this.getCodemirrorState()?.doc.toString();
62
67
  this.props.controller.updatePropertyValue(this.props.propertyId, exprValue, true);
63
- this.lastCursorPos = this.editor.getCursor();
64
68
  }
65
69
 
66
70
  onSelectionChange(selection) {
@@ -68,9 +72,8 @@ export default class ExpressionBuilder extends React.Component {
68
72
  }
69
73
 
70
74
  onBlur(editor, evt) {
71
- this.lastCursorPos = editor.getCursor();
72
75
  const currentValue = this.props.controller.getPropertyValue(this.props.propertyId);
73
- const newValue = this.editor.getValue();
76
+ const newValue = editor?.viewState?.state?.doc.toString();
74
77
  const skipValidate = this.expressionSelectionPanel && evt && this.expressionSelectionPanel.contains(evt.relatedTarget);
75
78
  // update property value when value is updated OR value is to be validated
76
79
  if (!isEqual(currentValue, newValue) || !skipValidate) {
@@ -78,38 +81,41 @@ export default class ExpressionBuilder extends React.Component {
78
81
  }
79
82
  }
80
83
 
81
- editorDidMount(editor, next) {
82
- this.editor = editor;
84
+ getCodemirrorState() {
85
+ return this.editor?.viewState?.state;
83
86
  }
84
87
 
88
+ editorDidMount(editor) {
89
+ this.editor = editor;
90
+ }
85
91
 
86
92
  _setSelection(value, cursor, selectionOffset) {
87
93
  // first set the selection to the first param holder of new value
88
94
  if (typeof value === "string") {
89
95
  const firstParam = value.indexOf("?");
90
96
  if (firstParam !== -1) {
91
- const selection = { anchor: { line: cursor.line, ch: cursor.ch + firstParam + selectionOffset + 1 },
92
- head: { line: cursor.line, ch: cursor.ch + firstParam + selectionOffset } };
97
+ const selection = { anchor: cursor + firstParam + selectionOffset + 1, head: cursor + firstParam + selectionOffset };
98
+ this.editor.dispatch({ selection: selection });
93
99
  this.onSelectionChange([selection]);
94
100
  return;
95
101
  }
96
102
  }
97
103
  // if the newValue doesn't have a param holder
98
104
  // set it to the first param holder found in the expression
99
- const lineCount = this.editor.lineCount();
105
+ const lineCount = this.getCodemirrorState()?.doc.lines;
100
106
  for (let index = 0; index < lineCount; index++) {
101
- const line = this.editor.getLine(index);
107
+ const line = this.getCodemirrorState()?.doc.line(index + 1).text;
102
108
  const paramOffset = line.indexOf("?");
103
109
  if (paramOffset !== -1) {
104
- const selection = { anchor: { line: index, ch: paramOffset + 1 },
105
- head: { line: index, ch: paramOffset } };
110
+ const selection = { anchor: paramOffset + 1, head: paramOffset };
111
+ this.editor.dispatch({ selection: selection });
106
112
  this.onSelectionChange([selection]);
107
113
  return;
108
114
  }
109
115
  }
110
116
  // if no parameter holders found then set it to end of insert string
111
- const insertSelection = { anchor: { line: cursor.line, ch: cursor.ch + value.length + selectionOffset },
112
- head: { line: cursor.line, ch: cursor.ch + value.length + selectionOffset } };
117
+ const insertSelection = { anchor: this.getCodemirrorState()?.selection.main.anchor,
118
+ head: this.getCodemirrorState()?.selection.main.head };
113
119
  this.onSelectionChange([insertSelection]);
114
120
  return;
115
121
  }