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
@@ -1,717 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2019 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
-
7
- /**
8
- * @fileoverview The class representing an AST node.
9
- * Used to traverse the Blockly AST.
10
- */
11
-
12
- /**
13
- * The class representing an AST node.
14
- * Used to traverse the Blockly AST.
15
- * @class
16
- */
17
- import * as goog from '../../closure/goog/goog.js';
18
- goog.declareModuleId('Blockly.ASTNode');
19
-
20
- import type {Block} from '../block.js';
21
- import type {Connection} from '../connection.js';
22
- import {ConnectionType} from '../connection_type.js';
23
- import type {Field} from '../field.js';
24
- import type {Input} from '../input.js';
25
- import type {IASTNodeLocation} from '../interfaces/i_ast_node_location.js';
26
- import type {IASTNodeLocationWithBlock} from '../interfaces/i_ast_node_location_with_block.js';
27
- import {Coordinate} from '../utils/coordinate.js';
28
- import type {Workspace} from '../workspace.js';
29
-
30
-
31
- /**
32
- * Class for an AST node.
33
- * It is recommended that you use one of the createNode methods instead of
34
- * creating a node directly.
35
- * @alias Blockly.ASTNode
36
- */
37
- export class ASTNode {
38
- /**
39
- * True to navigate to all fields. False to only navigate to clickable fields.
40
- */
41
- static NAVIGATE_ALL_FIELDS = false;
42
-
43
- /**
44
- * The default y offset to use when moving the cursor from a stack to the
45
- * workspace.
46
- */
47
- private static readonly DEFAULT_OFFSET_Y: number = -20;
48
- private readonly type_: string;
49
- private readonly isConnection_: boolean;
50
- private readonly location_: IASTNodeLocation;
51
-
52
- /** The coordinate on the workspace. */
53
- // AnyDuringMigration because: Type 'null' is not assignable to type
54
- // 'Coordinate'.
55
- private wsCoordinate_: Coordinate = null as AnyDuringMigration;
56
-
57
- /**
58
- * @param type The type of the location.
59
- * Must be in ASTNode.types.
60
- * @param location The position in the AST.
61
- * @param opt_params Optional dictionary of options.
62
- * @alias Blockly.ASTNode
63
- */
64
- constructor(type: string, location: IASTNodeLocation, opt_params?: Params) {
65
- if (!location) {
66
- throw Error('Cannot create a node without a location.');
67
- }
68
-
69
- /**
70
- * The type of the location.
71
- * One of ASTNode.types
72
- */
73
- this.type_ = type;
74
-
75
- /** Whether the location points to a connection. */
76
- this.isConnection_ = ASTNode.isConnectionType_(type);
77
-
78
- /** The location of the AST node. */
79
- this.location_ = location;
80
-
81
- this.processParams_(opt_params || null);
82
- }
83
-
84
- /**
85
- * Parse the optional parameters.
86
- * @param params The user specified parameters.
87
- */
88
- private processParams_(params: Params|null) {
89
- if (!params) {
90
- return;
91
- }
92
- if (params.wsCoordinate) {
93
- this.wsCoordinate_ = params.wsCoordinate;
94
- }
95
- }
96
-
97
- /**
98
- * Gets the value pointed to by this node.
99
- * It is the callers responsibility to check the node type to figure out what
100
- * type of object they get back from this.
101
- * @return The current field, connection, workspace, or block the cursor is
102
- * on.
103
- */
104
- getLocation(): IASTNodeLocation {
105
- return this.location_;
106
- }
107
-
108
- /**
109
- * The type of the current location.
110
- * One of ASTNode.types
111
- * @return The type of the location.
112
- */
113
- getType(): string {
114
- return this.type_;
115
- }
116
-
117
- /**
118
- * The coordinate on the workspace.
119
- * @return The workspace coordinate or null if the location is not a
120
- * workspace.
121
- */
122
- getWsCoordinate(): Coordinate {
123
- return this.wsCoordinate_;
124
- }
125
-
126
- /**
127
- * Whether the node points to a connection.
128
- * @return [description]
129
- * @internal
130
- */
131
- isConnection(): boolean {
132
- return this.isConnection_;
133
- }
134
-
135
- /**
136
- * Given an input find the next editable field or an input with a non null
137
- * connection in the same block. The current location must be an input
138
- * connection.
139
- * @return The AST node holding the next field or connection or null if there
140
- * is no editable field or input connection after the given input.
141
- */
142
- private findNextForInput_(): ASTNode|null {
143
- const location = this.location_ as Connection;
144
- const parentInput = location.getParentInput();
145
- const block = parentInput!.getSourceBlock();
146
- // AnyDuringMigration because: Argument of type 'Input | null' is not
147
- // assignable to parameter of type 'Input'.
148
- const curIdx = block!.inputList.indexOf(parentInput as AnyDuringMigration);
149
- for (let i = curIdx + 1; i < block!.inputList.length; i++) {
150
- const input = block!.inputList[i];
151
- const fieldRow = input.fieldRow;
152
- for (let j = 0; j < fieldRow.length; j++) {
153
- const field = fieldRow[j];
154
- if (field.isClickable() || ASTNode.NAVIGATE_ALL_FIELDS) {
155
- return ASTNode.createFieldNode(field);
156
- }
157
- }
158
- if (input.connection) {
159
- return ASTNode.createInputNode(input);
160
- }
161
- }
162
- return null;
163
- }
164
-
165
- /**
166
- * Given a field find the next editable field or an input with a non null
167
- * connection in the same block. The current location must be a field.
168
- * @return The AST node pointing to the next field or connection or null if
169
- * there is no editable field or input connection after the given input.
170
- */
171
- private findNextForField_(): ASTNode|null {
172
- const location = this.location_ as Field;
173
- const input = location.getParentInput();
174
- const block = location.getSourceBlock();
175
- const curIdx = block.inputList.indexOf((input));
176
- let fieldIdx = input.fieldRow.indexOf(location) + 1;
177
- for (let i = curIdx; i < block.inputList.length; i++) {
178
- const newInput = block.inputList[i];
179
- const fieldRow = newInput.fieldRow;
180
- while (fieldIdx < fieldRow.length) {
181
- if (fieldRow[fieldIdx].isClickable() || ASTNode.NAVIGATE_ALL_FIELDS) {
182
- return ASTNode.createFieldNode(fieldRow[fieldIdx]);
183
- }
184
- fieldIdx++;
185
- }
186
- fieldIdx = 0;
187
- if (newInput.connection) {
188
- return ASTNode.createInputNode(newInput);
189
- }
190
- }
191
- return null;
192
- }
193
-
194
- /**
195
- * Given an input find the previous editable field or an input with a non null
196
- * connection in the same block. The current location must be an input
197
- * connection.
198
- * @return The AST node holding the previous field or connection.
199
- */
200
- private findPrevForInput_(): ASTNode|null {
201
- const location = this.location_ as Connection;
202
- const parentInput = location.getParentInput();
203
- const block = parentInput!.getSourceBlock();
204
- // AnyDuringMigration because: Argument of type 'Input | null' is not
205
- // assignable to parameter of type 'Input'.
206
- const curIdx = block!.inputList.indexOf(parentInput as AnyDuringMigration);
207
- for (let i = curIdx; i >= 0; i--) {
208
- const input = block!.inputList[i];
209
- if (input.connection && input !== parentInput) {
210
- return ASTNode.createInputNode(input);
211
- }
212
- const fieldRow = input.fieldRow;
213
- for (let j = fieldRow.length - 1; j >= 0; j--) {
214
- const field = fieldRow[j];
215
- if (field.isClickable() || ASTNode.NAVIGATE_ALL_FIELDS) {
216
- return ASTNode.createFieldNode(field);
217
- }
218
- }
219
- }
220
- return null;
221
- }
222
-
223
- /**
224
- * Given a field find the previous editable field or an input with a non null
225
- * connection in the same block. The current location must be a field.
226
- * @return The AST node holding the previous input or field.
227
- */
228
- private findPrevForField_(): ASTNode|null {
229
- const location = this.location_ as Field;
230
- const parentInput = location.getParentInput();
231
- const block = location.getSourceBlock();
232
- const curIdx = block.inputList.indexOf((parentInput));
233
- let fieldIdx = parentInput.fieldRow.indexOf(location) - 1;
234
- for (let i = curIdx; i >= 0; i--) {
235
- const input = block.inputList[i];
236
- if (input.connection && input !== parentInput) {
237
- return ASTNode.createInputNode(input);
238
- }
239
- const fieldRow = input.fieldRow;
240
- while (fieldIdx > -1) {
241
- if (fieldRow[fieldIdx].isClickable() || ASTNode.NAVIGATE_ALL_FIELDS) {
242
- return ASTNode.createFieldNode(fieldRow[fieldIdx]);
243
- }
244
- fieldIdx--;
245
- }
246
- // Reset the fieldIdx to the length of the field row of the previous
247
- // input.
248
- if (i - 1 >= 0) {
249
- fieldIdx = block.inputList[i - 1].fieldRow.length - 1;
250
- }
251
- }
252
- return null;
253
- }
254
-
255
- /**
256
- * Navigate between stacks of blocks on the workspace.
257
- * @param forward True to go forward. False to go backwards.
258
- * @return The first block of the next stack or null if there are no blocks on
259
- * the workspace.
260
- */
261
- private navigateBetweenStacks_(forward: boolean): ASTNode|null {
262
- let curLocation = this.getLocation();
263
- // TODO(#6097): Use instanceof checks to exit early for values of
264
- // curLocation that don't make sense.
265
- if ((curLocation as IASTNodeLocationWithBlock).getSourceBlock) {
266
- curLocation = (curLocation as IASTNodeLocationWithBlock).getSourceBlock();
267
- }
268
- // TODO(#6097): Use instanceof checks to exit early for values of
269
- // curLocation that don't make sense.
270
- const curLocationAsBlock = curLocation as Block;
271
- if (!curLocationAsBlock || curLocationAsBlock.disposed) {
272
- return null;
273
- }
274
- const curRoot = curLocationAsBlock.getRootBlock();
275
- const topBlocks = curRoot.workspace.getTopBlocks(true);
276
- for (let i = 0; i < topBlocks.length; i++) {
277
- const topBlock = topBlocks[i];
278
- if (curRoot.id === topBlock.id) {
279
- const offset = forward ? 1 : -1;
280
- const resultIndex = i + offset;
281
- if (resultIndex === -1 || resultIndex === topBlocks.length) {
282
- return null;
283
- }
284
- return ASTNode.createStackNode(topBlocks[resultIndex]);
285
- }
286
- }
287
- throw Error(
288
- 'Couldn\'t find ' + (forward ? 'next' : 'previous') + ' stack?!');
289
- }
290
-
291
- /**
292
- * Finds the top most AST node for a given block.
293
- * This is either the previous connection, output connection or block
294
- * depending on what kind of connections the block has.
295
- * @param block The block that we want to find the top connection on.
296
- * @return The AST node containing the top connection.
297
- */
298
- private findTopASTNodeForBlock_(block: Block): ASTNode|null {
299
- const topConnection = getParentConnection(block);
300
- if (topConnection) {
301
- return ASTNode.createConnectionNode(topConnection);
302
- } else {
303
- return ASTNode.createBlockNode(block);
304
- }
305
- }
306
-
307
- /**
308
- * Get the AST node pointing to the input that the block is nested under or if
309
- * the block is not nested then get the stack AST node.
310
- * @param block The source block of the current location.
311
- * @return The AST node pointing to the input connection or the top block of
312
- * the stack this block is in.
313
- */
314
- private getOutAstNodeForBlock_(block: Block): ASTNode|null {
315
- if (!block) {
316
- return null;
317
- }
318
- // If the block doesn't have a previous connection then it is the top of the
319
- // substack.
320
- const topBlock = block.getTopStackBlock();
321
- const topConnection = getParentConnection(topBlock);
322
- // If the top connection has a parentInput, create an AST node pointing to
323
- // that input.
324
- if (topConnection && topConnection.targetConnection &&
325
- topConnection.targetConnection.getParentInput()) {
326
- // AnyDuringMigration because: Argument of type 'Input | null' is not
327
- // assignable to parameter of type 'Input'.
328
- return ASTNode.createInputNode(
329
- topConnection.targetConnection.getParentInput() as
330
- AnyDuringMigration);
331
- } else {
332
- // Go to stack level if you are not underneath an input.
333
- return ASTNode.createStackNode(topBlock);
334
- }
335
- }
336
-
337
- /**
338
- * Find the first editable field or input with a connection on a given block.
339
- * @param block The source block of the current location.
340
- * @return An AST node pointing to the first field or input.
341
- * Null if there are no editable fields or inputs with connections on the
342
- * block.
343
- */
344
- private findFirstFieldOrInput_(block: Block): ASTNode|null {
345
- const inputs = block.inputList;
346
- for (let i = 0; i < inputs.length; i++) {
347
- const input = inputs[i];
348
- const fieldRow = input.fieldRow;
349
- for (let j = 0; j < fieldRow.length; j++) {
350
- const field = fieldRow[j];
351
- if (field.isClickable() || ASTNode.NAVIGATE_ALL_FIELDS) {
352
- return ASTNode.createFieldNode(field);
353
- }
354
- }
355
- if (input.connection) {
356
- return ASTNode.createInputNode(input);
357
- }
358
- }
359
- return null;
360
- }
361
-
362
- /**
363
- * Finds the source block of the location of this node.
364
- * @return The source block of the location, or null if the node is of type
365
- * workspace.
366
- */
367
- getSourceBlock(): Block|null {
368
- if (this.getType() === ASTNode.types.BLOCK) {
369
- return this.getLocation() as Block;
370
- } else if (this.getType() === ASTNode.types.STACK) {
371
- return this.getLocation() as Block;
372
- } else if (this.getType() === ASTNode.types.WORKSPACE) {
373
- return null;
374
- } else {
375
- return (this.getLocation() as IASTNodeLocationWithBlock).getSourceBlock();
376
- }
377
- }
378
-
379
- /**
380
- * Find the element to the right of the current element in the AST.
381
- * @return An AST node that wraps the next field, connection, block, or
382
- * workspace. Or null if there is no node to the right.
383
- */
384
- next(): ASTNode|null {
385
- switch (this.type_) {
386
- case ASTNode.types.STACK:
387
- return this.navigateBetweenStacks_(true);
388
-
389
- case ASTNode.types.OUTPUT: {
390
- const connection = this.location_ as Connection;
391
- return ASTNode.createBlockNode(connection.getSourceBlock());
392
- }
393
- case ASTNode.types.FIELD:
394
- return this.findNextForField_();
395
-
396
- case ASTNode.types.INPUT:
397
- return this.findNextForInput_();
398
-
399
- case ASTNode.types.BLOCK: {
400
- const block = this.location_ as Block;
401
- const nextConnection = block.nextConnection;
402
- return ASTNode.createConnectionNode(nextConnection);
403
- }
404
- case ASTNode.types.PREVIOUS: {
405
- const connection = this.location_ as Connection;
406
- return ASTNode.createBlockNode(connection.getSourceBlock());
407
- }
408
- case ASTNode.types.NEXT: {
409
- const connection = this.location_ as Connection;
410
- const targetConnection = connection.targetConnection;
411
- return ASTNode.createConnectionNode(targetConnection!);
412
- }
413
- }
414
-
415
- return null;
416
- }
417
-
418
- /**
419
- * Find the element one level below and all the way to the left of the current
420
- * location.
421
- * @return An AST node that wraps the next field, connection, workspace, or
422
- * block. Or null if there is nothing below this node.
423
- */
424
- in(): ASTNode|null {
425
- switch (this.type_) {
426
- case ASTNode.types.WORKSPACE: {
427
- const workspace = this.location_ as Workspace;
428
- const topBlocks = workspace.getTopBlocks(true);
429
- if (topBlocks.length > 0) {
430
- return ASTNode.createStackNode(topBlocks[0]);
431
- }
432
- break;
433
- }
434
- case ASTNode.types.STACK: {
435
- const block = this.location_ as Block;
436
- return this.findTopASTNodeForBlock_(block);
437
- }
438
- case ASTNode.types.BLOCK: {
439
- const block = this.location_ as Block;
440
- return this.findFirstFieldOrInput_(block);
441
- }
442
- case ASTNode.types.INPUT: {
443
- const connection = this.location_ as Connection;
444
- const targetConnection = connection.targetConnection;
445
- return ASTNode.createConnectionNode(targetConnection!);
446
- }
447
- }
448
-
449
- return null;
450
- }
451
-
452
- /**
453
- * Find the element to the left of the current element in the AST.
454
- * @return An AST node that wraps the previous field, connection, workspace or
455
- * block. Or null if no node exists to the left.
456
- * null.
457
- */
458
- prev(): ASTNode|null {
459
- switch (this.type_) {
460
- case ASTNode.types.STACK:
461
- return this.navigateBetweenStacks_(false);
462
-
463
- case ASTNode.types.OUTPUT:
464
- return null;
465
-
466
- case ASTNode.types.FIELD:
467
- return this.findPrevForField_();
468
-
469
- case ASTNode.types.INPUT:
470
- return this.findPrevForInput_();
471
-
472
- case ASTNode.types.BLOCK: {
473
- const block = this.location_ as Block;
474
- const topConnection = getParentConnection(block);
475
- return ASTNode.createConnectionNode(topConnection);
476
- }
477
- case ASTNode.types.PREVIOUS: {
478
- const connection = this.location_ as Connection;
479
- const targetConnection = connection.targetConnection;
480
- if (targetConnection && !targetConnection.getParentInput()) {
481
- return ASTNode.createConnectionNode(targetConnection);
482
- }
483
- break;
484
- }
485
- case ASTNode.types.NEXT: {
486
- const connection = this.location_ as Connection;
487
- return ASTNode.createBlockNode(connection.getSourceBlock());
488
- }
489
- }
490
-
491
- return null;
492
- }
493
-
494
- /**
495
- * Find the next element that is one position above and all the way to the
496
- * left of the current location.
497
- * @return An AST node that wraps the next field, connection, workspace or
498
- * block. Or null if we are at the workspace level.
499
- */
500
- out(): ASTNode|null {
501
- switch (this.type_) {
502
- case ASTNode.types.STACK: {
503
- const block = this.location_ as Block;
504
- const blockPos = block.getRelativeToSurfaceXY();
505
- // TODO: Make sure this is in the bounds of the workspace.
506
- const wsCoordinate =
507
- new Coordinate(blockPos.x, blockPos.y + ASTNode.DEFAULT_OFFSET_Y);
508
- return ASTNode.createWorkspaceNode(block.workspace, wsCoordinate);
509
- }
510
- case ASTNode.types.OUTPUT: {
511
- const connection = this.location_ as Connection;
512
- const target = connection.targetConnection;
513
- if (target) {
514
- return ASTNode.createConnectionNode(target);
515
- }
516
- return ASTNode.createStackNode(connection.getSourceBlock());
517
- }
518
- case ASTNode.types.FIELD: {
519
- const field = this.location_ as Field;
520
- return ASTNode.createBlockNode(field.getSourceBlock());
521
- }
522
- case ASTNode.types.INPUT: {
523
- const connection = this.location_ as Connection;
524
- return ASTNode.createBlockNode(connection.getSourceBlock());
525
- }
526
- case ASTNode.types.BLOCK: {
527
- const block = this.location_ as Block;
528
- return this.getOutAstNodeForBlock_(block);
529
- }
530
- case ASTNode.types.PREVIOUS: {
531
- const connection = this.location_ as Connection;
532
- return this.getOutAstNodeForBlock_(connection.getSourceBlock());
533
- }
534
- case ASTNode.types.NEXT: {
535
- const connection = this.location_ as Connection;
536
- return this.getOutAstNodeForBlock_(connection.getSourceBlock());
537
- }
538
- }
539
-
540
- return null;
541
- }
542
-
543
- /**
544
- * Whether an AST node of the given type points to a connection.
545
- * @param type The type to check. One of ASTNode.types.
546
- * @return True if a node of the given type points to a connection.
547
- */
548
- private static isConnectionType_(type: string): boolean {
549
- switch (type) {
550
- case ASTNode.types.PREVIOUS:
551
- case ASTNode.types.NEXT:
552
- case ASTNode.types.INPUT:
553
- case ASTNode.types.OUTPUT:
554
- return true;
555
- }
556
- return false;
557
- }
558
-
559
- /**
560
- * Create an AST node pointing to a field.
561
- * @param field The location of the AST node.
562
- * @return An AST node pointing to a field.
563
- */
564
- static createFieldNode(field: Field): ASTNode|null {
565
- if (!field) {
566
- return null;
567
- }
568
- return new ASTNode(ASTNode.types.FIELD, field);
569
- }
570
-
571
- /**
572
- * Creates an AST node pointing to a connection. If the connection has a
573
- * parent input then create an AST node of type input that will hold the
574
- * connection.
575
- * @param connection This is the connection the node will point to.
576
- * @return An AST node pointing to a connection.
577
- */
578
- static createConnectionNode(connection: Connection): ASTNode|null {
579
- if (!connection) {
580
- return null;
581
- }
582
- const type = connection.type;
583
- if (type === ConnectionType.INPUT_VALUE) {
584
- // AnyDuringMigration because: Argument of type 'Input | null' is not
585
- // assignable to parameter of type 'Input'.
586
- return ASTNode.createInputNode(
587
- connection.getParentInput() as AnyDuringMigration);
588
- } else if (
589
- type === ConnectionType.NEXT_STATEMENT && connection.getParentInput()) {
590
- // AnyDuringMigration because: Argument of type 'Input | null' is not
591
- // assignable to parameter of type 'Input'.
592
- return ASTNode.createInputNode(
593
- connection.getParentInput() as AnyDuringMigration);
594
- } else if (type === ConnectionType.NEXT_STATEMENT) {
595
- return new ASTNode(ASTNode.types.NEXT, connection);
596
- } else if (type === ConnectionType.OUTPUT_VALUE) {
597
- return new ASTNode(ASTNode.types.OUTPUT, connection);
598
- } else if (type === ConnectionType.PREVIOUS_STATEMENT) {
599
- return new ASTNode(ASTNode.types.PREVIOUS, connection);
600
- }
601
- return null;
602
- }
603
-
604
- /**
605
- * Creates an AST node pointing to an input. Stores the input connection as
606
- * the location.
607
- * @param input The input used to create an AST node.
608
- * @return An AST node pointing to a input.
609
- */
610
- static createInputNode(input: Input): ASTNode|null {
611
- if (!input || !input.connection) {
612
- return null;
613
- }
614
- return new ASTNode(ASTNode.types.INPUT, input.connection);
615
- }
616
-
617
- /**
618
- * Creates an AST node pointing to a block.
619
- * @param block The block used to create an AST node.
620
- * @return An AST node pointing to a block.
621
- */
622
- static createBlockNode(block: Block): ASTNode|null {
623
- if (!block) {
624
- return null;
625
- }
626
- return new ASTNode(ASTNode.types.BLOCK, block);
627
- }
628
-
629
- /**
630
- * Create an AST node of type stack. A stack, represented by its top block, is
631
- * the set of all blocks connected to a top block, including the top
632
- * block.
633
- * @param topBlock A top block has no parent and can be found in the list
634
- * returned by workspace.getTopBlocks().
635
- * @return An AST node of type stack that points to the top block on the
636
- * stack.
637
- */
638
- static createStackNode(topBlock: Block): ASTNode|null {
639
- if (!topBlock) {
640
- return null;
641
- }
642
- return new ASTNode(ASTNode.types.STACK, topBlock);
643
- }
644
-
645
- /**
646
- * Creates an AST node pointing to a workspace.
647
- * @param workspace The workspace that we are on.
648
- * @param wsCoordinate The position on the workspace for this node.
649
- * @return An AST node pointing to a workspace and a position on the
650
- * workspace.
651
- */
652
- static createWorkspaceNode(
653
- workspace: Workspace|null, wsCoordinate: Coordinate|null): ASTNode|null {
654
- if (!wsCoordinate || !workspace) {
655
- return null;
656
- }
657
- const params = {wsCoordinate};
658
- return new ASTNode(ASTNode.types.WORKSPACE, workspace, params);
659
- }
660
-
661
- /**
662
- * Creates an AST node for the top position on a block.
663
- * This is either an output connection, previous connection, or block.
664
- * @param block The block to find the top most AST node on.
665
- * @return The AST node holding the top most position on the block.
666
- */
667
- static createTopNode(block: Block): ASTNode|null {
668
- let astNode;
669
- const topConnection = getParentConnection(block);
670
- if (topConnection) {
671
- astNode = ASTNode.createConnectionNode(topConnection);
672
- } else {
673
- astNode = ASTNode.createBlockNode(block);
674
- }
675
- return astNode;
676
- }
677
- }
678
-
679
- export namespace ASTNode {
680
- export interface Params {
681
- wsCoordinate: Coordinate;
682
- }
683
-
684
- export enum types {
685
- FIELD = 'field',
686
- BLOCK = 'block',
687
- INPUT = 'input',
688
- OUTPUT = 'output',
689
- NEXT = 'next',
690
- PREVIOUS = 'previous',
691
- STACK = 'stack',
692
- WORKSPACE = 'workspace',
693
- }
694
- }
695
-
696
- export type Params = ASTNode.Params;
697
- // No need to export ASTNode.types from the module at this time because (1) it
698
- // wasn't automatically converted by the automatic migration script, (2) the
699
- // name doesn't follow the styleguide.
700
-
701
-
702
- /**
703
- * Gets the parent connection on a block.
704
- * This is either an output connection, previous connection or undefined.
705
- * If both connections exist return the one that is actually connected
706
- * to another block.
707
- * @param block The block to find the parent connection on.
708
- * @return The connection connecting to the parent of the block.
709
- */
710
- function getParentConnection(block: Block): Connection {
711
- let topConnection = block.outputConnection;
712
- if (!topConnection ||
713
- block.previousConnection && block.previousConnection.isConnected()) {
714
- topConnection = block.previousConnection;
715
- }
716
- return topConnection;
717
- }