blockly 8.20220331.0-beta.1 → 9.0.0-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 (857) hide show
  1. package/blockly.min.js +2004 -2269
  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 +7 -6
  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 +10 -3
  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 -720
  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} +31 -44
  93. package/core/events/events_block_delete.d.ts +36 -0
  94. package/core/events/{events_block_delete.js → events_block_delete.ts} +35 -48
  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.js → input.ts} +96 -119
  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} +234 -227
  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 -4
  542. package/core.js +1 -2
  543. package/dart.d.ts +1 -4
  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 +3 -11
  602. package/javascript.d.ts +1 -4
  603. package/javascript_compressed.js +314 -104
  604. package/javascript_compressed.js.map +1 -1
  605. package/lua.d.ts +1 -4
  606. package/lua_compressed.js +399 -81
  607. package/lua_compressed.js.map +1 -1
  608. package/msg/ab.js +10 -6
  609. package/msg/ace.js +10 -6
  610. package/msg/af.js +10 -6
  611. package/msg/am.js +10 -6
  612. package/msg/ar.js +10 -6
  613. package/msg/ast.js +10 -6
  614. package/msg/az.js +12 -8
  615. package/msg/ba.js +10 -6
  616. package/msg/bcc.js +10 -6
  617. package/msg/be-tarask.js +10 -6
  618. package/msg/be.js +14 -10
  619. package/msg/bg.js +10 -6
  620. package/msg/bn.js +10 -6
  621. package/msg/br.js +10 -6
  622. package/msg/bs.js +10 -6
  623. package/msg/ca.js +10 -6
  624. package/msg/cdo.js +10 -6
  625. package/msg/cs.js +25 -21
  626. package/msg/da.js +10 -6
  627. package/msg/de.js +11 -7
  628. package/msg/diq.js +11 -7
  629. package/msg/dty.js +10 -6
  630. package/msg/ee.js +10 -6
  631. package/msg/el.js +10 -6
  632. package/msg/en-gb.js +10 -6
  633. package/msg/en.js +10 -6
  634. package/msg/eo.js +11 -7
  635. package/msg/es.js +11 -7
  636. package/msg/et.js +10 -6
  637. package/msg/eu.js +10 -6
  638. package/msg/fa.js +11 -7
  639. package/msg/fi.js +10 -6
  640. package/msg/fo.js +10 -6
  641. package/msg/fr.js +14 -10
  642. package/msg/frr.js +10 -6
  643. package/msg/gl.js +10 -6
  644. package/msg/gn.js +10 -6
  645. package/msg/gor.js +10 -6
  646. package/msg/ha.js +10 -6
  647. package/msg/hak.js +10 -6
  648. package/msg/he.js +11 -7
  649. package/msg/hi.js +10 -6
  650. package/msg/hr.js +12 -8
  651. package/msg/hrx.js +10 -6
  652. package/msg/hu.js +10 -6
  653. package/msg/hy.js +12 -8
  654. package/msg/ia.js +10 -6
  655. package/msg/id.js +22 -18
  656. package/msg/ig.js +10 -6
  657. package/msg/inh.js +24 -20
  658. package/msg/is.js +10 -6
  659. package/msg/it.js +10 -6
  660. package/msg/ja.js +17 -13
  661. package/msg/ka.js +10 -6
  662. package/msg/kab.js +10 -6
  663. package/msg/kbd-cyrl.js +10 -6
  664. package/msg/km.js +10 -6
  665. package/msg/kn.js +10 -6
  666. package/msg/ko.js +10 -6
  667. package/msg/ksh.js +10 -6
  668. package/msg/ku-latn.js +10 -6
  669. package/msg/ky.js +10 -6
  670. package/msg/la.js +10 -6
  671. package/msg/lb.js +10 -6
  672. package/msg/lki.js +10 -6
  673. package/msg/lo.js +10 -6
  674. package/msg/lrc.js +10 -6
  675. package/msg/lt.js +10 -6
  676. package/msg/lv.js +39 -35
  677. package/msg/mg.js +10 -6
  678. package/msg/mk.js +10 -6
  679. package/msg/ml.js +10 -6
  680. package/msg/mnw.js +10 -6
  681. package/msg/ms.js +10 -6
  682. package/msg/my.js +10 -6
  683. package/msg/mzn.js +10 -6
  684. package/msg/nb.js +10 -6
  685. package/msg/ne.js +10 -6
  686. package/msg/nl.js +10 -6
  687. package/msg/oc.js +10 -6
  688. package/msg/olo.js +10 -6
  689. package/msg/pa.js +13 -9
  690. package/msg/pl.js +10 -6
  691. package/msg/pms.js +10 -6
  692. package/msg/ps.js +10 -6
  693. package/msg/pt-br.js +10 -6
  694. package/msg/pt.js +10 -6
  695. package/msg/ro.js +10 -6
  696. package/msg/ru.js +10 -6
  697. package/msg/sc.js +10 -6
  698. package/msg/sco.js +10 -6
  699. package/msg/sd.js +10 -6
  700. package/msg/shn.js +10 -6
  701. package/msg/si.js +10 -6
  702. package/msg/sk.js +10 -6
  703. package/msg/skr-arab.js +10 -6
  704. package/msg/sl.js +10 -6
  705. package/msg/smn.js +440 -0
  706. package/msg/sq.js +10 -6
  707. package/msg/sr-latn.js +10 -6
  708. package/msg/sr.js +10 -6
  709. package/msg/sv.js +10 -6
  710. package/msg/sw.js +10 -6
  711. package/msg/ta.js +10 -6
  712. package/msg/tcy.js +10 -6
  713. package/msg/te.js +11 -7
  714. package/msg/th.js +10 -6
  715. package/msg/ti.js +10 -6
  716. package/msg/tl.js +10 -6
  717. package/msg/tlh.js +10 -6
  718. package/msg/tr.js +10 -6
  719. package/msg/ug-arab.js +10 -6
  720. package/msg/uk.js +10 -6
  721. package/msg/ur.js +10 -6
  722. package/msg/uz.js +10 -6
  723. package/msg/vi.js +10 -6
  724. package/msg/xmf.js +10 -6
  725. package/msg/yo.js +10 -6
  726. package/msg/yue.js +11 -7
  727. package/msg/zgh.js +10 -6
  728. package/msg/zh-hans.js +13 -9
  729. package/msg/zh-hant.js +13 -9
  730. package/package.json +5 -5
  731. package/php.d.ts +1 -4
  732. package/php_compressed.js +322 -93
  733. package/php_compressed.js.map +1 -1
  734. package/python.d.ts +1 -4
  735. package/python_compressed.js +237 -90
  736. package/python_compressed.js.map +1 -1
  737. package/blockly.d.ts +0 -25607
  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/interfaces/i_ast_node_location_svg.js +0 -45
  771. package/core/interfaces/i_ast_node_location_with_block.js +0 -41
  772. package/core/interfaces/i_autohideable.js +0 -40
  773. package/core/interfaces/i_block_dragger.js +0 -66
  774. package/core/interfaces/i_bounded_element.js +0 -45
  775. package/core/interfaces/i_bubble.js +0 -95
  776. package/core/interfaces/i_collapsible_toolbox_item.js +0 -53
  777. package/core/interfaces/i_connection_checker.js +0 -104
  778. package/core/interfaces/i_contextmenu.js +0 -32
  779. package/core/interfaces/i_copyable.js +0 -49
  780. package/core/interfaces/i_delete_area.js +0 -50
  781. package/core/interfaces/i_drag_target.js +0 -88
  782. package/core/interfaces/i_flyout.js +0 -201
  783. package/core/interfaces/i_keyboard_accessible.js +0 -38
  784. package/core/interfaces/i_metrics_manager.js +0 -154
  785. package/core/interfaces/i_positionable.js +0 -51
  786. package/core/interfaces/i_selectable.js +0 -51
  787. package/core/interfaces/i_selectable_toolbox_item.js +0 -73
  788. package/core/interfaces/i_serializer.js +0 -77
  789. package/core/interfaces/i_styleable.js +0 -39
  790. package/core/interfaces/i_toolbox.js +0 -142
  791. package/core/interfaces/i_toolbox_item.js +0 -85
  792. package/core/marker_manager.js +0 -213
  793. package/core/menuitem.js +0 -292
  794. package/core/names.js +0 -289
  795. package/core/registry.js +0 -384
  796. package/core/renderers/common/block_rendering.js +0 -170
  797. package/core/renderers/common/constants.js +0 -1250
  798. package/core/renderers/common/i_path_object.js +0 -162
  799. package/core/renderers/common/marker_svg.js +0 -721
  800. package/core/renderers/common/path_object.js +0 -283
  801. package/core/renderers/common/renderer.js +0 -305
  802. package/core/renderers/geras/constants.js +0 -73
  803. package/core/renderers/geras/geras.js +0 -36
  804. package/core/renderers/geras/measurables/inline_input.js +0 -58
  805. package/core/renderers/geras/measurables/statement_input.js +0 -57
  806. package/core/renderers/geras/renderer.js +0 -149
  807. package/core/renderers/measurables/base.js +0 -64
  808. package/core/renderers/measurables/bottom_row.js +0 -138
  809. package/core/renderers/measurables/connection.js +0 -56
  810. package/core/renderers/measurables/external_value_input.js +0 -70
  811. package/core/renderers/measurables/field.js +0 -71
  812. package/core/renderers/measurables/in_row_spacer.js +0 -47
  813. package/core/renderers/measurables/input_connection.js +0 -75
  814. package/core/renderers/measurables/next_connection.js +0 -50
  815. package/core/renderers/measurables/output_connection.js +0 -61
  816. package/core/renderers/measurables/previous_connection.js +0 -50
  817. package/core/renderers/measurables/round_corner.js +0 -52
  818. package/core/renderers/measurables/row.js +0 -247
  819. package/core/renderers/measurables/spacer_row.js +0 -69
  820. package/core/renderers/measurables/square_corner.js +0 -50
  821. package/core/renderers/measurables/top_row.js +0 -143
  822. package/core/renderers/measurables/types.js +0 -353
  823. package/core/renderers/minimalist/drawer.js +0 -42
  824. package/core/renderers/minimalist/info.js +0 -54
  825. package/core/renderers/minimalist/minimalist.js +0 -26
  826. package/core/renderers/minimalist/renderer.js +0 -80
  827. package/core/renderers/thrasos/renderer.js +0 -53
  828. package/core/renderers/thrasos/thrasos.js +0 -22
  829. package/core/renderers/zelos/marker_svg.js +0 -179
  830. package/core/renderers/zelos/measurables/bottom_row.js +0 -66
  831. package/core/renderers/zelos/measurables/row_elements.js +0 -46
  832. package/core/renderers/zelos/path_object.js +0 -247
  833. package/core/renderers/zelos/renderer.js +0 -147
  834. package/core/renderers/zelos/zelos.js +0 -38
  835. package/core/serialization/exceptions.js +0 -144
  836. package/core/shortcut_registry.js +0 -366
  837. package/core/theme/themes.js +0 -23
  838. package/core/theme.js +0 -228
  839. package/core/theme_manager.js +0 -211
  840. package/core/toolbox/category.js +0 -751
  841. package/core/toolbox/collapsible_category.js +0 -311
  842. package/core/toolbox/separator.js +0 -133
  843. package/core/toolbox/toolbox_item.js +0 -173
  844. package/core/touch.js +0 -285
  845. package/core/utils/coordinate.js +0 -138
  846. package/core/utils/global.js +0 -41
  847. package/core/utils/keycodes.js +0 -172
  848. package/core/utils/metrics.js +0 -154
  849. package/core/utils/svg.js +0 -186
  850. package/core/utils/toolbox.js +0 -459
  851. package/core/utils/useragent.js +0 -197
  852. package/core/utils.js +0 -383
  853. package/core/variable_model.js +0 -96
  854. package/core/widgetdiv.js +0 -290
  855. package/core/workspace.js +0 -836
  856. package/core/workspace_comment.js +0 -400
  857. package/core/workspace_dragger.js +0 -115
