blockly 8.0.4 → 8.0.5-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (858) hide show
  1. package/blockly.min.js +2421 -2688
  2. package/blockly_compressed.js +1499 -1994
  3. package/blockly_compressed.js.map +1 -1
  4. package/blocks/blocks.js +3 -2
  5. package/blocks/colour.js +3 -1
  6. package/blocks/lists.js +94 -22
  7. package/blocks/logic.js +14 -6
  8. package/blocks/loops.js +5 -3
  9. package/blocks/math.js +3 -1
  10. package/blocks/procedures.js +3 -1
  11. package/blocks/text.js +14 -6
  12. package/blocks/variables.js +3 -1
  13. package/blocks/variables_dynamic.js +3 -1
  14. package/blocks.d.ts +0 -2
  15. package/blocks_compressed.js +189 -171
  16. package/blocks_compressed.js.map +1 -1
  17. package/closure/goog/base.d.ts +1 -0
  18. package/closure/goog/base_minimal.d.ts +18 -0
  19. package/closure/goog/goog.d.ts +25 -0
  20. package/core/any_aliases.d.ts +1 -0
  21. package/core/any_aliases.ts +1 -0
  22. package/core/block.d.ts +779 -0
  23. package/core/{block.js → block.ts} +610 -719
  24. package/core/block_animations.d.ts +33 -0
  25. package/core/{block_animations.js → block_animations.ts} +75 -79
  26. package/core/block_drag_surface.d.ts +111 -0
  27. package/core/{block_drag_surface.js → block_drag_surface.ts} +85 -117
  28. package/core/block_dragger.d.ts +143 -0
  29. package/core/{block_dragger.js → block_dragger.ts} +139 -176
  30. package/core/block_svg.d.ts +588 -0
  31. package/core/{block_svg.js → block_svg.ts} +494 -630
  32. package/core/blockly.d.ts +562 -0
  33. package/core/blockly.js +1 -1
  34. package/core/blockly.ts +749 -0
  35. package/core/blockly_options.d.ts +69 -0
  36. package/core/blockly_options.ts +81 -0
  37. package/core/blocks.d.ts +17 -0
  38. package/core/{blocks.js → blocks.ts} +4 -8
  39. package/core/browser_events.d.ts +85 -0
  40. package/core/{browser_events.js → browser_events.ts} +98 -93
  41. package/core/bubble.d.ts +279 -0
  42. package/core/{bubble.js → bubble.ts} +277 -370
  43. package/core/bubble_dragger.d.ts +73 -0
  44. package/core/bubble_dragger.ts +229 -0
  45. package/core/bump_objects.d.ts +34 -0
  46. package/core/{bump_objects.js → bump_objects.ts} +54 -52
  47. package/core/clipboard.d.ts +42 -0
  48. package/core/clipboard.ts +91 -0
  49. package/core/comment.d.ts +113 -0
  50. package/core/{comment.js → comment.ts} +135 -185
  51. package/core/common.d.ts +129 -0
  52. package/core/{common.js → common.ts} +105 -82
  53. package/core/component_manager.d.ts +91 -0
  54. package/core/component_manager.ts +211 -0
  55. package/core/config.d.ts +23 -0
  56. package/core/{config.js → config.ts} +12 -19
  57. package/core/connection.d.ts +232 -0
  58. package/core/{connection.js → connection.ts} +187 -237
  59. package/core/connection_checker.d.ts +78 -0
  60. package/core/{connection_checker.js → connection_checker.ts} +66 -77
  61. package/core/connection_db.d.ts +91 -0
  62. package/core/{connection_db.js → connection_db.ts} +62 -87
  63. package/core/connection_type.d.ts +15 -0
  64. package/core/{connection_type.js → connection_type.ts} +8 -12
  65. package/core/constants.d.ts +15 -0
  66. package/core/{constants.js → constants.ts} +4 -8
  67. package/core/contextmenu.d.ts +80 -0
  68. package/core/{contextmenu.js → contextmenu.ts} +118 -153
  69. package/core/contextmenu_items.d.ts +77 -0
  70. package/core/contextmenu_items.ts +576 -0
  71. package/core/contextmenu_registry.d.ts +105 -0
  72. package/core/contextmenu_registry.ts +179 -0
  73. package/core/css.d.ts +24 -0
  74. package/core/{css.js → css.ts} +16 -24
  75. package/core/delete_area.d.ts +47 -0
  76. package/core/delete_area.ts +82 -0
  77. package/core/dialog.d.ts +61 -0
  78. package/core/dialog.ts +127 -0
  79. package/core/drag_target.d.ts +63 -0
  80. package/core/drag_target.ts +94 -0
  81. package/core/dropdowndiv.d.ts +155 -0
  82. package/core/{dropdowndiv.js → dropdowndiv.ts} +262 -333
  83. package/core/events/events.d.ts +102 -0
  84. package/core/events/events.ts +123 -0
  85. package/core/events/events_abstract.d.ts +51 -0
  86. package/core/events/events_abstract.ts +112 -0
  87. package/core/events/events_block_base.d.ts +31 -0
  88. package/core/events/events_block_base.ts +65 -0
  89. package/core/events/events_block_change.d.ts +55 -0
  90. package/core/events/{events_block_change.js → events_block_change.ts} +45 -48
  91. package/core/events/events_block_create.d.ts +35 -0
  92. package/core/events/{events_block_create.js → events_block_create.ts} +30 -35
  93. package/core/events/events_block_delete.d.ts +36 -0
  94. package/core/events/{events_block_delete.js → events_block_delete.ts} +34 -39
  95. package/core/events/events_block_drag.d.ts +36 -0
  96. package/core/events/events_block_drag.ts +82 -0
  97. package/core/events/events_block_move.d.ts +51 -0
  98. package/core/events/{events_block_move.js → events_block_move.ts} +54 -50
  99. package/core/events/events_bubble_open.d.ts +35 -0
  100. package/core/events/events_bubble_open.ts +82 -0
  101. package/core/events/events_click.d.ts +36 -0
  102. package/core/events/{events_click.js → events_click.ts} +27 -30
  103. package/core/events/events_comment_base.d.ts +39 -0
  104. package/core/events/events_comment_base.ts +107 -0
  105. package/core/events/events_comment_change.d.ts +43 -0
  106. package/core/events/{events_comment_change.js → events_comment_change.ts} +31 -28
  107. package/core/events/events_comment_create.d.ts +35 -0
  108. package/core/events/{events_comment_create.js → events_comment_create.ts} +24 -26
  109. package/core/events/events_comment_delete.d.ts +35 -0
  110. package/core/events/{events_comment_delete.js → events_comment_delete.ts} +20 -24
  111. package/core/events/events_comment_move.d.ts +55 -0
  112. package/core/events/{events_comment_move.js → events_comment_move.ts} +39 -42
  113. package/core/events/events_marker_move.d.ts +40 -0
  114. package/core/events/events_marker_move.ts +99 -0
  115. package/core/events/events_selected.d.ts +34 -0
  116. package/core/events/events_selected.ts +78 -0
  117. package/core/events/events_theme_change.d.ts +30 -0
  118. package/core/events/{events_theme_change.js → events_theme_change.ts} +19 -24
  119. package/core/events/events_toolbox_item_select.d.ts +34 -0
  120. package/core/events/events_toolbox_item_select.ts +79 -0
  121. package/core/events/events_trashcan_open.d.ts +31 -0
  122. package/core/events/events_trashcan_open.ts +68 -0
  123. package/core/events/events_ui.d.ts +37 -0
  124. package/core/events/{events_ui.js → events_ui.ts} +27 -26
  125. package/core/events/events_ui_base.d.ts +26 -0
  126. package/core/events/{events_ui_base.js → events_ui_base.ts} +17 -26
  127. package/core/events/events_var_base.d.ts +31 -0
  128. package/core/events/events_var_base.ts +65 -0
  129. package/core/events/events_var_create.d.ts +35 -0
  130. package/core/events/{events_var_create.js → events_var_create.ts} +24 -25
  131. package/core/events/events_var_delete.d.ts +35 -0
  132. package/core/events/{events_var_delete.js → events_var_delete.ts} +24 -25
  133. package/core/events/events_var_rename.d.ts +36 -0
  134. package/core/events/{events_var_rename.js → events_var_rename.ts} +25 -26
  135. package/core/events/events_viewport.d.ts +39 -0
  136. package/core/events/events_viewport.ts +100 -0
  137. package/core/events/utils.d.ts +272 -0
  138. package/core/events/{utils.js → utils.ts} +148 -219
  139. package/core/events/workspace_events.d.ts +36 -0
  140. package/core/events/workspace_events.ts +86 -0
  141. package/core/extensions.d.ts +107 -0
  142. package/core/{extensions.js → extensions.ts} +153 -172
  143. package/core/field.d.ts +534 -0
  144. package/core/{field.js → field.ts} +413 -489
  145. package/core/field_angle.d.ts +176 -0
  146. package/core/field_angle.ts +563 -0
  147. package/core/field_checkbox.d.ts +124 -0
  148. package/core/field_checkbox.ts +243 -0
  149. package/core/field_colour.d.ts +200 -0
  150. package/core/field_colour.ts +632 -0
  151. package/core/field_dropdown.d.ts +222 -0
  152. package/core/{field_dropdown.js → field_dropdown.ts} +277 -299
  153. package/core/field_image.d.ts +134 -0
  154. package/core/field_image.ts +282 -0
  155. package/core/field_label.d.ts +71 -0
  156. package/core/field_label.ts +152 -0
  157. package/core/field_label_serializable.d.ts +42 -0
  158. package/core/field_label_serializable.ts +76 -0
  159. package/core/field_multilineinput.d.ts +146 -0
  160. package/core/{field_multilineinput.js → field_multilineinput.ts} +166 -163
  161. package/core/field_number.d.ts +156 -0
  162. package/core/{field_number.js → field_number.ts} +110 -123
  163. package/core/field_registry.d.ts +45 -0
  164. package/core/{field_registry.js → field_registry.ts} +37 -30
  165. package/core/field_textinput.d.ts +219 -0
  166. package/core/field_textinput.ts +591 -0
  167. package/core/field_variable.d.ts +217 -0
  168. package/core/{field_variable.js → field_variable.ts} +174 -187
  169. package/core/flyout_base.d.ts +459 -0
  170. package/core/{flyout_base.js → flyout_base.ts} +429 -518
  171. package/core/flyout_button.d.ts +81 -0
  172. package/core/flyout_button.ts +292 -0
  173. package/core/flyout_horizontal.d.ts +82 -0
  174. package/core/{flyout_horizontal.js → flyout_horizontal.ts} +97 -107
  175. package/core/flyout_metrics_manager.d.ts +40 -0
  176. package/core/{flyout_metrics_manager.js → flyout_metrics_manager.ts} +22 -34
  177. package/core/flyout_vertical.d.ts +83 -0
  178. package/core/{flyout_vertical.js → flyout_vertical.ts} +106 -117
  179. package/core/generator.d.ts +205 -0
  180. package/core/{generator.js → generator.ts} +168 -193
  181. package/core/gesture.d.ts +357 -0
  182. package/core/{gesture.js → gesture.ts} +289 -369
  183. package/core/grid.d.ts +83 -0
  184. package/core/grid.ts +192 -0
  185. package/core/icon.d.ts +78 -0
  186. package/core/icon.ts +189 -0
  187. package/core/inject.d.ts +15 -0
  188. package/core/{inject.js → inject.ts} +101 -100
  189. package/core/input.d.ts +128 -0
  190. package/core/input.ts +309 -0
  191. package/core/input_types.d.ts +14 -0
  192. package/core/{input_types.js → input_types.ts} +8 -12
  193. package/core/insertion_marker_manager.d.ts +212 -0
  194. package/core/{insertion_marker_manager.js → insertion_marker_manager.ts} +234 -236
  195. package/core/interfaces/i_ast_node_location.d.ts +11 -0
  196. package/core/interfaces/{i_ast_node_location.js → i_ast_node_location.ts} +4 -7
  197. package/core/interfaces/i_ast_node_location_svg.d.ts +22 -0
  198. package/core/interfaces/i_ast_node_location_svg.ts +37 -0
  199. package/core/interfaces/i_ast_node_location_with_block.d.ts +18 -0
  200. package/core/interfaces/i_ast_node_location_with_block.ts +38 -0
  201. package/core/interfaces/i_autohideable.d.ts +18 -0
  202. package/core/interfaces/i_autohideable.ts +34 -0
  203. package/core/interfaces/i_block_dragger.d.ts +43 -0
  204. package/core/interfaces/i_block_dragger.ts +67 -0
  205. package/core/interfaces/i_bounded_element.d.ts +24 -0
  206. package/core/interfaces/i_bounded_element.ts +42 -0
  207. package/core/interfaces/i_bubble.d.ts +59 -0
  208. package/core/interfaces/i_bubble.ts +88 -0
  209. package/core/interfaces/i_collapsible_toolbox_item.d.ts +26 -0
  210. package/core/interfaces/i_collapsible_toolbox_item.ts +47 -0
  211. package/core/interfaces/i_component.d.ts +17 -0
  212. package/core/interfaces/{i_component.js → i_component.ts} +9 -14
  213. package/core/interfaces/i_connection_checker.d.ts +69 -0
  214. package/core/interfaces/i_connection_checker.ts +102 -0
  215. package/core/interfaces/i_contextmenu.d.ts +13 -0
  216. package/core/interfaces/i_contextmenu.ts +26 -0
  217. package/core/interfaces/i_copyable.d.ts +24 -0
  218. package/core/interfaces/i_copyable.ts +40 -0
  219. package/core/interfaces/i_deletable.d.ts +16 -0
  220. package/core/interfaces/{i_deletable.js → i_deletable.ts} +9 -13
  221. package/core/interfaces/i_delete_area.d.ts +25 -0
  222. package/core/interfaces/i_delete_area.ts +46 -0
  223. package/core/interfaces/i_drag_target.d.ts +53 -0
  224. package/core/interfaces/i_drag_target.ts +84 -0
  225. package/core/interfaces/i_draggable.d.ts +12 -0
  226. package/core/interfaces/{i_draggable.js → i_draggable.ts} +4 -10
  227. package/core/interfaces/i_flyout.d.ts +134 -0
  228. package/core/interfaces/i_flyout.ts +186 -0
  229. package/core/interfaces/i_keyboard_accessible.d.ts +18 -0
  230. package/core/interfaces/i_keyboard_accessible.ts +35 -0
  231. package/core/interfaces/i_metrics_manager.d.ts +117 -0
  232. package/core/interfaces/i_metrics_manager.ts +151 -0
  233. package/core/interfaces/i_movable.d.ts +16 -0
  234. package/core/interfaces/{i_movable.js → i_movable.ts} +9 -13
  235. package/core/interfaces/i_positionable.d.ts +27 -0
  236. package/core/interfaces/i_positionable.ts +50 -0
  237. package/core/interfaces/i_registrable.d.ts +11 -0
  238. package/core/interfaces/{i_registrable.js → i_registrable.ts} +3 -7
  239. package/core/interfaces/i_registrable_field.d.ts +17 -0
  240. package/core/interfaces/{i_registrable_field.js → i_registrable_field.ts} +8 -16
  241. package/core/interfaces/i_selectable.d.ts +18 -0
  242. package/core/interfaces/i_selectable.ts +34 -0
  243. package/core/interfaces/i_selectable_toolbox_item.d.ts +42 -0
  244. package/core/interfaces/i_selectable_toolbox_item.ts +64 -0
  245. package/core/interfaces/i_serializer.d.ts +42 -0
  246. package/core/interfaces/i_serializer.ts +65 -0
  247. package/core/interfaces/i_styleable.d.ts +21 -0
  248. package/core/interfaces/i_styleable.ts +35 -0
  249. package/core/interfaces/i_toolbox.d.ts +85 -0
  250. package/core/interfaces/i_toolbox.ts +127 -0
  251. package/core/interfaces/i_toolbox_item.d.ts +62 -0
  252. package/core/interfaces/i_toolbox_item.ts +84 -0
  253. package/core/internal_constants.d.ts +40 -0
  254. package/core/{internal_constants.js → internal_constants.ts} +13 -18
  255. package/core/keyboard_nav/ast_node.d.ts +239 -0
  256. package/core/keyboard_nav/{ast_node.js → ast_node.ts} +207 -231
  257. package/core/keyboard_nav/basic_cursor.d.ts +88 -0
  258. package/core/keyboard_nav/{basic_cursor.js → basic_cursor.ts} +55 -66
  259. package/core/keyboard_nav/cursor.d.ts +41 -0
  260. package/core/keyboard_nav/{cursor.js → cursor.ts} +25 -35
  261. package/core/keyboard_nav/marker.d.ts +58 -0
  262. package/core/keyboard_nav/{marker.js → marker.ts} +36 -55
  263. package/core/keyboard_nav/tab_navigate_cursor.d.ts +19 -0
  264. package/core/keyboard_nav/{tab_navigate_cursor.js → tab_navigate_cursor.ts} +11 -15
  265. package/core/main.d.ts +11 -0
  266. package/core/main.js +303 -0
  267. package/core/marker_manager.d.ts +85 -0
  268. package/core/marker_manager.ts +181 -0
  269. package/core/menu.d.ts +149 -0
  270. package/core/{menu.js → menu.ts} +141 -174
  271. package/core/menuitem.d.ts +118 -0
  272. package/core/menuitem.ts +240 -0
  273. package/core/metrics_manager.d.ts +201 -0
  274. package/core/{metrics_manager.js → metrics_manager.ts} +117 -156
  275. package/core/msg.d.ts +9 -0
  276. package/core/{msg.js → msg.ts} +4 -8
  277. package/core/mutator.d.ts +128 -0
  278. package/core/{mutator.js → mutator.ts} +196 -211
  279. package/core/names.d.ts +124 -0
  280. package/core/names.ts +267 -0
  281. package/core/options.d.ts +137 -0
  282. package/core/{options.js → options.ts} +147 -173
  283. package/core/positionable_helpers.d.ts +88 -0
  284. package/core/{positionable_helpers.js → positionable_helpers.ts} +63 -70
  285. package/core/procedures.d.ts +108 -0
  286. package/core/{procedures.js → procedures.ts} +143 -152
  287. package/core/registry.d.ts +137 -0
  288. package/core/registry.ts +339 -0
  289. package/core/rendered_connection.d.ts +191 -0
  290. package/core/{rendered_connection.js → rendered_connection.ts} +164 -184
  291. package/core/renderers/common/block_rendering.d.ts +114 -0
  292. package/core/renderers/common/block_rendering.ts +164 -0
  293. package/core/renderers/common/constants.d.ts +458 -0
  294. package/core/renderers/common/constants.ts +1124 -0
  295. package/core/renderers/common/debug.d.ts +28 -0
  296. package/core/renderers/common/{debug.js → debug.ts} +14 -20
  297. package/core/renderers/common/debugger.d.ts +120 -0
  298. package/core/renderers/common/{debugger.js → debugger.ts} +100 -124
  299. package/core/renderers/common/drawer.d.ts +132 -0
  300. package/core/renderers/common/{drawer.js → drawer.ts} +112 -137
  301. package/core/renderers/common/i_path_object.d.ts +117 -0
  302. package/core/renderers/common/i_path_object.ts +161 -0
  303. package/core/renderers/common/info.d.ts +194 -0
  304. package/core/renderers/common/{info.js → info.ts} +165 -222
  305. package/core/renderers/common/marker_svg.d.ts +220 -0
  306. package/core/renderers/common/marker_svg.ts +680 -0
  307. package/core/renderers/common/path_object.d.ts +146 -0
  308. package/core/renderers/common/path_object.ts +272 -0
  309. package/core/renderers/common/renderer.d.ts +157 -0
  310. package/core/renderers/common/renderer.ts +271 -0
  311. package/core/renderers/geras/constants.d.ts +23 -0
  312. package/core/renderers/geras/constants.ts +61 -0
  313. package/core/renderers/geras/drawer.d.ts +43 -0
  314. package/core/renderers/geras/{drawer.js → drawer.ts} +40 -84
  315. package/core/renderers/geras/geras.d.ts +11 -0
  316. package/core/renderers/geras/geras.ts +37 -0
  317. package/core/renderers/geras/highlight_constants.d.ts +108 -0
  318. package/core/renderers/geras/{highlight_constants.js → highlight_constants.ts} +107 -69
  319. package/core/renderers/geras/highlighter.d.ts +98 -0
  320. package/core/renderers/geras/{highlighter.js → highlighter.ts} +81 -86
  321. package/core/renderers/geras/info.d.ts +45 -0
  322. package/core/renderers/geras/{info.js → info.ts} +61 -99
  323. package/core/renderers/geras/measurables/inline_input.d.ts +23 -0
  324. package/core/renderers/geras/measurables/inline_input.ts +51 -0
  325. package/core/renderers/geras/measurables/statement_input.d.ts +23 -0
  326. package/core/renderers/geras/measurables/statement_input.ts +50 -0
  327. package/core/renderers/geras/path_object.d.ts +47 -0
  328. package/core/renderers/geras/{path_object.js → path_object.ts} +46 -74
  329. package/core/renderers/geras/renderer.d.ts +69 -0
  330. package/core/renderers/geras/renderer.ts +126 -0
  331. package/core/renderers/measurables/base.d.ts +27 -0
  332. package/core/renderers/measurables/base.ts +53 -0
  333. package/core/renderers/measurables/bottom_row.d.ts +61 -0
  334. package/core/renderers/measurables/bottom_row.ts +120 -0
  335. package/core/renderers/measurables/connection.d.ts +25 -0
  336. package/core/renderers/measurables/connection.ts +52 -0
  337. package/core/renderers/measurables/external_value_input.d.ts +27 -0
  338. package/core/renderers/measurables/external_value_input.ts +65 -0
  339. package/core/renderers/measurables/field.d.ts +30 -0
  340. package/core/renderers/measurables/field.ts +63 -0
  341. package/core/renderers/measurables/hat.d.ts +21 -0
  342. package/core/renderers/measurables/{hat.js → hat.ts} +12 -14
  343. package/core/renderers/measurables/icon.d.ts +26 -0
  344. package/core/renderers/measurables/{icon.js → icon.ts} +14 -18
  345. package/core/renderers/measurables/in_row_spacer.d.ts +21 -0
  346. package/core/renderers/measurables/in_row_spacer.ts +44 -0
  347. package/core/renderers/measurables/inline_input.d.ts +24 -0
  348. package/core/renderers/measurables/{inline_input.js → inline_input.ts} +22 -26
  349. package/core/renderers/measurables/input_connection.d.ts +29 -0
  350. package/core/renderers/measurables/input_connection.ts +66 -0
  351. package/core/renderers/measurables/input_row.d.ts +30 -0
  352. package/core/renderers/measurables/{input_row.js → input_row.ts} +24 -31
  353. package/core/renderers/measurables/jagged_edge.d.ts +20 -0
  354. package/core/renderers/measurables/{jagged_edge.js → jagged_edge.ts} +10 -13
  355. package/core/renderers/measurables/next_connection.d.ts +23 -0
  356. package/core/renderers/measurables/next_connection.ts +47 -0
  357. package/core/renderers/measurables/output_connection.d.ts +26 -0
  358. package/core/renderers/measurables/output_connection.ts +56 -0
  359. package/core/renderers/measurables/previous_connection.d.ts +23 -0
  360. package/core/renderers/measurables/previous_connection.ts +47 -0
  361. package/core/renderers/measurables/round_corner.d.ts +21 -0
  362. package/core/renderers/measurables/round_corner.ts +49 -0
  363. package/core/renderers/measurables/row.d.ts +141 -0
  364. package/core/renderers/measurables/row.ts +225 -0
  365. package/core/renderers/measurables/spacer_row.d.ts +29 -0
  366. package/core/renderers/measurables/spacer_row.ts +55 -0
  367. package/core/renderers/measurables/square_corner.d.ts +21 -0
  368. package/core/renderers/measurables/square_corner.ts +47 -0
  369. package/core/renderers/measurables/statement_input.d.ts +22 -0
  370. package/core/renderers/measurables/{statement_input.js → statement_input.ts} +14 -18
  371. package/core/renderers/measurables/top_row.d.ts +56 -0
  372. package/core/renderers/measurables/top_row.ts +122 -0
  373. package/core/renderers/measurables/types.d.ts +235 -0
  374. package/core/renderers/measurables/types.ts +332 -0
  375. package/core/renderers/minimalist/constants.d.ts +14 -0
  376. package/core/renderers/minimalist/{constants.js → constants.ts} +5 -10
  377. package/core/renderers/minimalist/drawer.d.ts +21 -0
  378. package/core/renderers/minimalist/drawer.ts +38 -0
  379. package/core/renderers/minimalist/info.d.ts +30 -0
  380. package/core/renderers/minimalist/info.ts +52 -0
  381. package/core/renderers/minimalist/minimalist.d.ts +6 -0
  382. package/core/renderers/minimalist/minimalist.ts +22 -0
  383. package/core/renderers/minimalist/renderer.d.ts +41 -0
  384. package/core/renderers/minimalist/renderer.ts +71 -0
  385. package/core/renderers/thrasos/info.d.ts +40 -0
  386. package/core/renderers/thrasos/{info.js → info.ts} +66 -67
  387. package/core/renderers/thrasos/renderer.d.ts +25 -0
  388. package/core/renderers/thrasos/renderer.ts +48 -0
  389. package/core/renderers/thrasos/thrasos.d.ts +4 -0
  390. package/core/renderers/thrasos/thrasos.ts +20 -0
  391. package/core/renderers/zelos/constants.d.ts +186 -0
  392. package/core/renderers/zelos/{constants.js → constants.ts} +294 -441
  393. package/core/renderers/zelos/drawer.d.ts +47 -0
  394. package/core/renderers/zelos/{drawer.js → drawer.ts} +73 -95
  395. package/core/renderers/zelos/info.d.ts +88 -0
  396. package/core/renderers/zelos/{info.js → info.ts} +111 -142
  397. package/core/renderers/zelos/marker_svg.d.ts +46 -0
  398. package/core/renderers/zelos/marker_svg.ts +151 -0
  399. package/core/renderers/zelos/measurables/bottom_row.d.ts +27 -0
  400. package/core/renderers/zelos/measurables/bottom_row.ts +53 -0
  401. package/core/renderers/zelos/measurables/inputs.d.ts +23 -0
  402. package/core/renderers/zelos/measurables/{inputs.js → inputs.ts} +14 -15
  403. package/core/renderers/zelos/measurables/row_elements.d.ts +21 -0
  404. package/core/renderers/zelos/measurables/row_elements.ts +45 -0
  405. package/core/renderers/zelos/measurables/top_row.d.ts +29 -0
  406. package/core/renderers/zelos/measurables/{top_row.js → top_row.ts} +14 -27
  407. package/core/renderers/zelos/path_object.d.ts +77 -0
  408. package/core/renderers/zelos/path_object.ts +215 -0
  409. package/core/renderers/zelos/renderer.d.ts +74 -0
  410. package/core/renderers/zelos/renderer.ts +142 -0
  411. package/core/renderers/zelos/zelos.d.ts +12 -0
  412. package/core/renderers/zelos/zelos.ts +39 -0
  413. package/core/scrollbar.d.ts +277 -0
  414. package/core/{scrollbar.js → scrollbar.ts} +307 -328
  415. package/core/scrollbar_pair.d.ts +105 -0
  416. package/core/{scrollbar_pair.js → scrollbar_pair.ts} +71 -79
  417. package/core/serialization/blocks.d.ts +98 -0
  418. package/core/serialization/{blocks.js → blocks.ts} +229 -228
  419. package/core/serialization/exceptions.d.ts +73 -0
  420. package/core/serialization/exceptions.ts +98 -0
  421. package/core/serialization/priorities.d.ts +15 -0
  422. package/core/serialization/{priorities.js → priorities.ts} +4 -10
  423. package/core/serialization/registry.d.ts +20 -0
  424. package/core/serialization/{registry.js → registry.ts} +11 -13
  425. package/core/serialization/variables.d.ts +14 -0
  426. package/core/serialization/{variables.js → variables.ts} +30 -32
  427. package/core/serialization/workspaces.d.ts +28 -0
  428. package/core/serialization/{workspaces.js → workspaces.ts} +30 -27
  429. package/core/shortcut_items.d.ts +61 -0
  430. package/core/{shortcut_items.js → shortcut_items.ts} +121 -157
  431. package/core/shortcut_registry.d.ts +151 -0
  432. package/core/shortcut_registry.ts +355 -0
  433. package/core/sprites.d.ts +19 -0
  434. package/core/{sprites.js → sprites.ts} +4 -6
  435. package/core/theme/classic.d.ts +12 -0
  436. package/core/theme/{classic.js → classic.ts} +5 -7
  437. package/core/theme/themes.d.ts +8 -0
  438. package/core/theme/themes.ts +22 -0
  439. package/core/theme/zelos.d.ts +11 -0
  440. package/core/theme/{zelos.js → zelos.ts} +4 -7
  441. package/core/theme.d.ts +142 -0
  442. package/core/theme.ts +221 -0
  443. package/core/theme_manager.d.ts +81 -0
  444. package/core/theme_manager.ts +186 -0
  445. package/core/toolbox/category.d.ts +239 -0
  446. package/core/toolbox/category.ts +679 -0
  447. package/core/toolbox/collapsible_category.d.ts +91 -0
  448. package/core/toolbox/collapsible_category.ts +273 -0
  449. package/core/toolbox/separator.d.ts +39 -0
  450. package/core/toolbox/separator.ts +105 -0
  451. package/core/toolbox/toolbox.d.ts +352 -0
  452. package/core/toolbox/{toolbox.js → toolbox.ts} +316 -432
  453. package/core/toolbox/toolbox_item.d.ts +85 -0
  454. package/core/toolbox/toolbox_item.ts +147 -0
  455. package/core/tooltip.d.ts +126 -0
  456. package/core/{tooltip.js → tooltip.ts} +136 -214
  457. package/core/touch.d.ts +121 -0
  458. package/core/touch.ts +306 -0
  459. package/core/touch_gesture.d.ts +115 -0
  460. package/core/{touch_gesture.js → touch_gesture.ts} +87 -125
  461. package/core/trashcan.d.ts +195 -0
  462. package/core/{trashcan.js → trashcan.ts} +226 -312
  463. package/core/utils/aria.d.ts +67 -0
  464. package/core/utils/{aria.js → aria.ts} +47 -61
  465. package/core/utils/array.d.ts +14 -0
  466. package/core/utils/{array.js → array.ts} +10 -12
  467. package/core/utils/colour.d.ts +103 -0
  468. package/core/utils/{colour.js → colour.ts} +60 -72
  469. package/core/utils/coordinate.d.ts +72 -0
  470. package/core/utils/coordinate.ts +124 -0
  471. package/core/utils/deprecation.d.ts +17 -0
  472. package/core/utils/{deprecation.js → deprecation.ts} +11 -11
  473. package/core/utils/dom.d.ts +165 -0
  474. package/core/utils/{dom.js → dom.ts} +125 -147
  475. package/core/utils/idgenerator.d.ts +25 -0
  476. package/core/utils/{idgenerator.js → idgenerator.ts} +15 -18
  477. package/core/utils/keycodes.d.ts +137 -0
  478. package/core/utils/keycodes.ts +169 -0
  479. package/core/utils/math.d.ts +30 -0
  480. package/core/utils/{math.js → math.ts} +17 -19
  481. package/core/utils/metrics.d.ts +64 -0
  482. package/core/utils/metrics.ts +97 -0
  483. package/core/utils/object.d.ts +35 -0
  484. package/core/utils/{object.js → object.ts} +30 -26
  485. package/core/utils/parsing.d.ts +50 -0
  486. package/core/utils/{parsing.js → parsing.ts} +50 -50
  487. package/core/utils/rect.d.ts +38 -0
  488. package/core/utils/{rect.js → rect.ts} +18 -31
  489. package/core/utils/sentinel.d.ts +11 -0
  490. package/core/utils/{sentinel.js → sentinel.ts} +3 -5
  491. package/core/utils/size.d.ts +27 -0
  492. package/core/utils/{size.js → size.ts} +12 -26
  493. package/core/utils/string.d.ts +55 -0
  494. package/core/utils/{string.js → string.ts} +64 -61
  495. package/core/utils/style.d.ts +127 -0
  496. package/core/utils/{style.js → style.ts} +102 -92
  497. package/core/utils/svg.d.ts +68 -0
  498. package/core/utils/svg.ts +88 -0
  499. package/core/utils/svg_math.d.ts +70 -0
  500. package/core/utils/{svg_math.js → svg_math.ts} +72 -71
  501. package/core/utils/svg_paths.d.ts +101 -0
  502. package/core/utils/{svg_paths.js → svg_paths.ts} +56 -65
  503. package/core/utils/toolbox.d.ts +193 -0
  504. package/core/utils/toolbox.ts +433 -0
  505. package/core/utils/useragent.d.ts +33 -0
  506. package/core/utils/useragent.ts +135 -0
  507. package/core/utils/xml.d.ts +52 -0
  508. package/core/utils/{xml.js → xml.ts} +26 -36
  509. package/core/utils.d.ts +217 -0
  510. package/core/utils.ts +428 -0
  511. package/core/variable_map.d.ts +141 -0
  512. package/core/{variable_map.js → variable_map.ts} +131 -149
  513. package/core/variable_model.d.ts +40 -0
  514. package/core/variable_model.ts +82 -0
  515. package/core/variables.d.ts +181 -0
  516. package/core/{variables.js → variables.ts} +206 -188
  517. package/core/variables_dynamic.d.ts +38 -0
  518. package/core/{variables_dynamic.js → variables_dynamic.ts} +47 -43
  519. package/core/warning.d.ts +50 -0
  520. package/core/{warning.js → warning.ts} +52 -66
  521. package/core/widgetdiv.d.ts +69 -0
  522. package/core/widgetdiv.ts +257 -0
  523. package/core/workspace.d.ts +386 -0
  524. package/core/workspace.ts +801 -0
  525. package/core/workspace_audio.d.ts +47 -0
  526. package/core/{workspace_audio.js → workspace_audio.ts} +47 -60
  527. package/core/workspace_comment.d.ts +170 -0
  528. package/core/workspace_comment.ts +398 -0
  529. package/core/workspace_comment_svg.d.ts +329 -0
  530. package/core/{workspace_comment_svg.js → workspace_comment_svg.ts} +347 -444
  531. package/core/workspace_drag_surface_svg.d.ts +68 -0
  532. package/core/{workspace_drag_surface_svg.js → workspace_drag_surface_svg.ts} +75 -82
  533. package/core/workspace_dragger.d.ts +48 -0
  534. package/core/workspace_dragger.ts +104 -0
  535. package/core/workspace_svg.d.ts +920 -0
  536. package/core/{workspace_svg.js → workspace_svg.ts} +855 -935
  537. package/core/xml.d.ts +117 -0
  538. package/core/{xml.js → xml.ts} +306 -326
  539. package/core/zoom_controls.d.ts +130 -0
  540. package/core/{zoom_controls.js → zoom_controls.ts} +185 -251
  541. package/core.d.ts +1 -3
  542. package/core.js +1 -2
  543. package/dart.d.ts +0 -3
  544. package/dart_compressed.js +387 -99
  545. package/dart_compressed.js.map +1 -1
  546. package/generators/dart/all.js +2 -0
  547. package/generators/dart/colour.js +1 -1
  548. package/generators/dart/lists.js +1 -1
  549. package/generators/dart/logic.js +1 -1
  550. package/generators/dart/loops.js +1 -1
  551. package/generators/dart/math.js +1 -1
  552. package/generators/dart/procedures.js +1 -1
  553. package/generators/dart/text.js +1 -1
  554. package/generators/dart/variables.js +1 -1
  555. package/generators/dart/variables_dynamic.js +1 -1
  556. package/generators/dart.js +1 -2
  557. package/generators/javascript/all.js +2 -0
  558. package/generators/javascript/colour.js +1 -1
  559. package/generators/javascript/lists.js +1 -1
  560. package/generators/javascript/logic.js +1 -1
  561. package/generators/javascript/loops.js +1 -1
  562. package/generators/javascript/math.js +4 -4
  563. package/generators/javascript/procedures.js +1 -1
  564. package/generators/javascript/text.js +2 -2
  565. package/generators/javascript/variables.js +1 -1
  566. package/generators/javascript/variables_dynamic.js +1 -1
  567. package/generators/javascript.js +1 -3
  568. package/generators/lua/all.js +2 -0
  569. package/generators/lua/colour.js +1 -1
  570. package/generators/lua/lists.js +1 -1
  571. package/generators/lua/logic.js +1 -1
  572. package/generators/lua/loops.js +1 -1
  573. package/generators/lua/math.js +1 -1
  574. package/generators/lua/procedures.js +1 -1
  575. package/generators/lua/text.js +1 -1
  576. package/generators/lua/variables.js +1 -1
  577. package/generators/lua/variables_dynamic.js +1 -1
  578. package/generators/lua.js +1 -2
  579. package/generators/php/all.js +2 -0
  580. package/generators/php/colour.js +1 -1
  581. package/generators/php/lists.js +1 -2
  582. package/generators/php/logic.js +1 -1
  583. package/generators/php/loops.js +1 -1
  584. package/generators/php/math.js +1 -1
  585. package/generators/php/procedures.js +1 -1
  586. package/generators/php/text.js +1 -1
  587. package/generators/php/variables.js +1 -1
  588. package/generators/php/variables_dynamic.js +1 -1
  589. package/generators/php.js +1 -2
  590. package/generators/python/all.js +2 -0
  591. package/generators/python/colour.js +3 -3
  592. package/generators/python/lists.js +1 -1
  593. package/generators/python/logic.js +1 -1
  594. package/generators/python/loops.js +4 -7
  595. package/generators/python/math.js +1 -1
  596. package/generators/python/procedures.js +1 -1
  597. package/generators/python/text.js +1 -1
  598. package/generators/python/variables.js +1 -1
  599. package/generators/python/variables_dynamic.js +1 -1
  600. package/generators/python.js +1 -2
  601. package/index.d.ts +2 -8
  602. package/javascript.d.ts +0 -3
  603. package/javascript_compressed.js +314 -104
  604. package/javascript_compressed.js.map +1 -1
  605. package/lua.d.ts +0 -3
  606. package/lua_compressed.js +399 -81
  607. package/lua_compressed.js.map +1 -1
  608. package/msg/ab.js +420 -420
  609. package/msg/ace.js +420 -420
  610. package/msg/af.js +420 -420
  611. package/msg/am.js +420 -420
  612. package/msg/ar.js +420 -420
  613. package/msg/ast.js +420 -420
  614. package/msg/az.js +420 -420
  615. package/msg/ba.js +420 -420
  616. package/msg/bcc.js +420 -420
  617. package/msg/be-tarask.js +420 -420
  618. package/msg/be.js +420 -420
  619. package/msg/bg.js +420 -420
  620. package/msg/bn.js +420 -420
  621. package/msg/br.js +420 -420
  622. package/msg/bs.js +420 -420
  623. package/msg/ca.js +420 -420
  624. package/msg/cdo.js +420 -420
  625. package/msg/cs.js +420 -420
  626. package/msg/da.js +420 -420
  627. package/msg/de.js +420 -420
  628. package/msg/diq.js +420 -420
  629. package/msg/dty.js +420 -420
  630. package/msg/ee.js +420 -420
  631. package/msg/el.js +420 -420
  632. package/msg/en-gb.js +420 -420
  633. package/msg/en.js +420 -420
  634. package/msg/eo.js +420 -420
  635. package/msg/es.js +420 -420
  636. package/msg/et.js +420 -420
  637. package/msg/eu.js +420 -420
  638. package/msg/fa.js +420 -420
  639. package/msg/fi.js +420 -420
  640. package/msg/fo.js +420 -420
  641. package/msg/fr.js +420 -420
  642. package/msg/frr.js +420 -420
  643. package/msg/gl.js +420 -420
  644. package/msg/gn.js +420 -420
  645. package/msg/gor.js +420 -420
  646. package/msg/ha.js +420 -420
  647. package/msg/hak.js +420 -420
  648. package/msg/he.js +420 -420
  649. package/msg/hi.js +420 -420
  650. package/msg/hr.js +420 -420
  651. package/msg/hrx.js +420 -420
  652. package/msg/hu.js +420 -420
  653. package/msg/hy.js +420 -420
  654. package/msg/ia.js +420 -420
  655. package/msg/id.js +420 -420
  656. package/msg/ig.js +420 -420
  657. package/msg/inh.js +420 -420
  658. package/msg/is.js +420 -420
  659. package/msg/it.js +420 -420
  660. package/msg/ja.js +420 -420
  661. package/msg/ka.js +420 -420
  662. package/msg/kab.js +420 -420
  663. package/msg/kbd-cyrl.js +420 -420
  664. package/msg/km.js +420 -420
  665. package/msg/kn.js +420 -420
  666. package/msg/ko.js +420 -420
  667. package/msg/ksh.js +420 -420
  668. package/msg/ku-latn.js +420 -420
  669. package/msg/ky.js +420 -420
  670. package/msg/la.js +420 -420
  671. package/msg/lb.js +420 -420
  672. package/msg/lki.js +420 -420
  673. package/msg/lo.js +420 -420
  674. package/msg/lrc.js +420 -420
  675. package/msg/lt.js +420 -420
  676. package/msg/lv.js +420 -420
  677. package/msg/mg.js +420 -420
  678. package/msg/mk.js +420 -420
  679. package/msg/ml.js +420 -420
  680. package/msg/mnw.js +420 -420
  681. package/msg/ms.js +420 -420
  682. package/msg/my.js +420 -420
  683. package/msg/mzn.js +420 -420
  684. package/msg/nb.js +420 -420
  685. package/msg/ne.js +420 -420
  686. package/msg/nl.js +420 -420
  687. package/msg/oc.js +420 -420
  688. package/msg/olo.js +420 -420
  689. package/msg/pa.js +420 -420
  690. package/msg/pl.js +420 -420
  691. package/msg/pms.js +420 -420
  692. package/msg/ps.js +420 -420
  693. package/msg/pt-br.js +420 -420
  694. package/msg/pt.js +420 -420
  695. package/msg/ro.js +420 -420
  696. package/msg/ru.js +420 -420
  697. package/msg/sc.js +420 -420
  698. package/msg/sco.js +420 -420
  699. package/msg/sd.js +420 -420
  700. package/msg/shn.js +420 -420
  701. package/msg/si.js +420 -420
  702. package/msg/sk.js +420 -420
  703. package/msg/skr-arab.js +420 -420
  704. package/msg/sl.js +420 -420
  705. package/msg/smn.js +420 -420
  706. package/msg/sq.js +420 -420
  707. package/msg/sr-latn.js +420 -420
  708. package/msg/sr.js +420 -420
  709. package/msg/sv.js +420 -420
  710. package/msg/sw.js +420 -420
  711. package/msg/ta.js +420 -420
  712. package/msg/tcy.js +420 -420
  713. package/msg/te.js +420 -420
  714. package/msg/th.js +420 -420
  715. package/msg/ti.js +420 -420
  716. package/msg/tl.js +420 -420
  717. package/msg/tlh.js +420 -420
  718. package/msg/tr.js +420 -420
  719. package/msg/ug-arab.js +420 -420
  720. package/msg/uk.js +420 -420
  721. package/msg/ur.js +420 -420
  722. package/msg/uz.js +420 -420
  723. package/msg/vi.js +420 -420
  724. package/msg/xmf.js +420 -420
  725. package/msg/yo.js +420 -420
  726. package/msg/yue.js +420 -420
  727. package/msg/zgh.js +420 -420
  728. package/msg/zh-hans.js +420 -420
  729. package/msg/zh-hant.js +420 -420
  730. package/package.json +5 -5
  731. package/php.d.ts +0 -3
  732. package/php_compressed.js +322 -93
  733. package/php_compressed.js.map +1 -1
  734. package/python.d.ts +0 -3
  735. package/python_compressed.js +237 -90
  736. package/python_compressed.js.map +1 -1
  737. package/blockly.d.ts +0 -26127
  738. package/core/blockly_options.js +0 -28
  739. package/core/bubble_dragger.js +0 -298
  740. package/core/clipboard.js +0 -80
  741. package/core/component_manager.js +0 -263
  742. package/core/contextmenu_items.js +0 -651
  743. package/core/contextmenu_registry.js +0 -178
  744. package/core/delete_area.js +0 -87
  745. package/core/dialog.js +0 -107
  746. package/core/drag_target.js +0 -98
  747. package/core/events/events.js +0 -147
  748. package/core/events/events_abstract.js +0 -133
  749. package/core/events/events_block_base.js +0 -70
  750. package/core/events/events_block_drag.js +0 -89
  751. package/core/events/events_bubble_open.js +0 -90
  752. package/core/events/events_comment_base.js +0 -121
  753. package/core/events/events_marker_move.js +0 -110
  754. package/core/events/events_selected.js +0 -83
  755. package/core/events/events_toolbox_item_select.js +0 -84
  756. package/core/events/events_trashcan_open.js +0 -73
  757. package/core/events/events_var_base.js +0 -70
  758. package/core/events/events_viewport.js +0 -107
  759. package/core/events/workspace_events.js +0 -93
  760. package/core/field_angle.js +0 -591
  761. package/core/field_checkbox.js +0 -255
  762. package/core/field_colour.js +0 -717
  763. package/core/field_image.js +0 -304
  764. package/core/field_label.js +0 -149
  765. package/core/field_label_serializable.js +0 -80
  766. package/core/field_textinput.js +0 -619
  767. package/core/flyout_button.js +0 -356
  768. package/core/grid.js +0 -226
  769. package/core/icon.js +0 -225
  770. package/core/input.js +0 -335
  771. package/core/interfaces/i_ast_node_location_svg.js +0 -45
  772. package/core/interfaces/i_ast_node_location_with_block.js +0 -41
  773. package/core/interfaces/i_autohideable.js +0 -40
  774. package/core/interfaces/i_block_dragger.js +0 -66
  775. package/core/interfaces/i_bounded_element.js +0 -45
  776. package/core/interfaces/i_bubble.js +0 -95
  777. package/core/interfaces/i_collapsible_toolbox_item.js +0 -53
  778. package/core/interfaces/i_connection_checker.js +0 -104
  779. package/core/interfaces/i_contextmenu.js +0 -32
  780. package/core/interfaces/i_copyable.js +0 -49
  781. package/core/interfaces/i_delete_area.js +0 -50
  782. package/core/interfaces/i_drag_target.js +0 -88
  783. package/core/interfaces/i_flyout.js +0 -201
  784. package/core/interfaces/i_keyboard_accessible.js +0 -38
  785. package/core/interfaces/i_metrics_manager.js +0 -154
  786. package/core/interfaces/i_positionable.js +0 -51
  787. package/core/interfaces/i_selectable.js +0 -51
  788. package/core/interfaces/i_selectable_toolbox_item.js +0 -73
  789. package/core/interfaces/i_serializer.js +0 -77
  790. package/core/interfaces/i_styleable.js +0 -39
  791. package/core/interfaces/i_toolbox.js +0 -142
  792. package/core/interfaces/i_toolbox_item.js +0 -85
  793. package/core/marker_manager.js +0 -213
  794. package/core/menuitem.js +0 -292
  795. package/core/names.js +0 -293
  796. package/core/registry.js +0 -384
  797. package/core/renderers/common/block_rendering.js +0 -170
  798. package/core/renderers/common/constants.js +0 -1250
  799. package/core/renderers/common/i_path_object.js +0 -162
  800. package/core/renderers/common/marker_svg.js +0 -721
  801. package/core/renderers/common/path_object.js +0 -283
  802. package/core/renderers/common/renderer.js +0 -305
  803. package/core/renderers/geras/constants.js +0 -73
  804. package/core/renderers/geras/geras.js +0 -36
  805. package/core/renderers/geras/measurables/inline_input.js +0 -58
  806. package/core/renderers/geras/measurables/statement_input.js +0 -57
  807. package/core/renderers/geras/renderer.js +0 -149
  808. package/core/renderers/measurables/base.js +0 -64
  809. package/core/renderers/measurables/bottom_row.js +0 -138
  810. package/core/renderers/measurables/connection.js +0 -56
  811. package/core/renderers/measurables/external_value_input.js +0 -70
  812. package/core/renderers/measurables/field.js +0 -71
  813. package/core/renderers/measurables/in_row_spacer.js +0 -47
  814. package/core/renderers/measurables/input_connection.js +0 -75
  815. package/core/renderers/measurables/next_connection.js +0 -50
  816. package/core/renderers/measurables/output_connection.js +0 -61
  817. package/core/renderers/measurables/previous_connection.js +0 -50
  818. package/core/renderers/measurables/round_corner.js +0 -52
  819. package/core/renderers/measurables/row.js +0 -247
  820. package/core/renderers/measurables/spacer_row.js +0 -69
  821. package/core/renderers/measurables/square_corner.js +0 -50
  822. package/core/renderers/measurables/top_row.js +0 -143
  823. package/core/renderers/measurables/types.js +0 -353
  824. package/core/renderers/minimalist/drawer.js +0 -42
  825. package/core/renderers/minimalist/info.js +0 -54
  826. package/core/renderers/minimalist/minimalist.js +0 -26
  827. package/core/renderers/minimalist/renderer.js +0 -80
  828. package/core/renderers/thrasos/renderer.js +0 -53
  829. package/core/renderers/thrasos/thrasos.js +0 -22
  830. package/core/renderers/zelos/marker_svg.js +0 -179
  831. package/core/renderers/zelos/measurables/bottom_row.js +0 -66
  832. package/core/renderers/zelos/measurables/row_elements.js +0 -46
  833. package/core/renderers/zelos/path_object.js +0 -247
  834. package/core/renderers/zelos/renderer.js +0 -147
  835. package/core/renderers/zelos/zelos.js +0 -38
  836. package/core/serialization/exceptions.js +0 -144
  837. package/core/shortcut_registry.js +0 -366
  838. package/core/theme/themes.js +0 -23
  839. package/core/theme.js +0 -228
  840. package/core/theme_manager.js +0 -211
  841. package/core/toolbox/category.js +0 -751
  842. package/core/toolbox/collapsible_category.js +0 -311
  843. package/core/toolbox/separator.js +0 -133
  844. package/core/toolbox/toolbox_item.js +0 -173
  845. package/core/touch.js +0 -285
  846. package/core/utils/coordinate.js +0 -138
  847. package/core/utils/global.js +0 -41
  848. package/core/utils/keycodes.js +0 -172
  849. package/core/utils/metrics.js +0 -154
  850. package/core/utils/svg.js +0 -186
  851. package/core/utils/toolbox.js +0 -459
  852. package/core/utils/useragent.js +0 -197
  853. package/core/utils.js +0 -383
  854. package/core/variable_model.js +0 -96
  855. package/core/widgetdiv.js +0 -290
  856. package/core/workspace.js +0 -836
  857. package/core/workspace_comment.js +0 -400
  858. package/core/workspace_dragger.js +0 -115
