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,16 +15,20 @@
15
15
  */
16
16
  goog.module('Blockly.Procedures');
17
17
 
18
- /* eslint-disable-next-line no-unused-vars */
19
- const Abstract = goog.requireType('Blockly.Events.Abstract');
20
18
  const Variables = goog.require('Blockly.Variables');
21
19
  const Xml = goog.require('Blockly.Xml');
22
20
  const eventUtils = goog.require('Blockly.Events.utils');
23
21
  const utilsXml = goog.require('Blockly.utils.xml');
22
+ /* eslint-disable-next-line no-unused-vars */
23
+ const {Abstract} = goog.requireType('Blockly.Events.Abstract');
24
24
  const {Blocks} = goog.require('Blockly.blocks');
25
25
  /* eslint-disable-next-line no-unused-vars */
26
26
  const {Block} = goog.requireType('Blockly.Block');
27
27
  /* eslint-disable-next-line no-unused-vars */
28
+ const {BubbleOpen} = goog.requireType('Blockly.Events.BubbleOpen');
29
+ /* eslint-disable-next-line no-unused-vars */
30
+ const {BlockSvg} = goog.requireType('Blockly.BlockSvg');
31
+ /* eslint-disable-next-line no-unused-vars */
28
32
  const {Field} = goog.requireType('Blockly.Field');
29
33
  const {Msg} = goog.require('Blockly.Msg');
30
34
  const {Names} = goog.require('Blockly.Names');
