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
@@ -0,0 +1,355 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2020 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ /**
8
+ * @fileoverview The namespace used to keep track of keyboard shortcuts and the
9
+ * key codes used to execute those shortcuts.
10
+ */
11
+
12
+ /**
13
+ * The namespace used to keep track of keyboard shortcuts and the
14
+ * key codes used to execute those shortcuts.
15
+ * @class
16
+ */
17
+ import * as goog from '../closure/goog/goog.js';
18
+ goog.declareModuleId('Blockly.ShortcutRegistry');
19
+
20
+ import {KeyCodes} from './utils/keycodes.js';
21
+ import * as object from './utils/object.js';
22
+ import type {Workspace} from './workspace.js';
23
+
24
+
25
+ /**
26
+ * Class for the registry of keyboard shortcuts. This is intended to be a
27
+ * singleton. You should not create a new instance, and only access this class
28
+ * from ShortcutRegistry.registry.
29
+ * @alias Blockly.ShortcutRegistry
30
+ */
31
+ export class ShortcutRegistry {
32
+ static readonly registry = new ShortcutRegistry();
33
+
34
+ /** Registry of all keyboard shortcuts, keyed by name of shortcut. */
35
+ private shortcuts = new Map<string, KeyboardShortcut>();
36
+
37
+ /** Map of key codes to an array of shortcut names. */
38
+ private keyMap = new Map<string, string[]>();
39
+
40
+ /** Resets the existing ShortcutRegistry singleton. */
41
+ private constructor() {
42
+ this.reset();
43
+ }
44
+
45
+ /** Clear and recreate the registry and keyMap. */
46
+ reset() {
47
+ this.shortcuts.clear();
48
+ this.keyMap.clear();
49
+ }
50
+
51
+ /**
52
+ * Registers a keyboard shortcut.
53
+ * @param shortcut The shortcut for this key code.
54
+ * @param opt_allowOverrides True to prevent a warning when overriding an
55
+ * already registered item.
56
+ * @throws {Error} if a shortcut with the same name already exists.
57
+ */
58
+ register(shortcut: KeyboardShortcut, opt_allowOverrides?: boolean) {
59
+ const registeredShortcut = this.shortcuts.get(shortcut.name);
60
+ if (registeredShortcut && !opt_allowOverrides) {
61
+ throw new Error(
62
+ 'Shortcut with name "' + shortcut.name + '" already exists.');
63
+ }
64
+ this.shortcuts.set(shortcut.name, shortcut);
65
+
66
+ const keyCodes = shortcut.keyCodes;
67
+ if (keyCodes && keyCodes.length > 0) {
68
+ for (let i = 0; i < keyCodes.length; i++) {
69
+ this.addKeyMapping(
70
+ keyCodes[i], shortcut.name, !!shortcut.allowCollision);
71
+ }
72
+ }
73
+ }
74
+
75
+ /**
76
+ * Unregisters a keyboard shortcut registered with the given key code. This
77
+ * will also remove any key mappings that reference this shortcut.
78
+ * @param shortcutName The name of the shortcut to unregister.
79
+ * @return True if an item was unregistered, false otherwise.
80
+ */
81
+ unregister(shortcutName: string): boolean {
82
+ const shortcut = this.shortcuts.get(shortcutName);
83
+
84
+ if (!shortcut) {
85
+ console.warn(
86
+ 'Keyboard shortcut with name "' + shortcutName + '" not found.');
87
+ return false;
88
+ }
89
+
90
+ this.removeAllKeyMappings(shortcutName);
91
+
92
+ this.shortcuts.delete(shortcutName);
93
+ return true;
94
+ }
95
+
96
+ /**
97
+ * Adds a mapping between a keycode and a keyboard shortcut.
98
+ * @param keyCode The key code for the keyboard shortcut. If registering a key
99
+ * code with a modifier (ex: ctrl+c) use
100
+ * ShortcutRegistry.registry.createSerializedKey;
101
+ * @param shortcutName The name of the shortcut to execute when the given
102
+ * keycode is pressed.
103
+ * @param opt_allowCollision True to prevent an error when adding a shortcut
104
+ * to a key that is already mapped to a shortcut.
105
+ * @throws {Error} if the given key code is already mapped to a shortcut.
106
+ */
107
+ addKeyMapping(
108
+ keyCode: string|number|KeyCodes, shortcutName: string,
109
+ opt_allowCollision?: boolean) {
110
+ keyCode = String(keyCode);
111
+ const shortcutNames = this.keyMap.get(keyCode);
112
+ if (shortcutNames && !opt_allowCollision) {
113
+ throw new Error(
114
+ 'Shortcut with name "' + shortcutName + '" collides with shortcuts ' +
115
+ shortcutNames.toString());
116
+ } else if (shortcutNames && opt_allowCollision) {
117
+ shortcutNames.unshift(shortcutName);
118
+ } else {
119
+ this.keyMap.set(keyCode, [shortcutName]);
120
+ }
121
+ }
122
+
123
+ /**
124
+ * Removes a mapping between a keycode and a keyboard shortcut.
125
+ * @param keyCode The key code for the keyboard shortcut. If registering a key
126
+ * code with a modifier (ex: ctrl+c) use
127
+ * ShortcutRegistry.registry.createSerializedKey;
128
+ * @param shortcutName The name of the shortcut to execute when the given
129
+ * keycode is pressed.
130
+ * @param opt_quiet True to not console warn when there is no shortcut to
131
+ * remove.
132
+ * @return True if a key mapping was removed, false otherwise.
133
+ */
134
+ removeKeyMapping(keyCode: string, shortcutName: string, opt_quiet?: boolean):
135
+ boolean {
136
+ const shortcutNames = this.keyMap.get(keyCode);
137
+
138
+ if (!shortcutNames) {
139
+ if (!opt_quiet) {
140
+ console.warn(
141
+ 'No keyboard shortcut with name "' + shortcutName +
142
+ '" registered with key code "' + keyCode + '"');
143
+ }
144
+ return false;
145
+ }
146
+
147
+ const shortcutIdx = shortcutNames.indexOf(shortcutName);
148
+ if (shortcutIdx > -1) {
149
+ shortcutNames.splice(shortcutIdx, 1);
150
+ if (shortcutNames.length === 0) {
151
+ this.keyMap.delete(keyCode);
152
+ }
153
+ return true;
154
+ }
155
+ if (!opt_quiet) {
156
+ console.warn(
157
+ 'No keyboard shortcut with name "' + shortcutName +
158
+ '" registered with key code "' + keyCode + '"');
159
+ }
160
+ return false;
161
+ }
162
+
163
+ /**
164
+ * Removes all the key mappings for a shortcut with the given name.
165
+ * Useful when changing the default key mappings and the key codes registered
166
+ * to the shortcut are unknown.
167
+ * @param shortcutName The name of the shortcut to remove from the key map.
168
+ */
169
+ removeAllKeyMappings(shortcutName: string) {
170
+ for (const keyCode of this.keyMap.keys()) {
171
+ this.removeKeyMapping(keyCode, shortcutName, true);
172
+ }
173
+ }
174
+
175
+ /**
176
+ * Sets the key map. Setting the key map will override any default key
177
+ * mappings.
178
+ * @param newKeyMap The object with key code to shortcut names.
179
+ */
180
+ setKeyMap(newKeyMap: {[key: string]: string[]}) {
181
+ this.keyMap.clear();
182
+ for (const key in newKeyMap) {
183
+ this.keyMap.set(key, newKeyMap[key]);
184
+ }
185
+ }
186
+
187
+ /**
188
+ * Gets the current key map.
189
+ * @return The object holding key codes to ShortcutRegistry.KeyboardShortcut.
190
+ */
191
+ getKeyMap(): {[key: string]: string[]} {
192
+ const legacyKeyMap: {[key: string]: string[]} = Object.create(null);
193
+ for (const [key, value] of this.keyMap) {
194
+ legacyKeyMap[key] = value;
195
+ }
196
+ return legacyKeyMap;
197
+ }
198
+
199
+ /**
200
+ * Gets the registry of keyboard shortcuts.
201
+ * @return The registry of keyboard shortcuts.
202
+ */
203
+ getRegistry(): {[key: string]: KeyboardShortcut} {
204
+ const legacyRegistry: {[key: string]: KeyboardShortcut} =
205
+ Object.create(null);
206
+ for (const [key, value] of this.shortcuts) {
207
+ legacyRegistry[key] = value;
208
+ }
209
+ return object.deepMerge(Object.create(null), legacyRegistry);
210
+ }
211
+
212
+ /**
213
+ * Handles key down events.
214
+ * @param workspace The main workspace where the event was captured.
215
+ * @param e The key down event.
216
+ * @return True if the event was handled, false otherwise.
217
+ */
218
+ onKeyDown(workspace: Workspace, e: KeyboardEvent): boolean {
219
+ const key = this.serializeKeyEvent_(e);
220
+ const shortcutNames = this.getShortcutNamesByKeyCode(key);
221
+ if (!shortcutNames) {
222
+ return false;
223
+ }
224
+ for (let i = 0, shortcutName; shortcutName = shortcutNames[i]; i++) {
225
+ const shortcut = this.shortcuts.get(shortcutName);
226
+ if (!shortcut?.preconditionFn || shortcut?.preconditionFn(workspace)) {
227
+ // If the key has been handled, stop processing shortcuts.
228
+ if (shortcut?.callback && shortcut?.callback(workspace, e, shortcut)) {
229
+ return true;
230
+ }
231
+ }
232
+ }
233
+ return false;
234
+ }
235
+
236
+ /**
237
+ * Gets the shortcuts registered to the given key code.
238
+ * @param keyCode The serialized key code.
239
+ * @return The list of shortcuts to call when the given keyCode is used.
240
+ * Undefined if no shortcuts exist.
241
+ */
242
+ getShortcutNamesByKeyCode(keyCode: string): string[]|undefined {
243
+ return this.keyMap.get(keyCode) || [];
244
+ }
245
+
246
+ /**
247
+ * Gets the serialized key codes that the shortcut with the given name is
248
+ * registered under.
249
+ * @param shortcutName The name of the shortcut.
250
+ * @return An array with all the key codes the shortcut is registered under.
251
+ */
252
+ getKeyCodesByShortcutName(shortcutName: string): string[] {
253
+ const keys = [];
254
+ for (const [keyCode, shortcuts] of this.keyMap) {
255
+ const shortcutIdx = shortcuts.indexOf(shortcutName);
256
+ if (shortcutIdx > -1) {
257
+ keys.push(keyCode);
258
+ }
259
+ }
260
+ return keys;
261
+ }
262
+
263
+ /**
264
+ * Serializes a key event.
265
+ * @param e A key down event.
266
+ * @return The serialized key code for the given event.
267
+ */
268
+ private serializeKeyEvent_(e: KeyboardEvent): string {
269
+ let serializedKey = '';
270
+ for (const modifier in ShortcutRegistry.modifierKeys) {
271
+ if (e.getModifierState(modifier)) {
272
+ if (serializedKey !== '') {
273
+ serializedKey += '+';
274
+ }
275
+ serializedKey += modifier;
276
+ }
277
+ }
278
+ if (serializedKey !== '' && e.keyCode) {
279
+ serializedKey = serializedKey + '+' + e.keyCode;
280
+ } else if (e.keyCode) {
281
+ serializedKey = e.keyCode.toString();
282
+ }
283
+ return serializedKey;
284
+ }
285
+
286
+ /**
287
+ * Checks whether any of the given modifiers are not valid.
288
+ * @param modifiers List of modifiers to be used with the key.
289
+ * @throws {Error} if the modifier is not in the valid modifiers list.
290
+ */
291
+ private checkModifiers_(modifiers: KeyCodes[]) {
292
+ const validModifiers = object.values(ShortcutRegistry.modifierKeys);
293
+ for (let i = 0, modifier; modifier = modifiers[i]; i++) {
294
+ if (validModifiers.indexOf(modifier) < 0) {
295
+ throw new Error(modifier + ' is not a valid modifier key.');
296
+ }
297
+ }
298
+ }
299
+
300
+ /**
301
+ * Creates the serialized key code that will be used in the key map.
302
+ * @param keyCode Number code representing the key.
303
+ * @param modifiers List of modifier key codes to be used with the key. All
304
+ * valid modifiers can be found in the ShortcutRegistry.modifierKeys.
305
+ * @return The serialized key code for the given modifiers and key.
306
+ */
307
+ createSerializedKey(keyCode: number, modifiers: KeyCodes[]|null): string {
308
+ let serializedKey = '';
309
+
310
+ if (modifiers) {
311
+ this.checkModifiers_(modifiers);
312
+ for (const modifier in ShortcutRegistry.modifierKeys) {
313
+ const modifierKeyCode =
314
+ (ShortcutRegistry.modifierKeys as AnyDuringMigration)[modifier];
315
+ if (modifiers.indexOf(modifierKeyCode) > -1) {
316
+ if (serializedKey !== '') {
317
+ serializedKey += '+';
318
+ }
319
+ serializedKey += modifier;
320
+ }
321
+ }
322
+ }
323
+
324
+ if (serializedKey !== '' && keyCode) {
325
+ serializedKey = serializedKey + '+' + keyCode;
326
+ } else if (keyCode) {
327
+ serializedKey = keyCode.toString();
328
+ }
329
+ return serializedKey;
330
+ }
331
+ }
332
+
333
+ export namespace ShortcutRegistry {
334
+ export interface KeyboardShortcut {
335
+ callback?: ((p1: Workspace, p2: Event, p3: KeyboardShortcut) => boolean);
336
+ name: string;
337
+ preconditionFn?: ((p1: Workspace) => boolean);
338
+ metadata?: object;
339
+ keyCodes?: (number|string)[];
340
+ allowCollision?: boolean;
341
+ }
342
+
343
+ /** Supported modifiers. */
344
+ export enum modifierKeys {
345
+ Shift = KeyCodes.SHIFT,
346
+ Control = KeyCodes.CTRL,
347
+ Alt = KeyCodes.ALT,
348
+ Meta = KeyCodes.META,
349
+ }
350
+ }
351
+
352
+ export type KeyboardShortcut = ShortcutRegistry.KeyboardShortcut;
353
+ // No need to export ShorcutRegistry.modifierKeys from the module at this time
354
+ // because (1) it wasn't automatically converted by the automatic migration
355
+ // script, (2) the name doesn't follow the styleguide.
@@ -0,0 +1,19 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2022 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * Holds constants that have to do with the sprites that create the trashcan
8
+ * and zoom controls.
9
+ */
10
+ /**
11
+ * Contains the path to a single png tat holds the images for the trashcan
12
+ * as well as the zoom controls.
13
+ * @alias Blockly.sprite.SPRITE
14
+ */
15
+ export declare const SPRITE: {
16
+ width: number;
17
+ height: number;
18
+ url: string;
19
+ };
@@ -8,24 +8,22 @@
8
8
  * @fileoverview Holds constants that have to do with the sprites that create
