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
@@ -1,301 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2020 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
-
7
- /**
8
- * @fileoverview An object that encapsulates logic for checking whether a
9
- * potential connection is safe and valid.
10
- */
11
-
12
- /**
13
- * An object that encapsulates logic for checking whether a
14
- * potential connection is safe and valid.
15
- * @class
16
- */
17
- import * as goog from '../closure/goog/goog.js';
18
- goog.declareModuleId('Blockly.ConnectionChecker');
19
-
20
- import * as common from './common.js';
21
- import {Connection} from './connection.js';
22
- import {ConnectionType} from './connection_type.js';
23
- import type {IConnectionChecker} from './interfaces/i_connection_checker.js';
24
- import * as internalConstants from './internal_constants.js';
25
- import * as registry from './registry.js';
26
- import type {RenderedConnection} from './rendered_connection.js';
27
-
28
-
29
- /**
30
- * Class for connection type checking logic.
31
- * @alias Blockly.ConnectionChecker
32
- */
33
- export class ConnectionChecker implements IConnectionChecker {
34
- /**
35
- * Check whether the current connection can connect with the target
36
- * connection.
37
- * @param a Connection to check compatibility with.
38
- * @param b Connection to check compatibility with.
39
- * @param isDragging True if the connection is being made by dragging a block.
40
- * @param opt_distance The max allowable distance between the connections for
41
- * drag checks.
42
- * @return Whether the connection is legal.
43
- */
44
- canConnect(
45
- a: Connection|null, b: Connection|null, isDragging: boolean,
46
- opt_distance?: number): boolean {
47
- return this.canConnectWithReason(a, b, isDragging, opt_distance) ===
48
- Connection.CAN_CONNECT;
49
- }
50
-
51
- /**
52
- * Checks whether the current connection can connect with the target
53
- * connection, and return an error code if there are problems.
54
- * @param a Connection to check compatibility with.
55
- * @param b Connection to check compatibility with.
56
- * @param isDragging True if the connection is being made by dragging a block.
57
- * @param opt_distance The max allowable distance between the connections for
58
- * drag checks.
59
- * @return Connection.CAN_CONNECT if the connection is legal, an error code
60
- * otherwise.
61
- */
62
- canConnectWithReason(
63
- a: Connection|null, b: Connection|null, isDragging: boolean,
64
- opt_distance?: number): number {
65
- const safety = this.doSafetyChecks(a, b);
66
- if (safety !== Connection.CAN_CONNECT) {
67
- return safety;
68
- }
69
-
70
- // If the safety checks passed, both connections are non-null.
71
- const connOne = a!;
72
- const connTwo = b!;
73
- if (!this.doTypeChecks(connOne, connTwo)) {
74
- return Connection.REASON_CHECKS_FAILED;
75
- }
76
-
77
- if (isDragging &&
78
- !this.doDragChecks(
79
- a as RenderedConnection, b as RenderedConnection,
80
- opt_distance || 0)) {
81
- return Connection.REASON_DRAG_CHECKS_FAILED;
82
- }
83
-
84
- return Connection.CAN_CONNECT;
85
- }
86
-
87
- /**
88
- * Helper method that translates a connection error code into a string.
89
- * @param errorCode The error code.
90
- * @param a One of the two connections being checked.
91
- * @param b The second of the two connections being checked.
92
- * @return A developer-readable error string.
93
- */
94
- getErrorMessage(errorCode: number, a: Connection|null, b: Connection|null):
95
- string {
96
- switch (errorCode) {
97
- case Connection.REASON_SELF_CONNECTION:
98
- return 'Attempted to connect a block to itself.';
99
- case Connection.REASON_DIFFERENT_WORKSPACES:
100
- // Usually this means one block has been deleted.
101
- return 'Blocks not on same workspace.';
102
- case Connection.REASON_WRONG_TYPE:
103
- return 'Attempt to connect incompatible types.';
104
- case Connection.REASON_TARGET_NULL:
105
- return 'Target connection is null.';
106
- case Connection.REASON_CHECKS_FAILED: {
107
- const connOne = a!;
108
- const connTwo = b!;
109
- let msg = 'Connection checks failed. ';
110
- msg += connOne + ' expected ' + connOne.getCheck() + ', found ' +
111
- connTwo.getCheck();
112
- return msg;
113
- }
114
- case Connection.REASON_SHADOW_PARENT:
115
- return 'Connecting non-shadow to shadow block.';
116
- case Connection.REASON_DRAG_CHECKS_FAILED:
117
- return 'Drag checks failed.';
118
- case Connection.REASON_PREVIOUS_AND_OUTPUT:
119
- return 'Block would have an output and a previous connection.';
120
- default:
121
- return 'Unknown connection failure: this should never happen!';
122
- }
123
- }
124
-
125
- /**
126
- * Check that connecting the given connections is safe, meaning that it would
127
- * not break any of Blockly's basic assumptions (e.g. no self connections).
128
- * @param a The first of the connections to check.
129
- * @param b The second of the connections to check.
130
- * @return An enum with the reason this connection is safe or unsafe.
131
- */
132
- doSafetyChecks(a: Connection|null, b: Connection|null): number {
133
- if (!a || !b) {
134
- return Connection.REASON_TARGET_NULL;
135
- }
136
- let superiorBlock;
137
- let inferiorBlock;
138
- let superiorConnection;
139
- let inferiorConnection;
140
- if (a.isSuperior()) {
141
- superiorBlock = a.getSourceBlock();
142
- inferiorBlock = b.getSourceBlock();
143
- superiorConnection = a;
144
- inferiorConnection = b;
145
- } else {
146
- inferiorBlock = a.getSourceBlock();
147
- superiorBlock = b.getSourceBlock();
148
- inferiorConnection = a;
149
- superiorConnection = b;
150
- }
151
- if (superiorBlock === inferiorBlock) {
152
- return Connection.REASON_SELF_CONNECTION;
153
- } else if (
154
- inferiorConnection.type !==
155
- internalConstants.OPPOSITE_TYPE[superiorConnection.type]) {
156
- return Connection.REASON_WRONG_TYPE;
157
- } else if (superiorBlock.workspace !== inferiorBlock.workspace) {
158
- return Connection.REASON_DIFFERENT_WORKSPACES;
159
- } else if (superiorBlock.isShadow() && !inferiorBlock.isShadow()) {
160
- return Connection.REASON_SHADOW_PARENT;
161
- } else if (
162
- inferiorConnection.type === ConnectionType.OUTPUT_VALUE &&
163
- inferiorBlock.previousConnection &&
164
- inferiorBlock.previousConnection.isConnected()) {
165
- return Connection.REASON_PREVIOUS_AND_OUTPUT;
166
- } else if (
167
- inferiorConnection.type === ConnectionType.PREVIOUS_STATEMENT &&
168
- inferiorBlock.outputConnection &&
169
- inferiorBlock.outputConnection.isConnected()) {
170
- return Connection.REASON_PREVIOUS_AND_OUTPUT;
171
- }
172
- return Connection.CAN_CONNECT;
173
- }
174
-
175
- /**
176
- * Check whether this connection is compatible with another connection with
177
- * respect to the value type system. E.g. square_root("Hello") is not
178
- * compatible.
179
- * @param a Connection to compare.
180
- * @param b Connection to compare against.
181
- * @return True if the connections share a type.
182
- */
183
- doTypeChecks(a: Connection, b: Connection): boolean {
184
- const checkArrayOne = a.getCheck();
185
- const checkArrayTwo = b.getCheck();
186
-
187
- if (!checkArrayOne || !checkArrayTwo) {
188
- // One or both sides are promiscuous enough that anything will fit.
189
- return true;
190
- }
191
- // Find any intersection in the check lists.
192
- for (let i = 0; i < checkArrayOne.length; i++) {
193
- if (checkArrayTwo.indexOf(checkArrayOne[i]) !== -1) {
194
- return true;
195
- }
196
- }
197
- // No intersection.
198
- return false;
199
- }
200
-
201
- /**
202
- * Check whether this connection can be made by dragging.
203
- * @param a Connection to compare.
204
- * @param b Connection to compare against.
205
- * @param distance The maximum allowable distance between connections.
206
- * @return True if the connection is allowed during a drag.
207
- */
208
- doDragChecks(a: RenderedConnection, b: RenderedConnection, distance: number):
209
- boolean {
210
- if (a.distanceFrom(b) > distance) {
211
- return false;
212
- }
213
-
214
- // Don't consider insertion markers.
215
- if (b.getSourceBlock().isInsertionMarker()) {
216
- return false;
217
- }
218
-
219
- switch (b.type) {
220
- case ConnectionType.PREVIOUS_STATEMENT:
221
- return this.canConnectToPrevious_(a, b);
222
- case ConnectionType.OUTPUT_VALUE: {
223
- // Don't offer to connect an already connected left (male) value plug to
224
- // an available right (female) value plug.
225
- if (b.isConnected() && !b.targetBlock()!.isInsertionMarker() ||
226
- a.isConnected()) {
227
- return false;
228
- }
229
- break;
230
- }
231
- case ConnectionType.INPUT_VALUE: {
232
- // Offering to connect the left (male) of a value block to an already
233
- // connected value pair is ok, we'll splice it in.
234
- // However, don't offer to splice into an immovable block.
235
- if (b.isConnected() && !b.targetBlock()!.isMovable() &&
236
- !b.targetBlock()!.isShadow()) {
237
- return false;
238
- }
239
- break;
240
- }
241
- case ConnectionType.NEXT_STATEMENT: {
242
- // Don't let a block with no next connection bump other blocks out of
243
- // the stack. But covering up a shadow block or stack of shadow blocks
244
- // is fine. Similarly, replacing a terminal statement with another
245
- // terminal statement is allowed.
246
- if (b.isConnected() && !a.getSourceBlock().nextConnection &&
247
- !b.targetBlock()!.isShadow() && b.targetBlock()!.nextConnection) {
248
- return false;
249
- }
250
- break;
251
- }
252
- default:
253
- // Unexpected connection type.
254
- return false;
255
- }
256
-
257
- // Don't let blocks try to connect to themselves or ones they nest.
258
- if (common.draggingConnections.indexOf(b) !== -1) {
259
- return false;
260
- }
261
-
262
- return true;
263
- }
264
-
265
- /**
266
- * Helper function for drag checking.
267
- * @param a The connection to check, which must be a statement input or next
268
- * connection.
269
- * @param b A nearby connection to check, which must be a previous connection.
270
- * @return True if the connection is allowed, false otherwise.
271
- */
272
- protected canConnectToPrevious_(a: Connection, b: Connection): boolean {
273
- if (a.targetConnection) {
274
- // This connection is already occupied.
275
- // A next connection will never disconnect itself mid-drag.
276
- return false;
277
- }
278
-
279
- // Don't let blocks try to connect to themselves or ones they nest.
280
- if (common.draggingConnections.indexOf(b) !== -1) {
281
- return false;
282
- }
283
-
284
- if (!b.targetConnection) {
285
- return true;
286
- }
287
-
288
- const targetBlock = b.targetBlock();
289
- // If it is connected to a real block, game over.
290
- if (!targetBlock!.isInsertionMarker()) {
291
- return false;
292
- }
293
- // If it's connected to an insertion marker but that insertion marker
294
- // is the first block in a stack, it's still fine. If that insertion
295
- // marker is in the middle of a stack, it won't work.
296
- return !targetBlock!.getPreviousBlock();
297
- }
298
- }
299
-
300
- registry.register(
301
- registry.Type.CONNECTION_CHECKER, registry.DEFAULT, ConnectionChecker);
@@ -1,289 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2011 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
-
7
- /**
8
- * @fileoverview A database of all the rendered connections that could
9
- * possibly be connected to (i.e. not collapsed, etc).
10
- * Sorted by y coordinate.
11
- */
12
-
13
- /**
14
- * A database of all the rendered connections that could
15
- * possibly be connected to (i.e. not collapsed, etc).
16
- * Sorted by y coordinate.
17
- * @class
18
- */
19
- import * as goog from '../closure/goog/goog.js';
20
- goog.declareModuleId('Blockly.ConnectionDB');
21
-
22
- // Unused import preserved for side-effects. Remove if unneeded.
23
- // import './constants.js';
24
-
25
- import {ConnectionType} from './connection_type.js';
26
- import type {IConnectionChecker} from './interfaces/i_connection_checker.js';
27
- import type {RenderedConnection} from './rendered_connection.js';
28
- import type {Coordinate} from './utils/coordinate.js';
29
-
30
-
31
- /**
32
- * Database of connections.
33
- * Connections are stored in order of their vertical component. This way
34
- * connections in an area may be looked up quickly using a binary search.
35
- * @alias Blockly.ConnectionDB
36
- */
37
- export class ConnectionDB {
38
- /** Array of connections sorted by y position in workspace units. */
39
- private readonly connections_: RenderedConnection[] = [];
40
-
41
- /**
42
- * @param connectionChecker The workspace's connection type checker, used to
43
- * decide if connections are valid during a drag.
44
- */
45
- constructor(private readonly connectionChecker: IConnectionChecker) {}
46
-
47
- /**
48
- * Add a connection to the database. Should not already exist in the database.
49
- * @param connection The connection to be added.
50
- * @param yPos The y position used to decide where to insert the connection.
51
- * @internal
52
- */
53
- addConnection(connection: RenderedConnection, yPos: number) {
54
- const index = this.calculateIndexForYPos_(yPos);
55
- this.connections_.splice(index, 0, connection);
56
- }
57
-
58
- /**
59
- * Finds the index of the given connection.
60
- *
61
- * Starts by doing a binary search to find the approximate location, then
62
- * linearly searches nearby for the exact connection.
63
- * @param conn The connection to find.
64
- * @param yPos The y position used to find the index of the connection.
65
- * @return The index of the connection, or -1 if the connection was not found.
66
- */
67
- private findIndexOfConnection_(conn: RenderedConnection, yPos: number):
68
- number {
69
- if (!this.connections_.length) {
70
- return -1;
71
- }
72
-
73
- const bestGuess = this.calculateIndexForYPos_(yPos);
74
- if (bestGuess >= this.connections_.length) {
75
- // Not in list
76
- return -1;
77
- }
78
-
79
- yPos = conn.y;
80
- // Walk forward and back on the y axis looking for the connection.
81
- let pointer = bestGuess;
82
- while (pointer >= 0 && this.connections_[pointer].y === yPos) {
83
- if (this.connections_[pointer] === conn) {
84
- return pointer;
85
- }
86
- pointer--;
87
- }
88
-
89
- pointer = bestGuess;
90
- while (pointer < this.connections_.length &&
91
- this.connections_[pointer].y === yPos) {
92
- if (this.connections_[pointer] === conn) {
93
- return pointer;
94
- }
95
- pointer++;
96
- }
97
- return -1;
98
- }
99
-
100
- /**
101
- * Finds the correct index for the given y position.
102
- * @param yPos The y position used to decide where to insert the connection.
103
- * @return The candidate index.
104
- */
105
- private calculateIndexForYPos_(yPos: number): number {
106
- if (!this.connections_.length) {
107
- return 0;
108
- }
109
- let pointerMin = 0;
110
- let pointerMax = this.connections_.length;
111
- while (pointerMin < pointerMax) {
112
- const pointerMid = Math.floor((pointerMin + pointerMax) / 2);
113
- if (this.connections_[pointerMid].y < yPos) {
114
- pointerMin = pointerMid + 1;
115
- } else if (this.connections_[pointerMid].y > yPos) {
116
- pointerMax = pointerMid;
117
- } else {
118
- pointerMin = pointerMid;
119
- break;
120
- }
121
- }
122
- return pointerMin;
123
- }
124
-
125
- /**
126
- * Remove a connection from the database. Must already exist in DB.
127
- * @param connection The connection to be removed.
128
- * @param yPos The y position used to find the index of the connection.
129
- * @throws {Error} If the connection cannot be found in the database.
130
- */
131
- removeConnection(connection: RenderedConnection, yPos: number) {
132
- const index = this.findIndexOfConnection_(connection, yPos);
133
- if (index === -1) {
134
- throw Error('Unable to find connection in connectionDB.');
135
- }
136
- this.connections_.splice(index, 1);
137
- }
138
-
139
- /**
140
- * Find all nearby connections to the given connection.
141
- * Type checking does not apply, since this function is used for bumping.
142
- * @param connection The connection whose neighbours should be returned.
143
- * @param maxRadius The maximum radius to another connection.
144
- * @return List of connections.
145
- */
146
- getNeighbours(connection: RenderedConnection, maxRadius: number):
147
- RenderedConnection[] {
148
- const db = this.connections_;
149
- const currentX = connection.x;
150
- const currentY = connection.y;
151
-
152
- // Binary search to find the closest y location.
153
- let pointerMin = 0;
154
- let pointerMax = db.length - 2;
155
- let pointerMid = pointerMax;
156
- while (pointerMin < pointerMid) {
157
- if (db[pointerMid].y < currentY) {
158
- pointerMin = pointerMid;
159
- } else {
160
- pointerMax = pointerMid;
161
- }
162
- pointerMid = Math.floor((pointerMin + pointerMax) / 2);
163
- }
164
-
165
- const neighbours: RenderedConnection[] = [];
166
- /**
167
- * Computes if the current connection is within the allowed radius of
168
- * another connection. This function is a closure and has access to outside
169
- * variables.
170
- * @param yIndex The other connection's index in the database.
171
- * @return True if the current connection's vertical distance from the other
172
- * connection is less than the allowed radius.
173
- */
174
- function checkConnection_(yIndex: number): boolean {
175
- const dx = currentX - db[yIndex].x;
176
- const dy = currentY - db[yIndex].y;
177
- const r = Math.sqrt(dx * dx + dy * dy);
178
- if (r <= maxRadius) {
179
- neighbours.push(db[yIndex]);
180
- }
181
- return dy < maxRadius;
182
- }
183
-
184
- // Walk forward and back on the y axis looking for the closest x,y point.
185
- pointerMin = pointerMid;
186
- pointerMax = pointerMid;
187
- if (db.length) {
188
- while (pointerMin >= 0 && checkConnection_(pointerMin)) {
189
- pointerMin--;
190
- }
191
- do {
192
- pointerMax++;
193
- } while (pointerMax < db.length && checkConnection_(pointerMax));
194
- }
195
-
196
- return neighbours;
197
- }
198
-
199
- /**
200
- * Is the candidate connection close to the reference connection.
201
- * Extremely fast; only looks at Y distance.
202
- * @param index Index in database of candidate connection.
203
- * @param baseY Reference connection's Y value.
204
- * @param maxRadius The maximum radius to another connection.
205
- * @return True if connection is in range.
206
- */
207
- private isInYRange_(index: number, baseY: number, maxRadius: number):
208
- boolean {
209
- return Math.abs(this.connections_[index].y - baseY) <= maxRadius;
210
- }
211
-
212
- /**
213
- * Find the closest compatible connection to this connection.
214
- * @param conn The connection searching for a compatible mate.
215
- * @param maxRadius The maximum radius to another connection.
216
- * @param dxy Offset between this connection's location in the database and
217
- * the current location (as a result of dragging).
218
- * @return Contains two properties: 'connection' which is either another
219
- * connection or null, and 'radius' which is the distance.
220
- */
221
- searchForClosest(
222
- conn: RenderedConnection, maxRadius: number,
223
- dxy: Coordinate): {connection: RenderedConnection|null, radius: number} {
224
- if (!this.connections_.length) {
225
- // Don't bother.
226
- return {connection: null, radius: maxRadius};
227
- }
228
-
229
- // Stash the values of x and y from before the drag.
230
- const baseY = conn.y;
231
- const baseX = conn.x;
232
-
233
- conn.x = baseX + dxy.x;
234
- conn.y = baseY + dxy.y;
235
-
236
- // calculateIndexForYPos_ finds an index for insertion, which is always
237
- // after any block with the same y index. We want to search both forward
238
- // and back, so search on both sides of the index.
239
- const closestIndex = this.calculateIndexForYPos_(conn.y);
240
-
241
- let bestConnection = null;
242
- let bestRadius = maxRadius;
243
- let temp;
244
-
245
- // Walk forward and back on the y axis looking for the closest x,y point.
246
- let pointerMin = closestIndex - 1;
247
- while (pointerMin >= 0 && this.isInYRange_(pointerMin, conn.y, maxRadius)) {
248
- temp = this.connections_[pointerMin];
249
- if (this.connectionChecker.canConnect(conn, temp, true, bestRadius)) {
250
- bestConnection = temp;
251
- bestRadius = temp.distanceFrom(conn);
252
- }
253
- pointerMin--;
254
- }
255
-
256
- let pointerMax = closestIndex;
257
- while (pointerMax < this.connections_.length &&
258
- this.isInYRange_(pointerMax, conn.y, maxRadius)) {
259
- temp = this.connections_[pointerMax];
260
- if (this.connectionChecker.canConnect(conn, temp, true, bestRadius)) {
261
- bestConnection = temp;
262
- bestRadius = temp.distanceFrom(conn);
263
- }
264
- pointerMax++;
265
- }
266
-
267
- // Reset the values of x and y.
268
- conn.x = baseX;
269
- conn.y = baseY;
270
- // If there were no valid connections, bestConnection will be null.
271
- return {connection: bestConnection, radius: bestRadius};
272
- }
273
-
274
- /**
275
- * Initialize a set of connection DBs for a workspace.
276
- * @param checker The workspace's connection checker, used to decide if
277
- * connections are valid during a drag.
278
- * @return Array of databases.
279
- */
280
- static init(checker: IConnectionChecker): ConnectionDB[] {
281
- // Create four databases, one for each connection type.
282
- const dbList = [];
283
- dbList[ConnectionType.INPUT_VALUE] = new ConnectionDB(checker);
284
- dbList[ConnectionType.OUTPUT_VALUE] = new ConnectionDB(checker);
285
- dbList[ConnectionType.NEXT_STATEMENT] = new ConnectionDB(checker);
286
- dbList[ConnectionType.PREVIOUS_STATEMENT] = new ConnectionDB(checker);
287
- return dbList;
288
- }
289
- }
@@ -1,32 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2021 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
-
7
- /**
8
- * @fileoverview An enum for the possible types of connections.
9
- */
10
-
11
- /**
12
- * An enum for the possible types of connections.
13
- * @namespace Blockly.ConnectionType
14
- */
15
- import * as goog from '../closure/goog/goog.js';
16
- goog.declareModuleId('Blockly.ConnectionType');
17
-
18
-
19
- /**
20
- * Enum for the type of a connection or input.
21
- * @alias Blockly.ConnectionType
22
- */
23
- export enum ConnectionType {
24
- // A right-facing value input. E.g. 'set item to' or 'return'.
25
- INPUT_VALUE = 1,
26
- // A left-facing value output. E.g. 'random fraction'.
27
- OUTPUT_VALUE,
28
- // A down-facing block stack. E.g. 'if-do' or 'else'.
29
- NEXT_STATEMENT,
30
- // An up-facing block stack. E.g. 'break out of loop'.
31
- PREVIOUS_STATEMENT
32
- }
package/core/constants.ts DELETED
@@ -1,29 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2016 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
-
7
- /**
8
- * @fileoverview Blockly constants.
9
- */
10
-
11
- /**
12
- * Blockly constants.
13
- * @namespace Blockly.constants
14
- */
15
- import * as goog from '../closure/goog/goog.js';
16
- goog.declareModuleId('Blockly.constants');
17
-
18
-
19
- /**
20
- * The language-neutral ID given to the collapsed input.
21
- * @alias Blockly.constants.COLLAPSED_INPUT_NAME
22
- */
23
- export const COLLAPSED_INPUT_NAME = '_TEMP_COLLAPSED_INPUT';
24
-
25
- /**
26
- * The language-neutral ID given to the collapsed field.
27
- * @alias Blockly.constants.COLLAPSED_FIELD_NAME
28
- */
29
- export const COLLAPSED_FIELD_NAME = '_TEMP_COLLAPSED_FIELD';