blockly 8.0.4 → 8.0.5-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/blockly.min.js +2421 -2688
- package/blockly_compressed.js +1499 -1994
- package/blockly_compressed.js.map +1 -1
- package/blocks/blocks.js +3 -2
- package/blocks/colour.js +3 -1
- package/blocks/lists.js +94 -22
- package/blocks/logic.js +14 -6
- package/blocks/loops.js +5 -3
- package/blocks/math.js +3 -1
- package/blocks/procedures.js +3 -1
- package/blocks/text.js +14 -6
- package/blocks/variables.js +3 -1
- package/blocks/variables_dynamic.js +3 -1
- package/blocks.d.ts +0 -2
- package/blocks_compressed.js +189 -171
- package/blocks_compressed.js.map +1 -1
- package/closure/goog/base.d.ts +1 -0
- package/closure/goog/base_minimal.d.ts +18 -0
- package/closure/goog/goog.d.ts +25 -0
- package/core/any_aliases.d.ts +1 -0
- package/core/any_aliases.ts +1 -0
- package/core/block.d.ts +779 -0
- package/core/{block.js → block.ts} +610 -719
- package/core/block_animations.d.ts +33 -0
- package/core/{block_animations.js → block_animations.ts} +75 -79
- package/core/block_drag_surface.d.ts +111 -0
- package/core/{block_drag_surface.js → block_drag_surface.ts} +85 -117
- package/core/block_dragger.d.ts +143 -0
- package/core/{block_dragger.js → block_dragger.ts} +139 -176
- package/core/block_svg.d.ts +588 -0
- package/core/{block_svg.js → block_svg.ts} +494 -630
- package/core/blockly.d.ts +562 -0
- package/core/blockly.js +1 -1
- package/core/blockly.ts +749 -0
- package/core/blockly_options.d.ts +69 -0
- package/core/blockly_options.ts +81 -0
- package/core/blocks.d.ts +17 -0
- package/core/{blocks.js → blocks.ts} +4 -8
- package/core/browser_events.d.ts +85 -0
- package/core/{browser_events.js → browser_events.ts} +98 -93
- package/core/bubble.d.ts +279 -0
- package/core/{bubble.js → bubble.ts} +277 -370
- package/core/bubble_dragger.d.ts +73 -0
- package/core/bubble_dragger.ts +229 -0
- package/core/bump_objects.d.ts +34 -0
- package/core/{bump_objects.js → bump_objects.ts} +54 -52
- package/core/clipboard.d.ts +42 -0
- package/core/clipboard.ts +91 -0
- package/core/comment.d.ts +113 -0
- package/core/{comment.js → comment.ts} +135 -185
- package/core/common.d.ts +129 -0
- package/core/{common.js → common.ts} +105 -82
- package/core/component_manager.d.ts +91 -0
- package/core/component_manager.ts +211 -0
- package/core/config.d.ts +23 -0
- package/core/{config.js → config.ts} +12 -19
- package/core/connection.d.ts +232 -0
- package/core/{connection.js → connection.ts} +187 -237
- package/core/connection_checker.d.ts +78 -0
- package/core/{connection_checker.js → connection_checker.ts} +66 -77
- package/core/connection_db.d.ts +91 -0
- package/core/{connection_db.js → connection_db.ts} +62 -87
- package/core/connection_type.d.ts +15 -0
- package/core/{connection_type.js → connection_type.ts} +8 -12
- package/core/constants.d.ts +15 -0
- package/core/{constants.js → constants.ts} +4 -8
- package/core/contextmenu.d.ts +80 -0
- package/core/{contextmenu.js → contextmenu.ts} +118 -153
- package/core/contextmenu_items.d.ts +77 -0
- package/core/contextmenu_items.ts +576 -0
- package/core/contextmenu_registry.d.ts +105 -0
- package/core/contextmenu_registry.ts +179 -0
- package/core/css.d.ts +24 -0
- package/core/{css.js → css.ts} +16 -24
- package/core/delete_area.d.ts +47 -0
- package/core/delete_area.ts +82 -0
- package/core/dialog.d.ts +61 -0
- package/core/dialog.ts +127 -0
- package/core/drag_target.d.ts +63 -0
- package/core/drag_target.ts +94 -0
- package/core/dropdowndiv.d.ts +155 -0
- package/core/{dropdowndiv.js → dropdowndiv.ts} +262 -333
- package/core/events/events.d.ts +102 -0
- package/core/events/events.ts +123 -0
- package/core/events/events_abstract.d.ts +51 -0
- package/core/events/events_abstract.ts +112 -0
- package/core/events/events_block_base.d.ts +31 -0
- package/core/events/events_block_base.ts +65 -0
- package/core/events/events_block_change.d.ts +55 -0
- package/core/events/{events_block_change.js → events_block_change.ts} +45 -48
- package/core/events/events_block_create.d.ts +35 -0
- package/core/events/{events_block_create.js → events_block_create.ts} +30 -35
- package/core/events/events_block_delete.d.ts +36 -0
- package/core/events/{events_block_delete.js → events_block_delete.ts} +34 -39
- package/core/events/events_block_drag.d.ts +36 -0
- package/core/events/events_block_drag.ts +82 -0
- package/core/events/events_block_move.d.ts +51 -0
- package/core/events/{events_block_move.js → events_block_move.ts} +54 -50
- package/core/events/events_bubble_open.d.ts +35 -0
- package/core/events/events_bubble_open.ts +82 -0
- package/core/events/events_click.d.ts +36 -0
- package/core/events/{events_click.js → events_click.ts} +27 -30
- package/core/events/events_comment_base.d.ts +39 -0
- package/core/events/events_comment_base.ts +107 -0
- package/core/events/events_comment_change.d.ts +43 -0
- package/core/events/{events_comment_change.js → events_comment_change.ts} +31 -28
- package/core/events/events_comment_create.d.ts +35 -0
- package/core/events/{events_comment_create.js → events_comment_create.ts} +24 -26
- package/core/events/events_comment_delete.d.ts +35 -0
- package/core/events/{events_comment_delete.js → events_comment_delete.ts} +20 -24
- package/core/events/events_comment_move.d.ts +55 -0
- package/core/events/{events_comment_move.js → events_comment_move.ts} +39 -42
- package/core/events/events_marker_move.d.ts +40 -0
- package/core/events/events_marker_move.ts +99 -0
- package/core/events/events_selected.d.ts +34 -0
- package/core/events/events_selected.ts +78 -0
- package/core/events/events_theme_change.d.ts +30 -0
- package/core/events/{events_theme_change.js → events_theme_change.ts} +19 -24
- package/core/events/events_toolbox_item_select.d.ts +34 -0
- package/core/events/events_toolbox_item_select.ts +79 -0
- package/core/events/events_trashcan_open.d.ts +31 -0
- package/core/events/events_trashcan_open.ts +68 -0
- package/core/events/events_ui.d.ts +37 -0
- package/core/events/{events_ui.js → events_ui.ts} +27 -26
- package/core/events/events_ui_base.d.ts +26 -0
- package/core/events/{events_ui_base.js → events_ui_base.ts} +17 -26
- package/core/events/events_var_base.d.ts +31 -0
- package/core/events/events_var_base.ts +65 -0
- package/core/events/events_var_create.d.ts +35 -0
- package/core/events/{events_var_create.js → events_var_create.ts} +24 -25
- package/core/events/events_var_delete.d.ts +35 -0
- package/core/events/{events_var_delete.js → events_var_delete.ts} +24 -25
- package/core/events/events_var_rename.d.ts +36 -0
- package/core/events/{events_var_rename.js → events_var_rename.ts} +25 -26
- package/core/events/events_viewport.d.ts +39 -0
- package/core/events/events_viewport.ts +100 -0
- package/core/events/utils.d.ts +272 -0
- package/core/events/{utils.js → utils.ts} +148 -219
- package/core/events/workspace_events.d.ts +36 -0
- package/core/events/workspace_events.ts +86 -0
- package/core/extensions.d.ts +107 -0
- package/core/{extensions.js → extensions.ts} +153 -172
- package/core/field.d.ts +534 -0
- package/core/{field.js → field.ts} +413 -489
- package/core/field_angle.d.ts +176 -0
- package/core/field_angle.ts +563 -0
- package/core/field_checkbox.d.ts +124 -0
- package/core/field_checkbox.ts +243 -0
- package/core/field_colour.d.ts +200 -0
- package/core/field_colour.ts +632 -0
- package/core/field_dropdown.d.ts +222 -0
- package/core/{field_dropdown.js → field_dropdown.ts} +277 -299
- package/core/field_image.d.ts +134 -0
- package/core/field_image.ts +282 -0
- package/core/field_label.d.ts +71 -0
- package/core/field_label.ts +152 -0
- package/core/field_label_serializable.d.ts +42 -0
- package/core/field_label_serializable.ts +76 -0
- package/core/field_multilineinput.d.ts +146 -0
- package/core/{field_multilineinput.js → field_multilineinput.ts} +166 -163
- package/core/field_number.d.ts +156 -0
- package/core/{field_number.js → field_number.ts} +110 -123
- package/core/field_registry.d.ts +45 -0
- package/core/{field_registry.js → field_registry.ts} +37 -30
- package/core/field_textinput.d.ts +219 -0
- package/core/field_textinput.ts +591 -0
- package/core/field_variable.d.ts +217 -0
- package/core/{field_variable.js → field_variable.ts} +174 -187
- package/core/flyout_base.d.ts +459 -0
- package/core/{flyout_base.js → flyout_base.ts} +429 -518
- package/core/flyout_button.d.ts +81 -0
- package/core/flyout_button.ts +292 -0
- package/core/flyout_horizontal.d.ts +82 -0
- package/core/{flyout_horizontal.js → flyout_horizontal.ts} +97 -107
- package/core/flyout_metrics_manager.d.ts +40 -0
- package/core/{flyout_metrics_manager.js → flyout_metrics_manager.ts} +22 -34
- package/core/flyout_vertical.d.ts +83 -0
- package/core/{flyout_vertical.js → flyout_vertical.ts} +106 -117
- package/core/generator.d.ts +205 -0
- package/core/{generator.js → generator.ts} +168 -193
- package/core/gesture.d.ts +357 -0
- package/core/{gesture.js → gesture.ts} +289 -369
- package/core/grid.d.ts +83 -0
- package/core/grid.ts +192 -0
- package/core/icon.d.ts +78 -0
- package/core/icon.ts +189 -0
- package/core/inject.d.ts +15 -0
- package/core/{inject.js → inject.ts} +101 -100
- package/core/input.d.ts +128 -0
- package/core/input.ts +309 -0
- package/core/input_types.d.ts +14 -0
- package/core/{input_types.js → input_types.ts} +8 -12
- package/core/insertion_marker_manager.d.ts +212 -0
- package/core/{insertion_marker_manager.js → insertion_marker_manager.ts} +234 -236
- package/core/interfaces/i_ast_node_location.d.ts +11 -0
- package/core/interfaces/{i_ast_node_location.js → i_ast_node_location.ts} +4 -7
- package/core/interfaces/i_ast_node_location_svg.d.ts +22 -0
- package/core/interfaces/i_ast_node_location_svg.ts +37 -0
- package/core/interfaces/i_ast_node_location_with_block.d.ts +18 -0
- package/core/interfaces/i_ast_node_location_with_block.ts +38 -0
- package/core/interfaces/i_autohideable.d.ts +18 -0
- package/core/interfaces/i_autohideable.ts +34 -0
- package/core/interfaces/i_block_dragger.d.ts +43 -0
- package/core/interfaces/i_block_dragger.ts +67 -0
- package/core/interfaces/i_bounded_element.d.ts +24 -0
- package/core/interfaces/i_bounded_element.ts +42 -0
- package/core/interfaces/i_bubble.d.ts +59 -0
- package/core/interfaces/i_bubble.ts +88 -0
- package/core/interfaces/i_collapsible_toolbox_item.d.ts +26 -0
- package/core/interfaces/i_collapsible_toolbox_item.ts +47 -0
- package/core/interfaces/i_component.d.ts +17 -0
- package/core/interfaces/{i_component.js → i_component.ts} +9 -14
- package/core/interfaces/i_connection_checker.d.ts +69 -0
- package/core/interfaces/i_connection_checker.ts +102 -0
- package/core/interfaces/i_contextmenu.d.ts +13 -0
- package/core/interfaces/i_contextmenu.ts +26 -0
- package/core/interfaces/i_copyable.d.ts +24 -0
- package/core/interfaces/i_copyable.ts +40 -0
- package/core/interfaces/i_deletable.d.ts +16 -0
- package/core/interfaces/{i_deletable.js → i_deletable.ts} +9 -13
- package/core/interfaces/i_delete_area.d.ts +25 -0
- package/core/interfaces/i_delete_area.ts +46 -0
- package/core/interfaces/i_drag_target.d.ts +53 -0
- package/core/interfaces/i_drag_target.ts +84 -0
- package/core/interfaces/i_draggable.d.ts +12 -0
- package/core/interfaces/{i_draggable.js → i_draggable.ts} +4 -10
- package/core/interfaces/i_flyout.d.ts +134 -0
- package/core/interfaces/i_flyout.ts +186 -0
- package/core/interfaces/i_keyboard_accessible.d.ts +18 -0
- package/core/interfaces/i_keyboard_accessible.ts +35 -0
- package/core/interfaces/i_metrics_manager.d.ts +117 -0
- package/core/interfaces/i_metrics_manager.ts +151 -0
- package/core/interfaces/i_movable.d.ts +16 -0
- package/core/interfaces/{i_movable.js → i_movable.ts} +9 -13
- package/core/interfaces/i_positionable.d.ts +27 -0
- package/core/interfaces/i_positionable.ts +50 -0
- package/core/interfaces/i_registrable.d.ts +11 -0
- package/core/interfaces/{i_registrable.js → i_registrable.ts} +3 -7
- package/core/interfaces/i_registrable_field.d.ts +17 -0
- package/core/interfaces/{i_registrable_field.js → i_registrable_field.ts} +8 -16
- package/core/interfaces/i_selectable.d.ts +18 -0
- package/core/interfaces/i_selectable.ts +34 -0
- package/core/interfaces/i_selectable_toolbox_item.d.ts +42 -0
- package/core/interfaces/i_selectable_toolbox_item.ts +64 -0
- package/core/interfaces/i_serializer.d.ts +42 -0
- package/core/interfaces/i_serializer.ts +65 -0
- package/core/interfaces/i_styleable.d.ts +21 -0
- package/core/interfaces/i_styleable.ts +35 -0
- package/core/interfaces/i_toolbox.d.ts +85 -0
- package/core/interfaces/i_toolbox.ts +127 -0
- package/core/interfaces/i_toolbox_item.d.ts +62 -0
- package/core/interfaces/i_toolbox_item.ts +84 -0
- package/core/internal_constants.d.ts +40 -0
- package/core/{internal_constants.js → internal_constants.ts} +13 -18
- package/core/keyboard_nav/ast_node.d.ts +239 -0
- package/core/keyboard_nav/{ast_node.js → ast_node.ts} +207 -231
- package/core/keyboard_nav/basic_cursor.d.ts +88 -0
- package/core/keyboard_nav/{basic_cursor.js → basic_cursor.ts} +55 -66
- package/core/keyboard_nav/cursor.d.ts +41 -0
- package/core/keyboard_nav/{cursor.js → cursor.ts} +25 -35
- package/core/keyboard_nav/marker.d.ts +58 -0
- package/core/keyboard_nav/{marker.js → marker.ts} +36 -55
- package/core/keyboard_nav/tab_navigate_cursor.d.ts +19 -0
- package/core/keyboard_nav/{tab_navigate_cursor.js → tab_navigate_cursor.ts} +11 -15
- package/core/main.d.ts +11 -0
- package/core/main.js +303 -0
- package/core/marker_manager.d.ts +85 -0
- package/core/marker_manager.ts +181 -0
- package/core/menu.d.ts +149 -0
- package/core/{menu.js → menu.ts} +141 -174
- package/core/menuitem.d.ts +118 -0
- package/core/menuitem.ts +240 -0
- package/core/metrics_manager.d.ts +201 -0
- package/core/{metrics_manager.js → metrics_manager.ts} +117 -156
- package/core/msg.d.ts +9 -0
- package/core/{msg.js → msg.ts} +4 -8
- package/core/mutator.d.ts +128 -0
- package/core/{mutator.js → mutator.ts} +196 -211
- package/core/names.d.ts +124 -0
- package/core/names.ts +267 -0
- package/core/options.d.ts +137 -0
- package/core/{options.js → options.ts} +147 -173
- package/core/positionable_helpers.d.ts +88 -0
- package/core/{positionable_helpers.js → positionable_helpers.ts} +63 -70
- package/core/procedures.d.ts +108 -0
- package/core/{procedures.js → procedures.ts} +143 -152
- package/core/registry.d.ts +137 -0
- package/core/registry.ts +339 -0
- package/core/rendered_connection.d.ts +191 -0
- package/core/{rendered_connection.js → rendered_connection.ts} +164 -184
- package/core/renderers/common/block_rendering.d.ts +114 -0
- package/core/renderers/common/block_rendering.ts +164 -0
- package/core/renderers/common/constants.d.ts +458 -0
- package/core/renderers/common/constants.ts +1124 -0
- package/core/renderers/common/debug.d.ts +28 -0
- package/core/renderers/common/{debug.js → debug.ts} +14 -20
- package/core/renderers/common/debugger.d.ts +120 -0
- package/core/renderers/common/{debugger.js → debugger.ts} +100 -124
- package/core/renderers/common/drawer.d.ts +132 -0
- package/core/renderers/common/{drawer.js → drawer.ts} +112 -137
- package/core/renderers/common/i_path_object.d.ts +117 -0
- package/core/renderers/common/i_path_object.ts +161 -0
- package/core/renderers/common/info.d.ts +194 -0
- package/core/renderers/common/{info.js → info.ts} +165 -222
- package/core/renderers/common/marker_svg.d.ts +220 -0
- package/core/renderers/common/marker_svg.ts +680 -0
- package/core/renderers/common/path_object.d.ts +146 -0
- package/core/renderers/common/path_object.ts +272 -0
- package/core/renderers/common/renderer.d.ts +157 -0
- package/core/renderers/common/renderer.ts +271 -0
- package/core/renderers/geras/constants.d.ts +23 -0
- package/core/renderers/geras/constants.ts +61 -0
- package/core/renderers/geras/drawer.d.ts +43 -0
- package/core/renderers/geras/{drawer.js → drawer.ts} +40 -84
- package/core/renderers/geras/geras.d.ts +11 -0
- package/core/renderers/geras/geras.ts +37 -0
- package/core/renderers/geras/highlight_constants.d.ts +108 -0
- package/core/renderers/geras/{highlight_constants.js → highlight_constants.ts} +107 -69
- package/core/renderers/geras/highlighter.d.ts +98 -0
- package/core/renderers/geras/{highlighter.js → highlighter.ts} +81 -86
- package/core/renderers/geras/info.d.ts +45 -0
- package/core/renderers/geras/{info.js → info.ts} +61 -99
- package/core/renderers/geras/measurables/inline_input.d.ts +23 -0
- package/core/renderers/geras/measurables/inline_input.ts +51 -0
- package/core/renderers/geras/measurables/statement_input.d.ts +23 -0
- package/core/renderers/geras/measurables/statement_input.ts +50 -0
- package/core/renderers/geras/path_object.d.ts +47 -0
- package/core/renderers/geras/{path_object.js → path_object.ts} +46 -74
- package/core/renderers/geras/renderer.d.ts +69 -0
- package/core/renderers/geras/renderer.ts +126 -0
- package/core/renderers/measurables/base.d.ts +27 -0
- package/core/renderers/measurables/base.ts +53 -0
- package/core/renderers/measurables/bottom_row.d.ts +61 -0
- package/core/renderers/measurables/bottom_row.ts +120 -0
- package/core/renderers/measurables/connection.d.ts +25 -0
- package/core/renderers/measurables/connection.ts +52 -0
- package/core/renderers/measurables/external_value_input.d.ts +27 -0
- package/core/renderers/measurables/external_value_input.ts +65 -0
- package/core/renderers/measurables/field.d.ts +30 -0
- package/core/renderers/measurables/field.ts +63 -0
- package/core/renderers/measurables/hat.d.ts +21 -0
- package/core/renderers/measurables/{hat.js → hat.ts} +12 -14
- package/core/renderers/measurables/icon.d.ts +26 -0
- package/core/renderers/measurables/{icon.js → icon.ts} +14 -18
- package/core/renderers/measurables/in_row_spacer.d.ts +21 -0
- package/core/renderers/measurables/in_row_spacer.ts +44 -0
- package/core/renderers/measurables/inline_input.d.ts +24 -0
- package/core/renderers/measurables/{inline_input.js → inline_input.ts} +22 -26
- package/core/renderers/measurables/input_connection.d.ts +29 -0
- package/core/renderers/measurables/input_connection.ts +66 -0
- package/core/renderers/measurables/input_row.d.ts +30 -0
- package/core/renderers/measurables/{input_row.js → input_row.ts} +24 -31
- package/core/renderers/measurables/jagged_edge.d.ts +20 -0
- package/core/renderers/measurables/{jagged_edge.js → jagged_edge.ts} +10 -13
- package/core/renderers/measurables/next_connection.d.ts +23 -0
- package/core/renderers/measurables/next_connection.ts +47 -0
- package/core/renderers/measurables/output_connection.d.ts +26 -0
- package/core/renderers/measurables/output_connection.ts +56 -0
- package/core/renderers/measurables/previous_connection.d.ts +23 -0
- package/core/renderers/measurables/previous_connection.ts +47 -0
- package/core/renderers/measurables/round_corner.d.ts +21 -0
- package/core/renderers/measurables/round_corner.ts +49 -0
- package/core/renderers/measurables/row.d.ts +141 -0
- package/core/renderers/measurables/row.ts +225 -0
- package/core/renderers/measurables/spacer_row.d.ts +29 -0
- package/core/renderers/measurables/spacer_row.ts +55 -0
- package/core/renderers/measurables/square_corner.d.ts +21 -0
- package/core/renderers/measurables/square_corner.ts +47 -0
- package/core/renderers/measurables/statement_input.d.ts +22 -0
- package/core/renderers/measurables/{statement_input.js → statement_input.ts} +14 -18
- package/core/renderers/measurables/top_row.d.ts +56 -0
- package/core/renderers/measurables/top_row.ts +122 -0
- package/core/renderers/measurables/types.d.ts +235 -0
- package/core/renderers/measurables/types.ts +332 -0
- package/core/renderers/minimalist/constants.d.ts +14 -0
- package/core/renderers/minimalist/{constants.js → constants.ts} +5 -10
- package/core/renderers/minimalist/drawer.d.ts +21 -0
- package/core/renderers/minimalist/drawer.ts +38 -0
- package/core/renderers/minimalist/info.d.ts +30 -0
- package/core/renderers/minimalist/info.ts +52 -0
- package/core/renderers/minimalist/minimalist.d.ts +6 -0
- package/core/renderers/minimalist/minimalist.ts +22 -0
- package/core/renderers/minimalist/renderer.d.ts +41 -0
- package/core/renderers/minimalist/renderer.ts +71 -0
- package/core/renderers/thrasos/info.d.ts +40 -0
- package/core/renderers/thrasos/{info.js → info.ts} +66 -67
- package/core/renderers/thrasos/renderer.d.ts +25 -0
- package/core/renderers/thrasos/renderer.ts +48 -0
- package/core/renderers/thrasos/thrasos.d.ts +4 -0
- package/core/renderers/thrasos/thrasos.ts +20 -0
- package/core/renderers/zelos/constants.d.ts +186 -0
- package/core/renderers/zelos/{constants.js → constants.ts} +294 -441
- package/core/renderers/zelos/drawer.d.ts +47 -0
- package/core/renderers/zelos/{drawer.js → drawer.ts} +73 -95
- package/core/renderers/zelos/info.d.ts +88 -0
- package/core/renderers/zelos/{info.js → info.ts} +111 -142
- package/core/renderers/zelos/marker_svg.d.ts +46 -0
- package/core/renderers/zelos/marker_svg.ts +151 -0
- package/core/renderers/zelos/measurables/bottom_row.d.ts +27 -0
- package/core/renderers/zelos/measurables/bottom_row.ts +53 -0
- package/core/renderers/zelos/measurables/inputs.d.ts +23 -0
- package/core/renderers/zelos/measurables/{inputs.js → inputs.ts} +14 -15
- package/core/renderers/zelos/measurables/row_elements.d.ts +21 -0
- package/core/renderers/zelos/measurables/row_elements.ts +45 -0
- package/core/renderers/zelos/measurables/top_row.d.ts +29 -0
- package/core/renderers/zelos/measurables/{top_row.js → top_row.ts} +14 -27
- package/core/renderers/zelos/path_object.d.ts +77 -0
- package/core/renderers/zelos/path_object.ts +215 -0
- package/core/renderers/zelos/renderer.d.ts +74 -0
- package/core/renderers/zelos/renderer.ts +142 -0
- package/core/renderers/zelos/zelos.d.ts +12 -0
- package/core/renderers/zelos/zelos.ts +39 -0
- package/core/scrollbar.d.ts +277 -0
- package/core/{scrollbar.js → scrollbar.ts} +307 -328
- package/core/scrollbar_pair.d.ts +105 -0
- package/core/{scrollbar_pair.js → scrollbar_pair.ts} +71 -79
- package/core/serialization/blocks.d.ts +98 -0
- package/core/serialization/{blocks.js → blocks.ts} +229 -228
- package/core/serialization/exceptions.d.ts +73 -0
- package/core/serialization/exceptions.ts +98 -0
- package/core/serialization/priorities.d.ts +15 -0
- package/core/serialization/{priorities.js → priorities.ts} +4 -10
- package/core/serialization/registry.d.ts +20 -0
- package/core/serialization/{registry.js → registry.ts} +11 -13
- package/core/serialization/variables.d.ts +14 -0
- package/core/serialization/{variables.js → variables.ts} +30 -32
- package/core/serialization/workspaces.d.ts +28 -0
- package/core/serialization/{workspaces.js → workspaces.ts} +30 -27
- package/core/shortcut_items.d.ts +61 -0
- package/core/{shortcut_items.js → shortcut_items.ts} +121 -157
- package/core/shortcut_registry.d.ts +151 -0
- package/core/shortcut_registry.ts +355 -0
- package/core/sprites.d.ts +19 -0
- package/core/{sprites.js → sprites.ts} +4 -6
- package/core/theme/classic.d.ts +12 -0
- package/core/theme/{classic.js → classic.ts} +5 -7
- package/core/theme/themes.d.ts +8 -0
- package/core/theme/themes.ts +22 -0
- package/core/theme/zelos.d.ts +11 -0
- package/core/theme/{zelos.js → zelos.ts} +4 -7
- package/core/theme.d.ts +142 -0
- package/core/theme.ts +221 -0
- package/core/theme_manager.d.ts +81 -0
- package/core/theme_manager.ts +186 -0
- package/core/toolbox/category.d.ts +239 -0
- package/core/toolbox/category.ts +679 -0
- package/core/toolbox/collapsible_category.d.ts +91 -0
- package/core/toolbox/collapsible_category.ts +273 -0
- package/core/toolbox/separator.d.ts +39 -0
- package/core/toolbox/separator.ts +105 -0
- package/core/toolbox/toolbox.d.ts +352 -0
- package/core/toolbox/{toolbox.js → toolbox.ts} +316 -432
- package/core/toolbox/toolbox_item.d.ts +85 -0
- package/core/toolbox/toolbox_item.ts +147 -0
- package/core/tooltip.d.ts +126 -0
- package/core/{tooltip.js → tooltip.ts} +136 -214
- package/core/touch.d.ts +121 -0
- package/core/touch.ts +306 -0
- package/core/touch_gesture.d.ts +115 -0
- package/core/{touch_gesture.js → touch_gesture.ts} +87 -125
- package/core/trashcan.d.ts +195 -0
- package/core/{trashcan.js → trashcan.ts} +226 -312
- package/core/utils/aria.d.ts +67 -0
- package/core/utils/{aria.js → aria.ts} +47 -61
- package/core/utils/array.d.ts +14 -0
- package/core/utils/{array.js → array.ts} +10 -12
- package/core/utils/colour.d.ts +103 -0
- package/core/utils/{colour.js → colour.ts} +60 -72
- package/core/utils/coordinate.d.ts +72 -0
- package/core/utils/coordinate.ts +124 -0
- package/core/utils/deprecation.d.ts +17 -0
- package/core/utils/{deprecation.js → deprecation.ts} +11 -11
- package/core/utils/dom.d.ts +165 -0
- package/core/utils/{dom.js → dom.ts} +125 -147
- package/core/utils/idgenerator.d.ts +25 -0
- package/core/utils/{idgenerator.js → idgenerator.ts} +15 -18
- package/core/utils/keycodes.d.ts +137 -0
- package/core/utils/keycodes.ts +169 -0
- package/core/utils/math.d.ts +30 -0
- package/core/utils/{math.js → math.ts} +17 -19
- package/core/utils/metrics.d.ts +64 -0
- package/core/utils/metrics.ts +97 -0
- package/core/utils/object.d.ts +35 -0
- package/core/utils/{object.js → object.ts} +30 -26
- package/core/utils/parsing.d.ts +50 -0
- package/core/utils/{parsing.js → parsing.ts} +50 -50
- package/core/utils/rect.d.ts +38 -0
- package/core/utils/{rect.js → rect.ts} +18 -31
- package/core/utils/sentinel.d.ts +11 -0
- package/core/utils/{sentinel.js → sentinel.ts} +3 -5
- package/core/utils/size.d.ts +27 -0
- package/core/utils/{size.js → size.ts} +12 -26
- package/core/utils/string.d.ts +55 -0
- package/core/utils/{string.js → string.ts} +64 -61
- package/core/utils/style.d.ts +127 -0
- package/core/utils/{style.js → style.ts} +102 -92
- package/core/utils/svg.d.ts +68 -0
- package/core/utils/svg.ts +88 -0
- package/core/utils/svg_math.d.ts +70 -0
- package/core/utils/{svg_math.js → svg_math.ts} +72 -71
- package/core/utils/svg_paths.d.ts +101 -0
- package/core/utils/{svg_paths.js → svg_paths.ts} +56 -65
- package/core/utils/toolbox.d.ts +193 -0
- package/core/utils/toolbox.ts +433 -0
- package/core/utils/useragent.d.ts +33 -0
- package/core/utils/useragent.ts +135 -0
- package/core/utils/xml.d.ts +52 -0
- package/core/utils/{xml.js → xml.ts} +26 -36
- package/core/utils.d.ts +217 -0
- package/core/utils.ts +428 -0
- package/core/variable_map.d.ts +141 -0
- package/core/{variable_map.js → variable_map.ts} +131 -149
- package/core/variable_model.d.ts +40 -0
- package/core/variable_model.ts +82 -0
- package/core/variables.d.ts +181 -0
- package/core/{variables.js → variables.ts} +206 -188
- package/core/variables_dynamic.d.ts +38 -0
- package/core/{variables_dynamic.js → variables_dynamic.ts} +47 -43
- package/core/warning.d.ts +50 -0
- package/core/{warning.js → warning.ts} +52 -66
- package/core/widgetdiv.d.ts +69 -0
- package/core/widgetdiv.ts +257 -0
- package/core/workspace.d.ts +386 -0
- package/core/workspace.ts +801 -0
- package/core/workspace_audio.d.ts +47 -0
- package/core/{workspace_audio.js → workspace_audio.ts} +47 -60
- package/core/workspace_comment.d.ts +170 -0
- package/core/workspace_comment.ts +398 -0
- package/core/workspace_comment_svg.d.ts +329 -0
- package/core/{workspace_comment_svg.js → workspace_comment_svg.ts} +347 -444
- package/core/workspace_drag_surface_svg.d.ts +68 -0
- package/core/{workspace_drag_surface_svg.js → workspace_drag_surface_svg.ts} +75 -82
- package/core/workspace_dragger.d.ts +48 -0
- package/core/workspace_dragger.ts +104 -0
- package/core/workspace_svg.d.ts +920 -0
- package/core/{workspace_svg.js → workspace_svg.ts} +855 -935
- package/core/xml.d.ts +117 -0
- package/core/{xml.js → xml.ts} +306 -326
- package/core/zoom_controls.d.ts +130 -0
- package/core/{zoom_controls.js → zoom_controls.ts} +185 -251
- package/core.d.ts +1 -3
- package/core.js +1 -2
- package/dart.d.ts +0 -3
- package/dart_compressed.js +387 -99
- package/dart_compressed.js.map +1 -1
- package/generators/dart/all.js +2 -0
- package/generators/dart/colour.js +1 -1
- package/generators/dart/lists.js +1 -1
- package/generators/dart/logic.js +1 -1
- package/generators/dart/loops.js +1 -1
- package/generators/dart/math.js +1 -1
- package/generators/dart/procedures.js +1 -1
- package/generators/dart/text.js +1 -1
- package/generators/dart/variables.js +1 -1
- package/generators/dart/variables_dynamic.js +1 -1
- package/generators/dart.js +1 -2
- package/generators/javascript/all.js +2 -0
- package/generators/javascript/colour.js +1 -1
- package/generators/javascript/lists.js +1 -1
- package/generators/javascript/logic.js +1 -1
- package/generators/javascript/loops.js +1 -1
- package/generators/javascript/math.js +4 -4
- package/generators/javascript/procedures.js +1 -1
- package/generators/javascript/text.js +2 -2
- package/generators/javascript/variables.js +1 -1
- package/generators/javascript/variables_dynamic.js +1 -1
- package/generators/javascript.js +1 -3
- package/generators/lua/all.js +2 -0
- package/generators/lua/colour.js +1 -1
- package/generators/lua/lists.js +1 -1
- package/generators/lua/logic.js +1 -1
- package/generators/lua/loops.js +1 -1
- package/generators/lua/math.js +1 -1
- package/generators/lua/procedures.js +1 -1
- package/generators/lua/text.js +1 -1
- package/generators/lua/variables.js +1 -1
- package/generators/lua/variables_dynamic.js +1 -1
- package/generators/lua.js +1 -2
- package/generators/php/all.js +2 -0
- package/generators/php/colour.js +1 -1
- package/generators/php/lists.js +1 -2
- package/generators/php/logic.js +1 -1
- package/generators/php/loops.js +1 -1
- package/generators/php/math.js +1 -1
- package/generators/php/procedures.js +1 -1
- package/generators/php/text.js +1 -1
- package/generators/php/variables.js +1 -1
- package/generators/php/variables_dynamic.js +1 -1
- package/generators/php.js +1 -2
- package/generators/python/all.js +2 -0
- package/generators/python/colour.js +3 -3
- package/generators/python/lists.js +1 -1
- package/generators/python/logic.js +1 -1
- package/generators/python/loops.js +4 -7
- package/generators/python/math.js +1 -1
- package/generators/python/procedures.js +1 -1
- package/generators/python/text.js +1 -1
- package/generators/python/variables.js +1 -1
- package/generators/python/variables_dynamic.js +1 -1
- package/generators/python.js +1 -2
- package/index.d.ts +2 -8
- package/javascript.d.ts +0 -3
- package/javascript_compressed.js +314 -104
- package/javascript_compressed.js.map +1 -1
- package/lua.d.ts +0 -3
- package/lua_compressed.js +399 -81
- package/lua_compressed.js.map +1 -1
- package/msg/ab.js +420 -420
- package/msg/ace.js +420 -420
- package/msg/af.js +420 -420
- package/msg/am.js +420 -420
- package/msg/ar.js +420 -420
- package/msg/ast.js +420 -420
- package/msg/az.js +420 -420
- package/msg/ba.js +420 -420
- package/msg/bcc.js +420 -420
- package/msg/be-tarask.js +420 -420
- package/msg/be.js +420 -420
- package/msg/bg.js +420 -420
- package/msg/bn.js +420 -420
- package/msg/br.js +420 -420
- package/msg/bs.js +420 -420
- package/msg/ca.js +420 -420
- package/msg/cdo.js +420 -420
- package/msg/cs.js +420 -420
- package/msg/da.js +420 -420
- package/msg/de.js +420 -420
- package/msg/diq.js +420 -420
- package/msg/dty.js +420 -420
- package/msg/ee.js +420 -420
- package/msg/el.js +420 -420
- package/msg/en-gb.js +420 -420
- package/msg/en.js +420 -420
- package/msg/eo.js +420 -420
- package/msg/es.js +420 -420
- package/msg/et.js +420 -420
- package/msg/eu.js +420 -420
- package/msg/fa.js +420 -420
- package/msg/fi.js +420 -420
- package/msg/fo.js +420 -420
- package/msg/fr.js +420 -420
- package/msg/frr.js +420 -420
- package/msg/gl.js +420 -420
- package/msg/gn.js +420 -420
- package/msg/gor.js +420 -420
- package/msg/ha.js +420 -420
- package/msg/hak.js +420 -420
- package/msg/he.js +420 -420
- package/msg/hi.js +420 -420
- package/msg/hr.js +420 -420
- package/msg/hrx.js +420 -420
- package/msg/hu.js +420 -420
- package/msg/hy.js +420 -420
- package/msg/ia.js +420 -420
- package/msg/id.js +420 -420
- package/msg/ig.js +420 -420
- package/msg/inh.js +420 -420
- package/msg/is.js +420 -420
- package/msg/it.js +420 -420
- package/msg/ja.js +420 -420
- package/msg/ka.js +420 -420
- package/msg/kab.js +420 -420
- package/msg/kbd-cyrl.js +420 -420
- package/msg/km.js +420 -420
- package/msg/kn.js +420 -420
- package/msg/ko.js +420 -420
- package/msg/ksh.js +420 -420
- package/msg/ku-latn.js +420 -420
- package/msg/ky.js +420 -420
- package/msg/la.js +420 -420
- package/msg/lb.js +420 -420
- package/msg/lki.js +420 -420
- package/msg/lo.js +420 -420
- package/msg/lrc.js +420 -420
- package/msg/lt.js +420 -420
- package/msg/lv.js +420 -420
- package/msg/mg.js +420 -420
- package/msg/mk.js +420 -420
- package/msg/ml.js +420 -420
- package/msg/mnw.js +420 -420
- package/msg/ms.js +420 -420
- package/msg/my.js +420 -420
- package/msg/mzn.js +420 -420
- package/msg/nb.js +420 -420
- package/msg/ne.js +420 -420
- package/msg/nl.js +420 -420
- package/msg/oc.js +420 -420
- package/msg/olo.js +420 -420
- package/msg/pa.js +420 -420
- package/msg/pl.js +420 -420
- package/msg/pms.js +420 -420
- package/msg/ps.js +420 -420
- package/msg/pt-br.js +420 -420
- package/msg/pt.js +420 -420
- package/msg/ro.js +420 -420
- package/msg/ru.js +420 -420
- package/msg/sc.js +420 -420
- package/msg/sco.js +420 -420
- package/msg/sd.js +420 -420
- package/msg/shn.js +420 -420
- package/msg/si.js +420 -420
- package/msg/sk.js +420 -420
- package/msg/skr-arab.js +420 -420
- package/msg/sl.js +420 -420
- package/msg/smn.js +420 -420
- package/msg/sq.js +420 -420
- package/msg/sr-latn.js +420 -420
- package/msg/sr.js +420 -420
- package/msg/sv.js +420 -420
- package/msg/sw.js +420 -420
- package/msg/ta.js +420 -420
- package/msg/tcy.js +420 -420
- package/msg/te.js +420 -420
- package/msg/th.js +420 -420
- package/msg/ti.js +420 -420
- package/msg/tl.js +420 -420
- package/msg/tlh.js +420 -420
- package/msg/tr.js +420 -420
- package/msg/ug-arab.js +420 -420
- package/msg/uk.js +420 -420
- package/msg/ur.js +420 -420
- package/msg/uz.js +420 -420
- package/msg/vi.js +420 -420
- package/msg/xmf.js +420 -420
- package/msg/yo.js +420 -420
- package/msg/yue.js +420 -420
- package/msg/zgh.js +420 -420
- package/msg/zh-hans.js +420 -420
- package/msg/zh-hant.js +420 -420
- package/package.json +5 -5
- package/php.d.ts +0 -3
- package/php_compressed.js +322 -93
- package/php_compressed.js.map +1 -1
- package/python.d.ts +0 -3
- package/python_compressed.js +237 -90
- package/python_compressed.js.map +1 -1
- package/blockly.d.ts +0 -26127
- package/core/blockly_options.js +0 -28
- package/core/bubble_dragger.js +0 -298
- package/core/clipboard.js +0 -80
- package/core/component_manager.js +0 -263
- package/core/contextmenu_items.js +0 -651
- package/core/contextmenu_registry.js +0 -178
- package/core/delete_area.js +0 -87
- package/core/dialog.js +0 -107
- package/core/drag_target.js +0 -98
- package/core/events/events.js +0 -147
- package/core/events/events_abstract.js +0 -133
- package/core/events/events_block_base.js +0 -70
- package/core/events/events_block_drag.js +0 -89
- package/core/events/events_bubble_open.js +0 -90
- package/core/events/events_comment_base.js +0 -121
- package/core/events/events_marker_move.js +0 -110
- package/core/events/events_selected.js +0 -83
- package/core/events/events_toolbox_item_select.js +0 -84
- package/core/events/events_trashcan_open.js +0 -73
- package/core/events/events_var_base.js +0 -70
- package/core/events/events_viewport.js +0 -107
- package/core/events/workspace_events.js +0 -93
- package/core/field_angle.js +0 -591
- package/core/field_checkbox.js +0 -255
- package/core/field_colour.js +0 -717
- package/core/field_image.js +0 -304
- package/core/field_label.js +0 -149
- package/core/field_label_serializable.js +0 -80
- package/core/field_textinput.js +0 -619
- package/core/flyout_button.js +0 -356
- package/core/grid.js +0 -226
- package/core/icon.js +0 -225
- package/core/input.js +0 -335
- package/core/interfaces/i_ast_node_location_svg.js +0 -45
- package/core/interfaces/i_ast_node_location_with_block.js +0 -41
- package/core/interfaces/i_autohideable.js +0 -40
- package/core/interfaces/i_block_dragger.js +0 -66
- package/core/interfaces/i_bounded_element.js +0 -45
- package/core/interfaces/i_bubble.js +0 -95
- package/core/interfaces/i_collapsible_toolbox_item.js +0 -53
- package/core/interfaces/i_connection_checker.js +0 -104
- package/core/interfaces/i_contextmenu.js +0 -32
- package/core/interfaces/i_copyable.js +0 -49
- package/core/interfaces/i_delete_area.js +0 -50
- package/core/interfaces/i_drag_target.js +0 -88
- package/core/interfaces/i_flyout.js +0 -201
- package/core/interfaces/i_keyboard_accessible.js +0 -38
- package/core/interfaces/i_metrics_manager.js +0 -154
- package/core/interfaces/i_positionable.js +0 -51
- package/core/interfaces/i_selectable.js +0 -51
- package/core/interfaces/i_selectable_toolbox_item.js +0 -73
- package/core/interfaces/i_serializer.js +0 -77
- package/core/interfaces/i_styleable.js +0 -39
- package/core/interfaces/i_toolbox.js +0 -142
- package/core/interfaces/i_toolbox_item.js +0 -85
- package/core/marker_manager.js +0 -213
- package/core/menuitem.js +0 -292
- package/core/names.js +0 -293
- package/core/registry.js +0 -384
- package/core/renderers/common/block_rendering.js +0 -170
- package/core/renderers/common/constants.js +0 -1250
- package/core/renderers/common/i_path_object.js +0 -162
- package/core/renderers/common/marker_svg.js +0 -721
- package/core/renderers/common/path_object.js +0 -283
- package/core/renderers/common/renderer.js +0 -305
- package/core/renderers/geras/constants.js +0 -73
- package/core/renderers/geras/geras.js +0 -36
- package/core/renderers/geras/measurables/inline_input.js +0 -58
- package/core/renderers/geras/measurables/statement_input.js +0 -57
- package/core/renderers/geras/renderer.js +0 -149
- package/core/renderers/measurables/base.js +0 -64
- package/core/renderers/measurables/bottom_row.js +0 -138
- package/core/renderers/measurables/connection.js +0 -56
- package/core/renderers/measurables/external_value_input.js +0 -70
- package/core/renderers/measurables/field.js +0 -71
- package/core/renderers/measurables/in_row_spacer.js +0 -47
- package/core/renderers/measurables/input_connection.js +0 -75
- package/core/renderers/measurables/next_connection.js +0 -50
- package/core/renderers/measurables/output_connection.js +0 -61
- package/core/renderers/measurables/previous_connection.js +0 -50
- package/core/renderers/measurables/round_corner.js +0 -52
- package/core/renderers/measurables/row.js +0 -247
- package/core/renderers/measurables/spacer_row.js +0 -69
- package/core/renderers/measurables/square_corner.js +0 -50
- package/core/renderers/measurables/top_row.js +0 -143
- package/core/renderers/measurables/types.js +0 -353
- package/core/renderers/minimalist/drawer.js +0 -42
- package/core/renderers/minimalist/info.js +0 -54
- package/core/renderers/minimalist/minimalist.js +0 -26
- package/core/renderers/minimalist/renderer.js +0 -80
- package/core/renderers/thrasos/renderer.js +0 -53
- package/core/renderers/thrasos/thrasos.js +0 -22
- package/core/renderers/zelos/marker_svg.js +0 -179
- package/core/renderers/zelos/measurables/bottom_row.js +0 -66
- package/core/renderers/zelos/measurables/row_elements.js +0 -46
- package/core/renderers/zelos/path_object.js +0 -247
- package/core/renderers/zelos/renderer.js +0 -147
- package/core/renderers/zelos/zelos.js +0 -38
- package/core/serialization/exceptions.js +0 -144
- package/core/shortcut_registry.js +0 -366
- package/core/theme/themes.js +0 -23
- package/core/theme.js +0 -228
- package/core/theme_manager.js +0 -211
- package/core/toolbox/category.js +0 -751
- package/core/toolbox/collapsible_category.js +0 -311
- package/core/toolbox/separator.js +0 -133
- package/core/toolbox/toolbox_item.js +0 -173
- package/core/touch.js +0 -285
- package/core/utils/coordinate.js +0 -138
- package/core/utils/global.js +0 -41
- package/core/utils/keycodes.js +0 -172
- package/core/utils/metrics.js +0 -154
- package/core/utils/svg.js +0 -186
- package/core/utils/toolbox.js +0 -459
- package/core/utils/useragent.js +0 -197
- package/core/utils.js +0 -383
- package/core/variable_model.js +0 -96
- package/core/widgetdiv.js +0 -290
- package/core/workspace.js +0 -836
- package/core/workspace_comment.js +0 -400
- package/core/workspace_dragger.js +0 -115
|
@@ -7,210 +7,144 @@
|
|
|
7
7
|
/**
|
|
8
8
|
* @fileoverview Toolbox from whence to create blocks.
|
|
9
9
|
*/
|
|
10
|
-
'use strict';
|
|
11
10
|
|
|
12
11
|
/**
|
|
13
12
|
* Toolbox from whence to create blocks.
|
|
14
13
|
* @class
|
|
15
14
|
*/
|
|
16
|
-
goog
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
const Touch = goog.require('Blockly.Touch');
|
|
20
|
-
const aria = goog.require('Blockly.utils.aria');
|
|
21
|
-
const browserEvents = goog.require('Blockly.browserEvents');
|
|
22
|
-
const common = goog.require('Blockly.common');
|
|
23
|
-
const dom = goog.require('Blockly.utils.dom');
|
|
24
|
-
const eventUtils = goog.require('Blockly.Events.utils');
|
|
25
|
-
const registry = goog.require('Blockly.registry');
|
|
26
|
-
const toolbox = goog.require('Blockly.utils.toolbox');
|
|
27
|
-
const {BlockSvg} = goog.require('Blockly.BlockSvg');
|
|
28
|
-
/* eslint-disable-next-line no-unused-vars */
|
|
29
|
-
const {BlocklyOptions} = goog.requireType('Blockly.BlocklyOptions');
|
|
30
|
-
const {CollapsibleToolboxCategory} = goog.require('Blockly.CollapsibleToolboxCategory');
|
|
31
|
-
const {ComponentManager} = goog.require('Blockly.ComponentManager');
|
|
32
|
-
const {DeleteArea} = goog.require('Blockly.DeleteArea');
|
|
33
|
-
/* eslint-disable-next-line no-unused-vars */
|
|
34
|
-
const {IAutoHideable} = goog.require('Blockly.IAutoHideable');
|
|
35
|
-
/* eslint-disable-next-line no-unused-vars */
|
|
36
|
-
const {ICollapsibleToolboxItem} = goog.requireType('Blockly.ICollapsibleToolboxItem');
|
|
37
|
-
/* eslint-disable-next-line no-unused-vars */
|
|
38
|
-
const {IDraggable} = goog.requireType('Blockly.IDraggable');
|
|
39
|
-
/* eslint-disable-next-line no-unused-vars */
|
|
40
|
-
const {IFlyout} = goog.requireType('Blockly.IFlyout');
|
|
41
|
-
/* eslint-disable-next-line no-unused-vars */
|
|
42
|
-
const {IKeyboardAccessible} = goog.require('Blockly.IKeyboardAccessible');
|
|
43
|
-
/* eslint-disable-next-line no-unused-vars */
|
|
44
|
-
const {ISelectableToolboxItem} = goog.requireType('Blockly.ISelectableToolboxItem');
|
|
45
|
-
/* eslint-disable-next-line no-unused-vars */
|
|
46
|
-
const {IStyleable} = goog.require('Blockly.IStyleable');
|
|
47
|
-
/* eslint-disable-next-line no-unused-vars */
|
|
48
|
-
const {IToolboxItem} = goog.requireType('Blockly.IToolboxItem');
|
|
49
|
-
/* eslint-disable-next-line no-unused-vars */
|
|
50
|
-
const {IToolbox} = goog.require('Blockly.IToolbox');
|
|
51
|
-
const {KeyCodes} = goog.require('Blockly.utils.KeyCodes');
|
|
52
|
-
const {Options} = goog.require('Blockly.Options');
|
|
53
|
-
const {Rect} = goog.require('Blockly.utils.Rect');
|
|
54
|
-
/* eslint-disable-next-line no-unused-vars */
|
|
55
|
-
const {ShortcutRegistry} = goog.requireType('Blockly.ShortcutRegistry');
|
|
15
|
+
import * as goog from '../../closure/goog/goog.js';
|
|
16
|
+
goog.declareModuleId('Blockly.Toolbox');
|
|
17
|
+
|
|
56
18
|
/* eslint-disable-next-line no-unused-vars */
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
19
|
+
// Unused import preserved for side-effects. Remove if unneeded.
|
|
20
|
+
// import '../shortcut_registry.js';
|
|
21
|
+
// Unused import preserved for side-effects. Remove if unneeded.
|
|
22
|
+
import '../events/events_toolbox_item_select.js';
|
|
23
|
+
|
|
24
|
+
import {BlockSvg} from '../block_svg.js';
|
|
25
|
+
import type {BlocklyOptions} from '../blockly_options.js';
|
|
26
|
+
import * as browserEvents from '../browser_events.js';
|
|
27
|
+
import * as common from '../common.js';
|
|
28
|
+
import {ComponentManager} from '../component_manager.js';
|
|
29
|
+
import * as Css from '../css.js';
|
|
30
|
+
import {DeleteArea} from '../delete_area.js';
|
|
31
|
+
import * as eventUtils from '../events/utils.js';
|
|
32
|
+
import type {IAutoHideable} from '../interfaces/i_autohideable.js';
|
|
33
|
+
import type {ICollapsibleToolboxItem} from '../interfaces/i_collapsible_toolbox_item.js';
|
|
34
|
+
import type {IDraggable} from '../interfaces/i_draggable.js';
|
|
35
|
+
import type {IFlyout} from '../interfaces/i_flyout.js';
|
|
36
|
+
import type {IKeyboardAccessible} from '../interfaces/i_keyboard_accessible.js';
|
|
37
|
+
import type {ISelectableToolboxItem} from '../interfaces/i_selectable_toolbox_item.js';
|
|
38
|
+
import type {IStyleable} from '../interfaces/i_styleable.js';
|
|
39
|
+
import type {IToolbox} from '../interfaces/i_toolbox.js';
|
|
40
|
+
import type {IToolboxItem} from '../interfaces/i_toolbox_item.js';
|
|
41
|
+
import {Options} from '../options.js';
|
|
42
|
+
import * as registry from '../registry.js';
|
|
43
|
+
import type {KeyboardShortcut} from '../shortcut_registry.js';
|
|
44
|
+
import * as Touch from '../touch.js';
|
|
45
|
+
import * as aria from '../utils/aria.js';
|
|
46
|
+
import * as dom from '../utils/dom.js';
|
|
47
|
+
import {KeyCodes} from '../utils/keycodes.js';
|
|
48
|
+
import {Rect} from '../utils/rect.js';
|
|
49
|
+
import * as toolbox from '../utils/toolbox.js';
|
|
50
|
+
import type {WorkspaceSvg} from '../workspace_svg.js';
|
|
51
|
+
|
|
52
|
+
import type {ToolboxCategory} from './category.js';
|
|
53
|
+
import {CollapsibleToolboxCategory} from './collapsible_category.js';
|
|
60
54
|
|
|
61
55
|
|
|
62
56
|
/**
|
|
63
57
|
* Class for a Toolbox.
|
|
64
58
|
* Creates the toolbox's DOM.
|
|
65
|
-
* @implements {IAutoHideable}
|
|
66
|
-
* @implements {IKeyboardAccessible}
|
|
67
|
-
* @implements {IStyleable}
|
|
68
|
-
* @implements {IToolbox}
|
|
69
|
-
* @extends {DeleteArea}
|
|
70
59
|
* @alias Blockly.Toolbox
|
|
71
60
|
*/
|
|
72
|
-
class Toolbox extends DeleteArea
|
|
61
|
+
export class Toolbox extends DeleteArea implements IAutoHideable,
|
|
62
|
+
IKeyboardAccessible,
|
|
63
|
+
IStyleable, IToolbox {
|
|
64
|
+
/**
|
|
65
|
+
* The unique id for this component that is used to register with the
|
|
66
|
+
* ComponentManager.
|
|
67
|
+
*/
|
|
68
|
+
override id = 'toolbox';
|
|
69
|
+
protected toolboxDef_: toolbox.ToolboxInfo;
|
|
70
|
+
private readonly horizontalLayout_: boolean;
|
|
71
|
+
|
|
72
|
+
/** The html container for the toolbox. */
|
|
73
|
+
HtmlDiv: HTMLDivElement|null = null;
|
|
74
|
+
|
|
75
|
+
/** The html container for the contents of a toolbox. */
|
|
76
|
+
protected contentsDiv_: HTMLDivElement|null = null;
|
|
77
|
+
|
|
78
|
+
/** Whether the Toolbox is visible. */
|
|
79
|
+
protected isVisible_ = false;
|
|
80
|
+
|
|
81
|
+
/** The list of items in the toolbox. */
|
|
82
|
+
protected contents_: IToolboxItem[] = [];
|
|
83
|
+
|
|
84
|
+
/** The width of the toolbox. */
|
|
85
|
+
protected width_ = 0;
|
|
86
|
+
|
|
87
|
+
/** The height of the toolbox. */
|
|
88
|
+
protected height_ = 0;
|
|
89
|
+
RTL: boolean;
|
|
90
|
+
|
|
91
|
+
/** The flyout for the toolbox. */
|
|
92
|
+
private flyout_: IFlyout|null = null;
|
|
93
|
+
protected contentMap_: {[key: string]: IToolboxItem};
|
|
94
|
+
toolboxPosition: toolbox.Position;
|
|
95
|
+
|
|
96
|
+
/** The currently selected item. */
|
|
97
|
+
protected selectedItem_: ISelectableToolboxItem|null = null;
|
|
98
|
+
|
|
99
|
+
/** The previously selected item. */
|
|
100
|
+
protected previouslySelectedItem_: ISelectableToolboxItem|null = null;
|
|
101
|
+
|
|
73
102
|
/**
|
|
74
|
-
*
|
|
75
|
-
*
|
|
103
|
+
* Array holding info needed to unbind event handlers.
|
|
104
|
+
* Used for disposing.
|
|
105
|
+
* Ex: [[node, name, func], [node, name, func]].
|
|
76
106
|
*/
|
|
77
|
-
|
|
107
|
+
protected boundEvents_: browserEvents.Data[] = [];
|
|
108
|
+
override wouldDelete_: AnyDuringMigration;
|
|
109
|
+
|
|
110
|
+
/** The workspace this toolbox is on. */
|
|
111
|
+
protected readonly workspace_: WorkspaceSvg;
|
|
112
|
+
|
|
113
|
+
/** @param workspace The workspace in which to create new blocks. */
|
|
114
|
+
constructor(workspace: WorkspaceSvg) {
|
|
78
115
|
super();
|
|
79
116
|
|
|
80
|
-
/**
|
|
81
|
-
* The workspace this toolbox is on.
|
|
82
|
-
* @type {!WorkspaceSvg}
|
|
83
|
-
* @protected
|
|
84
|
-
*/
|
|
85
117
|
this.workspace_ = workspace;
|
|
86
118
|
|
|
87
|
-
/**
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
this.id = 'toolbox';
|
|
93
|
-
|
|
94
|
-
/**
|
|
95
|
-
* The JSON describing the contents of this toolbox.
|
|
96
|
-
* @type {!toolbox.ToolboxInfo}
|
|
97
|
-
* @protected
|
|
98
|
-
*/
|
|
99
|
-
this.toolboxDef_ = workspace.options.languageTree || {'contents': []};
|
|
100
|
-
|
|
101
|
-
/**
|
|
102
|
-
* Whether the toolbox should be laid out horizontally.
|
|
103
|
-
* @type {boolean}
|
|
104
|
-
* @private
|
|
105
|
-
*/
|
|
106
|
-
this.horizontalLayout_ = workspace.options.horizontalLayout;
|
|
119
|
+
/** The JSON describing the contents of this toolbox. */
|
|
120
|
+
// AnyDuringMigration because: Type 'ToolboxInfo | { contents: never[]; }'
|
|
121
|
+
// is not assignable to type 'ToolboxInfo'.
|
|
122
|
+
this.toolboxDef_ = (workspace.options.languageTree || {'contents': []}) as
|
|
123
|
+
AnyDuringMigration;
|
|
107
124
|
|
|
108
|
-
/**
|
|
109
|
-
|
|
110
|
-
* @type {?HTMLDivElement}
|
|
111
|
-
*/
|
|
112
|
-
this.HtmlDiv = null;
|
|
113
|
-
|
|
114
|
-
/**
|
|
115
|
-
* The html container for the contents of a toolbox.
|
|
116
|
-
* @type {?HTMLDivElement}
|
|
117
|
-
* @protected
|
|
118
|
-
*/
|
|
119
|
-
this.contentsDiv_ = null;
|
|
120
|
-
|
|
121
|
-
/**
|
|
122
|
-
* Whether the Toolbox is visible.
|
|
123
|
-
* @type {boolean}
|
|
124
|
-
* @protected
|
|
125
|
-
*/
|
|
126
|
-
this.isVisible_ = false;
|
|
127
|
-
|
|
128
|
-
/**
|
|
129
|
-
* The list of items in the toolbox.
|
|
130
|
-
* @type {!Array<!IToolboxItem>}
|
|
131
|
-
* @protected
|
|
132
|
-
*/
|
|
133
|
-
this.contents_ = [];
|
|
125
|
+
/** Whether the toolbox should be laid out horizontally. */
|
|
126
|
+
this.horizontalLayout_ = workspace.options.horizontalLayout;
|
|
134
127
|
|
|
135
|
-
/**
|
|
136
|
-
* The width of the toolbox.
|
|
137
|
-
* @type {number}
|
|
138
|
-
* @protected
|
|
139
|
-
*/
|
|
140
|
-
this.width_ = 0;
|
|
141
|
-
|
|
142
|
-
/**
|
|
143
|
-
* The height of the toolbox.
|
|
144
|
-
* @type {number}
|
|
145
|
-
* @protected
|
|
146
|
-
*/
|
|
147
|
-
this.height_ = 0;
|
|
148
|
-
|
|
149
|
-
/**
|
|
150
|
-
* Is RTL vs LTR.
|
|
151
|
-
* @type {boolean}
|
|
152
|
-
*/
|
|
128
|
+
/** Is RTL vs LTR. */
|
|
153
129
|
this.RTL = workspace.options.RTL;
|
|
154
130
|
|
|
155
|
-
/**
|
|
156
|
-
* The flyout for the toolbox.
|
|
157
|
-
* @type {?IFlyout}
|
|
158
|
-
* @private
|
|
159
|
-
*/
|
|
160
|
-
this.flyout_ = null;
|
|
161
|
-
|
|
162
|
-
/**
|
|
163
|
-
* A map from toolbox item IDs to toolbox items.
|
|
164
|
-
* @type {!Object<string, !IToolboxItem>}
|
|
165
|
-
* @protected
|
|
166
|
-
*/
|
|
131
|
+
/** A map from toolbox item IDs to toolbox items. */
|
|
167
132
|
this.contentMap_ = Object.create(null);
|
|
168
133
|
|
|
169
|
-
/**
|
|
170
|
-
* Position of the toolbox and flyout relative to the workspace.
|
|
171
|
-
* @type {!toolbox.Position}
|
|
172
|
-
*/
|
|
134
|
+
/** Position of the toolbox and flyout relative to the workspace. */
|
|
173
135
|
this.toolboxPosition = workspace.options.toolboxPosition;
|
|
174
|
-
|
|
175
|
-
/**
|
|
176
|
-
* The currently selected item.
|
|
177
|
-
* @type {?ISelectableToolboxItem}
|
|
178
|
-
* @protected
|
|
179
|
-
*/
|
|
180
|
-
this.selectedItem_ = null;
|
|
181
|
-
|
|
182
|
-
/**
|
|
183
|
-
* The previously selected item.
|
|
184
|
-
* @type {?ISelectableToolboxItem}
|
|
185
|
-
* @protected
|
|
186
|
-
*/
|
|
187
|
-
this.previouslySelectedItem_ = null;
|
|
188
|
-
|
|
189
|
-
/**
|
|
190
|
-
* Array holding info needed to unbind event handlers.
|
|
191
|
-
* Used for disposing.
|
|
192
|
-
* Ex: [[node, name, func], [node, name, func]].
|
|
193
|
-
* @type {!Array<!browserEvents.Data>}
|
|
194
|
-
* @protected
|
|
195
|
-
*/
|
|
196
|
-
this.boundEvents_ = [];
|
|
197
136
|
}
|
|
198
137
|
|
|
199
138
|
/**
|
|
200
139
|
* Handles the given keyboard shortcut.
|
|
201
|
-
* @param
|
|
202
|
-
*
|
|
203
|
-
* @return {boolean} True if the shortcut has been handled, false otherwise.
|
|
204
|
-
* @public
|
|
140
|
+
* @param _shortcut The shortcut to be handled.
|
|
141
|
+
* @return True if the shortcut has been handled, false otherwise.
|
|
205
142
|
*/
|
|
206
|
-
onShortcut(_shortcut) {
|
|
143
|
+
onShortcut(_shortcut: KeyboardShortcut): boolean {
|
|
207
144
|
return false;
|
|
208
145
|
}
|
|
209
146
|
|
|
210
|
-
/**
|
|
211
|
-
* Initializes the toolbox
|
|
212
|
-
* @public
|
|
213
|
-
*/
|
|
147
|
+
/** Initializes the toolbox */
|
|
214
148
|
init() {
|
|
215
149
|
const workspace = this.workspace_;
|
|
216
150
|
const svg = workspace.getParentSvg();
|
|
@@ -240,11 +174,10 @@ class Toolbox extends DeleteArea {
|
|
|
240
174
|
|
|
241
175
|
/**
|
|
242
176
|
* Creates the DOM for the toolbox.
|
|
243
|
-
* @param
|
|
244
|
-
* @return
|
|
245
|
-
* @protected
|
|
177
|
+
* @param workspace The workspace this toolbox is on.
|
|
178
|
+
* @return The HTML container for the toolbox.
|
|
246
179
|
*/
|
|
247
|
-
createDom_(workspace) {
|
|
180
|
+
protected createDom_(workspace: WorkspaceSvg): HTMLDivElement {
|
|
248
181
|
const svg = workspace.getParentSvg();
|
|
249
182
|
|
|
250
183
|
const container = this.createContainer_();
|
|
@@ -254,7 +187,7 @@ class Toolbox extends DeleteArea {
|
|
|
254
187
|
aria.setRole(this.contentsDiv_, aria.Role.TREE);
|
|
255
188
|
container.appendChild(this.contentsDiv_);
|
|
256
189
|
|
|
257
|
-
svg.parentNode
|
|
190
|
+
svg.parentNode!.insertBefore(container, svg);
|
|
258
191
|
|
|
259
192
|
this.attachEvents_(container, this.contentsDiv_);
|
|
260
193
|
return container;
|
|
@@ -262,12 +195,10 @@ class Toolbox extends DeleteArea {
|
|
|
262
195
|
|
|
263
196
|
/**
|
|
264
197
|
* Creates the container div for the toolbox.
|
|
265
|
-
* @return
|
|
266
|
-
* @protected
|
|
198
|
+
* @return The HTML container for the toolbox.
|
|
267
199
|
*/
|
|
268
|
-
createContainer_() {
|
|
269
|
-
const toolboxContainer =
|
|
270
|
-
/** @type {!HTMLDivElement} */ (document.createElement('div'));
|
|
200
|
+
protected createContainer_(): HTMLDivElement {
|
|
201
|
+
const toolboxContainer = (document.createElement('div'));
|
|
271
202
|
toolboxContainer.setAttribute('layout', this.isHorizontal() ? 'h' : 'v');
|
|
272
203
|
dom.addClass(toolboxContainer, 'blocklyToolboxDiv');
|
|
273
204
|
dom.addClass(toolboxContainer, 'blocklyNonSelectable');
|
|
@@ -277,12 +208,10 @@ class Toolbox extends DeleteArea {
|
|
|
277
208
|
|
|
278
209
|
/**
|
|
279
210
|
* Creates the container for all the contents in the toolbox.
|
|
280
|
-
* @return
|
|
281
|
-
* @protected
|
|
211
|
+
* @return The HTML container for the toolbox contents.
|
|
282
212
|
*/
|
|
283
|
-
createContentsContainer_() {
|
|
284
|
-
const contentsContainer =
|
|
285
|
-
/** @type {!HTMLDivElement} */ (document.createElement('div'));
|
|
213
|
+
protected createContentsContainer_(): HTMLDivElement {
|
|
214
|
+
const contentsContainer = (document.createElement('div'));
|
|
286
215
|
dom.addClass(contentsContainer, 'blocklyToolboxContents');
|
|
287
216
|
if (this.isHorizontal()) {
|
|
288
217
|
contentsContainer.style.flexDirection = 'row';
|
|
@@ -292,57 +221,53 @@ class Toolbox extends DeleteArea {
|
|
|
292
221
|
|
|
293
222
|
/**
|
|
294
223
|
* Adds event listeners to the toolbox container div.
|
|
295
|
-
* @param
|
|
296
|
-
* @param
|
|
297
|
-
*
|
|
298
|
-
* @protected
|
|
224
|
+
* @param container The HTML container for the toolbox.
|
|
225
|
+
* @param contentsContainer The HTML container for the contents of the
|
|
226
|
+
* toolbox.
|
|
299
227
|
*/
|
|
300
|
-
attachEvents_(
|
|
228
|
+
protected attachEvents_(
|
|
229
|
+
container: HTMLDivElement, contentsContainer: HTMLDivElement) {
|
|
301
230
|
// Clicking on toolbox closes popups.
|
|
302
231
|
const clickEvent = browserEvents.conditionalBind(
|
|
303
232
|
container, 'click', this, this.onClick_,
|
|
304
|
-
/* opt_noCaptureIdentifier */ false,
|
|
305
|
-
/* opt_noPreventDefault */ true);
|
|
233
|
+
/* opt_noCaptureIdentifier */ false, /* opt_noPreventDefault */ true);
|
|
306
234
|
this.boundEvents_.push(clickEvent);
|
|
307
235
|
|
|
308
236
|
const keyDownEvent = browserEvents.conditionalBind(
|
|
309
237
|
contentsContainer, 'keydown', this, this.onKeyDown_,
|
|
310
|
-
/* opt_noCaptureIdentifier */ false,
|
|
311
|
-
/* opt_noPreventDefault */ true);
|
|
238
|
+
/* opt_noCaptureIdentifier */ false, /* opt_noPreventDefault */ true);
|
|
312
239
|
this.boundEvents_.push(keyDownEvent);
|
|
313
240
|
}
|
|
314
241
|
|
|
315
242
|
/**
|
|
316
243
|
* Handles on click events for when the toolbox or toolbox items are clicked.
|
|
317
|
-
* @param
|
|
318
|
-
* @protected
|
|
244
|
+
* @param e Click event to handle.
|
|
319
245
|
*/
|
|
320
|
-
onClick_(e) {
|
|
246
|
+
protected onClick_(e: MouseEvent) {
|
|
321
247
|
if (browserEvents.isRightButton(e) || e.target === this.HtmlDiv) {
|
|
322
248
|
// Close flyout.
|
|
323
|
-
|
|
249
|
+
(common.getMainWorkspace() as WorkspaceSvg).hideChaff(false);
|
|
324
250
|
} else {
|
|
325
251
|
const targetElement = e.target;
|
|
326
|
-
const itemId = targetElement.getAttribute('id');
|
|
252
|
+
const itemId = (targetElement as Element).getAttribute('id');
|
|
327
253
|
if (itemId) {
|
|
328
254
|
const item = this.getToolboxItemById(itemId);
|
|
329
|
-
if (item
|
|
255
|
+
if (item!.isSelectable()) {
|
|
330
256
|
this.setSelectedItem(item);
|
|
331
|
-
item.onClick(e);
|
|
257
|
+
(item as ISelectableToolboxItem).onClick(e);
|
|
332
258
|
}
|
|
333
259
|
}
|
|
334
260
|
// Just close popups.
|
|
335
|
-
|
|
261
|
+
(common.getMainWorkspace() as WorkspaceSvg).hideChaff(true);
|
|
336
262
|
}
|
|
337
|
-
Touch.clearTouchIdentifier();
|
|
263
|
+
Touch.clearTouchIdentifier();
|
|
338
264
|
}
|
|
339
265
|
|
|
340
266
|
/**
|
|
341
267
|
* Handles key down events for the toolbox.
|
|
342
|
-
* @param
|
|
343
|
-
* @protected
|
|
268
|
+
* @param e The key down event.
|
|
344
269
|
*/
|
|
345
|
-
onKeyDown_(e) {
|
|
270
|
+
protected onKeyDown_(e: KeyboardEvent) {
|
|
346
271
|
let handled = false;
|
|
347
272
|
switch (e.keyCode) {
|
|
348
273
|
case KeyCodes.DOWN:
|
|
@@ -360,8 +285,7 @@ class Toolbox extends DeleteArea {
|
|
|
360
285
|
case KeyCodes.ENTER:
|
|
361
286
|
case KeyCodes.SPACE:
|
|
362
287
|
if (this.selectedItem_ && this.selectedItem_.isCollapsible()) {
|
|
363
|
-
const collapsibleItem =
|
|
364
|
-
/** @type {!ICollapsibleToolboxItem} */ (this.selectedItem_);
|
|
288
|
+
const collapsibleItem = this.selectedItem_ as ICollapsibleToolboxItem;
|
|
365
289
|
collapsibleItem.toggleExpanded();
|
|
366
290
|
handled = true;
|
|
367
291
|
}
|
|
@@ -370,8 +294,13 @@ class Toolbox extends DeleteArea {
|
|
|
370
294
|
handled = false;
|
|
371
295
|
break;
|
|
372
296
|
}
|
|
373
|
-
if (!handled && this.selectedItem_
|
|
374
|
-
|
|
297
|
+
if (!handled && this.selectedItem_) {
|
|
298
|
+
// TODO(#6097): Figure out who implements onKeyDown and which interface it
|
|
299
|
+
// should be part of.
|
|
300
|
+
const untypedItem = this.selectedItem_ as AnyDuringMigration;
|
|
301
|
+
if (untypedItem.onKeyDown) {
|
|
302
|
+
handled = untypedItem.onKeyDown(e);
|
|
303
|
+
}
|
|
375
304
|
}
|
|
376
305
|
|
|
377
306
|
if (handled) {
|
|
@@ -381,27 +310,24 @@ class Toolbox extends DeleteArea {
|
|
|
381
310
|
|
|
382
311
|
/**
|
|
383
312
|
* Creates the flyout based on the toolbox layout.
|
|
384
|
-
* @return
|
|
313
|
+
* @return The flyout for the toolbox.
|
|
385
314
|
* @throws {Error} If missing a require for `Blockly.HorizontalFlyout`,
|
|
386
315
|
* `Blockly.VerticalFlyout`, and no flyout plugin is specified.
|
|
387
|
-
* @protected
|
|
388
316
|
*/
|
|
389
|
-
createFlyout_() {
|
|
317
|
+
protected createFlyout_(): IFlyout {
|
|
390
318
|
const workspace = this.workspace_;
|
|
391
319
|
// TODO (#4247): Look into adding a makeFlyout method to Blockly Options.
|
|
392
|
-
const workspaceOptions = new Options(
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
},
|
|
404
|
-
}));
|
|
320
|
+
const workspaceOptions = new Options(({
|
|
321
|
+
'parentWorkspace': workspace,
|
|
322
|
+
'rtl': workspace.RTL,
|
|
323
|
+
'oneBasedIndex': workspace.options.oneBasedIndex,
|
|
324
|
+
'horizontalLayout': workspace.horizontalLayout,
|
|
325
|
+
'renderer': workspace.options.renderer,
|
|
326
|
+
'rendererOverrides': workspace.options.rendererOverrides,
|
|
327
|
+
'move': {
|
|
328
|
+
'scrollbars': true,
|
|
329
|
+
},
|
|
330
|
+
} as BlocklyOptions));
|
|
405
331
|
// Options takes in either 'end' or 'start'. This has already been parsed to
|
|
406
332
|
// be either 0 or 1, so set it after.
|
|
407
333
|
workspaceOptions.toolboxPosition = workspace.options.toolboxPosition;
|
|
@@ -413,16 +339,15 @@ class Toolbox extends DeleteArea {
|
|
|
413
339
|
FlyoutClass = registry.getClassFromOptions(
|
|
414
340
|
registry.Type.FLYOUTS_VERTICAL_TOOLBOX, workspace.options, true);
|
|
415
341
|
}
|
|
416
|
-
return new FlyoutClass(workspaceOptions);
|
|
342
|
+
return new FlyoutClass!(workspaceOptions);
|
|
417
343
|
}
|
|
418
344
|
|
|
419
345
|
/**
|
|
420
346
|
* Fills the toolbox with new toolbox items and removes any old contents.
|
|
421
|
-
* @param
|
|
422
|
-
*
|
|
423
|
-
* @package
|
|
347
|
+
* @param toolboxDef Object holding information for creating a toolbox.
|
|
348
|
+
* @internal
|
|
424
349
|
*/
|
|
425
|
-
render(toolboxDef) {
|
|
350
|
+
render(toolboxDef: toolbox.ToolboxInfo) {
|
|
426
351
|
this.toolboxDef_ = toolboxDef;
|
|
427
352
|
for (let i = 0; i < this.contents_.length; i++) {
|
|
428
353
|
const toolboxItem = this.contents_[i];
|
|
@@ -439,11 +364,10 @@ class Toolbox extends DeleteArea {
|
|
|
439
364
|
|
|
440
365
|
/**
|
|
441
366
|
* Adds all the toolbox items to the toolbox.
|
|
442
|
-
* @param
|
|
443
|
-
*
|
|
444
|
-
* @protected
|
|
367
|
+
* @param toolboxDef Array holding objects containing information on the
|
|
368
|
+
* contents of the toolbox.
|
|
445
369
|
*/
|
|
446
|
-
renderContents_(toolboxDef) {
|
|
370
|
+
protected renderContents_(toolboxDef: toolbox.ToolboxItemInfo[]) {
|
|
447
371
|
// This is for performance reasons. By using document fragment we only have
|
|
448
372
|
// to add to the DOM once.
|
|
449
373
|
const fragment = document.createDocumentFragment();
|
|
@@ -451,25 +375,23 @@ class Toolbox extends DeleteArea {
|
|
|
451
375
|
const toolboxItemDef = toolboxDef[i];
|
|
452
376
|
this.createToolboxItem_(toolboxItemDef, fragment);
|
|
453
377
|
}
|
|
454
|
-
this.contentsDiv_
|
|
378
|
+
this.contentsDiv_!.appendChild(fragment);
|
|
455
379
|
}
|
|
456
380
|
|
|
457
381
|
/**
|
|
458
382
|
* Creates and renders the toolbox item.
|
|
459
|
-
* @param
|
|
460
|
-
*
|
|
461
|
-
* @param
|
|
462
|
-
* toolbox elements to.
|
|
463
|
-
* @private
|
|
383
|
+
* @param toolboxItemDef Any information that can be used to create an item in
|
|
384
|
+
* the toolbox.
|
|
385
|
+
* @param fragment The document fragment to add the child toolbox elements to.
|
|
464
386
|
*/
|
|
465
|
-
createToolboxItem_(
|
|
387
|
+
private createToolboxItem_(
|
|
388
|
+
toolboxItemDef: toolbox.ToolboxItemInfo, fragment: DocumentFragment) {
|
|
466
389
|
let registryName = toolboxItemDef['kind'];
|
|
467
390
|
|
|
468
391
|
// Categories that are collapsible are created using a class registered
|
|
469
392
|
// under a different name.
|
|
470
393
|
if (registryName.toUpperCase() === 'CATEGORY' &&
|
|
471
|
-
toolbox.isCategoryCollapsible(
|
|
472
|
-
/** @type {!toolbox.CategoryInfo} */ (toolboxItemDef))) {
|
|
394
|
+
toolbox.isCategoryCollapsible(toolboxItemDef as toolbox.CategoryInfo)) {
|
|
473
395
|
registryName = CollapsibleToolboxCategory.registrationName;
|
|
474
396
|
}
|
|
475
397
|
|
|
@@ -486,22 +408,20 @@ class Toolbox extends DeleteArea {
|
|
|
486
408
|
// Adds the ID to the HTML element that can receive a click.
|
|
487
409
|
// This is used in onClick_ to find the toolboxItem that was clicked.
|
|
488
410
|
if (toolboxItem.getClickTarget()) {
|
|
489
|
-
toolboxItem.getClickTarget()
|
|
411
|
+
toolboxItem.getClickTarget()!.setAttribute('id', toolboxItem.getId());
|
|
490
412
|
}
|
|
491
413
|
}
|
|
492
414
|
}
|
|
493
415
|
|
|
494
416
|
/**
|
|
495
417
|
* Adds an item to the toolbox.
|
|
496
|
-
* @param
|
|
497
|
-
* @protected
|
|
418
|
+
* @param toolboxItem The item in the toolbox.
|
|
498
419
|
*/
|
|
499
|
-
addToolboxItem_(toolboxItem) {
|
|
420
|
+
protected addToolboxItem_(toolboxItem: IToolboxItem) {
|
|
500
421
|
this.contents_.push(toolboxItem);
|
|
501
422
|
this.contentMap_[toolboxItem.getId()] = toolboxItem;
|
|
502
423
|
if (toolboxItem.isCollapsible()) {
|
|
503
|
-
const collapsibleItem =
|
|
504
|
-
(toolboxItem);
|
|
424
|
+
const collapsibleItem = toolboxItem as ICollapsibleToolboxItem;
|
|
505
425
|
const childToolboxItems = collapsibleItem.getChildToolboxItems();
|
|
506
426
|
for (let i = 0; i < childToolboxItems.length; i++) {
|
|
507
427
|
const child = childToolboxItems[i];
|
|
@@ -512,42 +432,40 @@ class Toolbox extends DeleteArea {
|
|
|
512
432
|
|
|
513
433
|
/**
|
|
514
434
|
* Gets the items in the toolbox.
|
|
515
|
-
* @return
|
|
516
|
-
* @public
|
|
435
|
+
* @return The list of items in the toolbox.
|
|
517
436
|
*/
|
|
518
|
-
getToolboxItems() {
|
|
437
|
+
getToolboxItems(): IToolboxItem[] {
|
|
519
438
|
return this.contents_;
|
|
520
439
|
}
|
|
521
440
|
|
|
522
441
|
/**
|
|
523
442
|
* Adds a style on the toolbox. Usually used to change the cursor.
|
|
524
|
-
* @param
|
|
525
|
-
* @
|
|
443
|
+
* @param style The name of the class to add.
|
|
444
|
+
* @internal
|
|
526
445
|
*/
|
|
527
|
-
addStyle(style) {
|
|
528
|
-
dom.addClass(
|
|
446
|
+
addStyle(style: string) {
|
|
447
|
+
dom.addClass(this.HtmlDiv as Element, style);
|
|
529
448
|
}
|
|
530
449
|
|
|
531
450
|
/**
|
|
532
451
|
* Removes a style from the toolbox. Usually used to change the cursor.
|
|
533
|
-
* @param
|
|
534
|
-
* @
|
|
452
|
+
* @param style The name of the class to remove.
|
|
453
|
+
* @internal
|
|
535
454
|
*/
|
|
536
|
-
removeStyle(style) {
|
|
537
|
-
dom.removeClass(
|
|
455
|
+
removeStyle(style: string) {
|
|
456
|
+
dom.removeClass(this.HtmlDiv as Element, style);
|
|
538
457
|
}
|
|
539
458
|
|
|
540
459
|
/**
|
|
541
460
|
* Returns the bounding rectangle of the drag target area in pixel units
|
|
542
461
|
* relative to viewport.
|
|
543
|
-
* @return
|
|
544
|
-
*
|
|
462
|
+
* @return The component's bounding box. Null if drag target area should be
|
|
463
|
+
* ignored.
|
|
545
464
|
*/
|
|
546
|
-
getClientRect() {
|
|
465
|
+
override getClientRect(): Rect|null {
|
|
547
466
|
if (!this.HtmlDiv || !this.isVisible_) {
|
|
548
467
|
return null;
|
|
549
468
|
}
|
|
550
|
-
|
|
551
469
|
// BIG_NUM is offscreen padding so that blocks dragged beyond the toolbox
|
|
552
470
|
// area are still deleted. Must be smaller than Infinity, but larger than
|
|
553
471
|
// the largest screen size.
|
|
@@ -577,17 +495,14 @@ class Toolbox extends DeleteArea {
|
|
|
577
495
|
* this area.
|
|
578
496
|
* This method should check if the element is deletable and is always called
|
|
579
497
|
* before onDragEnter/onDragOver/onDragExit.
|
|
580
|
-
* @param
|
|
581
|
-
*
|
|
582
|
-
* @
|
|
583
|
-
*
|
|
584
|
-
* @return {boolean} Whether the element provided would be deleted if dropped
|
|
585
|
-
* on this area.
|
|
586
|
-
* @override
|
|
498
|
+
* @param element The block or bubble currently being dragged.
|
|
499
|
+
* @param _couldConnect Whether the element could could connect to another.
|
|
500
|
+
* @return Whether the element provided would be deleted if dropped on this
|
|
501
|
+
* area.
|
|
587
502
|
*/
|
|
588
|
-
wouldDelete(element, _couldConnect) {
|
|
503
|
+
override wouldDelete(element: IDraggable, _couldConnect: boolean): boolean {
|
|
589
504
|
if (element instanceof BlockSvg) {
|
|
590
|
-
const block =
|
|
505
|
+
const block = (element);
|
|
591
506
|
// Prefer dragging to the toolbox over connecting to other blocks.
|
|
592
507
|
this.updateWouldDelete_(!block.getParent() && block.isDeletable());
|
|
593
508
|
} else {
|
|
@@ -598,42 +513,34 @@ class Toolbox extends DeleteArea {
|
|
|
598
513
|
|
|
599
514
|
/**
|
|
600
515
|
* Handles when a cursor with a block or bubble enters this drag target.
|
|
601
|
-
* @param
|
|
602
|
-
* dragged.
|
|
603
|
-
* @override
|
|
516
|
+
* @param _dragElement The block or bubble currently being dragged.
|
|
604
517
|
*/
|
|
605
|
-
onDragEnter(_dragElement) {
|
|
518
|
+
override onDragEnter(_dragElement: IDraggable) {
|
|
606
519
|
this.updateCursorDeleteStyle_(true);
|
|
607
520
|
}
|
|
608
521
|
|
|
609
522
|
/**
|
|
610
523
|
* Handles when a cursor with a block or bubble exits this drag target.
|
|
611
|
-
* @param
|
|
612
|
-
* dragged.
|
|
613
|
-
* @override
|
|
524
|
+
* @param _dragElement The block or bubble currently being dragged.
|
|
614
525
|
*/
|
|
615
|
-
onDragExit(_dragElement) {
|
|
526
|
+
override onDragExit(_dragElement: IDraggable) {
|
|
616
527
|
this.updateCursorDeleteStyle_(false);
|
|
617
528
|
}
|
|
618
529
|
|
|
619
530
|
/**
|
|
620
531
|
* Handles when a block or bubble is dropped on this component.
|
|
621
532
|
* Should not handle delete here.
|
|
622
|
-
* @param
|
|
623
|
-
* dragged.
|
|
624
|
-
* @override
|
|
533
|
+
* @param _dragElement The block or bubble currently being dragged.
|
|
625
534
|
*/
|
|
626
|
-
onDrop(_dragElement) {
|
|
535
|
+
override onDrop(_dragElement: IDraggable) {
|
|
627
536
|
this.updateCursorDeleteStyle_(false);
|
|
628
537
|
}
|
|
629
538
|
|
|
630
539
|
/**
|
|
631
540
|
* Updates the internal wouldDelete_ state.
|
|
632
|
-
* @param
|
|
633
|
-
* @protected
|
|
634
|
-
* @override
|
|
541
|
+
* @param wouldDelete The new value for the wouldDelete state.
|
|
635
542
|
*/
|
|
636
|
-
updateWouldDelete_(wouldDelete) {
|
|
543
|
+
protected override updateWouldDelete_(wouldDelete: boolean) {
|
|
637
544
|
if (wouldDelete === this.wouldDelete_) {
|
|
638
545
|
return;
|
|
639
546
|
}
|
|
@@ -651,10 +558,9 @@ class Toolbox extends DeleteArea {
|
|
|
651
558
|
* Adds or removes the CSS style of the cursor over the toolbox based whether
|
|
652
559
|
* the block or bubble over it is expected to be deleted if dropped (using the
|
|
653
560
|
* internal this.wouldDelete_ property).
|
|
654
|
-
* @param
|
|
655
|
-
* @protected
|
|
561
|
+
* @param addStyle Whether the style should be added or removed.
|
|
656
562
|
*/
|
|
657
|
-
updateCursorDeleteStyle_(addStyle) {
|
|
563
|
+
protected updateCursorDeleteStyle_(addStyle: boolean) {
|
|
658
564
|
const style =
|
|
659
565
|
this.wouldDelete_ ? 'blocklyToolboxDelete' : 'blocklyToolboxGrab';
|
|
660
566
|
if (addStyle) {
|
|
@@ -666,85 +572,74 @@ class Toolbox extends DeleteArea {
|
|
|
666
572
|
|
|
667
573
|
/**
|
|
668
574
|
* Gets the toolbox item with the given ID.
|
|
669
|
-
* @param
|
|
670
|
-
* @return
|
|
671
|
-
* if no item exists.
|
|
672
|
-
* @public
|
|
575
|
+
* @param id The ID of the toolbox item.
|
|
576
|
+
* @return The toolbox item with the given ID, or null if no item exists.
|
|
673
577
|
*/
|
|
674
|
-
getToolboxItemById(id) {
|
|
578
|
+
getToolboxItemById(id: string): IToolboxItem|null {
|
|
675
579
|
return this.contentMap_[id] || null;
|
|
676
580
|
}
|
|
677
581
|
|
|
678
582
|
/**
|
|
679
583
|
* Gets the width of the toolbox.
|
|
680
|
-
* @return
|
|
681
|
-
* @public
|
|
584
|
+
* @return The width of the toolbox.
|
|
682
585
|
*/
|
|
683
|
-
getWidth() {
|
|
586
|
+
getWidth(): number {
|
|
684
587
|
return this.width_;
|
|
685
588
|
}
|
|
686
589
|
|
|
687
590
|
/**
|
|
688
591
|
* Gets the height of the toolbox.
|
|
689
|
-
* @return
|
|
690
|
-
* @public
|
|
592
|
+
* @return The width of the toolbox.
|
|
691
593
|
*/
|
|
692
|
-
getHeight() {
|
|
594
|
+
getHeight(): number {
|
|
693
595
|
return this.height_;
|
|
694
596
|
}
|
|
695
597
|
|
|
696
598
|
/**
|
|
697
599
|
* Gets the toolbox flyout.
|
|
698
|
-
* @return
|
|
699
|
-
* @public
|
|
600
|
+
* @return The toolbox flyout.
|
|
700
601
|
*/
|
|
701
|
-
getFlyout() {
|
|
602
|
+
getFlyout(): IFlyout|null {
|
|
702
603
|
return this.flyout_;
|
|
703
604
|
}
|
|
704
605
|
|
|
705
606
|
/**
|
|
706
607
|
* Gets the workspace for the toolbox.
|
|
707
|
-
* @return
|
|
708
|
-
* @public
|
|
608
|
+
* @return The parent workspace for the toolbox.
|
|
709
609
|
*/
|
|
710
|
-
getWorkspace() {
|
|
610
|
+
getWorkspace(): WorkspaceSvg {
|
|
711
611
|
return this.workspace_;
|
|
712
612
|
}
|
|
713
613
|
|
|
714
614
|
/**
|
|
715
615
|
* Gets the selected item.
|
|
716
|
-
* @return
|
|
717
|
-
* currently selected.
|
|
718
|
-
* @public
|
|
616
|
+
* @return The selected item, or null if no item is currently selected.
|
|
719
617
|
*/
|
|
720
|
-
getSelectedItem() {
|
|
618
|
+
getSelectedItem(): ISelectableToolboxItem|null {
|
|
721
619
|
return this.selectedItem_;
|
|
722
620
|
}
|
|
723
621
|
|
|
724
622
|
/**
|
|
725
623
|
* Gets the previously selected item.
|
|
726
|
-
* @return
|
|
727
|
-
*
|
|
728
|
-
* @public
|
|
624
|
+
* @return The previously selected item, or null if no item was previously
|
|
625
|
+
* selected.
|
|
729
626
|
*/
|
|
730
|
-
getPreviouslySelectedItem() {
|
|
627
|
+
getPreviouslySelectedItem(): ISelectableToolboxItem|null {
|
|
731
628
|
return this.previouslySelectedItem_;
|
|
732
629
|
}
|
|
733
630
|
|
|
734
631
|
/**
|
|
735
632
|
* Gets whether or not the toolbox is horizontal.
|
|
736
|
-
* @return
|
|
737
|
-
*
|
|
738
|
-
* @public
|
|
633
|
+
* @return True if the toolbox is horizontal, false if the toolbox is
|
|
634
|
+
* vertical.
|
|
739
635
|
*/
|
|
740
|
-
isHorizontal() {
|
|
636
|
+
isHorizontal(): boolean {
|
|
741
637
|
return this.horizontalLayout_;
|
|
742
638
|
}
|
|
743
639
|
|
|
744
640
|
/**
|
|
745
641
|
* Positions the toolbox based on whether it is a horizontal toolbox and
|
|
746
642
|
* whether the workspace is in rtl.
|
|
747
|
-
* @public
|
|
748
643
|
*/
|
|
749
644
|
position() {
|
|
750
645
|
const workspaceMetrics = this.workspace_.getMetrics();
|
|
@@ -775,18 +670,18 @@ class Toolbox extends DeleteArea {
|
|
|
775
670
|
this.width_ = toolboxDiv.offsetWidth;
|
|
776
671
|
this.height_ = workspaceMetrics.viewHeight;
|
|
777
672
|
}
|
|
778
|
-
this.flyout_
|
|
673
|
+
this.flyout_!.position();
|
|
779
674
|
}
|
|
780
675
|
|
|
781
676
|
/**
|
|
782
677
|
* Handles resizing the toolbox when a toolbox item resizes.
|
|
783
|
-
* @
|
|
678
|
+
* @internal
|
|
784
679
|
*/
|
|
785
680
|
handleToolboxItemResize() {
|
|
786
681
|
// Reposition the workspace so that (0,0) is in the correct position
|
|
787
682
|
// relative to the new absolute edge (ie toolbox edge).
|
|
788
683
|
const workspace = this.workspace_;
|
|
789
|
-
const rect = this.HtmlDiv
|
|
684
|
+
const rect = this.HtmlDiv!.getBoundingClientRect();
|
|
790
685
|
const newX = this.toolboxPosition === toolbox.Position.LEFT ?
|
|
791
686
|
workspace.scrollX + rect.width :
|
|
792
687
|
workspace.scrollX;
|
|
@@ -800,23 +695,22 @@ class Toolbox extends DeleteArea {
|
|
|
800
695
|
common.svgResize(workspace);
|
|
801
696
|
}
|
|
802
697
|
|
|
803
|
-
/**
|
|
804
|
-
* Unhighlights any previously selected item.
|
|
805
|
-
* @public
|
|
806
|
-
*/
|
|
698
|
+
/** Unhighlights any previously selected item. */
|
|
807
699
|
clearSelection() {
|
|
808
700
|
this.setSelectedItem(null);
|
|
809
701
|
}
|
|
810
702
|
|
|
811
703
|
/**
|
|
812
704
|
* Updates the category colours and background colour of selected categories.
|
|
813
|
-
* @
|
|
705
|
+
* @internal
|
|
814
706
|
*/
|
|
815
707
|
refreshTheme() {
|
|
816
708
|
for (let i = 0; i < this.contents_.length; i++) {
|
|
817
709
|
const child = this.contents_[i];
|
|
818
|
-
|
|
819
|
-
|
|
710
|
+
// TODO(#6097): Fix types or add refreshTheme to IToolboxItem.
|
|
711
|
+
const childAsCategory = child as ToolboxCategory;
|
|
712
|
+
if (childAsCategory.refreshTheme) {
|
|
713
|
+
childAsCategory.refreshTheme();
|
|
820
714
|
}
|
|
821
715
|
}
|
|
822
716
|
}
|
|
@@ -825,26 +719,24 @@ class Toolbox extends DeleteArea {
|
|
|
825
719
|
* Updates the flyout's content without closing it. Should be used in
|
|
826
720
|
* response to a change in one of the dynamic categories, such as variables or
|
|
827
721
|
* procedures.
|
|
828
|
-
* @public
|
|
829
722
|
*/
|
|
830
723
|
refreshSelection() {
|
|
831
724
|
if (this.selectedItem_ && this.selectedItem_.isSelectable() &&
|
|
832
725
|
this.selectedItem_.getContents().length) {
|
|
833
|
-
this.flyout_
|
|
726
|
+
this.flyout_!.show(this.selectedItem_.getContents());
|
|
834
727
|
}
|
|
835
728
|
}
|
|
836
729
|
|
|
837
730
|
/**
|
|
838
731
|
* Shows or hides the toolbox.
|
|
839
|
-
* @param
|
|
840
|
-
* @public
|
|
732
|
+
* @param isVisible True if toolbox should be visible.
|
|
841
733
|
*/
|
|
842
|
-
setVisible(isVisible) {
|
|
734
|
+
setVisible(isVisible: boolean) {
|
|
843
735
|
if (this.isVisible_ === isVisible) {
|
|
844
736
|
return;
|
|
845
737
|
}
|
|
846
738
|
|
|
847
|
-
this.HtmlDiv
|
|
739
|
+
this.HtmlDiv!.style.display = isVisible ? 'block' : 'none';
|
|
848
740
|
this.isVisible_ = isVisible;
|
|
849
741
|
// Invisible toolbox is ignored as drag targets and must have the drag
|
|
850
742
|
// target updated.
|
|
@@ -853,10 +745,10 @@ class Toolbox extends DeleteArea {
|
|
|
853
745
|
|
|
854
746
|
/**
|
|
855
747
|
* Hides the component. Called in WorkspaceSvg.hideChaff.
|
|
856
|
-
* @param
|
|
748
|
+
* @param onlyClosePopups Whether only popups should be closed.
|
|
857
749
|
* Flyouts should not be closed if this is true.
|
|
858
750
|
*/
|
|
859
|
-
autoHide(onlyClosePopups) {
|
|
751
|
+
autoHide(onlyClosePopups: boolean) {
|
|
860
752
|
if (!onlyClosePopups && this.flyout_ && this.flyout_.autoClose) {
|
|
861
753
|
this.clearSelection();
|
|
862
754
|
}
|
|
@@ -865,40 +757,49 @@ class Toolbox extends DeleteArea {
|
|
|
865
757
|
/**
|
|
866
758
|
* Sets the given item as selected.
|
|
867
759
|
* No-op if the item is not selectable.
|
|
868
|
-
* @param
|
|
869
|
-
* @public
|
|
760
|
+
* @param newItem The toolbox item to select.
|
|
870
761
|
*/
|
|
871
|
-
setSelectedItem(newItem) {
|
|
762
|
+
setSelectedItem(newItem: IToolboxItem|null) {
|
|
872
763
|
const oldItem = this.selectedItem_;
|
|
873
764
|
|
|
874
|
-
if (
|
|
765
|
+
if (!newItem && !oldItem || newItem && !newItem.isSelectable()) {
|
|
875
766
|
return;
|
|
876
767
|
}
|
|
877
|
-
newItem =
|
|
768
|
+
newItem = newItem as ISelectableToolboxItem;
|
|
878
769
|
|
|
879
|
-
|
|
770
|
+
// AnyDuringMigration because: Argument of type 'IToolboxItem' is not
|
|
771
|
+
// assignable to parameter of type 'ISelectableToolboxItem'.
|
|
772
|
+
if (this.shouldDeselectItem_(oldItem, newItem as AnyDuringMigration) &&
|
|
773
|
+
oldItem !== null) {
|
|
880
774
|
this.deselectItem_(oldItem);
|
|
881
775
|
}
|
|
882
776
|
|
|
883
|
-
|
|
884
|
-
|
|
777
|
+
// AnyDuringMigration because: Argument of type 'IToolboxItem' is not
|
|
778
|
+
// assignable to parameter of type 'ISelectableToolboxItem'.
|
|
779
|
+
if (this.shouldSelectItem_(oldItem, newItem as AnyDuringMigration) &&
|
|
780
|
+
newItem !== null) {
|
|
781
|
+
// AnyDuringMigration because: Argument of type 'IToolboxItem' is not
|
|
782
|
+
// assignable to parameter of type 'ISelectableToolboxItem'.
|
|
783
|
+
this.selectItem_(oldItem, newItem as AnyDuringMigration);
|
|
885
784
|
}
|
|
886
785
|
|
|
887
|
-
|
|
888
|
-
|
|
786
|
+
// AnyDuringMigration because: Argument of type 'IToolboxItem' is not
|
|
787
|
+
// assignable to parameter of type 'ISelectableToolboxItem'.
|
|
788
|
+
this.updateFlyout_(oldItem, newItem as AnyDuringMigration);
|
|
789
|
+
// AnyDuringMigration because: Argument of type 'IToolboxItem' is not
|
|
790
|
+
// assignable to parameter of type 'ISelectableToolboxItem'.
|
|
791
|
+
this.fireSelectEvent_(oldItem, newItem as AnyDuringMigration);
|
|
889
792
|
}
|
|
890
793
|
|
|
891
794
|
/**
|
|
892
795
|
* Decides whether the old item should be deselected.
|
|
893
|
-
* @param
|
|
894
|
-
*
|
|
895
|
-
* @
|
|
896
|
-
* item.
|
|
897
|
-
* @return {boolean} True if the old item should be deselected, false
|
|
898
|
-
* otherwise.
|
|
899
|
-
* @protected
|
|
796
|
+
* @param oldItem The previously selected toolbox item.
|
|
797
|
+
* @param newItem The newly selected toolbox item.
|
|
798
|
+
* @return True if the old item should be deselected, false otherwise.
|
|
900
799
|
*/
|
|
901
|
-
shouldDeselectItem_(
|
|
800
|
+
protected shouldDeselectItem_(
|
|
801
|
+
oldItem: ISelectableToolboxItem|null,
|
|
802
|
+
newItem: ISelectableToolboxItem|null): boolean {
|
|
902
803
|
// Deselect the old item unless the old item is collapsible and has been
|
|
903
804
|
// previously clicked on.
|
|
904
805
|
return oldItem !== null &&
|
|
@@ -907,56 +808,50 @@ class Toolbox extends DeleteArea {
|
|
|
907
808
|
|
|
908
809
|
/**
|
|
909
810
|
* Decides whether the new item should be selected.
|
|
910
|
-
* @param
|
|
911
|
-
*
|
|
912
|
-
* @
|
|
913
|
-
* item.
|
|
914
|
-
* @return {boolean} True if the new item should be selected, false otherwise.
|
|
915
|
-
* @protected
|
|
811
|
+
* @param oldItem The previously selected toolbox item.
|
|
812
|
+
* @param newItem The newly selected toolbox item.
|
|
813
|
+
* @return True if the new item should be selected, false otherwise.
|
|
916
814
|
*/
|
|
917
|
-
shouldSelectItem_(
|
|
815
|
+
protected shouldSelectItem_(
|
|
816
|
+
oldItem: ISelectableToolboxItem|null,
|
|
817
|
+
newItem: ISelectableToolboxItem|null): boolean {
|
|
918
818
|
// Select the new item unless the old item equals the new item.
|
|
919
819
|
return newItem !== null && newItem !== oldItem;
|
|
920
820
|
}
|
|
921
821
|
|
|
922
822
|
/**
|
|
923
823
|
* Deselects the given item, marks it as unselected, and updates aria state.
|
|
924
|
-
* @param
|
|
925
|
-
*
|
|
926
|
-
* @protected
|
|
824
|
+
* @param item The previously selected toolbox item which should be
|
|
825
|
+
* deselected.
|
|
927
826
|
*/
|
|
928
|
-
deselectItem_(item) {
|
|
827
|
+
protected deselectItem_(item: ISelectableToolboxItem) {
|
|
929
828
|
this.selectedItem_ = null;
|
|
930
829
|
this.previouslySelectedItem_ = item;
|
|
931
830
|
item.setSelected(false);
|
|
932
831
|
aria.setState(
|
|
933
|
-
|
|
934
|
-
aria.State.ACTIVEDESCENDANT, '');
|
|
832
|
+
this.contentsDiv_ as Element, aria.State.ACTIVEDESCENDANT, '');
|
|
935
833
|
}
|
|
936
834
|
|
|
937
835
|
/**
|
|
938
836
|
* Selects the given item, marks it selected, and updates aria state.
|
|
939
|
-
* @param
|
|
940
|
-
*
|
|
941
|
-
* @param {!ISelectableToolboxItem} newItem The newly selected toolbox
|
|
942
|
-
* item.
|
|
943
|
-
* @protected
|
|
837
|
+
* @param oldItem The previously selected toolbox item.
|
|
838
|
+
* @param newItem The newly selected toolbox item.
|
|
944
839
|
*/
|
|
945
|
-
selectItem_(
|
|
840
|
+
protected selectItem_(
|
|
841
|
+
oldItem: ISelectableToolboxItem|null, newItem: ISelectableToolboxItem) {
|
|
946
842
|
this.selectedItem_ = newItem;
|
|
947
843
|
this.previouslySelectedItem_ = oldItem;
|
|
948
844
|
newItem.setSelected(true);
|
|
949
845
|
aria.setState(
|
|
950
|
-
|
|
951
|
-
|
|
846
|
+
this.contentsDiv_ as Element, aria.State.ACTIVEDESCENDANT,
|
|
847
|
+
newItem.getId());
|
|
952
848
|
}
|
|
953
849
|
|
|
954
850
|
/**
|
|
955
851
|
* Selects the toolbox item by its position in the list of toolbox items.
|
|
956
|
-
* @param
|
|
957
|
-
* @public
|
|
852
|
+
* @param position The position of the item to select.
|
|
958
853
|
*/
|
|
959
|
-
selectItemByPosition(position) {
|
|
854
|
+
selectItemByPosition(position: number) {
|
|
960
855
|
if (position > -1 && position < this.contents_.length) {
|
|
961
856
|
const item = this.contents_[position];
|
|
962
857
|
if (item.isSelectable()) {
|
|
@@ -967,59 +862,57 @@ class Toolbox extends DeleteArea {
|
|
|
967
862
|
|
|
968
863
|
/**
|
|
969
864
|
* Decides whether to hide or show the flyout depending on the selected item.
|
|
970
|
-
* @param
|
|
971
|
-
*
|
|
972
|
-
* @param {?ISelectableToolboxItem} newItem The newly selected toolbox item.
|
|
973
|
-
* @protected
|
|
865
|
+
* @param oldItem The previously selected toolbox item.
|
|
866
|
+
* @param newItem The newly selected toolbox item.
|
|
974
867
|
*/
|
|
975
|
-
updateFlyout_(
|
|
976
|
-
|
|
868
|
+
protected updateFlyout_(
|
|
869
|
+
oldItem: ISelectableToolboxItem|null,
|
|
870
|
+
newItem: ISelectableToolboxItem|null) {
|
|
871
|
+
if (!newItem || oldItem === newItem && !newItem.isCollapsible() ||
|
|
977
872
|
!newItem.getContents().length) {
|
|
978
|
-
this.flyout_
|
|
873
|
+
this.flyout_!.hide();
|
|
979
874
|
} else {
|
|
980
|
-
this.flyout_
|
|
981
|
-
this.flyout_
|
|
875
|
+
this.flyout_!.show(newItem.getContents());
|
|
876
|
+
this.flyout_!.scrollToStart();
|
|
982
877
|
}
|
|
983
878
|
}
|
|
984
879
|
|
|
985
880
|
/**
|
|
986
881
|
* Emits an event when a new toolbox item is selected.
|
|
987
|
-
* @param
|
|
988
|
-
*
|
|
989
|
-
* @param {?ISelectableToolboxItem} newItem The newly selected toolbox
|
|
990
|
-
* item.
|
|
991
|
-
* @private
|
|
882
|
+
* @param oldItem The previously selected toolbox item.
|
|
883
|
+
* @param newItem The newly selected toolbox item.
|
|
992
884
|
*/
|
|
993
|
-
fireSelectEvent_(
|
|
885
|
+
private fireSelectEvent_(
|
|
886
|
+
oldItem: ISelectableToolboxItem|null,
|
|
887
|
+
newItem: ISelectableToolboxItem|null) {
|
|
994
888
|
const oldElement = oldItem && oldItem.getName();
|
|
995
889
|
let newElement = newItem && newItem.getName();
|
|
996
890
|
// In this case the toolbox closes, so the newElement should be null.
|
|
997
891
|
if (oldItem === newItem) {
|
|
998
892
|
newElement = null;
|
|
999
893
|
}
|
|
1000
|
-
const event = new (eventUtils.get(eventUtils.TOOLBOX_ITEM_SELECT))
|
|
1001
|
-
oldElement, newElement, this.workspace_.id);
|
|
894
|
+
const event = new (eventUtils.get(eventUtils.TOOLBOX_ITEM_SELECT))!
|
|
895
|
+
(oldElement, newElement, this.workspace_.id);
|
|
1002
896
|
eventUtils.fire(event);
|
|
1003
897
|
}
|
|
1004
898
|
|
|
1005
899
|
/**
|
|
1006
900
|
* Closes the current item if it is expanded, or selects the parent.
|
|
1007
|
-
* @return
|
|
1008
|
-
* @private
|
|
901
|
+
* @return True if a parent category was selected, false otherwise.
|
|
1009
902
|
*/
|
|
1010
|
-
selectParent_() {
|
|
903
|
+
private selectParent_(): boolean {
|
|
1011
904
|
if (!this.selectedItem_) {
|
|
1012
905
|
return false;
|
|
1013
906
|
}
|
|
1014
907
|
|
|
1015
|
-
if (this.selectedItem_.isCollapsible() &&
|
|
1016
|
-
|
|
1017
|
-
|
|
1018
|
-
collapsibleItem.
|
|
908
|
+
if (this.selectedItem_.isCollapsible() &&
|
|
909
|
+
(this.selectedItem_ as ICollapsibleToolboxItem).isExpanded()) {
|
|
910
|
+
const collapsibleItem = this.selectedItem_ as ICollapsibleToolboxItem;
|
|
911
|
+
collapsibleItem.toggleExpanded();
|
|
1019
912
|
return true;
|
|
1020
913
|
} else if (
|
|
1021
914
|
this.selectedItem_.getParent() &&
|
|
1022
|
-
this.selectedItem_.getParent()
|
|
915
|
+
this.selectedItem_.getParent()!.isSelectable()) {
|
|
1023
916
|
this.setSelectedItem(this.selectedItem_.getParent());
|
|
1024
917
|
return true;
|
|
1025
918
|
}
|
|
@@ -1029,17 +922,15 @@ class Toolbox extends DeleteArea {
|
|
|
1029
922
|
/**
|
|
1030
923
|
* Selects the first child of the currently selected item, or nothing if the
|
|
1031
924
|
* toolbox item has no children.
|
|
1032
|
-
* @return
|
|
1033
|
-
* @private
|
|
925
|
+
* @return True if a child category was selected, false otherwise.
|
|
1034
926
|
*/
|
|
1035
|
-
selectChild_() {
|
|
927
|
+
private selectChild_(): boolean {
|
|
1036
928
|
if (!this.selectedItem_ || !this.selectedItem_.isCollapsible()) {
|
|
1037
929
|
return false;
|
|
1038
930
|
}
|
|
1039
|
-
const collapsibleItem =
|
|
1040
|
-
(this.selectedItem_);
|
|
931
|
+
const collapsibleItem = this.selectedItem_ as ICollapsibleToolboxItem;
|
|
1041
932
|
if (!collapsibleItem.isExpanded()) {
|
|
1042
|
-
collapsibleItem.
|
|
933
|
+
collapsibleItem.toggleExpanded();
|
|
1043
934
|
return true;
|
|
1044
935
|
} else {
|
|
1045
936
|
this.selectNext_();
|
|
@@ -1049,10 +940,9 @@ class Toolbox extends DeleteArea {
|
|
|
1049
940
|
|
|
1050
941
|
/**
|
|
1051
942
|
* Selects the next visible toolbox item.
|
|
1052
|
-
* @return
|
|
1053
|
-
* @private
|
|
943
|
+
* @return True if a next category was selected, false otherwise.
|
|
1054
944
|
*/
|
|
1055
|
-
selectNext_() {
|
|
945
|
+
private selectNext_(): boolean {
|
|
1056
946
|
if (!this.selectedItem_) {
|
|
1057
947
|
return false;
|
|
1058
948
|
}
|
|
@@ -1073,11 +963,9 @@ class Toolbox extends DeleteArea {
|
|
|
1073
963
|
|
|
1074
964
|
/**
|
|
1075
965
|
* Selects the previous visible toolbox item.
|
|
1076
|
-
* @return
|
|
1077
|
-
* otherwise.
|
|
1078
|
-
* @private
|
|
966
|
+
* @return True if a previous category was selected, false otherwise.
|
|
1079
967
|
*/
|
|
1080
|
-
selectPrevious_() {
|
|
968
|
+
private selectPrevious_(): boolean {
|
|
1081
969
|
if (!this.selectedItem_) {
|
|
1082
970
|
return false;
|
|
1083
971
|
}
|
|
@@ -1096,13 +984,10 @@ class Toolbox extends DeleteArea {
|
|
|
1096
984
|
return false;
|
|
1097
985
|
}
|
|
1098
986
|
|
|
1099
|
-
/**
|
|
1100
|
-
* Disposes of this toolbox.
|
|
1101
|
-
* @public
|
|
1102
|
-
*/
|
|
987
|
+
/** Disposes of this toolbox. */
|
|
1103
988
|
dispose() {
|
|
1104
989
|
this.workspace_.getComponentManager().removeComponent('toolbox');
|
|
1105
|
-
this.flyout_
|
|
990
|
+
this.flyout_!.dispose();
|
|
1106
991
|
for (let i = 0; i < this.contents_.length; i++) {
|
|
1107
992
|
const toolboxItem = this.contents_[i];
|
|
1108
993
|
toolboxItem.dispose();
|
|
@@ -1114,14 +999,15 @@ class Toolbox extends DeleteArea {
|
|
|
1114
999
|
this.boundEvents_ = [];
|
|
1115
1000
|
this.contents_ = [];
|
|
1116
1001
|
|
|
1117
|
-
|
|
1002
|
+
// AnyDuringMigration because: Argument of type 'HTMLDivElement | null' is
|
|
1003
|
+
// not assignable to parameter of type 'Element'.
|
|
1004
|
+
this.workspace_.getThemeManager().unsubscribe(
|
|
1005
|
+
this.HtmlDiv as AnyDuringMigration);
|
|
1118
1006
|
dom.removeNode(this.HtmlDiv);
|
|
1119
1007
|
}
|
|
1120
1008
|
}
|
|
1121
1009
|
|
|
1122
|
-
/**
|
|
1123
|
-
* CSS for Toolbox. See css.js for use.
|
|
1124
|
-
*/
|
|
1010
|
+
/** CSS for Toolbox. See css.js for use. */
|
|
1125
1011
|
Css.register(`
|
|
1126
1012
|
.blocklyToolboxDelete {
|
|
1127
1013
|
cursor: url("<<<PATH>>>/handdelete.cur"), auto;
|
|
@@ -1156,5 +1042,3 @@ Css.register(`
|
|
|
1156
1042
|
`);
|
|
1157
1043
|
|
|
1158
1044
|
registry.register(registry.Type.TOOLBOX, registry.DEFAULT, Toolbox);
|
|
1159
|
-
|
|
1160
|
-
exports.Toolbox = Toolbox;
|