blockly 8.0.5 → 9.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (736) hide show
  1. package/blockly.min.js +2002 -2269
  2. package/blockly_compressed.js +1499 -1994
  3. package/blockly_compressed.js.map +1 -1
  4. package/blocks/blocks.js +3 -2
  5. package/blocks/colour.js +3 -1
  6. package/blocks/lists.js +94 -22
  7. package/blocks/logic.js +14 -6
  8. package/blocks/loops.js +5 -3
  9. package/blocks/math.js +3 -1
  10. package/blocks/procedures.js +3 -1
  11. package/blocks/text.js +14 -6
  12. package/blocks/variables.js +3 -1
  13. package/blocks/variables_dynamic.js +3 -1
  14. package/blocks.d.ts +0 -2
  15. package/blocks_compressed.js +189 -171
  16. package/blocks_compressed.js.map +1 -1
  17. package/closure/goog/base.d.ts +1 -0
  18. package/closure/goog/base_minimal.d.ts +18 -0
  19. package/closure/goog/goog.d.ts +25 -0
  20. package/core/any_aliases.d.ts +1 -0
  21. package/core/any_aliases.ts +1 -0
  22. package/core/block.d.ts +779 -0
  23. package/core/{block.js → block.ts} +610 -719
  24. package/core/block_animations.d.ts +33 -0
  25. package/core/{block_animations.js → block_animations.ts} +75 -79
  26. package/core/block_drag_surface.d.ts +111 -0
  27. package/core/{block_drag_surface.js → block_drag_surface.ts} +85 -117
  28. package/core/block_dragger.d.ts +143 -0
  29. package/core/{block_dragger.js → block_dragger.ts} +139 -176
  30. package/core/block_svg.d.ts +588 -0
  31. package/core/{block_svg.js → block_svg.ts} +494 -630
  32. package/core/blockly.d.ts +562 -0
  33. package/core/blockly.js +1 -1
  34. package/core/blockly.ts +749 -0
  35. package/core/blockly_options.d.ts +69 -0
  36. package/core/blockly_options.ts +81 -0
  37. package/core/blocks.d.ts +17 -0
  38. package/core/{blocks.js → blocks.ts} +4 -8
  39. package/core/browser_events.d.ts +85 -0
  40. package/core/{browser_events.js → browser_events.ts} +98 -93
  41. package/core/bubble.d.ts +279 -0
  42. package/core/{bubble.js → bubble.ts} +277 -370
  43. package/core/bubble_dragger.d.ts +73 -0
  44. package/core/bubble_dragger.ts +229 -0
  45. package/core/bump_objects.d.ts +34 -0
  46. package/core/{bump_objects.js → bump_objects.ts} +54 -52
  47. package/core/clipboard.d.ts +42 -0
  48. package/core/clipboard.ts +91 -0
  49. package/core/comment.d.ts +113 -0
  50. package/core/{comment.js → comment.ts} +135 -185
  51. package/core/common.d.ts +129 -0
  52. package/core/{common.js → common.ts} +105 -82
  53. package/core/component_manager.d.ts +91 -0
  54. package/core/component_manager.ts +211 -0
  55. package/core/config.d.ts +23 -0
  56. package/core/{config.js → config.ts} +12 -19
  57. package/core/connection.d.ts +232 -0
  58. package/core/{connection.js → connection.ts} +187 -237
  59. package/core/connection_checker.d.ts +78 -0
  60. package/core/{connection_checker.js → connection_checker.ts} +66 -77
  61. package/core/connection_db.d.ts +91 -0
  62. package/core/{connection_db.js → connection_db.ts} +62 -87
  63. package/core/connection_type.d.ts +15 -0
  64. package/core/{connection_type.js → connection_type.ts} +8 -12
  65. package/core/constants.d.ts +15 -0
  66. package/core/{constants.js → constants.ts} +4 -8
  67. package/core/contextmenu.d.ts +80 -0
  68. package/core/{contextmenu.js → contextmenu.ts} +118 -153
  69. package/core/contextmenu_items.d.ts +77 -0
  70. package/core/contextmenu_items.ts +576 -0
  71. package/core/contextmenu_registry.d.ts +105 -0
  72. package/core/contextmenu_registry.ts +179 -0
  73. package/core/css.d.ts +24 -0
  74. package/core/{css.js → css.ts} +16 -24
  75. package/core/delete_area.d.ts +47 -0
  76. package/core/delete_area.ts +82 -0
  77. package/core/dialog.d.ts +61 -0
  78. package/core/dialog.ts +127 -0
  79. package/core/drag_target.d.ts +63 -0
  80. package/core/drag_target.ts +94 -0
  81. package/core/dropdowndiv.d.ts +155 -0
  82. package/core/{dropdowndiv.js → dropdowndiv.ts} +262 -333
  83. package/core/events/events.d.ts +102 -0
  84. package/core/events/events.ts +123 -0
  85. package/core/events/events_abstract.d.ts +51 -0
  86. package/core/events/events_abstract.ts +112 -0
  87. package/core/events/events_block_base.d.ts +31 -0
  88. package/core/events/events_block_base.ts +65 -0
  89. package/core/events/events_block_change.d.ts +55 -0
  90. package/core/events/{events_block_change.js → events_block_change.ts} +45 -48
  91. package/core/events/events_block_create.d.ts +35 -0
  92. package/core/events/{events_block_create.js → events_block_create.ts} +30 -35
  93. package/core/events/events_block_delete.d.ts +36 -0
  94. package/core/events/{events_block_delete.js → events_block_delete.ts} +34 -39
  95. package/core/events/events_block_drag.d.ts +36 -0
  96. package/core/events/events_block_drag.ts +82 -0
  97. package/core/events/events_block_move.d.ts +51 -0
  98. package/core/events/{events_block_move.js → events_block_move.ts} +54 -50
  99. package/core/events/events_bubble_open.d.ts +35 -0
  100. package/core/events/events_bubble_open.ts +82 -0
  101. package/core/events/events_click.d.ts +36 -0
  102. package/core/events/{events_click.js → events_click.ts} +27 -30
  103. package/core/events/events_comment_base.d.ts +39 -0
  104. package/core/events/events_comment_base.ts +107 -0
  105. package/core/events/events_comment_change.d.ts +43 -0
  106. package/core/events/{events_comment_change.js → events_comment_change.ts} +31 -28
  107. package/core/events/events_comment_create.d.ts +35 -0
  108. package/core/events/{events_comment_create.js → events_comment_create.ts} +24 -26
  109. package/core/events/events_comment_delete.d.ts +35 -0
  110. package/core/events/{events_comment_delete.js → events_comment_delete.ts} +20 -24
  111. package/core/events/events_comment_move.d.ts +55 -0
  112. package/core/events/{events_comment_move.js → events_comment_move.ts} +39 -42
  113. package/core/events/events_marker_move.d.ts +40 -0
  114. package/core/events/events_marker_move.ts +99 -0
  115. package/core/events/events_selected.d.ts +34 -0
  116. package/core/events/events_selected.ts +78 -0
  117. package/core/events/events_theme_change.d.ts +30 -0
  118. package/core/events/{events_theme_change.js → events_theme_change.ts} +19 -24
  119. package/core/events/events_toolbox_item_select.d.ts +34 -0
  120. package/core/events/events_toolbox_item_select.ts +79 -0
  121. package/core/events/events_trashcan_open.d.ts +31 -0
  122. package/core/events/events_trashcan_open.ts +68 -0
  123. package/core/events/events_ui.d.ts +37 -0
  124. package/core/events/{events_ui.js → events_ui.ts} +27 -26
  125. package/core/events/events_ui_base.d.ts +26 -0
  126. package/core/events/{events_ui_base.js → events_ui_base.ts} +17 -26
  127. package/core/events/events_var_base.d.ts +31 -0
  128. package/core/events/events_var_base.ts +65 -0
  129. package/core/events/events_var_create.d.ts +35 -0
  130. package/core/events/{events_var_create.js → events_var_create.ts} +24 -25
  131. package/core/events/events_var_delete.d.ts +35 -0
  132. package/core/events/{events_var_delete.js → events_var_delete.ts} +24 -25
  133. package/core/events/events_var_rename.d.ts +36 -0
  134. package/core/events/{events_var_rename.js → events_var_rename.ts} +25 -26
  135. package/core/events/events_viewport.d.ts +39 -0
  136. package/core/events/events_viewport.ts +100 -0
  137. package/core/events/utils.d.ts +272 -0
  138. package/core/events/{utils.js → utils.ts} +148 -219
  139. package/core/events/workspace_events.d.ts +36 -0
  140. package/core/events/workspace_events.ts +86 -0
  141. package/core/extensions.d.ts +107 -0
  142. package/core/{extensions.js → extensions.ts} +153 -172
  143. package/core/field.d.ts +534 -0
  144. package/core/{field.js → field.ts} +413 -489
  145. package/core/field_angle.d.ts +176 -0
  146. package/core/field_angle.ts +563 -0
  147. package/core/field_checkbox.d.ts +124 -0
  148. package/core/field_checkbox.ts +243 -0
  149. package/core/field_colour.d.ts +200 -0
  150. package/core/field_colour.ts +632 -0
  151. package/core/field_dropdown.d.ts +222 -0
  152. package/core/{field_dropdown.js → field_dropdown.ts} +277 -299
  153. package/core/field_image.d.ts +134 -0
  154. package/core/field_image.ts +282 -0
  155. package/core/field_label.d.ts +71 -0
  156. package/core/field_label.ts +152 -0
  157. package/core/field_label_serializable.d.ts +42 -0
  158. package/core/field_label_serializable.ts +76 -0
  159. package/core/field_multilineinput.d.ts +146 -0
  160. package/core/{field_multilineinput.js → field_multilineinput.ts} +166 -163
  161. package/core/field_number.d.ts +156 -0
  162. package/core/{field_number.js → field_number.ts} +110 -123
  163. package/core/field_registry.d.ts +45 -0
  164. package/core/{field_registry.js → field_registry.ts} +37 -30
  165. package/core/field_textinput.d.ts +219 -0
  166. package/core/field_textinput.ts +591 -0
  167. package/core/field_variable.d.ts +217 -0
  168. package/core/{field_variable.js → field_variable.ts} +174 -187
  169. package/core/flyout_base.d.ts +459 -0
  170. package/core/{flyout_base.js → flyout_base.ts} +429 -518
  171. package/core/flyout_button.d.ts +81 -0
  172. package/core/flyout_button.ts +292 -0
  173. package/core/flyout_horizontal.d.ts +82 -0
  174. package/core/{flyout_horizontal.js → flyout_horizontal.ts} +97 -107
  175. package/core/flyout_metrics_manager.d.ts +40 -0
  176. package/core/{flyout_metrics_manager.js → flyout_metrics_manager.ts} +22 -34
  177. package/core/flyout_vertical.d.ts +83 -0
  178. package/core/{flyout_vertical.js → flyout_vertical.ts} +106 -117
  179. package/core/generator.d.ts +205 -0
  180. package/core/{generator.js → generator.ts} +168 -193
  181. package/core/gesture.d.ts +357 -0
  182. package/core/{gesture.js → gesture.ts} +289 -369
  183. package/core/grid.d.ts +83 -0
  184. package/core/grid.ts +192 -0
  185. package/core/icon.d.ts +78 -0
  186. package/core/icon.ts +189 -0
  187. package/core/inject.d.ts +15 -0
  188. package/core/{inject.js → inject.ts} +101 -100
  189. package/core/input.d.ts +128 -0
  190. package/core/input.ts +309 -0
  191. package/core/input_types.d.ts +14 -0
  192. package/core/{input_types.js → input_types.ts} +8 -12
  193. package/core/insertion_marker_manager.d.ts +212 -0
  194. package/core/{insertion_marker_manager.js → insertion_marker_manager.ts} +234 -236
  195. package/core/interfaces/i_ast_node_location.d.ts +11 -0
  196. package/core/interfaces/{i_ast_node_location.js → i_ast_node_location.ts} +4 -7
  197. package/core/interfaces/i_ast_node_location_svg.d.ts +22 -0
  198. package/core/interfaces/i_ast_node_location_svg.ts +37 -0
  199. package/core/interfaces/i_ast_node_location_with_block.d.ts +18 -0
  200. package/core/interfaces/i_ast_node_location_with_block.ts +38 -0
  201. package/core/interfaces/i_autohideable.d.ts +18 -0
  202. package/core/interfaces/i_autohideable.ts +34 -0
  203. package/core/interfaces/i_block_dragger.d.ts +43 -0
  204. package/core/interfaces/i_block_dragger.ts +67 -0
  205. package/core/interfaces/i_bounded_element.d.ts +24 -0
  206. package/core/interfaces/i_bounded_element.ts +42 -0
  207. package/core/interfaces/i_bubble.d.ts +59 -0
  208. package/core/interfaces/i_bubble.ts +88 -0
  209. package/core/interfaces/i_collapsible_toolbox_item.d.ts +26 -0
  210. package/core/interfaces/i_collapsible_toolbox_item.ts +47 -0
  211. package/core/interfaces/i_component.d.ts +17 -0
  212. package/core/interfaces/{i_component.js → i_component.ts} +9 -14
  213. package/core/interfaces/i_connection_checker.d.ts +69 -0
  214. package/core/interfaces/i_connection_checker.ts +102 -0
  215. package/core/interfaces/i_contextmenu.d.ts +13 -0
  216. package/core/interfaces/i_contextmenu.ts +26 -0
  217. package/core/interfaces/i_copyable.d.ts +24 -0
  218. package/core/interfaces/i_copyable.ts +40 -0
  219. package/core/interfaces/i_deletable.d.ts +16 -0
  220. package/core/interfaces/{i_deletable.js → i_deletable.ts} +9 -13
  221. package/core/interfaces/i_delete_area.d.ts +25 -0
  222. package/core/interfaces/i_delete_area.ts +46 -0
  223. package/core/interfaces/i_drag_target.d.ts +53 -0
  224. package/core/interfaces/i_drag_target.ts +84 -0
  225. package/core/interfaces/i_draggable.d.ts +12 -0
  226. package/core/interfaces/{i_draggable.js → i_draggable.ts} +4 -10
  227. package/core/interfaces/i_flyout.d.ts +134 -0
  228. package/core/interfaces/i_flyout.ts +186 -0
  229. package/core/interfaces/i_keyboard_accessible.d.ts +18 -0
  230. package/core/interfaces/i_keyboard_accessible.ts +35 -0
  231. package/core/interfaces/i_metrics_manager.d.ts +117 -0
  232. package/core/interfaces/i_metrics_manager.ts +151 -0
  233. package/core/interfaces/i_movable.d.ts +16 -0
  234. package/core/interfaces/{i_movable.js → i_movable.ts} +9 -13
  235. package/core/interfaces/i_positionable.d.ts +27 -0
  236. package/core/interfaces/i_positionable.ts +50 -0
  237. package/core/interfaces/i_registrable.d.ts +11 -0
  238. package/core/interfaces/{i_registrable.js → i_registrable.ts} +3 -7
  239. package/core/interfaces/i_registrable_field.d.ts +17 -0
  240. package/core/interfaces/{i_registrable_field.js → i_registrable_field.ts} +8 -16
  241. package/core/interfaces/i_selectable.d.ts +18 -0
  242. package/core/interfaces/i_selectable.ts +34 -0
  243. package/core/interfaces/i_selectable_toolbox_item.d.ts +42 -0
  244. package/core/interfaces/i_selectable_toolbox_item.ts +64 -0
  245. package/core/interfaces/i_serializer.d.ts +42 -0
  246. package/core/interfaces/i_serializer.ts +65 -0
  247. package/core/interfaces/i_styleable.d.ts +21 -0
  248. package/core/interfaces/i_styleable.ts +35 -0
  249. package/core/interfaces/i_toolbox.d.ts +85 -0
  250. package/core/interfaces/i_toolbox.ts +127 -0
  251. package/core/interfaces/i_toolbox_item.d.ts +62 -0
  252. package/core/interfaces/i_toolbox_item.ts +84 -0
  253. package/core/internal_constants.d.ts +40 -0
  254. package/core/{internal_constants.js → internal_constants.ts} +13 -18
  255. package/core/keyboard_nav/ast_node.d.ts +239 -0
  256. package/core/keyboard_nav/{ast_node.js → ast_node.ts} +207 -231
  257. package/core/keyboard_nav/basic_cursor.d.ts +88 -0
  258. package/core/keyboard_nav/{basic_cursor.js → basic_cursor.ts} +55 -66
  259. package/core/keyboard_nav/cursor.d.ts +41 -0
  260. package/core/keyboard_nav/{cursor.js → cursor.ts} +25 -35
  261. package/core/keyboard_nav/marker.d.ts +58 -0
  262. package/core/keyboard_nav/{marker.js → marker.ts} +36 -55
  263. package/core/keyboard_nav/tab_navigate_cursor.d.ts +19 -0
  264. package/core/keyboard_nav/{tab_navigate_cursor.js → tab_navigate_cursor.ts} +11 -15
  265. package/core/main.d.ts +11 -0
  266. package/core/main.js +303 -0
  267. package/core/marker_manager.d.ts +85 -0
  268. package/core/marker_manager.ts +181 -0
  269. package/core/menu.d.ts +149 -0
  270. package/core/{menu.js → menu.ts} +141 -174
  271. package/core/menuitem.d.ts +118 -0
  272. package/core/menuitem.ts +240 -0
  273. package/core/metrics_manager.d.ts +201 -0
  274. package/core/{metrics_manager.js → metrics_manager.ts} +117 -156
  275. package/core/msg.d.ts +9 -0
  276. package/core/{msg.js → msg.ts} +4 -8
  277. package/core/mutator.d.ts +128 -0
  278. package/core/{mutator.js → mutator.ts} +196 -211
  279. package/core/names.d.ts +124 -0
  280. package/core/names.ts +267 -0
  281. package/core/options.d.ts +137 -0
  282. package/core/{options.js → options.ts} +147 -173
  283. package/core/positionable_helpers.d.ts +88 -0
  284. package/core/{positionable_helpers.js → positionable_helpers.ts} +63 -70
  285. package/core/procedures.d.ts +108 -0
  286. package/core/{procedures.js → procedures.ts} +143 -152
  287. package/core/registry.d.ts +137 -0
  288. package/core/registry.ts +339 -0
  289. package/core/rendered_connection.d.ts +191 -0
  290. package/core/{rendered_connection.js → rendered_connection.ts} +164 -184
  291. package/core/renderers/common/block_rendering.d.ts +114 -0
  292. package/core/renderers/common/block_rendering.ts +164 -0
  293. package/core/renderers/common/constants.d.ts +458 -0
  294. package/core/renderers/common/constants.ts +1124 -0
  295. package/core/renderers/common/debug.d.ts +28 -0
  296. package/core/renderers/common/{debug.js → debug.ts} +14 -20
  297. package/core/renderers/common/debugger.d.ts +120 -0
  298. package/core/renderers/common/{debugger.js → debugger.ts} +100 -124
  299. package/core/renderers/common/drawer.d.ts +132 -0
  300. package/core/renderers/common/{drawer.js → drawer.ts} +112 -137
  301. package/core/renderers/common/i_path_object.d.ts +117 -0
  302. package/core/renderers/common/i_path_object.ts +161 -0
  303. package/core/renderers/common/info.d.ts +194 -0
  304. package/core/renderers/common/{info.js → info.ts} +165 -222
  305. package/core/renderers/common/marker_svg.d.ts +220 -0
  306. package/core/renderers/common/marker_svg.ts +680 -0
  307. package/core/renderers/common/path_object.d.ts +146 -0
  308. package/core/renderers/common/path_object.ts +272 -0
  309. package/core/renderers/common/renderer.d.ts +157 -0
  310. package/core/renderers/common/renderer.ts +271 -0
  311. package/core/renderers/geras/constants.d.ts +23 -0
  312. package/core/renderers/geras/constants.ts +61 -0
  313. package/core/renderers/geras/drawer.d.ts +43 -0
  314. package/core/renderers/geras/{drawer.js → drawer.ts} +40 -84
  315. package/core/renderers/geras/geras.d.ts +11 -0
  316. package/core/renderers/geras/geras.ts +37 -0
  317. package/core/renderers/geras/highlight_constants.d.ts +108 -0
  318. package/core/renderers/geras/{highlight_constants.js → highlight_constants.ts} +107 -69
  319. package/core/renderers/geras/highlighter.d.ts +98 -0
  320. package/core/renderers/geras/{highlighter.js → highlighter.ts} +81 -86
  321. package/core/renderers/geras/info.d.ts +45 -0
  322. package/core/renderers/geras/{info.js → info.ts} +61 -99
  323. package/core/renderers/geras/measurables/inline_input.d.ts +23 -0
  324. package/core/renderers/geras/measurables/inline_input.ts +51 -0
  325. package/core/renderers/geras/measurables/statement_input.d.ts +23 -0
  326. package/core/renderers/geras/measurables/statement_input.ts +50 -0
  327. package/core/renderers/geras/path_object.d.ts +47 -0
  328. package/core/renderers/geras/{path_object.js → path_object.ts} +46 -74
  329. package/core/renderers/geras/renderer.d.ts +69 -0
  330. package/core/renderers/geras/renderer.ts +126 -0
  331. package/core/renderers/measurables/base.d.ts +27 -0
  332. package/core/renderers/measurables/base.ts +53 -0
  333. package/core/renderers/measurables/bottom_row.d.ts +61 -0
  334. package/core/renderers/measurables/bottom_row.ts +120 -0
  335. package/core/renderers/measurables/connection.d.ts +25 -0
  336. package/core/renderers/measurables/connection.ts +52 -0
  337. package/core/renderers/measurables/external_value_input.d.ts +27 -0
  338. package/core/renderers/measurables/external_value_input.ts +65 -0
  339. package/core/renderers/measurables/field.d.ts +30 -0
  340. package/core/renderers/measurables/field.ts +63 -0
  341. package/core/renderers/measurables/hat.d.ts +21 -0
  342. package/core/renderers/measurables/{hat.js → hat.ts} +12 -14
  343. package/core/renderers/measurables/icon.d.ts +26 -0
  344. package/core/renderers/measurables/{icon.js → icon.ts} +14 -18
  345. package/core/renderers/measurables/in_row_spacer.d.ts +21 -0
  346. package/core/renderers/measurables/in_row_spacer.ts +44 -0
  347. package/core/renderers/measurables/inline_input.d.ts +24 -0
  348. package/core/renderers/measurables/{inline_input.js → inline_input.ts} +22 -26
  349. package/core/renderers/measurables/input_connection.d.ts +29 -0
  350. package/core/renderers/measurables/input_connection.ts +66 -0
  351. package/core/renderers/measurables/input_row.d.ts +30 -0
  352. package/core/renderers/measurables/{input_row.js → input_row.ts} +24 -31
  353. package/core/renderers/measurables/jagged_edge.d.ts +20 -0
  354. package/core/renderers/measurables/{jagged_edge.js → jagged_edge.ts} +10 -13
  355. package/core/renderers/measurables/next_connection.d.ts +23 -0
  356. package/core/renderers/measurables/next_connection.ts +47 -0
  357. package/core/renderers/measurables/output_connection.d.ts +26 -0
  358. package/core/renderers/measurables/output_connection.ts +56 -0
  359. package/core/renderers/measurables/previous_connection.d.ts +23 -0
  360. package/core/renderers/measurables/previous_connection.ts +47 -0
  361. package/core/renderers/measurables/round_corner.d.ts +21 -0
  362. package/core/renderers/measurables/round_corner.ts +49 -0
  363. package/core/renderers/measurables/row.d.ts +141 -0
  364. package/core/renderers/measurables/row.ts +225 -0
  365. package/core/renderers/measurables/spacer_row.d.ts +29 -0
  366. package/core/renderers/measurables/spacer_row.ts +55 -0
  367. package/core/renderers/measurables/square_corner.d.ts +21 -0
  368. package/core/renderers/measurables/square_corner.ts +47 -0
  369. package/core/renderers/measurables/statement_input.d.ts +22 -0
  370. package/core/renderers/measurables/{statement_input.js → statement_input.ts} +14 -18
  371. package/core/renderers/measurables/top_row.d.ts +56 -0
  372. package/core/renderers/measurables/top_row.ts +122 -0
  373. package/core/renderers/measurables/types.d.ts +235 -0
  374. package/core/renderers/measurables/types.ts +332 -0
  375. package/core/renderers/minimalist/constants.d.ts +14 -0
  376. package/core/renderers/minimalist/{constants.js → constants.ts} +5 -10
  377. package/core/renderers/minimalist/drawer.d.ts +21 -0
  378. package/core/renderers/minimalist/drawer.ts +38 -0
  379. package/core/renderers/minimalist/info.d.ts +30 -0
  380. package/core/renderers/minimalist/info.ts +52 -0
  381. package/core/renderers/minimalist/minimalist.d.ts +6 -0
  382. package/core/renderers/minimalist/minimalist.ts +22 -0
  383. package/core/renderers/minimalist/renderer.d.ts +41 -0
  384. package/core/renderers/minimalist/renderer.ts +71 -0
  385. package/core/renderers/thrasos/info.d.ts +40 -0
  386. package/core/renderers/thrasos/{info.js → info.ts} +66 -67
  387. package/core/renderers/thrasos/renderer.d.ts +25 -0
  388. package/core/renderers/thrasos/renderer.ts +48 -0
  389. package/core/renderers/thrasos/thrasos.d.ts +4 -0
  390. package/core/renderers/thrasos/thrasos.ts +20 -0
  391. package/core/renderers/zelos/constants.d.ts +186 -0
  392. package/core/renderers/zelos/{constants.js → constants.ts} +294 -441
  393. package/core/renderers/zelos/drawer.d.ts +47 -0
  394. package/core/renderers/zelos/{drawer.js → drawer.ts} +73 -95
  395. package/core/renderers/zelos/info.d.ts +88 -0
  396. package/core/renderers/zelos/{info.js → info.ts} +111 -142
  397. package/core/renderers/zelos/marker_svg.d.ts +46 -0
  398. package/core/renderers/zelos/marker_svg.ts +151 -0
  399. package/core/renderers/zelos/measurables/bottom_row.d.ts +27 -0
  400. package/core/renderers/zelos/measurables/bottom_row.ts +53 -0
  401. package/core/renderers/zelos/measurables/inputs.d.ts +23 -0
  402. package/core/renderers/zelos/measurables/{inputs.js → inputs.ts} +14 -15
  403. package/core/renderers/zelos/measurables/row_elements.d.ts +21 -0
  404. package/core/renderers/zelos/measurables/row_elements.ts +45 -0
  405. package/core/renderers/zelos/measurables/top_row.d.ts +29 -0
  406. package/core/renderers/zelos/measurables/{top_row.js → top_row.ts} +14 -27
  407. package/core/renderers/zelos/path_object.d.ts +77 -0
  408. package/core/renderers/zelos/path_object.ts +215 -0
  409. package/core/renderers/zelos/renderer.d.ts +74 -0
  410. package/core/renderers/zelos/renderer.ts +142 -0
  411. package/core/renderers/zelos/zelos.d.ts +12 -0
  412. package/core/renderers/zelos/zelos.ts +39 -0
  413. package/core/scrollbar.d.ts +277 -0
  414. package/core/{scrollbar.js → scrollbar.ts} +307 -328
  415. package/core/scrollbar_pair.d.ts +105 -0
  416. package/core/{scrollbar_pair.js → scrollbar_pair.ts} +71 -79
  417. package/core/serialization/blocks.d.ts +98 -0
  418. package/core/serialization/{blocks.js → blocks.ts} +229 -228
  419. package/core/serialization/exceptions.d.ts +73 -0
  420. package/core/serialization/exceptions.ts +98 -0
  421. package/core/serialization/priorities.d.ts +15 -0
  422. package/core/serialization/{priorities.js → priorities.ts} +4 -10
  423. package/core/serialization/registry.d.ts +20 -0
  424. package/core/serialization/{registry.js → registry.ts} +11 -13
  425. package/core/serialization/variables.d.ts +14 -0
  426. package/core/serialization/{variables.js → variables.ts} +30 -32
  427. package/core/serialization/workspaces.d.ts +28 -0
  428. package/core/serialization/{workspaces.js → workspaces.ts} +30 -27
  429. package/core/shortcut_items.d.ts +61 -0
  430. package/core/{shortcut_items.js → shortcut_items.ts} +121 -157
  431. package/core/shortcut_registry.d.ts +151 -0
  432. package/core/shortcut_registry.ts +355 -0
  433. package/core/sprites.d.ts +19 -0
  434. package/core/{sprites.js → sprites.ts} +4 -6
  435. package/core/theme/classic.d.ts +12 -0
  436. package/core/theme/{classic.js → classic.ts} +5 -7
  437. package/core/theme/themes.d.ts +8 -0
  438. package/core/theme/themes.ts +22 -0
  439. package/core/theme/zelos.d.ts +11 -0
  440. package/core/theme/{zelos.js → zelos.ts} +4 -7
  441. package/core/theme.d.ts +142 -0
  442. package/core/theme.ts +221 -0
  443. package/core/theme_manager.d.ts +81 -0
  444. package/core/theme_manager.ts +186 -0
  445. package/core/toolbox/category.d.ts +239 -0
  446. package/core/toolbox/category.ts +679 -0
  447. package/core/toolbox/collapsible_category.d.ts +91 -0
  448. package/core/toolbox/collapsible_category.ts +273 -0
  449. package/core/toolbox/separator.d.ts +39 -0
  450. package/core/toolbox/separator.ts +105 -0
  451. package/core/toolbox/toolbox.d.ts +352 -0
  452. package/core/toolbox/{toolbox.js → toolbox.ts} +316 -432
  453. package/core/toolbox/toolbox_item.d.ts +85 -0
  454. package/core/toolbox/toolbox_item.ts +147 -0
  455. package/core/tooltip.d.ts +126 -0
  456. package/core/{tooltip.js → tooltip.ts} +136 -214
  457. package/core/touch.d.ts +121 -0
  458. package/core/touch.ts +306 -0
  459. package/core/touch_gesture.d.ts +115 -0
  460. package/core/{touch_gesture.js → touch_gesture.ts} +87 -125
  461. package/core/trashcan.d.ts +195 -0
  462. package/core/{trashcan.js → trashcan.ts} +226 -312
  463. package/core/utils/aria.d.ts +67 -0
  464. package/core/utils/{aria.js → aria.ts} +47 -61
  465. package/core/utils/array.d.ts +14 -0
  466. package/core/utils/{array.js → array.ts} +10 -12
  467. package/core/utils/colour.d.ts +103 -0
  468. package/core/utils/{colour.js → colour.ts} +60 -72
  469. package/core/utils/coordinate.d.ts +72 -0
  470. package/core/utils/coordinate.ts +124 -0
  471. package/core/utils/deprecation.d.ts +17 -0
  472. package/core/utils/{deprecation.js → deprecation.ts} +11 -11
  473. package/core/utils/dom.d.ts +165 -0
  474. package/core/utils/{dom.js → dom.ts} +125 -147
  475. package/core/utils/idgenerator.d.ts +25 -0
  476. package/core/utils/{idgenerator.js → idgenerator.ts} +15 -18
  477. package/core/utils/keycodes.d.ts +137 -0
  478. package/core/utils/keycodes.ts +169 -0
  479. package/core/utils/math.d.ts +30 -0
  480. package/core/utils/{math.js → math.ts} +17 -19
  481. package/core/utils/metrics.d.ts +64 -0
  482. package/core/utils/metrics.ts +97 -0
  483. package/core/utils/object.d.ts +35 -0
  484. package/core/utils/{object.js → object.ts} +30 -26
  485. package/core/utils/parsing.d.ts +50 -0
  486. package/core/utils/{parsing.js → parsing.ts} +50 -50
  487. package/core/utils/rect.d.ts +38 -0
  488. package/core/utils/{rect.js → rect.ts} +18 -31
  489. package/core/utils/sentinel.d.ts +11 -0
  490. package/core/utils/{sentinel.js → sentinel.ts} +3 -5
  491. package/core/utils/size.d.ts +27 -0
  492. package/core/utils/{size.js → size.ts} +12 -26
  493. package/core/utils/string.d.ts +55 -0
  494. package/core/utils/{string.js → string.ts} +64 -61
  495. package/core/utils/style.d.ts +127 -0
  496. package/core/utils/{style.js → style.ts} +102 -92
  497. package/core/utils/svg.d.ts +68 -0
  498. package/core/utils/svg.ts +88 -0
  499. package/core/utils/svg_math.d.ts +70 -0
  500. package/core/utils/{svg_math.js → svg_math.ts} +72 -71
  501. package/core/utils/svg_paths.d.ts +101 -0
  502. package/core/utils/{svg_paths.js → svg_paths.ts} +56 -65
  503. package/core/utils/toolbox.d.ts +193 -0
  504. package/core/utils/toolbox.ts +433 -0
  505. package/core/utils/useragent.d.ts +33 -0
  506. package/core/utils/useragent.ts +135 -0
  507. package/core/utils/xml.d.ts +52 -0
  508. package/core/utils/{xml.js → xml.ts} +26 -36
  509. package/core/utils.d.ts +217 -0
  510. package/core/utils.ts +428 -0
  511. package/core/variable_map.d.ts +141 -0
  512. package/core/{variable_map.js → variable_map.ts} +131 -149
  513. package/core/variable_model.d.ts +40 -0
  514. package/core/variable_model.ts +82 -0
  515. package/core/variables.d.ts +181 -0
  516. package/core/{variables.js → variables.ts} +206 -188
  517. package/core/variables_dynamic.d.ts +38 -0
  518. package/core/{variables_dynamic.js → variables_dynamic.ts} +47 -43
  519. package/core/warning.d.ts +50 -0
  520. package/core/{warning.js → warning.ts} +52 -66
  521. package/core/widgetdiv.d.ts +69 -0
  522. package/core/widgetdiv.ts +257 -0
  523. package/core/workspace.d.ts +386 -0
  524. package/core/workspace.ts +801 -0
  525. package/core/workspace_audio.d.ts +47 -0
  526. package/core/{workspace_audio.js → workspace_audio.ts} +47 -60
  527. package/core/workspace_comment.d.ts +170 -0
  528. package/core/workspace_comment.ts +398 -0
  529. package/core/workspace_comment_svg.d.ts +329 -0
  530. package/core/{workspace_comment_svg.js → workspace_comment_svg.ts} +347 -444
  531. package/core/workspace_drag_surface_svg.d.ts +68 -0
  532. package/core/{workspace_drag_surface_svg.js → workspace_drag_surface_svg.ts} +75 -82
  533. package/core/workspace_dragger.d.ts +48 -0
  534. package/core/workspace_dragger.ts +104 -0
  535. package/core/workspace_svg.d.ts +920 -0
  536. package/core/{workspace_svg.js → workspace_svg.ts} +855 -935
  537. package/core/xml.d.ts +117 -0
  538. package/core/{xml.js → xml.ts} +306 -326
  539. package/core/zoom_controls.d.ts +130 -0
  540. package/core/{zoom_controls.js → zoom_controls.ts} +185 -251
  541. package/core.d.ts +1 -3
  542. package/core.js +1 -2
  543. package/dart.d.ts +0 -3
  544. package/dart_compressed.js +387 -99
  545. package/dart_compressed.js.map +1 -1
  546. package/generators/dart/all.js +2 -0
  547. package/generators/dart/colour.js +1 -1
  548. package/generators/dart/lists.js +1 -1
  549. package/generators/dart/logic.js +1 -1
  550. package/generators/dart/loops.js +1 -1
  551. package/generators/dart/math.js +1 -1
  552. package/generators/dart/procedures.js +1 -1
  553. package/generators/dart/text.js +1 -1
  554. package/generators/dart/variables.js +1 -1
  555. package/generators/dart/variables_dynamic.js +1 -1
  556. package/generators/dart.js +1 -2
  557. package/generators/javascript/all.js +2 -0
  558. package/generators/javascript/colour.js +1 -1
  559. package/generators/javascript/lists.js +1 -1
  560. package/generators/javascript/logic.js +1 -1
  561. package/generators/javascript/loops.js +1 -1
  562. package/generators/javascript/math.js +4 -4
  563. package/generators/javascript/procedures.js +1 -1
  564. package/generators/javascript/text.js +2 -2
  565. package/generators/javascript/variables.js +1 -1
  566. package/generators/javascript/variables_dynamic.js +1 -1
  567. package/generators/javascript.js +1 -3
  568. package/generators/lua/all.js +2 -0
  569. package/generators/lua/colour.js +1 -1
  570. package/generators/lua/lists.js +1 -1
  571. package/generators/lua/logic.js +1 -1
  572. package/generators/lua/loops.js +1 -1
  573. package/generators/lua/math.js +1 -1
  574. package/generators/lua/procedures.js +1 -1
  575. package/generators/lua/text.js +1 -1
  576. package/generators/lua/variables.js +1 -1
  577. package/generators/lua/variables_dynamic.js +1 -1
  578. package/generators/lua.js +1 -2
  579. package/generators/php/all.js +2 -0
  580. package/generators/php/colour.js +1 -1
  581. package/generators/php/lists.js +1 -2
  582. package/generators/php/logic.js +1 -1
  583. package/generators/php/loops.js +1 -1
  584. package/generators/php/math.js +1 -1
  585. package/generators/php/procedures.js +1 -1
  586. package/generators/php/text.js +1 -1
  587. package/generators/php/variables.js +1 -1
  588. package/generators/php/variables_dynamic.js +1 -1
  589. package/generators/php.js +1 -2
  590. package/generators/python/all.js +2 -0
  591. package/generators/python/colour.js +3 -3
  592. package/generators/python/lists.js +1 -1
  593. package/generators/python/logic.js +1 -1
  594. package/generators/python/loops.js +4 -7
  595. package/generators/python/math.js +1 -1
  596. package/generators/python/procedures.js +1 -1
  597. package/generators/python/text.js +1 -1
  598. package/generators/python/variables.js +1 -1
  599. package/generators/python/variables_dynamic.js +1 -1
  600. package/generators/python.js +1 -2
  601. package/index.d.ts +2 -8
  602. package/javascript.d.ts +0 -3
  603. package/javascript_compressed.js +314 -104
  604. package/javascript_compressed.js.map +1 -1
  605. package/lua.d.ts +0 -3
  606. package/lua_compressed.js +399 -81
  607. package/lua_compressed.js.map +1 -1
  608. package/package.json +5 -5
  609. package/php.d.ts +0 -3
  610. package/php_compressed.js +322 -93
  611. package/php_compressed.js.map +1 -1
  612. package/python.d.ts +0 -3
  613. package/python_compressed.js +237 -90
  614. package/python_compressed.js.map +1 -1
  615. package/blockly.d.ts +0 -26127
  616. package/core/blockly_options.js +0 -28
  617. package/core/bubble_dragger.js +0 -298
  618. package/core/clipboard.js +0 -80
  619. package/core/component_manager.js +0 -263
  620. package/core/contextmenu_items.js +0 -651
  621. package/core/contextmenu_registry.js +0 -178
  622. package/core/delete_area.js +0 -87
  623. package/core/dialog.js +0 -107
  624. package/core/drag_target.js +0 -98
  625. package/core/events/events.js +0 -147
  626. package/core/events/events_abstract.js +0 -133
  627. package/core/events/events_block_base.js +0 -70
  628. package/core/events/events_block_drag.js +0 -89
  629. package/core/events/events_bubble_open.js +0 -90
  630. package/core/events/events_comment_base.js +0 -121
  631. package/core/events/events_marker_move.js +0 -110
  632. package/core/events/events_selected.js +0 -83
  633. package/core/events/events_toolbox_item_select.js +0 -84
  634. package/core/events/events_trashcan_open.js +0 -73
  635. package/core/events/events_var_base.js +0 -70
  636. package/core/events/events_viewport.js +0 -107
  637. package/core/events/workspace_events.js +0 -93
  638. package/core/field_angle.js +0 -591
  639. package/core/field_checkbox.js +0 -255
  640. package/core/field_colour.js +0 -717
  641. package/core/field_image.js +0 -304
  642. package/core/field_label.js +0 -149
  643. package/core/field_label_serializable.js +0 -80
  644. package/core/field_textinput.js +0 -619
  645. package/core/flyout_button.js +0 -356
  646. package/core/grid.js +0 -226
  647. package/core/icon.js +0 -225
  648. package/core/input.js +0 -335
  649. package/core/interfaces/i_ast_node_location_svg.js +0 -45
  650. package/core/interfaces/i_ast_node_location_with_block.js +0 -41
  651. package/core/interfaces/i_autohideable.js +0 -40
  652. package/core/interfaces/i_block_dragger.js +0 -66
  653. package/core/interfaces/i_bounded_element.js +0 -45
  654. package/core/interfaces/i_bubble.js +0 -95
  655. package/core/interfaces/i_collapsible_toolbox_item.js +0 -53
  656. package/core/interfaces/i_connection_checker.js +0 -104
  657. package/core/interfaces/i_contextmenu.js +0 -32
  658. package/core/interfaces/i_copyable.js +0 -49
  659. package/core/interfaces/i_delete_area.js +0 -50
  660. package/core/interfaces/i_drag_target.js +0 -88
  661. package/core/interfaces/i_flyout.js +0 -201
  662. package/core/interfaces/i_keyboard_accessible.js +0 -38
  663. package/core/interfaces/i_metrics_manager.js +0 -154
  664. package/core/interfaces/i_positionable.js +0 -51
  665. package/core/interfaces/i_selectable.js +0 -51
  666. package/core/interfaces/i_selectable_toolbox_item.js +0 -73
  667. package/core/interfaces/i_serializer.js +0 -77
  668. package/core/interfaces/i_styleable.js +0 -39
  669. package/core/interfaces/i_toolbox.js +0 -142
  670. package/core/interfaces/i_toolbox_item.js +0 -85
  671. package/core/marker_manager.js +0 -213
  672. package/core/menuitem.js +0 -292
  673. package/core/names.js +0 -293
  674. package/core/registry.js +0 -384
  675. package/core/renderers/common/block_rendering.js +0 -170
  676. package/core/renderers/common/constants.js +0 -1250
  677. package/core/renderers/common/i_path_object.js +0 -162
  678. package/core/renderers/common/marker_svg.js +0 -721
  679. package/core/renderers/common/path_object.js +0 -283
  680. package/core/renderers/common/renderer.js +0 -305
  681. package/core/renderers/geras/constants.js +0 -73
  682. package/core/renderers/geras/geras.js +0 -36
  683. package/core/renderers/geras/measurables/inline_input.js +0 -58
  684. package/core/renderers/geras/measurables/statement_input.js +0 -57
  685. package/core/renderers/geras/renderer.js +0 -149
  686. package/core/renderers/measurables/base.js +0 -64
  687. package/core/renderers/measurables/bottom_row.js +0 -138
  688. package/core/renderers/measurables/connection.js +0 -56
  689. package/core/renderers/measurables/external_value_input.js +0 -70
  690. package/core/renderers/measurables/field.js +0 -71
  691. package/core/renderers/measurables/in_row_spacer.js +0 -47
  692. package/core/renderers/measurables/input_connection.js +0 -75
  693. package/core/renderers/measurables/next_connection.js +0 -50
  694. package/core/renderers/measurables/output_connection.js +0 -61
  695. package/core/renderers/measurables/previous_connection.js +0 -50
  696. package/core/renderers/measurables/round_corner.js +0 -52
  697. package/core/renderers/measurables/row.js +0 -247
  698. package/core/renderers/measurables/spacer_row.js +0 -69
  699. package/core/renderers/measurables/square_corner.js +0 -50
  700. package/core/renderers/measurables/top_row.js +0 -143
  701. package/core/renderers/measurables/types.js +0 -353
  702. package/core/renderers/minimalist/drawer.js +0 -42
  703. package/core/renderers/minimalist/info.js +0 -54
  704. package/core/renderers/minimalist/minimalist.js +0 -26
  705. package/core/renderers/minimalist/renderer.js +0 -80
  706. package/core/renderers/thrasos/renderer.js +0 -53
  707. package/core/renderers/thrasos/thrasos.js +0 -22
  708. package/core/renderers/zelos/marker_svg.js +0 -179
  709. package/core/renderers/zelos/measurables/bottom_row.js +0 -66
  710. package/core/renderers/zelos/measurables/row_elements.js +0 -46
  711. package/core/renderers/zelos/path_object.js +0 -247
  712. package/core/renderers/zelos/renderer.js +0 -147
  713. package/core/renderers/zelos/zelos.js +0 -38
  714. package/core/serialization/exceptions.js +0 -144
  715. package/core/shortcut_registry.js +0 -366
  716. package/core/theme/themes.js +0 -23
  717. package/core/theme.js +0 -228
  718. package/core/theme_manager.js +0 -211
  719. package/core/toolbox/category.js +0 -751
  720. package/core/toolbox/collapsible_category.js +0 -311
  721. package/core/toolbox/separator.js +0 -133
  722. package/core/toolbox/toolbox_item.js +0 -173
  723. package/core/touch.js +0 -285
  724. package/core/utils/coordinate.js +0 -138
  725. package/core/utils/global.js +0 -41
  726. package/core/utils/keycodes.js +0 -172
  727. package/core/utils/metrics.js +0 -154
  728. package/core/utils/svg.js +0 -186
  729. package/core/utils/toolbox.js +0 -459
  730. package/core/utils/useragent.js +0 -197
  731. package/core/utils.js +0 -383
  732. package/core/variable_model.js +0 -96
  733. package/core/widgetdiv.js +0 -290
  734. package/core/workspace.js +0 -836
  735. package/core/workspace_comment.js +0 -400
  736. package/core/workspace_dragger.js +0 -115
