blockly 9.0.0-beta.0 → 9.0.0-beta.1

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 (608) hide show
  1. package/blockly.min.js +401 -405
  2. package/blockly_compressed.js +398 -402
  3. package/blockly_compressed.js.map +1 -1
  4. package/blocks.d.ts +0 -5
  5. package/blocks_compressed.js +3 -3
  6. package/blocks_compressed.js.map +1 -1
  7. package/closure/goog/base.d.ts +1 -0
  8. package/closure/goog/base_minimal.d.ts +1 -0
  9. package/closure/goog/goog.d.ts +1 -0
  10. package/core/any_aliases.d.ts +1 -0
  11. package/core/block.d.ts +145 -53
  12. package/core/block_animations.d.ts +5 -0
  13. package/core/block_drag_surface.d.ts +18 -5
  14. package/core/block_dragger.d.ts +20 -5
  15. package/core/block_svg.d.ts +89 -21
  16. package/core/blockly.d.ts +29 -8
  17. package/core/blockly_options.d.ts +2 -0
  18. package/core/blocks.d.ts +2 -0
  19. package/core/browser_events.d.ts +16 -7
  20. package/core/bubble.d.ts +42 -12
  21. package/core/bubble_dragger.d.ts +9 -2
  22. package/core/bump_objects.d.ts +6 -2
  23. package/core/clipboard.d.ts +6 -2
  24. package/core/comment.d.ts +13 -3
  25. package/core/common.d.ts +35 -9
  26. package/core/component_manager.d.ts +16 -6
  27. package/core/config.d.ts +1 -0
  28. package/core/connection.d.ts +48 -18
  29. package/core/connection_checker.d.ts +16 -7
  30. package/core/connection_db.d.ts +17 -6
  31. package/core/connection_type.d.ts +2 -0
  32. package/core/constants.d.ts +3 -0
  33. package/core/contextmenu.d.ts +15 -5
  34. package/core/contextmenu_items.d.ts +15 -0
  35. package/core/contextmenu_registry.d.ts +12 -7
  36. package/core/css.d.ts +3 -0
  37. package/core/delete_area.d.ts +5 -1
  38. package/core/dialog.d.ts +14 -7
  39. package/core/drag_target.d.ts +10 -2
  40. package/core/dropdowndiv.d.ts +42 -10
  41. package/core/events/events.d.ts +1 -0
  42. package/core/events/events_abstract.d.ts +10 -3
  43. package/core/events/events_block_base.d.ts +5 -1
  44. package/core/events/events_block_change.d.ts +10 -3
  45. package/core/events/events_block_create.d.ts +6 -1
  46. package/core/events/events_block_delete.d.ts +6 -1
  47. package/core/events/events_block_drag.d.ts +5 -1
  48. package/core/events/events_block_move.d.ts +10 -3
  49. package/core/events/events_bubble_open.d.ts +6 -2
  50. package/core/events/events_click.d.ts +5 -1
  51. package/core/events/events_comment_base.d.ts +6 -1
  52. package/core/events/events_comment_change.d.ts +8 -2
  53. package/core/events/events_comment_create.d.ts +6 -1
  54. package/core/events/events_comment_delete.d.ts +6 -1
  55. package/core/events/events_comment_move.d.ts +9 -2
  56. package/core/events/events_marker_move.d.ts +5 -1
  57. package/core/events/events_selected.d.ts +5 -1
  58. package/core/events/events_theme_change.d.ts +5 -1
  59. package/core/events/events_toolbox_item_select.d.ts +5 -1
  60. package/core/events/events_trashcan_open.d.ts +5 -1
  61. package/core/events/events_ui.d.ts +5 -1
  62. package/core/events/events_ui_base.d.ts +2 -0
  63. package/core/events/events_var_base.d.ts +5 -1
  64. package/core/events/events_var_create.d.ts +6 -1
  65. package/core/events/events_var_delete.d.ts +6 -1
  66. package/core/events/events_var_rename.d.ts +6 -1
  67. package/core/events/events_viewport.d.ts +5 -1
  68. package/core/events/utils.d.ts +50 -7
  69. package/core/events/workspace_events.d.ts +5 -1
  70. package/core/extensions.d.ts +14 -4
  71. package/core/field.d.ts +93 -34
  72. package/core/field_angle.d.ts +14 -3
  73. package/core/field_checkbox.d.ts +20 -7
  74. package/core/field_colour.d.ts +22 -6
  75. package/core/field_dropdown.d.ts +28 -8
  76. package/core/field_image.d.ts +15 -4
  77. package/core/field_label.d.ts +8 -2
  78. package/core/field_label_serializable.d.ts +4 -1
  79. package/core/field_multilineinput.d.ts +21 -6
  80. package/core/field_number.d.ts +22 -6
  81. package/core/field_registry.d.ts +8 -2
  82. package/core/field_textinput.d.ts +28 -8
  83. package/core/field_variable.d.ts +36 -13
  84. package/core/flyout_base.d.ts +70 -24
  85. package/core/flyout_button.d.ts +12 -5
  86. package/core/flyout_horizontal.d.ts +14 -6
  87. package/core/flyout_metrics_manager.d.ts +6 -3
  88. package/core/flyout_vertical.d.ts +14 -6
  89. package/core/generator.d.ts +39 -20
  90. package/core/gesture.d.ts +48 -13
  91. package/core/grid.d.ts +19 -15
  92. package/core/icon.d.ts +12 -3
  93. package/core/inject.d.ts +3 -1
  94. package/core/input.d.ts +25 -10
  95. package/core/input_types.d.ts +2 -0
  96. package/core/insertion_marker_manager.d.ts +27 -9
  97. package/core/interfaces/i_ast_node_location.d.ts +2 -0
  98. package/core/interfaces/i_ast_node_location_svg.d.ts +4 -0
  99. package/core/interfaces/i_ast_node_location_with_block.d.ts +4 -1
  100. package/core/interfaces/i_autohideable.d.ts +3 -0
  101. package/core/interfaces/i_block_dragger.d.ts +7 -1
  102. package/core/interfaces/i_bounded_element.d.ts +5 -1
  103. package/core/interfaces/i_bubble.d.ts +11 -2
  104. package/core/interfaces/i_collapsible_toolbox_item.d.ts +6 -2
  105. package/core/interfaces/i_component.d.ts +2 -0
  106. package/core/interfaces/i_connection_checker.d.ts +14 -6
  107. package/core/interfaces/i_contextmenu.d.ts +2 -0
  108. package/core/interfaces/i_copyable.d.ts +3 -1
  109. package/core/interfaces/i_deletable.d.ts +4 -1
  110. package/core/interfaces/i_delete_area.d.ts +4 -1
  111. package/core/interfaces/i_drag_target.d.ts +10 -2
  112. package/core/interfaces/i_draggable.d.ts +2 -0
  113. package/core/interfaces/i_flyout.d.ts +27 -11
  114. package/core/interfaces/i_keyboard_accessible.d.ts +4 -1
  115. package/core/interfaces/i_metrics_manager.d.ts +24 -12
  116. package/core/interfaces/i_movable.d.ts +4 -1
  117. package/core/interfaces/i_positionable.d.ts +5 -1
  118. package/core/interfaces/i_registrable.d.ts +2 -0
  119. package/core/interfaces/i_registrable_field.d.ts +2 -0
  120. package/core/interfaces/i_selectable.d.ts +2 -0
  121. package/core/interfaces/i_selectable_toolbox_item.d.ts +10 -3
  122. package/core/interfaces/i_serializer.d.ts +6 -1
  123. package/core/interfaces/i_styleable.d.ts +4 -0
  124. package/core/interfaces/i_toolbox.d.ts +17 -6
  125. package/core/interfaces/i_toolbox_item.d.ts +17 -7
  126. package/core/internal_constants.d.ts +6 -0
  127. package/core/keyboard_nav/ast_node.d.ts +55 -28
  128. package/core/keyboard_nav/basic_cursor.d.ts +20 -9
  129. package/core/keyboard_nav/cursor.d.ts +11 -5
  130. package/core/keyboard_nav/marker.d.ts +9 -2
  131. package/core/keyboard_nav/tab_navigate_cursor.d.ts +4 -1
  132. package/core/main.d.ts +1 -0
  133. package/core/marker_manager.d.ts +13 -2
  134. package/core/menu.d.ts +23 -5
  135. package/core/menuitem.d.ts +22 -7
  136. package/core/metrics_manager.d.ts +30 -15
  137. package/core/msg.d.ts +1 -0
  138. package/core/mutator.d.ts +19 -7
  139. package/core/names.d.ts +20 -8
  140. package/core/options.d.ts +12 -6
  141. package/core/positionable_helpers.d.ts +11 -3
  142. package/core/procedures.d.ts +27 -10
  143. package/core/registry.d.ts +19 -8
  144. package/core/rendered_connection.d.ts +28 -7
  145. package/core/renderers/common/block_rendering.d.ts +9 -2
  146. package/core/renderers/common/constants.d.ts +49 -17
  147. package/core/renderers/common/debug.d.ts +5 -1
  148. package/core/renderers/common/debugger.d.ts +12 -1
  149. package/core/renderers/common/drawer.d.ts +12 -0
  150. package/core/renderers/common/i_path_object.d.ts +15 -0
  151. package/core/renderers/common/info.d.ts +25 -8
  152. package/core/renderers/common/marker_svg.d.ts +35 -6
  153. package/core/renderers/common/path_object.d.ts +20 -0
  154. package/core/renderers/common/renderer.d.ts +33 -12
  155. package/core/renderers/geras/constants.d.ts +2 -0
  156. package/core/renderers/geras/drawer.d.ts +2 -0
  157. package/core/renderers/geras/geras.d.ts +3 -2
  158. package/core/renderers/geras/highlight_constants.d.ts +9 -6
  159. package/core/renderers/geras/highlighter.d.ts +12 -1
  160. package/core/renderers/geras/info.d.ts +4 -1
  161. package/core/renderers/geras/measurables/inline_input.d.ts +2 -0
  162. package/core/renderers/geras/measurables/statement_input.d.ts +2 -0
  163. package/core/renderers/geras/path_object.d.ts +4 -0
  164. package/core/renderers/geras/renderer.d.ts +16 -6
  165. package/core/renderers/measurables/base.d.ts +2 -0
  166. package/core/renderers/measurables/bottom_row.d.ts +9 -3
  167. package/core/renderers/measurables/connection.d.ts +2 -0
  168. package/core/renderers/measurables/external_value_input.d.ts +2 -1
  169. package/core/renderers/measurables/field.d.ts +2 -1
  170. package/core/renderers/measurables/hat.d.ts +2 -1
  171. package/core/renderers/measurables/icon.d.ts +3 -1
  172. package/core/renderers/measurables/in_row_spacer.d.ts +2 -1
  173. package/core/renderers/measurables/inline_input.d.ts +2 -1
  174. package/core/renderers/measurables/input_connection.d.ts +2 -0
  175. package/core/renderers/measurables/input_row.d.ts +4 -1
  176. package/core/renderers/measurables/jagged_edge.d.ts +2 -1
  177. package/core/renderers/measurables/next_connection.d.ts +2 -1
  178. package/core/renderers/measurables/output_connection.d.ts +2 -1
  179. package/core/renderers/measurables/previous_connection.d.ts +2 -1
  180. package/core/renderers/measurables/round_corner.d.ts +2 -1
  181. package/core/renderers/measurables/row.d.ts +27 -5
  182. package/core/renderers/measurables/spacer_row.d.ts +2 -1
  183. package/core/renderers/measurables/square_corner.d.ts +2 -1
  184. package/core/renderers/measurables/statement_input.d.ts +2 -1
  185. package/core/renderers/measurables/top_row.d.ts +7 -3
  186. package/core/renderers/measurables/types.d.ts +54 -25
  187. package/core/renderers/minimalist/constants.d.ts +2 -0
  188. package/core/renderers/minimalist/drawer.d.ts +2 -0
  189. package/core/renderers/minimalist/info.d.ts +4 -1
  190. package/core/renderers/minimalist/minimalist.d.ts +2 -1
  191. package/core/renderers/minimalist/renderer.d.ts +8 -3
  192. package/core/renderers/thrasos/info.d.ts +4 -1
  193. package/core/renderers/thrasos/renderer.d.ts +4 -1
  194. package/core/renderers/thrasos/thrasos.d.ts +2 -1
  195. package/core/renderers/zelos/constants.d.ts +11 -3
  196. package/core/renderers/zelos/drawer.d.ts +3 -0
  197. package/core/renderers/zelos/info.d.ts +10 -5
  198. package/core/renderers/zelos/marker_svg.d.ts +5 -0
  199. package/core/renderers/zelos/measurables/bottom_row.d.ts +2 -0
  200. package/core/renderers/zelos/measurables/inputs.d.ts +2 -0
  201. package/core/renderers/zelos/measurables/row_elements.d.ts +2 -0
  202. package/core/renderers/zelos/measurables/top_row.d.ts +2 -0
  203. package/core/renderers/zelos/path_object.d.ts +8 -1
  204. package/core/renderers/zelos/renderer.d.ts +14 -6
  205. package/core/renderers/zelos/zelos.d.ts +3 -2
  206. package/core/scrollbar.d.ts +41 -9
  207. package/core/scrollbar_pair.d.ts +20 -6
  208. package/core/serialization/blocks.d.ts +10 -4
  209. package/core/serialization/exceptions.d.ts +5 -0
  210. package/core/serialization/priorities.d.ts +3 -0
  211. package/core/serialization/registry.d.ts +3 -0
  212. package/core/serialization/variables.d.ts +2 -0
  213. package/core/serialization/workspaces.d.ts +4 -1
  214. package/core/shortcut_items.d.ts +10 -0
  215. package/core/shortcut_registry.d.ts +25 -9
  216. package/core/sprites.d.ts +2 -4
  217. package/core/theme/classic.d.ts +2 -0
  218. package/core/theme/themes.d.ts +1 -0
  219. package/core/theme/zelos.d.ts +2 -0
  220. package/core/theme.d.ts +14 -3
  221. package/core/theme_manager.d.ts +10 -1
  222. package/core/toolbox/category.d.ts +42 -15
  223. package/core/toolbox/collapsible_category.d.ts +10 -3
  224. package/core/toolbox/separator.d.ts +4 -1
  225. package/core/toolbox/toolbox.d.ts +70 -22
  226. package/core/toolbox/toolbox_item.d.ts +17 -7
  227. package/core/tooltip.d.ts +22 -1
  228. package/core/touch.d.ts +18 -6
  229. package/core/touch_gesture.d.ts +16 -2
  230. package/core/trashcan.d.ts +27 -6
  231. package/core/utils/aria.d.ts +4 -0
  232. package/core/utils/array.d.ts +4 -2
  233. package/core/utils/colour.d.ts +24 -13
  234. package/core/utils/coordinate.d.ts +18 -8
  235. package/core/utils/deprecation.d.ts +6 -4
  236. package/core/utils/dom.d.ts +32 -12
  237. package/core/utils/idgenerator.d.ts +13 -3
  238. package/core/utils/keycodes.d.ts +1 -0
  239. package/core/utils/math.d.ts +7 -3
  240. package/core/utils/metrics.d.ts +1 -0
  241. package/core/utils/object.d.ts +7 -2
  242. package/core/utils/parsing.d.ts +9 -4
  243. package/core/utils/rect.d.ts +5 -3
  244. package/core/utils/sentinel.d.ts +2 -0
  245. package/core/utils/size.d.ts +4 -2
  246. package/core/utils/string.d.ts +13 -6
  247. package/core/utils/style.d.ts +14 -33
  248. package/core/utils/svg.d.ts +5 -2
  249. package/core/utils/svg_math.d.ts +15 -7
  250. package/core/utils/svg_paths.d.ts +20 -10
  251. package/core/utils/toolbox.d.ts +26 -5
  252. package/core/utils/useragent.d.ts +1 -12
  253. package/core/utils/xml.d.ts +13 -5
  254. package/core/utils.d.ts +43 -21
  255. package/core/variable_map.d.ts +26 -9
  256. package/core/variable_model.d.ts +5 -2
  257. package/core/variables.d.ts +33 -18
  258. package/core/variables_dynamic.d.ts +25 -5
  259. package/core/warning.d.ts +8 -3
  260. package/core/widgetdiv.d.ts +15 -6
  261. package/core/workspace.d.ts +80 -30
  262. package/core/workspace_audio.d.ts +6 -0
  263. package/core/workspace_comment.d.ts +33 -11
  264. package/core/workspace_comment_svg.d.ts +52 -9
  265. package/core/workspace_drag_surface_svg.d.ts +20 -14
  266. package/core/workspace_dragger.d.ts +6 -0
  267. package/core/workspace_svg.d.ts +174 -62
  268. package/core/xml.d.ts +26 -11
  269. package/core/zoom_controls.d.ts +16 -6
  270. package/core.d.ts +0 -5
  271. package/dart.d.ts +0 -5
  272. package/dart_compressed.js.map +1 -1
  273. package/index.d.ts +2 -6
  274. package/javascript.d.ts +0 -5
  275. package/javascript_compressed.js.map +1 -1
  276. package/lua.d.ts +0 -5
  277. package/lua_compressed.js.map +1 -1
  278. package/package.json +6 -3
  279. package/php.d.ts +0 -5
  280. package/php_compressed.js.map +1 -1
  281. package/python.d.ts +0 -5
  282. package/python_compressed.js.map +1 -1
  283. package/blocks/blocks.js +0 -48
  284. package/blocks/colour.js +0 -121
  285. package/blocks/lists.js +0 -996
  286. package/blocks/logic.js +0 -665
  287. package/blocks/loops.js +0 -375
  288. package/blocks/math.js +0 -594
  289. package/blocks/procedures.js +0 -1196
  290. package/blocks/text.js +0 -1000
  291. package/blocks/variables.js +0 -176
  292. package/blocks/variables_dynamic.js +0 -192
  293. package/core/any_aliases.ts +0 -1
  294. package/core/block.ts +0 -2102
  295. package/core/block_animations.ts +0 -202
  296. package/core/block_drag_surface.ts +0 -237
  297. package/core/block_dragger.ts +0 -447
  298. package/core/block_svg.ts +0 -1758
  299. package/core/blockly.js +0 -890
  300. package/core/blockly.ts +0 -749
  301. package/core/blockly_options.ts +0 -81
  302. package/core/blocks.ts +0 -29
  303. package/core/browser_events.ts +0 -289
  304. package/core/bubble.ts +0 -892
  305. package/core/bubble_dragger.ts +0 -229
  306. package/core/bump_objects.ts +0 -182
  307. package/core/clipboard.ts +0 -91
  308. package/core/comment.ts +0 -398
  309. package/core/common.ts +0 -288
  310. package/core/component_manager.ts +0 -211
  311. package/core/config.ts +0 -80
  312. package/core/connection.ts +0 -692
  313. package/core/connection_checker.ts +0 -301
  314. package/core/connection_db.ts +0 -289
  315. package/core/connection_type.ts +0 -32
  316. package/core/constants.ts +0 -29
  317. package/core/contextmenu.ts +0 -363
  318. package/core/contextmenu_items.ts +0 -576
  319. package/core/contextmenu_registry.ts +0 -179
  320. package/core/css.ts +0 -560
  321. package/core/delete_area.ts +0 -82
  322. package/core/dialog.ts +0 -127
  323. package/core/drag_target.ts +0 -94
  324. package/core/dropdowndiv.ts +0 -683
  325. package/core/events/events.ts +0 -123
  326. package/core/events/events_abstract.ts +0 -112
  327. package/core/events/events_block_base.ts +0 -65
  328. package/core/events/events_block_change.ts +0 -176
  329. package/core/events/events_block_create.ts +0 -114
  330. package/core/events/events_block_delete.ts +0 -126
  331. package/core/events/events_block_drag.ts +0 -82
  332. package/core/events/events_block_move.ts +0 -206
  333. package/core/events/events_bubble_open.ts +0 -82
  334. package/core/events/events_click.ts +0 -84
  335. package/core/events/events_comment_base.ts +0 -107
  336. package/core/events/events_comment_change.ts +0 -108
  337. package/core/events/events_comment_create.ts +0 -82
  338. package/core/events/events_comment_delete.ts +0 -77
  339. package/core/events/events_comment_move.ts +0 -154
  340. package/core/events/events_marker_move.ts +0 -99
  341. package/core/events/events_selected.ts +0 -78
  342. package/core/events/events_theme_change.ts +0 -67
  343. package/core/events/events_toolbox_item_select.ts +0 -79
  344. package/core/events/events_trashcan_open.ts +0 -68
  345. package/core/events/events_ui.ts +0 -89
  346. package/core/events/events_ui_base.ts +0 -54
  347. package/core/events/events_var_base.ts +0 -65
  348. package/core/events/events_var_create.ts +0 -88
  349. package/core/events/events_var_delete.ts +0 -88
  350. package/core/events/events_var_rename.ts +0 -89
  351. package/core/events/events_viewport.ts +0 -100
  352. package/core/events/utils.ts +0 -529
  353. package/core/events/workspace_events.ts +0 -86
  354. package/core/extensions.ts +0 -504
  355. package/core/field.ts +0 -1206
  356. package/core/field_angle.ts +0 -563
  357. package/core/field_checkbox.ts +0 -243
  358. package/core/field_colour.ts +0 -632
  359. package/core/field_dropdown.ts +0 -773
  360. package/core/field_image.ts +0 -282
  361. package/core/field_label.ts +0 -152
  362. package/core/field_label_serializable.ts +0 -76
  363. package/core/field_multilineinput.ts +0 -466
  364. package/core/field_number.ts +0 -327
  365. package/core/field_registry.ts +0 -87
  366. package/core/field_textinput.ts +0 -591
  367. package/core/field_variable.ts +0 -545
  368. package/core/flyout_base.ts +0 -1165
  369. package/core/flyout_button.ts +0 -292
  370. package/core/flyout_horizontal.ts +0 -381
  371. package/core/flyout_metrics_manager.ts +0 -94
  372. package/core/flyout_vertical.ts +0 -384
  373. package/core/generator.ts +0 -539
  374. package/core/gesture.ts +0 -946
  375. package/core/grid.ts +0 -192
  376. package/core/icon.ts +0 -189
  377. package/core/inject.ts +0 -390
  378. package/core/input.ts +0 -309
  379. package/core/input_types.ts +0 -32
  380. package/core/insertion_marker_manager.ts +0 -788
  381. package/core/interfaces/i_ast_node_location.ts +0 -23
  382. package/core/interfaces/i_ast_node_location_svg.ts +0 -37
  383. package/core/interfaces/i_ast_node_location_with_block.ts +0 -38
  384. package/core/interfaces/i_autohideable.ts +0 -34
  385. package/core/interfaces/i_block_dragger.ts +0 -67
  386. package/core/interfaces/i_bounded_element.ts +0 -42
  387. package/core/interfaces/i_bubble.ts +0 -88
  388. package/core/interfaces/i_collapsible_toolbox_item.ts +0 -47
  389. package/core/interfaces/i_component.ts +0 -32
  390. package/core/interfaces/i_connection_checker.ts +0 -102
  391. package/core/interfaces/i_contextmenu.ts +0 -26
  392. package/core/interfaces/i_copyable.ts +0 -40
  393. package/core/interfaces/i_deletable.ts +0 -29
  394. package/core/interfaces/i_delete_area.ts +0 -46
  395. package/core/interfaces/i_drag_target.ts +0 -84
  396. package/core/interfaces/i_draggable.ts +0 -25
  397. package/core/interfaces/i_flyout.ts +0 -186
  398. package/core/interfaces/i_keyboard_accessible.ts +0 -35
  399. package/core/interfaces/i_metrics_manager.ts +0 -151
  400. package/core/interfaces/i_movable.ts +0 -29
  401. package/core/interfaces/i_positionable.ts +0 -50
  402. package/core/interfaces/i_registrable.ts +0 -25
  403. package/core/interfaces/i_registrable_field.ts +0 -31
  404. package/core/interfaces/i_selectable.ts +0 -34
  405. package/core/interfaces/i_selectable_toolbox_item.ts +0 -64
  406. package/core/interfaces/i_serializer.ts +0 -65
  407. package/core/interfaces/i_styleable.ts +0 -35
  408. package/core/interfaces/i_toolbox.ts +0 -127
  409. package/core/interfaces/i_toolbox_item.ts +0 -84
  410. package/core/internal_constants.ts +0 -67
  411. package/core/keyboard_nav/ast_node.ts +0 -717
  412. package/core/keyboard_nav/basic_cursor.ts +0 -214
  413. package/core/keyboard_nav/cursor.ts +0 -134
  414. package/core/keyboard_nav/marker.ts +0 -115
  415. package/core/keyboard_nav/tab_navigate_cursor.ts +0 -48
  416. package/core/main.js +0 -303
  417. package/core/marker_manager.ts +0 -181
  418. package/core/menu.ts +0 -449
  419. package/core/menuitem.ts +0 -240
  420. package/core/metrics_manager.ts +0 -456
  421. package/core/msg.ts +0 -20
  422. package/core/mutator.ts +0 -560
  423. package/core/names.ts +0 -267
  424. package/core/options.ts +0 -365
  425. package/core/positionable_helpers.ts +0 -181
  426. package/core/procedures.ts +0 -443
  427. package/core/registry.ts +0 -339
  428. package/core/rendered_connection.ts +0 -568
  429. package/core/renderers/common/block_rendering.ts +0 -164
  430. package/core/renderers/common/constants.ts +0 -1124
  431. package/core/renderers/common/debug.ts +0 -61
  432. package/core/renderers/common/debugger.ts +0 -433
  433. package/core/renderers/common/drawer.ts +0 -450
  434. package/core/renderers/common/i_path_object.ts +0 -161
  435. package/core/renderers/common/info.ts +0 -718
  436. package/core/renderers/common/marker_svg.ts +0 -680
  437. package/core/renderers/common/path_object.ts +0 -272
  438. package/core/renderers/common/renderer.ts +0 -271
  439. package/core/renderers/geras/constants.ts +0 -61
  440. package/core/renderers/geras/drawer.ts +0 -176
  441. package/core/renderers/geras/geras.ts +0 -37
  442. package/core/renderers/geras/highlight_constants.ts +0 -337
  443. package/core/renderers/geras/highlighter.ts +0 -306
  444. package/core/renderers/geras/info.ts +0 -450
  445. package/core/renderers/geras/measurables/inline_input.ts +0 -51
  446. package/core/renderers/geras/measurables/statement_input.ts +0 -50
  447. package/core/renderers/geras/path_object.ts +0 -138
  448. package/core/renderers/geras/renderer.ts +0 -126
  449. package/core/renderers/measurables/base.ts +0 -53
  450. package/core/renderers/measurables/bottom_row.ts +0 -120
  451. package/core/renderers/measurables/connection.ts +0 -52
  452. package/core/renderers/measurables/external_value_input.ts +0 -65
  453. package/core/renderers/measurables/field.ts +0 -63
  454. package/core/renderers/measurables/hat.ts +0 -48
  455. package/core/renderers/measurables/icon.ts +0 -54
  456. package/core/renderers/measurables/in_row_spacer.ts +0 -44
  457. package/core/renderers/measurables/inline_input.ts +0 -76
  458. package/core/renderers/measurables/input_connection.ts +0 -66
  459. package/core/renderers/measurables/input_row.ts +0 -82
  460. package/core/renderers/measurables/jagged_edge.ts +0 -43
  461. package/core/renderers/measurables/next_connection.ts +0 -47
  462. package/core/renderers/measurables/output_connection.ts +0 -56
  463. package/core/renderers/measurables/previous_connection.ts +0 -47
  464. package/core/renderers/measurables/round_corner.ts +0 -49
  465. package/core/renderers/measurables/row.ts +0 -225
  466. package/core/renderers/measurables/spacer_row.ts +0 -55
  467. package/core/renderers/measurables/square_corner.ts +0 -47
  468. package/core/renderers/measurables/statement_input.ts +0 -55
  469. package/core/renderers/measurables/top_row.ts +0 -122
  470. package/core/renderers/measurables/types.ts +0 -332
  471. package/core/renderers/minimalist/constants.ts +0 -32
  472. package/core/renderers/minimalist/drawer.ts +0 -38
  473. package/core/renderers/minimalist/info.ts +0 -52
  474. package/core/renderers/minimalist/minimalist.ts +0 -22
  475. package/core/renderers/minimalist/renderer.ts +0 -71
  476. package/core/renderers/thrasos/info.ts +0 -338
  477. package/core/renderers/thrasos/renderer.ts +0 -48
  478. package/core/renderers/thrasos/thrasos.ts +0 -20
  479. package/core/renderers/zelos/constants.ts +0 -858
  480. package/core/renderers/zelos/drawer.ts +0 -228
  481. package/core/renderers/zelos/info.ts +0 -593
  482. package/core/renderers/zelos/marker_svg.ts +0 -151
  483. package/core/renderers/zelos/measurables/bottom_row.ts +0 -53
  484. package/core/renderers/zelos/measurables/inputs.ts +0 -56
  485. package/core/renderers/zelos/measurables/row_elements.ts +0 -45
  486. package/core/renderers/zelos/measurables/top_row.ts +0 -58
  487. package/core/renderers/zelos/path_object.ts +0 -215
  488. package/core/renderers/zelos/renderer.ts +0 -142
  489. package/core/renderers/zelos/zelos.ts +0 -39
  490. package/core/scrollbar.ts +0 -870
  491. package/core/scrollbar_pair.ts +0 -321
  492. package/core/serialization/blocks.ts +0 -706
  493. package/core/serialization/exceptions.ts +0 -98
  494. package/core/serialization/priorities.ts +0 -32
  495. package/core/serialization/registry.ts +0 -43
  496. package/core/serialization/variables.ts +0 -96
  497. package/core/serialization/workspaces.ts +0 -106
  498. package/core/shortcut_items.ts +0 -266
  499. package/core/shortcut_registry.ts +0 -355
  500. package/core/sprites.ts +0 -29
  501. package/core/theme/classic.ts +0 -54
  502. package/core/theme/themes.ts +0 -22
  503. package/core/theme/zelos.ts +0 -91
  504. package/core/theme.ts +0 -221
  505. package/core/theme_manager.ts +0 -186
  506. package/core/toolbox/category.ts +0 -679
  507. package/core/toolbox/collapsible_category.ts +0 -273
  508. package/core/toolbox/separator.ts +0 -105
  509. package/core/toolbox/toolbox.ts +0 -1044
  510. package/core/toolbox/toolbox_item.ts +0 -147
  511. package/core/tooltip.ts +0 -463
  512. package/core/touch.ts +0 -306
  513. package/core/touch_gesture.ts +0 -295
  514. package/core/trashcan.ts +0 -671
  515. package/core/utils/aria.ts +0 -160
  516. package/core/utils/array.ts +0 -32
  517. package/core/utils/colour.ts +0 -276
  518. package/core/utils/coordinate.ts +0 -124
  519. package/core/utils/deprecation.ts +0 -41
  520. package/core/utils/dom.ts +0 -408
  521. package/core/utils/idgenerator.ts +0 -80
  522. package/core/utils/keycodes.ts +0 -169
  523. package/core/utils/math.ts +0 -61
  524. package/core/utils/metrics.ts +0 -97
  525. package/core/utils/object.ts +0 -95
  526. package/core/utils/parsing.ts +0 -261
  527. package/core/utils/rect.ts +0 -62
  528. package/core/utils/sentinel.ts +0 -23
  529. package/core/utils/size.ts +0 -51
  530. package/core/utils/string.ts +0 -308
  531. package/core/utils/style.ts +0 -306
  532. package/core/utils/svg.ts +0 -88
  533. package/core/utils/svg_math.ts +0 -269
  534. package/core/utils/svg_paths.ts +0 -140
  535. package/core/utils/toolbox.ts +0 -433
  536. package/core/utils/useragent.ts +0 -135
  537. package/core/utils/xml.ts +0 -97
  538. package/core/utils.ts +0 -428
  539. package/core/variable_map.ts +0 -392
  540. package/core/variable_model.ts +0 -82
  541. package/core/variables.ts +0 -596
  542. package/core/variables_dynamic.ts +0 -133
  543. package/core/warning.ts +0 -161
  544. package/core/widgetdiv.ts +0 -257
  545. package/core/workspace.ts +0 -801
  546. package/core/workspace_audio.ts +0 -156
  547. package/core/workspace_comment.ts +0 -398
  548. package/core/workspace_comment_svg.ts +0 -1127
  549. package/core/workspace_drag_surface_svg.ts +0 -187
  550. package/core/workspace_dragger.ts +0 -104
  551. package/core/workspace_svg.ts +0 -2655
  552. package/core/xml.ts +0 -1023
  553. package/core/zoom_controls.ts +0 -441
  554. package/generators/dart/all.js +0 -27
  555. package/generators/dart/colour.js +0 -105
  556. package/generators/dart/lists.js +0 -431
  557. package/generators/dart/logic.js +0 -123
  558. package/generators/dart/loops.js +0 -161
  559. package/generators/dart/math.js +0 -446
  560. package/generators/dart/procedures.js +0 -105
  561. package/generators/dart/text.js +0 -338
  562. package/generators/dart/variables.js +0 -32
  563. package/generators/dart/variables_dynamic.js +0 -21
  564. package/generators/dart.js +0 -303
  565. package/generators/javascript/all.js +0 -27
  566. package/generators/javascript/colour.js +0 -85
  567. package/generators/javascript/lists.js +0 -405
  568. package/generators/javascript/logic.js +0 -127
  569. package/generators/javascript/loops.js +0 -180
  570. package/generators/javascript/math.js +0 -401
  571. package/generators/javascript/procedures.js +0 -110
  572. package/generators/javascript/text.js +0 -371
  573. package/generators/javascript/variables.js +0 -32
  574. package/generators/javascript/variables_dynamic.js +0 -21
  575. package/generators/javascript.js +0 -322
  576. package/generators/lua/all.js +0 -27
  577. package/generators/lua/colour.js +0 -71
  578. package/generators/lua/lists.js +0 -348
  579. package/generators/lua/logic.js +0 -112
  580. package/generators/lua/loops.js +0 -168
  581. package/generators/lua/math.js +0 -406
  582. package/generators/lua/procedures.js +0 -106
  583. package/generators/lua/text.js +0 -327
  584. package/generators/lua/variables.js +0 -31
  585. package/generators/lua/variables_dynamic.js +0 -21
  586. package/generators/lua.js +0 -206
  587. package/generators/php/all.js +0 -27
  588. package/generators/php/colour.js +0 -81
  589. package/generators/php/lists.js +0 -481
  590. package/generators/php/logic.js +0 -119
  591. package/generators/php/loops.js +0 -161
  592. package/generators/php/math.js +0 -349
  593. package/generators/php/procedures.js +0 -125
  594. package/generators/php/text.js +0 -255
  595. package/generators/php/variables.js +0 -32
  596. package/generators/php/variables_dynamic.js +0 -21
  597. package/generators/php.js +0 -303
  598. package/generators/python/all.js +0 -27
  599. package/generators/python/colour.js +0 -67
  600. package/generators/python/lists.js +0 -346
  601. package/generators/python/logic.js +0 -120
  602. package/generators/python/loops.js +0 -206
  603. package/generators/python/math.js +0 -373
  604. package/generators/python/procedures.js +0 -129
  605. package/generators/python/text.js +0 -291
  606. package/generators/python/variables.js +0 -32
  607. package/generators/python/variables_dynamic.js +0 -21
  608. package/generators/python.js +0 -333
