blockly 8.0.4-beta.0 → 8.0.5-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 (858) hide show
  1. package/blockly.min.js +2421 -2688
  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/msg/ab.js +421 -421
  609. package/msg/ace.js +421 -421
  610. package/msg/af.js +421 -421
  611. package/msg/am.js +421 -421
  612. package/msg/ar.js +421 -421
  613. package/msg/ast.js +421 -421
  614. package/msg/az.js +421 -421
  615. package/msg/ba.js +421 -421
  616. package/msg/bcc.js +421 -421
  617. package/msg/be-tarask.js +421 -421
  618. package/msg/be.js +421 -421
  619. package/msg/bg.js +421 -421
  620. package/msg/bn.js +421 -421
  621. package/msg/br.js +421 -421
  622. package/msg/bs.js +421 -421
  623. package/msg/ca.js +421 -421
  624. package/msg/cdo.js +421 -421
  625. package/msg/cs.js +421 -421
  626. package/msg/da.js +421 -421
  627. package/msg/de.js +421 -421
  628. package/msg/diq.js +421 -421
  629. package/msg/dty.js +421 -421
  630. package/msg/ee.js +421 -421
  631. package/msg/el.js +421 -421
  632. package/msg/en-gb.js +421 -421
  633. package/msg/en.js +421 -421
  634. package/msg/eo.js +421 -421
  635. package/msg/es.js +421 -421
  636. package/msg/et.js +421 -421
  637. package/msg/eu.js +421 -421
  638. package/msg/fa.js +421 -421
  639. package/msg/fi.js +421 -421
  640. package/msg/fo.js +421 -421
  641. package/msg/fr.js +421 -421
  642. package/msg/frr.js +421 -421
  643. package/msg/gl.js +421 -421
  644. package/msg/gn.js +421 -421
  645. package/msg/gor.js +421 -421
  646. package/msg/ha.js +421 -421
  647. package/msg/hak.js +421 -421
  648. package/msg/he.js +421 -421
  649. package/msg/hi.js +421 -421
  650. package/msg/hr.js +421 -421
  651. package/msg/hrx.js +421 -421
  652. package/msg/hu.js +421 -421
  653. package/msg/hy.js +421 -421
  654. package/msg/ia.js +421 -421
  655. package/msg/id.js +421 -421
  656. package/msg/ig.js +421 -421
  657. package/msg/inh.js +421 -421
  658. package/msg/is.js +421 -421
  659. package/msg/it.js +421 -421
  660. package/msg/ja.js +421 -421
  661. package/msg/ka.js +421 -421
  662. package/msg/kab.js +421 -421
  663. package/msg/kbd-cyrl.js +421 -421
  664. package/msg/km.js +421 -421
  665. package/msg/kn.js +421 -421
  666. package/msg/ko.js +421 -421
  667. package/msg/ksh.js +421 -421
  668. package/msg/ku-latn.js +421 -421
  669. package/msg/ky.js +421 -421
  670. package/msg/la.js +421 -421
  671. package/msg/lb.js +421 -421
  672. package/msg/lki.js +421 -421
  673. package/msg/lo.js +421 -421
  674. package/msg/lrc.js +421 -421
  675. package/msg/lt.js +421 -421
  676. package/msg/lv.js +421 -421
  677. package/msg/mg.js +421 -421
  678. package/msg/mk.js +421 -421
  679. package/msg/ml.js +421 -421
  680. package/msg/mnw.js +421 -421
  681. package/msg/ms.js +421 -421
  682. package/msg/my.js +421 -421
  683. package/msg/mzn.js +421 -421
  684. package/msg/nb.js +421 -421
  685. package/msg/ne.js +421 -421
  686. package/msg/nl.js +421 -421
  687. package/msg/oc.js +421 -421
  688. package/msg/olo.js +421 -421
  689. package/msg/pa.js +421 -421
  690. package/msg/pl.js +421 -421
  691. package/msg/pms.js +421 -421
  692. package/msg/ps.js +421 -421
  693. package/msg/pt-br.js +421 -421
  694. package/msg/pt.js +421 -421
  695. package/msg/ro.js +421 -421
  696. package/msg/ru.js +421 -421
  697. package/msg/sc.js +421 -421
  698. package/msg/sco.js +421 -421
  699. package/msg/sd.js +421 -421
  700. package/msg/shn.js +421 -421
  701. package/msg/si.js +421 -421
  702. package/msg/sk.js +421 -421
  703. package/msg/skr-arab.js +421 -421
  704. package/msg/sl.js +421 -421
  705. package/msg/smn.js +421 -421
  706. package/msg/sq.js +421 -421
  707. package/msg/sr-latn.js +421 -421
  708. package/msg/sr.js +421 -421
  709. package/msg/sv.js +421 -421
  710. package/msg/sw.js +421 -421
  711. package/msg/ta.js +421 -421
  712. package/msg/tcy.js +421 -421
  713. package/msg/te.js +421 -421
  714. package/msg/th.js +421 -421
  715. package/msg/ti.js +421 -421
  716. package/msg/tl.js +421 -421
  717. package/msg/tlh.js +421 -421
  718. package/msg/tr.js +421 -421
  719. package/msg/ug-arab.js +421 -421
  720. package/msg/uk.js +421 -421
  721. package/msg/ur.js +421 -421
  722. package/msg/uz.js +421 -421
  723. package/msg/vi.js +421 -421
  724. package/msg/xmf.js +421 -421
  725. package/msg/yo.js +421 -421
  726. package/msg/yue.js +421 -421
  727. package/msg/zgh.js +421 -421
  728. package/msg/zh-hans.js +421 -421
  729. package/msg/zh-hant.js +421 -421
  730. package/package.json +5 -5
  731. package/php.d.ts +0 -3
  732. package/php_compressed.js +322 -93
  733. package/php_compressed.js.map +1 -1
  734. package/python.d.ts +0 -3
  735. package/python_compressed.js +237 -90
  736. package/python_compressed.js.map +1 -1
  737. package/blockly.d.ts +0 -26127
  738. package/core/blockly_options.js +0 -28
  739. package/core/bubble_dragger.js +0 -298
  740. package/core/clipboard.js +0 -80
  741. package/core/component_manager.js +0 -263
  742. package/core/contextmenu_items.js +0 -651
  743. package/core/contextmenu_registry.js +0 -178
  744. package/core/delete_area.js +0 -87
  745. package/core/dialog.js +0 -107
  746. package/core/drag_target.js +0 -98
  747. package/core/events/events.js +0 -147
  748. package/core/events/events_abstract.js +0 -133
  749. package/core/events/events_block_base.js +0 -70
  750. package/core/events/events_block_drag.js +0 -89
  751. package/core/events/events_bubble_open.js +0 -90
  752. package/core/events/events_comment_base.js +0 -121
  753. package/core/events/events_marker_move.js +0 -110
  754. package/core/events/events_selected.js +0 -83
  755. package/core/events/events_toolbox_item_select.js +0 -84
  756. package/core/events/events_trashcan_open.js +0 -73
  757. package/core/events/events_var_base.js +0 -70
  758. package/core/events/events_viewport.js +0 -107
  759. package/core/events/workspace_events.js +0 -93
  760. package/core/field_angle.js +0 -591
  761. package/core/field_checkbox.js +0 -255
  762. package/core/field_colour.js +0 -717
  763. package/core/field_image.js +0 -304
  764. package/core/field_label.js +0 -149
  765. package/core/field_label_serializable.js +0 -80
  766. package/core/field_textinput.js +0 -619
  767. package/core/flyout_button.js +0 -356
  768. package/core/grid.js +0 -226
  769. package/core/icon.js +0 -225
  770. package/core/input.js +0 -335
  771. package/core/interfaces/i_ast_node_location_svg.js +0 -45
  772. package/core/interfaces/i_ast_node_location_with_block.js +0 -41
  773. package/core/interfaces/i_autohideable.js +0 -40
  774. package/core/interfaces/i_block_dragger.js +0 -66
  775. package/core/interfaces/i_bounded_element.js +0 -45
  776. package/core/interfaces/i_bubble.js +0 -95
  777. package/core/interfaces/i_collapsible_toolbox_item.js +0 -53
  778. package/core/interfaces/i_connection_checker.js +0 -104
  779. package/core/interfaces/i_contextmenu.js +0 -32
  780. package/core/interfaces/i_copyable.js +0 -49
  781. package/core/interfaces/i_delete_area.js +0 -50
  782. package/core/interfaces/i_drag_target.js +0 -88
  783. package/core/interfaces/i_flyout.js +0 -201
  784. package/core/interfaces/i_keyboard_accessible.js +0 -38
  785. package/core/interfaces/i_metrics_manager.js +0 -154
  786. package/core/interfaces/i_positionable.js +0 -51
  787. package/core/interfaces/i_selectable.js +0 -51
  788. package/core/interfaces/i_selectable_toolbox_item.js +0 -73
  789. package/core/interfaces/i_serializer.js +0 -77
  790. package/core/interfaces/i_styleable.js +0 -39
  791. package/core/interfaces/i_toolbox.js +0 -142
  792. package/core/interfaces/i_toolbox_item.js +0 -85
  793. package/core/marker_manager.js +0 -213
  794. package/core/menuitem.js +0 -292
  795. package/core/names.js +0 -293
  796. package/core/registry.js +0 -384
  797. package/core/renderers/common/block_rendering.js +0 -170
  798. package/core/renderers/common/constants.js +0 -1250
  799. package/core/renderers/common/i_path_object.js +0 -162
  800. package/core/renderers/common/marker_svg.js +0 -721
  801. package/core/renderers/common/path_object.js +0 -283
  802. package/core/renderers/common/renderer.js +0 -305
  803. package/core/renderers/geras/constants.js +0 -73
  804. package/core/renderers/geras/geras.js +0 -36
  805. package/core/renderers/geras/measurables/inline_input.js +0 -58
  806. package/core/renderers/geras/measurables/statement_input.js +0 -57
  807. package/core/renderers/geras/renderer.js +0 -149
  808. package/core/renderers/measurables/base.js +0 -64
  809. package/core/renderers/measurables/bottom_row.js +0 -138
  810. package/core/renderers/measurables/connection.js +0 -56
  811. package/core/renderers/measurables/external_value_input.js +0 -70
  812. package/core/renderers/measurables/field.js +0 -71
  813. package/core/renderers/measurables/in_row_spacer.js +0 -47
  814. package/core/renderers/measurables/input_connection.js +0 -75
  815. package/core/renderers/measurables/next_connection.js +0 -50
  816. package/core/renderers/measurables/output_connection.js +0 -61
  817. package/core/renderers/measurables/previous_connection.js +0 -50
  818. package/core/renderers/measurables/round_corner.js +0 -52
  819. package/core/renderers/measurables/row.js +0 -247
  820. package/core/renderers/measurables/spacer_row.js +0 -69
  821. package/core/renderers/measurables/square_corner.js +0 -50
  822. package/core/renderers/measurables/top_row.js +0 -143
  823. package/core/renderers/measurables/types.js +0 -353
  824. package/core/renderers/minimalist/drawer.js +0 -42
  825. package/core/renderers/minimalist/info.js +0 -54
  826. package/core/renderers/minimalist/minimalist.js +0 -26
  827. package/core/renderers/minimalist/renderer.js +0 -80
  828. package/core/renderers/thrasos/renderer.js +0 -53
  829. package/core/renderers/thrasos/thrasos.js +0 -22
  830. package/core/renderers/zelos/marker_svg.js +0 -179
  831. package/core/renderers/zelos/measurables/bottom_row.js +0 -66
  832. package/core/renderers/zelos/measurables/row_elements.js +0 -46
  833. package/core/renderers/zelos/path_object.js +0 -247
  834. package/core/renderers/zelos/renderer.js +0 -147
  835. package/core/renderers/zelos/zelos.js +0 -38
  836. package/core/serialization/exceptions.js +0 -144
  837. package/core/shortcut_registry.js +0 -366
  838. package/core/theme/themes.js +0 -23
  839. package/core/theme.js +0 -228
  840. package/core/theme_manager.js +0 -211
  841. package/core/toolbox/category.js +0 -751
  842. package/core/toolbox/collapsible_category.js +0 -311
  843. package/core/toolbox/separator.js +0 -133
  844. package/core/toolbox/toolbox_item.js +0 -173
  845. package/core/touch.js +0 -285
  846. package/core/utils/coordinate.js +0 -138
  847. package/core/utils/global.js +0 -41
  848. package/core/utils/keycodes.js +0 -172
  849. package/core/utils/metrics.js +0 -154
  850. package/core/utils/svg.js +0 -186
  851. package/core/utils/toolbox.js +0 -459
  852. package/core/utils/useragent.js +0 -197
  853. package/core/utils.js +0 -383
  854. package/core/variable_model.js +0 -96
  855. package/core/widgetdiv.js +0 -290
  856. package/core/workspace.js +0 -836
  857. package/core/workspace_comment.js +0 -400
  858. package/core/workspace_dragger.js +0 -115
