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
package/core/blockly.js CHANGED
@@ -40,6 +40,7 @@ const common = goog.require('Blockly.common');
40
40
  const constants = goog.require('Blockly.constants');
41
41
  const deprecation = goog.require('Blockly.utils.deprecation');
42
42
  const dialog = goog.require('Blockly.dialog');
43
+ const dropDownDiv = goog.require('Blockly.dropDownDiv');
43
44
  const fieldRegistry = goog.require('Blockly.fieldRegistry');
44
45
  const geras = goog.require('Blockly.geras');
45
46
  const internalConstants = goog.require('Blockly.internalConstants');
@@ -71,6 +72,7 @@ const {Bubble} = goog.require('Blockly.Bubble');
71
72
  const {CollapsibleToolboxCategory} = goog.require('Blockly.CollapsibleToolboxCategory');
72
73
  const {Comment} = goog.require('Blockly.Comment');
73
74
  const {ComponentManager} = goog.require('Blockly.ComponentManager');
75
+ const {config} = goog.require('Blockly.config');
74
76
  const {ConnectionChecker} = goog.require('Blockly.ConnectionChecker');
75
77
  const {ConnectionDB} = goog.require('Blockly.ConnectionDB');
76
78
  const {ConnectionType} = goog.require('Blockly.ConnectionType');
@@ -79,7 +81,6 @@ const {ContextMenuRegistry} = goog.require('Blockly.ContextMenuRegistry');
79
81
  const {Cursor} = goog.require('Blockly.Cursor');
80
82
  const {DeleteArea} = goog.require('Blockly.DeleteArea');
81
83
  const {DragTarget} = goog.require('Blockly.DragTarget');
82
- const {DropDownDiv} = goog.require('Blockly.DropDownDiv');
83
84
  const {FieldAngle} = goog.require('Blockly.FieldAngle');
84
85
  const {FieldCheckbox} = goog.require('Blockly.FieldCheckbox');
85
86
  const {FieldColour} = goog.require('Blockly.FieldColour');
@@ -306,7 +307,8 @@ exports.svgResize = common.svgResize;
306
307
  * @alias Blockly.hideChaff
307
308
  */
308
309
  const hideChaff = function(opt_onlyClosePopups) {
309
- common.getMainWorkspace().hideChaff(opt_onlyClosePopups);
310
+ /** @type {!WorkspaceSvg} */ (common.getMainWorkspace())
311
+ .hideChaff(opt_onlyClosePopups);
310
312
  };
311
313
  exports.hideChaff = hideChaff;
312
314
 
@@ -331,7 +333,7 @@ exports.defineBlocksWithJsonArray = common.defineBlocksWithJsonArray;
331
333
 
332
334
  /**
333
335
  * Set the parent container. This is the container element that the WidgetDiv,
334
- * DropDownDiv, and Tooltip are rendered into the first time `Blockly.inject`
336
+ * dropDownDiv, and Tooltip are rendered into the first time `Blockly.inject`
335
337
  * is called.
336
338
  * This method is a NOP if called after the first ``Blockly.inject``.
337
339
  * @param {!Element} container The container element.
@@ -528,7 +530,7 @@ const paste = function() {
528
530
  deprecation.warn(
529
531
  'Blockly.paste', 'December 2021', 'December 2022',
530
532
  'Blockly.clipboard.paste');
531
- return clipboard.paste();
533
+ return !!clipboard.paste();
532
534
  };
533
535
  exports.paste = paste;
534
536
 
@@ -655,25 +657,8 @@ const bindEventWithChecks_ = function(
655
657
  exports.bindEventWithChecks_ = bindEventWithChecks_;
656
658
 
657
659
  // Aliases to allow external code to access these values for legacy reasons.
658
- exports.LINE_MODE_MULTIPLIER = internalConstants.LINE_MODE_MULTIPLIER;
659
- exports.PAGE_MODE_MULTIPLIER = internalConstants.PAGE_MODE_MULTIPLIER;
660
- exports.DRAG_RADIUS = internalConstants.DRAG_RADIUS;
661
- exports.FLYOUT_DRAG_RADIUS = internalConstants.FLYOUT_DRAG_RADIUS;
662
- exports.SNAP_RADIUS = internalConstants.SNAP_RADIUS;
663
- exports.CONNECTING_SNAP_RADIUS = internalConstants.CONNECTING_SNAP_RADIUS;
664
- exports.CURRENT_CONNECTION_PREFERENCE =
665
- internalConstants.CURRENT_CONNECTION_PREFERENCE;
666
- exports.BUMP_DELAY = internalConstants.BUMP_DELAY;
667
- exports.BUMP_RANDOMNESS = internalConstants.BUMP_RANDOMNESS;
668
660
  exports.COLLAPSE_CHARS = internalConstants.COLLAPSE_CHARS;
669
- exports.LONGPRESS = internalConstants.LONGPRESS;
670
- exports.SOUND_LIMIT = internalConstants.SOUND_LIMIT;
671
661
  exports.DRAG_STACK = internalConstants.DRAG_STACK;
672
- exports.SPRITE = internalConstants.SPRITE;
673
- exports.DRAG_NONE = internalConstants.DRAG_NONE;
674
- exports.DRAG_STICKY = internalConstants.DRAG_STICKY;
675
- exports.DRAG_BEGIN = internalConstants.DRAG_BEGIN;
676
- exports.DRAG_FREE = internalConstants.DRAG_FREE;
677
662
  exports.OPPOSITE_TYPE = internalConstants.OPPOSITE_TYPE;
678
663
  exports.RENAME_VARIABLE_ID = internalConstants.RENAME_VARIABLE_ID;
679
664
  exports.DELETE_VARIABLE_ID = internalConstants.DELETE_VARIABLE_ID;
@@ -731,7 +716,7 @@ exports.Css = Css;
731
716
  exports.Cursor = Cursor;
732
717
  exports.DeleteArea = DeleteArea;
733
718
  exports.DragTarget = DragTarget;
734
- exports.DropDownDiv = DropDownDiv;
719
+ exports.DropDownDiv = dropDownDiv;
735
720
  exports.Events = Events;
736
721
  exports.Extensions = Extensions;
737
722
  exports.Field = Field;
@@ -833,6 +818,7 @@ exports.browserEvents = browserEvents;
833
818
  exports.bumpObjects = bumpObjects;
834
819
  exports.clipboard = clipboard;
835
820
  exports.common = common;
821
+ exports.config = config;
836
822
  /** @deprecated Use Blockly.ConnectionType instead. */
