blockly 9.0.0-beta.0 → 9.0.0-beta.2

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 +830 -810
  2. package/blockly_compressed.js +821 -801
  3. package/blockly_compressed.js.map +1 -1
  4. package/blocks.d.ts +0 -5
  5. package/blocks_compressed.js +9 -9
  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 +156 -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 +92 -24
  16. package/core/blockly.d.ts +31 -10
  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 +51 -24
  42. package/core/events/events_abstract.d.ts +18 -7
  43. package/core/events/events_block_base.d.ts +13 -7
  44. package/core/events/events_block_change.d.ts +24 -11
  45. package/core/events/events_block_create.d.ts +18 -7
  46. package/core/events/events_block_delete.d.ts +20 -8
  47. package/core/events/events_block_drag.d.ts +14 -4
  48. package/core/events/events_block_move.d.ts +25 -12
  49. package/core/events/events_bubble_open.d.ts +21 -6
  50. package/core/events/events_click.d.ts +20 -6
  51. package/core/events/events_comment_base.d.ts +13 -6
  52. package/core/events/events_comment_change.d.ts +17 -7
  53. package/core/events/events_comment_create.d.ts +13 -5
  54. package/core/events/events_comment_delete.d.ts +4 -11
  55. package/core/events/events_comment_move.d.ts +19 -8
  56. package/core/events/events_marker_move.d.ts +16 -5
  57. package/core/events/events_selected.d.ts +14 -5
  58. package/core/events/events_theme_change.d.ts +11 -3
  59. package/core/events/events_toolbox_item_select.d.ts +14 -5
  60. package/core/events/events_trashcan_open.d.ts +11 -3
  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 +13 -7
  64. package/core/events/events_var_create.d.ts +15 -6
  65. package/core/events/events_var_delete.d.ts +15 -6
  66. package/core/events/events_var_rename.d.ts +15 -6
  67. package/core/events/events_viewport.d.ts +14 -3
  68. package/core/events/utils.d.ts +50 -7
  69. package/core/events/workspace_events.d.ts +11 -6
  70. package/core/extensions.d.ts +14 -4
  71. package/core/field.d.ts +93 -36
  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 +56 -22
  91. package/core/grid.d.ts +20 -16
  92. package/core/icon.d.ts +18 -5
  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 +3 -1
  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 +25 -6
  135. package/core/menuitem.d.ts +22 -7
  136. package/core/metrics_manager.d.ts +30 -15
  137. package/core/msg.d.ts +15 -0
  138. package/core/mutator.d.ts +20 -8
  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 +29 -7
  145. package/core/renderers/common/block_rendering.d.ts +9 -2
  146. package/core/renderers/common/constants.d.ts +57 -18
  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 +16 -3
  150. package/core/renderers/common/i_path_object.d.ts +37 -16
  151. package/core/renderers/common/info.d.ts +28 -11
  152. package/core/renderers/common/marker_svg.d.ts +42 -11
  153. package/core/renderers/common/path_object.d.ts +23 -3
  154. package/core/renderers/common/renderer.d.ts +33 -12
  155. package/core/renderers/geras/constants.d.ts +6 -2
  156. package/core/renderers/geras/drawer.d.ts +4 -1
  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 -1
  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 +4 -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 +30 -8
  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 -4
  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 +5 -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 +5 -4
  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 +31 -44
  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 -1
  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 +9 -2
  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 +41 -30
  221. package/core/theme_manager.d.ts +10 -1
  222. package/core/toolbox/category.d.ts +60 -32
  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 +71 -23
  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 +19 -4
  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 +19 -9
  235. package/core/utils/deprecation.d.ts +6 -4
  236. package/core/utils/dom.d.ts +37 -18
  237. package/core/utils/idgenerator.d.ts +14 -4
  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 +17 -7
  270. package/core-browser.js +0 -6
  271. package/core.d.ts +0 -5
  272. package/core.js +0 -6
  273. package/dart.d.ts +1 -7
  274. package/dart_compressed.js.map +1 -1
  275. package/index.d.ts +2 -6
  276. package/javascript.d.ts +1 -7
  277. package/javascript_compressed.js.map +1 -1
  278. package/lua.d.ts +1 -7
  279. package/lua_compressed.js.map +1 -1
  280. package/msg/ab.d.ts +8 -0
  281. package/msg/ace.d.ts +8 -0
  282. package/msg/af.d.ts +8 -0
  283. package/msg/am.d.ts +8 -0
  284. package/msg/ar.d.ts +8 -0
  285. package/msg/ast.d.ts +8 -0
  286. package/msg/az.d.ts +8 -0
  287. package/msg/ba.d.ts +8 -0
  288. package/msg/bcc.d.ts +8 -0
  289. package/msg/be-tarask.d.ts +8 -0
  290. package/msg/be.d.ts +8 -0
  291. package/msg/bg.d.ts +8 -0
  292. package/msg/bn.d.ts +8 -0
  293. package/msg/br.d.ts +8 -0
  294. package/msg/bs.d.ts +8 -0
  295. package/msg/ca.d.ts +8 -0
  296. package/msg/cdo.d.ts +8 -0
  297. package/msg/constants.d.ts +16 -0
  298. package/msg/cs.d.ts +8 -0
  299. package/msg/da.d.ts +8 -0
  300. package/msg/de.d.ts +8 -0
  301. package/msg/diq.d.ts +8 -0
  302. package/msg/dty.d.ts +8 -0
  303. package/msg/ee.d.ts +8 -0
  304. package/msg/el.d.ts +8 -0
  305. package/msg/en-gb.d.ts +8 -0
  306. package/msg/en.d.ts +8 -0
  307. package/msg/eo.d.ts +8 -0
  308. package/msg/es.d.ts +8 -0
  309. package/msg/et.d.ts +8 -0
  310. package/msg/eu.d.ts +8 -0
  311. package/msg/fa.d.ts +8 -0
  312. package/msg/fi.d.ts +8 -0
  313. package/msg/fo.d.ts +8 -0
  314. package/msg/fr.d.ts +8 -0
  315. package/msg/frr.d.ts +8 -0
  316. package/msg/gl.d.ts +8 -0
  317. package/msg/gn.d.ts +8 -0
  318. package/msg/gor.d.ts +8 -0
  319. package/msg/ha.d.ts +8 -0
  320. package/msg/hak.d.ts +8 -0
  321. package/msg/he.d.ts +8 -0
  322. package/msg/hi.d.ts +8 -0
  323. package/msg/hr.d.ts +8 -0
  324. package/msg/hrx.d.ts +8 -0
  325. package/msg/hu.d.ts +8 -0
  326. package/msg/hy.d.ts +8 -0
  327. package/msg/ia.d.ts +8 -0
  328. package/msg/id.d.ts +8 -0
  329. package/msg/ig.d.ts +8 -0
  330. package/msg/inh.d.ts +8 -0
  331. package/msg/is.d.ts +8 -0
  332. package/msg/it.d.ts +8 -0
  333. package/msg/ja.d.ts +8 -0
  334. package/msg/ka.d.ts +8 -0
  335. package/msg/kab.d.ts +8 -0
  336. package/msg/kbd-cyrl.d.ts +8 -0
  337. package/msg/km.d.ts +8 -0
  338. package/msg/kn.d.ts +8 -0
  339. package/msg/ko.d.ts +8 -0
  340. package/msg/ksh.d.ts +8 -0
  341. package/msg/ku-latn.d.ts +8 -0
  342. package/msg/ky.d.ts +8 -0
  343. package/msg/la.d.ts +8 -0
  344. package/msg/lb.d.ts +8 -0
  345. package/msg/lki.d.ts +8 -0
  346. package/msg/lo.d.ts +8 -0
  347. package/msg/lrc.d.ts +8 -0
  348. package/msg/lt.d.ts +8 -0
  349. package/msg/lv.d.ts +8 -0
  350. package/msg/mg.d.ts +8 -0
  351. package/msg/mk.d.ts +8 -0
  352. package/msg/ml.d.ts +8 -0
  353. package/msg/mnw.d.ts +8 -0
  354. package/msg/ms.d.ts +8 -0
  355. package/msg/msg.d.ts +429 -432
  356. package/msg/my.d.ts +8 -0
  357. package/msg/mzn.d.ts +8 -0
  358. package/msg/nb.d.ts +8 -0
  359. package/msg/ne.d.ts +8 -0
  360. package/msg/nl.d.ts +8 -0
  361. package/msg/oc.d.ts +8 -0
  362. package/msg/olo.d.ts +8 -0
  363. package/msg/pa.d.ts +8 -0
  364. package/msg/pl.d.ts +8 -0
  365. package/msg/pms.d.ts +8 -0
  366. package/msg/ps.d.ts +8 -0
  367. package/msg/pt-br.d.ts +8 -0
  368. package/msg/pt.d.ts +8 -0
  369. package/msg/qqq.d.ts +16 -0
  370. package/msg/ro.d.ts +8 -0
  371. package/msg/ru.d.ts +8 -0
  372. package/msg/sc.d.ts +8 -0
  373. package/msg/sco.d.ts +8 -0
  374. package/msg/sd.d.ts +8 -0
  375. package/msg/shn.d.ts +8 -0
  376. package/msg/si.d.ts +8 -0
  377. package/msg/sk.d.ts +8 -0
  378. package/msg/skr-arab.d.ts +8 -0
  379. package/msg/sl.d.ts +8 -0
  380. package/msg/smn.d.ts +8 -0
  381. package/msg/sq.d.ts +8 -0
  382. package/msg/sr-latn.d.ts +8 -0
  383. package/msg/sr.d.ts +8 -0
  384. package/msg/sv.d.ts +8 -0
  385. package/msg/sw.d.ts +8 -0
  386. package/msg/synonyms.d.ts +16 -0
  387. package/msg/ta.d.ts +8 -0
  388. package/msg/tcy.d.ts +8 -0
  389. package/msg/te.d.ts +8 -0
  390. package/msg/th.d.ts +8 -0
  391. package/msg/ti.d.ts +8 -0
  392. package/msg/tl.d.ts +8 -0
  393. package/msg/tlh.d.ts +8 -0
  394. package/msg/tr.d.ts +8 -0
  395. package/msg/ug-arab.d.ts +8 -0
  396. package/msg/uk.d.ts +8 -0
  397. package/msg/ur.d.ts +8 -0
  398. package/msg/uz.d.ts +8 -0
  399. package/msg/vi.d.ts +8 -0
  400. package/msg/xmf.d.ts +8 -0
  401. package/msg/yo.d.ts +8 -0
  402. package/msg/yue.d.ts +8 -0
  403. package/msg/zgh.d.ts +8 -0
  404. package/msg/zh-hans.d.ts +8 -0
  405. package/msg/zh-hant.d.ts +8 -0
  406. package/package.json +6 -3
  407. package/php.d.ts +1 -7
  408. package/php_compressed.js.map +1 -1
  409. package/python.d.ts +1 -7
  410. package/python_compressed.js.map +1 -1
  411. package/blocks/blocks.js +0 -48
  412. package/blocks/colour.js +0 -121
  413. package/blocks/lists.js +0 -996
  414. package/blocks/logic.js +0 -665
  415. package/blocks/loops.js +0 -375
  416. package/blocks/math.js +0 -594
  417. package/blocks/procedures.js +0 -1196
  418. package/blocks/text.js +0 -1000
  419. package/blocks/variables.js +0 -176
  420. package/blocks/variables_dynamic.js +0 -192
  421. package/core/any_aliases.ts +0 -1
  422. package/core/block.ts +0 -2102
  423. package/core/block_animations.ts +0 -202
  424. package/core/block_drag_surface.ts +0 -237
  425. package/core/block_dragger.ts +0 -447
  426. package/core/block_svg.ts +0 -1758
  427. package/core/blockly.js +0 -890
  428. package/core/blockly.ts +0 -749
  429. package/core/blockly_options.ts +0 -81
  430. package/core/blocks.ts +0 -29
  431. package/core/browser_events.ts +0 -289
  432. package/core/bubble.ts +0 -892
  433. package/core/bubble_dragger.ts +0 -229
  434. package/core/bump_objects.ts +0 -182
  435. package/core/clipboard.ts +0 -91
  436. package/core/comment.ts +0 -398
  437. package/core/common.ts +0 -288
  438. package/core/component_manager.ts +0 -211
  439. package/core/config.ts +0 -80
  440. package/core/connection.ts +0 -692
  441. package/core/connection_checker.ts +0 -301
  442. package/core/connection_db.ts +0 -289
  443. package/core/connection_type.ts +0 -32
  444. package/core/constants.ts +0 -29
  445. package/core/contextmenu.ts +0 -363
  446. package/core/contextmenu_items.ts +0 -576
  447. package/core/contextmenu_registry.ts +0 -179
  448. package/core/css.ts +0 -560
  449. package/core/delete_area.ts +0 -82
  450. package/core/dialog.ts +0 -127
  451. package/core/drag_target.ts +0 -94
  452. package/core/dropdowndiv.ts +0 -683
  453. package/core/events/events.ts +0 -123
  454. package/core/events/events_abstract.ts +0 -112
  455. package/core/events/events_block_base.ts +0 -65
  456. package/core/events/events_block_change.ts +0 -176
  457. package/core/events/events_block_create.ts +0 -114
  458. package/core/events/events_block_delete.ts +0 -126
  459. package/core/events/events_block_drag.ts +0 -82
  460. package/core/events/events_block_move.ts +0 -206
  461. package/core/events/events_bubble_open.ts +0 -82
  462. package/core/events/events_click.ts +0 -84
  463. package/core/events/events_comment_base.ts +0 -107
  464. package/core/events/events_comment_change.ts +0 -108
  465. package/core/events/events_comment_create.ts +0 -82
  466. package/core/events/events_comment_delete.ts +0 -77
  467. package/core/events/events_comment_move.ts +0 -154
  468. package/core/events/events_marker_move.ts +0 -99
  469. package/core/events/events_selected.ts +0 -78
  470. package/core/events/events_theme_change.ts +0 -67
  471. package/core/events/events_toolbox_item_select.ts +0 -79
  472. package/core/events/events_trashcan_open.ts +0 -68
  473. package/core/events/events_ui.ts +0 -89
  474. package/core/events/events_ui_base.ts +0 -54
  475. package/core/events/events_var_base.ts +0 -65
  476. package/core/events/events_var_create.ts +0 -88
  477. package/core/events/events_var_delete.ts +0 -88
  478. package/core/events/events_var_rename.ts +0 -89
  479. package/core/events/events_viewport.ts +0 -100
  480. package/core/events/utils.ts +0 -529
  481. package/core/events/workspace_events.ts +0 -86
  482. package/core/extensions.ts +0 -504
  483. package/core/field.ts +0 -1206
  484. package/core/field_angle.ts +0 -563
  485. package/core/field_checkbox.ts +0 -243
  486. package/core/field_colour.ts +0 -632
  487. package/core/field_dropdown.ts +0 -773
  488. package/core/field_image.ts +0 -282
  489. package/core/field_label.ts +0 -152
  490. package/core/field_label_serializable.ts +0 -76
  491. package/core/field_multilineinput.ts +0 -466
  492. package/core/field_number.ts +0 -327
  493. package/core/field_registry.ts +0 -87
  494. package/core/field_textinput.ts +0 -591
  495. package/core/field_variable.ts +0 -545
  496. package/core/flyout_base.ts +0 -1165
  497. package/core/flyout_button.ts +0 -292
  498. package/core/flyout_horizontal.ts +0 -381
  499. package/core/flyout_metrics_manager.ts +0 -94
  500. package/core/flyout_vertical.ts +0 -384
  501. package/core/generator.ts +0 -539
  502. package/core/gesture.ts +0 -946
  503. package/core/grid.ts +0 -192
  504. package/core/icon.ts +0 -189
  505. package/core/inject.ts +0 -390
  506. package/core/input.ts +0 -309
  507. package/core/input_types.ts +0 -32
  508. package/core/insertion_marker_manager.ts +0 -788
  509. package/core/interfaces/i_ast_node_location.ts +0 -23
  510. package/core/interfaces/i_ast_node_location_svg.ts +0 -37
  511. package/core/interfaces/i_ast_node_location_with_block.ts +0 -38
  512. package/core/interfaces/i_autohideable.ts +0 -34
  513. package/core/interfaces/i_block_dragger.ts +0 -67
  514. package/core/interfaces/i_bounded_element.ts +0 -42
  515. package/core/interfaces/i_bubble.ts +0 -88
  516. package/core/interfaces/i_collapsible_toolbox_item.ts +0 -47
  517. package/core/interfaces/i_component.ts +0 -32
  518. package/core/interfaces/i_connection_checker.ts +0 -102
  519. package/core/interfaces/i_contextmenu.ts +0 -26
  520. package/core/interfaces/i_copyable.ts +0 -40
  521. package/core/interfaces/i_deletable.ts +0 -29
  522. package/core/interfaces/i_delete_area.ts +0 -46
  523. package/core/interfaces/i_drag_target.ts +0 -84
  524. package/core/interfaces/i_draggable.ts +0 -25
  525. package/core/interfaces/i_flyout.ts +0 -186
  526. package/core/interfaces/i_keyboard_accessible.ts +0 -35
  527. package/core/interfaces/i_metrics_manager.ts +0 -151
  528. package/core/interfaces/i_movable.ts +0 -29
  529. package/core/interfaces/i_positionable.ts +0 -50
  530. package/core/interfaces/i_registrable.ts +0 -25
  531. package/core/interfaces/i_registrable_field.ts +0 -31
  532. package/core/interfaces/i_selectable.ts +0 -34
  533. package/core/interfaces/i_selectable_toolbox_item.ts +0 -64
  534. package/core/interfaces/i_serializer.ts +0 -65
  535. package/core/interfaces/i_styleable.ts +0 -35
  536. package/core/interfaces/i_toolbox.ts +0 -127
  537. package/core/interfaces/i_toolbox_item.ts +0 -84
  538. package/core/internal_constants.ts +0 -67
  539. package/core/keyboard_nav/ast_node.ts +0 -717
  540. package/core/keyboard_nav/basic_cursor.ts +0 -214
  541. package/core/keyboard_nav/cursor.ts +0 -134
  542. package/core/keyboard_nav/marker.ts +0 -115
  543. package/core/keyboard_nav/tab_navigate_cursor.ts +0 -48
  544. package/core/main.js +0 -303
  545. package/core/marker_manager.ts +0 -181
  546. package/core/menu.ts +0 -449
  547. package/core/menuitem.ts +0 -240
  548. package/core/metrics_manager.ts +0 -456
  549. package/core/msg.ts +0 -20
  550. package/core/mutator.ts +0 -560
  551. package/core/names.ts +0 -267
  552. package/core/options.ts +0 -365
  553. package/core/positionable_helpers.ts +0 -181
  554. package/core/procedures.ts +0 -443
  555. package/core/registry.ts +0 -339
  556. package/core/rendered_connection.ts +0 -568
  557. package/core/renderers/common/block_rendering.ts +0 -164
  558. package/core/renderers/common/constants.ts +0 -1124
  559. package/core/renderers/common/debug.ts +0 -61
  560. package/core/renderers/common/debugger.ts +0 -433
  561. package/core/renderers/common/drawer.ts +0 -450
  562. package/core/renderers/common/i_path_object.ts +0 -161
  563. package/core/renderers/common/info.ts +0 -718
  564. package/core/renderers/common/marker_svg.ts +0 -680
  565. package/core/renderers/common/path_object.ts +0 -272
  566. package/core/renderers/common/renderer.ts +0 -271
  567. package/core/renderers/geras/constants.ts +0 -61
  568. package/core/renderers/geras/drawer.ts +0 -176
  569. package/core/renderers/geras/geras.ts +0 -37
  570. package/core/renderers/geras/highlight_constants.ts +0 -337
  571. package/core/renderers/geras/highlighter.ts +0 -306
  572. package/core/renderers/geras/info.ts +0 -450
  573. package/core/renderers/geras/measurables/inline_input.ts +0 -51
  574. package/core/renderers/geras/measurables/statement_input.ts +0 -50
  575. package/core/renderers/geras/path_object.ts +0 -138
  576. package/core/renderers/geras/renderer.ts +0 -126
  577. package/core/renderers/measurables/base.ts +0 -53
  578. package/core/renderers/measurables/bottom_row.ts +0 -120
  579. package/core/renderers/measurables/connection.ts +0 -52
  580. package/core/renderers/measurables/external_value_input.ts +0 -65
  581. package/core/renderers/measurables/field.ts +0 -63
  582. package/core/renderers/measurables/hat.ts +0 -48
  583. package/core/renderers/measurables/icon.ts +0 -54
  584. package/core/renderers/measurables/in_row_spacer.ts +0 -44
  585. package/core/renderers/measurables/inline_input.ts +0 -76
  586. package/core/renderers/measurables/input_connection.ts +0 -66
  587. package/core/renderers/measurables/input_row.ts +0 -82
  588. package/core/renderers/measurables/jagged_edge.ts +0 -43
  589. package/core/renderers/measurables/next_connection.ts +0 -47
  590. package/core/renderers/measurables/output_connection.ts +0 -56
  591. package/core/renderers/measurables/previous_connection.ts +0 -47
  592. package/core/renderers/measurables/round_corner.ts +0 -49
  593. package/core/renderers/measurables/row.ts +0 -225
  594. package/core/renderers/measurables/spacer_row.ts +0 -55
  595. package/core/renderers/measurables/square_corner.ts +0 -47
  596. package/core/renderers/measurables/statement_input.ts +0 -55
  597. package/core/renderers/measurables/top_row.ts +0 -122
  598. package/core/renderers/measurables/types.ts +0 -332
  599. package/core/renderers/minimalist/constants.ts +0 -32
  600. package/core/renderers/minimalist/drawer.ts +0 -38
  601. package/core/renderers/minimalist/info.ts +0 -52
  602. package/core/renderers/minimalist/minimalist.ts +0 -22
  603. package/core/renderers/minimalist/renderer.ts +0 -71
  604. package/core/renderers/thrasos/info.ts +0 -338
  605. package/core/renderers/thrasos/renderer.ts +0 -48
  606. package/core/renderers/thrasos/thrasos.ts +0 -20
  607. package/core/renderers/zelos/constants.ts +0 -858
  608. package/core/renderers/zelos/drawer.ts +0 -228
  609. package/core/renderers/zelos/info.ts +0 -593
  610. package/core/renderers/zelos/marker_svg.ts +0 -151
  611. package/core/renderers/zelos/measurables/bottom_row.ts +0 -53
  612. package/core/renderers/zelos/measurables/inputs.ts +0 -56
  613. package/core/renderers/zelos/measurables/row_elements.ts +0 -45
  614. package/core/renderers/zelos/measurables/top_row.ts +0 -58
  615. package/core/renderers/zelos/path_object.ts +0 -215
  616. package/core/renderers/zelos/renderer.ts +0 -142
  617. package/core/renderers/zelos/zelos.ts +0 -39
  618. package/core/scrollbar.ts +0 -870
  619. package/core/scrollbar_pair.ts +0 -321
  620. package/core/serialization/blocks.ts +0 -706
  621. package/core/serialization/exceptions.ts +0 -98
  622. package/core/serialization/priorities.ts +0 -32
  623. package/core/serialization/registry.ts +0 -43
  624. package/core/serialization/variables.ts +0 -96
  625. package/core/serialization/workspaces.ts +0 -106
  626. package/core/shortcut_items.ts +0 -266
  627. package/core/shortcut_registry.ts +0 -355
  628. package/core/sprites.ts +0 -29
  629. package/core/theme/classic.ts +0 -54
  630. package/core/theme/themes.ts +0 -22
  631. package/core/theme/zelos.ts +0 -91
  632. package/core/theme.ts +0 -221
  633. package/core/theme_manager.ts +0 -186
  634. package/core/toolbox/category.ts +0 -679
  635. package/core/toolbox/collapsible_category.ts +0 -273
  636. package/core/toolbox/separator.ts +0 -105
  637. package/core/toolbox/toolbox.ts +0 -1044
  638. package/core/toolbox/toolbox_item.ts +0 -147
  639. package/core/tooltip.ts +0 -463
  640. package/core/touch.ts +0 -306
  641. package/core/touch_gesture.ts +0 -295
  642. package/core/trashcan.ts +0 -671
  643. package/core/utils/aria.ts +0 -160
  644. package/core/utils/array.ts +0 -32
  645. package/core/utils/colour.ts +0 -276
  646. package/core/utils/coordinate.ts +0 -124
  647. package/core/utils/deprecation.ts +0 -41
  648. package/core/utils/dom.ts +0 -408
  649. package/core/utils/idgenerator.ts +0 -80
  650. package/core/utils/keycodes.ts +0 -169
  651. package/core/utils/math.ts +0 -61
  652. package/core/utils/metrics.ts +0 -97
  653. package/core/utils/object.ts +0 -95
  654. package/core/utils/parsing.ts +0 -261
  655. package/core/utils/rect.ts +0 -62
  656. package/core/utils/sentinel.ts +0 -23
  657. package/core/utils/size.ts +0 -51
  658. package/core/utils/string.ts +0 -308
  659. package/core/utils/style.ts +0 -306
  660. package/core/utils/svg.ts +0 -88
  661. package/core/utils/svg_math.ts +0 -269
  662. package/core/utils/svg_paths.ts +0 -140
  663. package/core/utils/toolbox.ts +0 -433
  664. package/core/utils/useragent.ts +0 -135
  665. package/core/utils/xml.ts +0 -97
  666. package/core/utils.ts +0 -428
  667. package/core/variable_map.ts +0 -392
  668. package/core/variable_model.ts +0 -82
  669. package/core/variables.ts +0 -596
  670. package/core/variables_dynamic.ts +0 -133
  671. package/core/warning.ts +0 -161
  672. package/core/widgetdiv.ts +0 -257
  673. package/core/workspace.ts +0 -801
  674. package/core/workspace_audio.ts +0 -156
  675. package/core/workspace_comment.ts +0 -398
  676. package/core/workspace_comment_svg.ts +0 -1127
  677. package/core/workspace_drag_surface_svg.ts +0 -187
  678. package/core/workspace_dragger.ts +0 -104
  679. package/core/workspace_svg.ts +0 -2655
  680. package/core/xml.ts +0 -1023
  681. package/core/zoom_controls.ts +0 -441
  682. package/generators/dart/all.js +0 -27
  683. package/generators/dart/colour.js +0 -105
  684. package/generators/dart/lists.js +0 -431
  685. package/generators/dart/logic.js +0 -123
  686. package/generators/dart/loops.js +0 -161
  687. package/generators/dart/math.js +0 -446
  688. package/generators/dart/procedures.js +0 -105
  689. package/generators/dart/text.js +0 -338
  690. package/generators/dart/variables.js +0 -32
  691. package/generators/dart/variables_dynamic.js +0 -21
  692. package/generators/dart.js +0 -303
  693. package/generators/javascript/all.js +0 -27
  694. package/generators/javascript/colour.js +0 -85
  695. package/generators/javascript/lists.js +0 -405
  696. package/generators/javascript/logic.js +0 -127
  697. package/generators/javascript/loops.js +0 -180
  698. package/generators/javascript/math.js +0 -401
  699. package/generators/javascript/procedures.js +0 -110
  700. package/generators/javascript/text.js +0 -371
  701. package/generators/javascript/variables.js +0 -32
  702. package/generators/javascript/variables_dynamic.js +0 -21
  703. package/generators/javascript.js +0 -322
  704. package/generators/lua/all.js +0 -27
  705. package/generators/lua/colour.js +0 -71
  706. package/generators/lua/lists.js +0 -348
  707. package/generators/lua/logic.js +0 -112
  708. package/generators/lua/loops.js +0 -168
  709. package/generators/lua/math.js +0 -406
  710. package/generators/lua/procedures.js +0 -106
  711. package/generators/lua/text.js +0 -327
  712. package/generators/lua/variables.js +0 -31
  713. package/generators/lua/variables_dynamic.js +0 -21
  714. package/generators/lua.js +0 -206
  715. package/generators/php/all.js +0 -27
  716. package/generators/php/colour.js +0 -81
  717. package/generators/php/lists.js +0 -481
  718. package/generators/php/logic.js +0 -119
  719. package/generators/php/loops.js +0 -161
  720. package/generators/php/math.js +0 -349
  721. package/generators/php/procedures.js +0 -125
  722. package/generators/php/text.js +0 -255
  723. package/generators/php/variables.js +0 -32
  724. package/generators/php/variables_dynamic.js +0 -21
  725. package/generators/php.js +0 -303
  726. package/generators/python/all.js +0 -27
  727. package/generators/python/colour.js +0 -67
  728. package/generators/python/lists.js +0 -346
  729. package/generators/python/logic.js +0 -120
  730. package/generators/python/loops.js +0 -206
  731. package/generators/python/math.js +0 -373
  732. package/generators/python/procedures.js +0 -129
  733. package/generators/python/text.js +0 -291
  734. package/generators/python/variables.js +0 -32
  735. package/generators/python/variables_dynamic.js +0 -21
  736. 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
- }