blockly 7.20211209.4 → 8.0.1

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 (231) hide show
  1. package/blockly.d.ts +18963 -18432
  2. package/blockly.min.js +5 -4
  3. package/blockly_compressed.js +4 -3
  4. package/blockly_compressed.js.map +1 -1
  5. package/blocks/blocks.js +47 -0
  6. package/blocks/colour.js +13 -3
  7. package/blocks/lists.js +22 -13
  8. package/blocks/logic.js +13 -3
  9. package/blocks/loops.js +24 -11
  10. package/blocks/math.js +12 -3
  11. package/blocks/procedures.js +45 -32
  12. package/blocks/text.js +22 -13
  13. package/blocks/variables.js +14 -3
  14. package/blocks/variables_dynamic.js +13 -3
  15. package/blocks_compressed.js +1 -1
  16. package/blocks_compressed.js.map +1 -1
  17. package/core/block.js +1869 -1814
  18. package/core/block_drag_surface.js +201 -200
  19. package/core/block_dragger.js +377 -373
  20. package/core/block_svg.js +1593 -1479
  21. package/core/blockly.js +8 -22
  22. package/core/blocks.js +9 -2
  23. package/core/browser_events.js +22 -5
  24. package/core/bubble.js +841 -797
  25. package/core/bubble_dragger.js +213 -206
  26. package/core/bump_objects.js +2 -2
  27. package/core/clipboard.js +9 -9
  28. package/core/comment.js +353 -332
  29. package/core/common.js +46 -17
  30. package/core/component_manager.js +181 -174
  31. package/core/config.js +87 -0
  32. package/core/connection.js +595 -584
  33. package/core/connection_checker.js +242 -244
  34. package/core/connection_db.js +235 -230
  35. package/core/contextmenu.js +9 -6
  36. package/core/contextmenu_items.js +1 -2
  37. package/core/contextmenu_registry.js +93 -89
  38. package/core/css.js +474 -474
  39. package/core/delete_area.js +45 -42
  40. package/core/drag_target.js +57 -56
  41. package/core/dropdowndiv.js +153 -163
  42. package/core/events/events.js +2 -2
  43. package/core/events/events_abstract.js +89 -77
  44. package/core/events/events_block_base.js +37 -36
  45. package/core/events/events_block_change.js +130 -124
  46. package/core/events/events_block_create.js +73 -71
  47. package/core/events/events_block_delete.js +84 -82
  48. package/core/events/events_block_drag.js +50 -49
  49. package/core/events/events_block_move.js +147 -140
  50. package/core/events/events_bubble_open.js +51 -50
  51. package/core/events/events_click.js +48 -44
  52. package/core/events/events_comment_base.js +72 -69
  53. package/core/events/events_comment_change.js +63 -61
  54. package/core/events/events_comment_create.js +44 -42
  55. package/core/events/events_comment_delete.js +42 -40
  56. package/core/events/events_comment_move.js +106 -104
  57. package/core/events/events_marker_move.js +65 -64
  58. package/core/events/events_selected.js +46 -45
  59. package/core/events/events_theme_change.js +36 -35
  60. package/core/events/events_toolbox_item_select.js +46 -45
  61. package/core/events/events_trashcan_open.js +37 -36
  62. package/core/events/events_ui.js +47 -46
  63. package/core/events/events_ui_base.js +30 -29
  64. package/core/events/events_var_base.js +37 -36
  65. package/core/events/events_var_create.js +50 -48
  66. package/core/events/events_var_delete.js +50 -48
  67. package/core/events/events_var_rename.js +51 -49
  68. package/core/events/events_viewport.js +66 -65
  69. package/core/events/utils.js +29 -14
  70. package/core/events/workspace_events.js +49 -55
  71. package/core/extensions.js +4 -3
  72. package/core/field.js +1061 -997
  73. package/core/field_angle.js +462 -442
  74. package/core/field_checkbox.js +194 -182
  75. package/core/field_colour.js +519 -505
  76. package/core/field_dropdown.js +617 -598
  77. package/core/field_image.js +229 -220
  78. package/core/field_label.js +102 -91
  79. package/core/field_label_serializable.js +42 -41
  80. package/core/field_multilineinput.js +372 -358
  81. package/core/field_number.js +272 -253
  82. package/core/field_textinput.js +499 -467
  83. package/core/field_variable.js +458 -420
  84. package/core/flyout_base.js +1005 -952
  85. package/core/flyout_button.js +277 -260
  86. package/core/flyout_horizontal.js +304 -302
  87. package/core/flyout_metrics_manager.js +64 -64
  88. package/core/flyout_vertical.js +306 -300
  89. package/core/generator.js +459 -446
  90. package/core/gesture.js +829 -813
  91. package/core/grid.js +166 -163
  92. package/core/icon.js +168 -159
  93. package/core/inject.js +7 -5
  94. package/core/input.js +257 -248
  95. package/core/insertion_marker_manager.js +655 -624
  96. package/core/internal_constants.js +0 -129
  97. package/core/keyboard_nav/ast_node.js +605 -596
  98. package/core/keyboard_nav/basic_cursor.js +166 -165
  99. package/core/keyboard_nav/cursor.js +99 -97
  100. package/core/keyboard_nav/marker.js +83 -79
  101. package/core/keyboard_nav/tab_navigate_cursor.js +18 -23
  102. package/core/marker_manager.js +153 -141
  103. package/core/menu.js +377 -372
  104. package/core/menuitem.js +223 -217
  105. package/core/metrics_manager.js +403 -390
  106. package/core/mutator.js +468 -437
  107. package/core/names.js +229 -188
  108. package/core/options.js +290 -284
  109. package/core/procedures.js +29 -17
  110. package/core/registry.js +19 -16
  111. package/core/rendered_connection.js +482 -463
  112. package/core/renderers/common/block_rendering.js +9 -3
  113. package/core/renderers/common/constants.js +1119 -1112
  114. package/core/renderers/common/debug.js +14 -0
  115. package/core/renderers/common/debugger.js +338 -316
  116. package/core/renderers/common/drawer.js +380 -370
  117. package/core/renderers/common/i_path_object.js +2 -2
  118. package/core/renderers/common/info.js +626 -618
  119. package/core/renderers/common/marker_svg.js +579 -541
  120. package/core/renderers/common/path_object.js +203 -200
  121. package/core/renderers/common/renderer.js +220 -218
  122. package/core/renderers/geras/constants.js +36 -36
  123. package/core/renderers/geras/drawer.js +155 -147
  124. package/core/renderers/geras/highlight_constants.js +244 -238
  125. package/core/renderers/geras/highlighter.js +231 -179
  126. package/core/renderers/geras/info.js +392 -369
  127. package/core/renderers/geras/measurables/inline_input.js +25 -19
  128. package/core/renderers/geras/measurables/statement_input.js +23 -17
  129. package/core/renderers/geras/path_object.js +106 -121
  130. package/core/renderers/geras/renderer.js +96 -98
  131. package/core/renderers/measurables/base.js +30 -18
  132. package/core/renderers/measurables/bottom_row.js +83 -80
  133. package/core/renderers/measurables/connection.js +22 -15
  134. package/core/renderers/measurables/external_value_input.js +35 -22
  135. package/core/renderers/measurables/field.js +35 -20
  136. package/core/renderers/measurables/hat.js +18 -13
  137. package/core/renderers/measurables/icon.js +24 -17
  138. package/core/renderers/measurables/in_row_spacer.js +15 -13
  139. package/core/renderers/measurables/inline_input.js +43 -33
  140. package/core/renderers/measurables/input_connection.js +41 -28
  141. package/core/renderers/measurables/input_row.js +50 -44
  142. package/core/renderers/measurables/jagged_edge.js +14 -12
  143. package/core/renderers/measurables/next_connection.js +16 -14
  144. package/core/renderers/measurables/output_connection.js +26 -20
  145. package/core/renderers/measurables/previous_connection.js +16 -15
  146. package/core/renderers/measurables/round_corner.js +20 -18
  147. package/core/renderers/measurables/row.js +184 -168
  148. package/core/renderers/measurables/spacer_row.js +38 -23
  149. package/core/renderers/measurables/square_corner.js +18 -16
  150. package/core/renderers/measurables/statement_input.js +23 -20
  151. package/core/renderers/measurables/top_row.js +88 -85
  152. package/core/renderers/minimalist/constants.js +8 -7
  153. package/core/renderers/minimalist/drawer.js +11 -10
  154. package/core/renderers/minimalist/info.js +18 -18
  155. package/core/renderers/minimalist/renderer.js +40 -39
  156. package/core/renderers/thrasos/info.js +258 -248
  157. package/core/renderers/thrasos/renderer.js +20 -20
  158. package/core/renderers/zelos/constants.js +898 -873
  159. package/core/renderers/zelos/drawer.js +186 -169
  160. package/core/renderers/zelos/info.js +502 -479
  161. package/core/renderers/zelos/marker_svg.js +129 -115
  162. package/core/renderers/zelos/measurables/bottom_row.js +31 -30
  163. package/core/renderers/zelos/measurables/inputs.js +22 -21
  164. package/core/renderers/zelos/measurables/row_elements.js +14 -13
  165. package/core/renderers/zelos/measurables/top_row.js +34 -33
  166. package/core/renderers/zelos/path_object.js +181 -180
  167. package/core/renderers/zelos/renderer.js +91 -92
  168. package/core/scrollbar.js +759 -713
  169. package/core/scrollbar_pair.js +250 -245
  170. package/core/serialization/blocks.js +26 -10
  171. package/core/serialization/workspaces.js +3 -2
  172. package/core/shortcut_registry.js +286 -277
  173. package/core/sprites.js +31 -0
  174. package/core/theme.js +135 -141
  175. package/core/theme_manager.js +147 -143
  176. package/core/toolbox/category.js +602 -576
  177. package/core/toolbox/collapsible_category.js +226 -227
  178. package/core/toolbox/separator.js +70 -61
  179. package/core/toolbox/toolbox.js +934 -927
  180. package/core/toolbox/toolbox_item.js +115 -99
  181. package/core/tooltip.js +108 -35
  182. package/core/touch.js +8 -3
  183. package/core/touch_gesture.js +254 -251
  184. package/core/trashcan.js +606 -595
  185. package/core/utils/coordinate.js +97 -95
  186. package/core/utils/dom.js +2 -2
  187. package/core/utils/global.js +2 -0
  188. package/core/utils/rect.js +41 -37
  189. package/core/utils/sentinel.js +25 -0
  190. package/core/utils/size.js +30 -27
  191. package/core/utils/svg.js +18 -16
  192. package/core/variable_map.js +325 -341
  193. package/core/variable_model.js +55 -54
  194. package/core/variables.js +9 -2
  195. package/core/variables_dynamic.js +3 -1
  196. package/core/warning.js +126 -120
  197. package/core/widgetdiv.js +4 -4
  198. package/core/workspace.js +685 -664
  199. package/core/workspace_audio.js +124 -118
  200. package/core/workspace_comment.js +308 -298
  201. package/core/workspace_comment_svg.js +1029 -951
  202. package/core/workspace_drag_surface_svg.js +147 -140
  203. package/core/workspace_dragger.js +70 -71
  204. package/core/workspace_svg.js +2322 -2297
  205. package/core/xml.js +30 -20
  206. package/core/zoom_controls.js +431 -439
  207. package/generators/dart/colour.js +56 -64
  208. package/generators/dart/lists.js +61 -50
  209. package/generators/dart/math.js +160 -148
  210. package/generators/dart/text.js +83 -61
  211. package/generators/javascript/colour.js +37 -34
  212. package/generators/javascript/lists.js +50 -43
  213. package/generators/javascript/math.js +123 -139
  214. package/generators/javascript/text.js +67 -81
  215. package/generators/lua/colour.js +25 -23
  216. package/generators/lua/lists.js +97 -69
  217. package/generators/lua/logic.js +1 -2
  218. package/generators/lua/math.js +182 -144
  219. package/generators/lua/text.js +116 -99
  220. package/generators/php/colour.js +38 -32
  221. package/generators/php/lists.js +109 -89
  222. package/generators/php/math.js +90 -81
  223. package/generators/php/text.js +63 -61
  224. package/generators/python/colour.js +18 -18
  225. package/generators/python/lists.js +38 -30
  226. package/generators/python/loops.js +12 -8
  227. package/generators/python/math.js +104 -106
  228. package/generators/python/text.js +34 -30
  229. package/msg/smn.js +436 -0
  230. package/package.json +7 -6
  231. package/blocks/all.js +0 -23
