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
@@ -1,751 +0,0 @@
1
- /**
2
- * @license
3
- * Copyright 2020 Google LLC
4
- * SPDX-License-Identifier: Apache-2.0
5
- */
6
-
7
- /**
8
- * @fileoverview A toolbox category used to organize blocks in the toolbox.
9
- */
10
- 'use strict';
11
-
12
- /**
13
- * A toolbox category used to organize blocks in the toolbox.
14
- * @class
15
- */
16
- goog.module('Blockly.ToolboxCategory');
17
-
18
- const Css = goog.require('Blockly.Css');
19
- const aria = goog.require('Blockly.utils.aria');
20
- const colourUtils = goog.require('Blockly.utils.colour');
21
- const dom = goog.require('Blockly.utils.dom');
22
- const object = goog.require('Blockly.utils.object');
23
- const parsing = goog.require('Blockly.utils.parsing');
24
- const registry = goog.require('Blockly.registry');
25
- const toolbox = goog.require('Blockly.utils.toolbox');
26
- /* eslint-disable-next-line no-unused-vars */
27
- const {ICollapsibleToolboxItem} = goog.requireType('Blockly.ICollapsibleToolboxItem');
28
- /* eslint-disable-next-line no-unused-vars */
29
- const {ISelectableToolboxItem} = goog.require('Blockly.ISelectableToolboxItem');
30
- /* eslint-disable-next-line no-unused-vars */
31
- const {IToolbox} = goog.requireType('Blockly.IToolbox');
32
- const {ToolboxItem} = goog.require('Blockly.ToolboxItem');
33
-
34
-
35
- /**
36
- * Class for a category in a toolbox.
37
- * @implements {ISelectableToolboxItem}
38
- * @alias Blockly.ToolboxCategory
39
- */
40
- class ToolboxCategory extends ToolboxItem {
41
- /**
42
- * @param {!toolbox.CategoryInfo} categoryDef The information needed
43
- * to create a category in the toolbox.
44
- * @param {!IToolbox} toolbox The parent toolbox for the category.
45
- * @param {ICollapsibleToolboxItem=} opt_parent The parent category or null if
46
- * the category does not have a parent.
47
- */
48
- constructor(categoryDef, toolbox, opt_parent) {
49
- super(categoryDef, toolbox, opt_parent);
50
-
51
- /** @type {!toolbox.CategoryInfo} */
52
- this.toolboxItemDef_;
53
-
54
- /**
55
- * The name that will be displayed on the category.
56
- * @type {string}
57
- * @protected
58
- */
59
- this.name_ = '';
60
-
61
- /**
62
- * The colour of the category.
63
- * @type {string}
64
- * @protected
65
- */
66
- this.colour_ = '';
67
-
68
- /**
69
- * The html container for the category.
70
- * @type {?HTMLDivElement}
71
- * @protected
72
- */
73
- this.htmlDiv_ = null;
74
-
75
- /**
76
- * The html element for the category row.
77
- * @type {?HTMLDivElement}
78
- * @protected
79
- */
80
- this.rowDiv_ = null;
81
-
82
- /**
83
- * The html element that holds children elements of the category row.
84
- * @type {?HTMLDivElement}
85
- * @protected
86
- */
87
- this.rowContents_ = null;
88
-
89
- /**
90
- * The html element for the toolbox icon.
91
- * @type {?Element}
92
- * @protected
93
- */
94
- this.iconDom_ = null;
95
-
96
- /**
97
- * The html element for the toolbox label.
98
- * @type {?Element}
99
- * @protected
100
- */
101
- this.labelDom_ = null;
102
-
103
- /**
104
- * All the css class names that are used to create a category.
105
- * @type {!ToolboxCategory.CssConfig}
106
- * @protected
107
- */
108
- this.cssConfig_ = this.makeDefaultCssConfig_();
109
-
110
- /**
111
- * True if the category is meant to be hidden, false otherwise.
112
- * @type {boolean}
113
- * @protected
114
- */
115
- this.isHidden_ = false;
116
-
117
- /**
118
- * True if this category is disabled, false otherwise.
119
- * @type {boolean}
120
- * @protected
121
- */
122
- this.isDisabled_ = false;
123
-
124
- /**
125
- * The flyout items for this category.
126
- * @type {string|!toolbox.FlyoutItemInfoArray}
127
- * @protected
128
- */
129
- this.flyoutItems_ = [];
130
- }
131
-
132
- /**
133
- * Initializes the toolbox item.
134
- * This includes creating the DOM and updating the state of any items based
135
- * on the info object.
136
- * Init should be called immediately after the construction of the toolbox
137
- * item, to ensure that the category contents are properly parsed.
138
- * @override
139
- */
140
- init() {
141
- this.parseCategoryDef_(this.toolboxItemDef_);
142
- this.parseContents_(this.toolboxItemDef_);
143
- this.createDom_();
144
- if (this.toolboxItemDef_['hidden'] === 'true') {
145
- this.hide();
146
- }
147
- }
148
-
149
-
150
- /**
151
- * Creates an object holding the default classes for a category.
152
- * @return {!ToolboxCategory.CssConfig} The configuration object holding
153
- * all the CSS classes for a category.
154
- * @protected
155
- */
156
- makeDefaultCssConfig_() {
157
- return {
158
- 'container': 'blocklyToolboxCategory',
159
- 'row': 'blocklyTreeRow',
160
- 'rowcontentcontainer': 'blocklyTreeRowContentContainer',
161
- 'icon': 'blocklyTreeIcon',
162
- 'label': 'blocklyTreeLabel',
163
- 'contents': 'blocklyToolboxContents',
164
- 'selected': 'blocklyTreeSelected',
165
- 'openicon': 'blocklyTreeIconOpen',
166
- 'closedicon': 'blocklyTreeIconClosed',
167
- };
168
- }
169
-
170
- /**
171
- * Parses the contents array depending on if the category is a dynamic
172
- * category, or if its contents are meant to be shown in the flyout.
173
- * @param {!toolbox.CategoryInfo} categoryDef The information needed
174
- * to create a category.
175
- * @protected
176
- */
177
- parseContents_(categoryDef) {
178
- const contents = categoryDef['contents'];
179
-
180
- if (categoryDef['custom']) {
181
- this.flyoutItems_ = categoryDef['custom'];
182
- } else if (contents) {
183
- for (let i = 0; i < contents.length; i++) {
184
- const itemDef = contents[i];
185
- const flyoutItem =
186
- /** @type {toolbox.FlyoutItemInfo} */ (itemDef);
187
- this.flyoutItems_.push(flyoutItem);
188
- }
189
- }
190
- }
191
-
192
- /**
193
- * Parses the non-contents parts of the category def.
194
- * @param {!toolbox.CategoryInfo} categoryDef The information needed to create
195
- * a category.
196
- * @protected
197
- */
198
- parseCategoryDef_(categoryDef) {
199
- this.name_ = parsing.replaceMessageReferences(categoryDef['name']);
200
- this.colour_ = this.getColour_(categoryDef);
201
- object.mixin(
202
- this.cssConfig_, categoryDef['cssconfig'] || categoryDef['cssConfig']);
203
- }
204
-
205
- /**
206
- * Creates the DOM for the category.
207
- * @return {!HTMLDivElement} The parent element for the category.
208
- * @protected
209
- */
210
- createDom_() {
211
- this.htmlDiv_ = this.createContainer_();
212
- aria.setRole(this.htmlDiv_, aria.Role.TREEITEM);
213
- aria.setState(
214
- /** @type {!HTMLDivElement} */ (this.htmlDiv_), aria.State.SELECTED,
215
- false);
216
- aria.setState(
217
- /** @type {!HTMLDivElement} */ (this.htmlDiv_), aria.State.LEVEL,
218
- this.level_);
219
-
220
- this.rowDiv_ = this.createRowContainer_();
221
- this.rowDiv_.style.pointerEvents = 'auto';
222
- this.htmlDiv_.appendChild(this.rowDiv_);
223
-
224
- this.rowContents_ = this.createRowContentsContainer_();
225
- this.rowContents_.style.pointerEvents = 'none';
226
- this.rowDiv_.appendChild(this.rowContents_);
227
-
228
- this.iconDom_ = this.createIconDom_();
229
- aria.setRole(this.iconDom_, aria.Role.PRESENTATION);
230
- this.rowContents_.appendChild(this.iconDom_);
231
-
232
- this.labelDom_ = this.createLabelDom_(this.name_);
233
- this.rowContents_.appendChild(this.labelDom_);
234
- aria.setState(
235
- /** @type {!Element} */ (this.htmlDiv_), aria.State.LABELLEDBY,
236
- this.labelDom_.getAttribute('id'));
237
-
238
- this.addColourBorder_(this.colour_);
239
-
240
- return this.htmlDiv_;
241
- }
242
-
243
- /**
244
- * Creates the container that holds the row and any subcategories.
245
- * @return {!HTMLDivElement} The div that holds the icon and the label.
246
- * @protected
247
- */
248
- createContainer_() {
249
- const container =
250
- /** @type {!HTMLDivElement} */ (document.createElement('div'));
251
- dom.addClass(container, this.cssConfig_['container']);
252
- return container;
253
- }
254
-
255
- /**
256
- * Creates the parent of the contents container. All clicks will happen on
257
- * this div.
258
- * @return {!HTMLDivElement} The div that holds the contents container.
259
- * @protected
260
- */
261
- createRowContainer_() {
262
- const rowDiv =
263
- /** @type {!HTMLDivElement} */ (document.createElement('div'));
264
- dom.addClass(rowDiv, this.cssConfig_['row']);
265
- let nestedPadding = ToolboxCategory.nestedPadding * this.getLevel();
266
- nestedPadding = nestedPadding.toString() + 'px';
267
- this.workspace_.RTL ? rowDiv.style.paddingRight = nestedPadding :
268
- rowDiv.style.paddingLeft = nestedPadding;
269
- return rowDiv;
270
- }
271
-
272
- /**
273
- * Creates the container for the label and icon.
274
- * This is necessary so we can set all subcategory pointer events to none.
275
- * @return {!HTMLDivElement} The div that holds the icon and the label.
276
- * @protected
277
- */
278
- createRowContentsContainer_() {
279
- const contentsContainer =
280
- /** @type {!HTMLDivElement} */ (document.createElement('div'));
281
- dom.addClass(contentsContainer, this.cssConfig_['rowcontentcontainer']);
282
- return contentsContainer;
283
- }
284
-
285
- /**
286
- * Creates the span that holds the category icon.
287
- * @return {!Element} The span that holds the category icon.
288
- * @protected
289
- */
290
- createIconDom_() {
291
- const toolboxIcon = document.createElement('span');
292
- if (!this.parentToolbox_.isHorizontal()) {
293
- dom.addClass(toolboxIcon, this.cssConfig_['icon']);
294
- }
295
-
296
- toolboxIcon.style.display = 'inline-block';
297
- return toolboxIcon;
298
- }
299
-
300
- /**
301
- * Creates the span that holds the category label.
302
- * This should have an ID for accessibility purposes.
303
- * @param {string} name The name of the category.
304
- * @return {!Element} The span that holds the category label.
305
- * @protected
306
- */
307
- createLabelDom_(name) {
308
- const toolboxLabel = document.createElement('span');
309
- toolboxLabel.setAttribute('id', this.getId() + '.label');
310
- toolboxLabel.textContent = name;
311
- dom.addClass(toolboxLabel, this.cssConfig_['label']);
312
- return toolboxLabel;
313
- }
314
-
315
- /**
316
- * Updates the colour for this category.
317
- * @public
318
- */
319
- refreshTheme() {
320
- this.colour_ = this.getColour_(/** @type {toolbox.CategoryInfo} **/
321
- (this.toolboxItemDef_));
322
- this.addColourBorder_(this.colour_);
323
- }
324
-
325
- /**
326
- * Add the strip of colour to the toolbox category.
327
- * @param {string} colour The category colour.
328
- * @protected
329
- */
330
- addColourBorder_(colour) {
331
- if (colour) {
332
- const border =
333
- ToolboxCategory.borderWidth + 'px solid ' + (colour || '#ddd');
334
- if (this.workspace_.RTL) {
335
- this.rowDiv_.style.borderRight = border;
336
- } else {
337
- this.rowDiv_.style.borderLeft = border;
338
- }
339
- }
340
- }
341
-
342
- /**
343
- * Gets either the colour or the style for a category.
344
- * @param {!toolbox.CategoryInfo} categoryDef The object holding
345
- * information on the category.
346
- * @return {string} The hex colour for the category.
347
- * @protected
348
- */
349
- getColour_(categoryDef) {
350
- const styleName =
351
- categoryDef['categorystyle'] || categoryDef['categoryStyle'];
352
- const colour = categoryDef['colour'];
353
-
354
- if (colour && styleName) {
355
- console.warn(
356
- 'Toolbox category "' + this.name_ +
357
- '" must not have both a style and a colour');
358
- } else if (styleName) {
359
- return this.getColourfromStyle_(styleName);
360
- } else {
361
- return this.parseColour_(colour);
362
- }
363
- return '';
364
- }
365
-
366
- /**
367
- * Sets the colour for the category using the style name and returns the new
368
- * colour as a hex string.
369
- * @param {string} styleName Name of the style.
370
- * @return {string} The hex colour for the category.
371
- * @private
372
- */
373
- getColourfromStyle_(styleName) {
374
- const theme = this.workspace_.getTheme();
375
- if (styleName && theme) {
376
- const style = theme.categoryStyles[styleName];
377
- if (style && style.colour) {
378
- return this.parseColour_(style.colour);
379
- } else {
380
- console.warn(
381
- 'Style "' + styleName + '" must exist and contain a colour value');
382
- }
383
- }
384
- return '';
385
- }
386
-
387
- /**
388
- * Gets the HTML element that is clickable.
389
- * The parent toolbox element receives clicks. The parent toolbox will add an
390
- * ID to this element so it can pass the onClick event to the correct
391
- * toolboxItem.
392
- * @return {!Element} The HTML element that receives clicks.
393
- * @public
394
- */
395
- getClickTarget() {
396
- return /** @type {!Element} */ (this.rowDiv_);
397
- }
398
-
399
- /**
400
- * Parses the colour on the category.
401
- * @param {number|string} colourValue HSV hue value (0 to 360), #RRGGBB
402
- * string, or a message reference string pointing to one of those two
403
- * values.
404
- * @return {string} The hex colour for the category.
405
- * @private
406
- */
407
- parseColour_(colourValue) {
408
- // Decode the colour for any potential message references
409
- // (eg. `%{BKY_MATH_HUE}`).
410
- const colour = parsing.replaceMessageReferences(colourValue);
411
- if (colour == null || colour === '') {
412
- // No attribute. No colour.
413
- return '';
414
- } else {
415
- const hue = Number(colour);
416
- if (!isNaN(hue)) {
417
- return colourUtils.hueToHex(hue);
418
- } else {
419
- const hex = colourUtils.parse(colour);
420
- if (hex) {
421
- return hex;
422
- } else {
423
- console.warn(
424
- 'Toolbox category "' + this.name_ +
425
- '" has unrecognized colour attribute: ' + colour);
426
- return '';
427
- }
428
- }
429
- }
430
- }
431
-
432
- /**
433
- * Adds appropriate classes to display an open icon.
434
- * @param {?Element} iconDiv The div that holds the icon.
435
- * @protected
436
- */
437
- openIcon_(iconDiv) {
438
- if (!iconDiv) {
439
- return;
440
- }
441
- dom.removeClasses(iconDiv, this.cssConfig_['closedicon']);
442
- dom.addClass(iconDiv, this.cssConfig_['openicon']);
443
- }
444
-
445
- /**
446
- * Adds appropriate classes to display a closed icon.
447
- * @param {?Element} iconDiv The div that holds the icon.
448
- * @protected
449
- */
450
- closeIcon_(iconDiv) {
451
- if (!iconDiv) {
452
- return;
453
- }
454
- dom.removeClasses(iconDiv, this.cssConfig_['openicon']);
455
- dom.addClass(iconDiv, this.cssConfig_['closedicon']);
456
- }
457
-
458
- /**
459
- * Sets whether the category is visible or not.
460
- * For a category to be visible its parent category must also be expanded.
461
- * @param {boolean} isVisible True if category should be visible.
462
- * @protected
463
- */
464
- setVisible_(isVisible) {
465
- this.htmlDiv_.style.display = isVisible ? 'block' : 'none';
466
- this.isHidden_ = !isVisible;
467
-
468
- if (this.parentToolbox_.getSelectedItem() === this) {
469
- this.parentToolbox_.clearSelection();
470
- }
471
- }
472
-
473
- /**
474
- * Hide the category.
475
- */
476
- hide() {
477
- this.setVisible_(false);
478
- }
479
-
480
- /**
481
- * Show the category. Category will only appear if its parent category is also
482
- * expanded.
483
- */
484
- show() {
485
- this.setVisible_(true);
486
- }
487
-
488
- /**
489
- * Whether the category is visible.
490
- * A category is only visible if all of its ancestors are expanded and
491
- * isHidden_ is false.
492
- * @return {boolean} True if the category is visible, false otherwise.
493
- * @public
494
- */
495
- isVisible() {
496
- return !this.isHidden_ && this.allAncestorsExpanded_();
497
- }
498
-
499
- /**
500
- * Whether all ancestors of a category (parent and parent's parent, etc.) are
501
- * expanded.
502
- * @return {boolean} True only if every ancestor is expanded
503
- * @protected
504
- */
505
- allAncestorsExpanded_() {
506
- let category = this;
507
- while (category.getParent()) {
508
- category = category.getParent();
509
- if (!category.isExpanded()) {
510
- return false;
511
- }
512
- }
513
- return true;
514
- }
515
-
516
- /**
517
- * @override
518
- */
519
- isSelectable() {
520
- return this.isVisible() && !this.isDisabled_;
521
- }
522
-
523
- /**
524
- * Handles when the toolbox item is clicked.
525
- * @param {!Event} _e Click event to handle.
526
- * @public
527
- */
528
- onClick(_e) {
529
- // No-op
530
- }
531
-
532
- /**
533
- * Sets the current category as selected.
534
- * @param {boolean} isSelected True if this category is selected, false
535
- * otherwise.
536
- * @public
537
- */
538
- setSelected(isSelected) {
539
- if (isSelected) {
540
- const defaultColour =
541
- this.parseColour_(ToolboxCategory.defaultBackgroundColour);
542
- this.rowDiv_.style.backgroundColor = this.colour_ || defaultColour;
543
- dom.addClass(this.rowDiv_, this.cssConfig_['selected']);
544
- } else {
545
- this.rowDiv_.style.backgroundColor = '';
546
- dom.removeClass(this.rowDiv_, this.cssConfig_['selected']);
547
- }
548
- aria.setState(
549
- /** @type {!Element} */ (this.htmlDiv_), aria.State.SELECTED,
550
- isSelected);
551
- }
552
-
553
- /**
554
- * Sets whether the category is disabled.
555
- * @param {boolean} isDisabled True to disable the category, false otherwise.
556
- */
557
- setDisabled(isDisabled) {
558
- this.isDisabled_ = isDisabled;
559
- this.getDiv().setAttribute('disabled', isDisabled);
560
- isDisabled ? this.getDiv().setAttribute('disabled', 'true') :
561
- this.getDiv().removeAttribute('disabled');
562
- }
563
-
564
- /**
565
- * Gets the name of the category. Used for emitting events.
566
- * @return {string} The name of the toolbox item.
567
- * @public
568
- */
569
- getName() {
570
- return this.name_;
571
- }
572
-
573
- /**
574
- * @override
575
- */
576
- getParent() {
577
- return this.parent_;
578
- }
579
-
580
- /**
581
- * @override
582
- */
583
- getDiv() {
584
- return this.htmlDiv_;
585
- }
586
-
587
- /**
588
- * Gets the contents of the category. These are items that are meant to be
589
- * displayed in the flyout.
590
- * @return {!toolbox.FlyoutItemInfoArray|string} The definition
591
- * of items to be displayed in the flyout.
592
- * @public
593
- */
594
- getContents() {
595
- return this.flyoutItems_;
596
- }
597
-
598
- /**
599
- * Updates the contents to be displayed in the flyout.
600
- * If the flyout is open when the contents are updated, refreshSelection on
601
- * the toolbox must also be called.
602
- * @param {!toolbox.FlyoutDefinition|string} contents The contents
603
- * to be displayed in the flyout. A string can be supplied to create a
604
- * dynamic category.
605
- * @public
606
- */
607
- updateFlyoutContents(contents) {
608
- this.flyoutItems_ = [];
609
-
610
- if (typeof contents === 'string') {
611
- this.toolboxItemDef_['custom'] = contents;
612
- } else {
613
- // Removes old custom field when contents is updated.
614
- delete this.toolboxItemDef_['custom'];
615
- this.toolboxItemDef_['contents'] =
616
- toolbox.convertFlyoutDefToJsonArray(contents);
617
- }
618
- this.parseContents_(
619
- /** @type {toolbox.CategoryInfo} */ (this.toolboxItemDef_));
620
- }
621
-
622
- /**
623
- * @override
624
- */
625
- dispose() {
626
- dom.removeNode(this.htmlDiv_);
627
- }
628
- }
629
-
630
- /**
631
- * All the CSS class names that are used to create a category.
632
- * @typedef {{
633
- * container:(string|undefined),
634
- * row:(string|undefined),
635
- * rowcontentcontainer:(string|undefined),
636
- * icon:(string|undefined),
637
- * label:(string|undefined),
638
- * selected:(string|undefined),
639
- * openicon:(string|undefined),
640
- * closedicon:(string|undefined)
641
- * }}
642
- */
643
- ToolboxCategory.CssConfig;
644
-
645
- /**
646
- * Name used for registering a toolbox category.
647
- * @type {string}
648
- */
649
- ToolboxCategory.registrationName = 'category';
650
-
651
- /**
652
- * The number of pixels to move the category over at each nested level.
653
- * @type {number}
654
- */
655
- ToolboxCategory.nestedPadding = 19;
656
-
657
- /**
658
- * The width in pixels of the strip of colour next to each category.
659
- * @type {number}
660
- */
661
- ToolboxCategory.borderWidth = 8;
662
-
663
- /**
664
- * The default colour of the category. This is used as the background colour of
665
- * the category when it is selected.
666
- * @type {string}
667
- */
668
- ToolboxCategory.defaultBackgroundColour = '#57e';
669
-
670
- /**
671
- * CSS for Toolbox. See css.js for use.
672
- */
673
- Css.register(`
674
- .blocklyTreeRow:not(.blocklyTreeSelected):hover {
675
- background-color: rgba(255, 255, 255, .2);
676
- }
677
-
678
- .blocklyToolboxDiv[layout="h"] .blocklyToolboxCategory {
679
- margin: 1px 5px 1px 0;
680
- }
681
-
682
- .blocklyToolboxDiv[dir="RTL"][layout="h"] .blocklyToolboxCategory {
683
- margin: 1px 0 1px 5px;
684
- }
685
-
686
- .blocklyTreeRow {
687
- height: 22px;
688
- line-height: 22px;
689
- margin-bottom: 3px;
690
- padding-right: 8px;
691
- white-space: nowrap;
692
- }
693
-
694
- .blocklyToolboxDiv[dir="RTL"] .blocklyTreeRow {
695
- margin-left: 8px;
696
- padding-right: 0;
697
- }
698
-
699
- .blocklyTreeIcon {
700
- background-image: url(<<<PATH>>>/sprites.png);
701
- height: 16px;
702
- vertical-align: middle;
703
- visibility: hidden;
704
- width: 16px;
705
- }
706
-
707
- .blocklyTreeIconClosed {
708
- background-position: -32px -1px;
709
- }
710
-
711
- .blocklyToolboxDiv[dir="RTL"] .blocklyTreeIconClosed {
712
- background-position: 0 -1px;
713
- }
714
-
715
- .blocklyTreeSelected>.blocklyTreeIconClosed {
716
- background-position: -32px -17px;
717
- }
718
-
719
- .blocklyToolboxDiv[dir="RTL"] .blocklyTreeSelected>.blocklyTreeIconClosed {
720
- background-position: 0 -17px;
721
- }
722
-
723
- .blocklyTreeIconOpen {
724
- background-position: -16px -1px;
725
- }
726
-
727
- .blocklyTreeSelected>.blocklyTreeIconOpen {
728
- background-position: -16px -17px;
729
- }
730
-
731
- .blocklyTreeLabel {
732
- cursor: default;
733
- font: 16px sans-serif;
734
- padding: 0 3px;
735
- vertical-align: middle;
736
- }
737
-
738
- .blocklyToolboxDelete .blocklyTreeLabel {
739
- cursor: url("<<<PATH>>>/handdelete.cur"), auto;
740
- }
741
-
742
- .blocklyTreeSelected .blocklyTreeLabel {
743
- color: #fff;
744
- }
745
- `);
746
-
747
- registry.register(
748
- registry.Type.TOOLBOX_ITEM, ToolboxCategory.registrationName,
749
- ToolboxCategory);
750
-
751
- exports.ToolboxCategory = ToolboxCategory;