blockly 8.0.4-beta.0 → 8.0.5-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (858) hide show
  1. package/blockly.min.js +2421 -2688
  2. package/blockly_compressed.js +1499 -1994
  3. package/blockly_compressed.js.map +1 -1
  4. package/blocks/blocks.js +3 -2
  5. package/blocks/colour.js +3 -1
  6. package/blocks/lists.js +94 -22
  7. package/blocks/logic.js +14 -6
  8. package/blocks/loops.js +5 -3
  9. package/blocks/math.js +3 -1
  10. package/blocks/procedures.js +3 -1
  11. package/blocks/text.js +14 -6
  12. package/blocks/variables.js +3 -1
  13. package/blocks/variables_dynamic.js +3 -1
  14. package/blocks.d.ts +0 -2
  15. package/blocks_compressed.js +189 -171
  16. package/blocks_compressed.js.map +1 -1
  17. package/closure/goog/base.d.ts +1 -0
  18. package/closure/goog/base_minimal.d.ts +18 -0
  19. package/closure/goog/goog.d.ts +25 -0
  20. package/core/any_aliases.d.ts +1 -0
  21. package/core/any_aliases.ts +1 -0
  22. package/core/block.d.ts +779 -0
  23. package/core/{block.js → block.ts} +610 -719
  24. package/core/block_animations.d.ts +33 -0
  25. package/core/{block_animations.js → block_animations.ts} +75 -79
  26. package/core/block_drag_surface.d.ts +111 -0
  27. package/core/{block_drag_surface.js → block_drag_surface.ts} +85 -117
  28. package/core/block_dragger.d.ts +143 -0
  29. package/core/{block_dragger.js → block_dragger.ts} +139 -176
  30. package/core/block_svg.d.ts +588 -0
  31. package/core/{block_svg.js → block_svg.ts} +494 -630
  32. package/core/blockly.d.ts +562 -0
  33. package/core/blockly.js +1 -1
  34. package/core/blockly.ts +749 -0
  35. package/core/blockly_options.d.ts +69 -0
  36. package/core/blockly_options.ts +81 -0
  37. package/core/blocks.d.ts +17 -0
  38. package/core/{blocks.js → blocks.ts} +4 -8
  39. package/core/browser_events.d.ts +85 -0
  40. package/core/{browser_events.js → browser_events.ts} +98 -93
  41. package/core/bubble.d.ts +279 -0
  42. package/core/{bubble.js → bubble.ts} +277 -370
  43. package/core/bubble_dragger.d.ts +73 -0
  44. package/core/bubble_dragger.ts +229 -0
  45. package/core/bump_objects.d.ts +34 -0
  46. package/core/{bump_objects.js → bump_objects.ts} +54 -52
  47. package/core/clipboard.d.ts +42 -0
  48. package/core/clipboard.ts +91 -0
  49. package/core/comment.d.ts +113 -0
  50. package/core/{comment.js → comment.ts} +135 -185
  51. package/core/common.d.ts +129 -0
  52. package/core/{common.js → common.ts} +105 -82
  53. package/core/component_manager.d.ts +91 -0
  54. package/core/component_manager.ts +211 -0
  55. package/core/config.d.ts +23 -0
  56. package/core/{config.js → config.ts} +12 -19
  57. package/core/connection.d.ts +232 -0
  58. package/core/{connection.js → connection.ts} +187 -237
  59. package/core/connection_checker.d.ts +78 -0
  60. package/core/{connection_checker.js → connection_checker.ts} +66 -77
  61. package/core/connection_db.d.ts +91 -0
  62. package/core/{connection_db.js → connection_db.ts} +62 -87
  63. package/core/connection_type.d.ts +15 -0
  64. package/core/{connection_type.js → connection_type.ts} +8 -12
  65. package/core/constants.d.ts +15 -0
  66. package/core/{constants.js → constants.ts} +4 -8
  67. package/core/contextmenu.d.ts +80 -0
  68. package/core/{contextmenu.js → contextmenu.ts} +118 -153
  69. package/core/contextmenu_items.d.ts +77 -0
  70. package/core/contextmenu_items.ts +576 -0
  71. package/core/contextmenu_registry.d.ts +105 -0
  72. package/core/contextmenu_registry.ts +179 -0
  73. package/core/css.d.ts +24 -0
  74. package/core/{css.js → css.ts} +16 -24
  75. package/core/delete_area.d.ts +47 -0
  76. package/core/delete_area.ts +82 -0
  77. package/core/dialog.d.ts +61 -0
  78. package/core/dialog.ts +127 -0
  79. package/core/drag_target.d.ts +63 -0
  80. package/core/drag_target.ts +94 -0
  81. package/core/dropdowndiv.d.ts +155 -0
  82. package/core/{dropdowndiv.js → dropdowndiv.ts} +262 -333
  83. package/core/events/events.d.ts +102 -0
  84. package/core/events/events.ts +123 -0
  85. package/core/events/events_abstract.d.ts +51 -0
  86. package/core/events/events_abstract.ts +112 -0
  87. package/core/events/events_block_base.d.ts +31 -0
  88. package/core/events/events_block_base.ts +65 -0
  89. package/core/events/events_block_change.d.ts +55 -0
  90. package/core/events/{events_block_change.js → events_block_change.ts} +45 -48
  91. package/core/events/events_block_create.d.ts +35 -0
  92. package/core/events/{events_block_create.js → events_block_create.ts} +30 -35
  93. package/core/events/events_block_delete.d.ts +36 -0
  94. package/core/events/{events_block_delete.js → events_block_delete.ts} +34 -39
  95. package/core/events/events_block_drag.d.ts +36 -0
  96. package/core/events/events_block_drag.ts +82 -0
  97. package/core/events/events_block_move.d.ts +51 -0
  98. package/core/events/{events_block_move.js → events_block_move.ts} +54 -50
  99. package/core/events/events_bubble_open.d.ts +35 -0
  100. package/core/events/events_bubble_open.ts +82 -0
  101. package/core/events/events_click.d.ts +36 -0
  102. package/core/events/{events_click.js → events_click.ts} +27 -30
  103. package/core/events/events_comment_base.d.ts +39 -0
  104. package/core/events/events_comment_base.ts +107 -0
  105. package/core/events/events_comment_change.d.ts +43 -0
  106. package/core/events/{events_comment_change.js → events_comment_change.ts} +31 -28
  107. package/core/events/events_comment_create.d.ts +35 -0
  108. package/core/events/{events_comment_create.js → events_comment_create.ts} +24 -26
  109. package/core/events/events_comment_delete.d.ts +35 -0
  110. package/core/events/{events_comment_delete.js → events_comment_delete.ts} +20 -24
  111. package/core/events/events_comment_move.d.ts +55 -0
  112. package/core/events/{events_comment_move.js → events_comment_move.ts} +39 -42
  113. package/core/events/events_marker_move.d.ts +40 -0
  114. package/core/events/events_marker_move.ts +99 -0
  115. package/core/events/events_selected.d.ts +34 -0
  116. package/core/events/events_selected.ts +78 -0
  117. package/core/events/events_theme_change.d.ts +30 -0
  118. package/core/events/{events_theme_change.js → events_theme_change.ts} +19 -24
  119. package/core/events/events_toolbox_item_select.d.ts +34 -0
  120. package/core/events/events_toolbox_item_select.ts +79 -0
  121. package/core/events/events_trashcan_open.d.ts +31 -0
  122. package/core/events/events_trashcan_open.ts +68 -0
  123. package/core/events/events_ui.d.ts +37 -0
  124. package/core/events/{events_ui.js → events_ui.ts} +27 -26
  125. package/core/events/events_ui_base.d.ts +26 -0
  126. package/core/events/{events_ui_base.js → events_ui_base.ts} +17 -26
  127. package/core/events/events_var_base.d.ts +31 -0
  128. package/core/events/events_var_base.ts +65 -0
  129. package/core/events/events_var_create.d.ts +35 -0
  130. package/core/events/{events_var_create.js → events_var_create.ts} +24 -25
  131. package/core/events/events_var_delete.d.ts +35 -0
  132. package/core/events/{events_var_delete.js → events_var_delete.ts} +24 -25
  133. package/core/events/events_var_rename.d.ts +36 -0
  134. package/core/events/{events_var_rename.js → events_var_rename.ts} +25 -26
  135. package/core/events/events_viewport.d.ts +39 -0
  136. package/core/events/events_viewport.ts +100 -0
  137. package/core/events/utils.d.ts +272 -0
  138. package/core/events/{utils.js → utils.ts} +148 -219
  139. package/core/events/workspace_events.d.ts +36 -0
  140. package/core/events/workspace_events.ts +86 -0
  141. package/core/extensions.d.ts +107 -0
  142. package/core/{extensions.js → extensions.ts} +153 -172
  143. package/core/field.d.ts +534 -0
  144. package/core/{field.js → field.ts} +413 -489
  145. package/core/field_angle.d.ts +176 -0
  146. package/core/field_angle.ts +563 -0
  147. package/core/field_checkbox.d.ts +124 -0
  148. package/core/field_checkbox.ts +243 -0
  149. package/core/field_colour.d.ts +200 -0
  150. package/core/field_colour.ts +632 -0
  151. package/core/field_dropdown.d.ts +222 -0
  152. package/core/{field_dropdown.js → field_dropdown.ts} +277 -299
  153. package/core/field_image.d.ts +134 -0
  154. package/core/field_image.ts +282 -0
  155. package/core/field_label.d.ts +71 -0
  156. package/core/field_label.ts +152 -0
  157. package/core/field_label_serializable.d.ts +42 -0
  158. package/core/field_label_serializable.ts +76 -0
  159. package/core/field_multilineinput.d.ts +146 -0
  160. package/core/{field_multilineinput.js → field_multilineinput.ts} +166 -163
  161. package/core/field_number.d.ts +156 -0
  162. package/core/{field_number.js → field_number.ts} +110 -123
  163. package/core/field_registry.d.ts +45 -0
  164. package/core/{field_registry.js → field_registry.ts} +37 -30
  165. package/core/field_textinput.d.ts +219 -0
  166. package/core/field_textinput.ts +591 -0
  167. package/core/field_variable.d.ts +217 -0
  168. package/core/{field_variable.js → field_variable.ts} +174 -187
  169. package/core/flyout_base.d.ts +459 -0
  170. package/core/{flyout_base.js → flyout_base.ts} +429 -518
  171. package/core/flyout_button.d.ts +81 -0
  172. package/core/flyout_button.ts +292 -0
  173. package/core/flyout_horizontal.d.ts +82 -0
  174. package/core/{flyout_horizontal.js → flyout_horizontal.ts} +97 -107
  175. package/core/flyout_metrics_manager.d.ts +40 -0
  176. package/core/{flyout_metrics_manager.js → flyout_metrics_manager.ts} +22 -34
  177. package/core/flyout_vertical.d.ts +83 -0
  178. package/core/{flyout_vertical.js → flyout_vertical.ts} +106 -117
  179. package/core/generator.d.ts +205 -0
  180. package/core/{generator.js → generator.ts} +168 -193
  181. package/core/gesture.d.ts +357 -0
  182. package/core/{gesture.js → gesture.ts} +289 -369
  183. package/core/grid.d.ts +83 -0
  184. package/core/grid.ts +192 -0
  185. package/core/icon.d.ts +78 -0
  186. package/core/icon.ts +189 -0
  187. package/core/inject.d.ts +15 -0
  188. package/core/{inject.js → inject.ts} +101 -100
  189. package/core/input.d.ts +128 -0
  190. package/core/input.ts +309 -0
  191. package/core/input_types.d.ts +14 -0
  192. package/core/{input_types.js → input_types.ts} +8 -12
  193. package/core/insertion_marker_manager.d.ts +212 -0
  194. package/core/{insertion_marker_manager.js → insertion_marker_manager.ts} +234 -236
  195. package/core/interfaces/i_ast_node_location.d.ts +11 -0
  196. package/core/interfaces/{i_ast_node_location.js → i_ast_node_location.ts} +4 -7
  197. package/core/interfaces/i_ast_node_location_svg.d.ts +22 -0
  198. package/core/interfaces/i_ast_node_location_svg.ts +37 -0
  199. package/core/interfaces/i_ast_node_location_with_block.d.ts +18 -0
  200. package/core/interfaces/i_ast_node_location_with_block.ts +38 -0
  201. package/core/interfaces/i_autohideable.d.ts +18 -0
  202. package/core/interfaces/i_autohideable.ts +34 -0
  203. package/core/interfaces/i_block_dragger.d.ts +43 -0
  204. package/core/interfaces/i_block_dragger.ts +67 -0
  205. package/core/interfaces/i_bounded_element.d.ts +24 -0
  206. package/core/interfaces/i_bounded_element.ts +42 -0
  207. package/core/interfaces/i_bubble.d.ts +59 -0
  208. package/core/interfaces/i_bubble.ts +88 -0
  209. package/core/interfaces/i_collapsible_toolbox_item.d.ts +26 -0
  210. package/core/interfaces/i_collapsible_toolbox_item.ts +47 -0
  211. package/core/interfaces/i_component.d.ts +17 -0
  212. package/core/interfaces/{i_component.js → i_component.ts} +9 -14
  213. package/core/interfaces/i_connection_checker.d.ts +69 -0
  214. package/core/interfaces/i_connection_checker.ts +102 -0
  215. package/core/interfaces/i_contextmenu.d.ts +13 -0
  216. package/core/interfaces/i_contextmenu.ts +26 -0
  217. package/core/interfaces/i_copyable.d.ts +24 -0
  218. package/core/interfaces/i_copyable.ts +40 -0
  219. package/core/interfaces/i_deletable.d.ts +16 -0
  220. package/core/interfaces/{i_deletable.js → i_deletable.ts} +9 -13
  221. package/core/interfaces/i_delete_area.d.ts +25 -0
  222. package/core/interfaces/i_delete_area.ts +46 -0
  223. package/core/interfaces/i_drag_target.d.ts +53 -0
  224. package/core/interfaces/i_drag_target.ts +84 -0
  225. package/core/interfaces/i_draggable.d.ts +12 -0
  226. package/core/interfaces/{i_draggable.js → i_draggable.ts} +4 -10
  227. package/core/interfaces/i_flyout.d.ts +134 -0
  228. package/core/interfaces/i_flyout.ts +186 -0
  229. package/core/interfaces/i_keyboard_accessible.d.ts +18 -0
  230. package/core/interfaces/i_keyboard_accessible.ts +35 -0
  231. package/core/interfaces/i_metrics_manager.d.ts +117 -0
  232. package/core/interfaces/i_metrics_manager.ts +151 -0
  233. package/core/interfaces/i_movable.d.ts +16 -0
  234. package/core/interfaces/{i_movable.js → i_movable.ts} +9 -13
  235. package/core/interfaces/i_positionable.d.ts +27 -0
  236. package/core/interfaces/i_positionable.ts +50 -0
  237. package/core/interfaces/i_registrable.d.ts +11 -0
  238. package/core/interfaces/{i_registrable.js → i_registrable.ts} +3 -7
  239. package/core/interfaces/i_registrable_field.d.ts +17 -0
  240. package/core/interfaces/{i_registrable_field.js → i_registrable_field.ts} +8 -16
  241. package/core/interfaces/i_selectable.d.ts +18 -0
  242. package/core/interfaces/i_selectable.ts +34 -0
  243. package/core/interfaces/i_selectable_toolbox_item.d.ts +42 -0
  244. package/core/interfaces/i_selectable_toolbox_item.ts +64 -0
  245. package/core/interfaces/i_serializer.d.ts +42 -0
  246. package/core/interfaces/i_serializer.ts +65 -0
  247. package/core/interfaces/i_styleable.d.ts +21 -0
  248. package/core/interfaces/i_styleable.ts +35 -0
  249. package/core/interfaces/i_toolbox.d.ts +85 -0
  250. package/core/interfaces/i_toolbox.ts +127 -0
  251. package/core/interfaces/i_toolbox_item.d.ts +62 -0
  252. package/core/interfaces/i_toolbox_item.ts +84 -0
  253. package/core/internal_constants.d.ts +40 -0
  254. package/core/{internal_constants.js → internal_constants.ts} +13 -18
  255. package/core/keyboard_nav/ast_node.d.ts +239 -0
  256. package/core/keyboard_nav/{ast_node.js → ast_node.ts} +207 -231
  257. package/core/keyboard_nav/basic_cursor.d.ts +88 -0
  258. package/core/keyboard_nav/{basic_cursor.js → basic_cursor.ts} +55 -66
  259. package/core/keyboard_nav/cursor.d.ts +41 -0
  260. package/core/keyboard_nav/{cursor.js → cursor.ts} +25 -35
  261. package/core/keyboard_nav/marker.d.ts +58 -0
  262. package/core/keyboard_nav/{marker.js → marker.ts} +36 -55
  263. package/core/keyboard_nav/tab_navigate_cursor.d.ts +19 -0
  264. package/core/keyboard_nav/{tab_navigate_cursor.js → tab_navigate_cursor.ts} +11 -15
  265. package/core/main.d.ts +11 -0
  266. package/core/main.js +303 -0
  267. package/core/marker_manager.d.ts +85 -0
  268. package/core/marker_manager.ts +181 -0
  269. package/core/menu.d.ts +149 -0
  270. package/core/{menu.js → menu.ts} +141 -174
  271. package/core/menuitem.d.ts +118 -0
  272. package/core/menuitem.ts +240 -0
  273. package/core/metrics_manager.d.ts +201 -0
  274. package/core/{metrics_manager.js → metrics_manager.ts} +117 -156
  275. package/core/msg.d.ts +9 -0
  276. package/core/{msg.js → msg.ts} +4 -8
  277. package/core/mutator.d.ts +128 -0
  278. package/core/{mutator.js → mutator.ts} +196 -211
  279. package/core/names.d.ts +124 -0
  280. package/core/names.ts +267 -0
  281. package/core/options.d.ts +137 -0
  282. package/core/{options.js → options.ts} +147 -173
  283. package/core/positionable_helpers.d.ts +88 -0
  284. package/core/{positionable_helpers.js → positionable_helpers.ts} +63 -70
  285. package/core/procedures.d.ts +108 -0
  286. package/core/{procedures.js → procedures.ts} +143 -152
  287. package/core/registry.d.ts +137 -0
  288. package/core/registry.ts +339 -0
  289. package/core/rendered_connection.d.ts +191 -0
  290. package/core/{rendered_connection.js → rendered_connection.ts} +164 -184
  291. package/core/renderers/common/block_rendering.d.ts +114 -0
  292. package/core/renderers/common/block_rendering.ts +164 -0
  293. package/core/renderers/common/constants.d.ts +458 -0
  294. package/core/renderers/common/constants.ts +1124 -0
  295. package/core/renderers/common/debug.d.ts +28 -0
  296. package/core/renderers/common/{debug.js → debug.ts} +14 -20
  297. package/core/renderers/common/debugger.d.ts +120 -0
  298. package/core/renderers/common/{debugger.js → debugger.ts} +100 -124
  299. package/core/renderers/common/drawer.d.ts +132 -0
  300. package/core/renderers/common/{drawer.js → drawer.ts} +112 -137
  301. package/core/renderers/common/i_path_object.d.ts +117 -0
  302. package/core/renderers/common/i_path_object.ts +161 -0
  303. package/core/renderers/common/info.d.ts +194 -0
  304. package/core/renderers/common/{info.js → info.ts} +165 -222
  305. package/core/renderers/common/marker_svg.d.ts +220 -0
  306. package/core/renderers/common/marker_svg.ts +680 -0
  307. package/core/renderers/common/path_object.d.ts +146 -0
  308. package/core/renderers/common/path_object.ts +272 -0
  309. package/core/renderers/common/renderer.d.ts +157 -0
  310. package/core/renderers/common/renderer.ts +271 -0
  311. package/core/renderers/geras/constants.d.ts +23 -0
  312. package/core/renderers/geras/constants.ts +61 -0
  313. package/core/renderers/geras/drawer.d.ts +43 -0
  314. package/core/renderers/geras/{drawer.js → drawer.ts} +40 -84
  315. package/core/renderers/geras/geras.d.ts +11 -0
  316. package/core/renderers/geras/geras.ts +37 -0
  317. package/core/renderers/geras/highlight_constants.d.ts +108 -0
  318. package/core/renderers/geras/{highlight_constants.js → highlight_constants.ts} +107 -69
  319. package/core/renderers/geras/highlighter.d.ts +98 -0
  320. package/core/renderers/geras/{highlighter.js → highlighter.ts} +81 -86
  321. package/core/renderers/geras/info.d.ts +45 -0
  322. package/core/renderers/geras/{info.js → info.ts} +61 -99
  323. package/core/renderers/geras/measurables/inline_input.d.ts +23 -0
  324. package/core/renderers/geras/measurables/inline_input.ts +51 -0
  325. package/core/renderers/geras/measurables/statement_input.d.ts +23 -0
  326. package/core/renderers/geras/measurables/statement_input.ts +50 -0
  327. package/core/renderers/geras/path_object.d.ts +47 -0
  328. package/core/renderers/geras/{path_object.js → path_object.ts} +46 -74
  329. package/core/renderers/geras/renderer.d.ts +69 -0
  330. package/core/renderers/geras/renderer.ts +126 -0
  331. package/core/renderers/measurables/base.d.ts +27 -0
  332. package/core/renderers/measurables/base.ts +53 -0
  333. package/core/renderers/measurables/bottom_row.d.ts +61 -0
  334. package/core/renderers/measurables/bottom_row.ts +120 -0
  335. package/core/renderers/measurables/connection.d.ts +25 -0
  336. package/core/renderers/measurables/connection.ts +52 -0
  337. package/core/renderers/measurables/external_value_input.d.ts +27 -0
  338. package/core/renderers/measurables/external_value_input.ts +65 -0
  339. package/core/renderers/measurables/field.d.ts +30 -0
  340. package/core/renderers/measurables/field.ts +63 -0
  341. package/core/renderers/measurables/hat.d.ts +21 -0
  342. package/core/renderers/measurables/{hat.js → hat.ts} +12 -14
  343. package/core/renderers/measurables/icon.d.ts +26 -0
  344. package/core/renderers/measurables/{icon.js → icon.ts} +14 -18
  345. package/core/renderers/measurables/in_row_spacer.d.ts +21 -0
  346. package/core/renderers/measurables/in_row_spacer.ts +44 -0
  347. package/core/renderers/measurables/inline_input.d.ts +24 -0
  348. package/core/renderers/measurables/{inline_input.js → inline_input.ts} +22 -26
  349. package/core/renderers/measurables/input_connection.d.ts +29 -0
  350. package/core/renderers/measurables/input_connection.ts +66 -0
  351. package/core/renderers/measurables/input_row.d.ts +30 -0
  352. package/core/renderers/measurables/{input_row.js → input_row.ts} +24 -31
  353. package/core/renderers/measurables/jagged_edge.d.ts +20 -0
  354. package/core/renderers/measurables/{jagged_edge.js → jagged_edge.ts} +10 -13
  355. package/core/renderers/measurables/next_connection.d.ts +23 -0
  356. package/core/renderers/measurables/next_connection.ts +47 -0
  357. package/core/renderers/measurables/output_connection.d.ts +26 -0
  358. package/core/renderers/measurables/output_connection.ts +56 -0
  359. package/core/renderers/measurables/previous_connection.d.ts +23 -0
  360. package/core/renderers/measurables/previous_connection.ts +47 -0
  361. package/core/renderers/measurables/round_corner.d.ts +21 -0
  362. package/core/renderers/measurables/round_corner.ts +49 -0
  363. package/core/renderers/measurables/row.d.ts +141 -0
  364. package/core/renderers/measurables/row.ts +225 -0
  365. package/core/renderers/measurables/spacer_row.d.ts +29 -0
  366. package/core/renderers/measurables/spacer_row.ts +55 -0
  367. package/core/renderers/measurables/square_corner.d.ts +21 -0
  368. package/core/renderers/measurables/square_corner.ts +47 -0
  369. package/core/renderers/measurables/statement_input.d.ts +22 -0
  370. package/core/renderers/measurables/{statement_input.js → statement_input.ts} +14 -18
  371. package/core/renderers/measurables/top_row.d.ts +56 -0
  372. package/core/renderers/measurables/top_row.ts +122 -0
  373. package/core/renderers/measurables/types.d.ts +235 -0
  374. package/core/renderers/measurables/types.ts +332 -0
  375. package/core/renderers/minimalist/constants.d.ts +14 -0
  376. package/core/renderers/minimalist/{constants.js → constants.ts} +5 -10
  377. package/core/renderers/minimalist/drawer.d.ts +21 -0
  378. package/core/renderers/minimalist/drawer.ts +38 -0
  379. package/core/renderers/minimalist/info.d.ts +30 -0
  380. package/core/renderers/minimalist/info.ts +52 -0
  381. package/core/renderers/minimalist/minimalist.d.ts +6 -0
  382. package/core/renderers/minimalist/minimalist.ts +22 -0
  383. package/core/renderers/minimalist/renderer.d.ts +41 -0
  384. package/core/renderers/minimalist/renderer.ts +71 -0
  385. package/core/renderers/thrasos/info.d.ts +40 -0
  386. package/core/renderers/thrasos/{info.js → info.ts} +66 -67
  387. package/core/renderers/thrasos/renderer.d.ts +25 -0
  388. package/core/renderers/thrasos/renderer.ts +48 -0
  389. package/core/renderers/thrasos/thrasos.d.ts +4 -0
  390. package/core/renderers/thrasos/thrasos.ts +20 -0
  391. package/core/renderers/zelos/constants.d.ts +186 -0
  392. package/core/renderers/zelos/{constants.js → constants.ts} +294 -441
  393. package/core/renderers/zelos/drawer.d.ts +47 -0
  394. package/core/renderers/zelos/{drawer.js → drawer.ts} +73 -95
  395. package/core/renderers/zelos/info.d.ts +88 -0
  396. package/core/renderers/zelos/{info.js → info.ts} +111 -142
  397. package/core/renderers/zelos/marker_svg.d.ts +46 -0
  398. package/core/renderers/zelos/marker_svg.ts +151 -0
  399. package/core/renderers/zelos/measurables/bottom_row.d.ts +27 -0
  400. package/core/renderers/zelos/measurables/bottom_row.ts +53 -0
  401. package/core/renderers/zelos/measurables/inputs.d.ts +23 -0
  402. package/core/renderers/zelos/measurables/{inputs.js → inputs.ts} +14 -15
  403. package/core/renderers/zelos/measurables/row_elements.d.ts +21 -0
  404. package/core/renderers/zelos/measurables/row_elements.ts +45 -0
  405. package/core/renderers/zelos/measurables/top_row.d.ts +29 -0
  406. package/core/renderers/zelos/measurables/{top_row.js → top_row.ts} +14 -27
  407. package/core/renderers/zelos/path_object.d.ts +77 -0
  408. package/core/renderers/zelos/path_object.ts +215 -0
  409. package/core/renderers/zelos/renderer.d.ts +74 -0
  410. package/core/renderers/zelos/renderer.ts +142 -0
  411. package/core/renderers/zelos/zelos.d.ts +12 -0
  412. package/core/renderers/zelos/zelos.ts +39 -0
  413. package/core/scrollbar.d.ts +277 -0
  414. package/core/{scrollbar.js → scrollbar.ts} +307 -328
  415. package/core/scrollbar_pair.d.ts +105 -0
  416. package/core/{scrollbar_pair.js → scrollbar_pair.ts} +71 -79
  417. package/core/serialization/blocks.d.ts +98 -0
  418. package/core/serialization/{blocks.js → blocks.ts} +229 -228
  419. package/core/serialization/exceptions.d.ts +73 -0
  420. package/core/serialization/exceptions.ts +98 -0
  421. package/core/serialization/priorities.d.ts +15 -0
  422. package/core/serialization/{priorities.js → priorities.ts} +4 -10
  423. package/core/serialization/registry.d.ts +20 -0
  424. package/core/serialization/{registry.js → registry.ts} +11 -13
  425. package/core/serialization/variables.d.ts +14 -0
  426. package/core/serialization/{variables.js → variables.ts} +30 -32
  427. package/core/serialization/workspaces.d.ts +28 -0
  428. package/core/serialization/{workspaces.js → workspaces.ts} +30 -27
  429. package/core/shortcut_items.d.ts +61 -0
  430. package/core/{shortcut_items.js → shortcut_items.ts} +121 -157
  431. package/core/shortcut_registry.d.ts +151 -0
  432. package/core/shortcut_registry.ts +355 -0
  433. package/core/sprites.d.ts +19 -0
  434. package/core/{sprites.js → sprites.ts} +4 -6
  435. package/core/theme/classic.d.ts +12 -0
  436. package/core/theme/{classic.js → classic.ts} +5 -7
  437. package/core/theme/themes.d.ts +8 -0
  438. package/core/theme/themes.ts +22 -0
  439. package/core/theme/zelos.d.ts +11 -0
  440. package/core/theme/{zelos.js → zelos.ts} +4 -7
  441. package/core/theme.d.ts +142 -0
  442. package/core/theme.ts +221 -0
  443. package/core/theme_manager.d.ts +81 -0
  444. package/core/theme_manager.ts +186 -0
  445. package/core/toolbox/category.d.ts +239 -0
  446. package/core/toolbox/category.ts +679 -0
  447. package/core/toolbox/collapsible_category.d.ts +91 -0
  448. package/core/toolbox/collapsible_category.ts +273 -0
  449. package/core/toolbox/separator.d.ts +39 -0
  450. package/core/toolbox/separator.ts +105 -0
  451. package/core/toolbox/toolbox.d.ts +352 -0
  452. package/core/toolbox/{toolbox.js → toolbox.ts} +316 -432
  453. package/core/toolbox/toolbox_item.d.ts +85 -0
  454. package/core/toolbox/toolbox_item.ts +147 -0
  455. package/core/tooltip.d.ts +126 -0
  456. package/core/{tooltip.js → tooltip.ts} +136 -214
  457. package/core/touch.d.ts +121 -0
  458. package/core/touch.ts +306 -0
  459. package/core/touch_gesture.d.ts +115 -0
  460. package/core/{touch_gesture.js → touch_gesture.ts} +87 -125
  461. package/core/trashcan.d.ts +195 -0
  462. package/core/{trashcan.js → trashcan.ts} +226 -312
  463. package/core/utils/aria.d.ts +67 -0
  464. package/core/utils/{aria.js → aria.ts} +47 -61
  465. package/core/utils/array.d.ts +14 -0
  466. package/core/utils/{array.js → array.ts} +10 -12
  467. package/core/utils/colour.d.ts +103 -0
  468. package/core/utils/{colour.js → colour.ts} +60 -72
  469. package/core/utils/coordinate.d.ts +72 -0
  470. package/core/utils/coordinate.ts +124 -0
  471. package/core/utils/deprecation.d.ts +17 -0
  472. package/core/utils/{deprecation.js → deprecation.ts} +11 -11
  473. package/core/utils/dom.d.ts +165 -0
  474. package/core/utils/{dom.js → dom.ts} +125 -147
  475. package/core/utils/idgenerator.d.ts +25 -0
  476. package/core/utils/{idgenerator.js → idgenerator.ts} +15 -18
  477. package/core/utils/keycodes.d.ts +137 -0
  478. package/core/utils/keycodes.ts +169 -0
  479. package/core/utils/math.d.ts +30 -0
  480. package/core/utils/{math.js → math.ts} +17 -19
  481. package/core/utils/metrics.d.ts +64 -0
  482. package/core/utils/metrics.ts +97 -0
  483. package/core/utils/object.d.ts +35 -0
  484. package/core/utils/{object.js → object.ts} +30 -26
  485. package/core/utils/parsing.d.ts +50 -0
  486. package/core/utils/{parsing.js → parsing.ts} +50 -50
  487. package/core/utils/rect.d.ts +38 -0
  488. package/core/utils/{rect.js → rect.ts} +18 -31
  489. package/core/utils/sentinel.d.ts +11 -0
  490. package/core/utils/{sentinel.js → sentinel.ts} +3 -5
  491. package/core/utils/size.d.ts +27 -0
  492. package/core/utils/{size.js → size.ts} +12 -26
  493. package/core/utils/string.d.ts +55 -0
  494. package/core/utils/{string.js → string.ts} +64 -61
  495. package/core/utils/style.d.ts +127 -0
  496. package/core/utils/{style.js → style.ts} +102 -92
  497. package/core/utils/svg.d.ts +68 -0
  498. package/core/utils/svg.ts +88 -0
  499. package/core/utils/svg_math.d.ts +70 -0
  500. package/core/utils/{svg_math.js → svg_math.ts} +72 -71
  501. package/core/utils/svg_paths.d.ts +101 -0
  502. package/core/utils/{svg_paths.js → svg_paths.ts} +56 -65
  503. package/core/utils/toolbox.d.ts +193 -0
  504. package/core/utils/toolbox.ts +433 -0
  505. package/core/utils/useragent.d.ts +33 -0
  506. package/core/utils/useragent.ts +135 -0
  507. package/core/utils/xml.d.ts +52 -0
  508. package/core/utils/{xml.js → xml.ts} +26 -36
  509. package/core/utils.d.ts +217 -0
  510. package/core/utils.ts +428 -0
  511. package/core/variable_map.d.ts +141 -0
  512. package/core/{variable_map.js → variable_map.ts} +131 -149
  513. package/core/variable_model.d.ts +40 -0
  514. package/core/variable_model.ts +82 -0
  515. package/core/variables.d.ts +181 -0
  516. package/core/{variables.js → variables.ts} +206 -188
  517. package/core/variables_dynamic.d.ts +38 -0
  518. package/core/{variables_dynamic.js → variables_dynamic.ts} +47 -43
  519. package/core/warning.d.ts +50 -0
  520. package/core/{warning.js → warning.ts} +52 -66
  521. package/core/widgetdiv.d.ts +69 -0
  522. package/core/widgetdiv.ts +257 -0
  523. package/core/workspace.d.ts +386 -0
  524. package/core/workspace.ts +801 -0
  525. package/core/workspace_audio.d.ts +47 -0
  526. package/core/{workspace_audio.js → workspace_audio.ts} +47 -60
  527. package/core/workspace_comment.d.ts +170 -0
  528. package/core/workspace_comment.ts +398 -0
  529. package/core/workspace_comment_svg.d.ts +329 -0
  530. package/core/{workspace_comment_svg.js → workspace_comment_svg.ts} +347 -444
  531. package/core/workspace_drag_surface_svg.d.ts +68 -0
  532. package/core/{workspace_drag_surface_svg.js → workspace_drag_surface_svg.ts} +75 -82
  533. package/core/workspace_dragger.d.ts +48 -0
  534. package/core/workspace_dragger.ts +104 -0
  535. package/core/workspace_svg.d.ts +920 -0
  536. package/core/{workspace_svg.js → workspace_svg.ts} +855 -935
  537. package/core/xml.d.ts +117 -0
  538. package/core/{xml.js → xml.ts} +306 -326
  539. package/core/zoom_controls.d.ts +130 -0
  540. package/core/{zoom_controls.js → zoom_controls.ts} +185 -251
  541. package/core.d.ts +1 -3
  542. package/core.js +1 -2
  543. package/dart.d.ts +0 -3
  544. package/dart_compressed.js +387 -99
  545. package/dart_compressed.js.map +1 -1
  546. package/generators/dart/all.js +2 -0
  547. package/generators/dart/colour.js +1 -1
  548. package/generators/dart/lists.js +1 -1
  549. package/generators/dart/logic.js +1 -1
  550. package/generators/dart/loops.js +1 -1
  551. package/generators/dart/math.js +1 -1
  552. package/generators/dart/procedures.js +1 -1
  553. package/generators/dart/text.js +1 -1
  554. package/generators/dart/variables.js +1 -1
  555. package/generators/dart/variables_dynamic.js +1 -1
  556. package/generators/dart.js +1 -2
  557. package/generators/javascript/all.js +2 -0
  558. package/generators/javascript/colour.js +1 -1
  559. package/generators/javascript/lists.js +1 -1
  560. package/generators/javascript/logic.js +1 -1
  561. package/generators/javascript/loops.js +1 -1
  562. package/generators/javascript/math.js +4 -4
  563. package/generators/javascript/procedures.js +1 -1
  564. package/generators/javascript/text.js +2 -2
  565. package/generators/javascript/variables.js +1 -1
  566. package/generators/javascript/variables_dynamic.js +1 -1
  567. package/generators/javascript.js +1 -3
  568. package/generators/lua/all.js +2 -0
  569. package/generators/lua/colour.js +1 -1
  570. package/generators/lua/lists.js +1 -1
  571. package/generators/lua/logic.js +1 -1
  572. package/generators/lua/loops.js +1 -1
  573. package/generators/lua/math.js +1 -1
  574. package/generators/lua/procedures.js +1 -1
  575. package/generators/lua/text.js +1 -1
  576. package/generators/lua/variables.js +1 -1
  577. package/generators/lua/variables_dynamic.js +1 -1
  578. package/generators/lua.js +1 -2
  579. package/generators/php/all.js +2 -0
  580. package/generators/php/colour.js +1 -1
  581. package/generators/php/lists.js +1 -2
  582. package/generators/php/logic.js +1 -1
  583. package/generators/php/loops.js +1 -1
  584. package/generators/php/math.js +1 -1
  585. package/generators/php/procedures.js +1 -1
  586. package/generators/php/text.js +1 -1
  587. package/generators/php/variables.js +1 -1
  588. package/generators/php/variables_dynamic.js +1 -1
  589. package/generators/php.js +1 -2
  590. package/generators/python/all.js +2 -0
  591. package/generators/python/colour.js +3 -3
  592. package/generators/python/lists.js +1 -1
  593. package/generators/python/logic.js +1 -1
  594. package/generators/python/loops.js +4 -7
  595. package/generators/python/math.js +1 -1
  596. package/generators/python/procedures.js +1 -1
  597. package/generators/python/text.js +1 -1
  598. package/generators/python/variables.js +1 -1
  599. package/generators/python/variables_dynamic.js +1 -1
  600. package/generators/python.js +1 -2
  601. package/index.d.ts +2 -8
  602. package/javascript.d.ts +0 -3
  603. package/javascript_compressed.js +314 -104
  604. package/javascript_compressed.js.map +1 -1
  605. package/lua.d.ts +0 -3
  606. package/lua_compressed.js +399 -81
  607. package/lua_compressed.js.map +1 -1
  608. package/msg/ab.js +421 -421
  609. package/msg/ace.js +421 -421
  610. package/msg/af.js +421 -421
  611. package/msg/am.js +421 -421
  612. package/msg/ar.js +421 -421
  613. package/msg/ast.js +421 -421
  614. package/msg/az.js +421 -421
  615. package/msg/ba.js +421 -421
  616. package/msg/bcc.js +421 -421
  617. package/msg/be-tarask.js +421 -421
  618. package/msg/be.js +421 -421
  619. package/msg/bg.js +421 -421
  620. package/msg/bn.js +421 -421
  621. package/msg/br.js +421 -421
  622. package/msg/bs.js +421 -421
  623. package/msg/ca.js +421 -421
  624. package/msg/cdo.js +421 -421
  625. package/msg/cs.js +421 -421
  626. package/msg/da.js +421 -421
  627. package/msg/de.js +421 -421
  628. package/msg/diq.js +421 -421
  629. package/msg/dty.js +421 -421
  630. package/msg/ee.js +421 -421
  631. package/msg/el.js +421 -421
  632. package/msg/en-gb.js +421 -421
  633. package/msg/en.js +421 -421
  634. package/msg/eo.js +421 -421
  635. package/msg/es.js +421 -421
  636. package/msg/et.js +421 -421
  637. package/msg/eu.js +421 -421
  638. package/msg/fa.js +421 -421
  639. package/msg/fi.js +421 -421
  640. package/msg/fo.js +421 -421
  641. package/msg/fr.js +421 -421
  642. package/msg/frr.js +421 -421
  643. package/msg/gl.js +421 -421
  644. package/msg/gn.js +421 -421
  645. package/msg/gor.js +421 -421
  646. package/msg/ha.js +421 -421
  647. package/msg/hak.js +421 -421
  648. package/msg/he.js +421 -421
  649. package/msg/hi.js +421 -421
  650. package/msg/hr.js +421 -421
  651. package/msg/hrx.js +421 -421
  652. package/msg/hu.js +421 -421
  653. package/msg/hy.js +421 -421
  654. package/msg/ia.js +421 -421
  655. package/msg/id.js +421 -421
  656. package/msg/ig.js +421 -421
  657. package/msg/inh.js +421 -421
  658. package/msg/is.js +421 -421
  659. package/msg/it.js +421 -421
  660. package/msg/ja.js +421 -421
  661. package/msg/ka.js +421 -421
  662. package/msg/kab.js +421 -421
  663. package/msg/kbd-cyrl.js +421 -421
  664. package/msg/km.js +421 -421
  665. package/msg/kn.js +421 -421
  666. package/msg/ko.js +421 -421
  667. package/msg/ksh.js +421 -421
  668. package/msg/ku-latn.js +421 -421
  669. package/msg/ky.js +421 -421
  670. package/msg/la.js +421 -421
  671. package/msg/lb.js +421 -421
  672. package/msg/lki.js +421 -421
  673. package/msg/lo.js +421 -421
  674. package/msg/lrc.js +421 -421
  675. package/msg/lt.js +421 -421
  676. package/msg/lv.js +421 -421
  677. package/msg/mg.js +421 -421
  678. package/msg/mk.js +421 -421
  679. package/msg/ml.js +421 -421
  680. package/msg/mnw.js +421 -421
  681. package/msg/ms.js +421 -421
  682. package/msg/my.js +421 -421
  683. package/msg/mzn.js +421 -421
  684. package/msg/nb.js +421 -421
  685. package/msg/ne.js +421 -421
  686. package/msg/nl.js +421 -421
  687. package/msg/oc.js +421 -421
  688. package/msg/olo.js +421 -421
  689. package/msg/pa.js +421 -421
  690. package/msg/pl.js +421 -421
  691. package/msg/pms.js +421 -421
  692. package/msg/ps.js +421 -421
  693. package/msg/pt-br.js +421 -421
  694. package/msg/pt.js +421 -421
  695. package/msg/ro.js +421 -421
  696. package/msg/ru.js +421 -421
  697. package/msg/sc.js +421 -421
  698. package/msg/sco.js +421 -421
  699. package/msg/sd.js +421 -421
  700. package/msg/shn.js +421 -421
  701. package/msg/si.js +421 -421
  702. package/msg/sk.js +421 -421
  703. package/msg/skr-arab.js +421 -421
  704. package/msg/sl.js +421 -421
  705. package/msg/smn.js +421 -421
  706. package/msg/sq.js +421 -421
  707. package/msg/sr-latn.js +421 -421
  708. package/msg/sr.js +421 -421
  709. package/msg/sv.js +421 -421
  710. package/msg/sw.js +421 -421
  711. package/msg/ta.js +421 -421
  712. package/msg/tcy.js +421 -421
  713. package/msg/te.js +421 -421
  714. package/msg/th.js +421 -421
  715. package/msg/ti.js +421 -421
  716. package/msg/tl.js +421 -421
  717. package/msg/tlh.js +421 -421
  718. package/msg/tr.js +421 -421
  719. package/msg/ug-arab.js +421 -421
  720. package/msg/uk.js +421 -421
  721. package/msg/ur.js +421 -421
  722. package/msg/uz.js +421 -421
  723. package/msg/vi.js +421 -421
  724. package/msg/xmf.js +421 -421
  725. package/msg/yo.js +421 -421
  726. package/msg/yue.js +421 -421
  727. package/msg/zgh.js +421 -421
  728. package/msg/zh-hans.js +421 -421
  729. package/msg/zh-hant.js +421 -421
  730. package/package.json +5 -5
  731. package/php.d.ts +0 -3
  732. package/php_compressed.js +322 -93
  733. package/php_compressed.js.map +1 -1
  734. package/python.d.ts +0 -3
  735. package/python_compressed.js +237 -90
  736. package/python_compressed.js.map +1 -1
  737. package/blockly.d.ts +0 -26127
  738. package/core/blockly_options.js +0 -28
  739. package/core/bubble_dragger.js +0 -298
  740. package/core/clipboard.js +0 -80
  741. package/core/component_manager.js +0 -263
  742. package/core/contextmenu_items.js +0 -651
  743. package/core/contextmenu_registry.js +0 -178
  744. package/core/delete_area.js +0 -87
  745. package/core/dialog.js +0 -107
  746. package/core/drag_target.js +0 -98
  747. package/core/events/events.js +0 -147
  748. package/core/events/events_abstract.js +0 -133
  749. package/core/events/events_block_base.js +0 -70
  750. package/core/events/events_block_drag.js +0 -89
  751. package/core/events/events_bubble_open.js +0 -90
  752. package/core/events/events_comment_base.js +0 -121
  753. package/core/events/events_marker_move.js +0 -110
  754. package/core/events/events_selected.js +0 -83
  755. package/core/events/events_toolbox_item_select.js +0 -84
  756. package/core/events/events_trashcan_open.js +0 -73
  757. package/core/events/events_var_base.js +0 -70
  758. package/core/events/events_viewport.js +0 -107
  759. package/core/events/workspace_events.js +0 -93
  760. package/core/field_angle.js +0 -591
  761. package/core/field_checkbox.js +0 -255
  762. package/core/field_colour.js +0 -717
  763. package/core/field_image.js +0 -304
  764. package/core/field_label.js +0 -149
  765. package/core/field_label_serializable.js +0 -80
  766. package/core/field_textinput.js +0 -619
  767. package/core/flyout_button.js +0 -356
  768. package/core/grid.js +0 -226
  769. package/core/icon.js +0 -225
  770. package/core/input.js +0 -335
  771. package/core/interfaces/i_ast_node_location_svg.js +0 -45
  772. package/core/interfaces/i_ast_node_location_with_block.js +0 -41
  773. package/core/interfaces/i_autohideable.js +0 -40
  774. package/core/interfaces/i_block_dragger.js +0 -66
  775. package/core/interfaces/i_bounded_element.js +0 -45
  776. package/core/interfaces/i_bubble.js +0 -95
  777. package/core/interfaces/i_collapsible_toolbox_item.js +0 -53
  778. package/core/interfaces/i_connection_checker.js +0 -104
  779. package/core/interfaces/i_contextmenu.js +0 -32
  780. package/core/interfaces/i_copyable.js +0 -49
  781. package/core/interfaces/i_delete_area.js +0 -50
  782. package/core/interfaces/i_drag_target.js +0 -88
  783. package/core/interfaces/i_flyout.js +0 -201
  784. package/core/interfaces/i_keyboard_accessible.js +0 -38
  785. package/core/interfaces/i_metrics_manager.js +0 -154
  786. package/core/interfaces/i_positionable.js +0 -51
  787. package/core/interfaces/i_selectable.js +0 -51
  788. package/core/interfaces/i_selectable_toolbox_item.js +0 -73
  789. package/core/interfaces/i_serializer.js +0 -77
  790. package/core/interfaces/i_styleable.js +0 -39
  791. package/core/interfaces/i_toolbox.js +0 -142
  792. package/core/interfaces/i_toolbox_item.js +0 -85
  793. package/core/marker_manager.js +0 -213
  794. package/core/menuitem.js +0 -292
  795. package/core/names.js +0 -293
  796. package/core/registry.js +0 -384
  797. package/core/renderers/common/block_rendering.js +0 -170
  798. package/core/renderers/common/constants.js +0 -1250
  799. package/core/renderers/common/i_path_object.js +0 -162
  800. package/core/renderers/common/marker_svg.js +0 -721
  801. package/core/renderers/common/path_object.js +0 -283
  802. package/core/renderers/common/renderer.js +0 -305
  803. package/core/renderers/geras/constants.js +0 -73
  804. package/core/renderers/geras/geras.js +0 -36
  805. package/core/renderers/geras/measurables/inline_input.js +0 -58
  806. package/core/renderers/geras/measurables/statement_input.js +0 -57
  807. package/core/renderers/geras/renderer.js +0 -149
  808. package/core/renderers/measurables/base.js +0 -64
  809. package/core/renderers/measurables/bottom_row.js +0 -138
  810. package/core/renderers/measurables/connection.js +0 -56
  811. package/core/renderers/measurables/external_value_input.js +0 -70
  812. package/core/renderers/measurables/field.js +0 -71
  813. package/core/renderers/measurables/in_row_spacer.js +0 -47
  814. package/core/renderers/measurables/input_connection.js +0 -75
  815. package/core/renderers/measurables/next_connection.js +0 -50
  816. package/core/renderers/measurables/output_connection.js +0 -61
  817. package/core/renderers/measurables/previous_connection.js +0 -50
  818. package/core/renderers/measurables/round_corner.js +0 -52
  819. package/core/renderers/measurables/row.js +0 -247
  820. package/core/renderers/measurables/spacer_row.js +0 -69
  821. package/core/renderers/measurables/square_corner.js +0 -50
  822. package/core/renderers/measurables/top_row.js +0 -143
  823. package/core/renderers/measurables/types.js +0 -353
  824. package/core/renderers/minimalist/drawer.js +0 -42
  825. package/core/renderers/minimalist/info.js +0 -54
  826. package/core/renderers/minimalist/minimalist.js +0 -26
  827. package/core/renderers/minimalist/renderer.js +0 -80
  828. package/core/renderers/thrasos/renderer.js +0 -53
  829. package/core/renderers/thrasos/thrasos.js +0 -22
  830. package/core/renderers/zelos/marker_svg.js +0 -179
  831. package/core/renderers/zelos/measurables/bottom_row.js +0 -66
  832. package/core/renderers/zelos/measurables/row_elements.js +0 -46
  833. package/core/renderers/zelos/path_object.js +0 -247
  834. package/core/renderers/zelos/renderer.js +0 -147
  835. package/core/renderers/zelos/zelos.js +0 -38
  836. package/core/serialization/exceptions.js +0 -144
  837. package/core/shortcut_registry.js +0 -366
  838. package/core/theme/themes.js +0 -23
  839. package/core/theme.js +0 -228
  840. package/core/theme_manager.js +0 -211
  841. package/core/toolbox/category.js +0 -751
  842. package/core/toolbox/collapsible_category.js +0 -311
  843. package/core/toolbox/separator.js +0 -133
  844. package/core/toolbox/toolbox_item.js +0 -173
  845. package/core/touch.js +0 -285
  846. package/core/utils/coordinate.js +0 -138
  847. package/core/utils/global.js +0 -41
  848. package/core/utils/keycodes.js +0 -172
  849. package/core/utils/metrics.js +0 -154
  850. package/core/utils/svg.js +0 -186
  851. package/core/utils/toolbox.js +0 -459
  852. package/core/utils/useragent.js +0 -197
  853. package/core/utils.js +0 -383
  854. package/core/variable_model.js +0 -96
  855. package/core/widgetdiv.js +0 -290
  856. package/core/workspace.js +0 -836
  857. package/core/workspace_comment.js +0 -400
  858. package/core/workspace_dragger.js +0 -115