@@ -8,31 +8,24 @@
8
8
  * @fileoverview The class representing an AST node.
9
9
  * Used to traverse the Blockly AST.
10
10
  */
11
- 'use strict';
12
11
 
13
12
  /**
14
13
  * The class representing an AST node.
15
14
  * Used to traverse the Blockly AST.
16
15
  * @class
17
16
  */
18
- goog.module('Blockly.ASTNode');
19
-
20
- /* eslint-disable-next-line no-unused-vars */
21
- const {Block} = goog.requireType('Blockly.Block');
22
- const {ConnectionType} = goog.require('Blockly.ConnectionType');
23
- /* eslint-disable-next-line no-unused-vars */
24
- const {Connection} = goog.requireType('Blockly.Connection');
25
- const {Coordinate} = goog.require('Blockly.utils.Coordinate');
26
- /* eslint-disable-next-line no-unused-vars */
27
- const {Field} = goog.requireType('Blockly.Field');
28
- /* eslint-disable-next-line no-unused-vars */
29
- const {IASTNodeLocationWithBlock} = goog.requireType('Blockly.IASTNodeLocationWithBlock');
30
- /* eslint-disable-next-line no-unused-vars */
31
- const {IASTNodeLocation} = goog.requireType('Blockly.IASTNodeLocation');
32
- /* eslint-disable-next-line no-unused-vars */
33
- const {Input} = goog.requireType('Blockly.Input');
34
- /* eslint-disable-next-line no-unused-vars */
35
- const {Workspace} = goog.requireType('Blockly.Workspace');
17
+ import * as goog from '../../closure/goog/goog.js';
18
+ goog.declareModuleId('Blockly.ASTNode');
19
+
20
+ import type {Block} from '../block.js';
21
+ import type {Connection} from '../connection.js';
22
+ import {ConnectionType} from '../connection_type.js';
23
+ import type {Field} from '../field.js';
24
+ import type {Input} from '../input.js';
25
+ import type {IASTNodeLocation} from '../interfaces/i_ast_node_location.js';
26
+ import type {IASTNodeLocationWithBlock} from '../interfaces/i_ast_node_location_with_block.js';
27
+ import {Coordinate} from '../utils/coordinate.js';
28
+ import type {Workspace} from '../workspace.js';
36
29
 
