blockly 8.0.4 → 8.0.5-beta.0

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 (858) hide show
  1. package/blockly.min.js +2421 -2688
  2. package/blockly_compressed.js +1499 -1994
  3. package/blockly_compressed.js.map +1 -1
  4. package/blocks/blocks.js +3 -2
  5. package/blocks/colour.js +3 -1
  6. package/blocks/lists.js +94 -22
  7. package/blocks/logic.js +14 -6
  8. package/blocks/loops.js +5 -3
  9. package/blocks/math.js +3 -1
  10. package/blocks/procedures.js +3 -1
  11. package/blocks/text.js +14 -6
  12. package/blocks/variables.js +3 -1
  13. package/blocks/variables_dynamic.js +3 -1
  14. package/blocks.d.ts +0 -2
  15. package/blocks_compressed.js +189 -171
  16. package/blocks_compressed.js.map +1 -1
  17. package/closure/goog/base.d.ts +1 -0
  18. package/closure/goog/base_minimal.d.ts +18 -0
  19. package/closure/goog/goog.d.ts +25 -0
  20. package/core/any_aliases.d.ts +1 -0
  21. package/core/any_aliases.ts +1 -0
  22. package/core/block.d.ts +779 -0
  23. package/core/{block.js → block.ts} +610 -719
  24. package/core/block_animations.d.ts +33 -0
  25. package/core/{block_animations.js → block_animations.ts} +75 -79
  26. package/core/block_drag_surface.d.ts +111 -0
  27. package/core/{block_drag_surface.js → block_drag_surface.ts} +85 -117
  28. package/core/block_dragger.d.ts +143 -0
  29. package/core/{block_dragger.js → block_dragger.ts} +139 -176
  30. package/core/block_svg.d.ts +588 -0
  31. package/core/{block_svg.js → block_svg.ts} +494 -630
  32. package/core/blockly.d.ts +562 -0
  33. package/core/blockly.js +1 -1
  34. package/core/blockly.ts +749 -0
  35. package/core/blockly_options.d.ts +69 -0
  36. package/core/blockly_options.ts +81 -0
  37. package/core/blocks.d.ts +17 -0
  38. package/core/{blocks.js → blocks.ts} +4 -8
  39. package/core/browser_events.d.ts +85 -0
  40. package/core/{browser_events.js → browser_events.ts} +98 -93
  41. package/core/bubble.d.ts +279 -0
  42. package/core/{bubble.js → bubble.ts} +277 -370
  43. package/core/bubble_dragger.d.ts +73 -0
  44. package/core/bubble_dragger.ts +229 -0
  45. package/core/bump_objects.d.ts +34 -0
  46. package/core/{bump_objects.js → bump_objects.ts} +54 -52
  47. package/core/clipboard.d.ts +42 -0
  48. package/core/clipboard.ts +91 -0
  49. package/core/comment.d.ts +113 -0
  50. package/core/{comment.js → comment.ts} +135 -185
  51. package/core/common.d.ts +129 -0
  52. package/core/{common.js → common.ts} +105 -82
  53. package/core/component_manager.d.ts +91 -0
  54. package/core/component_manager.ts +211 -0
  55. package/core/config.d.ts +23 -0
  56. package/core/{config.js → config.ts} +12 -19
  57. package/core/connection.d.ts +232 -0
  58. package/core/{connection.js → connection.ts} +187 -237
  59. package/core/connection_checker.d.ts +78 -0
  60. package/core/{connection_checker.js → connection_checker.ts} +66 -77
  61. package/core/connection_db.d.ts +91 -0
  62. package/core/{connection_db.js → connection_db.ts} +62 -87
  63. package/core/connection_type.d.ts +15 -0
  64. package/core/{connection_type.js → connection_type.ts} +8 -12
  65. package/core/constants.d.ts +15 -0
  66. package/core/{constants.js → constants.ts} +4 -8
  67. package/core/contextmenu.d.ts +80 -0
  68. package/core/{contextmenu.js → contextmenu.ts} +118 -153
  69. package/core/contextmenu_items.d.ts +77 -0
  70. package/core/contextmenu_items.ts +576 -0
  71. package/core/contextmenu_registry.d.ts +105 -0
  72. package/core/contextmenu_registry.ts +179 -0
  73. package/core/css.d.ts +24 -0
  74. package/core/{css.js → css.ts} +16 -24
  75. package/core/delete_area.d.ts +47 -0
  76. package/core/delete_area.ts +82 -0
  77. package/core/dialog.d.ts +61 -0
  78. package/core/dialog.ts +127 -0
  79. package/core/drag_target.d.ts +63 -0
  80. package/core/drag_target.ts +94 -0
  81. package/core/dropdowndiv.d.ts +155 -0
  82. package/core/{dropdowndiv.js → dropdowndiv.ts} +262 -333
  83. package/core/events/events.d.ts +102 -0
  84. package/core/events/events.ts +123 -0
  85. package/core/events/events_abstract.d.ts +51 -0
  86. package/core/events/events_abstract.ts +112 -0
  87. package/core/events/events_block_base.d.ts +31 -0
  88. package/core/events/events_block_base.ts +65 -0
  89. package/core/events/events_block_change.d.ts +55 -0
  90. package/core/events/{events_block_change.js → events_block_change.ts} +45 -48
  91. package/core/events/events_block_create.d.ts +35 -0
  92. package/core/events/{events_block_create.js → events_block_create.ts} +30 -35
  93. package/core/events/events_block_delete.d.ts +36 -0
  94. package/core/events/{events_block_delete.js → events_block_delete.ts} +34 -39
  95. package/core/events/events_block_drag.d.ts +36 -0
  96. package/core/events/events_block_drag.ts +82 -0
  97. package/core/events/events_block_move.d.ts +51 -0
  98. package/core/events/{events_block_move.js → events_block_move.ts} +54 -50
  99. package/core/events/events_bubble_open.d.ts +35 -0
  100. package/core/events/events_bubble_open.ts +82 -0
  101. package/core/events/events_click.d.ts +36 -0
  102. package/core/events/{events_click.js → events_click.ts} +27 -30
  103. package/core/events/events_comment_base.d.ts +39 -0
  104. package/core/events/events_comment_base.ts +107 -0
  105. package/core/events/events_comment_change.d.ts +43 -0
  106. package/core/events/{events_comment_change.js → events_comment_change.ts} +31 -28
  107. package/core/events/events_comment_create.d.ts +35 -0
  108. package/core/events/{events_comment_create.js → events_comment_create.ts} +24 -26
  109. package/core/events/events_comment_delete.d.ts +35 -0
  110. package/core/events/{events_comment_delete.js → events_comment_delete.ts} +20 -24
  111. package/core/events/events_comment_move.d.ts +55 -0
  112. package/core/events/{events_comment_move.js → events_comment_move.ts} +39 -42
  113. package/core/events/events_marker_move.d.ts +40 -0
  114. package/core/events/events_marker_move.ts +99 -0
  115. package/core/events/events_selected.d.ts +34 -0
  116. package/core/events/events_selected.ts +78 -0
  117. package/core/events/events_theme_change.d.ts +30 -0
  118. package/core/events/{events_theme_change.js → events_theme_change.ts} +19 -24
  119. package/core/events/events_toolbox_item_select.d.ts +34 -0
  120. package/core/events/events_toolbox_item_select.ts +79 -0
  121. package/core/events/events_trashcan_open.d.ts +31 -0
  122. package/core/events/events_trashcan_open.ts +68 -0
  123. package/core/events/events_ui.d.ts +37 -0
  124. package/core/events/{events_ui.js → events_ui.ts} +27 -26
  125. package/core/events/events_ui_base.d.ts +26 -0
  126. package/core/events/{events_ui_base.js → events_ui_base.ts} +17 -26
  127. package/core/events/events_var_base.d.ts +31 -0
  128. package/core/events/events_var_base.ts +65 -0
  129. package/core/events/events_var_create.d.ts +35 -0
  130. package/core/events/{events_var_create.js → events_var_create.ts} +24 -25
  131. package/core/events/events_var_delete.d.ts +35 -0
  132. package/core/events/{events_var_delete.js → events_var_delete.ts} +24 -25
  133. package/core/events/events_var_rename.d.ts +36 -0
  134. package/core/events/{events_var_rename.js → events_var_rename.ts} +25 -26
  135. package/core/events/events_viewport.d.ts +39 -0
  136. package/core/events/events_viewport.ts +100 -0
  137. package/core/events/utils.d.ts +272 -0
  138. package/core/events/{utils.js → utils.ts} +148 -219
  139. package/core/events/workspace_events.d.ts +36 -0
  140. package/core/events/workspace_events.ts +86 -0
  141. package/core/extensions.d.ts +107 -0
  142. package/core/{extensions.js → extensions.ts} +153 -172
  143. package/core/field.d.ts +534 -0
  144. package/core/{field.js → field.ts} +413 -489
  145. package/core/field_angle.d.ts +176 -0
  146. package/core/field_angle.ts +563 -0
  147. package/core/field_checkbox.d.ts +124 -0
  148. package/core/field_checkbox.ts +243 -0
  149. package/core/field_colour.d.ts +200 -0
  150. package/core/field_colour.ts +632 -0
  151. package/core/field_dropdown.d.ts +222 -0
  152. package/core/{field_dropdown.js → field_dropdown.ts} +277 -299
  153. package/core/field_image.d.ts +134 -0
  154. package/core/field_image.ts +282 -0
  155. package/core/field_label.d.ts +71 -0
  156. package/core/field_label.ts +152 -0
  157. package/core/field_label_serializable.d.ts +42 -0
  158. package/core/field_label_serializable.ts +76 -0
  159. package/core/field_multilineinput.d.ts +146 -0
  160. package/core/{field_multilineinput.js → field_multilineinput.ts} +166 -163
  161. package/core/field_number.d.ts +156 -0
  162. package/core/{field_number.js → field_number.ts} +110 -123
  163. package/core/field_registry.d.ts +45 -0
  164. package/core/{field_registry.js → field_registry.ts} +37 -30
  165. package/core/field_textinput.d.ts +219 -0
  166. package/core/field_textinput.ts +591 -0
  167. package/core/field_variable.d.ts +217 -0
  168. package/core/{field_variable.js → field_variable.ts} +174 -187
  169. package/core/flyout_base.d.ts +459 -0
  170. package/core/{flyout_base.js → flyout_base.ts} +429 -518
  171. package/core/flyout_button.d.ts +81 -0
  172. package/core/flyout_button.ts +292 -0
  173. package/core/flyout_horizontal.d.ts +82 -0
  174. package/core/{flyout_horizontal.js → flyout_horizontal.ts} +97 -107
  175. package/core/flyout_metrics_manager.d.ts +40 -0
  176. package/core/{flyout_metrics_manager.js → flyout_metrics_manager.ts} +22 -34
  177. package/core/flyout_vertical.d.ts +83 -0
  178. package/core/{flyout_vertical.js → flyout_vertical.ts} +106 -117
  179. package/core/generator.d.ts +205 -0
  180. package/core/{generator.js → generator.ts} +168 -193
  181. package/core/gesture.d.ts +357 -0
  182. package/core/{gesture.js → gesture.ts} +289 -369
  183. package/core/grid.d.ts +83 -0
  184. package/core/grid.ts +192 -0
  185. package/core/icon.d.ts +78 -0
  186. package/core/icon.ts +189 -0
  187. package/core/inject.d.ts +15 -0
  188. package/core/{inject.js → inject.ts} +101 -100
  189. package/core/input.d.ts +128 -0
  190. package/core/input.ts +309 -0
  191. package/core/input_types.d.ts +14 -0
  192. package/core/{input_types.js → input_types.ts} +8 -12
  193. package/core/insertion_marker_manager.d.ts +212 -0
  194. package/core/{insertion_marker_manager.js → insertion_marker_manager.ts} +234 -236
  195. package/core/interfaces/i_ast_node_location.d.ts +11 -0
  196. package/core/interfaces/{i_ast_node_location.js → i_ast_node_location.ts} +4 -7
  197. package/core/interfaces/i_ast_node_location_svg.d.ts +22 -0
  198. package/core/interfaces/i_ast_node_location_svg.ts +37 -0
  199. package/core/interfaces/i_ast_node_location_with_block.d.ts +18 -0
  200. package/core/interfaces/i_ast_node_location_with_block.ts +38 -0
  201. package/core/interfaces/i_autohideable.d.ts +18 -0
  202. package/core/interfaces/i_autohideable.ts +34 -0
  203. package/core/interfaces/i_block_dragger.d.ts +43 -0
  204. package/core/interfaces/i_block_dragger.ts +67 -0
  205. package/core/interfaces/i_bounded_element.d.ts +24 -0
  206. package/core/interfaces/i_bounded_element.ts +42 -0
  207. package/core/interfaces/i_bubble.d.ts +59 -0
  208. package/core/interfaces/i_bubble.ts +88 -0
  209. package/core/interfaces/i_collapsible_toolbox_item.d.ts +26 -0
  210. package/core/interfaces/i_collapsible_toolbox_item.ts +47 -0
  211. package/core/interfaces/i_component.d.ts +17 -0
  212. package/core/interfaces/{i_component.js → i_component.ts} +9 -14
  213. package/core/interfaces/i_connection_checker.d.ts +69 -0
  214. package/core/interfaces/i_connection_checker.ts +102 -0
  215. package/core/interfaces/i_contextmenu.d.ts +13 -0
  216. package/core/interfaces/i_contextmenu.ts +26 -0
  217. package/core/interfaces/i_copyable.d.ts +24 -0
  218. package/core/interfaces/i_copyable.ts +40 -0
  219. package/core/interfaces/i_deletable.d.ts +16 -0
  220. package/core/interfaces/{i_deletable.js → i_deletable.ts} +9 -13
  221. package/core/interfaces/i_delete_area.d.ts +25 -0
  222. package/core/interfaces/i_delete_area.ts +46 -0
  223. package/core/interfaces/i_drag_target.d.ts +53 -0
  224. package/core/interfaces/i_drag_target.ts +84 -0
  225. package/core/interfaces/i_draggable.d.ts +12 -0
  226. package/core/interfaces/{i_draggable.js → i_draggable.ts} +4 -10
  227. package/core/interfaces/i_flyout.d.ts +134 -0
  228. package/core/interfaces/i_flyout.ts +186 -0
  229. package/core/interfaces/i_keyboard_accessible.d.ts +18 -0
  230. package/core/interfaces/i_keyboard_accessible.ts +35 -0
  231. package/core/interfaces/i_metrics_manager.d.ts +117 -0
  232. package/core/interfaces/i_metrics_manager.ts +151 -0
  233. package/core/interfaces/i_movable.d.ts +16 -0
  234. package/core/interfaces/{i_movable.js → i_movable.ts} +9 -13
  235. package/core/interfaces/i_positionable.d.ts +27 -0
  236. package/core/interfaces/i_positionable.ts +50 -0
  237. package/core/interfaces/i_registrable.d.ts +11 -0
  238. package/core/interfaces/{i_registrable.js → i_registrable.ts} +3 -7
  239. package/core/interfaces/i_registrable_field.d.ts +17 -0
  240. package/core/interfaces/{i_registrable_field.js → i_registrable_field.ts} +8 -16
  241. package/core/interfaces/i_selectable.d.ts +18 -0
  242. package/core/interfaces/i_selectable.ts +34 -0
  243. package/core/interfaces/i_selectable_toolbox_item.d.ts +42 -0
  244. package/core/interfaces/i_selectable_toolbox_item.ts +64 -0
  245. package/core/interfaces/i_serializer.d.ts +42 -0
  246. package/core/interfaces/i_serializer.ts +65 -0
  247. package/core/interfaces/i_styleable.d.ts +21 -0
  248. package/core/interfaces/i_styleable.ts +35 -0
  249. package/core/interfaces/i_toolbox.d.ts +85 -0
  250. package/core/interfaces/i_toolbox.ts +127 -0
  251. package/core/interfaces/i_toolbox_item.d.ts +62 -0
  252. package/core/interfaces/i_toolbox_item.ts +84 -0
  253. package/core/internal_constants.d.ts +40 -0
  254. package/core/{internal_constants.js → internal_constants.ts} +13 -18
  255. package/core/keyboard_nav/ast_node.d.ts +239 -0
  256. package/core/keyboard_nav/{ast_node.js → ast_node.ts} +207 -231
  257. package/core/keyboard_nav/basic_cursor.d.ts +88 -0
  258. package/core/keyboard_nav/{basic_cursor.js → basic_cursor.ts} +55 -66
  259. package/core/keyboard_nav/cursor.d.ts +41 -0
  260. package/core/keyboard_nav/{cursor.js → cursor.ts} +25 -35
  261. package/core/keyboard_nav/marker.d.ts +58 -0
  262. package/core/keyboard_nav/{marker.js → marker.ts} +36 -55
  263. package/core/keyboard_nav/tab_navigate_cursor.d.ts +19 -0
  264. package/core/keyboard_nav/{tab_navigate_cursor.js → tab_navigate_cursor.ts} +11 -15
  265. package/core/main.d.ts +11 -0
  266. package/core/main.js +303 -0
  267. package/core/marker_manager.d.ts +85 -0
  268. package/core/marker_manager.ts +181 -0
  269. package/core/menu.d.ts +149 -0
  270. package/core/{menu.js → menu.ts} +141 -174
  271. package/core/menuitem.d.ts +118 -0
  272. package/core/menuitem.ts +240 -0
  273. package/core/metrics_manager.d.ts +201 -0
  274. package/core/{metrics_manager.js → metrics_manager.ts} +117 -156
  275. package/core/msg.d.ts +9 -0
  276. package/core/{msg.js → msg.ts} +4 -8
  277. package/core/mutator.d.ts +128 -0
  278. package/core/{mutator.js → mutator.ts} +196 -211
  279. package/core/names.d.ts +124 -0
  280. package/core/names.ts +267 -0
  281. package/core/options.d.ts +137 -0
  282. package/core/{options.js → options.ts} +147 -173
  283. package/core/positionable_helpers.d.ts +88 -0
  284. package/core/{positionable_helpers.js → positionable_helpers.ts} +63 -70
  285. package/core/procedures.d.ts +108 -0
  286. package/core/{procedures.js → procedures.ts} +143 -152
  287. package/core/registry.d.ts +137 -0
  288. package/core/registry.ts +339 -0
  289. package/core/rendered_connection.d.ts +191 -0
  290. package/core/{rendered_connection.js → rendered_connection.ts} +164 -184
  291. package/core/renderers/common/block_rendering.d.ts +114 -0
  292. package/core/renderers/common/block_rendering.ts +164 -0
  293. package/core/renderers/common/constants.d.ts +458 -0
  294. package/core/renderers/common/constants.ts +1124 -0
  295. package/core/renderers/common/debug.d.ts +28 -0
  296. package/core/renderers/common/{debug.js → debug.ts} +14 -20
  297. package/core/renderers/common/debugger.d.ts +120 -0
  298. package/core/renderers/common/{debugger.js → debugger.ts} +100 -124
  299. package/core/renderers/common/drawer.d.ts +132 -0
  300. package/core/renderers/common/{drawer.js → drawer.ts} +112 -137
  301. package/core/renderers/common/i_path_object.d.ts +117 -0
  302. package/core/renderers/common/i_path_object.ts +161 -0
  303. package/core/renderers/common/info.d.ts +194 -0
  304. package/core/renderers/common/{info.js → info.ts} +165 -222
  305. package/core/renderers/common/marker_svg.d.ts +220 -0
  306. package/core/renderers/common/marker_svg.ts +680 -0
  307. package/core/renderers/common/path_object.d.ts +146 -0
  308. package/core/renderers/common/path_object.ts +272 -0
  309. package/core/renderers/common/renderer.d.ts +157 -0
  310. package/core/renderers/common/renderer.ts +271 -0
  311. package/core/renderers/geras/constants.d.ts +23 -0
  312. package/core/renderers/geras/constants.ts +61 -0
  313. package/core/renderers/geras/drawer.d.ts +43 -0
  314. package/core/renderers/geras/{drawer.js → drawer.ts} +40 -84
  315. package/core/renderers/geras/geras.d.ts +11 -0
  316. package/core/renderers/geras/geras.ts +37 -0
  317. package/core/renderers/geras/highlight_constants.d.ts +108 -0
  318. package/core/renderers/geras/{highlight_constants.js → highlight_constants.ts} +107 -69
  319. package/core/renderers/geras/highlighter.d.ts +98 -0
  320. package/core/renderers/geras/{highlighter.js → highlighter.ts} +81 -86
  321. package/core/renderers/geras/info.d.ts +45 -0
  322. package/core/renderers/geras/{info.js → info.ts} +61 -99
  323. package/core/renderers/geras/measurables/inline_input.d.ts +23 -0
  324. package/core/renderers/geras/measurables/inline_input.ts +51 -0
  325. package/core/renderers/geras/measurables/statement_input.d.ts +23 -0
  326. package/core/renderers/geras/measurables/statement_input.ts +50 -0
  327. package/core/renderers/geras/path_object.d.ts +47 -0
  328. package/core/renderers/geras/{path_object.js → path_object.ts} +46 -74
  329. package/core/renderers/geras/renderer.d.ts +69 -0
  330. package/core/renderers/geras/renderer.ts +126 -0
  331. package/core/renderers/measurables/base.d.ts +27 -0
  332. package/core/renderers/measurables/base.ts +53 -0
  333. package/core/renderers/measurables/bottom_row.d.ts +61 -0
  334. package/core/renderers/measurables/bottom_row.ts +120 -0
  335. package/core/renderers/measurables/connection.d.ts +25 -0
  336. package/core/renderers/measurables/connection.ts +52 -0
  337. package/core/renderers/measurables/external_value_input.d.ts +27 -0
  338. package/core/renderers/measurables/external_value_input.ts +65 -0
  339. package/core/renderers/measurables/field.d.ts +30 -0
  340. package/core/renderers/measurables/field.ts +63 -0
  341. package/core/renderers/measurables/hat.d.ts +21 -0
  342. package/core/renderers/measurables/{hat.js → hat.ts} +12 -14
  343. package/core/renderers/measurables/icon.d.ts +26 -0
  344. package/core/renderers/measurables/{icon.js → icon.ts} +14 -18
  345. package/core/renderers/measurables/in_row_spacer.d.ts +21 -0
  346. package/core/renderers/measurables/in_row_spacer.ts +44 -0
  347. package/core/renderers/measurables/inline_input.d.ts +24 -0
  348. package/core/renderers/measurables/{inline_input.js → inline_input.ts} +22 -26
  349. package/core/renderers/measurables/input_connection.d.ts +29 -0
  350. package/core/renderers/measurables/input_connection.ts +66 -0
  351. package/core/renderers/measurables/input_row.d.ts +30 -0
  352. package/core/renderers/measurables/{input_row.js → input_row.ts} +24 -31
  353. package/core/renderers/measurables/jagged_edge.d.ts +20 -0
  354. package/core/renderers/measurables/{jagged_edge.js → jagged_edge.ts} +10 -13
  355. package/core/renderers/measurables/next_connection.d.ts +23 -0
  356. package/core/renderers/measurables/next_connection.ts +47 -0
  357. package/core/renderers/measurables/output_connection.d.ts +26 -0
  358. package/core/renderers/measurables/output_connection.ts +56 -0
  359. package/core/renderers/measurables/previous_connection.d.ts +23 -0
  360. package/core/renderers/measurables/previous_connection.ts +47 -0
  361. package/core/renderers/measurables/round_corner.d.ts +21 -0
  362. package/core/renderers/measurables/round_corner.ts +49 -0
  363. package/core/renderers/measurables/row.d.ts +141 -0
  364. package/core/renderers/measurables/row.ts +225 -0
  365. package/core/renderers/measurables/spacer_row.d.ts +29 -0
  366. package/core/renderers/measurables/spacer_row.ts +55 -0
  367. package/core/renderers/measurables/square_corner.d.ts +21 -0
  368. package/core/renderers/measurables/square_corner.ts +47 -0
  369. package/core/renderers/measurables/statement_input.d.ts +22 -0
  370. package/core/renderers/measurables/{statement_input.js → statement_input.ts} +14 -18
  371. package/core/renderers/measurables/top_row.d.ts +56 -0
  372. package/core/renderers/measurables/top_row.ts +122 -0
  373. package/core/renderers/measurables/types.d.ts +235 -0
  374. package/core/renderers/measurables/types.ts +332 -0
  375. package/core/renderers/minimalist/constants.d.ts +14 -0
  376. package/core/renderers/minimalist/{constants.js → constants.ts} +5 -10
  377. package/core/renderers/minimalist/drawer.d.ts +21 -0
  378. package/core/renderers/minimalist/drawer.ts +38 -0
  379. package/core/renderers/minimalist/info.d.ts +30 -0
  380. package/core/renderers/minimalist/info.ts +52 -0
  381. package/core/renderers/minimalist/minimalist.d.ts +6 -0
  382. package/core/renderers/minimalist/minimalist.ts +22 -0
  383. package/core/renderers/minimalist/renderer.d.ts +41 -0
  384. package/core/renderers/minimalist/renderer.ts +71 -0
  385. package/core/renderers/thrasos/info.d.ts +40 -0
  386. package/core/renderers/thrasos/{info.js → info.ts} +66 -67
  387. package/core/renderers/thrasos/renderer.d.ts +25 -0
  388. package/core/renderers/thrasos/renderer.ts +48 -0
  389. package/core/renderers/thrasos/thrasos.d.ts +4 -0
  390. package/core/renderers/thrasos/thrasos.ts +20 -0
  391. package/core/renderers/zelos/constants.d.ts +186 -0
  392. package/core/renderers/zelos/{constants.js → constants.ts} +294 -441
  393. package/core/renderers/zelos/drawer.d.ts +47 -0
  394. package/core/renderers/zelos/{drawer.js → drawer.ts} +73 -95
  395. package/core/renderers/zelos/info.d.ts +88 -0
  396. package/core/renderers/zelos/{info.js → info.ts} +111 -142
  397. package/core/renderers/zelos/marker_svg.d.ts +46 -0
  398. package/core/renderers/zelos/marker_svg.ts +151 -0
  399. package/core/renderers/zelos/measurables/bottom_row.d.ts +27 -0
  400. package/core/renderers/zelos/measurables/bottom_row.ts +53 -0
  401. package/core/renderers/zelos/measurables/inputs.d.ts +23 -0
  402. package/core/renderers/zelos/measurables/{inputs.js → inputs.ts} +14 -15
  403. package/core/renderers/zelos/measurables/row_elements.d.ts +21 -0
  404. package/core/renderers/zelos/measurables/row_elements.ts +45 -0
  405. package/core/renderers/zelos/measurables/top_row.d.ts +29 -0
  406. package/core/renderers/zelos/measurables/{top_row.js → top_row.ts} +14 -27
  407. package/core/renderers/zelos/path_object.d.ts +77 -0
  408. package/core/renderers/zelos/path_object.ts +215 -0
  409. package/core/renderers/zelos/renderer.d.ts +74 -0
  410. package/core/renderers/zelos/renderer.ts +142 -0
  411. package/core/renderers/zelos/zelos.d.ts +12 -0
  412. package/core/renderers/zelos/zelos.ts +39 -0
  413. package/core/scrollbar.d.ts +277 -0
  414. package/core/{scrollbar.js → scrollbar.ts} +307 -328
  415. package/core/scrollbar_pair.d.ts +105 -0
  416. package/core/{scrollbar_pair.js → scrollbar_pair.ts} +71 -79
  417. package/core/serialization/blocks.d.ts +98 -0
  418. package/core/serialization/{blocks.js → blocks.ts} +229 -228
  419. package/core/serialization/exceptions.d.ts +73 -0
  420. package/core/serialization/exceptions.ts +98 -0
  421. package/core/serialization/priorities.d.ts +15 -0
  422. package/core/serialization/{priorities.js → priorities.ts} +4 -10
  423. package/core/serialization/registry.d.ts +20 -0
  424. package/core/serialization/{registry.js → registry.ts} +11 -13
  425. package/core/serialization/variables.d.ts +14 -0
  426. package/core/serialization/{variables.js → variables.ts} +30 -32
  427. package/core/serialization/workspaces.d.ts +28 -0
  428. package/core/serialization/{workspaces.js → workspaces.ts} +30 -27
  429. package/core/shortcut_items.d.ts +61 -0
  430. package/core/{shortcut_items.js → shortcut_items.ts} +121 -157
  431. package/core/shortcut_registry.d.ts +151 -0
  432. package/core/shortcut_registry.ts +355 -0
  433. package/core/sprites.d.ts +19 -0
  434. package/core/{sprites.js → sprites.ts} +4 -6
  435. package/core/theme/classic.d.ts +12 -0
  436. package/core/theme/{classic.js → classic.ts} +5 -7
  437. package/core/theme/themes.d.ts +8 -0
  438. package/core/theme/themes.ts +22 -0
  439. package/core/theme/zelos.d.ts +11 -0
  440. package/core/theme/{zelos.js → zelos.ts} +4 -7
  441. package/core/theme.d.ts +142 -0
  442. package/core/theme.ts +221 -0
  443. package/core/theme_manager.d.ts +81 -0
  444. package/core/theme_manager.ts +186 -0
  445. package/core/toolbox/category.d.ts +239 -0
  446. package/core/toolbox/category.ts +679 -0
  447. package/core/toolbox/collapsible_category.d.ts +91 -0
  448. package/core/toolbox/collapsible_category.ts +273 -0
  449. package/core/toolbox/separator.d.ts +39 -0
  450. package/core/toolbox/separator.ts +105 -0
  451. package/core/toolbox/toolbox.d.ts +352 -0
  452. package/core/toolbox/{toolbox.js → toolbox.ts} +316 -432
  453. package/core/toolbox/toolbox_item.d.ts +85 -0
  454. package/core/toolbox/toolbox_item.ts +147 -0
  455. package/core/tooltip.d.ts +126 -0
  456. package/core/{tooltip.js → tooltip.ts} +136 -214
  457. package/core/touch.d.ts +121 -0
  458. package/core/touch.ts +306 -0
  459. package/core/touch_gesture.d.ts +115 -0
  460. package/core/{touch_gesture.js → touch_gesture.ts} +87 -125
  461. package/core/trashcan.d.ts +195 -0
  462. package/core/{trashcan.js → trashcan.ts} +226 -312
  463. package/core/utils/aria.d.ts +67 -0
  464. package/core/utils/{aria.js → aria.ts} +47 -61
  465. package/core/utils/array.d.ts +14 -0
  466. package/core/utils/{array.js → array.ts} +10 -12
  467. package/core/utils/colour.d.ts +103 -0
  468. package/core/utils/{colour.js → colour.ts} +60 -72
  469. package/core/utils/coordinate.d.ts +72 -0
  470. package/core/utils/coordinate.ts +124 -0
  471. package/core/utils/deprecation.d.ts +17 -0
  472. package/core/utils/{deprecation.js → deprecation.ts} +11 -11
  473. package/core/utils/dom.d.ts +165 -0
  474. package/core/utils/{dom.js → dom.ts} +125 -147
  475. package/core/utils/idgenerator.d.ts +25 -0
  476. package/core/utils/{idgenerator.js → idgenerator.ts} +15 -18
  477. package/core/utils/keycodes.d.ts +137 -0
  478. package/core/utils/keycodes.ts +169 -0
  479. package/core/utils/math.d.ts +30 -0
  480. package/core/utils/{math.js → math.ts} +17 -19
  481. package/core/utils/metrics.d.ts +64 -0
  482. package/core/utils/metrics.ts +97 -0
  483. package/core/utils/object.d.ts +35 -0
  484. package/core/utils/{object.js → object.ts} +30 -26
  485. package/core/utils/parsing.d.ts +50 -0
  486. package/core/utils/{parsing.js → parsing.ts} +50 -50
  487. package/core/utils/rect.d.ts +38 -0
  488. package/core/utils/{rect.js → rect.ts} +18 -31
  489. package/core/utils/sentinel.d.ts +11 -0
  490. package/core/utils/{sentinel.js → sentinel.ts} +3 -5
  491. package/core/utils/size.d.ts +27 -0
  492. package/core/utils/{size.js → size.ts} +12 -26
  493. package/core/utils/string.d.ts +55 -0
  494. package/core/utils/{string.js → string.ts} +64 -61
  495. package/core/utils/style.d.ts +127 -0
  496. package/core/utils/{style.js → style.ts} +102 -92
  497. package/core/utils/svg.d.ts +68 -0
  498. package/core/utils/svg.ts +88 -0
  499. package/core/utils/svg_math.d.ts +70 -0
  500. package/core/utils/{svg_math.js → svg_math.ts} +72 -71
  501. package/core/utils/svg_paths.d.ts +101 -0
  502. package/core/utils/{svg_paths.js → svg_paths.ts} +56 -65
  503. package/core/utils/toolbox.d.ts +193 -0
  504. package/core/utils/toolbox.ts +433 -0
  505. package/core/utils/useragent.d.ts +33 -0
  506. package/core/utils/useragent.ts +135 -0
  507. package/core/utils/xml.d.ts +52 -0
  508. package/core/utils/{xml.js → xml.ts} +26 -36
  509. package/core/utils.d.ts +217 -0
  510. package/core/utils.ts +428 -0
  511. package/core/variable_map.d.ts +141 -0
  512. package/core/{variable_map.js → variable_map.ts} +131 -149
  513. package/core/variable_model.d.ts +40 -0
  514. package/core/variable_model.ts +82 -0
  515. package/core/variables.d.ts +181 -0
  516. package/core/{variables.js → variables.ts} +206 -188
  517. package/core/variables_dynamic.d.ts +38 -0
  518. package/core/{variables_dynamic.js → variables_dynamic.ts} +47 -43
  519. package/core/warning.d.ts +50 -0
  520. package/core/{warning.js → warning.ts} +52 -66
  521. package/core/widgetdiv.d.ts +69 -0
  522. package/core/widgetdiv.ts +257 -0
  523. package/core/workspace.d.ts +386 -0
  524. package/core/workspace.ts +801 -0
  525. package/core/workspace_audio.d.ts +47 -0
  526. package/core/{workspace_audio.js → workspace_audio.ts} +47 -60
  527. package/core/workspace_comment.d.ts +170 -0
  528. package/core/workspace_comment.ts +398 -0
  529. package/core/workspace_comment_svg.d.ts +329 -0
  530. package/core/{workspace_comment_svg.js → workspace_comment_svg.ts} +347 -444
  531. package/core/workspace_drag_surface_svg.d.ts +68 -0
  532. package/core/{workspace_drag_surface_svg.js → workspace_drag_surface_svg.ts} +75 -82
  533. package/core/workspace_dragger.d.ts +48 -0
  534. package/core/workspace_dragger.ts +104 -0
  535. package/core/workspace_svg.d.ts +920 -0
  536. package/core/{workspace_svg.js → workspace_svg.ts} +855 -935
  537. package/core/xml.d.ts +117 -0
  538. package/core/{xml.js → xml.ts} +306 -326
  539. package/core/zoom_controls.d.ts +130 -0
  540. package/core/{zoom_controls.js → zoom_controls.ts} +185 -251
  541. package/core.d.ts +1 -3
  542. package/core.js +1 -2
  543. package/dart.d.ts +0 -3
  544. package/dart_compressed.js +387 -99
  545. package/dart_compressed.js.map +1 -1
  546. package/generators/dart/all.js +2 -0
  547. package/generators/dart/colour.js +1 -1
  548. package/generators/dart/lists.js +1 -1
  549. package/generators/dart/logic.js +1 -1
  550. package/generators/dart/loops.js +1 -1
  551. package/generators/dart/math.js +1 -1
  552. package/generators/dart/procedures.js +1 -1
  553. package/generators/dart/text.js +1 -1
  554. package/generators/dart/variables.js +1 -1
  555. package/generators/dart/variables_dynamic.js +1 -1
  556. package/generators/dart.js +1 -2
  557. package/generators/javascript/all.js +2 -0
  558. package/generators/javascript/colour.js +1 -1
  559. package/generators/javascript/lists.js +1 -1
  560. package/generators/javascript/logic.js +1 -1
  561. package/generators/javascript/loops.js +1 -1
  562. package/generators/javascript/math.js +4 -4
  563. package/generators/javascript/procedures.js +1 -1
  564. package/generators/javascript/text.js +2 -2
  565. package/generators/javascript/variables.js +1 -1
  566. package/generators/javascript/variables_dynamic.js +1 -1
  567. package/generators/javascript.js +1 -3
  568. package/generators/lua/all.js +2 -0
  569. package/generators/lua/colour.js +1 -1
  570. package/generators/lua/lists.js +1 -1
  571. package/generators/lua/logic.js +1 -1
  572. package/generators/lua/loops.js +1 -1
  573. package/generators/lua/math.js +1 -1
  574. package/generators/lua/procedures.js +1 -1
  575. package/generators/lua/text.js +1 -1
  576. package/generators/lua/variables.js +1 -1
  577. package/generators/lua/variables_dynamic.js +1 -1
  578. package/generators/lua.js +1 -2
  579. package/generators/php/all.js +2 -0
  580. package/generators/php/colour.js +1 -1
  581. package/generators/php/lists.js +1 -2
  582. package/generators/php/logic.js +1 -1
  583. package/generators/php/loops.js +1 -1
  584. package/generators/php/math.js +1 -1
  585. package/generators/php/procedures.js +1 -1
  586. package/generators/php/text.js +1 -1
  587. package/generators/php/variables.js +1 -1
  588. package/generators/php/variables_dynamic.js +1 -1
  589. package/generators/php.js +1 -2
  590. package/generators/python/all.js +2 -0
  591. package/generators/python/colour.js +3 -3
  592. package/generators/python/lists.js +1 -1
  593. package/generators/python/logic.js +1 -1
  594. package/generators/python/loops.js +4 -7
  595. package/generators/python/math.js +1 -1
  596. package/generators/python/procedures.js +1 -1
  597. package/generators/python/text.js +1 -1
  598. package/generators/python/variables.js +1 -1
  599. package/generators/python/variables_dynamic.js +1 -1
  600. package/generators/python.js +1 -2
  601. package/index.d.ts +2 -8
  602. package/javascript.d.ts +0 -3
  603. package/javascript_compressed.js +314 -104
  604. package/javascript_compressed.js.map +1 -1
  605. package/lua.d.ts +0 -3
  606. package/lua_compressed.js +399 -81
  607. package/lua_compressed.js.map +1 -1
  608. package/msg/ab.js +420 -420
  609. package/msg/ace.js +420 -420
  610. package/msg/af.js +420 -420
  611. package/msg/am.js +420 -420
  612. package/msg/ar.js +420 -420
  613. package/msg/ast.js +420 -420
  614. package/msg/az.js +420 -420
  615. package/msg/ba.js +420 -420
  616. package/msg/bcc.js +420 -420
  617. package/msg/be-tarask.js +420 -420
  618. package/msg/be.js +420 -420
  619. package/msg/bg.js +420 -420
  620. package/msg/bn.js +420 -420
  621. package/msg/br.js +420 -420
  622. package/msg/bs.js +420 -420
  623. package/msg/ca.js +420 -420
  624. package/msg/cdo.js +420 -420
  625. package/msg/cs.js +420 -420
  626. package/msg/da.js +420 -420
  627. package/msg/de.js +420 -420
  628. package/msg/diq.js +420 -420
  629. package/msg/dty.js +420 -420
  630. package/msg/ee.js +420 -420
  631. package/msg/el.js +420 -420
  632. package/msg/en-gb.js +420 -420
  633. package/msg/en.js +420 -420
  634. package/msg/eo.js +420 -420
  635. package/msg/es.js +420 -420
  636. package/msg/et.js +420 -420
  637. package/msg/eu.js +420 -420
  638. package/msg/fa.js +420 -420
  639. package/msg/fi.js +420 -420
  640. package/msg/fo.js +420 -420
  641. package/msg/fr.js +420 -420
  642. package/msg/frr.js +420 -420
  643. package/msg/gl.js +420 -420
  644. package/msg/gn.js +420 -420
  645. package/msg/gor.js +420 -420
  646. package/msg/ha.js +420 -420
  647. package/msg/hak.js +420 -420
  648. package/msg/he.js +420 -420
  649. package/msg/hi.js +420 -420
  650. package/msg/hr.js +420 -420
  651. package/msg/hrx.js +420 -420
  652. package/msg/hu.js +420 -420
  653. package/msg/hy.js +420 -420
  654. package/msg/ia.js +420 -420
  655. package/msg/id.js +420 -420
  656. package/msg/ig.js +420 -420
  657. package/msg/inh.js +420 -420
  658. package/msg/is.js +420 -420
  659. package/msg/it.js +420 -420
  660. package/msg/ja.js +420 -420
  661. package/msg/ka.js +420 -420
  662. package/msg/kab.js +420 -420
  663. package/msg/kbd-cyrl.js +420 -420
  664. package/msg/km.js +420 -420
  665. package/msg/kn.js +420 -420
  666. package/msg/ko.js +420 -420
  667. package/msg/ksh.js +420 -420
  668. package/msg/ku-latn.js +420 -420
  669. package/msg/ky.js +420 -420
  670. package/msg/la.js +420 -420
  671. package/msg/lb.js +420 -420
  672. package/msg/lki.js +420 -420
  673. package/msg/lo.js +420 -420
  674. package/msg/lrc.js +420 -420
  675. package/msg/lt.js +420 -420
  676. package/msg/lv.js +420 -420
  677. package/msg/mg.js +420 -420
  678. package/msg/mk.js +420 -420
  679. package/msg/ml.js +420 -420
  680. package/msg/mnw.js +420 -420
  681. package/msg/ms.js +420 -420
  682. package/msg/my.js +420 -420
  683. package/msg/mzn.js +420 -420
  684. package/msg/nb.js +420 -420
  685. package/msg/ne.js +420 -420
  686. package/msg/nl.js +420 -420
  687. package/msg/oc.js +420 -420
  688. package/msg/olo.js +420 -420
  689. package/msg/pa.js +420 -420
  690. package/msg/pl.js +420 -420
  691. package/msg/pms.js +420 -420
  692. package/msg/ps.js +420 -420
  693. package/msg/pt-br.js +420 -420
  694. package/msg/pt.js +420 -420
  695. package/msg/ro.js +420 -420
  696. package/msg/ru.js +420 -420
  697. package/msg/sc.js +420 -420
  698. package/msg/sco.js +420 -420
  699. package/msg/sd.js +420 -420
  700. package/msg/shn.js +420 -420
  701. package/msg/si.js +420 -420
  702. package/msg/sk.js +420 -420
  703. package/msg/skr-arab.js +420 -420
  704. package/msg/sl.js +420 -420
  705. package/msg/smn.js +420 -420
  706. package/msg/sq.js +420 -420
  707. package/msg/sr-latn.js +420 -420
  708. package/msg/sr.js +420 -420
  709. package/msg/sv.js +420 -420
  710. package/msg/sw.js +420 -420
  711. package/msg/ta.js +420 -420
  712. package/msg/tcy.js +420 -420
  713. package/msg/te.js +420 -420
  714. package/msg/th.js +420 -420
  715. package/msg/ti.js +420 -420
  716. package/msg/tl.js +420 -420
  717. package/msg/tlh.js +420 -420
  718. package/msg/tr.js +420 -420
  719. package/msg/ug-arab.js +420 -420
  720. package/msg/uk.js +420 -420
  721. package/msg/ur.js +420 -420
  722. package/msg/uz.js +420 -420
  723. package/msg/vi.js +420 -420
  724. package/msg/xmf.js +420 -420
  725. package/msg/yo.js +420 -420
  726. package/msg/yue.js +420 -420
  727. package/msg/zgh.js +420 -420
  728. package/msg/zh-hans.js +420 -420
  729. package/msg/zh-hant.js +420 -420
  730. package/package.json +5 -5
  731. package/php.d.ts +0 -3
  732. package/php_compressed.js +322 -93
  733. package/php_compressed.js.map +1 -1
  734. package/python.d.ts +0 -3
  735. package/python_compressed.js +237 -90
  736. package/python_compressed.js.map +1 -1
  737. package/blockly.d.ts +0 -26127
  738. package/core/blockly_options.js +0 -28
  739. package/core/bubble_dragger.js +0 -298
  740. package/core/clipboard.js +0 -80
  741. package/core/component_manager.js +0 -263
  742. package/core/contextmenu_items.js +0 -651
  743. package/core/contextmenu_registry.js +0 -178
  744. package/core/delete_area.js +0 -87
  745. package/core/dialog.js +0 -107
  746. package/core/drag_target.js +0 -98
  747. package/core/events/events.js +0 -147
  748. package/core/events/events_abstract.js +0 -133
  749. package/core/events/events_block_base.js +0 -70
  750. package/core/events/events_block_drag.js +0 -89
  751. package/core/events/events_bubble_open.js +0 -90
  752. package/core/events/events_comment_base.js +0 -121
  753. package/core/events/events_marker_move.js +0 -110
  754. package/core/events/events_selected.js +0 -83
  755. package/core/events/events_toolbox_item_select.js +0 -84
  756. package/core/events/events_trashcan_open.js +0 -73
  757. package/core/events/events_var_base.js +0 -70
  758. package/core/events/events_viewport.js +0 -107
  759. package/core/events/workspace_events.js +0 -93
  760. package/core/field_angle.js +0 -591
  761. package/core/field_checkbox.js +0 -255
  762. package/core/field_colour.js +0 -717
  763. package/core/field_image.js +0 -304
  764. package/core/field_label.js +0 -149
  765. package/core/field_label_serializable.js +0 -80
  766. package/core/field_textinput.js +0 -619
  767. package/core/flyout_button.js +0 -356
  768. package/core/grid.js +0 -226
  769. package/core/icon.js +0 -225
  770. package/core/input.js +0 -335
  771. package/core/interfaces/i_ast_node_location_svg.js +0 -45
  772. package/core/interfaces/i_ast_node_location_with_block.js +0 -41
  773. package/core/interfaces/i_autohideable.js +0 -40
  774. package/core/interfaces/i_block_dragger.js +0 -66
  775. package/core/interfaces/i_bounded_element.js +0 -45
  776. package/core/interfaces/i_bubble.js +0 -95
  777. package/core/interfaces/i_collapsible_toolbox_item.js +0 -53
  778. package/core/interfaces/i_connection_checker.js +0 -104
  779. package/core/interfaces/i_contextmenu.js +0 -32
  780. package/core/interfaces/i_copyable.js +0 -49
  781. package/core/interfaces/i_delete_area.js +0 -50
  782. package/core/interfaces/i_drag_target.js +0 -88
  783. package/core/interfaces/i_flyout.js +0 -201
  784. package/core/interfaces/i_keyboard_accessible.js +0 -38
  785. package/core/interfaces/i_metrics_manager.js +0 -154
  786. package/core/interfaces/i_positionable.js +0 -51
  787. package/core/interfaces/i_selectable.js +0 -51
  788. package/core/interfaces/i_selectable_toolbox_item.js +0 -73
  789. package/core/interfaces/i_serializer.js +0 -77
  790. package/core/interfaces/i_styleable.js +0 -39
  791. package/core/interfaces/i_toolbox.js +0 -142
  792. package/core/interfaces/i_toolbox_item.js +0 -85
  793. package/core/marker_manager.js +0 -213
  794. package/core/menuitem.js +0 -292
  795. package/core/names.js +0 -293
  796. package/core/registry.js +0 -384
  797. package/core/renderers/common/block_rendering.js +0 -170
  798. package/core/renderers/common/constants.js +0 -1250
  799. package/core/renderers/common/i_path_object.js +0 -162
  800. package/core/renderers/common/marker_svg.js +0 -721
  801. package/core/renderers/common/path_object.js +0 -283
  802. package/core/renderers/common/renderer.js +0 -305
  803. package/core/renderers/geras/constants.js +0 -73
  804. package/core/renderers/geras/geras.js +0 -36
  805. package/core/renderers/geras/measurables/inline_input.js +0 -58
  806. package/core/renderers/geras/measurables/statement_input.js +0 -57
  807. package/core/renderers/geras/renderer.js +0 -149
  808. package/core/renderers/measurables/base.js +0 -64
  809. package/core/renderers/measurables/bottom_row.js +0 -138
  810. package/core/renderers/measurables/connection.js +0 -56
  811. package/core/renderers/measurables/external_value_input.js +0 -70
  812. package/core/renderers/measurables/field.js +0 -71
  813. package/core/renderers/measurables/in_row_spacer.js +0 -47
  814. package/core/renderers/measurables/input_connection.js +0 -75
  815. package/core/renderers/measurables/next_connection.js +0 -50
  816. package/core/renderers/measurables/output_connection.js +0 -61
  817. package/core/renderers/measurables/previous_connection.js +0 -50
  818. package/core/renderers/measurables/round_corner.js +0 -52
  819. package/core/renderers/measurables/row.js +0 -247
  820. package/core/renderers/measurables/spacer_row.js +0 -69
  821. package/core/renderers/measurables/square_corner.js +0 -50
  822. package/core/renderers/measurables/top_row.js +0 -143
  823. package/core/renderers/measurables/types.js +0 -353
  824. package/core/renderers/minimalist/drawer.js +0 -42
  825. package/core/renderers/minimalist/info.js +0 -54
  826. package/core/renderers/minimalist/minimalist.js +0 -26
  827. package/core/renderers/minimalist/renderer.js +0 -80
  828. package/core/renderers/thrasos/renderer.js +0 -53
  829. package/core/renderers/thrasos/thrasos.js +0 -22
  830. package/core/renderers/zelos/marker_svg.js +0 -179
  831. package/core/renderers/zelos/measurables/bottom_row.js +0 -66
  832. package/core/renderers/zelos/measurables/row_elements.js +0 -46
  833. package/core/renderers/zelos/path_object.js +0 -247
  834. package/core/renderers/zelos/renderer.js +0 -147
  835. package/core/renderers/zelos/zelos.js +0 -38
  836. package/core/serialization/exceptions.js +0 -144
  837. package/core/shortcut_registry.js +0 -366
  838. package/core/theme/themes.js +0 -23
  839. package/core/theme.js +0 -228
  840. package/core/theme_manager.js +0 -211
  841. package/core/toolbox/category.js +0 -751
  842. package/core/toolbox/collapsible_category.js +0 -311
  843. package/core/toolbox/separator.js +0 -133
  844. package/core/toolbox/toolbox_item.js +0 -173
  845. package/core/touch.js +0 -285
  846. package/core/utils/coordinate.js +0 -138
  847. package/core/utils/global.js +0 -41
  848. package/core/utils/keycodes.js +0 -172
  849. package/core/utils/metrics.js +0 -154
  850. package/core/utils/svg.js +0 -186
  851. package/core/utils/toolbox.js +0 -459
  852. package/core/utils/useragent.js +0 -197
  853. package/core/utils.js +0 -383
  854. package/core/variable_model.js +0 -96
  855. package/core/widgetdiv.js +0 -290
  856. package/core/workspace.js +0 -836
  857. package/core/workspace_comment.js +0 -400
  858. package/core/workspace_dragger.js +0 -115
