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
@@ -0,0 +1,271 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2019 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ /**
8
+ * @fileoverview Base renderer.
9
+ */
10
+
11
+ /**
12
+ * Base renderer.
13
+ * @class
14
+ */
15
+ import * as goog from '../../../closure/goog/goog.js';
16
+ goog.declareModuleId('Blockly.blockRendering.Renderer');
17
+
18
+ import type {Block} from '../../block.js';
19
+ import type {BlockSvg} from '../../block_svg.js';
20
+ import {Connection} from '../../connection.js';
21
+ import {ConnectionType} from '../../connection_type.js';
22
+ import {InsertionMarkerManager, PreviewType} from '../../insertion_marker_manager.js';
23
+ import type {IRegistrable} from '../../interfaces/i_registrable.js';
24
+ import type {Marker} from '../../keyboard_nav/marker.js';
25
+ import type {RenderedConnection} from '../../rendered_connection.js';
26
+ import type {BlockStyle, Theme} from '../../theme.js';
27
+ import type {WorkspaceSvg} from '../../workspace_svg.js';
28
+
29
+ import {ConstantProvider} from './constants.js';
30
+ import * as debug from './debug.js';
31
+ import {Debug} from './debugger.js';
32
+ import {Drawer} from './drawer.js';
33
+ import type {IPathObject} from './i_path_object.js';
34
+ import {RenderInfo} from './info.js';
35
+ import {MarkerSvg} from './marker_svg.js';
36
+ import {PathObject} from './path_object.js';
37
+
38
+
39
+ /**
40
+ * The base class for a block renderer.
41
+ * @alias Blockly.blockRendering.Renderer
42
+ */
43
+ export class Renderer implements IRegistrable {
44
+ /** The renderer's constant provider. */
45
+ protected constants_!: ConstantProvider;
46
+
47
+ /** @internal */
48
+ name: string;
49
+
50
+ /**
51
+ * Rendering constant overrides, passed in through options.
52
+ * @internal
53
+ */
54
+ overrides: object|null = null;
55
+
56
+ /**
57
+ * @param name The renderer name.
58
+ * @internal
59
+ */
60
+ constructor(name: string) {
61
+ this.name = name;
62
+ }
63
+
64
+ /**
65
+ * Gets the class name that identifies this renderer.
66
+ * @return The CSS class name.
67
+ * @internal
68
+ */
69
+ getClassName(): string {
70
+ return this.name + '-renderer';
71
+ }
72
+
73
+ /**
74
+ * Initialize the renderer.
75
+ * @param theme The workspace theme object.
76
+ * @param opt_rendererOverrides Rendering constant overrides.
77
+ * @internal
78
+ */
79
+ init(theme: Theme, opt_rendererOverrides?: object) {
80
+ this.constants_ = this.makeConstants_();
81
+ if (opt_rendererOverrides) {
82
+ this.overrides = opt_rendererOverrides;
83
+ Object.assign(this.constants_, opt_rendererOverrides);
84
+ }
85
+ this.constants_.setTheme(theme);
86
+ this.constants_.init();
87
+ }
88
+
89
+ /**
90
+ * Create any DOM elements that this renderer needs.
91
+ * @param svg The root of the workspace's SVG.
92
+ * @param theme The workspace theme object.
93
+ * @internal
94
+ */
95
+ createDom(svg: SVGElement, theme: Theme) {
96
+ this.constants_.createDom(
97
+ svg, this.name + '-' + theme.name,
98
+ '.' + this.getClassName() + '.' + theme.getClassName());
99
+ }
100
+
101
+ /**
102
+ * Refresh the renderer after a theme change.
103
+ * @param svg The root of the workspace's SVG.
104
+ * @param theme The workspace theme object.
105
+ * @internal
106
+ */
107
+ refreshDom(svg: SVGElement, theme: Theme) {
108
+ const previousConstants = this.getConstants();
109
+ previousConstants.dispose();
110
+ this.constants_ = this.makeConstants_();
111
+ if (this.overrides) {
112
+ Object.assign(this.constants_, this.overrides);
113
+ }
114
+ // Ensure the constant provider's random identifier does not change.
115
+ this.constants_.randomIdentifier = previousConstants.randomIdentifier;
116
+ this.constants_.setTheme(theme);
117
+ this.constants_.init();
118
+ this.createDom(svg, theme);
119
+ }
120
+
121
+ /**
122
+ * Dispose of this renderer.
123
+ * Delete all DOM elements that this renderer and its constants created.
124
+ * @internal
125
+ */
126
+ dispose() {
127
+ if (this.constants_) {
128
+ this.constants_.dispose();
129
+ }
130
+ }
131
+
132
+ /**
133
+ * Create a new instance of the renderer's constant provider.
134
+ * @return The constant provider.
135
+ */
136
+ protected makeConstants_(): ConstantProvider {
137
+ return new ConstantProvider();
138
+ }
139
+
140
+ /**
141
+ * Create a new instance of the renderer's render info object.
142
+ * @param block The block to measure.
143
+ * @return The render info object.
144
+ */
145
+ protected makeRenderInfo_(block: BlockSvg): RenderInfo {
146
+ return new RenderInfo(this, block);
147
+ }
148
+
149
+ /**
150
+ * Create a new instance of the renderer's drawer.
151
+ * @param block The block to render.
152
+ * @param info An object containing all information needed to render this
153
+ * block.
154
+ * @return The drawer.
155
+ */
156
+ protected makeDrawer_(block: BlockSvg, info: RenderInfo): Drawer {
157
+ return new Drawer(block, info);
158
+ }
159
+
160
+ /**
161
+ * Create a new instance of the renderer's debugger.
162
+ * @return The renderer debugger.
163
+ * @suppress {strictModuleDepCheck} Debug renderer only included in
164
+ * playground.
165
+ */
166
+ protected makeDebugger_(): Debug {
167
+ return new Debug(this.getConstants());
168
+ }
169
+
170
+ /**
171
+ * Create a new instance of the renderer's marker drawer.
172
+ * @param workspace The workspace the marker belongs to.
173
+ * @param marker The marker.
174
+ * @return The object in charge of drawing the marker.
175
+ * @internal
176
+ */
177
+ makeMarkerDrawer(workspace: WorkspaceSvg, marker: Marker): MarkerSvg {
178
+ return new MarkerSvg(workspace, this.getConstants(), marker);
179
+ }
180
+
181
+ /**
182
+ * Create a new instance of a renderer path object.
183
+ * @param root The root SVG element.
184
+ * @param style The style object to use for colouring.
185
+ * @return The renderer path object.
186
+ * @internal
187
+ */
188
+ makePathObject(root: SVGElement, style: BlockStyle): IPathObject {
189
+ return new PathObject(root, style, (this.constants_));
190
+ }
191
+
192
+ /**
193
+ * Get the current renderer's constant provider. We assume that when this is
194
+ * called, the renderer has already been initialized.
195
+ * @return The constant provider.
196
+ * @internal
197
+ */
198
+ getConstants(): ConstantProvider {
199
+ return this.constants_;
200
+ }
201
+
202
+ /**
203
+ * Determine whether or not to highlight a connection.
204
+ * @param _conn The connection to determine whether or not to highlight.
205
+ * @return True if we should highlight the connection.
206
+ * @internal
207
+ */
208
+ shouldHighlightConnection(_conn: Connection): boolean {
209
+ return true;
210
+ }
211
+
212
+ /**
213
+ * Checks if an orphaned block can connect to the "end" of the topBlock's
214
+ * block-clump. If the clump is a row the end is the last input. If the clump
215
+ * is a stack, the end is the last next connection. If the clump is neither,
216
+ * then this returns false.
217
+ * @param topBlock The top block of the block clump we want to try and connect
218
+ * to.
219
+ * @param orphanBlock The orphan block that wants to find a home.
220
+ * @param localType The type of the connection being dragged.
221
+ * @return Whether there is a home for the orphan or not.
222
+ * @internal
223
+ */
224
+ orphanCanConnectAtEnd(
225
+ topBlock: BlockSvg, orphanBlock: BlockSvg, localType: number): boolean {
226
+ const orphanConnection = localType === ConnectionType.OUTPUT_VALUE ?
227
+ orphanBlock.outputConnection :
228
+ orphanBlock.previousConnection;
229
+ return !!Connection.getConnectionForOrphanedConnection(
230
+ topBlock as Block, orphanConnection as Connection);
231
+ }
232
+
233
+ /**
234
+ * Chooses a connection preview method based on the available connection, the
235
+ * current dragged connection, and the block being dragged.
236
+ * @param closest The available connection.
237
+ * @param local The connection currently being dragged.
238
+ * @param topBlock The block currently being dragged.
239
+ * @return The preview type to display.
240
+ * @internal
241
+ */
242
+ getConnectionPreviewMethod(
243
+ closest: RenderedConnection, local: RenderedConnection,
244
+ topBlock: BlockSvg): PreviewType {
245
+ if (local.type === ConnectionType.OUTPUT_VALUE ||
246
+ local.type === ConnectionType.PREVIOUS_STATEMENT) {
247
+ if (!closest.isConnected() ||
248
+ this.orphanCanConnectAtEnd(
249
+ topBlock, closest.targetBlock() as BlockSvg, local.type)) {
250
+ return InsertionMarkerManager.PREVIEW_TYPE.INSERTION_MARKER;
251
+ }
252
+ return InsertionMarkerManager.PREVIEW_TYPE.REPLACEMENT_FADE;
253
+ }
254
+
255
+ return InsertionMarkerManager.PREVIEW_TYPE.INSERTION_MARKER;
256
+ }
257
+
258
+ /**
259
+ * Render the block.
260
+ * @param block The block to render.
261
+ * @internal
262
+ */
263
+ render(block: BlockSvg) {
264
+ if (debug.isDebuggerEnabled() && !block.renderingDebugger) {
265
+ block.renderingDebugger = this.makeDebugger_();
266
+ }
267
+ const info = this.makeRenderInfo_(block);
268
+ info.measure();
269
+ this.makeDrawer_(block, info).draw();
270
+ }
271
+ }
@@ -0,0 +1,23 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2019 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import { ConstantProvider as BaseConstantProvider } from '../common/constants.js';
7
+ /**
8
+ * An object that provides constants for rendering blocks in Geras mode.
9
+ * @alias Blockly.geras.ConstantProvider
10
+ */
11
+ export declare class ConstantProvider extends BaseConstantProvider {
12
+ FIELD_TEXT_BASELINE_CENTER: boolean;
13
+ DARK_PATH_OFFSET: number;
14
+ /**
15
+ * The maximum width of a bottom row that follows a statement input and has
16
+ * inputs inline.
17
+ */
18
+ MAX_BOTTOM_WIDTH: number;
19
+ STATEMENT_BOTTOM_SPACER: any;
20
+ /** @internal */
21
+ constructor();
22
+ getCSS_(selector: string): string[];
23
+ }
@@ -0,0 +1,61 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2019 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ /**
8
+ * @fileoverview An object that provides constants for rendering blocks in Geras
9
+ * mode.
10
+ */
11
+
12
+ /**
13
+ * An object that provides constants for rendering blocks in Geras
14
+ * mode.
15
+ * @class
16
+ */
17
+ import * as goog from '../../../closure/goog/goog.js';
18
+ goog.declareModuleId('Blockly.geras.ConstantProvider');
19
+
20
+ import {ConstantProvider as BaseConstantProvider} from '../common/constants.js';
21
+
22
+
23
+ /**
24
+ * An object that provides constants for rendering blocks in Geras mode.
25
+ * @alias Blockly.geras.ConstantProvider
26
+ */
27
+ export class ConstantProvider extends BaseConstantProvider {
28
+ override FIELD_TEXT_BASELINE_CENTER = false;
29
+
30
+ // The dark/shadow path in classic rendering is the same as the normal block
31
+ // path, but translated down one and right one.
32
+ DARK_PATH_OFFSET = 1;
33
+
34
+ /**
35
+ * The maximum width of a bottom row that follows a statement input and has
36
+ * inputs inline.
37
+ */
38
+ MAX_BOTTOM_WIDTH = 30;
39
+ override STATEMENT_BOTTOM_SPACER: AnyDuringMigration;
40
+
41
+ /** @internal */
42
+ constructor() {
43
+ super();
44
+
45
+ this.STATEMENT_BOTTOM_SPACER = -this.NOTCH_HEIGHT / 2;
46
+ }
47
+
48
+ override getCSS_(selector: string) {
49
+ return super.getCSS_(selector)
50
+ .concat(/* eslint-enable indent */
51
+ [
52
+ /* eslint-disable indent */
53
+ // Insertion marker.
54
+ selector + ' .blocklyInsertionMarker>.blocklyPathLight,',
55
+ selector + ' .blocklyInsertionMarker>.blocklyPathDark {',
56
+ 'fill-opacity: ' + this.INSERTION_MARKER_OPACITY + ';',
57
+ 'stroke: none;',
58
+ '}',
59
+ ]);
60
+ }
61
+ }
@@ -0,0 +1,43 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2019 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+ import type { BlockSvg } from '../../block_svg.js';
7
+ import { Drawer as BaseDrawer } from '../common/drawer.js';
8
+ import type { Row } from '../measurables/row.js';
9
+ import type { ConstantProvider } from './constants.js';
10
+ import type { RenderInfo } from './info.js';
11
+ import type { InlineInput } from './measurables/inline_input.js';
12
+ /**
13
+ * An object that draws a block based on the given rendering information.
14
+ * @alias Blockly.geras.Drawer
15
+ */
16
+ export declare class Drawer extends BaseDrawer {
17
+ highlighter_: any;
18
+ constants_: ConstantProvider;
19
+ /**
20
+ * @param block The block to render.
21
+ * @param info An object containing all information needed to render this
22
+ * block.
23
+ * @internal
24
+ */
25
+ constructor(block: BlockSvg, info: RenderInfo);
26
+ draw(): void;
27
+ drawTop_(): void;
28
+ drawJaggedEdge_(row: Row): void;
29
+ drawValueInput_(row: Row): void;
30
+ drawStatementInput_(row: Row): void;
31
+ drawRightSideRow_(row: Row): void;
32
+ drawBottom_(): void;
33
+ /**
34
+ * Add steps for the left side of the block, which may include an output
35
+ * connection
36
+ */
37
+ protected drawLeft_(): void;
38
+ drawInlineInput_(input: InlineInput): void;
39
+ positionInlineInputConnection_(input: InlineInput): void;
40
+ positionStatementInputConnection_(row: Row): void;
41
+ positionExternalValueConnection_(row: Row): void;
42
+ positionNextConnection_(): void;
43
+ }
@@ -7,61 +7,54 @@
7
7
  /**
8
8
  * @fileoverview Renderer that preserves the look and feel of Blockly pre-2019.
9
9
  */
