blockly 8.0.4 → 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 +420 -420
  609. package/msg/ace.js +420 -420
  610. package/msg/af.js +420 -420
  611. package/msg/am.js +420 -420
  612. package/msg/ar.js +420 -420
  613. package/msg/ast.js +420 -420
  614. package/msg/az.js +420 -420
  615. package/msg/ba.js +420 -420
  616. package/msg/bcc.js +420 -420
  617. package/msg/be-tarask.js +420 -420
  618. package/msg/be.js +420 -420
  619. package/msg/bg.js +420 -420
  620. package/msg/bn.js +420 -420
  621. package/msg/br.js +420 -420
  622. package/msg/bs.js +420 -420
  623. package/msg/ca.js +420 -420
  624. package/msg/cdo.js +420 -420
  625. package/msg/cs.js +420 -420
  626. package/msg/da.js +420 -420
  627. package/msg/de.js +420 -420
  628. package/msg/diq.js +420 -420
  629. package/msg/dty.js +420 -420
  630. package/msg/ee.js +420 -420
  631. package/msg/el.js +420 -420
  632. package/msg/en-gb.js +420 -420
  633. package/msg/en.js +420 -420
  634. package/msg/eo.js +420 -420
  635. package/msg/es.js +420 -420
  636. package/msg/et.js +420 -420
  637. package/msg/eu.js +420 -420
  638. package/msg/fa.js +420 -420
  639. package/msg/fi.js +420 -420
  640. package/msg/fo.js +420 -420
  641. package/msg/fr.js +420 -420
  642. package/msg/frr.js +420 -420
  643. package/msg/gl.js +420 -420
  644. package/msg/gn.js +420 -420
  645. package/msg/gor.js +420 -420
  646. package/msg/ha.js +420 -420
  647. package/msg/hak.js +420 -420
  648. package/msg/he.js +420 -420
  649. package/msg/hi.js +420 -420
  650. package/msg/hr.js +420 -420
  651. package/msg/hrx.js +420 -420
  652. package/msg/hu.js +420 -420
  653. package/msg/hy.js +420 -420
  654. package/msg/ia.js +420 -420
  655. package/msg/id.js +420 -420
  656. package/msg/ig.js +420 -420
  657. package/msg/inh.js +420 -420
  658. package/msg/is.js +420 -420
  659. package/msg/it.js +420 -420
  660. package/msg/ja.js +420 -420
  661. package/msg/ka.js +420 -420
  662. package/msg/kab.js +420 -420
  663. package/msg/kbd-cyrl.js +420 -420
  664. package/msg/km.js +420 -420
  665. package/msg/kn.js +420 -420
  666. package/msg/ko.js +420 -420
  667. package/msg/ksh.js +420 -420
  668. package/msg/ku-latn.js +420 -420
  669. package/msg/ky.js +420 -420
  670. package/msg/la.js +420 -420
  671. package/msg/lb.js +420 -420
  672. package/msg/lki.js +420 -420
  673. package/msg/lo.js +420 -420
  674. package/msg/lrc.js +420 -420
  675. package/msg/lt.js +420 -420
  676. package/msg/lv.js +420 -420
  677. package/msg/mg.js +420 -420
  678. package/msg/mk.js +420 -420
  679. package/msg/ml.js +420 -420
  680. package/msg/mnw.js +420 -420
  681. package/msg/ms.js +420 -420
  682. package/msg/my.js +420 -420
  683. package/msg/mzn.js +420 -420
  684. package/msg/nb.js +420 -420
  685. package/msg/ne.js +420 -420
  686. package/msg/nl.js +420 -420
  687. package/msg/oc.js +420 -420
  688. package/msg/olo.js +420 -420
  689. package/msg/pa.js +420 -420
  690. package/msg/pl.js +420 -420
  691. package/msg/pms.js +420 -420
  692. package/msg/ps.js +420 -420
  693. package/msg/pt-br.js +420 -420
  694. package/msg/pt.js +420 -420
  695. package/msg/ro.js +420 -420
  696. package/msg/ru.js +420 -420
  697. package/msg/sc.js +420 -420
  698. package/msg/sco.js +420 -420
  699. package/msg/sd.js +420 -420
  700. package/msg/shn.js +420 -420
  701. package/msg/si.js +420 -420
  702. package/msg/sk.js +420 -420
  703. package/msg/skr-arab.js +420 -420
  704. package/msg/sl.js +420 -420
  705. package/msg/smn.js +420 -420
  706. package/msg/sq.js +420 -420
  707. package/msg/sr-latn.js +420 -420
  708. package/msg/sr.js +420 -420
  709. package/msg/sv.js +420 -420
  710. package/msg/sw.js +420 -420
  711. package/msg/ta.js +420 -420
  712. package/msg/tcy.js +420 -420
  713. package/msg/te.js +420 -420
  714. package/msg/th.js +420 -420
  715. package/msg/ti.js +420 -420
  716. package/msg/tl.js +420 -420
  717. package/msg/tlh.js +420 -420
  718. package/msg/tr.js +420 -420
  719. package/msg/ug-arab.js +420 -420
  720. package/msg/uk.js +420 -420
  721. package/msg/ur.js +420 -420
  722. package/msg/uz.js +420 -420
  723. package/msg/vi.js +420 -420
  724. package/msg/xmf.js +420 -420
  725. package/msg/yo.js +420 -420
  726. package/msg/yue.js +420 -420
  727. package/msg/zgh.js +420 -420
  728. package/msg/zh-hans.js +420 -420
  729. package/msg/zh-hant.js +420 -420
  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
@@ -7,210 +7,144 @@
7
7
  /**
8
8
  * @fileoverview Toolbox from whence to create blocks.
9
9
  */
10
- 'use strict';
11
10
 
12
11
  /**
13
12
  * Toolbox from whence to create blocks.
14
13
  * @class
15
14
  */
16
- goog.module('Blockly.Toolbox');
17
-
18
- const Css = goog.require('Blockly.Css');
19
- const Touch = goog.require('Blockly.Touch');
20
- const aria = goog.require('Blockly.utils.aria');
21
- const browserEvents = goog.require('Blockly.browserEvents');
22
- const common = goog.require('Blockly.common');
23
- const dom = goog.require('Blockly.utils.dom');
24
- const eventUtils = goog.require('Blockly.Events.utils');
25
- const registry = goog.require('Blockly.registry');
26
- const toolbox = goog.require('Blockly.utils.toolbox');
27
- const {BlockSvg} = goog.require('Blockly.BlockSvg');
28
- /* eslint-disable-next-line no-unused-vars */
29
- const {BlocklyOptions} = goog.requireType('Blockly.BlocklyOptions');
30
- const {CollapsibleToolboxCategory} = goog.require('Blockly.CollapsibleToolboxCategory');
31
- const {ComponentManager} = goog.require('Blockly.ComponentManager');
32
- const {DeleteArea} = goog.require('Blockly.DeleteArea');
33
- /* eslint-disable-next-line no-unused-vars */
34
- const {IAutoHideable} = goog.require('Blockly.IAutoHideable');
35
- /* eslint-disable-next-line no-unused-vars */
36
- const {ICollapsibleToolboxItem} = goog.requireType('Blockly.ICollapsibleToolboxItem');
37
- /* eslint-disable-next-line no-unused-vars */
38
- const {IDraggable} = goog.requireType('Blockly.IDraggable');
39
- /* eslint-disable-next-line no-unused-vars */
40
- const {IFlyout} = goog.requireType('Blockly.IFlyout');
41
- /* eslint-disable-next-line no-unused-vars */
42
- const {IKeyboardAccessible} = goog.require('Blockly.IKeyboardAccessible');
43
- /* eslint-disable-next-line no-unused-vars */
44
- const {ISelectableToolboxItem} = goog.requireType('Blockly.ISelectableToolboxItem');
45
- /* eslint-disable-next-line no-unused-vars */
46
- const {IStyleable} = goog.require('Blockly.IStyleable');
47
- /* eslint-disable-next-line no-unused-vars */
48
- const {IToolboxItem} = goog.requireType('Blockly.IToolboxItem');
49
- /* eslint-disable-next-line no-unused-vars */
50
- const {IToolbox} = goog.require('Blockly.IToolbox');
51
- const {KeyCodes} = goog.require('Blockly.utils.KeyCodes');
52
- const {Options} = goog.require('Blockly.Options');
53
- const {Rect} = goog.require('Blockly.utils.Rect');
54
- /* eslint-disable-next-line no-unused-vars */
55
- const {ShortcutRegistry} = goog.requireType('Blockly.ShortcutRegistry');
15
+ import * as goog from '../../closure/goog/goog.js';
16
+ goog.declareModuleId('Blockly.Toolbox');
17
+
56
18
  /* eslint-disable-next-line no-unused-vars */