@@ -8,31 +8,27 @@
8
8
  * @fileoverview Handles serializing blocks to plain JavaScript objects only
9
9
  * containing state.
10
10
  */
11
- 'use strict';
12
11
 
13
12
  /**
14
13
  * Handles serializing blocks to plain JavaScript objects only containing state.
15
14
  * @namespace Blockly.serialization.blocks
16
15
  */
17
- goog.module('Blockly.serialization.blocks');
18
-
19
- const Xml = goog.require('Blockly.Xml');
20
- const eventUtils = goog.require('Blockly.Events.utils');
21
- const priorities = goog.require('Blockly.serialization.priorities');
22
- const serializationRegistry = goog.require('Blockly.serialization.registry');
23
- const {BadConnectionCheck, MissingBlockType, MissingConnection, RealChildOfShadow} = goog.require('Blockly.serialization.exceptions');
24
- /* eslint-disable-next-line no-unused-vars */
25
- const {Block} = goog.requireType('Blockly.Block');
26
- /* eslint-disable-next-line no-unused-vars */
27
- const {BlockSvg} = goog.requireType('Blockly.BlockSvg');
28
- // eslint-disable-next-line no-unused-vars
29
- const {Connection} = goog.requireType('Blockly.Connection');
30
- // eslint-disable-next-line no-unused-vars
31
- const {ISerializer} = goog.require('Blockly.serialization.ISerializer');
32
- const {Size} = goog.require('Blockly.utils.Size');
33
- // eslint-disable-next-line no-unused-vars
34
- const {Workspace} = goog.requireType('Blockly.Workspace');
35
- const {inputTypes} = goog.require('Blockly.inputTypes');
16
+ import * as goog from '../../closure/goog/goog.js';
17
+ goog.declareModuleId('Blockly.serialization.blocks');
18
+
19
+ import type {Block} from '../block.js';
20
+ import type {BlockSvg} from '../block_svg.js';
21
+ import type {Connection} from '../connection.js';
22
+ import * as eventUtils from '../events/utils.js';
23
+ import {inputTypes} from '../input_types.js';
24
+ import type {ISerializer} from '../interfaces/i_serializer.js';
25
+ import {Size} from '../utils/size.js';
26
+ import type {Workspace} from '../workspace.js';
27
+ import * as Xml from '../xml.js';
28
+
29
+ import {BadConnectionCheck, MissingBlockType, MissingConnection, RealChildOfShadow} from './exceptions.js';
30
+ import * as priorities from './priorities.js';
31
+ import * as serializationRegistry from './registry.js';
36
32
 
