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
@@ -15,11 +15,10 @@
15
15
  */
16
16
  goog.module('Blockly.Events.CommentBase');
17
17
 
18
- const AbstractEvents = goog.require('Blockly.Events.Abstract');
19
18
  const Xml = goog.require('Blockly.Xml');
20
19
  const eventUtils = goog.require('Blockly.Events.utils');
21
- const object = goog.require('Blockly.utils.object');
22
20
  const utilsXml = goog.require('Blockly.utils.xml');
21
+ const {Abstract: AbstractEvent} = goog.require('Blockly.Events.Abstract');
23
22
  /* eslint-disable-next-line no-unused-vars */
24
23
  const {CommentCreate} = goog.requireType('Blockly.Events.CommentCreate');
25
24
  /* eslint-disable-next-line no-unused-vars */
@@ -30,89 +29,93 @@ const {WorkspaceComment} = goog.requireType('Blockly.WorkspaceComment');
30
29
 
31
30
  /**
32
31
  * Abstract class for a comment event.
33
- * @param {!WorkspaceComment=} opt_comment The comment this event
34
- * corresponds to. Undefined for a blank event.
35
- * @extends {AbstractEvents}
36
- * @constructor
32
+ * @extends {AbstractEvent}
37
33
  * @alias Blockly.Events.CommentBase
38
34
  */