57
- const {WorkspaceSvg} = goog.requireType('Blockly.WorkspaceSvg');
58
- /** @suppress {extraRequire} */
59
- goog.require('Blockly.Events.ToolboxItemSelect');
19
+ // Unused import preserved for side-effects. Remove if unneeded.
20
+ // import '../shortcut_registry.js';
21
+ // Unused import preserved for side-effects. Remove if unneeded.
22
+ import '../events/events_toolbox_item_select.js';
23
+
24
+ import {BlockSvg} from '../block_svg.js';
25
+ import type {BlocklyOptions} from '../blockly_options.js';
26
+ import * as browserEvents from '../browser_events.js';
27
+ import * as common from '../common.js';
28
+ import {ComponentManager} from '../component_manager.js';
29
+ import * as Css from '../css.js';
30
+ import {DeleteArea} from '../delete_area.js';
31
+ import * as eventUtils from '../events/utils.js';
32
+ import type {IAutoHideable} from '../interfaces/i_autohideable.js';
33
+ import type {ICollapsibleToolboxItem} from '../interfaces/i_collapsible_toolbox_item.js';
34
+ import type {IDraggable} from '../interfaces/i_draggable.js';
35
+ import type {IFlyout} from '../interfaces/i_flyout.js';
36
+ import type {IKeyboardAccessible} from '../interfaces/i_keyboard_accessible.js';
37
+ import type {ISelectableToolboxItem} from '../interfaces/i_selectable_toolbox_item.js';
38
+ import type {IStyleable} from '../interfaces/i_styleable.js';
39
+ import type {IToolbox} from '../interfaces/i_toolbox.js';
40
+ import type {IToolboxItem} from '../interfaces/i_toolbox_item.js';
41
+ import {Options} from '../options.js';
42
+ import * as registry from '../registry.js';
43
+ import type {KeyboardShortcut} from '../shortcut_registry.js';
44
+ import * as Touch from '../touch.js';
45
+ import * as aria from '../utils/aria.js';
46
+ import * as dom from '../utils/dom.js';
47
+ import {KeyCodes} from '../utils/keycodes.js';
48
+ import {Rect} from '../utils/rect.js';
49
+ import * as toolbox from '../utils/toolbox.js';
50
+ import type {WorkspaceSvg} from '../workspace_svg.js';
51
+
52
+ import type {ToolboxCategory} from './category.js';
53
+ import {CollapsibleToolboxCategory} from './collapsible_category.js';
60
54
 
61
55
 
62
56
  /**
63
57
  * Class for a Toolbox.
64
58
  * Creates the toolbox's DOM.
65
- * @implements {IAutoHideable}
66
- * @implements {IKeyboardAccessible}
67
- * @implements {IStyleable}
68
- * @implements {IToolbox}
69
- * @extends {DeleteArea}
70
59
  * @alias Blockly.Toolbox
71
60
  */