@@ -160,8 +164,9 @@ const isNameUsed = function(name, workspace, opt_exclude) {
160
164
  if (blocks[i] === opt_exclude) {
161
165
  continue;
162
166
  }
163
- if (blocks[i].getProcedureDef) {
164
- const procedureBlock = /** @type {!ProcedureBlock} */ (blocks[i]);
167
+ // Assume it is a procedure block so we can check.
168
+ const procedureBlock = /** @type {!ProcedureBlock} */ (blocks[i]);
169
+ if (procedureBlock.getProcedureDef) {
165
170
  const procName = procedureBlock.getProcedureDef();
166
171
  if (Names.equals(procName[0], name)) {
167
172
  return true;
@@ -191,8 +196,9 @@ const rename = function(name) {
191
196
  // Rename any callers.
192
197
  const blocks = this.getSourceBlock().workspace.getAllBlocks(false);
193
198
  for (let i = 0; i < blocks.length; i++) {
194
- if (blocks[i].renameProcedure) {
195
- const procedureBlock = /** @type {!ProcedureBlock} */ (blocks[i]);
199
+ // Assume it is a procedure so we can check.
200
+ const procedureBlock = /** @type {!ProcedureBlock} */ (blocks[i]);
201
+ if (procedureBlock.renameProcedure) {
196
202
  procedureBlock.renameProcedure(
197
203
  /** @type {string} */ (oldName), legalName);
198
204
  }
@@ -204,7 +210,7 @@ exports.rename = rename;
204
210
 
205
211
  /**
206
212
  * Construct the blocks required by the flyout for the procedure category.
207
- * @param {!Workspace} workspace The workspace containing procedures.
213
+ * @param {!WorkspaceSvg} workspace The workspace containing procedures.
208
214
  * @return {!Array<!Element>} Array of XML block elements.
209
215
  * @alias Blockly.Procedures.flyoutCategory
210
216
  */
@@ -291,7 +297,7 @@ exports.flyoutCategory = flyoutCategory;
291
297
  /**
292
298
  * Updates the procedure mutator's flyout so that the arg block is not a
293
299
  * duplicate of another arg.
294
- * @param {!Workspace} workspace The procedure mutator's workspace. This
300
+ * @param {!WorkspaceSvg} workspace The procedure mutator's workspace. This
295
301
  * workspace's flyout is what is being updated.
296
302
  */
297
303
  const updateMutatorFlyout = function(workspace) {
@@ -325,17 +331,21 @@ const updateMutatorFlyout = function(workspace) {
325
331
  * @package
326
332
  */
327
333
  const mutatorOpenListener = function(e) {
328
- if (!(e.type === eventUtils.BUBBLE_OPEN && e.bubbleType === 'mutator' &&
329
- e.isOpen)) {
334
+ if (e.type !== eventUtils.BUBBLE_OPEN) {
330
335
  return;
331
336
  }
332
- const workspaceId = /** @type {string} */ (e.workspaceId);
333
- const block = Workspace.getById(workspaceId).getBlockById(e.blockId);
337
+ const bubbleEvent = /** @type {!BubbleOpen} */ (e);
338
+ if (!(bubbleEvent.bubbleType === 'mutator' && bubbleEvent.isOpen)) {
339
+ return;
340
+ }
341
+ const workspaceId = /** @type {string} */ (bubbleEvent.workspaceId);
342
+ const block = /** @type {!BlockSvg} */
343
+ (Workspace.getById(workspaceId).getBlockById(bubbleEvent.blockId));
334
344
  const type = block.type;
335
345
  if (type !== 'procedures_defnoreturn' && type !== 'procedures_defreturn') {
336
346
  return;
337
347
  }
338
- const workspace = block.mutator.getWorkspace();
348
+ const workspace = /** @type {!WorkspaceSvg} */ (block.mutator.getWorkspace());
339
349
  updateMutatorFlyout(workspace);
340
350
  workspace.addChangeListener(mutatorChangeListener);
341
351
  };
@@ -370,8 +380,9 @@ const getCallers = function(name, workspace) {
370
380
  const blocks = workspace.getAllBlocks(false);
371
381
  // Iterate through every block and check the name.
372
382
  for (let i = 0; i < blocks.length; i++) {
373
- if (blocks[i].getProcedureCall) {
374
- const procedureBlock = /** @type {!ProcedureBlock} */ (blocks[i]);
383
+ // Assume it is a procedure block so we can check.
384
+ const procedureBlock = /** @type {!ProcedureBlock} */ (blocks[i]);
385
+ if (procedureBlock.getProcedureCall) {
375
386
  const procName = procedureBlock.getProcedureCall();
376
387
  // Procedure name may be null if the block is only half-built.
377
388
  if (procName && Names.equals(procName, name)) {
@@ -427,8 +438,9 @@ const getDefinition = function(name, workspace) {
427
438
  // rely on getProcedureDef.
428
439
  const blocks = workspace.getAllBlocks(false);
429
440
  for (let i = 0; i < blocks.length; i++) {
430
- if (blocks[i].getProcedureDef) {
431
- const procedureBlock = /** @type {!ProcedureBlock} */ (blocks[i]);
441
+ // Assume it is a procedure block so we can check.
442
+ const procedureBlock = /** @type {!ProcedureBlock} */ (blocks[i]);
443
+ if (procedureBlock.getProcedureDef) {
432
444
  const tuple = procedureBlock.getProcedureDef();
433
445
  if (tuple && Names.equals(tuple[0], name)) {
434
446
  return blocks[i]; // Can't use procedureBlock var due to type check.
package/core/registry.js CHANGED
@@ -18,7 +18,7 @@
18
18
  goog.module('Blockly.registry');
19
19
 
20
20
  /* eslint-disable-next-line no-unused-vars */
21
- const Abstract = goog.requireType('Blockly.Events.Abstract');
21
+ const {Abstract} = goog.requireType('Blockly.Events.Abstract');
22
22
  /* eslint-disable-next-line no-unused-vars */
23
23
  const {Cursor} = goog.requireType('Blockly.Cursor');
24
24
  /* eslint-disable-next-line no-unused-vars */
@@ -73,28 +73,31 @@ exports.DEFAULT = DEFAULT;
73
73
 
74
74
  /**
75
75
  * A name with the type of the element stored in the generic.
76
- * @param {string} name The name of the registry type.
77
- * @constructor
78
76
  * @template T
79
77
  * @alias Blockly.registry.Type
80
78
  */
81
- const Type = function(name) {
79
+ class Type {
82
80
  /**
83
- * @type {string}
84
- * @private
81
+ * @param {string} name The name of the registry type.
85
82
  */
86
- this.name_ = name;
87
- };
83
+ constructor(name) {
84
+ /**
85
+ * @type {string}
86
+ * @private
87
+ */
88
+ this.name_ = name;
89
+ }
90
+
91
+ /**
92
+ * Returns the name of the type.
93
+ * @return {string} The name.
94
+ */
95
+ toString() {
96
+ return this.name_;
97
+ }
98
+ }
88
99
  exports.Type = Type;
89
100
 
90
- /**
91
- * Returns the name of the type.
92
- * @return {string} The name.
93
- * @override
94
- */
95
- Type.prototype.toString = function() {
96
- return this.name_;
97
- };
98
101
 
99
102
  /** @type {!Type<IConnectionChecker>} */
100
103
  Type.CONNECTION_CHECKER = new Type('connectionChecker');