@@ -10,188 +10,133 @@
10
10
  * The drop-down can be kept inside the workspace, animate in/out, etc.
11
11
  */
12
12
 
13
- 'use strict';
14
-
15
13
  /**
16
14
  * A div that floats on top of the workspace, for drop-down menus.
17
15
  * @class
18
16
  */
19
- goog.module('Blockly.dropDownDiv');
20
-
21
- const common = goog.require('Blockly.common');
22
- const dom = goog.require('Blockly.utils.dom');
23
- const math = goog.require('Blockly.utils.math');
24
- const style = goog.require('Blockly.utils.style');
25
- /* eslint-disable-next-line no-unused-vars */
26
- const {BlockSvg} = goog.requireType('Blockly.BlockSvg');
27
- /* eslint-disable-next-line no-unused-vars */
28
- const {Field} = goog.requireType('Blockly.Field');
29
- const {Rect} = goog.require('Blockly.utils.Rect');
30
- /* eslint-disable-next-line no-unused-vars */
31
- const {Size} = goog.requireType('Blockly.utils.Size');
32
- /* eslint-disable-next-line no-unused-vars */
33
- const {WorkspaceSvg} = goog.requireType('Blockly.WorkspaceSvg');
17
+ import * as goog from '../closure/goog/goog.js';
18
+ goog.declareModuleId('Blockly.dropDownDiv');
19
+
20
+ import type {BlockSvg} from './block_svg.js';
21
+ import * as common from './common.js';
22
+ import type {Field} from './field.js';
23
+ import * as dom from './utils/dom.js';
24
+ import * as math from './utils/math.js';
25
+ import {Rect} from './utils/rect.js';
26
+ import type {Size} from './utils/size.js';
27
+ import * as style from './utils/style.js';
28
+ import type {WorkspaceSvg} from './workspace_svg.js';
34
29
 