package/core/gesture.ts DELETED
@@ -1,946 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2017 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
-
7
- /**
8
- * @fileoverview The class representing an in-progress gesture, usually a drag
9
- * or a tap.
10
- */
11
-
12
- /**
13
- * The class representing an in-progress gesture, usually a drag
14
- * or a tap.
15
- * @class
16
- */
17
- import * as goog from '../closure/goog/goog.js';
18
- goog.declareModuleId('Blockly.Gesture');
19
-
20
- // Unused import preserved for side-effects. Remove if unneeded.
21
- // import './block_dragger.js';
22
- // Unused import preserved for side-effects. Remove if unneeded.
23
- import './events/events_click.js';
24
-
25
- import * as blockAnimations from './block_animations.js';
26
- import type {BlockSvg} from './block_svg.js';
27
- import * as browserEvents from './browser_events.js';
28
- import {BubbleDragger} from './bubble_dragger.js';
29
- import * as common from './common.js';
30
- import {config} from './config.js';
31
- import * as eventUtils from './events/utils.js';
32
- import type {Field} from './field.js';
33
- import type {IBlockDragger} from './interfaces/i_block_dragger.js';
34
- import type {IBubble} from './interfaces/i_bubble.js';
35
- import type {IFlyout} from './interfaces/i_flyout.js';
36
- import * as internalConstants from './internal_constants.js';
37
- import * as registry from './registry.js';
38
- import * as Tooltip from './tooltip.js';
39
- import * as Touch from './touch.js';
40
- import {Coordinate} from './utils/coordinate.js';
41
- import {WorkspaceCommentSvg} from './workspace_comment_svg.js';
42
- import {WorkspaceDragger} from './workspace_dragger.js';
43
- import type {WorkspaceSvg} from './workspace_svg.js';
44
-
45
-
46
- /**
47
- * Note: In this file "start" refers to touchstart, mousedown, and pointerstart
48
- * events. "End" refers to touchend, mouseup, and pointerend events.
49
- */
50
- // TODO: Consider touchcancel/pointercancel.
51
- /**
52
- * Class for one gesture.
53
- * @alias Blockly.Gesture
54
- */
55
- export class Gesture {
56
- /**
57
- * The position of the mouse when the gesture started. Units are CSS
58
- * pixels, with (0, 0) at the top left of the browser window (mouseEvent
59
- * clientX/Y).
60
- */
61
- // AnyDuringMigration because: Type 'null' is not assignable to type
62
- // 'Coordinate'.
63
- private mouseDownXY_: Coordinate = null as AnyDuringMigration;
64
- private currentDragDeltaXY_: Coordinate;
65
-
66
- /**
67
- * The bubble that the gesture started on, or null if it did not start on a
68
- * bubble.
69
- */
70
- // AnyDuringMigration because: Type 'null' is not assignable to type
71
- // 'IBubble'.
72
- private startBubble_: IBubble = null as AnyDuringMigration;
73
-
74
- /**
75
- * The field that the gesture started on, or null if it did not start on a
76
- * field.
77
- */
78
- // AnyDuringMigration because: Type 'null' is not assignable to type 'Field'.
79
- private startField_: Field = null as AnyDuringMigration;
80
-
81
- /**
82
- * The block that the gesture started on, or null if it did not start on a
83
- * block.
84
- */
85
- // AnyDuringMigration because: Type 'null' is not assignable to type
86
- // 'BlockSvg'.
87
- private startBlock_: BlockSvg = null as AnyDuringMigration;
88
-
89
- /**
90
- * The block that this gesture targets. If the gesture started on a
91
- * shadow block, this is the first non-shadow parent of the block. If the
92
- * gesture started in the flyout, this is the root block of the block group
93
- * that was clicked or dragged.
94
- */
95
- // AnyDuringMigration because: Type 'null' is not assignable to type
96
- // 'BlockSvg'.
97
- private targetBlock_: BlockSvg = null as AnyDuringMigration;
98
-
99
- /**
100
- * The workspace that the gesture started on. There may be multiple
101
- * workspaces on a page; this is more accurate than using
102
- * Blockly.common.getMainWorkspace().
103
- */
104
- // AnyDuringMigration because: Type 'null' is not assignable to type
105
- // 'WorkspaceSvg'.
106
- protected startWorkspace_: WorkspaceSvg = null as AnyDuringMigration;
107
-
108
- /**
109
- * Whether the pointer has at any point moved out of the drag radius.
110
- * A gesture that exceeds the drag radius is a drag even if it ends exactly
111
- * at its start point.
112
- */
113
- private hasExceededDragRadius_ = false;
114
-
115
- /** Whether the workspace is currently being dragged. */
116
- private isDraggingWorkspace_ = false;
117
-
118
- /** Whether the block is currently being dragged. */
119
- private isDraggingBlock_ = false;
120
-
121
- /** Whether the bubble is currently being dragged. */
122
- private isDraggingBubble_ = false;
123
-
124
- /**
125
- * A handle to use to unbind a mouse move listener at the end of a drag.
126
- * Opaque data returned from Blockly.bindEventWithChecks_.
127
- */
128
- protected onMoveWrapper_: browserEvents.Data|null = null;
129
-
130
- /**
131
- * A handle to use to unbind a mouse up listener at the end of a drag.
132
- * Opaque data returned from Blockly.bindEventWithChecks_.
133
- */
134
- protected onUpWrapper_: browserEvents.Data|null = null;
135
-
136
- /** The object tracking a bubble drag, or null if none is in progress. */
137
- // AnyDuringMigration because: Type 'null' is not assignable to type
138
- // 'BubbleDragger'.
139
- private bubbleDragger_: BubbleDragger = null as AnyDuringMigration;
140
-
141
- /** The object tracking a block drag, or null if none is in progress. */
142
- private blockDragger_: IBlockDragger|null = null;
143
-
144
- /**
145
- * The object tracking a workspace or flyout workspace drag, or null if none
146
- * is in progress.
147
- */
148
- // AnyDuringMigration because: Type 'null' is not assignable to type
149
- // 'WorkspaceDragger'.
150
- private workspaceDragger_: WorkspaceDragger = null as AnyDuringMigration;
151
-
152
- /** The flyout a gesture started in, if any. */
153
- // AnyDuringMigration because: Type 'null' is not assignable to type
154
- // 'IFlyout'.
155
- private flyout_: IFlyout = null as AnyDuringMigration;
156
-
157
- /** Boolean for sanity-checking that some code is only called once. */
158
- private calledUpdateIsDragging_ = false;
159
-
160
- /** Boolean for sanity-checking that some code is only called once. */
161
- private hasStarted_ = false;
162
-
163
- /** Boolean used internally to break a cycle in disposal. */
164
- protected isEnding_ = false;
165
- private healStack_: boolean;
166
-
167
- /** The event that most recently updated this gesture. */
168
- private mostRecentEvent_: Event;
169
-
170
- /**
171
- * @param e The event that kicked off this gesture.
172
- * @param creatorWorkspace The workspace that created this gesture and has a
173
- * reference to it.
174
- */
175
- constructor(e: Event, private readonly creatorWorkspace: WorkspaceSvg) {
176
- this.mostRecentEvent_ = e;
177
-
178
- /**
179
- * How far the mouse has moved during this drag, in pixel units.
180
- * (0, 0) is at this.mouseDownXY_.
181
- */
182
- this.currentDragDeltaXY_ = new Coordinate(0, 0);
183
-
184
- /**
185
- * Boolean used to indicate whether or not to heal the stack after
186
- * disconnecting a block.
187
- */
188
- this.healStack_ = !internalConstants.DRAG_STACK;
189
- }
190
-
191
- /**
192
- * Sever all links from this object.
193
- * @internal
194
- */
195
- dispose() {
196
- Touch.clearTouchIdentifier();
197
- Tooltip.unblock();
198
- // Clear the owner's reference to this gesture.
199
- this.creatorWorkspace.clearGesture();
200
-
201
- if (this.onMoveWrapper_) {
202
- browserEvents.unbind(this.onMoveWrapper_);
203
- }
204
- if (this.onUpWrapper_) {
205
- browserEvents.unbind(this.onUpWrapper_);
206
- }
207
-
208
- if (this.blockDragger_) {
209
- this.blockDragger_.dispose();
210
- }
211
- if (this.workspaceDragger_) {
212
- this.workspaceDragger_.dispose();
213
- }
214
- }
215
-
216
- /**
217
- * Update internal state based on an event.
218
- * @param e The most recent mouse or touch event.
219
- */
220
- private updateFromEvent_(e: Event) {
221
- // AnyDuringMigration because: Property 'clientY' does not exist on type
222
- // 'Event'. AnyDuringMigration because: Property 'clientX' does not exist
223
- // on type 'Event'.
224
- const currentXY = new Coordinate(
225
- (e as AnyDuringMigration).clientX, (e as AnyDuringMigration).clientY);
226
- const changed = this.updateDragDelta_(currentXY);
227
- // Exceeded the drag radius for the first time.
228
- if (changed) {
229
- this.updateIsDragging_();
230
- Touch.longStop();
231
- }
232
- this.mostRecentEvent_ = e;
233
- }
234
-
235
- /**
236
- * DO MATH to set currentDragDeltaXY_ based on the most recent mouse position.
237
- * @param currentXY The most recent mouse/pointer position, in pixel units,
238
- * with (0, 0) at the window's top left corner.
239
- * @return True if the drag just exceeded the drag radius for the first time.
240
- */
241
- private updateDragDelta_(currentXY: Coordinate): boolean {
242
- this.currentDragDeltaXY_ =
243
- Coordinate.difference(currentXY, (this.mouseDownXY_));
244
-
245
- if (!this.hasExceededDragRadius_) {
246
- const currentDragDelta = Coordinate.magnitude(this.currentDragDeltaXY_);
247
-
248
- // The flyout has a different drag radius from the rest of Blockly.
249
- const limitRadius =
250
- this.flyout_ ? config.flyoutDragRadius : config.dragRadius;
251
-
252
- this.hasExceededDragRadius_ = currentDragDelta > limitRadius;
253
- return this.hasExceededDragRadius_;
254
- }
255
- return false;
256
- }
257
-
258
- /**
259
- * Update this gesture to record whether a block is being dragged from the
260
- * flyout.
261
- * This function should be called on a mouse/touch move event the first time
262
- * the drag radius is exceeded. It should be called no more than once per
263
- * gesture. If a block should be dragged from the flyout this function creates
264
- * the new block on the main workspace and updates targetBlock_ and
265
- * startWorkspace_.
266
- * @return True if a block is being dragged from the flyout.
267
- */
268
- private updateIsDraggingFromFlyout_(): boolean {
269
- if (!this.targetBlock_) {
270
- return false;
271
- }
272
- if (!this.flyout_.isBlockCreatable(this.targetBlock_)) {
273
- return false;
274
- }
275
- if (!this.flyout_.isScrollable() ||
276
- this.flyout_.isDragTowardWorkspace(this.currentDragDeltaXY_)) {
277
- // AnyDuringMigration because: Type 'WorkspaceSvg | null' is not
278
- // assignable to type 'WorkspaceSvg'.
279
- this.startWorkspace_ = this.flyout_.targetWorkspace as AnyDuringMigration;
280
- this.startWorkspace_.updateScreenCalculationsIfScrolled();
281
- // Start the event group now, so that the same event group is used for
282
- // block creation and block dragging.
283
- if (!eventUtils.getGroup()) {
284
- eventUtils.setGroup(true);
285
- }
286
- // The start block is no longer relevant, because this is a drag.
287
- // AnyDuringMigration because: Type 'null' is not assignable to type
288
- // 'BlockSvg'.
289
- this.startBlock_ = null as AnyDuringMigration;
290
- this.targetBlock_ = this.flyout_.createBlock(this.targetBlock_);
291
- this.targetBlock_.select();
292
- return true;
293
- }
294
- return false;
295
- }
296
-
297
- /**
298
- * Update this gesture to record whether a bubble is being dragged.
299
- * This function should be called on a mouse/touch move event the first time
300
- * the drag radius is exceeded. It should be called no more than once per
301
- * gesture. If a bubble should be dragged this function creates the necessary
302
- * BubbleDragger and starts the drag.
303
- * @return True if a bubble is being dragged.
304
- */
305
- private updateIsDraggingBubble_(): boolean {
306
- if (!this.startBubble_) {
307
- return false;
308
- }
309
-
310
- this.isDraggingBubble_ = true;
311
- this.startDraggingBubble_();
312
- return true;
313
- }
314
-
315
- /**
316
- * Update this gesture to record whether a block is being dragged.
317
- * This function should be called on a mouse/touch move event the first time
318
- * the drag radius is exceeded. It should be called no more than once per
319
- * gesture. If a block should be dragged, either from the flyout or in the
320
- * workspace, this function creates the necessary BlockDragger and starts the
321
- * drag.
322
- * @return True if a block is being dragged.
323
- */
324
- private updateIsDraggingBlock_(): boolean {
325
- if (!this.targetBlock_) {
326
- return false;
327
- }
328
-
329
- if (this.flyout_) {
330
- this.isDraggingBlock_ = this.updateIsDraggingFromFlyout_();
331
- } else if (this.targetBlock_.isMovable()) {
332
- this.isDraggingBlock_ = true;
333
- }
334
-
335
- if (this.isDraggingBlock_) {
336
- this.startDraggingBlock_();
337
- return true;
338
- }
339
- return false;
340
- }
341
-
342
- /**
343
- * Update this gesture to record whether a workspace is being dragged.
344
- * This function should be called on a mouse/touch move event the first time
345
- * the drag radius is exceeded. It should be called no more than once per
346
- * gesture. If a workspace is being dragged this function creates the
347
- * necessary WorkspaceDragger and starts the drag.
348
- */
349
- private updateIsDraggingWorkspace_() {
350
- const wsMovable = this.flyout_ ?
351
- this.flyout_.isScrollable() :
352
- this.startWorkspace_ && this.startWorkspace_.isDraggable();
353
-
354
- if (!wsMovable) {
355
- return;
356
- }
357
-
358
- this.workspaceDragger_ = new WorkspaceDragger((this.startWorkspace_));
359
-
360
- this.isDraggingWorkspace_ = true;
361
- this.workspaceDragger_.startDrag();
362
- }
363
-
364
- /**
365
- * Update this gesture to record whether anything is being dragged.
366
- * This function should be called on a mouse/touch move event the first time
367
- * the drag radius is exceeded. It should be called no more than once per
368
- * gesture.
369
- */
370
- private updateIsDragging_() {
371
- // Sanity check.
372
- if (this.calledUpdateIsDragging_) {
373
- throw Error('updateIsDragging_ should only be called once per gesture.');
374
- }
375
- this.calledUpdateIsDragging_ = true;
376
-
377
- // First check if it was a bubble drag. Bubbles always sit on top of
378
- // blocks.
379
- if (this.updateIsDraggingBubble_()) {
380
- return;
381
- }
382
- // Then check if it was a block drag.
383
- if (this.updateIsDraggingBlock_()) {
384
- return;
385
- }
386
- // Then check if it's a workspace drag.
387
- this.updateIsDraggingWorkspace_();
388
- }
389
-
390
- /** Create a block dragger and start dragging the selected block. */
391
- private startDraggingBlock_() {
392
- const BlockDraggerClass = registry.getClassFromOptions(
393
- registry.Type.BLOCK_DRAGGER, this.creatorWorkspace.options, true);
394
-
395
- this.blockDragger_ =
396
- new BlockDraggerClass!((this.targetBlock_), (this.startWorkspace_));
397
- this.blockDragger_!.startDrag(this.currentDragDeltaXY_, this.healStack_);
398
- this.blockDragger_!.drag(this.mostRecentEvent_, this.currentDragDeltaXY_);
399
- }
400
-
401
- // TODO (fenichel): Possibly combine this and startDraggingBlock_.
402
- /** Create a bubble dragger and start dragging the selected bubble. */
403
- private startDraggingBubble_() {
404
- this.bubbleDragger_ =
405
- new BubbleDragger((this.startBubble_), (this.startWorkspace_));
406
- this.bubbleDragger_.startBubbleDrag();
407
- this.bubbleDragger_.dragBubble(
408
- this.mostRecentEvent_, this.currentDragDeltaXY_);
409
- }
410
-
411
- /**
412
- * Start a gesture: update the workspace to indicate that a gesture is in
413
- * progress and bind mousemove and mouseup handlers.
414
- * @param e A mouse down or touch start event.
415
- * @internal
416
- */
417
- doStart(e: MouseEvent) {
418
- if (browserEvents.isTargetInput(e)) {
419
- this.cancel();
420
- return;
421
- }
422
- this.hasStarted_ = true;
423
-
424
- blockAnimations.disconnectUiStop();
425
- this.startWorkspace_.updateScreenCalculationsIfScrolled();
426
- if (this.startWorkspace_.isMutator) {
427
- // Mutator's coordinate system could be out of date because the bubble was
428
- // dragged, the block was moved, the parent workspace zoomed, etc.
429
- this.startWorkspace_.resize();
430
- }
431
- // Hide chaff also hides the flyout, so don't do it if the click is in a
432
- // flyout.
433
- this.startWorkspace_.hideChaff(!!this.flyout_);
434
-
435
- this.startWorkspace_.markFocused();
436
- this.mostRecentEvent_ = e;
437
-
438
- Tooltip.block();
439
-
440
- if (this.targetBlock_) {
441
- this.targetBlock_.select();
442
- }
443
-
444
- if (browserEvents.isRightButton(e)) {
445
- this.handleRightClick(e);
446
- return;
447
- }
448
-
449
- // TODO(#6097): Make types accurate, possibly by refactoring touch handling.
450
- const typelessEvent = e as AnyDuringMigration;
451
- if ((e.type.toLowerCase() === 'touchstart' ||
452
- e.type.toLowerCase() === 'pointerdown') &&
453
- typelessEvent.pointerType !== 'mouse') {
454
- Touch.longStart(typelessEvent, this);
455
- }
456
-
457
- // AnyDuringMigration because: Property 'clientY' does not exist on type
458
- // 'Event'. AnyDuringMigration because: Property 'clientX' does not exist
459
- // on type 'Event'.
460
- this.mouseDownXY_ = new Coordinate(
461
- (e as AnyDuringMigration).clientX, (e as AnyDuringMigration).clientY);
462
- // AnyDuringMigration because: Property 'metaKey' does not exist on type
463
- // 'Event'. AnyDuringMigration because: Property 'ctrlKey' does not exist
464
- // on type 'Event'. AnyDuringMigration because: Property 'altKey' does not
465
- // exist on type 'Event'.
466
- this.healStack_ = (e as AnyDuringMigration).altKey ||
467
- (e as AnyDuringMigration).ctrlKey || (e as AnyDuringMigration).metaKey;
468
-
469
- this.bindMouseEvents(e);
470
- }
471
-
472
- /**
473
- * Bind gesture events.
474
- * @param e A mouse down or touch start event.
475
- * @internal
476
- */
477
- bindMouseEvents(e: Event) {
478
- this.onMoveWrapper_ = browserEvents.conditionalBind(
479
- document, 'mousemove', null, this.handleMove.bind(this));
480
- this.onUpWrapper_ = browserEvents.conditionalBind(
481
- document, 'mouseup', null, this.handleUp.bind(this));
482
-
483
- e.preventDefault();
484
- e.stopPropagation();
485
- }
486
-
487
- /**
488
- * Handle a mouse move or touch move event.
489
- * @param e A mouse move or touch move event.
490
- * @internal
491
- */
492
- handleMove(e: Event) {
493
- this.updateFromEvent_(e);
494
- if (this.isDraggingWorkspace_) {
495
- this.workspaceDragger_.drag(this.currentDragDeltaXY_);
496
- } else if (this.isDraggingBlock_) {
497
- this.blockDragger_!.drag(this.mostRecentEvent_, this.currentDragDeltaXY_);
498
- } else if (this.isDraggingBubble_) {
499
- this.bubbleDragger_.dragBubble(
500
- this.mostRecentEvent_, this.currentDragDeltaXY_);
501
- }
502
- e.preventDefault();
503
- e.stopPropagation();
504
- }
505
-
506
- /**
507
- * Handle a mouse up or touch end event.
508
- * @param e A mouse up or touch end event.
509
- * @internal
510
- */
511
- handleUp(e: Event) {
512
- this.updateFromEvent_(e);
513
- Touch.longStop();
514
-
515
- if (this.isEnding_) {
516
- console.log('Trying to end a gesture recursively.');
517
- return;
518
- }
519
- this.isEnding_ = true;
520
- // The ordering of these checks is important: drags have higher priority
521
- // than clicks. Fields have higher priority than blocks; blocks have higher
522
- // priority than workspaces.
523
- // The ordering within drags does not matter, because the three types of
524
- // dragging are exclusive.
525
- if (this.isDraggingBubble_) {
526
- this.bubbleDragger_.endBubbleDrag(e, this.currentDragDeltaXY_);
527
- } else if (this.isDraggingBlock_) {
528
- this.blockDragger_!.endDrag(e, this.currentDragDeltaXY_);
529
- } else if (this.isDraggingWorkspace_) {
530
- this.workspaceDragger_.endDrag(this.currentDragDeltaXY_);
531
- } else if (this.isBubbleClick_()) {
532
- // Bubbles are in front of all fields and blocks.
533
- this.doBubbleClick_();
534
- } else if (this.isFieldClick_()) {
535
- this.doFieldClick_();
536
- } else if (this.isBlockClick_()) {
537
- this.doBlockClick_();
538
- } else if (this.isWorkspaceClick_()) {
539
- this.doWorkspaceClick_(e);
540
- }
541
-
542
- e.preventDefault();
543
- e.stopPropagation();
544
-
545
- this.dispose();
546
- }
547
-
548
- /**
549
- * Cancel an in-progress gesture. If a workspace or block drag is in
550
- * progress, end the drag at the most recent location.
551
- * @internal
552
- */
553
- cancel() {
554
- // Disposing of a block cancels in-progress drags, but dragging to a delete
555
- // area disposes of a block and leads to recursive disposal. Break that
556
- // cycle.
557
- if (this.isEnding_) {
558
- return;
559
- }
560
- Touch.longStop();
561
- if (this.isDraggingBubble_) {
562
- this.bubbleDragger_.endBubbleDrag(
563
- this.mostRecentEvent_, this.currentDragDeltaXY_);
564
- } else if (this.isDraggingBlock_) {
565
- this.blockDragger_!.endDrag(
566
- this.mostRecentEvent_, this.currentDragDeltaXY_);
567
- } else if (this.isDraggingWorkspace_) {
568
- this.workspaceDragger_.endDrag(this.currentDragDeltaXY_);
569
- }
570
- this.dispose();
571
- }
572
-
573
- /**
574
- * Handle a real or faked right-click event by showing a context menu.
575
- * @param e A mouse move or touch move event.
576
- * @internal
577
- */
578
- handleRightClick(e: Event) {
579
- if (this.targetBlock_) {
580
- this.bringBlockToFront_();
581
- this.targetBlock_.workspace.hideChaff(!!this.flyout_);
582
- this.targetBlock_.showContextMenu(e);
583
- } else if (this.startBubble_) {
584
- this.startBubble_.showContextMenu(e);
585
- } else if (this.startWorkspace_ && !this.flyout_) {
586
- this.startWorkspace_.hideChaff();
587
- this.startWorkspace_.showContextMenu(e);
588
- }
589
-
590
- // TODO: Handle right-click on a bubble.
591
- e.preventDefault();
592
- e.stopPropagation();
593
-
594
- this.dispose();
595
- }
596
-
597
- /**
598
- * Handle a mousedown/touchstart event on a workspace.
599
- * @param e A mouse down or touch start event.
600
- * @param ws The workspace the event hit.
601
- * @internal
602
- */
603
- handleWsStart(e: MouseEvent, ws: WorkspaceSvg) {
604
- if (this.hasStarted_) {
605
- throw Error(
606
- 'Tried to call gesture.handleWsStart, ' +
607
- 'but the gesture had already been started.');
608
- }
609
- this.setStartWorkspace_(ws);
610
- this.mostRecentEvent_ = e;
611
- this.doStart(e);
612
- }
613
-
614
- /**
615
- * Fires a workspace click event.
616
- * @param ws The workspace that a user clicks on.
617
- */
618
- private fireWorkspaceClick_(ws: WorkspaceSvg) {
619
- eventUtils.fire(new (eventUtils.get(eventUtils.CLICK))!
620
- (null, ws.id, 'workspace'));
621
- }
622
-
623
- /**
624
- * Handle a mousedown/touchstart event on a flyout.
625
- * @param e A mouse down or touch start event.
626
- * @param flyout The flyout the event hit.
627
- * @internal
628
- */
629
- handleFlyoutStart(e: MouseEvent, flyout: IFlyout) {
630
- if (this.hasStarted_) {
631
- throw Error(
632
- 'Tried to call gesture.handleFlyoutStart, ' +
633
- 'but the gesture had already been started.');
634
- }
635
- this.setStartFlyout_(flyout);
636
- this.handleWsStart(e, flyout.getWorkspace());
637
- }
638
-
639
- /**
640
- * Handle a mousedown/touchstart event on a block.
641
- * @param e A mouse down or touch start event.
642
- * @param block The block the event hit.
643
- * @internal
644
- */
645
- handleBlockStart(e: Event, block: BlockSvg) {
646
- if (this.hasStarted_) {
647
- throw Error(
648
- 'Tried to call gesture.handleBlockStart, ' +
649
- 'but the gesture had already been started.');
650
- }
651
- this.setStartBlock(block);
652
- this.mostRecentEvent_ = e;
653
- }
654
-
655
- /**
656
- * Handle a mousedown/touchstart event on a bubble.
657
- * @param e A mouse down or touch start event.
658
- * @param bubble The bubble the event hit.
659
- * @internal
660
- */
661
- handleBubbleStart(e: Event, bubble: IBubble) {
662
- if (this.hasStarted_) {
663
- throw Error(
664
- 'Tried to call gesture.handleBubbleStart, ' +
665
- 'but the gesture had already been started.');
666
- }
667
- this.setStartBubble(bubble);
668
- this.mostRecentEvent_ = e;
669
- }
670
-
671
- /* Begin functions defining what actions to take to execute clicks on each
672
- * type of target. Any developer wanting to add behaviour on clicks should
673
- * modify only this code. */
674
-
675
- /** Execute a bubble click. */
676
- private doBubbleClick_() {
677
- // TODO (#1673): Consistent handling of single clicks.
678
- if (this.startBubble_ instanceof WorkspaceCommentSvg) {
679
- this.startBubble_.setFocus();
680
- this.startBubble_.select();
681
- }
682
- }
683
-
684
- /** Execute a field click. */
685
- private doFieldClick_() {
686
- this.startField_.showEditor(this.mostRecentEvent_);
687
- this.bringBlockToFront_();
688
- }
689
-
690
- /** Execute a block click. */
691
- private doBlockClick_() {
692
- // Block click in an autoclosing flyout.
693
- if (this.flyout_ && this.flyout_.autoClose) {
694
- if (this.targetBlock_.isEnabled()) {
695
- if (!eventUtils.getGroup()) {
696
- eventUtils.setGroup(true);
697
- }
698
- const newBlock = this.flyout_.createBlock(this.targetBlock_);
699
- newBlock.scheduleSnapAndBump();
700
- }
701
- } else {
702
- // Clicks events are on the start block, even if it was a shadow.
703
- const event = new (eventUtils.get(eventUtils.CLICK))!
704
- (this.startBlock_, this.startWorkspace_.id, 'block');
705
- eventUtils.fire(event);
706
- }
707
- this.bringBlockToFront_();
708
- eventUtils.setGroup(false);
709
- }
710
-
711
- /**
712
- * Execute a workspace click. When in accessibility mode shift clicking will
713
- * move the cursor.
714
- * @param _e A mouse up or touch end event.
715
- */
716
- private doWorkspaceClick_(_e: Event) {
717
- const ws = this.creatorWorkspace;
718
- if (common.getSelected()) {
719
- common.getSelected()!.unselect();
720
- }
721
- this.fireWorkspaceClick_(this.startWorkspace_ || ws);
722
- }
723
-
724
- /* End functions defining what actions to take to execute clicks on each type
725
- * of target. */
726
-
727
- // TODO (fenichel): Move bubbles to the front.
728
-
729
- /**
730
- * Move the dragged/clicked block to the front of the workspace so that it is
731
- * not occluded by other blocks.
732
- */
733
- private bringBlockToFront_() {
734
- // Blocks in the flyout don't overlap, so skip the work.
735
- if (this.targetBlock_ && !this.flyout_) {
736
- this.targetBlock_.bringToFront();
737
- }
738
- }
739
-
740
- /* Begin functions for populating a gesture at mouse down. */
741
-
742
- /**
743
- * Record the field that a gesture started on.
744
- * @param field The field the gesture started on.
745
- * @internal
746
- */
747
- setStartField(field: Field) {
748
- if (this.hasStarted_) {
749
- throw Error(
750
- 'Tried to call gesture.setStartField, ' +
751
- 'but the gesture had already been started.');
752
- }
753
- if (!this.startField_) {
754
- this.startField_ = field;
755
- }
756
- }
757
-
758
- /**
759
- * Record the bubble that a gesture started on
760
- * @param bubble The bubble the gesture started on.
761
- * @internal
762
- */
763
- setStartBubble(bubble: IBubble) {
764
- if (!this.startBubble_) {
765
- this.startBubble_ = bubble;
766
- }
767
- }
768
-
769
- /**
770
- * Record the block that a gesture started on, and set the target block
771
- * appropriately.
772
- * @param block The block the gesture started on.
773
- * @internal
774
- */
775
- setStartBlock(block: BlockSvg) {
776
- // If the gesture already went through a bubble, don't set the start block.
777
- if (!this.startBlock_ && !this.startBubble_) {
778
- this.startBlock_ = block;
779
- if (block.isInFlyout && block !== block.getRootBlock()) {
780
- this.setTargetBlock_(block.getRootBlock());
781
- } else {
782
- this.setTargetBlock_(block);
783
- }
784
- }
785
- }
786
-
787
- /**
788
- * Record the block that a gesture targets, meaning the block that will be
789
- * dragged if this turns into a drag. If this block is a shadow, that will be
790
- * its first non-shadow parent.
791
- * @param block The block the gesture targets.
792
- */
793
- private setTargetBlock_(block: BlockSvg) {
794
- if (block.isShadow()) {
795
- // AnyDuringMigration because: Argument of type 'BlockSvg | null' is not
796
- // assignable to parameter of type 'BlockSvg'.
797
- this.setTargetBlock_(block.getParent() as AnyDuringMigration);
798
- } else {
799
- this.targetBlock_ = block;
800
- }
801
- }
802
-
803
- /**
804
- * Record the workspace that a gesture started on.
805
- * @param ws The workspace the gesture started on.
806
- */
807
- private setStartWorkspace_(ws: WorkspaceSvg) {
808
- if (!this.startWorkspace_) {
809
- this.startWorkspace_ = ws;
810
- }
811
- }
812
-
813
- /**
814
- * Record the flyout that a gesture started on.
815
- * @param flyout The flyout the gesture started on.
816
- */
817
- private setStartFlyout_(flyout: IFlyout) {
818
- if (!this.flyout_) {
819
- this.flyout_ = flyout;
820
- }
821
- }
822
-
823
- /* End functions for populating a gesture at mouse down. */
824
-
825
- /* Begin helper functions defining types of clicks. Any developer wanting
826
- * to change the definition of a click should modify only this code. */
827
-
828
- /**
829
- * Whether this gesture is a click on a bubble. This should only be called
830
- * when ending a gesture (mouse up, touch end).
831
- * @return Whether this gesture was a click on a bubble.
832
- */
833
- private isBubbleClick_(): boolean {
834
- // A bubble click starts on a bubble and never escapes the drag radius.
835
- const hasStartBubble = !!this.startBubble_;
836
- return hasStartBubble && !this.hasExceededDragRadius_;
837
- }
838
-
839
- /**
840
- * Whether this gesture is a click on a block. This should only be called
841
- * when ending a gesture (mouse up, touch end).
842
- * @return Whether this gesture was a click on a block.
843
- */
844
- private isBlockClick_(): boolean {
845
- // A block click starts on a block, never escapes the drag radius, and is
846
- // not a field click.
847
- const hasStartBlock = !!this.startBlock_;
848
- return hasStartBlock && !this.hasExceededDragRadius_ &&
849
- !this.isFieldClick_();
850
- }
851
-
852
- /**
853
- * Whether this gesture is a click on a field. This should only be called
854
- * when ending a gesture (mouse up, touch end).
855
- * @return Whether this gesture was a click on a field.
856
- */
857
- private isFieldClick_(): boolean {
858
- const fieldClickable =
859
- this.startField_ ? this.startField_.isClickable() : false;
860
- return fieldClickable && !this.hasExceededDragRadius_ &&
861
- (!this.flyout_ || !this.flyout_.autoClose);
862
- }
863
-
864
- /**
865
- * Whether this gesture is a click on a workspace. This should only be called
866
- * when ending a gesture (mouse up, touch end).
867
- * @return Whether this gesture was a click on a workspace.
868
- */
869
- private isWorkspaceClick_(): boolean {
870
- const onlyTouchedWorkspace =
871
- !this.startBlock_ && !this.startBubble_ && !this.startField_;
872
- return onlyTouchedWorkspace && !this.hasExceededDragRadius_;
873
- }
874
-
875
- /* End helper functions defining types of clicks. */
876
-
877
- /**
878
- * Whether this gesture is a drag of either a workspace or block.
879
- * This function is called externally to block actions that cannot be taken
880
- * mid-drag (e.g. using the keyboard to delete the selected blocks).
881
- * @return True if this gesture is a drag of a workspace or block.
882
- * @internal
883
- */
884
- isDragging(): boolean {
885
- return this.isDraggingWorkspace_ || this.isDraggingBlock_ ||
886
- this.isDraggingBubble_;
887
- }
888
-
889
- /**
890
- * Whether this gesture has already been started. In theory every mouse down
891
- * has a corresponding mouse up, but in reality it is possible to lose a
892
- * mouse up, leaving an in-process gesture hanging.
893
- * @return Whether this gesture was a click on a workspace.
894
- * @internal
895
- */
896
- hasStarted(): boolean {
897
- return this.hasStarted_;
898
- }
899
-
900
- /**
901
- * Get a list of the insertion markers that currently exist. Block drags have
902
- * 0, 1, or 2 insertion markers.
903
- * @return A possibly empty list of insertion marker blocks.
904
- * @internal
905
- */
906
- getInsertionMarkers(): BlockSvg[] {
907
- if (this.blockDragger_) {
908
- return this.blockDragger_.getInsertionMarkers();
909
- }
910
- return [];
911
- }
912
-
913
- /**
914
- * Gets the current dragger if an item is being dragged. Null if nothing is
915
- * being dragged.
916
- * @return The dragger that is currently in use or null if no drag is in
917
- * progress.
918
- */
919
- getCurrentDragger(): WorkspaceDragger|BubbleDragger|IBlockDragger|null {
920
- if (this.isDraggingBlock_) {
921
- return this.blockDragger_;
922
- } else if (this.isDraggingWorkspace_) {
923
- return this.workspaceDragger_;
924
- } else if (this.isDraggingBubble_) {
925
- return this.bubbleDragger_;
926
- }
927
- return null;
928
- }
929
-
930
- /**
931
- * Is a drag or other gesture currently in progress on any workspace?
932
- * @return True if gesture is occurring.
933
- */
934
- static inProgress(): boolean {
935
- const workspaces = common.getAllWorkspaces();
936
- for (let i = 0, workspace; workspace = workspaces[i]; i++) {
937
- // Not actually necessarily a WorkspaceSvg, but it doesn't matter b/c
938
- // we're just checking if the property exists. Theoretically we would
939
- // want to use instanceof, but that causes a circular dependency.
940
- if ((workspace as WorkspaceSvg).currentGesture_) {
941
- return true;
942
- }
943
- }
944
- return false;
945
- }
946
- }