blockly 7.20211209.4 → 8.0.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 (262) hide show
  1. package/blockly.d.ts +18963 -18432
  2. package/blockly.min.js +852 -844
  3. package/blockly_compressed.js +669 -664
  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 +41 -27
  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 +146 -141
  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 +19 -9
  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/dart_compressed.js +40 -43
  208. package/dart_compressed.js.map +1 -1
  209. package/generators/dart/colour.js +56 -64
  210. package/generators/dart/lists.js +61 -50
  211. package/generators/dart/math.js +160 -148
  212. package/generators/dart/text.js +83 -61
  213. package/generators/javascript/colour.js +37 -34
  214. package/generators/javascript/lists.js +50 -43
  215. package/generators/javascript/math.js +123 -139
  216. package/generators/javascript/text.js +67 -81
  217. package/generators/lua/colour.js +25 -23
  218. package/generators/lua/lists.js +97 -69
  219. package/generators/lua/logic.js +1 -2
  220. package/generators/lua/math.js +182 -144
  221. package/generators/lua/text.js +116 -99
  222. package/generators/php/colour.js +38 -32
  223. package/generators/php/lists.js +109 -89
  224. package/generators/php/math.js +90 -81
  225. package/generators/php/text.js +63 -61
  226. package/generators/python/colour.js +18 -18
  227. package/generators/python/lists.js +38 -30
  228. package/generators/python/loops.js +12 -8
  229. package/generators/python/math.js +104 -106
  230. package/generators/python/text.js +34 -30
  231. package/javascript_compressed.js +37 -39
  232. package/javascript_compressed.js.map +1 -1
  233. package/lua_compressed.js +39 -42
  234. package/lua_compressed.js.map +1 -1
  235. package/msg/az.js +2 -2
  236. package/msg/be.js +4 -4
  237. package/msg/cs.js +15 -15
  238. package/msg/de.js +1 -1
  239. package/msg/diq.js +1 -1
  240. package/msg/eo.js +1 -1
  241. package/msg/es.js +1 -1
  242. package/msg/fa.js +1 -1
  243. package/msg/fr.js +4 -4
  244. package/msg/he.js +1 -1
  245. package/msg/hr.js +2 -2
  246. package/msg/hy.js +2 -2
  247. package/msg/id.js +12 -12
  248. package/msg/inh.js +14 -14
  249. package/msg/ja.js +7 -7
  250. package/msg/lv.js +29 -29
  251. package/msg/pa.js +3 -3
  252. package/msg/smn.js +436 -0
  253. package/msg/te.js +1 -1
  254. package/msg/yue.js +1 -1
  255. package/msg/zh-hans.js +3 -3
  256. package/msg/zh-hant.js +3 -3
  257. package/package.json +7 -6
  258. package/php_compressed.js +38 -42
  259. package/php_compressed.js.map +1 -1
  260. package/python_compressed.js +26 -25
  261. package/python_compressed.js.map +1 -1
  262. package/blocks/all.js +0 -23
@@ -47,257 +47,259 @@ const {WorkspaceSvg} = goog.requireType('Blockly.WorkspaceSvg');
47
47
 
48
48
  /**
49
49
  * The base class for a block renderer.
50
- * @param {string} name The renderer name.
51
- * @package
52
- * @constructor
53
50
  * @implements {IRegistrable}
54
51
  * @alias Blockly.blockRendering.Renderer
55
52
  */