@@ -7,175 +7,151 @@
7
7
  /**
8
8
  * @fileoverview Object representing a UI bubble.
9
9
  */
10
- 'use strict';
11
10
 
12
11
  /**
13
12
  * Object representing a UI bubble.
14
13
  * @class
15
14
  */
16
- goog.module('Blockly.Bubble');
15
+ import * as goog from '../closure/goog/goog.js';
16
+ goog.declareModuleId('Blockly.Bubble');
17
17
 
18
- const Touch = goog.require('Blockly.Touch');
19
- const browserEvents = goog.require('Blockly.browserEvents');
20
- const dom = goog.require('Blockly.utils.dom');
21
- const math = goog.require('Blockly.utils.math');
22
- const userAgent = goog.require('Blockly.utils.userAgent');
23
18
  /* eslint-disable-next-line no-unused-vars */
24
- const {BlockDragSurfaceSvg} = goog.requireType('Blockly.BlockDragSurfaceSvg');
25
- /* eslint-disable-next-line no-unused-vars */
26
- const {BlockSvg} = goog.requireType('Blockly.BlockSvg');
27
- const {Coordinate} = goog.require('Blockly.utils.Coordinate');
28
- /* eslint-disable-next-line no-unused-vars */
29
- const {IBubble} = goog.require('Blockly.IBubble');
30
- /* eslint-disable-next-line no-unused-vars */
31
- const {MetricsManager} = goog.requireType('Blockly.MetricsManager');
32
- const {Scrollbar} = goog.require('Blockly.Scrollbar');
33
- const {Size} = goog.require('Blockly.utils.Size');
34
- const {Svg} = goog.require('Blockly.utils.Svg');
35
- /* eslint-disable-next-line no-unused-vars */
36
- const {WorkspaceSvg} = goog.requireType('Blockly.WorkspaceSvg');
37
- /** @suppress {extraRequire} */
38
- goog.require('Blockly.Workspace');
19
+ // Unused import preserved for side-effects. Remove if unneeded.
20
+ // import './metrics_manager.js';
21
+ // Unused import preserved for side-effects. Remove if unneeded.
22
+ // import './workspace.js';
23
+
24
+ import type {BlockDragSurfaceSvg} from './block_drag_surface.js';
25
+ import type {BlockSvg} from './block_svg.js';
26
+ import * as browserEvents from './browser_events.js';
27
+ import type {IBubble} from './interfaces/i_bubble.js';
28
+ import type {ContainerRegion} from './metrics_manager.js';
29
+ import {Scrollbar} from './scrollbar.js';
30
+ import * as Touch from './touch.js';
31
+ import {Coordinate} from './utils/coordinate.js';
32
+ import * as dom from './utils/dom.js';
33
+ import * as math from './utils/math.js';
34
+ import {Size} from './utils/size.js';
35
+ import {Svg} from './utils/svg.js';
36
+ import * as userAgent from './utils/useragent.js';
37
+ import type {WorkspaceSvg} from './workspace_svg.js';
39
38
 