35
30
 
36
31
  /**
37
32
  * Arrow size in px. Should match the value in CSS
38
33
  * (need to position pre-render).
39
- * @type {number}
40
- * @const
41
34
  */
42
- const ARROW_SIZE = 16;
43
- exports.ARROW_SIZE = ARROW_SIZE;
35
+ export const ARROW_SIZE = 16;
44
36
 
45
37
  /**
46
38
  * Drop-down border size in px. Should match the value in CSS (need to position
47
39
  * the arrow).
48
- * @type {number}
49
- * @const
50
40
  */
51
- const BORDER_SIZE = 1;
52
- exports.BORDER_SIZE = BORDER_SIZE;
41
+ export const BORDER_SIZE = 1;
53
42
 
54
43
  /**
55
44
  * Amount the arrow must be kept away from the edges of the main drop-down div,
56
45
  * in px.
57
- * @type {number}
58
- * @const
59
46
  */
60
- const ARROW_HORIZONTAL_PADDING = 12;
61
- exports.ARROW_HORIZONTAL_PADDING = ARROW_HORIZONTAL_PADDING;
47
+ export const ARROW_HORIZONTAL_PADDING = 12;
62
48
 
63
- /**
64
- * Amount drop-downs should be padded away from the source, in px.
65
- * @type {number}
66
- * @const
67
- */
68
- const PADDING_Y = 16;
69
- exports.PADDING_Y = PADDING_Y;
49
+ /** Amount drop-downs should be padded away from the source, in px. */
50
+ export const PADDING_Y = 16;
70
51
 
