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,75 +7,72 @@
7
7
  /**
8
8
  * @fileoverview Registers default keyboard shortcuts.
9
9
  */
10
- 'use strict';
11
10
 
12
11
  /**
13
12
  * Registers default keyboard shortcuts.
14
13
  * @namespace Blockly.ShortcutItems
15
14
  */
16
- goog.module('Blockly.ShortcutItems');
15
+ import * as goog from '../closure/goog/goog.js';
16
+ goog.declareModuleId('Blockly.ShortcutItems');
17
17
 
18
- const clipboard = goog.require('Blockly.clipboard');
19
- const common = goog.require('Blockly.common');
20
- /* eslint-disable-next-line no-unused-vars */
21
- const {BlockSvg} = goog.requireType('Blockly.BlockSvg');
22
- const {Gesture} = goog.require('Blockly.Gesture');
23
- /* eslint-disable-next-line no-unused-vars */
24
- const {ICopyable} = goog.requireType('Blockly.ICopyable');
25
- const {KeyCodes} = goog.require('Blockly.utils.KeyCodes');
26
- const {ShortcutRegistry} = goog.require('Blockly.ShortcutRegistry');
18
+ import {BlockSvg} from './block_svg.js';
19
+ import * as clipboard from './clipboard.js';
20
+ import * as common from './common.js';
21
+ import {Gesture} from './gesture.js';
22
+ import type {ICopyable} from './interfaces/i_copyable.js';
23
+ import {KeyboardShortcut, ShortcutRegistry} from './shortcut_registry.js';
24
+ import {KeyCodes} from './utils/keycodes.js';
25
+ import type {WorkspaceSvg} from './workspace_svg.js';
27
26
 
28
27
 
29
28
  /**
30
29
  * Object holding the names of the default shortcut items.
31
- * @enum {string}
32
30
  * @alias Blockly.ShortcutItems.names
33
31
  */
34
- const names = {
35
- ESCAPE: 'escape',
36
- DELETE: 'delete',
37
- COPY: 'copy',
38
- CUT: 'cut',
39
- PASTE: 'paste',
40
- UNDO: 'undo',
41
- REDO: 'redo',
42
- };
43
- exports.names = names;
32
+ export enum names {
33
+ ESCAPE = 'escape',
34
+ DELETE = 'delete',
35
+ COPY = 'copy',
36
+ CUT = 'cut',
37
+ PASTE = 'paste',
38
+ UNDO = 'undo',
39
+ REDO = 'redo'
40
+ }
44
41
 
45
42
  /**
46
43
  * Keyboard shortcut to hide chaff on escape.
47
44
  * @alias Blockly.ShortcutItems.registerEscape
48
45
  */