@@ -16,13 +16,16 @@
16
16
  goog.module('Blockly.geras.Drawer');
17
17
 
18
18
  const debug = goog.require('Blockly.blockRendering.debug');
19
- const object = goog.require('Blockly.utils.object');
20
19
  const svgPaths = goog.require('Blockly.utils.svgPaths');
21
20
  /* eslint-disable-next-line no-unused-vars */
22
21
  const {BlockSvg} = goog.requireType('Blockly.BlockSvg');
22
+ /* eslint-disable-next-line no-unused-vars */
23
+ const {ConstantProvider} = goog.requireType('Blockly.geras.ConstantProvider');
23
24
  const {Drawer: BaseDrawer} = goog.require('Blockly.blockRendering.Drawer');
24
25
  const {Highlighter} = goog.require('Blockly.geras.Highlighter');
25
26
  /* eslint-disable-next-line no-unused-vars */
27
+ const {InlineInput} = goog.require('Blockly.geras.InlineInput');
28
+ /* eslint-disable-next-line no-unused-vars */
26
29
  const {PathObject} = goog.requireType('Blockly.geras.PathObject');
27
30
  /* eslint-disable-next-line no-unused-vars */
28
31
  const {RenderInfo} = goog.requireType('Blockly.geras.RenderInfo');
