blockly 8.0.5 → 9.0.0-beta.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 (736) hide show
  1. package/blockly.min.js +2002 -2269
  2. package/blockly_compressed.js +1499 -1994
  3. package/blockly_compressed.js.map +1 -1
  4. package/blocks/blocks.js +3 -2
  5. package/blocks/colour.js +3 -1
  6. package/blocks/lists.js +94 -22
  7. package/blocks/logic.js +14 -6
  8. package/blocks/loops.js +5 -3
  9. package/blocks/math.js +3 -1
  10. package/blocks/procedures.js +3 -1
  11. package/blocks/text.js +14 -6
  12. package/blocks/variables.js +3 -1
  13. package/blocks/variables_dynamic.js +3 -1
  14. package/blocks.d.ts +0 -2
  15. package/blocks_compressed.js +189 -171
  16. package/blocks_compressed.js.map +1 -1
  17. package/closure/goog/base.d.ts +1 -0
  18. package/closure/goog/base_minimal.d.ts +18 -0
  19. package/closure/goog/goog.d.ts +25 -0
  20. package/core/any_aliases.d.ts +1 -0
  21. package/core/any_aliases.ts +1 -0
  22. package/core/block.d.ts +779 -0
  23. package/core/{block.js → block.ts} +610 -719
  24. package/core/block_animations.d.ts +33 -0
  25. package/core/{block_animations.js → block_animations.ts} +75 -79
  26. package/core/block_drag_surface.d.ts +111 -0
  27. package/core/{block_drag_surface.js → block_drag_surface.ts} +85 -117
  28. package/core/block_dragger.d.ts +143 -0
  29. package/core/{block_dragger.js → block_dragger.ts} +139 -176
  30. package/core/block_svg.d.ts +588 -0
  31. package/core/{block_svg.js → block_svg.ts} +494 -630
  32. package/core/blockly.d.ts +562 -0
  33. package/core/blockly.js +1 -1
  34. package/core/blockly.ts +749 -0
  35. package/core/blockly_options.d.ts +69 -0
  36. package/core/blockly_options.ts +81 -0
  37. package/core/blocks.d.ts +17 -0
  38. package/core/{blocks.js → blocks.ts} +4 -8
  39. package/core/browser_events.d.ts +85 -0
  40. package/core/{browser_events.js → browser_events.ts} +98 -93
  41. package/core/bubble.d.ts +279 -0
  42. package/core/{bubble.js → bubble.ts} +277 -370
  43. package/core/bubble_dragger.d.ts +73 -0
  44. package/core/bubble_dragger.ts +229 -0
  45. package/core/bump_objects.d.ts +34 -0
  46. package/core/{bump_objects.js → bump_objects.ts} +54 -52
  47. package/core/clipboard.d.ts +42 -0
  48. package/core/clipboard.ts +91 -0
  49. package/core/comment.d.ts +113 -0
  50. package/core/{comment.js → comment.ts} +135 -185
  51. package/core/common.d.ts +129 -0
  52. package/core/{common.js → common.ts} +105 -82
  53. package/core/component_manager.d.ts +91 -0
  54. package/core/component_manager.ts +211 -0
  55. package/core/config.d.ts +23 -0
  56. package/core/{config.js → config.ts} +12 -19
  57. package/core/connection.d.ts +232 -0
  58. package/core/{connection.js → connection.ts} +187 -237
  59. package/core/connection_checker.d.ts +78 -0
  60. package/core/{connection_checker.js → connection_checker.ts} +66 -77
  61. package/core/connection_db.d.ts +91 -0
  62. package/core/{connection_db.js → connection_db.ts} +62 -87
  63. package/core/connection_type.d.ts +15 -0
  64. package/core/{connection_type.js → connection_type.ts} +8 -12
  65. package/core/constants.d.ts +15 -0
  66. package/core/{constants.js → constants.ts} +4 -8
  67. package/core/contextmenu.d.ts +80 -0
  68. package/core/{contextmenu.js → contextmenu.ts} +118 -153
  69. package/core/contextmenu_items.d.ts +77 -0
  70. package/core/contextmenu_items.ts +576 -0
  71. package/core/contextmenu_registry.d.ts +105 -0
  72. package/core/contextmenu_registry.ts +179 -0
  73. package/core/css.d.ts +24 -0
  74. package/core/{css.js → css.ts} +16 -24
  75. package/core/delete_area.d.ts +47 -0
  76. package/core/delete_area.ts +82 -0
  77. package/core/dialog.d.ts +61 -0
  78. package/core/dialog.ts +127 -0
  79. package/core/drag_target.d.ts +63 -0
  80. package/core/drag_target.ts +94 -0
  81. package/core/dropdowndiv.d.ts +155 -0
  82. package/core/{dropdowndiv.js → dropdowndiv.ts} +262 -333
  83. package/core/events/events.d.ts +102 -0
  84. package/core/events/events.ts +123 -0
  85. package/core/events/events_abstract.d.ts +51 -0
  86. package/core/events/events_abstract.ts +112 -0
  87. package/core/events/events_block_base.d.ts +31 -0
  88. package/core/events/events_block_base.ts +65 -0
  89. package/core/events/events_block_change.d.ts +55 -0
  90. package/core/events/{events_block_change.js → events_block_change.ts} +45 -48
  91. package/core/events/events_block_create.d.ts +35 -0
  92. package/core/events/{events_block_create.js → events_block_create.ts} +30 -35
  93. package/core/events/events_block_delete.d.ts +36 -0
  94. package/core/events/{events_block_delete.js → events_block_delete.ts} +34 -39
  95. package/core/events/events_block_drag.d.ts +36 -0
  96. package/core/events/events_block_drag.ts +82 -0
  97. package/core/events/events_block_move.d.ts +51 -0
  98. package/core/events/{events_block_move.js → events_block_move.ts} +54 -50
  99. package/core/events/events_bubble_open.d.ts +35 -0
  100. package/core/events/events_bubble_open.ts +82 -0
  101. package/core/events/events_click.d.ts +36 -0
  102. package/core/events/{events_click.js → events_click.ts} +27 -30
  103. package/core/events/events_comment_base.d.ts +39 -0
  104. package/core/events/events_comment_base.ts +107 -0
  105. package/core/events/events_comment_change.d.ts +43 -0
  106. package/core/events/{events_comment_change.js → events_comment_change.ts} +31 -28
  107. package/core/events/events_comment_create.d.ts +35 -0
  108. package/core/events/{events_comment_create.js → events_comment_create.ts} +24 -26
  109. package/core/events/events_comment_delete.d.ts +35 -0
  110. package/core/events/{events_comment_delete.js → events_comment_delete.ts} +20 -24
  111. package/core/events/events_comment_move.d.ts +55 -0
  112. package/core/events/{events_comment_move.js → events_comment_move.ts} +39 -42
  113. package/core/events/events_marker_move.d.ts +40 -0
  114. package/core/events/events_marker_move.ts +99 -0
  115. package/core/events/events_selected.d.ts +34 -0
  116. package/core/events/events_selected.ts +78 -0
  117. package/core/events/events_theme_change.d.ts +30 -0
  118. package/core/events/{events_theme_change.js → events_theme_change.ts} +19 -24
  119. package/core/events/events_toolbox_item_select.d.ts +34 -0
  120. package/core/events/events_toolbox_item_select.ts +79 -0
  121. package/core/events/events_trashcan_open.d.ts +31 -0
  122. package/core/events/events_trashcan_open.ts +68 -0
  123. package/core/events/events_ui.d.ts +37 -0
  124. package/core/events/{events_ui.js → events_ui.ts} +27 -26
  125. package/core/events/events_ui_base.d.ts +26 -0
  126. package/core/events/{events_ui_base.js → events_ui_base.ts} +17 -26
  127. package/core/events/events_var_base.d.ts +31 -0
  128. package/core/events/events_var_base.ts +65 -0
  129. package/core/events/events_var_create.d.ts +35 -0
  130. package/core/events/{events_var_create.js → events_var_create.ts} +24 -25
  131. package/core/events/events_var_delete.d.ts +35 -0
  132. package/core/events/{events_var_delete.js → events_var_delete.ts} +24 -25
  133. package/core/events/events_var_rename.d.ts +36 -0
  134. package/core/events/{events_var_rename.js → events_var_rename.ts} +25 -26
  135. package/core/events/events_viewport.d.ts +39 -0
  136. package/core/events/events_viewport.ts +100 -0
  137. package/core/events/utils.d.ts +272 -0
  138. package/core/events/{utils.js → utils.ts} +148 -219
  139. package/core/events/workspace_events.d.ts +36 -0
  140. package/core/events/workspace_events.ts +86 -0
  141. package/core/extensions.d.ts +107 -0
  142. package/core/{extensions.js → extensions.ts} +153 -172
  143. package/core/field.d.ts +534 -0
  144. package/core/{field.js → field.ts} +413 -489
  145. package/core/field_angle.d.ts +176 -0
  146. package/core/field_angle.ts +563 -0
  147. package/core/field_checkbox.d.ts +124 -0
  148. package/core/field_checkbox.ts +243 -0
  149. package/core/field_colour.d.ts +200 -0
  150. package/core/field_colour.ts +632 -0
  151. package/core/field_dropdown.d.ts +222 -0
  152. package/core/{field_dropdown.js → field_dropdown.ts} +277 -299
  153. package/core/field_image.d.ts +134 -0
  154. package/core/field_image.ts +282 -0
  155. package/core/field_label.d.ts +71 -0
  156. package/core/field_label.ts +152 -0
  157. package/core/field_label_serializable.d.ts +42 -0
  158. package/core/field_label_serializable.ts +76 -0
  159. package/core/field_multilineinput.d.ts +146 -0
  160. package/core/{field_multilineinput.js → field_multilineinput.ts} +166 -163
  161. package/core/field_number.d.ts +156 -0
  162. package/core/{field_number.js → field_number.ts} +110 -123
  163. package/core/field_registry.d.ts +45 -0
  164. package/core/{field_registry.js → field_registry.ts} +37 -30
  165. package/core/field_textinput.d.ts +219 -0
  166. package/core/field_textinput.ts +591 -0
  167. package/core/field_variable.d.ts +217 -0
  168. package/core/{field_variable.js → field_variable.ts} +174 -187
  169. package/core/flyout_base.d.ts +459 -0
  170. package/core/{flyout_base.js → flyout_base.ts} +429 -518
  171. package/core/flyout_button.d.ts +81 -0
  172. package/core/flyout_button.ts +292 -0
  173. package/core/flyout_horizontal.d.ts +82 -0
  174. package/core/{flyout_horizontal.js → flyout_horizontal.ts} +97 -107
  175. package/core/flyout_metrics_manager.d.ts +40 -0
  176. package/core/{flyout_metrics_manager.js → flyout_metrics_manager.ts} +22 -34
  177. package/core/flyout_vertical.d.ts +83 -0
  178. package/core/{flyout_vertical.js → flyout_vertical.ts} +106 -117
  179. package/core/generator.d.ts +205 -0
  180. package/core/{generator.js → generator.ts} +168 -193
  181. package/core/gesture.d.ts +357 -0
  182. package/core/{gesture.js → gesture.ts} +289 -369
  183. package/core/grid.d.ts +83 -0
  184. package/core/grid.ts +192 -0
  185. package/core/icon.d.ts +78 -0
  186. package/core/icon.ts +189 -0
  187. package/core/inject.d.ts +15 -0
  188. package/core/{inject.js → inject.ts} +101 -100
  189. package/core/input.d.ts +128 -0
  190. package/core/input.ts +309 -0
  191. package/core/input_types.d.ts +14 -0
  192. package/core/{input_types.js → input_types.ts} +8 -12
  193. package/core/insertion_marker_manager.d.ts +212 -0
  194. package/core/{insertion_marker_manager.js → insertion_marker_manager.ts} +234 -236
  195. package/core/interfaces/i_ast_node_location.d.ts +11 -0
  196. package/core/interfaces/{i_ast_node_location.js → i_ast_node_location.ts} +4 -7
  197. package/core/interfaces/i_ast_node_location_svg.d.ts +22 -0
  198. package/core/interfaces/i_ast_node_location_svg.ts +37 -0
  199. package/core/interfaces/i_ast_node_location_with_block.d.ts +18 -0
  200. package/core/interfaces/i_ast_node_location_with_block.ts +38 -0
  201. package/core/interfaces/i_autohideable.d.ts +18 -0
  202. package/core/interfaces/i_autohideable.ts +34 -0
  203. package/core/interfaces/i_block_dragger.d.ts +43 -0
  204. package/core/interfaces/i_block_dragger.ts +67 -0
  205. package/core/interfaces/i_bounded_element.d.ts +24 -0
  206. package/core/interfaces/i_bounded_element.ts +42 -0
  207. package/core/interfaces/i_bubble.d.ts +59 -0
  208. package/core/interfaces/i_bubble.ts +88 -0
  209. package/core/interfaces/i_collapsible_toolbox_item.d.ts +26 -0
  210. package/core/interfaces/i_collapsible_toolbox_item.ts +47 -0
  211. package/core/interfaces/i_component.d.ts +17 -0
  212. package/core/interfaces/{i_component.js → i_component.ts} +9 -14
  213. package/core/interfaces/i_connection_checker.d.ts +69 -0
  214. package/core/interfaces/i_connection_checker.ts +102 -0
  215. package/core/interfaces/i_contextmenu.d.ts +13 -0
  216. package/core/interfaces/i_contextmenu.ts +26 -0
  217. package/core/interfaces/i_copyable.d.ts +24 -0
  218. package/core/interfaces/i_copyable.ts +40 -0
  219. package/core/interfaces/i_deletable.d.ts +16 -0
  220. package/core/interfaces/{i_deletable.js → i_deletable.ts} +9 -13
  221. package/core/interfaces/i_delete_area.d.ts +25 -0
  222. package/core/interfaces/i_delete_area.ts +46 -0
  223. package/core/interfaces/i_drag_target.d.ts +53 -0
  224. package/core/interfaces/i_drag_target.ts +84 -0
  225. package/core/interfaces/i_draggable.d.ts +12 -0
  226. package/core/interfaces/{i_draggable.js → i_draggable.ts} +4 -10
  227. package/core/interfaces/i_flyout.d.ts +134 -0
  228. package/core/interfaces/i_flyout.ts +186 -0
  229. package/core/interfaces/i_keyboard_accessible.d.ts +18 -0
  230. package/core/interfaces/i_keyboard_accessible.ts +35 -0
  231. package/core/interfaces/i_metrics_manager.d.ts +117 -0
  232. package/core/interfaces/i_metrics_manager.ts +151 -0
  233. package/core/interfaces/i_movable.d.ts +16 -0
  234. package/core/interfaces/{i_movable.js → i_movable.ts} +9 -13
  235. package/core/interfaces/i_positionable.d.ts +27 -0
  236. package/core/interfaces/i_positionable.ts +50 -0
  237. package/core/interfaces/i_registrable.d.ts +11 -0
  238. package/core/interfaces/{i_registrable.js → i_registrable.ts} +3 -7
  239. package/core/interfaces/i_registrable_field.d.ts +17 -0
  240. package/core/interfaces/{i_registrable_field.js → i_registrable_field.ts} +8 -16
  241. package/core/interfaces/i_selectable.d.ts +18 -0
  242. package/core/interfaces/i_selectable.ts +34 -0
  243. package/core/interfaces/i_selectable_toolbox_item.d.ts +42 -0
  244. package/core/interfaces/i_selectable_toolbox_item.ts +64 -0
  245. package/core/interfaces/i_serializer.d.ts +42 -0
  246. package/core/interfaces/i_serializer.ts +65 -0
  247. package/core/interfaces/i_styleable.d.ts +21 -0
  248. package/core/interfaces/i_styleable.ts +35 -0
  249. package/core/interfaces/i_toolbox.d.ts +85 -0
  250. package/core/interfaces/i_toolbox.ts +127 -0
  251. package/core/interfaces/i_toolbox_item.d.ts +62 -0
  252. package/core/interfaces/i_toolbox_item.ts +84 -0
  253. package/core/internal_constants.d.ts +40 -0
  254. package/core/{internal_constants.js → internal_constants.ts} +13 -18
  255. package/core/keyboard_nav/ast_node.d.ts +239 -0
  256. package/core/keyboard_nav/{ast_node.js → ast_node.ts} +207 -231
  257. package/core/keyboard_nav/basic_cursor.d.ts +88 -0
  258. package/core/keyboard_nav/{basic_cursor.js → basic_cursor.ts} +55 -66
  259. package/core/keyboard_nav/cursor.d.ts +41 -0
  260. package/core/keyboard_nav/{cursor.js → cursor.ts} +25 -35
  261. package/core/keyboard_nav/marker.d.ts +58 -0
  262. package/core/keyboard_nav/{marker.js → marker.ts} +36 -55
  263. package/core/keyboard_nav/tab_navigate_cursor.d.ts +19 -0
  264. package/core/keyboard_nav/{tab_navigate_cursor.js → tab_navigate_cursor.ts} +11 -15
  265. package/core/main.d.ts +11 -0
  266. package/core/main.js +303 -0
  267. package/core/marker_manager.d.ts +85 -0
  268. package/core/marker_manager.ts +181 -0
  269. package/core/menu.d.ts +149 -0
  270. package/core/{menu.js → menu.ts} +141 -174
  271. package/core/menuitem.d.ts +118 -0
  272. package/core/menuitem.ts +240 -0
  273. package/core/metrics_manager.d.ts +201 -0
  274. package/core/{metrics_manager.js → metrics_manager.ts} +117 -156
  275. package/core/msg.d.ts +9 -0
  276. package/core/{msg.js → msg.ts} +4 -8
  277. package/core/mutator.d.ts +128 -0
  278. package/core/{mutator.js → mutator.ts} +196 -211
  279. package/core/names.d.ts +124 -0
  280. package/core/names.ts +267 -0
  281. package/core/options.d.ts +137 -0
  282. package/core/{options.js → options.ts} +147 -173
  283. package/core/positionable_helpers.d.ts +88 -0
  284. package/core/{positionable_helpers.js → positionable_helpers.ts} +63 -70
  285. package/core/procedures.d.ts +108 -0
  286. package/core/{procedures.js → procedures.ts} +143 -152
  287. package/core/registry.d.ts +137 -0
  288. package/core/registry.ts +339 -0
  289. package/core/rendered_connection.d.ts +191 -0
  290. package/core/{rendered_connection.js → rendered_connection.ts} +164 -184
  291. package/core/renderers/common/block_rendering.d.ts +114 -0
  292. package/core/renderers/common/block_rendering.ts +164 -0
  293. package/core/renderers/common/constants.d.ts +458 -0
  294. package/core/renderers/common/constants.ts +1124 -0
  295. package/core/renderers/common/debug.d.ts +28 -0
  296. package/core/renderers/common/{debug.js → debug.ts} +14 -20
  297. package/core/renderers/common/debugger.d.ts +120 -0
  298. package/core/renderers/common/{debugger.js → debugger.ts} +100 -124
  299. package/core/renderers/common/drawer.d.ts +132 -0
  300. package/core/renderers/common/{drawer.js → drawer.ts} +112 -137
  301. package/core/renderers/common/i_path_object.d.ts +117 -0
  302. package/core/renderers/common/i_path_object.ts +161 -0
  303. package/core/renderers/common/info.d.ts +194 -0
  304. package/core/renderers/common/{info.js → info.ts} +165 -222
  305. package/core/renderers/common/marker_svg.d.ts +220 -0
  306. package/core/renderers/common/marker_svg.ts +680 -0
  307. package/core/renderers/common/path_object.d.ts +146 -0
  308. package/core/renderers/common/path_object.ts +272 -0
  309. package/core/renderers/common/renderer.d.ts +157 -0
  310. package/core/renderers/common/renderer.ts +271 -0
  311. package/core/renderers/geras/constants.d.ts +23 -0
  312. package/core/renderers/geras/constants.ts +61 -0
  313. package/core/renderers/geras/drawer.d.ts +43 -0
  314. package/core/renderers/geras/{drawer.js → drawer.ts} +40 -84
  315. package/core/renderers/geras/geras.d.ts +11 -0
  316. package/core/renderers/geras/geras.ts +37 -0
  317. package/core/renderers/geras/highlight_constants.d.ts +108 -0
  318. package/core/renderers/geras/{highlight_constants.js → highlight_constants.ts} +107 -69
  319. package/core/renderers/geras/highlighter.d.ts +98 -0
  320. package/core/renderers/geras/{highlighter.js → highlighter.ts} +81 -86
  321. package/core/renderers/geras/info.d.ts +45 -0
  322. package/core/renderers/geras/{info.js → info.ts} +61 -99
  323. package/core/renderers/geras/measurables/inline_input.d.ts +23 -0
  324. package/core/renderers/geras/measurables/inline_input.ts +51 -0
  325. package/core/renderers/geras/measurables/statement_input.d.ts +23 -0
  326. package/core/renderers/geras/measurables/statement_input.ts +50 -0
  327. package/core/renderers/geras/path_object.d.ts +47 -0
  328. package/core/renderers/geras/{path_object.js → path_object.ts} +46 -74
  329. package/core/renderers/geras/renderer.d.ts +69 -0
  330. package/core/renderers/geras/renderer.ts +126 -0
  331. package/core/renderers/measurables/base.d.ts +27 -0
  332. package/core/renderers/measurables/base.ts +53 -0
  333. package/core/renderers/measurables/bottom_row.d.ts +61 -0
  334. package/core/renderers/measurables/bottom_row.ts +120 -0
  335. package/core/renderers/measurables/connection.d.ts +25 -0
  336. package/core/renderers/measurables/connection.ts +52 -0
  337. package/core/renderers/measurables/external_value_input.d.ts +27 -0
  338. package/core/renderers/measurables/external_value_input.ts +65 -0
  339. package/core/renderers/measurables/field.d.ts +30 -0
  340. package/core/renderers/measurables/field.ts +63 -0
  341. package/core/renderers/measurables/hat.d.ts +21 -0
  342. package/core/renderers/measurables/{hat.js → hat.ts} +12 -14
  343. package/core/renderers/measurables/icon.d.ts +26 -0
  344. package/core/renderers/measurables/{icon.js → icon.ts} +14 -18
  345. package/core/renderers/measurables/in_row_spacer.d.ts +21 -0
  346. package/core/renderers/measurables/in_row_spacer.ts +44 -0
  347. package/core/renderers/measurables/inline_input.d.ts +24 -0
  348. package/core/renderers/measurables/{inline_input.js → inline_input.ts} +22 -26
  349. package/core/renderers/measurables/input_connection.d.ts +29 -0
  350. package/core/renderers/measurables/input_connection.ts +66 -0
  351. package/core/renderers/measurables/input_row.d.ts +30 -0
  352. package/core/renderers/measurables/{input_row.js → input_row.ts} +24 -31
  353. package/core/renderers/measurables/jagged_edge.d.ts +20 -0
  354. package/core/renderers/measurables/{jagged_edge.js → jagged_edge.ts} +10 -13
  355. package/core/renderers/measurables/next_connection.d.ts +23 -0
  356. package/core/renderers/measurables/next_connection.ts +47 -0
  357. package/core/renderers/measurables/output_connection.d.ts +26 -0
  358. package/core/renderers/measurables/output_connection.ts +56 -0
  359. package/core/renderers/measurables/previous_connection.d.ts +23 -0
  360. package/core/renderers/measurables/previous_connection.ts +47 -0
  361. package/core/renderers/measurables/round_corner.d.ts +21 -0
  362. package/core/renderers/measurables/round_corner.ts +49 -0
  363. package/core/renderers/measurables/row.d.ts +141 -0
  364. package/core/renderers/measurables/row.ts +225 -0
  365. package/core/renderers/measurables/spacer_row.d.ts +29 -0
  366. package/core/renderers/measurables/spacer_row.ts +55 -0
  367. package/core/renderers/measurables/square_corner.d.ts +21 -0
  368. package/core/renderers/measurables/square_corner.ts +47 -0
  369. package/core/renderers/measurables/statement_input.d.ts +22 -0
  370. package/core/renderers/measurables/{statement_input.js → statement_input.ts} +14 -18
  371. package/core/renderers/measurables/top_row.d.ts +56 -0
  372. package/core/renderers/measurables/top_row.ts +122 -0
  373. package/core/renderers/measurables/types.d.ts +235 -0
  374. package/core/renderers/measurables/types.ts +332 -0
  375. package/core/renderers/minimalist/constants.d.ts +14 -0
  376. package/core/renderers/minimalist/{constants.js → constants.ts} +5 -10
  377. package/core/renderers/minimalist/drawer.d.ts +21 -0
  378. package/core/renderers/minimalist/drawer.ts +38 -0
  379. package/core/renderers/minimalist/info.d.ts +30 -0
  380. package/core/renderers/minimalist/info.ts +52 -0
  381. package/core/renderers/minimalist/minimalist.d.ts +6 -0
  382. package/core/renderers/minimalist/minimalist.ts +22 -0
  383. package/core/renderers/minimalist/renderer.d.ts +41 -0
  384. package/core/renderers/minimalist/renderer.ts +71 -0
  385. package/core/renderers/thrasos/info.d.ts +40 -0
  386. package/core/renderers/thrasos/{info.js → info.ts} +66 -67
  387. package/core/renderers/thrasos/renderer.d.ts +25 -0
  388. package/core/renderers/thrasos/renderer.ts +48 -0
  389. package/core/renderers/thrasos/thrasos.d.ts +4 -0
  390. package/core/renderers/thrasos/thrasos.ts +20 -0
  391. package/core/renderers/zelos/constants.d.ts +186 -0
  392. package/core/renderers/zelos/{constants.js → constants.ts} +294 -441
  393. package/core/renderers/zelos/drawer.d.ts +47 -0
  394. package/core/renderers/zelos/{drawer.js → drawer.ts} +73 -95
  395. package/core/renderers/zelos/info.d.ts +88 -0
  396. package/core/renderers/zelos/{info.js → info.ts} +111 -142
  397. package/core/renderers/zelos/marker_svg.d.ts +46 -0
  398. package/core/renderers/zelos/marker_svg.ts +151 -0
  399. package/core/renderers/zelos/measurables/bottom_row.d.ts +27 -0
  400. package/core/renderers/zelos/measurables/bottom_row.ts +53 -0
  401. package/core/renderers/zelos/measurables/inputs.d.ts +23 -0
  402. package/core/renderers/zelos/measurables/{inputs.js → inputs.ts} +14 -15
  403. package/core/renderers/zelos/measurables/row_elements.d.ts +21 -0
  404. package/core/renderers/zelos/measurables/row_elements.ts +45 -0
  405. package/core/renderers/zelos/measurables/top_row.d.ts +29 -0
  406. package/core/renderers/zelos/measurables/{top_row.js → top_row.ts} +14 -27
  407. package/core/renderers/zelos/path_object.d.ts +77 -0
  408. package/core/renderers/zelos/path_object.ts +215 -0
  409. package/core/renderers/zelos/renderer.d.ts +74 -0
  410. package/core/renderers/zelos/renderer.ts +142 -0
  411. package/core/renderers/zelos/zelos.d.ts +12 -0
  412. package/core/renderers/zelos/zelos.ts +39 -0
  413. package/core/scrollbar.d.ts +277 -0
  414. package/core/{scrollbar.js → scrollbar.ts} +307 -328
  415. package/core/scrollbar_pair.d.ts +105 -0
  416. package/core/{scrollbar_pair.js → scrollbar_pair.ts} +71 -79
  417. package/core/serialization/blocks.d.ts +98 -0
  418. package/core/serialization/{blocks.js → blocks.ts} +229 -228
  419. package/core/serialization/exceptions.d.ts +73 -0
  420. package/core/serialization/exceptions.ts +98 -0
  421. package/core/serialization/priorities.d.ts +15 -0
  422. package/core/serialization/{priorities.js → priorities.ts} +4 -10
  423. package/core/serialization/registry.d.ts +20 -0
  424. package/core/serialization/{registry.js → registry.ts} +11 -13
  425. package/core/serialization/variables.d.ts +14 -0
  426. package/core/serialization/{variables.js → variables.ts} +30 -32
  427. package/core/serialization/workspaces.d.ts +28 -0
  428. package/core/serialization/{workspaces.js → workspaces.ts} +30 -27
  429. package/core/shortcut_items.d.ts +61 -0
  430. package/core/{shortcut_items.js → shortcut_items.ts} +121 -157
  431. package/core/shortcut_registry.d.ts +151 -0
  432. package/core/shortcut_registry.ts +355 -0
  433. package/core/sprites.d.ts +19 -0
  434. package/core/{sprites.js → sprites.ts} +4 -6
  435. package/core/theme/classic.d.ts +12 -0
  436. package/core/theme/{classic.js → classic.ts} +5 -7
  437. package/core/theme/themes.d.ts +8 -0
  438. package/core/theme/themes.ts +22 -0
  439. package/core/theme/zelos.d.ts +11 -0
  440. package/core/theme/{zelos.js → zelos.ts} +4 -7
  441. package/core/theme.d.ts +142 -0
  442. package/core/theme.ts +221 -0
  443. package/core/theme_manager.d.ts +81 -0
  444. package/core/theme_manager.ts +186 -0
  445. package/core/toolbox/category.d.ts +239 -0
  446. package/core/toolbox/category.ts +679 -0
  447. package/core/toolbox/collapsible_category.d.ts +91 -0
  448. package/core/toolbox/collapsible_category.ts +273 -0
  449. package/core/toolbox/separator.d.ts +39 -0
  450. package/core/toolbox/separator.ts +105 -0
  451. package/core/toolbox/toolbox.d.ts +352 -0
  452. package/core/toolbox/{toolbox.js → toolbox.ts} +316 -432
  453. package/core/toolbox/toolbox_item.d.ts +85 -0
  454. package/core/toolbox/toolbox_item.ts +147 -0
  455. package/core/tooltip.d.ts +126 -0
  456. package/core/{tooltip.js → tooltip.ts} +136 -214
  457. package/core/touch.d.ts +121 -0
  458. package/core/touch.ts +306 -0
  459. package/core/touch_gesture.d.ts +115 -0
  460. package/core/{touch_gesture.js → touch_gesture.ts} +87 -125
  461. package/core/trashcan.d.ts +195 -0
  462. package/core/{trashcan.js → trashcan.ts} +226 -312
  463. package/core/utils/aria.d.ts +67 -0
  464. package/core/utils/{aria.js → aria.ts} +47 -61
  465. package/core/utils/array.d.ts +14 -0
  466. package/core/utils/{array.js → array.ts} +10 -12
  467. package/core/utils/colour.d.ts +103 -0
  468. package/core/utils/{colour.js → colour.ts} +60 -72
  469. package/core/utils/coordinate.d.ts +72 -0
  470. package/core/utils/coordinate.ts +124 -0
  471. package/core/utils/deprecation.d.ts +17 -0
  472. package/core/utils/{deprecation.js → deprecation.ts} +11 -11
  473. package/core/utils/dom.d.ts +165 -0
  474. package/core/utils/{dom.js → dom.ts} +125 -147
  475. package/core/utils/idgenerator.d.ts +25 -0
  476. package/core/utils/{idgenerator.js → idgenerator.ts} +15 -18
  477. package/core/utils/keycodes.d.ts +137 -0
  478. package/core/utils/keycodes.ts +169 -0
  479. package/core/utils/math.d.ts +30 -0
  480. package/core/utils/{math.js → math.ts} +17 -19
  481. package/core/utils/metrics.d.ts +64 -0
  482. package/core/utils/metrics.ts +97 -0
  483. package/core/utils/object.d.ts +35 -0
  484. package/core/utils/{object.js → object.ts} +30 -26
  485. package/core/utils/parsing.d.ts +50 -0
  486. package/core/utils/{parsing.js → parsing.ts} +50 -50
  487. package/core/utils/rect.d.ts +38 -0
  488. package/core/utils/{rect.js → rect.ts} +18 -31
  489. package/core/utils/sentinel.d.ts +11 -0
  490. package/core/utils/{sentinel.js → sentinel.ts} +3 -5
  491. package/core/utils/size.d.ts +27 -0
  492. package/core/utils/{size.js → size.ts} +12 -26
  493. package/core/utils/string.d.ts +55 -0
  494. package/core/utils/{string.js → string.ts} +64 -61
  495. package/core/utils/style.d.ts +127 -0
  496. package/core/utils/{style.js → style.ts} +102 -92
  497. package/core/utils/svg.d.ts +68 -0
  498. package/core/utils/svg.ts +88 -0
  499. package/core/utils/svg_math.d.ts +70 -0
  500. package/core/utils/{svg_math.js → svg_math.ts} +72 -71
  501. package/core/utils/svg_paths.d.ts +101 -0
  502. package/core/utils/{svg_paths.js → svg_paths.ts} +56 -65
  503. package/core/utils/toolbox.d.ts +193 -0
  504. package/core/utils/toolbox.ts +433 -0
  505. package/core/utils/useragent.d.ts +33 -0
  506. package/core/utils/useragent.ts +135 -0
  507. package/core/utils/xml.d.ts +52 -0
  508. package/core/utils/{xml.js → xml.ts} +26 -36
  509. package/core/utils.d.ts +217 -0
  510. package/core/utils.ts +428 -0
  511. package/core/variable_map.d.ts +141 -0
  512. package/core/{variable_map.js → variable_map.ts} +131 -149
  513. package/core/variable_model.d.ts +40 -0
  514. package/core/variable_model.ts +82 -0
  515. package/core/variables.d.ts +181 -0
  516. package/core/{variables.js → variables.ts} +206 -188
  517. package/core/variables_dynamic.d.ts +38 -0
  518. package/core/{variables_dynamic.js → variables_dynamic.ts} +47 -43
  519. package/core/warning.d.ts +50 -0
  520. package/core/{warning.js → warning.ts} +52 -66
  521. package/core/widgetdiv.d.ts +69 -0
  522. package/core/widgetdiv.ts +257 -0
  523. package/core/workspace.d.ts +386 -0
  524. package/core/workspace.ts +801 -0
  525. package/core/workspace_audio.d.ts +47 -0
  526. package/core/{workspace_audio.js → workspace_audio.ts} +47 -60
  527. package/core/workspace_comment.d.ts +170 -0
  528. package/core/workspace_comment.ts +398 -0
  529. package/core/workspace_comment_svg.d.ts +329 -0
  530. package/core/{workspace_comment_svg.js → workspace_comment_svg.ts} +347 -444
  531. package/core/workspace_drag_surface_svg.d.ts +68 -0
  532. package/core/{workspace_drag_surface_svg.js → workspace_drag_surface_svg.ts} +75 -82
  533. package/core/workspace_dragger.d.ts +48 -0
  534. package/core/workspace_dragger.ts +104 -0
  535. package/core/workspace_svg.d.ts +920 -0
  536. package/core/{workspace_svg.js → workspace_svg.ts} +855 -935
  537. package/core/xml.d.ts +117 -0
  538. package/core/{xml.js → xml.ts} +306 -326
  539. package/core/zoom_controls.d.ts +130 -0
  540. package/core/{zoom_controls.js → zoom_controls.ts} +185 -251
  541. package/core.d.ts +1 -3
  542. package/core.js +1 -2
  543. package/dart.d.ts +0 -3
  544. package/dart_compressed.js +387 -99
  545. package/dart_compressed.js.map +1 -1
  546. package/generators/dart/all.js +2 -0
  547. package/generators/dart/colour.js +1 -1
  548. package/generators/dart/lists.js +1 -1
  549. package/generators/dart/logic.js +1 -1
  550. package/generators/dart/loops.js +1 -1
  551. package/generators/dart/math.js +1 -1
  552. package/generators/dart/procedures.js +1 -1
  553. package/generators/dart/text.js +1 -1
  554. package/generators/dart/variables.js +1 -1
  555. package/generators/dart/variables_dynamic.js +1 -1
  556. package/generators/dart.js +1 -2
  557. package/generators/javascript/all.js +2 -0
  558. package/generators/javascript/colour.js +1 -1
  559. package/generators/javascript/lists.js +1 -1
  560. package/generators/javascript/logic.js +1 -1
  561. package/generators/javascript/loops.js +1 -1
  562. package/generators/javascript/math.js +4 -4
  563. package/generators/javascript/procedures.js +1 -1
  564. package/generators/javascript/text.js +2 -2
  565. package/generators/javascript/variables.js +1 -1
  566. package/generators/javascript/variables_dynamic.js +1 -1
  567. package/generators/javascript.js +1 -3
  568. package/generators/lua/all.js +2 -0
  569. package/generators/lua/colour.js +1 -1
  570. package/generators/lua/lists.js +1 -1
  571. package/generators/lua/logic.js +1 -1
  572. package/generators/lua/loops.js +1 -1
  573. package/generators/lua/math.js +1 -1
  574. package/generators/lua/procedures.js +1 -1
  575. package/generators/lua/text.js +1 -1
  576. package/generators/lua/variables.js +1 -1
  577. package/generators/lua/variables_dynamic.js +1 -1
  578. package/generators/lua.js +1 -2
  579. package/generators/php/all.js +2 -0
  580. package/generators/php/colour.js +1 -1
  581. package/generators/php/lists.js +1 -2
  582. package/generators/php/logic.js +1 -1
  583. package/generators/php/loops.js +1 -1
  584. package/generators/php/math.js +1 -1
  585. package/generators/php/procedures.js +1 -1
  586. package/generators/php/text.js +1 -1
  587. package/generators/php/variables.js +1 -1
  588. package/generators/php/variables_dynamic.js +1 -1
  589. package/generators/php.js +1 -2
  590. package/generators/python/all.js +2 -0
  591. package/generators/python/colour.js +3 -3
  592. package/generators/python/lists.js +1 -1
  593. package/generators/python/logic.js +1 -1
  594. package/generators/python/loops.js +4 -7
  595. package/generators/python/math.js +1 -1
  596. package/generators/python/procedures.js +1 -1
  597. package/generators/python/text.js +1 -1
  598. package/generators/python/variables.js +1 -1
  599. package/generators/python/variables_dynamic.js +1 -1
  600. package/generators/python.js +1 -2
  601. package/index.d.ts +2 -8
  602. package/javascript.d.ts +0 -3
  603. package/javascript_compressed.js +314 -104
  604. package/javascript_compressed.js.map +1 -1
  605. package/lua.d.ts +0 -3
  606. package/lua_compressed.js +399 -81
  607. package/lua_compressed.js.map +1 -1
  608. package/package.json +5 -5
  609. package/php.d.ts +0 -3
  610. package/php_compressed.js +322 -93
  611. package/php_compressed.js.map +1 -1
  612. package/python.d.ts +0 -3
  613. package/python_compressed.js +237 -90
  614. package/python_compressed.js.map +1 -1
  615. package/blockly.d.ts +0 -26127
  616. package/core/blockly_options.js +0 -28
  617. package/core/bubble_dragger.js +0 -298
  618. package/core/clipboard.js +0 -80
  619. package/core/component_manager.js +0 -263
  620. package/core/contextmenu_items.js +0 -651
  621. package/core/contextmenu_registry.js +0 -178
  622. package/core/delete_area.js +0 -87
  623. package/core/dialog.js +0 -107
  624. package/core/drag_target.js +0 -98
  625. package/core/events/events.js +0 -147
  626. package/core/events/events_abstract.js +0 -133
  627. package/core/events/events_block_base.js +0 -70
  628. package/core/events/events_block_drag.js +0 -89
  629. package/core/events/events_bubble_open.js +0 -90
  630. package/core/events/events_comment_base.js +0 -121
  631. package/core/events/events_marker_move.js +0 -110
  632. package/core/events/events_selected.js +0 -83
  633. package/core/events/events_toolbox_item_select.js +0 -84
  634. package/core/events/events_trashcan_open.js +0 -73
  635. package/core/events/events_var_base.js +0 -70
  636. package/core/events/events_viewport.js +0 -107
  637. package/core/events/workspace_events.js +0 -93
  638. package/core/field_angle.js +0 -591
  639. package/core/field_checkbox.js +0 -255
  640. package/core/field_colour.js +0 -717
  641. package/core/field_image.js +0 -304
  642. package/core/field_label.js +0 -149
  643. package/core/field_label_serializable.js +0 -80
  644. package/core/field_textinput.js +0 -619
  645. package/core/flyout_button.js +0 -356
  646. package/core/grid.js +0 -226
  647. package/core/icon.js +0 -225
  648. package/core/input.js +0 -335
  649. package/core/interfaces/i_ast_node_location_svg.js +0 -45
  650. package/core/interfaces/i_ast_node_location_with_block.js +0 -41
  651. package/core/interfaces/i_autohideable.js +0 -40
  652. package/core/interfaces/i_block_dragger.js +0 -66
  653. package/core/interfaces/i_bounded_element.js +0 -45
  654. package/core/interfaces/i_bubble.js +0 -95
  655. package/core/interfaces/i_collapsible_toolbox_item.js +0 -53
  656. package/core/interfaces/i_connection_checker.js +0 -104
  657. package/core/interfaces/i_contextmenu.js +0 -32
  658. package/core/interfaces/i_copyable.js +0 -49
  659. package/core/interfaces/i_delete_area.js +0 -50
  660. package/core/interfaces/i_drag_target.js +0 -88
  661. package/core/interfaces/i_flyout.js +0 -201
  662. package/core/interfaces/i_keyboard_accessible.js +0 -38
  663. package/core/interfaces/i_metrics_manager.js +0 -154
  664. package/core/interfaces/i_positionable.js +0 -51
  665. package/core/interfaces/i_selectable.js +0 -51
  666. package/core/interfaces/i_selectable_toolbox_item.js +0 -73
  667. package/core/interfaces/i_serializer.js +0 -77
  668. package/core/interfaces/i_styleable.js +0 -39
  669. package/core/interfaces/i_toolbox.js +0 -142
  670. package/core/interfaces/i_toolbox_item.js +0 -85
  671. package/core/marker_manager.js +0 -213
  672. package/core/menuitem.js +0 -292
  673. package/core/names.js +0 -293
  674. package/core/registry.js +0 -384
  675. package/core/renderers/common/block_rendering.js +0 -170
  676. package/core/renderers/common/constants.js +0 -1250
  677. package/core/renderers/common/i_path_object.js +0 -162
  678. package/core/renderers/common/marker_svg.js +0 -721
  679. package/core/renderers/common/path_object.js +0 -283
  680. package/core/renderers/common/renderer.js +0 -305
  681. package/core/renderers/geras/constants.js +0 -73
  682. package/core/renderers/geras/geras.js +0 -36
  683. package/core/renderers/geras/measurables/inline_input.js +0 -58
  684. package/core/renderers/geras/measurables/statement_input.js +0 -57
  685. package/core/renderers/geras/renderer.js +0 -149
  686. package/core/renderers/measurables/base.js +0 -64
  687. package/core/renderers/measurables/bottom_row.js +0 -138
  688. package/core/renderers/measurables/connection.js +0 -56
  689. package/core/renderers/measurables/external_value_input.js +0 -70
  690. package/core/renderers/measurables/field.js +0 -71
  691. package/core/renderers/measurables/in_row_spacer.js +0 -47
  692. package/core/renderers/measurables/input_connection.js +0 -75
  693. package/core/renderers/measurables/next_connection.js +0 -50
  694. package/core/renderers/measurables/output_connection.js +0 -61
  695. package/core/renderers/measurables/previous_connection.js +0 -50
  696. package/core/renderers/measurables/round_corner.js +0 -52
  697. package/core/renderers/measurables/row.js +0 -247
  698. package/core/renderers/measurables/spacer_row.js +0 -69
  699. package/core/renderers/measurables/square_corner.js +0 -50
  700. package/core/renderers/measurables/top_row.js +0 -143
  701. package/core/renderers/measurables/types.js +0 -353
  702. package/core/renderers/minimalist/drawer.js +0 -42
  703. package/core/renderers/minimalist/info.js +0 -54
  704. package/core/renderers/minimalist/minimalist.js +0 -26
  705. package/core/renderers/minimalist/renderer.js +0 -80
  706. package/core/renderers/thrasos/renderer.js +0 -53
  707. package/core/renderers/thrasos/thrasos.js +0 -22
  708. package/core/renderers/zelos/marker_svg.js +0 -179
  709. package/core/renderers/zelos/measurables/bottom_row.js +0 -66
  710. package/core/renderers/zelos/measurables/row_elements.js +0 -46
  711. package/core/renderers/zelos/path_object.js +0 -247
  712. package/core/renderers/zelos/renderer.js +0 -147
  713. package/core/renderers/zelos/zelos.js +0 -38
  714. package/core/serialization/exceptions.js +0 -144
  715. package/core/shortcut_registry.js +0 -366
  716. package/core/theme/themes.js +0 -23
  717. package/core/theme.js +0 -228
  718. package/core/theme_manager.js +0 -211
  719. package/core/toolbox/category.js +0 -751
  720. package/core/toolbox/collapsible_category.js +0 -311
  721. package/core/toolbox/separator.js +0 -133
  722. package/core/toolbox/toolbox_item.js +0 -173
  723. package/core/touch.js +0 -285
  724. package/core/utils/coordinate.js +0 -138
  725. package/core/utils/global.js +0 -41
  726. package/core/utils/keycodes.js +0 -172
  727. package/core/utils/metrics.js +0 -154
  728. package/core/utils/svg.js +0 -186
  729. package/core/utils/toolbox.js +0 -459
  730. package/core/utils/useragent.js +0 -197
  731. package/core/utils.js +0 -383
  732. package/core/variable_model.js +0 -96
  733. package/core/widgetdiv.js +0 -290
  734. package/core/workspace.js +0 -836
  735. package/core/workspace_comment.js +0 -400
  736. package/core/workspace_dragger.js +0 -115
