blockly 7.20211209.2 → 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
@@ -16,66 +16,67 @@
16
16
  goog.module('Blockly.Events.ToolboxItemSelect');
17
17
 
18
18
  const eventUtils = goog.require('Blockly.Events.utils');
19
- const object = goog.require('Blockly.utils.object');
20
19
  const registry = goog.require('Blockly.registry');
21
20
  const {UiBase} = goog.require('Blockly.Events.UiBase');
22
21
 
23
22
 
24
23
  /**
25
24
  * Class for a toolbox item select event.
26
- * @param {?string=} opt_oldItem The previously selected toolbox item. Undefined
27
- * for a blank event.
28
- * @param {?string=} opt_newItem The newly selected toolbox item. Undefined for
29
- * a blank event.
30
- * @param {string=} opt_workspaceId The workspace identifier for this event.
31
- * Undefined for a blank event.
32
25
  * @extends {UiBase}
33
- * @constructor
34
26
  * @alias Blockly.Events.ToolboxItemSelect
35
27
  */
36
- const ToolboxItemSelect = function(opt_oldItem, opt_newItem, opt_workspaceId) {
37
- ToolboxItemSelect.superClass_.constructor.call(this, opt_workspaceId);
38
-
28
+ class ToolboxItemSelect extends UiBase {
39
29
  /**
40
- * The previously selected toolbox item.
41
- * @type {?string|undefined}
30
+ * @param {?string=} opt_oldItem The previously selected toolbox item.
31
+ * Undefined for a blank event.
32
+ * @param {?string=} opt_newItem The newly selected toolbox item. Undefined
33
+ * for a blank event.
34
+ * @param {string=} opt_workspaceId The workspace identifier for this event.
35
+ * Undefined for a blank event.
42
36
  */
43
- this.oldItem = opt_oldItem;
37
+ constructor(opt_oldItem, opt_newItem, opt_workspaceId) {
38
+ super(opt_workspaceId);
44
39
 
45
- /**
46
- * The newly selected toolbox item.
47
- * @type {?string|undefined}
48
- */
49
- this.newItem = opt_newItem;
50
- };
51
- object.inherits(ToolboxItemSelect, UiBase);
40
+ /**
41
+ * The previously selected toolbox item.
42
+ * @type {?string|undefined}
43
+ */
44
+ this.oldItem = opt_oldItem;
52
45
 
53
- /**
54
- * Type of this event.
55
- * @type {string}
56
- */
57
- ToolboxItemSelect.prototype.type = eventUtils.TOOLBOX_ITEM_SELECT;
46
+ /**
47
+ * The newly selected toolbox item.
48
+ * @type {?string|undefined}
49
+ */
50
+ this.newItem = opt_newItem;
58
51
 
59
- /**
60
- * Encode the event as JSON.
61
- * @return {!Object} JSON representation.
62
- */
63
- ToolboxItemSelect.prototype.toJson = function() {
64
- const json = ToolboxItemSelect.superClass_.toJson.call(this);
65
- json['oldItem'] = this.oldItem;
66
- json['newItem'] = this.newItem;
67
- return json;
68
- };
52
+ /**
53
+ * Type of this event.
54
+ * @type {string}
55
+ */
56
+ this.type = eventUtils.TOOLBOX_ITEM_SELECT;
57
+ }
69
58
 
70
- /**
71
- * Decode the JSON event.
72
- * @param {!Object} json JSON representation.
73
- */
74
- ToolboxItemSelect.prototype.fromJson = function(json) {
75
- ToolboxItemSelect.superClass_.fromJson.call(this, json);
76
- this.oldItem = json['oldItem'];
77
- this.newItem = json['newItem'];
78
- };
59
+ /**
60
+ * Encode the event as JSON.
61
+ * @return {!Object} JSON representation.
62
+ */
63
+ toJson() {
64
+ const json = super.toJson();
65
+ json['oldItem'] = this.oldItem;
66
+ json['newItem'] = this.newItem;
67
+ return json;
68
+ }
69
+
70
+ /**
71
+ * Decode the JSON event.
72
+ * @param {!Object} json JSON representation.
73
+ */
74
+ fromJson(json) {
75
+ super.fromJson(json);
76
+ this.oldItem = json['oldItem'];
77
+ this.newItem = json['newItem'];
78
+ }
79
+ }
79
80
 