10
- 'use strict';
11
10
 
12
11
  /**
13
12
  * Renderer that preserves the look and feel of Blockly pre-2019.
14
13
  * @class
15
14
  */
16
- goog.module('Blockly.geras.Drawer');
17
-
18
- const debug = goog.require('Blockly.blockRendering.debug');
19
- const svgPaths = goog.require('Blockly.utils.svgPaths');
20
- /* eslint-disable-next-line no-unused-vars */
21
- const {BlockSvg} = goog.requireType('Blockly.BlockSvg');
22
- /* eslint-disable-next-line no-unused-vars */
23
- const {ConstantProvider} = goog.requireType('Blockly.geras.ConstantProvider');
24
- const {Drawer: BaseDrawer} = goog.require('Blockly.blockRendering.Drawer');
25
- const {Highlighter} = goog.require('Blockly.geras.Highlighter');
26
- /* eslint-disable-next-line no-unused-vars */
27
- const {InlineInput} = goog.require('Blockly.geras.InlineInput');
28
- /* eslint-disable-next-line no-unused-vars */
29
- const {PathObject} = goog.requireType('Blockly.geras.PathObject');
30
- /* eslint-disable-next-line no-unused-vars */
31
- const {RenderInfo} = goog.requireType('Blockly.geras.RenderInfo');
15
+ import * as goog from '../../../closure/goog/goog.js';
16
+ goog.declareModuleId('Blockly.geras.Drawer');
17
+
18
+ import type {BlockSvg} from '../../block_svg.js';
19
+ import * as svgPaths from '../../utils/svg_paths.js';
20
+ import * as debug from '../common/debug.js';
21
+ import {Drawer as BaseDrawer} from '../common/drawer.js';
22
+ import type {Row} from '../measurables/row.js';
23
+
24
+ import type {ConstantProvider} from './constants.js';
25
+ import {Highlighter} from './highlighter.js';
26
+ import type {RenderInfo} from './info.js';
27
+ import type {InlineInput} from './measurables/inline_input.js';
28
+ import type {PathObject} from './path_object.js';
32
29
 