71
- /**
72
- * Length of animations in seconds.
73
- * @type {number}
74
- * @const
75
- */
76
- const ANIMATION_TIME = 0.25;
77
- exports.ANIMATION_TIME = ANIMATION_TIME;
52
+ /** Length of animations in seconds. */
53
+ export const ANIMATION_TIME = 0.25;
78
54
 
79
55
  /**
80
56
  * Timer for animation out, to be cleared if we need to immediately hide
81
57
  * without disrupting new shows.
82
- * @type {?number}
83
58
  */
84
- let animateOutTimer = null;
59
+ let animateOutTimer: AnyDuringMigration = null;
85
60
 
86
- /**
87
- * Callback for when the drop-down is hidden.
88
- * @type {?Function}
89
- */
90
- let onHide = null;
61
+ /** Callback for when the drop-down is hidden. */
62
+ let onHide: Function|null = null;
91
63
 
92
- /**
93
- * A class name representing the current owner's workspace renderer.
94
- * @type {string}
95
- */
64
+ /** A class name representing the current owner's workspace renderer. */
96
65
  let renderedClassName = '';
97
66
 
98
- /**
99
- * A class name representing the current owner's workspace theme.
100
- * @type {string}
101
- */
67
+ /** A class name representing the current owner's workspace theme. */
102
68
  let themeClassName = '';
