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,179 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2020 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ /**
8
+ * @fileoverview Registry for context menu option items.
9
+ */
10
+
11
+ /**
12
+ * Registry for context menu option items.
13
+ * @class
14
+ */
15
+ import * as goog from '../closure/goog/goog.js';
16
+ goog.declareModuleId('Blockly.ContextMenuRegistry');
17
+
18
+ import type {BlockSvg} from './block_svg.js';
19
+ import type {WorkspaceSvg} from './workspace_svg.js';
20
+
21
+
22
+ /**
23
+ * Class for the registry of context menu items. This is intended to be a
24
+ * singleton. You should not create a new instance, and only access this class
25
+ * from ContextMenuRegistry.registry.
26
+ * @alias Blockly.ContextMenuRegistry
27
+ */
28
+ export class ContextMenuRegistry {
29
+ static registry: ContextMenuRegistry;
30
+ /** Registry of all registered RegistryItems, keyed by ID. */
31
+ private registry_ = new Map<string, RegistryItem>();
32
+
33
+ /** Resets the existing singleton instance of ContextMenuRegistry. */
34
+ constructor() {
35
+ this.reset();
36
+ }
37
+
38
+ /** Clear and recreate the registry. */
39
+ reset() {
40
+ this.registry_.clear();
41
+ }
42
+
43
+ /**
44
+ * Registers a RegistryItem.
45
+ * @param item Context menu item to register.
46
+ * @throws {Error} if an item with the given ID already exists.
47
+ */
48
+ register(item: RegistryItem) {
49
+ if (this.registry_.has(item.id)) {
50
+ throw Error('Menu item with ID "' + item.id + '" is already registered.');
51
+ }
52
+ this.registry_.set(item.id, item);
53
+ }
54
+
55
+ /**
56
+ * Unregisters a RegistryItem with the given ID.
57
+ * @param id The ID of the RegistryItem to remove.
58
+ * @throws {Error} if an item with the given ID does not exist.
59
+ */
60
+ unregister(id: string) {
61
+ if (!this.registry_.has(id)) {
62
+ throw new Error('Menu item with ID "' + id + '" not found.');
63
+ }
64
+ this.registry_.delete(id);
65
+ }
66
+
67
+ /**
68
+ * @param id The ID of the RegistryItem to get.
69
+ * @return RegistryItem or null if not found
70
+ */
71
+ getItem(id: string): RegistryItem|null {
72
+ return this.registry_.get(id) ?? null;
73
+ }
74
+
75
+ /**
76
+ * Gets the valid context menu options for the given scope type (e.g. block or
77
+ * workspace) and scope. Blocks are only shown if the preconditionFn shows
78
+ * they should not be hidden.
79
+ * @param scopeType Type of scope where menu should be shown (e.g. on a block
80
+ * or on a workspace)
81
+ * @param scope Current scope of context menu (i.e., the exact workspace or
82
+ * block being clicked on)
83
+ * @return the list of ContextMenuOptions
84
+ */
85
+ getContextMenuOptions(scopeType: ScopeType, scope: Scope):
86
+ ContextMenuOption[] {
87
+ const menuOptions: AnyDuringMigration[] = [];
88
+ for (const item of this.registry_.values()) {
89
+ if (scopeType === item.scopeType) {
90
+ const precondition = item.preconditionFn(scope);
91
+ if (precondition !== 'hidden') {
92
+ const displayText = typeof item.displayText === 'function' ?
93
+ item.displayText(scope) :
94
+ item.displayText;
95
+ const menuOption: ContextMenuOption = {
96
+ text: displayText,
97
+ enabled: precondition === 'enabled',
98
+ callback: item.callback,
99
+ scope,
100
+ weight: item.weight,
101
+ };
102
+ menuOptions.push(menuOption);
103
+ }
104
+ }
105
+ }
106
+ menuOptions.sort(function(a, b) {
107
+ return a.weight - b.weight;
108
+ });
109
+ return menuOptions;
110
+ }
111
+ }
112
+
113
+ export namespace ContextMenuRegistry {
114
+ /**
115
+ * Where this menu item should be rendered. If the menu item should be
116
+ * rendered in multiple scopes, e.g. on both a block and a workspace, it
117
+ * should be registered for each scope.
118
+ */
119
+ export enum ScopeType {
120
+ BLOCK = 'block',
121
+ WORKSPACE = 'workspace',
122
+ }
123
+
124
+ /**
125
+ * The actual workspace/block where the menu is being rendered. This is passed
126
+ * to callback and displayText functions that depend on this information.
127
+ */
128
+ export interface Scope {
129
+ block: BlockSvg|undefined;
130
+ workspace: WorkspaceSvg|undefined;
131
+ }
132
+
133
+ /**
134
+ * A menu item as entered in the registry.
135
+ */
136
+ export interface RegistryItem {
137
+ callback: (p1: Scope) => AnyDuringMigration;
138
+ scopeType: ScopeType;
139
+ displayText: ((p1: Scope) => string)|string;
140
+ preconditionFn: (p1: Scope) => string;
141
+ weight: number;
142
+ id: string;
143
+ }
144
+
145
+ /**
146
+ * A menu item as presented to contextmenu.js.
147
+ */
148
+ export interface ContextMenuOption {
149
+ text: string;
150
+ enabled: boolean;
151
+ callback: (p1: Scope) => AnyDuringMigration;
152
+ scope: Scope;
153
+ weight: number;
154
+ }
155
+
156
+ /**
157
+ * A subset of ContextMenuOption corresponding to what was publicly
158
+ * documented. ContextMenuOption should be preferred for new code.
159
+ */
160
+ export interface LegacyContextMenuOption {
161
+ text: string;
162
+ enabled: boolean;
163
+ callback: (p1: Scope) => AnyDuringMigration;
164
+ }
165
+
166
+ /**
167
+ * Singleton instance of this class. All interactions with this class should
168
+ * be done on this object.
169
+ */
170
+ ContextMenuRegistry.registry = new ContextMenuRegistry();
171
+ }
172
+
173
+ export type ScopeType = ContextMenuRegistry.ScopeType;
174
+ export const ScopeType = ContextMenuRegistry.ScopeType;
175
+ export type Scope = ContextMenuRegistry.Scope;
176
+ export type RegistryItem = ContextMenuRegistry.RegistryItem;
177
+ export type ContextMenuOption = ContextMenuRegistry.ContextMenuOption;
178
+ export type LegacyContextMenuOption =
179
+ ContextMenuRegistry.LegacyContextMenuOption;
package/core/css.d.ts ADDED
@@ -0,0 +1,24 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2013 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * Add some CSS to the blob that will be injected later. Allows optional
8
+ * components such as fields and the toolbox to store separate CSS.
9
+ * @param cssContent Multiline CSS string or an array of single lines of CSS.
10
+ * @alias Blockly.Css.register
11
+ */
12
+ export declare function register(cssContent: string | string[]): void;
13
+ /**
14
+ * Inject the CSS into the DOM. This is preferable over using a regular CSS
15
+ * file since:
16
+ * a) It loads synchronously and doesn't force a redraw later.
17
+ * b) It speeds up loading by not blocking on a separate HTTP transfer.
18
+ * c) The CSS content may be made dynamic depending on init options.
19
+ * @param hasCss If false, don't inject CSS (providing CSS becomes the
20
+ * document's responsibility).
21
+ * @param pathToMedia Path from page to the Blockly media directory.
22
+ * @alias Blockly.Css.inject
23
+ */
24
+ export declare function inject(hasCss: boolean, pathToMedia: string): void;
@@ -7,32 +7,27 @@
7
7
  /**
8
8
  * @fileoverview Inject Blockly's CSS synchronously.
9
9
  */
