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
@@ -21,116 +21,118 @@ goog.module('Blockly.utils.Coordinate');
21
21
 
22
22
  /**
23
23
  * Class for representing coordinates and positions.
24
- * @param {number} x Left.
25
- * @param {number} y Top.
26
- * @struct
27
- * @constructor
28
24
  * @alias Blockly.utils.Coordinate
29
25
  */
30
- const Coordinate = function(x, y) {
26
+ const Coordinate = class {
31
27
  /**
32
- * X-value
33
- * @type {number}
28
+ * @param {number} x Left.
29
+ * @param {number} y Top.
34
30
  */
35
- this.x = x;
31
+ constructor(x, y) {
32
+ /**
33
+ * X-value
34
+ * @type {number}
35
+ */
36
+ this.x = x;
37
+
38
+ /**
39
+ * Y-value
40
+ * @type {number}
41
+ */
42
+ this.y = y;
43
+ }
36
44
 
37
45
  /**
38
- * Y-value
39
- * @type {number}
46
+ * Creates a new copy of this coordinate.
47
+ * @return {!Coordinate} A copy of this coordinate.
40
48
  */
41
- this.y = y;
42
- };
43
-
44
- /**
45
- * Compares coordinates for equality.
46
- * @param {?Coordinate} a A Coordinate.
47
- * @param {?Coordinate} b A Coordinate.
48
- * @return {boolean} True iff the coordinates are equal, or if both are null.
49
- */
50
- Coordinate.equals = function(a, b) {
51
- if (a === b) {
52
- return true;
53
- }
54
- if (!a || !b) {
55
- return false;
49
+ clone() {
50
+ return new Coordinate(this.x, this.y);
56
51
  }
57
- return a.x === b.x && a.y === b.y;
58
- };
59
52
 
60
- /**
61
- * Returns the distance between two coordinates.
62
- * @param {!Coordinate} a A Coordinate.
63
- * @param {!Coordinate} b A Coordinate.
64
- * @return {number} The distance between `a` and `b`.
65
- */
66
- Coordinate.distance = function(a, b) {
67
- const dx = a.x - b.x;
68
- const dy = a.y - b.y;
69
- return Math.sqrt(dx * dx + dy * dy);
70
- };
53
+ /**
54
+ * Scales this coordinate by the given scale factor.
55
+ * @param {number} s The scale factor to use for both x and y dimensions.
56
+ * @return {!Coordinate} This coordinate after scaling.
57
+ */
58
+ scale(s) {
59
+ this.x *= s;
60
+ this.y *= s;
61
+ return this;
62
+ }
71
63
 
72
- /**
73
- * Returns the magnitude of a coordinate.
74
- * @param {!Coordinate} a A Coordinate.
75
- * @return {number} The distance between the origin and `a`.
76
- */
77
- Coordinate.magnitude = function(a) {
78
- return Math.sqrt(a.x * a.x + a.y * a.y);
79
- };
64
+ /**
65
+ * Translates this coordinate by the given offsets.
66
+ * respectively.
67
+ * @param {number} tx The value to translate x by.
68
+ * @param {number} ty The value to translate y by.
69
+ * @return {!Coordinate} This coordinate after translating.
70
+ */
71
+ translate(tx, ty) {
72
+ this.x += tx;
73
+ this.y += ty;
74
+ return this;
75
+ }
80
76
 
81
- /**
82
- * Returns the difference between two coordinates as a new
83
- * Coordinate.
84
- * @param {!Coordinate|!SVGPoint} a An x/y coordinate.
85
- * @param {!Coordinate|!SVGPoint} b An x/y coordinate.
86
- * @return {!Coordinate} A Coordinate representing the difference
87
- * between `a` and `b`.
88
- */
89
- Coordinate.difference = function(a, b) {
90
- return new Coordinate(a.x - b.x, a.y - b.y);
91
- };
77
+ /**
78
+ * Compares coordinates for equality.
79
+ * @param {?Coordinate} a A Coordinate.
80
+ * @param {?Coordinate} b A Coordinate.
81
+ * @return {boolean} True iff the coordinates are equal, or if both are null.
82
+ */
83
+ static equals(a, b) {
84
+ if (a === b) {
85
+ return true;
86
+ }
87
+ if (!a || !b) {
88
+ return false;
89
+ }
90
+ return a.x === b.x && a.y === b.y;
91
+ }
92
92
 
93
- /**
94
- * Returns the sum of two coordinates as a new Coordinate.
95
- * @param {!Coordinate|!SVGPoint} a An x/y coordinate.
96
- * @param {!Coordinate|!SVGPoint} b An x/y coordinate.
97
- * @return {!Coordinate} A Coordinate representing the sum of
98
- * the two coordinates.
99
- */
100
- Coordinate.sum = function(a, b) {
101
- return new Coordinate(a.x + b.x, a.y + b.y);
102
- };
93
+ /**
94
+ * Returns the distance between two coordinates.
95
+ * @param {!Coordinate} a A Coordinate.
96
+ * @param {!Coordinate} b A Coordinate.
97
+ * @return {number} The distance between `a` and `b`.
98
+ */
99
+ static distance(a, b) {
100
+ const dx = a.x - b.x;
101
+ const dy = a.y - b.y;
102
+ return Math.sqrt(dx * dx + dy * dy);
103
+ }
103
104
 
104
- /**
105
- * Creates a new copy of this coordinate.
106
- * @return {!Coordinate} A copy of this coordinate.
107
- */
108
- Coordinate.prototype.clone = function() {
109
- return new Coordinate(this.x, this.y);
110
- };
105
+ /**
106
+ * Returns the magnitude of a coordinate.
107
+ * @param {!Coordinate} a A Coordinate.
108
+ * @return {number} The distance between the origin and `a`.
109
+ */
110
+ static magnitude(a) {
111
+ return Math.sqrt(a.x * a.x + a.y * a.y);
112
+ }
111
113
 
112
- /**
113
- * Scales this coordinate by the given scale factor.
114
- * @param {number} s The scale factor to use for both x and y dimensions.
115
- * @return {!Coordinate} This coordinate after scaling.
116
- */
117
- Coordinate.prototype.scale = function(s) {
118
- this.x *= s;
119
- this.y *= s;
120
- return this;
121
- };
114
+ /**
115
+ * Returns the difference between two coordinates as a new
116
+ * Coordinate.
117
+ * @param {!Coordinate|!SVGPoint} a An x/y coordinate.
118
+ * @param {!Coordinate|!SVGPoint} b An x/y coordinate.
119
+ * @return {!Coordinate} A Coordinate representing the difference
120
+ * between `a` and `b`.
121
+ */
122
+ static difference(a, b) {
123
+ return new Coordinate(a.x - b.x, a.y - b.y);
124
+ }
122
125
 
123
- /**
124
- * Translates this coordinate by the given offsets.
125
- * respectively.
126
- * @param {number} tx The value to translate x by.
127
- * @param {number} ty The value to translate y by.
128
- * @return {!Coordinate} This coordinate after translating.
129
- */
130
- Coordinate.prototype.translate = function(tx, ty) {
131
- this.x += tx;
132
- this.y += ty;
133
- return this;
126
+ /**
127
+ * Returns the sum of two coordinates as a new Coordinate.
128
+ * @param {!Coordinate|!SVGPoint} a An x/y coordinate.
129
+ * @param {!Coordinate|!SVGPoint} b An x/y coordinate.
130
+ * @return {!Coordinate} A Coordinate representing the sum of
131
+ * the two coordinates.
132
+ */
133
+ static sum(a, b) {
134
+ return new Coordinate(a.x + b.x, a.y + b.y);
135
+ }
134
136
  };
135
137
 
136
138
  exports.Coordinate = Coordinate;
package/core/utils/dom.js CHANGED
@@ -403,11 +403,11 @@ const measureFontMetrics = function(text, fontSize, fontWeight, fontFamily) {
403
403
  span.style.font = fontWeight + ' ' + fontSize + ' ' + fontFamily;
404
404
  span.textContent = text;
405
405
 
406
- const block = document.createElement('div');
406
+ const block = /** @type {!HTMLDivElement} */ (document.createElement('div'));
407
407
  block.style.width = '1px';
408
408
  block.style.height = 0;
409
409
 
410
- const div = document.createElement('div');
410
+ const div = /** @type {!HTMLDivElement} */ (document.createElement('div'));
411
411
  div.setAttribute('style', 'position: fixed; top: 0; left: 0; display: flex;');
412
412
  div.appendChild(span);
413
413
  div.appendChild(block);
@@ -16,6 +16,8 @@
16
16
  goog.module('Blockly.utils.global');
17
17
 
18
18
 
19
+ /* eslint-disable no-undef, no-invalid-this */
20
+
19
21
  /**
20
22
  * Reference to the global object.
21
23
  *
@@ -22,50 +22,54 @@ goog.module('Blockly.utils.Rect');
22
22
 
23
23
  /**
24
24
  * Class for representing rectangular regions.
25
- * @param {number} top Top.
26
- * @param {number} bottom Bottom.
27
- * @param {number} left Left.
28
- * @param {number} right Right.
29
- * @struct
30
- * @constructor
31
25
  * @alias Blockly.utils.Rect
32
26
  */
33
- const Rect = function(top, bottom, left, right) {
34
- /** @type {number} */
35
- this.top = top;
27
+ const Rect = class {
28
+ /**
29
+ * @param {number} top Top.
30
+ * @param {number} bottom Bottom.
31
+ * @param {number} left Left.
32
+ * @param {number} right Right.
33
+ * @struct
34
+ */
35
+ constructor(top, bottom, left, right) {
36
+ /** @type {number} */
37
+ this.top = top;
36
38
 
37
- /** @type {number} */
38
- this.bottom = bottom;
39
+ /** @type {number} */
40
+ this.bottom = bottom;
39
41
 
40
- /** @type {number} */
41
- this.left = left;
42
+ /** @type {number} */
43
+ this.left = left;
42
44
 
43
- /** @type {number} */
44
- this.right = right;
45
- };
45
+ /** @type {number} */
46
+ this.right = right;
47
+ }
46
48
 
47
- /**
48
- * Tests whether this rectangle contains a x/y coordinate.
49
- *
50
- * @param {number} x The x coordinate to test for containment.
51
- * @param {number} y The y coordinate to test for containment.
52
- * @return {boolean} Whether this rectangle contains given coordinate.
53
- */
54
- Rect.prototype.contains = function(x, y) {
55
- return x >= this.left && x <= this.right && y >= this.top && y <= this.bottom;
56
- };
49
+ /**
50
+ * Tests whether this rectangle contains a x/y coordinate.
51
+ *
52
+ * @param {number} x The x coordinate to test for containment.
53
+ * @param {number} y The y coordinate to test for containment.
54
+ * @return {boolean} Whether this rectangle contains given coordinate.
55
+ */
56
+ contains(x, y) {
57
+ return x >= this.left && x <= this.right && y >= this.top &&
58
+ y <= this.bottom;
59
+ }
57
60
 
58
- /**
59
- * Tests whether this rectangle intersects the provided rectangle.
60
- * Assumes that the coordinate system increases going down and left.
61
- * @param {!Rect} other The other rectangle to check for
62
- * intersection with.
63
- * @return {boolean} Whether this rectangle intersects the provided rectangle.
64
- */
65
- Rect.prototype.intersects = function(other) {
66
- return !(
67
- this.left > other.right || this.right < other.left ||
68
- this.top > other.bottom || this.bottom < other.top);
61
+ /**
62
+ * Tests whether this rectangle intersects the provided rectangle.
63
+ * Assumes that the coordinate system increases going down and left.
64
+ * @param {!Rect} other The other rectangle to check for
65
+ * intersection with.
66
+ * @return {boolean} Whether this rectangle intersects the provided rectangle.
67
+ */
68
+ intersects(other) {
69
+ return !(
70
+ this.left > other.right || this.right < other.left ||
71
+ this.top > other.bottom || this.bottom < other.top);
72
+ }
69
73
  };
70
74
 
71
75
  exports.Rect = Rect;
@@ -0,0 +1,25 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ /**
8
+ * @fileoverview A type used to create flag values (e.g. SKIP_SETUP).
9
+ */
10
+ 'use strict';
11
+
12
+ /**
13
+ * A type used to create flag values.
14
+ * @class
15
+ */
16
+ goog.module('Blockly.utils.Sentinel');
17
+
18
+
19
+ /**
20
+ * A type used to create flag values.
21
+ * @alias Blockly.utils.Sentinel
22
+ */
23
+ class Sentinel {}
24
+
25
+ exports.Sentinel = Sentinel;
@@ -22,41 +22,44 @@ goog.module('Blockly.utils.Size');
22
22
 
23
23
  /**
24
24
  * Class for representing sizes consisting of a width and height.
25
- * @param {number} width Width.
26
- * @param {number} height Height.
27
- * @struct
28
- * @constructor
29
25
  * @alias Blockly.utils.Size
30
26
  */
31
- const Size = function(width, height) {
27
+ const Size = class {
32
28
  /**
33
- * Width
34
- * @type {number}
29
+ * @param {number} width Width.
30
+ * @param {number} height Height.
31
+ * @struct
35
32
  */
36
- this.width = width;
33
+ constructor(width, height) {
34
+ /**
35
+ * Width
36
+ * @type {number}
37
+ */
38
+ this.width = width;
39
+
40
+ /**
41
+ * Height
42
+ * @type {number}
43
+ */
44
+ this.height = height;
45
+ }
37
46
 
38
47
  /**
39
- * Height
40
- * @type {number}
48
+ * Compares sizes for equality.
49
+ * @param {?Size} a A Size.
50
+ * @param {?Size} b A Size.
51
+ * @return {boolean} True iff the sizes have equal widths and equal
52
+ * heights, or if both are null.
41
53
  */
42
- this.height = height;
43
- };
44
-
45
- /**
46
- * Compares sizes for equality.
47
- * @param {?Size} a A Size.
48
- * @param {?Size} b A Size.
49
- * @return {boolean} True iff the sizes have equal widths and equal
50
- * heights, or if both are null.
51
- */
52
- Size.equals = function(a, b) {
53
- if (a === b) {
54
- return true;
55
- }
56
- if (!a || !b) {
57
- return false;
54
+ static equals(a, b) {
55
+ if (a === b) {
56
+ return true;
57
+ }
58
+ if (!a || !b) {
59
+ return false;
60
+ }
61
+ return a.width === b.width && a.height === b.height;
58
62
  }
59
- return a.width === b.width && a.height === b.height;
60
63
  };
61
64
 
62
65
  exports.Size = Size;
package/core/utils/svg.js CHANGED
@@ -20,28 +20,30 @@ goog.module('Blockly.utils.Svg');
20
20
 
21
21
  /**
22
22
  * A name with the type of the SVG element stored in the generic.
23
- * @param {string} tagName The SVG element tag name.
24
- * @constructor
25
23
  * @template T
26
- * @private
27
24
  * @alias Blockly.utils.Svg
28
25
  */
29
- const Svg = function(tagName) {
26
+ class Svg {
30
27
  /**
31
- * @type {string}
32
- * @private
28
+ * @param {string} tagName The SVG element tag name.
29
+ * @package
33
30
  */
34
- this.tagName_ = tagName;
35
- };
31
+ constructor(tagName) {
32
+ /**
33
+ * @type {string}
34
+ * @private
35
+ */
36
+ this.tagName_ = tagName;
37
+ }
36
38
 
37
- /**
38
- * Returns the SVG element tag name.
39
- * @return {string} The name.
40
- * @override
41
- */
42
- Svg.prototype.toString = function() {
43
- return this.tagName_;
44
- };
39
+ /**
40
+ * Returns the SVG element tag name.
41
+ * @return {string} The name.
42
+ */
43
+ toString() {
44
+ return this.tagName_;
45
+ }
46
+ }
45
47
 
46
48
  /**
47
49
  * @type {!Svg<!SVGAnimateElement>}