blockly 8.0.5 → 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 (736) hide show
  1. package/blockly.min.js +2002 -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 +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/package.json +5 -5
  609. package/php.d.ts +0 -3
  610. package/php_compressed.js +322 -93
  611. package/php_compressed.js.map +1 -1
  612. package/python.d.ts +0 -3
  613. package/python_compressed.js +237 -90
  614. package/python_compressed.js.map +1 -1
  615. package/blockly.d.ts +0 -26127
  616. package/core/blockly_options.js +0 -28
  617. package/core/bubble_dragger.js +0 -298
  618. package/core/clipboard.js +0 -80
  619. package/core/component_manager.js +0 -263
  620. package/core/contextmenu_items.js +0 -651
  621. package/core/contextmenu_registry.js +0 -178
  622. package/core/delete_area.js +0 -87
  623. package/core/dialog.js +0 -107
  624. package/core/drag_target.js +0 -98
  625. package/core/events/events.js +0 -147
  626. package/core/events/events_abstract.js +0 -133
  627. package/core/events/events_block_base.js +0 -70
  628. package/core/events/events_block_drag.js +0 -89
  629. package/core/events/events_bubble_open.js +0 -90
  630. package/core/events/events_comment_base.js +0 -121
  631. package/core/events/events_marker_move.js +0 -110
  632. package/core/events/events_selected.js +0 -83
  633. package/core/events/events_toolbox_item_select.js +0 -84
  634. package/core/events/events_trashcan_open.js +0 -73
  635. package/core/events/events_var_base.js +0 -70
  636. package/core/events/events_viewport.js +0 -107
  637. package/core/events/workspace_events.js +0 -93
  638. package/core/field_angle.js +0 -591
  639. package/core/field_checkbox.js +0 -255
  640. package/core/field_colour.js +0 -717
  641. package/core/field_image.js +0 -304
  642. package/core/field_label.js +0 -149
  643. package/core/field_label_serializable.js +0 -80
  644. package/core/field_textinput.js +0 -619
  645. package/core/flyout_button.js +0 -356
  646. package/core/grid.js +0 -226
  647. package/core/icon.js +0 -225
  648. package/core/input.js +0 -335
  649. package/core/interfaces/i_ast_node_location_svg.js +0 -45
  650. package/core/interfaces/i_ast_node_location_with_block.js +0 -41
  651. package/core/interfaces/i_autohideable.js +0 -40
  652. package/core/interfaces/i_block_dragger.js +0 -66
  653. package/core/interfaces/i_bounded_element.js +0 -45
  654. package/core/interfaces/i_bubble.js +0 -95
  655. package/core/interfaces/i_collapsible_toolbox_item.js +0 -53
  656. package/core/interfaces/i_connection_checker.js +0 -104
  657. package/core/interfaces/i_contextmenu.js +0 -32
  658. package/core/interfaces/i_copyable.js +0 -49
  659. package/core/interfaces/i_delete_area.js +0 -50
  660. package/core/interfaces/i_drag_target.js +0 -88
  661. package/core/interfaces/i_flyout.js +0 -201
  662. package/core/interfaces/i_keyboard_accessible.js +0 -38
  663. package/core/interfaces/i_metrics_manager.js +0 -154
  664. package/core/interfaces/i_positionable.js +0 -51
  665. package/core/interfaces/i_selectable.js +0 -51
  666. package/core/interfaces/i_selectable_toolbox_item.js +0 -73
  667. package/core/interfaces/i_serializer.js +0 -77
  668. package/core/interfaces/i_styleable.js +0 -39
  669. package/core/interfaces/i_toolbox.js +0 -142
  670. package/core/interfaces/i_toolbox_item.js +0 -85
  671. package/core/marker_manager.js +0 -213
  672. package/core/menuitem.js +0 -292
  673. package/core/names.js +0 -293
  674. package/core/registry.js +0 -384
  675. package/core/renderers/common/block_rendering.js +0 -170
  676. package/core/renderers/common/constants.js +0 -1250
  677. package/core/renderers/common/i_path_object.js +0 -162
  678. package/core/renderers/common/marker_svg.js +0 -721
  679. package/core/renderers/common/path_object.js +0 -283
  680. package/core/renderers/common/renderer.js +0 -305
  681. package/core/renderers/geras/constants.js +0 -73
  682. package/core/renderers/geras/geras.js +0 -36
  683. package/core/renderers/geras/measurables/inline_input.js +0 -58
  684. package/core/renderers/geras/measurables/statement_input.js +0 -57
  685. package/core/renderers/geras/renderer.js +0 -149
  686. package/core/renderers/measurables/base.js +0 -64
  687. package/core/renderers/measurables/bottom_row.js +0 -138
  688. package/core/renderers/measurables/connection.js +0 -56
  689. package/core/renderers/measurables/external_value_input.js +0 -70
  690. package/core/renderers/measurables/field.js +0 -71
  691. package/core/renderers/measurables/in_row_spacer.js +0 -47
  692. package/core/renderers/measurables/input_connection.js +0 -75
  693. package/core/renderers/measurables/next_connection.js +0 -50
  694. package/core/renderers/measurables/output_connection.js +0 -61
  695. package/core/renderers/measurables/previous_connection.js +0 -50
  696. package/core/renderers/measurables/round_corner.js +0 -52
  697. package/core/renderers/measurables/row.js +0 -247
  698. package/core/renderers/measurables/spacer_row.js +0 -69
  699. package/core/renderers/measurables/square_corner.js +0 -50
  700. package/core/renderers/measurables/top_row.js +0 -143
  701. package/core/renderers/measurables/types.js +0 -353
  702. package/core/renderers/minimalist/drawer.js +0 -42
  703. package/core/renderers/minimalist/info.js +0 -54
  704. package/core/renderers/minimalist/minimalist.js +0 -26
  705. package/core/renderers/minimalist/renderer.js +0 -80
  706. package/core/renderers/thrasos/renderer.js +0 -53
  707. package/core/renderers/thrasos/thrasos.js +0 -22
  708. package/core/renderers/zelos/marker_svg.js +0 -179
  709. package/core/renderers/zelos/measurables/bottom_row.js +0 -66
  710. package/core/renderers/zelos/measurables/row_elements.js +0 -46
  711. package/core/renderers/zelos/path_object.js +0 -247
  712. package/core/renderers/zelos/renderer.js +0 -147
  713. package/core/renderers/zelos/zelos.js +0 -38
  714. package/core/serialization/exceptions.js +0 -144
  715. package/core/shortcut_registry.js +0 -366
  716. package/core/theme/themes.js +0 -23
  717. package/core/theme.js +0 -228
  718. package/core/theme_manager.js +0 -211
  719. package/core/toolbox/category.js +0 -751
  720. package/core/toolbox/collapsible_category.js +0 -311
  721. package/core/toolbox/separator.js +0 -133
  722. package/core/toolbox/toolbox_item.js +0 -173
  723. package/core/touch.js +0 -285
  724. package/core/utils/coordinate.js +0 -138
  725. package/core/utils/global.js +0 -41
  726. package/core/utils/keycodes.js +0 -172
  727. package/core/utils/metrics.js +0 -154
  728. package/core/utils/svg.js +0 -186
  729. package/core/utils/toolbox.js +0 -459
  730. package/core/utils/useragent.js +0 -197
  731. package/core/utils.js +0 -383
  732. package/core/variable_model.js +0 -96
  733. package/core/widgetdiv.js +0 -290
  734. package/core/workspace.js +0 -836
  735. package/core/workspace_comment.js +0 -400
  736. package/core/workspace_dragger.js +0 -115
@@ -7,174 +7,114 @@
7
7
  /**
8
8
  * @fileoverview Object representing a code comment on a rendered workspace.
9
9
  */
10
- 'use strict';
11
10
 
12
11
  /**
13
12
  * Object representing a code comment on a rendered workspace.
14
13
  * @class
15
14
  */