56
- const Renderer = function(name) {
53
+ class Renderer {
57
54
  /**
58
- * The renderer name.
59
- * @type {string}
55
+ * @param {string} name The renderer name.
60
56
  * @package
61
57
  */
62
- this.name = name;
58
+ constructor(name) {
59
+ /**
60
+ * The renderer name.
61
+ * @type {string}
62
+ * @package
63
+ */
64
+ this.name = name;
65
+
66
+ /**
67
+ * The renderer's constant provider.
68
+ * @type {ConstantProvider}
69
+ * @private
70
+ */
71
+ this.constants_ = null;
72
+
73
+ /**
74
+ * Rendering constant overrides, passed in through options.
75
+ * @type {?Object}
76
+ * @package
77
+ */
78
+ this.overrides = null;
79
+ }
63
80
 
64
81
  /**
65
- * The renderer's constant provider.
66
- * @type {ConstantProvider}
67
- * @private
82
+ * Gets the class name that identifies this renderer.
83
+ * @return {string} The CSS class name.
84
+ * @package
68
85
  */
69
- this.constants_ = null;
86
+ getClassName() {
87
+ return this.name + '-renderer';
88
+ }
70
89
 
71
90
  /**
72
- * Rendering constant overrides, passed in through options.
73
- * @type {?Object}
91
+ * Initialize the renderer.
92
+ * @param {!Theme} theme The workspace theme object.
93
+ * @param {Object=} opt_rendererOverrides Rendering constant overrides.
74
94
  * @package
75
95
  */
76
- this.overrides = null;
77
- };
78
-
79
- /**
80
- * Gets the class name that identifies this renderer.
81
- * @return {string} The CSS class name.
82
- * @package
83
- */
84
- Renderer.prototype.getClassName = function() {
85
- return this.name + '-renderer';
86
- };
87
-
88
- /**
89
- * Initialize the renderer.
90
- * @param {!Theme} theme The workspace theme object.
91
- * @param {Object=} opt_rendererOverrides Rendering constant overrides.
92
- * @package
93
- */
94
- Renderer.prototype.init = function(theme, opt_rendererOverrides) {
95
- this.constants_ = this.makeConstants_();
96
- if (opt_rendererOverrides) {
97
- this.overrides = opt_rendererOverrides;
98
- object.mixin(this.constants_, opt_rendererOverrides);
96
+ init(theme, opt_rendererOverrides) {
97
+ this.constants_ = this.makeConstants_();
98
+ if (opt_rendererOverrides) {
99
+ this.overrides = opt_rendererOverrides;
100
+ object.mixin(this.constants_, opt_rendererOverrides);
101
+ }
102
+ this.constants_.setTheme(theme);
103
+ this.constants_.init();
99
104
  }
100
- this.constants_.setTheme(theme);
101
- this.constants_.init();
102
- };
103
105
 
104
- /**
105
- * Create any DOM elements that this renderer needs.
106
- * @param {!SVGElement} svg The root of the workspace's SVG.
107
- * @param {!Theme} theme The workspace theme object.
108
- * @package
109
- */
110
- Renderer.prototype.createDom = function(svg, theme) {
111
- this.constants_.createDom(
112
- svg, this.name + '-' + theme.name,
113
- '.' + this.getClassName() + '.' + theme.getClassName());
114
- };
106
+ /**
107
+ * Create any DOM elements that this renderer needs.
108
+ * @param {!SVGElement} svg The root of the workspace's SVG.
109
+ * @param {!Theme} theme The workspace theme object.
110
+ * @package
111
+ */
112
+ createDom(svg, theme) {
113
+ this.constants_.createDom(
114
+ svg, this.name + '-' + theme.name,
115
+ '.' + this.getClassName() + '.' + theme.getClassName());
116
+ }
115
117
 
116
- /**
117
- * Refresh the renderer after a theme change.
118
- * @param {!SVGElement} svg The root of the workspace's SVG.
119
- * @param {!Theme} theme The workspace theme object.
120
- * @package
121
- */
122
- Renderer.prototype.refreshDom = function(svg, theme) {
123
- const previousConstants = this.getConstants();
124
- previousConstants.dispose();
125
- this.constants_ = this.makeConstants_();
126
- if (this.overrides) {
127
- object.mixin(this.constants_, this.overrides);
118
+ /**
119
+ * Refresh the renderer after a theme change.
120
+ * @param {!SVGElement} svg The root of the workspace's SVG.
121
+ * @param {!Theme} theme The workspace theme object.
122
+ * @package
123
+ */
124
+ refreshDom(svg, theme) {
125
+ const previousConstants = this.getConstants();
126
+ previousConstants.dispose();
127
+ this.constants_ = this.makeConstants_();
128
+ if (this.overrides) {
129
+ object.mixin(this.constants_, this.overrides);
130
+ }
131
+ // Ensure the constant provider's random identifier does not change.
132
+ this.constants_.randomIdentifier = previousConstants.randomIdentifier;
133
+ this.constants_.setTheme(theme);
134
+ this.constants_.init();
135
+ this.createDom(svg, theme);
128
136
  }
129
- // Ensure the constant provider's random identifier does not change.
130
- this.constants_.randomIdentifier = previousConstants.randomIdentifier;
131
- this.constants_.setTheme(theme);
132
- this.constants_.init();
133
- this.createDom(svg, theme);
134
- };
135
137
 
136
- /**
137
- * Dispose of this renderer.
138
- * Delete all DOM elements that this renderer and its constants created.
139
- * @package
140
- */
141
- Renderer.prototype.dispose = function() {
142
- if (this.constants_) {
143
- this.constants_.dispose();
138
+ /**
139
+ * Dispose of this renderer.
140
+ * Delete all DOM elements that this renderer and its constants created.
141
+ * @package
142
+ */
143
+ dispose() {
144
+ if (this.constants_) {
145
+ this.constants_.dispose();
146
+ }
144
147
  }
145
- };
146
148
 
147
- /**
148
- * Create a new instance of the renderer's constant provider.
149
- * @return {!ConstantProvider} The constant provider.
150
- * @protected
151
- */
152
- Renderer.prototype.makeConstants_ = function() {
153
- return new ConstantProvider();
154
- };
149
+ /**
150
+ * Create a new instance of the renderer's constant provider.
151
+ * @return {!ConstantProvider} The constant provider.
152
+ * @protected
153
+ */
154
+ makeConstants_() {
155
+ return new ConstantProvider();
156
+ }
155
157
 
156
- /**
157
- * Create a new instance of the renderer's render info object.
158
- * @param {!BlockSvg} block The block to measure.
159
- * @return {!RenderInfo} The render info object.
160
- * @protected
161
- */
162
- Renderer.prototype.makeRenderInfo_ = function(block) {
163
- return new RenderInfo(this, block);
164
- };
158
+ /**
159
+ * Create a new instance of the renderer's render info object.
160
+ * @param {!BlockSvg} block The block to measure.
161
+ * @return {!RenderInfo} The render info object.
162
+ * @protected
163
+ */
164
+ makeRenderInfo_(block) {
165
+ return new RenderInfo(this, block);
166
+ }
165
167
 
166
- /**
167
- * Create a new instance of the renderer's drawer.
168
- * @param {!BlockSvg} block The block to render.
169
- * @param {!RenderInfo} info An object containing all
170
- * information needed to render this block.
171
- * @return {!Drawer} The drawer.
172
- * @protected
173
- */
174
- Renderer.prototype.makeDrawer_ = function(block, info) {
175
- return new Drawer(block, info);
176
- };
168
+ /**
169
+ * Create a new instance of the renderer's drawer.
170
+ * @param {!BlockSvg} block The block to render.
171
+ * @param {!RenderInfo} info An object containing all
172
+ * information needed to render this block.
173
+ * @return {!Drawer} The drawer.
174
+ * @protected
175
+ */
176
+ makeDrawer_(block, info) {
177
+ return new Drawer(block, info);
178
+ }
177
179
 
178
- /**
179
- * Create a new instance of the renderer's debugger.
180
- * @return {!Debug} The renderer debugger.
181
- * @suppress {strictModuleDepCheck} Debug renderer only included in playground.
182
- * @protected
183
- */
184
- Renderer.prototype.makeDebugger_ = function() {
185
- const {Debug} = goog.module.get('Blockly.blockRendering.Debug');
186
- if (!Debug) {
187
- throw Error('Missing require for Blockly.blockRendering.Debug');
180
+ /**
181
+ * Create a new instance of the renderer's debugger.
182
+ * @return {!Debug} The renderer debugger.
183
+ * @suppress {strictModuleDepCheck} Debug renderer only included in
184
+ * playground.
185
+ * @protected
186
+ */
187
+ makeDebugger_() {
188
+ const {Debug} = goog.module.get('Blockly.blockRendering.Debug');
189
+ if (!Debug) {
190
+ throw Error('Missing require for Blockly.blockRendering.Debug');
191
+ }
192
+ return new Debug(this.getConstants());
188
193
  }
189
- return new Debug(this.getConstants());
190
- };
191
194
 
192
- /**
193
- * Create a new instance of the renderer's marker drawer.
194
- * @param {!WorkspaceSvg} workspace The workspace the marker belongs to.
195
- * @param {!Marker} marker The marker.
196
- * @return {!MarkerSvg} The object in charge of drawing
197
- * the marker.
198
- * @package
199
- */
200
- Renderer.prototype.makeMarkerDrawer = function(workspace, marker) {
201
- return new MarkerSvg(workspace, this.getConstants(), marker);
202
- };
195
+ /**
196
+ * Create a new instance of the renderer's marker drawer.
197
+ * @param {!WorkspaceSvg} workspace The workspace the marker belongs to.
198
+ * @param {!Marker} marker The marker.
199
+ * @return {!MarkerSvg} The object in charge of drawing
200
+ * the marker.
201
+ * @package
202
+ */
203
+ makeMarkerDrawer(workspace, marker) {
204
+ return new MarkerSvg(workspace, this.getConstants(), marker);
205
+ }
203
206
 
204
- /**
205
- * Create a new instance of a renderer path object.
206
- * @param {!SVGElement} root The root SVG element.
207
- * @param {!Theme.BlockStyle} style The style object to use for
208
- * colouring.
209
- * @return {!IPathObject} The renderer path object.
210
- * @package
211
- */
212
- Renderer.prototype.makePathObject = function(root, style) {
213
- return new PathObject(
214
- root, style, /** @type {!ConstantProvider} */ (this.constants_));
215
- };
207
+ /**
208
+ * Create a new instance of a renderer path object.
209
+ * @param {!SVGElement} root The root SVG element.
210
+ * @param {!Theme.BlockStyle} style The style object to use for
211
+ * colouring.
212
+ * @return {!IPathObject} The renderer path object.
213
+ * @package
214
+ */
215
+ makePathObject(root, style) {
216
+ return new PathObject(
217
+ root, style, /** @type {!ConstantProvider} */ (this.constants_));
218
+ }
216
219
 
217
- /**
218
- * Get the current renderer's constant provider. We assume that when this is
219
- * called, the renderer has already been initialized.
220
- * @return {!ConstantProvider} The constant provider.
221
- * @package
222
- */
223
- Renderer.prototype.getConstants = function() {
224
- return /** @type {!ConstantProvider} */ (this.constants_);
225
- };
220
+ /**
221
+ * Get the current renderer's constant provider. We assume that when this is
222
+ * called, the renderer has already been initialized.
223
+ * @return {!ConstantProvider} The constant provider.
224
+ * @package
225
+ */
226
+ getConstants() {
227
+ return /** @type {!ConstantProvider} */ (this.constants_);
228
+ }
226
229
 
227
- /**
228
- * Determine whether or not to highlight a connection.
229
- * @param {Connection} _conn The connection to determine whether or not
230
- * to highlight.
231
- * @return {boolean} True if we should highlight the connection.
232
- * @package
233
- */
234
- Renderer.prototype.shouldHighlightConnection = function(_conn) {
235
- return true;
236
- };
230
+ /**
231
+ * Determine whether or not to highlight a connection.
232
+ * @param {Connection} _conn The connection to determine whether or not
233
+ * to highlight.
234
+ * @return {boolean} True if we should highlight the connection.
235
+ * @package
236
+ */
237
+ shouldHighlightConnection(_conn) {
238
+ return true;
239
+ }
237
240
 
238
- /**
239
- * Checks if an orphaned block can connect to the "end" of the topBlock's
240
- * block-clump. If the clump is a row the end is the last input. If the clump
241
- * is a stack, the end is the last next connection. If the clump is neither,
242
- * then this returns false.
243
- * @param {!BlockSvg} topBlock The top block of the block clump we want to try
244
- * and connect to.
245
- * @param {!BlockSvg} orphanBlock The orphan block that wants to find
246
- * a home.
247
- * @param {number} localType The type of the connection being dragged.
248
- * @return {boolean} Whether there is a home for the orphan or not.
249
- * @package
250
- */
251
- Renderer.prototype.orphanCanConnectAtEnd = function(
252
- topBlock, orphanBlock, localType) {
253
- const orphanConnection =
254
- (localType === ConnectionType.OUTPUT_VALUE ?
255
- orphanBlock.outputConnection :
256
- orphanBlock.previousConnection);
257
- return !!Connection.getConnectionForOrphanedConnection(
258
- /** @type {!Block} **/ (topBlock),
259
- /** @type {!Connection} **/ (orphanConnection));
260
- };
241
+ /**
242
+ * Checks if an orphaned block can connect to the "end" of the topBlock's
243
+ * block-clump. If the clump is a row the end is the last input. If the clump
244
+ * is a stack, the end is the last next connection. If the clump is neither,
245
+ * then this returns false.
246
+ * @param {!BlockSvg} topBlock The top block of the block clump we want to try
247
+ * and connect to.
248
+ * @param {!BlockSvg} orphanBlock The orphan block that wants to find
249
+ * a home.
250
+ * @param {number} localType The type of the connection being dragged.
251
+ * @return {boolean} Whether there is a home for the orphan or not.
252
+ * @package
253
+ */
254
+ orphanCanConnectAtEnd(topBlock, orphanBlock, localType) {
255
+ const orphanConnection =
256
+ (localType === ConnectionType.OUTPUT_VALUE ?
257
+ orphanBlock.outputConnection :
258
+ orphanBlock.previousConnection);
259
+ return !!Connection.getConnectionForOrphanedConnection(
260
+ /** @type {!Block} **/ (topBlock),
261
+ /** @type {!Connection} **/ (orphanConnection));
262
+ }
261
263
 
262
- /**
263
- * Chooses a connection preview method based on the available connection, the
264
- * current dragged connection, and the block being dragged.
265
- * @param {!RenderedConnection} closest The available connection.
266
- * @param {!RenderedConnection} local The connection currently being
267
- * dragged.
268
- * @param {!BlockSvg} topBlock The block currently being dragged.
269
- * @return {!InsertionMarkerManager.PREVIEW_TYPE} The preview type
270
- * to display.
271
- * @package
272
- */
273
- Renderer.prototype.getConnectionPreviewMethod = function(
274
- closest, local, topBlock) {
275
- if (local.type === ConnectionType.OUTPUT_VALUE ||
276
- local.type === ConnectionType.PREVIOUS_STATEMENT) {
277
- if (!closest.isConnected() ||
278
- this.orphanCanConnectAtEnd(
279
- topBlock,
280
- /** @type {!BlockSvg} */ (closest.targetBlock()), local.type)) {
281
- return InsertionMarkerManager.PREVIEW_TYPE.INSERTION_MARKER;
264
+ /**
265
+ * Chooses a connection preview method based on the available connection, the
266
+ * current dragged connection, and the block being dragged.
267
+ * @param {!RenderedConnection} closest The available connection.
268
+ * @param {!RenderedConnection} local The connection currently being
269
+ * dragged.
270
+ * @param {!BlockSvg} topBlock The block currently being dragged.
271
+ * @return {!InsertionMarkerManager.PREVIEW_TYPE} The preview type
272
+ * to display.
273
+ * @package
274
+ */
275
+ getConnectionPreviewMethod(closest, local, topBlock) {
276
+ if (local.type === ConnectionType.OUTPUT_VALUE ||
277
+ local.type === ConnectionType.PREVIOUS_STATEMENT) {
278
+ if (!closest.isConnected() ||
279
+ this.orphanCanConnectAtEnd(
280
+ topBlock,
281
+ /** @type {!BlockSvg} */ (closest.targetBlock()), local.type)) {
282
+ return InsertionMarkerManager.PREVIEW_TYPE.INSERTION_MARKER;
283
+ }
284
+ return InsertionMarkerManager.PREVIEW_TYPE.REPLACEMENT_FADE;
282
285
  }
283
- return InsertionMarkerManager.PREVIEW_TYPE.REPLACEMENT_FADE;
284
- }
285
286
 
286
- return InsertionMarkerManager.PREVIEW_TYPE.INSERTION_MARKER;
287
- };
287
+ return InsertionMarkerManager.PREVIEW_TYPE.INSERTION_MARKER;
288
+ }
288
289
 
289
- /**
290
- * Render the block.
291
- * @param {!BlockSvg} block The block to render.
292
- * @package
293
- */
294
- Renderer.prototype.render = function(block) {
295
- if (debug.isDebuggerEnabled() && !block.renderingDebugger) {
296
- block.renderingDebugger = this.makeDebugger_();
290
+ /**
291
+ * Render the block.
292
+ * @param {!BlockSvg} block The block to render.
293
+ * @package
294
+ */
295
+ render(block) {
296
+ if (debug.isDebuggerEnabled() && !block.renderingDebugger) {
297
+ block.renderingDebugger = this.makeDebugger_();
298
+ }
299
+ const info = this.makeRenderInfo_(block);
300
+ info.measure();
301
+ this.makeDrawer_(block, info).draw();
297
302
  }
298
- const info = this.makeRenderInfo_(block);
299
- info.measure();
300
- this.makeDrawer_(block, info).draw();
301
- };
303
+ }
302
304
 
303
305
  exports.Renderer = Renderer;
@@ -17,57 +17,57 @@
17
17
  */
18
18
  goog.module('Blockly.geras.ConstantProvider');
19
19
 
20
- const object = goog.require('Blockly.utils.object');
21
20
  const {ConstantProvider: BaseConstantProvider} = goog.require('Blockly.blockRendering.ConstantProvider');
22
21
 
23
22
 
24
23
  /**
25
24
  * An object that provides constants for rendering blocks in Geras mode.
26
- * @constructor
27
- * @package
28
25
  * @extends {BaseConstantProvider}
29
26
  * @alias Blockly.geras.ConstantProvider
30
27
  */
31
- const ConstantProvider = function() {
32
- ConstantProvider.superClass_.constructor.call(this);
33
-
28
+ class ConstantProvider extends BaseConstantProvider {
34
29
  /**
35
- * @override
30
+ * @package
36
31
  */
37
- this.FIELD_TEXT_BASELINE_CENTER = false;
32
+ constructor() {
33
+ super();
38
34
 
39
- // The dark/shadow path in classic rendering is the same as the normal block
40
- // path, but translated down one and right one.
41
- this.DARK_PATH_OFFSET = 1;
35
+ /**
36
+ * @override
37
+ */
38
+ this.FIELD_TEXT_BASELINE_CENTER = false;
42
39
 
43
- /**
44
- * The maximum width of a bottom row that follows a statement input and has
45
- * inputs inline.
46
- * @type {number}
47
- */
48
- this.MAX_BOTTOM_WIDTH = 30;
40
+ // The dark/shadow path in classic rendering is the same as the normal block
41
+ // path, but translated down one and right one.
42
+ this.DARK_PATH_OFFSET = 1;
43
+
44
+ /**
45
+ * The maximum width of a bottom row that follows a statement input and has
46
+ * inputs inline.
47
+ * @type {number}
48
+ */
49
+ this.MAX_BOTTOM_WIDTH = 30;
50
+
51
+ /**
52
+ * @override
53
+ */
54
+ this.STATEMENT_BOTTOM_SPACER = -this.NOTCH_HEIGHT / 2;
55
+ }
49
56
 
50
57
  /**
51
58
  * @override
52
59
  */
53
- this.STATEMENT_BOTTOM_SPACER = -this.NOTCH_HEIGHT / 2;
54
- };
55
- object.inherits(ConstantProvider, BaseConstantProvider);
56
-
57
-
58
- /**
59
- * @override
60
- */
61
- ConstantProvider.prototype.getCSS_ = function(selector) {
62
- return ConstantProvider.superClass_.getCSS_.call(this, selector).concat([
63
- /* eslint-disable indent */
64
- // Insertion marker.
65
- selector + ' .blocklyInsertionMarker>.blocklyPathLight,',
66
- selector + ' .blocklyInsertionMarker>.blocklyPathDark {',
67
- 'fill-opacity: ' + this.INSERTION_MARKER_OPACITY + ';', 'stroke: none;',
68
- '}',
69
- /* eslint-enable indent */
70
- ]);
71
- };
60
+ getCSS_(selector) {
61
+ return super.getCSS_(selector).concat([
62
+ /* eslint-disable indent */
63
+ // Insertion marker.
64
+ selector + ' .blocklyInsertionMarker>.blocklyPathLight,',
65
+ selector + ' .blocklyInsertionMarker>.blocklyPathDark {',
66
+ 'fill-opacity: ' + this.INSERTION_MARKER_OPACITY + ';', 'stroke: none;',
67
+ '}',
68
+ /* eslint-enable indent */
69
+ ]);
70
+ }
71
+ }
72
72
 
73
73
  exports.ConstantProvider = ConstantProvider;