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,217 +7,161 @@
|
|
|
7
7
|
/**
|
|
8
8
|
* @fileoverview Object representing a trash can icon.
|
|
9
9
|
*/
|
|
10
|
-
'use strict';
|
|
11
10
|
|
|
12
11
|
/**
|
|
13
12
|
* Object representing a trash can icon.
|
|
14
13
|
* @class
|
|
15
14
|
*/
|
|
16
|
-
goog
|
|
15
|
+
import * as goog from '../closure/goog/goog.js';
|
|
16
|
+
goog.declareModuleId('Blockly.Trashcan');
|
|
17
17
|
|
|
18
18
|
/* eslint-disable-next-line no-unused-vars */
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
const {Svg} = goog.require('Blockly.utils.Svg');
|
|
49
|
-
/* eslint-disable-next-line no-unused-vars */
|
|
50
|
-
const {WorkspaceSvg} = goog.requireType('Blockly.WorkspaceSvg');
|
|
51
|
-
/** @suppress {extraRequire} */
|
|
52
|
-
goog.require('Blockly.Events.TrashcanOpen');
|
|
19
|
+
// Unused import preserved for side-effects. Remove if unneeded.
|
|
20
|
+
// import './metrics_manager.js';
|
|
21
|
+
// Unused import preserved for side-effects. Remove if unneeded.
|
|
22
|
+
import './events/events_trashcan_open.js';
|
|
23
|
+
|
|
24
|
+
import type {BlocklyOptions} from './blockly_options.js';
|
|
25
|
+
import * as browserEvents from './browser_events.js';
|
|
26
|
+
import {ComponentManager} from './component_manager.js';
|
|
27
|
+
import {DeleteArea} from './delete_area.js';
|
|
28
|
+
import type {Abstract} from './events/events_abstract.js';
|
|
29
|
+
import type {BlockDelete} from './events/events_block_delete.js';
|
|
30
|
+
import * as eventUtils from './events/utils.js';
|
|
31
|
+
import type {IAutoHideable} from './interfaces/i_autohideable.js';
|
|
32
|
+
import type {IDraggable} from './interfaces/i_draggable.js';
|
|
33
|
+
import type {IFlyout} from './interfaces/i_flyout.js';
|
|
34
|
+
import type {IPositionable} from './interfaces/i_positionable.js';
|
|
35
|
+
import type {UiMetrics} from './metrics_manager.js';
|
|
36
|
+
import {Options} from './options.js';
|
|
37
|
+
import * as uiPosition from './positionable_helpers.js';
|
|
38
|
+
import * as registry from './registry.js';
|
|
39
|
+
import type * as blocks from './serialization/blocks.js';
|
|
40
|
+
import {SPRITE} from './sprites.js';
|
|
41
|
+
import * as dom from './utils/dom.js';
|
|
42
|
+
import {Rect} from './utils/rect.js';
|
|
43
|
+
import {Size} from './utils/size.js';
|
|
44
|
+
import {Svg} from './utils/svg.js';
|
|
45
|
+
import {BlockInfo} from './utils/toolbox.js';
|
|
46
|
+
import * as toolbox from './utils/toolbox.js';
|
|
47
|
+
import type {WorkspaceSvg} from './workspace_svg.js';
|
|
53
48
|
|
|
54
49
|
|
|
55
50
|
/**
|
|
56
51
|
* Class for a trash can.
|
|
57
|
-
* @implements {IAutoHideable}
|
|
58
|
-
* @implements {IPositionable}
|
|
59
|
-
* @extends {DeleteArea}
|
|
60
52
|
* @alias Blockly.Trashcan
|
|
61
53
|
*/
|
|
62
|
-
class Trashcan extends DeleteArea
|
|
54
|
+
export class Trashcan extends DeleteArea implements IAutoHideable,
|
|
55
|
+
IPositionable {
|
|
63
56
|
/**
|
|
64
|
-
*
|
|
57
|
+
* The unique id for this component that is used to register with the
|
|
58
|
+
* ComponentManager.
|
|
65
59
|
*/
|
|
66
|
-
|
|
67
|
-
super();
|
|
68
|
-
/**
|
|
69
|
-
* The workspace the trashcan sits in.
|
|
70
|
-
* @type {!WorkspaceSvg}
|
|
71
|
-
* @private
|
|
72
|
-
*/
|
|
73
|
-
this.workspace_ = workspace;
|
|
60
|
+
override id = 'trashcan';
|
|
74
61
|
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
*/
|
|
80
|
-
this.id = 'trashcan';
|
|
62
|
+
/**
|
|
63
|
+
* A list of JSON (stored as strings) representing blocks in the trashcan.
|
|
64
|
+
*/
|
|
65
|
+
private readonly contents_: string[] = [];
|
|
81
66
|
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
this.contents_ = [];
|
|
67
|
+
/**
|
|
68
|
+
* The trashcan flyout.
|
|
69
|
+
* @internal
|
|
70
|
+
*/
|
|
71
|
+
flyout: IFlyout|null = null;
|
|
88
72
|
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
* @type {IFlyout}
|
|
92
|
-
* @package
|
|
93
|
-
*/
|
|
94
|
-
this.flyout = null;
|
|
73
|
+
/** Current open/close state of the lid. */
|
|
74
|
+
isLidOpen = false;
|
|
95
75
|
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
76
|
+
/**
|
|
77
|
+
* The minimum openness of the lid. Used to indicate if the trashcan
|
|
78
|
+
* contains blocks.
|
|
79
|
+
*/
|
|
80
|
+
private minOpenness_ = 0;
|
|
99
81
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
* @type {boolean}
|
|
103
|
-
*/
|
|
104
|
-
this.isLidOpen = false;
|
|
82
|
+
/** The SVG group containing the trash can. */
|
|
83
|
+
private svgGroup_: SVGElement|null = null;
|
|
105
84
|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
* contains blocks.
|
|
109
|
-
* @type {number}
|
|
110
|
-
* @private
|
|
111
|
-
*/
|
|
112
|
-
this.minOpenness_ = 0;
|
|
85
|
+
/** The SVG image element of the trash can lid. */
|
|
86
|
+
private svgLid_: SVGElement|null = null;
|
|
113
87
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
* @type {SVGElement}
|
|
117
|
-
* @private
|
|
118
|
-
*/
|
|
119
|
-
this.svgGroup_ = null;
|
|
88
|
+
/** Task ID of opening/closing animation. */
|
|
89
|
+
private lidTask_: ReturnType<typeof setTimeout>|null = null;
|
|
120
90
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
* @type {SVGElement}
|
|
124
|
-
* @private
|
|
125
|
-
*/
|
|
126
|
-
this.svgLid_ = null;
|
|
91
|
+
/** Current state of lid opening (0.0 = closed, 1.0 = open). */
|
|
92
|
+
private lidOpen_ = 0;
|
|
127
93
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
* @type {number}
|
|
131
|
-
* @private
|
|
132
|
-
*/
|
|
133
|
-
this.lidTask_ = 0;
|
|
94
|
+
/** Left coordinate of the trash can. */
|
|
95
|
+
private left_ = 0;
|
|
134
96
|
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
* @type {number}
|
|
138
|
-
* @private
|
|
139
|
-
*/
|
|
140
|
-
this.lidOpen_ = 0;
|
|
97
|
+
/** Top coordinate of the trash can. */
|
|
98
|
+
private top_ = 0;
|
|
141
99
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
* @type {number}
|
|
145
|
-
* @private
|
|
146
|
-
*/
|
|
147
|
-
this.left_ = 0;
|
|
100
|
+
/** Whether this trash can has been initialized. */
|
|
101
|
+
private initialized_ = false;
|
|
148
102
|
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
* @private
|
|
153
|
-
*/
|
|
154
|
-
this.top_ = 0;
|
|
103
|
+
/** @param workspace The workspace to sit in. */
|
|
104
|
+
constructor(private workspace: WorkspaceSvg) {
|
|
105
|
+
super();
|
|
155
106
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
* @private
|
|
160
|
-
*/
|
|
161
|
-
this.initialized_ = false;
|
|
107
|
+
if (this.workspace.options.maxTrashcanContents <= 0) {
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
162
110
|
|
|
163
111
|
// Create flyout options.
|
|
164
|
-
const flyoutWorkspaceOptions = new Options(
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
},
|
|
176
|
-
}));
|
|
112
|
+
const flyoutWorkspaceOptions = new Options(({
|
|
113
|
+
'scrollbars': true,
|
|
114
|
+
'parentWorkspace': this.workspace,
|
|
115
|
+
'rtl': this.workspace.RTL,
|
|
116
|
+
'oneBasedIndex': this.workspace.options.oneBasedIndex,
|
|
117
|
+
'renderer': this.workspace.options.renderer,
|
|
118
|
+
'rendererOverrides': this.workspace.options.rendererOverrides,
|
|
119
|
+
'move': {
|
|
120
|
+
'scrollbars': true,
|
|
121
|
+
},
|
|
122
|
+
} as BlocklyOptions));
|
|
177
123
|
// Create vertical or horizontal flyout.
|
|
178
|
-
if (this.
|
|
124
|
+
if (this.workspace.horizontalLayout) {
|
|
179
125
|
flyoutWorkspaceOptions.toolboxPosition =
|
|
180
|
-
this.
|
|
126
|
+
this.workspace.toolboxPosition === toolbox.Position.TOP ?
|
|
181
127
|
toolbox.Position.BOTTOM :
|
|
182
128
|
toolbox.Position.TOP;
|
|
183
129
|
const HorizontalFlyout = registry.getClassFromOptions(
|
|
184
|
-
registry.Type.FLYOUTS_HORIZONTAL_TOOLBOX, this.
|
|
130
|
+
registry.Type.FLYOUTS_HORIZONTAL_TOOLBOX, this.workspace.options,
|
|
185
131
|
true);
|
|
186
|
-
this.flyout = new HorizontalFlyout(flyoutWorkspaceOptions);
|
|
132
|
+
this.flyout = new HorizontalFlyout!(flyoutWorkspaceOptions);
|
|
187
133
|
} else {
|
|
188
134
|
flyoutWorkspaceOptions.toolboxPosition =
|
|
189
|
-
this.
|
|
135
|
+
this.workspace.toolboxPosition === toolbox.Position.RIGHT ?
|
|
190
136
|
toolbox.Position.LEFT :
|
|
191
137
|
toolbox.Position.RIGHT;
|
|
192
138
|
const VerticalFlyout = registry.getClassFromOptions(
|
|
193
|
-
registry.Type.FLYOUTS_VERTICAL_TOOLBOX, this.
|
|
194
|
-
|
|
195
|
-
this.flyout = new VerticalFlyout(flyoutWorkspaceOptions);
|
|
139
|
+
registry.Type.FLYOUTS_VERTICAL_TOOLBOX, this.workspace.options, true);
|
|
140
|
+
this.flyout = new VerticalFlyout!(flyoutWorkspaceOptions);
|
|
196
141
|
}
|
|
197
|
-
this.
|
|
142
|
+
this.workspace.addChangeListener(this.onDelete_.bind(this));
|
|
198
143
|
}
|
|
199
144
|
|
|
200
145
|
/**
|
|
201
146
|
* Create the trash can elements.
|
|
202
|
-
* @return
|
|
147
|
+
* @return The trash can's SVG group.
|
|
203
148
|
*/
|
|
204
|
-
createDom() {
|
|
149
|
+
createDom(): SVGElement {
|
|
205
150
|
/* Here's the markup that will be generated:
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
this.svgGroup_ =
|
|
220
|
-
dom.createSvgElement(Svg.G, {'class': 'blocklyTrash'}, null);
|
|
151
|
+
<g class="blocklyTrash">
|
|
152
|
+
<clippath id="blocklyTrashBodyClipPath837493">
|
|
153
|
+
<rect width="47" height="45" y="15"></rect>
|
|
154
|
+
</clippath>
|
|
155
|
+
<image width="64" height="92" y="-32" xlink:href="media/sprites.png"
|
|
156
|
+
clip-path="url(#blocklyTrashBodyClipPath837493)"></image>
|
|
157
|
+
<clippath id="blocklyTrashLidClipPath837493">
|
|
158
|
+
<rect width="47" height="15"></rect>
|
|
159
|
+
</clippath>
|
|
160
|
+
<image width="84" height="92" y="-32" xlink:href="media/sprites.png"
|
|
161
|
+
clip-path="url(#blocklyTrashLidClipPath837493)"></image>
|
|
162
|
+
</g>
|
|
163
|
+
*/
|
|
164
|
+
this.svgGroup_ = dom.createSvgElement(Svg.G, {'class': 'blocklyTrash'});
|
|
221
165
|
let clip;
|
|
222
166
|
const rnd = String(Math.random()).substring(2);
|
|
223
167
|
clip = dom.createSvgElement(
|
|
@@ -236,7 +180,7 @@ class Trashcan extends DeleteArea {
|
|
|
236
180
|
this.svgGroup_);
|
|
237
181
|
body.setAttributeNS(
|
|
238
182
|
dom.XLINK_NS, 'xlink:href',
|
|
239
|
-
this.
|
|
183
|
+
this.workspace.options.pathToMedia + SPRITE.url);
|
|
240
184
|
|
|
241
185
|
clip = dom.createSvgElement(
|
|
242
186
|
Svg.CLIPPATH, {'id': 'blocklyTrashLidClipPath' + rnd}, this.svgGroup_);
|
|
@@ -253,7 +197,7 @@ class Trashcan extends DeleteArea {
|
|
|
253
197
|
this.svgGroup_);
|
|
254
198
|
this.svgLid_.setAttributeNS(
|
|
255
199
|
dom.XLINK_NS, 'xlink:href',
|
|
256
|
-
this.
|
|
200
|
+
this.workspace.options.pathToMedia + SPRITE.url);
|
|
257
201
|
|
|
258
202
|
// bindEventWithChecks_ quashes events too aggressively. See:
|
|
259
203
|
// https://groups.google.com/forum/#!topic/blockly/QF4yB9Wx00s
|
|
@@ -269,16 +213,14 @@ class Trashcan extends DeleteArea {
|
|
|
269
213
|
return this.svgGroup_;
|
|
270
214
|
}
|
|
271
215
|
|
|
272
|
-
/**
|
|
273
|
-
* Initializes the trash can.
|
|
274
|
-
*/
|
|
216
|
+
/** Initializes the trash can. */
|
|
275
217
|
init() {
|
|
276
|
-
if (this.
|
|
218
|
+
if (this.workspace.options.maxTrashcanContents > 0) {
|
|
277
219
|
dom.insertAfter(
|
|
278
|
-
this.flyout
|
|
279
|
-
this.flyout
|
|
220
|
+
this.flyout?.createDom(Svg.SVG)!, this.workspace.getParentSvg());
|
|
221
|
+
this.flyout?.init(this.workspace);
|
|
280
222
|
}
|
|
281
|
-
this.
|
|
223
|
+
this.workspace.getComponentManager().addComponent({
|
|
282
224
|
component: this,
|
|
283
225
|
weight: 1,
|
|
284
226
|
capabilities: [
|
|
@@ -298,36 +240,34 @@ class Trashcan extends DeleteArea {
|
|
|
298
240
|
* @suppress {checkTypes}
|
|
299
241
|
*/
|
|
300
242
|
dispose() {
|
|
301
|
-
this.
|
|
243
|
+
this.workspace.getComponentManager().removeComponent('trashcan');
|
|
302
244
|
if (this.svgGroup_) {
|
|
303
245
|
dom.removeNode(this.svgGroup_);
|
|
304
246
|
this.svgGroup_ = null;
|
|
305
247
|
}
|
|
306
248
|
this.svgLid_ = null;
|
|
307
|
-
this.
|
|
308
|
-
|
|
249
|
+
if (this.lidTask_) {
|
|
250
|
+
clearTimeout(this.lidTask_);
|
|
251
|
+
}
|
|
309
252
|
}
|
|
310
253
|
|
|
311
254
|
/**
|
|
312
255
|
* Whether the trashcan has contents.
|
|
313
|
-
* @return
|
|
314
|
-
* @private
|
|
256
|
+
* @return True if the trashcan has contents.
|
|
315
257
|
*/
|
|
316
|
-
hasContents_() {
|
|
258
|
+
private hasContents_(): boolean {
|
|
317
259
|
return !!this.contents_.length;
|
|
318
260
|
}
|
|
319
261
|
|
|
320
262
|
/**
|
|
321
263
|
* Returns true if the trashcan contents-flyout is currently open.
|
|
322
|
-
* @return
|
|
264
|
+
* @return True if the trashcan contents-flyout is currently open.
|
|
323
265
|
*/
|
|
324
|
-
contentsIsOpen() {
|
|
266
|
+
contentsIsOpen(): boolean {
|
|
325
267
|
return !!this.flyout && this.flyout.isVisible();
|
|
326
268
|
}
|
|
327
269
|
|
|
328
|
-
/**
|
|
329
|
-
* Opens the trashcan flyout.
|
|
330
|
-
*/
|
|
270
|
+
/** Opens the trashcan flyout. */
|
|
331
271
|
openFlyout() {
|
|
332
272
|
if (this.contentsIsOpen()) {
|
|
333
273
|
return;
|
|
@@ -335,28 +275,26 @@ class Trashcan extends DeleteArea {
|
|
|
335
275
|
const contents = this.contents_.map(function(string) {
|
|
336
276
|
return JSON.parse(string);
|
|
337
277
|
});
|
|
338
|
-
this.flyout
|
|
278
|
+
this.flyout?.show(contents);
|
|
339
279
|
this.fireUiEvent_(true);
|
|
340
280
|
}
|
|
341
281
|
|
|
342
|
-
/**
|
|
343
|
-
* Closes the trashcan flyout.
|
|
344
|
-
*/
|
|
282
|
+
/** Closes the trashcan flyout. */
|
|
345
283
|
closeFlyout() {
|
|
346
284
|
if (!this.contentsIsOpen()) {
|
|
347
285
|
return;
|
|
348
286
|
}
|
|
349
|
-
this.flyout
|
|
287
|
+
this.flyout?.hide();
|
|
350
288
|
this.fireUiEvent_(false);
|
|
351
|
-
this.
|
|
289
|
+
this.workspace.recordDragTargets();
|
|
352
290
|
}
|
|
353
291
|
|
|
354
292
|
/**
|
|
355
293
|
* Hides the component. Called in WorkspaceSvg.hideChaff.
|
|
356
|
-
* @param
|
|
294
|
+
* @param onlyClosePopups Whether only popups should be closed.
|
|
357
295
|
* Flyouts should not be closed if this is true.
|
|
358
296
|
*/
|
|
359
|
-
autoHide(onlyClosePopups) {
|
|
297
|
+
autoHide(onlyClosePopups: boolean) {
|
|
360
298
|
// For now the trashcan flyout always autocloses because it overlays the
|
|
361
299
|
// trashcan UI (no trashcan to click to close it).
|
|
362
300
|
if (!onlyClosePopups && this.flyout) {
|
|
@@ -381,23 +319,22 @@ class Trashcan extends DeleteArea {
|
|
|
381
319
|
* Positions the trashcan.
|
|
382
320
|
* It is positioned in the opposite corner to the corner the
|
|
383
321
|
* categories/toolbox starts at.
|
|
384
|
-
* @param
|
|
385
|
-
* @param
|
|
386
|
-
* are already on the workspace.
|
|
322
|
+
* @param metrics The workspace metrics.
|
|
323
|
+
* @param savedPositions List of rectangles that are already on the workspace.
|
|
387
324
|
*/
|
|
388
|
-
position(metrics, savedPositions) {
|
|
325
|
+
position(metrics: UiMetrics, savedPositions: Rect[]) {
|
|
389
326
|
// Not yet initialized.
|
|
390
327
|
if (!this.initialized_) {
|
|
391
328
|
return;
|
|
392
329
|
}
|
|
393
330
|
|
|
394
331
|
const cornerPosition =
|
|
395
|
-
uiPosition.getCornerOppositeToolbox(this.
|
|
332
|
+
uiPosition.getCornerOppositeToolbox(this.workspace, metrics);
|
|
396
333
|
|
|
397
334
|
const height = BODY_HEIGHT + LID_HEIGHT;
|
|
398
335
|
const startRect = uiPosition.getStartPositionRect(
|
|
399
336
|
cornerPosition, new Size(WIDTH, height), MARGIN_HORIZONTAL,
|
|
400
|
-
MARGIN_VERTICAL, metrics, this.
|
|
337
|
+
MARGIN_VERTICAL, metrics, this.workspace);
|
|
401
338
|
|
|
402
339
|
const verticalPosition = cornerPosition.vertical;
|
|
403
340
|
const bumpDirection = verticalPosition === uiPosition.verticalPosition.TOP ?
|
|
@@ -408,17 +345,17 @@ class Trashcan extends DeleteArea {
|
|
|
408
345
|
|
|
409
346
|
this.top_ = positionRect.top;
|
|
410
347
|
this.left_ = positionRect.left;
|
|
411
|
-
this.svgGroup_
|
|
348
|
+
this.svgGroup_?.setAttribute(
|
|
412
349
|
'transform', 'translate(' + this.left_ + ',' + this.top_ + ')');
|
|
413
350
|
}
|
|
414
351
|
|
|
415
352
|
/**
|
|
416
353
|
* Returns the bounding rectangle of the UI element in pixel units relative to
|
|
417
354
|
* the Blockly injection div.
|
|
418
|
-
* @return
|
|
419
|
-
*
|
|
355
|
+
* @return The UI elements's bounding box. Null if bounding box should be
|
|
356
|
+
* ignored by other UI elements.
|
|
420
357
|
*/
|
|
421
|
-
getBoundingRectangle() {
|
|
358
|
+
getBoundingRectangle(): Rect|null {
|
|
422
359
|
const bottom = this.top_ + BODY_HEIGHT + LID_HEIGHT;
|
|
423
360
|
const right = this.left_ + WIDTH;
|
|
424
361
|
return new Rect(this.top_, bottom, this.left_, right);
|
|
@@ -427,10 +364,10 @@ class Trashcan extends DeleteArea {
|
|
|
427
364
|
/**
|
|
428
365
|
* Returns the bounding rectangle of the drag target area in pixel units
|
|
429
366
|
* relative to viewport.
|
|
430
|
-
* @return
|
|
431
|
-
*
|
|
367
|
+
* @return The component's bounding box. Null if drag target area should be
|
|
368
|
+
* ignored.
|
|
432
369
|
*/
|
|
433
|
-
getClientRect() {
|
|
370
|
+
override getClientRect(): Rect|null {
|
|
434
371
|
if (!this.svgGroup_) {
|
|
435
372
|
return null;
|
|
436
373
|
}
|
|
@@ -446,54 +383,47 @@ class Trashcan extends DeleteArea {
|
|
|
446
383
|
/**
|
|
447
384
|
* Handles when a cursor with a block or bubble is dragged over this drag
|
|
448
385
|
* target.
|
|
449
|
-
* @param
|
|
450
|
-
* dragged.
|
|
451
|
-
* @override
|
|
386
|
+
* @param _dragElement The block or bubble currently being dragged.
|
|
452
387
|
*/
|
|
453
|
-
onDragOver(_dragElement) {
|
|
388
|
+
override onDragOver(_dragElement: IDraggable) {
|
|
454
389
|
this.setLidOpen(this.wouldDelete_);
|
|
455
390
|
}
|
|
456
391
|
|
|
457
392
|
/**
|
|
458
393
|
* Handles when a cursor with a block or bubble exits this drag target.
|
|
459
|
-
* @param
|
|
460
|
-
* dragged.
|
|
461
|
-
* @override
|
|
394
|
+
* @param _dragElement The block or bubble currently being dragged.
|
|
462
395
|
*/
|
|
463
|
-
onDragExit(_dragElement) {
|
|
396
|
+
override onDragExit(_dragElement: IDraggable) {
|
|
464
397
|
this.setLidOpen(false);
|
|
465
398
|
}
|
|
466
399
|
|
|
467
400
|
/**
|
|
468
401
|
* Handles when a block or bubble is dropped on this component.
|
|
469
402
|
* Should not handle delete here.
|
|
470
|
-
* @param
|
|
471
|
-
* dragged.
|
|
472
|
-
* @override
|
|
403
|
+
* @param _dragElement The block or bubble currently being dragged.
|
|
473
404
|
*/
|
|
474
|
-
onDrop(_dragElement) {
|
|
405
|
+
override onDrop(_dragElement: IDraggable) {
|
|
475
406
|
setTimeout(this.setLidOpen.bind(this, false), 100);
|
|
476
407
|
}
|
|
477
408
|
|
|
478
409
|
/**
|
|
479
410
|
* Flip the lid open or shut.
|
|
480
|
-
* @param
|
|
481
|
-
* @
|
|
411
|
+
* @param state True if open.
|
|
412
|
+
* @internal
|
|
482
413
|
*/
|
|
483
|
-
setLidOpen(state) {
|
|
414
|
+
setLidOpen(state: boolean) {
|
|
484
415
|
if (this.isLidOpen === state) {
|
|
485
416
|
return;
|
|
486
417
|
}
|
|
487
|
-
|
|
418
|
+
if (this.lidTask_) {
|
|
419
|
+
clearTimeout(this.lidTask_);
|
|
420
|
+
}
|
|
488
421
|
this.isLidOpen = state;
|
|
489
422
|
this.animateLid_();
|
|
490
423
|
}
|
|
491
424
|
|
|
492
|
-
/**
|
|
493
|
-
|
|
494
|
-
* @private
|
|
495
|
-
*/
|
|
496
|
-
animateLid_() {
|
|
425
|
+
/** Rotate the lid open or closed by one step. Then wait and recurse. */
|
|
426
|
+
private animateLid_() {
|
|
497
427
|
const frames = ANIMATION_FRAMES;
|
|
498
428
|
|
|
499
429
|
const delta = 1 / (frames + 1);
|
|
@@ -504,7 +434,9 @@ class Trashcan extends DeleteArea {
|
|
|
504
434
|
|
|
505
435
|
// Linear interpolation between min and max.
|
|
506
436
|
const opacity = OPACITY_MIN + this.lidOpen_ * (OPACITY_MAX - OPACITY_MIN);
|
|
507
|
-
this.svgGroup_
|
|
437
|
+
if (this.svgGroup_) {
|
|
438
|
+
this.svgGroup_.style.opacity = opacity.toString();
|
|
439
|
+
}
|
|
508
440
|
|
|
509
441
|
if (this.lidOpen_ > this.minOpenness_ && this.lidOpen_ < 1) {
|
|
510
442
|
this.lidTask_ =
|
|
@@ -514,14 +446,13 @@ class Trashcan extends DeleteArea {
|
|
|
514
446
|
|
|
515
447
|
/**
|
|
516
448
|
* Set the angle of the trashcan's lid.
|
|
517
|
-
* @param
|
|
518
|
-
* @private
|
|
449
|
+
* @param lidAngle The angle at which to set the lid.
|
|
519
450
|
*/
|
|
520
|
-
setLidAngle_(lidAngle) {
|
|
451
|
+
private setLidAngle_(lidAngle: number) {
|
|
521
452
|
const openAtRight =
|
|
522
|
-
this.
|
|
523
|
-
|
|
524
|
-
this.svgLid_
|
|
453
|
+
this.workspace.toolboxPosition === toolbox.Position.RIGHT ||
|
|
454
|
+
this.workspace.horizontalLayout && this.workspace.RTL;
|
|
455
|
+
this.svgLid_?.setAttribute(
|
|
525
456
|
'transform',
|
|
526
457
|
'rotate(' + (openAtRight ? -lidAngle : lidAngle) + ',' +
|
|
527
458
|
(openAtRight ? 4 : WIDTH - 4) + ',' + (LID_HEIGHT - 2) + ')');
|
|
@@ -530,11 +461,10 @@ class Trashcan extends DeleteArea {
|
|
|
530
461
|
/**
|
|
531
462
|
* Sets the minimum openness of the trashcan lid. If the lid is currently
|
|
532
463
|
* closed, this will update lid's position.
|
|
533
|
-
* @param
|
|
534
|
-
*
|
|
535
|
-
* @private
|
|
464
|
+
* @param newMin The new minimum openness of the lid. Should be between 0
|
|
465
|
+
* and 1.
|
|
536
466
|
*/
|
|
537
|
-
setMinOpenness_(newMin) {
|
|
467
|
+
private setMinOpenness_(newMin: number) {
|
|
538
468
|
this.minOpenness_ = newMin;
|
|
539
469
|
if (!this.isLidOpen) {
|
|
540
470
|
this.setLidAngle_(newMin * MAX_LID_ANGLE);
|
|
@@ -549,9 +479,7 @@ class Trashcan extends DeleteArea {
|
|
|
549
479
|
this.setLidOpen(false);
|
|
550
480
|
}
|
|
551
481
|
|
|
552
|
-
/**
|
|
553
|
-
* Inspect the contents of the trash.
|
|
554
|
-
*/
|
|
482
|
+
/** Inspect the contents of the trash. */
|
|
555
483
|
click() {
|
|
556
484
|
if (!this.hasContents_()) {
|
|
557
485
|
return;
|
|
@@ -561,31 +489,29 @@ class Trashcan extends DeleteArea {
|
|
|
561
489
|
|
|
562
490
|
/**
|
|
563
491
|
* Fires a UI event for trashcan flyout open or close.
|
|
564
|
-
* @param
|
|
565
|
-
* @private
|
|
492
|
+
* @param trashcanOpen Whether the flyout is opening.
|
|
566
493
|
*/
|
|
567
|
-
fireUiEvent_(trashcanOpen) {
|
|
568
|
-
const uiEvent = new (eventUtils.get(eventUtils.TRASHCAN_OPEN))
|
|
569
|
-
trashcanOpen, this.
|
|
494
|
+
private fireUiEvent_(trashcanOpen: boolean) {
|
|
495
|
+
const uiEvent = new (eventUtils.get(eventUtils.TRASHCAN_OPEN))!
|
|
496
|
+
(trashcanOpen, this.workspace.id);
|
|
570
497
|
eventUtils.fire(uiEvent);
|
|
571
498
|
}
|
|
572
499
|
|
|
573
500
|
/**
|
|
574
501
|
* Prevents a workspace scroll and click event if the trashcan has blocks.
|
|
575
|
-
* @param
|
|
576
|
-
* @private
|
|
502
|
+
* @param e A mouse down event.
|
|
577
503
|
*/
|
|
578
|
-
blockMouseDownWhenOpenable_(e) {
|
|
504
|
+
private blockMouseDownWhenOpenable_(e: Event) {
|
|
579
505
|
if (!this.contentsIsOpen() && this.hasContents_()) {
|
|
580
|
-
|
|
506
|
+
// Don't start a workspace scroll.
|
|
507
|
+
e.stopPropagation();
|
|
581
508
|
}
|
|
582
509
|
}
|
|
583
510
|
|
|
584
511
|
/**
|
|
585
512
|
* Indicate that the trashcan can be clicked (by opening it) if it has blocks.
|
|
586
|
-
* @private
|
|
587
513
|
*/
|
|
588
|
-
mouseOver_() {
|
|
514
|
+
private mouseOver_() {
|
|
589
515
|
if (this.hasContents_()) {
|
|
590
516
|
this.setLidOpen(true);
|
|
591
517
|
}
|
|
@@ -594,9 +520,8 @@ class Trashcan extends DeleteArea {
|
|
|
594
520
|
/**
|
|
595
521
|
* Close the lid of the trashcan if it was open (Vis. it was indicating it had
|
|
596
522
|
* blocks).
|
|
597
|
-
* @private
|
|
598
523
|
*/
|
|
599
|
-
mouseOut_() {
|
|
524
|
+
private mouseOut_() {
|
|
600
525
|
// No need to do a .hasBlocks check here because if it doesn't the trashcan
|
|
601
526
|
// won't be open in the first place, and setOpen won't run.
|
|
602
527
|
this.setLidOpen(false);
|
|
@@ -605,23 +530,23 @@ class Trashcan extends DeleteArea {
|
|
|
605
530
|
/**
|
|
606
531
|
* Handle a BLOCK_DELETE event. Adds deleted blocks oldXml to the content
|
|
607
532
|
* array.
|
|
608
|
-
* @param
|
|
609
|
-
* @private
|
|
533
|
+
* @param event Workspace event.
|
|
610
534
|
*/
|
|
611
|
-
onDelete_(event) {
|
|
612
|
-
if (this.
|
|
535
|
+
private onDelete_(event: Abstract) {
|
|
536
|
+
if (this.workspace.options.maxTrashcanContents <= 0 ||
|
|
613
537
|
event.type !== eventUtils.BLOCK_DELETE) {
|
|
614
538
|
return;
|
|
615
539
|
}
|
|
616
|
-
const deleteEvent =
|
|
540
|
+
const deleteEvent = event as BlockDelete;
|
|
617
541
|
if (event.type === eventUtils.BLOCK_DELETE && !deleteEvent.wasShadow) {
|
|
618
|
-
const cleanedJson =
|
|
542
|
+
const cleanedJson =
|
|
543
|
+
JSON.stringify(this.cleanBlockJson_(deleteEvent.oldJson));
|
|
619
544
|
if (this.contents_.indexOf(cleanedJson) !== -1) {
|
|
620
545
|
return;
|
|
621
546
|
}
|
|
622
547
|
this.contents_.unshift(cleanedJson);
|
|
623
548
|
while (this.contents_.length >
|
|
624
|
-
this.
|
|
549
|
+
this.workspace.options.maxTrashcanContents) {
|
|
625
550
|
this.contents_.pop();
|
|
626
551
|
}
|
|
627
552
|
|
|
@@ -632,21 +557,19 @@ class Trashcan extends DeleteArea {
|
|
|
632
557
|
/**
|
|
633
558
|
* Converts JSON representing a block into text that can be stored in the
|
|
634
559
|
* content array.
|
|
635
|
-
* @param
|
|
636
|
-
*
|
|
637
|
-
*
|
|
638
|
-
* attributes.
|
|
639
|
-
* @private
|
|
560
|
+
* @param json A JSON representation of a block's state.
|
|
561
|
+
* @return A BlockInfo object corresponding to the JSON, cleaned of all
|
|
562
|
+
* unnecessary attributes.
|
|
640
563
|
*/
|
|
641
|
-
cleanBlockJson_(json) {
|
|
564
|
+
private cleanBlockJson_(json: blocks.State): BlockInfo {
|
|
642
565
|
// Create a deep copy.
|
|
643
|
-
json =
|
|
566
|
+
json = JSON.parse(JSON.stringify(json)) as blocks.State;
|
|
644
567
|
|
|
645
568
|
/**
|
|
646
569
|
* Reshape JSON into a nicer format.
|
|
647
|
-
* @param
|
|
570
|
+
* @param json The JSON to clean.
|
|
648
571
|
*/
|
|
649
|
-
function cleanRec(json) {
|
|
572
|
+
function cleanRec(json: blocks.State) {
|
|
650
573
|
if (!json) {
|
|
651
574
|
return;
|
|
652
575
|
}
|
|
@@ -666,60 +589,61 @@ class Trashcan extends DeleteArea {
|
|
|
666
589
|
const inputs = json['inputs'];
|
|
667
590
|
for (const name in inputs) {
|
|
668
591
|
const input = inputs[name];
|
|
669
|
-
|
|
670
|
-
|
|
592
|
+
const block = input['block'];
|
|
593
|
+
const shadow = input['shadow'];
|
|
594
|
+
if (block) {
|
|
595
|
+
cleanRec(block);
|
|
596
|
+
}
|
|
597
|
+
if (shadow) {
|
|
598
|
+
cleanRec(shadow);
|
|
599
|
+
}
|
|
671
600
|
}
|
|
672
601
|
if (json['next']) {
|
|
673
602
|
const next = json['next'];
|
|
674
|
-
|
|
675
|
-
|
|
603
|
+
const block = next['block'];
|
|
604
|
+
const shadow = next['shadow'];
|
|
605
|
+
if (block) {
|
|
606
|
+
cleanRec(block);
|
|
607
|
+
}
|
|
608
|
+
if (shadow) {
|
|
609
|
+
cleanRec(shadow);
|
|
610
|
+
}
|
|
676
611
|
}
|
|
677
612
|
}
|
|
678
613
|
|
|
679
614
|
cleanRec(json);
|
|
680
|
-
|
|
681
|
-
|
|
615
|
+
|
|
616
|
+
const blockInfo: BlockInfo = {
|
|
617
|
+
'kind': 'BLOCK',
|
|
618
|
+
...json,
|
|
619
|
+
};
|
|
620
|
+
return blockInfo;
|
|
682
621
|
}
|
|
683
622
|
}
|
|
684
623
|
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
*/
|
|
624
|
+
|
|
625
|
+
/** Width of both the trash can and lid images. */
|
|
688
626
|
const WIDTH = 47;
|
|
689
627
|
|
|
690
|
-
/**
|
|
691
|
-
* Height of the trashcan image (minus lid).
|
|
692
|
-
*/
|
|
628
|
+
/** Height of the trashcan image (minus lid). */
|
|
693
629
|
const BODY_HEIGHT = 44;
|
|
694
630
|
|
|
695
|
-
/**
|
|
696
|
-
* Height of the lid image.
|
|
697
|
-
*/
|
|
631
|
+
/** Height of the lid image. */
|
|
698
632
|
const LID_HEIGHT = 16;
|
|
699
633
|
|
|
700
|
-
/**
|
|
701
|
-
* Distance between trashcan and bottom or top edge of workspace.
|
|
702
|
-
*/
|
|
634
|
+
/** Distance between trashcan and bottom or top edge of workspace. */
|
|
703
635
|
const MARGIN_VERTICAL = 20;
|
|
704
636
|
|
|
705
|
-
/**
|
|
706
|
-
* Distance between trashcan and right or left edge of workspace.
|
|
707
|
-
*/
|
|
637
|
+
/** Distance between trashcan and right or left edge of workspace. */
|
|
708
638
|
const MARGIN_HORIZONTAL = 20;
|
|
709
639
|
|
|
710
|
-
/**
|
|
711
|
-
* Extent of hotspot on all sides beyond the size of the image.
|
|
712
|
-
*/
|
|
640
|
+
/** Extent of hotspot on all sides beyond the size of the image. */
|
|
713
641
|
const MARGIN_HOTSPOT = 10;
|
|
714
642
|
|
|
715
|
-
/**
|
|
716
|
-
* Location of trashcan in sprite image.
|
|
717
|
-
*/
|
|
643
|
+
/** Location of trashcan in sprite image. */
|
|
718
644
|
const SPRITE_LEFT = 0;
|
|
719
645
|
|
|
720
|
-
/**
|
|
721
|
-
* Location of trashcan in sprite image.
|
|
722
|
-
*/
|
|
646
|
+
/** Location of trashcan in sprite image. */
|
|
723
647
|
const SPRITE_TOP = 32;
|
|
724
648
|
|
|
725
649
|
/**
|
|
@@ -728,24 +652,16 @@ const SPRITE_TOP = 32;
|
|
|
728
652
|
*/
|
|
729
653
|
const HAS_BLOCKS_LID_ANGLE = 0.1;
|
|
730
654
|
|
|
731
|
-
/**
|
|
732
|
-
* The length of the lid open/close animation in milliseconds.
|
|
733
|
-
*/
|
|
655
|
+
/** The length of the lid open/close animation in milliseconds. */
|
|
734
656
|
const ANIMATION_LENGTH = 80;
|
|
735
657
|
|
|
736
|
-
/**
|
|
737
|
-
* The number of frames in the animation.
|
|
738
|
-
*/
|
|
658
|
+
/** The number of frames in the animation. */
|
|
739
659
|
const ANIMATION_FRAMES = 4;
|
|
740
660
|
|
|
741
|
-
/**
|
|
742
|
-
* The minimum (resting) opacity of the trashcan and lid.
|
|
743
|
-
*/
|
|
661
|
+
/** The minimum (resting) opacity of the trashcan and lid. */
|
|
744
662
|
const OPACITY_MIN = 0.4;
|
|
745
663
|
|
|
746
|
-
/**
|
|
747
|
-
* The maximum (hovered) opacity of the trashcan and lid.
|
|
748
|
-
*/
|
|
664
|
+
/** The maximum (hovered) opacity of the trashcan and lid. */
|
|
749
665
|
const OPACITY_MAX = 0.8;
|
|
750
666
|
|
|
751
667
|
/**
|
|
@@ -753,5 +669,3 @@ const OPACITY_MAX = 0.8;
|
|
|
753
669
|
* animation the lid will be open to this angle.
|
|
754
670
|
*/
|
|
755
671
|
const MAX_LID_ANGLE = 45;
|
|
756
|
-
|
|
757
|
-
exports.Trashcan = Trashcan;
|