@@ -9,7 +9,6 @@
9
9
  * In the interests of a consistent UI, the toolbox shares some functions and
10
10
  * properties with the context menu.
11
11
  */
12
- 'use strict';
13
12
 
14
13
  /**
15
14
  * Dropdown input field. Used for editable titles and variables.
@@ -17,101 +16,114 @@
17
16
  * properties with the context menu.
18
17
  * @class
19
18
  */
20
- goog.module('Blockly.FieldDropdown');
21
-
22
- const aria = goog.require('Blockly.utils.aria');
23
- const dom = goog.require('Blockly.utils.dom');
24
- const dropDownDiv = goog.require('Blockly.dropDownDiv');
25
- const fieldRegistry = goog.require('Blockly.fieldRegistry');
26
- const parsing = goog.require('Blockly.utils.parsing');
27
- const userAgent = goog.require('Blockly.utils.userAgent');
28
- const utilsString = goog.require('Blockly.utils.string');
29
- const {Coordinate} = goog.require('Blockly.utils.Coordinate');
30
- const {Field} = goog.require('Blockly.Field');
31
- const {MenuItem} = goog.require('Blockly.MenuItem');
32
- const {Menu} = goog.require('Blockly.Menu');
33
- /* eslint-disable-next-line no-unused-vars */
34
- const {Sentinel} = goog.requireType('Blockly.utils.Sentinel');
35
- const {Svg} = goog.require('Blockly.utils.Svg');
19
+ import * as goog from '../closure/goog/goog.js';
20
+ goog.declareModuleId('Blockly.FieldDropdown');
21
+
22
+ import type {BlockSvg} from './block_svg.js';
23
+ import * as dropDownDiv from './dropdowndiv.js';
24
+ import {FieldConfig, Field} from './field.js';
25
+ import * as fieldRegistry from './field_registry.js';
26
+ import {Menu} from './menu.js';
27
+ import {MenuItem} from './menuitem.js';
28
+ import * as aria from './utils/aria.js';
29
+ import {Coordinate} from './utils/coordinate.js';
30
+ import * as dom from './utils/dom.js';
31
+ import * as parsing from './utils/parsing.js';
32
+ import type {Sentinel} from './utils/sentinel.js';
33
+ import * as utilsString from './utils/string.js';
34
+ import {Svg} from './utils/svg.js';
35
+ import * as userAgent from './utils/useragent.js';
36
36
 