39
- const CommentBase = function(opt_comment) {
35
+ class CommentBase extends AbstractEvent {
40
36
  /**
41
- * Whether or not an event is blank.
42
- * @type {boolean}
37
+ * @param {!WorkspaceComment=} opt_comment The comment this event
38
+ * corresponds to. Undefined for a blank event.
43
39
  */
44
- this.isBlank = typeof opt_comment === 'undefined';
40
+ constructor(opt_comment) {
41
+ super();
42
+ /**
43
+ * Whether or not an event is blank.
44
+ * @type {boolean}
45
+ */
46
+ this.isBlank = typeof opt_comment === 'undefined';
45
47
 
46
- /**
47
- * The ID of the comment this event pertains to.
48
- * @type {string}
49
- */
50
- this.commentId = this.isBlank ? '' : opt_comment.id;
48
+ /**
49
+ * The ID of the comment this event pertains to.
50
+ * @type {string}
51
+ */
52
+ this.commentId = this.isBlank ? '' : opt_comment.id;
51
53
 
52
- /**
53
- * The workspace identifier for this event.
54
- * @type {string}
55
- */
56
- this.workspaceId = this.isBlank ? '' : opt_comment.workspace.id;
54
+ /**
55
+ * The workspace identifier for this event.
56
+ * @type {string}
57
+ */
58
+ this.workspaceId = this.isBlank ? '' : opt_comment.workspace.id;
59
+
60
+ /**
61
+ * The event group id for the group this event belongs to. Groups define
62
+ * events that should be treated as an single action from the user's
63
+ * perspective, and should be undone together.
64
+ * @type {string}
65
+ */
66
+ this.group = eventUtils.getGroup();
67
+
68
+ /**
69
+ * Sets whether the event should be added to the undo stack.
70
+ * @type {boolean}
71
+ */
72
+ this.recordUndo = eventUtils.getRecordUndo();
73
+ }
57
74
 
58
75
  /**
59
- * The event group id for the group this event belongs to. Groups define
60
- * events that should be treated as an single action from the user's
61
- * perspective, and should be undone together.
62
- * @type {string}
76
+ * Encode the event as JSON.
77
+ * @return {!Object} JSON representation.
63
78
  */
64
- this.group = eventUtils.getGroup();
79
+ toJson() {
80
+ const json = super.toJson();
81
+ if (this.commentId) {
82
+ json['commentId'] = this.commentId;
83
+ }
84
+ return json;
85
+ }
65
86
 
66
87
  /**
67
- * Sets whether the event should be added to the undo stack.
68
- * @type {boolean}
88
+ * Decode the JSON event.
89
+ * @param {!Object} json JSON representation.
69
90
  */
70
- this.recordUndo = eventUtils.getRecordUndo();
71
- };
72
- object.inherits(CommentBase, AbstractEvents);
73
-
74
- /**
75
- * Encode the event as JSON.
76
- * @return {!Object} JSON representation.
77
- */
78
- CommentBase.prototype.toJson = function() {
79
- const json = CommentBase.superClass_.toJson.call(this);
80
- if (this.commentId) {
81
- json['commentId'] = this.commentId;
91
+ fromJson(json) {
92
+ super.fromJson(json);
93
+ this.commentId = json['commentId'];
82
94
  }
83
- return json;
84
- };
85
-
86
- /**
87
- * Decode the JSON event.
88
- * @param {!Object} json JSON representation.
89
- */
90
- CommentBase.prototype.fromJson = function(json) {
91
- CommentBase.superClass_.fromJson.call(this, json);
92
- this.commentId = json['commentId'];
93
- };
94
95
 
95
- /**
96
- * Helper function for Comment[Create|Delete]
97
- * @param {!CommentCreate|!CommentDelete} event
98
- * The event to run.
99
- * @param {boolean} create if True then Create, if False then Delete
100
- */
101
- CommentBase.CommentCreateDeleteHelper = function(event, create) {
102
- const workspace = event.getEventWorkspace_();
103
- if (create) {
104
- const xmlElement = utilsXml.createElement('xml');
105
- xmlElement.appendChild(event.xml);
106
- Xml.domToWorkspace(xmlElement, workspace);
107
- } else {
108
- const comment = workspace.getCommentById(event.commentId);
109
- if (comment) {
110
- comment.dispose();
96
+ /**
97
+ * Helper function for Comment[Create|Delete]
98
+ * @param {!CommentCreate|!CommentDelete} event
99
+ * The event to run.
100
+ * @param {boolean} create if True then Create, if False then Delete
101
+ */
102
+ static CommentCreateDeleteHelper(event, create) {
103
+ const workspace = event.getEventWorkspace_();
104
+ if (create) {
105
+ const xmlElement = utilsXml.createElement('xml');
106
+ xmlElement.appendChild(event.xml);
107
+ Xml.domToWorkspace(xmlElement, workspace);
111
108
  } else {
112
- // Only complain about root-level block.
113
- console.warn('Can\'t uncreate non-existent comment: ' + event.commentId);
109
+ const comment = workspace.getCommentById(event.commentId);
110
+ if (comment) {
111
+ comment.dispose();
112
+ } else {
113
+ // Only complain about root-level block.
114
+ console.warn(
115
+ 'Can\'t uncreate non-existent comment: ' + event.commentId);
116
+ }
114
117
  }
115
118
  }
116
- };
119
+ }
117
120
 
118
121
  exports.CommentBase = CommentBase;
@@ -16,7 +16,6 @@
16
16
  goog.module('Blockly.Events.CommentChange');
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 {CommentBase} = goog.require('Blockly.Events.CommentBase');
22
21
  /* eslint-disable-next-line no-unused-vars */
@@ -25,77 +24,80 @@ const {WorkspaceComment} = goog.requireType('Blockly.WorkspaceComment');
25
24
 
26
25
  /**
27
26
  * Class for a comment change event.
28
- * @param {!WorkspaceComment=} opt_comment The comment that is being
29
- * changed. Undefined for a blank event.
30
- * @param {string=} opt_oldContents Previous contents of the comment.
31
- * @param {string=} opt_newContents New contents of the comment.
32
27
  * @extends {CommentBase}
33
- * @constructor
34
28
  * @alias Blockly.Events.CommentChange
35
29
  */
36
- const CommentChange = function(opt_comment, opt_oldContents, opt_newContents) {
37
- CommentChange.superClass_.constructor.call(this, opt_comment);
38
- if (!opt_comment) {
39
- return; // Blank event to be populated by fromJson.
40
- }
30
+ class CommentChange extends CommentBase {
31
+ /**
32
+ * @param {!WorkspaceComment=} opt_comment The comment that is being
33
+ * changed. Undefined for a blank event.
34
+ * @param {string=} opt_oldContents Previous contents of the comment.
35
+ * @param {string=} opt_newContents New contents of the comment.
36
+ */
37
+ constructor(opt_comment, opt_oldContents, opt_newContents) {
38
+ super(opt_comment);
41
39
 
42
- this.oldContents_ =
43
- typeof opt_oldContents === 'undefined' ? '' : opt_oldContents;
44
- this.newContents_ =
45
- typeof opt_newContents === 'undefined' ? '' : opt_newContents;
46
- };
47
- object.inherits(CommentChange, CommentBase);
40
+ /**
41
+ * Type of this event.
42
+ * @type {string}
43
+ */
44
+ this.type = eventUtils.COMMENT_CHANGE;
48
45
 
49
- /**
50
- * Type of this event.
51
- * @type {string}
52
- */
53
- CommentChange.prototype.type = eventUtils.COMMENT_CHANGE;
46
+ if (!opt_comment) {
47
+ return; // Blank event to be populated by fromJson.
48
+ }
54
49
 
55
- /**
56
- * Encode the event as JSON.
57
- * @return {!Object} JSON representation.
58
- */
59
- CommentChange.prototype.toJson = function() {
60
- const json = CommentChange.superClass_.toJson.call(this);
61
- json['oldContents'] = this.oldContents_;
62
- json['newContents'] = this.newContents_;
63
- return json;
64
- };
50
+ this.oldContents_ =
51
+ typeof opt_oldContents === 'undefined' ? '' : opt_oldContents;
52
+ this.newContents_ =
53
+ typeof opt_newContents === 'undefined' ? '' : opt_newContents;
54
+ }
65
55
 
66
- /**
67
- * Decode the JSON event.
68
- * @param {!Object} json JSON representation.
69
- */
70
- CommentChange.prototype.fromJson = function(json) {
71
- CommentChange.superClass_.fromJson.call(this, json);
72
- this.oldContents_ = json['oldContents'];
73
- this.newContents_ = json['newContents'];
74
- };
56
+ /**
57
+ * Encode the event as JSON.
58
+ * @return {!Object} JSON representation.
59
+ */
60
+ toJson() {
61
+ const json = super.toJson();
62
+ json['oldContents'] = this.oldContents_;
63
+ json['newContents'] = this.newContents_;
64
+ return json;
65
+ }
75
66
 
76
- /**
77
- * Does this event record any change of state?
78
- * @return {boolean} False if something changed.
79
- */
80
- CommentChange.prototype.isNull = function() {
81
- return this.oldContents_ === this.newContents_;
82
- };
67
+ /**
68
+ * Decode the JSON event.
69
+ * @param {!Object} json JSON representation.
70
+ */
71
+ fromJson(json) {
72
+ super.fromJson(json);
73
+ this.oldContents_ = json['oldContents'];
74
+ this.newContents_ = json['newContents'];
75
+ }
83
76
 
84
- /**
85
- * Run a change event.
86
- * @param {boolean} forward True if run forward, false if run backward (undo).
87
- */
88
- CommentChange.prototype.run = function(forward) {
89
- const workspace = this.getEventWorkspace_();
90
- const comment = workspace.getCommentById(this.commentId);
91
- if (!comment) {
92
- console.warn('Can\'t change non-existent comment: ' + this.commentId);
93
- return;
77
+ /**
78
+ * Does this event record any change of state?
79
+ * @return {boolean} False if something changed.
80
+ */
81
+ isNull() {
82
+ return this.oldContents_ === this.newContents_;
94
83
  }
95
- const contents = forward ? this.newContents_ : this.oldContents_;
96
84
 
97
- comment.setContent(contents);
98
- };
85
+ /**
86
+ * Run a change event.
87
+ * @param {boolean} forward True if run forward, false if run backward (undo).
88
+ */
89
+ run(forward) {
90
+ const workspace = this.getEventWorkspace_();
91
+ const comment = workspace.getCommentById(this.commentId);
92
+ if (!comment) {
93
+ console.warn('Can\'t change non-existent comment: ' + this.commentId);
94
+ return;
95
+ }
96
+ const contents = forward ? this.newContents_ : this.oldContents_;
97
+
98
+ comment.setContent(contents);
99
+ }
100
+ }
99
101
 
100
102
  registry.register(
101
103
  registry.Type.EVENT, eventUtils.COMMENT_CHANGE, CommentChange);
@@ -17,7 +17,6 @@ goog.module('Blockly.Events.CommentCreate');
17
17
 
18
18
  const Xml = goog.require('Blockly.Xml');
19
19
  const eventUtils = goog.require('Blockly.Events.utils');
20
- const object = goog.require('Blockly.utils.object');
21
20
  const registry = goog.require('Blockly.registry');
22
21
  const {CommentBase} = goog.require('Blockly.Events.CommentBase');
23
22
  /* eslint-disable-next-line no-unused-vars */
@@ -26,55 +25,58 @@ const {WorkspaceComment} = goog.requireType('Blockly.WorkspaceComment');
26
25
 
27
26
  /**
28
27
  * Class for a comment creation event.
29
- * @param {!WorkspaceComment=} opt_comment The created comment.
30
- * Undefined for a blank event.
31
28
  * @extends {CommentBase}
32
- * @constructor
33
29
  * @alias Blockly.Events.CommentCreate
34
30
  */
35
- const CommentCreate = function(opt_comment) {
36
- CommentCreate.superClass_.constructor.call(this, opt_comment);
37
- if (!opt_comment) {
38
- return; // Blank event to be populated by fromJson.
39
- }
31
+ class CommentCreate extends CommentBase {
32
+ /**
33
+ * @param {!WorkspaceComment=} opt_comment The created comment.
34
+ * Undefined for a blank event.
35
+ */
36
+ constructor(opt_comment) {
37
+ super(opt_comment);
40
38
 
41
- this.xml = opt_comment.toXmlWithXY();
42
- };
43
- object.inherits(CommentCreate, CommentBase);
39
+ /**
40
+ * Type of this event.
41
+ * @type {string}
42
+ */
43
+ this.type = eventUtils.COMMENT_CREATE;
44
44
 
45
- /**
46
- * Type of this event.
47
- * @type {string}
48
- */
49
- CommentCreate.prototype.type = eventUtils.COMMENT_CREATE;
45
+ if (!opt_comment) {
46
+ return; // Blank event to be populated by fromJson.
47
+ }
50
48
 
51
- /**
52
- * Encode the event as JSON.
53
- * @return {!Object} JSON representation.
54
- */
55
- // TODO (#1266): "Full" and "minimal" serialization.
56
- CommentCreate.prototype.toJson = function() {
57
- const json = CommentCreate.superClass_.toJson.call(this);
58
- json['xml'] = Xml.domToText(this.xml);
59
- return json;
60
- };
49
+ this.xml = opt_comment.toXmlWithXY();
50
+ }
61
51
 
62
- /**
63
- * Decode the JSON event.
64
- * @param {!Object} json JSON representation.
65
- */
66
- CommentCreate.prototype.fromJson = function(json) {
67
- CommentCreate.superClass_.fromJson.call(this, json);
68
- this.xml = Xml.textToDom(json['xml']);
69
- };
52
+ // TODO (#1266): "Full" and "minimal" serialization.
53
+ /**
54
+ * Encode the event as JSON.
55
+ * @return {!Object} JSON representation.
56
+ */
57
+ toJson() {
58
+ const json = super.toJson();
59
+ json['xml'] = Xml.domToText(this.xml);
60
+ return json;
61
+ }
70
62
 
71
- /**
72
- * Run a creation event.
73
- * @param {boolean} forward True if run forward, false if run backward (undo).
74
- */
75
- CommentCreate.prototype.run = function(forward) {
76
- CommentBase.CommentCreateDeleteHelper(this, forward);
77
- };
63
+ /**
64
+ * Decode the JSON event.
65
+ * @param {!Object} json JSON representation.
66
+ */
67
+ fromJson(json) {
68
+ super.fromJson(json);
69
+ this.xml = Xml.textToDom(json['xml']);
70
+ }
71
+
72
+ /**
73
+ * Run a creation event.
74
+ * @param {boolean} forward True if run forward, false if run backward (undo).
75
+ */
76
+ run(forward) {
77
+ CommentBase.CommentCreateDeleteHelper(this, forward);
78
+ }
79
+ }
78
80
 
79
81
  registry.register(
80
82
  registry.Type.EVENT, eventUtils.COMMENT_CREATE, CommentCreate);
@@ -16,7 +16,6 @@
16
16
  goog.module('Blockly.Events.CommentDelete');
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 {CommentBase} = goog.require('Blockly.Events.CommentBase');
22
21
  /* eslint-disable-next-line no-unused-vars */
@@ -25,53 +24,56 @@ const {WorkspaceComment} = goog.requireType('Blockly.WorkspaceComment');
25
24
 
26
25
  /**
27
26
  * Class for a comment deletion event.
28
- * @param {!WorkspaceComment=} opt_comment The deleted comment.
29
- * Undefined for a blank event.
30
27
  * @extends {CommentBase}
31
- * @constructor
32
28
  * @alias Blockly.Events.CommentDelete
33
29
  */
34
- const CommentDelete = function(opt_comment) {
35
- CommentDelete.superClass_.constructor.call(this, opt_comment);
36
- if (!opt_comment) {
37
- return; // Blank event to be populated by fromJson.
38
- }
30
+ class CommentDelete extends CommentBase {
31
+ /**
32
+ * @param {!WorkspaceComment=} opt_comment The deleted comment.
33
+ * Undefined for a blank event.
34
+ */
35
+ constructor(opt_comment) {
36
+ super(opt_comment);
39
37
 
40
- this.xml = opt_comment.toXmlWithXY();
41
- };
42
- object.inherits(CommentDelete, CommentBase);
38
+ /**
39
+ * Type of this event.
40
+ * @type {string}
41
+ */
42
+ this.type = eventUtils.COMMENT_DELETE;
43
43
 
44
- /**
45
- * Type of this event.
46
- * @type {string}
47
- */
48
- CommentDelete.prototype.type = eventUtils.COMMENT_DELETE;
44
+ if (!opt_comment) {
45
+ return; // Blank event to be populated by fromJson.
46
+ }
49
47
 
50
- /**
51
- * Encode the event as JSON.
52
- * @return {!Object} JSON representation.
53
- */
54
- // TODO (#1266): "Full" and "minimal" serialization.
55
- CommentDelete.prototype.toJson = function() {
56
- const json = CommentDelete.superClass_.toJson.call(this);
57
- return json;
58
- };
48
+ this.xml = opt_comment.toXmlWithXY();
49
+ }
59
50
 
60
- /**
61
- * Decode the JSON event.
62
- * @param {!Object} json JSON representation.
63
- */
64
- CommentDelete.prototype.fromJson = function(json) {
65
- CommentDelete.superClass_.fromJson.call(this, json);
66
- };
51
+ // TODO (#1266): "Full" and "minimal" serialization.
52
+ /**
53
+ * Encode the event as JSON.
54
+ * @return {!Object} JSON representation.
55
+ */
56
+ toJson() {
57
+ const json = super.toJson();
58
+ return json;
59
+ }
67
60
 
68
- /**
69
- * Run a creation event.
70
- * @param {boolean} forward True if run forward, false if run backward (undo).
71
- */
72
- CommentDelete.prototype.run = function(forward) {
73
- CommentBase.CommentCreateDeleteHelper(this, !forward);
74
- };
61
+ /**
62
+ * Decode the JSON event.
63
+ * @param {!Object} json JSON representation.
64
+ */
65
+ fromJson(json) {
66
+ super.fromJson(json);
67
+ }
68
+
69
+ /**
70
+ * Run a creation event.
71
+ * @param {boolean} forward True if run forward, false if run backward (undo).
72
+ */
73
+ run(forward) {
74
+ CommentBase.CommentCreateDeleteHelper(this, !forward);
75
+ }
76
+ }
75
77
 
76
78
  registry.register(
77
79
  registry.Type.EVENT, eventUtils.COMMENT_DELETE, CommentDelete);