9
9
  * the trashcan and zoom controls.
10
10
  */
11
- 'use strict';
11
+ import * as goog from '../closure/goog/goog.js';
12
+ goog.declareModuleId('Blockly.sprite');
13
+
12
14
 
13
15
  /**
14
16
  * Holds constants that have to do with the sprites that create the trashcan
15
17
  * and zoom controls.
16
18
  */
17
- goog.module('Blockly.sprite');
18
-
19
19
 
20
20
  /**
21
21
  * Contains the path to a single png tat holds the images for the trashcan
22
22
  * as well as the zoom controls.
23
- * @const {!Object}
24
23
  * @alias Blockly.sprite.SPRITE
25
24
  */
26
- const SPRITE = {
25
+ export const SPRITE = {
27
26
  width: 96,
28
27
  height: 124,
29
28
  url: 'sprites.png',
30
29
  };
31
- exports.SPRITE = SPRITE;
@@ -0,0 +1,12 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2018 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Theme } from '../theme.js';
7
+ /**
8
+ * Classic theme.
9
+ * Contains multi-coloured border to create shadow effect.
10
+ * @alias Blockly.Themes.Classic
11
+ */
12
+ export declare const Classic: Theme;
@@ -8,16 +8,16 @@
8
8
  * @fileoverview Classic theme.
