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,292 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2016 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
-
7
- /**
8
- * @fileoverview Class for a button in the flyout.
9
- */
10
-
11
- /**
12
- * Class for a button in the flyout.
13
- * @class
14
- */
15
- import * as goog from '../closure/goog/goog.js';
16
- goog.declareModuleId('Blockly.FlyoutButton');
17
-
18
- import * as browserEvents from './browser_events.js';
19
- import * as Css from './css.js';
20
- import {Coordinate} from './utils/coordinate.js';
21
- import * as dom from './utils/dom.js';
22
- import * as parsing from './utils/parsing.js';
23
- import * as style from './utils/style.js';
24
- import {Svg} from './utils/svg.js';
25
- import type * as toolbox from './utils/toolbox.js';
26
- import type {WorkspaceSvg} from './workspace_svg.js';
27
-
28
-
29
- /**
30
- * Class for a button or label in the flyout.
31
- * @alias Blockly.FlyoutButton
32
- */
33
- export class FlyoutButton {
34
- /** The horizontal margin around the text in the button. */
35
- static TEXT_MARGIN_X = 5;
36
-
37
- /** The vertical margin around the text in the button. */
38
- static TEXT_MARGIN_Y = 2;
39
- private readonly text_: string;
40
- private readonly position_: Coordinate;
41
- private readonly callbackKey_: string;
42
- private readonly cssClass_: string|null;
43
-
44
- /** Mouse up event data. */
45
- private onMouseUpWrapper_: browserEvents.Data|null = null;
46
- info: toolbox.ButtonOrLabelInfo;
47
-
48
- /** The width of the button's rect. */
49
- width = 0;
50
-
51
- /** The height of the button's rect. */
52
- height = 0;
53
-
54
- /** The root SVG group for the button or label. */
55
- private svgGroup_: SVGGElement|null = null;
56
-
57
- /** The SVG element with the text of the label or button. */
58
- private svgText_: SVGTextElement|null = null;
59
-
60
- /**
61
- * @param workspace The workspace in which to place this button.
62
- * @param targetWorkspace The flyout's target workspace.
63
- * @param json The JSON specifying the label/button.
64
- * @param isLabel_ Whether this button should be styled as a label.
65
- * @internal
66
- */
67
- constructor(
68
- private readonly workspace: WorkspaceSvg,
69
- private readonly targetWorkspace: WorkspaceSvg,
70
- json: toolbox.ButtonOrLabelInfo, private readonly isLabel_: boolean) {
71
- this.text_ = json['text'];
72
-
73
- this.position_ = new Coordinate(0, 0);
74
-
75
- /** The key to the function called when this button is clicked. */
76
- this.callbackKey_ =
77
- (json as
78
- AnyDuringMigration)['callbackKey'] || /* Check the lower case version
79
- too to satisfy IE */
80
- (json as AnyDuringMigration)['callbackkey'];
81
-
82
- /** If specified, a CSS class to add to this button. */
83
- this.cssClass_ = (json as AnyDuringMigration)['web-class'] || null;
84
-
85
- /** The JSON specifying the label / button. */
86
- this.info = json;
87
- }
88
-
89
- /**
90
- * Create the button elements.
91
- * @return The button's SVG group.
92
- */
93
- createDom(): SVGElement {
94
- let cssClass = this.isLabel_ ? 'blocklyFlyoutLabel' : 'blocklyFlyoutButton';
95
- if (this.cssClass_) {
96
- cssClass += ' ' + this.cssClass_;
97
- }
98
-
99
- this.svgGroup_ = dom.createSvgElement(
100
- Svg.G, {'class': cssClass}, this.workspace.getCanvas());
101
-
102
- let shadow;
103
- if (!this.isLabel_) {
104
- // Shadow rectangle (light source does not mirror in RTL).
105
- shadow = dom.createSvgElement(
106
- Svg.RECT, {
107
- 'class': 'blocklyFlyoutButtonShadow',
108
- 'rx': 4,
109
- 'ry': 4,
110
- 'x': 1,
111
- 'y': 1,
112
- },
113
- this.svgGroup_!);
114
- }
115
- // Background rectangle.
116
- const rect = dom.createSvgElement(
117
- Svg.RECT, {
118
- 'class': this.isLabel_ ? 'blocklyFlyoutLabelBackground' :
119
- 'blocklyFlyoutButtonBackground',
120
- 'rx': 4,
121
- 'ry': 4,
122
- },
123
- this.svgGroup_!);
124
-
125
- const svgText = dom.createSvgElement(
126
- Svg.TEXT, {
127
- 'class': this.isLabel_ ? 'blocklyFlyoutLabelText' : 'blocklyText',
128
- 'x': 0,
129
- 'y': 0,
130
- 'text-anchor': 'middle',
131
- },
132
- this.svgGroup_!);
133
- let text = parsing.replaceMessageReferences(this.text_);
134
- if (this.workspace.RTL) {
135
- // Force text to be RTL by adding an RLM.
136
- text += '\u200F';
137
- }
138
- svgText.textContent = text;
139
- if (this.isLabel_) {
140
- this.svgText_ = svgText;
141
- this.workspace.getThemeManager().subscribe(
142
- this.svgText_, 'flyoutForegroundColour', 'fill');
143
- }
144
-
145
- const fontSize = style.getComputedStyle(svgText, 'fontSize');
146
- const fontWeight = style.getComputedStyle(svgText, 'fontWeight');
147
- const fontFamily = style.getComputedStyle(svgText, 'fontFamily');
148
- this.width = dom.getFastTextWidthWithSizeString(
149
- svgText, fontSize, fontWeight, fontFamily);
150
- const fontMetrics =
151
- dom.measureFontMetrics(text, fontSize, fontWeight, fontFamily);
152
- this.height = fontMetrics.height;
153
-
154
- if (!this.isLabel_) {
155
- this.width += 2 * FlyoutButton.TEXT_MARGIN_X;
156
- this.height += 2 * FlyoutButton.TEXT_MARGIN_Y;
157
- shadow?.setAttribute('width', this.width.toString());
158
- shadow?.setAttribute('height', this.height.toString());
159
- }
160
- rect.setAttribute('width', this.width.toString());
161
- rect.setAttribute('height', this.height.toString());
162
-
163
- svgText.setAttribute('x', (this.width / 2).toString());
164
- svgText.setAttribute(
165
- 'y',
166
- (this.height / 2 - fontMetrics.height / 2 + fontMetrics.baseline)
167
- .toString());
168
-
169
- this.updateTransform_();
170
-
171
- // AnyDuringMigration because: Argument of type 'SVGGElement | null' is not
172
- // assignable to parameter of type 'EventTarget'.
173
- this.onMouseUpWrapper_ = browserEvents.conditionalBind(
174
- this.svgGroup_ as AnyDuringMigration, 'mouseup', this, this.onMouseUp_);
175
- return this.svgGroup_!;
176
- }
177
-
178
- /** Correctly position the flyout button and make it visible. */
179
- show() {
180
- this.updateTransform_();
181
- this.svgGroup_!.setAttribute('display', 'block');
182
- }
183
-
184
- /** Update SVG attributes to match internal state. */
185
- private updateTransform_() {
186
- this.svgGroup_!.setAttribute(
187
- 'transform',
188
- 'translate(' + this.position_.x + ',' + this.position_.y + ')');
189
- }
190
-
191
- /**
192
- * Move the button to the given x, y coordinates.
193
- * @param x The new x coordinate.
194
- * @param y The new y coordinate.
195
- */
196
- moveTo(x: number, y: number) {
197
- this.position_.x = x;
198
- this.position_.y = y;
199
- this.updateTransform_();
200
- }
201
-
202
- /** @return Whether or not the button is a label. */
203
- isLabel(): boolean {
204
- return this.isLabel_;
205
- }
206
-
207
- /**
208
- * Location of the button.
209
- * @return x, y coordinates.
210
- * @internal
211
- */
212
- getPosition(): Coordinate {
213
- return this.position_;
214
- }
215
-
216
- /** @return Text of the button. */
217
- getButtonText(): string {
218
- return this.text_;
219
- }
220
-
221
- /**
222
- * Get the button's target workspace.
223
- * @return The target workspace of the flyout where this button resides.
224
- */
225
- getTargetWorkspace(): WorkspaceSvg {
226
- return this.targetWorkspace;
227
- }
228
-
229
- /** Dispose of this button. */
230
- dispose() {
231
- if (this.onMouseUpWrapper_) {
232
- browserEvents.unbind(this.onMouseUpWrapper_);
233
- }
234
- if (this.svgGroup_) {
235
- dom.removeNode(this.svgGroup_);
236
- }
237
- if (this.svgText_) {
238
- this.workspace.getThemeManager().unsubscribe(this.svgText_);
239
- }
240
- }
241
-
242
- /**
243
- * Do something when the button is clicked.
244
- * @param e Mouse up event.
245
- */
246
- private onMouseUp_(e: Event) {
247
- const gesture = this.targetWorkspace.getGesture(e);
248
- if (gesture) {
249
- gesture.cancel();
250
- }
251
-
252
- if (this.isLabel_ && this.callbackKey_) {
253
- console.warn(
254
- 'Labels should not have callbacks. Label text: ' + this.text_);
255
- } else if (
256
- !this.isLabel_ &&
257
- !(this.callbackKey_ &&
258
- this.targetWorkspace.getButtonCallback(this.callbackKey_))) {
259
- console.warn('Buttons should have callbacks. Button text: ' + this.text_);
260
- } else if (!this.isLabel_) {
261
- const callback =
262
- this.targetWorkspace.getButtonCallback(this.callbackKey_);
263
- if (callback) {
264
- callback(this);
265
- }
266
- }
267
- }
268
- }
269
-
270
- /** CSS for buttons and labels. See css.js for use. */
271
- Css.register(`
272
- .blocklyFlyoutButton {
273
- fill: #888;
274
- cursor: default;
275
- }
276
-
277
- .blocklyFlyoutButtonShadow {
278
- fill: #666;
279
- }
280
-
281
- .blocklyFlyoutButton:hover {
282
- fill: #aaa;
283
- }
284
-
285
- .blocklyFlyoutLabel {
286
- cursor: default;
287
- }
288
-
289
- .blocklyFlyoutLabelBackground {
290
- opacity: 0;
291
- }
292
- `);
@@ -1,381 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2017 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
-
7
- /**
8
- * @fileoverview Horizontal flyout tray containing blocks which may be created.
9
- */
10
-
11
- /**
12
- * Horizontal flyout tray containing blocks which may be created.
13
- * @class
14
- */
15
- import * as goog from '../closure/goog/goog.js';
16
- goog.declareModuleId('Blockly.HorizontalFlyout');
17
-
18
- import * as browserEvents from './browser_events.js';
19
- import * as dropDownDiv from './dropdowndiv.js';
20
- import {Flyout, FlyoutItem} from './flyout_base.js';
21
- import type {FlyoutButton} from './flyout_button.js';
22
- import type {Options} from './options.js';
23
- import * as registry from './registry.js';
24
- import {Scrollbar} from './scrollbar.js';
25
- import type {Coordinate} from './utils/coordinate.js';
26
- import {Rect} from './utils/rect.js';
27
- import * as toolbox from './utils/toolbox.js';
28
- import * as WidgetDiv from './widgetdiv.js';
29
-
30
-
31
- /**
32
- * Class for a flyout.
33
- * @alias Blockly.HorizontalFlyout
34
- */
35
- export class HorizontalFlyout extends Flyout {
36
- override horizontalLayout = true;
37
- // Record the width for workspace metrics.
38
- override width_: AnyDuringMigration;
39
-
40
- // Record the height for workspace metrics and .position.
41
- override height_: AnyDuringMigration;
42
-
43
- /** @param workspaceOptions Dictionary of options for the workspace. */
44
- constructor(workspaceOptions: Options) {
45
- super(workspaceOptions);
46
- }
47
-
48
- /**
49
- * Sets the translation of the flyout to match the scrollbars.
50
- * @param xyRatio Contains a y property which is a float between 0 and 1
51
- * specifying the degree of scrolling and a similar x property.
52
- */
53
- protected override setMetrics_(xyRatio: {x: number, y: number}) {
54
- if (!this.isVisible()) {
55
- return;
56
- }
57
-
58
- const metricsManager = this.workspace_.getMetricsManager();
59
- const scrollMetrics = metricsManager.getScrollMetrics();
60
- const viewMetrics = metricsManager.getViewMetrics();
61
- const absoluteMetrics = metricsManager.getAbsoluteMetrics();
62
-
63
- if (typeof xyRatio.x === 'number') {
64
- this.workspace_.scrollX =
65
- -(scrollMetrics.left +
66
- (scrollMetrics.width - viewMetrics.width) * xyRatio.x);
67
- }
68
-
69
- this.workspace_.translate(
70
- this.workspace_.scrollX + absoluteMetrics.left,
71
- this.workspace_.scrollY + absoluteMetrics.top);
72
- }
73
-
74
- /**
75
- * Calculates the x coordinate for the flyout position.
76
- * @return X coordinate.
77
- */
78
- override getX(): number {
79
- // X is always 0 since this is a horizontal flyout.
80
- return 0;
81
- }
82
-
83
- /**
84
- * Calculates the y coordinate for the flyout position.
85
- * @return Y coordinate.
86
- */
87
- override getY(): number {
88
- if (!this.isVisible()) {
89
- return 0;
90
- }
91
- const metricsManager = this.targetWorkspace!.getMetricsManager();
92
- const absoluteMetrics = metricsManager.getAbsoluteMetrics();
93
- const viewMetrics = metricsManager.getViewMetrics();
94
- const toolboxMetrics = metricsManager.getToolboxMetrics();
95
-
96
- let y = 0;
97
- const atTop = this.toolboxPosition_ === toolbox.Position.TOP;
98
- // If this flyout is not the trashcan flyout (e.g. toolbox or mutator).
99
- // Trashcan flyout is opposite the main flyout.
100
- if (this.targetWorkspace!.toolboxPosition === this.toolboxPosition_) {
101
- // If there is a category toolbox.
102
- // Simple (flyout-only) toolbox.
103
- if (this.targetWorkspace!.getToolbox()) {
104
- if (atTop) {
105
- y = toolboxMetrics.height;
106
- } else {
107
- y = viewMetrics.height - this.height_;
108
- }
109
- } else {
110
- if (atTop) {
111
- y = 0;
112
- } else {
113
- // The simple flyout does not cover the workspace.
114
- y = viewMetrics.height;
115
- }
116
- }
117
- } else {
118
- if (atTop) {
119
- y = 0;
120
- } else {
121
- // Because the anchor point of the flyout is on the top, but we want
122
- // to align the bottom edge of the flyout with the bottom edge of the
123
- // blocklyDiv, we calculate the full height of the div minus the height
124
- // of the flyout.
125
- y = viewMetrics.height + absoluteMetrics.top - this.height_;
126
- }
127
- }
128
-
129
- return y;
130
- }
131
-
132
- /** Move the flyout to the edge of the workspace. */
133
- override position() {
134
- if (!this.isVisible() || !this.targetWorkspace!.isVisible()) {
135
- return;
136
- }
137
- const metricsManager = this.targetWorkspace!.getMetricsManager();
138
- const targetWorkspaceViewMetrics = metricsManager.getViewMetrics();
139
- this.width_ = targetWorkspaceViewMetrics.width;
140
-
141
- const edgeWidth = targetWorkspaceViewMetrics.width - 2 * this.CORNER_RADIUS;
142
- const edgeHeight = this.height_ - this.CORNER_RADIUS;
143
- this.setBackgroundPath_(edgeWidth, edgeHeight);
144
-
145
- const x = this.getX();
146
- const y = this.getY();
147
-
148
- this.positionAt_(this.width_, this.height_, x, y);
149
- }
150
-
151
- /**
152
- * Create and set the path for the visible boundaries of the flyout.
153
- * @param width The width of the flyout, not including the rounded corners.
154
- * @param height The height of the flyout, not including rounded corners.
155
- */
156
- private setBackgroundPath_(width: number, height: number) {
157
- const atTop = this.toolboxPosition_ === toolbox.Position.TOP;
158
- // Start at top left.
159
- const path: (string|number)[] = ['M 0,' + (atTop ? 0 : this.CORNER_RADIUS)];
160
-
161
- if (atTop) {
162
- // Top.
163
- path.push('h', width + 2 * this.CORNER_RADIUS);
164
- // Right.
165
- path.push('v', height);
166
- // Bottom.
167
- path.push(
168
- 'a', this.CORNER_RADIUS, this.CORNER_RADIUS, 0, 0, 1,
169
- -this.CORNER_RADIUS, this.CORNER_RADIUS);
170
- path.push('h', -width);
171
- // Left.
172
- path.push(
173
- 'a', this.CORNER_RADIUS, this.CORNER_RADIUS, 0, 0, 1,
174
- -this.CORNER_RADIUS, -this.CORNER_RADIUS);
175
- path.push('z');
176
- } else {
177
- // Top.
178
- path.push(
179
- 'a', this.CORNER_RADIUS, this.CORNER_RADIUS, 0, 0, 1,
180
- this.CORNER_RADIUS, -this.CORNER_RADIUS);
181
- path.push('h', width);
182
- // Right.
183
- path.push(
184
- 'a', this.CORNER_RADIUS, this.CORNER_RADIUS, 0, 0, 1,
185
- this.CORNER_RADIUS, this.CORNER_RADIUS);
186
- path.push('v', height);
187
- // Bottom.
188
- path.push('h', -width - 2 * this.CORNER_RADIUS);
189
- // Left.
190
- path.push('z');
191
- }
192
- this.svgBackground_!.setAttribute('d', path.join(' '));
193
- }
194
-
195
- /** Scroll the flyout to the top. */
196
- override scrollToStart() {
197
- this.workspace_.scrollbar.setX(this.RTL ? Infinity : 0);
198
- }
199
-
200
- /**
201
- * Scroll the flyout.
202
- * @param e Mouse wheel scroll event.
203
- */
204
- protected override wheel_(e: WheelEvent) {
205
- const scrollDelta = browserEvents.getScrollDeltaPixels(e);
206
- const delta = scrollDelta.x || scrollDelta.y;
207
-
208
- if (delta) {
209
- const metricsManager = this.workspace_.getMetricsManager();
210
- const scrollMetrics = metricsManager.getScrollMetrics();
211
- const viewMetrics = metricsManager.getViewMetrics();
212
-
213
- const pos = viewMetrics.left - scrollMetrics.left + delta;
214
- this.workspace_.scrollbar.setX(pos);
215
- // When the flyout moves from a wheel event, hide WidgetDiv and
216
- // dropDownDiv.
217
- WidgetDiv.hide();
218
- dropDownDiv.hideWithoutAnimation();
219
- }
220
- // Don't scroll the page.
221
- e.preventDefault();
222
- // Don't propagate mousewheel event (zooming).
223
- e.stopPropagation();
224
- }
225
-
226
- /**
227
- * Lay out the blocks in the flyout.
228
- * @param contents The blocks and buttons to lay out.
229
- * @param gaps The visible gaps between blocks.
230
- */
231
- protected override layout_(contents: FlyoutItem[], gaps: number[]) {
232
- this.workspace_.scale = this.targetWorkspace!.scale;
233
- const margin = this.MARGIN;
234
- let cursorX = margin + this.tabWidth_;
235
- const cursorY = margin;
236
- if (this.RTL) {
237
- contents = contents.reverse();
238
- }
239
-
240
- for (let i = 0, item; item = contents[i]; i++) {
241
- if (item.type === 'block') {
242
- const block = item.block;
243
- const allBlocks = block!.getDescendants(false);
244
- for (let j = 0, child; child = allBlocks[j]; j++) {
245
- // Mark blocks as being inside a flyout. This is used to detect and
246
- // prevent the closure of the flyout if the user right-clicks on such
247
- // a block.
248
- child.isInFlyout = true;
249
- }
250
- block!.render();
251
- const root = block!.getSvgRoot();
252
- const blockHW = block!.getHeightWidth();
253
- // Figure out where to place the block.
254
- const tab = block!.outputConnection ? this.tabWidth_ : 0;
255
- let moveX;
256
- if (this.RTL) {
257
- moveX = cursorX + blockHW.width;
258
- } else {
259
- moveX = cursorX - tab;
260
- }
261
- block!.moveBy(moveX, cursorY);
262
-
263
- // AnyDuringMigration because: Argument of type 'BlockSvg | undefined'
264
- // is not assignable to parameter of type 'BlockSvg'.
265
- const rect = this.createRect_(
266
- block as AnyDuringMigration, moveX, cursorY, blockHW, i);
267
- cursorX += blockHW.width + gaps[i];
268
-
269
- // AnyDuringMigration because: Argument of type 'BlockSvg | undefined'
270
- // is not assignable to parameter of type 'BlockSvg'.
271
- this.addBlockListeners_(root, block as AnyDuringMigration, rect);
272
- } else if (item.type === 'button') {
273
- const button = item.button as FlyoutButton;
274
- this.initFlyoutButton_(button, cursorX, cursorY);
275
- cursorX += button.width + gaps[i];
276
- }
277
- }
278
- }
279
-
280
- /**
281
- * Determine if a drag delta is toward the workspace, based on the position
282
- * and orientation of the flyout. This is used in determineDragIntention_ to
283
- * determine if a new block should be created or if the flyout should scroll.
284
- * @param currentDragDeltaXY How far the pointer has moved from the position
285
- * at mouse down, in pixel units.
286
- * @return True if the drag is toward the workspace.
287
- * @internal
288
- */
289
- override isDragTowardWorkspace(currentDragDeltaXY: Coordinate): boolean {
290
- const dx = currentDragDeltaXY.x;
291
- const dy = currentDragDeltaXY.y;
292
- // Direction goes from -180 to 180, with 0 toward the right and 90 on top.
293
- const dragDirection = Math.atan2(dy, dx) / Math.PI * 180;
294
-
295
- const range = this.dragAngleRange_;
296
- // Check for up or down dragging.
297
- if (dragDirection < 90 + range && dragDirection > 90 - range ||
298
- dragDirection > -90 - range && dragDirection < -90 + range) {
299
- return true;
300
- }
301
- return false;
302
- }
303
-
304
- /**
305
- * Returns the bounding rectangle of the drag target area in pixel units
306
- * relative to viewport.
307
- * @return The component's bounding box. Null if drag target area should be
308
- * ignored.
309
- */
310
- override getClientRect(): Rect|null {
311
- if (!this.svgGroup_ || this.autoClose || !this.isVisible()) {
312
- // The bounding rectangle won't compute correctly if the flyout is closed
313
- // and auto-close flyouts aren't valid drag targets (or delete areas).
314
- return null;
315
- }
316
-
317
- const flyoutRect = this.svgGroup_.getBoundingClientRect();
318
- // BIG_NUM is offscreen padding so that blocks dragged beyond the shown
319
- // flyout area are still deleted. Must be larger than the largest screen
320
- // size, but be smaller than half Number.MAX_SAFE_INTEGER (not available on
321
- // IE).
322
- const BIG_NUM = 1000000000;
323
- const top = flyoutRect.top;
324
-
325
- if (this.toolboxPosition_ === toolbox.Position.TOP) {
326
- const height = flyoutRect.height;
327
- return new Rect(-BIG_NUM, top + height, -BIG_NUM, BIG_NUM);
328
- } else { // Bottom.
329
- return new Rect(top, BIG_NUM, -BIG_NUM, BIG_NUM);
330
- }
331
- }
332
-
333
- /**
334
- * Compute height of flyout. toolbox.Position mat under each block.
335
- * For RTL: Lay out the blocks right-aligned.
336
- */
337
- protected override reflowInternal_() {
338
- this.workspace_.scale = this.getFlyoutScale();
339
- let flyoutHeight = 0;
340
- const blocks = this.workspace_.getTopBlocks(false);
341
- for (let i = 0, block; block = blocks[i]; i++) {
342
- flyoutHeight = Math.max(flyoutHeight, block.getHeightWidth().height);
343
- }
344
- const buttons = this.buttons_;
345
- for (let i = 0, button; button = buttons[i]; i++) {
346
- flyoutHeight = Math.max(flyoutHeight, button.height);
347
- }
348
- flyoutHeight += this.MARGIN * 1.5;
349
- flyoutHeight *= this.workspace_.scale;
350
- flyoutHeight += Scrollbar.scrollbarThickness;
351
-
352
- if (this.height_ !== flyoutHeight) {
353
- for (let i = 0, block; block = blocks[i]; i++) {
354
- if (this.rectMap_.has(block)) {
355
- // AnyDuringMigration because: Argument of type 'SVGElement |
356
- // undefined' is not assignable to parameter of type 'SVGElement'.
357
- this.moveRectToBlock_(
358
- this.rectMap_.get(block) as AnyDuringMigration, block);
359
- }
360
- }
361
-
362
- if (this.targetWorkspace!.toolboxPosition === this.toolboxPosition_ &&
363
- this.toolboxPosition_ === toolbox.Position.TOP &&
364
- !this.targetWorkspace!.getToolbox()) {
365
- // This flyout is a simple toolbox. Reposition the workspace so that
366
- // (0,0) is in the correct position relative to the new absolute edge
367
- // (ie toolbox edge).
368
- this.targetWorkspace!.translate(
369
- this.targetWorkspace!.scrollX,
370
- this.targetWorkspace!.scrollY + flyoutHeight);
371
- }
372
- this.height_ = flyoutHeight;
373
- this.position();
374
- this.targetWorkspace!.recordDragTargets();
375
- }
376
- }
377
- }
378
-
379
- registry.register(
380
- registry.Type.FLYOUTS_HORIZONTAL_TOOLBOX, registry.DEFAULT,
381
- HorizontalFlyout);