blockly 8.0.5 → 9.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/blockly.min.js +2002 -2269
- 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/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,165 +7,152 @@
|
|
|
7
7
|
/**
|
|
8
8
|
* @fileoverview Class that controls updates to connections during drags.
|
|
9
9
|
*/
|
|
10
|
-
'use strict';
|
|
11
10
|
|
|
12
11
|
/**
|
|
13
12
|
* Class that controls updates to connections during drags.
|
|
14
13
|
* @class
|
|
15
14
|
*/
|
|
16
|
-
goog
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
15
|
+
import * as goog from '../closure/goog/goog.js';
|
|
16
|
+
goog.declareModuleId('Blockly.InsertionMarkerManager');
|
|
17
|
+
|
|
18
|
+
import * as blockAnimations from './block_animations.js';
|
|
19
|
+
import type {BlockSvg} from './block_svg.js';
|
|
20
|
+
import * as common from './common.js';
|
|
21
|
+
import {ComponentManager} from './component_manager.js';
|
|
22
|
+
import {config} from './config.js';
|
|
23
|
+
import {ConnectionType} from './connection_type.js';
|
|
24
|
+
import * as constants from './constants.js';
|
|
25
|
+
import * as eventUtils from './events/utils.js';
|
|
26
|
+
import type {IDeleteArea} from './interfaces/i_delete_area.js';
|
|
27
|
+
import type {IDragTarget} from './interfaces/i_drag_target.js';
|
|
28
|
+
import type {RenderedConnection} from './rendered_connection.js';
|
|
29
|
+
import type {Coordinate} from './utils/coordinate.js';
|
|
30
|
+
import type {WorkspaceSvg} from './workspace_svg.js';
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
/** Represents a nearby valid connection. */
|
|
34
|
+
interface CandidateConnection {
|
|
35
|
+
closest: RenderedConnection|null;
|
|
36
|
+
local: RenderedConnection|null;
|
|
37
|
+
radius: number;
|
|
38
|
+
}
|
|
38
39
|
|
|
39
40
|
/**
|
|
40
41
|
* An error message to throw if the block created by createMarkerBlock_ is
|
|
41
42
|
* missing any components.
|
|
42
|
-
* @type {string}
|
|
43
|
-
* @const
|
|
44
43
|
*/
|
|
45
44
|
const DUPLICATE_BLOCK_ERROR = 'The insertion marker ' +
|
|
46
45
|
'manager tried to create a marker but the result is missing %1. If ' +
|
|
47
46
|
'you are using a mutator, make sure your domToMutation method is ' +
|
|
48
47
|
'properly defined.';
|
|
49
48
|
|
|
50
|
-
|
|
51
49
|
/**
|
|
52
50
|
* Class that controls updates to connections during drags. It is primarily
|
|
53
51
|
* responsible for finding the closest eligible connection and highlighting or
|
|
54
52
|
* unhighlighting it as needed during a drag.
|
|
55
53
|
* @alias Blockly.InsertionMarkerManager
|
|
56
54
|
*/
|
|
57
|
-
class InsertionMarkerManager {
|
|
55
|
+
export class InsertionMarkerManager {
|
|
56
|
+
private readonly topBlock_: BlockSvg;
|
|
57
|
+
private readonly workspace_: WorkspaceSvg;
|
|
58
|
+
|
|
59
|
+
/**
|
|
60
|
+
* The last connection on the stack, if it's not the last connection on the
|
|
61
|
+
* first block.
|
|
62
|
+
* Set in initAvailableConnections, if at all.
|
|
63
|
+
*/
|
|
64
|
+
// AnyDuringMigration because: Type 'null' is not assignable to type
|
|
65
|
+
// 'RenderedConnection'.
|
|
66
|
+
private lastOnStack_: RenderedConnection = null as AnyDuringMigration;
|
|
67
|
+
|
|
68
|
+
/**
|
|
69
|
+
* The insertion marker corresponding to the last block in the stack, if
|
|
70
|
+
* that's not the same as the first block in the stack.
|
|
71
|
+
* Set in initAvailableConnections, if at all
|
|
72
|
+
*/
|
|
73
|
+
// AnyDuringMigration because: Type 'null' is not assignable to type
|
|
74
|
+
// 'BlockSvg'.
|
|
75
|
+
private lastMarker_: BlockSvg = null as AnyDuringMigration;
|
|
76
|
+
private firstMarker_: BlockSvg;
|
|
77
|
+
|
|
78
|
+
/**
|
|
79
|
+
* The connection that this block would connect to if released immediately.
|
|
80
|
+
* Updated on every mouse move.
|
|
81
|
+
* This is not on any of the blocks that are being dragged.
|
|
82
|
+
*/
|
|
83
|
+
// AnyDuringMigration because: Type 'null' is not assignable to type
|
|
84
|
+
// 'RenderedConnection'.
|
|
85
|
+
private closestConnection_: RenderedConnection = null as AnyDuringMigration;
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* The connection that would connect to this.closestConnection_ if this
|
|
89
|
+
* block were released immediately. Updated on every mouse move. This is on
|
|
90
|
+
* the top block that is being dragged or the last block in the dragging
|
|
91
|
+
* stack.
|
|
92
|
+
*/
|
|
93
|
+
// AnyDuringMigration because: Type 'null' is not assignable to type
|
|
94
|
+
// 'RenderedConnection'.
|
|
95
|
+
private localConnection_: RenderedConnection = null as AnyDuringMigration;
|
|
96
|
+
|
|
58
97
|
/**
|
|
59
|
-
*
|
|
98
|
+
* Whether the block would be deleted if it were dropped immediately.
|
|
99
|
+
* Updated on every mouse move.
|
|
60
100
|
*/
|
|
61
|
-
|
|
101
|
+
private wouldDeleteBlock_ = false;
|
|
102
|
+
|
|
103
|
+
/**
|
|
104
|
+
* Connection on the insertion marker block that corresponds to
|
|
105
|
+
* this.localConnection_ on the currently dragged block.
|
|
106
|
+
*/
|
|
107
|
+
// AnyDuringMigration because: Type 'null' is not assignable to type
|
|
108
|
+
// 'RenderedConnection'.
|
|
109
|
+
private markerConnection_: RenderedConnection = null as AnyDuringMigration;
|
|
110
|
+
|
|
111
|
+
/** The block that currently has an input being highlighted, or null. */
|
|
112
|
+
// AnyDuringMigration because: Type 'null' is not assignable to type
|
|
113
|
+
// 'BlockSvg'.
|
|
114
|
+
private highlightedBlock_: BlockSvg = null as AnyDuringMigration;
|
|
115
|
+
|
|
116
|
+
/** The block being faded to indicate replacement, or null. */
|
|
117
|
+
// AnyDuringMigration because: Type 'null' is not assignable to type
|
|
118
|
+
// 'BlockSvg'.
|
|
119
|
+
private fadedBlock_: BlockSvg = null as AnyDuringMigration;
|
|
120
|
+
private availableConnections_: RenderedConnection[];
|
|
121
|
+
|
|
122
|
+
/** @param block The top block in the stack being dragged. */
|
|
123
|
+
constructor(block: BlockSvg) {
|
|
62
124
|
common.setSelected(block);
|
|
63
125
|
|
|
64
126
|
/**
|
|
65
127
|
* The top block in the stack being dragged.
|
|
66
128
|
* Does not change during a drag.
|
|
67
|
-
* @type {!BlockSvg}
|
|
68
|
-
* @private
|
|
69
129
|
*/
|
|
70
130
|
this.topBlock_ = block;
|
|
71
131
|
|
|
72
132
|
/**
|
|
73
133
|
* The workspace on which these connections are being dragged.
|
|
74
134
|
* Does not change during a drag.
|
|
75
|
-
* @type {!WorkspaceSvg}
|
|
76
|
-
* @private
|
|
77
135
|
*/
|
|
78
136
|
this.workspace_ = block.workspace;
|
|
79
137
|
|
|
80
|
-
/**
|
|
81
|
-
* The last connection on the stack, if it's not the last connection on the
|
|
82
|
-
* first block.
|
|
83
|
-
* Set in initAvailableConnections, if at all.
|
|
84
|
-
* @type {RenderedConnection}
|
|
85
|
-
* @private
|
|
86
|
-
*/
|
|
87
|
-
this.lastOnStack_ = null;
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
* The insertion marker corresponding to the last block in the stack, if
|
|
91
|
-
* that's not the same as the first block in the stack.
|
|
92
|
-
* Set in initAvailableConnections, if at all
|
|
93
|
-
* @type {BlockSvg}
|
|
94
|
-
* @private
|
|
95
|
-
*/
|
|
96
|
-
this.lastMarker_ = null;
|
|
97
|
-
|
|
98
138
|
/**
|
|
99
139
|
* The insertion marker that shows up between blocks to show where a block
|
|
100
140
|
* would go if dropped immediately.
|
|
101
|
-
* @type {BlockSvg}
|
|
102
|
-
* @private
|
|
103
141
|
*/
|
|
104
142
|
this.firstMarker_ = this.createMarkerBlock_(this.topBlock_);
|
|
105
143
|
|
|
106
|
-
/**
|
|
107
|
-
* The connection that this block would connect to if released immediately.
|
|
108
|
-
* Updated on every mouse move.
|
|
109
|
-
* This is not on any of the blocks that are being dragged.
|
|
110
|
-
* @type {RenderedConnection}
|
|
111
|
-
* @private
|
|
112
|
-
*/
|
|
113
|
-
this.closestConnection_ = null;
|
|
114
|
-
|
|
115
|
-
/**
|
|
116
|
-
* The connection that would connect to this.closestConnection_ if this
|
|
117
|
-
* block were released immediately. Updated on every mouse move. This is on
|
|
118
|
-
* the top block that is being dragged or the last block in the dragging
|
|
119
|
-
* stack.
|
|
120
|
-
* @type {RenderedConnection}
|
|
121
|
-
* @private
|
|
122
|
-
*/
|
|
123
|
-
this.localConnection_ = null;
|
|
124
|
-
|
|
125
|
-
/**
|
|
126
|
-
* Whether the block would be deleted if it were dropped immediately.
|
|
127
|
-
* Updated on every mouse move.
|
|
128
|
-
* @type {boolean}
|
|
129
|
-
* @private
|
|
130
|
-
*/
|
|
131
|
-
this.wouldDeleteBlock_ = false;
|
|
132
|
-
|
|
133
|
-
/**
|
|
134
|
-
* Connection on the insertion marker block that corresponds to
|
|
135
|
-
* this.localConnection_ on the currently dragged block.
|
|
136
|
-
* @type {RenderedConnection}
|
|
137
|
-
* @private
|
|
138
|
-
*/
|
|
139
|
-
this.markerConnection_ = null;
|
|
140
|
-
|
|
141
|
-
/**
|
|
142
|
-
* The block that currently has an input being highlighted, or null.
|
|
143
|
-
* @type {BlockSvg}
|
|
144
|
-
* @private
|
|
145
|
-
*/
|
|
146
|
-
this.highlightedBlock_ = null;
|
|
147
|
-
|
|
148
|
-
/**
|
|
149
|
-
* The block being faded to indicate replacement, or null.
|
|
150
|
-
* @type {BlockSvg}
|
|
151
|
-
* @private
|
|
152
|
-
*/
|
|
153
|
-
this.fadedBlock_ = null;
|
|
154
|
-
|
|
155
144
|
/**
|
|
156
145
|
* The connections on the dragging blocks that are available to connect to
|
|
157
146
|
* other blocks. This includes all open connections on the top block, as
|
|
158
147
|
* well as the last connection on the block stack. Does not change during a
|
|
159
148
|
* drag.
|
|
160
|
-
* @type {!Array<!RenderedConnection>}
|
|
161
|
-
* @private
|
|
162
149
|
*/
|
|
163
150
|
this.availableConnections_ = this.initAvailableConnections_();
|
|
164
151
|
}
|
|
165
152
|
|
|
166
153
|
/**
|
|
167
154
|
* Sever all links from this object.
|
|
168
|
-
* @
|
|
155
|
+
* @internal
|
|
169
156
|
*/
|
|
170
157
|
dispose() {
|
|
171
158
|
this.availableConnections_.length = 0;
|
|
@@ -186,7 +173,7 @@ class InsertionMarkerManager {
|
|
|
186
173
|
/**
|
|
187
174
|
* Update the available connections for the top block. These connections can
|
|
188
175
|
* change if a block is unplugged and the stack is healed.
|
|
189
|
-
* @
|
|
176
|
+
* @internal
|
|
190
177
|
*/
|
|
191
178
|
updateAvailableConnections() {
|
|
192
179
|
this.availableConnections_ = this.initAvailableConnections_();
|
|
@@ -195,29 +182,27 @@ class InsertionMarkerManager {
|
|
|
195
182
|
/**
|
|
196
183
|
* Return whether the block would be deleted if dropped immediately, based on
|
|
197
184
|
* information from the most recent move event.
|
|
198
|
-
* @return
|
|
199
|
-
*
|
|
200
|
-
* @package
|
|
185
|
+
* @return True if the block would be deleted if dropped immediately.
|
|
186
|
+
* @internal
|
|
201
187
|
*/
|
|
202
|
-
wouldDeleteBlock() {
|
|
188
|
+
wouldDeleteBlock(): boolean {
|
|
203
189
|
return this.wouldDeleteBlock_;
|
|
204
190
|
}
|
|
205
191
|
|
|
206
192
|
/**
|
|
207
193
|
* Return whether the block would be connected if dropped immediately, based
|
|
208
194
|
* on information from the most recent move event.
|
|
209
|
-
* @return
|
|
210
|
-
*
|
|
211
|
-
* @package
|
|
195
|
+
* @return True if the block would be connected if dropped immediately.
|
|
196
|
+
* @internal
|
|
212
197
|
*/
|
|
213
|
-
wouldConnectBlock() {
|
|
198
|
+
wouldConnectBlock(): boolean {
|
|
214
199
|
return !!this.closestConnection_;
|
|
215
200
|
}
|
|
216
201
|
|
|
217
202
|
/**
|
|
218
203
|
* Connect to the closest connection and render the results.
|
|
219
204
|
* This should be called at the end of a drag.
|
|
220
|
-
* @
|
|
205
|
+
* @internal
|
|
221
206
|
*/
|
|
222
207
|
applyConnections() {
|
|
223
208
|
if (this.closestConnection_) {
|
|
@@ -226,7 +211,10 @@ class InsertionMarkerManager {
|
|
|
226
211
|
this.hidePreview_();
|
|
227
212
|
eventUtils.enable();
|
|
228
213
|
// Connect two blocks together.
|
|
229
|
-
|
|
214
|
+
// AnyDuringMigration because: Argument of type 'RenderedConnection' is
|
|
215
|
+
// not assignable to parameter of type 'Connection'.
|
|
216
|
+
this.localConnection_.connect(
|
|
217
|
+
this.closestConnection_ as AnyDuringMigration);
|
|
230
218
|
if (this.topBlock_.rendered) {
|
|
231
219
|
// Trigger a connection animation.
|
|
232
220
|
// Determine which connection is inferior (lower in the source stack).
|
|
@@ -243,13 +231,11 @@ class InsertionMarkerManager {
|
|
|
243
231
|
|
|
244
232
|
/**
|
|
245
233
|
* Update connections based on the most recent move location.
|
|
246
|
-
* @param
|
|
247
|
-
*
|
|
248
|
-
* @
|
|
249
|
-
* currently over.
|
|
250
|
-
* @package
|
|
234
|
+
* @param dxy Position relative to drag start, in workspace units.
|
|
235
|
+
* @param dragTarget The drag target that the block is currently over.
|
|
236
|
+
* @internal
|
|
251
237
|
*/
|
|
252
|
-
update(dxy, dragTarget) {
|
|
238
|
+
update(dxy: Coordinate, dragTarget: IDragTarget|null) {
|
|
253
239
|
const candidate = this.getCandidate_(dxy);
|
|
254
240
|
|
|
255
241
|
this.wouldDeleteBlock_ = this.shouldDelete_(candidate, dragTarget);
|
|
@@ -268,28 +254,25 @@ class InsertionMarkerManager {
|
|
|
268
254
|
|
|
269
255
|
/**
|
|
270
256
|
* Create an insertion marker that represents the given block.
|
|
271
|
-
* @param
|
|
272
|
-
*
|
|
273
|
-
* @return {!BlockSvg} The insertion marker that represents the given
|
|
274
|
-
* block.
|
|
275
|
-
* @private
|
|
257
|
+
* @param sourceBlock The block that the insertion marker will represent.
|
|
258
|
+
* @return The insertion marker that represents the given block.
|
|
276
259
|
*/
|
|
277
|
-
createMarkerBlock_(sourceBlock) {
|
|
260
|
+
private createMarkerBlock_(sourceBlock: BlockSvg): BlockSvg {
|
|
278
261
|
const imType = sourceBlock.type;
|
|
279
262
|
|
|
280
263
|
eventUtils.disable();
|
|
281
|
-
let result;
|
|
264
|
+
let result: BlockSvg;
|
|
282
265
|
try {
|
|
283
266
|
result = this.workspace_.newBlock(imType);
|
|
284
267
|
result.setInsertionMarker(true);
|
|
285
268
|
if (sourceBlock.saveExtraState) {
|
|
286
269
|
const state = sourceBlock.saveExtraState();
|
|
287
|
-
if (state) {
|
|
270
|
+
if (state && result.loadExtraState) {
|
|
288
271
|
result.loadExtraState(state);
|
|
289
272
|
}
|
|
290
273
|
} else if (sourceBlock.mutationToDom) {
|
|
291
274
|
const oldMutationDom = sourceBlock.mutationToDom();
|
|
292
|
-
if (oldMutationDom) {
|
|
275
|
+
if (oldMutationDom && result.domToMutation) {
|
|
293
276
|
result.domToMutation(oldMutationDom);
|
|
294
277
|
}
|
|
295
278
|
}
|
|
@@ -332,11 +315,9 @@ class InsertionMarkerManager {
|
|
|
332
315
|
* should only be called once, at the beginning of a drag. If the stack has
|
|
333
316
|
* more than one block, this function will populate lastOnStack_ and create
|
|
334
317
|
* the corresponding insertion marker.
|
|
335
|
-
* @return
|
|
336
|
-
* connections.
|
|
337
|
-
* @private
|
|
318
|
+
* @return A list of available connections.
|
|
338
319
|
*/
|
|
339
|
-
initAvailableConnections_() {
|
|
320
|
+
private initAvailableConnections_(): RenderedConnection[] {
|
|
340
321
|
const available = this.topBlock_.getConnections_(false);
|
|
341
322
|
// Also check the last connection on this stack
|
|
342
323
|
const lastOnStack = this.topBlock_.lastConnectionInStack(true);
|
|
@@ -359,14 +340,13 @@ class InsertionMarkerManager {
|
|
|
359
340
|
/**
|
|
360
341
|
* Whether the previews (insertion marker and replacement marker) should be
|
|
361
342
|
* updated based on the closest candidate and the current drag distance.
|
|
362
|
-
* @param
|
|
363
|
-
*
|
|
364
|
-
* @param
|
|
365
|
-
*
|
|
366
|
-
* @return {boolean} Whether the preview should be updated.
|
|
367
|
-
* @private
|
|
343
|
+
* @param candidate An object containing a local connection, a closest
|
|
344
|
+
* connection, and a radius. Returned by getCandidate_.
|
|
345
|
+
* @param dxy Position relative to drag start, in workspace units.
|
|
346
|
+
* @return Whether the preview should be updated.
|
|
368
347
|
*/
|
|
369
|
-
shouldUpdatePreviews_(
|
|
348
|
+
private shouldUpdatePreviews_(
|
|
349
|
+
candidate: CandidateConnection, dxy: Coordinate): boolean {
|
|
370
350
|
const candidateLocal = candidate.local;
|
|
371
351
|
const candidateClosest = candidate.closest;
|
|
372
352
|
const radius = candidate.radius;
|
|
@@ -410,13 +390,11 @@ class InsertionMarkerManager {
|
|
|
410
390
|
/**
|
|
411
391
|
* Find the nearest valid connection, which may be the same as the current
|
|
412
392
|
* closest connection.
|
|
413
|
-
* @param
|
|
414
|
-
*
|
|
415
|
-
*
|
|
416
|
-
* connection, and a radius.
|
|
417
|
-
* @private
|
|
393
|
+
* @param dxy Position relative to drag start, in workspace units.
|
|
394
|
+
* @return An object containing a local connection, a closest connection, and
|
|
395
|
+
* a radius.
|
|
418
396
|
*/
|
|
419
|
-
getCandidate_(dxy) {
|
|
397
|
+
private getCandidate_(dxy: Coordinate): CandidateConnection {
|
|
420
398
|
let radius = this.getStartRadius_();
|
|
421
399
|
let candidateClosest = null;
|
|
422
400
|
let candidateLocal = null;
|
|
@@ -441,16 +419,14 @@ class InsertionMarkerManager {
|
|
|
441
419
|
radius = neighbour.radius;
|
|
442
420
|
}
|
|
443
421
|
}
|
|
444
|
-
return {closest: candidateClosest, local: candidateLocal, radius
|
|
422
|
+
return {closest: candidateClosest, local: candidateLocal, radius};
|
|
445
423
|
}
|
|
446
424
|
|
|
447
425
|
/**
|
|
448
426
|
* Decide the radius at which to start searching for the closest connection.
|
|
449
|
-
* @return
|
|
450
|
-
* connection.
|
|
451
|
-
* @private
|
|
427
|
+
* @return The radius at which to start the search for the closest connection.
|
|
452
428
|
*/
|
|
453
|
-
getStartRadius_() {
|
|
429
|
+
private getStartRadius_(): number {
|
|
454
430
|
// If there is already a connection highlighted,
|
|
455
431
|
// increase the radius we check for making new connections.
|
|
456
432
|
// Why? When a connection is highlighted, blocks move around when the
|
|
@@ -465,23 +441,19 @@ class InsertionMarkerManager {
|
|
|
465
441
|
|
|
466
442
|
/**
|
|
467
443
|
* Whether ending the drag would delete the block.
|
|
468
|
-
* @param
|
|
469
|
-
*
|
|
470
|
-
*
|
|
471
|
-
* @
|
|
472
|
-
* currently over.
|
|
473
|
-
* @return {boolean} Whether dropping the block immediately would delete the
|
|
474
|
-
* block.
|
|
475
|
-
* @private
|
|
444
|
+
* @param candidate An object containing a local connection, a closest
|
|
445
|
+
* connection, and a radius.
|
|
446
|
+
* @param dragTarget The drag target that the block is currently over.
|
|
447
|
+
* @return Whether dropping the block immediately would delete the block.
|
|
476
448
|
*/
|
|
477
|
-
shouldDelete_(
|
|
449
|
+
private shouldDelete_(
|
|
450
|
+
candidate: CandidateConnection, dragTarget: IDragTarget|null): boolean {
|
|
478
451
|
if (dragTarget) {
|
|
479
452
|
const componentManager = this.workspace_.getComponentManager();
|
|
480
453
|
const isDeleteArea = componentManager.hasCapability(
|
|
481
454
|
dragTarget.id, ComponentManager.Capability.DELETE_AREA);
|
|
482
455
|
if (isDeleteArea) {
|
|
483
|
-
return (
|
|
484
|
-
/** @type {!IDeleteArea} */ (dragTarget))
|
|
456
|
+
return (dragTarget as IDeleteArea)
|
|
485
457
|
.wouldDelete(this.topBlock_, candidate && !!candidate.closest);
|
|
486
458
|
}
|
|
487
459
|
}
|
|
@@ -493,11 +465,10 @@ class InsertionMarkerManager {
|
|
|
493
465
|
* needed.
|
|
494
466
|
* At the beginning of this function, this.localConnection_ and
|
|
495
467
|
* this.closestConnection_ should both be null.
|
|
496
|
-
* @param
|
|
497
|
-
*
|
|
498
|
-
* @private
|
|
468
|
+
* @param candidate An object containing a local connection, a closest
|
|
469
|
+
* connection, and a radius.
|
|
499
470
|
*/
|
|
500
|
-
maybeShowPreview_(candidate) {
|
|
471
|
+
private maybeShowPreview_(candidate: CandidateConnection) {
|
|
501
472
|
// Nope, don't add a marker.
|
|
502
473
|
if (this.wouldDeleteBlock_) {
|
|
503
474
|
return;
|
|
@@ -519,22 +490,21 @@ class InsertionMarkerManager {
|
|
|
519
490
|
}
|
|
520
491
|
// Add an insertion marker or replacement marker.
|
|
521
492
|
this.closestConnection_ = closest;
|
|
522
|
-
|
|
493
|
+
// AnyDuringMigration because: Type 'RenderedConnection | null' is not
|
|
494
|
+
// assignable to type 'RenderedConnection'.
|
|
495
|
+
this.localConnection_ = local as AnyDuringMigration;
|
|
523
496
|
this.showPreview_();
|
|
524
497
|
}
|
|
525
498
|
|
|
526
499
|
/**
|
|
527
500
|
* A preview should be shown. This function figures out if it should be a
|
|
528
501
|
* block highlight or an insertion marker, and shows the appropriate one.
|
|
529
|
-
* @private
|
|
530
502
|
*/
|
|
531
|
-
showPreview_() {
|
|
503
|
+
private showPreview_() {
|
|
532
504
|
const closest = this.closestConnection_;
|
|
533
505
|
const renderer = this.workspace_.getRenderer();
|
|
534
506
|
const method = renderer.getConnectionPreviewMethod(
|
|
535
|
-
|
|
536
|
-
/** @type {!RenderedConnection} */ (this.localConnection_),
|
|
537
|
-
this.topBlock_);
|
|
507
|
+
(closest), (this.localConnection_), this.topBlock_);
|
|
538
508
|
|
|
539
509
|
switch (method) {
|
|
540
510
|
case InsertionMarkerManager.PREVIEW_TYPE.INPUT_OUTLINE:
|
|
@@ -550,7 +520,10 @@ class InsertionMarkerManager {
|
|
|
550
520
|
|
|
551
521
|
// Optionally highlight the actual connection, as a nod to previous
|
|
552
522
|
// behaviour.
|
|
553
|
-
|
|
523
|
+
// AnyDuringMigration because: Argument of type 'RenderedConnection' is not
|
|
524
|
+
// assignable to parameter of type 'Connection'.
|
|
525
|
+
if (closest &&
|
|
526
|
+
renderer.shouldHighlightConnection(closest as AnyDuringMigration)) {
|
|
554
527
|
closest.highlight();
|
|
555
528
|
}
|
|
556
529
|
}
|
|
@@ -560,11 +533,10 @@ class InsertionMarkerManager {
|
|
|
560
533
|
* needed.
|
|
561
534
|
* At the end of this function, this.localConnection_ and
|
|
562
535
|
* this.closestConnection_ should both be null.
|
|
563
|
-
* @param
|
|
564
|
-
*
|
|
565
|
-
* @private
|
|
536
|
+
* @param candidate An object containing a local connection, a closest
|
|
537
|
+
* connection, and a radius.
|
|
566
538
|
*/
|
|
567
|
-
maybeHidePreview_(candidate) {
|
|
539
|
+
private maybeHidePreview_(candidate: CandidateConnection) {
|
|
568
540
|
// If there's no new preview, remove the old one but don't bother deleting
|
|
569
541
|
// it. We might need it later, and this saves disposing of it and recreating
|
|
570
542
|
// it.
|
|
@@ -586,20 +558,27 @@ class InsertionMarkerManager {
|
|
|
586
558
|
}
|
|
587
559
|
|
|
588
560
|
// Either way, clear out old state.
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
this.
|
|
561
|
+
// AnyDuringMigration because: Type 'null' is not assignable to type
|
|
562
|
+
// 'RenderedConnection'.
|
|
563
|
+
this.markerConnection_ = null as AnyDuringMigration;
|
|
564
|
+
// AnyDuringMigration because: Type 'null' is not assignable to type
|
|
565
|
+
// 'RenderedConnection'.
|
|
566
|
+
this.closestConnection_ = null as AnyDuringMigration;
|
|
567
|
+
// AnyDuringMigration because: Type 'null' is not assignable to type
|
|
568
|
+
// 'RenderedConnection'.
|
|
569
|
+
this.localConnection_ = null as AnyDuringMigration;
|
|
592
570
|
}
|
|
593
571
|
|
|
594
572
|
/**
|
|
595
573
|
* A preview should be hidden. This function figures out if it is a block
|
|
596
574
|
* highlight or an insertion marker, and hides the appropriate one.
|
|
597
|
-
* @private
|
|
598
575
|
*/
|
|
599
|
-
hidePreview_() {
|
|
576
|
+
private hidePreview_() {
|
|
577
|
+
// AnyDuringMigration because: Argument of type 'RenderedConnection' is not
|
|
578
|
+
// assignable to parameter of type 'Connection'.
|
|
600
579
|
if (this.closestConnection_ && this.closestConnection_.targetBlock() &&
|
|
601
580
|
this.workspace_.getRenderer().shouldHighlightConnection(
|
|
602
|
-
this.closestConnection_)) {
|
|
581
|
+
this.closestConnection_ as AnyDuringMigration)) {
|
|
603
582
|
this.closestConnection_.unhighlight();
|
|
604
583
|
}
|
|
605
584
|
if (this.fadedBlock_) {
|
|
@@ -614,9 +593,8 @@ class InsertionMarkerManager {
|
|
|
614
593
|
/**
|
|
615
594
|
* Shows an insertion marker connected to the appropriate blocks (based on
|
|
616
595
|
* manager state).
|
|
617
|
-
* @private
|
|
618
596
|
*/
|
|
619
|
-
showInsertionMarker_() {
|
|
597
|
+
private showInsertionMarker_() {
|
|
620
598
|
const local = this.localConnection_;
|
|
621
599
|
const closest = this.closestConnection_;
|
|
622
600
|
|
|
@@ -624,7 +602,10 @@ class InsertionMarkerManager {
|
|
|
624
602
|
let imBlock = isLastInStack ? this.lastMarker_ : this.firstMarker_;
|
|
625
603
|
let imConn;
|
|
626
604
|
try {
|
|
627
|
-
|
|
605
|
+
// AnyDuringMigration because: Argument of type 'BlockSvg' is not
|
|
606
|
+
// assignable to parameter of type 'Block'.
|
|
607
|
+
imConn = imBlock.getMatchingConnection(
|
|
608
|
+
local.getSourceBlock() as AnyDuringMigration, local);
|
|
628
609
|
} catch (e) {
|
|
629
610
|
// It's possible that the number of connections on the local block has
|
|
630
611
|
// changed since the insertion marker was originally created. Let's
|
|
@@ -634,7 +615,10 @@ class InsertionMarkerManager {
|
|
|
634
615
|
// might be too slow, so we only do it if necessary.
|
|
635
616
|
this.firstMarker_ = this.createMarkerBlock_(this.topBlock_);
|
|
636
617
|
imBlock = isLastInStack ? this.lastMarker_ : this.firstMarker_;
|
|
637
|
-
|
|
618
|
+
// AnyDuringMigration because: Argument of type 'BlockSvg' is not
|
|
619
|
+
// assignable to parameter of type 'Block'.
|
|
620
|
+
imConn = imBlock.getMatchingConnection(
|
|
621
|
+
local.getSourceBlock() as AnyDuringMigration, local);
|
|
638
622
|
}
|
|
639
623
|
|
|
640
624
|
if (imConn === this.markerConnection_) {
|
|
@@ -655,18 +639,21 @@ class InsertionMarkerManager {
|
|
|
655
639
|
}
|
|
656
640
|
if (closest) {
|
|
657
641
|
// Connect() also renders the insertion marker.
|
|
658
|
-
|
|
642
|
+
// AnyDuringMigration because: Argument of type 'RenderedConnection' is
|
|
643
|
+
// not assignable to parameter of type 'Connection'.
|
|
644
|
+
imConn!.connect(closest as AnyDuringMigration);
|
|
659
645
|
}
|
|
660
646
|
|
|
661
|
-
|
|
647
|
+
// AnyDuringMigration because: Type 'RenderedConnection | null' is not
|
|
648
|
+
// assignable to type 'RenderedConnection'.
|
|
649
|
+
this.markerConnection_ = imConn as AnyDuringMigration;
|
|
662
650
|
}
|
|
663
651
|
|
|
664
652
|
/**
|
|
665
653
|
* Disconnects and hides the current insertion marker. Should return the
|
|
666
654
|
* blocks to their original state.
|
|
667
|
-
* @private
|
|
668
655
|
*/
|
|
669
|
-
hideInsertionMarker_() {
|
|
656
|
+
private hideInsertionMarker_() {
|
|
670
657
|
if (!this.markerConnection_) {
|
|
671
658
|
console.log('No insertion marker connection to disconnect');
|
|
672
659
|
return;
|
|
@@ -679,30 +666,36 @@ class InsertionMarkerManager {
|
|
|
679
666
|
const markerOutput = imBlock.outputConnection;
|
|
680
667
|
|
|
681
668
|
const isFirstInStatementStack =
|
|
682
|
-
|
|
669
|
+
imConn === markerNext && !(markerPrev && markerPrev.targetConnection);
|
|
683
670
|
|
|
684
671
|
const isFirstInOutputStack = imConn.type === ConnectionType.INPUT_VALUE &&
|
|
685
672
|
!(markerOutput && markerOutput.targetConnection);
|
|
686
673
|
// The insertion marker is the first block in a stack. Unplug won't do
|
|
687
674
|
// anything in that case. Instead, unplug the following block.
|
|
688
675
|
if (isFirstInStatementStack || isFirstInOutputStack) {
|
|
689
|
-
imConn.targetBlock()
|
|
676
|
+
imConn.targetBlock()!.unplug(false);
|
|
690
677
|
} else if (
|
|
691
678
|
imConn.type === ConnectionType.NEXT_STATEMENT &&
|
|
692
679
|
imConn !== markerNext) {
|
|
693
680
|
// Inside of a C-block, first statement connection.
|
|
694
681
|
const innerConnection = imConn.targetConnection;
|
|
695
|
-
innerConnection
|
|
682
|
+
if (innerConnection) {
|
|
683
|
+
innerConnection.getSourceBlock().unplug(false);
|
|
684
|
+
}
|
|
696
685
|
|
|
697
686
|
const previousBlockNextConnection =
|
|
698
687
|
markerPrev ? markerPrev.targetConnection : null;
|
|
699
688
|
|
|
700
689
|
imBlock.unplug(true);
|
|
701
690
|
if (previousBlockNextConnection) {
|
|
702
|
-
|
|
691
|
+
// AnyDuringMigration because: Argument of type 'RenderedConnection' is
|
|
692
|
+
// not assignable to parameter of type 'Connection'.
|
|
693
|
+
previousBlockNextConnection.connect(
|
|
694
|
+
innerConnection as AnyDuringMigration);
|
|
703
695
|
}
|
|
704
696
|
} else {
|
|
705
|
-
imBlock.unplug(
|
|
697
|
+
imBlock.unplug(/* healStack */
|
|
698
|
+
true);
|
|
706
699
|
}
|
|
707
700
|
|
|
708
701
|
if (imConn.targetConnection) {
|
|
@@ -711,60 +704,63 @@ class InsertionMarkerManager {
|
|
|
711
704
|
'disconnectInsertionMarker');
|
|
712
705
|
}
|
|
713
706
|
|
|
714
|
-
|
|
707
|
+
// AnyDuringMigration because: Type 'null' is not assignable to type
|
|
708
|
+
// 'RenderedConnection'.
|
|
709
|
+
this.markerConnection_ = null as AnyDuringMigration;
|
|
715
710
|
const svg = imBlock.getSvgRoot();
|
|
716
711
|
if (svg) {
|
|
717
712
|
svg.setAttribute('visibility', 'hidden');
|
|
718
713
|
}
|
|
719
714
|
}
|
|
720
715
|
|
|
721
|
-
/**
|
|
722
|
-
|
|
723
|
-
* @private
|
|
724
|
-
*/
|
|
725
|
-
showInsertionInputOutline_() {
|
|
716
|
+
/** Shows an outline around the input the closest connection belongs to. */
|
|
717
|
+
private showInsertionInputOutline_() {
|
|
726
718
|
const closest = this.closestConnection_;
|
|
727
719
|
this.highlightedBlock_ = closest.getSourceBlock();
|
|
728
|
-
|
|
720
|
+
// AnyDuringMigration because: Argument of type 'RenderedConnection' is not
|
|
721
|
+
// assignable to parameter of type 'Connection'.
|
|
722
|
+
this.highlightedBlock_.highlightShapeForInput(
|
|
723
|
+
closest as AnyDuringMigration, true);
|
|
729
724
|
}
|
|
730
725
|
|
|
731
|
-
/**
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
hideInsertionInputOutline_() {
|
|
726
|
+
/** Hides any visible input outlines. */
|
|
727
|
+
private hideInsertionInputOutline_() {
|
|
728
|
+
// AnyDuringMigration because: Argument of type 'RenderedConnection' is not
|
|
729
|
+
// assignable to parameter of type 'Connection'.
|
|
736
730
|
this.highlightedBlock_.highlightShapeForInput(
|
|
737
|
-
this.closestConnection_, false);
|
|
738
|
-
|
|
731
|
+
this.closestConnection_ as AnyDuringMigration, false);
|
|
732
|
+
// AnyDuringMigration because: Type 'null' is not assignable to type
|
|
733
|
+
// 'BlockSvg'.
|
|
734
|
+
this.highlightedBlock_ = null as AnyDuringMigration;
|
|
739
735
|
}
|
|
740
736
|
|
|
741
737
|
/**
|
|
742
738
|
* Shows a replacement fade affect on the closest connection's target block
|
|
743
739
|
* (the block that is currently connected to it).
|
|
744
|
-
* @private
|
|
745
740
|
*/
|
|
746
|
-
showReplacementFade_() {
|
|
747
|
-
|
|
741
|
+
private showReplacementFade_() {
|
|
742
|
+
// AnyDuringMigration because: Type 'BlockSvg | null' is not assignable to
|
|
743
|
+
// type 'BlockSvg'.
|
|
744
|
+
this.fadedBlock_ =
|
|
745
|
+
this.closestConnection_.targetBlock() as AnyDuringMigration;
|
|
748
746
|
this.fadedBlock_.fadeForReplacement(true);
|
|
749
747
|
}
|
|
750
748
|
|
|
751
|
-
/**
|
|
752
|
-
|
|
753
|
-
* @private
|
|
754
|
-
*/
|
|
755
|
-
hideReplacementFade_() {
|
|
749
|
+
/** Hides/Removes any visible fade affects. */
|
|
750
|
+
private hideReplacementFade_() {
|
|
756
751
|
this.fadedBlock_.fadeForReplacement(false);
|
|
757
|
-
|
|
752
|
+
// AnyDuringMigration because: Type 'null' is not assignable to type
|
|
753
|
+
// 'BlockSvg'.
|
|
754
|
+
this.fadedBlock_ = null as AnyDuringMigration;
|
|
758
755
|
}
|
|
759
756
|
|
|
760
757
|
/**
|
|
761
758
|
* Get a list of the insertion markers that currently exist. Drags have 0, 1,
|
|
762
759
|
* or 2 insertion markers.
|
|
763
|
-
* @return
|
|
764
|
-
*
|
|
765
|
-
* @package
|
|
760
|
+
* @return A possibly empty list of insertion marker blocks.
|
|
761
|
+
* @internal
|
|
766
762
|
*/
|
|
767
|
-
getInsertionMarkers() {
|
|
763
|
+
getInsertionMarkers(): BlockSvg[] {
|
|
768
764
|
const result = [];
|
|
769
765
|
if (this.firstMarker_) {
|
|
770
766
|
result.push(this.firstMarker_);
|
|
@@ -776,15 +772,17 @@ class InsertionMarkerManager {
|
|
|
776
772
|
}
|
|
777
773
|
}
|
|
778
774
|
|
|
779
|
-
|
|
780
|
-
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
784
|
-
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
788
|
-
}
|
|
775
|
+
export namespace InsertionMarkerManager {
|
|
776
|
+
/**
|
|
777
|
+
* An enum describing different kinds of previews the InsertionMarkerManager
|
|
778
|
+
* could display.
|
|
779
|
+
*/
|
|
780
|
+
export enum PREVIEW_TYPE {
|
|
781
|
+
INSERTION_MARKER = 0,
|
|
782
|
+
INPUT_OUTLINE = 1,
|
|
783
|
+
REPLACEMENT_FADE = 2,
|
|
784
|
+
}
|
|
785
|
+
}
|
|
789
786
|
|
|
790
|
-
|
|
787
|
+
export type PreviewType = InsertionMarkerManager.PREVIEW_TYPE;
|
|
788
|
+
export const PreviewType = InsertionMarkerManager.PREVIEW_TYPE;
|