837
823
  exports.connectionTypes = ConnectionType;
838
824
  exports.constants = constants;
package/core/blocks.js CHANGED
@@ -16,11 +16,18 @@
16
16
  goog.module('Blockly.blocks');
17
17
 
18
18
 
19
+ /**
20
+ * A block definition. For now this very lose, but it can potentially
21
+ * be refined e.g. by replacing this typedef with a class definition.
22
+ * @typedef {!Object}
23
+ */
24
+ let BlockDefinition;
25
+ exports.BlockDefinition = BlockDefinition;
26
+
19
27
  /**
20
28
  * A mapping of block type names to block prototype objects.
21
- * @type {!Object<string,!Object>}
29
+ * @type {!Object<string,!BlockDefinition>}
22
30
  * @alias Blockly.blocks.Blocks
23
31
  */
24
32
  const Blocks = Object.create(null);
25
-
26
33
  exports.Blocks = Blocks;
@@ -16,7 +16,6 @@
16
16
  goog.module('Blockly.browserEvents');
17
17
 
18
18
  const Touch = goog.require('Blockly.Touch');
19
- const internalConstants = goog.require('Blockly.internalConstants');
20
19
  const userAgent = goog.require('Blockly.utils.userAgent');
21
20
  const {globalThis} = goog.require('Blockly.utils.global');
22
21
 
@@ -30,6 +29,24 @@ const {globalThis} = goog.require('Blockly.utils.global');
30
29
  let Data;
31
30
  exports.Data = Data;
32
31
 
32
+ /**
33
+ * The multiplier for scroll wheel deltas using the line delta mode.
34
+ * See https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent/deltaMode
35
+ * for more information on deltaMode.
36
+ * @type {number}
37
+ * @const
38
+ */
39
+ const LINE_MODE_MULTIPLIER = 40;
40
+
41
+ /**
42
+ * The multiplier for scroll wheel deltas using the page delta mode.
43
+ * See https://developer.mozilla.org/en-US/docs/Web/API/WheelEvent/deltaMode
44
+ * for more information on deltaMode.
45
+ * @type {number}
46
+ * @const
47
+ */
48
+ const PAGE_MODE_MULTIPLIER = 125;
49
+
33
50
  /**
34
51
  * Bind an event handler that can be ignored if it is not part of the active
35
52
  * touch stream.
@@ -254,13 +271,13 @@ const getScrollDeltaPixels = function(e) {
254
271
  return {x: e.deltaX, y: e.deltaY};
255
272
  case 0x01: // Line mode.
256
273
  return {
257
- x: e.deltaX * internalConstants.LINE_MODE_MULTIPLIER,
258
- y: e.deltaY * internalConstants.LINE_MODE_MULTIPLIER,
274
+ x: e.deltaX * LINE_MODE_MULTIPLIER,
275
+ y: e.deltaY * LINE_MODE_MULTIPLIER,
259
276
  };
260
277
  case 0x02: // Page mode.
261
278
  return {
262
- x: e.deltaX * internalConstants.PAGE_MODE_MULTIPLIER,
263
- y: e.deltaY * internalConstants.PAGE_MODE_MULTIPLIER,
279
+ x: e.deltaX * PAGE_MODE_MULTIPLIER,
280
+ y: e.deltaY * PAGE_MODE_MULTIPLIER,
264
281
  };
265
282
  }
266
283
  };