80
81
  registry.register(
81
82
  registry.Type.EVENT, eventUtils.TOOLBOX_ITEM_SELECT, ToolboxItemSelect);
@@ -16,56 +16,57 @@
16
16
  goog.module('Blockly.Events.TrashcanOpen');
17
17
 
18
18
  const eventUtils = goog.require('Blockly.Events.utils');
19
- const object = goog.require('Blockly.utils.object');
20
19
  const registry = goog.require('Blockly.registry');
21
20
  const {UiBase} = goog.require('Blockly.Events.UiBase');
22
21
 
23
22
 
24
23
  /**
25
24
  * Class for a trashcan open event.
26
- * @param {boolean=} opt_isOpen Whether the trashcan flyout is opening (false if
27
- * opening). Undefined for a blank event.
28
- * @param {string=} opt_workspaceId The workspace identifier for this event.
29
- * Undefined for a blank event.
30
25
  * @extends {UiBase}
31
- * @constructor
32
26
  * @alias Blockly.Events.TrashcanOpen
33
27
  */
34
- const TrashcanOpen = function(opt_isOpen, opt_workspaceId) {
35
- TrashcanOpen.superClass_.constructor.call(this, opt_workspaceId);
36
-
28
+ class TrashcanOpen extends UiBase {
37
29
  /**
38
- * Whether the trashcan flyout is opening (false if closing).
39
- * @type {boolean|undefined}
30
+ * @param {boolean=} opt_isOpen Whether the trashcan flyout is opening (false
31
+ * if opening). Undefined for a blank event.
32
+ * @param {string=} opt_workspaceId The workspace identifier for this event.
33
+ * Undefined for a blank event.
40
34
  */
41
- this.isOpen = opt_isOpen;
42
- };
43
- object.inherits(TrashcanOpen, UiBase);
35
+ constructor(opt_isOpen, opt_workspaceId) {
36
+ super(opt_workspaceId);
44
37
 
45
- /**
46
- * Type of this event.
47
- * @type {string}
48
- */
49
- TrashcanOpen.prototype.type = eventUtils.TRASHCAN_OPEN;
38
+ /**
39
+ * Whether the trashcan flyout is opening (false if closing).
40
+ * @type {boolean|undefined}
41
+ */
42
+ this.isOpen = opt_isOpen;
50
43
 
51
- /**
52
- * Encode the event as JSON.
53
- * @return {!Object} JSON representation.
54
- */
55
- TrashcanOpen.prototype.toJson = function() {
56
- const json = TrashcanOpen.superClass_.toJson.call(this);
57
- json['isOpen'] = this.isOpen;
58
- return json;
59
- };
44
+ /**
45
+ * Type of this event.
46
+ * @type {string}
47
+ */
48
+ this.type = eventUtils.TRASHCAN_OPEN;
49
+ }
60
50
 
61
- /**
62
- * Decode the JSON event.
63
- * @param {!Object} json JSON representation.
64
- */
65
- TrashcanOpen.prototype.fromJson = function(json) {
66
- TrashcanOpen.superClass_.fromJson.call(this, json);
67
- this.isOpen = json['isOpen'];
68
- };
51
+ /**
52
+ * Encode the event as JSON.
53
+ * @return {!Object} JSON representation.
54
+ */
55
+ toJson() {
56
+ const json = super.toJson();
57
+ json['isOpen'] = this.isOpen;
58
+ return json;
59
+ }
60
+
61
+ /**
62
+ * Decode the JSON event.
63
+ * @param {!Object} json JSON representation.
64
+ */
65
+ fromJson(json) {
66
+ super.fromJson(json);
67
+ this.isOpen = json['isOpen'];
68
+ }
69
+ }
69
70
 
