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,7 +16,6 @@
16
16
  goog.module('Blockly.zelos.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');
@@ -27,207 +26,225 @@ const {PathObject} = goog.requireType('Blockly.zelos.PathObject');
27
26
  const {RenderInfo} = goog.requireType('Blockly.zelos.RenderInfo');
28
27
  /* eslint-disable-next-line no-unused-vars */
29
28
  const {Row} = goog.requireType('Blockly.blockRendering.Row');
29
+ /* eslint-disable-next-line no-unused-vars */
30
+ const {SpacerRow} = goog.requireType('Blockly.blockRendering.SpacerRow');
31
+ /* eslint-disable-next-line no-unused-vars */
32
+ const {StatementInput} = goog.requireType('Blockly.zelos.StatementInput');
33
+ const {Types} = goog.require('Blockly.blockRendering.Types');
30
34
 
31
35
 
32
36
  /**
33
37
  * An object that draws a block based on the given rendering information.
34
- * @param {!BlockSvg} block The block to render.
35
- * @param {!RenderInfo} info An object containing all
36
- * information needed to render this block.
37
- * @package
38
- * @constructor
39
38
  * @extends {BaseDrawer}
40
39
  * @alias Blockly.zelos.Drawer
41
40
  */
42
- const Drawer = function(block, info) {
43
- Drawer.superClass_.constructor.call(this, block, info);
44
- };
45
- object.inherits(Drawer, BaseDrawer);
46
-
47
-
48
- /**
49
- * @override
50
- */
51
- Drawer.prototype.draw = function() {
52
- const pathObject =
53
- /** @type {!PathObject} */ (this.block_.pathObject);
54
- pathObject.beginDrawing();
55
- this.hideHiddenIcons_();
56
- this.drawOutline_();
57
- this.drawInternals_();
58
-
59
- pathObject.setPath(this.outlinePath_ + '\n' + this.inlinePath_);
60
- if (this.info_.RTL) {
61
- pathObject.flipRTL();
62
- }
63
- if (debug.isDebuggerEnabled()) {
64
- this.block_.renderingDebugger.drawDebug(this.block_, this.info_);
41
+ class Drawer extends BaseDrawer {
42
+ /**
43
+ * @param {!BlockSvg} block The block to render.
44
+ * @param {!RenderInfo} info An object containing all
45
+ * information needed to render this block.
46
+ * @package
47
+ */
48
+ constructor(block, info) {
49
+ super(block, info);
50
+
51
+ /**
52
+ * @type {!RenderInfo}
53
+ */
54
+ this.info_;
65
55
  }
66
- this.recordSizeOnBlock_();
67
- if (this.info_.outputConnection) {
68
- // Store the output connection shape type for parent blocks to use during
69
- // rendering.
70
- pathObject.outputShapeType = this.info_.outputConnection.shape.type;
71
- }
72
- pathObject.endDrawing();
73
- };
74
56
 
75
- /**
76
- * @override
77
- */
78
- Drawer.prototype.drawOutline_ = function() {
79
- if (this.info_.outputConnection &&
80
- this.info_.outputConnection.isDynamicShape &&
81
- !this.info_.hasStatementInput &&
82
- !this.info_.bottomRow.hasNextConnection) {
83
- this.drawFlatTop_();
84
- this.drawRightDynamicConnection_();
85
- this.drawFlatBottom_();
86
- this.drawLeftDynamicConnection_();
87
- } else {
88
- Drawer.superClass_.drawOutline_.call(this);
57
+ /**
58
+ * @override
59
+ */
60
+ draw() {
61
+ const pathObject =
62
+ /** @type {!PathObject} */ (this.block_.pathObject);
63
+ pathObject.beginDrawing();
64
+ this.hideHiddenIcons_();
65
+ this.drawOutline_();
66
+ this.drawInternals_();
67
+
68
+ pathObject.setPath(this.outlinePath_ + '\n' + this.inlinePath_);
69
+ if (this.info_.RTL) {
70
+ pathObject.flipRTL();
71
+ }
72
+ if (debug.isDebuggerEnabled()) {
73
+ this.block_.renderingDebugger.drawDebug(this.block_, this.info_);
74
+ }
75
+ this.recordSizeOnBlock_();
76
+ if (this.info_.outputConnection) {
77
+ // Store the output connection shape type for parent blocks to use during
78
+ // rendering.
79
+ pathObject.outputShapeType = this.info_.outputConnection.shape.type;
80
+ }
81
+ pathObject.endDrawing();
89
82
  }
90
- };
91
83
 
92
- /**
93
- * @override
94
- */
95
- Drawer.prototype.drawLeft_ = function() {
96
- if (this.info_.outputConnection &&
97
- this.info_.outputConnection.isDynamicShape) {
98
- this.drawLeftDynamicConnection_();
99
- } else {
100
- Drawer.superClass_.drawLeft_.call(this);
84
+ /**
85
+ * @override
86
+ */
87
+ drawOutline_() {
88
+ if (this.info_.outputConnection &&
89
+ this.info_.outputConnection.isDynamicShape &&
90
+ !this.info_.hasStatementInput &&
91
+ !this.info_.bottomRow.hasNextConnection) {
92
+ this.drawFlatTop_();
93
+ this.drawRightDynamicConnection_();
94
+ this.drawFlatBottom_();
95
+ this.drawLeftDynamicConnection_();
96
+ } else {
97
+ super.drawOutline_();
98
+ }
101
99
  }
102
- };
103
100
 
104
- /**
105
- * Add steps for the right side of a row that does not have value or
106
- * statement input connections.
107
- * @param {!Row} row The row to draw the
108
- * side of.
109
- * @protected
110
- */
111
- Drawer.prototype.drawRightSideRow_ = function(row) {
112
- if (row.height <= 0) {
113
- return;
101
+ /**
102
+ * @override
103
+ */
104
+ drawLeft_() {
105
+ if (this.info_.outputConnection &&
106
+ this.info_.outputConnection.isDynamicShape) {
107
+ this.drawLeftDynamicConnection_();
108
+ } else {
109
+ super.drawLeft_();
110
+ }
114
111
  }
115
- if (row.precedesStatement || row.followsStatement) {
116
- const cornerHeight = this.constants_.INSIDE_CORNERS.rightHeight;
117
- const remainingHeight =
118
- row.height - (row.precedesStatement ? cornerHeight : 0);
119
- this.outlinePath_ +=
120
- (row.followsStatement ? this.constants_.INSIDE_CORNERS.pathBottomRight :
121
- '') +
122
- (remainingHeight > 0 ?
123
- svgPaths.lineOnAxis('V', row.yPos + remainingHeight) :
124
- '') +
125
- (row.precedesStatement ? this.constants_.INSIDE_CORNERS.pathTopRight :
126
- '');
127
- } else {
112
+
113
+ /**
114
+ * Add steps for the right side of a row that does not have value or
115
+ * statement input connections.
116
+ * @param {!Row} row The row to draw the
117
+ * side of.
118
+ * @protected
119
+ */
120
+ drawRightSideRow_(row) {
121
+ if (row.height <= 0) {
122
+ return;
123
+ }
124
+ if (Types.isSpacer(row)) {
125
+ const spacerRow = /** @type {!SpacerRow} */ (row);
126
+ if (spacerRow.precedesStatement || spacerRow.followsStatement) {
127
+ const cornerHeight = this.constants_.INSIDE_CORNERS.rightHeight;
128
+ const remainingHeight =
129
+ spacerRow.height - (spacerRow.precedesStatement ? cornerHeight : 0);
130
+ this.outlinePath_ +=
131
+ (spacerRow.followsStatement ?
132
+ this.constants_.INSIDE_CORNERS.pathBottomRight :
133
+ '') +
134
+ (remainingHeight > 0 ?
135
+ svgPaths.lineOnAxis('V', spacerRow.yPos + remainingHeight) :
136
+ '') +
137
+ (spacerRow.precedesStatement ?
138
+ this.constants_.INSIDE_CORNERS.pathTopRight :
139
+ '');
140
+ return;
141
+ }
142
+ }
128
143
  this.outlinePath_ += svgPaths.lineOnAxis('V', row.yPos + row.height);
129
144
  }
130
- };
131
-
132
- /**
133
- * Add steps to draw the right side of an output with a dynamic connection.
134
- * @protected
135
- */
136
- Drawer.prototype.drawRightDynamicConnection_ = function() {
137
- this.outlinePath_ += this.info_.outputConnection.shape.pathRightDown(
138
- this.info_.outputConnection.height);
139
- };
140
145
 
141
- /**
142
- * Add steps to draw the left side of an output with a dynamic connection.
143
- * @protected
144
- */
145
- Drawer.prototype.drawLeftDynamicConnection_ = function() {
146
- this.positionOutputConnection_();
146
+ /**
147
+ * Add steps to draw the right side of an output with a dynamic connection.
148
+ * @protected
149
+ */
150
+ drawRightDynamicConnection_() {
151
+ this.outlinePath_ += this.info_.outputConnection.shape.pathRightDown(
152
+ this.info_.outputConnection.height);
153
+ }
147
154
 
148
- this.outlinePath_ += this.info_.outputConnection.shape.pathUp(
149
- this.info_.outputConnection.height);
155
+ /**
156
+ * Add steps to draw the left side of an output with a dynamic connection.
157
+ * @protected
158
+ */
159
+ drawLeftDynamicConnection_() {
160
+ this.positionOutputConnection_();
150
161
 
151
- // Close off the path. This draws a vertical line up to the start of the
152
- // block's path, which may be either a rounded or a sharp corner.
153
- this.outlinePath_ += 'z';
154
- };
162
+ this.outlinePath_ += this.info_.outputConnection.shape.pathUp(
163
+ this.info_.outputConnection.height);
155
164
 
156
- /**
157
- * Add steps to draw a flat top row.
158
- * @protected
159
- */
160
- Drawer.prototype.drawFlatTop_ = function() {
161
- const topRow = this.info_.topRow;
162
- this.positionPreviousConnection_();
163
-
164
- this.outlinePath_ += svgPaths.moveBy(topRow.xPos, this.info_.startY);
165
+ // Close off the path. This draws a vertical line up to the start of the
166
+ // block's path, which may be either a rounded or a sharp corner.
167
+ this.outlinePath_ += 'z';
168
+ }
165
169
 
166
- this.outlinePath_ += svgPaths.lineOnAxis('h', topRow.width);
167
- };
170
+ /**
171
+ * Add steps to draw a flat top row.
172
+ * @protected
173
+ */
174
+ drawFlatTop_() {
175
+ const topRow = this.info_.topRow;
176
+ this.positionPreviousConnection_();
168
177
 
169
- /**
170
- * Add steps to draw a flat bottom row.
171
- * @protected
172
- */
173
- Drawer.prototype.drawFlatBottom_ = function() {
174
- const bottomRow = this.info_.bottomRow;
175
- this.positionNextConnection_();
178
+ this.outlinePath_ += svgPaths.moveBy(topRow.xPos, this.info_.startY);
176
179
 
177
- this.outlinePath_ += svgPaths.lineOnAxis('V', bottomRow.baseline);
180
+ this.outlinePath_ += svgPaths.lineOnAxis('h', topRow.width);
181
+ }
178
182
 
179
- this.outlinePath_ += svgPaths.lineOnAxis('h', -bottomRow.width);
180
- };
183
+ /**
184
+ * Add steps to draw a flat bottom row.
185
+ * @protected
186
+ */
187
+ drawFlatBottom_() {
188
+ const bottomRow = this.info_.bottomRow;
189
+ this.positionNextConnection_();
181
190
 
182
- /**
183
- * @override
184
- */
185
- Drawer.prototype.drawInlineInput_ = function(input) {
186
- this.positionInlineInputConnection_(input);
191
+ this.outlinePath_ += svgPaths.lineOnAxis('V', bottomRow.baseline);
187
192
 
188
- const inputName = input.input.name;
189
- if (input.connectedBlock || this.info_.isInsertionMarker) {
190
- return;
193
+ this.outlinePath_ += svgPaths.lineOnAxis('h', -bottomRow.width);
191
194
  }
192
195
 
193
- const width = input.width - (input.connectionWidth * 2);
194
- const height = input.height;
195
- const yPos = input.centerline - height / 2;
196
-
197
- const connectionRight = input.xPos + input.connectionWidth;
198
-
199
- const outlinePath = svgPaths.moveTo(connectionRight, yPos) +
200
- svgPaths.lineOnAxis('h', width) +
201
- input.shape.pathRightDown(input.height) +
202
- svgPaths.lineOnAxis('h', -width) + input.shape.pathUp(input.height) + 'z';
203
- this.block_.pathObject.setOutlinePath(inputName, outlinePath);
204
- };
196
+ /**
197
+ * @override
198
+ */
199
+ drawInlineInput_(input) {
200
+ this.positionInlineInputConnection_(input);
201
+
202
+ const inputName = input.input.name;
203
+ if (input.connectedBlock || this.info_.isInsertionMarker) {
204
+ return;
205
+ }
206
+
207
+ const width = input.width - (input.connectionWidth * 2);
208
+ const height = input.height;
209
+ const yPos = input.centerline - height / 2;
210
+
211
+ const connectionRight = input.xPos + input.connectionWidth;
212
+
213
+ const outlinePath = svgPaths.moveTo(connectionRight, yPos) +
214
+ svgPaths.lineOnAxis('h', width) +
215
+ input.shape.pathRightDown(input.height) +
216
+ svgPaths.lineOnAxis('h', -width) + input.shape.pathUp(input.height) +
217
+ 'z';
218
+ this.block_.pathObject.setOutlinePath(inputName, outlinePath);
219
+ }
205
220
 
206
- /**
207
- * @override
208
- */
209
- Drawer.prototype.drawStatementInput_ = function(row) {
210
- const input = row.getLastInput();
211
- // Where to start drawing the notch, which is on the right side in LTR.
212
- const x = input.xPos + input.notchOffset + input.shape.width;
221
+ /**
222
+ * @override
223
+ */
224
+ drawStatementInput_(row) {
225
+ const input = /** @type {!StatementInput} */ (row.getLastInput());
226
+ // Where to start drawing the notch, which is on the right side in LTR.
227
+ const x = input.xPos + input.notchOffset + input.shape.width;
213
228
 
214
- const innerTopLeftCorner = input.shape.pathRight +
215
- svgPaths.lineOnAxis(
216
- 'h', -(input.notchOffset - this.constants_.INSIDE_CORNERS.width)) +
217
- this.constants_.INSIDE_CORNERS.pathTop;
229
+ const innerTopLeftCorner = input.shape.pathRight +
230
+ svgPaths.lineOnAxis(
231
+ 'h', -(input.notchOffset - this.constants_.INSIDE_CORNERS.width)) +
232
+ this.constants_.INSIDE_CORNERS.pathTop;
218
233
 
219
- const innerHeight = row.height - (2 * this.constants_.INSIDE_CORNERS.height);
234
+ const innerHeight =
235
+ row.height - (2 * this.constants_.INSIDE_CORNERS.height);
220
236
 
221
- const innerBottomLeftCorner = this.constants_.INSIDE_CORNERS.pathBottom +
222
- svgPaths.lineOnAxis(
223
- 'h', (input.notchOffset - this.constants_.INSIDE_CORNERS.width)) +
224
- (input.connectedBottomNextConnection ? '' : input.shape.pathLeft);
237
+ const innerBottomLeftCorner = this.constants_.INSIDE_CORNERS.pathBottom +
238
+ svgPaths.lineOnAxis(
239
+ 'h', (input.notchOffset - this.constants_.INSIDE_CORNERS.width)) +
240
+ (input.connectedBottomNextConnection ? '' : input.shape.pathLeft);
225
241
 
226
- this.outlinePath_ += svgPaths.lineOnAxis('H', x) + innerTopLeftCorner +
227
- svgPaths.lineOnAxis('v', innerHeight) + innerBottomLeftCorner +
228
- svgPaths.lineOnAxis('H', row.xPos + row.width);
242
+ this.outlinePath_ += svgPaths.lineOnAxis('H', x) + innerTopLeftCorner +
243
+ svgPaths.lineOnAxis('v', innerHeight) + innerBottomLeftCorner +
244
+ svgPaths.lineOnAxis('H', row.xPos + row.width);
229
245
 
230
- this.positionStatementInputConnection_(row);
231
- };
246
+ this.positionStatementInputConnection_(row);
247
+ }
248
+ }
232
249
 
233
250
  exports.Drawer = Drawer;