40
39
 
41
40
  /**
42
41
  * Class for UI bubble.
43
- * @implements {IBubble}
44
42
  * @alias Blockly.Bubble
45
43
  */
46
- const Bubble = class {
44
+ export class Bubble implements IBubble {
45
+ /** Width of the border around the bubble. */
46
+ static BORDER_WIDTH = 6;
47
+
47
48
  /**
48
- * @param {!WorkspaceSvg} workspace The workspace on which to draw the
49
- * bubble.
50
- * @param {!Element} content SVG content for the bubble.
51
- * @param {!Element} shape SVG element to avoid eclipsing.
52
- * @param {!Coordinate} anchorXY Absolute position of bubble's
53
- * anchor point.
54
- * @param {?number} bubbleWidth Width of bubble, or null if not resizable.
55
- * @param {?number} bubbleHeight Height of bubble, or null if not resizable.
49
+ * Determines the thickness of the base of the arrow in relation to the size
50
+ * of the bubble. Higher numbers result in thinner arrows.
51
+ */
52
+ static ARROW_THICKNESS = 5;
53
+
54
+ /** The number of degrees that the arrow bends counter-clockwise. */
55
+ static ARROW_ANGLE = 20;
56
+
57
+ /**
58
+ * The sharpness of the arrow's bend. Higher numbers result in smoother
59
+ * arrows.
60
+ */
61
+ static ARROW_BEND = 4;
62
+
63
+ /** Distance between arrow point and anchor point. */
64
+ static ANCHOR_RADIUS = 8;
65
+
66
+ /** Mouse up event data. */
67
+ private static onMouseUpWrapper_: browserEvents.Data|null = null;
68
+
69
+ /** Mouse move event data. */
70
+ private static onMouseMoveWrapper_: browserEvents.Data|null = null;
71
+ workspace_: WorkspaceSvg;
72
+ content_: SVGElement;
73
+ shape_: SVGElement;
74
+
75
+ /** Flag to stop incremental rendering during construction. */
76
+ private readonly rendered_: boolean;
77
+
78
+ /** The SVG group containing all parts of the bubble. */
79
+ private bubbleGroup_: SVGGElement|null = null;
80
+
81
+ /**
82
+ * The SVG path for the arrow from the bubble to the icon on the block.
83
+ */
84
+ private bubbleArrow_: SVGPathElement|null = null;
85
+
86
+ /** The SVG rect for the main body of the bubble. */
87
+ private bubbleBack_: SVGRectElement|null = null;
88
+
89
+ /** The SVG group for the resize hash marks on some bubbles. */
90
+ private resizeGroup_: SVGGElement|null = null;
91
+
92
+ /** Absolute coordinate of anchor point, in workspace coordinates. */
93
+ private anchorXY_!: Coordinate;
94
+
95
+ /**
96
+ * Relative X coordinate of bubble with respect to the anchor's centre,
97
+ * in workspace units.
98
+ * In RTL mode the initial value is negated.
99
+ */
100
+ private relativeLeft_ = 0;
101
+
102
+ /**
103
+ * Relative Y coordinate of bubble with respect to the anchor's centre, in
104
+ * workspace units.
105
+ */
106
+ private relativeTop_ = 0;
107
+
108
+ /** Width of bubble, in workspace units. */
109
+ private width_ = 0;
110
+
111
+ /** Height of bubble, in workspace units. */
112
+ private height_ = 0;
113
+
114
+ /** Automatically position and reposition the bubble. */
115
+ private autoLayout_ = true;
116
+
117
+ /** Method to call on resize of bubble. */
118
+ private resizeCallback_: (() => void)|null = null;
119
+
120
+ /** Method to call on move of bubble. */
121
+ private moveCallback_: (() => void)|null = null;
122
+
123
+ /** Mouse down on bubbleBack_ event data. */
124
+ private onMouseDownBubbleWrapper_: browserEvents.Data|null = null;
125
+
126
+ /** Mouse down on resizeGroup_ event data. */
127
+ private onMouseDownResizeWrapper_: browserEvents.Data|null = null;
128
+
129
+ /**
130
+ * Describes whether this bubble has been disposed of (nodes and event
131
+ * listeners removed from the page) or not.
132
+ * @internal
133
+ */
134
+ disposed = false;
135
+ private arrow_radians_: number;
136
+
137
+ /**
138
+ * @param workspace The workspace on which to draw the bubble.
139
+ * @param content SVG content for the bubble.
140
+ * @param shape SVG element to avoid eclipsing.
141
+ * @param anchorXY Absolute position of bubble's anchor point.
142
+ * @param bubbleWidth Width of bubble, or null if not resizable.
143
+ * @param bubbleHeight Height of bubble, or null if not resizable.
56
144
  * @struct
57
145
  */
58
- constructor(workspace, content, shape, anchorXY, bubbleWidth, bubbleHeight) {
146
+ constructor(
147
+ workspace: WorkspaceSvg, content: SVGElement, shape: SVGElement,
148
+ anchorXY: Coordinate, bubbleWidth: number|null,
149
+ bubbleHeight: number|null) {
150
+ this.rendered_ = false;
59
151
  this.workspace_ = workspace;
60
152
  this.content_ = content;
61
153
  this.shape_ = shape;
62
154
 
63
- /**
64
- * Flag to stop incremental rendering during construction.
65
- * @type {boolean}
66
- * @private
67
- */
68
- this.rendered_ = false;
69
-
70
- /**
71
- * The SVG group containing all parts of the bubble.
72
- * @type {SVGGElement}
73
- * @private
74
- */
75
- this.bubbleGroup_ = null;
76
-
77
- /**
78
- * The SVG path for the arrow from the bubble to the icon on the block.
79
- * @type {SVGPathElement}
80
- * @private
81
- */
82
- this.bubbleArrow_ = null;
83
-
84
- /**
85
- * The SVG rect for the main body of the bubble.
86
- * @type {SVGRectElement}
87
- * @private
88
- */
89
- this.bubbleBack_ = null;
90
-
91
- /**
92
- * The SVG group for the resize hash marks on some bubbles.
93
- * @type {SVGGElement}
94
- * @private
95
- */
96
- this.resizeGroup_ = null;
97
-
98
- /**
99
- * Absolute coordinate of anchor point, in workspace coordinates.
100
- * @type {Coordinate}
101
- * @private
102
- */
103
- this.anchorXY_ = null;
104
-
105
- /**
106
- * Relative X coordinate of bubble with respect to the anchor's centre,
107
- * in workspace units.
108
- * In RTL mode the initial value is negated.
109
- * @type {number}
110
- * @private
111
- */
112
- this.relativeLeft_ = 0;
113
-
114
- /**
115
- * Relative Y coordinate of bubble with respect to the anchor's centre, in
116
- * workspace units.
117
- * @type {number}
118
- * @private
119
- */
120
- this.relativeTop_ = 0;
121
-
122
- /**
123
- * Width of bubble, in workspace units.
124
- * @type {number}
125
- * @private
126
- */
127
- this.width_ = 0;
128
-
129
- /**
130
- * Height of bubble, in workspace units.
131
- * @type {number}
132
- * @private
133
- */
134
- this.height_ = 0;
135
-
136
- /**
137
- * Automatically position and reposition the bubble.
138
- * @type {boolean}
139
- * @private
140
- */
141
- this.autoLayout_ = true;
142
-
143
- /**
144
- * Method to call on resize of bubble.
145
- * @type {?function()}
146
- * @private
147
- */
148
- this.resizeCallback_ = null;
149
-
150
- /**
151
- * Method to call on move of bubble.
152
- * @type {?function()}
153
- * @private
154
- */
155
- this.moveCallback_ = null;
156
-
157
- /**
158
- * Mouse down on bubbleBack_ event data.
159
- * @type {?browserEvents.Data}
160
- * @private
161
- */
162
- this.onMouseDownBubbleWrapper_ = null;
163
-
164
- /**
165
- * Mouse down on resizeGroup_ event data.
166
- * @type {?browserEvents.Data}
167
- * @private
168
- */
169
- this.onMouseDownResizeWrapper_ = null;
170
-
171
- /**
172
- * Describes whether this bubble has been disposed of (nodes and event
173
- * listeners removed from the page) or not.
174
- * @type {boolean}
175
- * @package
176
- */
177
- this.disposed = false;
178
-
179
155
  let angle = Bubble.ARROW_ANGLE;
180
156
  if (this.workspace_.RTL) {
181
157
  angle = -angle;
@@ -188,7 +164,7 @@ const Bubble = class {
188
164
 
189
165
  this.setAnchorLocation(anchorXY);
190
166
  if (!bubbleWidth || !bubbleHeight) {
191
- const bBox = /** @type {SVGLocatable} */ (this.content_).getBBox();
167
+ const bBox = (this.content_ as SVGGraphicsElement).getBBox();
192
168
  bubbleWidth = bBox.width + 2 * Bubble.BORDER_WIDTH;
193
169
  bubbleHeight = bBox.height + 2 * Bubble.BORDER_WIDTH;
194
170
  }
@@ -202,32 +178,32 @@ const Bubble = class {
202
178
 
203
179
  /**
204
180
  * Create the bubble's DOM.
205
- * @param {!Element} content SVG content for the bubble.
206
- * @param {boolean} hasResize Add diagonal resize gripper if true.
207
- * @return {!SVGElement} The bubble's SVG group.
208
- * @private
181
+ * @param content SVG content for the bubble.
182
+ * @param hasResize Add diagonal resize gripper if true.
183
+ * @return The bubble's SVG group.
209
184
  */
210
- createDom_(content, hasResize) {
185
+ private createDom_(content: Element, hasResize: boolean): SVGElement {
211
186
  /* Create the bubble. Here's the markup that will be generated:
212
- <g>
213
- <g filter="url(#blocklyEmbossFilter837493)">
214
- <path d="... Z" />
215
- <rect class="blocklyDraggable" rx="8" ry="8" width="180" height="180"/>
216
- </g>
217
- <g transform="translate(165, 165)" class="blocklyResizeSE">
218
- <polygon points="0,15 15,15 15,0"/>
219
- <line class="blocklyResizeLine" x1="5" y1="14" x2="14" y2="5"/>
220
- <line class="blocklyResizeLine" x1="10" y1="14" x2="14" y2="10"/>
221
- </g>
222
- [...content goes here...]
223
- </g>
224
- */
225
- this.bubbleGroup_ = dom.createSvgElement(Svg.G, {}, null);
226
- let filter = {
187
+ <g>
188
+ <g filter="url(#blocklyEmbossFilter837493)">
189
+ <path d="... Z" />
190
+ <rect class="blocklyDraggable" rx="8" ry="8" width="180"
191
+ height="180"/>
192
+ </g>
193
+ <g transform="translate(165, 165)" class="blocklyResizeSE">
194
+ <polygon points="0,15 15,15 15,0"/>
195
+ <line class="blocklyResizeLine" x1="5" y1="14" x2="14" y2="5"/>
196
+ <line class="blocklyResizeLine" x1="10" y1="14" x2="14" y2="10"/>
197
+ </g>
198
+ [...content goes here...]
199
+ </g>
200
+ */
201
+ this.bubbleGroup_ = dom.createSvgElement(Svg.G, {});
202
+ let filter: {filter?: string} = {
227
203
  'filter': 'url(#' +
228
204
  this.workspace_.getRenderer().getConstants().embossFilterId + ')',
229
205
  };
230
- if (userAgent.JAVA_FX) {
206
+ if (userAgent.JavaFx) {
231
207
  // Multiple reports that JavaFX can't handle filters.
232
208
  // https://github.com/google/blockly/issues/99
233
209
  filter = {};
@@ -291,28 +267,25 @@ const Bubble = class {
291
267
 
292
268
  /**
293
269
  * Return the root node of the bubble's SVG group.
294
- * @return {!SVGElement} The root SVG node of the bubble's group.
270
+ * @return The root SVG node of the bubble's group.
295
271
  */
296
- getSvgRoot() {
297
- return /** @type {!SVGElement} */ (this.bubbleGroup_);
272
+ getSvgRoot(): SVGElement {
273
+ return this.bubbleGroup_ as SVGElement;
298
274
  }
299
275
 
300
276
  /**
301
277
  * Expose the block's ID on the bubble's top-level SVG group.
302
- * @param {string} id ID of block.
278
+ * @param id ID of block.
303
279
  */
304
- setSvgId(id) {
305
- if (this.bubbleGroup_.dataset) {
306
- this.bubbleGroup_.dataset['blockId'] = id;
307
- }
280
+ setSvgId(id: string) {
281
+ this.bubbleGroup_?.setAttribute('data-block-id', id);
308
282
  }
309
283
 
310
284
  /**
311
285
  * Handle a mouse-down on bubble's border.
312
- * @param {!Event} e Mouse down event.
313
- * @private
286
+ * @param e Mouse down event.
314
287
  */
315
- bubbleMouseDown_(e) {
288
+ private bubbleMouseDown_(e: Event) {
316
289
  const gesture = this.workspace_.getGesture(e);
317
290
  if (gesture) {
318
291
  gesture.handleBubbleStart(e, this);
@@ -321,38 +294,34 @@ const Bubble = class {
321
294
 
322
295
  /**
323
296
  * Show the context menu for this bubble.
324
- * @param {!Event} _e Mouse event.
325
- * @package
297
+ * @param _e Mouse event.
298
+ * @internal
326
299
  */
327
- showContextMenu(_e) {
328
- // NOP on bubbles, but used by the bubble dragger to pass events to
329
- // workspace comments.
330
- }
300
+ showContextMenu(_e: Event) {}
301
+ // NOP on bubbles, but used by the bubble dragger to pass events to
302
+ // workspace comments.
331
303
 
332
304
  /**
333
305
  * Get whether this bubble is deletable or not.
334
- * @return {boolean} True if deletable.
335
- * @package
306
+ * @return True if deletable.
307
+ * @internal
336
308
  */
337
- isDeletable() {
309
+ isDeletable(): boolean {
338
310
  return false;
339
311
  }
340
312
 
341
313
  /**
342
314
  * Update the style of this bubble when it is dragged over a delete area.
343
- * @param {boolean} _enable True if the bubble is about to be deleted, false
344
- * otherwise.
315
+ * @param _enable True if the bubble is about to be deleted, false otherwise.
345
316
  */
346
- setDeleteStyle(_enable) {
347
- // NOP if bubble is not deletable.
348
- }
317
+ setDeleteStyle(_enable: boolean) {}
318
+ // NOP if bubble is not deletable.
349
319
 
350
320
  /**
351
321
  * Handle a mouse-down on bubble's resize corner.
352
- * @param {!Event} e Mouse down event.
353
- * @private
322
+ * @param e Mouse down event.
354
323
  */
355
- resizeMouseDown_(e) {
324
+ private resizeMouseDown_(e: MouseEvent) {
356
325
  this.promote();
357
326
  Bubble.unbindDragEvents_();
358
327
  if (browserEvents.isRightButton(e)) {
@@ -377,10 +346,9 @@ const Bubble = class {
377
346
 
378
347
  /**
379
348
  * Resize this bubble to follow the mouse.
380
- * @param {!Event} e Mouse move event.
381
- * @private
349
+ * @param e Mouse move event.
382
350
  */
383
- resizeMouseMove_(e) {
351
+ private resizeMouseMove_(e: MouseEvent) {
384
352
  this.autoLayout_ = false;
385
353
  const newXY = this.workspace_.moveDrag(e);
386
354
  this.setBubbleSize(this.workspace_.RTL ? -newXY.x : newXY.x, newXY.y);
@@ -392,29 +360,29 @@ const Bubble = class {
392
360
 
393
361
  /**
394
362
  * Register a function as a callback event for when the bubble is resized.
395
- * @param {!Function} callback The function to call on resize.
363
+ * @param callback The function to call on resize.
396
364
  */
397
- registerResizeEvent(callback) {
365
+ registerResizeEvent(callback: () => void) {
398
366
  this.resizeCallback_ = callback;
399
367
  }
400
368
 
401
369
  /**
402
370
  * Register a function as a callback event for when the bubble is moved.
403
- * @param {!Function} callback The function to call on move.
371
+ * @param callback The function to call on move.
404
372
  */
405
- registerMoveEvent(callback) {
373
+ registerMoveEvent(callback: () => void) {
406
374
  this.moveCallback_ = callback;
407
375
  }
408
376
 
409
377
  /**
410
378
  * Move this bubble to the top of the stack.
411
- * @return {boolean} Whether or not the bubble has been moved.
412
- * @package
379
+ * @return Whether or not the bubble has been moved.
380
+ * @internal
413
381
  */
414
- promote() {
415
- const svgGroup = this.bubbleGroup_.parentNode;
416
- if (svgGroup.lastChild !== this.bubbleGroup_) {
417
- svgGroup.appendChild(this.bubbleGroup_);
382
+ promote(): boolean {
383
+ const svgGroup = this.bubbleGroup_?.parentNode;
384
+ if (svgGroup?.lastChild !== this.bubbleGroup_ && this.bubbleGroup_) {
385
+ svgGroup?.appendChild(this.bubbleGroup_);
418
386
  return true;
419
387
  }
420
388
  return false;
@@ -423,32 +391,30 @@ const Bubble = class {
423
391
  /**
424
392
  * Notification that the anchor has moved.
425
393
  * Update the arrow and bubble accordingly.
426
- * @param {!Coordinate} xy Absolute location.
394
+ * @param xy Absolute location.
427
395
  */
428
- setAnchorLocation(xy) {
396
+ setAnchorLocation(xy: Coordinate) {
429
397
  this.anchorXY_ = xy;
430
398
  if (this.rendered_) {
431
399
  this.positionBubble_();
432
400
  }
433
401
  }
434
402
 
435
- /**
436
- * Position the bubble so that it does not fall off-screen.
437
- * @private
438
- */
439
- layoutBubble_() {
403
+ /** Position the bubble so that it does not fall off-screen. */
404
+ private layoutBubble_() {
440
405
  // Get the metrics in workspace units.
441
406
  const viewMetrics =
442
407
  this.workspace_.getMetricsManager().getViewMetrics(true);
443
408
 
444
409
  const optimalLeft = this.getOptimalRelativeLeft_(viewMetrics);
445
410
  const optimalTop = this.getOptimalRelativeTop_(viewMetrics);
446
- const bbox = this.shape_.getBBox();
411
+ const bbox = (this.shape_ as SVGGraphicsElement).getBBox();
447
412
 
448
413
  const topPosition = {
449
414
  x: optimalLeft,
450
415
  y: -this.height_ -
451
- this.workspace_.getRenderer().getConstants().MIN_BLOCK_HEIGHT,
416
+ this.workspace_.getRenderer().getConstants().MIN_BLOCK_HEIGHT as
417
+ number,
452
418
  };
453
419
  const startPosition = {x: -this.width_ - 30, y: optimalTop};
454
420
  const endPosition = {x: bbox.width, y: optimalTop};
@@ -495,19 +461,19 @@ const Bubble = class {
495
461
  /**
496
462
  * Calculate the what percentage of the bubble overlaps with the visible
497
463
  * workspace (what percentage of the bubble is visible).
498
- * @param {!{x: number, y: number}} relativeMin The position of the top-left
499
- * corner of the bubble relative to the anchor point.
500
- * @param {!MetricsManager.ContainerRegion} viewMetrics The view metrics
501
- * of the workspace the bubble will appear in.
502
- * @return {number} The percentage of the bubble that is visible.
503
- * @private
504
- */
505
- getOverlap_(relativeMin, viewMetrics) {
464
+ * @param relativeMin The position of the top-left corner of the bubble
465
+ * relative to the anchor point.
466
+ * @param viewMetrics The view metrics of the workspace the bubble will appear
467
+ * in.
468
+ * @return The percentage of the bubble that is visible.
469
+ */
470
+ private getOverlap_(
471
+ relativeMin: {x: number, y: number},
472
+ viewMetrics: ContainerRegion): number {
506
473
  // The position of the top-left corner of the bubble in workspace units.
507
474
  const bubbleMin = {
508
- x: this.workspace_.RTL ?
509
- (this.anchorXY_.x - relativeMin.x - this.width_) :
510
- (relativeMin.x + this.anchorXY_.x),
475
+ x: this.workspace_.RTL ? this.anchorXY_.x - relativeMin.x - this.width_ :
476
+ relativeMin.x + this.anchorXY_.x,
511
477
  y: relativeMin.y + this.anchorXY_.y,
512
478
  };
513
479
  // The position of the bottom-right corner of the bubble in workspace units.
@@ -536,20 +502,19 @@ const Bubble = class {
536
502
  return Math.max(
537
503
  0,
538
504
  Math.min(
539
- 1, (overlapWidth * overlapHeight) / (this.width_ * this.height_)));
505
+ 1, overlapWidth * overlapHeight / (this.width_ * this.height_)));
540
506
  }
541
507
 
542
508
  /**
543
509
  * Calculate what the optimal horizontal position of the top-left corner of
544
510
  * the bubble is (relative to the anchor point) so that the most area of the
545
511
  * bubble is shown.
546
- * @param {!MetricsManager.ContainerRegion} viewMetrics The view metrics
547
- * of the workspace the bubble will appear in.
548
- * @return {number} The optimal horizontal position of the top-left corner
549
- * of the bubble.
550
- * @private
512
+ * @param viewMetrics The view metrics of the workspace the bubble will appear
513
+ * in.
514
+ * @return The optimal horizontal position of the top-left corner of the
515
+ * bubble.
551
516
  */
552
- getOptimalRelativeLeft_(viewMetrics) {
517
+ private getOptimalRelativeLeft_(viewMetrics: ContainerRegion): number {
553
518
  let relativeLeft = -this.width_ / 4;
554
519
 
555
520
  // No amount of sliding left or right will give us a better overlap.
@@ -565,7 +530,7 @@ const Bubble = class {
565
530
  const workspaceRight = viewMetrics.left + viewMetrics.width;
566
531
  const workspaceLeft = viewMetrics.left +
567
532
  // Thickness in workspace units.
568
- (Scrollbar.scrollbarThickness / this.workspace_.scale);
533
+ Scrollbar.scrollbarThickness / this.workspace_.scale;
569
534
 
570
535
  if (bubbleLeft < workspaceLeft) {
571
536
  // Slide the bubble right until it is onscreen.
@@ -581,7 +546,7 @@ const Bubble = class {
581
546
  const workspaceLeft = viewMetrics.left;
582
547
  const workspaceRight = viewMetrics.left + viewMetrics.width -
583
548
  // Thickness in workspace units.
584
- (Scrollbar.scrollbarThickness / this.workspace_.scale);
549
+ Scrollbar.scrollbarThickness / this.workspace_.scale;
585
550
 
586
551
  if (bubbleLeft < workspaceLeft) {
587
552
  // Slide the bubble right until it is onscreen.
@@ -599,13 +564,11 @@ const Bubble = class {
599
564
  * Calculate what the optimal vertical position of the top-left corner of
600
565
  * the bubble is (relative to the anchor point) so that the most area of the
601
566
  * bubble is shown.
602
- * @param {!MetricsManager.ContainerRegion} viewMetrics The view metrics
603
- * of the workspace the bubble will appear in.
604
- * @return {number} The optimal vertical position of the top-left corner
605
- * of the bubble.
606
- * @private
567
+ * @param viewMetrics The view metrics of the workspace the bubble will appear
568
+ * in.
569
+ * @return The optimal vertical position of the top-left corner of the bubble.
607
570
  */
608
- getOptimalRelativeTop_(viewMetrics) {
571
+ private getOptimalRelativeTop_(viewMetrics: ContainerRegion): number {
609
572
  let relativeTop = -this.height_ / 4;
610
573
 
611
574
  // No amount of sliding up or down will give us a better overlap.
@@ -616,9 +579,9 @@ const Bubble = class {
616
579
  const bubbleTop = this.anchorXY_.y + relativeTop;
617
580
  const bubbleBottom = bubbleTop + this.height_;
618
581
  const workspaceTop = viewMetrics.top;
619
- const workspaceBottom = viewMetrics.top + viewMetrics.height -
620
- // Thickness in workspace units.
621
- (Scrollbar.scrollbarThickness / this.workspace_.scale);
582
+ const workspaceBottom = viewMetrics.top +
583
+ viewMetrics.height - // Thickness in workspace units.
584
+ Scrollbar.scrollbarThickness / this.workspace_.scale;
622
585
 
623
586
  const anchorY = this.anchorXY_.y;
624
587
  if (bubbleTop < workspaceTop) {
@@ -632,11 +595,8 @@ const Bubble = class {
632
595
  return relativeTop;
633
596
  }
634
597
 
635
- /**
636
- * Move the bubble to a location relative to the anchor's centre.
637
- * @private
638
- */
639
- positionBubble_() {
598
+ /** Move the bubble to a location relative to the anchor's centre. */
599
+ private positionBubble_() {
640
600
  let left = this.anchorXY_.x;
641
601
  if (this.workspace_.RTL) {
642
602
  left -= this.relativeLeft_ + this.width_;
@@ -649,21 +609,21 @@ const Bubble = class {
649
609
 
650
610
  /**
651
611
  * Move the bubble group to the specified location in workspace coordinates.
652
- * @param {number} x The x position to move to.
653
- * @param {number} y The y position to move to.
654
- * @package
612
+ * @param x The x position to move to.
613
+ * @param y The y position to move to.
614
+ * @internal
655
615
  */
656
- moveTo(x, y) {
657
- this.bubbleGroup_.setAttribute(
616
+ moveTo(x: number, y: number) {
617
+ this.bubbleGroup_?.setAttribute(
658
618
  'transform', 'translate(' + x + ',' + y + ')');
659
619
  }
660
620
 
661
621
  /**
662
622
  * Triggers a move callback if one exists at the end of a drag.
663
- * @param {boolean} adding True if adding, false if removing.
664
- * @package
623
+ * @param adding True if adding, false if removing.
624
+ * @internal
665
625
  */
666
- setDragging(adding) {
626
+ setDragging(adding: boolean) {
667
627
  if (!adding && this.moveCallback_) {
668
628
  this.moveCallback_();
669
629
  }
@@ -671,26 +631,26 @@ const Bubble = class {
671
631
 
672
632
  /**
673
633
  * Get the dimensions of this bubble.
674
- * @return {!Size} The height and width of the bubble.
634
+ * @return The height and width of the bubble.
675
635
  */
676
- getBubbleSize() {
636
+ getBubbleSize(): Size {
677
637
  return new Size(this.width_, this.height_);
678
638
  }
679
639
 
680
640
  /**
681
641
  * Size this bubble.
682
- * @param {number} width Width of the bubble.
683
- * @param {number} height Height of the bubble.
642
+ * @param width Width of the bubble.
643
+ * @param height Height of the bubble.
684
644
  */
685
- setBubbleSize(width, height) {
645
+ setBubbleSize(width: number, height: number) {
686
646
  const doubleBorderWidth = 2 * Bubble.BORDER_WIDTH;
687
647
  // Minimum size of a bubble.
688
648
  width = Math.max(width, doubleBorderWidth + 45);
689
649
  height = Math.max(height, doubleBorderWidth + 20);
690
650
  this.width_ = width;
691
651
  this.height_ = height;
692
- this.bubbleBack_.setAttribute('width', width);
693
- this.bubbleBack_.setAttribute('height', height);
652
+ this.bubbleBack_?.setAttribute('width', width.toString());
653
+ this.bubbleBack_?.setAttribute('height', height.toString());
694
654
  if (this.resizeGroup_) {
695
655
  if (this.workspace_.RTL) {
696
656
  // Mirror the resize group.
@@ -718,11 +678,8 @@ const Bubble = class {
718
678
  }
719
679
  }
720
680
 
721
- /**
722
- * Draw the arrow between the bubble and the origin.
723
- * @private
724
- */
725
- renderArrow_() {
681
+ /** Draw the arrow between the bubble and the origin. */
682
+ private renderArrow_() {
726
683
  const steps = [];
727
684
  // Find the relative coordinates of the center of the bubble.
728
685
  const relBubbleX = this.width_ / 2;
@@ -788,21 +745,19 @@ const Bubble = class {
788
745
  ',' + (baseY2 + swirlRise) + ' ' + baseX2 + ',' + baseY2);
789
746
  }
790
747
  steps.push('z');
791
- this.bubbleArrow_.setAttribute('d', steps.join(' '));
748
+ this.bubbleArrow_?.setAttribute('d', steps.join(' '));
792
749
  }
793
750
 
794
751
  /**
795
752
  * Change the colour of a bubble.
796
- * @param {string} hexColour Hex code of colour.
753
+ * @param hexColour Hex code of colour.
797
754
  */
798
- setColour(hexColour) {
799
- this.bubbleBack_.setAttribute('fill', hexColour);
800
- this.bubbleArrow_.setAttribute('fill', hexColour);
755
+ setColour(hexColour: string) {
756
+ this.bubbleBack_?.setAttribute('fill', hexColour);
757
+ this.bubbleArrow_?.setAttribute('fill', hexColour);
801
758
  }
802
759
 
803
- /**
804
- * Dispose of this bubble.
805
- */
760
+ /** Dispose of this bubble. */
806
761
  dispose() {
807
762
  if (this.onMouseDownBubbleWrapper_) {
808
763
  browserEvents.unbind(this.onMouseDownBubbleWrapper_);
@@ -818,13 +773,12 @@ const Bubble = class {
818
773
  /**
819
774
  * Move this bubble during a drag, taking into account whether or not there is
820
775
  * a drag surface.
821
- * @param {BlockDragSurfaceSvg} dragSurface The surface that carries
822
- * rendered items during a drag, or null if no drag surface is in use.
823
- * @param {!Coordinate} newLoc The location to translate to, in
824
- * workspace coordinates.
825
- * @package
776
+ * @param dragSurface The surface that carries rendered items during a drag,
777
+ * or null if no drag surface is in use.
778
+ * @param newLoc The location to translate to, in workspace coordinates.
779
+ * @internal
826
780
  */
827
- moveDuringDrag(dragSurface, newLoc) {
781
+ moveDuringDrag(dragSurface: BlockDragSurfaceSvg, newLoc: Coordinate) {
828
782
  if (dragSurface) {
829
783
  dragSurface.translateSurface(newLoc.x, newLoc.y);
830
784
  } else {
@@ -842,9 +796,9 @@ const Bubble = class {
842
796
  /**
843
797
  * Return the coordinates of the top-left corner of this bubble's body
844
798
  * relative to the drawing surface's origin (0,0), in workspace units.
845
- * @return {!Coordinate} Object with .x and .y properties.
799
+ * @return Object with .x and .y properties.
846
800
  */
847
- getRelativeToSurfaceXY() {
801
+ getRelativeToSurfaceXY(): Coordinate {
848
802
  return new Coordinate(
849
803
  this.workspace_.RTL ?
850
804
  -this.relativeLeft_ + this.anchorXY_.x - this.width_ :
@@ -856,19 +810,15 @@ const Bubble = class {
856
810
  * Set whether auto-layout of this bubble is enabled. The first time a bubble
857
811
  * is shown it positions itself to not cover any blocks. Once a user has
858
812
  * dragged it to reposition, it renders where the user put it.
859
- * @param {boolean} enable True if auto-layout should be enabled, false
860
- * otherwise.
861
- * @package
813
+ * @param enable True if auto-layout should be enabled, false otherwise.
814
+ * @internal
862
815
  */
863
- setAutoLayout(enable) {
816
+ setAutoLayout(enable: boolean) {
864
817
  this.autoLayout_ = enable;
865
818
  }
866
819
 
867
- /**
868
- * Stop binding to the global mouseup and mousemove events.
869
- * @private
870
- */
871
- static unbindDragEvents_() {
820
+ /** Stop binding to the global mouseup and mousemove events. */
821
+ private static unbindDragEvents_() {
872
822
  if (Bubble.onMouseUpWrapper_) {
873
823
  browserEvents.unbind(Bubble.onMouseUpWrapper_);
874
824
  Bubble.onMouseUpWrapper_ = null;
@@ -881,27 +831,24 @@ const Bubble = class {
881
831
 
882
832
  /**
883
833
  * Handle a mouse-up event while dragging a bubble's border or resize handle.
884
- * @param {!Event} _e Mouse up event.
885
- * @private
834
+ * @param _e Mouse up event.
886
835
  */
887
- static bubbleMouseUp_(_e) {
836
+ private static bubbleMouseUp_(_e: MouseEvent) {
888
837
  Touch.clearTouchIdentifier();
889
838
  Bubble.unbindDragEvents_();
890
839
  }
891
840
 
892
841
  /**
893
842
  * Create the text for a non editable bubble.
894
- * @param {string} text The text to display.
895
- * @return {!SVGTextElement} The top-level node of the text.
896
- * @package
897
- */
898
- static textToDom(text) {
899
- const paragraph = dom.createSvgElement(
900
- Svg.TEXT, {
901
- 'class': 'blocklyText blocklyBubbleText blocklyNoPointerEvents',
902
- 'y': Bubble.BORDER_WIDTH,
903
- },
904
- null);
843
+ * @param text The text to display.
844
+ * @return The top-level node of the text.
845
+ * @internal
846
+ */
847
+ static textToDom(text: string): SVGTextElement {
848
+ const paragraph = dom.createSvgElement(Svg.TEXT, {
849
+ 'class': 'blocklyText blocklyBubbleText blocklyNoPointerEvents',
850
+ 'y': Bubble.BORDER_WIDTH,
851
+ });
905
852
  const lines = text.split('\n');
906
853
  for (let i = 0; i < lines.length; i++) {
907
854
  const tspanElement = dom.createSvgElement(
@@ -914,18 +861,18 @@ const Bubble = class {
914
861
 
915
862
  /**
916
863
  * Creates a bubble that can not be edited.
917
- * @param {!SVGTextElement} paragraphElement The text element for the non
918
- * editable bubble.
919
- * @param {!BlockSvg} block The block that the bubble is attached to.
920
- * @param {!Coordinate} iconXY The coordinate of the icon.
921
- * @return {!Bubble} The non editable bubble.
922
- * @package
923
- */
924
- static createNonEditableBubble(paragraphElement, block, iconXY) {
864
+ * @param paragraphElement The text element for the non editable bubble.
865
+ * @param block The block that the bubble is attached to.
866
+ * @param iconXY The coordinate of the icon.
867
+ * @return The non editable bubble.
868
+ * @internal
869
+ */
870
+ static createNonEditableBubble(
871
+ paragraphElement: SVGTextElement, block: BlockSvg,
872
+ iconXY: Coordinate): Bubble {
925
873
  const bubble = new Bubble(
926
- /** @type {!WorkspaceSvg} */ (block.workspace), paragraphElement,
927
- block.pathObject.svgPath,
928
- /** @type {!Coordinate} */ (iconXY), null, null);
874
+ block.workspace!, paragraphElement, block.pathObject.svgPath, (iconXY),
875
+ null, null);
929
876
  // Expose this bubble's block's ID on its top-level SVG group.
930
877
  bubble.setSvgId(block.id);
931
878
  if (block.RTL) {
@@ -933,53 +880,13 @@ const Bubble = class {
933
880
  // This cannot be done until the bubble is rendered on screen.
934
881
  const maxWidth = paragraphElement.getBBox().width;
935
882
  for (let i = 0, textElement;
936
- (textElement = paragraphElement.childNodes[i]); i++) {
883
+ textElement = paragraphElement.childNodes[i] as SVGTSpanElement;
884
+ i++) {
937
885
  textElement.setAttribute('text-anchor', 'end');
938
- textElement.setAttribute('x', maxWidth + Bubble.BORDER_WIDTH);
886
+ textElement.setAttribute(
887
+ 'x', (maxWidth + Bubble.BORDER_WIDTH).toString());
939
888
  }
940
889
  }
941
890
  return bubble;
942
891
  }
943
- };
944
-
945
- /**
946
- * Width of the border around the bubble.
947
- */
948
- Bubble.BORDER_WIDTH = 6;
949
-
950
- /**
951
- * Determines the thickness of the base of the arrow in relation to the size
952
- * of the bubble. Higher numbers result in thinner arrows.
953
- */
954
- Bubble.ARROW_THICKNESS = 5;
955
-
956
- /**
957
- * The number of degrees that the arrow bends counter-clockwise.
958
- */
959
- Bubble.ARROW_ANGLE = 20;
960
-
961
- /**
962
- * The sharpness of the arrow's bend. Higher numbers result in smoother arrows.
963
- */
964
- Bubble.ARROW_BEND = 4;
965
-
966
- /**
967
- * Distance between arrow point and anchor point.
968
- */
969
- Bubble.ANCHOR_RADIUS = 8;
970
-
971
- /**
972
- * Mouse up event data.
973
- * @type {?browserEvents.Data}
974
- * @private
975
- */
976
- Bubble.onMouseUpWrapper_ = null;
977
-
978
- /**
979
- * Mouse move event data.
980
- * @type {?browserEvents.Data}
981
- * @private
982
- */
983
- Bubble.onMouseMoveWrapper_ = null;
984
-
985
- exports.Bubble = Bubble;
892
+ }