70
71
  registry.register(registry.Type.EVENT, eventUtils.TRASHCAN_OPEN, TrashcanOpen);
71
72
 
@@ -18,7 +18,6 @@
18
18
  goog.module('Blockly.Events.Ui');
19
19
 
20
20
  const eventUtils = goog.require('Blockly.Events.utils');
21
- const object = goog.require('Blockly.utils.object');
22
21
  const registry = goog.require('Blockly.registry');
23
22
  /* eslint-disable-next-line no-unused-vars */
24
23
  const {Block} = goog.requireType('Blockly.Block');
@@ -27,60 +26,62 @@ const {UiBase} = goog.require('Blockly.Events.UiBase');
27
26
 
28
27
  /**
29
28
  * Class for a UI event.
30
- * @param {?Block=} opt_block The affected block. Null for UI events
31
- * that do not have an associated block. Undefined for a blank event.
32
- * @param {string=} opt_element One of 'selected', 'comment', 'mutatorOpen',
33
- * etc.
34
- * @param {*=} opt_oldValue Previous value of element.
35
- * @param {*=} opt_newValue New value of element.
36
29
  * @extends {UiBase}
37
30
  * @deprecated December 2020. Instead use a more specific UI event.
38
- * @constructor
39
31
  * @alias Blockly.Events.Ui
40
32
  */