37
37
 
38
38
  /**
39
39
  * Class for an editable dropdown field.
40
- * @extends {Field}
41
40
  * @alias Blockly.FieldDropdown
42
41
  */
43
- class FieldDropdown extends Field {
42
+ export class FieldDropdown extends Field {
43
+ /** Horizontal distance that a checkmark overhangs the dropdown. */
44
+ static CHECKMARK_OVERHANG = 25;
45
+
44
46
  /**
45
- * @param {(!Array<!Array>|!Function|!Sentinel)} menuGenerator
46
- * A non-empty array of options for a dropdown list, or a function which
47
- * generates these options.
48
- * Also accepts Field.SKIP_SETUP if you wish to skip setup (only used by
49
- * subclasses that want to handle configuration and setting the field
50
- * value after their own constructors have run).
51
- * @param {Function=} opt_validator A function that is called to validate
52
- * changes to the field's value. Takes in a language-neutral dropdown
53
- * option & returns a validated language-neutral dropdown option, or null
54
- * to abort the change.
55
- * @param {Object=} opt_config A map of options used to configure the field.
56
- * See the [field creation documentation]{@link
57
- * https://developers.google.com/blockly/guides/create-custom-blocks/fields/built-in-fields/dropdown#creation}
58
- * for a list of properties this parameter supports.
59
- * @throws {TypeError} If `menuGenerator` options are incorrectly structured.
47
+ * Maximum height of the dropdown menu, as a percentage of the viewport
48
+ * height.
60
49
  */
61
- constructor(menuGenerator, opt_validator, opt_config) {
62
- super(Field.SKIP_SETUP);
50
+ static MAX_MENU_HEIGHT_VH = 0.45;
51
+ static ARROW_CHAR: AnyDuringMigration;
63
52
 
64
- /**
65
- * A reference to the currently selected menu item.
66
- * @type {?MenuItem}
67
- * @private
68
- */
69
- this.selectedMenuItem_ = null;
53
+ /** A reference to the currently selected menu item. */
54
+ private selectedMenuItem_: MenuItem|null = null;
70
55
 
71
- /**
72
- * The dropdown menu.
73
- * @type {?Menu}
74
- * @protected
75
- */
76
- this.menu_ = null;
56
+ /** The dropdown menu. */
57
+ protected menu_: Menu|null = null;
77
58
 
78
- /**
79
- * SVG image element if currently selected option is an image, or null.
80
- * @type {?SVGImageElement}
81
- * @private
82
- */
83
- this.imageElement_ = null;
59
+ /**
60
+ * SVG image element if currently selected option is an image, or null.
61
+ */
62
+ private imageElement_: SVGImageElement|null = null;
84
63
 
85
- /**
86
- * Tspan based arrow element.
87
- * @type {?SVGTSpanElement}
88
- * @private
89
- */
90
- this.arrow_ = null;
64
+ /** Tspan based arrow element. */
65
+ private arrow_: SVGTSpanElement|null = null;
91
66
 
92
- /**
93
- * SVG based arrow element.
94
- * @type {?SVGElement}
95
- * @private
96
- */
97
- this.svgArrow_ = null;
67
+ /** SVG based arrow element. */
68
+ private svgArrow_: SVGElement|null = null;
98
69
 
99
- /**
100
- * Serializable fields are saved by the serializer, non-serializable fields
101
- * are not. Editable fields should also be serializable.
102
- * @type {boolean}
103
- */
104
- this.SERIALIZABLE = true;
70
+ /**
71
+ * Serializable fields are saved by the serializer, non-serializable fields
72
+ * are not. Editable fields should also be serializable.
73
+ */
74
+ override SERIALIZABLE = true;
105
75
 
106
- /**
107
- * Mouse cursor style when over the hotspot that initiates the editor.
108
- * @type {string}
109
- */
110
- this.CURSOR = 'default';
76
+ /** Mouse cursor style when over the hotspot that initiates the editor. */
77
+ override CURSOR = 'default';
78
+ // TODO(b/109816955): remove '!', see go/strict-prop-init-fix.
79
+ protected menuGenerator_!: AnyDuringMigration[][]|
80
+ ((this: FieldDropdown) => AnyDuringMigration[][]);
81
+
82
+ /** A cache of the most recently generated options. */
83
+ // AnyDuringMigration because: Type 'null' is not assignable to type
84
+ // 'string[][]'.
85
+ private generatedOptions_: string[][] = null as AnyDuringMigration;
111
86
 
87
+ /**
88
+ * The prefix field label, of common words set after options are trimmed.
89
+ * @internal
90
+ */
91
+ override prefixField: string|null = null;
92
+
93
+ /**
94
+ * The suffix field label, of common words set after options are trimmed.
95
+ * @internal
96
+ */
97
+ override suffixField: string|null = null;
98
+ // TODO(b/109816955): remove '!', see go/strict-prop-init-fix.
99
+ private selectedOption_!: Array<string|ImageProperties>;
100
+ override clickTarget_: AnyDuringMigration;
101
+
102
+ /**
103
+ * @param menuGenerator A non-empty array of options for a dropdown list, or a
104
+ * function which generates these options. Also accepts Field.SKIP_SETUP
105
+ * if you wish to skip setup (only used by subclasses that want to handle
106
+ * configuration and setting the field value after their own constructors
107
+ * have run).
108
+ * @param opt_validator A function that is called to validate changes to the
109
+ * field's value. Takes in a language-neutral dropdown option & returns a
110
+ * validated language-neutral dropdown option, or null to abort the
111
+ * change.
112
+ * @param opt_config A map of options used to configure the field.
113
+ * See the [field creation documentation]{@link
114
+ * https://developers.google.com/blockly/guides/create-custom-blocks/fields/built-in-fields/dropdown#creation}
115
+ * for a list of properties this parameter supports.
116
+ * @throws {TypeError} If `menuGenerator` options are incorrectly structured.
117
+ */
118
+ constructor(
119
+ menuGenerator: AnyDuringMigration[][]|Function|Sentinel,
120
+ opt_validator?: Function, opt_config?: FieldConfig) {
121
+ super(Field.SKIP_SETUP);
112
122
 
113
123
  // If we pass SKIP_SETUP, don't do *anything* with the menu generator.
114
- if (menuGenerator === Field.SKIP_SETUP) return;
124
+ if (menuGenerator === Field.SKIP_SETUP) {
125
+ return;
126
+ }
115
127
 
116
128
  if (Array.isArray(menuGenerator)) {
117
129
  validateOptions(menuGenerator);
@@ -120,60 +132,34 @@ class FieldDropdown extends Field {
120
132
  /**
121
133
  * An array of options for a dropdown list,
122
134
  * or a function which generates these options.
123
- * @type {(!Array<!Array>|!function(this:FieldDropdown): !Array<!Array>)}
124
- * @protected
125
135
  */
126
- this.menuGenerator_ =
127
- /**
128
- * @type {(!Array<!Array>|
129
- * !function(this:FieldDropdown):!Array<!Array>)}
130
- */
131
- (menuGenerator);
132
-
133
- /**
134
- * A cache of the most recently generated options.
135
- * @type {Array<!Array<string>>}
136
- * @private
137
- */
138
- this.generatedOptions_ = null;
139
-
140
- /**
141
- * The prefix field label, of common words set after options are trimmed.
142
- * @type {?string}
143
- * @package
144
- */
145
- this.prefixField = null;
146
-
147
- /**
148
- * The suffix field label, of common words set after options are trimmed.
149
- * @type {?string}
150
- * @package
151
- */
152
- this.suffixField = null;
136
+ this.menuGenerator_ = menuGenerator as AnyDuringMigration[][] |
137
+ ((this: FieldDropdown) => AnyDuringMigration[][]);
153
138
 
154
139
  this.trimOptions_();
155
140
 
156
141
  /**
157
142
  * The currently selected option. The field is initialized with the
158
143
  * first option selected.
159
- * @type {!Array<string|!ImageProperties>}
160
- * @private
161
144
  */
162
145
  this.selectedOption_ = this.getOptions(false)[0];
163
146
 
164
- if (opt_config) this.configure_(opt_config);
147
+ if (opt_config) {
148
+ this.configure_(opt_config);
149
+ }
165
150
  this.setValue(this.selectedOption_[1]);
166
- if (opt_validator) this.setValidator(opt_validator);
151
+ if (opt_validator) {
152
+ this.setValidator(opt_validator);
153
+ }
167
154
  }
168
155
 
169
156
  /**
170
157
  * Sets the field's value based on the given XML element. Should only be
171
158
  * called by Blockly.Xml.
172
- * @param {!Element} fieldElement The element containing info about the
173
- * field's state.
174
- * @package
159
+ * @param fieldElement The element containing info about the field's state.
160
+ * @internal
175
161
  */
176
- fromXml(fieldElement) {
162
+ override fromXml(fieldElement: Element) {
177
163
  if (this.isOptionListDynamic()) {
178
164
  this.getOptions(false);
179
165
  }
@@ -182,11 +168,10 @@ class FieldDropdown extends Field {
182
168
 
183
169
  /**
184
170
  * Sets the field's value based on the given state.
185
- * @param {*} state The state to apply to the dropdown field.
186
- * @override
187
- * @package
171
+ * @param state The state to apply to the dropdown field.
172
+ * @internal
188
173
  */
189
- loadState(state) {
174
+ override loadState(state: AnyDuringMigration) {
190
175
  if (this.loadLegacyState(FieldDropdown, state)) {
191
176
  return;
192
177
  }
@@ -198,19 +183,19 @@ class FieldDropdown extends Field {
198
183
 
199
184
  /**
200
185
  * Create the block UI for this dropdown.
201
- * @package
186
+ * @internal
202
187
  */
203
- initView() {
188
+ override initView() {
204
189
  if (this.shouldAddBorderRect_()) {
205
190
  this.createBorderRect_();
206
191
  } else {
207
- this.clickTarget_ = this.sourceBlock_.getSvgRoot();
192
+ this.clickTarget_ = (this.sourceBlock_ as BlockSvg).getSvgRoot();
208
193
  }
209
194
  this.createTextElement_();
210
195
 
211
196
  this.imageElement_ = dom.createSvgElement(Svg.IMAGE, {}, this.fieldGroup_);
212
197
 
213
- if (this.getConstants().FIELD_DROPDOWN_SVG_ARROW) {
198
+ if (this.getConstants()!.FIELD_DROPDOWN_SVG_ARROW) {
214
199
  this.createSVGArrow_();
215
200
  } else {
216
201
  this.createTextArrow_();
@@ -223,75 +208,79 @@ class FieldDropdown extends Field {
223
208
 
224
209
  /**
225
210
  * Whether or not the dropdown should add a border rect.
226
- * @return {boolean} True if the dropdown field should add a border rect.
227
- * @protected
211
+ * @return True if the dropdown field should add a border rect.
228
212
  */
229
- shouldAddBorderRect_() {
230
- return !this.getConstants().FIELD_DROPDOWN_NO_BORDER_RECT_SHADOW ||
231
- (this.getConstants().FIELD_DROPDOWN_NO_BORDER_RECT_SHADOW &&
232
- !this.sourceBlock_.isShadow());
213
+ protected shouldAddBorderRect_(): boolean {
214
+ return !this.getConstants()!.FIELD_DROPDOWN_NO_BORDER_RECT_SHADOW ||
215
+ this.getConstants()!.FIELD_DROPDOWN_NO_BORDER_RECT_SHADOW &&
216
+ !this.sourceBlock_.isShadow();
233
217
  }
234
218
 
235
- /**
236
- * Create a tspan based arrow.
237
- * @protected
238
- */
239
- createTextArrow_() {
219
+ /** Create a tspan based arrow. */
220
+ protected createTextArrow_() {
240
221
  this.arrow_ = dom.createSvgElement(Svg.TSPAN, {}, this.textElement_);
241
- this.arrow_.appendChild(document.createTextNode(
222
+ this.arrow_!.appendChild(document.createTextNode(
242
223
  this.sourceBlock_.RTL ? FieldDropdown.ARROW_CHAR + ' ' :
243
224
  ' ' + FieldDropdown.ARROW_CHAR));
244
225
  if (this.sourceBlock_.RTL) {
245
- this.textElement_.insertBefore(this.arrow_, this.textContent_);
226
+ // AnyDuringMigration because: Argument of type 'SVGTSpanElement | null'
227
+ // is not assignable to parameter of type 'Node'.
228
+ this.textElement_.insertBefore(
229
+ this.arrow_ as AnyDuringMigration, this.textContent_);
246
230
  } else {
247
- this.textElement_.appendChild(this.arrow_);
231
+ // AnyDuringMigration because: Argument of type 'SVGTSpanElement | null'
232
+ // is not assignable to parameter of type 'Node'.
233
+ this.textElement_.appendChild(this.arrow_ as AnyDuringMigration);
248
234
  }
249
235
  }
250
236
 
251
- /**
252
- * Create an SVG based arrow.
253
- * @protected
254
- */
255
- createSVGArrow_() {
237
+ /** Create an SVG based arrow. */
238
+ protected createSVGArrow_() {
256
239
  this.svgArrow_ = dom.createSvgElement(
257
240
  Svg.IMAGE, {
258
- 'height': this.getConstants().FIELD_DROPDOWN_SVG_ARROW_SIZE + 'px',
259
- 'width': this.getConstants().FIELD_DROPDOWN_SVG_ARROW_SIZE + 'px',
241
+ 'height': this.getConstants()!.FIELD_DROPDOWN_SVG_ARROW_SIZE + 'px',
242
+ 'width': this.getConstants()!.FIELD_DROPDOWN_SVG_ARROW_SIZE + 'px',
260
243
  },
261
244
  this.fieldGroup_);
262
- this.svgArrow_.setAttributeNS(
245
+ this.svgArrow_!.setAttributeNS(
263
246
  dom.XLINK_NS, 'xlink:href',
264
- this.getConstants().FIELD_DROPDOWN_SVG_ARROW_DATAURI);
247
+ this.getConstants()!.FIELD_DROPDOWN_SVG_ARROW_DATAURI);
265
248
  }
266
249
 
267
250
  /**
268
251
  * Create a dropdown menu under the text.
269
- * @param {Event=} opt_e Optional mouse event that triggered the field to
270
- * open, or undefined if triggered programmatically.
271
- * @protected
252
+ * @param opt_e Optional mouse event that triggered the field to open, or
253
+ * undefined if triggered programmatically.
272
254
  */
273
- showEditor_(opt_e) {
255
+ protected override showEditor_(opt_e?: Event) {
274
256
  this.dropdownCreate_();
275
- if (opt_e && typeof opt_e.clientX === 'number') {
276
- this.menu_.openingCoords = new Coordinate(opt_e.clientX, opt_e.clientY);
257
+ // AnyDuringMigration because: Property 'clientX' does not exist on type
258
+ // 'Event'.
259
+ if (opt_e && typeof (opt_e as AnyDuringMigration).clientX === 'number') {
260
+ // AnyDuringMigration because: Property 'clientY' does not exist on type
261
+ // 'Event'. AnyDuringMigration because: Property 'clientX' does not exist
262
+ // on type 'Event'.
263
+ this.menu_!.openingCoords = new Coordinate(
264
+ (opt_e as AnyDuringMigration).clientX,
265
+ (opt_e as AnyDuringMigration).clientY);
277
266
  } else {
278
- this.menu_.openingCoords = null;
267
+ this.menu_!.openingCoords = null;
279
268
  }
280
269
 
281
270
  // Remove any pre-existing elements in the dropdown.
282
271
  dropDownDiv.clearContent();
283
272
  // Element gets created in render.
284
- this.menu_.render(dropDownDiv.getContentDiv());
285
- const menuElement = /** @type {!Element} */ (this.menu_.getElement());
273
+ this.menu_!.render(dropDownDiv.getContentDiv());
274
+ const menuElement = this.menu_!.getElement() as Element;
286
275
  dom.addClass(menuElement, 'blocklyDropdownMenu');
287
276
 
288
- if (this.getConstants().FIELD_DROPDOWN_COLOURED_DIV) {
289
- const primaryColour = (this.sourceBlock_.isShadow()) ?
290
- this.sourceBlock_.getParent().getColour() :
277
+ if (this.getConstants()!.FIELD_DROPDOWN_COLOURED_DIV) {
278
+ const primaryColour = this.sourceBlock_.isShadow() ?
279
+ this.sourceBlock_.getParent()!.getColour() :
291
280
  this.sourceBlock_.getColour();
292
- const borderColour = (this.sourceBlock_.isShadow()) ?
293
- this.sourceBlock_.getParent().style.colourTertiary :
294
- this.sourceBlock_.style.colourTertiary;
281
+ const borderColour = this.sourceBlock_.isShadow() ?
282
+ (this.sourceBlock_.getParent() as BlockSvg).style.colourTertiary :
283
+ (this.sourceBlock_ as BlockSvg).style.colourTertiary;
295
284
  dropDownDiv.setColour(primaryColour, borderColour);
296
285
  }
297
286
 
@@ -300,20 +289,17 @@ class FieldDropdown extends Field {
300
289
  // Focusing needs to be handled after the menu is rendered and positioned.
301
290
  // Otherwise it will cause a page scroll to get the misplaced menu in
302
291
  // view. See issue #1329.
303
- this.menu_.focus();
292
+ this.menu_!.focus();
304
293
 
305
294
  if (this.selectedMenuItem_) {
306
- this.menu_.setHighlighted(this.selectedMenuItem_);
295
+ this.menu_!.setHighlighted(this.selectedMenuItem_);
307
296
  }
308
297
 
309
298
  this.applyColour();
310
299
  }
311
300
 
312
- /**
313
- * Create the dropdown editor.
314
- * @private
315
- */
316
- dropdownCreate_() {
301
+ /** Create the dropdown editor. */
302
+ private dropdownCreate_() {
317
303
  const menu = new Menu();
318
304
  menu.setRole(aria.Role.LISTBOX);
319
305
  this.menu_ = menu;
@@ -345,9 +331,8 @@ class FieldDropdown extends Field {
345
331
 
346
332
  /**
347
333
  * Disposes of events and DOM-references belonging to the dropdown editor.
348
- * @private
349
334
  */
350
- dropdownDispose_() {
335
+ private dropdownDispose_() {
351
336
  if (this.menu_) {
352
337
  this.menu_.dispose();
353
338
  }
@@ -358,30 +343,27 @@ class FieldDropdown extends Field {
358
343
 
359
344
  /**
360
345
  * Handle an action in the dropdown menu.
361
- * @param {!MenuItem} menuItem The MenuItem selected within menu.
362
- * @private
346
+ * @param menuItem The MenuItem selected within menu.
363
347
  */
364
- handleMenuActionEvent_(menuItem) {
348
+ private handleMenuActionEvent_(menuItem: MenuItem) {
365
349
  dropDownDiv.hideIfOwner(this, true);
366
- this.onItemSelected_(/** @type {!Menu} */ (this.menu_), menuItem);
350
+ this.onItemSelected_(this.menu_ as Menu, menuItem);
367
351
  }
368
352
 
369
353
  /**
370
354
  * Handle the selection of an item in the dropdown menu.
371
- * @param {!Menu} menu The Menu component clicked.
372
- * @param {!MenuItem} menuItem The MenuItem selected within menu.
373
- * @protected
355
+ * @param menu The Menu component clicked.
356
+ * @param menuItem The MenuItem selected within menu.
374
357
  */
375
- onItemSelected_(menu, menuItem) {
358
+ protected onItemSelected_(menu: Menu, menuItem: MenuItem) {
376
359
  this.setValue(menuItem.getValue());
377
360
  }
378
361
 
379
362
  /**
380
363
  * Factor out common words in statically defined options.
381
364
  * Create prefix and/or suffix labels.
382
- * @private
383
365
  */
384
- trimOptions_() {
366
+ private trimOptions_() {
385
367
  const options = this.menuGenerator_;
386
368
  if (!Array.isArray(options)) {
387
369
  return;
@@ -429,42 +411,45 @@ class FieldDropdown extends Field {
429
411
  }
430
412
 
431
413
  /**
432
- * @return {boolean} True if the option list is generated by a function.
414
+ * @return True if the option list is generated by a function.
433
415
  * Otherwise false.
434
416
  */
435
- isOptionListDynamic() {
417
+ isOptionListDynamic(): boolean {
436
418
  return typeof this.menuGenerator_ === 'function';
437
419
  }
438
420
 
439
421
  /**
440
422
  * Return a list of the options for this dropdown.
441
- * @param {boolean=} opt_useCache For dynamic options, whether or not to use
442
- * the cached options or to re-generate them.
443
- * @return {!Array<!Array>} A non-empty array of option tuples:
423
+ * @param opt_useCache For dynamic options, whether or not to use the cached
424
+ * options or to re-generate them.
425
+ * @return A non-empty array of option tuples:
444
426
  * (human-readable text or image, language-neutral name).
445
427
  * @throws {TypeError} If generated options are incorrectly structured.
446
428
  */
447
- getOptions(opt_useCache) {
429
+ getOptions(opt_useCache?: boolean): AnyDuringMigration[][] {
448
430
  if (this.isOptionListDynamic()) {
449
431
  if (!this.generatedOptions_ || !opt_useCache) {
450
- this.generatedOptions_ = this.menuGenerator_.call(this);
432
+ // AnyDuringMigration because: Property 'call' does not exist on type
433
+ // 'any[][] | ((this: FieldDropdown) => any[][])'.
434
+ this.generatedOptions_ =
435
+ (this.menuGenerator_ as AnyDuringMigration).call(this);
451
436
  validateOptions(this.generatedOptions_);
452
437
  }
453
438
  return this.generatedOptions_;
454
439
  }
455
- return /** @type {!Array<!Array<string>>} */ (this.menuGenerator_);
440
+ return this.menuGenerator_ as string[][];
456
441
  }
457
442
 
458
443
  /**
459
444
  * Ensure that the input value is a valid language-neutral option.
460
- * @param {*=} opt_newValue The input value.
461
- * @return {?string} A valid language-neutral option, or null if invalid.
462
- * @protected
445
+ * @param opt_newValue The input value.
446
+ * @return A valid language-neutral option, or null if invalid.
463
447
  */
464
- doClassValidation_(opt_newValue) {
448
+ protected override doClassValidation_(opt_newValue?: AnyDuringMigration):
449
+ string|null {
465
450
  let isValueValid = false;
466
451
  const options = this.getOptions(true);
467
- for (let i = 0, option; (option = options[i]); i++) {
452
+ for (let i = 0, option; option = options[i]; i++) {
468
453
  // Options are tuples of human-readable text and language-neutral values.
469
454
  if (option[1] === opt_newValue) {
470
455
  isValueValid = true;
@@ -480,19 +465,18 @@ class FieldDropdown extends Field {
480
465
  }
481
466
  return null;
482
467
  }
483
- return /** @type {string} */ (opt_newValue);
468
+ return opt_newValue as string;
484
469
  }
485
470
 
486
471
  /**
487
472
  * Update the value of this dropdown field.
488
- * @param {*} newValue The value to be saved. The default validator guarantees
489
- * that this is one of the valid dropdown options.
490
- * @protected
473
+ * @param newValue The value to be saved. The default validator guarantees
474
+ * that this is one of the valid dropdown options.
491
475
  */
492
- doValueUpdate_(newValue) {
476
+ protected override doValueUpdate_(newValue: AnyDuringMigration) {
493
477
  super.doValueUpdate_(newValue);
494
478
  const options = this.getOptions(true);
495
- for (let i = 0, option; (option = options[i]); i++) {
479
+ for (let i = 0, option; option = options[i]; i++) {
496
480
  if (option[1] === this.value_) {
497
481
  this.selectedOption_ = option;
498
482
  }
@@ -501,15 +485,14 @@ class FieldDropdown extends Field {
501
485
 
502
486
  /**
503
487
  * Updates the dropdown arrow to match the colour/style of the block.
504
- * @package
488
+ * @internal
505
489
  */
506
- applyColour() {
490
+ override applyColour() {
491
+ const style = (this.sourceBlock_ as BlockSvg).style;
507
492
  if (this.borderRect_) {
508
- this.borderRect_.setAttribute(
509
- 'stroke', this.sourceBlock_.style.colourTertiary);
493
+ this.borderRect_.setAttribute('stroke', style.colourTertiary);
510
494
  if (this.menu_) {
511
- this.borderRect_.setAttribute(
512
- 'fill', this.sourceBlock_.style.colourTertiary);
495
+ this.borderRect_.setAttribute('fill', style.colourTertiary);
513
496
  } else {
514
497
  this.borderRect_.setAttribute('fill', 'transparent');
515
498
  }
@@ -517,27 +500,23 @@ class FieldDropdown extends Field {
517
500
  // Update arrow's colour.
518
501
  if (this.sourceBlock_ && this.arrow_) {
519
502
  if (this.sourceBlock_.isShadow()) {
520
- this.arrow_.style.fill = this.sourceBlock_.style.colourSecondary;
503
+ this.arrow_.style.fill = style.colourSecondary;
521
504
  } else {
522
- this.arrow_.style.fill = this.sourceBlock_.style.colourPrimary;
505
+ this.arrow_.style.fill = style.colourPrimary;
523
506
  }
524
507
  }
525
508
  }
526
509
 
527
- /**
528
- * Draws the border with the correct width.
529
- * @protected
530
- */
531
- render_() {
510
+ /** Draws the border with the correct width. */
511
+ protected override render_() {
532
512
  // Hide both elements.
533
513
  this.textContent_.nodeValue = '';
534
- this.imageElement_.style.display = 'none';
514
+ this.imageElement_!.style.display = 'none';
535
515
 
536
516
  // Show correct element.
537
517
  const option = this.selectedOption_ && this.selectedOption_[0];
538
518
  if (option && typeof option === 'object') {
539
- this.renderSelectedImage_(
540
- /** @type {!ImageProperties} */ (option));
519
+ this.renderSelectedImage_((option));
541
520
  } else {
542
521
  this.renderSelectedText_();
543
522
  }
@@ -547,16 +526,20 @@ class FieldDropdown extends Field {
547
526
 
548
527
  /**
549
528
  * Renders the selected option, which must be an image.
550
- * @param {!ImageProperties} imageJson Selected
551
- * option that must be an image.
552
- * @private
529
+ * @param imageJson Selected option that must be an image.
553
530
  */
554
- renderSelectedImage_(imageJson) {
555
- this.imageElement_.style.display = '';
556
- this.imageElement_.setAttributeNS(
531
+ private renderSelectedImage_(imageJson: ImageProperties) {
532
+ this.imageElement_!.style.display = '';
533
+ this.imageElement_!.setAttributeNS(
557
534
  dom.XLINK_NS, 'xlink:href', imageJson.src);
558
- this.imageElement_.setAttribute('height', imageJson.height);
559
- this.imageElement_.setAttribute('width', imageJson.width);
535
+ // AnyDuringMigration because: Argument of type 'number' is not assignable
536
+ // to parameter of type 'string'.
537
+ this.imageElement_!.setAttribute(
538
+ 'height', imageJson.height as AnyDuringMigration);
539
+ // AnyDuringMigration because: Argument of type 'number' is not assignable
540
+ // to parameter of type 'string'.
541
+ this.imageElement_!.setAttribute(
542
+ 'width', imageJson.width as AnyDuringMigration);
560
543
 
561
544
  const imageHeight = Number(imageJson.height);
562
545
  const imageWidth = Number(imageJson.width);
@@ -564,21 +547,21 @@ class FieldDropdown extends Field {
564
547
  // Height and width include the border rect.
565
548
  const hasBorder = !!this.borderRect_;
566
549
  const height = Math.max(
567
- hasBorder ? this.getConstants().FIELD_DROPDOWN_BORDER_RECT_HEIGHT : 0,
550
+ hasBorder ? this.getConstants()!.FIELD_DROPDOWN_BORDER_RECT_HEIGHT : 0,
568
551
  imageHeight + IMAGE_Y_PADDING);
569
552
  const xPadding =
570
- hasBorder ? this.getConstants().FIELD_BORDER_RECT_X_PADDING : 0;
553
+ hasBorder ? this.getConstants()!.FIELD_BORDER_RECT_X_PADDING : 0;
571
554
  let arrowWidth = 0;
572
555
  if (this.svgArrow_) {
573
556
  arrowWidth = this.positionSVGArrow_(
574
557
  imageWidth + xPadding,
575
- height / 2 - this.getConstants().FIELD_DROPDOWN_SVG_ARROW_SIZE / 2);
558
+ height / 2 - this.getConstants()!.FIELD_DROPDOWN_SVG_ARROW_SIZE / 2);
576
559
  } else {
577
560
  arrowWidth = dom.getFastTextWidth(
578
- /** @type {!SVGTSpanElement} */ (this.arrow_),
579
- this.getConstants().FIELD_TEXT_FONTSIZE,
580
- this.getConstants().FIELD_TEXT_FONTWEIGHT,
581
- this.getConstants().FIELD_TEXT_FONTFAMILY);
561
+ this.arrow_ as SVGTSpanElement,
562
+ this.getConstants()!.FIELD_TEXT_FONTSIZE,
563
+ this.getConstants()!.FIELD_TEXT_FONTWEIGHT,
564
+ this.getConstants()!.FIELD_TEXT_FONTFAMILY);
582
565
  }
583
566
  this.size_.width = imageWidth + arrowWidth + xPadding * 2;
584
567
  this.size_.height = height;
@@ -586,44 +569,41 @@ class FieldDropdown extends Field {
586
569
  let arrowX = 0;
587
570
  if (this.sourceBlock_.RTL) {
588
571
  const imageX = xPadding + arrowWidth;
589
- this.imageElement_.setAttribute('x', imageX);
572
+ this.imageElement_!.setAttribute('x', imageX.toString());
590
573
  } else {
591
574
  arrowX = imageWidth + arrowWidth;
592
575
  this.textElement_.setAttribute('text-anchor', 'end');
593
- this.imageElement_.setAttribute('x', xPadding);
576
+ this.imageElement_!.setAttribute('x', xPadding.toString());
594
577
  }
595
- this.imageElement_.setAttribute('y', height / 2 - imageHeight / 2);
578
+ this.imageElement_!.setAttribute(
579
+ 'y', (height / 2 - imageHeight / 2).toString());
596
580
 
597
581
  this.positionTextElement_(arrowX + xPadding, imageWidth + arrowWidth);
598
582
  }
599
583
 
600
- /**
601
- * Renders the selected option, which must be text.
602
- * @private
603
- */
604
- renderSelectedText_() {
584
+ /** Renders the selected option, which must be text. */
585
+ private renderSelectedText_() {
605
586
  // Retrieves the selected option to display through getText_.
606
587
  this.textContent_.nodeValue = this.getDisplayText_();
607
- dom.addClass(
608
- /** @type {!Element} */ (this.textElement_), 'blocklyDropdownText');
588
+ dom.addClass(this.textElement_ as Element, 'blocklyDropdownText');
609
589
  this.textElement_.setAttribute('text-anchor', 'start');
610
590
 
611
591
  // Height and width include the border rect.
612
592
  const hasBorder = !!this.borderRect_;
613
593
  const height = Math.max(
614
- hasBorder ? this.getConstants().FIELD_DROPDOWN_BORDER_RECT_HEIGHT : 0,
615
- this.getConstants().FIELD_TEXT_HEIGHT);
594
+ hasBorder ? this.getConstants()!.FIELD_DROPDOWN_BORDER_RECT_HEIGHT : 0,
595
+ this.getConstants()!.FIELD_TEXT_HEIGHT);
616
596
  const textWidth = dom.getFastTextWidth(
617
- this.textElement_, this.getConstants().FIELD_TEXT_FONTSIZE,
618
- this.getConstants().FIELD_TEXT_FONTWEIGHT,
619
- this.getConstants().FIELD_TEXT_FONTFAMILY);
597
+ this.textElement_, this.getConstants()!.FIELD_TEXT_FONTSIZE,
598
+ this.getConstants()!.FIELD_TEXT_FONTWEIGHT,
599
+ this.getConstants()!.FIELD_TEXT_FONTFAMILY);
620
600
  const xPadding =
621
- hasBorder ? this.getConstants().FIELD_BORDER_RECT_X_PADDING : 0;
601
+ hasBorder ? this.getConstants()!.FIELD_BORDER_RECT_X_PADDING : 0;
622
602
  let arrowWidth = 0;
623
603
  if (this.svgArrow_) {
624
604
  arrowWidth = this.positionSVGArrow_(
625
605
  textWidth + xPadding,
626
- height / 2 - this.getConstants().FIELD_DROPDOWN_SVG_ARROW_SIZE / 2);
606
+ height / 2 - this.getConstants()!.FIELD_DROPDOWN_SVG_ARROW_SIZE / 2);
627
607
  }
628
608
  this.size_.width = textWidth + arrowWidth + xPadding * 2;
629
609
  this.size_.height = height;
@@ -633,20 +613,19 @@ class FieldDropdown extends Field {
633
613
 
634
614
  /**
635
615
  * Position a drop-down arrow at the appropriate location at render-time.
636
- * @param {number} x X position the arrow is being rendered at, in px.
637
- * @param {number} y Y position the arrow is being rendered at, in px.
638
- * @return {number} Amount of space the arrow is taking up, in px.
639
- * @private
616
+ * @param x X position the arrow is being rendered at, in px.
617
+ * @param y Y position the arrow is being rendered at, in px.
618
+ * @return Amount of space the arrow is taking up, in px.
640
619
  */
641
- positionSVGArrow_(x, y) {
620
+ private positionSVGArrow_(x: number, y: number): number {
642
621
  if (!this.svgArrow_) {
643
622
  return 0;
644
623
  }
645
624
  const hasBorder = !!this.borderRect_;
646
625
  const xPadding =
647
- hasBorder ? this.getConstants().FIELD_BORDER_RECT_X_PADDING : 0;
648
- const textPadding = this.getConstants().FIELD_DROPDOWN_SVG_ARROW_PADDING;
649
- const svgArrowSize = this.getConstants().FIELD_DROPDOWN_SVG_ARROW_SIZE;
626
+ hasBorder ? this.getConstants()!.FIELD_BORDER_RECT_X_PADDING : 0;
627
+ const textPadding = this.getConstants()!.FIELD_DROPDOWN_SVG_ARROW_PADDING;
628
+ const svgArrowSize = this.getConstants()!.FIELD_DROPDOWN_SVG_ARROW_SIZE;
650
629
  const arrowX = this.sourceBlock_.RTL ? xPadding : x + textPadding;
651
630
  this.svgArrow_.setAttribute(
652
631
  'transform', 'translate(' + arrowX + ',' + y + ')');
@@ -657,11 +636,9 @@ class FieldDropdown extends Field {
657
636
  * Use the `getText_` developer hook to override the field's text
658
637
  * representation. Get the selected option text. If the selected option is an
659
638
  * image we return the image alt text.
660
- * @return {?string} Selected option text.
661
- * @protected
662
- * @override
639
+ * @return Selected option text.
663
640
  */
664
- getText_() {
641
+ protected override getText_(): string|null {
665
642
  if (!this.selectedOption_) {
666
643
  return null;
667
644
  }
@@ -674,27 +651,35 @@ class FieldDropdown extends Field {
674
651
 
675
652
  /**
676
653
  * Construct a FieldDropdown from a JSON arg object.
677
- * @param {!Object} options A JSON object with options (options).
678
- * @return {!FieldDropdown} The new field instance.
679
- * @package
654
+ * @param options A JSON object with options (options).
655
+ * @return The new field instance.
680
656
  * @nocollapse
657
+ * @internal
681
658
  */
682
- static fromJson(options) {
659
+ static fromJson(options: FieldDropdownFromJsonConfig): FieldDropdown {
660
+ if (!options.options) {
661
+ throw new Error(
662
+ 'options are required for the dropdown field. The ' +
663
+ 'options property must be assigned an array of ' +
664
+ '[humanReadableValue, languageNeutralValue] tuples.');
665
+ }
683
666
  // `this` might be a subclass of FieldDropdown if that class doesn't
684
667
  // override the static fromJson method.
685
- return new this(options['options'], undefined, options);
668
+ return new this(options.options, undefined, options);
686
669
  }
687
670
 
688
671
  /**
689
672
  * Use the calculated prefix and suffix lengths to trim all of the options in
690
673
  * the given array.
691
- * @param {!Array<!Array>} options Array of option tuples:
674
+ * @param options Array of option tuples:
692
675
  * (human-readable text or image, language-neutral name).
693
- * @param {number} prefixLength The length of the common prefix.
694
- * @param {number} suffixLength The length of the common suffix
695
- * @return {!Array<!Array>} A new array with all of the option text trimmed.
676
+ * @param prefixLength The length of the common prefix.
677
+ * @param suffixLength The length of the common suffix
678
+ * @return A new array with all of the option text trimmed.
696
679
  */
697
- static applyTrim_(options, prefixLength, suffixLength) {
680
+ static applyTrim_(
681
+ options: AnyDuringMigration[][], prefixLength: number,
682
+ suffixLength: number): AnyDuringMigration[][] {
698
683
  const newOptions = [];
699
684
  // Remove the prefix and suffix from the options.
700
685
  for (let i = 0; i < options.length; i++) {
@@ -708,52 +693,47 @@ class FieldDropdown extends Field {
708
693
  }
709
694
 
710
695
  /**
711
- * Dropdown image properties.
712
- * @typedef {{
713
- * src:string,
714
- * alt:string,
715
- * width:number,
716
- * height:number
717
- * }}
696
+ * Definition of a human-readable image dropdown option.
718
697
  */
719
- let ImageProperties; // eslint-disable-line no-unused-vars
698
+ export interface ImageProperties {
699
+ src: string;
700
+ alt: string;
701
+ width: number;
702
+ height: number;
703
+ }
720
704
 
721
705
  /**
722
- * Horizontal distance that a checkmark overhangs the dropdown.
706
+ * An individual option in the dropdown menu. The first element is the human-
707
+ * readable value (text or image), and the second element is the language-
708
+ * neutral value.
723
709
  */
724
- FieldDropdown.CHECKMARK_OVERHANG = 25;
710
+ export type MenuOption = [string | ImageProperties, string];
725
711
 
726
712
  /**
727
- * Maximum height of the dropdown menu, as a percentage of the viewport height.
713
+ * fromJson config for the dropdown field.
728
714
  */
729
- FieldDropdown.MAX_MENU_HEIGHT_VH = 0.45;
715
+ export interface FieldDropdownFromJsonConfig extends FieldConfig {
716
+ options?: MenuOption[];
717
+ }
730
718
 
731
719
  /**
732
720
  * The y offset from the top of the field to the top of the image, if an image
733
721
  * is selected.
734
- * @type {number}
735
- * @const
736
722
  */
737
723
  const IMAGE_Y_OFFSET = 5;
738
724
 
739
- /**
740
- * The total vertical padding above and below an image.
741
- * @type {number}
742
- * @const
743
- */
744
- const IMAGE_Y_PADDING = IMAGE_Y_OFFSET * 2;
725
+ /** The total vertical padding above and below an image. */
726
+ const IMAGE_Y_PADDING: number = IMAGE_Y_OFFSET * 2;
745
727
 
746
- /**
747
- * Android can't (in 2014) display "▾", so use "▼" instead.
748
- */
728
+ /** Android can't (in 2014) display "▾", so use "▼" instead. */
749
729
  FieldDropdown.ARROW_CHAR = userAgent.ANDROID ? '\u25BC' : '\u25BE';
750
730
 
751
731
  /**
752
732
  * Validates the data structure to be processed as an options list.
753
- * @param {?} options The proposed dropdown options.
733
+ * @param options The proposed dropdown options.
754
734
  * @throws {TypeError} If proposed options are incorrectly structured.
755
735
  */
756
- const validateOptions = function(options) {
736
+ function validateOptions(options: AnyDuringMigration) {
757
737
  if (!Array.isArray(options)) {
758
738
  throw TypeError('FieldDropdown options must be an array.');
759
739
  }
@@ -776,8 +756,8 @@ const validateOptions = function(options) {
776
756
  'a string. Found ' + tuple[1] + ' in: ',
777
757
  tuple);
778
758
  } else if (
779
- tuple[0] && (typeof tuple[0] !== 'string') &&
780
- (typeof tuple[0].src !== 'string')) {
759
+ tuple[0] && typeof tuple[0] !== 'string' &&
760
+ typeof tuple[0].src !== 'string') {
781
761
  foundError = true;
782
762
  console.error(
783
763
  'Invalid option[' + i + ']: Each FieldDropdown option must have a ' +
@@ -788,8 +768,6 @@ const validateOptions = function(options) {
788
768
  if (foundError) {
789
769
  throw TypeError('Found invalid FieldDropdown options.');
790
770
  }
791
- };
771
+ }
792
772
 
793
773
  fieldRegistry.register('field_dropdown', FieldDropdown);
794
-
795
- exports.FieldDropdown = FieldDropdown;