103
69
 
104
- /**
105
- * The content element.
106
- * @type {!HTMLDivElement}
107
- */
108
- let div;
70
+ /** The content element. */
71
+ let div: HTMLDivElement;
109
72
 
110
- /**
111
- * The content element.
112
- * @type {!HTMLDivElement}
113
- */
114
- let content;
73
+ /** The content element. */
74
+ let content: HTMLDivElement;
115
75
 
116
- /**
117
- * The arrow element.
118
- * @type {!HTMLDivElement}
119
- */
120
- let arrow;
76
+ /** The arrow element. */
77
+ let arrow: HTMLDivElement;
121
78
 
122
79
  /**
123
80
  * Drop-downs will appear within the bounds of this element if possible.
124
81
  * Set in setBoundsElement.
125
- * @type {?Element}
126
82
  */
127
- let boundsElement = null;
83
+ let boundsElement: Element|null = null;
128
84
 
129
- /**
130
- * The object currently using the drop-down.
131
- * @type {?Object}
132
- */
133
- let owner = null;
85
+ /** The object currently using the drop-down. */
86
+ let owner: AnyDuringMigration|null = null;
134
87
 
135
- /**
136
- * Whether the dropdown was positioned to a field or the source block.
137
- * @type {?boolean}
138
- */
139
- let positionToField = null;
88
+ /** Whether the dropdown was positioned to a field or the source block. */
89
+ let positionToField: boolean|null = null;
140
90
 
141
91
  /**
142
92
  * Dropdown bounds info object used to encapsulate sizing information about a
143
93
  * bounding element (bounding box and width/height).
144
- * @typedef {{
145
- * top:number,
146
- * left:number,
147
- * bottom:number,
148
- * right:number,
149
- * width:number,
150
- * height:number
151
- * }}
152
- */
153
- let BoundsInfo;
154
- exports.BoundsInfo = BoundsInfo;
155
-
156
- /**
157
- * Dropdown position metrics.
158
- * @typedef {{
159
- * initialX:number,
160
- * initialY:number,
161
- * finalX:number,
162
- * finalY:number,
163
- * arrowX:?number,
164
- * arrowY:?number,
165
- * arrowAtTop:?boolean,
166
- * arrowVisible:boolean
167
- * }}
168
94
  */
169
- let PositionMetrics;
170
- exports.PositionMetrics = PositionMetrics;
95
+ export interface BoundsInfo {
96
+ top: number;
97
+ left: number;
98
+ bottom: number;
99
+ right: number;
100
+ width: number;
101
+ height: number;
102
+ }
103
+
104
+ /** Dropdown position metrics. */
105
+ export interface PositionMetrics {
106
+ initialX: number;
107
+ initialY: number;
108
+ finalX: number;
109
+ finalY: number;
110
+ arrowX: number|null;
111
+ arrowY: number|null;
112
+ arrowAtTop: boolean|null;
113
+ arrowVisible: boolean;
114
+ }
171
115
 