@@ -8,23 +8,20 @@
8
8
  * @fileoverview Utility functions for generating executable code from
9
9
  * Blockly code.
10
10
  */
11
- 'use strict';
12
11
 
13
12
  /**
14
13
  * Utility functions for generating executable code from
15
14
  * Blockly code.
16
15
  * @class
17
16
  */
18
- goog.module('Blockly.Generator');
17
+ import * as goog from '../closure/goog/goog.js';
18
+ goog.declareModuleId('Blockly.Generator');
19
19
 
20
- const common = goog.require('Blockly.common');
21
- const deprecation = goog.require('Blockly.utils.deprecation');
22
- /* eslint-disable-next-line no-unused-vars */
23
- const {Block} = goog.requireType('Blockly.Block');
24
- /* eslint-disable-next-line no-unused-vars */
25
- const {Names, NameType} = goog.require('Blockly.Names');
26
- /* eslint-disable-next-line no-unused-vars */
27
- const {Workspace} = goog.requireType('Blockly.Workspace');
20
+ import type {Block} from './block.js';
21
+ import * as common from './common.js';
22
+ import {Names, NameType} from './names.js';
23
+ import * as deprecation from './utils/deprecation.js';
24
+ import type {Workspace} from './workspace.js';
28
25
 
29
26
 