33
30
 
34
31
  /**
35
32
  * An object that draws a block based on the given rendering information.
36
- * @extends {BaseDrawer}
37
33
  * @alias Blockly.geras.Drawer
38
34
  */
39
- class Drawer extends BaseDrawer {
35
+ export class Drawer extends BaseDrawer {
36
+ highlighter_: AnyDuringMigration;
37
+ // TODO(b/109816955): remove '!', see go/strict-prop-init-fix.
38
+ override constants_!: ConstantProvider;
39
+
40
40
  /**
41
- * @param {!BlockSvg} block The block to render.
42
- * @param {!RenderInfo} info An object containing all
43
- * information needed to render this block.
44
- * @package
41
+ * @param block The block to render.
42
+ * @param info An object containing all information needed to render this
43
+ * block.
44
+ * @internal
45
45
  */
46
- constructor(block, info) {
46
+ constructor(block: BlockSvg, info: RenderInfo) {
47
47
  super(block, info);
48
48
  // Unlike Thrasos, Geras has highlights and drop shadows.
49
49
  this.highlighter_ = new Highlighter(info);
50
-
51
- /** @type {!ConstantProvider} */
52
- this.constants_;
53
50
  }
54
51
 
55
- /**
56
- * @override
57
- */
58
- draw() {
52
+ override draw() {
59
53
  this.hideHiddenIcons_();
60
54
  this.drawOutline_();
61
55
  this.drawInternals_();
62
56
 
63
- const pathObject =
64
- /** @type {!PathObject} */ (this.block_.pathObject);
57
+ const pathObject = this.block_.pathObject as PathObject;
65
58
  pathObject.setPath(this.outlinePath_ + '\n' + this.inlinePath_);
66
59
  pathObject.setHighlightPath(this.highlighter_.getPath());
67
60
  if (this.info_.RTL) {
@@ -73,57 +66,39 @@ class Drawer extends BaseDrawer {
73
66
  this.recordSizeOnBlock_();
74
67
  }
75
68
 
76
- /**
77
- * @override
78
- */
79
- drawTop_() {
69
+ override drawTop_() {
80
70
  this.highlighter_.drawTopCorner(this.info_.topRow);
81
71
  this.highlighter_.drawRightSideRow(this.info_.topRow);
82
72
 
83
73
  super.drawTop_();
84
74
  }
85
75
 
86
- /**
87
- * @override
88
- */
89
- drawJaggedEdge_(row) {
76
+ override drawJaggedEdge_(row: Row) {
90
77
  this.highlighter_.drawJaggedEdge_(row);
91
78
 
92
79
  super.drawJaggedEdge_(row);
93
80
  }
94
81
 
95
- /**
96
- * @override
97
- */
98
- drawValueInput_(row) {
82
+ override drawValueInput_(row: Row) {
99
83
  this.highlighter_.drawValueInput(row);
100
84
 
101
85
  super.drawValueInput_(row);
102
86
  }
103
87
 
104
- /**
105
- * @override
106
- */
107
- drawStatementInput_(row) {
88
+ override drawStatementInput_(row: Row) {
108
89
  this.highlighter_.drawStatementInput(row);
109
90
 
110
91
  super.drawStatementInput_(row);
111
92
  }
112
93
 
113
- /**
114
- * @override
115
- */
116
- drawRightSideRow_(row) {
94
+ override drawRightSideRow_(row: Row) {
117
95
  this.highlighter_.drawRightSideRow(row);
118
96
 
119
97
  this.outlinePath_ += svgPaths.lineOnAxis('H', row.xPos + row.width) +
120
98
  svgPaths.lineOnAxis('V', row.yPos + row.height);
121
99
  }
122
100
 
123
- /**
124
- * @override
125
- */
126
- drawBottom_() {
101
+ override drawBottom_() {
127
102
  this.highlighter_.drawBottomRow(this.info_.bottomRow);
128
103
 
129
104
  super.drawBottom_();
@@ -132,28 +107,20 @@ class Drawer extends BaseDrawer {
132
107
  /**
133
108
  * Add steps for the left side of the block, which may include an output
134
109
  * connection
135
- * @protected
136
- * @override
137
110
  */
138
- drawLeft_() {
111
+ protected override drawLeft_() {
139
112
  this.highlighter_.drawLeft();
140
113
 
141
114
  super.drawLeft_();
142
115
  }
143
116
 
144
- /**
145
- * @override
146
- */
147
- drawInlineInput_(input) {
148
- this.highlighter_.drawInlineInput(/** @type {!InlineInput} */ (input));
117
+ override drawInlineInput_(input: InlineInput) {
118
+ this.highlighter_.drawInlineInput(input as InlineInput);
149
119
 
150
120
  super.drawInlineInput_(input);
151
121
  }
152
122
 
153
- /**
154
- * @override
155
- */
156
- positionInlineInputConnection_(input) {
123
+ override positionInlineInputConnection_(input: InlineInput) {
157
124
  const yPos = input.centerline - input.height / 2;
158
125
  // Move the connection.
159
126
  if (input.connectionModel) {
@@ -169,10 +136,7 @@ class Drawer extends BaseDrawer {
169
136
  }
170
137
  }
171
138
 
172
- /**
173
- * @override
174
- */
175
- positionStatementInputConnection_(row) {
139
+ override positionStatementInputConnection_(row: Row) {
176
140
  const input = row.getLastInput();
177
141
  if (input.connectionModel) {
178
142
  let connX = row.xPos + row.statementEdge + input.notchOffset;
@@ -186,10 +150,7 @@ class Drawer extends BaseDrawer {
186
150
  }
187
151
  }
188
152
 
189
- /**
190
- * @override
191
- */
192
- positionExternalValueConnection_(row) {
153
+ override positionExternalValueConnection_(row: Row) {
193
154
  const input = row.getLastInput();
194
155
  if (input.connectionModel) {
195
156
  let connX = row.xPos + row.width + this.constants_.DARK_PATH_OFFSET;
@@ -200,21 +161,16 @@ class Drawer extends BaseDrawer {
200
161
  }
201
162
  }
202
163
 
203
- /**
204
- * @override
205
- */
206
- positionNextConnection_() {
164
+ override positionNextConnection_() {
207
165
  const bottomRow = this.info_.bottomRow;
208
166
 
209
167
  if (bottomRow.connection) {
210
168
  const connInfo = bottomRow.connection;
211
169
  const x = connInfo.xPos; // Already contains info about startX.
212
170
  const connX =
213
- (this.info_.RTL ? -x : x) + (this.constants_.DARK_PATH_OFFSET / 2);
171
+ (this.info_.RTL ? -x : x) + this.constants_.DARK_PATH_OFFSET / 2;
214
172
  connInfo.connectionModel.setOffsetInBlock(
215
173
  connX, bottomRow.baseline + this.constants_.DARK_PATH_OFFSET);
216
174
  }
217
175
  }
218
176
  }
219
-
220
- exports.Drawer = Drawer;
@@ -0,0 +1,11 @@
1
+ /** @fileoverview Re-exports of Blockly.geras.* modules. */
2
+ import { ConstantProvider } from './constants.js';
3
+ import { Drawer } from './drawer.js';
4
+ import { HighlightConstantProvider } from './highlight_constants.js';
5
+ import { Highlighter } from './highlighter.js';
6
+ import { RenderInfo } from './info.js';
7
+ import { InlineInput } from './measurables/inline_input.js';
8
+ import { StatementInput } from './measurables/statement_input.js';
9
+ import { PathObject } from './path_object.js';
10
+ import { Renderer } from './renderer.js';
11
+ export { ConstantProvider, Drawer, HighlightConstantProvider, Highlighter, InlineInput, PathObject, Renderer, RenderInfo, StatementInput };
@@ -0,0 +1,37 @@
1
+ /** @fileoverview Re-exports of Blockly.geras.* modules. */
2
+
3
+ /**
4
+ * @license
5
+ * Copyright 2021 Google LLC
6
+ * SPDX-License-Identifier: Apache-2.0
7
+ */
8
+
9
+ /**
10
+ * Re-exports of Blockly.geras.* modules.
11
+ * @namespace Blockly.geras
12
+ */
13
+ import * as goog from '../../../closure/goog/goog.js';
14
+ goog.declareModuleId('Blockly.geras');
15
+
16
+ import {ConstantProvider} from './constants.js';
17
+ import {Drawer} from './drawer.js';
18
+ import {HighlightConstantProvider} from './highlight_constants.js';
19
+ import {Highlighter} from './highlighter.js';
20
+ import {RenderInfo} from './info.js';
21
+ import {InlineInput} from './measurables/inline_input.js';
22
+ import {StatementInput} from './measurables/statement_input.js';
23
+ import {PathObject} from './path_object.js';
24
+ import {Renderer} from './renderer.js';
25
+
26
+
27
+ export {
28
+ ConstantProvider,
29
+ Drawer,
30
+ HighlightConstantProvider,
31
+ Highlighter,
32
+ InlineInput,
33
+ PathObject,
34
+ Renderer,
35
+ RenderInfo,
36
+ StatementInput
37
+ };