@@ -30,183 +33,188 @@ const {RenderInfo} = goog.requireType('Blockly.geras.RenderInfo');
30
33
 
31
34
  /**
32
35
  * An object that draws a block based on the given rendering information.
33
- * @param {!BlockSvg} block The block to render.
34
- * @param {!RenderInfo} info An object containing all
35
- * information needed to render this block.
36
- * @package
37
- * @constructor
38
36
  * @extends {BaseDrawer}
39
37
  * @alias Blockly.geras.Drawer
40
38
  */
41
- const Drawer = function(block, info) {
42
- Drawer.superClass_.constructor.call(this, block, info);
43
- // Unlike Thrasos, Geras has highlights and drop shadows.
44
- this.highlighter_ = new Highlighter(info);
45
- };
46
- object.inherits(Drawer, BaseDrawer);
47
-
48
- /**
49
- * @override
50
- */
51
- Drawer.prototype.draw = function() {
52
- this.hideHiddenIcons_();
53
- this.drawOutline_();
54
- this.drawInternals_();
55
-
56
- const pathObject =
57
- /** @type {!PathObject} */ (this.block_.pathObject);
58
- pathObject.setPath(this.outlinePath_ + '\n' + this.inlinePath_);
59
- pathObject.setHighlightPath(this.highlighter_.getPath());
60
- if (this.info_.RTL) {
61
- pathObject.flipRTL();
39
+ class Drawer extends BaseDrawer {
40
+ /**
41
+ * @param {!BlockSvg} block The block to render.
42
+ * @param {!RenderInfo} info An object containing all
43
+ * information needed to render this block.
44
+ * @package
45
+ */
46
+ constructor(block, info) {
47
+ super(block, info);
48
+ // Unlike Thrasos, Geras has highlights and drop shadows.
49
+ this.highlighter_ = new Highlighter(info);
50
+
51
+ /** @type {!ConstantProvider} */
52
+ this.constants_;
62
53
  }
63
- if (debug.isDebuggerEnabled()) {
64
- this.block_.renderingDebugger.drawDebug(this.block_, this.info_);
54
+
55
+ /**
56
+ * @override
57
+ */
58
+ draw() {
59
+ this.hideHiddenIcons_();
60
+ this.drawOutline_();
61
+ this.drawInternals_();
62
+
63
+ const pathObject =
64
+ /** @type {!PathObject} */ (this.block_.pathObject);
65
+ pathObject.setPath(this.outlinePath_ + '\n' + this.inlinePath_);
66
+ pathObject.setHighlightPath(this.highlighter_.getPath());
67
+ if (this.info_.RTL) {
68
+ pathObject.flipRTL();
69
+ }
70
+ if (debug.isDebuggerEnabled()) {
71
+ this.block_.renderingDebugger.drawDebug(this.block_, this.info_);
72
+ }
73
+ this.recordSizeOnBlock_();
65
74
  }
66
- this.recordSizeOnBlock_();
67
- };
68
75
 
69
- /**
70
- * @override
71
- */
72
- Drawer.prototype.drawTop_ = function() {
73
- this.highlighter_.drawTopCorner(this.info_.topRow);
74
- this.highlighter_.drawRightSideRow(this.info_.topRow);
76
+ /**
77
+ * @override
78
+ */
79
+ drawTop_() {
80
+ this.highlighter_.drawTopCorner(this.info_.topRow);
81
+ this.highlighter_.drawRightSideRow(this.info_.topRow);
75
82
 
76
- Drawer.superClass_.drawTop_.call(this);
77
- };
83
+ super.drawTop_();
84
+ }
78
85
 
79
- /**
80
- * @override
81
- */
82
- Drawer.prototype.drawJaggedEdge_ = function(row) {
83
- this.highlighter_.drawJaggedEdge_(row);
86
+ /**
87
+ * @override
88
+ */
89
+ drawJaggedEdge_(row) {
90
+ this.highlighter_.drawJaggedEdge_(row);
84
91
 
85
- Drawer.superClass_.drawJaggedEdge_.call(this, row);
86
- };
92
+ super.drawJaggedEdge_(row);
93
+ }
87
94
 
88
- /**
89
- * @override
90
- */
91
- Drawer.prototype.drawValueInput_ = function(row) {
92
- this.highlighter_.drawValueInput(row);
95
+ /**
96
+ * @override
97
+ */
98
+ drawValueInput_(row) {
99
+ this.highlighter_.drawValueInput(row);
93
100
 
94
- Drawer.superClass_.drawValueInput_.call(this, row);
95
- };
101
+ super.drawValueInput_(row);
102
+ }
96
103
 
97
- /**
98
- * @override
99
- */
100
- Drawer.prototype.drawStatementInput_ = function(row) {
101
- this.highlighter_.drawStatementInput(row);
104
+ /**
105
+ * @override
106
+ */
107
+ drawStatementInput_(row) {
108
+ this.highlighter_.drawStatementInput(row);
102
109
 
103
- Drawer.superClass_.drawStatementInput_.call(this, row);
104
- };
110
+ super.drawStatementInput_(row);
111
+ }
105
112
 
106
- /**
107
- * @override
108
- */
109
- Drawer.prototype.drawRightSideRow_ = function(row) {
110
- this.highlighter_.drawRightSideRow(row);
113
+ /**
114
+ * @override
115
+ */
116
+ drawRightSideRow_(row) {
117
+ this.highlighter_.drawRightSideRow(row);
111
118
 
112
- this.outlinePath_ += svgPaths.lineOnAxis('H', row.xPos + row.width) +
113
- svgPaths.lineOnAxis('V', row.yPos + row.height);
114
- };
119
+ this.outlinePath_ += svgPaths.lineOnAxis('H', row.xPos + row.width) +
120
+ svgPaths.lineOnAxis('V', row.yPos + row.height);
121
+ }
115
122
 
116
- /**
117
- * @override
118
- */
119
- Drawer.prototype.drawBottom_ = function() {
120
- this.highlighter_.drawBottomRow(this.info_.bottomRow);
123
+ /**
124
+ * @override
125
+ */
126
+ drawBottom_() {
127
+ this.highlighter_.drawBottomRow(this.info_.bottomRow);
121
128
 
122
- Drawer.superClass_.drawBottom_.call(this);
123
- };
129
+ super.drawBottom_();
130
+ }
124
131
 
125
- /**
126
- * Add steps for the left side of the block, which may include an output
127
- * connection
128
- * @protected
129
- * @override
130
- */
131
- Drawer.prototype.drawLeft_ = function() {
132
- this.highlighter_.drawLeft();
132
+ /**
133
+ * Add steps for the left side of the block, which may include an output
134
+ * connection
135
+ * @protected
136
+ * @override
137
+ */
138
+ drawLeft_() {
139
+ this.highlighter_.drawLeft();
133
140
 
134
- Drawer.superClass_.drawLeft_.call(this);
135
- };
141
+ super.drawLeft_();
142
+ }
136
143
 
137
- /**
138
- * @override
139
- */
140
- Drawer.prototype.drawInlineInput_ = function(input) {
141
- this.highlighter_.drawInlineInput(input);
144
+ /**
145
+ * @override
146
+ */
147
+ drawInlineInput_(input) {
148
+ this.highlighter_.drawInlineInput(/** @type {!InlineInput} */ (input));
142
149
 
143
- Drawer.superClass_.drawInlineInput_.call(this, input);
144
- };
150
+ super.drawInlineInput_(input);
151
+ }
145
152
 
146
- /**
147
- * @override
148
- */
149
- Drawer.prototype.positionInlineInputConnection_ = function(input) {
150
- const yPos = input.centerline - input.height / 2;
151
- // Move the connection.
152
- if (input.connectionModel) {
153
- // xPos already contains info about startX
154
- let connX =
155
- input.xPos + input.connectionWidth + this.constants_.DARK_PATH_OFFSET;
156
- if (this.info_.RTL) {
157
- connX *= -1;
153
+ /**
154
+ * @override
155
+ */
156
+ positionInlineInputConnection_(input) {
157
+ const yPos = input.centerline - input.height / 2;
158
+ // Move the connection.
159
+ if (input.connectionModel) {
160
+ // xPos already contains info about startX
161
+ let connX =
162
+ input.xPos + input.connectionWidth + this.constants_.DARK_PATH_OFFSET;
163
+ if (this.info_.RTL) {
164
+ connX *= -1;
165
+ }
166
+ input.connectionModel.setOffsetInBlock(
167
+ connX,
168
+ yPos + input.connectionOffsetY + this.constants_.DARK_PATH_OFFSET);
158
169
  }
159
- input.connectionModel.setOffsetInBlock(
160
- connX,
161
- yPos + input.connectionOffsetY + this.constants_.DARK_PATH_OFFSET);
162
170
  }
163
- };
164
171
 
165
- /**
166
- * @override
167
- */
168
- Drawer.prototype.positionStatementInputConnection_ = function(row) {
169
- const input = row.getLastInput();
170
- if (input.connectionModel) {
171
- let connX = row.xPos + row.statementEdge + input.notchOffset;
172
- if (this.info_.RTL) {
173
- connX *= -1;
174
- } else {
175
- connX += this.constants_.DARK_PATH_OFFSET;
172
+ /**
173
+ * @override
174
+ */
175
+ positionStatementInputConnection_(row) {
176
+ const input = row.getLastInput();
177
+ if (input.connectionModel) {
178
+ let connX = row.xPos + row.statementEdge + input.notchOffset;
179
+ if (this.info_.RTL) {
180
+ connX *= -1;
181
+ } else {
182
+ connX += this.constants_.DARK_PATH_OFFSET;
183
+ }
184
+ input.connectionModel.setOffsetInBlock(
185
+ connX, row.yPos + this.constants_.DARK_PATH_OFFSET);
176
186
  }
177
- input.connectionModel.setOffsetInBlock(
178
- connX, row.yPos + this.constants_.DARK_PATH_OFFSET);
179
187
  }
180
- };
181
188
 
182
- /**
183
- * @override
184
- */
185
- Drawer.prototype.positionExternalValueConnection_ = function(row) {
186
- const input = row.getLastInput();
187
- if (input.connectionModel) {
188
- let connX = row.xPos + row.width + this.constants_.DARK_PATH_OFFSET;
189
- if (this.info_.RTL) {
190
- connX *= -1;
189
+ /**
190
+ * @override
191
+ */
192
+ positionExternalValueConnection_(row) {
193
+ const input = row.getLastInput();
194
+ if (input.connectionModel) {
195
+ let connX = row.xPos + row.width + this.constants_.DARK_PATH_OFFSET;
196
+ if (this.info_.RTL) {
197
+ connX *= -1;
198
+ }
199
+ input.connectionModel.setOffsetInBlock(connX, row.yPos);
191
200
  }
192
- input.connectionModel.setOffsetInBlock(connX, row.yPos);
193
201
  }
194
- };
195
202
 
196
- /**
197
- * @override
198
- */
199
- Drawer.prototype.positionNextConnection_ = function() {
200
- const bottomRow = this.info_.bottomRow;
201
-
202
- if (bottomRow.connection) {
203
- const connInfo = bottomRow.connection;
204
- const x = connInfo.xPos; // Already contains info about startX.
205
- const connX =
206
- (this.info_.RTL ? -x : x) + (this.constants_.DARK_PATH_OFFSET / 2);
207
- connInfo.connectionModel.setOffsetInBlock(
208
- connX, bottomRow.baseline + this.constants_.DARK_PATH_OFFSET);
203
+ /**
204
+ * @override
205
+ */
206
+ positionNextConnection_() {
207
+ const bottomRow = this.info_.bottomRow;
208
+
209
+ if (bottomRow.connection) {
210
+ const connInfo = bottomRow.connection;
211
+ const x = connInfo.xPos; // Already contains info about startX.
212
+ const connX =
213
+ (this.info_.RTL ? -x : x) + (this.constants_.DARK_PATH_OFFSET / 2);
214
+ connInfo.connectionModel.setOffsetInBlock(
215
+ connX, bottomRow.baseline + this.constants_.DARK_PATH_OFFSET);
216
+ }
209
217
  }
210
- };
218
+ }
211
219
 
212
220
  exports.Drawer = Drawer;