16
- goog.module('Blockly.WorkspaceCommentSvg');
17
-
18
- const ContextMenu = goog.require('Blockly.ContextMenu');
19
- const Css = goog.require('Blockly.Css');
20
- const Touch = goog.require('Blockly.Touch');
21
- const browserEvents = goog.require('Blockly.browserEvents');
22
- const common = goog.require('Blockly.common');
23
- const dom = goog.require('Blockly.utils.dom');
24
- const eventUtils = goog.require('Blockly.Events.utils');
25
- const svgMath = goog.require('Blockly.utils.svgMath');
26
- /* eslint-disable-next-line no-unused-vars */
27
- const {BlockDragSurfaceSvg} = goog.requireType('Blockly.BlockDragSurfaceSvg');
28
- /* eslint-disable-next-line no-unused-vars */
29
- const {CommentMove} = goog.require('Blockly.Events.CommentMove');
30
- const {Coordinate} = goog.require('Blockly.utils.Coordinate');
31
- /* eslint-disable-next-line no-unused-vars */
32
- const {IBoundedElement} = goog.require('Blockly.IBoundedElement');
33
- /* eslint-disable-next-line no-unused-vars */
34
- const {IBubble} = goog.require('Blockly.IBubble');
35
- /* eslint-disable-next-line no-unused-vars */
36
- const {ICopyable} = goog.require('Blockly.ICopyable');
37
- const {Rect} = goog.require('Blockly.utils.Rect');
38
- const {Svg} = goog.require('Blockly.utils.Svg');
39
- const {WorkspaceComment} = goog.require('Blockly.WorkspaceComment');
40
- /* eslint-disable-next-line no-unused-vars */
41
- const {WorkspaceSvg} = goog.requireType('Blockly.WorkspaceSvg');
42
- /** @suppress {extraRequire} */
43
- goog.require('Blockly.Events.CommentCreate');
44
- /** @suppress {extraRequire} */
45
- goog.require('Blockly.Events.CommentDelete');
46
- /** @suppress {extraRequire} */
47
- goog.require('Blockly.Events.Selected');
48
-
49
-
50
- /**
51
- * Size of the resize icon.
52
- * @type {number}
53
- * @const
54
- */
15
+ import * as goog from '../closure/goog/goog.js';
16
+ goog.declareModuleId('Blockly.WorkspaceCommentSvg');
17
+
18
+ // Unused import preserved for side-effects. Remove if unneeded.
19
+ // import './events/events_comment_create.js';
20
+ // Unused import preserved for side-effects. Remove if unneeded.
21
+ // import './events/events_comment_delete.js';
22
+ // Unused import preserved for side-effects. Remove if unneeded.
23
+ import './events/events_selected.js';
24
+
25
+ import type {BlockDragSurfaceSvg} from './block_drag_surface.js';
26
+ import * as browserEvents from './browser_events.js';
27
+ import * as common from './common.js';
28
+ // import * as ContextMenu from './contextmenu.js';
29
+ import * as Css from './css.js';
30
+ import type {CommentMove} from './events/events_comment_move.js';
31
+ import * as eventUtils from './events/utils.js';
32
+ import type {IBoundedElement} from './interfaces/i_bounded_element.js';
33
+ import type {IBubble} from './interfaces/i_bubble.js';
34
+ import type {CopyData, ICopyable} from './interfaces/i_copyable.js';
35
+ import * as Touch from './touch.js';
36
+ import {Coordinate} from './utils/coordinate.js';
37
+ import * as dom from './utils/dom.js';
38
+ import {Rect} from './utils/rect.js';
39
+ import {Svg} from './utils/svg.js';
40
+ import * as svgMath from './utils/svg_math.js';
41
+ import {WorkspaceComment} from './workspace_comment.js';
42
+ import type {WorkspaceSvg} from './workspace_svg.js';
43
+
44
+
45
+ /** Size of the resize icon. */
55
46
  const RESIZE_SIZE = 8;
56
47
 
57
- /**
58
- * Radius of the border around the comment.
59
- * @type {number}
60
- * @const
61
- */
48
+ /** Radius of the border around the comment. */
62
49
  const BORDER_RADIUS = 3;
63
50
 
64
- /**
65
- * Offset from the foreignobject edge to the textarea edge.
66
- * @type {number}
67
- * @const
68
- */
51
+ /** Offset from the foreignobject edge to the textarea edge. */
69
52
  const TEXTAREA_OFFSET = 2;
70
53
 
71
54
  /**
72
55
  * Class for a workspace comment's SVG representation.
73
- * @extends {WorkspaceComment}
74
- * @implements {IBoundedElement}
75
- * @implements {IBubble}
76
- * @implements {ICopyable}
77
56
  * @alias Blockly.WorkspaceCommentSvg
78
57
  */