37
33
 
38
34
  // TODO(#5160): Remove this once lint is fixed.
@@ -40,64 +36,61 @@ const {inputTypes} = goog.require('Blockly.inputTypes');
40
36
 
41
37
  /**
42
38
  * Represents the state of a connection.
43
- * @typedef {{
44
- * shadow: (!State|undefined),
45
- * block: (!State|undefined)
46
- * }}
47
39
  * @alias Blockly.serialization.blocks.ConnectionState
48
40
  */
49
- let ConnectionState;
50
- exports.ConnectionState = ConnectionState;
41
+ export interface ConnectionState {
42
+ shadow: State|undefined;
43
+ block: State|undefined;
44
+ }
51
45
 
52
46
  /**
53
47
  * Represents the state of a given block.
54
- * @typedef {{
55
- * type: string,
56
- * id: (string|undefined),
57
- * x: (number|undefined),
58
- * y: (number|undefined),
59
- * collapsed: (boolean|undefined),
60
- * enabled: (boolean|undefined),
61
- * inline: (boolean|undefined),
62
- * data: (string|undefined),
63
- * extra-state: (*|undefined),
64
- * icons: (!Object<string, *>|undefined),
65
- * fields: (!Object<string, *>|undefined),
66
- * inputs: (!Object<string, !ConnectionState>|undefined),
67
- * next: (!ConnectionState|undefined)
68
- * }}
69
48
  * @alias Blockly.serialization.blocks.State
70
49
  */
71
- let State;
72
- exports.State = State;
50
+ export interface State {
51
+ type: string;
52
+ id?: string;
53
+ x?: number;
54
+ y?: number;
55
+ collapsed?: boolean;
56
+ enabled?: boolean;
57
+ inline?: boolean;
58
+ data?: string;
59
+ extraState?: AnyDuringMigration;
60
+ icons?: {[key: string]: AnyDuringMigration};
61
+ fields?: {[key: string]: AnyDuringMigration};
62
+ inputs?: {[key: string]: ConnectionState};
63
+ next?: ConnectionState;
64
+ }
73
65
 
74
66
  /**
75
67
  * Returns the state of the given block as a plain JavaScript object.
76
- * @param {!Block} block The block to serialize.
77
- * @param {{addCoordinates: (boolean|undefined), addInputBlocks:
78
- * (boolean|undefined), addNextBlocks: (boolean|undefined),
79
- * doFullSerialization: (boolean|undefined)}=} param1
80
- * addCoordinates: If true, the coordinates of the block are added to the
81
- * serialized state. False by default.
82
- * addinputBlocks: If true, children of the block which are connected to
83
- * inputs will be serialized. True by default.
84
- * addNextBlocks: If true, children of the block which are connected to the
85
- * block's next connection (if it exists) will be serialized.
86
- * True by default.
87
- * doFullSerialization: If true, fields that normally just save a reference
88
- * to some external state (eg variables) will instead serialize all of the
89
- * info about that state. This supports deserializing the block into a
90
- * workspace where that state doesn't yet exist. True by default.
91
- * @return {?State} The serialized state of the block, or null if the block
92
- * could not be serialied (eg it was an insertion marker).
68
+ * @param block The block to serialize.
69
+ * @param param1 addCoordinates: If true, the coordinates of the block are added
70
+ * to the serialized state. False by default. addinputBlocks: If true,
71
+ * children of the block which are connected to inputs will be serialized.
72
+ * True by default. addNextBlocks: If true, children of the block which are
73
+ * connected to the block's next connection (if it exists) will be
74
+ * serialized. True by default. doFullSerialization: If true, fields that
75
+ * normally just save a reference to some external state (eg variables) will
76
+ * instead serialize all of the info about that state. This supports
77
+ * deserializing the block into a workspace where that state doesn't yet
78
+ * exist. True by default.
79
+ * @return The serialized state of the block, or null if the block could not be
80
+ * serialied (eg it was an insertion marker).
93
81
  * @alias Blockly.serialization.blocks.save
94
82
  */