72
- class Toolbox extends DeleteArea {
61
+ export class Toolbox extends DeleteArea implements IAutoHideable,
62
+ IKeyboardAccessible,
63
+ IStyleable, IToolbox {
64
+ /**
65
+ * The unique id for this component that is used to register with the
66
+ * ComponentManager.
67
+ */
68
+ override id = 'toolbox';
69
+ protected toolboxDef_: toolbox.ToolboxInfo;
70
+ private readonly horizontalLayout_: boolean;
71
+
72
+ /** The html container for the toolbox. */
73
+ HtmlDiv: HTMLDivElement|null = null;
74
+
75
+ /** The html container for the contents of a toolbox. */
76
+ protected contentsDiv_: HTMLDivElement|null = null;
77
+
78
+ /** Whether the Toolbox is visible. */
79
+ protected isVisible_ = false;
80
+
81
+ /** The list of items in the toolbox. */
82
+ protected contents_: IToolboxItem[] = [];
83
+
84
+ /** The width of the toolbox. */
85
+ protected width_ = 0;
86
+
87
+ /** The height of the toolbox. */
88
+ protected height_ = 0;
89
+ RTL: boolean;
90
+
91
+ /** The flyout for the toolbox. */
92
+ private flyout_: IFlyout|null = null;
93
+ protected contentMap_: {[key: string]: IToolboxItem};
94
+ toolboxPosition: toolbox.Position;
95
+
96
+ /** The currently selected item. */
97
+ protected selectedItem_: ISelectableToolboxItem|null = null;
98
+
99
+ /** The previously selected item. */
100
+ protected previouslySelectedItem_: ISelectableToolboxItem|null = null;
101
+
73
102
  /**
74
- * @param {!WorkspaceSvg} workspace The workspace in which to create new
75
- * blocks.
103
+ * Array holding info needed to unbind event handlers.
104
+ * Used for disposing.
105
+ * Ex: [[node, name, func], [node, name, func]].
76
106
  */
77
- constructor(workspace) {
107
+ protected boundEvents_: browserEvents.Data[] = [];
108
+ override wouldDelete_: AnyDuringMigration;
109
+
110
+ /** The workspace this toolbox is on. */
111
+ protected readonly workspace_: WorkspaceSvg;
112
+
113
+ /** @param workspace The workspace in which to create new blocks. */
114
+ constructor(workspace: WorkspaceSvg) {
78
115
  super();
79
116
 
80
- /**
81
- * The workspace this toolbox is on.
82
- * @type {!WorkspaceSvg}
83
- * @protected
84
- */
85
117
  this.workspace_ = workspace;
86
118
 
87
- /**
88
- * The unique id for this component that is used to register with the
89
- * ComponentManager.
90
- * @type {string}
91
- */
92
- this.id = 'toolbox';
93
-
94
- /**
95
- * The JSON describing the contents of this toolbox.
96
- * @type {!toolbox.ToolboxInfo}
97
- * @protected
98
- */
99
- this.toolboxDef_ = workspace.options.languageTree || {'contents': []};
100
-
101
- /**
102
- * Whether the toolbox should be laid out horizontally.
103
- * @type {boolean}
104
- * @private
105
- */
106
- this.horizontalLayout_ = workspace.options.horizontalLayout;
119
+ /** The JSON describing the contents of this toolbox. */
120
+ // AnyDuringMigration because: Type 'ToolboxInfo | { contents: never[]; }'
121
+ // is not assignable to type 'ToolboxInfo'.
122
+ this.toolboxDef_ = (workspace.options.languageTree || {'contents': []}) as
123
+ AnyDuringMigration;
107
124
 
108
- /**
109
- * The html container for the toolbox.
110
- * @type {?HTMLDivElement}
111
- */
112
- this.HtmlDiv = null;
113
-
114
- /**
115
- * The html container for the contents of a toolbox.
116
- * @type {?HTMLDivElement}
117
- * @protected
118
- */
119
- this.contentsDiv_ = null;
120
-
121
- /**
122
- * Whether the Toolbox is visible.
123
- * @type {boolean}
124
- * @protected
125
- */
126
- this.isVisible_ = false;
127
-
128
- /**
129
- * The list of items in the toolbox.
130
- * @type {!Array<!IToolboxItem>}
131
- * @protected
132
- */
133
- this.contents_ = [];
125
+ /** Whether the toolbox should be laid out horizontally. */
126
+ this.horizontalLayout_ = workspace.options.horizontalLayout;
134
127
 
135
- /**
136
- * The width of the toolbox.
137
- * @type {number}
138
- * @protected
139
- */
140
- this.width_ = 0;
141
-
142
- /**
143
- * The height of the toolbox.
144
- * @type {number}
145
- * @protected
146
- */
147
- this.height_ = 0;
148
-
149
- /**
150
- * Is RTL vs LTR.
151
- * @type {boolean}
152
- */
128
+ /** Is RTL vs LTR. */
153
129
  this.RTL = workspace.options.RTL;
154
130
 
155
- /**
156
- * The flyout for the toolbox.
157
- * @type {?IFlyout}
158
- * @private
159
- */
160
- this.flyout_ = null;
161
-
162
- /**
163
- * A map from toolbox item IDs to toolbox items.
164
- * @type {!Object<string, !IToolboxItem>}
165
- * @protected
166
- */
131
+ /** A map from toolbox item IDs to toolbox items. */
167
132
  this.contentMap_ = Object.create(null);
168
133
 
169
- /**
170
- * Position of the toolbox and flyout relative to the workspace.
171
- * @type {!toolbox.Position}
172
- */
134
+ /** Position of the toolbox and flyout relative to the workspace. */
173
135
  this.toolboxPosition = workspace.options.toolboxPosition;
174
-
175
- /**
176
- * The currently selected item.
177
- * @type {?ISelectableToolboxItem}
178
- * @protected
179
- */
180
- this.selectedItem_ = null;
181
-
182
- /**
183
- * The previously selected item.
184
- * @type {?ISelectableToolboxItem}
185
- * @protected
186
- */
187
- this.previouslySelectedItem_ = null;
188
-
189
- /**
190
- * Array holding info needed to unbind event handlers.
191
- * Used for disposing.
192
- * Ex: [[node, name, func], [node, name, func]].
193
- * @type {!Array<!browserEvents.Data>}
194
- * @protected
195
- */
196
- this.boundEvents_ = [];
197
136
  }
198
137
 
199
138
  /**
200
139
  * Handles the given keyboard shortcut.
201
- * @param {!ShortcutRegistry.KeyboardShortcut} _shortcut The shortcut to be
202
- * handled.
203
- * @return {boolean} True if the shortcut has been handled, false otherwise.
204
- * @public
140
+ * @param _shortcut The shortcut to be handled.
141
+ * @return True if the shortcut has been handled, false otherwise.
205
142
  */
206
- onShortcut(_shortcut) {
143
+ onShortcut(_shortcut: KeyboardShortcut): boolean {
207
144
  return false;
208
145
  }
209
146
 
210
- /**
211
- * Initializes the toolbox
212
- * @public
213
- */
147
+ /** Initializes the toolbox */
214
148
  init() {
215
149
  const workspace = this.workspace_;
216
150
  const svg = workspace.getParentSvg();
@@ -240,11 +174,10 @@ class Toolbox extends DeleteArea {
240
174
 
241
175
  /**
242
176
  * Creates the DOM for the toolbox.
243
- * @param {!WorkspaceSvg} workspace The workspace this toolbox is on.
244
- * @return {!HTMLDivElement} The HTML container for the toolbox.
245
- * @protected
177
+ * @param workspace The workspace this toolbox is on.
178
+ * @return The HTML container for the toolbox.
246
179
  */
247
- createDom_(workspace) {
180
+ protected createDom_(workspace: WorkspaceSvg): HTMLDivElement {
248
181
  const svg = workspace.getParentSvg();
249
182
 
250
183
  const container = this.createContainer_();
@@ -254,7 +187,7 @@ class Toolbox extends DeleteArea {
254
187
  aria.setRole(this.contentsDiv_, aria.Role.TREE);
255
188
  container.appendChild(this.contentsDiv_);
256
189
 
257
- svg.parentNode.insertBefore(container, svg);
190
+ svg.parentNode!.insertBefore(container, svg);
258
191
 
259
192
  this.attachEvents_(container, this.contentsDiv_);
260
193
  return container;
@@ -262,12 +195,10 @@ class Toolbox extends DeleteArea {
262
195
 
263
196
  /**
264
197
  * Creates the container div for the toolbox.
265
- * @return {!HTMLDivElement} The HTML container for the toolbox.
266
- * @protected
198
+ * @return The HTML container for the toolbox.
267
199
  */
268
- createContainer_() {
269
- const toolboxContainer =
270
- /** @type {!HTMLDivElement} */ (document.createElement('div'));
200
+ protected createContainer_(): HTMLDivElement {
201
+ const toolboxContainer = (document.createElement('div'));
271
202
  toolboxContainer.setAttribute('layout', this.isHorizontal() ? 'h' : 'v');
272
203
  dom.addClass(toolboxContainer, 'blocklyToolboxDiv');
273
204
  dom.addClass(toolboxContainer, 'blocklyNonSelectable');
@@ -277,12 +208,10 @@ class Toolbox extends DeleteArea {
277
208
 
278
209
  /**
279
210
  * Creates the container for all the contents in the toolbox.
280
- * @return {!HTMLDivElement} The HTML container for the toolbox contents.
281
- * @protected
211
+ * @return The HTML container for the toolbox contents.
282
212
  */
283
- createContentsContainer_() {
284
- const contentsContainer =
285
- /** @type {!HTMLDivElement} */ (document.createElement('div'));
213
+ protected createContentsContainer_(): HTMLDivElement {
214
+ const contentsContainer = (document.createElement('div'));
286
215
  dom.addClass(contentsContainer, 'blocklyToolboxContents');
287
216
  if (this.isHorizontal()) {
288
217
  contentsContainer.style.flexDirection = 'row';
@@ -292,57 +221,53 @@ class Toolbox extends DeleteArea {
292
221
 
293
222
  /**
294
223
  * Adds event listeners to the toolbox container div.
295
- * @param {!HTMLDivElement} container The HTML container for the toolbox.
296
- * @param {!HTMLDivElement} contentsContainer The HTML container for the
297
- * contents of the toolbox.
298
- * @protected
224
+ * @param container The HTML container for the toolbox.
225
+ * @param contentsContainer The HTML container for the contents of the
226
+ * toolbox.
299
227
  */
300
- attachEvents_(container, contentsContainer) {
228
+ protected attachEvents_(
229
+ container: HTMLDivElement, contentsContainer: HTMLDivElement) {
301
230
  // Clicking on toolbox closes popups.
302
231
  const clickEvent = browserEvents.conditionalBind(
303
232
  container, 'click', this, this.onClick_,
304
- /* opt_noCaptureIdentifier */ false,
305
- /* opt_noPreventDefault */ true);
233
+ /* opt_noCaptureIdentifier */ false, /* opt_noPreventDefault */ true);
306
234
  this.boundEvents_.push(clickEvent);
307
235
 
308
236
  const keyDownEvent = browserEvents.conditionalBind(
309
237
  contentsContainer, 'keydown', this, this.onKeyDown_,
310
- /* opt_noCaptureIdentifier */ false,
311
- /* opt_noPreventDefault */ true);
238
+ /* opt_noCaptureIdentifier */ false, /* opt_noPreventDefault */ true);
312
239
  this.boundEvents_.push(keyDownEvent);
313
240
  }
314
241
 
315
242
  /**
316
243
  * Handles on click events for when the toolbox or toolbox items are clicked.
317
- * @param {!Event} e Click event to handle.
318
- * @protected
244
+ * @param e Click event to handle.
319
245
  */
320
- onClick_(e) {
246
+ protected onClick_(e: MouseEvent) {
321
247
  if (browserEvents.isRightButton(e) || e.target === this.HtmlDiv) {
322
248
  // Close flyout.
323
- /** @type {!WorkspaceSvg} */ (common.getMainWorkspace()).hideChaff(false);
249
+ (common.getMainWorkspace() as WorkspaceSvg).hideChaff(false);
324
250
  } else {
325
251
  const targetElement = e.target;
326
- const itemId = targetElement.getAttribute('id');
252
+ const itemId = (targetElement as Element).getAttribute('id');
327
253
  if (itemId) {
328
254
  const item = this.getToolboxItemById(itemId);
329
- if (item.isSelectable()) {
255
+ if (item!.isSelectable()) {
330
256
  this.setSelectedItem(item);
331
- item.onClick(e);
257
+ (item as ISelectableToolboxItem).onClick(e);
332
258
  }
333
259
  }
334
260
  // Just close popups.
335
- /** @type {!WorkspaceSvg} */ (common.getMainWorkspace()).hideChaff(true);
261
+ (common.getMainWorkspace() as WorkspaceSvg).hideChaff(true);
336
262
  }
337
- Touch.clearTouchIdentifier(); // Don't block future drags.
263
+ Touch.clearTouchIdentifier();
338
264
  }
339
265
 
340
266
  /**
341
267
  * Handles key down events for the toolbox.
342
- * @param {!KeyboardEvent} e The key down event.
343
- * @protected
268
+ * @param e The key down event.
344
269
  */
345
- onKeyDown_(e) {
270
+ protected onKeyDown_(e: KeyboardEvent) {
346
271
  let handled = false;
347
272
  switch (e.keyCode) {
348
273
  case KeyCodes.DOWN:
@@ -360,8 +285,7 @@ class Toolbox extends DeleteArea {
360
285
  case KeyCodes.ENTER:
361
286
  case KeyCodes.SPACE:
362
287
  if (this.selectedItem_ && this.selectedItem_.isCollapsible()) {
363
- const collapsibleItem =
364
- /** @type {!ICollapsibleToolboxItem} */ (this.selectedItem_);
288
+ const collapsibleItem = this.selectedItem_ as ICollapsibleToolboxItem;
365
289
  collapsibleItem.toggleExpanded();
366
290
  handled = true;
367
291
  }
@@ -370,8 +294,13 @@ class Toolbox extends DeleteArea {
370
294
  handled = false;
371
295
  break;
372
296
  }
373
- if (!handled && this.selectedItem_ && this.selectedItem_.onKeyDown) {
374
- handled = this.selectedItem_.onKeyDown(e);
297
+ if (!handled && this.selectedItem_) {
298
+ // TODO(#6097): Figure out who implements onKeyDown and which interface it
299
+ // should be part of.
300
+ const untypedItem = this.selectedItem_ as AnyDuringMigration;
301
+ if (untypedItem.onKeyDown) {
302
+ handled = untypedItem.onKeyDown(e);
303
+ }
375
304
  }
376
305
 
377
306
  if (handled) {
@@ -381,27 +310,24 @@ class Toolbox extends DeleteArea {
381
310
 
382
311
  /**
383
312
  * Creates the flyout based on the toolbox layout.
384
- * @return {!IFlyout} The flyout for the toolbox.
313
+ * @return The flyout for the toolbox.
385
314
  * @throws {Error} If missing a require for `Blockly.HorizontalFlyout`,
386
315
  * `Blockly.VerticalFlyout`, and no flyout plugin is specified.
387
- * @protected
388
316
  */
389
- createFlyout_() {
317
+ protected createFlyout_(): IFlyout {
390
318
  const workspace = this.workspace_;
391
319
  // TODO (#4247): Look into adding a makeFlyout method to Blockly Options.
392
- const workspaceOptions = new Options(
393
- /** @type {!BlocklyOptions} */
394
- ({
395
- 'parentWorkspace': workspace,
396
- 'rtl': workspace.RTL,
397
- 'oneBasedIndex': workspace.options.oneBasedIndex,
398
- 'horizontalLayout': workspace.horizontalLayout,
399
- 'renderer': workspace.options.renderer,
400
- 'rendererOverrides': workspace.options.rendererOverrides,
401
- 'move': {
402
- 'scrollbars': true,
403
- },
404
- }));
320
+ const workspaceOptions = new Options(({
321
+ 'parentWorkspace': workspace,
322
+ 'rtl': workspace.RTL,
323
+ 'oneBasedIndex': workspace.options.oneBasedIndex,
324
+ 'horizontalLayout': workspace.horizontalLayout,
325
+ 'renderer': workspace.options.renderer,
326
+ 'rendererOverrides': workspace.options.rendererOverrides,
327
+ 'move': {
328
+ 'scrollbars': true,
329
+ },
330
+ } as BlocklyOptions));
405
331
  // Options takes in either 'end' or 'start'. This has already been parsed to
406
332
  // be either 0 or 1, so set it after.
407
333
  workspaceOptions.toolboxPosition = workspace.options.toolboxPosition;
@@ -413,16 +339,15 @@ class Toolbox extends DeleteArea {
413
339
  FlyoutClass = registry.getClassFromOptions(
414
340
  registry.Type.FLYOUTS_VERTICAL_TOOLBOX, workspace.options, true);
415
341
  }
416
- return new FlyoutClass(workspaceOptions);
342
+ return new FlyoutClass!(workspaceOptions);
417
343
  }
418
344
 
419
345
  /**
420
346
  * Fills the toolbox with new toolbox items and removes any old contents.
421
- * @param {!toolbox.ToolboxInfo} toolboxDef Object holding information
422
- * for creating a toolbox.
423
- * @package
347
+ * @param toolboxDef Object holding information for creating a toolbox.
348
+ * @internal
424
349
  */
425
- render(toolboxDef) {
350
+ render(toolboxDef: toolbox.ToolboxInfo) {
426
351
  this.toolboxDef_ = toolboxDef;
427
352
  for (let i = 0; i < this.contents_.length; i++) {
428
353
  const toolboxItem = this.contents_[i];
@@ -439,11 +364,10 @@ class Toolbox extends DeleteArea {
439
364
 
440
365
  /**
441
366
  * Adds all the toolbox items to the toolbox.
442
- * @param {!Array<!toolbox.ToolboxItemInfo>} toolboxDef Array
443
- * holding objects containing information on the contents of the toolbox.
444
- * @protected
367
+ * @param toolboxDef Array holding objects containing information on the
368
+ * contents of the toolbox.
445
369
  */
446
- renderContents_(toolboxDef) {
370
+ protected renderContents_(toolboxDef: toolbox.ToolboxItemInfo[]) {
447
371
  // This is for performance reasons. By using document fragment we only have
448
372
  // to add to the DOM once.
449
373
  const fragment = document.createDocumentFragment();
@@ -451,25 +375,23 @@ class Toolbox extends DeleteArea {
451
375
  const toolboxItemDef = toolboxDef[i];
452
376
  this.createToolboxItem_(toolboxItemDef, fragment);
453
377
  }
454
- this.contentsDiv_.appendChild(fragment);
378
+ this.contentsDiv_!.appendChild(fragment);
455
379
  }
456
380
 
457
381
  /**
458
382
  * Creates and renders the toolbox item.
459
- * @param {!toolbox.ToolboxItemInfo} toolboxItemDef Any information
460
- * that can be used to create an item in the toolbox.
461
- * @param {!DocumentFragment} fragment The document fragment to add the child
462
- * toolbox elements to.
463
- * @private
383
+ * @param toolboxItemDef Any information that can be used to create an item in
384
+ * the toolbox.
385
+ * @param fragment The document fragment to add the child toolbox elements to.
464
386
  */
465
- createToolboxItem_(toolboxItemDef, fragment) {
387
+ private createToolboxItem_(
388
+ toolboxItemDef: toolbox.ToolboxItemInfo, fragment: DocumentFragment) {
466
389
  let registryName = toolboxItemDef['kind'];
467
390
 
468
391
  // Categories that are collapsible are created using a class registered
469
392
  // under a different name.
470
393
  if (registryName.toUpperCase() === 'CATEGORY' &&
471
- toolbox.isCategoryCollapsible(
472
- /** @type {!toolbox.CategoryInfo} */ (toolboxItemDef))) {
394
+ toolbox.isCategoryCollapsible(toolboxItemDef as toolbox.CategoryInfo)) {
473
395
  registryName = CollapsibleToolboxCategory.registrationName;
474
396
  }
475
397
 
@@ -486,22 +408,20 @@ class Toolbox extends DeleteArea {
486
408
  // Adds the ID to the HTML element that can receive a click.
487
409
  // This is used in onClick_ to find the toolboxItem that was clicked.
488
410
  if (toolboxItem.getClickTarget()) {
489
- toolboxItem.getClickTarget().setAttribute('id', toolboxItem.getId());
411
+ toolboxItem.getClickTarget()!.setAttribute('id', toolboxItem.getId());
490
412
  }
491
413
  }
492
414
  }
493
415
 
494
416
  /**
495
417
  * Adds an item to the toolbox.
496
- * @param {!IToolboxItem} toolboxItem The item in the toolbox.
497
- * @protected
418
+ * @param toolboxItem The item in the toolbox.
498
419
  */
499
- addToolboxItem_(toolboxItem) {
420
+ protected addToolboxItem_(toolboxItem: IToolboxItem) {
500
421
  this.contents_.push(toolboxItem);
501
422
  this.contentMap_[toolboxItem.getId()] = toolboxItem;
502
423
  if (toolboxItem.isCollapsible()) {
503
- const collapsibleItem = /** @type {ICollapsibleToolboxItem} */
504
- (toolboxItem);
424
+ const collapsibleItem = toolboxItem as ICollapsibleToolboxItem;
505
425
  const childToolboxItems = collapsibleItem.getChildToolboxItems();
506
426
  for (let i = 0; i < childToolboxItems.length; i++) {
507
427
  const child = childToolboxItems[i];
@@ -512,42 +432,40 @@ class Toolbox extends DeleteArea {
512
432
 
513
433
  /**
514
434
  * Gets the items in the toolbox.
515
- * @return {!Array<!IToolboxItem>} The list of items in the toolbox.
516
- * @public
435
+ * @return The list of items in the toolbox.
517
436
  */
518
- getToolboxItems() {
437
+ getToolboxItems(): IToolboxItem[] {
519
438
  return this.contents_;
520
439
  }
521
440
 
522
441
  /**
523
442
  * Adds a style on the toolbox. Usually used to change the cursor.
524
- * @param {string} style The name of the class to add.
525
- * @package
443
+ * @param style The name of the class to add.
444
+ * @internal
526
445
  */
527
- addStyle(style) {
528
- dom.addClass(/** @type {!Element} */ (this.HtmlDiv), style);
446
+ addStyle(style: string) {
447
+ dom.addClass(this.HtmlDiv as Element, style);
529
448
  }
530
449
 
531
450
  /**
532
451
  * Removes a style from the toolbox. Usually used to change the cursor.
533
- * @param {string} style The name of the class to remove.
534
- * @package
452
+ * @param style The name of the class to remove.
453
+ * @internal
535
454
  */
536
- removeStyle(style) {
537
- dom.removeClass(/** @type {!Element} */ (this.HtmlDiv), style);
455
+ removeStyle(style: string) {
456
+ dom.removeClass(this.HtmlDiv as Element, style);
538
457
  }
539
458
 
540
459
  /**
541
460
  * Returns the bounding rectangle of the drag target area in pixel units
542
461
  * relative to viewport.
543
- * @return {?Rect} The component's bounding box. Null if drag
544
- * target area should be ignored.
462
+ * @return The component's bounding box. Null if drag target area should be
463
+ * ignored.
545
464
  */
546
- getClientRect() {
465
+ override getClientRect(): Rect|null {
547
466
  if (!this.HtmlDiv || !this.isVisible_) {
548
467
  return null;
549
468
  }
550
-
551
469
  // BIG_NUM is offscreen padding so that blocks dragged beyond the toolbox
552
470
  // area are still deleted. Must be smaller than Infinity, but larger than
553
471
  // the largest screen size.
@@ -577,17 +495,14 @@ class Toolbox extends DeleteArea {
577
495
  * this area.
578
496
  * This method should check if the element is deletable and is always called
579
497
  * before onDragEnter/onDragOver/onDragExit.
580
- * @param {!IDraggable} element The block or bubble currently being
581
- * dragged.
582
- * @param {boolean} _couldConnect Whether the element could could connect to
583
- * another.
584
- * @return {boolean} Whether the element provided would be deleted if dropped
585
- * on this area.
586
- * @override
498
+ * @param element The block or bubble currently being dragged.
499
+ * @param _couldConnect Whether the element could could connect to another.
500
+ * @return Whether the element provided would be deleted if dropped on this
501
+ * area.
587
502
  */
588
- wouldDelete(element, _couldConnect) {
503
+ override wouldDelete(element: IDraggable, _couldConnect: boolean): boolean {
589
504
  if (element instanceof BlockSvg) {
590
- const block = /** @type {BlockSvg} */ (element);
505
+ const block = (element);
591
506
  // Prefer dragging to the toolbox over connecting to other blocks.
592
507
  this.updateWouldDelete_(!block.getParent() && block.isDeletable());
593
508
  } else {
@@ -598,42 +513,34 @@ class Toolbox extends DeleteArea {
598
513
 
599
514
  /**
600
515
  * Handles when a cursor with a block or bubble enters this drag target.
601
- * @param {!IDraggable} _dragElement The block or bubble currently being
602
- * dragged.
603
- * @override
516
+ * @param _dragElement The block or bubble currently being dragged.
604
517
  */
605
- onDragEnter(_dragElement) {
518
+ override onDragEnter(_dragElement: IDraggable) {
606
519
  this.updateCursorDeleteStyle_(true);
607
520
  }
608
521
 
609
522
  /**
610
523
  * Handles when a cursor with a block or bubble exits this drag target.
611
- * @param {!IDraggable} _dragElement The block or bubble currently being
612
- * dragged.
613
- * @override
524
+ * @param _dragElement The block or bubble currently being dragged.
614
525
  */
615
- onDragExit(_dragElement) {
526
+ override onDragExit(_dragElement: IDraggable) {
616
527
  this.updateCursorDeleteStyle_(false);
617
528
  }
618
529
 
619
530
  /**
620
531
  * Handles when a block or bubble is dropped on this component.
621
532
  * Should not handle delete here.
622
- * @param {!IDraggable} _dragElement The block or bubble currently being
623
- * dragged.
624
- * @override
533
+ * @param _dragElement The block or bubble currently being dragged.
625
534
  */
626
- onDrop(_dragElement) {
535
+ override onDrop(_dragElement: IDraggable) {
627
536
  this.updateCursorDeleteStyle_(false);
628
537
  }
629
538
 
630
539
  /**
631
540
  * Updates the internal wouldDelete_ state.
632
- * @param {boolean} wouldDelete The new value for the wouldDelete state.
633
- * @protected
634
- * @override
541
+ * @param wouldDelete The new value for the wouldDelete state.
635
542
  */
636
- updateWouldDelete_(wouldDelete) {
543
+ protected override updateWouldDelete_(wouldDelete: boolean) {
637
544
  if (wouldDelete === this.wouldDelete_) {
638
545
  return;
639
546
  }
@@ -651,10 +558,9 @@ class Toolbox extends DeleteArea {
651
558
  * Adds or removes the CSS style of the cursor over the toolbox based whether
652
559
  * the block or bubble over it is expected to be deleted if dropped (using the
653
560
  * internal this.wouldDelete_ property).
654
- * @param {boolean} addStyle Whether the style should be added or removed.
655
- * @protected
561
+ * @param addStyle Whether the style should be added or removed.
656
562
  */
657
- updateCursorDeleteStyle_(addStyle) {
563
+ protected updateCursorDeleteStyle_(addStyle: boolean) {
658
564
  const style =
659
565
  this.wouldDelete_ ? 'blocklyToolboxDelete' : 'blocklyToolboxGrab';
660
566
  if (addStyle) {
@@ -666,85 +572,74 @@ class Toolbox extends DeleteArea {
666
572
 
667
573
  /**
668
574
  * Gets the toolbox item with the given ID.
669
- * @param {string} id The ID of the toolbox item.
670
- * @return {?IToolboxItem} The toolbox item with the given ID, or null
671
- * if no item exists.
672
- * @public
575
+ * @param id The ID of the toolbox item.
576
+ * @return The toolbox item with the given ID, or null if no item exists.
673
577
  */
674
- getToolboxItemById(id) {
578
+ getToolboxItemById(id: string): IToolboxItem|null {
675
579
  return this.contentMap_[id] || null;
676
580
  }
677
581
 
678
582
  /**
679
583
  * Gets the width of the toolbox.
680
- * @return {number} The width of the toolbox.
681
- * @public
584
+ * @return The width of the toolbox.
682
585
  */
683
- getWidth() {
586
+ getWidth(): number {
684
587
  return this.width_;
685
588
  }
686
589
 
687
590
  /**
688
591
  * Gets the height of the toolbox.
689
- * @return {number} The width of the toolbox.
690
- * @public
592
+ * @return The width of the toolbox.
691
593
  */
692
- getHeight() {
594
+ getHeight(): number {
693
595
  return this.height_;
694
596
  }
695
597
 
696
598
  /**
697
599
  * Gets the toolbox flyout.
698
- * @return {?IFlyout} The toolbox flyout.
699
- * @public
600
+ * @return The toolbox flyout.
700
601
  */
701
- getFlyout() {
602
+ getFlyout(): IFlyout|null {
702
603
  return this.flyout_;
703
604
  }
704
605
 
705
606
  /**
706
607
  * Gets the workspace for the toolbox.
707
- * @return {!WorkspaceSvg} The parent workspace for the toolbox.
708
- * @public
608
+ * @return The parent workspace for the toolbox.
709
609
  */
710
- getWorkspace() {
610
+ getWorkspace(): WorkspaceSvg {
711
611
  return this.workspace_;
712
612
  }
713
613
 
714
614
  /**
715
615
  * Gets the selected item.
716
- * @return {?ISelectableToolboxItem} The selected item, or null if no item is
717
- * currently selected.
718
- * @public
616
+ * @return The selected item, or null if no item is currently selected.
719
617
  */
720
- getSelectedItem() {
618
+ getSelectedItem(): ISelectableToolboxItem|null {
721
619
  return this.selectedItem_;
722
620
  }
723
621
 
724
622
  /**
725
623
  * Gets the previously selected item.
726
- * @return {?ISelectableToolboxItem} The previously selected item, or null if
727
- * no item was previously selected.
728
- * @public
624
+ * @return The previously selected item, or null if no item was previously
625
+ * selected.
729
626
  */
730
- getPreviouslySelectedItem() {
627
+ getPreviouslySelectedItem(): ISelectableToolboxItem|null {
731
628
  return this.previouslySelectedItem_;
732
629
  }
733
630
 
734
631
  /**
735
632
  * Gets whether or not the toolbox is horizontal.
736
- * @return {boolean} True if the toolbox is horizontal, false if the toolbox
737
- * is vertical.
738
- * @public
633
+ * @return True if the toolbox is horizontal, false if the toolbox is
634
+ * vertical.
739
635
  */
740
- isHorizontal() {
636
+ isHorizontal(): boolean {
741
637
  return this.horizontalLayout_;
742
638
  }
743
639
 
744
640
  /**
745
641
  * Positions the toolbox based on whether it is a horizontal toolbox and
746
642
  * whether the workspace is in rtl.
747
- * @public
748
643
  */
749
644
  position() {
750
645
  const workspaceMetrics = this.workspace_.getMetrics();
@@ -775,18 +670,18 @@ class Toolbox extends DeleteArea {
775
670
  this.width_ = toolboxDiv.offsetWidth;
776
671
  this.height_ = workspaceMetrics.viewHeight;
777
672
  }
778
- this.flyout_.position();
673
+ this.flyout_!.position();
779
674
  }
780
675
 
781
676
  /**
782
677
  * Handles resizing the toolbox when a toolbox item resizes.
783
- * @package
678
+ * @internal
784
679
  */
785
680
  handleToolboxItemResize() {
786
681
  // Reposition the workspace so that (0,0) is in the correct position
787
682
  // relative to the new absolute edge (ie toolbox edge).
788
683
  const workspace = this.workspace_;
789
- const rect = this.HtmlDiv.getBoundingClientRect();
684
+ const rect = this.HtmlDiv!.getBoundingClientRect();
790
685
  const newX = this.toolboxPosition === toolbox.Position.LEFT ?
791
686
  workspace.scrollX + rect.width :
792
687
  workspace.scrollX;
@@ -800,23 +695,22 @@ class Toolbox extends DeleteArea {
800
695
  common.svgResize(workspace);
801
696
  }
802
697
 
803
- /**
804
- * Unhighlights any previously selected item.
805
- * @public
806
- */
698
+ /** Unhighlights any previously selected item. */
807
699
  clearSelection() {
808
700
  this.setSelectedItem(null);
809
701
  }
810
702
 
811
703
  /**
812
704
  * Updates the category colours and background colour of selected categories.
813
- * @package
705
+ * @internal
814
706
  */
815
707
  refreshTheme() {
816
708
  for (let i = 0; i < this.contents_.length; i++) {
817
709
  const child = this.contents_[i];
818
- if (child.refreshTheme) {
819
- child.refreshTheme();
710
+ // TODO(#6097): Fix types or add refreshTheme to IToolboxItem.
711
+ const childAsCategory = child as ToolboxCategory;
712
+ if (childAsCategory.refreshTheme) {
713
+ childAsCategory.refreshTheme();
820
714
  }
821
715
  }
822
716
  }
@@ -825,26 +719,24 @@ class Toolbox extends DeleteArea {
825
719
  * Updates the flyout's content without closing it. Should be used in
826
720
  * response to a change in one of the dynamic categories, such as variables or
827
721
  * procedures.
828
- * @public
829
722
  */
830
723
  refreshSelection() {
831
724
  if (this.selectedItem_ && this.selectedItem_.isSelectable() &&
832
725
  this.selectedItem_.getContents().length) {
833
- this.flyout_.show(this.selectedItem_.getContents());
726
+ this.flyout_!.show(this.selectedItem_.getContents());
834
727
  }
835
728
  }
836
729
 
837
730
  /**
838
731
  * Shows or hides the toolbox.
839
- * @param {boolean} isVisible True if toolbox should be visible.
840
- * @public
732
+ * @param isVisible True if toolbox should be visible.
841
733
  */
842
- setVisible(isVisible) {
734
+ setVisible(isVisible: boolean) {
843
735
  if (this.isVisible_ === isVisible) {
844
736
  return;
845
737
  }
846
738
 
847
- this.HtmlDiv.style.display = isVisible ? 'block' : 'none';
739
+ this.HtmlDiv!.style.display = isVisible ? 'block' : 'none';
848
740
  this.isVisible_ = isVisible;
849
741
  // Invisible toolbox is ignored as drag targets and must have the drag
850
742
  // target updated.
@@ -853,10 +745,10 @@ class Toolbox extends DeleteArea {
853
745
 
854
746
  /**
855
747
  * Hides the component. Called in WorkspaceSvg.hideChaff.
856
- * @param {boolean} onlyClosePopups Whether only popups should be closed.
748
+ * @param onlyClosePopups Whether only popups should be closed.
857
749
  * Flyouts should not be closed if this is true.
858
750
  */
859
- autoHide(onlyClosePopups) {
751
+ autoHide(onlyClosePopups: boolean) {
860
752
  if (!onlyClosePopups && this.flyout_ && this.flyout_.autoClose) {
861
753
  this.clearSelection();
862
754
  }
@@ -865,40 +757,49 @@ class Toolbox extends DeleteArea {
865
757
  /**
866
758
  * Sets the given item as selected.
867
759
  * No-op if the item is not selectable.
868
- * @param {?IToolboxItem} newItem The toolbox item to select.
869
- * @public
760
+ * @param newItem The toolbox item to select.
870
761
  */
871
- setSelectedItem(newItem) {
762
+ setSelectedItem(newItem: IToolboxItem|null) {
872
763
  const oldItem = this.selectedItem_;
873
764
 
874
- if ((!newItem && !oldItem) || (newItem && !newItem.isSelectable())) {
765
+ if (!newItem && !oldItem || newItem && !newItem.isSelectable()) {
875
766
  return;
876
767
  }
877
- newItem = /** @type {ISelectableToolboxItem} */ (newItem);
768
+ newItem = newItem as ISelectableToolboxItem;
878
769
 
879
- if (this.shouldDeselectItem_(oldItem, newItem) && oldItem !== null) {
770
+ // AnyDuringMigration because: Argument of type 'IToolboxItem' is not
771
+ // assignable to parameter of type 'ISelectableToolboxItem'.
772
+ if (this.shouldDeselectItem_(oldItem, newItem as AnyDuringMigration) &&
773
+ oldItem !== null) {
880
774
  this.deselectItem_(oldItem);
881
775
  }
882
776
 
883
- if (this.shouldSelectItem_(oldItem, newItem) && newItem !== null) {
884
- this.selectItem_(oldItem, newItem);
777
+ // AnyDuringMigration because: Argument of type 'IToolboxItem' is not
778
+ // assignable to parameter of type 'ISelectableToolboxItem'.
779
+ if (this.shouldSelectItem_(oldItem, newItem as AnyDuringMigration) &&
780
+ newItem !== null) {
781
+ // AnyDuringMigration because: Argument of type 'IToolboxItem' is not
782
+ // assignable to parameter of type 'ISelectableToolboxItem'.
783
+ this.selectItem_(oldItem, newItem as AnyDuringMigration);
885
784
  }
886
785
 
887
- this.updateFlyout_(oldItem, newItem);
888
- this.fireSelectEvent_(oldItem, newItem);
786
+ // AnyDuringMigration because: Argument of type 'IToolboxItem' is not
787
+ // assignable to parameter of type 'ISelectableToolboxItem'.
788
+ this.updateFlyout_(oldItem, newItem as AnyDuringMigration);
789
+ // AnyDuringMigration because: Argument of type 'IToolboxItem' is not
790
+ // assignable to parameter of type 'ISelectableToolboxItem'.
791
+ this.fireSelectEvent_(oldItem, newItem as AnyDuringMigration);
889
792
  }
890
793
 
891
794
  /**
892
795
  * Decides whether the old item should be deselected.
893
- * @param {?ISelectableToolboxItem} oldItem The previously selected
894
- * toolbox item.
895
- * @param {?ISelectableToolboxItem} newItem The newly selected toolbox
896
- * item.
897
- * @return {boolean} True if the old item should be deselected, false
898
- * otherwise.
899
- * @protected
796
+ * @param oldItem The previously selected toolbox item.
797
+ * @param newItem The newly selected toolbox item.
798
+ * @return True if the old item should be deselected, false otherwise.
900
799
  */
901
- shouldDeselectItem_(oldItem, newItem) {
800
+ protected shouldDeselectItem_(
801
+ oldItem: ISelectableToolboxItem|null,
802
+ newItem: ISelectableToolboxItem|null): boolean {
902
803
  // Deselect the old item unless the old item is collapsible and has been
903
804
  // previously clicked on.
904
805
  return oldItem !== null &&
@@ -907,56 +808,50 @@ class Toolbox extends DeleteArea {
907
808
 
908
809
  /**
909
810
  * Decides whether the new item should be selected.
910
- * @param {?ISelectableToolboxItem} oldItem The previously selected
911
- * toolbox item.
912
- * @param {?ISelectableToolboxItem} newItem The newly selected toolbox
913
- * item.
914
- * @return {boolean} True if the new item should be selected, false otherwise.
915
- * @protected
811
+ * @param oldItem The previously selected toolbox item.
812
+ * @param newItem The newly selected toolbox item.
813
+ * @return True if the new item should be selected, false otherwise.
916
814
  */
917
- shouldSelectItem_(oldItem, newItem) {
815
+ protected shouldSelectItem_(
816
+ oldItem: ISelectableToolboxItem|null,
817
+ newItem: ISelectableToolboxItem|null): boolean {
918
818
  // Select the new item unless the old item equals the new item.
919
819
  return newItem !== null && newItem !== oldItem;
920
820
  }
921
821
 
922
822
  /**
923
823
  * Deselects the given item, marks it as unselected, and updates aria state.
924
- * @param {!ISelectableToolboxItem} item The previously selected
925
- * toolbox item which should be deselected.
926
- * @protected
824
+ * @param item The previously selected toolbox item which should be
825
+ * deselected.
927
826
  */
928
- deselectItem_(item) {
827
+ protected deselectItem_(item: ISelectableToolboxItem) {
929
828
  this.selectedItem_ = null;
930
829
  this.previouslySelectedItem_ = item;
931
830
  item.setSelected(false);
932
831
  aria.setState(
933
- /** @type {!Element} */ (this.contentsDiv_),
934
- aria.State.ACTIVEDESCENDANT, '');
832
+ this.contentsDiv_ as Element, aria.State.ACTIVEDESCENDANT, '');
935
833
  }
936
834
 
937
835
  /**
938
836
  * Selects the given item, marks it selected, and updates aria state.
939
- * @param {?ISelectableToolboxItem} oldItem The previously selected
940
- * toolbox item.
941
- * @param {!ISelectableToolboxItem} newItem The newly selected toolbox
942
- * item.
943
- * @protected
837
+ * @param oldItem The previously selected toolbox item.
838
+ * @param newItem The newly selected toolbox item.
944
839
  */
945
- selectItem_(oldItem, newItem) {
840
+ protected selectItem_(
841
+ oldItem: ISelectableToolboxItem|null, newItem: ISelectableToolboxItem) {
946
842
  this.selectedItem_ = newItem;
947
843
  this.previouslySelectedItem_ = oldItem;
948
844
  newItem.setSelected(true);
949
845
  aria.setState(
950
- /** @type {!Element} */ (this.contentsDiv_),
951
- aria.State.ACTIVEDESCENDANT, newItem.getId());
846
+ this.contentsDiv_ as Element, aria.State.ACTIVEDESCENDANT,
847
+ newItem.getId());
952
848
  }
953
849
 
954
850
  /**
955
851
  * Selects the toolbox item by its position in the list of toolbox items.
956
- * @param {number} position The position of the item to select.
957
- * @public
852
+ * @param position The position of the item to select.
958
853
  */
959
- selectItemByPosition(position) {
854
+ selectItemByPosition(position: number) {
960
855
  if (position > -1 && position < this.contents_.length) {
961
856
  const item = this.contents_[position];
962
857
  if (item.isSelectable()) {
@@ -967,59 +862,57 @@ class Toolbox extends DeleteArea {
967
862
 
968
863
  /**
969
864
  * Decides whether to hide or show the flyout depending on the selected item.
970
- * @param {?ISelectableToolboxItem} oldItem The previously selected toolbox
971
- * item.
972
- * @param {?ISelectableToolboxItem} newItem The newly selected toolbox item.
973
- * @protected
865
+ * @param oldItem The previously selected toolbox item.
866
+ * @param newItem The newly selected toolbox item.
974
867
  */
975
- updateFlyout_(oldItem, newItem) {
976
- if (!newItem || (oldItem === newItem && !newItem.isCollapsible()) ||
868
+ protected updateFlyout_(
869
+ oldItem: ISelectableToolboxItem|null,
870
+ newItem: ISelectableToolboxItem|null) {
871
+ if (!newItem || oldItem === newItem && !newItem.isCollapsible() ||
977
872
  !newItem.getContents().length) {
978
- this.flyout_.hide();
873
+ this.flyout_!.hide();
979
874
  } else {
980
- this.flyout_.show(newItem.getContents());
981
- this.flyout_.scrollToStart();
875
+ this.flyout_!.show(newItem.getContents());
876
+ this.flyout_!.scrollToStart();
982
877
  }
983
878
  }
984
879
 
985
880
  /**
986
881
  * Emits an event when a new toolbox item is selected.
987
- * @param {?ISelectableToolboxItem} oldItem The previously selected
988
- * toolbox item.
989
- * @param {?ISelectableToolboxItem} newItem The newly selected toolbox
990
- * item.
991
- * @private
882
+ * @param oldItem The previously selected toolbox item.
883
+ * @param newItem The newly selected toolbox item.
992
884
  */
993
- fireSelectEvent_(oldItem, newItem) {
885
+ private fireSelectEvent_(
886
+ oldItem: ISelectableToolboxItem|null,
887
+ newItem: ISelectableToolboxItem|null) {
994
888
  const oldElement = oldItem && oldItem.getName();
995
889
  let newElement = newItem && newItem.getName();
996
890
  // In this case the toolbox closes, so the newElement should be null.
997
891
  if (oldItem === newItem) {
998
892
  newElement = null;
999
893
  }
1000
- const event = new (eventUtils.get(eventUtils.TOOLBOX_ITEM_SELECT))(
1001
- oldElement, newElement, this.workspace_.id);
894
+ const event = new (eventUtils.get(eventUtils.TOOLBOX_ITEM_SELECT))!
895
+ (oldElement, newElement, this.workspace_.id);
1002
896
  eventUtils.fire(event);
1003
897
  }
1004
898
 
1005
899
  /**
1006
900
  * Closes the current item if it is expanded, or selects the parent.
1007
- * @return {boolean} True if a parent category was selected, false otherwise.
1008
- * @private
901
+ * @return True if a parent category was selected, false otherwise.
1009
902
  */
1010
- selectParent_() {
903
+ private selectParent_(): boolean {
1011
904
  if (!this.selectedItem_) {
1012
905
  return false;
1013
906
  }
1014
907
 
1015
- if (this.selectedItem_.isCollapsible() && this.selectedItem_.isExpanded()) {
1016
- const collapsibleItem =
1017
- /** @type {!ICollapsibleToolboxItem} */ (this.selectedItem_);
1018
- collapsibleItem.setExpanded(false);
908
+ if (this.selectedItem_.isCollapsible() &&
909
+ (this.selectedItem_ as ICollapsibleToolboxItem).isExpanded()) {
910
+ const collapsibleItem = this.selectedItem_ as ICollapsibleToolboxItem;
911
+ collapsibleItem.toggleExpanded();
1019
912
  return true;
1020
913
  } else if (
1021
914
  this.selectedItem_.getParent() &&
1022
- this.selectedItem_.getParent().isSelectable()) {
915
+ this.selectedItem_.getParent()!.isSelectable()) {
1023
916
  this.setSelectedItem(this.selectedItem_.getParent());
1024
917
  return true;
1025
918
  }
@@ -1029,17 +922,15 @@ class Toolbox extends DeleteArea {
1029
922
  /**
1030
923
  * Selects the first child of the currently selected item, or nothing if the
1031
924
  * toolbox item has no children.
1032
- * @return {boolean} True if a child category was selected, false otherwise.
1033
- * @private
925
+ * @return True if a child category was selected, false otherwise.
1034
926
  */
1035
- selectChild_() {
927
+ private selectChild_(): boolean {
1036
928
  if (!this.selectedItem_ || !this.selectedItem_.isCollapsible()) {
1037
929
  return false;
1038
930
  }
1039
- const collapsibleItem = /** @type {ICollapsibleToolboxItem} */
1040
- (this.selectedItem_);
931
+ const collapsibleItem = this.selectedItem_ as ICollapsibleToolboxItem;
1041
932
  if (!collapsibleItem.isExpanded()) {
1042
- collapsibleItem.setExpanded(true);
933
+ collapsibleItem.toggleExpanded();
1043
934
  return true;
1044
935
  } else {
1045
936
  this.selectNext_();
@@ -1049,10 +940,9 @@ class Toolbox extends DeleteArea {
1049
940
 
1050
941
  /**
1051
942
  * Selects the next visible toolbox item.
1052
- * @return {boolean} True if a next category was selected, false otherwise.
1053
- * @private
943
+ * @return True if a next category was selected, false otherwise.
1054
944
  */
1055
- selectNext_() {
945
+ private selectNext_(): boolean {
1056
946
  if (!this.selectedItem_) {
1057
947
  return false;
1058
948
  }
@@ -1073,11 +963,9 @@ class Toolbox extends DeleteArea {
1073
963
 
1074
964
  /**
1075
965
  * Selects the previous visible toolbox item.
1076
- * @return {boolean} True if a previous category was selected, false
1077
- * otherwise.
1078
- * @private
966
+ * @return True if a previous category was selected, false otherwise.
1079
967
  */
1080
- selectPrevious_() {
968
+ private selectPrevious_(): boolean {
1081
969
  if (!this.selectedItem_) {
1082
970
  return false;
1083
971
  }
@@ -1096,13 +984,10 @@ class Toolbox extends DeleteArea {
1096
984
  return false;
1097
985
  }
1098
986
 
1099
- /**
1100
- * Disposes of this toolbox.
1101
- * @public
1102
- */
987
+ /** Disposes of this toolbox. */
1103
988
  dispose() {
1104
989
  this.workspace_.getComponentManager().removeComponent('toolbox');
1105
- this.flyout_.dispose();
990
+ this.flyout_!.dispose();
1106
991
  for (let i = 0; i < this.contents_.length; i++) {
1107
992
  const toolboxItem = this.contents_[i];
1108
993
  toolboxItem.dispose();
@@ -1114,14 +999,15 @@ class Toolbox extends DeleteArea {
1114
999
  this.boundEvents_ = [];
1115
1000
  this.contents_ = [];
1116
1001
 
1117
- this.workspace_.getThemeManager().unsubscribe(this.HtmlDiv);
1002
+ // AnyDuringMigration because: Argument of type 'HTMLDivElement | null' is
1003
+ // not assignable to parameter of type 'Element'.
1004
+ this.workspace_.getThemeManager().unsubscribe(
1005
+ this.HtmlDiv as AnyDuringMigration);
1118
1006
  dom.removeNode(this.HtmlDiv);
1119
1007
  }
1120
1008
  }
1121
1009
 
1122
- /**
1123
- * CSS for Toolbox. See css.js for use.
1124
- */
1010
+ /** CSS for Toolbox. See css.js for use. */
1125
1011
  Css.register(`
1126
1012
  .blocklyToolboxDelete {
1127
1013
  cursor: url("<<<PATH>>>/handdelete.cur"), auto;
@@ -1156,5 +1042,3 @@ Css.register(`
1156
1042
  `);
1157
1043
 
1158
1044
  registry.register(registry.Type.TOOLBOX, registry.DEFAULT, Toolbox);
1159
-
1160
- exports.Toolbox = Toolbox;