9
9
  * Contains multi-coloured border to create shadow effect.
10
10
  */
11
- 'use strict';
12
11
 
13
12
  /**
14
13
  * Classic theme.
15
14
  * Contains multi-coloured border to create shadow effect.
16
15
  * @namespace Blockly.Themes.Classic
17
16
  */
18
- goog.module('Blockly.Themes.Classic');
17
+ import * as goog from '../../closure/goog/goog.js';
18
+ goog.declareModuleId('Blockly.Themes.Classic');
19
19
 
20
- const {Theme} = goog.require('Blockly.Theme');
20
+ import {Theme} from '../theme.js';
21
21
 
22
22
 
23
23
  const defaultBlockStyles = {
@@ -48,9 +48,7 @@ const categoryStyles = {
48
48
  /**
49
49
  * Classic theme.
50
50
  * Contains multi-coloured border to create shadow effect.
51
- * @type {Theme}
52
51
  * @alias Blockly.Themes.Classic
53
52
  */
54
- const Classic = new Theme('classic', defaultBlockStyles, categoryStyles);
55
-
56
- exports.Classic = Classic;
53
+ export const Classic = new Theme(
54
+ 'classic', defaultBlockStyles as AnyDuringMigration, categoryStyles);
@@ -0,0 +1,8 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2021 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Classic } from './classic.js';
7
+ import { Zelos } from './zelos.js';
8
+ export { Classic, Zelos };
@@ -0,0 +1,22 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2021 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ /**
8
+ * @fileoverview Namespace for themes.
9
+ */
10
+
11
+ /**
12
+ * Namespace for themes.
13
+ * @namespace Blockly.Themes
14
+ */
15
+ import * as goog from '../../closure/goog/goog.js';
16
+ goog.declareModuleId('Blockly.Themes');
17
+
18
+ import {Classic} from './classic.js';
19
+ import {Zelos} from './zelos.js';
20
+
21
+
22
+ export {Classic, Zelos};
@@ -0,0 +1,11 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2018 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { Theme } from '../theme.js';
7
+ /**
8
+ * Zelos theme.
9
+ * @alias Blockly.Themes.Zelos
10
+ */
11
+ export declare const Zelos: Theme;
@@ -7,15 +7,15 @@
7
7
  /**
8
8
  * @fileoverview Zelos theme.
9
9
  */
10
- 'use strict';
11
10
 
12
11
  /**
13
12
  * Zelos theme.
14
13
  * @namespace Blockly.Themes.Zelos
15
14
  */
16
- goog.module('Blockly.Themes.Zelos');
15
+ import * as goog from '../../closure/goog/goog.js';
16
+ goog.declareModuleId('Blockly.Themes.Zelos');
17
17
 
18
- const {Theme} = goog.require('Blockly.Theme');
18
+ import {Theme} from '../theme.js';
19
19
 
20
20
 
21
21
  const defaultBlockStyles = {
@@ -86,9 +86,6 @@ const categoryStyles = {
86
86
 
87
87
  /**
88
88
  * Zelos theme.
89
- * @type {Theme}
90
89
  * @alias Blockly.Themes.Zelos
91
90
  */
92
- const Zelos = new Theme('zelos', defaultBlockStyles, categoryStyles);
93
-
94
- exports.Zelos = Zelos;
91
+ export const Zelos = new Theme('zelos', defaultBlockStyles, categoryStyles);
@@ -0,0 +1,142 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2018 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ export interface ITheme {
7
+ blockStyles: {
8
+ [key: string]: BlockStyle;
9
+ };
10
+ categoryStyles: {
11
+ [key: string]: CategoryStyle;
12
+ };
13
+ componentStyles: ComponentStyle;
14
+ fontStyle: FontStyle;
15
+ startHats: boolean | null;
16
+ base?: string | Theme;
17
+ name: string;
18
+ }
19
+ /**
20
+ * Class for a theme.
21
+ * @alias Blockly.Theme
22
+ */
23
+ export declare class Theme implements ITheme {
24
+ name: string;
25
+ /** @internal */
26
+ blockStyles: {
27
+ [key: string]: BlockStyle;
28
+ };
29
+ /** @internal */
30
+ categoryStyles: {
31
+ [key: string]: CategoryStyle;
32
+ };
33
+ /** @internal */
34
+ componentStyles: ComponentStyle;
35
+ /** @internal */
36
+ fontStyle: FontStyle;
37
+ /**
38
+ * Whether or not to add a 'hat' on top of all blocks with no previous or
39
+ * output connections.
40
+ * @internal
41
+ */
42
+ startHats: boolean | null;
43
+ /**
44
+ * @param name Theme name.
45
+ * @param opt_blockStyles A map from style names (strings) to objects with
46
+ * style attributes for blocks.
47
+ * @param opt_categoryStyles A map from style names (strings) to objects with
48
+ * style attributes for categories.
49
+ * @param opt_componentStyles A map of Blockly component names to style value.
50
+ */
51
+ constructor(name: string, opt_blockStyles?: {
52
+ [key: string]: BlockStyle;
53
+ }, opt_categoryStyles?: {
54
+ [key: string]: CategoryStyle;
55
+ }, opt_componentStyles?: ComponentStyle);
56
+ /**
57
+ * Gets the class name that identifies this theme.
58
+ * @return The CSS class name.
59
+ * @internal
60
+ */
61
+ getClassName(): string;
62
+ /**
63
+ * Overrides or adds a style to the blockStyles map.
64
+ * @param blockStyleName The name of the block style.
65
+ * @param blockStyle The block style.
66
+ */
67
+ setBlockStyle(blockStyleName: string, blockStyle: BlockStyle): void;
68
+ /**
69
+ * Overrides or adds a style to the categoryStyles map.
70
+ * @param categoryStyleName The name of the category style.
71
+ * @param categoryStyle The category style.
72
+ */
73
+ setCategoryStyle(categoryStyleName: string, categoryStyle: CategoryStyle): void;
74
+ /**
75
+ * Gets the style for a given Blockly UI component. If the style value is a
76
+ * string, we attempt to find the value of any named references.
77
+ * @param componentName The name of the component.
78
+ * @return The style value.
79
+ */
80
+ getComponentStyle(componentName: string): string | null;
81
+ /**
82
+ * Configure a specific Blockly UI component with a style value.
83
+ * @param componentName The name of the component.
84
+ * @param styleValue The style value.
85
+ */
86
+ setComponentStyle(componentName: string, styleValue: any): void;
87
+ /**
88
+ * Configure a theme's font style.
89
+ * @param fontStyle The font style.
90
+ */
91
+ setFontStyle(fontStyle: FontStyle): void;
92
+ /**
93
+ * Configure a theme's start hats.
94
+ * @param startHats True if the theme enables start hats, false otherwise.
95
+ */
96
+ setStartHats(startHats: boolean): void;
97
+ /**
98
+ * Define a new Blockly theme.
99
+ * @param name The name of the theme.
100
+ * @param themeObj An object containing theme properties.
101
+ * @return A new Blockly theme.
102
+ */
103
+ static defineTheme(name: string, themeObj: ITheme): Theme;
104
+ }
105
+ export declare namespace Theme {
106
+ interface BlockStyle {
107
+ colourPrimary: string;
108
+ colourSecondary: string;
109
+ colourTertiary: string;
110
+ hat?: string;
111
+ }
112
+ interface CategoryStyle {
113
+ colour: string;
114
+ }
115
+ interface ComponentStyle {
116
+ workspaceBackgroundColour: string | null;
117
+ toolboxBackgroundColour: string | null;
118
+ toolboxForegroundColour: string | null;
119
+ flyoutBackgroundColour: string | null;
120
+ flyoutForegroundColour: string | null;
121
+ flyoutOpacity: number | null;
122
+ scrollbarColour: string | null;
123
+ scrollbarOpacity: number | null;
124
+ insertionMarkerColour: string | null;
125
+ insertionMarkerOpacity: number | null;
126
+ markerColour: string | null;
127
+ cursorColour: string | null;
128
+ selectedGlowColour: string | null;
129
+ selectedGlowOpacity: number | null;
130
+ replacementGlowColour: string | null;
131
+ replacementGlowOpacity: number | null;
132
+ }
133
+ interface FontStyle {
134
+ family: string | null;
135
+ weight: string | null;
136
+ size: number | null;
137
+ }
138
+ }
139
+ export declare type BlockStyle = Theme.BlockStyle;
140
+ export declare type CategoryStyle = Theme.CategoryStyle;
141
+ export declare type ComponentStyle = Theme.ComponentStyle;
142
+ export declare type FontStyle = Theme.FontStyle;