49
- const registerEscape = function() {
50
- /** @type {!ShortcutRegistry.KeyboardShortcut} */
51
- const escapeAction = {
46
+ export function registerEscape() {
47
+ const escapeAction: KeyboardShortcut = {
52
48
  name: names.ESCAPE,
53
- preconditionFn: function(workspace) {
49
+ preconditionFn(workspace) {
54
50
  return !workspace.options.readOnly;
55
51
  },
56
- callback: function(workspace) {
57
- workspace.hideChaff();
52
+ callback(workspace) {
53
+ // AnyDuringMigration because: Property 'hideChaff' does not exist on
54
+ // type 'Workspace'.
55
+ (workspace as AnyDuringMigration).hideChaff();
58
56
  return true;
59
57
  },
58
+ keyCodes: [KeyCodes.ESC],
60
59
  };
61
60
  ShortcutRegistry.registry.register(escapeAction);
62
- ShortcutRegistry.registry.addKeyMapping(KeyCodes.ESC, escapeAction.name);
63
- };
64
- exports.registerEscape = registerEscape;
61
+ }
65
62
 
66
63
  /**
67
64
  * Keyboard shortcut to delete a block on delete or backspace
68
65
  * @alias Blockly.ShortcutItems.registerDelete
69
66
  */
70
- const registerDelete = function() {
71
- /** @type {!ShortcutRegistry.KeyboardShortcut} */
72
- const deleteShortcut = {
67
+ export function registerDelete() {
68
+ const deleteShortcut: KeyboardShortcut = {
73
69
  name: names.DELETE,
74
- preconditionFn: function(workspace) {
70
+ preconditionFn(workspace) {
75
71
  const selected = common.getSelected();
76
- return !workspace.options.readOnly && selected && selected.isDeletable();
72
+ return !workspace.options.readOnly && selected != null &&
73
+ selected.isDeletable();
77
74
  },
78
- callback: function(workspace, e) {
75
+ callback(workspace, e) {
79
76
  // Delete or backspace.
80
77
  // Stop the browser from going back to the previous page.
81
78
  // Do this first to prevent an error in the delete code from resulting in
@@ -85,210 +82,178 @@ const registerDelete = function() {
85
82
  if (Gesture.inProgress()) {
86
83
  return false;
87
84
  }
88
- (/** @type {!BlockSvg} */ (common.getSelected())).checkAndDelete();
85
+ (common.getSelected() as BlockSvg).checkAndDelete();
89
86
  return true;
90
87
  },
88
+ keyCodes: [KeyCodes.DELETE, KeyCodes.BACKSPACE],
91
89
  };
92
90
  ShortcutRegistry.registry.register(deleteShortcut);
93
- ShortcutRegistry.registry.addKeyMapping(KeyCodes.DELETE, deleteShortcut.name);
94
- ShortcutRegistry.registry.addKeyMapping(
95
- KeyCodes.BACKSPACE, deleteShortcut.name);
96
- };
97
- exports.registerDelete = registerDelete;
91
+ }
98
92
 
99
93
  /**
100
94
  * Keyboard shortcut to copy a block on ctrl+c, cmd+c, or alt+c.
101
95
  * @alias Blockly.ShortcutItems.registerCopy
102
96
  */
103
- const registerCopy = function() {
104
- /** @type {!ShortcutRegistry.KeyboardShortcut} */
105
- const copyShortcut = {
97
+ export function registerCopy() {
98
+ const ctrlC = ShortcutRegistry.registry.createSerializedKey(
99
+ KeyCodes.C, [KeyCodes.CTRL]);
100
+ const altC =
101
+ ShortcutRegistry.registry.createSerializedKey(KeyCodes.C, [KeyCodes.ALT]);
102
+ const metaC = ShortcutRegistry.registry.createSerializedKey(
103
+ KeyCodes.C, [KeyCodes.META]);
104
+
105
+ const copyShortcut: KeyboardShortcut = {
106
106
  name: names.COPY,
107
- preconditionFn: function(workspace) {
107
+ preconditionFn(workspace) {
108
108
  const selected = common.getSelected();
109
- return !workspace.options.readOnly && !Gesture.inProgress() && selected &&
110
- selected.isDeletable() && selected.isMovable();
109
+ return !workspace.options.readOnly && !Gesture.inProgress() &&
110
+ selected != null && selected.isDeletable() && selected.isMovable();
111
111
  },
112
- callback: function(workspace, e) {
112
+ callback(workspace, e) {
113
113
  // Prevent the default copy behavior, which may beep or otherwise indicate
114
114
  // an error due to the lack of a selection.
115
115
  e.preventDefault();
116
- workspace.hideChaff();
117
- clipboard.copy(/** @type {!ICopyable} */ (common.getSelected()));
116
+ // AnyDuringMigration because: Property 'hideChaff' does not exist on
117
+ // type 'Workspace'.
118
+ (workspace as AnyDuringMigration).hideChaff();
119
+ clipboard.copy(common.getSelected() as ICopyable);
118
120
  return true;
119
121
  },
122
+ keyCodes: [ctrlC, altC, metaC],
120
123
  };
121
124
  ShortcutRegistry.registry.register(copyShortcut);
122
-
123
- const ctrlC = ShortcutRegistry.registry.createSerializedKey(
124
- KeyCodes.C, [KeyCodes.CTRL]);
125
- ShortcutRegistry.registry.addKeyMapping(ctrlC, copyShortcut.name);
126
-
127
- const altC =
128
- ShortcutRegistry.registry.createSerializedKey(KeyCodes.C, [KeyCodes.ALT]);
129
- ShortcutRegistry.registry.addKeyMapping(altC, copyShortcut.name);
130
-
131
- const metaC = ShortcutRegistry.registry.createSerializedKey(
132
- KeyCodes.C, [KeyCodes.META]);
133
- ShortcutRegistry.registry.addKeyMapping(metaC, copyShortcut.name);
134
- };
135
- exports.registerCopy = registerCopy;
125
+ }
136
126
 
137
127
  /**
138
128
  * Keyboard shortcut to copy and delete a block on ctrl+x, cmd+x, or alt+x.
139
129
  * @alias Blockly.ShortcutItems.registerCut
140
130
  */
141
- const registerCut = function() {
142
- /** @type {!ShortcutRegistry.KeyboardShortcut} */
143
- const cutShortcut = {
131
+ export function registerCut() {
132
+ const ctrlX = ShortcutRegistry.registry.createSerializedKey(
133
+ KeyCodes.X, [KeyCodes.CTRL]);
134
+ const altX =
135
+ ShortcutRegistry.registry.createSerializedKey(KeyCodes.X, [KeyCodes.ALT]);
136
+ const metaX = ShortcutRegistry.registry.createSerializedKey(
137
+ KeyCodes.X, [KeyCodes.META]);
138
+
139
+ const cutShortcut: KeyboardShortcut = {
144
140
  name: names.CUT,
145
- preconditionFn: function(workspace) {
141
+ preconditionFn(workspace) {
146
142
  const selected = common.getSelected();
147
- return !workspace.options.readOnly && !Gesture.inProgress() && selected &&
143
+ return !workspace.options.readOnly && !Gesture.inProgress() &&
144
+ selected != null && selected instanceof BlockSvg &&
148
145
  selected.isDeletable() && selected.isMovable() &&
149
- !selected.workspace.isFlyout;
146
+ !selected.workspace!.isFlyout;
150
147
  },
151
- callback: function() {
148
+ callback() {
152
149
  const selected = common.getSelected();
153
150
  if (!selected) {
154
151
  // Shouldn't happen but appeases the type system
155
152
  return false;
156
153
  }
157
154
  clipboard.copy(selected);
158
- (/** @type {!BlockSvg} */ (selected)).checkAndDelete();
155
+ (selected as BlockSvg).checkAndDelete();
159
156
  return true;
160
157
  },
158
+ keyCodes: [ctrlX, altX, metaX],
161
159
  };
162
160
 
163
161
  ShortcutRegistry.registry.register(cutShortcut);
164
-
165
- const ctrlX = ShortcutRegistry.registry.createSerializedKey(
166
- KeyCodes.X, [KeyCodes.CTRL]);
167
- ShortcutRegistry.registry.addKeyMapping(ctrlX, cutShortcut.name);
168
-
169
- const altX =
170
- ShortcutRegistry.registry.createSerializedKey(KeyCodes.X, [KeyCodes.ALT]);
171
- ShortcutRegistry.registry.addKeyMapping(altX, cutShortcut.name);
172
-
173
- const metaX = ShortcutRegistry.registry.createSerializedKey(
174
- KeyCodes.X, [KeyCodes.META]);
175
- ShortcutRegistry.registry.addKeyMapping(metaX, cutShortcut.name);
176
- };
177
- exports.registerCut = registerCut;
162
+ }
178
163
 
179
164
  /**
180
165
  * Keyboard shortcut to paste a block on ctrl+v, cmd+v, or alt+v.
181
166
  * @alias Blockly.ShortcutItems.registerPaste
182
167
  */
183
- const registerPaste = function() {
184
- /** @type {!ShortcutRegistry.KeyboardShortcut} */
185
- const pasteShortcut = {
168
+ export function registerPaste() {
169
+ const ctrlV = ShortcutRegistry.registry.createSerializedKey(
170
+ KeyCodes.V, [KeyCodes.CTRL]);
171
+ const altV =
172
+ ShortcutRegistry.registry.createSerializedKey(KeyCodes.V, [KeyCodes.ALT]);
173
+ const metaV = ShortcutRegistry.registry.createSerializedKey(
174
+ KeyCodes.V, [KeyCodes.META]);
175
+
176
+ const pasteShortcut: KeyboardShortcut = {
186
177
  name: names.PASTE,
187
- preconditionFn: function(workspace) {
178
+ preconditionFn(workspace) {
188
179
  return !workspace.options.readOnly && !Gesture.inProgress();
189
180
  },
190
- callback: function() {
191
- return clipboard.paste();
181
+ callback() {
182
+ return !!(clipboard.paste());
192
183
  },
184
+ keyCodes: [ctrlV, altV, metaV],
193
185
  };
194
186
 
195
187
  ShortcutRegistry.registry.register(pasteShortcut);
196
-
197
- const ctrlV = ShortcutRegistry.registry.createSerializedKey(
198
- KeyCodes.V, [KeyCodes.CTRL]);
199
- ShortcutRegistry.registry.addKeyMapping(ctrlV, pasteShortcut.name);
200
-
201
- const altV =
202
- ShortcutRegistry.registry.createSerializedKey(KeyCodes.V, [KeyCodes.ALT]);
203
- ShortcutRegistry.registry.addKeyMapping(altV, pasteShortcut.name);
204
-
205
- const metaV = ShortcutRegistry.registry.createSerializedKey(
206
- KeyCodes.V, [KeyCodes.META]);
207
- ShortcutRegistry.registry.addKeyMapping(metaV, pasteShortcut.name);
208
- };
209
- exports.registerPaste = registerPaste;
188
+ }
210
189
 
211
190
  /**
212
191
  * Keyboard shortcut to undo the previous action on ctrl+z, cmd+z, or alt+z.
213
192
  * @alias Blockly.ShortcutItems.registerUndo
214
193
  */
215
- const registerUndo = function() {
216
- /** @type {!ShortcutRegistry.KeyboardShortcut} */
217
- const undoShortcut = {
194
+ export function registerUndo() {
195
+ const ctrlZ = ShortcutRegistry.registry.createSerializedKey(
196
+ KeyCodes.Z, [KeyCodes.CTRL]);
197
+ const altZ =
198
+ ShortcutRegistry.registry.createSerializedKey(KeyCodes.Z, [KeyCodes.ALT]);
199
+ const metaZ = ShortcutRegistry.registry.createSerializedKey(
200
+ KeyCodes.Z, [KeyCodes.META]);
201
+
202
+ const undoShortcut: KeyboardShortcut = {
218
203
  name: names.UNDO,
219
- preconditionFn: function(workspace) {
204
+ preconditionFn(workspace) {
220
205
  return !workspace.options.readOnly && !Gesture.inProgress();
221
206
  },
222
- callback: function(workspace) {
207
+ callback(workspace) {
223
208
  // 'z' for undo 'Z' is for redo.
224
- workspace.hideChaff();
209
+ (workspace as WorkspaceSvg).hideChaff();
225
210
  workspace.undo(false);
226
211
  return true;
227
212
  },
213
+ keyCodes: [ctrlZ, altZ, metaZ],
228
214
  };
229
215
  ShortcutRegistry.registry.register(undoShortcut);
230
-
231
- const ctrlZ = ShortcutRegistry.registry.createSerializedKey(
232
- KeyCodes.Z, [KeyCodes.CTRL]);
233
- ShortcutRegistry.registry.addKeyMapping(ctrlZ, undoShortcut.name);
234
-
235
- const altZ =
236
- ShortcutRegistry.registry.createSerializedKey(KeyCodes.Z, [KeyCodes.ALT]);
237
- ShortcutRegistry.registry.addKeyMapping(altZ, undoShortcut.name);
238
-
239
- const metaZ = ShortcutRegistry.registry.createSerializedKey(
240
- KeyCodes.Z, [KeyCodes.META]);
241
- ShortcutRegistry.registry.addKeyMapping(metaZ, undoShortcut.name);
242
- };
243
- exports.registerUndo = registerUndo;
216
+ }
244
217
 
245
218
  /**
246
219
  * Keyboard shortcut to redo the previous action on ctrl+shift+z, cmd+shift+z,
247
220
  * or alt+shift+z.
248
221
  * @alias Blockly.ShortcutItems.registerRedo
249
222
  */
250
- const registerRedo = function() {
251
- /** @type {!ShortcutRegistry.KeyboardShortcut} */
252
- const redoShortcut = {
253
- name: names.REDO,
254
- preconditionFn: function(workspace) {
255
- return !Gesture.inProgress() && !workspace.options.readOnly;
256
- },
257
- callback: function(workspace) {
258
- // 'z' for undo 'Z' is for redo.
259
- workspace.hideChaff();
260
- workspace.undo(true);
261
- return true;
262
- },
263
- };
264
- ShortcutRegistry.registry.register(redoShortcut);
265
-
223
+ export function registerRedo() {
266
224
  const ctrlShiftZ = ShortcutRegistry.registry.createSerializedKey(
267
225
  KeyCodes.Z, [KeyCodes.SHIFT, KeyCodes.CTRL]);
268
- ShortcutRegistry.registry.addKeyMapping(ctrlShiftZ, redoShortcut.name);
269
-
270
226
  const altShiftZ = ShortcutRegistry.registry.createSerializedKey(
271
227
  KeyCodes.Z, [KeyCodes.SHIFT, KeyCodes.ALT]);
272
- ShortcutRegistry.registry.addKeyMapping(altShiftZ, redoShortcut.name);
273
-
274
228
  const metaShiftZ = ShortcutRegistry.registry.createSerializedKey(
275
229
  KeyCodes.Z, [KeyCodes.SHIFT, KeyCodes.META]);
276
- ShortcutRegistry.registry.addKeyMapping(metaShiftZ, redoShortcut.name);
277
-
278
230
  // Ctrl-y is redo in Windows. Command-y is never valid on Macs.
279
231
  const ctrlY = ShortcutRegistry.registry.createSerializedKey(
280
232
  KeyCodes.Y, [KeyCodes.CTRL]);
281
- ShortcutRegistry.registry.addKeyMapping(ctrlY, redoShortcut.name);
282
- };
283
- exports.registerRedo = registerRedo;
233
+
234
+ const redoShortcut: KeyboardShortcut = {
235
+ name: names.REDO,
236
+ preconditionFn(workspace) {
237
+ return !Gesture.inProgress() && !workspace.options.readOnly;
238
+ },
239
+ callback(workspace) {
240
+ // 'z' for undo 'Z' is for redo.
241
+ (workspace as WorkspaceSvg).hideChaff();
242
+ workspace.undo(true);
243
+ return true;
244
+ },
245
+ keyCodes: [ctrlShiftZ, altShiftZ, metaShiftZ, ctrlY],
246
+ };
247
+ ShortcutRegistry.registry.register(redoShortcut);
248
+ }
284
249
 
285
250
  /**
286
251
  * Registers all default keyboard shortcut item. This should be called once per
287
252
  * instance of KeyboardShortcutRegistry.
288
253
  * @alias Blockly.ShortcutItems.registerDefaultShortcuts
289
- * @package
254
+ * @internal
290
255
  */
291
- const registerDefaultShortcuts = function() {
256
+ export function registerDefaultShortcuts() {
292
257
  registerEscape();
293
258
  registerDelete();
294
259
  registerCopy();
@@ -296,7 +261,6 @@ const registerDefaultShortcuts = function() {
296
261
  registerPaste();
297
262
  registerUndo();
298
263
  registerRedo();
299
- };
300
- exports.registerDefaultShortcuts = registerDefaultShortcuts;
264
+ }
301
265
 
302
266
  registerDefaultShortcuts();
@@ -0,0 +1,151 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2020 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { KeyCodes } from './utils/keycodes.js';
7
+ import type { Workspace } from './workspace.js';
8
+ /**
9
+ * Class for the registry of keyboard shortcuts. This is intended to be a
10
+ * singleton. You should not create a new instance, and only access this class
11
+ * from ShortcutRegistry.registry.
12
+ * @alias Blockly.ShortcutRegistry
13
+ */
14
+ export declare class ShortcutRegistry {
15
+ static readonly registry: ShortcutRegistry;
16
+ /** Registry of all keyboard shortcuts, keyed by name of shortcut. */
17
+ private shortcuts;
18
+ /** Map of key codes to an array of shortcut names. */
19
+ private keyMap;
20
+ /** Resets the existing ShortcutRegistry singleton. */
21
+ private constructor();
22
+ /** Clear and recreate the registry and keyMap. */
23
+ reset(): void;
24
+ /**
25
+ * Registers a keyboard shortcut.
26
+ * @param shortcut The shortcut for this key code.
27
+ * @param opt_allowOverrides True to prevent a warning when overriding an
28
+ * already registered item.
29
+ * @throws {Error} if a shortcut with the same name already exists.
30
+ */
31
+ register(shortcut: KeyboardShortcut, opt_allowOverrides?: boolean): void;
32
+ /**
33
+ * Unregisters a keyboard shortcut registered with the given key code. This
34
+ * will also remove any key mappings that reference this shortcut.
35
+ * @param shortcutName The name of the shortcut to unregister.
36
+ * @return True if an item was unregistered, false otherwise.
37
+ */
38
+ unregister(shortcutName: string): boolean;
39
+ /**
40
+ * Adds a mapping between a keycode and a keyboard shortcut.
41
+ * @param keyCode The key code for the keyboard shortcut. If registering a key
42
+ * code with a modifier (ex: ctrl+c) use
43
+ * ShortcutRegistry.registry.createSerializedKey;
44
+ * @param shortcutName The name of the shortcut to execute when the given
45
+ * keycode is pressed.
46
+ * @param opt_allowCollision True to prevent an error when adding a shortcut
47
+ * to a key that is already mapped to a shortcut.
48
+ * @throws {Error} if the given key code is already mapped to a shortcut.
49
+ */
50
+ addKeyMapping(keyCode: string | number | KeyCodes, shortcutName: string, opt_allowCollision?: boolean): void;
51
+ /**
52
+ * Removes a mapping between a keycode and a keyboard shortcut.
53
+ * @param keyCode The key code for the keyboard shortcut. If registering a key
54
+ * code with a modifier (ex: ctrl+c) use
55
+ * ShortcutRegistry.registry.createSerializedKey;
56
+ * @param shortcutName The name of the shortcut to execute when the given
57
+ * keycode is pressed.
58
+ * @param opt_quiet True to not console warn when there is no shortcut to
59
+ * remove.
60
+ * @return True if a key mapping was removed, false otherwise.
61
+ */
62
+ removeKeyMapping(keyCode: string, shortcutName: string, opt_quiet?: boolean): boolean;
63
+ /**
64
+ * Removes all the key mappings for a shortcut with the given name.
65
+ * Useful when changing the default key mappings and the key codes registered
66
+ * to the shortcut are unknown.
67
+ * @param shortcutName The name of the shortcut to remove from the key map.
68
+ */
69
+ removeAllKeyMappings(shortcutName: string): void;
70
+ /**
71
+ * Sets the key map. Setting the key map will override any default key
72
+ * mappings.
73
+ * @param newKeyMap The object with key code to shortcut names.
74
+ */
75
+ setKeyMap(newKeyMap: {
76
+ [key: string]: string[];
77
+ }): void;
78
+ /**
79
+ * Gets the current key map.
80
+ * @return The object holding key codes to ShortcutRegistry.KeyboardShortcut.
81
+ */
82
+ getKeyMap(): {
83
+ [key: string]: string[];
84
+ };
85
+ /**
86
+ * Gets the registry of keyboard shortcuts.
87
+ * @return The registry of keyboard shortcuts.
88
+ */
89
+ getRegistry(): {
90
+ [key: string]: KeyboardShortcut;
91
+ };
92
+ /**
93
+ * Handles key down events.
94
+ * @param workspace The main workspace where the event was captured.
95
+ * @param e The key down event.
96
+ * @return True if the event was handled, false otherwise.
97
+ */
98
+ onKeyDown(workspace: Workspace, e: KeyboardEvent): boolean;
99
+ /**
100
+ * Gets the shortcuts registered to the given key code.
101
+ * @param keyCode The serialized key code.
102
+ * @return The list of shortcuts to call when the given keyCode is used.
103
+ * Undefined if no shortcuts exist.
104
+ */
105
+ getShortcutNamesByKeyCode(keyCode: string): string[] | undefined;
106
+ /**
107
+ * Gets the serialized key codes that the shortcut with the given name is
108
+ * registered under.
109
+ * @param shortcutName The name of the shortcut.
110
+ * @return An array with all the key codes the shortcut is registered under.
111
+ */
112
+ getKeyCodesByShortcutName(shortcutName: string): string[];
113
+ /**
114
+ * Serializes a key event.
115
+ * @param e A key down event.
116
+ * @return The serialized key code for the given event.
117
+ */
118
+ private serializeKeyEvent_;
119
+ /**
120
+ * Checks whether any of the given modifiers are not valid.
121
+ * @param modifiers List of modifiers to be used with the key.
122
+ * @throws {Error} if the modifier is not in the valid modifiers list.
123
+ */
124
+ private checkModifiers_;
125
+ /**
126
+ * Creates the serialized key code that will be used in the key map.
127
+ * @param keyCode Number code representing the key.
128
+ * @param modifiers List of modifier key codes to be used with the key. All
129
+ * valid modifiers can be found in the ShortcutRegistry.modifierKeys.
130
+ * @return The serialized key code for the given modifiers and key.
131
+ */
132
+ createSerializedKey(keyCode: number, modifiers: KeyCodes[] | null): string;
133
+ }
134
+ export declare namespace ShortcutRegistry {
135
+ interface KeyboardShortcut {
136
+ callback?: ((p1: Workspace, p2: Event, p3: KeyboardShortcut) => boolean);
137
+ name: string;
138
+ preconditionFn?: ((p1: Workspace) => boolean);
139
+ metadata?: object;
140
+ keyCodes?: (number | string)[];
141
+ allowCollision?: boolean;
142
+ }
143
+ /** Supported modifiers. */
144
+ enum modifierKeys {
145
+ Shift = 16,
146
+ Control = 17,
147
+ Alt = 18,
148
+ Meta = 91
149
+ }
150
+ }
151
+ export declare type KeyboardShortcut = ShortcutRegistry.KeyboardShortcut;