41
- const Ui = function(opt_block, opt_element, opt_oldValue, opt_newValue) {
42
- const workspaceId = opt_block ? opt_block.workspace.id : undefined;
43
- Ui.superClass_.constructor.call(this, workspaceId);
33
+ class Ui extends UiBase {
34
+ /**
35
+ * @param {?Block=} opt_block The affected block. Null for UI events
36
+ * that do not have an associated block. Undefined for a blank event.
37
+ * @param {string=} opt_element One of 'selected', 'comment', 'mutatorOpen',
38
+ * etc.
39
+ * @param {*=} opt_oldValue Previous value of element.
40
+ * @param {*=} opt_newValue New value of element.
41
+ */
42
+ constructor(opt_block, opt_element, opt_oldValue, opt_newValue) {
43
+ const workspaceId = opt_block ? opt_block.workspace.id : undefined;
44
+ super(workspaceId);
44
45
 
45
- this.blockId = opt_block ? opt_block.id : null;
46
- this.element = typeof opt_element === 'undefined' ? '' : opt_element;
47
- this.oldValue = typeof opt_oldValue === 'undefined' ? '' : opt_oldValue;
48
- this.newValue = typeof opt_newValue === 'undefined' ? '' : opt_newValue;
49
- };
50
- object.inherits(Ui, UiBase);
46
+ this.blockId = opt_block ? opt_block.id : null;
47
+ this.element = typeof opt_element === 'undefined' ? '' : opt_element;
48
+ this.oldValue = typeof opt_oldValue === 'undefined' ? '' : opt_oldValue;
49
+ this.newValue = typeof opt_newValue === 'undefined' ? '' : opt_newValue;
51
50
 
52
- /**
53
- * Type of this event.
54
- * @type {string}
55
- */
56
- Ui.prototype.type = eventUtils.UI;
57
-
58
- /**
59
- * Encode the event as JSON.
60
- * @return {!Object} JSON representation.
61
- */
62
- Ui.prototype.toJson = function() {
63
- const json = Ui.superClass_.toJson.call(this);
64
- json['element'] = this.element;
65
- if (this.newValue !== undefined) {
66
- json['newValue'] = this.newValue;
51
+ /**
52
+ * Type of this event.
53
+ * @type {string}
54
+ */
55
+ this.type = eventUtils.UI;
67
56
  }
68
- if (this.blockId) {
69
- json['blockId'] = this.blockId;
57
+
58
+ /**
59
+ * Encode the event as JSON.
60
+ * @return {!Object} JSON representation.
61
+ */
62
+ toJson() {
63
+ const json = super.toJson();
64
+ json['element'] = this.element;
65
+ if (this.newValue !== undefined) {
66
+ json['newValue'] = this.newValue;
67
+ }
68
+ if (this.blockId) {
69
+ json['blockId'] = this.blockId;
70
+ }
71
+ return json;
70
72
  }
71
- return json;
72
- };
73
73
 
74
- /**
75
- * Decode the JSON event.
76
- * @param {!Object} json JSON representation.
77
- */
78
- Ui.prototype.fromJson = function(json) {
79
- Ui.superClass_.fromJson.call(this, json);
80
- this.element = json['element'];
81
- this.newValue = json['newValue'];
82
- this.blockId = json['blockId'];
83
- };
74
+ /**
75
+ * Decode the JSON event.
76
+ * @param {!Object} json JSON representation.
77
+ */
78
+ fromJson(json) {
79
+ super.fromJson(json);
80
+ this.element = json['element'];
81
+ this.newValue = json['newValue'];
82
+ this.blockId = json['blockId'];
83
+ }
84
+ }
84
85
 
85
86
  registry.register(registry.Type.EVENT, eventUtils.UI, Ui);
86
87
 
@@ -17,8 +17,7 @@
17
17
  */
18
18
  goog.module('Blockly.Events.UiBase');
19
19
 
20
- const Abstract = goog.require('Blockly.Events.Abstract');
21
- const object = goog.require('Blockly.utils.object');
20
+ const {Abstract: AbstractEvent} = goog.require('Blockly.Events.Abstract');
22
21
 
23
22
 
24
23
  /**
@@ -27,36 +26,38 @@ const object = goog.require('Blockly.utils.object');
27
26
  * editing to work (e.g. scrolling the workspace, zooming, opening toolbox
28
27
  * categories).
29
28
  * UI events do not undo or redo.
30
- * @param {string=} opt_workspaceId The workspace identifier for this event.
31
- * Undefined for a blank event.
32
- * @extends {Abstract}
33
- * @constructor
29
+ * @extends {AbstractEvent}
34
30
  * @alias Blockly.Events.UiBase
35
31
  */
36
- const UiBase = function(opt_workspaceId) {
37
- UiBase.superClass_.constructor.call(this);
38
-
39
- /**
40
- * Whether or not the event is blank (to be populated by fromJson).
41
- * @type {boolean}
42
- */
43
- this.isBlank = typeof opt_workspaceId === 'undefined';
44
-
32
+ class UiBase extends AbstractEvent {
45
33
  /**
46
- * The workspace identifier for this event.
47
- * @type {string}
34
+ * @param {string=} opt_workspaceId The workspace identifier for this event.
35
+ * Undefined for a blank event.
48
36
  */
49
- this.workspaceId = opt_workspaceId ? opt_workspaceId : '';
50
-
51
- // UI events do not undo or redo.
52
- this.recordUndo = false;
53
- };
54
- object.inherits(UiBase, Abstract);
55
-
56
- /**
57
- * Whether or not the event is a UI event.
58
- * @type {boolean}
59
- */
60
- UiBase.prototype.isUiEvent = true;
37
+ constructor(opt_workspaceId) {
38
+ super();
39
+
40
+ /**
41
+ * Whether or not the event is blank (to be populated by fromJson).
42
+ * @type {boolean}
43
+ */
44
+ this.isBlank = typeof opt_workspaceId === 'undefined';
45
+
46
+ /**
47
+ * The workspace identifier for this event.
48
+ * @type {string}
49
+ */
50
+ this.workspaceId = opt_workspaceId ? opt_workspaceId : '';
51
+
52
+ // UI events do not undo or redo.
53
+ this.recordUndo = false;
54
+
55
+ /**
56
+ * Whether or not the event is a UI event.
57
+ * @type {boolean}
58
+ */
59
+ this.isUiEvent = true;
60
+ }
61
+ }
61
62
 
62
63
  exports.UiBase = UiBase;
@@ -15,55 +15,56 @@
15
15
  */
16
16
  goog.module('Blockly.Events.VarBase');
17
17
 
18
- const Abstract = goog.require('Blockly.Events.Abstract');
19
- const object = goog.require('Blockly.utils.object');
18
+ const {Abstract: AbstractEvent} = goog.require('Blockly.Events.Abstract');
20
19
  /* eslint-disable-next-line no-unused-vars */
21
20
  const {VariableModel} = goog.requireType('Blockly.VariableModel');
22
21
 
23
22
 
24
23
  /**
25
24
  * Abstract class for a variable event.
26
- * @param {!VariableModel=} opt_variable The variable this event
27
- * corresponds to. Undefined for a blank event.
28
- * @extends {Abstract}
29
- * @constructor
25
+ * @extends {AbstractEvent}
30
26
  * @alias Blockly.Events.VarBase
31
27
  */
32
- const VarBase = function(opt_variable) {
33
- VarBase.superClass_.constructor.call(this);
34
- this.isBlank = typeof opt_variable === 'undefined';
35
-
28
+ class VarBase extends AbstractEvent {
36
29
  /**
37
- * The variable id for the variable this event pertains to.
38
- * @type {string}
30
+ * @param {!VariableModel=} opt_variable The variable this event
31
+ * corresponds to. Undefined for a blank event.
39
32
  */
40
- this.varId = this.isBlank ? '' : opt_variable.getId();
33
+ constructor(opt_variable) {
34
+ super();
35
+ this.isBlank = typeof opt_variable === 'undefined';
36
+
37
+ /**
38
+ * The variable id for the variable this event pertains to.
39
+ * @type {string}
40
+ */
41
+ this.varId = this.isBlank ? '' : opt_variable.getId();
42
+
43
+ /**
44
+ * The workspace identifier for this event.
45
+ * @type {string}
46
+ */
47
+ this.workspaceId = this.isBlank ? '' : opt_variable.workspace.id;
48
+ }
41
49
 
42
50
  /**
43
- * The workspace identifier for this event.
44
- * @type {string}
51
+ * Encode the event as JSON.
52
+ * @return {!Object} JSON representation.
45
53
  */
46
- this.workspaceId = this.isBlank ? '' : opt_variable.workspace.id;
47
- };
48
- object.inherits(VarBase, Abstract);
49
-
50
- /**
51
- * Encode the event as JSON.
52
- * @return {!Object} JSON representation.
53
- */
54
- VarBase.prototype.toJson = function() {
55
- const json = VarBase.superClass_.toJson.call(this);
56
- json['varId'] = this.varId;
57
- return json;
58
- };
54
+ toJson() {
55
+ const json = super.toJson();
56
+ json['varId'] = this.varId;
57
+ return json;
58
+ }
59
59
 
60
- /**
61
- * Decode the JSON event.
62
- * @param {!Object} json JSON representation.
63
- */
64
- VarBase.prototype.fromJson = function(json) {
65
- VarBase.superClass_.toJson.call(this);
66
- this.varId = json['varId'];
67
- };
60
+ /**
61
+ * Decode the JSON event.
62
+ * @param {!Object} json JSON representation.
63
+ */
64
+ fromJson(json) {
65
+ super.fromJson(json);
66
+ this.varId = json['varId'];
67
+ }
68
+ }
68
69
 
69
70
  exports.VarBase = VarBase;
@@ -16,7 +16,6 @@
16
16
  goog.module('Blockly.Events.VarCreate');
17
17
 
18
18
  const eventUtils = goog.require('Blockly.Events.utils');
19
- const object = goog.require('Blockly.utils.object');
20
19
  const registry = goog.require('Blockly.registry');
21
20
  const {VarBase} = goog.require('Blockly.Events.VarBase');
22
21
  /* eslint-disable-next-line no-unused-vars */
@@ -25,62 +24,65 @@ const {VariableModel} = goog.requireType('Blockly.VariableModel');
25
24
 
26
25
  /**
27
26
  * Class for a variable creation event.
28
- * @param {!VariableModel=} opt_variable The created variable. Undefined
29
- * for a blank event.
30
27
  * @extends {VarBase}
31
- * @constructor
32
28
  * @alias Blockly.Events.VarCreate
33
29
  */
34
- const VarCreate = function(opt_variable) {
35
- VarCreate.superClass_.constructor.call(this, opt_variable);
36
- if (!opt_variable) {
37
- return; // Blank event to be populated by fromJson.
38
- }
30
+ class VarCreate extends VarBase {
31
+ /**
32
+ * @param {!VariableModel=} opt_variable The created variable. Undefined
33
+ * for a blank event.
34
+ */
35
+ constructor(opt_variable) {
36
+ super(opt_variable);
39
37
 
40
- this.varType = opt_variable.type;
41
- this.varName = opt_variable.name;
42
- };
43
- object.inherits(VarCreate, VarBase);
38
+ /**
39
+ * Type of this event.
40
+ * @type {string}
41
+ */
42
+ this.type = eventUtils.VAR_CREATE;
44
43
 
45
- /**
46
- * Type of this event.
47
- * @type {string}
48
- */
49
- VarCreate.prototype.type = eventUtils.VAR_CREATE;
44
+ if (!opt_variable) {
45
+ return; // Blank event to be populated by fromJson.
46
+ }
50
47
 
51
- /**
52
- * Encode the event as JSON.
53
- * @return {!Object} JSON representation.
54
- */
55
- VarCreate.prototype.toJson = function() {
56
- const json = VarCreate.superClass_.toJson.call(this);
57
- json['varType'] = this.varType;
58
- json['varName'] = this.varName;
59
- return json;
60
- };
48
+ this.varType = opt_variable.type;
49
+ this.varName = opt_variable.name;
50
+ }
61
51
 
62
- /**
63
- * Decode the JSON event.
64
- * @param {!Object} json JSON representation.
65
- */
66
- VarCreate.prototype.fromJson = function(json) {
67
- VarCreate.superClass_.fromJson.call(this, json);
68
- this.varType = json['varType'];
69
- this.varName = json['varName'];
70
- };
52
+ /**
53
+ * Encode the event as JSON.
54
+ * @return {!Object} JSON representation.
55
+ */
56
+ toJson() {
57
+ const json = super.toJson();
58
+ json['varType'] = this.varType;
59
+ json['varName'] = this.varName;
60
+ return json;
61
+ }
71
62
 
72
- /**
73
- * Run a variable creation event.
74
- * @param {boolean} forward True if run forward, false if run backward (undo).
75
- */
76
- VarCreate.prototype.run = function(forward) {
77
- const workspace = this.getEventWorkspace_();
78
- if (forward) {
79
- workspace.createVariable(this.varName, this.varType, this.varId);
80
- } else {
81
- workspace.deleteVariableById(this.varId);
63
+ /**
64
+ * Decode the JSON event.
65
+ * @param {!Object} json JSON representation.
66
+ */
67
+ fromJson(json) {
68
+ super.fromJson(json);
69
+ this.varType = json['varType'];
70
+ this.varName = json['varName'];
71
+ }
72
+
73
+ /**
74
+ * Run a variable creation event.
75
+ * @param {boolean} forward True if run forward, false if run backward (undo).
76
+ */
77
+ run(forward) {
78
+ const workspace = this.getEventWorkspace_();
79
+ if (forward) {
80
+ workspace.createVariable(this.varName, this.varType, this.varId);
81
+ } else {
82
+ workspace.deleteVariableById(this.varId);
83
+ }
82
84
  }
83
- };
85
+ }
84
86
 
85
87
  registry.register(registry.Type.EVENT, eventUtils.VAR_CREATE, VarCreate);
86
88