@@ -7,217 +7,161 @@
7
7
  /**
8
8
  * @fileoverview Object representing a trash can icon.
9
9
  */
10
- 'use strict';
11
10
 
12
11
  /**
13
12
  * Object representing a trash can icon.
14
13
  * @class
15
14
  */
16
- goog.module('Blockly.Trashcan');
15
+ import * as goog from '../closure/goog/goog.js';
16
+ goog.declareModuleId('Blockly.Trashcan');
17
17
 
18
18
  /* eslint-disable-next-line no-unused-vars */
19
- const blocks = goog.requireType('Blockly.serialization.blocks');
20
- const browserEvents = goog.require('Blockly.browserEvents');
21
- const dom = goog.require('Blockly.utils.dom');
22
- const eventUtils = goog.require('Blockly.Events.utils');
23
- const registry = goog.require('Blockly.registry');
24
- const toolbox = goog.require('Blockly.utils.toolbox');
25
- const uiPosition = goog.require('Blockly.uiPosition');
26
- /* eslint-disable-next-line no-unused-vars */
27
- const {Abstract} = goog.requireType('Blockly.Events.Abstract');
28
- /* eslint-disable-next-line no-unused-vars */
29
- const {BlockDelete} = goog.requireType('Blockly.Events.BlockDelete');
30
- /* eslint-disable-next-line no-unused-vars */
31
- const {BlocklyOptions} = goog.requireType('Blockly.BlocklyOptions');
32
- const {ComponentManager} = goog.require('Blockly.ComponentManager');
33
- const {DeleteArea} = goog.require('Blockly.DeleteArea');
34
- /* eslint-disable-next-line no-unused-vars */
35
- const {IAutoHideable} = goog.require('Blockly.IAutoHideable');
36
- /* eslint-disable-next-line no-unused-vars */
37
- const {IDraggable} = goog.requireType('Blockly.IDraggable');
38
- /* eslint-disable-next-line no-unused-vars */
39
- const {IFlyout} = goog.requireType('Blockly.IFlyout');
40
- /* eslint-disable-next-line no-unused-vars */
41
- const {IPositionable} = goog.require('Blockly.IPositionable');
42
- /* eslint-disable-next-line no-unused-vars */
43
- const {MetricsManager} = goog.requireType('Blockly.MetricsManager');
44
- const {Options} = goog.require('Blockly.Options');
45
- const {Rect} = goog.require('Blockly.utils.Rect');
46
- const {Size} = goog.require('Blockly.utils.Size');
47
- const {SPRITE} = goog.require('Blockly.sprite');
48
- const {Svg} = goog.require('Blockly.utils.Svg');
49
- /* eslint-disable-next-line no-unused-vars */
50
- const {WorkspaceSvg} = goog.requireType('Blockly.WorkspaceSvg');
51
- /** @suppress {extraRequire} */
52
- goog.require('Blockly.Events.TrashcanOpen');
19
+ // Unused import preserved for side-effects. Remove if unneeded.
20
+ // import './metrics_manager.js';
21
+ // Unused import preserved for side-effects. Remove if unneeded.
22
+ import './events/events_trashcan_open.js';
23
+
24
+ import type {BlocklyOptions} from './blockly_options.js';
25
+ import * as browserEvents from './browser_events.js';
26
+ import {ComponentManager} from './component_manager.js';
27
+ import {DeleteArea} from './delete_area.js';
28
+ import type {Abstract} from './events/events_abstract.js';
29
+ import type {BlockDelete} from './events/events_block_delete.js';
30
+ import * as eventUtils from './events/utils.js';
31
+ import type {IAutoHideable} from './interfaces/i_autohideable.js';
32
+ import type {IDraggable} from './interfaces/i_draggable.js';
33
+ import type {IFlyout} from './interfaces/i_flyout.js';
34
+ import type {IPositionable} from './interfaces/i_positionable.js';
35
+ import type {UiMetrics} from './metrics_manager.js';
36
+ import {Options} from './options.js';
37
+ import * as uiPosition from './positionable_helpers.js';
38
+ import * as registry from './registry.js';
39
+ import type * as blocks from './serialization/blocks.js';
40
+ import {SPRITE} from './sprites.js';
41
+ import * as dom from './utils/dom.js';
42
+ import {Rect} from './utils/rect.js';
43
+ import {Size} from './utils/size.js';
44
+ import {Svg} from './utils/svg.js';
45
+ import {BlockInfo} from './utils/toolbox.js';
46
+ import * as toolbox from './utils/toolbox.js';
47
+ import type {WorkspaceSvg} from './workspace_svg.js';
53
48
 
