blockly 7.20211209.4 → 8.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (262) hide show
  1. package/blockly.d.ts +18963 -18432
  2. package/blockly.min.js +852 -844
  3. package/blockly_compressed.js +669 -664
  4. package/blockly_compressed.js.map +1 -1
  5. package/blocks/blocks.js +47 -0
  6. package/blocks/colour.js +13 -3
  7. package/blocks/lists.js +22 -13
  8. package/blocks/logic.js +13 -3
  9. package/blocks/loops.js +24 -11
  10. package/blocks/math.js +12 -3
  11. package/blocks/procedures.js +41 -27
  12. package/blocks/text.js +22 -13
  13. package/blocks/variables.js +14 -3
  14. package/blocks/variables_dynamic.js +13 -3
  15. package/blocks_compressed.js +146 -141
  16. package/blocks_compressed.js.map +1 -1
  17. package/core/block.js +1869 -1814
  18. package/core/block_drag_surface.js +201 -200
  19. package/core/block_dragger.js +377 -373
  20. package/core/block_svg.js +1593 -1479
  21. package/core/blockly.js +8 -22
  22. package/core/blocks.js +9 -2
  23. package/core/browser_events.js +22 -5
  24. package/core/bubble.js +841 -797
  25. package/core/bubble_dragger.js +213 -206
  26. package/core/bump_objects.js +2 -2
  27. package/core/clipboard.js +9 -9
  28. package/core/comment.js +353 -332
  29. package/core/common.js +46 -17
  30. package/core/component_manager.js +181 -174
  31. package/core/config.js +87 -0
  32. package/core/connection.js +595 -584
  33. package/core/connection_checker.js +242 -244
  34. package/core/connection_db.js +235 -230
  35. package/core/contextmenu.js +9 -6
  36. package/core/contextmenu_items.js +1 -2
  37. package/core/contextmenu_registry.js +93 -89
  38. package/core/css.js +474 -474
  39. package/core/delete_area.js +45 -42
  40. package/core/drag_target.js +57 -56
  41. package/core/dropdowndiv.js +153 -163
  42. package/core/events/events.js +2 -2
  43. package/core/events/events_abstract.js +89 -77
  44. package/core/events/events_block_base.js +37 -36
  45. package/core/events/events_block_change.js +130 -124
  46. package/core/events/events_block_create.js +73 -71
  47. package/core/events/events_block_delete.js +84 -82
  48. package/core/events/events_block_drag.js +50 -49
  49. package/core/events/events_block_move.js +147 -140
  50. package/core/events/events_bubble_open.js +51 -50
  51. package/core/events/events_click.js +48 -44
  52. package/core/events/events_comment_base.js +72 -69
  53. package/core/events/events_comment_change.js +63 -61
  54. package/core/events/events_comment_create.js +44 -42
  55. package/core/events/events_comment_delete.js +42 -40
  56. package/core/events/events_comment_move.js +106 -104
  57. package/core/events/events_marker_move.js +65 -64
  58. package/core/events/events_selected.js +46 -45
  59. package/core/events/events_theme_change.js +36 -35
  60. package/core/events/events_toolbox_item_select.js +46 -45
  61. package/core/events/events_trashcan_open.js +37 -36
  62. package/core/events/events_ui.js +47 -46
  63. package/core/events/events_ui_base.js +30 -29
  64. package/core/events/events_var_base.js +37 -36
  65. package/core/events/events_var_create.js +50 -48
  66. package/core/events/events_var_delete.js +50 -48
  67. package/core/events/events_var_rename.js +51 -49
  68. package/core/events/events_viewport.js +66 -65
  69. package/core/events/utils.js +29 -14
  70. package/core/events/workspace_events.js +49 -55
  71. package/core/extensions.js +4 -3
  72. package/core/field.js +1061 -997
  73. package/core/field_angle.js +462 -442
  74. package/core/field_checkbox.js +194 -182
  75. package/core/field_colour.js +519 -505
  76. package/core/field_dropdown.js +617 -598
  77. package/core/field_image.js +229 -220
  78. package/core/field_label.js +102 -91
  79. package/core/field_label_serializable.js +42 -41
  80. package/core/field_multilineinput.js +372 -358
  81. package/core/field_number.js +272 -253
  82. package/core/field_textinput.js +499 -467
  83. package/core/field_variable.js +458 -420
  84. package/core/flyout_base.js +1005 -952
  85. package/core/flyout_button.js +277 -260
  86. package/core/flyout_horizontal.js +304 -302
  87. package/core/flyout_metrics_manager.js +64 -64
  88. package/core/flyout_vertical.js +306 -300
  89. package/core/generator.js +459 -446
  90. package/core/gesture.js +829 -813
  91. package/core/grid.js +166 -163
  92. package/core/icon.js +168 -159
  93. package/core/inject.js +7 -5
  94. package/core/input.js +257 -248
  95. package/core/insertion_marker_manager.js +655 -624
  96. package/core/internal_constants.js +0 -129
  97. package/core/keyboard_nav/ast_node.js +605 -596
  98. package/core/keyboard_nav/basic_cursor.js +166 -165
  99. package/core/keyboard_nav/cursor.js +99 -97
  100. package/core/keyboard_nav/marker.js +83 -79
  101. package/core/keyboard_nav/tab_navigate_cursor.js +18 -23
  102. package/core/marker_manager.js +153 -141
  103. package/core/menu.js +377 -372
  104. package/core/menuitem.js +223 -217
  105. package/core/metrics_manager.js +403 -390
  106. package/core/mutator.js +468 -437
  107. package/core/names.js +229 -188
  108. package/core/options.js +290 -284
  109. package/core/procedures.js +29 -17
  110. package/core/registry.js +19 -16
  111. package/core/rendered_connection.js +482 -463
  112. package/core/renderers/common/block_rendering.js +9 -3
  113. package/core/renderers/common/constants.js +1119 -1112
  114. package/core/renderers/common/debug.js +14 -0
  115. package/core/renderers/common/debugger.js +338 -316
  116. package/core/renderers/common/drawer.js +380 -370
  117. package/core/renderers/common/i_path_object.js +2 -2
  118. package/core/renderers/common/info.js +626 -618
  119. package/core/renderers/common/marker_svg.js +579 -541
  120. package/core/renderers/common/path_object.js +203 -200
  121. package/core/renderers/common/renderer.js +220 -218
  122. package/core/renderers/geras/constants.js +36 -36
  123. package/core/renderers/geras/drawer.js +155 -147
  124. package/core/renderers/geras/highlight_constants.js +244 -238
  125. package/core/renderers/geras/highlighter.js +231 -179
  126. package/core/renderers/geras/info.js +392 -369
  127. package/core/renderers/geras/measurables/inline_input.js +25 -19
  128. package/core/renderers/geras/measurables/statement_input.js +23 -17
  129. package/core/renderers/geras/path_object.js +106 -121
  130. package/core/renderers/geras/renderer.js +96 -98
  131. package/core/renderers/measurables/base.js +30 -18
  132. package/core/renderers/measurables/bottom_row.js +83 -80
  133. package/core/renderers/measurables/connection.js +22 -15
  134. package/core/renderers/measurables/external_value_input.js +35 -22
  135. package/core/renderers/measurables/field.js +35 -20
  136. package/core/renderers/measurables/hat.js +18 -13
  137. package/core/renderers/measurables/icon.js +24 -17
  138. package/core/renderers/measurables/in_row_spacer.js +15 -13
  139. package/core/renderers/measurables/inline_input.js +43 -33
  140. package/core/renderers/measurables/input_connection.js +41 -28
  141. package/core/renderers/measurables/input_row.js +50 -44
  142. package/core/renderers/measurables/jagged_edge.js +14 -12
  143. package/core/renderers/measurables/next_connection.js +16 -14
  144. package/core/renderers/measurables/output_connection.js +26 -20
  145. package/core/renderers/measurables/previous_connection.js +16 -15
  146. package/core/renderers/measurables/round_corner.js +20 -18
  147. package/core/renderers/measurables/row.js +184 -168
  148. package/core/renderers/measurables/spacer_row.js +38 -23
  149. package/core/renderers/measurables/square_corner.js +18 -16
  150. package/core/renderers/measurables/statement_input.js +23 -20
  151. package/core/renderers/measurables/top_row.js +88 -85
  152. package/core/renderers/minimalist/constants.js +8 -7
  153. package/core/renderers/minimalist/drawer.js +11 -10
  154. package/core/renderers/minimalist/info.js +18 -18
  155. package/core/renderers/minimalist/renderer.js +40 -39
  156. package/core/renderers/thrasos/info.js +258 -248
  157. package/core/renderers/thrasos/renderer.js +20 -20
  158. package/core/renderers/zelos/constants.js +898 -873
  159. package/core/renderers/zelos/drawer.js +186 -169
  160. package/core/renderers/zelos/info.js +502 -479
  161. package/core/renderers/zelos/marker_svg.js +129 -115
  162. package/core/renderers/zelos/measurables/bottom_row.js +31 -30
  163. package/core/renderers/zelos/measurables/inputs.js +22 -21
  164. package/core/renderers/zelos/measurables/row_elements.js +14 -13
  165. package/core/renderers/zelos/measurables/top_row.js +34 -33
  166. package/core/renderers/zelos/path_object.js +181 -180
  167. package/core/renderers/zelos/renderer.js +91 -92
  168. package/core/scrollbar.js +759 -713
  169. package/core/scrollbar_pair.js +250 -245
  170. package/core/serialization/blocks.js +19 -9
  171. package/core/serialization/workspaces.js +3 -2
  172. package/core/shortcut_registry.js +286 -277
  173. package/core/sprites.js +31 -0
  174. package/core/theme.js +135 -141
  175. package/core/theme_manager.js +147 -143
  176. package/core/toolbox/category.js +602 -576
  177. package/core/toolbox/collapsible_category.js +226 -227
  178. package/core/toolbox/separator.js +70 -61
  179. package/core/toolbox/toolbox.js +934 -927
  180. package/core/toolbox/toolbox_item.js +115 -99
  181. package/core/tooltip.js +108 -35
  182. package/core/touch.js +8 -3
  183. package/core/touch_gesture.js +254 -251
  184. package/core/trashcan.js +606 -595
  185. package/core/utils/coordinate.js +97 -95
  186. package/core/utils/dom.js +2 -2
  187. package/core/utils/global.js +2 -0
  188. package/core/utils/rect.js +41 -37
  189. package/core/utils/sentinel.js +25 -0
  190. package/core/utils/size.js +30 -27
  191. package/core/utils/svg.js +18 -16
  192. package/core/variable_map.js +325 -341
  193. package/core/variable_model.js +55 -54
  194. package/core/variables.js +9 -2
  195. package/core/variables_dynamic.js +3 -1
  196. package/core/warning.js +126 -120
  197. package/core/widgetdiv.js +4 -4
  198. package/core/workspace.js +685 -664
  199. package/core/workspace_audio.js +124 -118
  200. package/core/workspace_comment.js +308 -298
  201. package/core/workspace_comment_svg.js +1029 -951
  202. package/core/workspace_drag_surface_svg.js +147 -140
  203. package/core/workspace_dragger.js +70 -71
  204. package/core/workspace_svg.js +2322 -2297
  205. package/core/xml.js +30 -20
  206. package/core/zoom_controls.js +431 -439
  207. package/dart_compressed.js +40 -43
  208. package/dart_compressed.js.map +1 -1
  209. package/generators/dart/colour.js +56 -64
  210. package/generators/dart/lists.js +61 -50
  211. package/generators/dart/math.js +160 -148
  212. package/generators/dart/text.js +83 -61
  213. package/generators/javascript/colour.js +37 -34
  214. package/generators/javascript/lists.js +50 -43
  215. package/generators/javascript/math.js +123 -139
  216. package/generators/javascript/text.js +67 -81
  217. package/generators/lua/colour.js +25 -23
  218. package/generators/lua/lists.js +97 -69
  219. package/generators/lua/logic.js +1 -2
  220. package/generators/lua/math.js +182 -144
  221. package/generators/lua/text.js +116 -99
  222. package/generators/php/colour.js +38 -32
  223. package/generators/php/lists.js +109 -89
  224. package/generators/php/math.js +90 -81
  225. package/generators/php/text.js +63 -61
  226. package/generators/python/colour.js +18 -18
  227. package/generators/python/lists.js +38 -30
  228. package/generators/python/loops.js +12 -8
  229. package/generators/python/math.js +104 -106
  230. package/generators/python/text.js +34 -30
  231. package/javascript_compressed.js +37 -39
  232. package/javascript_compressed.js.map +1 -1
  233. package/lua_compressed.js +39 -42
  234. package/lua_compressed.js.map +1 -1
  235. package/msg/az.js +2 -2
  236. package/msg/be.js +4 -4
  237. package/msg/cs.js +15 -15
  238. package/msg/de.js +1 -1
  239. package/msg/diq.js +1 -1
  240. package/msg/eo.js +1 -1
  241. package/msg/es.js +1 -1
  242. package/msg/fa.js +1 -1
  243. package/msg/fr.js +4 -4
  244. package/msg/he.js +1 -1
  245. package/msg/hr.js +2 -2
  246. package/msg/hy.js +2 -2
  247. package/msg/id.js +12 -12
  248. package/msg/inh.js +14 -14
  249. package/msg/ja.js +7 -7
  250. package/msg/lv.js +29 -29
  251. package/msg/pa.js +3 -3
  252. package/msg/smn.js +436 -0
  253. package/msg/te.js +1 -1
  254. package/msg/yue.js +1 -1
  255. package/msg/zh-hans.js +3 -3
  256. package/msg/zh-hant.js +3 -3
  257. package/package.json +7 -6
  258. package/php_compressed.js +38 -42
  259. package/php_compressed.js.map +1 -1
  260. package/python_compressed.js +26 -25
  261. package/python_compressed.js.map +1 -1
  262. package/blocks/all.js +0 -23