10
- 'use strict';
11
10
 
12
11
  /**
13
12
  * Inject Blockly's CSS synchronously.
14
13
  * @namespace Blockly.Css
15
14
  */
16
- goog.module('Blockly.Css');
15
+ import * as goog from '../closure/goog/goog.js';
16
+ goog.declareModuleId('Blockly.Css');
17
17
 
18
- const deprecation = goog.require('Blockly.utils.deprecation');
18
+ import * as deprecation from './utils/deprecation.js';
19
19
 
20
20
 
21
- /**
22
- * Has CSS already been injected?
23
- * @type {boolean}
24
- * @private
25
- */
21
+ /** Has CSS already been injected? */
26
22
  let injected = false;
27
23
 
28
24
  /**
29
25
  * Add some CSS to the blob that will be injected later. Allows optional
30
26
  * components such as fields and the toolbox to store separate CSS.
31
- * @param {string|!Array<string>} cssContent Multiline CSS string or an array of
32
- * single lines of CSS.
27
+ * @param cssContent Multiline CSS string or an array of single lines of CSS.
33
28
  * @alias Blockly.Css.register
34
29
  */
35
- const register = function(cssContent) {
30
+ export function register(cssContent: string|string[]) {
36
31
  if (injected) {
37
32
  throw Error('CSS already injected');
38
33
  }
@@ -41,13 +36,12 @@ const register = function(cssContent) {
41
36
  deprecation.warn(
42
37
  'Registering CSS by passing an array of strings', 'September 2021',
43
38
  'September 2022', 'css.register passing a multiline string');
44
- content += ('\n' + cssContent.join('\n'));
39
+ content += '\n' + cssContent.join('\n');
45
40
  } else {
46
41
  // Add new cssContent in the global content.
47
- content += ('\n' + cssContent);
42
+ content += '\n' + cssContent;
48
43
  }
49
- };
50
- exports.register = register;
44
+ }
51
45
 