54
49
 
55
50
  /**
56
51
  * Class for a trash can.
57
- * @implements {IAutoHideable}
58
- * @implements {IPositionable}
59
- * @extends {DeleteArea}
60
52
  * @alias Blockly.Trashcan
61
53
  */
62
- class Trashcan extends DeleteArea {
54
+ export class Trashcan extends DeleteArea implements IAutoHideable,
55
+ IPositionable {
63
56
  /**
64
- * @param {!WorkspaceSvg} workspace The workspace to sit in.
57
+ * The unique id for this component that is used to register with the
58
+ * ComponentManager.
65
59
  */
66
- constructor(workspace) {
67
- super();
68
- /**
69
- * The workspace the trashcan sits in.
70
- * @type {!WorkspaceSvg}
71
- * @private
72
- */
73
- this.workspace_ = workspace;
60
+ override id = 'trashcan';
74
61
 
75
- /**
76
- * The unique id for this component that is used to register with the
77
- * ComponentManager.
78
- * @type {string}
79
- */
80
- this.id = 'trashcan';
62
+ /**
63
+ * A list of JSON (stored as strings) representing blocks in the trashcan.
64
+ */
65
+ private readonly contents_: string[] = [];
81
66
 
82
- /**
83
- * A list of JSON (stored as strings) representing blocks in the trashcan.
84
- * @type {!Array<string>}
85
- * @private
86
- */
87
- this.contents_ = [];
67
+ /**
68
+ * The trashcan flyout.
69
+ * @internal
70
+ */
71
+ flyout: IFlyout|null = null;
88
72
 
89
- /**
90
- * The trashcan flyout.
91
- * @type {IFlyout}
92
- * @package
93
- */
94
- this.flyout = null;
73
+ /** Current open/close state of the lid. */
74
+ isLidOpen = false;
95
75
 
96
- if (this.workspace_.options.maxTrashcanContents <= 0) {
97
- return;
98
- }
76
+ /**
77
+ * The minimum openness of the lid. Used to indicate if the trashcan
78
+ * contains blocks.
79
+ */
80
+ private minOpenness_ = 0;
99
81
 
100
- /**
101
- * Current open/close state of the lid.
102
- * @type {boolean}
103
- */
104
- this.isLidOpen = false;
82
+ /** The SVG group containing the trash can. */
83
+ private svgGroup_: SVGElement|null = null;
105
84
 
106
- /**
107
- * The minimum openness of the lid. Used to indicate if the trashcan
108
- * contains blocks.
109
- * @type {number}
110
- * @private
111
- */
112
- this.minOpenness_ = 0;
85
+ /** The SVG image element of the trash can lid. */
86
+ private svgLid_: SVGElement|null = null;
113
87
 
114
- /**
115
- * The SVG group containing the trash can.
116
- * @type {SVGElement}
117
- * @private
118
- */
119
- this.svgGroup_ = null;
88
+ /** Task ID of opening/closing animation. */
89
+ private lidTask_: ReturnType<typeof setTimeout>|null = null;
120
90
 
121
- /**
122
- * The SVG image element of the trash can lid.
123
- * @type {SVGElement}
124
- * @private
125
- */
126
- this.svgLid_ = null;
91
+ /** Current state of lid opening (0.0 = closed, 1.0 = open). */
92
+ private lidOpen_ = 0;
127
93
 
128
- /**
129
- * Task ID of opening/closing animation.
130
- * @type {number}
131
- * @private
132
- */
133
- this.lidTask_ = 0;
94
+ /** Left coordinate of the trash can. */
95
+ private left_ = 0;
134
96
 
135
- /**
136
- * Current state of lid opening (0.0 = closed, 1.0 = open).
137
- * @type {number}
138
- * @private
139
- */
140
- this.lidOpen_ = 0;
97
+ /** Top coordinate of the trash can. */
98
+ private top_ = 0;
141
99
 
142
- /**
143
- * Left coordinate of the trash can.
144
- * @type {number}
145
- * @private
146
- */
147
- this.left_ = 0;
100
+ /** Whether this trash can has been initialized. */
101
+ private initialized_ = false;
148
102
 
149
- /**
150
- * Top coordinate of the trash can.
151
- * @type {number}
152
- * @private
153
- */
154
- this.top_ = 0;
103
+ /** @param workspace The workspace to sit in. */
104
+ constructor(private workspace: WorkspaceSvg) {
105
+ super();
155
106
 
156
- /**
157
- * Whether this trash can has been initialized.
158
- * @type {boolean}
159
- * @private
160
- */
161
- this.initialized_ = false;
107
+ if (this.workspace.options.maxTrashcanContents <= 0) {
108
+ return;
109
+ }
162
110
 
163
111
  // Create flyout options.
164
- const flyoutWorkspaceOptions = new Options(
165
- /** @type {!BlocklyOptions} */
166
- ({
167
- 'scrollbars': true,
168
- 'parentWorkspace': this.workspace_,
169
- 'rtl': this.workspace_.RTL,
170
- 'oneBasedIndex': this.workspace_.options.oneBasedIndex,
171
- 'renderer': this.workspace_.options.renderer,
172
- 'rendererOverrides': this.workspace_.options.rendererOverrides,
173
- 'move': {
174
- 'scrollbars': true,
175
- },
176
- }));
112
+ const flyoutWorkspaceOptions = new Options(({
113
+ 'scrollbars': true,
114
+ 'parentWorkspace': this.workspace,
115
+ 'rtl': this.workspace.RTL,
116
+ 'oneBasedIndex': this.workspace.options.oneBasedIndex,
117
+ 'renderer': this.workspace.options.renderer,
118
+ 'rendererOverrides': this.workspace.options.rendererOverrides,
119
+ 'move': {
120
+ 'scrollbars': true,
121
+ },
122
+ } as BlocklyOptions));
177
123
  // Create vertical or horizontal flyout.
178
- if (this.workspace_.horizontalLayout) {
124
+ if (this.workspace.horizontalLayout) {
179
125
  flyoutWorkspaceOptions.toolboxPosition =
180
- this.workspace_.toolboxPosition === toolbox.Position.TOP ?
126
+ this.workspace.toolboxPosition === toolbox.Position.TOP ?
181
127
  toolbox.Position.BOTTOM :
182
128
  toolbox.Position.TOP;
183
129
  const HorizontalFlyout = registry.getClassFromOptions(
184
- registry.Type.FLYOUTS_HORIZONTAL_TOOLBOX, this.workspace_.options,
130
+ registry.Type.FLYOUTS_HORIZONTAL_TOOLBOX, this.workspace.options,
185
131
  true);
186
- this.flyout = new HorizontalFlyout(flyoutWorkspaceOptions);
132
+ this.flyout = new HorizontalFlyout!(flyoutWorkspaceOptions);
187
133
  } else {
188
134
  flyoutWorkspaceOptions.toolboxPosition =
189
- this.workspace_.toolboxPosition === toolbox.Position.RIGHT ?
135
+ this.workspace.toolboxPosition === toolbox.Position.RIGHT ?
190
136
  toolbox.Position.LEFT :
191
137
  toolbox.Position.RIGHT;
192
138
  const VerticalFlyout = registry.getClassFromOptions(
193
- registry.Type.FLYOUTS_VERTICAL_TOOLBOX, this.workspace_.options,
194
- true);
195
- this.flyout = new VerticalFlyout(flyoutWorkspaceOptions);
139
+ registry.Type.FLYOUTS_VERTICAL_TOOLBOX, this.workspace.options, true);
140
+ this.flyout = new VerticalFlyout!(flyoutWorkspaceOptions);
196
141
  }
197
- this.workspace_.addChangeListener(this.onDelete_.bind(this));
142
+ this.workspace.addChangeListener(this.onDelete_.bind(this));
198
143
  }
199
144
 
200
145
  /**
201
146
  * Create the trash can elements.
202
- * @return {!SVGElement} The trash can's SVG group.
147
+ * @return The trash can's SVG group.
203
148
  */
204
- createDom() {
149
+ createDom(): SVGElement {
205
150
  /* Here's the markup that will be generated:
206
- <g class="blocklyTrash">
207
- <clippath id="blocklyTrashBodyClipPath837493">
208
- <rect width="47" height="45" y="15"></rect>
209
- </clippath>
210
- <image width="64" height="92" y="-32" xlink:href="media/sprites.png"
211
- clip-path="url(#blocklyTrashBodyClipPath837493)"></image>
212
- <clippath id="blocklyTrashLidClipPath837493">
213
- <rect width="47" height="15"></rect>
214
- </clippath>
215
- <image width="84" height="92" y="-32" xlink:href="media/sprites.png"
216
- clip-path="url(#blocklyTrashLidClipPath837493)"></image>
217
- </g>
218
- */
219
- this.svgGroup_ =
220
- dom.createSvgElement(Svg.G, {'class': 'blocklyTrash'}, null);
151
+ <g class="blocklyTrash">
152
+ <clippath id="blocklyTrashBodyClipPath837493">
153
+ <rect width="47" height="45" y="15"></rect>
154
+ </clippath>
155
+ <image width="64" height="92" y="-32" xlink:href="media/sprites.png"
156
+ clip-path="url(#blocklyTrashBodyClipPath837493)"></image>
157
+ <clippath id="blocklyTrashLidClipPath837493">
158
+ <rect width="47" height="15"></rect>
159
+ </clippath>
160
+ <image width="84" height="92" y="-32" xlink:href="media/sprites.png"
161
+ clip-path="url(#blocklyTrashLidClipPath837493)"></image>
162
+ </g>
163
+ */
164
+ this.svgGroup_ = dom.createSvgElement(Svg.G, {'class': 'blocklyTrash'});
221
165
  let clip;
222
166
  const rnd = String(Math.random()).substring(2);
223
167
  clip = dom.createSvgElement(
@@ -236,7 +180,7 @@ class Trashcan extends DeleteArea {
236
180
  this.svgGroup_);
237
181
  body.setAttributeNS(
238
182
  dom.XLINK_NS, 'xlink:href',
239
- this.workspace_.options.pathToMedia + SPRITE.url);
183
+ this.workspace.options.pathToMedia + SPRITE.url);
240
184
 
241
185
  clip = dom.createSvgElement(
242
186
  Svg.CLIPPATH, {'id': 'blocklyTrashLidClipPath' + rnd}, this.svgGroup_);
@@ -253,7 +197,7 @@ class Trashcan extends DeleteArea {
253
197
  this.svgGroup_);
254
198
  this.svgLid_.setAttributeNS(
255
199
  dom.XLINK_NS, 'xlink:href',
256
- this.workspace_.options.pathToMedia + SPRITE.url);
200
+ this.workspace.options.pathToMedia + SPRITE.url);
257
201
 
258
202
  // bindEventWithChecks_ quashes events too aggressively. See:
259
203
  // https://groups.google.com/forum/#!topic/blockly/QF4yB9Wx00s
@@ -269,16 +213,14 @@ class Trashcan extends DeleteArea {
269
213
  return this.svgGroup_;
270
214
  }
271
215
 
272
- /**
273
- * Initializes the trash can.
274
- */
216
+ /** Initializes the trash can. */
275
217
  init() {
276
- if (this.workspace_.options.maxTrashcanContents > 0) {
218
+ if (this.workspace.options.maxTrashcanContents > 0) {
277
219
  dom.insertAfter(
278
- this.flyout.createDom(Svg.SVG), this.workspace_.getParentSvg());
279
- this.flyout.init(this.workspace_);
220
+ this.flyout?.createDom(Svg.SVG)!, this.workspace.getParentSvg());
221
+ this.flyout?.init(this.workspace);
280
222
  }
281
- this.workspace_.getComponentManager().addComponent({
223
+ this.workspace.getComponentManager().addComponent({
282
224
  component: this,
283
225
  weight: 1,
284
226
  capabilities: [
@@ -298,36 +240,34 @@ class Trashcan extends DeleteArea {
298
240
  * @suppress {checkTypes}
299
241
  */
300
242
  dispose() {
301
- this.workspace_.getComponentManager().removeComponent('trashcan');
243
+ this.workspace.getComponentManager().removeComponent('trashcan');
302
244
  if (this.svgGroup_) {
303
245
  dom.removeNode(this.svgGroup_);
304
246
  this.svgGroup_ = null;
305
247
  }
306
248
  this.svgLid_ = null;
307
- this.workspace_ = null;
308
- clearTimeout(this.lidTask_);
249
+ if (this.lidTask_) {
250
+ clearTimeout(this.lidTask_);
251
+ }
309
252
  }
310
253
 
311
254
  /**
312
255
  * Whether the trashcan has contents.
313
- * @return {boolean} True if the trashcan has contents.
314
- * @private
256
+ * @return True if the trashcan has contents.
315
257
  */
316
- hasContents_() {
258
+ private hasContents_(): boolean {
317
259
  return !!this.contents_.length;
318
260
  }
319
261
 
320
262
  /**
321
263
  * Returns true if the trashcan contents-flyout is currently open.
322
- * @return {boolean} True if the trashcan contents-flyout is currently open.
264
+ * @return True if the trashcan contents-flyout is currently open.
323
265
  */
324
- contentsIsOpen() {
266
+ contentsIsOpen(): boolean {
325
267
  return !!this.flyout && this.flyout.isVisible();
326
268
  }
327
269
 
328
- /**
329
- * Opens the trashcan flyout.
330
- */
270
+ /** Opens the trashcan flyout. */
331
271
  openFlyout() {
332
272
  if (this.contentsIsOpen()) {
333
273
  return;
@@ -335,28 +275,26 @@ class Trashcan extends DeleteArea {
335
275
  const contents = this.contents_.map(function(string) {
336
276
  return JSON.parse(string);
337
277
  });
338
- this.flyout.show(contents);
278
+ this.flyout?.show(contents);
339
279
  this.fireUiEvent_(true);
340
280
  }
341
281
 
342
- /**
343
- * Closes the trashcan flyout.
344
- */
282
+ /** Closes the trashcan flyout. */
345
283
  closeFlyout() {
346
284
  if (!this.contentsIsOpen()) {
347
285
  return;
348
286
  }
349
- this.flyout.hide();
287
+ this.flyout?.hide();
350
288
  this.fireUiEvent_(false);
351
- this.workspace_.recordDragTargets();
289
+ this.workspace.recordDragTargets();
352
290
  }
353
291
 
354
292
  /**
355
293
  * Hides the component. Called in WorkspaceSvg.hideChaff.
356
- * @param {boolean} onlyClosePopups Whether only popups should be closed.
294
+ * @param onlyClosePopups Whether only popups should be closed.
357
295
  * Flyouts should not be closed if this is true.
358
296
  */
359
- autoHide(onlyClosePopups) {
297
+ autoHide(onlyClosePopups: boolean) {
360
298
  // For now the trashcan flyout always autocloses because it overlays the
361
299
  // trashcan UI (no trashcan to click to close it).
362
300
  if (!onlyClosePopups && this.flyout) {
@@ -381,23 +319,22 @@ class Trashcan extends DeleteArea {
381
319
  * Positions the trashcan.
382
320
  * It is positioned in the opposite corner to the corner the
383
321
  * categories/toolbox starts at.
384
- * @param {!MetricsManager.UiMetrics} metrics The workspace metrics.
385
- * @param {!Array<!Rect>} savedPositions List of rectangles that
386
- * are already on the workspace.
322
+ * @param metrics The workspace metrics.
323
+ * @param savedPositions List of rectangles that are already on the workspace.
387
324
  */
388
- position(metrics, savedPositions) {
325
+ position(metrics: UiMetrics, savedPositions: Rect[]) {
389
326
  // Not yet initialized.
390
327
  if (!this.initialized_) {
391
328
  return;
392
329
  }
393
330
 
394
331
  const cornerPosition =
395
- uiPosition.getCornerOppositeToolbox(this.workspace_, metrics);
332
+ uiPosition.getCornerOppositeToolbox(this.workspace, metrics);
396
333
 
397
334
  const height = BODY_HEIGHT + LID_HEIGHT;
398
335
  const startRect = uiPosition.getStartPositionRect(
399
336
  cornerPosition, new Size(WIDTH, height), MARGIN_HORIZONTAL,
400
- MARGIN_VERTICAL, metrics, this.workspace_);
337
+ MARGIN_VERTICAL, metrics, this.workspace);
401
338
 
402
339
  const verticalPosition = cornerPosition.vertical;
403
340
  const bumpDirection = verticalPosition === uiPosition.verticalPosition.TOP ?
@@ -408,17 +345,17 @@ class Trashcan extends DeleteArea {
408
345
 
409
346
  this.top_ = positionRect.top;
410
347
  this.left_ = positionRect.left;
411
- this.svgGroup_.setAttribute(
348
+ this.svgGroup_?.setAttribute(
412
349
  'transform', 'translate(' + this.left_ + ',' + this.top_ + ')');
413
350
  }
414
351
 
415
352
  /**
416
353
  * Returns the bounding rectangle of the UI element in pixel units relative to
417
354
  * the Blockly injection div.
418
- * @return {?Rect} The UI elements's bounding box. Null if
419
- * bounding box should be ignored by other UI elements.
355
+ * @return The UI elements's bounding box. Null if bounding box should be
356
+ * ignored by other UI elements.
420
357
  */
421
- getBoundingRectangle() {
358
+ getBoundingRectangle(): Rect|null {
422
359
  const bottom = this.top_ + BODY_HEIGHT + LID_HEIGHT;
423
360
  const right = this.left_ + WIDTH;
424
361
  return new Rect(this.top_, bottom, this.left_, right);
@@ -427,10 +364,10 @@ class Trashcan extends DeleteArea {
427
364
  /**
428
365
  * Returns the bounding rectangle of the drag target area in pixel units
429
366
  * relative to viewport.
430
- * @return {?Rect} The component's bounding box. Null if drag
431
- * target area should be ignored.
367
+ * @return The component's bounding box. Null if drag target area should be
368
+ * ignored.
432
369
  */
433
- getClientRect() {
370
+ override getClientRect(): Rect|null {
434
371
  if (!this.svgGroup_) {
435
372
  return null;
436
373
  }
@@ -446,54 +383,47 @@ class Trashcan extends DeleteArea {
446
383
  /**
447
384
  * Handles when a cursor with a block or bubble is dragged over this drag
448
385
  * target.
449
- * @param {!IDraggable} _dragElement The block or bubble currently being
450
- * dragged.
451
- * @override
386
+ * @param _dragElement The block or bubble currently being dragged.
452
387
  */
453
- onDragOver(_dragElement) {
388
+ override onDragOver(_dragElement: IDraggable) {
454
389
  this.setLidOpen(this.wouldDelete_);
455
390
  }
456
391
 
457
392
  /**
458
393
  * Handles when a cursor with a block or bubble exits this drag target.
459
- * @param {!IDraggable} _dragElement The block or bubble currently being
460
- * dragged.
461
- * @override
394
+ * @param _dragElement The block or bubble currently being dragged.
462
395
  */
463
- onDragExit(_dragElement) {
396
+ override onDragExit(_dragElement: IDraggable) {
464
397
  this.setLidOpen(false);
465
398
  }
466
399
 
467
400
  /**
468
401
  * Handles when a block or bubble is dropped on this component.
469
402
  * Should not handle delete here.
470
- * @param {!IDraggable} _dragElement The block or bubble currently being
471
- * dragged.
472
- * @override
403
+ * @param _dragElement The block or bubble currently being dragged.
473
404
  */
474
- onDrop(_dragElement) {
405
+ override onDrop(_dragElement: IDraggable) {
475
406
  setTimeout(this.setLidOpen.bind(this, false), 100);
476
407
  }
477
408
 
478
409
  /**
479
410
  * Flip the lid open or shut.
480
- * @param {boolean} state True if open.
481
- * @package
411
+ * @param state True if open.
412
+ * @internal
482
413
  */
483
- setLidOpen(state) {
414
+ setLidOpen(state: boolean) {
484
415
  if (this.isLidOpen === state) {
485
416
  return;
486
417
  }
487
- clearTimeout(this.lidTask_);
418
+ if (this.lidTask_) {
419
+ clearTimeout(this.lidTask_);
420
+ }
488
421
  this.isLidOpen = state;
489
422
  this.animateLid_();
490
423
  }
491
424
 
492
- /**
493
- * Rotate the lid open or closed by one step. Then wait and recurse.
494
- * @private
495
- */
496
- animateLid_() {
425
+ /** Rotate the lid open or closed by one step. Then wait and recurse. */
426
+ private animateLid_() {
497
427
  const frames = ANIMATION_FRAMES;
498
428
 
499
429
  const delta = 1 / (frames + 1);
@@ -504,7 +434,9 @@ class Trashcan extends DeleteArea {
504
434
 
505
435
  // Linear interpolation between min and max.
506
436
  const opacity = OPACITY_MIN + this.lidOpen_ * (OPACITY_MAX - OPACITY_MIN);
507
- this.svgGroup_.style.opacity = opacity;
437
+ if (this.svgGroup_) {
438
+ this.svgGroup_.style.opacity = opacity.toString();
439
+ }
508
440
 
509
441
  if (this.lidOpen_ > this.minOpenness_ && this.lidOpen_ < 1) {
510
442
  this.lidTask_ =
@@ -514,14 +446,13 @@ class Trashcan extends DeleteArea {
514
446
 
515
447
  /**
516
448
  * Set the angle of the trashcan's lid.
517
- * @param {number} lidAngle The angle at which to set the lid.
518
- * @private
449
+ * @param lidAngle The angle at which to set the lid.
519
450
  */
520
- setLidAngle_(lidAngle) {
451
+ private setLidAngle_(lidAngle: number) {
521
452
  const openAtRight =
522
- this.workspace_.toolboxPosition === toolbox.Position.RIGHT ||
523
- (this.workspace_.horizontalLayout && this.workspace_.RTL);
524
- this.svgLid_.setAttribute(
453
+ this.workspace.toolboxPosition === toolbox.Position.RIGHT ||
454
+ this.workspace.horizontalLayout && this.workspace.RTL;
455
+ this.svgLid_?.setAttribute(
525
456
  'transform',
526
457
  'rotate(' + (openAtRight ? -lidAngle : lidAngle) + ',' +
527
458
  (openAtRight ? 4 : WIDTH - 4) + ',' + (LID_HEIGHT - 2) + ')');
@@ -530,11 +461,10 @@ class Trashcan extends DeleteArea {
530
461
  /**
531
462
  * Sets the minimum openness of the trashcan lid. If the lid is currently
532
463
  * closed, this will update lid's position.
533
- * @param {number} newMin The new minimum openness of the lid. Should be
534
- * between 0 and 1.
535
- * @private
464
+ * @param newMin The new minimum openness of the lid. Should be between 0
465
+ * and 1.
536
466
  */
537
- setMinOpenness_(newMin) {
467
+ private setMinOpenness_(newMin: number) {
538
468
  this.minOpenness_ = newMin;
539
469
  if (!this.isLidOpen) {
540
470
  this.setLidAngle_(newMin * MAX_LID_ANGLE);
@@ -549,9 +479,7 @@ class Trashcan extends DeleteArea {
549
479
  this.setLidOpen(false);
550
480
  }
551
481
 
552
- /**
553
- * Inspect the contents of the trash.
554
- */
482
+ /** Inspect the contents of the trash. */
555
483
  click() {
556
484
  if (!this.hasContents_()) {
557
485
  return;
@@ -561,31 +489,29 @@ class Trashcan extends DeleteArea {
561
489
 
562
490
  /**
563
491
  * Fires a UI event for trashcan flyout open or close.
564
- * @param {boolean} trashcanOpen Whether the flyout is opening.
565
- * @private
492
+ * @param trashcanOpen Whether the flyout is opening.
566
493
  */
567
- fireUiEvent_(trashcanOpen) {
568
- const uiEvent = new (eventUtils.get(eventUtils.TRASHCAN_OPEN))(
569
- trashcanOpen, this.workspace_.id);
494
+ private fireUiEvent_(trashcanOpen: boolean) {
495
+ const uiEvent = new (eventUtils.get(eventUtils.TRASHCAN_OPEN))!
496
+ (trashcanOpen, this.workspace.id);
570
497
  eventUtils.fire(uiEvent);
571
498
  }
572
499
 
573
500
  /**
574
501
  * Prevents a workspace scroll and click event if the trashcan has blocks.
575
- * @param {!Event} e A mouse down event.
576
- * @private
502
+ * @param e A mouse down event.
577
503
  */
578
- blockMouseDownWhenOpenable_(e) {
504
+ private blockMouseDownWhenOpenable_(e: Event) {
579
505
  if (!this.contentsIsOpen() && this.hasContents_()) {
580
- e.stopPropagation(); // Don't start a workspace scroll.
506
+ // Don't start a workspace scroll.
507
+ e.stopPropagation();
581
508
  }
582
509
  }
583
510
 
584
511
  /**
585
512
  * Indicate that the trashcan can be clicked (by opening it) if it has blocks.
586
- * @private
587
513
  */
588
- mouseOver_() {
514
+ private mouseOver_() {
589
515
  if (this.hasContents_()) {
590
516
  this.setLidOpen(true);
591
517
  }
@@ -594,9 +520,8 @@ class Trashcan extends DeleteArea {
594
520
  /**
595
521
  * Close the lid of the trashcan if it was open (Vis. it was indicating it had
596
522
  * blocks).
597
- * @private
598
523
  */
599
- mouseOut_() {
524
+ private mouseOut_() {
600
525
  // No need to do a .hasBlocks check here because if it doesn't the trashcan
601
526
  // won't be open in the first place, and setOpen won't run.
602
527
  this.setLidOpen(false);
@@ -605,23 +530,23 @@ class Trashcan extends DeleteArea {
605
530
  /**
606
531
  * Handle a BLOCK_DELETE event. Adds deleted blocks oldXml to the content
607
532
  * array.
608
- * @param {!Abstract} event Workspace event.
609
- * @private
533
+ * @param event Workspace event.
610
534
  */
611
- onDelete_(event) {
612
- if (this.workspace_.options.maxTrashcanContents <= 0 ||
535
+ private onDelete_(event: Abstract) {
536
+ if (this.workspace.options.maxTrashcanContents <= 0 ||
613
537
  event.type !== eventUtils.BLOCK_DELETE) {
614
538
  return;
615
539
  }
616
- const deleteEvent = /** @type {!BlockDelete} */ (event);
540
+ const deleteEvent = event as BlockDelete;
617
541
  if (event.type === eventUtils.BLOCK_DELETE && !deleteEvent.wasShadow) {
618
- const cleanedJson = this.cleanBlockJson_(deleteEvent.oldJson);
542
+ const cleanedJson =
543
+ JSON.stringify(this.cleanBlockJson_(deleteEvent.oldJson));
619
544
  if (this.contents_.indexOf(cleanedJson) !== -1) {
620
545
  return;
621
546
  }
622
547
  this.contents_.unshift(cleanedJson);
623
548
  while (this.contents_.length >
624
- this.workspace_.options.maxTrashcanContents) {
549
+ this.workspace.options.maxTrashcanContents) {
625
550
  this.contents_.pop();
626
551
  }
627
552
 
@@ -632,21 +557,19 @@ class Trashcan extends DeleteArea {
632
557
  /**
633
558
  * Converts JSON representing a block into text that can be stored in the
634
559
  * content array.
635
- * @param {!blocks.State} json A JSON representation of
636
- * a block's state.
637
- * @return {string} Text representing the JSON, cleaned of all unnecessary
638
- * attributes.
639
- * @private
560
+ * @param json A JSON representation of a block's state.
561
+ * @return A BlockInfo object corresponding to the JSON, cleaned of all
562
+ * unnecessary attributes.
640
563
  */
641
- cleanBlockJson_(json) {
564
+ private cleanBlockJson_(json: blocks.State): BlockInfo {
642
565
  // Create a deep copy.
643
- json = /** @type {!blocks.State} */ (JSON.parse(JSON.stringify(json)));
566
+ json = JSON.parse(JSON.stringify(json)) as blocks.State;
644
567
 
645
568
  /**
646
569
  * Reshape JSON into a nicer format.
647
- * @param {!blocks.State} json The JSON to clean.
570
+ * @param json The JSON to clean.
648
571
  */
649
- function cleanRec(json) {
572
+ function cleanRec(json: blocks.State) {
650
573
  if (!json) {
651
574
  return;
652
575
  }
@@ -666,60 +589,61 @@ class Trashcan extends DeleteArea {
666
589
  const inputs = json['inputs'];
667
590
  for (const name in inputs) {
668
591
  const input = inputs[name];
669
- cleanRec(input['block']);
670
- cleanRec(input['shadow']);
592
+ const block = input['block'];
593
+ const shadow = input['shadow'];
594
+ if (block) {
595
+ cleanRec(block);
596
+ }
597
+ if (shadow) {
598
+ cleanRec(shadow);
599
+ }
671
600
  }
672
601
  if (json['next']) {
673
602
  const next = json['next'];
674
- cleanRec(next['block']);
675
- cleanRec(next['shadow']);
603
+ const block = next['block'];
604
+ const shadow = next['shadow'];
605
+ if (block) {
606
+ cleanRec(block);
607
+ }
608
+ if (shadow) {
609
+ cleanRec(shadow);
610
+ }
676
611
  }
677
612
  }
678
613
 
679
614
  cleanRec(json);
680
- json['kind'] = 'BLOCK';
681
- return JSON.stringify(json);
615
+
616
+ const blockInfo: BlockInfo = {
617
+ 'kind': 'BLOCK',
618
+ ...json,
619
+ };
620
+ return blockInfo;
682
621
  }
683
622
  }
684
623
 
685
- /**
686
- * Width of both the trash can and lid images.
687
- */
624
+
625
+ /** Width of both the trash can and lid images. */
688
626
  const WIDTH = 47;
689
627
 
690
- /**
691
- * Height of the trashcan image (minus lid).
692
- */
628
+ /** Height of the trashcan image (minus lid). */
693
629
  const BODY_HEIGHT = 44;
694
630
 
695
- /**
696
- * Height of the lid image.
697
- */
631
+ /** Height of the lid image. */
698
632
  const LID_HEIGHT = 16;
699
633
 
700
- /**
701
- * Distance between trashcan and bottom or top edge of workspace.
702
- */
634
+ /** Distance between trashcan and bottom or top edge of workspace. */
703
635
  const MARGIN_VERTICAL = 20;
704
636
 
705
- /**
706
- * Distance between trashcan and right or left edge of workspace.
707
- */
637
+ /** Distance between trashcan and right or left edge of workspace. */
708
638
  const MARGIN_HORIZONTAL = 20;
709
639
 
710
- /**
711
- * Extent of hotspot on all sides beyond the size of the image.
712
- */
640
+ /** Extent of hotspot on all sides beyond the size of the image. */
713
641
  const MARGIN_HOTSPOT = 10;
714
642
 
715
- /**
716
- * Location of trashcan in sprite image.
717
- */
643
+ /** Location of trashcan in sprite image. */
718
644
  const SPRITE_LEFT = 0;
719
645
 
720
- /**
721
- * Location of trashcan in sprite image.
722
- */
646
+ /** Location of trashcan in sprite image. */
723
647
  const SPRITE_TOP = 32;
724
648
 
725
649
  /**
@@ -728,24 +652,16 @@ const SPRITE_TOP = 32;
728
652
  */
729
653
  const HAS_BLOCKS_LID_ANGLE = 0.1;
730
654
 
731
- /**
732
- * The length of the lid open/close animation in milliseconds.
733
- */
655
+ /** The length of the lid open/close animation in milliseconds. */
734
656
  const ANIMATION_LENGTH = 80;
735
657
 
736
- /**
737
- * The number of frames in the animation.
738
- */
658
+ /** The number of frames in the animation. */
739
659
  const ANIMATION_FRAMES = 4;
740
660
 
741
- /**
742
- * The minimum (resting) opacity of the trashcan and lid.
743
- */
661
+ /** The minimum (resting) opacity of the trashcan and lid. */
744
662
  const OPACITY_MIN = 0.4;
745
663
 
746
- /**
747
- * The maximum (hovered) opacity of the trashcan and lid.
748
- */
664
+ /** The maximum (hovered) opacity of the trashcan and lid. */
749
665
  const OPACITY_MAX = 0.8;
750
666
 
751
667
  /**
@@ -753,5 +669,3 @@ const OPACITY_MAX = 0.8;
753
669
  * animation the lid will be open to this angle.
754
670
  */
755
671
  const MAX_LID_ANGLE = 45;
756
-
757
- exports.Trashcan = Trashcan;