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,150 +16,164 @@
16
16
  goog.module('Blockly.zelos.MarkerSvg');
17
17
 
18
18
  const dom = goog.require('Blockly.utils.dom');
19
- const object = goog.require('Blockly.utils.object');
20
19
  /* eslint-disable-next-line no-unused-vars */
21
20
  const {ASTNode} = goog.requireType('Blockly.ASTNode');
22
21
  /* eslint-disable-next-line no-unused-vars */
23
22
  const {BlockSvg} = goog.requireType('Blockly.BlockSvg');
24
23
  /* eslint-disable-next-line no-unused-vars */
25
- const {Connection} = goog.requireType('Blockly.Connection');
26
- /* eslint-disable-next-line no-unused-vars */
27
- const {ConstantProvider} = goog.requireType('Blockly.blockRendering.ConstantProvider');
24
+ const {ConstantProvider: BaseConstantProvider} = goog.requireType('Blockly.blockRendering.ConstantProvider');
28
25
  const {MarkerSvg: BaseMarkerSvg} = goog.require('Blockly.blockRendering.MarkerSvg');
29
26
  /* eslint-disable-next-line no-unused-vars */
30
27
  const {Marker} = goog.requireType('Blockly.Marker');
28
+ /* eslint-disable-next-line no-unused-vars */
29
+ const {RenderedConnection} = goog.requireType('Blockly.RenderedConnection');
31
30
  const {Svg} = goog.require('Blockly.utils.Svg');
32
31
  /* eslint-disable-next-line no-unused-vars */
33
32
  const {WorkspaceSvg} = goog.requireType('Blockly.WorkspaceSvg');
33
+ /* eslint-disable-next-line no-unused-vars */
34
+ const {ConstantProvider: ZelosConstantProvider} = goog.requireType('Blockly.zelos.ConstantProvider');
34
35
 
35
36
 
36
37
  /**
37
38
  * Class to draw a marker.
38
- * @param {!WorkspaceSvg} workspace The workspace the marker belongs to.
39
- * @param {!ConstantProvider} constants The constants for
40
- * the renderer.
41
- * @param {!Marker} marker The marker to draw.
42
- * @constructor
43
39
  * @extends {BaseMarkerSvg}
44
40
  * @alias Blockly.zelos.MarkerSvg
45
41
  */
