blockly 8.20220331.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 (735) hide show
  1. package/blockly.min.js +2000 -2269
  2. package/blockly_compressed.js +1495 -1994
  3. package/blockly_compressed.js.map +1 -1
  4. package/blocks.d.ts +10 -8
  5. package/blocks_compressed.js +189 -171
  6. package/blocks_compressed.js.map +1 -1
  7. package/closure/goog/base.d.ts +2 -0
  8. package/closure/goog/base_minimal.d.ts +19 -0
  9. package/closure/goog/goog.d.ts +26 -0
  10. package/core/any_aliases.d.ts +2 -0
  11. package/core/block.d.ts +871 -0
  12. package/core/block_animations.d.ts +38 -0
  13. package/core/block_drag_surface.d.ts +124 -0
  14. package/core/block_dragger.d.ts +158 -0
  15. package/core/block_svg.d.ts +656 -0
  16. package/core/blockly.d.ts +583 -0
  17. package/core/blockly_options.d.ts +71 -0
  18. package/core/blocks.d.ts +19 -0
  19. package/core/browser_events.d.ts +94 -0
  20. package/core/bubble.d.ts +309 -0
  21. package/core/bubble_dragger.d.ts +80 -0
  22. package/core/bump_objects.d.ts +38 -0
  23. package/core/clipboard.d.ts +46 -0
  24. package/core/comment.d.ts +123 -0
  25. package/core/common.d.ts +155 -0
  26. package/core/component_manager.d.ts +101 -0
  27. package/core/config.d.ts +24 -0
  28. package/core/connection.d.ts +262 -0
  29. package/core/connection_checker.d.ts +87 -0
  30. package/core/connection_db.d.ts +102 -0
  31. package/core/connection_type.d.ts +17 -0
  32. package/core/constants.d.ts +18 -0
  33. package/core/contextmenu.d.ts +90 -0
  34. package/core/contextmenu_items.d.ts +92 -0
  35. package/core/contextmenu_registry.d.ts +110 -0
  36. package/core/css.d.ts +27 -0
  37. package/core/delete_area.d.ts +51 -0
  38. package/core/dialog.d.ts +68 -0
  39. package/core/drag_target.d.ts +71 -0
  40. package/core/dropdowndiv.d.ts +187 -0
  41. package/core/events/events.d.ts +103 -0
  42. package/core/events/events_abstract.d.ts +58 -0
  43. package/core/events/events_block_base.d.ts +35 -0
  44. package/core/events/events_block_change.d.ts +62 -0
  45. package/core/events/events_block_create.d.ts +40 -0
  46. package/core/events/events_block_delete.d.ts +41 -0
  47. package/core/events/events_block_drag.d.ts +40 -0
  48. package/core/events/events_block_move.d.ts +58 -0
  49. package/core/events/events_bubble_open.d.ts +39 -0
  50. package/core/events/events_click.d.ts +40 -0
  51. package/core/events/events_comment_base.d.ts +44 -0
  52. package/core/events/events_comment_change.d.ts +49 -0
  53. package/core/events/events_comment_create.d.ts +40 -0
  54. package/core/events/events_comment_delete.d.ts +40 -0
  55. package/core/events/events_comment_move.d.ts +62 -0
  56. package/core/events/events_marker_move.d.ts +44 -0
  57. package/core/events/events_selected.d.ts +38 -0
  58. package/core/events/events_theme_change.d.ts +34 -0
  59. package/core/events/events_toolbox_item_select.d.ts +38 -0
  60. package/core/events/events_trashcan_open.d.ts +35 -0
  61. package/core/events/events_ui.d.ts +41 -0
  62. package/core/events/events_ui_base.d.ts +28 -0
  63. package/core/events/events_var_base.d.ts +35 -0
  64. package/core/events/events_var_create.d.ts +40 -0
  65. package/core/events/events_var_delete.d.ts +40 -0
  66. package/core/events/events_var_rename.d.ts +41 -0
  67. package/core/events/events_viewport.d.ts +43 -0
  68. package/core/events/utils.d.ts +315 -0
  69. package/core/events/workspace_events.d.ts +40 -0
  70. package/core/extensions.d.ts +117 -0
  71. package/core/field.d.ts +593 -0
  72. package/core/field_angle.d.ts +187 -0
  73. package/core/field_checkbox.d.ts +137 -0
  74. package/core/field_colour.d.ts +216 -0
  75. package/core/field_dropdown.d.ts +242 -0
  76. package/core/field_image.d.ts +145 -0
  77. package/core/field_label.d.ts +77 -0
  78. package/core/field_label_serializable.d.ts +45 -0
  79. package/core/field_multilineinput.d.ts +161 -0
  80. package/core/field_number.d.ts +172 -0
  81. package/core/field_registry.d.ts +51 -0
  82. package/core/field_textinput.d.ts +239 -0
  83. package/core/field_variable.d.ts +240 -0
  84. package/core/flyout_base.d.ts +505 -0
  85. package/core/flyout_button.d.ts +88 -0
  86. package/core/flyout_horizontal.d.ts +90 -0
  87. package/core/flyout_metrics_manager.d.ts +43 -0
  88. package/core/flyout_vertical.d.ts +91 -0
  89. package/core/generator.d.ts +224 -0
  90. package/core/gesture.d.ts +392 -0
  91. package/core/grid.d.ts +87 -0
  92. package/core/icon.d.ts +87 -0
  93. package/core/inject.d.ts +17 -0
  94. package/core/input.d.ts +143 -0
  95. package/core/input_types.d.ts +16 -0
  96. package/core/insertion_marker_manager.d.ts +230 -0
  97. package/core/interfaces/i_ast_node_location.d.ts +13 -0
  98. package/core/interfaces/i_ast_node_location_svg.d.ts +26 -0
  99. package/core/interfaces/i_ast_node_location_with_block.d.ts +21 -0
  100. package/core/interfaces/i_autohideable.d.ts +21 -0
  101. package/core/interfaces/i_block_dragger.d.ts +49 -0
  102. package/core/interfaces/i_bounded_element.d.ts +28 -0
  103. package/core/interfaces/i_bubble.d.ts +68 -0
  104. package/core/interfaces/i_collapsible_toolbox_item.d.ts +30 -0
  105. package/core/interfaces/i_component.d.ts +19 -0
  106. package/core/interfaces/i_connection_checker.d.ts +77 -0
  107. package/core/interfaces/i_contextmenu.d.ts +15 -0
  108. package/core/interfaces/i_copyable.d.ts +26 -0
  109. package/core/interfaces/i_deletable.d.ts +19 -0
  110. package/core/interfaces/i_delete_area.d.ts +28 -0
  111. package/core/interfaces/i_drag_target.d.ts +61 -0
  112. package/core/interfaces/i_draggable.d.ts +14 -0
  113. package/core/interfaces/i_flyout.d.ts +150 -0
  114. package/core/interfaces/i_keyboard_accessible.d.ts +21 -0
  115. package/core/interfaces/i_metrics_manager.d.ts +129 -0
  116. package/core/interfaces/i_movable.d.ts +19 -0
  117. package/core/interfaces/i_positionable.d.ts +31 -0
  118. package/core/interfaces/i_registrable.d.ts +13 -0
  119. package/core/interfaces/i_registrable_field.d.ts +19 -0
  120. package/core/interfaces/i_selectable.d.ts +20 -0
  121. package/core/interfaces/i_selectable_toolbox_item.d.ts +49 -0
  122. package/core/interfaces/i_serializer.d.ts +47 -0
  123. package/core/interfaces/i_styleable.d.ts +25 -0
  124. package/core/interfaces/i_toolbox.d.ts +96 -0
  125. package/core/interfaces/i_toolbox_item.d.ts +72 -0
  126. package/core/internal_constants.d.ts +46 -0
  127. package/core/keyboard_nav/ast_node.d.ts +266 -0
  128. package/core/keyboard_nav/basic_cursor.d.ts +99 -0
  129. package/core/keyboard_nav/cursor.d.ts +47 -0
  130. package/core/keyboard_nav/marker.d.ts +65 -0
  131. package/core/keyboard_nav/tab_navigate_cursor.d.ts +22 -0
  132. package/core/main.d.ts +12 -0
  133. package/core/marker_manager.d.ts +96 -0
  134. package/core/menu.d.ts +167 -0
  135. package/core/menuitem.d.ts +133 -0
  136. package/core/metrics_manager.d.ts +216 -0
  137. package/core/msg.d.ts +10 -0
  138. package/core/mutator.d.ts +140 -0
  139. package/core/names.d.ts +136 -0
  140. package/core/options.d.ts +143 -0
  141. package/core/positionable_helpers.d.ts +96 -0
  142. package/core/procedures.d.ts +125 -0
  143. package/core/registry.d.ts +148 -0
  144. package/core/rendered_connection.d.ts +212 -0
  145. package/core/renderers/common/block_rendering.d.ts +121 -0
  146. package/core/renderers/common/constants.d.ts +490 -0
  147. package/core/renderers/common/debug.d.ts +32 -0
  148. package/core/renderers/common/debugger.d.ts +131 -0
  149. package/core/renderers/common/drawer.d.ts +144 -0
  150. package/core/renderers/common/i_path_object.d.ts +132 -0
  151. package/core/renderers/common/info.d.ts +211 -0
  152. package/core/renderers/common/marker_svg.d.ts +249 -0
  153. package/core/renderers/common/path_object.d.ts +166 -0
  154. package/core/renderers/common/renderer.d.ts +178 -0
  155. package/core/renderers/geras/constants.d.ts +25 -0
  156. package/core/renderers/geras/drawer.d.ts +45 -0
  157. package/core/renderers/geras/geras.d.ts +12 -0
  158. package/core/renderers/geras/highlight_constants.d.ts +111 -0
  159. package/core/renderers/geras/highlighter.d.ts +109 -0
  160. package/core/renderers/geras/info.d.ts +48 -0
  161. package/core/renderers/geras/measurables/inline_input.d.ts +25 -0
  162. package/core/renderers/geras/measurables/statement_input.d.ts +25 -0
  163. package/core/renderers/geras/path_object.d.ts +51 -0
  164. package/core/renderers/geras/renderer.d.ts +79 -0
  165. package/core/renderers/measurables/base.d.ts +29 -0
  166. package/core/renderers/measurables/bottom_row.d.ts +67 -0
  167. package/core/renderers/measurables/connection.d.ts +27 -0
  168. package/core/renderers/measurables/external_value_input.d.ts +28 -0
  169. package/core/renderers/measurables/field.d.ts +31 -0
  170. package/core/renderers/measurables/hat.d.ts +22 -0
  171. package/core/renderers/measurables/icon.d.ts +28 -0
  172. package/core/renderers/measurables/in_row_spacer.d.ts +22 -0
  173. package/core/renderers/measurables/inline_input.d.ts +25 -0
  174. package/core/renderers/measurables/input_connection.d.ts +31 -0
  175. package/core/renderers/measurables/input_row.d.ts +33 -0
  176. package/core/renderers/measurables/jagged_edge.d.ts +21 -0
  177. package/core/renderers/measurables/next_connection.d.ts +24 -0
  178. package/core/renderers/measurables/output_connection.d.ts +27 -0
  179. package/core/renderers/measurables/previous_connection.d.ts +24 -0
  180. package/core/renderers/measurables/round_corner.d.ts +22 -0
  181. package/core/renderers/measurables/row.d.ts +163 -0
  182. package/core/renderers/measurables/spacer_row.d.ts +30 -0
  183. package/core/renderers/measurables/square_corner.d.ts +22 -0
  184. package/core/renderers/measurables/statement_input.d.ts +23 -0
  185. package/core/renderers/measurables/top_row.d.ts +60 -0
  186. package/core/renderers/measurables/types.d.ts +264 -0
  187. package/core/renderers/minimalist/constants.d.ts +16 -0
  188. package/core/renderers/minimalist/drawer.d.ts +23 -0
  189. package/core/renderers/minimalist/info.d.ts +33 -0
  190. package/core/renderers/minimalist/minimalist.d.ts +7 -0
  191. package/core/renderers/minimalist/renderer.d.ts +46 -0
  192. package/core/renderers/thrasos/info.d.ts +43 -0
  193. package/core/renderers/thrasos/renderer.d.ts +28 -0
  194. package/core/renderers/thrasos/thrasos.d.ts +5 -0
  195. package/core/renderers/zelos/constants.d.ts +194 -0
  196. package/core/renderers/zelos/drawer.d.ts +50 -0
  197. package/core/renderers/zelos/info.d.ts +93 -0
  198. package/core/renderers/zelos/marker_svg.d.ts +51 -0
  199. package/core/renderers/zelos/measurables/bottom_row.d.ts +29 -0
  200. package/core/renderers/zelos/measurables/inputs.d.ts +25 -0
  201. package/core/renderers/zelos/measurables/row_elements.d.ts +23 -0
  202. package/core/renderers/zelos/measurables/top_row.d.ts +31 -0
  203. package/core/renderers/zelos/path_object.d.ts +84 -0
  204. package/core/renderers/zelos/renderer.d.ts +82 -0
  205. package/core/renderers/zelos/zelos.d.ts +13 -0
  206. package/core/scrollbar.d.ts +309 -0
  207. package/core/scrollbar_pair.d.ts +119 -0
  208. package/core/serialization/blocks.d.ts +104 -0
  209. package/core/serialization/exceptions.d.ts +78 -0
  210. package/core/serialization/priorities.d.ts +18 -0
  211. package/core/serialization/registry.d.ts +23 -0
  212. package/core/serialization/variables.d.ts +16 -0
  213. package/core/serialization/workspaces.d.ts +31 -0
  214. package/core/shortcut_items.d.ts +71 -0
  215. package/core/shortcut_registry.d.ts +167 -0
  216. package/core/sprites.d.ts +17 -0
  217. package/core/theme/classic.d.ts +14 -0
  218. package/core/theme/themes.d.ts +9 -0
  219. package/core/theme/zelos.d.ts +13 -0
  220. package/core/theme.d.ts +153 -0
  221. package/core/theme_manager.d.ts +90 -0
  222. package/core/toolbox/category.d.ts +266 -0
  223. package/core/toolbox/collapsible_category.d.ts +98 -0
  224. package/core/toolbox/separator.d.ts +42 -0
  225. package/core/toolbox/toolbox.d.ts +400 -0
  226. package/core/toolbox/toolbox_item.d.ts +95 -0
  227. package/core/tooltip.d.ts +147 -0
  228. package/core/touch.d.ts +133 -0
  229. package/core/touch_gesture.d.ts +129 -0
  230. package/core/trashcan.d.ts +216 -0
  231. package/core/utils/aria.d.ts +71 -0
  232. package/core/utils/array.d.ts +16 -0
  233. package/core/utils/colour.d.ts +114 -0
  234. package/core/utils/coordinate.d.ts +82 -0
  235. package/core/utils/deprecation.d.ts +19 -0
  236. package/core/utils/dom.d.ts +185 -0
  237. package/core/utils/idgenerator.d.ts +35 -0
  238. package/core/utils/keycodes.d.ts +138 -0
  239. package/core/utils/math.d.ts +34 -0
  240. package/core/utils/metrics.d.ts +65 -0
  241. package/core/utils/object.d.ts +40 -0
  242. package/core/utils/parsing.d.ts +55 -0
  243. package/core/utils/rect.d.ts +40 -0
  244. package/core/utils/sentinel.d.ts +13 -0
  245. package/core/utils/size.d.ts +29 -0
  246. package/core/utils/string.d.ts +62 -0
  247. package/core/utils/style.d.ts +108 -0
  248. package/core/utils/svg.d.ts +71 -0
  249. package/core/utils/svg_math.d.ts +78 -0
  250. package/core/utils/svg_paths.d.ts +111 -0
  251. package/core/utils/toolbox.d.ts +214 -0
  252. package/core/utils/useragent.d.ts +22 -0
  253. package/core/utils/xml.d.ts +60 -0
  254. package/core/utils.d.ts +239 -0
  255. package/core/variable_map.d.ts +158 -0
  256. package/core/variable_model.d.ts +43 -0
  257. package/core/variables.d.ts +196 -0
  258. package/core/variables_dynamic.d.ts +58 -0
  259. package/core/warning.d.ts +55 -0
  260. package/core/widgetdiv.d.ts +78 -0
  261. package/core/workspace.d.ts +436 -0
  262. package/core/workspace_audio.d.ts +53 -0
  263. package/core/workspace_comment.d.ts +192 -0
  264. package/core/workspace_comment_svg.d.ts +372 -0
  265. package/core/workspace_drag_surface_svg.d.ts +74 -0
  266. package/core/workspace_dragger.d.ts +54 -0
  267. package/core/workspace_svg.d.ts +1032 -0
  268. package/core/xml.d.ts +132 -0
  269. package/core/zoom_controls.d.ts +140 -0
  270. package/core.d.ts +1 -9
  271. package/core.js +1 -2
  272. package/dart.d.ts +1 -9
  273. package/dart_compressed.js +387 -99
  274. package/dart_compressed.js.map +1 -1
  275. package/index.d.ts +4 -16
  276. package/javascript.d.ts +1 -9
  277. package/javascript_compressed.js +314 -104
  278. package/javascript_compressed.js.map +1 -1
  279. package/lua.d.ts +1 -9
  280. package/lua_compressed.js +399 -81
  281. package/lua_compressed.js.map +1 -1
  282. package/msg/ab.js +10 -6
  283. package/msg/ace.js +10 -6
  284. package/msg/af.js +10 -6
  285. package/msg/am.js +10 -6
  286. package/msg/ar.js +10 -6
  287. package/msg/ast.js +10 -6
  288. package/msg/az.js +12 -8
  289. package/msg/ba.js +10 -6
  290. package/msg/bcc.js +10 -6
  291. package/msg/be-tarask.js +10 -6
  292. package/msg/be.js +14 -10
  293. package/msg/bg.js +10 -6
  294. package/msg/bn.js +10 -6
  295. package/msg/br.js +10 -6
  296. package/msg/bs.js +10 -6
  297. package/msg/ca.js +10 -6
  298. package/msg/cdo.js +10 -6
  299. package/msg/cs.js +25 -21
  300. package/msg/da.js +10 -6
  301. package/msg/de.js +11 -7
  302. package/msg/diq.js +11 -7
  303. package/msg/dty.js +10 -6
  304. package/msg/ee.js +10 -6
  305. package/msg/el.js +10 -6
  306. package/msg/en-gb.js +10 -6
  307. package/msg/en.js +10 -6
  308. package/msg/eo.js +11 -7
  309. package/msg/es.js +11 -7
  310. package/msg/et.js +10 -6
  311. package/msg/eu.js +10 -6
  312. package/msg/fa.js +11 -7
  313. package/msg/fi.js +10 -6
  314. package/msg/fo.js +10 -6
  315. package/msg/fr.js +14 -10
  316. package/msg/frr.js +10 -6
  317. package/msg/gl.js +10 -6
  318. package/msg/gn.js +10 -6
  319. package/msg/gor.js +10 -6
  320. package/msg/ha.js +10 -6
  321. package/msg/hak.js +10 -6
  322. package/msg/he.js +11 -7
  323. package/msg/hi.js +10 -6
  324. package/msg/hr.js +12 -8
  325. package/msg/hrx.js +10 -6
  326. package/msg/hu.js +10 -6
  327. package/msg/hy.js +12 -8
  328. package/msg/ia.js +10 -6
  329. package/msg/id.js +22 -18
  330. package/msg/ig.js +10 -6
  331. package/msg/inh.js +24 -20
  332. package/msg/is.js +10 -6
  333. package/msg/it.js +10 -6
  334. package/msg/ja.js +17 -13
  335. package/msg/ka.js +10 -6
  336. package/msg/kab.js +10 -6
  337. package/msg/kbd-cyrl.js +10 -6
  338. package/msg/km.js +10 -6
  339. package/msg/kn.js +10 -6
  340. package/msg/ko.js +10 -6
  341. package/msg/ksh.js +10 -6
  342. package/msg/ku-latn.js +10 -6
  343. package/msg/ky.js +10 -6
  344. package/msg/la.js +10 -6
  345. package/msg/lb.js +10 -6
  346. package/msg/lki.js +10 -6
  347. package/msg/lo.js +10 -6
  348. package/msg/lrc.js +10 -6
  349. package/msg/lt.js +10 -6
  350. package/msg/lv.js +39 -35
  351. package/msg/mg.js +10 -6
  352. package/msg/mk.js +10 -6
  353. package/msg/ml.js +10 -6
  354. package/msg/mnw.js +10 -6
  355. package/msg/ms.js +10 -6
  356. package/msg/my.js +10 -6
  357. package/msg/mzn.js +10 -6
  358. package/msg/nb.js +10 -6
  359. package/msg/ne.js +10 -6
  360. package/msg/nl.js +10 -6
  361. package/msg/oc.js +10 -6
  362. package/msg/olo.js +10 -6
  363. package/msg/pa.js +13 -9
  364. package/msg/pl.js +10 -6
  365. package/msg/pms.js +10 -6
  366. package/msg/ps.js +10 -6
  367. package/msg/pt-br.js +10 -6
  368. package/msg/pt.js +10 -6
  369. package/msg/ro.js +10 -6
  370. package/msg/ru.js +10 -6
  371. package/msg/sc.js +10 -6
  372. package/msg/sco.js +10 -6
  373. package/msg/sd.js +10 -6
  374. package/msg/shn.js +10 -6
  375. package/msg/si.js +10 -6
  376. package/msg/sk.js +10 -6
  377. package/msg/skr-arab.js +10 -6
  378. package/msg/sl.js +10 -6
  379. package/msg/smn.js +440 -0
  380. package/msg/sq.js +10 -6
  381. package/msg/sr-latn.js +10 -6
  382. package/msg/sr.js +10 -6
  383. package/msg/sv.js +10 -6
  384. package/msg/sw.js +10 -6
  385. package/msg/ta.js +10 -6
  386. package/msg/tcy.js +10 -6
  387. package/msg/te.js +11 -7
  388. package/msg/th.js +10 -6
  389. package/msg/ti.js +10 -6
  390. package/msg/tl.js +10 -6
  391. package/msg/tlh.js +10 -6
  392. package/msg/tr.js +10 -6
  393. package/msg/ug-arab.js +10 -6
  394. package/msg/uk.js +10 -6
  395. package/msg/ur.js +10 -6
  396. package/msg/uz.js +10 -6
  397. package/msg/vi.js +10 -6
  398. package/msg/xmf.js +10 -6
  399. package/msg/yo.js +10 -6
  400. package/msg/yue.js +11 -7
  401. package/msg/zgh.js +10 -6
  402. package/msg/zh-hans.js +13 -9
  403. package/msg/zh-hant.js +13 -9
  404. package/package.json +8 -5
  405. package/php.d.ts +1 -9
  406. package/php_compressed.js +322 -93
  407. package/php_compressed.js.map +1 -1
  408. package/python.d.ts +1 -9
  409. package/python_compressed.js +237 -90
  410. package/python_compressed.js.map +1 -1
  411. package/blockly.d.ts +0 -25607
  412. package/blocks/blocks.js +0 -47
  413. package/blocks/colour.js +0 -119
  414. package/blocks/lists.js +0 -924
  415. package/blocks/logic.js +0 -657
  416. package/blocks/loops.js +0 -373
  417. package/blocks/math.js +0 -592
  418. package/blocks/procedures.js +0 -1194
  419. package/blocks/text.js +0 -992
  420. package/blocks/variables.js +0 -174
  421. package/blocks/variables_dynamic.js +0 -190
  422. package/core/block.js +0 -2212
  423. package/core/block_animations.js +0 -206
  424. package/core/block_drag_surface.js +0 -269
  425. package/core/block_dragger.js +0 -484
  426. package/core/block_svg.js +0 -1894
  427. package/core/blockly.js +0 -890
  428. package/core/blockly_options.js +0 -28
  429. package/core/blocks.js +0 -33
  430. package/core/browser_events.js +0 -284
  431. package/core/bubble.js +0 -985
  432. package/core/bubble_dragger.js +0 -298
  433. package/core/bump_objects.js +0 -180
  434. package/core/clipboard.js +0 -80
  435. package/core/comment.js +0 -448
  436. package/core/common.js +0 -265
  437. package/core/component_manager.js +0 -263
  438. package/core/config.js +0 -87
  439. package/core/connection.js +0 -742
  440. package/core/connection_checker.js +0 -312
  441. package/core/connection_db.js +0 -314
  442. package/core/connection_type.js +0 -36
  443. package/core/constants.js +0 -33
  444. package/core/contextmenu.js +0 -398
  445. package/core/contextmenu_items.js +0 -651
  446. package/core/contextmenu_registry.js +0 -178
  447. package/core/css.js +0 -568
  448. package/core/delete_area.js +0 -87
  449. package/core/dialog.js +0 -107
  450. package/core/drag_target.js +0 -98
  451. package/core/dropdowndiv.js +0 -754
  452. package/core/events/events.js +0 -147
  453. package/core/events/events_abstract.js +0 -133
  454. package/core/events/events_block_base.js +0 -70
  455. package/core/events/events_block_change.js +0 -179
  456. package/core/events/events_block_create.js +0 -127
  457. package/core/events/events_block_delete.js +0 -139
  458. package/core/events/events_block_drag.js +0 -89
  459. package/core/events/events_block_move.js +0 -202
  460. package/core/events/events_bubble_open.js +0 -90
  461. package/core/events/events_click.js +0 -87
  462. package/core/events/events_comment_base.js +0 -121
  463. package/core/events/events_comment_change.js +0 -105
  464. package/core/events/events_comment_create.js +0 -84
  465. package/core/events/events_comment_delete.js +0 -81
  466. package/core/events/events_comment_move.js +0 -157
  467. package/core/events/events_marker_move.js +0 -110
  468. package/core/events/events_selected.js +0 -83
  469. package/core/events/events_theme_change.js +0 -72
  470. package/core/events/events_toolbox_item_select.js +0 -84
  471. package/core/events/events_trashcan_open.js +0 -73
  472. package/core/events/events_ui.js +0 -88
  473. package/core/events/events_ui_base.js +0 -63
  474. package/core/events/events_var_base.js +0 -70
  475. package/core/events/events_var_create.js +0 -89
  476. package/core/events/events_var_delete.js +0 -89
  477. package/core/events/events_var_rename.js +0 -90
  478. package/core/events/events_viewport.js +0 -107
  479. package/core/events/utils.js +0 -600
  480. package/core/events/workspace_events.js +0 -93
  481. package/core/extensions.js +0 -523
  482. package/core/field.js +0 -1282
  483. package/core/field_angle.js +0 -591
  484. package/core/field_checkbox.js +0 -255
  485. package/core/field_colour.js +0 -717
  486. package/core/field_dropdown.js +0 -795
  487. package/core/field_image.js +0 -304
  488. package/core/field_label.js +0 -149
  489. package/core/field_label_serializable.js +0 -80
  490. package/core/field_multilineinput.js +0 -463
  491. package/core/field_number.js +0 -340
  492. package/core/field_registry.js +0 -80
  493. package/core/field_textinput.js +0 -619
  494. package/core/field_variable.js +0 -558
  495. package/core/flyout_base.js +0 -1254
  496. package/core/flyout_button.js +0 -356
  497. package/core/flyout_horizontal.js +0 -391
  498. package/core/flyout_metrics_manager.js +0 -106
  499. package/core/flyout_vertical.js +0 -395
  500. package/core/generator.js +0 -564
  501. package/core/gesture.js +0 -1026
  502. package/core/grid.js +0 -226
  503. package/core/icon.js +0 -225
  504. package/core/inject.js +0 -389
  505. package/core/input.js +0 -332
  506. package/core/input_types.js +0 -36
  507. package/core/insertion_marker_manager.js +0 -790
  508. package/core/interfaces/i_ast_node_location.js +0 -26
  509. package/core/interfaces/i_ast_node_location_svg.js +0 -45
  510. package/core/interfaces/i_ast_node_location_with_block.js +0 -41
  511. package/core/interfaces/i_autohideable.js +0 -40
  512. package/core/interfaces/i_block_dragger.js +0 -66
  513. package/core/interfaces/i_bounded_element.js +0 -45
  514. package/core/interfaces/i_bubble.js +0 -95
  515. package/core/interfaces/i_collapsible_toolbox_item.js +0 -53
  516. package/core/interfaces/i_component.js +0 -37
  517. package/core/interfaces/i_connection_checker.js +0 -104
  518. package/core/interfaces/i_contextmenu.js +0 -32
  519. package/core/interfaces/i_copyable.js +0 -49
  520. package/core/interfaces/i_deletable.js +0 -33
  521. package/core/interfaces/i_delete_area.js +0 -50
  522. package/core/interfaces/i_drag_target.js +0 -88
  523. package/core/interfaces/i_draggable.js +0 -31
  524. package/core/interfaces/i_flyout.js +0 -201
  525. package/core/interfaces/i_keyboard_accessible.js +0 -38
  526. package/core/interfaces/i_metrics_manager.js +0 -154
  527. package/core/interfaces/i_movable.js +0 -33
  528. package/core/interfaces/i_positionable.js +0 -51
  529. package/core/interfaces/i_registrable.js +0 -29
  530. package/core/interfaces/i_registrable_field.js +0 -39
  531. package/core/interfaces/i_selectable.js +0 -51
  532. package/core/interfaces/i_selectable_toolbox_item.js +0 -73
  533. package/core/interfaces/i_serializer.js +0 -77
  534. package/core/interfaces/i_styleable.js +0 -39
  535. package/core/interfaces/i_toolbox.js +0 -142
  536. package/core/interfaces/i_toolbox_item.js +0 -85
  537. package/core/internal_constants.js +0 -72
  538. package/core/keyboard_nav/ast_node.js +0 -741
  539. package/core/keyboard_nav/basic_cursor.js +0 -225
  540. package/core/keyboard_nav/cursor.js +0 -144
  541. package/core/keyboard_nav/marker.js +0 -134
  542. package/core/keyboard_nav/tab_navigate_cursor.js +0 -52
  543. package/core/marker_manager.js +0 -213
  544. package/core/menu.js +0 -482
  545. package/core/menuitem.js +0 -292
  546. package/core/metrics_manager.js +0 -495
  547. package/core/msg.js +0 -24
  548. package/core/mutator.js +0 -575
  549. package/core/names.js +0 -289
  550. package/core/options.js +0 -391
  551. package/core/positionable_helpers.js +0 -188
  552. package/core/procedures.js +0 -452
  553. package/core/registry.js +0 -384
  554. package/core/rendered_connection.js +0 -588
  555. package/core/renderers/common/block_rendering.js +0 -170
  556. package/core/renderers/common/constants.js +0 -1250
  557. package/core/renderers/common/debug.js +0 -67
  558. package/core/renderers/common/debugger.js +0 -457
  559. package/core/renderers/common/drawer.js +0 -475
  560. package/core/renderers/common/i_path_object.js +0 -162
  561. package/core/renderers/common/info.js +0 -775
  562. package/core/renderers/common/marker_svg.js +0 -721
  563. package/core/renderers/common/path_object.js +0 -283
  564. package/core/renderers/common/renderer.js +0 -305
  565. package/core/renderers/geras/constants.js +0 -73
  566. package/core/renderers/geras/drawer.js +0 -220
  567. package/core/renderers/geras/geras.js +0 -36
  568. package/core/renderers/geras/highlight_constants.js +0 -299
  569. package/core/renderers/geras/highlighter.js +0 -311
  570. package/core/renderers/geras/info.js +0 -488
  571. package/core/renderers/geras/measurables/inline_input.js +0 -58
  572. package/core/renderers/geras/measurables/statement_input.js +0 -57
  573. package/core/renderers/geras/path_object.js +0 -166
  574. package/core/renderers/geras/renderer.js +0 -149
  575. package/core/renderers/measurables/base.js +0 -64
  576. package/core/renderers/measurables/bottom_row.js +0 -138
  577. package/core/renderers/measurables/connection.js +0 -56
  578. package/core/renderers/measurables/external_value_input.js +0 -70
  579. package/core/renderers/measurables/field.js +0 -71
  580. package/core/renderers/measurables/hat.js +0 -50
  581. package/core/renderers/measurables/icon.js +0 -58
  582. package/core/renderers/measurables/in_row_spacer.js +0 -47
  583. package/core/renderers/measurables/inline_input.js +0 -80
  584. package/core/renderers/measurables/input_connection.js +0 -75
  585. package/core/renderers/measurables/input_row.js +0 -89
  586. package/core/renderers/measurables/jagged_edge.js +0 -46
  587. package/core/renderers/measurables/next_connection.js +0 -50
  588. package/core/renderers/measurables/output_connection.js +0 -61
  589. package/core/renderers/measurables/previous_connection.js +0 -50
  590. package/core/renderers/measurables/round_corner.js +0 -52
  591. package/core/renderers/measurables/row.js +0 -247
  592. package/core/renderers/measurables/spacer_row.js +0 -69
  593. package/core/renderers/measurables/square_corner.js +0 -50
  594. package/core/renderers/measurables/statement_input.js +0 -59
  595. package/core/renderers/measurables/top_row.js +0 -143
  596. package/core/renderers/measurables/types.js +0 -353
  597. package/core/renderers/minimalist/constants.js +0 -37
  598. package/core/renderers/minimalist/drawer.js +0 -42
  599. package/core/renderers/minimalist/info.js +0 -54
  600. package/core/renderers/minimalist/minimalist.js +0 -26
  601. package/core/renderers/minimalist/renderer.js +0 -80
  602. package/core/renderers/thrasos/info.js +0 -339
  603. package/core/renderers/thrasos/renderer.js +0 -53
  604. package/core/renderers/thrasos/thrasos.js +0 -22
  605. package/core/renderers/zelos/constants.js +0 -1005
  606. package/core/renderers/zelos/drawer.js +0 -250
  607. package/core/renderers/zelos/info.js +0 -624
  608. package/core/renderers/zelos/marker_svg.js +0 -179
  609. package/core/renderers/zelos/measurables/bottom_row.js +0 -66
  610. package/core/renderers/zelos/measurables/inputs.js +0 -57
  611. package/core/renderers/zelos/measurables/row_elements.js +0 -46
  612. package/core/renderers/zelos/measurables/top_row.js +0 -71
  613. package/core/renderers/zelos/path_object.js +0 -247
  614. package/core/renderers/zelos/renderer.js +0 -147
  615. package/core/renderers/zelos/zelos.js +0 -38
  616. package/core/scrollbar.js +0 -891
  617. package/core/scrollbar_pair.js +0 -329
  618. package/core/serialization/blocks.js +0 -699
  619. package/core/serialization/exceptions.js +0 -144
  620. package/core/serialization/priorities.js +0 -38
  621. package/core/serialization/registry.js +0 -45
  622. package/core/serialization/variables.js +0 -98
  623. package/core/serialization/workspaces.js +0 -103
  624. package/core/shortcut_items.js +0 -302
  625. package/core/shortcut_registry.js +0 -366
  626. package/core/sprites.js +0 -31
  627. package/core/theme/classic.js +0 -56
  628. package/core/theme/themes.js +0 -23
  629. package/core/theme/zelos.js +0 -94
  630. package/core/theme.js +0 -228
  631. package/core/theme_manager.js +0 -211
  632. package/core/toolbox/category.js +0 -751
  633. package/core/toolbox/collapsible_category.js +0 -311
  634. package/core/toolbox/separator.js +0 -133
  635. package/core/toolbox/toolbox.js +0 -1160
  636. package/core/toolbox/toolbox_item.js +0 -173
  637. package/core/tooltip.js +0 -541
  638. package/core/touch.js +0 -285
  639. package/core/touch_gesture.js +0 -333
  640. package/core/trashcan.js +0 -757
  641. package/core/utils/aria.js +0 -174
  642. package/core/utils/array.js +0 -34
  643. package/core/utils/colour.js +0 -288
  644. package/core/utils/coordinate.js +0 -138
  645. package/core/utils/deprecation.js +0 -41
  646. package/core/utils/dom.js +0 -430
  647. package/core/utils/global.js +0 -41
  648. package/core/utils/idgenerator.js +0 -83
  649. package/core/utils/keycodes.js +0 -172
  650. package/core/utils/math.js +0 -63
  651. package/core/utils/metrics.js +0 -154
  652. package/core/utils/object.js +0 -91
  653. package/core/utils/parsing.js +0 -261
  654. package/core/utils/rect.js +0 -75
  655. package/core/utils/sentinel.js +0 -25
  656. package/core/utils/size.js +0 -65
  657. package/core/utils/string.js +0 -305
  658. package/core/utils/style.js +0 -296
  659. package/core/utils/svg.js +0 -186
  660. package/core/utils/svg_math.js +0 -268
  661. package/core/utils/svg_paths.js +0 -149
  662. package/core/utils/toolbox.js +0 -459
  663. package/core/utils/useragent.js +0 -197
  664. package/core/utils/xml.js +0 -107
  665. package/core/utils.js +0 -383
  666. package/core/variable_map.js +0 -410
  667. package/core/variable_model.js +0 -96
  668. package/core/variables.js +0 -578
  669. package/core/variables_dynamic.js +0 -129
  670. package/core/warning.js +0 -175
  671. package/core/widgetdiv.js +0 -290
  672. package/core/workspace.js +0 -836
  673. package/core/workspace_audio.js +0 -169
  674. package/core/workspace_comment.js +0 -400
  675. package/core/workspace_comment_svg.js +0 -1224
  676. package/core/workspace_drag_surface_svg.js +0 -194
  677. package/core/workspace_dragger.js +0 -115
  678. package/core/workspace_svg.js +0 -2735
  679. package/core/xml.js +0 -1043
  680. package/core/zoom_controls.js +0 -507
  681. package/generators/dart/all.js +0 -25
  682. package/generators/dart/colour.js +0 -105
  683. package/generators/dart/lists.js +0 -431
  684. package/generators/dart/logic.js +0 -123
  685. package/generators/dart/loops.js +0 -161
  686. package/generators/dart/math.js +0 -446
  687. package/generators/dart/procedures.js +0 -105
  688. package/generators/dart/text.js +0 -338
  689. package/generators/dart/variables.js +0 -32
  690. package/generators/dart/variables_dynamic.js +0 -21
  691. package/generators/dart.js +0 -304
  692. package/generators/javascript/all.js +0 -25
  693. package/generators/javascript/colour.js +0 -85
  694. package/generators/javascript/lists.js +0 -405
  695. package/generators/javascript/logic.js +0 -127
  696. package/generators/javascript/loops.js +0 -180
  697. package/generators/javascript/math.js +0 -401
  698. package/generators/javascript/procedures.js +0 -110
  699. package/generators/javascript/text.js +0 -371
  700. package/generators/javascript/variables.js +0 -32
  701. package/generators/javascript/variables_dynamic.js +0 -21
  702. package/generators/javascript.js +0 -324
  703. package/generators/lua/all.js +0 -25
  704. package/generators/lua/colour.js +0 -71
  705. package/generators/lua/lists.js +0 -348
  706. package/generators/lua/logic.js +0 -112
  707. package/generators/lua/loops.js +0 -168
  708. package/generators/lua/math.js +0 -406
  709. package/generators/lua/procedures.js +0 -106
  710. package/generators/lua/text.js +0 -327
  711. package/generators/lua/variables.js +0 -31
  712. package/generators/lua/variables_dynamic.js +0 -21
  713. package/generators/lua.js +0 -207
  714. package/generators/php/all.js +0 -25
  715. package/generators/php/colour.js +0 -81
  716. package/generators/php/lists.js +0 -482
  717. package/generators/php/logic.js +0 -119
  718. package/generators/php/loops.js +0 -161
  719. package/generators/php/math.js +0 -349
  720. package/generators/php/procedures.js +0 -125
  721. package/generators/php/text.js +0 -255
  722. package/generators/php/variables.js +0 -32
  723. package/generators/php/variables_dynamic.js +0 -21
  724. package/generators/php.js +0 -304
  725. package/generators/python/all.js +0 -25
  726. package/generators/python/colour.js +0 -67
  727. package/generators/python/lists.js +0 -346
  728. package/generators/python/logic.js +0 -120
  729. package/generators/python/loops.js +0 -209
  730. package/generators/python/math.js +0 -373
  731. package/generators/python/procedures.js +0 -129
  732. package/generators/python/text.js +0 -291
  733. package/generators/python/variables.js +0 -32
  734. package/generators/python/variables_dynamic.js +0 -21
  735. package/generators/python.js +0 -334