52
46
  /**
53
47
  * Inject the CSS into the DOM. This is preferable over using a regular CSS
@@ -55,12 +49,12 @@ exports.register = register;
55
49
  * a) It loads synchronously and doesn't force a redraw later.
56
50
  * b) It speeds up loading by not blocking on a separate HTTP transfer.
57
51
  * c) The CSS content may be made dynamic depending on init options.
58
- * @param {boolean} hasCss If false, don't inject CSS
59
- * (providing CSS becomes the document's responsibility).
60
- * @param {string} pathToMedia Path from page to the Blockly media directory.
52
+ * @param hasCss If false, don't inject CSS (providing CSS becomes the
53
+ * document's responsibility).
54
+ * @param pathToMedia Path from page to the Blockly media directory.
61
55
  * @alias Blockly.Css.inject
62
56
  */
63
- const inject = function(hasCss, pathToMedia) {
57
+ export function inject(hasCss: boolean, pathToMedia: string) {
64
58
  // Only inject the CSS once.
65
59
  if (injected) {
66
60
  return;
@@ -81,14 +75,13 @@ const inject = function(hasCss, pathToMedia) {
81
75
  const cssTextNode = document.createTextNode(cssContent);
82
76
  cssNode.appendChild(cssTextNode);
83
77
  document.head.insertBefore(cssNode, document.head.firstChild);
84
- };
85
- exports.inject = inject;
78
+ }
86
79
 
87
80
  /**
88
81
  * The CSS content for Blockly.
89
82
  * @alias Blockly.Css.content
90
83
  */
91
- let content = (`
84
+ let content = `
92
85
  .blocklySvg {
93
86
  background-color: #fff;
94
87
  outline: none;
@@ -564,5 +557,4 @@ let content = (`
564
557
  float: right;
565
558
  margin-right: -24px;
566
559
  }
567
- `);
568
- exports.content = content;
560
+ `;
@@ -0,0 +1,47 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2021 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { DragTarget } from './drag_target.js';
7
+ import type { IDeleteArea } from './interfaces/i_delete_area.js';
8
+ import type { IDraggable } from './interfaces/i_draggable.js';
9
+ /**
10
+ * Abstract class for a component that can delete a block or bubble that is
11
+ * dropped on top of it.
12
+ * @alias Blockly.DeleteArea
13
+ */
14
+ export declare class DeleteArea extends DragTarget implements IDeleteArea {
15
+ /**
16
+ * Whether the last block or bubble dragged over this delete area would be
17
+ * deleted if dropped on this component.
18
+ * This property is not updated after the block or bubble is deleted.
19
+ */
20
+ protected wouldDelete_: boolean;
21
+ /**
22
+ * The unique id for this component that is used to register with the
23
+ * ComponentManager.
24
+ */
25
+ id: string;
26
+ /**
27
+ * Constructor for DeleteArea. Should not be called directly, only by a
28
+ * subclass.
29
+ */
30
+ constructor();
31
+ /**
32
+ * Returns whether the provided block or bubble would be deleted if dropped on
33
+ * this area.
34
+ * This method should check if the element is deletable and is always called
35
+ * before onDragEnter/onDragOver/onDragExit.
36
+ * @param element The block or bubble currently being dragged.
37
+ * @param couldConnect Whether the element could could connect to another.
38
+ * @return Whether the element provided would be deleted if dropped on this
39
+ * area.
40
+ */
41
+ wouldDelete(element: IDraggable, couldConnect: boolean): boolean;
42
+ /**
43
+ * Updates the internal wouldDelete_ state.
44
+ * @param wouldDelete The new value for the wouldDelete state.
45
+ */
46
+ protected updateWouldDelete_(wouldDelete: boolean): void;
47
+ }
@@ -0,0 +1,82 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2021 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ /**
8
+ * @fileoverview The abstract class for a component that can delete a block or
9
+ * bubble that is dropped on top of it.
10
+ */
11
+
12
+ /**
13
+ * The abstract class for a component that can delete a block or
14
+ * bubble that is dropped on top of it.
15
+ * @class
16
+ */
17
+ import * as goog from '../closure/goog/goog.js';
18
+ goog.declareModuleId('Blockly.DeleteArea');
19
+
20
+ import {BlockSvg} from './block_svg.js';
21
+ import {DragTarget} from './drag_target.js';
22
+ import type {IDeleteArea} from './interfaces/i_delete_area.js';
23
+ import type {IDraggable} from './interfaces/i_draggable.js';
24
+
25
+
26
+ /**
27
+ * Abstract class for a component that can delete a block or bubble that is
28
+ * dropped on top of it.
29
+ * @alias Blockly.DeleteArea
30
+ */
31
+ export class DeleteArea extends DragTarget implements IDeleteArea {
32
+ /**
33
+ * Whether the last block or bubble dragged over this delete area would be
34
+ * deleted if dropped on this component.
35
+ * This property is not updated after the block or bubble is deleted.
36
+ */
37
+ protected wouldDelete_ = false;
38
+
39
+ /**
40
+ * The unique id for this component that is used to register with the
41
+ * ComponentManager.
42
+ */
43
+ // TODO(b/109816955): remove '!', see go/strict-prop-init-fix.
44
+ override id!: string;
45
+
46
+ /**
47
+ * Constructor for DeleteArea. Should not be called directly, only by a
48
+ * subclass.
49
+ */
50
+ constructor() {
51
+ super();
52
+ }
53
+
54
+ /**
55
+ * Returns whether the provided block or bubble would be deleted if dropped on
56
+ * this area.
57
+ * This method should check if the element is deletable and is always called
58
+ * before onDragEnter/onDragOver/onDragExit.
59
+ * @param element The block or bubble currently being dragged.
60
+ * @param couldConnect Whether the element could could connect to another.
61
+ * @return Whether the element provided would be deleted if dropped on this
62
+ * area.
63
+ */
64
+ wouldDelete(element: IDraggable, couldConnect: boolean): boolean {
65
+ if (element instanceof BlockSvg) {
66
+ const block = (element);
67
+ const couldDeleteBlock = !block.getParent() && block.isDeletable();
68
+ this.updateWouldDelete_(couldDeleteBlock && !couldConnect);
69
+ } else {
70
+ this.updateWouldDelete_(element.isDeletable());
71
+ }
72
+ return this.wouldDelete_;
73
+ }
74
+
75
+ /**
76
+ * Updates the internal wouldDelete_ state.
77
+ * @param wouldDelete The new value for the wouldDelete state.
78
+ */
79
+ protected updateWouldDelete_(wouldDelete: boolean) {
80
+ this.wouldDelete_ = wouldDelete;
81
+ }
82
+ }
@@ -0,0 +1,61 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2021 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ /**
7
+ * Wrapper to window.alert() that app developers may override via setAlert to
8
+ * provide alternatives to the modal browser window.
9
+ * @param message The message to display to the user.
10
+ * @param opt_callback The callback when the alert is dismissed.
11
+ * @alias Blockly.dialog.alert
12
+ */
13
+ export declare function alert(message: string, opt_callback?: () => any): void;
14
+ /**
15
+ * Sets the function to be run when Blockly.dialog.alert() is called.
16
+ * @param alertFunction The function to be run.
17
+ * @see Blockly.dialog.alert
18
+ * @alias Blockly.dialog.setAlert
19
+ */
20
+ export declare function setAlert(alertFunction: (p1: string, p2?: () => any) => any): void;
21
+ /**
22
+ * Wrapper to window.confirm() that app developers may override via setConfirm
23
+ * to provide alternatives to the modal browser window.
24
+ * @param message The message to display to the user.
25
+ * @param callback The callback for handling user response.
26
+ * @alias Blockly.dialog.confirm
27
+ */
28
+ export declare function confirm(message: string, callback: (p1: boolean) => any): void;
29
+ /**
30
+ * Private version of confirm for stubbing in tests.
31
+ */
32
+ declare function confirmInternal(message: string, callback: (p1: boolean) => any): void;
33
+ /**
34
+ * Sets the function to be run when Blockly.dialog.confirm() is called.
35
+ * @param confirmFunction The function to be run.
36
+ * @see Blockly.dialog.confirm
37
+ * @alias Blockly.dialog.setConfirm
38
+ */
39
+ export declare function setConfirm(confirmFunction: (p1: string, p2: (p1: boolean) => any) => any): void;
40
+ /**
41
+ * Wrapper to window.prompt() that app developers may override via setPrompt to
42
+ * provide alternatives to the modal browser window. Built-in browser prompts
43
+ * are often used for better text input experience on mobile device. We strongly
44
+ * recommend testing mobile when overriding this.
45
+ * @param message The message to display to the user.
46
+ * @param defaultValue The value to initialize the prompt with.
47
+ * @param callback The callback for handling user response.
48
+ * @alias Blockly.dialog.prompt
49
+ */
50
+ export declare function prompt(message: string, defaultValue: string, callback: (p1: string | null) => any): void;
51
+ /**
52
+ * Sets the function to be run when Blockly.dialog.prompt() is called.
53
+ * @param promptFunction The function to be run.
54
+ * @see Blockly.dialog.prompt
55
+ * @alias Blockly.dialog.setPrompt
56
+ */
57
+ export declare function setPrompt(promptFunction: (p1: string, p2: string, p3: (p1: string | null) => any) => any): void;
58
+ export declare const TEST_ONLY: {
59
+ confirmInternal: typeof confirmInternal;
60
+ };
61
+ export {};
package/core/dialog.ts ADDED
@@ -0,0 +1,127 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2021 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ /**
8
+ * @fileoverview Wrapper functions around JS functions for showing
9
+ * alert/confirmation dialogs.
10
+ */
11
+
12
+ /**
13
+ * Wrapper functions around JS functions for showing alert/confirmation dialogs.
14
+ * @namespace Blockly.dialog
15
+ */
16
+ import * as goog from '../closure/goog/goog.js';
17
+ goog.declareModuleId('Blockly.dialog');
18
+
19
+
20
+ let alertImplementation = function(
21
+ message: AnyDuringMigration, opt_callback: AnyDuringMigration) {
22
+ window.alert(message);
23
+ if (opt_callback) {
24
+ opt_callback();
25
+ }
26
+ };
27
+
28
+ let confirmImplementation = function(
29
+ message: AnyDuringMigration, callback: AnyDuringMigration) {
30
+ callback(window.confirm(message));
31
+ };
32
+
33
+ let promptImplementation = function(
34
+ message: AnyDuringMigration, defaultValue: AnyDuringMigration,
35
+ callback: AnyDuringMigration) {
36
+ callback(window.prompt(message, defaultValue));
37
+ };
38
+
39
+ /**
40
+ * Wrapper to window.alert() that app developers may override via setAlert to
41
+ * provide alternatives to the modal browser window.
42
+ * @param message The message to display to the user.
43
+ * @param opt_callback The callback when the alert is dismissed.
44
+ * @alias Blockly.dialog.alert
45
+ */
46
+ export function alert(
47
+ message: string, opt_callback?: () => AnyDuringMigration) {
48
+ alertImplementation(message, opt_callback);
49
+ }
50
+
51
+ /**
52
+ * Sets the function to be run when Blockly.dialog.alert() is called.
53
+ * @param alertFunction The function to be run.
54
+ * @see Blockly.dialog.alert
55
+ * @alias Blockly.dialog.setAlert
56
+ */
57
+ export function setAlert(
58
+ alertFunction: (p1: string, p2?: () => AnyDuringMigration) =>
59
+ AnyDuringMigration) {
60
+ alertImplementation = alertFunction;
61
+ }
62
+
63
+ /**
64
+ * Wrapper to window.confirm() that app developers may override via setConfirm
65
+ * to provide alternatives to the modal browser window.
66
+ * @param message The message to display to the user.
67
+ * @param callback The callback for handling user response.
68
+ * @alias Blockly.dialog.confirm
69
+ */
70
+ export function confirm(
71
+ message: string, callback: (p1: boolean) => AnyDuringMigration) {
72
+ TEST_ONLY.confirmInternal(message, callback);
73
+ }
74
+
75
+ /**
76
+ * Private version of confirm for stubbing in tests.
77
+ */
78
+ function confirmInternal(
79
+ message: string, callback: (p1: boolean) => AnyDuringMigration) {
80
+ confirmImplementation(message, callback);
81
+ }
82
+
83
+
84
+ /**
85
+ * Sets the function to be run when Blockly.dialog.confirm() is called.
86
+ * @param confirmFunction The function to be run.
87
+ * @see Blockly.dialog.confirm
88
+ * @alias Blockly.dialog.setConfirm
89
+ */
90
+ export function setConfirm(
91
+ confirmFunction: (p1: string, p2: (p1: boolean) => AnyDuringMigration) =>
92
+ AnyDuringMigration) {
93
+ confirmImplementation = confirmFunction;
94
+ }
95
+
96
+ /**
97
+ * Wrapper to window.prompt() that app developers may override via setPrompt to
98
+ * provide alternatives to the modal browser window. Built-in browser prompts
99
+ * are often used for better text input experience on mobile device. We strongly
100
+ * recommend testing mobile when overriding this.
101
+ * @param message The message to display to the user.
102
+ * @param defaultValue The value to initialize the prompt with.
103
+ * @param callback The callback for handling user response.
104
+ * @alias Blockly.dialog.prompt
105
+ */
106
+ export function prompt(
107
+ message: string, defaultValue: string,
108
+ callback: (p1: string|null) => AnyDuringMigration) {
109
+ promptImplementation(message, defaultValue, callback);
110
+ }
111
+
112
+ /**
113
+ * Sets the function to be run when Blockly.dialog.prompt() is called.
114
+ * @param promptFunction The function to be run.
115
+ * @see Blockly.dialog.prompt
116
+ * @alias Blockly.dialog.setPrompt
117
+ */
118
+ export function setPrompt(
119
+ promptFunction:
120
+ (p1: string, p2: string, p3: (p1: string|null) => AnyDuringMigration) =>
121
+ AnyDuringMigration) {
122
+ promptImplementation = promptFunction;
123
+ }
124
+
125
+ export const TEST_ONLY = {
126
+ confirmInternal,
127
+ }
@@ -0,0 +1,63 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2021 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import type { IDragTarget } from './interfaces/i_drag_target.js';
7
+ import type { IDraggable } from './interfaces/i_draggable.js';
8
+ import type { Rect } from './utils/rect.js';
9
+ /**
10
+ * Abstract class for a component with custom behaviour when a block or bubble
11
+ * is dragged over or dropped on top of it.
12
+ * @alias Blockly.DragTarget
13
+ */
14
+ export declare class DragTarget implements IDragTarget {
15
+ /**
16
+ * The unique id for this component that is used to register with the
17
+ * ComponentManager.
18
+ */
19
+ id: string;
20
+ /**
21
+ * Constructor for DragTarget. It exists to add the id property and should not
22
+ * be called directly, only by a subclass.
23
+ */
24
+ constructor();
25
+ /**
26
+ * Handles when a cursor with a block or bubble enters this drag target.
27
+ * @param _dragElement The block or bubble currently being dragged.
28
+ */
29
+ onDragEnter(_dragElement: IDraggable): void;
30
+ /**
31
+ * Handles when a cursor with a block or bubble is dragged over this drag
32
+ * target.
33
+ * @param _dragElement The block or bubble currently being dragged.
34
+ */
35
+ onDragOver(_dragElement: IDraggable): void;
36
+ /**
37
+ * Handles when a cursor with a block or bubble exits this drag target.
38
+ * @param _dragElement The block or bubble currently being dragged.
39
+ */
40
+ onDragExit(_dragElement: IDraggable): void;
41
+ /**
42
+ * Handles when a block or bubble is dropped on this component.
43
+ * Should not handle delete here.
44
+ * @param _dragElement The block or bubble currently being dragged.
45
+ */
46
+ onDrop(_dragElement: IDraggable): void;
47
+ /**
48
+ * Returns the bounding rectangle of the drag target area in pixel units
49
+ * relative to the Blockly injection div.
50
+ * @return The component's bounding box. Null if drag target area should be
51
+ * ignored.
52
+ */
53
+ getClientRect(): Rect | null;
54
+ /**
55
+ * Returns whether the provided block or bubble should not be moved after
56
+ * being dropped on this component. If true, the element will return to where
57
+ * it was when the drag started.
58
+ * @param _dragElement The block or bubble currently being dragged.
59
+ * @return Whether the block or bubble provided should be returned to drag
60
+ * start.
61
+ */
62
+ shouldPreventMove(_dragElement: IDraggable): boolean;
63
+ }