@@ -18,7 +18,6 @@
18
18
  */
19
19
  goog.module('Blockly.DeleteArea');
20
20
 
21
- const object = goog.require('Blockly.utils.object');
22
21
  const {BlockSvg} = goog.require('Blockly.BlockSvg');
23
22
  const {DragTarget} = goog.require('Blockly.DragTarget');
24
23
  /* eslint-disable-next-line no-unused-vars */
@@ -32,53 +31,57 @@ const {IDraggable} = goog.requireType('Blockly.IDraggable');
32
31
  * dropped on top of it.
33
32
  * @extends {DragTarget}
34
33
  * @implements {IDeleteArea}
35
- * @constructor
36
34
  * @alias Blockly.DeleteArea
37
35
  */
38
- const DeleteArea = function() {
39
- DeleteArea.superClass_.constructor.call(this);
40
-
36
+ class DeleteArea extends DragTarget {
41
37
  /**
42
- * Whether the last block or bubble dragged over this delete area would be
43
- * deleted if dropped on this component.
44
- * This property is not updated after the block or bubble is deleted.
45
- * @type {boolean}
46
- * @protected
38
+ * Constructor for DeleteArea. Should not be called directly, only by a
39
+ * subclass.
47
40
  */
48
- this.wouldDelete_ = false;
49
- };
50
- object.inherits(DeleteArea, DragTarget);
41
+ constructor() {
42
+ super();
51
43
 
52
- /**
53
- * Returns whether the provided block or bubble would be deleted if dropped on
54
- * this area.
55
- * This method should check if the element is deletable and is always called
56
- * before onDragEnter/onDragOver/onDragExit.
57
- * @param {!IDraggable} element The block or bubble currently being
58
- * dragged.
59
- * @param {boolean} couldConnect Whether the element could could connect to
60
- * another.
61
- * @return {boolean} Whether the element provided would be deleted if dropped on
62
- * this area.
63
- */
64
- DeleteArea.prototype.wouldDelete = function(element, couldConnect) {
65
- if (element instanceof BlockSvg) {
66
- const block = /** @type {BlockSvg} */ (element);
67
- const couldDeleteBlock = !block.getParent() && block.isDeletable();
68
- this.updateWouldDelete_(couldDeleteBlock && !couldConnect);
69
- } else {
70
- this.updateWouldDelete_(element.isDeletable());
44
+ /**
45
+ * Whether the last block or bubble dragged over this delete area would be
46
+ * deleted if dropped on this component.
47
+ * This property is not updated after the block or bubble is deleted.
48
+ * @type {boolean}
49
+ * @protected
50
+ */
51
+ this.wouldDelete_ = false;
71
52
  }
72
- return this.wouldDelete_;
73
- };
74
53
 
75
- /**
76
- * Updates the internal wouldDelete_ state.
77
- * @param {boolean} wouldDelete The new value for the wouldDelete state.
78
- * @protected
79
- */
80
- DeleteArea.prototype.updateWouldDelete_ = function(wouldDelete) {
81
- this.wouldDelete_ = wouldDelete;
82
- };
54
+ /**
55
+ * Returns whether the provided block or bubble would be deleted if dropped on
56
+ * this area.
57
+ * This method should check if the element is deletable and is always called
58
+ * before onDragEnter/onDragOver/onDragExit.
59
+ * @param {!IDraggable} element The block or bubble currently being
60
+ * dragged.
61
+ * @param {boolean} couldConnect Whether the element could could connect to
62
+ * another.
63
+ * @return {boolean} Whether the element provided would be deleted if dropped
64
+ * on this area.
65
+ */
66
+ wouldDelete(element, couldConnect) {
67
+ if (element instanceof BlockSvg) {
68
+ const block = /** @type {BlockSvg} */ (element);
69
+ const couldDeleteBlock = !block.getParent() && block.isDeletable();
70
+ this.updateWouldDelete_(couldDeleteBlock && !couldConnect);
71
+ } else {
72
+ this.updateWouldDelete_(element.isDeletable());
73
+ }
74
+ return this.wouldDelete_;
75
+ }
76
+
77
+ /**
78
+ * Updates the internal wouldDelete_ state.
79
+ * @param {boolean} wouldDelete The new value for the wouldDelete state.
80
+ * @protected
81
+ */
82
+ updateWouldDelete_(wouldDelete) {
83
+ this.wouldDelete_ = wouldDelete;
84
+ }
85
+ }
83
86
 
84
87
  exports.DeleteArea = DeleteArea;
@@ -30,68 +30,69 @@ const {Rect} = goog.requireType('Blockly.utils.Rect');
30
30
  * Abstract class for a component with custom behaviour when a block or bubble
31
31
  * is dragged over or dropped on top of it.
32
32
  * @implements {IDragTarget}
33
- * @constructor
34
33
  * @alias Blockly.DragTarget
35
34
  */
36
- const DragTarget = function() {};
35
+ class DragTarget {
36
+ /**
37
+ * Handles when a cursor with a block or bubble enters this drag target.
38
+ * @param {!IDraggable} _dragElement The block or bubble currently being
39
+ * dragged.
40
+ */
41
+ onDragEnter(_dragElement) {
42
+ // no-op
43
+ }
37
44
 
38
- /**
39
- * Returns the bounding rectangle of the drag target area in pixel units
40
- * relative to the Blockly injection div.
41
- * @return {?Rect} The component's bounding box. Null if drag
42
- * target area should be ignored.
43
- */
44
- DragTarget.prototype.getClientRect;
45
+ /**
46
+ * Handles when a cursor with a block or bubble is dragged over this drag
47
+ * target.
48
+ * @param {!IDraggable} _dragElement The block or bubble currently being
49
+ * dragged.
50
+ */
51
+ onDragOver(_dragElement) {
52
+ // no-op
53
+ }
45
54
 
46
- /**
47
- * Handles when a cursor with a block or bubble enters this drag target.
48
- * @param {!IDraggable} _dragElement The block or bubble currently being
49
- * dragged.
50
- */
51
- DragTarget.prototype.onDragEnter = function(_dragElement) {
52
- // no-op
53
- };
55
+ /**
56
+ * Handles when a cursor with a block or bubble exits this drag target.
57
+ * @param {!IDraggable} _dragElement The block or bubble currently being
58
+ * dragged.
59
+ */
60
+ onDragExit(_dragElement) {
61
+ // no-op
62
+ }
54
63
 
55
- /**
56
- * Handles when a cursor with a block or bubble is dragged over this drag
57
- * target.
58
- * @param {!IDraggable} _dragElement The block or bubble currently being
59
- * dragged.
60
- */
61
- DragTarget.prototype.onDragOver = function(_dragElement) {
62
- // no-op
63
- };
64
+ /**
65
+ * Handles when a block or bubble is dropped on this component.
66
+ * Should not handle delete here.
67
+ * @param {!IDraggable} _dragElement The block or bubble currently being
68
+ * dragged.
69
+ */
70
+ onDrop(_dragElement) {
71
+ // no-op
72
+ }
64
73
 
65
- /**
66
- * Handles when a cursor with a block or bubble exits this drag target.
67
- * @param {!IDraggable} _dragElement The block or bubble currently being
68
- * dragged.
69
- */
70
- DragTarget.prototype.onDragExit = function(_dragElement) {
71
- // no-op
72
- };
73
-
74
- /**
75
- * Handles when a block or bubble is dropped on this component.
76
- * Should not handle delete here.
77
- * @param {!IDraggable} _dragElement The block or bubble currently being
78
- * dragged.
79
- */
80
- DragTarget.prototype.onDrop = function(_dragElement) {
81
- // no-op
82
- };
74
+ /**
75
+ * Returns the bounding rectangle of the drag target area in pixel units
76
+ * relative to the Blockly injection div.
77
+ * @return {?Rect} The component's bounding box. Null if drag
78
+ * target area should be ignored.
79
+ */
80
+ getClientRect() {
81
+ return null;
82
+ }
83
83
 
84
- /**
85
- * Returns whether the provided block or bubble should not be moved after being
86
- * dropped on this component. If true, the element will return to where it was
87
- * when the drag started.
88
- * @param {!IDraggable} _dragElement The block or bubble currently being
89
- * dragged.
90
- * @return {boolean} Whether the block or bubble provided should be returned to
91
- * drag start.
92
- */
93
- DragTarget.prototype.shouldPreventMove = function(_dragElement) {
94
- return false;
95
- };
84
+ /**
85
+ * Returns whether the provided block or bubble should not be moved after
86
+ * being dropped on this component. If true, the element will return to where
87
+ * it was when the drag started.
88
+ * @param {!IDraggable} _dragElement The block or bubble currently being
89
+ * dragged.
90
+ * @return {boolean} Whether the block or bubble provided should be returned
91
+ * to drag start.
92
+ */
93
+ shouldPreventMove(_dragElement) {
94
+ return false;
95
+ }
96
+ }
96
97
 
97
98
  exports.DragTarget = DragTarget;