30
27
  /**
@@ -32,115 +29,91 @@ const {Workspace} = goog.requireType('Blockly.Workspace');
32
29
  * @unrestricted
33
30
  * @alias Blockly.Generator
34
31
  */
35
- class Generator {
32
+ export class Generator {
33
+ name_: AnyDuringMigration;
34
+
36
35
  /**
37
- * @param {string} name Language name of this generator.
36
+ * This is used as a placeholder in functions defined using
37
+ * Generator.provideFunction_. It must not be legal code that could
38
+ * legitimately appear in a function definition (or comment), and it must
39
+ * not confuse the regular expression parser.
38
40
  */
39
- constructor(name) {
40
- this.name_ = name;
41
+ protected FUNCTION_NAME_PLACEHOLDER_ = '{leCUI8hutHZI4480Dc}';
42
+ FUNCTION_NAME_PLACEHOLDER_REGEXP_: AnyDuringMigration;
43
+
44
+ /**
45
+ * Arbitrary code to inject into locations that risk causing infinite loops.
46
+ * Any instances of '%1' will be replaced by the block ID that failed.
47
+ * E.g. ' checkTimeout(%1);\n'
48
+ */
49
+ INFINITE_LOOP_TRAP: string|null = null;
50
+
51
+ /**
52
+ * Arbitrary code to inject before every statement.
53
+ * Any instances of '%1' will be replaced by the block ID of the statement.
54
+ * E.g. 'highlight(%1);\n'
55
+ */
56
+ STATEMENT_PREFIX: string|null = null;
41
57
 
42
- /**
43
- * This is used as a placeholder in functions defined using
44
- * Generator.provideFunction_. It must not be legal code that could
45
- * legitimately appear in a function definition (or comment), and it must
46
- * not confuse the regular expression parser.
47
- * @type {string}
48
- * @protected
49
- */
50
- this.FUNCTION_NAME_PLACEHOLDER_ = '{leCUI8hutHZI4480Dc}';
58
+ /**
59
+ * Arbitrary code to inject after every statement.
60
+ * Any instances of '%1' will be replaced by the block ID of the statement.
61
+ * E.g. 'highlight(%1);\n'
62
+ */
63
+ STATEMENT_SUFFIX: string|null = null;
64
+
65
+ /**
66
+ * The method of indenting. Defaults to two spaces, but language generators
67
+ * may override this to increase indent or change to tabs.
68
+ */
69
+ INDENT = ' ';
70
+
71
+ /**
72
+ * Maximum length for a comment before wrapping. Does not account for
73
+ * indenting level.
74
+ */
75
+ COMMENT_WRAP = 60;
76
+
77
+ /** List of outer-inner pairings that do NOT require parentheses. */
78
+ ORDER_OVERRIDES: number[][] = [];
79
+
80
+ /**
81
+ * Whether the init method has been called.
82
+ * Generators that set this flag to false after creation and true in init
83
+ * will cause blockToCode to emit a warning if the generator has not been
84
+ * initialized. If this flag is untouched, it will have no effect.
85
+ */
86
+ isInitialized: boolean|null = null;
87
+
88
+ /** Comma-separated list of reserved words. */
89
+ protected RESERVED_WORDS_ = '';
90
+
91
+ /** A dictionary of definitions to be printed before the code. */
92
+ protected definitions_?: AnyDuringMigration = undefined;
93
+
94
+ /**
95
+ * A dictionary mapping desired function names in definitions_ to actual
96
+ * function names (to avoid collisions with user functions).
97
+ */
98
+ protected functionNames_?: AnyDuringMigration = undefined;
99
+
100
+ /** A database of variable and procedure names. */
101
+ protected nameDB_?: Names = undefined;
102
+
103
+ /** @param name Language name of this generator. */
104
+ constructor(name: string) {
105
+ this.name_ = name;
51
106
 
52
107
  this.FUNCTION_NAME_PLACEHOLDER_REGEXP_ =
53
108
  new RegExp(this.FUNCTION_NAME_PLACEHOLDER_, 'g');
54
-
55
- /**
56
- * Arbitrary code to inject into locations that risk causing infinite loops.
57
- * Any instances of '%1' will be replaced by the block ID that failed.
58
- * E.g. ' checkTimeout(%1);\n'
59
- * @type {?string}
60
- */
61
- this.INFINITE_LOOP_TRAP = null;
62
-
63
- /**
64
- * Arbitrary code to inject before every statement.
65
- * Any instances of '%1' will be replaced by the block ID of the statement.
66
- * E.g. 'highlight(%1);\n'
67
- * @type {?string}
68
- */
69
- this.STATEMENT_PREFIX = null;
70
-
71
- /**
72
- * Arbitrary code to inject after every statement.
73
- * Any instances of '%1' will be replaced by the block ID of the statement.
74
- * E.g. 'highlight(%1);\n'
75
- * @type {?string}
76
- */
77
- this.STATEMENT_SUFFIX = null;
78
-
79
- /**
80
- * The method of indenting. Defaults to two spaces, but language generators
81
- * may override this to increase indent or change to tabs.
82
- * @type {string}
83
- */
84
- this.INDENT = ' ';
85
-
86
- /**
87
- * Maximum length for a comment before wrapping. Does not account for
88
- * indenting level.
89
- * @type {number}
90
- */
91
- this.COMMENT_WRAP = 60;
92
-
93
- /**
94
- * List of outer-inner pairings that do NOT require parentheses.
95
- * @type {!Array<!Array<number>>}
96
- */
97
- this.ORDER_OVERRIDES = [];
98
-
99
- /**
100
- * Whether the init method has been called.
101
- * Generators that set this flag to false after creation and true in init
102
- * will cause blockToCode to emit a warning if the generator has not been
103
- * initialized. If this flag is untouched, it will have no effect.
104
- * @type {?boolean}
105
- */
106
- this.isInitialized = null;
107
-
108
- /**
109
- * Comma-separated list of reserved words.
110
- * @type {string}
111
- * @protected
112
- */
113
- this.RESERVED_WORDS_ = '';
114
-
115
- /**
116
- * A dictionary of definitions to be printed before the code.
117
- * @type {!Object|undefined}
118
- * @protected
119
- */
120
- this.definitions_ = undefined;
121
-
122
- /**
123
- * A dictionary mapping desired function names in definitions_ to actual
124
- * function names (to avoid collisions with user functions).
125
- * @type {!Object|undefined}
126
- * @protected
127
- */
128
- this.functionNames_ = undefined;
129
-
130
- /**
131
- * A database of variable and procedure names.
132
- * @type {!Names|undefined}
133
- * @protected
134
- */
135
- this.nameDB_ = undefined;
136
109
  }
137
110
 
138
111
  /**
139
112
  * Generate code for all blocks in the workspace to the specified language.
140
- * @param {!Workspace=} workspace Workspace to generate code from.
141
- * @return {string} Generated code.
113
+ * @param workspace Workspace to generate code from.
114
+ * @return Generated code.
142
115
  */
143
- workspaceToCode(workspace) {
116
+ workspaceToCode(workspace?: Workspace): string {
144
117
  if (!workspace) {
145
118
  // Backwards compatibility from before there could be multiple workspaces.
146
119
  console.warn(
@@ -150,7 +123,7 @@ class Generator {
150
123
  let code = [];
151
124
  this.init(workspace);
152
125
  const blocks = workspace.getTopBlocks(true);
153
- for (let i = 0, block; (block = blocks[i]); i++) {
126
+ for (let i = 0, block; block = blocks[i]; i++) {
154
127
  let line = this.blockToCode(block);
155
128
  if (Array.isArray(line)) {
156
129
  // Value blocks return tuples of code and operator order.
@@ -161,7 +134,9 @@ class Generator {
161
134
  if (block.outputConnection) {
162
135
  // This block is a naked value. Ask the language's code generator if
163
136
  // it wants to append a semicolon, or something.
164
- line = this.scrubNakedValue(line);
137
+ // AnyDuringMigration because: Argument of type 'string | any[]' is
138
+ // not assignable to parameter of type 'string'.
139
+ line = this.scrubNakedValue(line as AnyDuringMigration);
165
140
  if (this.STATEMENT_PREFIX && !block.suppressPrefixSuffix) {
166
141
  line = this.injectId(this.STATEMENT_PREFIX, block) + line;
167
142
  }
@@ -172,10 +147,18 @@ class Generator {
172
147
  code.push(line);
173
148
  }
174
149
  }
175
- code = code.join('\n'); // Blank line between each section.
176
- code = this.finish(code);
150
+ // AnyDuringMigration because: Type 'string' is not assignable to type
151
+ // 'any[]'.
152
+ // Blank line between each section.
153
+ code = code.join('\n') as AnyDuringMigration;
154
+ // AnyDuringMigration because: Argument of type 'any[]' is not assignable
155
+ // to parameter of type 'string'. AnyDuringMigration because: Type 'string'
156
+ // is not assignable to type 'any[]'.
157
+ code = this.finish(code as AnyDuringMigration) as AnyDuringMigration;
177
158
  // Final scrubbing of whitespace.
178
- code = code.replace(/^\s+\n/, '');
159
+ // AnyDuringMigration because: Property 'replace' does not exist on type
160
+ // 'any[]'.
161
+ code = (code as AnyDuringMigration).replace(/^\s+\n/, '');
179
162
  code = code.replace(/\n\s+$/, '\n');
180
163
  code = code.replace(/[ \t]+\n/g, '\n');
181
164
  return code;
@@ -188,20 +171,20 @@ class Generator {
188
171
  /**
189
172
  * Prepend a common prefix onto each line of code.
190
173
  * Intended for indenting code or adding comment markers.
191
- * @param {string} text The lines of code.
192
- * @param {string} prefix The common prefix.
193
- * @return {string} The prefixed lines of code.
174
+ * @param text The lines of code.
175
+ * @param prefix The common prefix.
176
+ * @return The prefixed lines of code.
194
177
  */
195
- prefixLines(text, prefix) {
178
+ prefixLines(text: string, prefix: string): string {
196
179
  return prefix + text.replace(/(?!\n$)\n/g, '\n' + prefix);
197
180
  }
198
181
 
199
182
  /**
200
183
  * Recursively spider a tree of blocks, returning all their comments.
201
- * @param {!Block} block The block from which to start spidering.
202
- * @return {string} Concatenated list of comments.
184
+ * @param block The block from which to start spidering.
185
+ * @return Concatenated list of comments.
203
186
  */
204
- allNestedComments(block) {
187
+ allNestedComments(block: Block): string {
205
188
  const comments = [];
206
189
  const blocks = block.getDescendants(true);
207
190
  for (let i = 0; i < blocks.length; i++) {
@@ -220,14 +203,14 @@ class Generator {
220
203
  /**
221
204
  * Generate code for the specified block (and attached blocks).
222
205
  * The generator must be initialized before calling this function.
223
- * @param {?Block} block The block to generate code for.
224
- * @param {boolean=} opt_thisOnly True to generate code for only this
225
- * statement.
226
- * @return {string|!Array} For statement blocks, the generated code.
206
+ * @param block The block to generate code for.
207
+ * @param opt_thisOnly True to generate code for only this statement.
208
+ * @return For statement blocks, the generated code.
227
209
  * For value blocks, an array containing the generated code and an
228
- * operator order value. Returns '' if block is null.
210
+ * operator order value. Returns '' if block is null.
229
211
  */
230
- blockToCode(block, opt_thisOnly) {
212
+ blockToCode(block: Block|null, opt_thisOnly?: boolean): string
213
+ |AnyDuringMigration[] {
231
214
  if (this.isInitialized === false) {
232
215
  console.warn(
233
216
  'Generator init was not called before blockToCode was called.');
@@ -244,7 +227,7 @@ class Generator {
244
227
  return opt_thisOnly ? '' : this.blockToCode(block.getChildren(false)[0]);
245
228
  }
246
229
 
247
- const func = this[block.type];
230
+ const func = (this as AnyDuringMigration)[block.type];
248
231
  if (typeof func !== 'function') {
249
232
  throw Error(
250
233
  'Language "' + this.name_ + '" does not know how to generate ' +
@@ -279,14 +262,14 @@ class Generator {
279
262
 
280
263
  /**
281
264
  * Generate code representing the specified value input.
282
- * @param {!Block} block The block containing the input.
283
- * @param {string} name The name of the input.
284
- * @param {number} outerOrder The maximum binding strength (minimum order
285
- * value) of any operators adjacent to "block".
286
- * @return {string} Generated code or '' if no blocks are connected or the
287
- * specified input does not exist.
265
+ * @param block The block containing the input.
266
+ * @param name The name of the input.
267
+ * @param outerOrder The maximum binding strength (minimum order value) of any
268
+ * operators adjacent to "block".
269
+ * @return Generated code or '' if no blocks are connected or the specified
270
+ * input does not exist.
288
271
  */
289
- valueToCode(block, name, outerOrder) {
272
+ valueToCode(block: Block, name: string, outerOrder: number): string {
290
273
  if (isNaN(outerOrder)) {
291
274
  throw TypeError('Expecting valid order from block: ' + block.type);
292
275
  }
@@ -353,11 +336,11 @@ class Generator {
353
336
  * statement input. Indent the code.
354
337
  * This is mainly used in generators. When trying to generate code to evaluate
355
338
  * look at using workspaceToCode or blockToCode.
356
- * @param {!Block} block The block containing the input.
357
- * @param {string} name The name of the input.
358
- * @return {string} Generated code or '' if no blocks are connected.
339
+ * @param block The block containing the input.
340
+ * @param name The name of the input.
341
+ * @return Generated code or '' if no blocks are connected.
359
342
  */
360
- statementToCode(block, name) {
343
+ statementToCode(block: Block, name: string): string {
361
344
  const targetBlock = block.getInputTargetBlock(name);
362
345
  let code = this.blockToCode(targetBlock);
363
346
  // Value blocks must return code and order of operations info.
@@ -368,7 +351,7 @@ class Generator {
368
351
  (targetBlock && targetBlock.type));
369
352
  }
370
353
  if (code) {
371
- code = this.prefixLines(/** @type {string} */ (code), this.INDENT);
354
+ code = this.prefixLines((code), this.INDENT);
372
355
  }
373
356
  return code;
374
357
  }
@@ -378,11 +361,11 @@ class Generator {
378
361
  * Add statement suffix at the start of the loop block (right after the loop
379
362
  * statement executes), and a statement prefix to the end of the loop block
380
363
  * (right before the loop statement executes).
381
- * @param {string} branch Code for loop contents.
382
- * @param {!Block} block Enclosing block.
383
- * @return {string} Loop contents, with infinite loop trap added.
364
+ * @param branch Code for loop contents.
365
+ * @param block Enclosing block.
366
+ * @return Loop contents, with infinite loop trap added.
384
367
  */
385
- addLoopTrap(branch, block) {
368
+ addLoopTrap(branch: string, block: Block): string {
386
369
  if (this.INFINITE_LOOP_TRAP) {
387
370
  branch = this.prefixLines(
388
371
  this.injectId(this.INFINITE_LOOP_TRAP, block), this.INDENT) +
@@ -404,21 +387,21 @@ class Generator {
404
387
  /**
405
388
  * Inject a block ID into a message to replace '%1'.
406
389
  * Used for STATEMENT_PREFIX, STATEMENT_SUFFIX, and INFINITE_LOOP_TRAP.
407
- * @param {string} msg Code snippet with '%1'.
408
- * @param {!Block} block Block which has an ID.
409
- * @return {string} Code snippet with ID.
390
+ * @param msg Code snippet with '%1'.
391
+ * @param block Block which has an ID.
392
+ * @return Code snippet with ID.
410
393
  */
411
- injectId(msg, block) {
394
+ injectId(msg: string, block: Block): string {
412
395
  const id = block.id.replace(/\$/g, '$$$$'); // Issue 251.
413
396
  return msg.replace(/%1/g, '\'' + id + '\'');
414
397
  }
415
398
 
416
399
  /**
417
400
  * Add one or more words to the list of reserved words for this language.
418
- * @param {string} words Comma-separated list of words to add to the list.
401
+ * @param words Comma-separated list of words to add to the list.
419
402
  * No spaces. Duplicates are ok.
420
403
  */
421
- addReservedWords(words) {
404
+ addReservedWords(words: string) {
422
405
  this.RESERVED_WORDS_ += words + ',';
423
406
  }
424
407
 
@@ -436,18 +419,17 @@ class Generator {
436
419
  *
437
420
  * The code gets output when Generator.finish() is called.
438
421
  *
439
- * @param {string} desiredName The desired name of the function
440
- * (e.g. mathIsPrime).
441
- * @param {!Array<string>|string} code A list of statements or one multi-line
442
- * code string. Use ' ' for indents (they will be replaced).
443
- * @return {string} The actual name of the new function. This may differ
444
- * from desiredName if the former has already been taken by the user.
445
- * @protected
422
+ * @param desiredName The desired name of the function (e.g. mathIsPrime).
423
+ * @param code A list of statements or one multi-line code string. Use ' '
424
+ * for indents (they will be replaced).
425
+ * @return The actual name of the new function. This may differ from
426
+ * desiredName if the former has already been taken by the user.
446
427
  */
447
- provideFunction_(desiredName, code) {
428
+ protected provideFunction_(desiredName: string, code: string[]|string):
429
+ string {
448
430
  if (!this.definitions_[desiredName]) {
449
431
  const functionName =
450
- this.nameDB_.getDistinctName(desiredName, NameType.PROCEDURE);
432
+ this.nameDB_!.getDistinctName(desiredName, NameType.PROCEDURE);
451
433
  this.functionNames_[desiredName] = functionName;
452
434
  if (Array.isArray(code)) {
453
435
  code = code.join('\n');
@@ -473,9 +455,9 @@ class Generator {
473
455
  * Hook for code to run before code generation starts.
474
456
  * Subclasses may override this, e.g. to initialise the database of variable
475
457
  * names.
476
- * @param {!Workspace} _workspace Workspace to generate code from.
458
+ * @param _workspace Workspace to generate code from.
477
459
  */
478
- init(_workspace) {
460
+ init(_workspace: Workspace) {
479
461
  // Optionally override
480
462
  // Create a dictionary of definitions to be printed before the code.
481
463
  this.definitions_ = Object.create(null);
@@ -491,14 +473,13 @@ class Generator {
491
473
  * Subclasses may override this, e.g. to generate code for statements
492
474
  * following the block, or to handle comments for the specified block and any
493
475
  * connected value blocks.
494
- * @param {!Block} _block The current block.
495
- * @param {string} code The code created for this block.
496
- * @param {boolean=} _opt_thisOnly True to generate code for only this
497
- * statement.
498
- * @return {string} Code with comments and subsequent blocks added.
499
- * @protected
476
+ * @param _block The current block.
477
+ * @param code The code created for this block.
478
+ * @param _opt_thisOnly True to generate code for only this statement.
479
+ * @return Code with comments and subsequent blocks added.
500
480
  */
501
- scrub_(_block, code, _opt_thisOnly) {
481
+ protected scrub_(_block: Block, code: string, _opt_thisOnly?: boolean):
482
+ string {
502
483
  // Optionally override
503
484
  return code;
504
485
  }
@@ -507,10 +488,10 @@ class Generator {
507
488
  * Hook for code to run at end of code generation.
508
489
  * Subclasses may override this, e.g. to prepend the generated code with
509
490
  * import statements or variable definitions.
510
- * @param {string} code Generated code.
511
- * @return {string} Completed code.
491
+ * @param code Generated code.
492
+ * @return Completed code.
512
493
  */
513
- finish(code) {
494
+ finish(code: string): string {
514
495
  // Optionally override
515
496
  // Clean up temporary data.
516
497
  delete this.definitions_;
@@ -523,10 +504,10 @@ class Generator {
523
504
  * anything.
524
505
  * Subclasses may override this, e.g. if their language does not allow
525
506
  * naked values.
526
- * @param {string} line Line of generated code.
527
- * @return {string} Legal line of code.
507
+ * @param line Line of generated code.
508
+ * @return Legal line of code.
528
509
  */
529
- scrubNakedValue(line) {
510
+ scrubNakedValue(line: string): string {
530
511
  // Optionally override
531
512
  return line;
532
513
  }
@@ -536,29 +517,23 @@ Object.defineProperties(Generator.prototype, {
536
517
  /**
537
518
  * A database of variable names.
538
519
  * @name Blockly.Generator.prototype.variableDB_
539
- * @type {!Names|undefined}
540
- * @protected
541
520
  * @deprecated 'variableDB_' was renamed to 'nameDB_' (May 2021).
542
521
  * @suppress {checkTypes}
543
522
  */
544
- variableDB_: {
545
- /**
546
- * @this {Generator}
547
- * @return {!Names|undefined} Name database.
548
- */
549
- get: function() {
550
- deprecation.warn('variableDB_', 'May 2021', 'May 2026', 'nameDB_');
551
- return this.nameDB_;
552
- },
553
- /**
554
- * @this {Generator}
555
- * @param {!Names|undefined} nameDb New name database.
556
- */
557
- set: function(nameDb) {
558
- deprecation.warn('variableDB_', 'May 2021', 'May 2026', 'nameDB_');
523
+ // AnyDuringMigration because: Type 'Names | undefined' is not assignable to
524
+ // type 'PropertyDescriptor'.
525
+ variableDB_: ({
526
+ /** @return Name database. */
527
+ get(this: Generator): Names |
528
+ undefined {
529
+ deprecation.warn(
530
+ 'variableDB_', 'May 2021', 'September 2022', 'nameDB_');
531
+ return this.nameDB_;
532
+ },
533
+ /** @param nameDb New name database. */
534
+ set(this: Generator, nameDb: Names|undefined) {
535
+ deprecation.warn('variableDB_', 'May 2021', 'September2022', 'nameDB_');
559
536
  this.nameDB_ = nameDb;
560
537
  },
561
- },
538
+ }),
562
539
  });
563
-
564
- exports.Generator = Generator;