37
30
 
38
31
  /**
@@ -41,15 +34,34 @@ const {Workspace} = goog.requireType('Blockly.Workspace');
41
34
  * creating a node directly.
42
35
  * @alias Blockly.ASTNode
43
36
  */
44
- class ASTNode {
37
+ export class ASTNode {
38
+ /**
39
+ * True to navigate to all fields. False to only navigate to clickable fields.
40
+ */
41
+ static NAVIGATE_ALL_FIELDS = false;
42
+
43
+ /**
44
+ * The default y offset to use when moving the cursor from a stack to the
45
+ * workspace.
46
+ */
47
+ private static readonly DEFAULT_OFFSET_Y: number = -20;
48
+ private readonly type_: string;
49
+ private readonly isConnection_: boolean;
50
+ private readonly location_: IASTNodeLocation;
51
+
52
+ /** The coordinate on the workspace. */
53
+ // AnyDuringMigration because: Type 'null' is not assignable to type
54
+ // 'Coordinate'.
55
+ private wsCoordinate_: Coordinate = null as AnyDuringMigration;
56
+
45
57
  /**
46
- * @param {string} type The type of the location.
58
+ * @param type The type of the location.
47
59
  * Must be in ASTNode.types.
48
- * @param {!IASTNodeLocation} location The position in the AST.
49
- * @param {!ASTNode.Params=} opt_params Optional dictionary of options.
60
+ * @param location The position in the AST.
61
+ * @param opt_params Optional dictionary of options.
50
62
  * @alias Blockly.ASTNode
51
63
  */
52
- constructor(type, location, opt_params) {
64
+ constructor(type: string, location: IASTNodeLocation, opt_params?: Params) {
53
65
  if (!location) {
54
66
  throw Error('Cannot create a node without a location.');
55
67
  }
@@ -57,41 +69,23 @@ class ASTNode {
57
69
  /**
58
70
  * The type of the location.
59
71
  * One of ASTNode.types
60
- * @type {string}
61
- * @private
62
72
  */
63
73
  this.type_ = type;
64
74
 
65
- /**
66
- * Whether the location points to a connection.
67
- * @type {boolean}
68
- * @private
69
- */
75
+ /** Whether the location points to a connection. */
70
76
  this.isConnection_ = ASTNode.isConnectionType_(type);
71
77
 
72
- /**
73
- * The location of the AST node.
74
- * @type {!IASTNodeLocation}
75
- * @private
76
- */
78
+ /** The location of the AST node. */
77
79
  this.location_ = location;
78
80
 
79
- /**
80
- * The coordinate on the workspace.
81
- * @type {Coordinate}
82
- * @private
83
- */
84
- this.wsCoordinate_ = null;
85
-
86
81
  this.processParams_(opt_params || null);
87
82
  }
88
83
 
89
84
  /**
90
85
  * Parse the optional parameters.
91
- * @param {?ASTNode.Params} params The user specified parameters.
92
- * @private
86
+ * @param params The user specified parameters.
93
87
  */
94
- processParams_(params) {
88
+ private processParams_(params: Params|null) {
95
89
  if (!params) {
96
90
  return;
97
91
  }
@@ -104,37 +98,37 @@ class ASTNode {
104
98
  * Gets the value pointed to by this node.
105
99
  * It is the callers responsibility to check the node type to figure out what
106
100
  * type of object they get back from this.
107
- * @return {!IASTNodeLocation} The current field, connection, workspace, or
108
- * block the cursor is on.
101
+ * @return The current field, connection, workspace, or block the cursor is
102
+ * on.
109
103
  */
110
- getLocation() {
104
+ getLocation(): IASTNodeLocation {
111
105
  return this.location_;
112
106
  }
113
107
 
114
108
  /**
115
109
  * The type of the current location.
116
110
  * One of ASTNode.types
117
- * @return {string} The type of the location.
111
+ * @return The type of the location.
118
112
  */
119
- getType() {
113
+ getType(): string {
120
114
  return this.type_;
121
115
  }
122
116
 
123
117
  /**
124
118
  * The coordinate on the workspace.
125
- * @return {Coordinate} The workspace coordinate or null if the
126
- * location is not a workspace.
119
+ * @return The workspace coordinate or null if the location is not a
120
+ * workspace.
127
121
  */
128
- getWsCoordinate() {
122
+ getWsCoordinate(): Coordinate {
129
123
  return this.wsCoordinate_;
130
124
  }
131
125
 
132
126
  /**
133
127
  * Whether the node points to a connection.
134
- * @return {boolean} [description]
135
- * @package
128
+ * @return [description]
129
+ * @internal
136
130
  */
137
- isConnection() {
131
+ isConnection(): boolean {
138
132
  return this.isConnection_;
139
133
  }
140
134
 
@@ -142,18 +136,18 @@ class ASTNode {
142
136
  * Given an input find the next editable field or an input with a non null
143
137
  * connection in the same block. The current location must be an input
144
138
  * connection.
145
- * @return {ASTNode} The AST node holding the next field or connection
146
- * or null if there is no editable field or input connection after the
147
- * given input.
148
- * @private
139
+ * @return The AST node holding the next field or connection or null if there
140
+ * is no editable field or input connection after the given input.
149
141
  */
150
- findNextForInput_() {
151
- const location = /** @type {!Connection} */ (this.location_);
142
+ private findNextForInput_(): ASTNode|null {
143
+ const location = this.location_ as Connection;
152
144
  const parentInput = location.getParentInput();
153
- const block = parentInput.getSourceBlock();
154
- const curIdx = block.inputList.indexOf(parentInput);
155
- for (let i = curIdx + 1; i < block.inputList.length; i++) {
156
- const input = block.inputList[i];
145
+ const block = parentInput!.getSourceBlock();
146
+ // AnyDuringMigration because: Argument of type 'Input | null' is not
147
+ // assignable to parameter of type 'Input'.
148
+ const curIdx = block!.inputList.indexOf(parentInput as AnyDuringMigration);
149
+ for (let i = curIdx + 1; i < block!.inputList.length; i++) {
150
+ const input = block!.inputList[i];
157
151
  const fieldRow = input.fieldRow;
158
152
  for (let j = 0; j < fieldRow.length; j++) {
159
153
  const field = fieldRow[j];
@@ -171,16 +165,14 @@ class ASTNode {
171
165
  /**
172
166
  * Given a field find the next editable field or an input with a non null
173
167
  * connection in the same block. The current location must be a field.
174
- * @return {ASTNode} The AST node pointing to the next field or
175
- * connection or null if there is no editable field or input connection
176
- * after the given input.
177
- * @private
168
+ * @return The AST node pointing to the next field or connection or null if
169
+ * there is no editable field or input connection after the given input.
178
170
  */
179
- findNextForField_() {
180
- const location = /** @type {!Field} */ (this.location_);
171
+ private findNextForField_(): ASTNode|null {
172
+ const location = this.location_ as Field;
181
173
  const input = location.getParentInput();
182
174
  const block = location.getSourceBlock();
183
- const curIdx = block.inputList.indexOf(/** @type {!Input} */ (input));
175
+ const curIdx = block.inputList.indexOf((input));
184
176
  let fieldIdx = input.fieldRow.indexOf(location) + 1;
185
177
  for (let i = curIdx; i < block.inputList.length; i++) {
186
178
  const newInput = block.inputList[i];
@@ -203,17 +195,17 @@ class ASTNode {
203
195
  * Given an input find the previous editable field or an input with a non null
204
196
  * connection in the same block. The current location must be an input
205
197
  * connection.
206
- * @return {ASTNode} The AST node holding the previous field or
207
- * connection.
208
- * @private
198
+ * @return The AST node holding the previous field or connection.
209
199
  */
210
- findPrevForInput_() {
211
- const location = /** @type {!Connection} */ (this.location_);
200
+ private findPrevForInput_(): ASTNode|null {
201
+ const location = this.location_ as Connection;
212
202
  const parentInput = location.getParentInput();
213
- const block = parentInput.getSourceBlock();
214
- const curIdx = block.inputList.indexOf(parentInput);
203
+ const block = parentInput!.getSourceBlock();
204
+ // AnyDuringMigration because: Argument of type 'Input | null' is not
205
+ // assignable to parameter of type 'Input'.
206
+ const curIdx = block!.inputList.indexOf(parentInput as AnyDuringMigration);
215
207
  for (let i = curIdx; i >= 0; i--) {
216
- const input = block.inputList[i];
208
+ const input = block!.inputList[i];
217
209
  if (input.connection && input !== parentInput) {
218
210
  return ASTNode.createInputNode(input);
219
211
  }
@@ -231,15 +223,13 @@ class ASTNode {
231
223
  /**
232
224
  * Given a field find the previous editable field or an input with a non null
233
225
  * connection in the same block. The current location must be a field.
234
- * @return {ASTNode} The AST node holding the previous input or field.
235
- * @private
226
+ * @return The AST node holding the previous input or field.
236
227
  */
237
- findPrevForField_() {
238
- const location = /** @type {!Field} */ (this.location_);
228
+ private findPrevForField_(): ASTNode|null {
229
+ const location = this.location_ as Field;
239
230
  const parentInput = location.getParentInput();
240
231
  const block = location.getSourceBlock();
241
- const curIdx = block.inputList.indexOf(
242
- /** @type {!Input} */ (parentInput));
232
+ const curIdx = block.inputList.indexOf((parentInput));
243
233
  let fieldIdx = parentInput.fieldRow.indexOf(location) - 1;
244
234
  for (let i = curIdx; i >= 0; i--) {
245
235
  const input = block.inputList[i];
@@ -264,21 +254,24 @@ class ASTNode {
264
254
 
265
255
  /**
266
256
  * Navigate between stacks of blocks on the workspace.
267
- * @param {boolean} forward True to go forward. False to go backwards.
268
- * @return {ASTNode} The first block of the next stack or null if there
269
- * are no blocks on the workspace.
270
- * @private
257
+ * @param forward True to go forward. False to go backwards.
258
+ * @return The first block of the next stack or null if there are no blocks on
259
+ * the workspace.
271
260
  */
272
- navigateBetweenStacks_(forward) {
261
+ private navigateBetweenStacks_(forward: boolean): ASTNode|null {
273
262
  let curLocation = this.getLocation();
274
- if (curLocation.getSourceBlock) {
275
- curLocation = /** @type {!IASTNodeLocationWithBlock} */ (curLocation)
276
- .getSourceBlock();
263
+ // TODO(#6097): Use instanceof checks to exit early for values of
264
+ // curLocation that don't make sense.
265
+ if ((curLocation as IASTNodeLocationWithBlock).getSourceBlock) {
266
+ curLocation = (curLocation as IASTNodeLocationWithBlock).getSourceBlock();
277
267
  }
278
- if (!curLocation || !curLocation.workspace) {
268
+ // TODO(#6097): Use instanceof checks to exit early for values of
269
+ // curLocation that don't make sense.
270
+ const curLocationAsBlock = curLocation as Block;
271
+ if (!curLocationAsBlock || curLocationAsBlock.disposed) {
279
272
  return null;
280
273
  }
281
- const curRoot = curLocation.getRootBlock();
274
+ const curRoot = curLocationAsBlock.getRootBlock();
282
275
  const topBlocks = curRoot.workspace.getTopBlocks(true);
283
276
  for (let i = 0; i < topBlocks.length; i++) {
284
277
  const topBlock = topBlocks[i];
@@ -299,30 +292,26 @@ class ASTNode {
299
292
  * Finds the top most AST node for a given block.
300
293
  * This is either the previous connection, output connection or block
301
294
  * depending on what kind of connections the block has.
302
- * @param {!Block} block The block that we want to find the top
303
- * connection on.
304
- * @return {!ASTNode} The AST node containing the top connection.
305
- * @private
295
+ * @param block The block that we want to find the top connection on.
296
+ * @return The AST node containing the top connection.
306
297
  */
307
- findTopASTNodeForBlock_(block) {
298
+ private findTopASTNodeForBlock_(block: Block): ASTNode|null {
308
299
  const topConnection = getParentConnection(block);
309
300
  if (topConnection) {
310
- return /** @type {!ASTNode} */ (
311
- ASTNode.createConnectionNode(topConnection));
301
+ return ASTNode.createConnectionNode(topConnection);
312
302
  } else {
313
- return /** @type {!ASTNode} */ (ASTNode.createBlockNode(block));
303
+ return ASTNode.createBlockNode(block);
314
304
  }
315
305
  }
316
306
 
317
307
  /**
318
308
  * Get the AST node pointing to the input that the block is nested under or if
319
309
  * the block is not nested then get the stack AST node.
320
- * @param {Block} block The source block of the current location.
321
- * @return {ASTNode} The AST node pointing to the input connection or
322
- * the top block of the stack this block is in.
323
- * @private
310
+ * @param block The source block of the current location.
311
+ * @return The AST node pointing to the input connection or the top block of
312
+ * the stack this block is in.
324
313
  */
325
- getOutAstNodeForBlock_(block) {
314
+ private getOutAstNodeForBlock_(block: Block): ASTNode|null {
326
315
  if (!block) {
327
316
  return null;
328
317
  }
@@ -334,8 +323,11 @@ class ASTNode {
334
323
  // that input.
335
324
  if (topConnection && topConnection.targetConnection &&
336
325
  topConnection.targetConnection.getParentInput()) {
326
+ // AnyDuringMigration because: Argument of type 'Input | null' is not
327
+ // assignable to parameter of type 'Input'.
337
328
  return ASTNode.createInputNode(
338
- topConnection.targetConnection.getParentInput());
329
+ topConnection.targetConnection.getParentInput() as
330
+ AnyDuringMigration);
339
331
  } else {
340
332
  // Go to stack level if you are not underneath an input.
341
333
  return ASTNode.createStackNode(topBlock);
@@ -344,13 +336,12 @@ class ASTNode {
344
336
 
345
337
  /**
346
338
  * Find the first editable field or input with a connection on a given block.
347
- * @param {!Block} block The source block of the current location.
348
- * @return {ASTNode} An AST node pointing to the first field or input.
339
+ * @param block The source block of the current location.
340
+ * @return An AST node pointing to the first field or input.
349
341
  * Null if there are no editable fields or inputs with connections on the
350
342
  * block.
351
- * @private
352
343
  */
353
- findFirstFieldOrInput_(block) {
344
+ private findFirstFieldOrInput_(block: Block): ASTNode|null {
354
345
  const inputs = block.inputList;
355
346
  for (let i = 0; i < inputs.length; i++) {
356
347
  const input = inputs[i];
@@ -370,34 +361,33 @@ class ASTNode {
370
361
 
371
362
  /**
372
363
  * Finds the source block of the location of this node.
373
- * @return {Block} The source block of the location, or null if the node
374
- * is of type workspace.
364
+ * @return The source block of the location, or null if the node is of type
365
+ * workspace.
375
366
  */
376
- getSourceBlock() {
367
+ getSourceBlock(): Block|null {
377
368
  if (this.getType() === ASTNode.types.BLOCK) {
378
- return /** @type {Block} */ (this.getLocation());
369
+ return this.getLocation() as Block;
379
370
  } else if (this.getType() === ASTNode.types.STACK) {
380
- return /** @type {Block} */ (this.getLocation());
371
+ return this.getLocation() as Block;
381
372
  } else if (this.getType() === ASTNode.types.WORKSPACE) {
382
373
  return null;
383
374
  } else {
384
- return /** @type {IASTNodeLocationWithBlock} */ (this.getLocation())
385
- .getSourceBlock();
375
+ return (this.getLocation() as IASTNodeLocationWithBlock).getSourceBlock();
386
376
  }
387
377
  }
388
378
 
389
379
  /**
390
380
  * Find the element to the right of the current element in the AST.
391
- * @return {ASTNode} An AST node that wraps the next field, connection,
392
- * block, or workspace. Or null if there is no node to the right.
381
+ * @return An AST node that wraps the next field, connection, block, or
382
+ * workspace. Or null if there is no node to the right.
393
383
  */
394
- next() {
384
+ next(): ASTNode|null {
395
385
  switch (this.type_) {
396
386
  case ASTNode.types.STACK:
397
387
  return this.navigateBetweenStacks_(true);
398
388
 
399
389
  case ASTNode.types.OUTPUT: {
400
- const connection = /** @type {!Connection} */ (this.location_);
390
+ const connection = this.location_ as Connection;
401
391
  return ASTNode.createBlockNode(connection.getSourceBlock());
402
392
  }
403
393
  case ASTNode.types.FIELD:
@@ -407,18 +397,18 @@ class ASTNode {
407
397
  return this.findNextForInput_();
408
398
 
409
399
  case ASTNode.types.BLOCK: {
410
- const block = /** @type {!Block} */ (this.location_);
400
+ const block = this.location_ as Block;
411
401
  const nextConnection = block.nextConnection;
412
402
  return ASTNode.createConnectionNode(nextConnection);
413
403
  }
414
404
  case ASTNode.types.PREVIOUS: {
415
- const connection = /** @type {!Connection} */ (this.location_);
405
+ const connection = this.location_ as Connection;
416
406
  return ASTNode.createBlockNode(connection.getSourceBlock());
417
407
  }
418
408
  case ASTNode.types.NEXT: {
419
- const connection = /** @type {!Connection} */ (this.location_);
409
+ const connection = this.location_ as Connection;
420
410
  const targetConnection = connection.targetConnection;
421
- return ASTNode.createConnectionNode(targetConnection);
411
+ return ASTNode.createConnectionNode(targetConnection!);
422
412
  }
423
413
  }
424
414
 
@@ -428,13 +418,13 @@ class ASTNode {
428
418
  /**
429
419
  * Find the element one level below and all the way to the left of the current
430
420
  * location.
431
- * @return {ASTNode} An AST node that wraps the next field, connection,
432
- * workspace, or block. Or null if there is nothing below this node.
421
+ * @return An AST node that wraps the next field, connection, workspace, or
422
+ * block. Or null if there is nothing below this node.
433
423
  */
434
- in() {
424
+ in(): ASTNode|null {
435
425
  switch (this.type_) {
436
426
  case ASTNode.types.WORKSPACE: {
437
- const workspace = /** @type {!Workspace} */ (this.location_);
427
+ const workspace = this.location_ as Workspace;
438
428
  const topBlocks = workspace.getTopBlocks(true);
439
429
  if (topBlocks.length > 0) {
440
430
  return ASTNode.createStackNode(topBlocks[0]);
@@ -442,17 +432,17 @@ class ASTNode {
442
432
  break;
443
433
  }
444
434
  case ASTNode.types.STACK: {
445
- const block = /** @type {!Block} */ (this.location_);
435
+ const block = this.location_ as Block;
446
436
  return this.findTopASTNodeForBlock_(block);
447
437
  }
448
438
  case ASTNode.types.BLOCK: {
449
- const block = /** @type {!Block} */ (this.location_);
439
+ const block = this.location_ as Block;
450
440
  return this.findFirstFieldOrInput_(block);
451
441
  }
452
442
  case ASTNode.types.INPUT: {
453
- const connection = /** @type {!Connection} */ (this.location_);
443
+ const connection = this.location_ as Connection;
454
444
  const targetConnection = connection.targetConnection;
455
- return ASTNode.createConnectionNode(targetConnection);
445
+ return ASTNode.createConnectionNode(targetConnection!);
456
446
  }
457
447
  }
458
448
 
@@ -461,11 +451,11 @@ class ASTNode {
461
451
 
462
452
  /**
463
453
  * Find the element to the left of the current element in the AST.
464
- * @return {ASTNode} An AST node that wraps the previous field,
465
- * connection, workspace or block. Or null if no node exists to the left.
454
+ * @return An AST node that wraps the previous field, connection, workspace or
455
+ * block. Or null if no node exists to the left.
466
456
  * null.
467
457
  */
468
- prev() {
458
+ prev(): ASTNode|null {
469
459
  switch (this.type_) {
470
460
  case ASTNode.types.STACK:
471
461
  return this.navigateBetweenStacks_(false);
@@ -480,12 +470,12 @@ class ASTNode {
480
470
  return this.findPrevForInput_();
481
471
 
482
472
  case ASTNode.types.BLOCK: {
483
- const block = /** @type {!Block} */ (this.location_);
473
+ const block = this.location_ as Block;
484
474
  const topConnection = getParentConnection(block);
485
475
  return ASTNode.createConnectionNode(topConnection);
486
476
  }
487
477
  case ASTNode.types.PREVIOUS: {
488
- const connection = /** @type {!Connection} */ (this.location_);
478
+ const connection = this.location_ as Connection;
489
479
  const targetConnection = connection.targetConnection;
490
480
  if (targetConnection && !targetConnection.getParentInput()) {
491
481
  return ASTNode.createConnectionNode(targetConnection);
@@ -493,7 +483,7 @@ class ASTNode {
493
483
  break;
494
484
  }
495
485
  case ASTNode.types.NEXT: {
496
- const connection = /** @type {!Connection} */ (this.location_);
486
+ const connection = this.location_ as Connection;
497
487
  return ASTNode.createBlockNode(connection.getSourceBlock());
498
488
  }
499
489
  }
@@ -504,13 +494,13 @@ class ASTNode {
504
494
  /**
505
495
  * Find the next element that is one position above and all the way to the
506
496
  * left of the current location.
507
- * @return {ASTNode} An AST node that wraps the next field, connection,
508
- * workspace or block. Or null if we are at the workspace level.
497
+ * @return An AST node that wraps the next field, connection, workspace or
498
+ * block. Or null if we are at the workspace level.
509
499
  */
510
- out() {
500
+ out(): ASTNode|null {
511
501
  switch (this.type_) {
512
502
  case ASTNode.types.STACK: {
513
- const block = /** @type {!Block} */ (this.location_);
503
+ const block = this.location_ as Block;
514
504
  const blockPos = block.getRelativeToSurfaceXY();
515
505
  // TODO: Make sure this is in the bounds of the workspace.
516
506
  const wsCoordinate =
@@ -518,7 +508,7 @@ class ASTNode {
518
508
  return ASTNode.createWorkspaceNode(block.workspace, wsCoordinate);
519
509
  }
520
510
  case ASTNode.types.OUTPUT: {
521
- const connection = /** @type {!Connection} */ (this.location_);
511
+ const connection = this.location_ as Connection;
522
512
  const target = connection.targetConnection;
523
513
  if (target) {
524
514
  return ASTNode.createConnectionNode(target);
@@ -526,23 +516,23 @@ class ASTNode {
526
516
  return ASTNode.createStackNode(connection.getSourceBlock());
527
517
  }
528
518
  case ASTNode.types.FIELD: {
529
- const field = /** @type {!Field} */ (this.location_);
519
+ const field = this.location_ as Field;
530
520
  return ASTNode.createBlockNode(field.getSourceBlock());
531
521
  }
532
522
  case ASTNode.types.INPUT: {
533
- const connection = /** @type {!Connection} */ (this.location_);
523
+ const connection = this.location_ as Connection;
534
524
  return ASTNode.createBlockNode(connection.getSourceBlock());
535
525
  }
536
526
  case ASTNode.types.BLOCK: {
537
- const block = /** @type {!Block} */ (this.location_);
527
+ const block = this.location_ as Block;
538
528
  return this.getOutAstNodeForBlock_(block);
539
529
  }
540
530
  case ASTNode.types.PREVIOUS: {
541
- const connection = /** @type {!Connection} */ (this.location_);
531
+ const connection = this.location_ as Connection;
542
532
  return this.getOutAstNodeForBlock_(connection.getSourceBlock());
543
533
  }
544
534
  case ASTNode.types.NEXT: {
545
- const connection = /** @type {!Connection} */ (this.location_);
535
+ const connection = this.location_ as Connection;
546
536
  return this.getOutAstNodeForBlock_(connection.getSourceBlock());
547
537
  }
548
538
  }
@@ -552,11 +542,10 @@ class ASTNode {
552
542
 
553
543
  /**
554
544
  * Whether an AST node of the given type points to a connection.
555
- * @param {string} type The type to check. One of ASTNode.types.
556
- * @return {boolean} True if a node of the given type points to a connection.
557
- * @private
545
+ * @param type The type to check. One of ASTNode.types.
546
+ * @return True if a node of the given type points to a connection.
558
547
  */
559
- static isConnectionType_(type) {
548
+ private static isConnectionType_(type: string): boolean {
560
549
  switch (type) {
561
550
  case ASTNode.types.PREVIOUS:
562
551
  case ASTNode.types.NEXT:
@@ -569,10 +558,10 @@ class ASTNode {
569
558
 
570
559
  /**
571
560
  * Create an AST node pointing to a field.
572
- * @param {Field} field The location of the AST node.
573
- * @return {ASTNode} An AST node pointing to a field.
561
+ * @param field The location of the AST node.
562
+ * @return An AST node pointing to a field.
574
563
  */
575
- static createFieldNode(field) {
564
+ static createFieldNode(field: Field): ASTNode|null {
576
565
  if (!field) {
577
566
  return null;
578
567
  }
@@ -583,20 +572,25 @@ class ASTNode {
583
572
  * Creates an AST node pointing to a connection. If the connection has a
584
573
  * parent input then create an AST node of type input that will hold the
585
574
  * connection.
586
- * @param {Connection} connection This is the connection the node will
587
- * point to.
588
- * @return {ASTNode} An AST node pointing to a connection.
575
+ * @param connection This is the connection the node will point to.
576
+ * @return An AST node pointing to a connection.
589
577
  */
590
- static createConnectionNode(connection) {
578
+ static createConnectionNode(connection: Connection): ASTNode|null {
591
579
  if (!connection) {
592
580
  return null;
593
581
  }
594
582
  const type = connection.type;
595
583
  if (type === ConnectionType.INPUT_VALUE) {
596
- return ASTNode.createInputNode(connection.getParentInput());
584
+ // AnyDuringMigration because: Argument of type 'Input | null' is not
585
+ // assignable to parameter of type 'Input'.
586
+ return ASTNode.createInputNode(
587
+ connection.getParentInput() as AnyDuringMigration);
597
588
  } else if (
598
589
  type === ConnectionType.NEXT_STATEMENT && connection.getParentInput()) {
599
- return ASTNode.createInputNode(connection.getParentInput());
590
+ // AnyDuringMigration because: Argument of type 'Input | null' is not
591
+ // assignable to parameter of type 'Input'.
592
+ return ASTNode.createInputNode(
593
+ connection.getParentInput() as AnyDuringMigration);
600
594
  } else if (type === ConnectionType.NEXT_STATEMENT) {
601
595
  return new ASTNode(ASTNode.types.NEXT, connection);
602
596
  } else if (type === ConnectionType.OUTPUT_VALUE) {
@@ -610,10 +604,10 @@ class ASTNode {
610
604
  /**
611
605
  * Creates an AST node pointing to an input. Stores the input connection as
612
606
  * the location.
613
- * @param {Input} input The input used to create an AST node.
614
- * @return {ASTNode} An AST node pointing to a input.
607
+ * @param input The input used to create an AST node.
608
+ * @return An AST node pointing to a input.
615
609
  */
616
- static createInputNode(input) {
610
+ static createInputNode(input: Input): ASTNode|null {
617
611
  if (!input || !input.connection) {
618
612
  return null;
619
613
  }
@@ -622,10 +616,10 @@ class ASTNode {
622
616
 
623
617
  /**
624
618
  * Creates an AST node pointing to a block.
625
- * @param {Block} block The block used to create an AST node.
626
- * @return {ASTNode} An AST node pointing to a block.
619
+ * @param block The block used to create an AST node.
620
+ * @return An AST node pointing to a block.
627
621
  */
628
- static createBlockNode(block) {
622
+ static createBlockNode(block: Block): ASTNode|null {
629
623
  if (!block) {
630
624
  return null;
631
625
  }
@@ -636,12 +630,12 @@ class ASTNode {
636
630
  * Create an AST node of type stack. A stack, represented by its top block, is
637
631
  * the set of all blocks connected to a top block, including the top
638
632
  * block.
639
- * @param {Block} topBlock A top block has no parent and can be found
640
- * in the list returned by workspace.getTopBlocks().
641
- * @return {ASTNode} An AST node of type stack that points to the top
642
- * block on the stack.
633
+ * @param topBlock A top block has no parent and can be found in the list
634
+ * returned by workspace.getTopBlocks().
635
+ * @return An AST node of type stack that points to the top block on the
636
+ * stack.
643
637
  */
644
- static createStackNode(topBlock) {
638
+ static createStackNode(topBlock: Block): ASTNode|null {
645
639
  if (!topBlock) {
646
640
  return null;
647
641
  }
@@ -650,28 +644,27 @@ class ASTNode {
650
644
 
651
645
  /**
652
646
  * Creates an AST node pointing to a workspace.
653
- * @param {!Workspace} workspace The workspace that we are on.
654
- * @param {Coordinate} wsCoordinate The position on the workspace
655
- * for this node.
656
- * @return {ASTNode} An AST node pointing to a workspace and a position
657
- * on the workspace.
647
+ * @param workspace The workspace that we are on.
648
+ * @param wsCoordinate The position on the workspace for this node.
649
+ * @return An AST node pointing to a workspace and a position on the
650
+ * workspace.
658
651
  */
659
- static createWorkspaceNode(workspace, wsCoordinate) {
652
+ static createWorkspaceNode(
653
+ workspace: Workspace|null, wsCoordinate: Coordinate|null): ASTNode|null {
660
654
  if (!wsCoordinate || !workspace) {
661
655
  return null;
662
656
  }
663
- const params = {wsCoordinate: wsCoordinate};
657
+ const params = {wsCoordinate};
664
658
  return new ASTNode(ASTNode.types.WORKSPACE, workspace, params);
665
659
  }
666
660
 
667
661
  /**
668
662
  * Creates an AST node for the top position on a block.
669
663
  * This is either an output connection, previous connection, or block.
670
- * @param {!Block} block The block to find the top most AST node on.
671
- * @return {ASTNode} The AST node holding the top most position on the
672
- * block.
664
+ * @param block The block to find the top most AST node on.
665
+ * @return The AST node holding the top most position on the block.
673
666
  */
674
- static createTopNode(block) {
667
+ static createTopNode(block: Block): ASTNode|null {
675
668
  let astNode;
676
669
  const topConnection = getParentConnection(block);
677
670
  if (topConnection) {
@@ -683,59 +676,42 @@ class ASTNode {
683
676
  }
684
677
  }
685
678
 
686
- /**
687
- * @typedef {{
688
- * wsCoordinate: Coordinate
689
- * }}
690
- */
691
- ASTNode.Params;
679
+ export namespace ASTNode {
680
+ export interface Params {
681
+ wsCoordinate: Coordinate;
682
+ }
692
683
 
693
- /**
694
- * Object holding different types for an AST node.
695
- * @enum {string}
696
- */
697
- ASTNode.types = {
698
- FIELD: 'field',
699
- BLOCK: 'block',
700
- INPUT: 'input',
701
- OUTPUT: 'output',
702
- NEXT: 'next',
703
- PREVIOUS: 'previous',
704
- STACK: 'stack',
705
- WORKSPACE: 'workspace',
706
- };
684
+ export enum types {
685
+ FIELD = 'field',
686
+ BLOCK = 'block',
687
+ INPUT = 'input',
688
+ OUTPUT = 'output',
689
+ NEXT = 'next',
690
+ PREVIOUS = 'previous',
691
+ STACK = 'stack',
692
+ WORKSPACE = 'workspace',
693
+ }
694
+ }
707
695
 
708
- /**
709
- * True to navigate to all fields. False to only navigate to clickable fields.
710
- * @type {boolean}
711
- */
712
- ASTNode.NAVIGATE_ALL_FIELDS = false;
696
+ export type Params = ASTNode.Params;
697
+ // No need to export ASTNode.types from the module at this time because (1) it
698
+ // wasn't automatically converted by the automatic migration script, (2) the
699
+ // name doesn't follow the styleguide.
713
700
 
714
- /**
715
- * The default y offset to use when moving the cursor from a stack to the
716
- * workspace.
717
- * @type {number}
718
- * @private
719
- */
720
- ASTNode.DEFAULT_OFFSET_Y = -20;
721
701
 
722
702
  /**
723
703
  * Gets the parent connection on a block.
724
704
  * This is either an output connection, previous connection or undefined.
725
705
  * If both connections exist return the one that is actually connected
726
706
  * to another block.
727
- * @param {!Block} block The block to find the parent connection on.
728
- * @return {Connection} The connection connecting to the parent of the
729
- * block.
730
- * @private
707
+ * @param block The block to find the parent connection on.
708
+ * @return The connection connecting to the parent of the block.
731
709
  */
732
- const getParentConnection = function(block) {
710
+ function getParentConnection(block: Block): Connection {
733
711
  let topConnection = block.outputConnection;
734
712
  if (!topConnection ||
735
- (block.previousConnection && block.previousConnection.isConnected())) {
713
+ block.previousConnection && block.previousConnection.isConnected()) {
736
714
  topConnection = block.previousConnection;
737
715
  }
738
716
  return topConnection;
739
- };
740
-
741
- exports.ASTNode = ASTNode;
717
+ }