95
- const save = function(block, {
83
+ export function save(block: Block, {
96
84
  addCoordinates = false,
97
85
  addInputBlocks = true,
98
86
  addNextBlocks = true,
99
- doFullSerialization = true,
100
- } = {}) {
87
+ doFullSerialization = true
88
+ }: {
89
+ addCoordinates?: boolean,
90
+ addInputBlocks?: boolean,
91
+ addNextBlocks?: boolean,
92
+ doFullSerialization?: boolean
93
+ } = {}): State|null {
101
94
  if (block.isInsertionMarker()) {
102
95
  return null;
103
96
  }
@@ -108,30 +101,45 @@ const save = function(block, {
108
101
  };
109
102
 
110
103
  if (addCoordinates) {
111
- saveCoords(block, state);
112
- }
113
- saveAttributes(block, state);
114
- saveExtraState(block, state);
115
- saveIcons(block, state);
116
- saveFields(block, state, doFullSerialization);
104
+ // AnyDuringMigration because: Argument of type '{ type: string; id:
105
+ // string; }' is not assignable to parameter of type 'State'.
106
+ saveCoords(block, state as AnyDuringMigration);
107
+ }
108
+ // AnyDuringMigration because: Argument of type '{ type: string; id: string;
109
+ // }' is not assignable to parameter of type 'State'.
110
+ saveAttributes(block, state as AnyDuringMigration);
111
+ // AnyDuringMigration because: Argument of type '{ type: string; id: string;
112
+ // }' is not assignable to parameter of type 'State'.
113
+ saveExtraState(block, state as AnyDuringMigration);
114
+ // AnyDuringMigration because: Argument of type '{ type: string; id: string;
115
+ // }' is not assignable to parameter of type 'State'.
116
+ saveIcons(block, state as AnyDuringMigration);
117
+ // AnyDuringMigration because: Argument of type '{ type: string; id: string;
118
+ // }' is not assignable to parameter of type 'State'.
119
+ saveFields(block, state as AnyDuringMigration, doFullSerialization);
117
120
  if (addInputBlocks) {
118
- saveInputBlocks(block, state, doFullSerialization);
121
+ // AnyDuringMigration because: Argument of type '{ type: string; id:
122
+ // string; }' is not assignable to parameter of type 'State'.
123
+ saveInputBlocks(block, state as AnyDuringMigration, doFullSerialization);
119
124
  }
120
125
  if (addNextBlocks) {
121
- saveNextBlocks(block, state, doFullSerialization);
126
+ // AnyDuringMigration because: Argument of type '{ type: string; id:
127
+ // string; }' is not assignable to parameter of type 'State'.
128
+ saveNextBlocks(block, state as AnyDuringMigration, doFullSerialization);
122
129
  }
123
130
 
124
- return state;
125
- };
126
- exports.save = save;
131
+ // AnyDuringMigration because: Type '{ type: string; id: string; }' is not
132
+ // assignable to type 'State'.
133
+ return state as AnyDuringMigration;
134
+ }
127
135
 
128
136
  /**
129
137
  * Adds attributes to the given state object based on the state of the block.
130
138
  * Eg collapsed, disabled, inline, etc.
131
- * @param {!Block} block The block to base the attributes on.
132
- * @param {!State} state The state object to append to.
139
+ * @param block The block to base the attributes on.
140
+ * @param state The state object to append to.
133
141
  */