@@ -1,754 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2016 Massachusetts Institute of Technology
4
- * All rights reserved.
5
- * SPDX-License-Identifier: Apache-2.0
6
- */
7
-
8
- /**
9
- * @fileoverview A div that floats on top of the workspace, for drop-down menus.
10
- * The drop-down can be kept inside the workspace, animate in/out, etc.
11
- */
12
-
13
- 'use strict';
14
-
15
- /**
16
- * A div that floats on top of the workspace, for drop-down menus.
17
- * @class
18
- */
19
- goog.module('Blockly.dropDownDiv');
20
-
21
- const common = goog.require('Blockly.common');
22
- const dom = goog.require('Blockly.utils.dom');
23
- const math = goog.require('Blockly.utils.math');
24
- const style = goog.require('Blockly.utils.style');
25
- /* eslint-disable-next-line no-unused-vars */
26
- const {BlockSvg} = goog.requireType('Blockly.BlockSvg');
27
- /* eslint-disable-next-line no-unused-vars */
28
- const {Field} = goog.requireType('Blockly.Field');
29
- const {Rect} = goog.require('Blockly.utils.Rect');
30
- /* eslint-disable-next-line no-unused-vars */
31
- const {Size} = goog.requireType('Blockly.utils.Size');
32
- /* eslint-disable-next-line no-unused-vars */
33
- const {WorkspaceSvg} = goog.requireType('Blockly.WorkspaceSvg');
34
-
35
-
36
- /**
37
- * Arrow size in px. Should match the value in CSS
38
- * (need to position pre-render).
39
- * @type {number}
40
- * @const
41
- */
42
- const ARROW_SIZE = 16;
43
- exports.ARROW_SIZE = ARROW_SIZE;
44
-
45
- /**
46
- * Drop-down border size in px. Should match the value in CSS (need to position
47
- * the arrow).
48
- * @type {number}
49
- * @const
50
- */
51
- const BORDER_SIZE = 1;
52
- exports.BORDER_SIZE = BORDER_SIZE;
53
-
54
- /**
55
- * Amount the arrow must be kept away from the edges of the main drop-down div,
56
- * in px.
57
- * @type {number}
58
- * @const
59
- */
60
- const ARROW_HORIZONTAL_PADDING = 12;
61
- exports.ARROW_HORIZONTAL_PADDING = ARROW_HORIZONTAL_PADDING;
62
-
63
- /**
64
- * Amount drop-downs should be padded away from the source, in px.
65
- * @type {number}
66
- * @const
67
- */
68
- const PADDING_Y = 16;
69
- exports.PADDING_Y = PADDING_Y;
70
-
71
- /**
72
- * Length of animations in seconds.
73
- * @type {number}
74
- * @const
75
- */
76
- const ANIMATION_TIME = 0.25;
77
- exports.ANIMATION_TIME = ANIMATION_TIME;
78
-
79
- /**
80
- * Timer for animation out, to be cleared if we need to immediately hide
81
- * without disrupting new shows.
82
- * @type {?number}
83
- */
84
- let animateOutTimer = null;
85
-
86
- /**
87
- * Callback for when the drop-down is hidden.
88
- * @type {?Function}
89
- */
90
- let onHide = null;
91
-
92
- /**
93
- * A class name representing the current owner's workspace renderer.
94
- * @type {string}
95
- */
96
- let renderedClassName = '';
97
-
98
- /**
99
- * A class name representing the current owner's workspace theme.
100
- * @type {string}
101
- */
102
- let themeClassName = '';
103
-
104
- /**
105
- * The content element.
106
- * @type {!HTMLDivElement}
107
- */
108
- let div;
109
-
110
- /**
111
- * The content element.
112
- * @type {!HTMLDivElement}
113
- */
114
- let content;
115
-
116
- /**
117
- * The arrow element.
118
- * @type {!HTMLDivElement}
119
- */
120
- let arrow;
121
-
122
- /**
123
- * Drop-downs will appear within the bounds of this element if possible.
124
- * Set in setBoundsElement.
125
- * @type {?Element}
126
- */
127
- let boundsElement = null;
128
-
129
- /**
130
- * The object currently using the drop-down.
131
- * @type {?Object}
132
- */
133
- let owner = null;
134
-
135
- /**
136
- * Whether the dropdown was positioned to a field or the source block.
137
- * @type {?boolean}
138
- */
139
- let positionToField = null;
140
-
141
- /**
142
- * Dropdown bounds info object used to encapsulate sizing information about a
143
- * bounding element (bounding box and width/height).
144
- * @typedef {{
145
- * top:number,
146
- * left:number,
147
- * bottom:number,
148
- * right:number,
149
- * width:number,
150
- * height:number
151
- * }}
152
- */
153
- let BoundsInfo;
154
- exports.BoundsInfo = BoundsInfo;
155
-
156
- /**
157
- * Dropdown position metrics.
158
- * @typedef {{
159
- * initialX:number,
160
- * initialY:number,
161
- * finalX:number,
162
- * finalY:number,
163
- * arrowX:?number,
164
- * arrowY:?number,
165
- * arrowAtTop:?boolean,
166
- * arrowVisible:boolean
167
- * }}
168
- */
169
- let PositionMetrics;
170
- exports.PositionMetrics = PositionMetrics;
171
-
172
- /**
173
- * Create and insert the DOM element for this div.
174
- * @package
175
- */
176
- const createDom = function() {
177
- if (div) {
178
- return; // Already created.
179
- }
180
- div = /** @type {!HTMLDivElement} */ (document.createElement('div'));
181
- div.className = 'blocklyDropDownDiv';
182
- const parentDiv = common.getParentContainer() || document.body;
183
- parentDiv.appendChild(div);
184
-
185
- content = /** @type {!HTMLDivElement} */ (document.createElement('div'));
186
- content.className = 'blocklyDropDownContent';
187
- div.appendChild(content);
188
-
189
- arrow = /** @type {!HTMLDivElement} */ (document.createElement('div'));
190
- arrow.className = 'blocklyDropDownArrow';
191
- div.appendChild(arrow);
192
-
193
- div.style.opacity = 0;
194
-
195
- // Transition animation for transform: translate() and opacity.
196
- div.style.transition = 'transform ' + ANIMATION_TIME + 's, ' +
197
- 'opacity ' + ANIMATION_TIME + 's';
198
-
199
- // Handle focusin/out events to add a visual indicator when
200
- // a child is focused or blurred.
201
- div.addEventListener('focusin', function() {
202
- dom.addClass(div, 'blocklyFocused');
203
- });
204
- div.addEventListener('focusout', function() {
205
- dom.removeClass(div, 'blocklyFocused');
206
- });
207
- };
208
- exports.createDom = createDom;
209
-
210
- /**
211
- * Set an element to maintain bounds within. Drop-downs will appear
212
- * within the box of this element if possible.
213
- * @param {?Element} boundsElem Element to bind drop-down to.
214
- */
215
- const setBoundsElement = function(boundsElem) {
216
- boundsElement = boundsElem;
217
- };
218
- exports.setBoundsElement = setBoundsElement;
219
-
220
- /**
221
- * Provide the div for inserting content into the drop-down.
222
- * @return {!Element} Div to populate with content.
223
- */
224
- const getContentDiv = function() {
225
- return content;
226
- };
227
- exports.getContentDiv = getContentDiv;
228
-
229
- /**
230
- * Clear the content of the drop-down.
231
- */
232
- const clearContent = function() {
233
- content.textContent = '';
234
- content.style.width = '';
235
- };
236
- exports.clearContent = clearContent;
237
-
238
- /**
239
- * Set the colour for the drop-down.
240
- * @param {string} backgroundColour Any CSS colour for the background.
241
- * @param {string} borderColour Any CSS colour for the border.
242
- */
243
- const setColour = function(backgroundColour, borderColour) {
244
- div.style.backgroundColor = backgroundColour;
245
- div.style.borderColor = borderColour;
246
- };
247
- exports.setColour = setColour;
248
-
249
- /**
250
- * Shortcut to show and place the drop-down with positioning determined
251
- * by a particular block. The primary position will be below the block,
252
- * and the secondary position above the block. Drop-down will be
253
- * constrained to the block's workspace.
254
- * @param {!Field} field The field showing the drop-down.
255
- * @param {!BlockSvg} block Block to position the drop-down around.
256
- * @param {Function=} opt_onHide Optional callback for when the drop-down is
257
- * hidden.
258
- * @param {number=} opt_secondaryYOffset Optional Y offset for above-block
259
- * positioning.
260
- * @return {boolean} True if the menu rendered below block; false if above.
261
- */
262
- const showPositionedByBlock = function(
263
- field, block, opt_onHide, opt_secondaryYOffset) {
264
- return showPositionedByRect(
265
- getScaledBboxOfBlock(block), field, opt_onHide, opt_secondaryYOffset);
266
- };
267
- exports.showPositionedByBlock = showPositionedByBlock;
268
-
269
- /**
270
- * Shortcut to show and place the drop-down with positioning determined
271
- * by a particular field. The primary position will be below the field,
272
- * and the secondary position above the field. Drop-down will be
273
- * constrained to the block's workspace.
274
- * @param {!Field} field The field to position the dropdown against.
275
- * @param {Function=} opt_onHide Optional callback for when the drop-down is
276
- * hidden.
277
- * @param {number=} opt_secondaryYOffset Optional Y offset for above-block
278
- * positioning.
279
- * @return {boolean} True if the menu rendered below block; false if above.
280
- */
281
- const showPositionedByField = function(
282
- field, opt_onHide, opt_secondaryYOffset) {
283
- positionToField = true;
284
- return showPositionedByRect(
285
- getScaledBboxOfField(field), field, opt_onHide, opt_secondaryYOffset);
286
- };
287
- exports.showPositionedByField = showPositionedByField;
288
-
289
- /**
290
- * Get the scaled bounding box of a block.
291
- * @param {!BlockSvg} block The block.
292
- * @return {!Rect} The scaled bounding box of the block.
293
- */
294
- const getScaledBboxOfBlock = function(block) {
295
- const blockSvg = block.getSvgRoot();
296
- const bBox = blockSvg.getBBox();
297
- const scale = block.workspace.scale;
298
- const scaledHeight = bBox.height * scale;
299
- const scaledWidth = bBox.width * scale;
300
- const xy = style.getPageOffset(blockSvg);
301
- return new Rect(xy.y, xy.y + scaledHeight, xy.x, xy.x + scaledWidth);
302
- };
303
-
304
- /**
305
- * Get the scaled bounding box of a field.
306
- * @param {!Field} field The field.
307
- * @return {!Rect} The scaled bounding box of the field.
308
- */
309
- const getScaledBboxOfField = function(field) {
310
- const bBox = field.getScaledBBox();
311
- return new Rect(bBox.top, bBox.bottom, bBox.left, bBox.right);
312
- };
313
-
314
- /**
315
- * Helper method to show and place the drop-down with positioning determined
316
- * by a scaled bounding box. The primary position will be below the rect,
317
- * and the secondary position above the rect. Drop-down will be constrained to
318
- * the block's workspace.
319
- * @param {!Rect} bBox The scaled bounding box.
320
- * @param {!Field} field The field to position the dropdown against.
321
- * @param {Function=} opt_onHide Optional callback for when the drop-down is
322
- * hidden.
323
- * @param {number=} opt_secondaryYOffset Optional Y offset for above-block
324
- * positioning.
325
- * @return {boolean} True if the menu rendered below block; false if above.
326
- */
327
- const showPositionedByRect = function(
328
- bBox, field, opt_onHide, opt_secondaryYOffset) {
329
- // If we can fit it, render below the block.
330
- const primaryX = bBox.left + (bBox.right - bBox.left) / 2;
331
- const primaryY = bBox.bottom;
332
- // If we can't fit it, render above the entire parent block.
333
- const secondaryX = primaryX;
334
- let secondaryY = bBox.top;
335
- if (opt_secondaryYOffset) {
336
- secondaryY += opt_secondaryYOffset;
337
- }
338
- const sourceBlock = /** @type {!BlockSvg} */ (field.getSourceBlock());
339
- // Set bounds to main workspace; show the drop-down.
340
- let workspace = sourceBlock.workspace;
341
- while (workspace.options.parentWorkspace) {
342
- workspace =
343
- /** @type {!WorkspaceSvg} */ (workspace.options.parentWorkspace);
344
- }
345
- setBoundsElement(
346
- /** @type {?Element} */ (workspace.getParentSvg().parentNode));
347
- return show(
348
- field, sourceBlock.RTL, primaryX, primaryY, secondaryX, secondaryY,
349
- opt_onHide);
350
- };
351
-
352
- /**
353
- * Show and place the drop-down.
354
- * The drop-down is placed with an absolute "origin point" (x, y) - i.e.,
355
- * the arrow will point at this origin and box will positioned below or above
356
- * it. If we can maintain the container bounds at the primary point, the arrow
357
- * will point there, and the container will be positioned below it.
358
- * If we can't maintain the container bounds at the primary point, fall-back to
359
- * the secondary point and position above.
360
- * @param {?Object} newOwner The object showing the drop-down
361
- * @param {boolean} rtl Right-to-left (true) or left-to-right (false).
362
- * @param {number} primaryX Desired origin point x, in absolute px.
363
- * @param {number} primaryY Desired origin point y, in absolute px.
364
- * @param {number} secondaryX Secondary/alternative origin point x, in absolute
365
- * px.
366
- * @param {number} secondaryY Secondary/alternative origin point y, in absolute
367
- * px.
368
- * @param {Function=} opt_onHide Optional callback for when the drop-down is
369
- * hidden.
370
- * @return {boolean} True if the menu rendered at the primary origin point.
371
- * @package
372
- */
373
- const show = function(
374
- newOwner, rtl, primaryX, primaryY, secondaryX, secondaryY, opt_onHide) {
375
- owner = newOwner;
376
- onHide = opt_onHide || null;
377
- // Set direction.
378
- div.style.direction = rtl ? 'rtl' : 'ltr';
379
-
380
- const mainWorkspace =
381
- /** @type {!WorkspaceSvg} */ (common.getMainWorkspace());
382
- renderedClassName = mainWorkspace.getRenderer().getClassName();
383
- themeClassName = mainWorkspace.getTheme().getClassName();
384
- dom.addClass(div, renderedClassName);
385
- dom.addClass(div, themeClassName);
386
-
387
- // When we change `translate` multiple times in close succession,
388
- // Chrome may choose to wait and apply them all at once.
389
- // Since we want the translation to initial X, Y to be immediate,
390
- // and the translation to final X, Y to be animated,
391
- // we saw problems where both would be applied after animation was turned on,
392
- // making the dropdown appear to fly in from (0, 0).
393
- // Using both `left`, `top` for the initial translation and then `translate`
394
- // for the animated transition to final X, Y is a workaround.
395
-
396
- return positionInternal(primaryX, primaryY, secondaryX, secondaryY);
397
- };
398
- exports.show = show;
399
-
400
- const internal = {};
401
-
402
- /**
403
- * Get sizing info about the bounding element.
404
- * @return {!BoundsInfo} An object containing size
405
- * information about the bounding element (bounding box and width/height).
406
- */
407
- internal.getBoundsInfo = function() {
408
- const boundPosition = style.getPageOffset(
409
- /** @type {!Element} */ (boundsElement));
410
- const boundSize = style.getSize(
411
- /** @type {!Element} */ (boundsElement));
412
-
413
- return {
414
- left: boundPosition.x,
415
- right: boundPosition.x + boundSize.width,
416
- top: boundPosition.y,
417
- bottom: boundPosition.y + boundSize.height,
418
- width: boundSize.width,
419
- height: boundSize.height,
420
- };
421
- };
422
-
423
- /**
424
- * Helper to position the drop-down and the arrow, maintaining bounds.
425
- * See explanation of origin points in show.
426
- * @param {number} primaryX Desired origin point x, in absolute px.
427
- * @param {number} primaryY Desired origin point y, in absolute px.
428
- * @param {number} secondaryX Secondary/alternative origin point x,
429
- * in absolute px.
430
- * @param {number} secondaryY Secondary/alternative origin point y,
431
- * in absolute px.
432
- * @return {!PositionMetrics} Various final metrics,
433
- * including rendered positions for drop-down and arrow.
434
- */
435
- internal.getPositionMetrics = function(
436
- primaryX, primaryY, secondaryX, secondaryY) {
437
- const boundsInfo = internal.getBoundsInfo();
438
- const divSize = style.getSize(
439
- /** @type {!Element} */ (div));
440
-
441
- // Can we fit in-bounds below the target?
442
- if (primaryY + divSize.height < boundsInfo.bottom) {
443
- return getPositionBelowMetrics(primaryX, primaryY, boundsInfo, divSize);
444
- }
445
- // Can we fit in-bounds above the target?
446
- if (secondaryY - divSize.height > boundsInfo.top) {
447
- return getPositionAboveMetrics(secondaryX, secondaryY, boundsInfo, divSize);
448
- }
449
- // Can we fit outside the workspace bounds (but inside the window) below?
450
- if (primaryY + divSize.height < document.documentElement.clientHeight) {
451
- return getPositionBelowMetrics(primaryX, primaryY, boundsInfo, divSize);
452
- }
453
- // Can we fit outside the workspace bounds (but inside the window) above?
454
- if (secondaryY - divSize.height > document.documentElement.clientTop) {
455
- return getPositionAboveMetrics(secondaryX, secondaryY, boundsInfo, divSize);
456
- }
457
-
458
- // Last resort, render at top of page.
459
- return getPositionTopOfPageMetrics(primaryX, boundsInfo, divSize);
460
- };
461
-
462
- /**
463
- * Get the metrics for positioning the div below the source.
464
- * @param {number} primaryX Desired origin point x, in absolute px.
465
- * @param {number} primaryY Desired origin point y, in absolute px.
466
- * @param {!BoundsInfo} boundsInfo An object containing size
467
- * information about the bounding element (bounding box and width/height).
468
- * @param {!Size} divSize An object containing information about
469
- * the size of the DropDownDiv (width & height).
470
- * @return {!PositionMetrics} Various final metrics,
471
- * including rendered positions for drop-down and arrow.
472
- */
473
- const getPositionBelowMetrics = function(
474
- primaryX, primaryY, boundsInfo, divSize) {
475
- const xCoords =
476
- getPositionX(primaryX, boundsInfo.left, boundsInfo.right, divSize.width);
477
-
478
- const arrowY = -(ARROW_SIZE / 2 + BORDER_SIZE);
479
- const finalY = primaryY + PADDING_Y;
480
-
481
- return {
482
- initialX: xCoords.divX,
483
- initialY: primaryY,
484
- finalX: xCoords.divX, // X position remains constant during animation.
485
- finalY: finalY,
486
- arrowX: xCoords.arrowX,
487
- arrowY: arrowY,
488
- arrowAtTop: true,
489
- arrowVisible: true,
490
- };
491
- };
492
-
493
- /**
494
- * Get the metrics for positioning the div above the source.
495
- * @param {number} secondaryX Secondary/alternative origin point x,
496
- * in absolute px.
497
- * @param {number} secondaryY Secondary/alternative origin point y,
498
- * in absolute px.
499
- * @param {!BoundsInfo} boundsInfo An object containing size
500
- * information about the bounding element (bounding box and width/height).
501
- * @param {!Size} divSize An object containing information about
502
- * the size of the DropDownDiv (width & height).
503
- * @return {!PositionMetrics} Various final metrics,
504
- * including rendered positions for drop-down and arrow.
505
- */
506
- const getPositionAboveMetrics = function(
507
- secondaryX, secondaryY, boundsInfo, divSize) {
508
- const xCoords = getPositionX(
509
- secondaryX, boundsInfo.left, boundsInfo.right, divSize.width);
510
-
511
- const arrowY = divSize.height - (BORDER_SIZE * 2) - (ARROW_SIZE / 2);
512
- const finalY = secondaryY - divSize.height - PADDING_Y;
513
- const initialY = secondaryY - divSize.height; // No padding on Y.
514
-
515
- return {
516
- initialX: xCoords.divX,
517
- initialY: initialY,
518
- finalX: xCoords.divX, // X position remains constant during animation.
519
- finalY: finalY,
520
- arrowX: xCoords.arrowX,
521
- arrowY: arrowY,
522
- arrowAtTop: false,
523
- arrowVisible: true,
524
- };
525
- };
526
-
527
- /**
528
- * Get the metrics for positioning the div at the top of the page.
529
- * @param {number} sourceX Desired origin point x, in absolute px.
530
- * @param {!BoundsInfo} boundsInfo An object containing size
531
- * information about the bounding element (bounding box and width/height).
532
- * @param {!Size} divSize An object containing information about
533
- * the size of the DropDownDiv (width & height).
534
- * @return {!PositionMetrics} Various final metrics,
535
- * including rendered positions for drop-down and arrow.
536
- */
537
- const getPositionTopOfPageMetrics = function(sourceX, boundsInfo, divSize) {
538
- const xCoords =
539
- getPositionX(sourceX, boundsInfo.left, boundsInfo.right, divSize.width);
540
-
541
- // No need to provide arrow-specific information because it won't be visible.
542
- return {
543
- initialX: xCoords.divX,
544
- initialY: 0,
545
- finalX: xCoords.divX, // X position remains constant during animation.
546
- finalY: 0, // Y position remains constant during animation.
547
- arrowAtTop: null,
548
- arrowX: null,
549
- arrowY: null,
550
- arrowVisible: false,
551
- };
552
- };
553
-
554
- /**
555
- * Get the x positions for the left side of the DropDownDiv and the arrow,
556
- * accounting for the bounds of the workspace.
557
- * @param {number} sourceX Desired origin point x, in absolute px.
558
- * @param {number} boundsLeft The left edge of the bounding element, in
559
- * absolute px.
560
- * @param {number} boundsRight The right edge of the bounding element, in
561
- * absolute px.
562
- * @param {number} divWidth The width of the div in px.
563
- * @return {{divX: number, arrowX: number}} An object containing metrics for
564
- * the x positions of the left side of the DropDownDiv and the arrow.
565
- * @package
566
- */
567
- const getPositionX = function(sourceX, boundsLeft, boundsRight, divWidth) {
568
- let divX = sourceX;
569
- // Offset the topLeft coord so that the dropdowndiv is centered.
570
- divX -= divWidth / 2;
571
- // Fit the dropdowndiv within the bounds of the workspace.
572
- divX = math.clamp(boundsLeft, divX, boundsRight - divWidth);
573
-
574
- let arrowX = sourceX;
575
- // Offset the arrow coord so that the arrow is centered.
576
- arrowX -= ARROW_SIZE / 2;
577
- // Convert the arrow position to be relative to the top left of the div.
578
- let relativeArrowX = arrowX - divX;
579
- const horizPadding = ARROW_HORIZONTAL_PADDING;
580
- // Clamp the arrow position so that it stays attached to the dropdowndiv.
581
- relativeArrowX = math.clamp(
582
- horizPadding, relativeArrowX, divWidth - horizPadding - ARROW_SIZE);
583
-
584
- return {arrowX: relativeArrowX, divX: divX};
585
- };
586
- exports.getPositionX = getPositionX;
587
-
588
- /**
589
- * Is the container visible?
590
- * @return {boolean} True if visible.
591
- */
592
- const isVisible = function() {
593
- return !!owner;
594
- };
595
- exports.isVisible = isVisible;
596
-
597
- /**
598
- * Hide the menu only if it is owned by the provided object.
599
- * @param {?Object} divOwner Object which must be owning the drop-down to hide.
600
- * @param {boolean=} opt_withoutAnimation True if we should hide the dropdown
601
- * without animating.
602
- * @return {boolean} True if hidden.
603
- */
604
- const hideIfOwner = function(divOwner, opt_withoutAnimation) {
605
- if (owner === divOwner) {
606
- if (opt_withoutAnimation) {
607
- hideWithoutAnimation();
608
- } else {
609
- hide();
610
- }
611
- return true;
612
- }
613
- return false;
614
- };
615
- exports.hideIfOwner = hideIfOwner;
616
-
617
- /**
618
- * Hide the menu, triggering animation.
619
- */
620
- const hide = function() {
621
- // Start the animation by setting the translation and fading out.
622
- // Reset to (initialX, initialY) - i.e., no translation.
623
- div.style.transform = 'translate(0, 0)';
624
- div.style.opacity = 0;
625
- // Finish animation - reset all values to default.
626
- animateOutTimer = setTimeout(function() {
627
- hideWithoutAnimation();
628
- }, ANIMATION_TIME * 1000);
629
- if (onHide) {
630
- onHide();
631
- onHide = null;
632
- }
633
- };
634
- exports.hide = hide;
635
-
636
- /**
637
- * Hide the menu, without animation.
638
- */
639
- const hideWithoutAnimation = function() {
640
- if (!isVisible()) {
641
- return;
642
- }
643
- if (animateOutTimer) {
644
- clearTimeout(animateOutTimer);
645
- }
646
-
647
- // Reset style properties in case this gets called directly
648
- // instead of hide() - see discussion on #2551.
649
- div.style.transform = '';
650
- div.style.left = '';
651
- div.style.top = '';
652
- div.style.opacity = 0;
653
- div.style.display = 'none';
654
- div.style.backgroundColor = '';
655
- div.style.borderColor = '';
656
-
657
- if (onHide) {
658
- onHide();
659
- onHide = null;
660
- }
661
- clearContent();
662
- owner = null;
663
-
664
- if (renderedClassName) {
665
- dom.removeClass(div, renderedClassName);
666
- renderedClassName = '';
667
- }
668
- if (themeClassName) {
669
- dom.removeClass(div, themeClassName);
670
- themeClassName = '';
671
- }
672
- (/** @type {!WorkspaceSvg} */ (common.getMainWorkspace())).markFocused();
673
- };
674
- exports.hideWithoutAnimation = hideWithoutAnimation;
675
-
676
- /**
677
- * Set the dropdown div's position.
678
- * @param {number} primaryX Desired origin point x, in absolute px.
679
- * @param {number} primaryY Desired origin point y, in absolute px.
680
- * @param {number} secondaryX Secondary/alternative origin point x,
681
- * in absolute px.
682
- * @param {number} secondaryY Secondary/alternative origin point y,
683
- * in absolute px.
684
- * @return {boolean} True if the menu rendered at the primary origin point.
685
- */
686
- const positionInternal = function(primaryX, primaryY, secondaryX, secondaryY) {
687
- const metrics =
688
- internal.getPositionMetrics(primaryX, primaryY, secondaryX, secondaryY);
689
-
690
- // Update arrow CSS.
691
- if (metrics.arrowVisible) {
692
- arrow.style.display = '';
693
- arrow.style.transform = 'translate(' + metrics.arrowX + 'px,' +
694
- metrics.arrowY + 'px) rotate(45deg)';
695
- arrow.setAttribute(
696
- 'class',
697
- metrics.arrowAtTop ? 'blocklyDropDownArrow blocklyArrowTop' :
698
- 'blocklyDropDownArrow blocklyArrowBottom');
699
- } else {
700
- arrow.style.display = 'none';
701
- }
702
-
703
- const initialX = Math.floor(metrics.initialX);
704
- const initialY = Math.floor(metrics.initialY);
705
- const finalX = Math.floor(metrics.finalX);
706
- const finalY = Math.floor(metrics.finalY);
707
-
708
- // First apply initial translation.
709
- div.style.left = initialX + 'px';
710
- div.style.top = initialY + 'px';
711
-
712
- // Show the div.
713
- div.style.display = 'block';
714
- div.style.opacity = 1;
715
- // Add final translate, animated through `transition`.
716
- // Coordinates are relative to (initialX, initialY),
717
- // where the drop-down is absolutely positioned.
718
- const dx = finalX - initialX;
719
- const dy = finalY - initialY;
720
- div.style.transform = 'translate(' + dx + 'px,' + dy + 'px)';
721
-
722
- return !!metrics.arrowAtTop;
723
- };
724
-
725
- /**
726
- * Repositions the dropdownDiv on window resize. If it doesn't know how to
727
- * calculate the new position, it will just hide it instead.
728
- * @package
729
- */
730
- const repositionForWindowResize = function() {
731
- // This condition mainly catches the dropdown div when it is being used as a
732
- // dropdown. It is important not to close it in this case because on Android,
733
- // when a field is focused, the soft keyboard opens triggering a window resize
734
- // event and we want the dropdown div to stick around so users can type into
735
- // it.
736
- if (owner) {
737
- const field = /** @type {!Field} */ (owner);
738
- const block = /** @type {!BlockSvg} */ (field.getSourceBlock());
739
- const bBox = positionToField ? getScaledBboxOfField(field) :
740
- getScaledBboxOfBlock(block);
741
- // If we can fit it, render below the block.
742
- const primaryX = bBox.left + (bBox.right - bBox.left) / 2;
743
- const primaryY = bBox.bottom;
744
- // If we can't fit it, render above the entire parent block.
745
- const secondaryX = primaryX;
746
- const secondaryY = bBox.top;
747
- positionInternal(primaryX, primaryY, secondaryX, secondaryY);
748
- } else {
749
- hide();
750
- }
751
- };
752
- exports.repositionForWindowResize = repositionForWindowResize;
753
-
754
- exports.TEST_ONLY = internal;