blockly 8.0.4 → 8.0.5-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/blockly.min.js +2421 -2688
- package/blockly_compressed.js +1499 -1994
- package/blockly_compressed.js.map +1 -1
- package/blocks/blocks.js +3 -2
- package/blocks/colour.js +3 -1
- package/blocks/lists.js +94 -22
- package/blocks/logic.js +14 -6
- package/blocks/loops.js +5 -3
- package/blocks/math.js +3 -1
- package/blocks/procedures.js +3 -1
- package/blocks/text.js +14 -6
- package/blocks/variables.js +3 -1
- package/blocks/variables_dynamic.js +3 -1
- package/blocks.d.ts +0 -2
- package/blocks_compressed.js +189 -171
- package/blocks_compressed.js.map +1 -1
- package/closure/goog/base.d.ts +1 -0
- package/closure/goog/base_minimal.d.ts +18 -0
- package/closure/goog/goog.d.ts +25 -0
- package/core/any_aliases.d.ts +1 -0
- package/core/any_aliases.ts +1 -0
- package/core/block.d.ts +779 -0
- package/core/{block.js → block.ts} +610 -719
- package/core/block_animations.d.ts +33 -0
- package/core/{block_animations.js → block_animations.ts} +75 -79
- package/core/block_drag_surface.d.ts +111 -0
- package/core/{block_drag_surface.js → block_drag_surface.ts} +85 -117
- package/core/block_dragger.d.ts +143 -0
- package/core/{block_dragger.js → block_dragger.ts} +139 -176
- package/core/block_svg.d.ts +588 -0
- package/core/{block_svg.js → block_svg.ts} +494 -630
- package/core/blockly.d.ts +562 -0
- package/core/blockly.js +1 -1
- package/core/blockly.ts +749 -0
- package/core/blockly_options.d.ts +69 -0
- package/core/blockly_options.ts +81 -0
- package/core/blocks.d.ts +17 -0
- package/core/{blocks.js → blocks.ts} +4 -8
- package/core/browser_events.d.ts +85 -0
- package/core/{browser_events.js → browser_events.ts} +98 -93
- package/core/bubble.d.ts +279 -0
- package/core/{bubble.js → bubble.ts} +277 -370
- package/core/bubble_dragger.d.ts +73 -0
- package/core/bubble_dragger.ts +229 -0
- package/core/bump_objects.d.ts +34 -0
- package/core/{bump_objects.js → bump_objects.ts} +54 -52
- package/core/clipboard.d.ts +42 -0
- package/core/clipboard.ts +91 -0
- package/core/comment.d.ts +113 -0
- package/core/{comment.js → comment.ts} +135 -185
- package/core/common.d.ts +129 -0
- package/core/{common.js → common.ts} +105 -82
- package/core/component_manager.d.ts +91 -0
- package/core/component_manager.ts +211 -0
- package/core/config.d.ts +23 -0
- package/core/{config.js → config.ts} +12 -19
- package/core/connection.d.ts +232 -0
- package/core/{connection.js → connection.ts} +187 -237
- package/core/connection_checker.d.ts +78 -0
- package/core/{connection_checker.js → connection_checker.ts} +66 -77
- package/core/connection_db.d.ts +91 -0
- package/core/{connection_db.js → connection_db.ts} +62 -87
- package/core/connection_type.d.ts +15 -0
- package/core/{connection_type.js → connection_type.ts} +8 -12
- package/core/constants.d.ts +15 -0
- package/core/{constants.js → constants.ts} +4 -8
- package/core/contextmenu.d.ts +80 -0
- package/core/{contextmenu.js → contextmenu.ts} +118 -153
- package/core/contextmenu_items.d.ts +77 -0
- package/core/contextmenu_items.ts +576 -0
- package/core/contextmenu_registry.d.ts +105 -0
- package/core/contextmenu_registry.ts +179 -0
- package/core/css.d.ts +24 -0
- package/core/{css.js → css.ts} +16 -24
- package/core/delete_area.d.ts +47 -0
- package/core/delete_area.ts +82 -0
- package/core/dialog.d.ts +61 -0
- package/core/dialog.ts +127 -0
- package/core/drag_target.d.ts +63 -0
- package/core/drag_target.ts +94 -0
- package/core/dropdowndiv.d.ts +155 -0
- package/core/{dropdowndiv.js → dropdowndiv.ts} +262 -333
- package/core/events/events.d.ts +102 -0
- package/core/events/events.ts +123 -0
- package/core/events/events_abstract.d.ts +51 -0
- package/core/events/events_abstract.ts +112 -0
- package/core/events/events_block_base.d.ts +31 -0
- package/core/events/events_block_base.ts +65 -0
- package/core/events/events_block_change.d.ts +55 -0
- package/core/events/{events_block_change.js → events_block_change.ts} +45 -48
- package/core/events/events_block_create.d.ts +35 -0
- package/core/events/{events_block_create.js → events_block_create.ts} +30 -35
- package/core/events/events_block_delete.d.ts +36 -0
- package/core/events/{events_block_delete.js → events_block_delete.ts} +34 -39
- package/core/events/events_block_drag.d.ts +36 -0
- package/core/events/events_block_drag.ts +82 -0
- package/core/events/events_block_move.d.ts +51 -0
- package/core/events/{events_block_move.js → events_block_move.ts} +54 -50
- package/core/events/events_bubble_open.d.ts +35 -0
- package/core/events/events_bubble_open.ts +82 -0
- package/core/events/events_click.d.ts +36 -0
- package/core/events/{events_click.js → events_click.ts} +27 -30
- package/core/events/events_comment_base.d.ts +39 -0
- package/core/events/events_comment_base.ts +107 -0
- package/core/events/events_comment_change.d.ts +43 -0
- package/core/events/{events_comment_change.js → events_comment_change.ts} +31 -28
- package/core/events/events_comment_create.d.ts +35 -0
- package/core/events/{events_comment_create.js → events_comment_create.ts} +24 -26
- package/core/events/events_comment_delete.d.ts +35 -0
- package/core/events/{events_comment_delete.js → events_comment_delete.ts} +20 -24
- package/core/events/events_comment_move.d.ts +55 -0
- package/core/events/{events_comment_move.js → events_comment_move.ts} +39 -42
- package/core/events/events_marker_move.d.ts +40 -0
- package/core/events/events_marker_move.ts +99 -0
- package/core/events/events_selected.d.ts +34 -0
- package/core/events/events_selected.ts +78 -0
- package/core/events/events_theme_change.d.ts +30 -0
- package/core/events/{events_theme_change.js → events_theme_change.ts} +19 -24
- package/core/events/events_toolbox_item_select.d.ts +34 -0
- package/core/events/events_toolbox_item_select.ts +79 -0
- package/core/events/events_trashcan_open.d.ts +31 -0
- package/core/events/events_trashcan_open.ts +68 -0
- package/core/events/events_ui.d.ts +37 -0
- package/core/events/{events_ui.js → events_ui.ts} +27 -26
- package/core/events/events_ui_base.d.ts +26 -0
- package/core/events/{events_ui_base.js → events_ui_base.ts} +17 -26
- package/core/events/events_var_base.d.ts +31 -0
- package/core/events/events_var_base.ts +65 -0
- package/core/events/events_var_create.d.ts +35 -0
- package/core/events/{events_var_create.js → events_var_create.ts} +24 -25
- package/core/events/events_var_delete.d.ts +35 -0
- package/core/events/{events_var_delete.js → events_var_delete.ts} +24 -25
- package/core/events/events_var_rename.d.ts +36 -0
- package/core/events/{events_var_rename.js → events_var_rename.ts} +25 -26
- package/core/events/events_viewport.d.ts +39 -0
- package/core/events/events_viewport.ts +100 -0
- package/core/events/utils.d.ts +272 -0
- package/core/events/{utils.js → utils.ts} +148 -219
- package/core/events/workspace_events.d.ts +36 -0
- package/core/events/workspace_events.ts +86 -0
- package/core/extensions.d.ts +107 -0
- package/core/{extensions.js → extensions.ts} +153 -172
- package/core/field.d.ts +534 -0
- package/core/{field.js → field.ts} +413 -489
- package/core/field_angle.d.ts +176 -0
- package/core/field_angle.ts +563 -0
- package/core/field_checkbox.d.ts +124 -0
- package/core/field_checkbox.ts +243 -0
- package/core/field_colour.d.ts +200 -0
- package/core/field_colour.ts +632 -0
- package/core/field_dropdown.d.ts +222 -0
- package/core/{field_dropdown.js → field_dropdown.ts} +277 -299
- package/core/field_image.d.ts +134 -0
- package/core/field_image.ts +282 -0
- package/core/field_label.d.ts +71 -0
- package/core/field_label.ts +152 -0
- package/core/field_label_serializable.d.ts +42 -0
- package/core/field_label_serializable.ts +76 -0
- package/core/field_multilineinput.d.ts +146 -0
- package/core/{field_multilineinput.js → field_multilineinput.ts} +166 -163
- package/core/field_number.d.ts +156 -0
- package/core/{field_number.js → field_number.ts} +110 -123
- package/core/field_registry.d.ts +45 -0
- package/core/{field_registry.js → field_registry.ts} +37 -30
- package/core/field_textinput.d.ts +219 -0
- package/core/field_textinput.ts +591 -0
- package/core/field_variable.d.ts +217 -0
- package/core/{field_variable.js → field_variable.ts} +174 -187
- package/core/flyout_base.d.ts +459 -0
- package/core/{flyout_base.js → flyout_base.ts} +429 -518
- package/core/flyout_button.d.ts +81 -0
- package/core/flyout_button.ts +292 -0
- package/core/flyout_horizontal.d.ts +82 -0
- package/core/{flyout_horizontal.js → flyout_horizontal.ts} +97 -107
- package/core/flyout_metrics_manager.d.ts +40 -0
- package/core/{flyout_metrics_manager.js → flyout_metrics_manager.ts} +22 -34
- package/core/flyout_vertical.d.ts +83 -0
- package/core/{flyout_vertical.js → flyout_vertical.ts} +106 -117
- package/core/generator.d.ts +205 -0
- package/core/{generator.js → generator.ts} +168 -193
- package/core/gesture.d.ts +357 -0
- package/core/{gesture.js → gesture.ts} +289 -369
- package/core/grid.d.ts +83 -0
- package/core/grid.ts +192 -0
- package/core/icon.d.ts +78 -0
- package/core/icon.ts +189 -0
- package/core/inject.d.ts +15 -0
- package/core/{inject.js → inject.ts} +101 -100
- package/core/input.d.ts +128 -0
- package/core/input.ts +309 -0
- package/core/input_types.d.ts +14 -0
- package/core/{input_types.js → input_types.ts} +8 -12
- package/core/insertion_marker_manager.d.ts +212 -0
- package/core/{insertion_marker_manager.js → insertion_marker_manager.ts} +234 -236
- package/core/interfaces/i_ast_node_location.d.ts +11 -0
- package/core/interfaces/{i_ast_node_location.js → i_ast_node_location.ts} +4 -7
- package/core/interfaces/i_ast_node_location_svg.d.ts +22 -0
- package/core/interfaces/i_ast_node_location_svg.ts +37 -0
- package/core/interfaces/i_ast_node_location_with_block.d.ts +18 -0
- package/core/interfaces/i_ast_node_location_with_block.ts +38 -0
- package/core/interfaces/i_autohideable.d.ts +18 -0
- package/core/interfaces/i_autohideable.ts +34 -0
- package/core/interfaces/i_block_dragger.d.ts +43 -0
- package/core/interfaces/i_block_dragger.ts +67 -0
- package/core/interfaces/i_bounded_element.d.ts +24 -0
- package/core/interfaces/i_bounded_element.ts +42 -0
- package/core/interfaces/i_bubble.d.ts +59 -0
- package/core/interfaces/i_bubble.ts +88 -0
- package/core/interfaces/i_collapsible_toolbox_item.d.ts +26 -0
- package/core/interfaces/i_collapsible_toolbox_item.ts +47 -0
- package/core/interfaces/i_component.d.ts +17 -0
- package/core/interfaces/{i_component.js → i_component.ts} +9 -14
- package/core/interfaces/i_connection_checker.d.ts +69 -0
- package/core/interfaces/i_connection_checker.ts +102 -0
- package/core/interfaces/i_contextmenu.d.ts +13 -0
- package/core/interfaces/i_contextmenu.ts +26 -0
- package/core/interfaces/i_copyable.d.ts +24 -0
- package/core/interfaces/i_copyable.ts +40 -0
- package/core/interfaces/i_deletable.d.ts +16 -0
- package/core/interfaces/{i_deletable.js → i_deletable.ts} +9 -13
- package/core/interfaces/i_delete_area.d.ts +25 -0
- package/core/interfaces/i_delete_area.ts +46 -0
- package/core/interfaces/i_drag_target.d.ts +53 -0
- package/core/interfaces/i_drag_target.ts +84 -0
- package/core/interfaces/i_draggable.d.ts +12 -0
- package/core/interfaces/{i_draggable.js → i_draggable.ts} +4 -10
- package/core/interfaces/i_flyout.d.ts +134 -0
- package/core/interfaces/i_flyout.ts +186 -0
- package/core/interfaces/i_keyboard_accessible.d.ts +18 -0
- package/core/interfaces/i_keyboard_accessible.ts +35 -0
- package/core/interfaces/i_metrics_manager.d.ts +117 -0
- package/core/interfaces/i_metrics_manager.ts +151 -0
- package/core/interfaces/i_movable.d.ts +16 -0
- package/core/interfaces/{i_movable.js → i_movable.ts} +9 -13
- package/core/interfaces/i_positionable.d.ts +27 -0
- package/core/interfaces/i_positionable.ts +50 -0
- package/core/interfaces/i_registrable.d.ts +11 -0
- package/core/interfaces/{i_registrable.js → i_registrable.ts} +3 -7
- package/core/interfaces/i_registrable_field.d.ts +17 -0
- package/core/interfaces/{i_registrable_field.js → i_registrable_field.ts} +8 -16
- package/core/interfaces/i_selectable.d.ts +18 -0
- package/core/interfaces/i_selectable.ts +34 -0
- package/core/interfaces/i_selectable_toolbox_item.d.ts +42 -0
- package/core/interfaces/i_selectable_toolbox_item.ts +64 -0
- package/core/interfaces/i_serializer.d.ts +42 -0
- package/core/interfaces/i_serializer.ts +65 -0
- package/core/interfaces/i_styleable.d.ts +21 -0
- package/core/interfaces/i_styleable.ts +35 -0
- package/core/interfaces/i_toolbox.d.ts +85 -0
- package/core/interfaces/i_toolbox.ts +127 -0
- package/core/interfaces/i_toolbox_item.d.ts +62 -0
- package/core/interfaces/i_toolbox_item.ts +84 -0
- package/core/internal_constants.d.ts +40 -0
- package/core/{internal_constants.js → internal_constants.ts} +13 -18
- package/core/keyboard_nav/ast_node.d.ts +239 -0
- package/core/keyboard_nav/{ast_node.js → ast_node.ts} +207 -231
- package/core/keyboard_nav/basic_cursor.d.ts +88 -0
- package/core/keyboard_nav/{basic_cursor.js → basic_cursor.ts} +55 -66
- package/core/keyboard_nav/cursor.d.ts +41 -0
- package/core/keyboard_nav/{cursor.js → cursor.ts} +25 -35
- package/core/keyboard_nav/marker.d.ts +58 -0
- package/core/keyboard_nav/{marker.js → marker.ts} +36 -55
- package/core/keyboard_nav/tab_navigate_cursor.d.ts +19 -0
- package/core/keyboard_nav/{tab_navigate_cursor.js → tab_navigate_cursor.ts} +11 -15
- package/core/main.d.ts +11 -0
- package/core/main.js +303 -0
- package/core/marker_manager.d.ts +85 -0
- package/core/marker_manager.ts +181 -0
- package/core/menu.d.ts +149 -0
- package/core/{menu.js → menu.ts} +141 -174
- package/core/menuitem.d.ts +118 -0
- package/core/menuitem.ts +240 -0
- package/core/metrics_manager.d.ts +201 -0
- package/core/{metrics_manager.js → metrics_manager.ts} +117 -156
- package/core/msg.d.ts +9 -0
- package/core/{msg.js → msg.ts} +4 -8
- package/core/mutator.d.ts +128 -0
- package/core/{mutator.js → mutator.ts} +196 -211
- package/core/names.d.ts +124 -0
- package/core/names.ts +267 -0
- package/core/options.d.ts +137 -0
- package/core/{options.js → options.ts} +147 -173
- package/core/positionable_helpers.d.ts +88 -0
- package/core/{positionable_helpers.js → positionable_helpers.ts} +63 -70
- package/core/procedures.d.ts +108 -0
- package/core/{procedures.js → procedures.ts} +143 -152
- package/core/registry.d.ts +137 -0
- package/core/registry.ts +339 -0
- package/core/rendered_connection.d.ts +191 -0
- package/core/{rendered_connection.js → rendered_connection.ts} +164 -184
- package/core/renderers/common/block_rendering.d.ts +114 -0
- package/core/renderers/common/block_rendering.ts +164 -0
- package/core/renderers/common/constants.d.ts +458 -0
- package/core/renderers/common/constants.ts +1124 -0
- package/core/renderers/common/debug.d.ts +28 -0
- package/core/renderers/common/{debug.js → debug.ts} +14 -20
- package/core/renderers/common/debugger.d.ts +120 -0
- package/core/renderers/common/{debugger.js → debugger.ts} +100 -124
- package/core/renderers/common/drawer.d.ts +132 -0
- package/core/renderers/common/{drawer.js → drawer.ts} +112 -137
- package/core/renderers/common/i_path_object.d.ts +117 -0
- package/core/renderers/common/i_path_object.ts +161 -0
- package/core/renderers/common/info.d.ts +194 -0
- package/core/renderers/common/{info.js → info.ts} +165 -222
- package/core/renderers/common/marker_svg.d.ts +220 -0
- package/core/renderers/common/marker_svg.ts +680 -0
- package/core/renderers/common/path_object.d.ts +146 -0
- package/core/renderers/common/path_object.ts +272 -0
- package/core/renderers/common/renderer.d.ts +157 -0
- package/core/renderers/common/renderer.ts +271 -0
- package/core/renderers/geras/constants.d.ts +23 -0
- package/core/renderers/geras/constants.ts +61 -0
- package/core/renderers/geras/drawer.d.ts +43 -0
- package/core/renderers/geras/{drawer.js → drawer.ts} +40 -84
- package/core/renderers/geras/geras.d.ts +11 -0
- package/core/renderers/geras/geras.ts +37 -0
- package/core/renderers/geras/highlight_constants.d.ts +108 -0
- package/core/renderers/geras/{highlight_constants.js → highlight_constants.ts} +107 -69
- package/core/renderers/geras/highlighter.d.ts +98 -0
- package/core/renderers/geras/{highlighter.js → highlighter.ts} +81 -86
- package/core/renderers/geras/info.d.ts +45 -0
- package/core/renderers/geras/{info.js → info.ts} +61 -99
- package/core/renderers/geras/measurables/inline_input.d.ts +23 -0
- package/core/renderers/geras/measurables/inline_input.ts +51 -0
- package/core/renderers/geras/measurables/statement_input.d.ts +23 -0
- package/core/renderers/geras/measurables/statement_input.ts +50 -0
- package/core/renderers/geras/path_object.d.ts +47 -0
- package/core/renderers/geras/{path_object.js → path_object.ts} +46 -74
- package/core/renderers/geras/renderer.d.ts +69 -0
- package/core/renderers/geras/renderer.ts +126 -0
- package/core/renderers/measurables/base.d.ts +27 -0
- package/core/renderers/measurables/base.ts +53 -0
- package/core/renderers/measurables/bottom_row.d.ts +61 -0
- package/core/renderers/measurables/bottom_row.ts +120 -0
- package/core/renderers/measurables/connection.d.ts +25 -0
- package/core/renderers/measurables/connection.ts +52 -0
- package/core/renderers/measurables/external_value_input.d.ts +27 -0
- package/core/renderers/measurables/external_value_input.ts +65 -0
- package/core/renderers/measurables/field.d.ts +30 -0
- package/core/renderers/measurables/field.ts +63 -0
- package/core/renderers/measurables/hat.d.ts +21 -0
- package/core/renderers/measurables/{hat.js → hat.ts} +12 -14
- package/core/renderers/measurables/icon.d.ts +26 -0
- package/core/renderers/measurables/{icon.js → icon.ts} +14 -18
- package/core/renderers/measurables/in_row_spacer.d.ts +21 -0
- package/core/renderers/measurables/in_row_spacer.ts +44 -0
- package/core/renderers/measurables/inline_input.d.ts +24 -0
- package/core/renderers/measurables/{inline_input.js → inline_input.ts} +22 -26
- package/core/renderers/measurables/input_connection.d.ts +29 -0
- package/core/renderers/measurables/input_connection.ts +66 -0
- package/core/renderers/measurables/input_row.d.ts +30 -0
- package/core/renderers/measurables/{input_row.js → input_row.ts} +24 -31
- package/core/renderers/measurables/jagged_edge.d.ts +20 -0
- package/core/renderers/measurables/{jagged_edge.js → jagged_edge.ts} +10 -13
- package/core/renderers/measurables/next_connection.d.ts +23 -0
- package/core/renderers/measurables/next_connection.ts +47 -0
- package/core/renderers/measurables/output_connection.d.ts +26 -0
- package/core/renderers/measurables/output_connection.ts +56 -0
- package/core/renderers/measurables/previous_connection.d.ts +23 -0
- package/core/renderers/measurables/previous_connection.ts +47 -0
- package/core/renderers/measurables/round_corner.d.ts +21 -0
- package/core/renderers/measurables/round_corner.ts +49 -0
- package/core/renderers/measurables/row.d.ts +141 -0
- package/core/renderers/measurables/row.ts +225 -0
- package/core/renderers/measurables/spacer_row.d.ts +29 -0
- package/core/renderers/measurables/spacer_row.ts +55 -0
- package/core/renderers/measurables/square_corner.d.ts +21 -0
- package/core/renderers/measurables/square_corner.ts +47 -0
- package/core/renderers/measurables/statement_input.d.ts +22 -0
- package/core/renderers/measurables/{statement_input.js → statement_input.ts} +14 -18
- package/core/renderers/measurables/top_row.d.ts +56 -0
- package/core/renderers/measurables/top_row.ts +122 -0
- package/core/renderers/measurables/types.d.ts +235 -0
- package/core/renderers/measurables/types.ts +332 -0
- package/core/renderers/minimalist/constants.d.ts +14 -0
- package/core/renderers/minimalist/{constants.js → constants.ts} +5 -10
- package/core/renderers/minimalist/drawer.d.ts +21 -0
- package/core/renderers/minimalist/drawer.ts +38 -0
- package/core/renderers/minimalist/info.d.ts +30 -0
- package/core/renderers/minimalist/info.ts +52 -0
- package/core/renderers/minimalist/minimalist.d.ts +6 -0
- package/core/renderers/minimalist/minimalist.ts +22 -0
- package/core/renderers/minimalist/renderer.d.ts +41 -0
- package/core/renderers/minimalist/renderer.ts +71 -0
- package/core/renderers/thrasos/info.d.ts +40 -0
- package/core/renderers/thrasos/{info.js → info.ts} +66 -67
- package/core/renderers/thrasos/renderer.d.ts +25 -0
- package/core/renderers/thrasos/renderer.ts +48 -0
- package/core/renderers/thrasos/thrasos.d.ts +4 -0
- package/core/renderers/thrasos/thrasos.ts +20 -0
- package/core/renderers/zelos/constants.d.ts +186 -0
- package/core/renderers/zelos/{constants.js → constants.ts} +294 -441
- package/core/renderers/zelos/drawer.d.ts +47 -0
- package/core/renderers/zelos/{drawer.js → drawer.ts} +73 -95
- package/core/renderers/zelos/info.d.ts +88 -0
- package/core/renderers/zelos/{info.js → info.ts} +111 -142
- package/core/renderers/zelos/marker_svg.d.ts +46 -0
- package/core/renderers/zelos/marker_svg.ts +151 -0
- package/core/renderers/zelos/measurables/bottom_row.d.ts +27 -0
- package/core/renderers/zelos/measurables/bottom_row.ts +53 -0
- package/core/renderers/zelos/measurables/inputs.d.ts +23 -0
- package/core/renderers/zelos/measurables/{inputs.js → inputs.ts} +14 -15
- package/core/renderers/zelos/measurables/row_elements.d.ts +21 -0
- package/core/renderers/zelos/measurables/row_elements.ts +45 -0
- package/core/renderers/zelos/measurables/top_row.d.ts +29 -0
- package/core/renderers/zelos/measurables/{top_row.js → top_row.ts} +14 -27
- package/core/renderers/zelos/path_object.d.ts +77 -0
- package/core/renderers/zelos/path_object.ts +215 -0
- package/core/renderers/zelos/renderer.d.ts +74 -0
- package/core/renderers/zelos/renderer.ts +142 -0
- package/core/renderers/zelos/zelos.d.ts +12 -0
- package/core/renderers/zelos/zelos.ts +39 -0
- package/core/scrollbar.d.ts +277 -0
- package/core/{scrollbar.js → scrollbar.ts} +307 -328
- package/core/scrollbar_pair.d.ts +105 -0
- package/core/{scrollbar_pair.js → scrollbar_pair.ts} +71 -79
- package/core/serialization/blocks.d.ts +98 -0
- package/core/serialization/{blocks.js → blocks.ts} +229 -228
- package/core/serialization/exceptions.d.ts +73 -0
- package/core/serialization/exceptions.ts +98 -0
- package/core/serialization/priorities.d.ts +15 -0
- package/core/serialization/{priorities.js → priorities.ts} +4 -10
- package/core/serialization/registry.d.ts +20 -0
- package/core/serialization/{registry.js → registry.ts} +11 -13
- package/core/serialization/variables.d.ts +14 -0
- package/core/serialization/{variables.js → variables.ts} +30 -32
- package/core/serialization/workspaces.d.ts +28 -0
- package/core/serialization/{workspaces.js → workspaces.ts} +30 -27
- package/core/shortcut_items.d.ts +61 -0
- package/core/{shortcut_items.js → shortcut_items.ts} +121 -157
- package/core/shortcut_registry.d.ts +151 -0
- package/core/shortcut_registry.ts +355 -0
- package/core/sprites.d.ts +19 -0
- package/core/{sprites.js → sprites.ts} +4 -6
- package/core/theme/classic.d.ts +12 -0
- package/core/theme/{classic.js → classic.ts} +5 -7
- package/core/theme/themes.d.ts +8 -0
- package/core/theme/themes.ts +22 -0
- package/core/theme/zelos.d.ts +11 -0
- package/core/theme/{zelos.js → zelos.ts} +4 -7
- package/core/theme.d.ts +142 -0
- package/core/theme.ts +221 -0
- package/core/theme_manager.d.ts +81 -0
- package/core/theme_manager.ts +186 -0
- package/core/toolbox/category.d.ts +239 -0
- package/core/toolbox/category.ts +679 -0
- package/core/toolbox/collapsible_category.d.ts +91 -0
- package/core/toolbox/collapsible_category.ts +273 -0
- package/core/toolbox/separator.d.ts +39 -0
- package/core/toolbox/separator.ts +105 -0
- package/core/toolbox/toolbox.d.ts +352 -0
- package/core/toolbox/{toolbox.js → toolbox.ts} +316 -432
- package/core/toolbox/toolbox_item.d.ts +85 -0
- package/core/toolbox/toolbox_item.ts +147 -0
- package/core/tooltip.d.ts +126 -0
- package/core/{tooltip.js → tooltip.ts} +136 -214
- package/core/touch.d.ts +121 -0
- package/core/touch.ts +306 -0
- package/core/touch_gesture.d.ts +115 -0
- package/core/{touch_gesture.js → touch_gesture.ts} +87 -125
- package/core/trashcan.d.ts +195 -0
- package/core/{trashcan.js → trashcan.ts} +226 -312
- package/core/utils/aria.d.ts +67 -0
- package/core/utils/{aria.js → aria.ts} +47 -61
- package/core/utils/array.d.ts +14 -0
- package/core/utils/{array.js → array.ts} +10 -12
- package/core/utils/colour.d.ts +103 -0
- package/core/utils/{colour.js → colour.ts} +60 -72
- package/core/utils/coordinate.d.ts +72 -0
- package/core/utils/coordinate.ts +124 -0
- package/core/utils/deprecation.d.ts +17 -0
- package/core/utils/{deprecation.js → deprecation.ts} +11 -11
- package/core/utils/dom.d.ts +165 -0
- package/core/utils/{dom.js → dom.ts} +125 -147
- package/core/utils/idgenerator.d.ts +25 -0
- package/core/utils/{idgenerator.js → idgenerator.ts} +15 -18
- package/core/utils/keycodes.d.ts +137 -0
- package/core/utils/keycodes.ts +169 -0
- package/core/utils/math.d.ts +30 -0
- package/core/utils/{math.js → math.ts} +17 -19
- package/core/utils/metrics.d.ts +64 -0
- package/core/utils/metrics.ts +97 -0
- package/core/utils/object.d.ts +35 -0
- package/core/utils/{object.js → object.ts} +30 -26
- package/core/utils/parsing.d.ts +50 -0
- package/core/utils/{parsing.js → parsing.ts} +50 -50
- package/core/utils/rect.d.ts +38 -0
- package/core/utils/{rect.js → rect.ts} +18 -31
- package/core/utils/sentinel.d.ts +11 -0
- package/core/utils/{sentinel.js → sentinel.ts} +3 -5
- package/core/utils/size.d.ts +27 -0
- package/core/utils/{size.js → size.ts} +12 -26
- package/core/utils/string.d.ts +55 -0
- package/core/utils/{string.js → string.ts} +64 -61
- package/core/utils/style.d.ts +127 -0
- package/core/utils/{style.js → style.ts} +102 -92
- package/core/utils/svg.d.ts +68 -0
- package/core/utils/svg.ts +88 -0
- package/core/utils/svg_math.d.ts +70 -0
- package/core/utils/{svg_math.js → svg_math.ts} +72 -71
- package/core/utils/svg_paths.d.ts +101 -0
- package/core/utils/{svg_paths.js → svg_paths.ts} +56 -65
- package/core/utils/toolbox.d.ts +193 -0
- package/core/utils/toolbox.ts +433 -0
- package/core/utils/useragent.d.ts +33 -0
- package/core/utils/useragent.ts +135 -0
- package/core/utils/xml.d.ts +52 -0
- package/core/utils/{xml.js → xml.ts} +26 -36
- package/core/utils.d.ts +217 -0
- package/core/utils.ts +428 -0
- package/core/variable_map.d.ts +141 -0
- package/core/{variable_map.js → variable_map.ts} +131 -149
- package/core/variable_model.d.ts +40 -0
- package/core/variable_model.ts +82 -0
- package/core/variables.d.ts +181 -0
- package/core/{variables.js → variables.ts} +206 -188
- package/core/variables_dynamic.d.ts +38 -0
- package/core/{variables_dynamic.js → variables_dynamic.ts} +47 -43
- package/core/warning.d.ts +50 -0
- package/core/{warning.js → warning.ts} +52 -66
- package/core/widgetdiv.d.ts +69 -0
- package/core/widgetdiv.ts +257 -0
- package/core/workspace.d.ts +386 -0
- package/core/workspace.ts +801 -0
- package/core/workspace_audio.d.ts +47 -0
- package/core/{workspace_audio.js → workspace_audio.ts} +47 -60
- package/core/workspace_comment.d.ts +170 -0
- package/core/workspace_comment.ts +398 -0
- package/core/workspace_comment_svg.d.ts +329 -0
- package/core/{workspace_comment_svg.js → workspace_comment_svg.ts} +347 -444
- package/core/workspace_drag_surface_svg.d.ts +68 -0
- package/core/{workspace_drag_surface_svg.js → workspace_drag_surface_svg.ts} +75 -82
- package/core/workspace_dragger.d.ts +48 -0
- package/core/workspace_dragger.ts +104 -0
- package/core/workspace_svg.d.ts +920 -0
- package/core/{workspace_svg.js → workspace_svg.ts} +855 -935
- package/core/xml.d.ts +117 -0
- package/core/{xml.js → xml.ts} +306 -326
- package/core/zoom_controls.d.ts +130 -0
- package/core/{zoom_controls.js → zoom_controls.ts} +185 -251
- package/core.d.ts +1 -3
- package/core.js +1 -2
- package/dart.d.ts +0 -3
- package/dart_compressed.js +387 -99
- package/dart_compressed.js.map +1 -1
- package/generators/dart/all.js +2 -0
- package/generators/dart/colour.js +1 -1
- package/generators/dart/lists.js +1 -1
- package/generators/dart/logic.js +1 -1
- package/generators/dart/loops.js +1 -1
- package/generators/dart/math.js +1 -1
- package/generators/dart/procedures.js +1 -1
- package/generators/dart/text.js +1 -1
- package/generators/dart/variables.js +1 -1
- package/generators/dart/variables_dynamic.js +1 -1
- package/generators/dart.js +1 -2
- package/generators/javascript/all.js +2 -0
- package/generators/javascript/colour.js +1 -1
- package/generators/javascript/lists.js +1 -1
- package/generators/javascript/logic.js +1 -1
- package/generators/javascript/loops.js +1 -1
- package/generators/javascript/math.js +4 -4
- package/generators/javascript/procedures.js +1 -1
- package/generators/javascript/text.js +2 -2
- package/generators/javascript/variables.js +1 -1
- package/generators/javascript/variables_dynamic.js +1 -1
- package/generators/javascript.js +1 -3
- package/generators/lua/all.js +2 -0
- package/generators/lua/colour.js +1 -1
- package/generators/lua/lists.js +1 -1
- package/generators/lua/logic.js +1 -1
- package/generators/lua/loops.js +1 -1
- package/generators/lua/math.js +1 -1
- package/generators/lua/procedures.js +1 -1
- package/generators/lua/text.js +1 -1
- package/generators/lua/variables.js +1 -1
- package/generators/lua/variables_dynamic.js +1 -1
- package/generators/lua.js +1 -2
- package/generators/php/all.js +2 -0
- package/generators/php/colour.js +1 -1
- package/generators/php/lists.js +1 -2
- package/generators/php/logic.js +1 -1
- package/generators/php/loops.js +1 -1
- package/generators/php/math.js +1 -1
- package/generators/php/procedures.js +1 -1
- package/generators/php/text.js +1 -1
- package/generators/php/variables.js +1 -1
- package/generators/php/variables_dynamic.js +1 -1
- package/generators/php.js +1 -2
- package/generators/python/all.js +2 -0
- package/generators/python/colour.js +3 -3
- package/generators/python/lists.js +1 -1
- package/generators/python/logic.js +1 -1
- package/generators/python/loops.js +4 -7
- package/generators/python/math.js +1 -1
- package/generators/python/procedures.js +1 -1
- package/generators/python/text.js +1 -1
- package/generators/python/variables.js +1 -1
- package/generators/python/variables_dynamic.js +1 -1
- package/generators/python.js +1 -2
- package/index.d.ts +2 -8
- package/javascript.d.ts +0 -3
- package/javascript_compressed.js +314 -104
- package/javascript_compressed.js.map +1 -1
- package/lua.d.ts +0 -3
- package/lua_compressed.js +399 -81
- package/lua_compressed.js.map +1 -1
- package/msg/ab.js +420 -420
- package/msg/ace.js +420 -420
- package/msg/af.js +420 -420
- package/msg/am.js +420 -420
- package/msg/ar.js +420 -420
- package/msg/ast.js +420 -420
- package/msg/az.js +420 -420
- package/msg/ba.js +420 -420
- package/msg/bcc.js +420 -420
- package/msg/be-tarask.js +420 -420
- package/msg/be.js +420 -420
- package/msg/bg.js +420 -420
- package/msg/bn.js +420 -420
- package/msg/br.js +420 -420
- package/msg/bs.js +420 -420
- package/msg/ca.js +420 -420
- package/msg/cdo.js +420 -420
- package/msg/cs.js +420 -420
- package/msg/da.js +420 -420
- package/msg/de.js +420 -420
- package/msg/diq.js +420 -420
- package/msg/dty.js +420 -420
- package/msg/ee.js +420 -420
- package/msg/el.js +420 -420
- package/msg/en-gb.js +420 -420
- package/msg/en.js +420 -420
- package/msg/eo.js +420 -420
- package/msg/es.js +420 -420
- package/msg/et.js +420 -420
- package/msg/eu.js +420 -420
- package/msg/fa.js +420 -420
- package/msg/fi.js +420 -420
- package/msg/fo.js +420 -420
- package/msg/fr.js +420 -420
- package/msg/frr.js +420 -420
- package/msg/gl.js +420 -420
- package/msg/gn.js +420 -420
- package/msg/gor.js +420 -420
- package/msg/ha.js +420 -420
- package/msg/hak.js +420 -420
- package/msg/he.js +420 -420
- package/msg/hi.js +420 -420
- package/msg/hr.js +420 -420
- package/msg/hrx.js +420 -420
- package/msg/hu.js +420 -420
- package/msg/hy.js +420 -420
- package/msg/ia.js +420 -420
- package/msg/id.js +420 -420
- package/msg/ig.js +420 -420
- package/msg/inh.js +420 -420
- package/msg/is.js +420 -420
- package/msg/it.js +420 -420
- package/msg/ja.js +420 -420
- package/msg/ka.js +420 -420
- package/msg/kab.js +420 -420
- package/msg/kbd-cyrl.js +420 -420
- package/msg/km.js +420 -420
- package/msg/kn.js +420 -420
- package/msg/ko.js +420 -420
- package/msg/ksh.js +420 -420
- package/msg/ku-latn.js +420 -420
- package/msg/ky.js +420 -420
- package/msg/la.js +420 -420
- package/msg/lb.js +420 -420
- package/msg/lki.js +420 -420
- package/msg/lo.js +420 -420
- package/msg/lrc.js +420 -420
- package/msg/lt.js +420 -420
- package/msg/lv.js +420 -420
- package/msg/mg.js +420 -420
- package/msg/mk.js +420 -420
- package/msg/ml.js +420 -420
- package/msg/mnw.js +420 -420
- package/msg/ms.js +420 -420
- package/msg/my.js +420 -420
- package/msg/mzn.js +420 -420
- package/msg/nb.js +420 -420
- package/msg/ne.js +420 -420
- package/msg/nl.js +420 -420
- package/msg/oc.js +420 -420
- package/msg/olo.js +420 -420
- package/msg/pa.js +420 -420
- package/msg/pl.js +420 -420
- package/msg/pms.js +420 -420
- package/msg/ps.js +420 -420
- package/msg/pt-br.js +420 -420
- package/msg/pt.js +420 -420
- package/msg/ro.js +420 -420
- package/msg/ru.js +420 -420
- package/msg/sc.js +420 -420
- package/msg/sco.js +420 -420
- package/msg/sd.js +420 -420
- package/msg/shn.js +420 -420
- package/msg/si.js +420 -420
- package/msg/sk.js +420 -420
- package/msg/skr-arab.js +420 -420
- package/msg/sl.js +420 -420
- package/msg/smn.js +420 -420
- package/msg/sq.js +420 -420
- package/msg/sr-latn.js +420 -420
- package/msg/sr.js +420 -420
- package/msg/sv.js +420 -420
- package/msg/sw.js +420 -420
- package/msg/ta.js +420 -420
- package/msg/tcy.js +420 -420
- package/msg/te.js +420 -420
- package/msg/th.js +420 -420
- package/msg/ti.js +420 -420
- package/msg/tl.js +420 -420
- package/msg/tlh.js +420 -420
- package/msg/tr.js +420 -420
- package/msg/ug-arab.js +420 -420
- package/msg/uk.js +420 -420
- package/msg/ur.js +420 -420
- package/msg/uz.js +420 -420
- package/msg/vi.js +420 -420
- package/msg/xmf.js +420 -420
- package/msg/yo.js +420 -420
- package/msg/yue.js +420 -420
- package/msg/zgh.js +420 -420
- package/msg/zh-hans.js +420 -420
- package/msg/zh-hant.js +420 -420
- package/package.json +5 -5
- package/php.d.ts +0 -3
- package/php_compressed.js +322 -93
- package/php_compressed.js.map +1 -1
- package/python.d.ts +0 -3
- package/python_compressed.js +237 -90
- package/python_compressed.js.map +1 -1
- package/blockly.d.ts +0 -26127
- package/core/blockly_options.js +0 -28
- package/core/bubble_dragger.js +0 -298
- package/core/clipboard.js +0 -80
- package/core/component_manager.js +0 -263
- package/core/contextmenu_items.js +0 -651
- package/core/contextmenu_registry.js +0 -178
- package/core/delete_area.js +0 -87
- package/core/dialog.js +0 -107
- package/core/drag_target.js +0 -98
- package/core/events/events.js +0 -147
- package/core/events/events_abstract.js +0 -133
- package/core/events/events_block_base.js +0 -70
- package/core/events/events_block_drag.js +0 -89
- package/core/events/events_bubble_open.js +0 -90
- package/core/events/events_comment_base.js +0 -121
- package/core/events/events_marker_move.js +0 -110
- package/core/events/events_selected.js +0 -83
- package/core/events/events_toolbox_item_select.js +0 -84
- package/core/events/events_trashcan_open.js +0 -73
- package/core/events/events_var_base.js +0 -70
- package/core/events/events_viewport.js +0 -107
- package/core/events/workspace_events.js +0 -93
- package/core/field_angle.js +0 -591
- package/core/field_checkbox.js +0 -255
- package/core/field_colour.js +0 -717
- package/core/field_image.js +0 -304
- package/core/field_label.js +0 -149
- package/core/field_label_serializable.js +0 -80
- package/core/field_textinput.js +0 -619
- package/core/flyout_button.js +0 -356
- package/core/grid.js +0 -226
- package/core/icon.js +0 -225
- package/core/input.js +0 -335
- package/core/interfaces/i_ast_node_location_svg.js +0 -45
- package/core/interfaces/i_ast_node_location_with_block.js +0 -41
- package/core/interfaces/i_autohideable.js +0 -40
- package/core/interfaces/i_block_dragger.js +0 -66
- package/core/interfaces/i_bounded_element.js +0 -45
- package/core/interfaces/i_bubble.js +0 -95
- package/core/interfaces/i_collapsible_toolbox_item.js +0 -53
- package/core/interfaces/i_connection_checker.js +0 -104
- package/core/interfaces/i_contextmenu.js +0 -32
- package/core/interfaces/i_copyable.js +0 -49
- package/core/interfaces/i_delete_area.js +0 -50
- package/core/interfaces/i_drag_target.js +0 -88
- package/core/interfaces/i_flyout.js +0 -201
- package/core/interfaces/i_keyboard_accessible.js +0 -38
- package/core/interfaces/i_metrics_manager.js +0 -154
- package/core/interfaces/i_positionable.js +0 -51
- package/core/interfaces/i_selectable.js +0 -51
- package/core/interfaces/i_selectable_toolbox_item.js +0 -73
- package/core/interfaces/i_serializer.js +0 -77
- package/core/interfaces/i_styleable.js +0 -39
- package/core/interfaces/i_toolbox.js +0 -142
- package/core/interfaces/i_toolbox_item.js +0 -85
- package/core/marker_manager.js +0 -213
- package/core/menuitem.js +0 -292
- package/core/names.js +0 -293
- package/core/registry.js +0 -384
- package/core/renderers/common/block_rendering.js +0 -170
- package/core/renderers/common/constants.js +0 -1250
- package/core/renderers/common/i_path_object.js +0 -162
- package/core/renderers/common/marker_svg.js +0 -721
- package/core/renderers/common/path_object.js +0 -283
- package/core/renderers/common/renderer.js +0 -305
- package/core/renderers/geras/constants.js +0 -73
- package/core/renderers/geras/geras.js +0 -36
- package/core/renderers/geras/measurables/inline_input.js +0 -58
- package/core/renderers/geras/measurables/statement_input.js +0 -57
- package/core/renderers/geras/renderer.js +0 -149
- package/core/renderers/measurables/base.js +0 -64
- package/core/renderers/measurables/bottom_row.js +0 -138
- package/core/renderers/measurables/connection.js +0 -56
- package/core/renderers/measurables/external_value_input.js +0 -70
- package/core/renderers/measurables/field.js +0 -71
- package/core/renderers/measurables/in_row_spacer.js +0 -47
- package/core/renderers/measurables/input_connection.js +0 -75
- package/core/renderers/measurables/next_connection.js +0 -50
- package/core/renderers/measurables/output_connection.js +0 -61
- package/core/renderers/measurables/previous_connection.js +0 -50
- package/core/renderers/measurables/round_corner.js +0 -52
- package/core/renderers/measurables/row.js +0 -247
- package/core/renderers/measurables/spacer_row.js +0 -69
- package/core/renderers/measurables/square_corner.js +0 -50
- package/core/renderers/measurables/top_row.js +0 -143
- package/core/renderers/measurables/types.js +0 -353
- package/core/renderers/minimalist/drawer.js +0 -42
- package/core/renderers/minimalist/info.js +0 -54
- package/core/renderers/minimalist/minimalist.js +0 -26
- package/core/renderers/minimalist/renderer.js +0 -80
- package/core/renderers/thrasos/renderer.js +0 -53
- package/core/renderers/thrasos/thrasos.js +0 -22
- package/core/renderers/zelos/marker_svg.js +0 -179
- package/core/renderers/zelos/measurables/bottom_row.js +0 -66
- package/core/renderers/zelos/measurables/row_elements.js +0 -46
- package/core/renderers/zelos/path_object.js +0 -247
- package/core/renderers/zelos/renderer.js +0 -147
- package/core/renderers/zelos/zelos.js +0 -38
- package/core/serialization/exceptions.js +0 -144
- package/core/shortcut_registry.js +0 -366
- package/core/theme/themes.js +0 -23
- package/core/theme.js +0 -228
- package/core/theme_manager.js +0 -211
- package/core/toolbox/category.js +0 -751
- package/core/toolbox/collapsible_category.js +0 -311
- package/core/toolbox/separator.js +0 -133
- package/core/toolbox/toolbox_item.js +0 -173
- package/core/touch.js +0 -285
- package/core/utils/coordinate.js +0 -138
- package/core/utils/global.js +0 -41
- package/core/utils/keycodes.js +0 -172
- package/core/utils/metrics.js +0 -154
- package/core/utils/svg.js +0 -186
- package/core/utils/toolbox.js +0 -459
- package/core/utils/useragent.js +0 -197
- package/core/utils.js +0 -383
- package/core/variable_model.js +0 -96
- package/core/widgetdiv.js +0 -290
- package/core/workspace.js +0 -836
- package/core/workspace_comment.js +0 -400
- package/core/workspace_dragger.js +0 -115
|
@@ -8,31 +8,24 @@
|
|
|
8
8
|
* @fileoverview The class representing an AST node.
|
|
9
9
|
* Used to traverse the Blockly AST.
|
|
10
10
|
*/
|
|
11
|
-
'use strict';
|
|
12
11
|
|
|
13
12
|
/**
|
|
14
13
|
* The class representing an AST node.
|
|
15
14
|
* Used to traverse the Blockly AST.
|
|
16
15
|
* @class
|
|
17
16
|
*/
|
|
18
|
-
goog
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
/* eslint-disable-next-line no-unused-vars */
|
|
31
|
-
const {IASTNodeLocation} = goog.requireType('Blockly.IASTNodeLocation');
|
|
32
|
-
/* eslint-disable-next-line no-unused-vars */
|
|
33
|
-
const {Input} = goog.requireType('Blockly.Input');
|
|
34
|
-
/* eslint-disable-next-line no-unused-vars */
|
|
35
|
-
const {Workspace} = goog.requireType('Blockly.Workspace');
|
|
17
|
+
import * as goog from '../../closure/goog/goog.js';
|
|
18
|
+
goog.declareModuleId('Blockly.ASTNode');
|
|
19
|
+
|
|
20
|
+
import type {Block} from '../block.js';
|
|
21
|
+
import type {Connection} from '../connection.js';
|
|
22
|
+
import {ConnectionType} from '../connection_type.js';
|
|
23
|
+
import type {Field} from '../field.js';
|
|
24
|
+
import type {Input} from '../input.js';
|
|
25
|
+
import type {IASTNodeLocation} from '../interfaces/i_ast_node_location.js';
|
|
26
|
+
import type {IASTNodeLocationWithBlock} from '../interfaces/i_ast_node_location_with_block.js';
|
|
27
|
+
import {Coordinate} from '../utils/coordinate.js';
|
|
28
|
+
import type {Workspace} from '../workspace.js';
|
|
36
29
|
|
|
37
30
|
|
|
38
31
|
/**
|
|
@@ -41,15 +34,34 @@ const {Workspace} = goog.requireType('Blockly.Workspace');
|
|
|
41
34
|
* creating a node directly.
|
|
42
35
|
* @alias Blockly.ASTNode
|
|
43
36
|
*/
|
|
44
|
-
class ASTNode {
|
|
37
|
+
export class ASTNode {
|
|
38
|
+
/**
|
|
39
|
+
* True to navigate to all fields. False to only navigate to clickable fields.
|
|
40
|
+
*/
|
|
41
|
+
static NAVIGATE_ALL_FIELDS = false;
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* The default y offset to use when moving the cursor from a stack to the
|
|
45
|
+
* workspace.
|
|
46
|
+
*/
|
|
47
|
+
private static readonly DEFAULT_OFFSET_Y: number = -20;
|
|
48
|
+
private readonly type_: string;
|
|
49
|
+
private readonly isConnection_: boolean;
|
|
50
|
+
private readonly location_: IASTNodeLocation;
|
|
51
|
+
|
|
52
|
+
/** The coordinate on the workspace. */
|
|
53
|
+
// AnyDuringMigration because: Type 'null' is not assignable to type
|
|
54
|
+
// 'Coordinate'.
|
|
55
|
+
private wsCoordinate_: Coordinate = null as AnyDuringMigration;
|
|
56
|
+
|
|
45
57
|
/**
|
|
46
|
-
* @param
|
|
58
|
+
* @param type The type of the location.
|
|
47
59
|
* Must be in ASTNode.types.
|
|
48
|
-
* @param
|
|
49
|
-
* @param
|
|
60
|
+
* @param location The position in the AST.
|
|
61
|
+
* @param opt_params Optional dictionary of options.
|
|
50
62
|
* @alias Blockly.ASTNode
|
|
51
63
|
*/
|
|
52
|
-
constructor(type, location, opt_params) {
|
|
64
|
+
constructor(type: string, location: IASTNodeLocation, opt_params?: Params) {
|
|
53
65
|
if (!location) {
|
|
54
66
|
throw Error('Cannot create a node without a location.');
|
|
55
67
|
}
|
|
@@ -57,41 +69,23 @@ class ASTNode {
|
|
|
57
69
|
/**
|
|
58
70
|
* The type of the location.
|
|
59
71
|
* One of ASTNode.types
|
|
60
|
-
* @type {string}
|
|
61
|
-
* @private
|
|
62
72
|
*/
|
|
63
73
|
this.type_ = type;
|
|
64
74
|
|
|
65
|
-
/**
|
|
66
|
-
* Whether the location points to a connection.
|
|
67
|
-
* @type {boolean}
|
|
68
|
-
* @private
|
|
69
|
-
*/
|
|
75
|
+
/** Whether the location points to a connection. */
|
|
70
76
|
this.isConnection_ = ASTNode.isConnectionType_(type);
|
|
71
77
|
|
|
72
|
-
/**
|
|
73
|
-
* The location of the AST node.
|
|
74
|
-
* @type {!IASTNodeLocation}
|
|
75
|
-
* @private
|
|
76
|
-
*/
|
|
78
|
+
/** The location of the AST node. */
|
|
77
79
|
this.location_ = location;
|
|
78
80
|
|
|
79
|
-
/**
|
|
80
|
-
* The coordinate on the workspace.
|
|
81
|
-
* @type {Coordinate}
|
|
82
|
-
* @private
|
|
83
|
-
*/
|
|
84
|
-
this.wsCoordinate_ = null;
|
|
85
|
-
|
|
86
81
|
this.processParams_(opt_params || null);
|
|
87
82
|
}
|
|
88
83
|
|
|
89
84
|
/**
|
|
90
85
|
* Parse the optional parameters.
|
|
91
|
-
* @param
|
|
92
|
-
* @private
|
|
86
|
+
* @param params The user specified parameters.
|
|
93
87
|
*/
|
|
94
|
-
processParams_(params) {
|
|
88
|
+
private processParams_(params: Params|null) {
|
|
95
89
|
if (!params) {
|
|
96
90
|
return;
|
|
97
91
|
}
|
|
@@ -104,37 +98,37 @@ class ASTNode {
|
|
|
104
98
|
* Gets the value pointed to by this node.
|
|
105
99
|
* It is the callers responsibility to check the node type to figure out what
|
|
106
100
|
* type of object they get back from this.
|
|
107
|
-
* @return
|
|
108
|
-
*
|
|
101
|
+
* @return The current field, connection, workspace, or block the cursor is
|
|
102
|
+
* on.
|
|
109
103
|
*/
|
|
110
|
-
getLocation() {
|
|
104
|
+
getLocation(): IASTNodeLocation {
|
|
111
105
|
return this.location_;
|
|
112
106
|
}
|
|
113
107
|
|
|
114
108
|
/**
|
|
115
109
|
* The type of the current location.
|
|
116
110
|
* One of ASTNode.types
|
|
117
|
-
* @return
|
|
111
|
+
* @return The type of the location.
|
|
118
112
|
*/
|
|
119
|
-
getType() {
|
|
113
|
+
getType(): string {
|
|
120
114
|
return this.type_;
|
|
121
115
|
}
|
|
122
116
|
|
|
123
117
|
/**
|
|
124
118
|
* The coordinate on the workspace.
|
|
125
|
-
* @return
|
|
126
|
-
*
|
|
119
|
+
* @return The workspace coordinate or null if the location is not a
|
|
120
|
+
* workspace.
|
|
127
121
|
*/
|
|
128
|
-
getWsCoordinate() {
|
|
122
|
+
getWsCoordinate(): Coordinate {
|
|
129
123
|
return this.wsCoordinate_;
|
|
130
124
|
}
|
|
131
125
|
|
|
132
126
|
/**
|
|
133
127
|
* Whether the node points to a connection.
|
|
134
|
-
* @return
|
|
135
|
-
* @
|
|
128
|
+
* @return [description]
|
|
129
|
+
* @internal
|
|
136
130
|
*/
|
|
137
|
-
isConnection() {
|
|
131
|
+
isConnection(): boolean {
|
|
138
132
|
return this.isConnection_;
|
|
139
133
|
}
|
|
140
134
|
|
|
@@ -142,18 +136,18 @@ class ASTNode {
|
|
|
142
136
|
* Given an input find the next editable field or an input with a non null
|
|
143
137
|
* connection in the same block. The current location must be an input
|
|
144
138
|
* connection.
|
|
145
|
-
* @return
|
|
146
|
-
*
|
|
147
|
-
* given input.
|
|
148
|
-
* @private
|
|
139
|
+
* @return The AST node holding the next field or connection or null if there
|
|
140
|
+
* is no editable field or input connection after the given input.
|
|
149
141
|
*/
|
|
150
|
-
findNextForInput_() {
|
|
151
|
-
const location =
|
|
142
|
+
private findNextForInput_(): ASTNode|null {
|
|
143
|
+
const location = this.location_ as Connection;
|
|
152
144
|
const parentInput = location.getParentInput();
|
|
153
|
-
const block = parentInput
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
145
|
+
const block = parentInput!.getSourceBlock();
|
|
146
|
+
// AnyDuringMigration because: Argument of type 'Input | null' is not
|
|
147
|
+
// assignable to parameter of type 'Input'.
|
|
148
|
+
const curIdx = block!.inputList.indexOf(parentInput as AnyDuringMigration);
|
|
149
|
+
for (let i = curIdx + 1; i < block!.inputList.length; i++) {
|
|
150
|
+
const input = block!.inputList[i];
|
|
157
151
|
const fieldRow = input.fieldRow;
|
|
158
152
|
for (let j = 0; j < fieldRow.length; j++) {
|
|
159
153
|
const field = fieldRow[j];
|
|
@@ -171,16 +165,14 @@ class ASTNode {
|
|
|
171
165
|
/**
|
|
172
166
|
* Given a field find the next editable field or an input with a non null
|
|
173
167
|
* connection in the same block. The current location must be a field.
|
|
174
|
-
* @return
|
|
175
|
-
*
|
|
176
|
-
* after the given input.
|
|
177
|
-
* @private
|
|
168
|
+
* @return The AST node pointing to the next field or connection or null if
|
|
169
|
+
* there is no editable field or input connection after the given input.
|
|
178
170
|
*/
|
|
179
|
-
findNextForField_() {
|
|
180
|
-
const location =
|
|
171
|
+
private findNextForField_(): ASTNode|null {
|
|
172
|
+
const location = this.location_ as Field;
|
|
181
173
|
const input = location.getParentInput();
|
|
182
174
|
const block = location.getSourceBlock();
|
|
183
|
-
const curIdx = block.inputList.indexOf(
|
|
175
|
+
const curIdx = block.inputList.indexOf((input));
|
|
184
176
|
let fieldIdx = input.fieldRow.indexOf(location) + 1;
|
|
185
177
|
for (let i = curIdx; i < block.inputList.length; i++) {
|
|
186
178
|
const newInput = block.inputList[i];
|
|
@@ -203,17 +195,17 @@ class ASTNode {
|
|
|
203
195
|
* Given an input find the previous editable field or an input with a non null
|
|
204
196
|
* connection in the same block. The current location must be an input
|
|
205
197
|
* connection.
|
|
206
|
-
* @return
|
|
207
|
-
* connection.
|
|
208
|
-
* @private
|
|
198
|
+
* @return The AST node holding the previous field or connection.
|
|
209
199
|
*/
|
|
210
|
-
findPrevForInput_() {
|
|
211
|
-
const location =
|
|
200
|
+
private findPrevForInput_(): ASTNode|null {
|
|
201
|
+
const location = this.location_ as Connection;
|
|
212
202
|
const parentInput = location.getParentInput();
|
|
213
|
-
const block = parentInput
|
|
214
|
-
|
|
203
|
+
const block = parentInput!.getSourceBlock();
|
|
204
|
+
// AnyDuringMigration because: Argument of type 'Input | null' is not
|
|
205
|
+
// assignable to parameter of type 'Input'.
|
|
206
|
+
const curIdx = block!.inputList.indexOf(parentInput as AnyDuringMigration);
|
|
215
207
|
for (let i = curIdx; i >= 0; i--) {
|
|
216
|
-
const input = block
|
|
208
|
+
const input = block!.inputList[i];
|
|
217
209
|
if (input.connection && input !== parentInput) {
|
|
218
210
|
return ASTNode.createInputNode(input);
|
|
219
211
|
}
|
|
@@ -231,15 +223,13 @@ class ASTNode {
|
|
|
231
223
|
/**
|
|
232
224
|
* Given a field find the previous editable field or an input with a non null
|
|
233
225
|
* connection in the same block. The current location must be a field.
|
|
234
|
-
* @return
|
|
235
|
-
* @private
|
|
226
|
+
* @return The AST node holding the previous input or field.
|
|
236
227
|
*/
|
|
237
|
-
findPrevForField_() {
|
|
238
|
-
const location =
|
|
228
|
+
private findPrevForField_(): ASTNode|null {
|
|
229
|
+
const location = this.location_ as Field;
|
|
239
230
|
const parentInput = location.getParentInput();
|
|
240
231
|
const block = location.getSourceBlock();
|
|
241
|
-
const curIdx = block.inputList.indexOf(
|
|
242
|
-
/** @type {!Input} */ (parentInput));
|
|
232
|
+
const curIdx = block.inputList.indexOf((parentInput));
|
|
243
233
|
let fieldIdx = parentInput.fieldRow.indexOf(location) - 1;
|
|
244
234
|
for (let i = curIdx; i >= 0; i--) {
|
|
245
235
|
const input = block.inputList[i];
|
|
@@ -264,21 +254,24 @@ class ASTNode {
|
|
|
264
254
|
|
|
265
255
|
/**
|
|
266
256
|
* Navigate between stacks of blocks on the workspace.
|
|
267
|
-
* @param
|
|
268
|
-
* @return
|
|
269
|
-
*
|
|
270
|
-
* @private
|
|
257
|
+
* @param forward True to go forward. False to go backwards.
|
|
258
|
+
* @return The first block of the next stack or null if there are no blocks on
|
|
259
|
+
* the workspace.
|
|
271
260
|
*/
|
|
272
|
-
navigateBetweenStacks_(forward) {
|
|
261
|
+
private navigateBetweenStacks_(forward: boolean): ASTNode|null {
|
|
273
262
|
let curLocation = this.getLocation();
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
263
|
+
// TODO(#6097): Use instanceof checks to exit early for values of
|
|
264
|
+
// curLocation that don't make sense.
|
|
265
|
+
if ((curLocation as IASTNodeLocationWithBlock).getSourceBlock) {
|
|
266
|
+
curLocation = (curLocation as IASTNodeLocationWithBlock).getSourceBlock();
|
|
277
267
|
}
|
|
278
|
-
|
|
268
|
+
// TODO(#6097): Use instanceof checks to exit early for values of
|
|
269
|
+
// curLocation that don't make sense.
|
|
270
|
+
const curLocationAsBlock = curLocation as Block;
|
|
271
|
+
if (!curLocationAsBlock || curLocationAsBlock.disposed) {
|
|
279
272
|
return null;
|
|
280
273
|
}
|
|
281
|
-
const curRoot =
|
|
274
|
+
const curRoot = curLocationAsBlock.getRootBlock();
|
|
282
275
|
const topBlocks = curRoot.workspace.getTopBlocks(true);
|
|
283
276
|
for (let i = 0; i < topBlocks.length; i++) {
|
|
284
277
|
const topBlock = topBlocks[i];
|
|
@@ -299,30 +292,26 @@ class ASTNode {
|
|
|
299
292
|
* Finds the top most AST node for a given block.
|
|
300
293
|
* This is either the previous connection, output connection or block
|
|
301
294
|
* depending on what kind of connections the block has.
|
|
302
|
-
* @param
|
|
303
|
-
*
|
|
304
|
-
* @return {!ASTNode} The AST node containing the top connection.
|
|
305
|
-
* @private
|
|
295
|
+
* @param block The block that we want to find the top connection on.
|
|
296
|
+
* @return The AST node containing the top connection.
|
|
306
297
|
*/
|
|
307
|
-
findTopASTNodeForBlock_(block) {
|
|
298
|
+
private findTopASTNodeForBlock_(block: Block): ASTNode|null {
|
|
308
299
|
const topConnection = getParentConnection(block);
|
|
309
300
|
if (topConnection) {
|
|
310
|
-
return
|
|
311
|
-
ASTNode.createConnectionNode(topConnection));
|
|
301
|
+
return ASTNode.createConnectionNode(topConnection);
|
|
312
302
|
} else {
|
|
313
|
-
return
|
|
303
|
+
return ASTNode.createBlockNode(block);
|
|
314
304
|
}
|
|
315
305
|
}
|
|
316
306
|
|
|
317
307
|
/**
|
|
318
308
|
* Get the AST node pointing to the input that the block is nested under or if
|
|
319
309
|
* the block is not nested then get the stack AST node.
|
|
320
|
-
* @param
|
|
321
|
-
* @return
|
|
322
|
-
* the
|
|
323
|
-
* @private
|
|
310
|
+
* @param block The source block of the current location.
|
|
311
|
+
* @return The AST node pointing to the input connection or the top block of
|
|
312
|
+
* the stack this block is in.
|
|
324
313
|
*/
|
|
325
|
-
getOutAstNodeForBlock_(block) {
|
|
314
|
+
private getOutAstNodeForBlock_(block: Block): ASTNode|null {
|
|
326
315
|
if (!block) {
|
|
327
316
|
return null;
|
|
328
317
|
}
|
|
@@ -334,8 +323,11 @@ class ASTNode {
|
|
|
334
323
|
// that input.
|
|
335
324
|
if (topConnection && topConnection.targetConnection &&
|
|
336
325
|
topConnection.targetConnection.getParentInput()) {
|
|
326
|
+
// AnyDuringMigration because: Argument of type 'Input | null' is not
|
|
327
|
+
// assignable to parameter of type 'Input'.
|
|
337
328
|
return ASTNode.createInputNode(
|
|
338
|
-
topConnection.targetConnection.getParentInput()
|
|
329
|
+
topConnection.targetConnection.getParentInput() as
|
|
330
|
+
AnyDuringMigration);
|
|
339
331
|
} else {
|
|
340
332
|
// Go to stack level if you are not underneath an input.
|
|
341
333
|
return ASTNode.createStackNode(topBlock);
|
|
@@ -344,13 +336,12 @@ class ASTNode {
|
|
|
344
336
|
|
|
345
337
|
/**
|
|
346
338
|
* Find the first editable field or input with a connection on a given block.
|
|
347
|
-
* @param
|
|
348
|
-
* @return
|
|
339
|
+
* @param block The source block of the current location.
|
|
340
|
+
* @return An AST node pointing to the first field or input.
|
|
349
341
|
* Null if there are no editable fields or inputs with connections on the
|
|
350
342
|
* block.
|
|
351
|
-
* @private
|
|
352
343
|
*/
|
|
353
|
-
findFirstFieldOrInput_(block) {
|
|
344
|
+
private findFirstFieldOrInput_(block: Block): ASTNode|null {
|
|
354
345
|
const inputs = block.inputList;
|
|
355
346
|
for (let i = 0; i < inputs.length; i++) {
|
|
356
347
|
const input = inputs[i];
|
|
@@ -370,34 +361,33 @@ class ASTNode {
|
|
|
370
361
|
|
|
371
362
|
/**
|
|
372
363
|
* Finds the source block of the location of this node.
|
|
373
|
-
* @return
|
|
374
|
-
*
|
|
364
|
+
* @return The source block of the location, or null if the node is of type
|
|
365
|
+
* workspace.
|
|
375
366
|
*/
|
|
376
|
-
getSourceBlock() {
|
|
367
|
+
getSourceBlock(): Block|null {
|
|
377
368
|
if (this.getType() === ASTNode.types.BLOCK) {
|
|
378
|
-
return
|
|
369
|
+
return this.getLocation() as Block;
|
|
379
370
|
} else if (this.getType() === ASTNode.types.STACK) {
|
|
380
|
-
return
|
|
371
|
+
return this.getLocation() as Block;
|
|
381
372
|
} else if (this.getType() === ASTNode.types.WORKSPACE) {
|
|
382
373
|
return null;
|
|
383
374
|
} else {
|
|
384
|
-
return
|
|
385
|
-
.getSourceBlock();
|
|
375
|
+
return (this.getLocation() as IASTNodeLocationWithBlock).getSourceBlock();
|
|
386
376
|
}
|
|
387
377
|
}
|
|
388
378
|
|
|
389
379
|
/**
|
|
390
380
|
* Find the element to the right of the current element in the AST.
|
|
391
|
-
* @return
|
|
392
|
-
*
|
|
381
|
+
* @return An AST node that wraps the next field, connection, block, or
|
|
382
|
+
* workspace. Or null if there is no node to the right.
|
|
393
383
|
*/
|
|
394
|
-
next() {
|
|
384
|
+
next(): ASTNode|null {
|
|
395
385
|
switch (this.type_) {
|
|
396
386
|
case ASTNode.types.STACK:
|
|
397
387
|
return this.navigateBetweenStacks_(true);
|
|
398
388
|
|
|
399
389
|
case ASTNode.types.OUTPUT: {
|
|
400
|
-
const connection =
|
|
390
|
+
const connection = this.location_ as Connection;
|
|
401
391
|
return ASTNode.createBlockNode(connection.getSourceBlock());
|
|
402
392
|
}
|
|
403
393
|
case ASTNode.types.FIELD:
|
|
@@ -407,18 +397,18 @@ class ASTNode {
|
|
|
407
397
|
return this.findNextForInput_();
|
|
408
398
|
|
|
409
399
|
case ASTNode.types.BLOCK: {
|
|
410
|
-
const block =
|
|
400
|
+
const block = this.location_ as Block;
|
|
411
401
|
const nextConnection = block.nextConnection;
|
|
412
402
|
return ASTNode.createConnectionNode(nextConnection);
|
|
413
403
|
}
|
|
414
404
|
case ASTNode.types.PREVIOUS: {
|
|
415
|
-
const connection =
|
|
405
|
+
const connection = this.location_ as Connection;
|
|
416
406
|
return ASTNode.createBlockNode(connection.getSourceBlock());
|
|
417
407
|
}
|
|
418
408
|
case ASTNode.types.NEXT: {
|
|
419
|
-
const connection =
|
|
409
|
+
const connection = this.location_ as Connection;
|
|
420
410
|
const targetConnection = connection.targetConnection;
|
|
421
|
-
return ASTNode.createConnectionNode(targetConnection);
|
|
411
|
+
return ASTNode.createConnectionNode(targetConnection!);
|
|
422
412
|
}
|
|
423
413
|
}
|
|
424
414
|
|
|
@@ -428,13 +418,13 @@ class ASTNode {
|
|
|
428
418
|
/**
|
|
429
419
|
* Find the element one level below and all the way to the left of the current
|
|
430
420
|
* location.
|
|
431
|
-
* @return
|
|
432
|
-
*
|
|
421
|
+
* @return An AST node that wraps the next field, connection, workspace, or
|
|
422
|
+
* block. Or null if there is nothing below this node.
|
|
433
423
|
*/
|
|
434
|
-
in() {
|
|
424
|
+
in(): ASTNode|null {
|
|
435
425
|
switch (this.type_) {
|
|
436
426
|
case ASTNode.types.WORKSPACE: {
|
|
437
|
-
const workspace =
|
|
427
|
+
const workspace = this.location_ as Workspace;
|
|
438
428
|
const topBlocks = workspace.getTopBlocks(true);
|
|
439
429
|
if (topBlocks.length > 0) {
|
|
440
430
|
return ASTNode.createStackNode(topBlocks[0]);
|
|
@@ -442,17 +432,17 @@ class ASTNode {
|
|
|
442
432
|
break;
|
|
443
433
|
}
|
|
444
434
|
case ASTNode.types.STACK: {
|
|
445
|
-
const block =
|
|
435
|
+
const block = this.location_ as Block;
|
|
446
436
|
return this.findTopASTNodeForBlock_(block);
|
|
447
437
|
}
|
|
448
438
|
case ASTNode.types.BLOCK: {
|
|
449
|
-
const block =
|
|
439
|
+
const block = this.location_ as Block;
|
|
450
440
|
return this.findFirstFieldOrInput_(block);
|
|
451
441
|
}
|
|
452
442
|
case ASTNode.types.INPUT: {
|
|
453
|
-
const connection =
|
|
443
|
+
const connection = this.location_ as Connection;
|
|
454
444
|
const targetConnection = connection.targetConnection;
|
|
455
|
-
return ASTNode.createConnectionNode(targetConnection);
|
|
445
|
+
return ASTNode.createConnectionNode(targetConnection!);
|
|
456
446
|
}
|
|
457
447
|
}
|
|
458
448
|
|
|
@@ -461,11 +451,11 @@ class ASTNode {
|
|
|
461
451
|
|
|
462
452
|
/**
|
|
463
453
|
* Find the element to the left of the current element in the AST.
|
|
464
|
-
* @return
|
|
465
|
-
*
|
|
454
|
+
* @return An AST node that wraps the previous field, connection, workspace or
|
|
455
|
+
* block. Or null if no node exists to the left.
|
|
466
456
|
* null.
|
|
467
457
|
*/
|
|
468
|
-
prev() {
|
|
458
|
+
prev(): ASTNode|null {
|
|
469
459
|
switch (this.type_) {
|
|
470
460
|
case ASTNode.types.STACK:
|
|
471
461
|
return this.navigateBetweenStacks_(false);
|
|
@@ -480,12 +470,12 @@ class ASTNode {
|
|
|
480
470
|
return this.findPrevForInput_();
|
|
481
471
|
|
|
482
472
|
case ASTNode.types.BLOCK: {
|
|
483
|
-
const block =
|
|
473
|
+
const block = this.location_ as Block;
|
|
484
474
|
const topConnection = getParentConnection(block);
|
|
485
475
|
return ASTNode.createConnectionNode(topConnection);
|
|
486
476
|
}
|
|
487
477
|
case ASTNode.types.PREVIOUS: {
|
|
488
|
-
const connection =
|
|
478
|
+
const connection = this.location_ as Connection;
|
|
489
479
|
const targetConnection = connection.targetConnection;
|
|
490
480
|
if (targetConnection && !targetConnection.getParentInput()) {
|
|
491
481
|
return ASTNode.createConnectionNode(targetConnection);
|
|
@@ -493,7 +483,7 @@ class ASTNode {
|
|
|
493
483
|
break;
|
|
494
484
|
}
|
|
495
485
|
case ASTNode.types.NEXT: {
|
|
496
|
-
const connection =
|
|
486
|
+
const connection = this.location_ as Connection;
|
|
497
487
|
return ASTNode.createBlockNode(connection.getSourceBlock());
|
|
498
488
|
}
|
|
499
489
|
}
|
|
@@ -504,13 +494,13 @@ class ASTNode {
|
|
|
504
494
|
/**
|
|
505
495
|
* Find the next element that is one position above and all the way to the
|
|
506
496
|
* left of the current location.
|
|
507
|
-
* @return
|
|
508
|
-
*
|
|
497
|
+
* @return An AST node that wraps the next field, connection, workspace or
|
|
498
|
+
* block. Or null if we are at the workspace level.
|
|
509
499
|
*/
|
|
510
|
-
out() {
|
|
500
|
+
out(): ASTNode|null {
|
|
511
501
|
switch (this.type_) {
|
|
512
502
|
case ASTNode.types.STACK: {
|
|
513
|
-
const block =
|
|
503
|
+
const block = this.location_ as Block;
|
|
514
504
|
const blockPos = block.getRelativeToSurfaceXY();
|
|
515
505
|
// TODO: Make sure this is in the bounds of the workspace.
|
|
516
506
|
const wsCoordinate =
|
|
@@ -518,7 +508,7 @@ class ASTNode {
|
|
|
518
508
|
return ASTNode.createWorkspaceNode(block.workspace, wsCoordinate);
|
|
519
509
|
}
|
|
520
510
|
case ASTNode.types.OUTPUT: {
|
|
521
|
-
const connection =
|
|
511
|
+
const connection = this.location_ as Connection;
|
|
522
512
|
const target = connection.targetConnection;
|
|
523
513
|
if (target) {
|
|
524
514
|
return ASTNode.createConnectionNode(target);
|
|
@@ -526,23 +516,23 @@ class ASTNode {
|
|
|
526
516
|
return ASTNode.createStackNode(connection.getSourceBlock());
|
|
527
517
|
}
|
|
528
518
|
case ASTNode.types.FIELD: {
|
|
529
|
-
const field =
|
|
519
|
+
const field = this.location_ as Field;
|
|
530
520
|
return ASTNode.createBlockNode(field.getSourceBlock());
|
|
531
521
|
}
|
|
532
522
|
case ASTNode.types.INPUT: {
|
|
533
|
-
const connection =
|
|
523
|
+
const connection = this.location_ as Connection;
|
|
534
524
|
return ASTNode.createBlockNode(connection.getSourceBlock());
|
|
535
525
|
}
|
|
536
526
|
case ASTNode.types.BLOCK: {
|
|
537
|
-
const block =
|
|
527
|
+
const block = this.location_ as Block;
|
|
538
528
|
return this.getOutAstNodeForBlock_(block);
|
|
539
529
|
}
|
|
540
530
|
case ASTNode.types.PREVIOUS: {
|
|
541
|
-
const connection =
|
|
531
|
+
const connection = this.location_ as Connection;
|
|
542
532
|
return this.getOutAstNodeForBlock_(connection.getSourceBlock());
|
|
543
533
|
}
|
|
544
534
|
case ASTNode.types.NEXT: {
|
|
545
|
-
const connection =
|
|
535
|
+
const connection = this.location_ as Connection;
|
|
546
536
|
return this.getOutAstNodeForBlock_(connection.getSourceBlock());
|
|
547
537
|
}
|
|
548
538
|
}
|
|
@@ -552,11 +542,10 @@ class ASTNode {
|
|
|
552
542
|
|
|
553
543
|
/**
|
|
554
544
|
* Whether an AST node of the given type points to a connection.
|
|
555
|
-
* @param
|
|
556
|
-
* @return
|
|
557
|
-
* @private
|
|
545
|
+
* @param type The type to check. One of ASTNode.types.
|
|
546
|
+
* @return True if a node of the given type points to a connection.
|
|
558
547
|
*/
|
|
559
|
-
static isConnectionType_(type) {
|
|
548
|
+
private static isConnectionType_(type: string): boolean {
|
|
560
549
|
switch (type) {
|
|
561
550
|
case ASTNode.types.PREVIOUS:
|
|
562
551
|
case ASTNode.types.NEXT:
|
|
@@ -569,10 +558,10 @@ class ASTNode {
|
|
|
569
558
|
|
|
570
559
|
/**
|
|
571
560
|
* Create an AST node pointing to a field.
|
|
572
|
-
* @param
|
|
573
|
-
* @return
|
|
561
|
+
* @param field The location of the AST node.
|
|
562
|
+
* @return An AST node pointing to a field.
|
|
574
563
|
*/
|
|
575
|
-
static createFieldNode(field) {
|
|
564
|
+
static createFieldNode(field: Field): ASTNode|null {
|
|
576
565
|
if (!field) {
|
|
577
566
|
return null;
|
|
578
567
|
}
|
|
@@ -583,20 +572,25 @@ class ASTNode {
|
|
|
583
572
|
* Creates an AST node pointing to a connection. If the connection has a
|
|
584
573
|
* parent input then create an AST node of type input that will hold the
|
|
585
574
|
* connection.
|
|
586
|
-
* @param
|
|
587
|
-
*
|
|
588
|
-
* @return {ASTNode} An AST node pointing to a connection.
|
|
575
|
+
* @param connection This is the connection the node will point to.
|
|
576
|
+
* @return An AST node pointing to a connection.
|
|
589
577
|
*/
|
|
590
|
-
static createConnectionNode(connection) {
|
|
578
|
+
static createConnectionNode(connection: Connection): ASTNode|null {
|
|
591
579
|
if (!connection) {
|
|
592
580
|
return null;
|
|
593
581
|
}
|
|
594
582
|
const type = connection.type;
|
|
595
583
|
if (type === ConnectionType.INPUT_VALUE) {
|
|
596
|
-
|
|
584
|
+
// AnyDuringMigration because: Argument of type 'Input | null' is not
|
|
585
|
+
// assignable to parameter of type 'Input'.
|
|
586
|
+
return ASTNode.createInputNode(
|
|
587
|
+
connection.getParentInput() as AnyDuringMigration);
|
|
597
588
|
} else if (
|
|
598
589
|
type === ConnectionType.NEXT_STATEMENT && connection.getParentInput()) {
|
|
599
|
-
|
|
590
|
+
// AnyDuringMigration because: Argument of type 'Input | null' is not
|
|
591
|
+
// assignable to parameter of type 'Input'.
|
|
592
|
+
return ASTNode.createInputNode(
|
|
593
|
+
connection.getParentInput() as AnyDuringMigration);
|
|
600
594
|
} else if (type === ConnectionType.NEXT_STATEMENT) {
|
|
601
595
|
return new ASTNode(ASTNode.types.NEXT, connection);
|
|
602
596
|
} else if (type === ConnectionType.OUTPUT_VALUE) {
|
|
@@ -610,10 +604,10 @@ class ASTNode {
|
|
|
610
604
|
/**
|
|
611
605
|
* Creates an AST node pointing to an input. Stores the input connection as
|
|
612
606
|
* the location.
|
|
613
|
-
* @param
|
|
614
|
-
* @return
|
|
607
|
+
* @param input The input used to create an AST node.
|
|
608
|
+
* @return An AST node pointing to a input.
|
|
615
609
|
*/
|
|
616
|
-
static createInputNode(input) {
|
|
610
|
+
static createInputNode(input: Input): ASTNode|null {
|
|
617
611
|
if (!input || !input.connection) {
|
|
618
612
|
return null;
|
|
619
613
|
}
|
|
@@ -622,10 +616,10 @@ class ASTNode {
|
|
|
622
616
|
|
|
623
617
|
/**
|
|
624
618
|
* Creates an AST node pointing to a block.
|
|
625
|
-
* @param
|
|
626
|
-
* @return
|
|
619
|
+
* @param block The block used to create an AST node.
|
|
620
|
+
* @return An AST node pointing to a block.
|
|
627
621
|
*/
|
|
628
|
-
static createBlockNode(block) {
|
|
622
|
+
static createBlockNode(block: Block): ASTNode|null {
|
|
629
623
|
if (!block) {
|
|
630
624
|
return null;
|
|
631
625
|
}
|
|
@@ -636,12 +630,12 @@ class ASTNode {
|
|
|
636
630
|
* Create an AST node of type stack. A stack, represented by its top block, is
|
|
637
631
|
* the set of all blocks connected to a top block, including the top
|
|
638
632
|
* block.
|
|
639
|
-
* @param
|
|
640
|
-
*
|
|
641
|
-
* @return
|
|
642
|
-
*
|
|
633
|
+
* @param topBlock A top block has no parent and can be found in the list
|
|
634
|
+
* returned by workspace.getTopBlocks().
|
|
635
|
+
* @return An AST node of type stack that points to the top block on the
|
|
636
|
+
* stack.
|
|
643
637
|
*/
|
|
644
|
-
static createStackNode(topBlock) {
|
|
638
|
+
static createStackNode(topBlock: Block): ASTNode|null {
|
|
645
639
|
if (!topBlock) {
|
|
646
640
|
return null;
|
|
647
641
|
}
|
|
@@ -650,28 +644,27 @@ class ASTNode {
|
|
|
650
644
|
|
|
651
645
|
/**
|
|
652
646
|
* Creates an AST node pointing to a workspace.
|
|
653
|
-
* @param
|
|
654
|
-
* @param
|
|
655
|
-
*
|
|
656
|
-
*
|
|
657
|
-
* on the workspace.
|
|
647
|
+
* @param workspace The workspace that we are on.
|
|
648
|
+
* @param wsCoordinate The position on the workspace for this node.
|
|
649
|
+
* @return An AST node pointing to a workspace and a position on the
|
|
650
|
+
* workspace.
|
|
658
651
|
*/
|
|
659
|
-
static createWorkspaceNode(
|
|
652
|
+
static createWorkspaceNode(
|
|
653
|
+
workspace: Workspace|null, wsCoordinate: Coordinate|null): ASTNode|null {
|
|
660
654
|
if (!wsCoordinate || !workspace) {
|
|
661
655
|
return null;
|
|
662
656
|
}
|
|
663
|
-
const params = {wsCoordinate
|
|
657
|
+
const params = {wsCoordinate};
|
|
664
658
|
return new ASTNode(ASTNode.types.WORKSPACE, workspace, params);
|
|
665
659
|
}
|
|
666
660
|
|
|
667
661
|
/**
|
|
668
662
|
* Creates an AST node for the top position on a block.
|
|
669
663
|
* This is either an output connection, previous connection, or block.
|
|
670
|
-
* @param
|
|
671
|
-
* @return
|
|
672
|
-
* block.
|
|
664
|
+
* @param block The block to find the top most AST node on.
|
|
665
|
+
* @return The AST node holding the top most position on the block.
|
|
673
666
|
*/
|
|
674
|
-
static createTopNode(block) {
|
|
667
|
+
static createTopNode(block: Block): ASTNode|null {
|
|
675
668
|
let astNode;
|
|
676
669
|
const topConnection = getParentConnection(block);
|
|
677
670
|
if (topConnection) {
|
|
@@ -683,59 +676,42 @@ class ASTNode {
|
|
|
683
676
|
}
|
|
684
677
|
}
|
|
685
678
|
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
|
|
690
|
-
*/
|
|
691
|
-
ASTNode.Params;
|
|
679
|
+
export namespace ASTNode {
|
|
680
|
+
export interface Params {
|
|
681
|
+
wsCoordinate: Coordinate;
|
|
682
|
+
}
|
|
692
683
|
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
STACK: 'stack',
|
|
705
|
-
WORKSPACE: 'workspace',
|
|
706
|
-
};
|
|
684
|
+
export enum types {
|
|
685
|
+
FIELD = 'field',
|
|
686
|
+
BLOCK = 'block',
|
|
687
|
+
INPUT = 'input',
|
|
688
|
+
OUTPUT = 'output',
|
|
689
|
+
NEXT = 'next',
|
|
690
|
+
PREVIOUS = 'previous',
|
|
691
|
+
STACK = 'stack',
|
|
692
|
+
WORKSPACE = 'workspace',
|
|
693
|
+
}
|
|
694
|
+
}
|
|
707
695
|
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
|
|
712
|
-
ASTNode.NAVIGATE_ALL_FIELDS = false;
|
|
696
|
+
export type Params = ASTNode.Params;
|
|
697
|
+
// No need to export ASTNode.types from the module at this time because (1) it
|
|
698
|
+
// wasn't automatically converted by the automatic migration script, (2) the
|
|
699
|
+
// name doesn't follow the styleguide.
|
|
713
700
|
|
|
714
|
-
/**
|
|
715
|
-
* The default y offset to use when moving the cursor from a stack to the
|
|
716
|
-
* workspace.
|
|
717
|
-
* @type {number}
|
|
718
|
-
* @private
|
|
719
|
-
*/
|
|
720
|
-
ASTNode.DEFAULT_OFFSET_Y = -20;
|
|
721
701
|
|
|
722
702
|
/**
|
|
723
703
|
* Gets the parent connection on a block.
|
|
724
704
|
* This is either an output connection, previous connection or undefined.
|
|
725
705
|
* If both connections exist return the one that is actually connected
|
|
726
706
|
* to another block.
|
|
727
|
-
* @param
|
|
728
|
-
* @return
|
|
729
|
-
* block.
|
|
730
|
-
* @private
|
|
707
|
+
* @param block The block to find the parent connection on.
|
|
708
|
+
* @return The connection connecting to the parent of the block.
|
|
731
709
|
*/
|
|
732
|
-
|
|
710
|
+
function getParentConnection(block: Block): Connection {
|
|
733
711
|
let topConnection = block.outputConnection;
|
|
734
712
|
if (!topConnection ||
|
|
735
|
-
|
|
713
|
+
block.previousConnection && block.previousConnection.isConnected()) {
|
|
736
714
|
topConnection = block.previousConnection;
|
|
737
715
|
}
|
|
738
716
|
return topConnection;
|
|
739
|
-
}
|
|
740
|
-
|
|
741
|
-
exports.ASTNode = ASTNode;
|
|
717
|
+
}
|