79
- class WorkspaceCommentSvg extends WorkspaceComment {
58
+ export class WorkspaceCommentSvg extends WorkspaceComment implements
59
+ IBoundedElement, IBubble, ICopyable {
80
60
  /**
81
- * @param {!WorkspaceSvg} workspace The block's workspace.
82
- * @param {string} content The content of this workspace comment.
83
- * @param {number} height Height of the comment.
84
- * @param {number} width Width of the comment.
85
- * @param {string=} opt_id Optional ID. Use this ID if provided, otherwise
86
- * create a new ID.
61
+ * The width and height to use to size a workspace comment when it is first
62
+ * added, before it has been edited by the user.
63
+ * @internal
87
64
  */
88
- constructor(workspace, content, height, width, opt_id) {
89
- super(workspace, content, height, width, opt_id);
90
- /**
91
- * @type {!WorkspaceSvg}
92
- */
93
- this.workspace;
65
+ static DEFAULT_SIZE = 100;
94
66
 
95
- /**
96
- * Mouse up event data.
97
- * @type {?browserEvents.Data}
98
- * @private
99
- */
100
- this.onMouseUpWrapper_ = null;
67
+ /** Offset from the top to make room for a top bar. */
68
+ private static readonly TOP_OFFSET = 10;
69
+ override workspace: WorkspaceSvg;
101
70
 
102
- /**
103
- * Mouse move event data.
104
- * @type {?browserEvents.Data}
105
- * @private
106
- */
107
- this.onMouseMoveWrapper_ = null;
71
+ /** Mouse up event data. */
72
+ private onMouseUpWrapper_: browserEvents.Data|null = null;
108
73
 
109
- /**
110
- * Whether event handlers have been initialized.
111
- * @type {boolean}
112
- * @private
113
- */
114
- this.eventsInit_ = false;
74
+ /** Mouse move event data. */
75
+ private onMouseMoveWrapper_: browserEvents.Data|null = null;
115
76
 
116
- /**
117
- * @type {?Element}
118
- * @private
119
- */
120
- this.textarea_ = null;
77
+ /** Whether event handlers have been initialized. */
78
+ private eventsInit_ = false;
79
+ private textarea_: HTMLTextAreaElement|null = null;
121
80
 
122
- /**
123
- * @type {?SVGRectElement}
124
- * @private
125
- */
126
- this.svgRectTarget_ = null;
81
+ private svgRectTarget_: SVGRectElement|null = null;
127
82
 
128
- /**
129
- * @type {?SVGRectElement}
130
- * @private
131
- */
132
- this.svgHandleTarget_ = null;
83
+ private svgHandleTarget_: SVGRectElement|null = null;
133
84
 
134
- /**
135
- * @type {?SVGForeignObjectElement}
136
- * @private
137
- */
138
- this.foreignObject_ = null;
85
+ private foreignObject_: SVGForeignObjectElement|null = null;
139
86
 
140
- /**
141
- * @type {?SVGGElement}
142
- * @private
143
- */
144
- this.resizeGroup_ = null;
87
+ private resizeGroup_: SVGGElement|null = null;
145
88
 
146
- /**
147
- * @type {?SVGGElement}
148
- * @private
149
- */
150
- this.deleteGroup_ = null;
89
+ private deleteGroup_: SVGGElement|null = null;
151
90
 
152
- /**
153
- * @type {?SVGCircleElement}
154
- * @private
155
- */
156
- this.deleteIconBorder_ = null;
91
+ private deleteIconBorder_: SVGCircleElement|null = null;
157
92
 
158
- /**
159
- * @type {boolean}
160
- * @private
161
- */
162
- this.focused_ = false;
93
+ private focused_ = false;
94
+ private autoLayout_ = false;
95
+ // Create core elements for the block.
96
+ private readonly svgGroup_: SVGElement;
97
+ svgRect_: AnyDuringMigration;
163
98
 
164
- /**
165
- * @type {boolean}
166
- * @private
167
- */
168
- this.autoLayout_ = false;
99
+ /** Whether the comment is rendered onscreen and is a part of the DOM. */
100
+ private rendered_ = false;
101
+ private readonly useDragSurface_: boolean;
169
102
 
170
- // Create core elements for the block.
171
- /**
172
- * @type {!SVGElement}
173
- * @private
174
- */
175
- this.svgGroup_ =
176
- dom.createSvgElement(Svg.G, {'class': 'blocklyComment'}, null);
177
- this.svgGroup_.translate_ = '';
103
+ /**
104
+ * @param workspace The block's workspace.
105
+ * @param content The content of this workspace comment.
106
+ * @param height Height of the comment.
107
+ * @param width Width of the comment.
108
+ * @param opt_id Optional ID. Use this ID if provided, otherwise create a new
109
+ * ID.
110
+ */
111
+ constructor(
112
+ workspace: WorkspaceSvg, content: string, height: number, width: number,
113
+ opt_id?: string) {
114
+ super(workspace, content, height, width, opt_id);
115
+ this.svgGroup_ = dom.createSvgElement(Svg.G, {'class': 'blocklyComment'});
116
+ (this.svgGroup_ as AnyDuringMigration).translate_ = '';
117
+ this.workspace = workspace;
178
118
 
179
119
  this.svgRect_ = dom.createSvgElement(Svg.RECT, {
180
120
  'class': 'blocklyCommentRect',
@@ -185,18 +125,9 @@ class WorkspaceCommentSvg extends WorkspaceComment {
185
125
  });
186
126
  this.svgGroup_.appendChild(this.svgRect_);
187
127
 
188
- /**
189
- * Whether the comment is rendered onscreen and is a part of the DOM.
190
- * @type {boolean}
191
- * @private
192
- */
193
- this.rendered_ = false;
194
-
195
128
  /**
196
129
  * Whether to move the comment to the drag surface when it is dragged.
197
130
  * True if it should move, false if it should be translated directly.
198
- * @type {boolean}
199
- * @private
200
131
  */
201
132
  this.useDragSurface_ =
202
133
  svgMath.is3dSupported() && !!workspace.getBlockDragSurface();
@@ -206,9 +137,9 @@ class WorkspaceCommentSvg extends WorkspaceComment {
206
137
 
207
138
  /**
208
139
  * Dispose of this comment.
209
- * @package
140
+ * @internal
210
141
  */
211
- dispose() {
142
+ override dispose() {
212
143
  if (this.disposed_) {
213
144
  return;
214
145
  }
@@ -219,7 +150,7 @@ class WorkspaceCommentSvg extends WorkspaceComment {
219
150
  }
220
151
 
221
152
  if (eventUtils.isEnabled()) {
222
- eventUtils.fire(new (eventUtils.get(eventUtils.COMMENT_DELETE))(this));
153
+ eventUtils.fire(new (eventUtils.get(eventUtils.COMMENT_DELETE))!(this));
223
154
  }
224
155
 
225
156
  dom.removeNode(this.svgGroup_);
@@ -235,22 +166,20 @@ class WorkspaceCommentSvg extends WorkspaceComment {
235
166
  * Create and initialize the SVG representation of a workspace comment.
236
167
  * May be called more than once.
237
168
  *
238
- * @param {boolean=} opt_noSelect Text inside text area will be selected if
239
- * false
240
- *
241
- * @package
169
+ * @param opt_noSelect Text inside text area will be selected if false
170
+ * @internal
242
171
  */
243
- initSvg(opt_noSelect) {
172
+ initSvg(opt_noSelect?: boolean) {
244
173
  if (!this.workspace.rendered) {
245
174
  throw TypeError('Workspace is headless.');
246
175
  }
247
176
  if (!this.workspace.options.readOnly && !this.eventsInit_) {
248
177
  browserEvents.conditionalBind(
249
- /** @type {!SVGRectElement} */ (this.svgRectTarget_), 'mousedown',
250
- this, this.pathMouseDown_);
178
+ this.svgRectTarget_ as SVGRectElement, 'mousedown', this,
179
+ this.pathMouseDown_);
251
180
  browserEvents.conditionalBind(
252
- /** @type {!SVGRectElement} */ (this.svgHandleTarget_), 'mousedown',
253
- this, this.pathMouseDown_);
181
+ this.svgHandleTarget_ as SVGRectElement, 'mousedown', this,
182
+ this.pathMouseDown_);
254
183
  }
255
184
  this.eventsInit_ = true;
256
185
 
@@ -266,10 +195,9 @@ class WorkspaceCommentSvg extends WorkspaceComment {
266
195
 
267
196
  /**
268
197
  * Handle a mouse-down on an SVG comment.
269
- * @param {!Event} e Mouse down event or touch start event.
270
- * @private
198
+ * @param e Mouse down event or touch start event.
271
199
  */
272
- pathMouseDown_(e) {
200
+ private pathMouseDown_(e: Event) {
273
201
  const gesture = this.workspace.getGesture(e);
274
202
  if (gesture) {
275
203
  gesture.handleBubbleStart(e, this);
@@ -278,28 +206,18 @@ class WorkspaceCommentSvg extends WorkspaceComment {
278
206
 
279
207
  /**
280
208
  * Show the context menu for this workspace comment.
281
- * @param {!Event} e Mouse event.
282
- * @package
209
+ * @param e Mouse event.
210
+ * @internal
283
211
  */
284
- showContextMenu(e) {
285
- if (this.workspace.options.readOnly) {
286
- return;
287
- }
288
- // Save the current workspace comment in a variable for use in closures.
289
- const comment = this;
290
- const menuOptions = [];
291
-
292
- if (this.isDeletable() && this.isMovable()) {
293
- menuOptions.push(ContextMenu.commentDuplicateOption(comment));
294
- menuOptions.push(ContextMenu.commentDeleteOption(comment));
295
- }
296
-
297
- ContextMenu.show(e, menuOptions, this.RTL);
212
+ showContextMenu(e: Event) {
213
+ throw new Error(
214
+ 'The implementation of showContextMenu should be ' +
215
+ 'monkey-patched in by blockly.ts');
298
216
  }
299
217
 
300
218
  /**
301
219
  * Select this comment. Highlight it visually.
302
- * @package
220
+ * @internal
303
221
  */
304
222
  select() {
305
223
  if (common.getSelected() === this) {
@@ -307,17 +225,17 @@ class WorkspaceCommentSvg extends WorkspaceComment {
307
225
  }
308
226
  let oldId = null;
309
227
  if (common.getSelected()) {
310
- oldId = common.getSelected().id;
228
+ oldId = common.getSelected()!.id;
311
229
  // Unselect any previously selected block.
312
230
  eventUtils.disable();
313
231
  try {
314
- common.getSelected().unselect();
232
+ common.getSelected()!.unselect();
315
233
  } finally {
316
234
  eventUtils.enable();
317
235
  }
318
236
  }
319
- const event = new (eventUtils.get(eventUtils.SELECTED))(
320
- oldId, this.id, this.workspace.id);
237
+ const event = new (eventUtils.get(eventUtils.SELECTED))!
238
+ (oldId, this.id, this.workspace.id);
321
239
  eventUtils.fire(event);
322
240
  common.setSelected(this);
323
241
  this.addSelect();
@@ -325,14 +243,14 @@ class WorkspaceCommentSvg extends WorkspaceComment {
325
243
 
326
244
  /**
327
245
  * Unselect this comment. Remove its highlighting.
328
- * @package
246
+ * @internal
329
247
  */
330
248
  unselect() {
331
249
  if (common.getSelected() !== this) {
332
250
  return;
333
251
  }
334
- const event = new (eventUtils.get(eventUtils.SELECTED))(
335
- this.id, null, this.workspace.id);
252
+ const event = new (eventUtils.get(eventUtils.SELECTED))!
253
+ (this.id, null, this.workspace.id);
336
254
  eventUtils.fire(event);
337
255
  common.setSelected(null);
338
256
  this.removeSelect();
@@ -341,40 +259,36 @@ class WorkspaceCommentSvg extends WorkspaceComment {
341
259
 
342
260
  /**
343
261
  * Select this comment. Highlight it visually.
344
- * @package
262
+ * @internal
345
263
  */
346
264
  addSelect() {
347
- dom.addClass(
348
- /** @type {!Element} */ (this.svgGroup_), 'blocklySelected');
265
+ dom.addClass(this.svgGroup_ as Element, 'blocklySelected');
349
266
  this.setFocus();
350
267
  }
351
268
 
352
269
  /**
353
270
  * Unselect this comment. Remove its highlighting.
354
- * @package
271
+ * @internal
355
272
  */
356
273
  removeSelect() {
357
- dom.removeClass(
358
- /** @type {!Element} */ (this.svgGroup_), 'blocklySelected');
274
+ dom.removeClass(this.svgGroup_ as Element, 'blocklySelected');
359
275
  this.blurFocus();
360
276
  }
361
277
 
362
278
  /**
363
279
  * Focus this comment. Highlight it visually.
364
- * @package
280
+ * @internal
365
281
  */
366
282
  addFocus() {
367
- dom.addClass(
368
- /** @type {!Element} */ (this.svgGroup_), 'blocklyFocused');
283
+ dom.addClass(this.svgGroup_ as Element, 'blocklyFocused');
369
284
  }
370
285
 
371
286
  /**
372
287
  * Unfocus this comment. Remove its highlighting.
373
- * @package
288
+ * @internal
374
289
  */
375
290
  removeFocus() {
376
- dom.removeClass(
377
- /** @type {!Element} */ (this.svgGroup_), 'blocklyFocused');
291
+ dom.removeClass(this.svgGroup_ as Element, 'blocklyFocused');
378
292
  }
379
293
 
380
294
  /**
@@ -383,36 +297,37 @@ class WorkspaceCommentSvg extends WorkspaceComment {
383
297
  * If the comment is on the workspace, (0, 0) is the origin of the workspace
384
298
  * coordinate system.
385
299
  * This does not change with workspace scale.
386
- * @return {!Coordinate} Object with .x and .y properties in
387
- * workspace coordinates.
388
- * @package
300
+ * @return Object with .x and .y properties in workspace coordinates.
301
+ * @internal
389
302
  */
390
- getRelativeToSurfaceXY() {
303
+ getRelativeToSurfaceXY(): Coordinate {
391
304
  let x = 0;
392
305
  let y = 0;
393
306
 
394
307
  const dragSurfaceGroup = this.useDragSurface_ ?
395
- this.workspace.getBlockDragSurface().getGroup() :
308
+ this.workspace.getBlockDragSurface()!.getGroup() :
396
309
  null;
397
310
 
398
311
  let element = this.getSvgRoot();
399
312
  if (element) {
400
313
  do {
401
314
  // Loop through this comment and every parent.
402
- const xy = svgMath.getRelativeXY(/** @type {!Element} */ (element));
315
+ const xy = svgMath.getRelativeXY(element as Element);
403
316
  x += xy.x;
404
317
  y += xy.y;
405
318
  // If this element is the current element on the drag surface, include
406
319
  // the translation of the drag surface itself.
407
320
  if (this.useDragSurface_ &&
408
- this.workspace.getBlockDragSurface().getCurrentBlock() ===
321
+ this.workspace.getBlockDragSurface()!.getCurrentBlock() ===
409
322
  element) {
410
323
  const surfaceTranslation =
411
- this.workspace.getBlockDragSurface().getSurfaceTranslation();
324
+ this.workspace.getBlockDragSurface()!.getSurfaceTranslation();
412
325
  x += surfaceTranslation.x;
413
326
  y += surfaceTranslation.y;
414
327
  }
415
- element = element.parentNode;
328
+ // AnyDuringMigration because: Type 'ParentNode | null' is not
329
+ // assignable to type 'SVGElement'.
330
+ element = element.parentNode as AnyDuringMigration;
416
331
  } while (element && element !== this.workspace.getBubbleCanvas() &&
417
332
  element !== dragSurfaceGroup);
418
333
  }
@@ -422,13 +337,13 @@ class WorkspaceCommentSvg extends WorkspaceComment {
422
337
 
423
338
  /**
424
339
  * Move a comment by a relative offset.
425
- * @param {number} dx Horizontal offset, in workspace units.
426
- * @param {number} dy Vertical offset, in workspace units.
427
- * @package
340
+ * @param dx Horizontal offset, in workspace units.
341
+ * @param dy Vertical offset, in workspace units.
342
+ * @internal
428
343
  */
429
- moveBy(dx, dy) {
430
- const event = /** @type {!CommentMove} */ (
431
- new (eventUtils.get(eventUtils.COMMENT_MOVE))(this));
344
+ override moveBy(dx: number, dy: number) {
345
+ const event =
346
+ new (eventUtils.get(eventUtils.COMMENT_MOVE))!(this) as CommentMove;
432
347
  // TODO: Do I need to look up the relative to surface XY position here?
433
348
  const xy = this.getRelativeToSurfaceXY();
434
349
  this.translate(xy.x + dx, xy.y + dy);
@@ -441,11 +356,11 @@ class WorkspaceCommentSvg extends WorkspaceComment {
441
356
  /**
442
357
  * Transforms a comment by setting the translation on the transform attribute
443
358
  * of the block's SVG.
444
- * @param {number} x The x coordinate of the translation in workspace units.
445
- * @param {number} y The y coordinate of the translation in workspace units.
446
- * @package
359
+ * @param x The x coordinate of the translation in workspace units.
360
+ * @param y The y coordinate of the translation in workspace units.
361
+ * @internal
447
362
  */
448
- translate(x, y) {
363
+ translate(x: number, y: number) {
449
364
  this.xy_ = new Coordinate(x, y);
450
365
  this.getSvgRoot().setAttribute(
451
366
  'transform', 'translate(' + x + ',' + y + ')');
@@ -455,7 +370,7 @@ class WorkspaceCommentSvg extends WorkspaceComment {
455
370
  * Move this comment to its workspace's drag surface, accounting for
456
371
  * positioning. Generally should be called at the same time as
457
372
  * setDragging(true). Does nothing if useDragSurface_ is false.
458
- * @package
373
+ * @internal
459
374
  */
460
375
  moveToDragSurface() {
461
376
  if (!this.useDragSurface_) {
@@ -467,47 +382,48 @@ class WorkspaceCommentSvg extends WorkspaceComment {
467
382
  // This is in workspace coordinates.
468
383
  const xy = this.getRelativeToSurfaceXY();
469
384
  this.clearTransformAttributes_();
470
- this.workspace.getBlockDragSurface().translateSurface(xy.x, xy.y);
385
+ this.workspace.getBlockDragSurface()!.translateSurface(xy.x, xy.y);
471
386
  // Execute the move on the top-level SVG component
472
- this.workspace.getBlockDragSurface().setBlocksAndShow(this.getSvgRoot());
387
+ this.workspace.getBlockDragSurface()!.setBlocksAndShow(this.getSvgRoot());
473
388
  }
474
389
 
475
390
  /**
476
391
  * Move this comment during a drag, taking into account whether we are using a
477
392
  * drag surface to translate blocks.
478
- * @param {BlockDragSurfaceSvg} dragSurface The surface that carries
479
- * rendered items during a drag, or null if no drag surface is in use.
480
- * @param {!Coordinate} newLoc The location to translate to, in
481
- * workspace coordinates.
482
- * @package
393
+ * @param dragSurface The surface that carries rendered items during a drag,
394
+ * or null if no drag surface is in use.
395
+ * @param newLoc The location to translate to, in workspace coordinates.
396
+ * @internal
483
397
  */
484
- moveDuringDrag(dragSurface, newLoc) {
398
+ moveDuringDrag(dragSurface: BlockDragSurfaceSvg, newLoc: Coordinate) {
485
399
  if (dragSurface) {
486
400
  dragSurface.translateSurface(newLoc.x, newLoc.y);
487
401
  } else {
488
- this.svgGroup_.translate_ =
402
+ (this.svgGroup_ as AnyDuringMigration).translate_ =
489
403
  'translate(' + newLoc.x + ',' + newLoc.y + ')';
490
- this.svgGroup_.setAttribute(
491
- 'transform', this.svgGroup_.translate_ + this.svgGroup_.skew_);
404
+ (this.svgGroup_ as AnyDuringMigration)
405
+ .setAttribute(
406
+ 'transform',
407
+ (this.svgGroup_ as AnyDuringMigration).translate_ +
408
+ (this.svgGroup_ as AnyDuringMigration).skew_);
492
409
  }
493
410
  }
494
411
 
495
412
  /**
496
413
  * Move the bubble group to the specified location in workspace coordinates.
497
- * @param {number} x The x position to move to.
498
- * @param {number} y The y position to move to.
499
- * @package
414
+ * @param x The x position to move to.
415
+ * @param y The y position to move to.
416
+ * @internal
500
417
  */
501
- moveTo(x, y) {
418
+ moveTo(x: number, y: number) {
502
419
  this.translate(x, y);
503
420
  }
504
421
 
505
422
  /**
506
423
  * Clear the comment of transform="..." attributes.
507
424
  * Used when the comment is switching from 3d to 2d transform or vice versa.
508
- * @private
509
425
  */
510
- clearTransformAttributes_() {
426
+ private clearTransformAttributes_() {
511
427
  this.getSvgRoot().removeAttribute('transform');
512
428
  }
513
429
 
@@ -515,10 +431,10 @@ class WorkspaceCommentSvg extends WorkspaceComment {
515
431
  * Returns the coordinates of a bounding box describing the dimensions of this
516
432
  * comment.
517
433
  * Coordinate system: workspace coordinates.
518
- * @return {!Rect} Object with coordinates of the bounding box.
519
- * @package
434
+ * @return Object with coordinates of the bounding box.
435
+ * @internal
520
436
  */
521
- getBoundingRectangle() {
437
+ getBoundingRectangle(): Rect {
522
438
  const blockXY = this.getRelativeToSurfaceXY();
523
439
  const commentBounds = this.getHeightWidth();
524
440
  const top = blockXY.y;
@@ -541,33 +457,31 @@ class WorkspaceCommentSvg extends WorkspaceComment {
541
457
 
542
458
  /**
543
459
  * Add or remove the UI indicating if this comment is movable or not.
544
- * @package
460
+ * @internal
545
461
  */
546
462
  updateMovable() {
547
463
  if (this.isMovable()) {
548
- dom.addClass(
549
- /** @type {!Element} */ (this.svgGroup_), 'blocklyDraggable');
464
+ dom.addClass(this.svgGroup_ as Element, 'blocklyDraggable');
550
465
  } else {
551
- dom.removeClass(
552
- /** @type {!Element} */ (this.svgGroup_), 'blocklyDraggable');
466
+ dom.removeClass(this.svgGroup_ as Element, 'blocklyDraggable');
553
467
  }
554
468
  }
555
469
 
556
470
  /**
557
471
  * Set whether this comment is movable or not.
558
- * @param {boolean} movable True if movable.
559
- * @package
472
+ * @param movable True if movable.
473
+ * @internal
560
474
  */
561
- setMovable(movable) {
475
+ override setMovable(movable: boolean) {
562
476
  super.setMovable(movable);
563
477
  this.updateMovable();
564
478
  }
565
479
 
566
480
  /**
567
481
  * Set whether this comment is editable or not.
568
- * @param {boolean} editable True if editable.
482
+ * @param editable True if editable.
569
483
  */
570
- setEditable(editable) {
484
+ override setEditable(editable: boolean) {
571
485
  super.setEditable(editable);
572
486
  if (this.textarea_) {
573
487
  this.textarea_.readOnly = !editable;
@@ -577,46 +491,44 @@ class WorkspaceCommentSvg extends WorkspaceComment {
577
491
  /**
578
492
  * Recursively adds or removes the dragging class to this node and its
579
493
  * children.
580
- * @param {boolean} adding True if adding, false if removing.
581
- * @package
494
+ * @param adding True if adding, false if removing.
495
+ * @internal
582
496
  */
583
- setDragging(adding) {
497
+ setDragging(adding: boolean) {
584
498
  if (adding) {
585
499
  const group = this.getSvgRoot();
586
- group.translate_ = '';
587
- group.skew_ = '';
588
- dom.addClass(
589
- /** @type {!Element} */ (this.svgGroup_), 'blocklyDragging');
500
+ (group as AnyDuringMigration).translate_ = '';
501
+ (group as AnyDuringMigration).skew_ = '';
502
+ dom.addClass(this.svgGroup_ as Element, 'blocklyDragging');
590
503
  } else {
591
- dom.removeClass(
592
- /** @type {!Element} */ (this.svgGroup_), 'blocklyDragging');
504
+ dom.removeClass(this.svgGroup_ as Element, 'blocklyDragging');
593
505
  }
594
506
  }
595
507
 
596
508
  /**
597
509
  * Return the root node of the SVG or null if none exists.
598
- * @return {!SVGElement} The root SVG node (probably a group).
599
- * @package
510
+ * @return The root SVG node (probably a group).
511
+ * @internal
600
512
  */
601
- getSvgRoot() {
513
+ getSvgRoot(): SVGElement {
602
514
  return this.svgGroup_;
603
515
  }
604
516
 
605
517
  /**
606
518
  * Returns this comment's text.
607
- * @return {string} Comment text.
608
- * @package
519
+ * @return Comment text.
520
+ * @internal
609
521
  */
610
- getContent() {
522
+ override getContent(): string {
611
523
  return this.textarea_ ? this.textarea_.value : this.content_;
612
524
  }
613
525
 
614
526
  /**
615
527
  * Set this comment's content.
616
- * @param {string} content Comment content.
617
- * @package
528
+ * @param content Comment content.
529
+ * @internal
618
530
  */
619
- setContent(content) {
531
+ override setContent(content: string) {
620
532
  super.setContent(content);
621
533
  if (this.textarea_) {
622
534
  this.textarea_.value = content;
@@ -625,17 +537,14 @@ class WorkspaceCommentSvg extends WorkspaceComment {
625
537
 
626
538
  /**
627
539
  * Update the cursor over this comment by adding or removing a class.
628
- * @param {boolean} enable True if the delete cursor should be shown, false
629
- * otherwise.
630
- * @package
540
+ * @param enable True if the delete cursor should be shown, false otherwise.
541
+ * @internal
631
542
  */
632
- setDeleteStyle(enable) {
543
+ setDeleteStyle(enable: boolean) {
633
544
  if (enable) {
634
- dom.addClass(
635
- /** @type {!Element} */ (this.svgGroup_), 'blocklyDraggingDelete');
545
+ dom.addClass(this.svgGroup_ as Element, 'blocklyDraggingDelete');
636
546
  } else {
637
- dom.removeClass(
638
- /** @type {!Element} */ (this.svgGroup_), 'blocklyDraggingDelete');
547
+ dom.removeClass(this.svgGroup_ as Element, 'blocklyDraggingDelete');
639
548
  }
640
549
  }
641
550
 
@@ -643,42 +552,50 @@ class WorkspaceCommentSvg extends WorkspaceComment {
643
552
  * Set whether auto-layout of this bubble is enabled. The first time a bubble
644
553
  * is shown it positions itself to not cover any blocks. Once a user has
645
554
  * dragged it to reposition, it renders where the user put it.
646
- * @param {boolean} _enable True if auto-layout should be enabled, false
647
- * otherwise.
648
- * @package
555
+ * @param _enable True if auto-layout should be enabled, false otherwise.
556
+ * @internal
649
557
  */
650
- setAutoLayout(_enable) {
651
- // NOP for compatibility with the bubble dragger.
652
- }
558
+ setAutoLayout(_enable: boolean) {}
559
+ // NOP for compatibility with the bubble dragger.
653
560
 
654
561
  /**
655
562
  * Encode a comment subtree as XML with XY coordinates.
656
- * @param {boolean=} opt_noId True if the encoder should skip the comment ID.
657
- * @return {!Element} Tree of XML elements.
658
- * @package
563
+ * @param opt_noId True if the encoder should skip the comment ID.
564
+ * @return Tree of XML elements.
565
+ * @internal
659
566
  */
660
- toXmlWithXY(opt_noId) {
661
- let width; // Not used in LTR.
567
+ override toXmlWithXY(opt_noId?: boolean): Element {
568
+ let width = 0; // Not used in LTR.
662
569
  if (this.workspace.RTL) {
663
570
  // Here be performance dragons: This calls getMetrics().
664
571
  width = this.workspace.getWidth();
665
572
  }
666
573
  const element = this.toXml(opt_noId);
667
574
  const xy = this.getRelativeToSurfaceXY();
575
+ // AnyDuringMigration because: Argument of type 'number' is not assignable
576
+ // to parameter of type 'string'.
668
577
  element.setAttribute(
669
- 'x', Math.round(this.workspace.RTL ? width - xy.x : xy.x));
670
- element.setAttribute('y', Math.round(xy.y));
671
- element.setAttribute('h', this.getHeight());
672
- element.setAttribute('w', this.getWidth());
578
+ 'x',
579
+ Math.round(this.workspace.RTL ? width - xy.x : xy.x) as
580
+ AnyDuringMigration);
581
+ // AnyDuringMigration because: Argument of type 'number' is not assignable
582
+ // to parameter of type 'string'.
583
+ element.setAttribute('y', Math.round(xy.y) as AnyDuringMigration);
584
+ // AnyDuringMigration because: Argument of type 'number' is not assignable
585
+ // to parameter of type 'string'.
586
+ element.setAttribute('h', this.getHeight() as AnyDuringMigration);
587
+ // AnyDuringMigration because: Argument of type 'number' is not assignable
588
+ // to parameter of type 'string'.
589
+ element.setAttribute('w', this.getWidth() as AnyDuringMigration);
673
590
  return element;
674
591
  }
675
592
 
676
593
  /**
677
594
  * Encode a comment for copying.
678
- * @return {!ICopyable.CopyData} Copy metadata.
679
- * @package
595
+ * @return Copy metadata.
596
+ * @internal
680
597
  */
681
- toCopyData() {
598
+ toCopyData(): CopyData {
682
599
  return {
683
600
  saveInfo: this.toXmlWithXY(),
684
601
  source: this.workspace,
@@ -688,17 +605,16 @@ class WorkspaceCommentSvg extends WorkspaceComment {
688
605
 
689
606
  /**
690
607
  * Returns a bounding box describing the dimensions of this comment.
691
- * @return {!{height: number, width: number}} Object with height and width
692
- * properties in workspace units.
693
- * @package
608
+ * @return Object with height and width properties in workspace units.
609
+ * @internal
694
610
  */
695
- getHeightWidth() {
611
+ getHeightWidth(): {height: number, width: number} {
696
612
  return {width: this.getWidth(), height: this.getHeight()};
697
613
  }
698
614
 
699
615
  /**
700
616
  * Renders the workspace comment.
701
- * @package
617
+ * @internal
702
618
  */
703
619
  render() {
704
620
  if (this.rendered_) {
@@ -709,11 +625,15 @@ class WorkspaceCommentSvg extends WorkspaceComment {
709
625
 
710
626
  // Add text area
711
627
  this.createEditor_();
712
- this.svgGroup_.appendChild(this.foreignObject_);
628
+ // AnyDuringMigration because: Argument of type 'SVGForeignObjectElement |
629
+ // null' is not assignable to parameter of type 'Node'.
630
+ this.svgGroup_.appendChild(this.foreignObject_ as AnyDuringMigration);
713
631
 
714
632
  this.svgHandleTarget_ = dom.createSvgElement(
715
633
  Svg.RECT, {'class': 'blocklyCommentHandleTarget', 'x': 0, 'y': 0});
716
- this.svgGroup_.appendChild(this.svgHandleTarget_);
634
+ // AnyDuringMigration because: Argument of type 'SVGRectElement | null' is
635
+ // not assignable to parameter of type 'Node'.
636
+ this.svgGroup_.appendChild(this.svgHandleTarget_ as AnyDuringMigration);
717
637
  this.svgRectTarget_ = dom.createSvgElement(Svg.RECT, {
718
638
  'class': 'blocklyCommentTarget',
719
639
  'x': 0,
@@ -721,7 +641,9 @@ class WorkspaceCommentSvg extends WorkspaceComment {
721
641
  'rx': BORDER_RADIUS,
722
642
  'ry': BORDER_RADIUS,
723
643
  });
724
- this.svgGroup_.appendChild(this.svgRectTarget_);
644
+ // AnyDuringMigration because: Argument of type 'SVGRectElement | null' is
645
+ // not assignable to parameter of type 'Node'.
646
+ this.svgGroup_.appendChild(this.svgRectTarget_ as AnyDuringMigration);
725
647
 
726
648
  // Add the resize icon
727
649
  this.addResizeDom_();
@@ -733,91 +655,90 @@ class WorkspaceCommentSvg extends WorkspaceComment {
733
655
  this.setSize_(size.width, size.height);
734
656
 
735
657
  // Set the content
736
- this.textarea_.value = this.content_;
658
+ this.textarea_!.value = this.content_;
737
659
 
738
660
  this.rendered_ = true;
739
661
 
740
662
  if (this.resizeGroup_) {
741
663
  browserEvents.conditionalBind(
742
- /** @type {!SVGGElement} */ (this.resizeGroup_), 'mousedown', this,
743
- this.resizeMouseDown_);
664
+ (this.resizeGroup_), 'mousedown', this, this.resizeMouseDown_);
744
665
  }
745
666
 
746
667
  if (this.isDeletable()) {
747
668
  browserEvents.conditionalBind(
748
- /** @type {!SVGGElement} */ (this.deleteGroup_), 'mousedown', this,
669
+ this.deleteGroup_ as SVGGElement, 'mousedown', this,
749
670
  this.deleteMouseDown_);
750
671
  browserEvents.conditionalBind(
751
- /** @type {!SVGGElement} */ (this.deleteGroup_), 'mouseout', this,
672
+ this.deleteGroup_ as SVGGElement, 'mouseout', this,
752
673
  this.deleteMouseOut_);
753
674
  browserEvents.conditionalBind(
754
- /** @type {!SVGGElement} */ (this.deleteGroup_), 'mouseup', this,
675
+ this.deleteGroup_ as SVGGElement, 'mouseup', this,
755
676
  this.deleteMouseUp_);
756
677
  }
757
678
  }
758
679
 
759
680
  /**
760
681
  * Create the text area for the comment.
761
- * @return {!Element} The top-level node of the editor.
762
- * @private
682
+ * @return The top-level node of the editor.
763
683
  */
764
- createEditor_() {
684
+ private createEditor_(): Element {
765
685
  /* Create the editor. Here's the markup that will be generated:
766
- <foreignObject class="blocklyCommentForeignObject" x="0" y="10"
767
- width="164" height="164"> <body xmlns="http://www.w3.org/1999/xhtml"
768
- class="blocklyMinimalBody"> <textarea xmlns="http://www.w3.org/1999/xhtml"
769
- class="blocklyCommentTextarea"
770
- style="height: 164px; width: 164px;"></textarea>
771
- </body>
772
- </foreignObject>
773
- */
774
- this.foreignObject_ = dom.createSvgElement(
775
- Svg.FOREIGNOBJECT, {
776
- 'x': 0,
777
- 'y': WorkspaceCommentSvg.TOP_OFFSET,
778
- 'class': 'blocklyCommentForeignObject',
779
- },
780
- null);
686
+ <foreignObject class="blocklyCommentForeignObject" x="0" y="10"
687
+ width="164" height="164"> <body xmlns="http://www.w3.org/1999/xhtml"
688
+ class="blocklyMinimalBody"> <textarea
689
+ xmlns="http://www.w3.org/1999/xhtml" class="blocklyCommentTextarea"
690
+ style="height: 164px; width: 164px;"></textarea>
691
+ </body>
692
+ </foreignObject>
693
+ */
694
+ this.foreignObject_ = dom.createSvgElement(Svg.FOREIGNOBJECT, {
695
+ 'x': 0,
696
+ 'y': WorkspaceCommentSvg.TOP_OFFSET,
697
+ 'class': 'blocklyCommentForeignObject',
698
+ });
781
699
  const body = document.createElementNS(dom.HTML_NS, 'body');
782
700
  body.setAttribute('xmlns', dom.HTML_NS);
783
701
  body.className = 'blocklyMinimalBody';
784
- const textarea = document.createElementNS(dom.HTML_NS, 'textarea');
702
+ const textarea = document.createElementNS(dom.HTML_NS, 'textarea') as
703
+ HTMLTextAreaElement;
785
704
  textarea.className = 'blocklyCommentTextarea';
786
705
  textarea.setAttribute('dir', this.RTL ? 'RTL' : 'LTR');
787
706
  textarea.readOnly = !this.isEditable();
788
707
  body.appendChild(textarea);
789
708
  this.textarea_ = textarea;
790
- this.foreignObject_.appendChild(body);
709
+ this.foreignObject_!.appendChild(body);
791
710
  // Don't zoom with mousewheel.
792
- browserEvents.conditionalBind(textarea, 'wheel', this, function(e) {
793
- e.stopPropagation();
794
- });
711
+ browserEvents.conditionalBind(
712
+ textarea, 'wheel', this, function(e: AnyDuringMigration) {
713
+ e.stopPropagation();
714
+ });
795
715
  browserEvents.conditionalBind(
796
716
  textarea, 'change', this,
797
- /**
798
- * @this {WorkspaceCommentSvg}
799
- * @param {Event} e Unused event parameter
800
- */
717
+ /** @param e Unused event parameter */
718
+ /* eslint-enable no-unused-vars */
801
719
  function(
802
- /* eslint-disable no-unused-vars */ e
803
- /* eslint-enable no-unused-vars */) {
720
+ this: WorkspaceCommentSvg,
721
+ /* eslint-disable no-unused-vars */ e: Event) {
804
722
  this.setContent(textarea.value);
805
723
  });
806
- return this.foreignObject_;
724
+ // AnyDuringMigration because: Type 'SVGForeignObjectElement | null' is not
725
+ // assignable to type 'Element'.
726
+ return this.foreignObject_ as AnyDuringMigration;
807
727
  }
808
728
 
809
- /**
810
- * Add the resize icon to the DOM
811
- * @private
812
- */
813
- addResizeDom_() {
729
+ /** Add the resize icon to the DOM */
730
+ private addResizeDom_() {
814
731
  this.resizeGroup_ = dom.createSvgElement(
815
732
  Svg.G, {'class': this.RTL ? 'blocklyResizeSW' : 'blocklyResizeSE'},
816
733
  this.svgGroup_);
734
+ // AnyDuringMigration because: Argument of type 'SVGGElement | null' is not
735
+ // assignable to parameter of type 'Element | undefined'.
817
736
  dom.createSvgElement(
818
737
  Svg.POLYGON,
819
738
  {'points': '0,x x,x x,0'.replace(/x/g, RESIZE_SIZE.toString())},
820
- this.resizeGroup_);
739
+ this.resizeGroup_ as AnyDuringMigration);
740
+ // AnyDuringMigration because: Argument of type 'SVGGElement | null' is not
741
+ // assignable to parameter of type 'Element | undefined'.
821
742
  dom.createSvgElement(
822
743
  Svg.LINE, {
823
744
  'class': 'blocklyResizeLine',
@@ -826,7 +747,9 @@ class WorkspaceCommentSvg extends WorkspaceComment {
826
747
  'x2': RESIZE_SIZE - 1,
827
748
  'y2': RESIZE_SIZE / 3,
828
749
  },
829
- this.resizeGroup_);
750
+ this.resizeGroup_ as AnyDuringMigration);
751
+ // AnyDuringMigration because: Argument of type 'SVGGElement | null' is not
752
+ // assignable to parameter of type 'Element | undefined'.
830
753
  dom.createSvgElement(
831
754
  Svg.LINE, {
832
755
  'class': 'blocklyResizeLine',
@@ -835,21 +758,22 @@ class WorkspaceCommentSvg extends WorkspaceComment {
835
758
  'x2': RESIZE_SIZE - 1,
836
759
  'y2': RESIZE_SIZE * 2 / 3,
837
760
  },
838
- this.resizeGroup_);
761
+ this.resizeGroup_ as AnyDuringMigration);
839
762
  }
840
763
 
841
- /**
842
- * Add the delete icon to the DOM
843
- * @private
844
- */
845
- addDeleteDom_() {
764
+ /** Add the delete icon to the DOM */
765
+ private addDeleteDom_() {
846
766
  this.deleteGroup_ = dom.createSvgElement(
847
767
  Svg.G, {'class': 'blocklyCommentDeleteIcon'}, this.svgGroup_);
768
+ // AnyDuringMigration because: Argument of type 'SVGGElement | null' is not
769
+ // assignable to parameter of type 'Element | undefined'.
848
770
  this.deleteIconBorder_ = dom.createSvgElement(
849
771
  Svg.CIRCLE,
850
772
  {'class': 'blocklyDeleteIconShape', 'r': '7', 'cx': '7.5', 'cy': '7.5'},
851
- this.deleteGroup_);
773
+ this.deleteGroup_ as AnyDuringMigration);
852
774
  // x icon.
775
+ // AnyDuringMigration because: Argument of type 'SVGGElement | null' is not
776
+ // assignable to parameter of type 'Element | undefined'.
853
777
  dom.createSvgElement(
854
778
  Svg.LINE, {
855
779
  'x1': '5',
@@ -859,7 +783,9 @@ class WorkspaceCommentSvg extends WorkspaceComment {
859
783
  'stroke': '#fff',
860
784
  'stroke-width': '2',
861
785
  },
862
- this.deleteGroup_);
786
+ this.deleteGroup_ as AnyDuringMigration);
787
+ // AnyDuringMigration because: Argument of type 'SVGGElement | null' is not
788
+ // assignable to parameter of type 'Element | undefined'.
863
789
  dom.createSvgElement(
864
790
  Svg.LINE, {
865
791
  'x1': '5',
@@ -869,15 +795,14 @@ class WorkspaceCommentSvg extends WorkspaceComment {
869
795
  'stroke': '#fff',
870
796
  'stroke-width': '2',
871
797
  },
872
- this.deleteGroup_);
798
+ this.deleteGroup_ as AnyDuringMigration);
873
799
  }
874
800
 
875
801
  /**
876
802
  * Handle a mouse-down on comment's resize corner.
877
- * @param {!Event} e Mouse down event.
878
- * @private
803
+ * @param e Mouse down event.
879
804
  */
880
- resizeMouseDown_(e) {
805
+ private resizeMouseDown_(e: MouseEvent) {
881
806
  this.unbindDragEvents_();
882
807
  if (browserEvents.isRightButton(e)) {
883
808
  // No right-click.
@@ -901,47 +826,39 @@ class WorkspaceCommentSvg extends WorkspaceComment {
901
826
 
902
827
  /**
903
828
  * Handle a mouse-down on comment's delete icon.
904
- * @param {!Event} e Mouse down event.
905
- * @private
829
+ * @param e Mouse down event.
906
830
  */
907
- deleteMouseDown_(e) {
831
+ private deleteMouseDown_(e: Event) {
908
832
  // Highlight the delete icon.
909
833
  dom.addClass(
910
- /** @type {!Element} */ (this.deleteIconBorder_),
911
- 'blocklyDeleteIconHighlighted');
834
+ this.deleteIconBorder_ as Element, 'blocklyDeleteIconHighlighted');
912
835
  // This event has been handled. No need to bubble up to the document.
913
836
  e.stopPropagation();
914
837
  }
915
838
 
916
839
  /**
917
840
  * Handle a mouse-out on comment's delete icon.
918
- * @param {!Event} _e Mouse out event.
919
- * @private
841
+ * @param _e Mouse out event.
920
842
  */
921
- deleteMouseOut_(_e) {
843
+ private deleteMouseOut_(_e: Event) {
922
844
  // Restore highlight on the delete icon.
923
845
  dom.removeClass(
924
- /** @type {!Element} */ (this.deleteIconBorder_),
925
- 'blocklyDeleteIconHighlighted');
846
+ this.deleteIconBorder_ as Element, 'blocklyDeleteIconHighlighted');
926
847
  }
927
848
 
928
849
  /**
929
850
  * Handle a mouse-up on comment's delete icon.
930
- * @param {!Event} e Mouse up event.
931
- * @private
851
+ * @param e Mouse up event.
932
852
  */
933
- deleteMouseUp_(e) {
853
+ private deleteMouseUp_(e: Event) {
934
854
  // Delete this comment.
935
855
  this.dispose();
936
856
  // This event has been handled. No need to bubble up to the document.
937
857
  e.stopPropagation();
938
858
  }
939
859
 
940
- /**
941
- * Stop binding to the global mouseup and mousemove events.
942
- * @private
943
- */
944
- unbindDragEvents_() {
860
+ /** Stop binding to the global mouseup and mousemove events. */
861
+ private unbindDragEvents_() {
945
862
  if (this.onMouseUpWrapper_) {
946
863
  browserEvents.unbind(this.onMouseUpWrapper_);
947
864
  this.onMouseUpWrapper_ = null;
@@ -954,20 +871,18 @@ class WorkspaceCommentSvg extends WorkspaceComment {
954
871
 
955
872
  /**
956
873
  * Handle a mouse-up event while dragging a comment's border or resize handle.
957
- * @param {!Event} _e Mouse up event.
958
- * @private
874
+ * @param _e Mouse up event.
959
875
  */
960
- resizeMouseUp_(_e) {
876
+ private resizeMouseUp_(_e: Event) {
961
877
  Touch.clearTouchIdentifier();
962
878
  this.unbindDragEvents_();
963
879
  }
964
880
 
965
881
  /**
966
882
  * Resize this comment to follow the mouse.
967
- * @param {!Event} e Mouse move event.
968
- * @private
883
+ * @param e Mouse move event.
969
884
  */
970
- resizeMouseMove_(e) {
885
+ private resizeMouseMove_(e: MouseEvent) {
971
886
  this.autoLayout_ = false;
972
887
  const newXY = this.workspace.moveDrag(e);
973
888
  this.setSize_(this.RTL ? -newXY.x : newXY.x, newXY.y);
@@ -976,29 +891,31 @@ class WorkspaceCommentSvg extends WorkspaceComment {
976
891
  /**
977
892
  * Callback function triggered when the comment has resized.
978
893
  * Resize the text area accordingly.
979
- * @private
980
894
  */
981
- resizeComment_() {
895
+ private resizeComment_() {
982
896
  const size = this.getHeightWidth();
983
897
  const topOffset = WorkspaceCommentSvg.TOP_OFFSET;
984
898
  const textOffset = TEXTAREA_OFFSET * 2;
985
899
 
986
- this.foreignObject_.setAttribute('width', size.width);
987
- this.foreignObject_.setAttribute('height', size.height - topOffset);
900
+ // AnyDuringMigration because: Argument of type 'number' is not assignable
901
+ // to parameter of type 'string'.
902
+ this.foreignObject_!.setAttribute(
903
+ 'width', size.width as AnyDuringMigration);
904
+ this.foreignObject_!.setAttribute(
905
+ 'height', (size.height - topOffset).toString());
988
906
  if (this.RTL) {
989
- this.foreignObject_.setAttribute('x', -size.width);
907
+ this.foreignObject_!.setAttribute('x', (-size.width).toString());
990
908
  }
991
- this.textarea_.style.width = (size.width - textOffset) + 'px';
992
- this.textarea_.style.height = (size.height - textOffset - topOffset) + 'px';
909
+ this.textarea_!.style.width = size.width - textOffset + 'px';
910
+ this.textarea_!.style.height = size.height - textOffset - topOffset + 'px';
993
911
  }
994
912
 
995
913
  /**
996
914
  * Set size
997
- * @param {number} width width of the container
998
- * @param {number} height height of the container
999
- * @private
915
+ * @param width width of the container
916
+ * @param height height of the container
1000
917
  */
1001
- setSize_(width, height) {
918
+ private setSize_(width: number, height: number) {
1002
919
  // Minimum size of a comment.
1003
920
  width = Math.max(width, 45);
1004
921
  height = Math.max(height, 20 + WorkspaceCommentSvg.TOP_OFFSET);
@@ -1006,14 +923,22 @@ class WorkspaceCommentSvg extends WorkspaceComment {
1006
923
  this.height_ = height;
1007
924
  this.svgRect_.setAttribute('width', width);
1008
925
  this.svgRect_.setAttribute('height', height);
1009
- this.svgRectTarget_.setAttribute('width', width);
1010
- this.svgRectTarget_.setAttribute('height', height);
1011
- this.svgHandleTarget_.setAttribute('width', width);
1012
- this.svgHandleTarget_.setAttribute(
1013
- 'height', WorkspaceCommentSvg.TOP_OFFSET);
926
+ // AnyDuringMigration because: Argument of type 'number' is not assignable
927
+ // to parameter of type 'string'.
928
+ this.svgRectTarget_!.setAttribute('width', width as AnyDuringMigration);
929
+ // AnyDuringMigration because: Argument of type 'number' is not assignable
930
+ // to parameter of type 'string'.
931
+ this.svgRectTarget_!.setAttribute('height', height as AnyDuringMigration);
932
+ // AnyDuringMigration because: Argument of type 'number' is not assignable
933
+ // to parameter of type 'string'.
934
+ this.svgHandleTarget_!.setAttribute('width', width as AnyDuringMigration);
935
+ // AnyDuringMigration because: Argument of type 'number' is not assignable
936
+ // to parameter of type 'string'.
937
+ this.svgHandleTarget_!.setAttribute(
938
+ 'height', WorkspaceCommentSvg.TOP_OFFSET as AnyDuringMigration);
1014
939
  if (this.RTL) {
1015
940
  this.svgRect_.setAttribute('transform', 'scale(-1 1)');
1016
- this.svgRectTarget_.setAttribute('transform', 'scale(-1 1)');
941
+ this.svgRectTarget_!.setAttribute('transform', 'scale(-1 1)');
1017
942
  }
1018
943
 
1019
944
  if (this.resizeGroup_) {
@@ -1023,18 +948,18 @@ class WorkspaceCommentSvg extends WorkspaceComment {
1023
948
  'transform',
1024
949
  'translate(' + (-width + RESIZE_SIZE) + ',' +
1025
950
  (height - RESIZE_SIZE) + ') scale(-1 1)');
1026
- this.deleteGroup_.setAttribute(
951
+ this.deleteGroup_!.setAttribute(
1027
952
  'transform',
1028
- 'translate(' + (-width + RESIZE_SIZE) + ',' + (-RESIZE_SIZE) +
953
+ 'translate(' + (-width + RESIZE_SIZE) + ',' + -RESIZE_SIZE +
1029
954
  ') scale(-1 1)');
1030
955
  } else {
1031
956
  this.resizeGroup_.setAttribute(
1032
957
  'transform',
1033
958
  'translate(' + (width - RESIZE_SIZE) + ',' +
1034
959
  (height - RESIZE_SIZE) + ')');
1035
- this.deleteGroup_.setAttribute(
960
+ this.deleteGroup_!.setAttribute(
1036
961
  'transform',
1037
- 'translate(' + (width - RESIZE_SIZE) + ',' + (-RESIZE_SIZE) + ')');
962
+ 'translate(' + (width - RESIZE_SIZE) + ',' + -RESIZE_SIZE + ')');
1038
963
  }
1039
964
  }
1040
965
 
@@ -1042,11 +967,8 @@ class WorkspaceCommentSvg extends WorkspaceComment {
1042
967
  this.resizeComment_();
1043
968
  }
1044
969
 
1045
- /**
1046
- * Dispose of any rendered comment components.
1047
- * @private
1048
- */
1049
- disposeInternal_() {
970
+ /** Dispose of any rendered comment components. */
971
+ private disposeInternal_() {
1050
972
  this.textarea_ = null;
1051
973
  this.foreignObject_ = null;
1052
974
  this.svgRectTarget_ = null;
@@ -1056,7 +978,7 @@ class WorkspaceCommentSvg extends WorkspaceComment {
1056
978
 
1057
979
  /**
1058
980
  * Set the focus on the text area.
1059
- * @package
981
+ * @internal
1060
982
  */
1061
983
  setFocus() {
1062
984
  const comment = this;
@@ -1066,20 +988,20 @@ class WorkspaceCommentSvg extends WorkspaceComment {
1066
988
  if (comment.disposed_) {
1067
989
  return;
1068
990
  }
1069
- comment.textarea_.focus();
991
+ comment.textarea_!.focus();
1070
992
  comment.addFocus();
1071
993
  dom.addClass(
1072
- /** @type {!SVGRectElement} */ (comment.svgRectTarget_),
994
+ comment.svgRectTarget_ as SVGRectElement,
1073
995
  'blocklyCommentTargetFocused');
1074
996
  dom.addClass(
1075
- /** @type {!SVGRectElement} */ (comment.svgHandleTarget_),
997
+ comment.svgHandleTarget_ as SVGRectElement,
1076
998
  'blocklyCommentHandleTargetFocused');
1077
999
  }, 0);
1078
1000
  }
1079
1001
 
1080
1002
  /**
1081
1003
  * Remove focus from the text area.
1082
- * @package
1004
+ * @internal
1083
1005
  */
1084
1006
  blurFocus() {
1085
1007
  const comment = this;
@@ -1090,27 +1012,29 @@ class WorkspaceCommentSvg extends WorkspaceComment {
1090
1012
  return;
1091
1013
  }
1092
1014
 
1093
- comment.textarea_.blur();
1015
+ comment.textarea_!.blur();
1094
1016
  comment.removeFocus();
1095
1017
  dom.removeClass(
1096
- /** @type {!SVGRectElement} */ (comment.svgRectTarget_),
1018
+ comment.svgRectTarget_ as SVGRectElement,
1097
1019
  'blocklyCommentTargetFocused');
1098
1020
  dom.removeClass(
1099
- /** @type {!SVGRectElement} */ (comment.svgHandleTarget_),
1021
+ comment.svgHandleTarget_ as SVGRectElement,
1100
1022
  'blocklyCommentHandleTargetFocused');
1101
1023
  }, 0);
1102
1024
  }
1103
1025
 
1104
1026
  /**
1105
1027
  * Decode an XML comment tag and create a rendered comment on the workspace.
1106
- * @param {!Element} xmlComment XML comment element.
1107
- * @param {!WorkspaceSvg} workspace The workspace.
1108
- * @param {number=} opt_wsWidth The width of the workspace, which is used to
1109
- * position comments correctly in RTL.
1110
- * @return {!WorkspaceCommentSvg} The created workspace comment.
1111
- * @package
1028
+ * @param xmlComment XML comment element.
1029
+ * @param workspace The workspace.
1030
+ * @param opt_wsWidth The width of the workspace, which is used to position
1031
+ * comments correctly in RTL.
1032
+ * @return The created workspace comment.
1033
+ * @internal
1112
1034
  */
1113
- static fromXmlRendered(xmlComment, workspace, opt_wsWidth) {
1035
+ static fromXmlRendered(
1036
+ xmlComment: Element, workspace: WorkspaceSvg,
1037
+ opt_wsWidth?: number): WorkspaceCommentSvg {
1114
1038
  eventUtils.disable();
1115
1039
  let comment;
1116
1040
  try {
@@ -1136,31 +1060,12 @@ class WorkspaceCommentSvg extends WorkspaceComment {
1136
1060
  eventUtils.enable();
1137
1061
  }
1138
1062
 
1139
- WorkspaceComment.fireCreateEvent(
1140
- /** @type {!WorkspaceCommentSvg} */ (comment));
1141
- return (/** @type {!WorkspaceCommentSvg} */ (comment));
1063
+ WorkspaceComment.fireCreateEvent((comment));
1064
+ return comment;
1142
1065
  }
1143
1066
  }
1144
1067
 
1145
- /**
1146
- * The width and height to use to size a workspace comment when it is first
1147
- * added, before it has been edited by the user.
1148
- * @type {number}
1149
- * @package
1150
- */
1151
- WorkspaceCommentSvg.DEFAULT_SIZE = 100;
1152
-
1153
- /**
1154
- * Offset from the top to make room for a top bar.
1155
- * @type {number}
1156
- * @const
1157
- * @private
1158
- */
1159
- WorkspaceCommentSvg.TOP_OFFSET = 10;
1160
-
1161
- /**
1162
- * CSS for workspace comment. See css.js for use.
1163
- */
1068
+ /** CSS for workspace comment. See css.js for use. */
1164
1069
  Css.register(`
1165
1070
  .blocklyCommentForeignObject {
1166
1071
  position: relative;
@@ -1220,5 +1125,3 @@ Css.register(`
1220
1125
  stroke: #fc3;
1221
1126
  }
1222
1127
  `);
1223
-
1224
- exports.WorkspaceCommentSvg = WorkspaceCommentSvg;