46
- const MarkerSvg = function(workspace, constants, marker) {
47
- MarkerSvg.superClass_.constructor.call(this, workspace, constants, marker);
48
- };
49
- object.inherits(MarkerSvg, BaseMarkerSvg);
50
-
51
- /**
52
- * Position and display the marker for an input or an output connection.
53
- * @param {!ASTNode} curNode The node to draw the marker for.
54
- * @private
55
- */
56
- MarkerSvg.prototype.showWithInputOutput_ = function(curNode) {
57
- const block = /** @type {!BlockSvg} */ (curNode.getSourceBlock());
58
- const connection = /** @type {!Connection} */ (curNode.getLocation());
59
- const offsetInBlock = connection.getOffsetInBlock();
60
-
61
- this.positionCircle_(offsetInBlock.x, offsetInBlock.y);
62
- this.setParent_(block);
63
- this.showCurrent_();
64
- };
65
-
66
- /**
67
- * @override
68
- */
69
- MarkerSvg.prototype.showWithOutput_ = function(curNode) {
70
- this.showWithInputOutput_(curNode);
71
- };
72
-
73
- /**
74
- * @override
75
- */
76
- MarkerSvg.prototype.showWithInput_ = function(curNode) {
77
- this.showWithInputOutput_(curNode);
78
- };
42
+ class MarkerSvg extends BaseMarkerSvg {
43
+ /**
44
+ * @param {!WorkspaceSvg} workspace The workspace the marker belongs to.
45
+ * @param {!BaseConstantProvider} constants The constants for
46
+ * the renderer.
47
+ * @param {!Marker} marker The marker to draw.
48
+ */
49
+ constructor(workspace, constants, marker) {
50
+ super(workspace, constants, marker);
51
+
52
+ /** @type {!ZelosConstantProvider} */
53
+ this.constants_;
54
+
55
+ /**
56
+ * @type {SVGCircleElement}
57
+ * @private
58
+ */
59
+ this.markerCircle_ = null;
60
+ }
79
61
 
80
- /**
81
- * Draw a rectangle around the block.
82
- * @param {!ASTNode} curNode The current node of the marker.
83
- */
84
- MarkerSvg.prototype.showWithBlock_ = function(curNode) {
85
- const block = /** @type {!BlockSvg} */ (curNode.getLocation());
62
+ /**
63
+ * Position and display the marker for an input or an output connection.
64
+ * @param {!ASTNode} curNode The node to draw the marker for.
65
+ * @private
66
+ */
67
+ showWithInputOutput_(curNode) {
68
+ const block = /** @type {!BlockSvg} */ (curNode.getSourceBlock());
69
+ const connection =
70
+ /** @type {!RenderedConnection} */ (curNode.getLocation());
71
+ const offsetInBlock = connection.getOffsetInBlock();
72
+
73
+ this.positionCircle_(offsetInBlock.x, offsetInBlock.y);
74
+ this.setParent_(block);
75
+ this.showCurrent_();
76
+ }
86
77
 
87
- // Gets the height and width of entire stack.
88
- const heightWidth = block.getHeightWidth();
78
+ /**
79
+ * @override
80
+ */
81
+ showWithOutput_(curNode) {
82
+ this.showWithInputOutput_(curNode);
83
+ }
89
84
 
90
- // Add padding so that being on a stack looks different than being on a block.
91
- this.positionRect_(0, 0, heightWidth.width, heightWidth.height);
92
- this.setParent_(block);
93
- this.showCurrent_();
94
- };
85
+ /**
86
+ * @override
87
+ */
88
+ showWithInput_(curNode) {
89
+ this.showWithInputOutput_(curNode);
90
+ }
95
91
 
96
- /**
97
- * Position the circle we use for input and output connections.
98
- * @param {number} x The x position of the circle.
99
- * @param {number} y The y position of the circle.
100
- * @private
101
- */
102
- MarkerSvg.prototype.positionCircle_ = function(x, y) {
103
- this.markerCircle_.setAttribute('cx', x);
104
- this.markerCircle_.setAttribute('cy', y);
105
- this.currentMarkerSvg = this.markerCircle_;
106
- };
92
+ /**
93
+ * Draw a rectangle around the block.
94
+ * @param {!ASTNode} curNode The current node of the marker.
95
+ */
96
+ showWithBlock_(curNode) {
97
+ const block = /** @type {!BlockSvg} */ (curNode.getLocation());
98
+
99
+ // Gets the height and width of entire stack.
100
+ const heightWidth = block.getHeightWidth();
101
+
102
+ // Add padding so that being on a stack looks different than being on a
103
+ // block.
104
+ this.positionRect_(0, 0, heightWidth.width, heightWidth.height);
105
+ this.setParent_(block);
106
+ this.showCurrent_();
107
+ }
107
108
 
108
- /**
109
- * @override
110
- */
111
- MarkerSvg.prototype.hide = function() {
112
- MarkerSvg.superClass_.hide.call(this);
113
- this.markerCircle_.style.display = 'none';
114
- };
109
+ /**
110
+ * Position the circle we use for input and output connections.
111
+ * @param {number} x The x position of the circle.
112
+ * @param {number} y The y position of the circle.
113
+ * @private
114
+ */
115
+ positionCircle_(x, y) {
116
+ this.markerCircle_.setAttribute('cx', x);
117
+ this.markerCircle_.setAttribute('cy', y);
118
+ this.currentMarkerSvg = this.markerCircle_;
119
+ }
115
120
 
116
- /**
117
- * @override
118
- */
119
- MarkerSvg.prototype.createDomInternal_ = function() {
120
- /* clang-format off */
121
- /* This markup will be generated and added to the .svgGroup_:
122
- <g>
123
- <rect width="100" height="5">
124
- <animate attributeType="XML" attributeName="fill" dur="1s"
125
- values="transparent;transparent;#fff;transparent" repeatCount="indefinite" />
126
- </rect>
127
- </g>
128
- */
129
- /* clang-format on */
130
-
131
- MarkerSvg.superClass_.createDomInternal_.call(this);
132
-
133
- this.markerCircle_ = dom.createSvgElement(
134
- Svg.CIRCLE, {
135
- 'r': this.constants_.CURSOR_RADIUS,
136
- 'style': 'display: none',
137
- 'stroke-width': this.constants_.CURSOR_STROKE_WIDTH,
138
- },
139
- this.markerSvg_);
140
-
141
- // Markers and stack cursors don't blink.
142
- if (this.isCursor()) {
143
- const blinkProperties = this.getBlinkProperties_();
144
- dom.createSvgElement(Svg.ANIMATE, blinkProperties, this.markerCircle_);
121
+ /**
122
+ * @override
123
+ */
124
+ hide() {
125
+ super.hide();
126
+ this.markerCircle_.style.display = 'none';
145
127
  }
146
128
 
147
- return this.markerSvg_;
148
- };
129
+ /**
130
+ * @override
131
+ */
132
+ createDomInternal_() {
133
+ /* clang-format off */
134
+ /* This markup will be generated and added to the .svgGroup_:
135
+ <g>
136
+ <rect width="100" height="5">
137
+ <animate attributeType="XML" attributeName="fill" dur="1s"
138
+ values="transparent;transparent;#fff;transparent" repeatCount="indefinite" />
139
+ </rect>
140
+ </g>
141
+ */
142
+ /* clang-format on */
143
+
144
+ super.createDomInternal_();
145
+
146
+ this.markerCircle_ = dom.createSvgElement(
147
+ Svg.CIRCLE, {
148
+ 'r': this.constants_.CURSOR_RADIUS,
149
+ 'style': 'display: none',
150
+ 'stroke-width': this.constants_.CURSOR_STROKE_WIDTH,
151
+ },
152
+ this.markerSvg_);
153
+
154
+ // Markers and stack cursors don't blink.
155
+ if (this.isCursor()) {
156
+ const blinkProperties = this.getBlinkProperties_();
157
+ dom.createSvgElement(Svg.ANIMATE, blinkProperties, this.markerCircle_);
158
+ }
159
+
160
+ return this.markerSvg_;
161
+ }
149
162
 
150
- /**
151
- * @override
152
- */
153
- MarkerSvg.prototype.applyColour_ = function(curNode) {
154
- MarkerSvg.superClass_.applyColour_.call(this, curNode);
163
+ /**
164
+ * @override
165
+ */
166
+ applyColour_(curNode) {
167
+ super.applyColour_(curNode);
155
168
 
156
- this.markerCircle_.setAttribute('fill', this.colour_);
157
- this.markerCircle_.setAttribute('stroke', this.colour_);
169
+ this.markerCircle_.setAttribute('fill', this.colour_);
170
+ this.markerCircle_.setAttribute('stroke', this.colour_);
158
171
 
159
- if (this.isCursor()) {
160
- const values = this.colour_ + ';transparent;transparent;';
161
- this.markerCircle_.firstChild.setAttribute('values', values);
172
+ if (this.isCursor()) {
173
+ const values = this.colour_ + ';transparent;transparent;';
174
+ this.markerCircle_.firstChild.setAttribute('values', values);
175
+ }
162
176
  }
163
- };
177
+ }
164
178
 
165
179
  exports.MarkerSvg = MarkerSvg;
@@ -15,7 +15,6 @@
15
15
  */
16
16
  goog.module('Blockly.zelos.BottomRow');
17
17
 
18
- const object = goog.require('Blockly.utils.object');
19
18
  const {BottomRow: BaseBottomRow} = goog.require('Blockly.blockRendering.BottomRow');
20
19
  /* eslint-disable-next-line no-unused-vars */
21
20
  const {ConstantProvider} = goog.requireType('Blockly.blockRendering.ConstantProvider');
@@ -26,40 +25,42 @@ const {ConstantProvider} = goog.requireType('Blockly.blockRendering.ConstantProv
26
25
  * a block as well as spacing information for the top row.
27
26
  * Elements in a bottom row can consist of corners, spacers and next
28
27
  * connections.
29
- * @param {!ConstantProvider} constants The rendering
30
- * constants provider.
31
- * @package
32
- * @constructor
33
28
  * @extends {BaseBottomRow}
34
29
  * @alias Blockly.zelos.BottomRow
35
30
  */
36
- const BottomRow = function(constants) {
37
- BottomRow.superClass_.constructor.call(this, constants);
38
- };
39
- object.inherits(BottomRow, BaseBottomRow);
31
+ class BottomRow extends BaseBottomRow {
32
+ /**
33
+ * @param {!ConstantProvider} constants The rendering
34
+ * constants provider.
35
+ * @package
36
+ */
37
+ constructor(constants) {
38
+ super(constants);
39
+ }
40
40
 
41
- /**
42
- * @override
43
- */
44
- BottomRow.prototype.endsWithElemSpacer = function() {
45
- return false;
46
- };
41
+ /**
42
+ * @override
43
+ */
44
+ endsWithElemSpacer() {
45
+ return false;
46
+ }
47
47
 
48
- /**
49
- * Render a round corner unless the block has an output connection.
50
- * @override
51
- */
52
- BottomRow.prototype.hasLeftSquareCorner = function(block) {
53
- return !!block.outputConnection;
54
- };
48
+ /**
49
+ * Render a round corner unless the block has an output connection.
50
+ * @override
51
+ */
52
+ hasLeftSquareCorner(block) {
53
+ return !!block.outputConnection;
54
+ }
55
55
 
56
- /**
57
- * Render a round corner unless the block has an output connection.
58
- * @override
59
- */
60
- BottomRow.prototype.hasRightSquareCorner = function(block) {
61
- return !!block.outputConnection && !block.statementInputCount &&
62
- !block.nextConnection;
63
- };
56
+ /**
57
+ * Render a round corner unless the block has an output connection.
58
+ * @override
59
+ */
60
+ hasRightSquareCorner(block) {
61
+ return !!block.outputConnection && !block.statementInputCount &&
62
+ !block.nextConnection;
63
+ }
64
+ }
64
65
 
65
66
  exports.BottomRow = BottomRow;
@@ -16,7 +16,6 @@
16
16
  */
17
17
  goog.module('Blockly.zelos.StatementInput');
18
18
 
19
- const object = goog.require('Blockly.utils.object');
20
19
  /* eslint-disable-next-line no-unused-vars */
21
20
  const {ConstantProvider} = goog.requireType('Blockly.blockRendering.ConstantProvider');
22
21
  /* eslint-disable-next-line no-unused-vars */
@@ -26,31 +25,33 @@ const {StatementInput: BaseStatementInput} = goog.require('Blockly.blockRenderin
26
25
 
27
26
  /**
28
27
  * An object containing information about the space a statement input takes up
29
- * during rendering
30
- * @param {!ConstantProvider} constants The rendering constants provider.
31
- * @param {!Input} input The statement input to measure and store information
32
- * for.
33
- * @package
34
- * @constructor
28
+ * during rendering.
35
29
  * @extends {BaseStatementInput}
36
30
  * @alias Blockly.zelos.StatementInput
37
31
  */
38
- const StatementInput = function(constants, input) {
39
- StatementInput.superClass_.constructor.call(this, constants, input);
32
+ class StatementInput extends BaseStatementInput {
33
+ /**
34
+ * @param {!ConstantProvider} constants The rendering constants provider.
35
+ * @param {!Input} input The statement input to measure and store information
36
+ * for.
37
+ * @package
38
+ */
39
+ constructor(constants, input) {
40
+ super(constants, input);
40
41
 
41
- if (this.connectedBlock) {
42
- // Find the bottom-most connected block in the stack.
43
- let block = this.connectedBlock;
44
- let nextBlock;
45
- while ((nextBlock = block.getNextBlock())) {
46
- block = nextBlock;
47
- }
48
- if (!block.nextConnection) {
49
- this.height = this.connectedBlockHeight;
50
- this.connectedBottomNextConnection = true;
42
+ if (this.connectedBlock) {
43
+ // Find the bottom-most connected block in the stack.
44
+ let block = this.connectedBlock;
45
+ let nextBlock;
46
+ while ((nextBlock = block.getNextBlock())) {
47
+ block = nextBlock;
48
+ }
49
+ if (!block.nextConnection) {
50
+ this.height = this.connectedBlockHeight;
51
+ this.connectedBottomNextConnection = true;
52
+ }
51
53
  }
52
54
  }
53
- };
54
- object.inherits(StatementInput, BaseStatementInput);
55
+ }
55
56
 
56
57
  exports.StatementInput = StatementInput;
@@ -16,7 +16,6 @@
16
16
  */
17
17
  goog.module('Blockly.zelos.RightConnectionShape');
18
18
 
19
- const object = goog.require('Blockly.utils.object');
20
19
  /* eslint-disable-next-line no-unused-vars */
21
20
  const {ConstantProvider} = goog.requireType('Blockly.blockRendering.ConstantProvider');
22
21
  const {Measurable} = goog.require('Blockly.blockRendering.Measurable');
@@ -26,20 +25,22 @@ const {Types} = goog.require('Blockly.blockRendering.Types');
26
25
  /**
27
26
  * An object containing information about the space a right connection shape
28
27
  * takes up during rendering.
29
- * @param {!ConstantProvider} constants The rendering
30
- * constants provider.
31
- * @package
32
- * @constructor
33
28
  * @extends {Measurable}
34
29
  * @alias Blockly.zelos.RightConnectionShape
35
30
  */
36
- const RightConnectionShape = function(constants) {
37
- RightConnectionShape.superClass_.constructor.call(this, constants);
38
- this.type |= Types.getType('RIGHT_CONNECTION');
39
- // Size is dynamic
40
- this.height = 0;
41
- this.width = 0;
42
- };
43
- object.inherits(RightConnectionShape, Measurable);
31
+ class RightConnectionShape extends Measurable {
32
+ /**
33
+ * @param {!ConstantProvider} constants The rendering
34
+ * constants provider.
35
+ * @package
36
+ */
37
+ constructor(constants) {
38
+ super(constants);
39
+ this.type |= Types.getType('RIGHT_CONNECTION');
40
+ // Size is dynamic
41
+ this.height = 0;
42
+ this.width = 0;
43
+ }
44
+ }
44
45
 
45
46
  exports.RightConnectionShape = RightConnectionShape;
@@ -15,7 +15,6 @@
15
15
  */
16
16
  goog.module('Blockly.zelos.TopRow');
17
17
 
18
- const object = goog.require('Blockly.utils.object');
19
18
  /* eslint-disable-next-line no-unused-vars */
20
19
  const {ConstantProvider} = goog.requireType('Blockly.blockRendering.ConstantProvider');
21
20
  const {TopRow: BaseTopRow} = goog.require('Blockly.blockRendering.TopRow');
@@ -28,43 +27,45 @@ const {TopRow: BaseTopRow} = goog.require('Blockly.blockRendering.TopRow');
28
27
  * connections.
29
28
  * After this constructor is called, the row will contain all non-spacer
30
29
  * elements it needs.
31
- * @param {!ConstantProvider} constants The rendering
32
- * constants provider.
33
- * @package
34
- * @constructor
35
30
  * @extends {BaseTopRow}
36
31
  * @alias Blockly.zelos.TopRow
37
32
  */
38
- const TopRow = function(constants) {
39
- TopRow.superClass_.constructor.call(this, constants);
40
- };
41
- object.inherits(TopRow, BaseTopRow);
33
+ class TopRow extends BaseTopRow {
34
+ /**
35
+ * @param {!ConstantProvider} constants The rendering
36
+ * constants provider.
37
+ * @package
38
+ */
39
+ constructor(constants) {
40
+ super(constants);
41
+ }
42
42
 
43
- /**
44
- * @override
45
- */
46
- TopRow.prototype.endsWithElemSpacer = function() {
47
- return false;
48
- };
43
+ /**
44
+ * @override
45
+ */
46
+ endsWithElemSpacer() {
47
+ return false;
48
+ }
49
49
 
50
- /**
51
- * Render a round corner unless the block has an output connection.
52
- * @override
53
- */
54
- TopRow.prototype.hasLeftSquareCorner = function(block) {
55
- const hasHat =
56
- (block.hat ? block.hat === 'cap' : this.constants_.ADD_START_HATS) &&
57
- !block.outputConnection && !block.previousConnection;
58
- return !!block.outputConnection || hasHat;
59
- };
50
+ /**
51
+ * Render a round corner unless the block has an output connection.
52
+ * @override
53
+ */
54
+ hasLeftSquareCorner(block) {
55
+ const hasHat =
56
+ (block.hat ? block.hat === 'cap' : this.constants_.ADD_START_HATS) &&
57
+ !block.outputConnection && !block.previousConnection;
58
+ return !!block.outputConnection || hasHat;
59
+ }
60
60
 
61
- /**
62
- * Render a round corner unless the block has an output connection.
63
- * @override
64
- */
65
- TopRow.prototype.hasRightSquareCorner = function(block) {
66
- return !!block.outputConnection && !block.statementInputCount &&
67
- !block.nextConnection;
68
- };
61
+ /**
62
+ * Render a round corner unless the block has an output connection.
63
+ * @override
64
+ */
65
+ hasRightSquareCorner(block) {
66
+ return !!block.outputConnection && !block.statementInputCount &&
67
+ !block.nextConnection;
68
+ }
69
+ }
69
70
 
70
71
  exports.TopRow = TopRow;