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
@@ -7,172 +7,156 @@
7
7
  /**
8
8
  * @fileoverview Variable input field.
9
9
  */
10
- 'use strict';
11
10
 
12
11
  /**
13
12
  * Variable input field.
14
13
  * @class
15
14
  */
16
- goog.module('Blockly.FieldVariable');
17
-
18
- const Variables = goog.require('Blockly.Variables');
19
- const Xml = goog.require('Blockly.Xml');
20
- const fieldRegistry = goog.require('Blockly.fieldRegistry');
21
- const internalConstants = goog.require('Blockly.internalConstants');
22
- const parsing = goog.require('Blockly.utils.parsing');
23
- /* eslint-disable-next-line no-unused-vars */
24
- const {Block} = goog.requireType('Blockly.Block');
25
- const {Field} = goog.require('Blockly.Field');
26
- const {FieldDropdown} = goog.require('Blockly.FieldDropdown');
27
- /* eslint-disable-next-line no-unused-vars */
28
- const {MenuItem} = goog.requireType('Blockly.MenuItem');
29
- /* eslint-disable-next-line no-unused-vars */
30
- const {Menu} = goog.requireType('Blockly.Menu');
31
- const {Msg} = goog.require('Blockly.Msg');
32
- /* eslint-disable-next-line no-unused-vars */
33
- const {Sentinel} = goog.requireType('Blockly.utils.Sentinel');
34
- const {Size} = goog.require('Blockly.utils.Size');
35
- const {VariableModel} = goog.require('Blockly.VariableModel');
36
- /** @suppress {extraRequire} */
37
- goog.require('Blockly.Events.BlockChange');
15
+ import * as goog from '../closure/goog/goog.js';
16
+ goog.declareModuleId('Blockly.FieldVariable');
17
+
18
+ // Unused import preserved for side-effects. Remove if unneeded.
19
+ import './events/events_block_change.js';
20
+
21
+ import type {Block} from './block.js';
22
+ import {Field, FieldConfig} from './field.js';
23
+ import {FieldDropdown} from './field_dropdown.js';
24
+ import * as fieldRegistry from './field_registry.js';
25
+ import * as internalConstants from './internal_constants.js';
26
+ import type {Menu} from './menu.js';
27
+ import type {MenuItem} from './menuitem.js';
28
+ import {Msg} from './msg.js';
29
+ import * as parsing from './utils/parsing.js';
30
+ import type {Sentinel} from './utils/sentinel.js';
31
+ import {Size} from './utils/size.js';
32
+ import {VariableModel} from './variable_model.js';
33
+ import * as Variables from './variables.js';
34
+ import * as Xml from './xml.js';
38
35
 
39
36
 
40
37
  /**
41
38
  * Class for a variable's dropdown field.
42
- * @extends {FieldDropdown}
43
39
  * @alias Blockly.FieldVariable
44
40
  */