172
116
  /**
173
117
  * Create and insert the DOM element for this div.
174
- * @package
118
+ * @internal
175
119
  */
176
- const createDom = function() {
120
+ export function createDom() {
177
121
  if (div) {
178
122
  return; // Already created.
179
123
  }
180
- div = /** @type {!HTMLDivElement} */ (document.createElement('div'));
124
+ div = document.createElement('div');
181
125
  div.className = 'blocklyDropDownDiv';
182
126
  const parentDiv = common.getParentContainer() || document.body;
183
127
  parentDiv.appendChild(div);
184
128
 
185
- content = /** @type {!HTMLDivElement} */ (document.createElement('div'));
129
+ content = document.createElement('div');
186
130
  content.className = 'blocklyDropDownContent';
187
131
  div.appendChild(content);
188
132
 
189
- arrow = /** @type {!HTMLDivElement} */ (document.createElement('div'));
133
+ arrow = document.createElement('div');
190
134
  arrow.className = 'blocklyDropDownArrow';
191
135
  div.appendChild(arrow);
192
136
 
193
- div.style.opacity = 0;
194
-
137
+ // AnyDuringMigration because: Type 'number' is not assignable to type
138
+ // 'string'.
139
+ div.style.opacity = 0 as AnyDuringMigration;
195
140
  // Transition animation for transform: translate() and opacity.
196
141
  div.style.transition = 'transform ' + ANIMATION_TIME + 's, ' +
197
142
  'opacity ' + ANIMATION_TIME + 's';
@@ -204,128 +149,114 @@ const createDom = function() {
204
149
  div.addEventListener('focusout', function() {
205
150
  dom.removeClass(div, 'blocklyFocused');
206
151
  });
207
- };
208
- exports.createDom = createDom;
152
+ }
209
153
 
210
154
  /**
211
155
  * Set an element to maintain bounds within. Drop-downs will appear
212
156
  * within the box of this element if possible.
213
- * @param {?Element} boundsElem Element to bind drop-down to.
157
+ * @param boundsElem Element to bind drop-down to.
214
158
  */
215
- const setBoundsElement = function(boundsElem) {
159
+ export function setBoundsElement(boundsElem: Element|null) {
216
160
  boundsElement = boundsElem;
217
- };
218
- exports.setBoundsElement = setBoundsElement;
161
+ }
219
162
 
220
163
  /**
221
164
  * Provide the div for inserting content into the drop-down.
222
- * @return {!Element} Div to populate with content.
165
+ * @return Div to populate with content.
223
166
  */
224
- const getContentDiv = function() {
167
+ export function getContentDiv(): Element {
225
168
  return content;
226
- };
227
- exports.getContentDiv = getContentDiv;
169
+ }
228
170
 
229
- /**
230
- * Clear the content of the drop-down.
231
- */
232
- const clearContent = function() {
171
+ /** Clear the content of the drop-down. */
172
+ export function clearContent() {
233
173
  content.textContent = '';
234
174
  content.style.width = '';
235
- };
236
- exports.clearContent = clearContent;
175
+ }
237
176
 
238
177
  /**
239
178
  * Set the colour for the drop-down.
240
- * @param {string} backgroundColour Any CSS colour for the background.
241
- * @param {string} borderColour Any CSS colour for the border.
179
+ * @param backgroundColour Any CSS colour for the background.
180
+ * @param borderColour Any CSS colour for the border.
242
181
  */
243
- const setColour = function(backgroundColour, borderColour) {
182
+ export function setColour(backgroundColour: string, borderColour: string) {
244
183
  div.style.backgroundColor = backgroundColour;
245
184
  div.style.borderColor = borderColour;
246
- };
247
- exports.setColour = setColour;
185
+ }
248
186
 
249
187
  /**
250
188
  * Shortcut to show and place the drop-down with positioning determined
251
189
  * by a particular block. The primary position will be below the block,
252
190
  * and the secondary position above the block. Drop-down will be
253
191
  * constrained to the block's workspace.
254
- * @param {!Field} field The field showing the drop-down.
255
- * @param {!BlockSvg} block Block to position the drop-down around.
256
- * @param {Function=} opt_onHide Optional callback for when the drop-down is
257
- * hidden.
258
- * @param {number=} opt_secondaryYOffset Optional Y offset for above-block
259
- * positioning.
260
- * @return {boolean} True if the menu rendered below block; false if above.
261
- */
262
- const showPositionedByBlock = function(
263
- field, block, opt_onHide, opt_secondaryYOffset) {
192
+ * @param field The field showing the drop-down.
193
+ * @param block Block to position the drop-down around.
194
+ * @param opt_onHide Optional callback for when the drop-down is hidden.
195
+ * @param opt_secondaryYOffset Optional Y offset for above-block positioning.
196
+ * @return True if the menu rendered below block; false if above.
197
+ */
198
+ export function showPositionedByBlock(
199
+ field: Field, block: BlockSvg, opt_onHide?: Function,
200
+ opt_secondaryYOffset?: number): boolean {
264
201
  return showPositionedByRect(
265
202
  getScaledBboxOfBlock(block), field, opt_onHide, opt_secondaryYOffset);
266
- };
267
- exports.showPositionedByBlock = showPositionedByBlock;
203
+ }
268
204
 
269
205
  /**
270
206
  * Shortcut to show and place the drop-down with positioning determined
271
207
  * by a particular field. The primary position will be below the field,
272
208
  * and the secondary position above the field. Drop-down will be
273
209
  * constrained to the block's workspace.
274
- * @param {!Field} field The field to position the dropdown against.
275
- * @param {Function=} opt_onHide Optional callback for when the drop-down is
276
- * hidden.
277
- * @param {number=} opt_secondaryYOffset Optional Y offset for above-block
278
- * positioning.
279
- * @return {boolean} True if the menu rendered below block; false if above.
280
- */
281
- const showPositionedByField = function(
282
- field, opt_onHide, opt_secondaryYOffset) {
210
+ * @param field The field to position the dropdown against.
211
+ * @param opt_onHide Optional callback for when the drop-down is hidden.
212
+ * @param opt_secondaryYOffset Optional Y offset for above-block positioning.
213
+ * @return True if the menu rendered below block; false if above.
214
+ */
215
+ export function showPositionedByField(
216
+ field: Field, opt_onHide?: Function,
217
+ opt_secondaryYOffset?: number): boolean {
283
218
  positionToField = true;
284
219
  return showPositionedByRect(
285
220
  getScaledBboxOfField(field), field, opt_onHide, opt_secondaryYOffset);
286
- };
287
- exports.showPositionedByField = showPositionedByField;
288
-
221
+ }
289
222
  /**
290
223
  * Get the scaled bounding box of a block.
291
- * @param {!BlockSvg} block The block.
292
- * @return {!Rect} The scaled bounding box of the block.
224
+ * @param block The block.
225
+ * @return The scaled bounding box of the block.
293
226
  */
294
- const getScaledBboxOfBlock = function(block) {
227
+ function getScaledBboxOfBlock(block: BlockSvg): Rect {
295
228
  const blockSvg = block.getSvgRoot();
296
- const bBox = blockSvg.getBBox();
297
229
  const scale = block.workspace.scale;
298
- const scaledHeight = bBox.height * scale;
299
- const scaledWidth = bBox.width * scale;
230
+ const scaledHeight = block.height * scale;
231
+ const scaledWidth = block.width * scale;
300
232
  const xy = style.getPageOffset(blockSvg);
301
233
  return new Rect(xy.y, xy.y + scaledHeight, xy.x, xy.x + scaledWidth);
302
- };
234
+ }
303
235
 
304
236
  /**
305
237
  * Get the scaled bounding box of a field.
306
- * @param {!Field} field The field.
307
- * @return {!Rect} The scaled bounding box of the field.
238
+ * @param field The field.
239
+ * @return The scaled bounding box of the field.
308
240
  */
309
- const getScaledBboxOfField = function(field) {
241
+ function getScaledBboxOfField(field: Field): Rect {
310
242
  const bBox = field.getScaledBBox();
311
243
  return new Rect(bBox.top, bBox.bottom, bBox.left, bBox.right);
312
- };
244
+ }
313
245
 
314
246
  /**
315
247
  * Helper method to show and place the drop-down with positioning determined
316
248
  * by a scaled bounding box. The primary position will be below the rect,
317
249
  * and the secondary position above the rect. Drop-down will be constrained to
318
250
  * the block's workspace.
319
- * @param {!Rect} bBox The scaled bounding box.
320
- * @param {!Field} field The field to position the dropdown against.
321
- * @param {Function=} opt_onHide Optional callback for when the drop-down is
322
- * hidden.
323
- * @param {number=} opt_secondaryYOffset Optional Y offset for above-block
324
- * positioning.
325
- * @return {boolean} True if the menu rendered below block; false if above.
326
- */
327
- const showPositionedByRect = function(
328
- bBox, field, opt_onHide, opt_secondaryYOffset) {
251
+ * @param bBox The scaled bounding box.
252
+ * @param field The field to position the dropdown against.
253
+ * @param opt_onHide Optional callback for when the drop-down is hidden.
254
+ * @param opt_secondaryYOffset Optional Y offset for above-block positioning.
255
+ * @return True if the menu rendered below block; false if above.
256
+ */
257
+ function showPositionedByRect(
258
+ bBox: Rect, field: Field, opt_onHide?: Function,
259
+ opt_secondaryYOffset?: number): boolean {
329
260
  // If we can fit it, render below the block.
330
261
  const primaryX = bBox.left + (bBox.right - bBox.left) / 2;
331
262
  const primaryY = bBox.bottom;
@@ -335,19 +266,17 @@ const showPositionedByRect = function(
335
266
  if (opt_secondaryYOffset) {
336
267
  secondaryY += opt_secondaryYOffset;
337
268
  }
338
- const sourceBlock = /** @type {!BlockSvg} */ (field.getSourceBlock());
269
+ const sourceBlock = field.getSourceBlock() as BlockSvg;
339
270
  // Set bounds to main workspace; show the drop-down.
340
271
  let workspace = sourceBlock.workspace;
341
272
  while (workspace.options.parentWorkspace) {
342
- workspace =
343
- /** @type {!WorkspaceSvg} */ (workspace.options.parentWorkspace);
273
+ workspace = workspace.options.parentWorkspace;
344
274
  }
345
- setBoundsElement(
346
- /** @type {?Element} */ (workspace.getParentSvg().parentNode));
275
+ setBoundsElement(workspace.getParentSvg().parentNode as Element | null);
347
276
  return show(
348
277
  field, sourceBlock.RTL, primaryX, primaryY, secondaryX, secondaryY,
349
278
  opt_onHide);
350
- };
279
+ }
351
280
 
352
281
  /**
353
282
  * Show and place the drop-down.
@@ -357,28 +286,26 @@ const showPositionedByRect = function(
357
286
  * will point there, and the container will be positioned below it.
358
287
  * If we can't maintain the container bounds at the primary point, fall-back to
359
288
  * the secondary point and position above.
360
- * @param {?Object} newOwner The object showing the drop-down
361
- * @param {boolean} rtl Right-to-left (true) or left-to-right (false).
362
- * @param {number} primaryX Desired origin point x, in absolute px.
363
- * @param {number} primaryY Desired origin point y, in absolute px.
364
- * @param {number} secondaryX Secondary/alternative origin point x, in absolute
365
- * px.
366
- * @param {number} secondaryY Secondary/alternative origin point y, in absolute
367
- * px.
368
- * @param {Function=} opt_onHide Optional callback for when the drop-down is
369
- * hidden.
370
- * @return {boolean} True if the menu rendered at the primary origin point.
371
- * @package
372
- */
373
- const show = function(
374
- newOwner, rtl, primaryX, primaryY, secondaryX, secondaryY, opt_onHide) {
289
+ * @param newOwner The object showing the drop-down
290
+ * @param rtl Right-to-left (true) or left-to-right (false).
291
+ * @param primaryX Desired origin point x, in absolute px.
292
+ * @param primaryY Desired origin point y, in absolute px.
293
+ * @param secondaryX Secondary/alternative origin point x, in absolute px.
294
+ * @param secondaryY Secondary/alternative origin point y, in absolute px.
295
+ * @param opt_onHide Optional callback for when the drop-down is hidden.
296
+ * @return True if the menu rendered at the primary origin point.
297
+ * @internal
298
+ */
299
+ export function show(
300
+ newOwner: AnyDuringMigration|null, rtl: boolean, primaryX: number,
301
+ primaryY: number, secondaryX: number, secondaryY: number,
302
+ opt_onHide?: Function): boolean {
375
303
  owner = newOwner;
376
304
  onHide = opt_onHide || null;
377
305
  // Set direction.
378
306
  div.style.direction = rtl ? 'rtl' : 'ltr';
379
307
 
380
- const mainWorkspace =
381
- /** @type {!WorkspaceSvg} */ (common.getMainWorkspace());
308
+ const mainWorkspace = common.getMainWorkspace() as WorkspaceSvg;
382
309
  renderedClassName = mainWorkspace.getRenderer().getClassName();
383
310
  themeClassName = mainWorkspace.getTheme().getClassName();
384
311
  dom.addClass(div, renderedClassName);
@@ -392,23 +319,21 @@ const show = function(
392
319
  // making the dropdown appear to fly in from (0, 0).
393
320
  // Using both `left`, `top` for the initial translation and then `translate`
394
321
  // for the animated transition to final X, Y is a workaround.
395
-
396
322
  return positionInternal(primaryX, primaryY, secondaryX, secondaryY);
397
- };
398
- exports.show = show;
323
+ }
399
324
 
400
325
  const internal = {};
401
326
 
402
327
  /**
403
328
  * Get sizing info about the bounding element.
404
- * @return {!BoundsInfo} An object containing size
405
- * information about the bounding element (bounding box and width/height).
329
+ * @return An object containing size information about the bounding element
330
+ * (bounding box and width/height).
406
331
  */
407
- internal.getBoundsInfo = function() {
408
- const boundPosition = style.getPageOffset(
409
- /** @type {!Element} */ (boundsElement));
410
- const boundSize = style.getSize(
411
- /** @type {!Element} */ (boundsElement));
332
+ // AnyDuringMigration because: Property 'getBoundsInfo' does not exist on type
333
+ // '{}'.
334
+ (internal as AnyDuringMigration).getBoundsInfo = function(): BoundsInfo {
335
+ const boundPosition = style.getPageOffset(boundsElement as Element);
336
+ const boundSize = style.getSize(boundsElement as Element);
412
337
 
413
338
  return {
414
339
  left: boundPosition.x,
@@ -423,20 +348,22 @@ internal.getBoundsInfo = function() {
423
348
  /**
424
349
  * Helper to position the drop-down and the arrow, maintaining bounds.
425
350
  * See explanation of origin points in show.
426
- * @param {number} primaryX Desired origin point x, in absolute px.
427
- * @param {number} primaryY Desired origin point y, in absolute px.
428
- * @param {number} secondaryX Secondary/alternative origin point x,
429
- * in absolute px.
430
- * @param {number} secondaryY Secondary/alternative origin point y,
431
- * in absolute px.
432
- * @return {!PositionMetrics} Various final metrics,
433
- * including rendered positions for drop-down and arrow.
434
- */
435
- internal.getPositionMetrics = function(
436
- primaryX, primaryY, secondaryX, secondaryY) {
437
- const boundsInfo = internal.getBoundsInfo();
438
- const divSize = style.getSize(
439
- /** @type {!Element} */ (div));
351
+ * @param primaryX Desired origin point x, in absolute px.
352
+ * @param primaryY Desired origin point y, in absolute px.
353
+ * @param secondaryX Secondary/alternative origin point x, in absolute px.
354
+ * @param secondaryY Secondary/alternative origin point y, in absolute px.
355
+ * @return Various final metrics, including rendered positions for drop-down and
356
+ * arrow.
357
+ */
358
+ // AnyDuringMigration because: Property 'getPositionMetrics' does not exist on
359
+ // type '{}'.
360
+ (internal as AnyDuringMigration).getPositionMetrics = function(
361
+ primaryX: number, primaryY: number, secondaryX: number,
362
+ secondaryY: number): PositionMetrics {
363
+ // AnyDuringMigration because: Property 'getBoundsInfo' does not exist on
364
+ // type '{}'.
365
+ const boundsInfo = (internal as AnyDuringMigration).getBoundsInfo();
366
+ const divSize = style.getSize(div as Element);
440
367
 
441
368
  // Can we fit in-bounds below the target?
442
369
  if (primaryY + divSize.height < boundsInfo.bottom) {
@@ -461,17 +388,18 @@ internal.getPositionMetrics = function(
461
388
 
462
389
  /**
463
390
  * Get the metrics for positioning the div below the source.
464
- * @param {number} primaryX Desired origin point x, in absolute px.
465
- * @param {number} primaryY Desired origin point y, in absolute px.
466
- * @param {!BoundsInfo} boundsInfo An object containing size
467
- * information about the bounding element (bounding box and width/height).
468
- * @param {!Size} divSize An object containing information about
469
- * the size of the DropDownDiv (width & height).
470
- * @return {!PositionMetrics} Various final metrics,
471
- * including rendered positions for drop-down and arrow.
472
- */
473
- const getPositionBelowMetrics = function(
474
- primaryX, primaryY, boundsInfo, divSize) {
391
+ * @param primaryX Desired origin point x, in absolute px.
392
+ * @param primaryY Desired origin point y, in absolute px.
393
+ * @param boundsInfo An object containing size information about the bounding
394
+ * element (bounding box and width/height).
395
+ * @param divSize An object containing information about the size of the
396
+ * DropDownDiv (width & height).
397
+ * @return Various final metrics, including rendered positions for drop-down and
398
+ * arrow.
399
+ */
400
+ function getPositionBelowMetrics(
401
+ primaryX: number, primaryY: number, boundsInfo: BoundsInfo,
402
+ divSize: Size): PositionMetrics {
475
403
  const xCoords =
476
404
  getPositionX(primaryX, boundsInfo.left, boundsInfo.right, divSize.width);
477
405
 
@@ -482,59 +410,59 @@ const getPositionBelowMetrics = function(
482
410
  initialX: xCoords.divX,
483
411
  initialY: primaryY,
484
412
  finalX: xCoords.divX, // X position remains constant during animation.
485
- finalY: finalY,
413
+ finalY,
486
414
  arrowX: xCoords.arrowX,
487
- arrowY: arrowY,
415
+ arrowY,
488
416
  arrowAtTop: true,
489
417
  arrowVisible: true,
490
418
  };
491
- };
419
+ }
492
420
 
493
421
  /**
494
422
  * Get the metrics for positioning the div above the source.
495
- * @param {number} secondaryX Secondary/alternative origin point x,
496
- * in absolute px.
497
- * @param {number} secondaryY Secondary/alternative origin point y,
498
- * in absolute px.
499
- * @param {!BoundsInfo} boundsInfo An object containing size
500
- * information about the bounding element (bounding box and width/height).
501
- * @param {!Size} divSize An object containing information about
502
- * the size of the DropDownDiv (width & height).
503
- * @return {!PositionMetrics} Various final metrics,
504
- * including rendered positions for drop-down and arrow.
505
- */
506
- const getPositionAboveMetrics = function(
507
- secondaryX, secondaryY, boundsInfo, divSize) {
423
+ * @param secondaryX Secondary/alternative origin point x, in absolute px.
424
+ * @param secondaryY Secondary/alternative origin point y, in absolute px.
425
+ * @param boundsInfo An object containing size information about the bounding
426
+ * element (bounding box and width/height).
427
+ * @param divSize An object containing information about the size of the
428
+ * DropDownDiv (width & height).
429
+ * @return Various final metrics, including rendered positions for drop-down and
430
+ * arrow.
431
+ */
432
+ function getPositionAboveMetrics(
433
+ secondaryX: number, secondaryY: number, boundsInfo: BoundsInfo,
434
+ divSize: Size): PositionMetrics {
508
435
  const xCoords = getPositionX(
509
436
  secondaryX, boundsInfo.left, boundsInfo.right, divSize.width);
510
437
 
511
- const arrowY = divSize.height - (BORDER_SIZE * 2) - (ARROW_SIZE / 2);
438
+ const arrowY = divSize.height - BORDER_SIZE * 2 - ARROW_SIZE / 2;
512
439
  const finalY = secondaryY - divSize.height - PADDING_Y;
513
440
  const initialY = secondaryY - divSize.height; // No padding on Y.
514
441
 
515
442
  return {
516
443
  initialX: xCoords.divX,
517
- initialY: initialY,
444
+ initialY,
518
445
  finalX: xCoords.divX, // X position remains constant during animation.
519
- finalY: finalY,
446
+ finalY,
520
447
  arrowX: xCoords.arrowX,
521
- arrowY: arrowY,
448
+ arrowY,
522
449
  arrowAtTop: false,
523
450
  arrowVisible: true,
524
451
  };
525
- };
452
+ }
526
453
 
527
454
  /**
528
455
  * Get the metrics for positioning the div at the top of the page.
529
- * @param {number} sourceX Desired origin point x, in absolute px.
530
- * @param {!BoundsInfo} boundsInfo An object containing size
531
- * information about the bounding element (bounding box and width/height).
532
- * @param {!Size} divSize An object containing information about
533
- * the size of the DropDownDiv (width & height).
534
- * @return {!PositionMetrics} Various final metrics,
535
- * including rendered positions for drop-down and arrow.
536
- */
537
- const getPositionTopOfPageMetrics = function(sourceX, boundsInfo, divSize) {
456
+ * @param sourceX Desired origin point x, in absolute px.
457
+ * @param boundsInfo An object containing size information about the bounding
458
+ * element (bounding box and width/height).
459
+ * @param divSize An object containing information about the size of the
460
+ * DropDownDiv (width & height).
461
+ * @return Various final metrics, including rendered positions for drop-down and
462
+ * arrow.
463
+ */
464
+ function getPositionTopOfPageMetrics(
465
+ sourceX: number, boundsInfo: BoundsInfo, divSize: Size): PositionMetrics {
538
466
  const xCoords =
539
467
  getPositionX(sourceX, boundsInfo.left, boundsInfo.right, divSize.width);
540
468
 
@@ -549,22 +477,22 @@ const getPositionTopOfPageMetrics = function(sourceX, boundsInfo, divSize) {
549
477
  arrowY: null,
550
478
  arrowVisible: false,
551
479
  };
552
- };
480
+ }
553
481
 
554
482
  /**
555
483
  * Get the x positions for the left side of the DropDownDiv and the arrow,
556
484
  * accounting for the bounds of the workspace.
557
- * @param {number} sourceX Desired origin point x, in absolute px.
558
- * @param {number} boundsLeft The left edge of the bounding element, in
559
- * absolute px.
560
- * @param {number} boundsRight The right edge of the bounding element, in
561
- * absolute px.
562
- * @param {number} divWidth The width of the div in px.
563
- * @return {{divX: number, arrowX: number}} An object containing metrics for
564
- * the x positions of the left side of the DropDownDiv and the arrow.
565
- * @package
566
- */
567
- const getPositionX = function(sourceX, boundsLeft, boundsRight, divWidth) {
485
+ * @param sourceX Desired origin point x, in absolute px.
486
+ * @param boundsLeft The left edge of the bounding element, in absolute px.
487
+ * @param boundsRight The right edge of the bounding element, in absolute px.
488
+ * @param divWidth The width of the div in px.
489
+ * @return An object containing metrics for the x positions of the left side of
490
+ * the DropDownDiv and the arrow.
491
+ * @internal
492
+ */
493
+ export function getPositionX(
494
+ sourceX: number, boundsLeft: number, boundsRight: number,
495
+ divWidth: number): {divX: number, arrowX: number} {
568
496
  let divX = sourceX;
569
497
  // Offset the topLeft coord so that the dropdowndiv is centered.
570
498
  divX -= divWidth / 2;
@@ -581,27 +509,27 @@ const getPositionX = function(sourceX, boundsLeft, boundsRight, divWidth) {
581
509
  relativeArrowX = math.clamp(
582
510
  horizPadding, relativeArrowX, divWidth - horizPadding - ARROW_SIZE);
583
511
 
584
- return {arrowX: relativeArrowX, divX: divX};
585
- };
586
- exports.getPositionX = getPositionX;
512
+ return {arrowX: relativeArrowX, divX};
513
+ }
587
514
 
588
515
  /**
589
516
  * Is the container visible?
590
- * @return {boolean} True if visible.
517
+ * @return True if visible.
591
518
  */
592
- const isVisible = function() {
519
+ export function isVisible(): boolean {
593
520
  return !!owner;
594
- };
595
- exports.isVisible = isVisible;
521
+ }
596
522
 
597
523
  /**
598
524
  * Hide the menu only if it is owned by the provided object.
599
- * @param {?Object} divOwner Object which must be owning the drop-down to hide.
600
- * @param {boolean=} opt_withoutAnimation True if we should hide the dropdown
601
- * without animating.
602
- * @return {boolean} True if hidden.
603
- */
604
- const hideIfOwner = function(divOwner, opt_withoutAnimation) {
525
+ * @param divOwner Object which must be owning the drop-down to hide.
526
+ * @param opt_withoutAnimation True if we should hide the dropdown without
527
+ * animating.
528
+ * @return True if hidden.
529
+ */
530
+ export function hideIfOwner(
531
+ divOwner: AnyDuringMigration|null,
532
+ opt_withoutAnimation?: boolean): boolean {
605
533
  if (owner === divOwner) {
606
534
  if (opt_withoutAnimation) {
607
535
  hideWithoutAnimation();
@@ -611,17 +539,16 @@ const hideIfOwner = function(divOwner, opt_withoutAnimation) {
611
539
  return true;
612
540
  }
613
541
  return false;
614
- };
615
- exports.hideIfOwner = hideIfOwner;
542
+ }
616
543
 
617
- /**
618
- * Hide the menu, triggering animation.
619
- */
620
- const hide = function() {
544
+ /** Hide the menu, triggering animation. */
545
+ export function hide() {
621
546
  // Start the animation by setting the translation and fading out.
622
547
  // Reset to (initialX, initialY) - i.e., no translation.
623
548
  div.style.transform = 'translate(0, 0)';
624
- div.style.opacity = 0;
549
+ // AnyDuringMigration because: Type 'number' is not assignable to type
550
+ // 'string'.
551
+ div.style.opacity = 0 as AnyDuringMigration;
625
552
  // Finish animation - reset all values to default.
626
553
  animateOutTimer = setTimeout(function() {
627
554
  hideWithoutAnimation();
@@ -630,13 +557,10 @@ const hide = function() {
630
557
  onHide();
631
558
  onHide = null;
632
559
  }
633
- };
634
- exports.hide = hide;
560
+ }
635
561
 
636
- /**
637
- * Hide the menu, without animation.
638
- */
639
- const hideWithoutAnimation = function() {
562
+ /** Hide the menu, without animation. */
563
+ export function hideWithoutAnimation() {
640
564
  if (!isVisible()) {
641
565
  return;
642
566
  }
@@ -649,7 +573,9 @@ const hideWithoutAnimation = function() {
649
573
  div.style.transform = '';
650
574
  div.style.left = '';
651
575
  div.style.top = '';
652
- div.style.opacity = 0;
576
+ // AnyDuringMigration because: Type 'number' is not assignable to type
577
+ // 'string'.
578
+ div.style.opacity = 0 as AnyDuringMigration;
653
579
  div.style.display = 'none';
654
580
  div.style.backgroundColor = '';
655
581
  div.style.borderColor = '';
@@ -669,23 +595,25 @@ const hideWithoutAnimation = function() {
669
595
  dom.removeClass(div, themeClassName);
670
596
  themeClassName = '';
671
597
  }
672
- (/** @type {!WorkspaceSvg} */ (common.getMainWorkspace())).markFocused();
673
- };
674
- exports.hideWithoutAnimation = hideWithoutAnimation;
598
+ (common.getMainWorkspace() as WorkspaceSvg).markFocused();
599
+ }
675
600
 
676
601
  /**
677
602
  * Set the dropdown div's position.
678
- * @param {number} primaryX Desired origin point x, in absolute px.
679
- * @param {number} primaryY Desired origin point y, in absolute px.
680
- * @param {number} secondaryX Secondary/alternative origin point x,
681
- * in absolute px.
682
- * @param {number} secondaryY Secondary/alternative origin point y,
683
- * in absolute px.
684
- * @return {boolean} True if the menu rendered at the primary origin point.
685
- */
686
- const positionInternal = function(primaryX, primaryY, secondaryX, secondaryY) {
603
+ * @param primaryX Desired origin point x, in absolute px.
604
+ * @param primaryY Desired origin point y, in absolute px.
605
+ * @param secondaryX Secondary/alternative origin point x, in absolute px.
606
+ * @param secondaryY Secondary/alternative origin point y, in absolute px.
607
+ * @return True if the menu rendered at the primary origin point.
608
+ */
609
+ function positionInternal(
610
+ primaryX: number, primaryY: number, secondaryX: number,
611
+ secondaryY: number): boolean {
612
+ // AnyDuringMigration because: Property 'getPositionMetrics' does not exist
613
+ // on type '{}'.
687
614
  const metrics =
688
- internal.getPositionMetrics(primaryX, primaryY, secondaryX, secondaryY);
615
+ (internal as AnyDuringMigration)
616
+ .getPositionMetrics(primaryX, primaryY, secondaryX, secondaryY);
689
617
 
690
618
  // Update arrow CSS.
691
619
  if (metrics.arrowVisible) {
@@ -711,7 +639,9 @@ const positionInternal = function(primaryX, primaryY, secondaryX, secondaryY) {
711
639
 
712
640
  // Show the div.
713
641
  div.style.display = 'block';
714
- div.style.opacity = 1;
642
+ // AnyDuringMigration because: Type 'number' is not assignable to type
643
+ // 'string'.
644
+ div.style.opacity = 1 as AnyDuringMigration;
715
645
  // Add final translate, animated through `transition`.
716
646
  // Coordinates are relative to (initialX, initialY),
717
647
  // where the drop-down is absolutely positioned.
@@ -720,22 +650,22 @@ const positionInternal = function(primaryX, primaryY, secondaryX, secondaryY) {
720
650
  div.style.transform = 'translate(' + dx + 'px,' + dy + 'px)';
721
651
 
722
652
  return !!metrics.arrowAtTop;
723
- };
653
+ }
724
654
 
725
655
  /**
726
656
  * Repositions the dropdownDiv on window resize. If it doesn't know how to
727
657
  * calculate the new position, it will just hide it instead.
728
- * @package
658
+ * @internal
729
659
  */
730
- const repositionForWindowResize = function() {
660
+ export function repositionForWindowResize() {
731
661
  // This condition mainly catches the dropdown div when it is being used as a
732
662
  // dropdown. It is important not to close it in this case because on Android,
733
663
  // when a field is focused, the soft keyboard opens triggering a window resize
734
664
  // event and we want the dropdown div to stick around so users can type into
735
665
  // it.
736
666
  if (owner) {
737
- const field = /** @type {!Field} */ (owner);
738
- const block = /** @type {!BlockSvg} */ (field.getSourceBlock());
667
+ const field = owner as Field;
668
+ const block = field.getSourceBlock() as BlockSvg;
739
669
  const bBox = positionToField ? getScaledBboxOfField(field) :
740
670
  getScaledBboxOfBlock(block);
741
671
  // If we can fit it, render below the block.
@@ -748,7 +678,6 @@ const repositionForWindowResize = function() {
748
678
  } else {
749
679
  hide();
750
680
  }
751
- };
752
- exports.repositionForWindowResize = repositionForWindowResize;
681
+ }
753
682
 
754
- exports.TEST_ONLY = internal;
683
+ export const TEST_ONLY = internal;