134
- const saveAttributes = function(block, state) {
142
+ function saveAttributes(block: Block, state: State) {
135
143
  if (block.isCollapsed()) {
136
144
  state['collapsed'] = true;
137
145
  }
@@ -146,26 +154,25 @@ const saveAttributes = function(block, state) {
146
154
  if (block.data) {
147
155
  state['data'] = block.data;
148
156
  }
149
- };
157
+ }
150
158
 
151
159
  /**
152
160
  * Adds the coordinates of the given block to the given state object.
153
- * @param {!Block} block The block to base the coordinates on.
154
- * @param {!State} state The state object to append to.
161
+ * @param block The block to base the coordinates on.
162
+ * @param state The state object to append to.
155
163
  */
156
- const saveCoords = function(block, state) {
164
+ function saveCoords(block: Block, state: State) {
157
165
  const workspace = block.workspace;
158
166
  const xy = block.getRelativeToSurfaceXY();
159
167
  state['x'] = Math.round(workspace.RTL ? workspace.getWidth() - xy.x : xy.x);
160
168
  state['y'] = Math.round(xy.y);
161
- };
162
-
169
+ }
163
170
  /**
164
171
  * Adds any extra state the block may provide to the given state object.
165
- * @param {!Block} block The block to serialize the extra state of.
166
- * @param {!State} state The state object to append to.
172
+ * @param block The block to serialize the extra state of.
173
+ * @param state The state object to append to.
167
174
  */
168
- const saveExtraState = function(block, state) {
175
+ function saveExtraState(block: Block, state: State) {
169
176
  if (block.saveExtraState) {
170
177
  const extraState = block.saveExtraState();
171
178
  if (extraState !== null) {
@@ -180,14 +187,14 @@ const saveExtraState = function(block, state) {
180
187
  ' xmlns="https://developers.google.com/blockly/xml"', '');
181
188
  }
182
189
  }
183
- };
190
+ }
184
191
 
185
192
  /**
186
193
  * Adds the state of all of the icons on the block to the given state object.
187
- * @param {!Block} block The block to serialize the icon state of.
188
- * @param {!State} state The state object to append to.
194
+ * @param block The block to serialize the icon state of.
195
+ * @param state The state object to append to.
189
196
  */
190
- const saveIcons = function(block, state) {
197
+ function saveIcons(block: Block, state: State) {
191
198
  // TODO(#2105): Remove this logic and put it in the icon.
192
199
  if (block.getCommentText()) {
193
200
  state['icons'] = {
@@ -199,48 +206,48 @@ const saveIcons = function(block, state) {
199
206
  },
200
207
  };
201
208
  }
202
- };
209
+ }
203
210
 
204
211
  /**
205
212
  * Adds the state of all of the fields on the block to the given state object.
206
- * @param {!Block} block The block to serialize the field state of.
207
- * @param {!State} state The state object to append to.
208
- * @param {boolean} doFullSerialization Whether or not to serialize the full
209
- * state of the field (rather than possibly saving a reference to some
210
- * state).
213
+ * @param block The block to serialize the field state of.
214
+ * @param state The state object to append to.
215
+ * @param doFullSerialization Whether or not to serialize the full state of the
216
+ * field (rather than possibly saving a reference to some state).
211
217
  */
212
- const saveFields = function(block, state, doFullSerialization) {
218
+ function saveFields(block: Block, state: State, doFullSerialization: boolean) {
213
219
  const fields = Object.create(null);
214
220
  for (let i = 0; i < block.inputList.length; i++) {
215
221
  const input = block.inputList[i];
216
222
  for (let j = 0; j < input.fieldRow.length; j++) {
217
223
  const field = input.fieldRow[j];
218
224
  if (field.isSerializable()) {
219
- fields[field.name] = field.saveState(doFullSerialization);
225
+ fields[field.name!] = field.saveState(doFullSerialization);
220
226
  }
221
227
  }
222
228
  }
223
229
  if (Object.keys(fields).length) {
224
230
  state['fields'] = fields;
225
231
  }
226
- };
232
+ }
227
233
 
228
234
  /**
229
235
  * Adds the state of all of the child blocks of the given block (which are
230
236
  * connected to inputs) to the given state object.
231
- * @param {!Block} block The block to serialize the input blocks of.
232
- * @param {!State} state The state object to append to.
233
- * @param {boolean} doFullSerialization Whether or not to do full serialization.
237
+ * @param block The block to serialize the input blocks of.
238
+ * @param state The state object to append to.
239
+ * @param doFullSerialization Whether or not to do full serialization.
234
240
  */
235
- const saveInputBlocks = function(block, state, doFullSerialization) {
241
+ function saveInputBlocks(
242
+ block: Block, state: State, doFullSerialization: boolean) {
236
243
  const inputs = Object.create(null);
237
244
  for (let i = 0; i < block.inputList.length; i++) {
238
245
  const input = block.inputList[i];
239
246
  if (input.type === inputTypes.DUMMY) {
240
247
  continue;
241
248
  }
242
- const connectionState = saveConnection(
243
- /** @type {!Connection} */ (input.connection), doFullSerialization);
249
+ const connectionState =
250
+ saveConnection(input.connection as Connection, doFullSerialization);
244
251
  if (connectionState) {
245
252
  inputs[input.name] = connectionState;
246
253
  }
@@ -249,16 +256,17 @@ const saveInputBlocks = function(block, state, doFullSerialization) {
249
256
  if (Object.keys(inputs).length) {
250
257
  state['inputs'] = inputs;
251
258
  }
252
- };
259
+ }
253
260
 
254
261
  /**
255
262
  * Adds the state of all of the next blocks of the given block to the given
256
263
  * state object.
257
- * @param {!Block} block The block to serialize the next blocks of.
258
- * @param {!State} state The state object to append to.
259
- * @param {boolean} doFullSerialization Whether or not to do full serialization.
264
+ * @param block The block to serialize the next blocks of.
265
+ * @param state The state object to append to.
266
+ * @param doFullSerialization Whether or not to do full serialization.
260
267
  */
261
- const saveNextBlocks = function(block, state, doFullSerialization) {
268
+ function saveNextBlocks(
269
+ block: Block, state: State, doFullSerialization: boolean) {
262
270
  if (!block.nextConnection) {
263
271
  return;
264
272
  }
@@ -267,18 +275,18 @@ const saveNextBlocks = function(block, state, doFullSerialization) {
267
275
  if (connectionState) {
268
276
  state['next'] = connectionState;
269
277
  }
270
- };
278
+ }
271
279
 
272
280
  /**
273
281
  * Returns the state of the given connection (ie the state of any connected
274
282
  * shadow or real blocks).
275
- * @param {!Connection} connection The connection to serialize the connected
276
- * blocks of.
277
- * @return {?ConnectionState} An object containing the state of any connected
278
- * shadow block, or any connected real block.
279
- * @param {boolean} doFullSerialization Whether or not to do full serialization.
283
+ * @param connection The connection to serialize the connected blocks of.
284
+ * @return An object containing the state of any connected shadow block, or any
285
+ * connected real block.
286
+ * @param doFullSerialization Whether or not to do full serialization.
280
287
  */
281
- const saveConnection = function(connection, doFullSerialization) {
288
+ function saveConnection(connection: Connection, doFullSerialization: boolean):
289
+ ConnectionState|null {
282
290
  const shadow = connection.getShadowState(true);
283
291
  const child = connection.targetBlock();
284
292
  if (!shadow && !child) {
@@ -292,22 +300,22 @@ const saveConnection = function(connection, doFullSerialization) {
292
300
  state['block'] = save(child, {doFullSerialization});
293
301
  }
294
302
  return state;
295
- };
303
+ }
296
304
 
297
305
  /**
298
306
  * Loads the block represented by the given state into the given workspace.
299
- * @param {!State} state The state of a block to deserialize into the workspace.
300
- * @param {!Workspace} workspace The workspace to add the block to.
301
- * @param {{recordUndo: (boolean|undefined)}=} param1
302
- * recordUndo: If true, events triggered by this function will be undo-able
303
- * by the user. False by default.
304
- * @return {!Block} The block that was just loaded.
307
+ * @param state The state of a block to deserialize into the workspace.
308
+ * @param workspace The workspace to add the block to.
309
+ * @param param1 recordUndo: If true, events triggered by this function will be
310
+ * undo-able by the user. False by default.
311
+ * @return The block that was just loaded.
305
312
  * @alias Blockly.serialization.blocks.append
306
313
  */
307
- const append = function(state, workspace, {recordUndo = false} = {}) {
314
+ export function append(
315
+ state: State, workspace: Workspace,
316
+ {recordUndo = false}: {recordUndo?: boolean} = {}): Block {
308
317
  return appendInternal(state, workspace, {recordUndo});
309
- };
310
- exports.append = append;
318
+ }
311
319
 
312
320
  /**
313
321
  * Loads the block represented by the given state into the given workspace.
@@ -315,25 +323,24 @@ exports.append = append;
315
323
  * external API.
316
324
  * But it is exported so that other places within Blockly can call it directly
317
325
  * with the extra parameters.
318
- * @param {!State} state The state of a block to deserialize into the workspace.
319
- * @param {!Workspace} workspace The workspace to add the block to.
320
- * @param {{parentConnection: (!Connection|undefined), isShadow:
321
- * (boolean|undefined), recordUndo: (boolean|undefined)}=} param1
322
- * parentConnection: If provided, the system will attempt to connect the
323
- * block to this connection after it is created. Undefined by default.
324
- * isShadow: If true, the block will be set to a shadow block after it is
325
- * created. False by default.
326
- * recordUndo: If true, events triggered by this function will be undo-able
327
- * by the user. False by default.
328
- * @return {!Block} The block that was just appended.
326
+ * @param state The state of a block to deserialize into the workspace.
327
+ * @param workspace The workspace to add the block to.
328
+ * @param param1 parentConnection: If provided, the system will attempt to
329
+ * connect the block to this connection after it is created. Undefined by
330
+ * default. isShadow: If true, the block will be set to a shadow block after
331
+ * it is created. False by default. recordUndo: If true, events triggered by
332
+ * this function will be undo-able by the user. False by default.
333
+ * @return The block that was just appended.
329
334
  * @alias Blockly.serialization.blocks.appendInternal
330
- * @package
335
+ * @internal
331
336
  */
332
- const appendInternal = function(state, workspace, {
333
- parentConnection = undefined,
334
- isShadow = false,
335
- recordUndo = false,
336
- } = {}) {
337
+ export function appendInternal(
338
+ state: State, workspace: Workspace,
339
+ {parentConnection = undefined, isShadow = false, recordUndo = false}: {
340
+ parentConnection?: Connection,
341
+ isShadow?: boolean,
342
+ recordUndo?: boolean
343
+ } = {}): Block {
337
344
  const prevRecordUndo = eventUtils.getRecordUndo();
338
345
  eventUtils.setRecordUndo(recordUndo);
339
346
  const existingGroup = eventUtils.getGroup();
@@ -345,14 +352,14 @@ const appendInternal = function(state, workspace, {
345
352
  const block = appendPrivate(state, workspace, {parentConnection, isShadow});
346
353
 
347
354
  eventUtils.enable();
348
- eventUtils.fire(new (eventUtils.get(eventUtils.BLOCK_CREATE))(block));
355
+ eventUtils.fire(new (eventUtils.get(eventUtils.BLOCK_CREATE))!(block));
349
356
  eventUtils.setGroup(existingGroup);
350
357
  eventUtils.setRecordUndo(prevRecordUndo);
351
358
 
352
359
  // Adding connections to the connection db is expensive. This defers that
353
360
  // operation to decrease load time.
354
361
  if (workspace.rendered) {
355
- const blockSvg = /** @type {!BlockSvg} */ (block);
362
+ const blockSvg = block as BlockSvg;
356
363
  setTimeout(() => {
357
364
  if (!blockSvg.disposed) {
358
365
  blockSvg.setConnectionTracking(true);
@@ -361,28 +368,25 @@ const appendInternal = function(state, workspace, {
361
368
  }
362
369
 
363
370
  return block;
364
- };
365
- exports.appendInternal = appendInternal;
371
+ }
366
372
 
367
373
  /**
368
374
  * Loads the block represented by the given state into the given workspace.
369
375
  * This is defined privately so that it can be called recursively without firing
370
376
  * eroneous events. Events (and other things we only want to occur on the top
371
377
  * block) are handled by appendInternal.
372
- * @param {!State} state The state of a block to deserialize into the workspace.
373
- * @param {!Workspace} workspace The workspace to add the block to.
374
- * @param {{parentConnection: (!Connection|undefined),
375
- * isShadow: (boolean|undefined)}=} param1
376
- * parentConnection: If provided, the system will attempt to connect the
377
- * block to this connection after it is created. Undefined by default.
378
- * isShadow: The block will be set to a shadow block after it is created.
379
- * False by default.
380
- * @return {!Block} The block that was just appended.
378
+ * @param state The state of a block to deserialize into the workspace.
379
+ * @param workspace The workspace to add the block to.
380
+ * @param param1 parentConnection: If provided, the system will attempt to
381
+ * connect the block to this connection after it is created. Undefined by
382
+ * default. isShadow: The block will be set to a shadow block after it is
383
+ * created. False by default.
384
+ * @return The block that was just appended.
381
385
  */
382
- const appendPrivate = function(state, workspace, {
383
- parentConnection = undefined,
384
- isShadow = false,
385
- } = {}) {
386
+ function appendPrivate(
387
+ state: State, workspace: Workspace,
388
+ {parentConnection = undefined, isShadow = false}:
389
+ {parentConnection?: Connection, isShadow?: boolean} = {}): Block {
386
390
  if (!state['type']) {
387
391
  throw new MissingBlockType(state);
388
392
  }
@@ -400,15 +404,15 @@ const appendPrivate = function(state, workspace, {
400
404
  initBlock(block, workspace.rendered);
401
405
 
402
406
  return block;
403
- };
407
+ }
404
408
 
405
409
  /**
406
410
  * Applies any coordinate information available on the state object to the
407
411
  * block.
408
- * @param {!Block} block The block to set the position of.
409
- * @param {!State} state The state object to reference.
412
+ * @param block The block to set the position of.
413
+ * @param state The state object to reference.
410
414
  */
411
- const loadCoords = function(block, state) {
415
+ function loadCoords(block: Block, state: State) {
412
416
  let x = state['x'] === undefined ? 0 : state['x'];
413
417
  const y = state['y'] === undefined ? 0 : state['y'];
414
418
 
@@ -416,14 +420,14 @@ const loadCoords = function(block, state) {
416
420
  x = workspace.RTL ? workspace.getWidth() - x : x;
417
421
 
418
422
  block.moveBy(x, y);
419
- };
423
+ }
420
424
 
421
425
  /**
422
426
  * Applies any attribute information available on the state object to the block.
423
- * @param {!Block} block The block to set the attributes of.
424
- * @param {!State} state The state object to reference.
427
+ * @param block The block to set the attributes of.
428
+ * @param state The state object to reference.
425
429
  */
426
- const loadAttributes = function(block, state) {
430
+ function loadAttributes(block: Block, state: State) {
427
431
  if (state['collapsed']) {
428
432
  block.setCollapsed(true);
429
433
  }
@@ -436,33 +440,33 @@ const loadAttributes = function(block, state) {
436
440
  if (state['data'] !== undefined) {
437
441
  block.data = state['data'];
438
442
  }
439
- };
443
+ }
440
444
 
441
445
  /**
442
446
  * Applies any extra state information available on the state object to the
443
447
  * block.
444
- * @param {!Block} block The block to set the extra state of.
445
- * @param {!State} state The state object to reference.
448
+ * @param block The block to set the extra state of.
449
+ * @param state The state object to reference.
446
450
  */
447
- const loadExtraState = function(block, state) {
451
+ function loadExtraState(block: Block, state: State) {
448
452
  if (!state['extraState']) {
449
453
  return;
450
454
  }
451
455
  if (block.loadExtraState) {
452
456
  block.loadExtraState(state['extraState']);
453
- } else {
457
+ } else if (block.domToMutation) {
454
458
  block.domToMutation(Xml.textToDom(state['extraState']));
455
459
  }
456
- };
460
+ }
457
461
 
458
462
  /**
459
463
  * Attempts to connect the block to the parent connection, if it exists.
460
- * @param {(!Connection|undefined)} parentConnection The parent connection to
461
- * try to connect the block to.
462
- * @param {!Block} child The block to try to connect to the parent.
463
- * @param {!State} state The state which defines the given block
464
+ * @param parentConnection The parent connection to try to connect the block to.
465
+ * @param child The block to try to connect to the parent.
466
+ * @param state The state which defines the given block
464
467
  */
465
- const tryToConnectParent = function(parentConnection, child, state) {
468
+ function tryToConnectParent(
469
+ parentConnection: Connection|undefined, child: Block, state: State) {
466
470
  if (!parentConnection) {
467
471
  return;
468
472
  }
@@ -498,15 +502,15 @@ const tryToConnectParent = function(parentConnection, child, state) {
498
502
  'previous connection',
499
503
  child, state);
500
504
  }
501
- };
505
+ }
502
506
 
503
507
  /**
504
508
  * Applies icon state to the icons on the block, based on the given state
505
509
  * object.
506
- * @param {!Block} block The block to set the icon state of.
507
- * @param {!State} state The state object to reference.
510
+ * @param block The block to set the icon state of.
511
+ * @param state The state object to reference.
508
512
  */
509
- const loadIcons = function(block, state) {
513
+ function loadIcons(block: Block, state: State) {
510
514
  if (!state['icons']) {
511
515
  return;
512
516
  }
@@ -523,18 +527,18 @@ const loadIcons = function(block, state) {
523
527
  }
524
528
  if (comment['pinned'] && block.rendered && !block.isInFlyout) {
525
529
  // Give the block a chance to be positioned and rendered before showing.
526
- const blockSvg = /** @type {!BlockSvg} */ (block);
527
- setTimeout(() => blockSvg.getCommentIcon().setVisible(true), 1);
530
+ const blockSvg = block as BlockSvg;
531
+ setTimeout(() => blockSvg.getCommentIcon()!.setVisible(true), 1);
528
532
  }
529
533
  }
530
- };
534
+ }
531
535
 
532
536
  /**
533
537
  * Applies any field information available on the state object to the block.
534
- * @param {!Block} block The block to set the field state of.
535
- * @param {!State} state The state object to reference.
538
+ * @param block The block to set the field state of.
539
+ * @param state The state object to reference.
536
540
  */
537
- const loadFields = function(block, state) {
541
+ function loadFields(block: Block, state: State) {
538
542
  if (!state['fields']) {
539
543
  return;
540
544
  }
@@ -550,15 +554,15 @@ const loadFields = function(block, state) {
550
554
  }
551
555
  field.loadState(fieldState);
552
556
  }
553
- };
557
+ }
554
558
 
555
559
  /**
556
560
  * Creates any child blocks (attached to inputs) defined by the given state
557
561
  * and attaches them to the given block.
558
- * @param {!Block} block The block to attach input blocks to.
559
- * @param {!State} state The state object to reference.
562
+ * @param block The block to attach input blocks to.
563
+ * @param state The state object to reference.
560
564
  */
561
- const loadInputBlocks = function(block, state) {
565
+ function loadInputBlocks(block: Block, state: State) {
562
566
  if (!state['inputs']) {
563
567
  return;
564
568
  }
@@ -571,15 +575,15 @@ const loadInputBlocks = function(block, state) {
571
575
  }
572
576
  loadConnection(input.connection, state['inputs'][inputName]);
573
577
  }
574
- };
578
+ }
575
579
 
576
580
  /**
577
581
  * Creates any next blocks defined by the given state and attaches them to the
578
582
  * given block.
579
- * @param {!Block} block The block to attach next blocks to.
580
- * @param {!State} state The state object to reference.
583
+ * @param block The block to attach next blocks to.
584
+ * @param state The state object to reference.
581
585
  */
582
- const loadNextBlocks = function(block, state) {
586
+ function loadNextBlocks(block: Block, state: State) {
583
587
  if (!state['next']) {
584
588
  return;
585
589
  }
@@ -587,17 +591,16 @@ const loadNextBlocks = function(block, state) {
587
591
  throw new MissingConnection('next', block, state);
588
592
  }
589
593
  loadConnection(block.nextConnection, state['next']);
590
- };
591
-
594
+ }
592
595
  /**
593
596
  * Applies the state defined by connectionState to the given connection, ie
594
597
  * assigns shadows and attaches child blocks.
595
- * @param {!Connection} connection The connection to deserialize the
596
- * connected blocks of.
597
- * @param {!ConnectionState} connectionState The object containing the state of
598
- * any connected shadow block, or any connected real block.
598
+ * @param connection The connection to deserialize the connected blocks of.
599
+ * @param connectionState The object containing the state of any connected
600
+ * shadow block, or any connected real block.
599
601
  */
600
- const loadConnection = function(connection, connectionState) {
602
+ function loadConnection(
603
+ connection: Connection, connectionState: ConnectionState) {
601
604
  if (connectionState['shadow']) {
602
605
  connection.setShadowState(connectionState['shadow']);
603
606
  }
@@ -606,53 +609,57 @@ const loadConnection = function(connection, connectionState) {
606
609
  connectionState['block'], connection.getSourceBlock().workspace,
607
610
  {parentConnection: connection});
608
611
  }
609
- };
612
+ }
610
613
 
611
614
  // TODO(#5146): Remove this from the serialization system.
612
615
  /**
613
616
  * Initializes the give block, eg init the model, inits the svg, renders, etc.
614
- * @param {!Block} block The block to initialize.
615
- * @param {boolean} rendered Whether the block is a rendered or headless block.
617
+ * @param block The block to initialize.
618
+ * @param rendered Whether the block is a rendered or headless block.
616
619
  */
617
- const initBlock = function(block, rendered) {
620
+ function initBlock(block: Block, rendered: boolean) {
618
621
  if (rendered) {
619
- const blockSvg = /** @type {!BlockSvg} */ (block);
622
+ const blockSvg = block as BlockSvg;
620
623
  // Adding connections to the connection db is expensive. This defers that
621
624
  // operation to decrease load time.
622
625
  blockSvg.setConnectionTracking(false);
623
626
 
624
627
  blockSvg.initSvg();
625
628
  blockSvg.render(false);
629
+ // fixes #6076 JSO deserialization doesn't
630
+ // set .iconXY_ property so here it will be set
631
+ const icons = blockSvg.getIcons();
632
+ for (let i = 0; i < icons.length; i++) {
633
+ icons[i].computeIconLocation();
634
+ }
626
635
  } else {
627
636
  block.initModel();
628
637
  }
629
- };
638
+ }
630
639
 
631
640
  // Alias to disambiguate saving within the serializer.
632
641
  const saveBlock = save;
633
642
 
634
643
  /**
635
644
  * Serializer for saving and loading block state.
636
- * @implements {ISerializer}
637
645
  * @alias Blockly.serialization.blocks.BlockSerializer
638
646
  */
639
- class BlockSerializer {
647
+ class BlockSerializer implements ISerializer {
648
+ priority: number;
649
+
640
650
  /* eslint-disable-next-line require-jsdoc */
641
651
  constructor() {
642
- /**
643
- * The priority for deserializing blocks.
644
- * @type {number}
645
- */
652
+ /** The priority for deserializing blocks. */
646
653
  this.priority = priorities.BLOCKS;
647
654
  }
648
655
 
649
656
  /**
650
657
  * Serializes the blocks of the given workspace.
651
- * @param {!Workspace} workspace The workspace to save the blocks of.
652
- * @return {?{languageVersion: number, blocks:!Array<!State>}} The state of
653
- * the workspace's blocks, or null if there are no blocks.
658
+ * @param workspace The workspace to save the blocks of.
659
+ * @return The state of the workspace's blocks, or null if there are no
660
+ * blocks.
654
661
  */
655
- save(workspace) {
662
+ save(workspace: Workspace): {languageVersion: number, blocks: State[]}|null {
656
663
  const blockStates = [];
657
664
  for (const block of workspace.getTopBlocks(false)) {
658
665
  const state =
@@ -673,11 +680,11 @@ class BlockSerializer {
673
680
  /**
674
681
  * Deserializes the blocks defined by the given state into the given
675
682
  * workspace.
676
- * @param {{languageVersion: number, blocks:!Array<!State>}} state The state
677
- * of the blocks to deserialize.
678
- * @param {!Workspace} workspace The workspace to deserialize into.
683
+ * @param state The state of the blocks to deserialize.
684
+ * @param workspace The workspace to deserialize into.
679
685
  */
680
- load(state, workspace) {
686
+ load(
687
+ state: {languageVersion: number, blocks: State[]}, workspace: Workspace) {
681
688
  const blockStates = state['blocks'];
682
689
  for (const state of blockStates) {
683
690
  append(state, workspace, {recordUndo: eventUtils.getRecordUndo()});
@@ -686,9 +693,9 @@ class BlockSerializer {
686
693
 
687
694
  /**
688
695
  * Disposes of any blocks that exist on the workspace.
689
- * @param {!Workspace} workspace The workspace to clear the blocks of.
696
+ * @param workspace The workspace to clear the blocks of.
690
697
  */
691
- clear(workspace) {
698
+ clear(workspace: Workspace) {
692
699
  // Cannot use workspace.clear() because that also removes variables.
693
700
  for (const block of workspace.getTopBlocks(false)) {
694
701
  block.dispose(false);