45
- class FieldVariable extends FieldDropdown {
41
+ export class FieldVariable extends FieldDropdown {
42
+ protected override menuGenerator_: AnyDuringMigration[][]|
43
+ ((this: FieldDropdown) => AnyDuringMigration[][]);
44
+ defaultVariableName: string;
45
+
46
+ /** The type of the default variable for this field. */
47
+ private defaultType_ = '';
48
+
49
+ /**
50
+ * All of the types of variables that will be available in this field's
51
+ * dropdown.
52
+ */
53
+ variableTypes: string[]|null = [];
54
+ protected override size_: Size;
55
+
56
+ /** The variable model associated with this field. */
57
+ private variable_: VariableModel|null = null;
58
+
46
59
  /**
47
- * @param {?string|!Sentinel} varName The default name for the variable.
60
+ * Serializable fields are saved by the serializer, non-serializable fields
61
+ * are not. Editable fields should also be serializable.
62
+ */
63
+ override SERIALIZABLE = true;
64
+
65
+ /**
66
+ * @param varName The default name for the variable.
48
67
  * If null, a unique variable name will be generated.
49
68
  * Also accepts Field.SKIP_SETUP if you wish to skip setup (only used by
50
- * subclasses that want to handle configuration and setting the field
51
- * value after their own constructors have run).
52
- * @param {Function=} opt_validator A function that is called to validate
53
- * changes to the field's value. Takes in a variable ID & returns a
54
- * validated variable ID, or null to abort the change.
55
- * @param {Array<string>=} opt_variableTypes A list of the types of variables
56
- * to include in the dropdown. Will only be used if opt_config is not
57
- * provided.
58
- * @param {string=} opt_defaultType The type of variable to create if this
59
- * field's value is not explicitly set. Defaults to ''. Will only be used
60
- * if opt_config is not provided.
61
- * @param {Object=} opt_config A map of options used to configure the field.
69
+ * subclasses that want to handle configuration and setting the field value
70
+ * after their own constructors have run).
71
+ * @param opt_validator A function that is called to validate changes to the
72
+ * field's value. Takes in a variable ID & returns a validated variable
73
+ * ID, or null to abort the change.
74
+ * @param opt_variableTypes A list of the types of variables to include in the
75
+ * dropdown. Will only be used if opt_config is not provided.
76
+ * @param opt_defaultType The type of variable to create if this field's value
77
+ * is not explicitly set. Defaults to ''. Will only be used if opt_config
78
+ * is not provided.
79
+ * @param opt_config A map of options used to configure the field.
62
80
  * See the [field creation documentation]{@link
63
- * https://developers.google.com/blockly/guides/create-custom-blocks/fields/built-in-fields/variable#creation}
64
- * for a list of properties this parameter supports.
81
+ * https://developers.google.com/blockly/guides/create-custom-blocks/fields/built-in-fields/variable#creation}
82
+ * for a list of properties this parameter supports.
65
83
  */
66
84
  constructor(
67
- varName, opt_validator, opt_variableTypes, opt_defaultType, opt_config) {
85
+ varName: string|null|Sentinel, opt_validator?: Function,
86
+ opt_variableTypes?: string[], opt_defaultType?: string,
87
+ opt_config?: FieldVariableConfig) {
68
88
  super(Field.SKIP_SETUP);
69
89
 
70
90
  /**
71
91
  * An array of options for a dropdown list,
72
92
  * or a function which generates these options.
73
- * @type {(!Array<!Array>|
74
- * !function(this:FieldDropdown): !Array<!Array>)}
75
- * @protected
76
93
  */
77
- this.menuGenerator_ = FieldVariable.dropdownCreate;
94
+ // AnyDuringMigration because: Type '(this: FieldVariable) => any[][]' is
95
+ // not assignable to type 'any[][] | ((this: FieldDropdown) => any[][])'.
96
+ this.menuGenerator_ = FieldVariable.dropdownCreate as AnyDuringMigration;
78
97
 
79
98
  /**
80
99
  * The initial variable name passed to this field's constructor, or an
81
100
  * empty string if a name wasn't provided. Used to create the initial
82
101
  * variable.
83
- * @type {string}
84
102
  */
85
103
  this.defaultVariableName = typeof varName === 'string' ? varName : '';
86
104
 
87
- /**
88
- * The type of the default variable for this field.
89
- * @type {string}
90
- * @private
91
- */
92
- this.defaultType_ = '';
93
-
94
- /**
95
- * All of the types of variables that will be available in this field's
96
- * dropdown.
97
- * @type {?Array<string>}
98
- */
99
- this.variableTypes = [];
100
-
101
- /**
102
- * The size of the area rendered by the field.
103
- * @type {Size}
104
- * @protected
105
- * @override
106
- */
105
+ /** The size of the area rendered by the field. */
107
106
  this.size_ = new Size(0, 0);
108
107
 
109
- /**
110
- * The variable model associated with this field.
111
- * @type {?VariableModel}
112
- * @private
113
- */
114
- this.variable_ = null;
115
-
116
- /**
117
- * Serializable fields are saved by the serializer, non-serializable fields
118
- * are not. Editable fields should also be serializable.
119
- * @type {boolean}
120
- */
121
- this.SERIALIZABLE = true;
122
-
123
- if (varName === Field.SKIP_SETUP) return;
108
+ if (varName === Field.SKIP_SETUP) {
109
+ return;
110
+ }
124
111
 
125
112
  if (opt_config) {
126
113
  this.configure_(opt_config);
127
114
  } else {
128
115
  this.setTypes_(opt_variableTypes, opt_defaultType);
129
116
  }
130
- if (opt_validator) this.setValidator(opt_validator);
117
+ if (opt_validator) {
118
+ this.setValidator(opt_validator);
119
+ }
131
120
  }
132
121
 
133
122
  /**
134
123
  * Configure the field based on the given map of options.
135
- * @param {!Object} config A map of options to configure the field based on.
136
- * @protected
124
+ * @param config A map of options to configure the field based on.
137
125
  */
138
- configure_(config) {
126
+ protected override configure_(config: FieldVariableConfig) {
139
127
  super.configure_(config);
140
- this.setTypes_(config['variableTypes'], config['defaultType']);
128
+ this.setTypes_(config.variableTypes, config.defaultType);
141
129
  }
142
130
 
143
131
  /**
144
132
  * Initialize the model for this field if it has not already been initialized.
145
133
  * If the value has not been set to a variable by the first render, we make up
146
134
  * a variable rather than let the value be invalid.
147
- * @package
135
+ * @internal
148
136
  */
149
- initModel() {
137
+ override initModel() {
150
138
  if (this.variable_) {
151
139
  return; // Initialization already happened.
152
140
  }
153
141
  const variable = Variables.getOrCreateVariablePackage(
154
142
  this.sourceBlock_.workspace, null, this.defaultVariableName,
155
143
  this.defaultType_);
156
-
157
144
  // Don't call setValue because we don't want to cause a rerender.
158
145
  this.doValueUpdate_(variable.getId());
159
146
  }
160
147
 
161
- /**
162
- * @override
163
- */
164
- shouldAddBorderRect_() {
148
+ override shouldAddBorderRect_() {
165
149
  return super.shouldAddBorderRect_() &&
166
- (!this.getConstants().FIELD_DROPDOWN_NO_BORDER_RECT_SHADOW ||
150
+ (!this.getConstants()!.FIELD_DROPDOWN_NO_BORDER_RECT_SHADOW ||
167
151
  this.sourceBlock_.type !== 'variables_get');
168
152
  }
169
153
 
170
154
  /**
171
155
  * Initialize this field based on the given XML.
172
- * @param {!Element} fieldElement The element containing information about the
173
- * variable field's state.
156
+ * @param fieldElement The element containing information about the variable
157
+ * field's state.
174
158
  */
175
- fromXml(fieldElement) {
159
+ override fromXml(fieldElement: Element) {
176
160
  const id = fieldElement.getAttribute('id');
177
161
  const variableName = fieldElement.textContent;
178
162
  // 'variabletype' should be lowercase, but until July 2019 it was sometimes
@@ -180,8 +164,11 @@ class FieldVariable extends FieldDropdown {
180
164
  const variableType = fieldElement.getAttribute('variabletype') ||
181
165
  fieldElement.getAttribute('variableType') || '';
182
166
 
167
+ // AnyDuringMigration because: Argument of type 'string | null' is not
168
+ // assignable to parameter of type 'string | undefined'.
183
169
  const variable = Variables.getOrCreateVariablePackage(
184
- this.sourceBlock_.workspace, id, variableName, variableType);
170
+ this.sourceBlock_.workspace, id, variableName as AnyDuringMigration,
171
+ variableType);
185
172
 
186
173
  // This should never happen :)
187
174
  if (variableType !== null && variableType !== variable.type) {
@@ -197,54 +184,51 @@ class FieldVariable extends FieldDropdown {
197
184
 
198
185
  /**
199
186
  * Serialize this field to XML.
200
- * @param {!Element} fieldElement The element to populate with info about the
201
- * field's state.
202
- * @return {!Element} The element containing info about the field's state.
187
+ * @param fieldElement The element to populate with info about the field's
188
+ * state.
189
+ * @return The element containing info about the field's state.
203
190
  */
204
- toXml(fieldElement) {
191
+ override toXml(fieldElement: Element): Element {
205
192
  // Make sure the variable is initialized.
206
193
  this.initModel();
207
194
 
208
- fieldElement.id = this.variable_.getId();
209
- fieldElement.textContent = this.variable_.name;
210
- if (this.variable_.type) {
211
- fieldElement.setAttribute('variabletype', this.variable_.type);
195
+ fieldElement.id = this.variable_!.getId();
196
+ fieldElement.textContent = this.variable_!.name;
197
+ if (this.variable_!.type) {
198
+ fieldElement.setAttribute('variabletype', this.variable_!.type);
212
199
  }
213
200
  return fieldElement;
214
201
  }
215
202
 
216
203
  /**
217
204
  * Saves this field's value.
218
- * @param {boolean=} doFullSerialization If true, the variable field will
219
- * serialize the full state of the field being referenced (ie ID, name,
220
- * and type) rather than just a reference to it (ie ID).
221
- * @return {*} The state of the variable field.
222
- * @override
223
- * @package
205
+ * @param doFullSerialization If true, the variable field will serialize the
206
+ * full state of the field being referenced (ie ID, name, and type) rather
207
+ * than just a reference to it (ie ID).
208
+ * @return The state of the variable field.
209
+ * @internal
224
210
  */
225
- saveState(doFullSerialization) {
211
+ override saveState(doFullSerialization?: boolean): AnyDuringMigration {
226
212
  const legacyState = this.saveLegacyState(FieldVariable);
227
213
  if (legacyState !== null) {
228
214
  return legacyState;
229
215
  }
230
216
  // Make sure the variable is initialized.
231
217
  this.initModel();
232
- const state = {'id': this.variable_.getId()};
218
+ const state = {'id': this.variable_!.getId()};
233
219
  if (doFullSerialization) {
234
- state['name'] = this.variable_.name;
235
- state['type'] = this.variable_.type;
220
+ (state as AnyDuringMigration)['name'] = this.variable_!.name;
221
+ (state as AnyDuringMigration)['type'] = this.variable_!.type;
236
222
  }
237
223
  return state;
238
224
  }
239
225
 
240
226
  /**
241
227
  * Sets the field's value based on the given state.
242
- * @param {*} state The state of the variable to assign to this variable
243
- * field.
244
- * @override
245
- * @package
228
+ * @param state The state of the variable to assign to this variable field.
229
+ * @internal
246
230
  */
247
- loadState(state) {
231
+ override loadState(state: AnyDuringMigration) {
248
232
  if (this.loadLegacyState(FieldVariable, state)) {
249
233
  return;
250
234
  }
@@ -257,9 +241,9 @@ class FieldVariable extends FieldDropdown {
257
241
 
258
242
  /**
259
243
  * Attach this field to a block.
260
- * @param {!Block} block The block containing this field.
244
+ * @param block The block containing this field.
261
245
  */
262
- setSourceBlock(block) {
246
+ override setSourceBlock(block: Block) {
263
247
  if (block.isShadow()) {
264
248
  throw Error('Variable fields are not allowed to exist on shadow blocks.');
265
249
  }
@@ -268,18 +252,18 @@ class FieldVariable extends FieldDropdown {
268
252
 
269
253
  /**
270
254
  * Get the variable's ID.
271
- * @return {?string} Current variable's ID.
255
+ * @return Current variable's ID.
272
256
  */
273
- getValue() {
257
+ override getValue(): string|null {
274
258
  return this.variable_ ? this.variable_.getId() : null;
275
259
  }
276
260
 
277
261
  /**
278
262
  * Get the text from this field, which is the selected variable's name.
279
- * @return {string} The selected variable's name, or the empty string if no
280
- * variable is selected.
263
+ * @return The selected variable's name, or the empty string if no variable is
264
+ * selected.
281
265
  */
282
- getText() {
266
+ override getText(): string {
283
267
  return this.variable_ ? this.variable_.name : '';
284
268
  }
285
269
 
@@ -287,11 +271,10 @@ class FieldVariable extends FieldDropdown {
287
271
  * Get the variable model for the selected variable.
288
272
  * Not guaranteed to be in the variable map on the workspace (e.g. if accessed
289
273
  * after the variable has been deleted).
290
- * @return {?VariableModel} The selected variable, or null if none was
291
- * selected.
292
- * @package
274
+ * @return The selected variable, or null if none was selected.
275
+ * @internal
293
276
  */
294
- getVariable() {
277
+ getVariable(): VariableModel|null {
295
278
  return this.variable_;
296
279
  }
297
280
 
@@ -300,9 +283,9 @@ class FieldVariable extends FieldDropdown {
300
283
  * Returns null if the variable is not set, because validators should not
301
284
  * run on the initial setValue call, because the field won't be attached to
302
285
  * a block and workspace at that point.
303
- * @return {?Function} Validation function, or null.
286
+ * @return Validation function, or null.
304
287
  */
305
- getValidator() {
288
+ override getValidator(): Function|null {
306
289
  // Validators shouldn't operate on the initial setValue call.
307
290
  // Normally this is achieved by calling setValidator after setValue, but
308
291
  // this is not a possibility with variable fields.
@@ -314,15 +297,15 @@ class FieldVariable extends FieldDropdown {
314
297
 
315
298
  /**
316
299
  * Ensure that the ID belongs to a valid variable of an allowed type.
317
- * @param {*=} opt_newValue The ID of the new variable to set.
318
- * @return {?string} The validated ID, or null if invalid.
319
- * @protected
300
+ * @param opt_newValue The ID of the new variable to set.
301
+ * @return The validated ID, or null if invalid.
320
302
  */
321
- doClassValidation_(opt_newValue) {
303
+ protected override doClassValidation_(opt_newValue?: AnyDuringMigration):
304
+ string|null {
322
305
  if (opt_newValue === null) {
323
306
  return null;
324
307
  }
325
- const newId = /** @type {string} */ (opt_newValue);
308
+ const newId = opt_newValue as string;
326
309
  const variable = Variables.getVariable(this.sourceBlock_.workspace, newId);
327
310
  if (!variable) {
328
311
  console.warn(
@@ -345,22 +328,20 @@ class FieldVariable extends FieldDropdown {
345
328
  *
346
329
  * The variable ID should be valid at this point, but if a variable field
347
330
  * validator returns a bad ID, this could break.
348
- * @param {*} newId The value to be saved.
349
- * @protected
331
+ * @param newId The value to be saved.
350
332
  */
351
- doValueUpdate_(newId) {
352
- this.variable_ = Variables.getVariable(
353
- this.sourceBlock_.workspace, /** @type {string} */ (newId));
333
+ protected override doValueUpdate_(newId: AnyDuringMigration) {
334
+ this.variable_ =
335
+ Variables.getVariable(this.sourceBlock_.workspace, newId as string);
354
336
  super.doValueUpdate_(newId);
355
337
  }
356
338
 
357
339
  /**
358
340
  * Check whether the given variable type is allowed on this field.
359
- * @param {string} type The type to check.
360
- * @return {boolean} True if the type is in the list of allowed types.
361
- * @private
341
+ * @param type The type to check.
342
+ * @return True if the type is in the list of allowed types.
362
343
  */
363
- typeIsAllowed_(type) {
344
+ private typeIsAllowed_(type: string): boolean {
364
345
  const typeList = this.getVariableTypes_();
365
346
  if (!typeList) {
366
347
  return true; // If it's null, all types are valid.
@@ -375,16 +356,15 @@ class FieldVariable extends FieldDropdown {
375
356
 
376
357
  /**
377
358
  * Return a list of variable types to include in the dropdown.
378
- * @return {!Array<string>} Array of variable types.
359
+ * @return Array of variable types.
379
360
  * @throws {Error} if variableTypes is an empty array.
380
- * @private
381
361
  */
382
- getVariableTypes_() {
362
+ private getVariableTypes_(): string[] {
383
363
  // TODO (#1513): Try to avoid calling this every time the field is edited.
384
364
  let variableTypes = this.variableTypes;
385
365
  if (variableTypes === null) {
386
366
  // If variableTypes is null, return all variable types.
387
- if (this.sourceBlock_ && this.sourceBlock_.workspace) {
367
+ if (this.sourceBlock_ && !this.sourceBlock_.disposed) {
388
368
  return this.sourceBlock_.workspace.getVariableTypes();
389
369
  }
390
370
  }
@@ -401,14 +381,13 @@ class FieldVariable extends FieldDropdown {
401
381
  /**
402
382
  * Parse the optional arguments representing the allowed variable types and
403
383
  * the default variable type.
404
- * @param {Array<string>=} opt_variableTypes A list of the types of variables
405
- * to include in the dropdown. If null or undefined, variables of all
406
- * types will be displayed in the dropdown.
407
- * @param {string=} opt_defaultType The type of the variable to create if this
408
- * field's value is not explicitly set. Defaults to ''.
409
- * @private
384
+ * @param opt_variableTypes A list of the types of variables to include in the
385
+ * dropdown. If null or undefined, variables of all types will be
386
+ * displayed in the dropdown.
387
+ * @param opt_defaultType The type of the variable to create if this field's
388
+ * value is not explicitly set. Defaults to ''.
410
389
  */
411
- setTypes_(opt_variableTypes, opt_defaultType) {
390
+ private setTypes_(opt_variableTypes?: string[], opt_defaultType?: string) {
412
391
  // If you expected that the default type would be the same as the only entry
413
392
  // in the variable types array, tell the Blockly team by commenting on
414
393
  // #1499.
@@ -445,10 +424,9 @@ class FieldVariable extends FieldDropdown {
445
424
  * Refreshes the name of the variable by grabbing the name of the model.
446
425
  * Used when a variable gets renamed, but the ID stays the same. Should only
447
426
  * be called by the block.
448
- * @override
449
- * @package
427
+ * @internal
450
428
  */
451
- refreshVariableName() {
429
+ override refreshVariableName() {
452
430
  this.forceRerender();
453
431
  }
454
432
 
@@ -456,23 +434,21 @@ class FieldVariable extends FieldDropdown {
456
434
  * Handle the selection of an item in the variable dropdown menu.
457
435
  * Special case the 'Rename variable...' and 'Delete variable...' options.
458
436
  * In the rename case, prompt the user for a new name.
459
- * @param {!Menu} menu The Menu component clicked.
460
- * @param {!MenuItem} menuItem The MenuItem selected within menu.
461
- * @protected
437
+ * @param menu The Menu component clicked.
438
+ * @param menuItem The MenuItem selected within menu.
462
439
  */
463
- onItemSelected_(menu, menuItem) {
440
+ protected override onItemSelected_(menu: Menu, menuItem: MenuItem) {
464
441
  const id = menuItem.getValue();
465
442
  // Handle special cases.
466
- if (this.sourceBlock_ && this.sourceBlock_.workspace) {
443
+ if (this.sourceBlock_ && !this.sourceBlock_.disposed) {
467
444
  if (id === internalConstants.RENAME_VARIABLE_ID) {
468
445
  // Rename variable.
469
446
  Variables.renameVariable(
470
- this.sourceBlock_.workspace,
471
- /** @type {!VariableModel} */ (this.variable_));
447
+ this.sourceBlock_.workspace, this.variable_ as VariableModel);
472
448
  return;
473
449
  } else if (id === internalConstants.DELETE_VARIABLE_ID) {
474
450
  // Delete variable.
475
- this.sourceBlock_.workspace.deleteVariableById(this.variable_.getId());
451
+ this.sourceBlock_.workspace.deleteVariableById(this.variable_!.getId());
476
452
  return;
477
453
  }
478
454
  }
@@ -483,26 +459,25 @@ class FieldVariable extends FieldDropdown {
483
459
  /**
484
460
  * Overrides referencesVariables(), indicating this field refers to a
485
461
  * variable.
486
- * @return {boolean} True.
487
- * @package
488
- * @override
462
+ * @return True.
463
+ * @internal
489
464
  */
490
- referencesVariables() {
465
+ override referencesVariables(): boolean {
491
466
  return true;
492
467
  }
493
468
 
494
469
  /**
495
470
  * Construct a FieldVariable from a JSON arg object,
496
471
  * dereferencing any string table references.
497
- * @param {!Object} options A JSON object with options (variable,
498
- * variableTypes, and defaultType).
499
- * @return {!FieldVariable} The new field instance.
500
- * @package
472
+ * @param options A JSON object with options (variable, variableTypes, and
473
+ * defaultType).
474
+ * @return The new field instance.
501
475
  * @nocollapse
502
- * @override
476
+ * @internal
503
477
  */
504
- static fromJson(options) {
505
- const varName = parsing.replaceMessageReferences(options['variable']);
478
+ static override fromJson(options: FieldVariableFromJsonConfig):
479
+ FieldVariable {
480
+ const varName = parsing.replaceMessageReferences(options.variable);
506
481
  // `this` might be a subclass of FieldVariable if that class doesn't
507
482
  // override the static fromJson method.
508
483
  return new this(varName, undefined, undefined, undefined, options);
@@ -511,18 +486,17 @@ class FieldVariable extends FieldDropdown {
511
486
  /**
512
487
  * Return a sorted list of variable names for variable dropdown menus.
513
488
  * Include a special option at the end for creating a new variable name.
514
- * @return {!Array<!Array>} Array of variable names/id tuples.
515
- * @this {FieldVariable}
489
+ * @return Array of variable names/id tuples.
516
490
  */
517
- static dropdownCreate() {
491
+ static dropdownCreate(this: FieldVariable): AnyDuringMigration[][] {
518
492
  if (!this.variable_) {
519
493
  throw Error(
520
494
  'Tried to call dropdownCreate on a variable field with no' +
521
495
  ' variable selected.');
522
496
  }
523
497
  const name = this.getText();
524
- let variableModelList = [];
525
- if (this.sourceBlock_ && this.sourceBlock_.workspace) {
498
+ let variableModelList: AnyDuringMigration[] = [];
499
+ if (this.sourceBlock_ && !this.sourceBlock_.disposed) {
526
500
  const variableTypes = this.getVariableTypes_();
527
501
  // Get a copy of the list, so that adding rename and new variable options
528
502
  // doesn't modify the workspace's list.
@@ -555,4 +529,17 @@ class FieldVariable extends FieldDropdown {
555
529
 
556
530
  fieldRegistry.register('field_variable', FieldVariable);
557
531
 
558
- exports.FieldVariable = FieldVariable;
532
+ /**
533
+ * Config options for the variable field.
534
+ */
535
+ export interface FieldVariableConfig extends FieldConfig {
536
+ variableTypes?: string[];
537
+ defaultType?: string;
538
+ }
539
+
540
+ /**
541
+ * fromJson config options for the variable field.
542
+ */
543
+ export interface FieldVariableFromJsonConfig extends FieldVariableConfig {
544
+ variable?: string;
545
+ }