blockly 8.0.4-beta.0 → 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 +421 -421
- package/msg/ace.js +421 -421
- package/msg/af.js +421 -421
- package/msg/am.js +421 -421
- package/msg/ar.js +421 -421
- package/msg/ast.js +421 -421
- package/msg/az.js +421 -421
- package/msg/ba.js +421 -421
- package/msg/bcc.js +421 -421
- package/msg/be-tarask.js +421 -421
- package/msg/be.js +421 -421
- package/msg/bg.js +421 -421
- package/msg/bn.js +421 -421
- package/msg/br.js +421 -421
- package/msg/bs.js +421 -421
- package/msg/ca.js +421 -421
- package/msg/cdo.js +421 -421
- package/msg/cs.js +421 -421
- package/msg/da.js +421 -421
- package/msg/de.js +421 -421
- package/msg/diq.js +421 -421
- package/msg/dty.js +421 -421
- package/msg/ee.js +421 -421
- package/msg/el.js +421 -421
- package/msg/en-gb.js +421 -421
- package/msg/en.js +421 -421
- package/msg/eo.js +421 -421
- package/msg/es.js +421 -421
- package/msg/et.js +421 -421
- package/msg/eu.js +421 -421
- package/msg/fa.js +421 -421
- package/msg/fi.js +421 -421
- package/msg/fo.js +421 -421
- package/msg/fr.js +421 -421
- package/msg/frr.js +421 -421
- package/msg/gl.js +421 -421
- package/msg/gn.js +421 -421
- package/msg/gor.js +421 -421
- package/msg/ha.js +421 -421
- package/msg/hak.js +421 -421
- package/msg/he.js +421 -421
- package/msg/hi.js +421 -421
- package/msg/hr.js +421 -421
- package/msg/hrx.js +421 -421
- package/msg/hu.js +421 -421
- package/msg/hy.js +421 -421
- package/msg/ia.js +421 -421
- package/msg/id.js +421 -421
- package/msg/ig.js +421 -421
- package/msg/inh.js +421 -421
- package/msg/is.js +421 -421
- package/msg/it.js +421 -421
- package/msg/ja.js +421 -421
- package/msg/ka.js +421 -421
- package/msg/kab.js +421 -421
- package/msg/kbd-cyrl.js +421 -421
- package/msg/km.js +421 -421
- package/msg/kn.js +421 -421
- package/msg/ko.js +421 -421
- package/msg/ksh.js +421 -421
- package/msg/ku-latn.js +421 -421
- package/msg/ky.js +421 -421
- package/msg/la.js +421 -421
- package/msg/lb.js +421 -421
- package/msg/lki.js +421 -421
- package/msg/lo.js +421 -421
- package/msg/lrc.js +421 -421
- package/msg/lt.js +421 -421
- package/msg/lv.js +421 -421
- package/msg/mg.js +421 -421
- package/msg/mk.js +421 -421
- package/msg/ml.js +421 -421
- package/msg/mnw.js +421 -421
- package/msg/ms.js +421 -421
- package/msg/my.js +421 -421
- package/msg/mzn.js +421 -421
- package/msg/nb.js +421 -421
- package/msg/ne.js +421 -421
- package/msg/nl.js +421 -421
- package/msg/oc.js +421 -421
- package/msg/olo.js +421 -421
- package/msg/pa.js +421 -421
- package/msg/pl.js +421 -421
- package/msg/pms.js +421 -421
- package/msg/ps.js +421 -421
- package/msg/pt-br.js +421 -421
- package/msg/pt.js +421 -421
- package/msg/ro.js +421 -421
- package/msg/ru.js +421 -421
- package/msg/sc.js +421 -421
- package/msg/sco.js +421 -421
- package/msg/sd.js +421 -421
- package/msg/shn.js +421 -421
- package/msg/si.js +421 -421
- package/msg/sk.js +421 -421
- package/msg/skr-arab.js +421 -421
- package/msg/sl.js +421 -421
- package/msg/smn.js +421 -421
- package/msg/sq.js +421 -421
- package/msg/sr-latn.js +421 -421
- package/msg/sr.js +421 -421
- package/msg/sv.js +421 -421
- package/msg/sw.js +421 -421
- package/msg/ta.js +421 -421
- package/msg/tcy.js +421 -421
- package/msg/te.js +421 -421
- package/msg/th.js +421 -421
- package/msg/ti.js +421 -421
- package/msg/tl.js +421 -421
- package/msg/tlh.js +421 -421
- package/msg/tr.js +421 -421
- package/msg/ug-arab.js +421 -421
- package/msg/uk.js +421 -421
- package/msg/ur.js +421 -421
- package/msg/uz.js +421 -421
- package/msg/vi.js +421 -421
- package/msg/xmf.js +421 -421
- package/msg/yo.js +421 -421
- package/msg/yue.js +421 -421
- package/msg/zgh.js +421 -421
- package/msg/zh-hans.js +421 -421
- package/msg/zh-hant.js +421 -421
- 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
|
@@ -8,126 +8,107 @@
|
|
|
8
8
|
* @fileoverview Object representing a mutator dialog. A mutator allows the
|
|
9
9
|
* user to change the shape of a block using a nested blocks editor.
|
|
10
10
|
*/
|
|
11
|
-
'use strict';
|
|
12
11
|
|
|
13
12
|
/**
|
|
14
13
|
* Object representing a mutator dialog. A mutator allows the
|
|
15
14
|
* user to change the shape of a block using a nested blocks editor.
|
|
16
15
|
* @class
|
|
17
16
|
*/
|
|
18
|
-
goog
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
const {Svg} = goog.require('Blockly.utils.Svg');
|
|
42
|
-
const {WorkspaceSvg} = goog.require('Blockly.WorkspaceSvg');
|
|
43
|
-
/** @suppress {extraRequire} */
|
|
44
|
-
goog.require('Blockly.Events.BubbleOpen');
|
|
17
|
+
import * as goog from '../closure/goog/goog.js';
|
|
18
|
+
goog.declareModuleId('Blockly.Mutator');
|
|
19
|
+
|
|
20
|
+
// Unused import preserved for side-effects. Remove if unneeded.
|
|
21
|
+
import './events/events_bubble_open.js';
|
|
22
|
+
|
|
23
|
+
import type {Block} from './block.js';
|
|
24
|
+
import type {BlockSvg} from './block_svg.js';
|
|
25
|
+
import type {BlocklyOptions} from './blockly_options.js';
|
|
26
|
+
import {Bubble} from './bubble.js';
|
|
27
|
+
import {config} from './config.js';
|
|
28
|
+
import type {Connection} from './connection.js';
|
|
29
|
+
import type {Abstract} from './events/events_abstract.js';
|
|
30
|
+
import {BlockChange} from './events/events_block_change.js';
|
|
31
|
+
import * as eventUtils from './events/utils.js';
|
|
32
|
+
import {Icon} from './icon.js';
|
|
33
|
+
import {Options} from './options.js';
|
|
34
|
+
import type {Coordinate} from './utils/coordinate.js';
|
|
35
|
+
import * as dom from './utils/dom.js';
|
|
36
|
+
import {Svg} from './utils/svg.js';
|
|
37
|
+
import * as toolbox from './utils/toolbox.js';
|
|
38
|
+
import * as xml from './utils/xml.js';
|
|
39
|
+
import type {WorkspaceSvg} from './workspace_svg.js';
|
|
45
40
|
|
|
46
41
|
|
|
47
42
|
/**
|
|
48
43
|
* Class for a mutator dialog.
|
|
49
|
-
* @extends {Icon}
|
|
50
44
|
* @alias Blockly.Mutator
|
|
51
45
|
*/
|
|
52
|
-
class Mutator extends Icon {
|
|
46
|
+
export class Mutator extends Icon {
|
|
47
|
+
quarkNames_: AnyDuringMigration;
|
|
48
|
+
|
|
49
|
+
/** Workspace in the mutator's bubble. */
|
|
50
|
+
private workspace_: WorkspaceSvg|null = null;
|
|
51
|
+
|
|
52
|
+
/** Width of workspace. */
|
|
53
|
+
private workspaceWidth_ = 0;
|
|
54
|
+
|
|
55
|
+
/** Height of workspace. */
|
|
56
|
+
private workspaceHeight_ = 0;
|
|
57
|
+
|
|
53
58
|
/**
|
|
54
|
-
*
|
|
59
|
+
* The SVG element that is the parent of the mutator workspace, or null if
|
|
60
|
+
* not created.
|
|
55
61
|
*/
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
62
|
+
private svgDialog_: SVGSVGElement|null = null;
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* The root block of the mutator workspace, created by decomposing the
|
|
66
|
+
* source block.
|
|
67
|
+
*/
|
|
68
|
+
private rootBlock_: BlockSvg|null = null;
|
|
59
69
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
* @type {number}
|
|
77
|
-
* @private
|
|
78
|
-
*/
|
|
79
|
-
this.workspaceHeight_ = 0;
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* The SVG element that is the parent of the mutator workspace, or null if
|
|
83
|
-
* not created.
|
|
84
|
-
* @type {?SVGSVGElement}
|
|
85
|
-
* @private
|
|
86
|
-
*/
|
|
87
|
-
this.svgDialog_ = null;
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
* The root block of the mutator workspace, created by decomposing the
|
|
91
|
-
* source block.
|
|
92
|
-
* @type {?BlockSvg}
|
|
93
|
-
* @private
|
|
94
|
-
*/
|
|
95
|
-
this.rootBlock_ = null;
|
|
96
|
-
|
|
97
|
-
/**
|
|
98
|
-
* Function registered on the main workspace to update the mutator contents
|
|
99
|
-
* when the main workspace changes.
|
|
100
|
-
* @type {?Function}
|
|
101
|
-
* @private
|
|
102
|
-
*/
|
|
103
|
-
this.sourceListener_ = null;
|
|
70
|
+
/**
|
|
71
|
+
* Function registered on the main workspace to update the mutator contents
|
|
72
|
+
* when the main workspace changes.
|
|
73
|
+
*/
|
|
74
|
+
private sourceListener_: Function|null = null;
|
|
75
|
+
|
|
76
|
+
/**
|
|
77
|
+
* The PID associated with the updateWorkpace_ timeout, or 0 if no timeout
|
|
78
|
+
* is currently running.
|
|
79
|
+
*/
|
|
80
|
+
private updateWorkspacePid_: AnyDuringMigration = 0;
|
|
81
|
+
|
|
82
|
+
/** @param quarkNames List of names of sub-blocks for flyout. */
|
|
83
|
+
constructor(block: BlockSvg, quarkNames: string[]) {
|
|
84
|
+
super(block);
|
|
85
|
+
this.quarkNames_ = quarkNames;
|
|
104
86
|
}
|
|
105
87
|
|
|
106
88
|
/**
|
|
107
89
|
* Set the block this mutator is associated with.
|
|
108
|
-
* @param
|
|
109
|
-
* @
|
|
90
|
+
* @param block The block associated with this mutator.
|
|
91
|
+
* @internal
|
|
110
92
|
*/
|
|
111
|
-
setBlock(block) {
|
|
93
|
+
setBlock(block: BlockSvg) {
|
|
112
94
|
this.block_ = block;
|
|
113
95
|
}
|
|
114
96
|
|
|
115
97
|
/**
|
|
116
98
|
* Returns the workspace inside this mutator icon's bubble.
|
|
117
|
-
* @return
|
|
118
|
-
*
|
|
119
|
-
* @
|
|
99
|
+
* @return The workspace inside this mutator icon's bubble or null if the
|
|
100
|
+
* mutator isn't open.
|
|
101
|
+
* @internal
|
|
120
102
|
*/
|
|
121
|
-
getWorkspace() {
|
|
103
|
+
getWorkspace(): WorkspaceSvg|null {
|
|
122
104
|
return this.workspace_;
|
|
123
105
|
}
|
|
124
106
|
|
|
125
107
|
/**
|
|
126
108
|
* Draw the mutator icon.
|
|
127
|
-
* @param
|
|
128
|
-
* @protected
|
|
109
|
+
* @param group The icon group.
|
|
129
110
|
*/
|
|
130
|
-
drawIcon_(group) {
|
|
111
|
+
protected override drawIcon_(group: Element) {
|
|
131
112
|
// Square with rounded corners.
|
|
132
113
|
dom.createSvgElement(
|
|
133
114
|
Svg.RECT, {
|
|
@@ -160,34 +141,31 @@ class Mutator extends Icon {
|
|
|
160
141
|
/**
|
|
161
142
|
* Clicking on the icon toggles if the mutator bubble is visible.
|
|
162
143
|
* Disable if block is uneditable.
|
|
163
|
-
* @param
|
|
164
|
-
* @protected
|
|
165
|
-
* @override
|
|
144
|
+
* @param e Mouse click event.
|
|
166
145
|
*/
|
|
167
|
-
iconClick_(e) {
|
|
146
|
+
protected override iconClick_(e: MouseEvent) {
|
|
168
147
|
if (this.block_.isEditable()) {
|
|
169
|
-
|
|
148
|
+
super.iconClick_(e);
|
|
170
149
|
}
|
|
171
150
|
}
|
|
172
151
|
|
|
173
152
|
/**
|
|
174
153
|
* Create the editor for the mutator's bubble.
|
|
175
|
-
* @return
|
|
176
|
-
* @private
|
|
154
|
+
* @return The top-level node of the editor.
|
|
177
155
|
*/
|
|
178
|
-
createEditor_() {
|
|
156
|
+
private createEditor_(): SVGElement {
|
|
179
157
|
/* Create the editor. Here's the markup that will be generated:
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
158
|
+
<svg>
|
|
159
|
+
[Workspace]
|
|
160
|
+
</svg>
|
|
161
|
+
*/
|
|
184
162
|
this.svgDialog_ = dom.createSvgElement(
|
|
185
|
-
Svg.SVG, {'x': Bubble.BORDER_WIDTH, 'y': Bubble.BORDER_WIDTH}
|
|
163
|
+
Svg.SVG, {'x': Bubble.BORDER_WIDTH, 'y': Bubble.BORDER_WIDTH});
|
|
186
164
|
// Convert the list of names into a list of XML objects for the flyout.
|
|
187
165
|
let quarkXml;
|
|
188
166
|
if (this.quarkNames_.length) {
|
|
189
167
|
quarkXml = xml.createElement('xml');
|
|
190
|
-
for (let i = 0, quarkName;
|
|
168
|
+
for (let i = 0, quarkName; quarkName = this.quarkNames_[i]; i++) {
|
|
191
169
|
const element = xml.createElement('block');
|
|
192
170
|
element.setAttribute('type', quarkName);
|
|
193
171
|
quarkXml.appendChild(element);
|
|
@@ -195,27 +173,25 @@ class Mutator extends Icon {
|
|
|
195
173
|
} else {
|
|
196
174
|
quarkXml = null;
|
|
197
175
|
}
|
|
198
|
-
const workspaceOptions = new Options(
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
'rendererOverrides': this.block_.workspace.options.rendererOverrides,
|
|
210
|
-
}));
|
|
176
|
+
const workspaceOptions = new Options(({
|
|
177
|
+
// If you want to enable disabling, also remove the
|
|
178
|
+
// event filter from workspaceChanged_ .
|
|
179
|
+
'disable': false,
|
|
180
|
+
'parentWorkspace': this.block_.workspace,
|
|
181
|
+
'media': this.block_.workspace.options.pathToMedia,
|
|
182
|
+
'rtl': this.block_.RTL,
|
|
183
|
+
'horizontalLayout': false,
|
|
184
|
+
'renderer': this.block_.workspace.options.renderer,
|
|
185
|
+
'rendererOverrides': this.block_.workspace.options.rendererOverrides,
|
|
186
|
+
} as BlocklyOptions));
|
|
211
187
|
workspaceOptions.toolboxPosition =
|
|
212
188
|
this.block_.RTL ? toolbox.Position.RIGHT : toolbox.Position.LEFT;
|
|
213
189
|
const hasFlyout = !!quarkXml;
|
|
214
190
|
if (hasFlyout) {
|
|
215
191
|
workspaceOptions.languageTree = toolbox.convertToolboxDefToJson(quarkXml);
|
|
216
192
|
}
|
|
217
|
-
this.workspace_ =
|
|
218
|
-
this.workspace_.
|
|
193
|
+
this.workspace_ = this.newWorkspaceSvg(workspaceOptions);
|
|
194
|
+
this.workspace_.internalIsMutator = true;
|
|
219
195
|
this.workspace_.addChangeListener(eventUtils.disableOrphans);
|
|
220
196
|
|
|
221
197
|
// Mutator flyouts go inside the mutator workspace's <g> rather than in
|
|
@@ -231,45 +207,48 @@ class Mutator extends Icon {
|
|
|
231
207
|
// dragging work properly.
|
|
232
208
|
background.insertBefore(flyoutSvg, this.workspace_.svgBlockCanvas_);
|
|
233
209
|
}
|
|
234
|
-
this.svgDialog_
|
|
210
|
+
this.svgDialog_!.appendChild(background);
|
|
235
211
|
|
|
236
|
-
|
|
212
|
+
// AnyDuringMigration because: Type 'SVGSVGElement | null' is not
|
|
213
|
+
// assignable to type 'SVGElement'.
|
|
214
|
+
return this.svgDialog_ as AnyDuringMigration;
|
|
237
215
|
}
|
|
238
216
|
|
|
239
217
|
/**
|
|
240
|
-
*
|
|
218
|
+
* @internal
|
|
241
219
|
*/
|
|
242
|
-
|
|
220
|
+
newWorkspaceSvg(options: Options): WorkspaceSvg {
|
|
221
|
+
throw new Error(
|
|
222
|
+
'The implementation of newWorkspaceSvg should be ' +
|
|
223
|
+
'monkey-patched in by blockly.ts');
|
|
224
|
+
}
|
|
225
|
+
|
|
226
|
+
/** Add or remove the UI indicating if this icon may be clicked or not. */
|
|
227
|
+
override updateEditable() {
|
|
243
228
|
super.updateEditable();
|
|
244
229
|
if (!this.block_.isInFlyout) {
|
|
245
230
|
if (this.block_.isEditable()) {
|
|
246
231
|
if (this.iconGroup_) {
|
|
247
232
|
dom.removeClass(
|
|
248
|
-
|
|
249
|
-
'blocklyIconGroupReadonly');
|
|
233
|
+
this.iconGroup_ as Element, 'blocklyIconGroupReadonly');
|
|
250
234
|
}
|
|
251
235
|
} else {
|
|
252
236
|
// Close any mutator bubble. Icon is not clickable.
|
|
253
237
|
this.setVisible(false);
|
|
254
238
|
if (this.iconGroup_) {
|
|
255
|
-
dom.addClass(
|
|
256
|
-
/** @type {!Element} */ (this.iconGroup_),
|
|
257
|
-
'blocklyIconGroupReadonly');
|
|
239
|
+
dom.addClass(this.iconGroup_ as Element, 'blocklyIconGroupReadonly');
|
|
258
240
|
}
|
|
259
241
|
}
|
|
260
242
|
}
|
|
261
243
|
}
|
|
262
244
|
|
|
263
|
-
/**
|
|
264
|
-
|
|
265
|
-
* @private
|
|
266
|
-
*/
|
|
267
|
-
resizeBubble_() {
|
|
245
|
+
/** Resize the bubble to match the size of the workspace. */
|
|
246
|
+
private resizeBubble_() {
|
|
268
247
|
const doubleBorderWidth = 2 * Bubble.BORDER_WIDTH;
|
|
269
|
-
const workspaceSize = this.workspace_
|
|
248
|
+
const workspaceSize = this.workspace_!.getCanvas().getBBox();
|
|
270
249
|
let width = workspaceSize.width + workspaceSize.x;
|
|
271
250
|
let height = workspaceSize.height + doubleBorderWidth * 3;
|
|
272
|
-
const flyout = this.workspace_
|
|
251
|
+
const flyout = this.workspace_!.getFlyout();
|
|
273
252
|
if (flyout) {
|
|
274
253
|
const flyoutScrollMetrics =
|
|
275
254
|
flyout.getWorkspace().getMetricsManager().getScrollMetrics();
|
|
@@ -288,27 +267,30 @@ class Mutator extends Icon {
|
|
|
288
267
|
this.workspaceWidth_ = width;
|
|
289
268
|
this.workspaceHeight_ = height;
|
|
290
269
|
// Resize the bubble.
|
|
291
|
-
this.bubble_
|
|
270
|
+
this.bubble_!.setBubbleSize(
|
|
292
271
|
width + doubleBorderWidth, height + doubleBorderWidth);
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
this.
|
|
272
|
+
// AnyDuringMigration because: Argument of type 'number' is not
|
|
273
|
+
// assignable to parameter of type 'string'.
|
|
274
|
+
this.svgDialog_!.setAttribute(
|
|
275
|
+
'width', this.workspaceWidth_ as AnyDuringMigration);
|
|
276
|
+
// AnyDuringMigration because: Argument of type 'number' is not
|
|
277
|
+
// assignable to parameter of type 'string'.
|
|
278
|
+
this.svgDialog_!.setAttribute(
|
|
279
|
+
'height', this.workspaceHeight_ as AnyDuringMigration);
|
|
280
|
+
this.workspace_!.setCachedParentSvgSize(
|
|
296
281
|
this.workspaceWidth_, this.workspaceHeight_);
|
|
297
282
|
}
|
|
298
283
|
|
|
299
284
|
if (this.block_.RTL) {
|
|
300
285
|
// Scroll the workspace to always left-align.
|
|
301
286
|
const translation = 'translate(' + this.workspaceWidth_ + ',0)';
|
|
302
|
-
this.workspace_
|
|
287
|
+
this.workspace_!.getCanvas().setAttribute('transform', translation);
|
|
303
288
|
}
|
|
304
|
-
this.workspace_
|
|
289
|
+
this.workspace_!.resize();
|
|
305
290
|
}
|
|
306
291
|
|
|
307
|
-
/**
|
|
308
|
-
|
|
309
|
-
* @private
|
|
310
|
-
*/
|
|
311
|
-
onBubbleMove_() {
|
|
292
|
+
/** A method handler for when the bubble is moved. */
|
|
293
|
+
private onBubbleMove_() {
|
|
312
294
|
if (this.workspace_) {
|
|
313
295
|
this.workspace_.recordDragTargets();
|
|
314
296
|
}
|
|
@@ -316,44 +298,44 @@ class Mutator extends Icon {
|
|
|
316
298
|
|
|
317
299
|
/**
|
|
318
300
|
* Show or hide the mutator bubble.
|
|
319
|
-
* @param
|
|
301
|
+
* @param visible True if the bubble should be visible.
|
|
320
302
|
*/
|
|
321
|
-
setVisible(visible) {
|
|
303
|
+
override setVisible(visible: boolean) {
|
|
322
304
|
if (visible === this.isVisible()) {
|
|
323
305
|
// No change.
|
|
324
306
|
return;
|
|
325
307
|
}
|
|
326
|
-
eventUtils.fire(new (eventUtils.get(eventUtils.BUBBLE_OPEN))
|
|
327
|
-
|
|
308
|
+
eventUtils.fire(new (eventUtils.get(eventUtils.BUBBLE_OPEN))!
|
|
309
|
+
(this.block_, visible, 'mutator'));
|
|
328
310
|
if (visible) {
|
|
329
311
|
// Create the bubble.
|
|
330
312
|
this.bubble_ = new Bubble(
|
|
331
|
-
|
|
332
|
-
this.
|
|
333
|
-
|
|
313
|
+
(this.block_.workspace as WorkspaceSvg), this.createEditor_(),
|
|
314
|
+
this.block_.pathObject.svgPath, (this.iconXY_ as Coordinate), null,
|
|
315
|
+
null);
|
|
334
316
|
// Expose this mutator's block's ID on its top-level SVG group.
|
|
335
317
|
this.bubble_.setSvgId(this.block_.id);
|
|
336
318
|
this.bubble_.registerMoveEvent(this.onBubbleMove_.bind(this));
|
|
337
|
-
const tree = this.workspace_
|
|
338
|
-
const flyout = this.workspace_
|
|
319
|
+
const tree = this.workspace_!.options.languageTree;
|
|
320
|
+
const flyout = this.workspace_!.getFlyout();
|
|
339
321
|
if (tree) {
|
|
340
|
-
flyout
|
|
341
|
-
flyout
|
|
322
|
+
flyout!.init(this.workspace_!);
|
|
323
|
+
flyout!.show(tree);
|
|
342
324
|
}
|
|
343
325
|
|
|
344
|
-
this.rootBlock_ = this.block_
|
|
345
|
-
const blocks = this.rootBlock_
|
|
346
|
-
for (let i = 0, child;
|
|
326
|
+
this.rootBlock_ = this.block_!.decompose!(this.workspace_!)!;
|
|
327
|
+
const blocks = this.rootBlock_!.getDescendants(false);
|
|
328
|
+
for (let i = 0, child; child = blocks[i]; i++) {
|
|
347
329
|
child.render();
|
|
348
330
|
}
|
|
349
331
|
// The root block should not be draggable or deletable.
|
|
350
|
-
this.rootBlock_
|
|
351
|
-
this.rootBlock_
|
|
332
|
+
this.rootBlock_!.setMovable(false);
|
|
333
|
+
this.rootBlock_!.setDeletable(false);
|
|
352
334
|
let margin;
|
|
353
335
|
let x;
|
|
354
336
|
if (flyout) {
|
|
355
337
|
margin = flyout.CORNER_RADIUS * 2;
|
|
356
|
-
x = this.rootBlock_
|
|
338
|
+
x = this.rootBlock_!.RTL ? flyout.getWidth() + margin : margin;
|
|
357
339
|
} else {
|
|
358
340
|
margin = 16;
|
|
359
341
|
x = margin;
|
|
@@ -361,13 +343,13 @@ class Mutator extends Icon {
|
|
|
361
343
|
if (this.block_.RTL) {
|
|
362
344
|
x = -x;
|
|
363
345
|
}
|
|
364
|
-
this.rootBlock_
|
|
346
|
+
this.rootBlock_!.moveBy(x, margin);
|
|
365
347
|
// Save the initial connections, then listen for further changes.
|
|
366
348
|
if (this.block_.saveConnections) {
|
|
367
349
|
const thisRootBlock = this.rootBlock_;
|
|
368
350
|
this.block_.saveConnections(thisRootBlock);
|
|
369
351
|
this.sourceListener_ = () => {
|
|
370
|
-
if (this.block_) {
|
|
352
|
+
if (this.block_ && this.block_.saveConnections) {
|
|
371
353
|
this.block_.saveConnections(thisRootBlock);
|
|
372
354
|
}
|
|
373
355
|
};
|
|
@@ -375,17 +357,17 @@ class Mutator extends Icon {
|
|
|
375
357
|
}
|
|
376
358
|
this.resizeBubble_();
|
|
377
359
|
// When the mutator's workspace changes, update the source block.
|
|
378
|
-
this.workspace_
|
|
360
|
+
this.workspace_!.addChangeListener(this.workspaceChanged_.bind(this));
|
|
379
361
|
// Update the source block immediately after the bubble becomes visible.
|
|
380
362
|
this.updateWorkspace_();
|
|
381
363
|
this.applyColour();
|
|
382
364
|
} else {
|
|
383
365
|
// Dispose of the bubble.
|
|
384
366
|
this.svgDialog_ = null;
|
|
385
|
-
this.workspace_
|
|
367
|
+
this.workspace_!.dispose();
|
|
386
368
|
this.workspace_ = null;
|
|
387
369
|
this.rootBlock_ = null;
|
|
388
|
-
this.bubble_
|
|
370
|
+
this.bubble_?.dispose();
|
|
389
371
|
this.bubble_ = null;
|
|
390
372
|
this.workspaceWidth_ = 0;
|
|
391
373
|
this.workspaceHeight_ = 0;
|
|
@@ -398,29 +380,39 @@ class Mutator extends Icon {
|
|
|
398
380
|
|
|
399
381
|
/**
|
|
400
382
|
* Fired whenever a change is made to the mutator's workspace.
|
|
401
|
-
* @param
|
|
402
|
-
* @private
|
|
383
|
+
* @param e Custom data for event.
|
|
403
384
|
*/
|
|
404
|
-
workspaceChanged_(e) {
|
|
405
|
-
if (!(e.
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
409
|
-
|
|
385
|
+
private workspaceChanged_(e: Abstract) {
|
|
386
|
+
if (!this.shouldIgnoreMutatorEvent_(e) && !this.updateWorkspacePid_) {
|
|
387
|
+
this.updateWorkspacePid_ = setTimeout(() => {
|
|
388
|
+
this.updateWorkspacePid_ = 0;
|
|
389
|
+
this.updateWorkspace_();
|
|
390
|
+
}, 0);
|
|
410
391
|
}
|
|
411
392
|
}
|
|
412
393
|
|
|
394
|
+
/**
|
|
395
|
+
* Returns whether the given event in the mutator workspace should be ignored
|
|
396
|
+
* when deciding whether to update the workspace and compose the block or not.
|
|
397
|
+
* @param e The event.
|
|
398
|
+
* @return Whether to ignore the event or not.
|
|
399
|
+
*/
|
|
400
|
+
shouldIgnoreMutatorEvent_(e: Abstract) {
|
|
401
|
+
return e.isUiEvent || e.type === eventUtils.CREATE ||
|
|
402
|
+
e.type === eventUtils.CHANGE &&
|
|
403
|
+
(e as BlockChange).element === 'disabled';
|
|
404
|
+
}
|
|
405
|
+
|
|
413
406
|
/**
|
|
414
407
|
* Updates the source block when the mutator's blocks are changed.
|
|
415
408
|
* Bump down any block that's too high.
|
|
416
|
-
* @private
|
|
417
409
|
*/
|
|
418
|
-
updateWorkspace_() {
|
|
419
|
-
if (!this.workspace_
|
|
420
|
-
const blocks = this.workspace_
|
|
410
|
+
private updateWorkspace_() {
|
|
411
|
+
if (!this.workspace_!.isDragging()) {
|
|
412
|
+
const blocks = this.workspace_!.getTopBlocks(false);
|
|
421
413
|
const MARGIN = 20;
|
|
422
414
|
|
|
423
|
-
for (let b = 0, block;
|
|
415
|
+
for (let b = 0, block; block = blocks[b]; b++) {
|
|
424
416
|
const blockXY = block.getRelativeToSurfaceXY();
|
|
425
417
|
|
|
426
418
|
// Bump any block that's above the top back inside.
|
|
@@ -430,7 +422,7 @@ class Mutator extends Icon {
|
|
|
430
422
|
// Bump any block overlapping the flyout back inside.
|
|
431
423
|
if (block.RTL) {
|
|
432
424
|
let right = -MARGIN;
|
|
433
|
-
const flyout = this.workspace_
|
|
425
|
+
const flyout = this.workspace_!.getFlyout();
|
|
434
426
|
if (flyout) {
|
|
435
427
|
right -= flyout.getWidth();
|
|
436
428
|
}
|
|
@@ -444,12 +436,12 @@ class Mutator extends Icon {
|
|
|
444
436
|
}
|
|
445
437
|
|
|
446
438
|
// When the mutator's workspace changes, update the source block.
|
|
447
|
-
if (this.rootBlock_.workspace === this.workspace_) {
|
|
439
|
+
if (this.rootBlock_ && this.rootBlock_.workspace === this.workspace_) {
|
|
448
440
|
const existingGroup = eventUtils.getGroup();
|
|
449
441
|
if (!existingGroup) {
|
|
450
442
|
eventUtils.setGroup(true);
|
|
451
443
|
}
|
|
452
|
-
const block =
|
|
444
|
+
const block = this.block_ as BlockSvg;
|
|
453
445
|
const oldExtraState = BlockChange.getExtraBlockState_(block);
|
|
454
446
|
|
|
455
447
|
// Switch off rendering while the source block is rebuilt.
|
|
@@ -458,7 +450,7 @@ class Mutator extends Icon {
|
|
|
458
450
|
block.rendered = false;
|
|
459
451
|
|
|
460
452
|
// Allow the source block to rebuild itself.
|
|
461
|
-
block.compose(this.rootBlock_);
|
|
453
|
+
block.compose!(this.rootBlock_);
|
|
462
454
|
// Restore rendering and show the changes.
|
|
463
455
|
block.rendered = savedRendered;
|
|
464
456
|
// Mutation may have added some elements that need initializing.
|
|
@@ -470,7 +462,7 @@ class Mutator extends Icon {
|
|
|
470
462
|
|
|
471
463
|
const newExtraState = BlockChange.getExtraBlockState_(block);
|
|
472
464
|
if (oldExtraState !== newExtraState) {
|
|
473
|
-
eventUtils.fire(new (eventUtils.get(eventUtils.BLOCK_CHANGE))(
|
|
465
|
+
eventUtils.fire(new (eventUtils.get(eventUtils.BLOCK_CHANGE))!(
|
|
474
466
|
block, 'mutation', null, oldExtraState, newExtraState));
|
|
475
467
|
// Ensure that any bump is part of this mutation's event group.
|
|
476
468
|
const mutationGroup = eventUtils.getGroup();
|
|
@@ -484,38 +476,33 @@ class Mutator extends Icon {
|
|
|
484
476
|
|
|
485
477
|
// Don't update the bubble until the drag has ended, to avoid moving
|
|
486
478
|
// blocks under the cursor.
|
|
487
|
-
if (!this.workspace_
|
|
488
|
-
this.resizeBubble_();
|
|
479
|
+
if (!this.workspace_!.isDragging()) {
|
|
480
|
+
setTimeout(() => this.resizeBubble_(), 0);
|
|
489
481
|
}
|
|
490
482
|
eventUtils.setGroup(existingGroup);
|
|
491
483
|
}
|
|
492
484
|
}
|
|
493
485
|
|
|
494
|
-
/**
|
|
495
|
-
|
|
496
|
-
*/
|
|
497
|
-
dispose() {
|
|
486
|
+
/** Dispose of this mutator. */
|
|
487
|
+
override dispose() {
|
|
498
488
|
this.block_.mutator = null;
|
|
499
|
-
|
|
489
|
+
super.dispose();
|
|
500
490
|
}
|
|
501
491
|
|
|
502
|
-
/**
|
|
503
|
-
* Update the styles on all blocks in the mutator.
|
|
504
|
-
* @public
|
|
505
|
-
*/
|
|
492
|
+
/** Update the styles on all blocks in the mutator. */
|
|
506
493
|
updateBlockStyle() {
|
|
507
494
|
const ws = this.workspace_;
|
|
508
495
|
|
|
509
496
|
if (ws && ws.getAllBlocks(false)) {
|
|
510
497
|
const workspaceBlocks = ws.getAllBlocks(false);
|
|
511
|
-
for (let i = 0, block;
|
|
498
|
+
for (let i = 0, block; block = workspaceBlocks[i]; i++) {
|
|
512
499
|
block.setStyle(block.getStyleName());
|
|
513
500
|
}
|
|
514
501
|
|
|
515
502
|
const flyout = ws.getFlyout();
|
|
516
503
|
if (flyout) {
|
|
517
|
-
const flyoutBlocks = flyout.
|
|
518
|
-
for (let i = 0, block;
|
|
504
|
+
const flyoutBlocks = flyout.getWorkspace().getAllBlocks(false);
|
|
505
|
+
for (let i = 0, block; block = flyoutBlocks[i]; i++) {
|
|
519
506
|
block.setStyle(block.getStyleName());
|
|
520
507
|
}
|
|
521
508
|
}
|
|
@@ -524,18 +511,19 @@ class Mutator extends Icon {
|
|
|
524
511
|
|
|
525
512
|
/**
|
|
526
513
|
* Reconnect an block to a mutated input.
|
|
527
|
-
* @param
|
|
528
|
-
* @param
|
|
529
|
-
* @param
|
|
530
|
-
* @return
|
|
514
|
+
* @param connectionChild Connection on child block.
|
|
515
|
+
* @param block Parent block.
|
|
516
|
+
* @param inputName Name of input on parent block.
|
|
517
|
+
* @return True iff a reconnection was made, false otherwise.
|
|
531
518
|
*/
|
|
532
|
-
static reconnect(
|
|
519
|
+
static reconnect(
|
|
520
|
+
connectionChild: Connection, block: Block, inputName: string): boolean {
|
|
533
521
|
if (!connectionChild || !connectionChild.getSourceBlock().workspace) {
|
|
534
522
|
return false; // No connection or block has been deleted.
|
|
535
523
|
}
|
|
536
|
-
const connectionParent = block.getInput(inputName)
|
|
524
|
+
const connectionParent = block.getInput(inputName)!.connection;
|
|
537
525
|
const currentParent = connectionChild.targetBlock();
|
|
538
|
-
if ((!currentParent || currentParent === block) &&
|
|
526
|
+
if ((!currentParent || currentParent === block) && connectionParent &&
|
|
539
527
|
connectionParent.targetConnection !== connectionChild) {
|
|
540
528
|
if (connectionParent.isConnected()) {
|
|
541
529
|
// There's already something connected here. Get rid of it.
|
|
@@ -550,11 +538,10 @@ class Mutator extends Icon {
|
|
|
550
538
|
/**
|
|
551
539
|
* Get the parent workspace of a workspace that is inside a mutator, taking
|
|
552
540
|
* into account whether it is a flyout.
|
|
553
|
-
* @param
|
|
554
|
-
* @return
|
|
555
|
-
* @public
|
|
541
|
+
* @param workspace The workspace that is inside a mutator.
|
|
542
|
+
* @return The mutator's parent workspace or null.
|
|
556
543
|
*/
|
|
557
|
-
static findParentWs(workspace) {
|
|
544
|
+
static findParentWs(workspace: WorkspaceSvg): WorkspaceSvg|null {
|
|
558
545
|
let outerWs = null;
|
|
559
546
|
if (workspace && workspace.options) {
|
|
560
547
|
const parent = workspace.options.parentWorkspace;
|
|
@@ -571,5 +558,3 @@ class Mutator extends Icon {
|
|
|
571
558
|
return outerWs;
|
|
572
559
|
}
|
|
573
560
|
}
|
|
574
|
-
|
|
575
|
-
exports.Mutator = Mutator;
|