blockly 8.0.5 → 9.0.0-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/blockly.min.js +2002 -2269
- package/blockly_compressed.js +1499 -1994
- package/blockly_compressed.js.map +1 -1
- package/blocks/blocks.js +3 -2
- package/blocks/colour.js +3 -1
- package/blocks/lists.js +94 -22
- package/blocks/logic.js +14 -6
- package/blocks/loops.js +5 -3
- package/blocks/math.js +3 -1
- package/blocks/procedures.js +3 -1
- package/blocks/text.js +14 -6
- package/blocks/variables.js +3 -1
- package/blocks/variables_dynamic.js +3 -1
- package/blocks.d.ts +0 -2
- package/blocks_compressed.js +189 -171
- package/blocks_compressed.js.map +1 -1
- package/closure/goog/base.d.ts +1 -0
- package/closure/goog/base_minimal.d.ts +18 -0
- package/closure/goog/goog.d.ts +25 -0
- package/core/any_aliases.d.ts +1 -0
- package/core/any_aliases.ts +1 -0
- package/core/block.d.ts +779 -0
- package/core/{block.js → block.ts} +610 -719
- package/core/block_animations.d.ts +33 -0
- package/core/{block_animations.js → block_animations.ts} +75 -79
- package/core/block_drag_surface.d.ts +111 -0
- package/core/{block_drag_surface.js → block_drag_surface.ts} +85 -117
- package/core/block_dragger.d.ts +143 -0
- package/core/{block_dragger.js → block_dragger.ts} +139 -176
- package/core/block_svg.d.ts +588 -0
- package/core/{block_svg.js → block_svg.ts} +494 -630
- package/core/blockly.d.ts +562 -0
- package/core/blockly.js +1 -1
- package/core/blockly.ts +749 -0
- package/core/blockly_options.d.ts +69 -0
- package/core/blockly_options.ts +81 -0
- package/core/blocks.d.ts +17 -0
- package/core/{blocks.js → blocks.ts} +4 -8
- package/core/browser_events.d.ts +85 -0
- package/core/{browser_events.js → browser_events.ts} +98 -93
- package/core/bubble.d.ts +279 -0
- package/core/{bubble.js → bubble.ts} +277 -370
- package/core/bubble_dragger.d.ts +73 -0
- package/core/bubble_dragger.ts +229 -0
- package/core/bump_objects.d.ts +34 -0
- package/core/{bump_objects.js → bump_objects.ts} +54 -52
- package/core/clipboard.d.ts +42 -0
- package/core/clipboard.ts +91 -0
- package/core/comment.d.ts +113 -0
- package/core/{comment.js → comment.ts} +135 -185
- package/core/common.d.ts +129 -0
- package/core/{common.js → common.ts} +105 -82
- package/core/component_manager.d.ts +91 -0
- package/core/component_manager.ts +211 -0
- package/core/config.d.ts +23 -0
- package/core/{config.js → config.ts} +12 -19
- package/core/connection.d.ts +232 -0
- package/core/{connection.js → connection.ts} +187 -237
- package/core/connection_checker.d.ts +78 -0
- package/core/{connection_checker.js → connection_checker.ts} +66 -77
- package/core/connection_db.d.ts +91 -0
- package/core/{connection_db.js → connection_db.ts} +62 -87
- package/core/connection_type.d.ts +15 -0
- package/core/{connection_type.js → connection_type.ts} +8 -12
- package/core/constants.d.ts +15 -0
- package/core/{constants.js → constants.ts} +4 -8
- package/core/contextmenu.d.ts +80 -0
- package/core/{contextmenu.js → contextmenu.ts} +118 -153
- package/core/contextmenu_items.d.ts +77 -0
- package/core/contextmenu_items.ts +576 -0
- package/core/contextmenu_registry.d.ts +105 -0
- package/core/contextmenu_registry.ts +179 -0
- package/core/css.d.ts +24 -0
- package/core/{css.js → css.ts} +16 -24
- package/core/delete_area.d.ts +47 -0
- package/core/delete_area.ts +82 -0
- package/core/dialog.d.ts +61 -0
- package/core/dialog.ts +127 -0
- package/core/drag_target.d.ts +63 -0
- package/core/drag_target.ts +94 -0
- package/core/dropdowndiv.d.ts +155 -0
- package/core/{dropdowndiv.js → dropdowndiv.ts} +262 -333
- package/core/events/events.d.ts +102 -0
- package/core/events/events.ts +123 -0
- package/core/events/events_abstract.d.ts +51 -0
- package/core/events/events_abstract.ts +112 -0
- package/core/events/events_block_base.d.ts +31 -0
- package/core/events/events_block_base.ts +65 -0
- package/core/events/events_block_change.d.ts +55 -0
- package/core/events/{events_block_change.js → events_block_change.ts} +45 -48
- package/core/events/events_block_create.d.ts +35 -0
- package/core/events/{events_block_create.js → events_block_create.ts} +30 -35
- package/core/events/events_block_delete.d.ts +36 -0
- package/core/events/{events_block_delete.js → events_block_delete.ts} +34 -39
- package/core/events/events_block_drag.d.ts +36 -0
- package/core/events/events_block_drag.ts +82 -0
- package/core/events/events_block_move.d.ts +51 -0
- package/core/events/{events_block_move.js → events_block_move.ts} +54 -50
- package/core/events/events_bubble_open.d.ts +35 -0
- package/core/events/events_bubble_open.ts +82 -0
- package/core/events/events_click.d.ts +36 -0
- package/core/events/{events_click.js → events_click.ts} +27 -30
- package/core/events/events_comment_base.d.ts +39 -0
- package/core/events/events_comment_base.ts +107 -0
- package/core/events/events_comment_change.d.ts +43 -0
- package/core/events/{events_comment_change.js → events_comment_change.ts} +31 -28
- package/core/events/events_comment_create.d.ts +35 -0
- package/core/events/{events_comment_create.js → events_comment_create.ts} +24 -26
- package/core/events/events_comment_delete.d.ts +35 -0
- package/core/events/{events_comment_delete.js → events_comment_delete.ts} +20 -24
- package/core/events/events_comment_move.d.ts +55 -0
- package/core/events/{events_comment_move.js → events_comment_move.ts} +39 -42
- package/core/events/events_marker_move.d.ts +40 -0
- package/core/events/events_marker_move.ts +99 -0
- package/core/events/events_selected.d.ts +34 -0
- package/core/events/events_selected.ts +78 -0
- package/core/events/events_theme_change.d.ts +30 -0
- package/core/events/{events_theme_change.js → events_theme_change.ts} +19 -24
- package/core/events/events_toolbox_item_select.d.ts +34 -0
- package/core/events/events_toolbox_item_select.ts +79 -0
- package/core/events/events_trashcan_open.d.ts +31 -0
- package/core/events/events_trashcan_open.ts +68 -0
- package/core/events/events_ui.d.ts +37 -0
- package/core/events/{events_ui.js → events_ui.ts} +27 -26
- package/core/events/events_ui_base.d.ts +26 -0
- package/core/events/{events_ui_base.js → events_ui_base.ts} +17 -26
- package/core/events/events_var_base.d.ts +31 -0
- package/core/events/events_var_base.ts +65 -0
- package/core/events/events_var_create.d.ts +35 -0
- package/core/events/{events_var_create.js → events_var_create.ts} +24 -25
- package/core/events/events_var_delete.d.ts +35 -0
- package/core/events/{events_var_delete.js → events_var_delete.ts} +24 -25
- package/core/events/events_var_rename.d.ts +36 -0
- package/core/events/{events_var_rename.js → events_var_rename.ts} +25 -26
- package/core/events/events_viewport.d.ts +39 -0
- package/core/events/events_viewport.ts +100 -0
- package/core/events/utils.d.ts +272 -0
- package/core/events/{utils.js → utils.ts} +148 -219
- package/core/events/workspace_events.d.ts +36 -0
- package/core/events/workspace_events.ts +86 -0
- package/core/extensions.d.ts +107 -0
- package/core/{extensions.js → extensions.ts} +153 -172
- package/core/field.d.ts +534 -0
- package/core/{field.js → field.ts} +413 -489
- package/core/field_angle.d.ts +176 -0
- package/core/field_angle.ts +563 -0
- package/core/field_checkbox.d.ts +124 -0
- package/core/field_checkbox.ts +243 -0
- package/core/field_colour.d.ts +200 -0
- package/core/field_colour.ts +632 -0
- package/core/field_dropdown.d.ts +222 -0
- package/core/{field_dropdown.js → field_dropdown.ts} +277 -299
- package/core/field_image.d.ts +134 -0
- package/core/field_image.ts +282 -0
- package/core/field_label.d.ts +71 -0
- package/core/field_label.ts +152 -0
- package/core/field_label_serializable.d.ts +42 -0
- package/core/field_label_serializable.ts +76 -0
- package/core/field_multilineinput.d.ts +146 -0
- package/core/{field_multilineinput.js → field_multilineinput.ts} +166 -163
- package/core/field_number.d.ts +156 -0
- package/core/{field_number.js → field_number.ts} +110 -123
- package/core/field_registry.d.ts +45 -0
- package/core/{field_registry.js → field_registry.ts} +37 -30
- package/core/field_textinput.d.ts +219 -0
- package/core/field_textinput.ts +591 -0
- package/core/field_variable.d.ts +217 -0
- package/core/{field_variable.js → field_variable.ts} +174 -187
- package/core/flyout_base.d.ts +459 -0
- package/core/{flyout_base.js → flyout_base.ts} +429 -518
- package/core/flyout_button.d.ts +81 -0
- package/core/flyout_button.ts +292 -0
- package/core/flyout_horizontal.d.ts +82 -0
- package/core/{flyout_horizontal.js → flyout_horizontal.ts} +97 -107
- package/core/flyout_metrics_manager.d.ts +40 -0
- package/core/{flyout_metrics_manager.js → flyout_metrics_manager.ts} +22 -34
- package/core/flyout_vertical.d.ts +83 -0
- package/core/{flyout_vertical.js → flyout_vertical.ts} +106 -117
- package/core/generator.d.ts +205 -0
- package/core/{generator.js → generator.ts} +168 -193
- package/core/gesture.d.ts +357 -0
- package/core/{gesture.js → gesture.ts} +289 -369
- package/core/grid.d.ts +83 -0
- package/core/grid.ts +192 -0
- package/core/icon.d.ts +78 -0
- package/core/icon.ts +189 -0
- package/core/inject.d.ts +15 -0
- package/core/{inject.js → inject.ts} +101 -100
- package/core/input.d.ts +128 -0
- package/core/input.ts +309 -0
- package/core/input_types.d.ts +14 -0
- package/core/{input_types.js → input_types.ts} +8 -12
- package/core/insertion_marker_manager.d.ts +212 -0
- package/core/{insertion_marker_manager.js → insertion_marker_manager.ts} +234 -236
- package/core/interfaces/i_ast_node_location.d.ts +11 -0
- package/core/interfaces/{i_ast_node_location.js → i_ast_node_location.ts} +4 -7
- package/core/interfaces/i_ast_node_location_svg.d.ts +22 -0
- package/core/interfaces/i_ast_node_location_svg.ts +37 -0
- package/core/interfaces/i_ast_node_location_with_block.d.ts +18 -0
- package/core/interfaces/i_ast_node_location_with_block.ts +38 -0
- package/core/interfaces/i_autohideable.d.ts +18 -0
- package/core/interfaces/i_autohideable.ts +34 -0
- package/core/interfaces/i_block_dragger.d.ts +43 -0
- package/core/interfaces/i_block_dragger.ts +67 -0
- package/core/interfaces/i_bounded_element.d.ts +24 -0
- package/core/interfaces/i_bounded_element.ts +42 -0
- package/core/interfaces/i_bubble.d.ts +59 -0
- package/core/interfaces/i_bubble.ts +88 -0
- package/core/interfaces/i_collapsible_toolbox_item.d.ts +26 -0
- package/core/interfaces/i_collapsible_toolbox_item.ts +47 -0
- package/core/interfaces/i_component.d.ts +17 -0
- package/core/interfaces/{i_component.js → i_component.ts} +9 -14
- package/core/interfaces/i_connection_checker.d.ts +69 -0
- package/core/interfaces/i_connection_checker.ts +102 -0
- package/core/interfaces/i_contextmenu.d.ts +13 -0
- package/core/interfaces/i_contextmenu.ts +26 -0
- package/core/interfaces/i_copyable.d.ts +24 -0
- package/core/interfaces/i_copyable.ts +40 -0
- package/core/interfaces/i_deletable.d.ts +16 -0
- package/core/interfaces/{i_deletable.js → i_deletable.ts} +9 -13
- package/core/interfaces/i_delete_area.d.ts +25 -0
- package/core/interfaces/i_delete_area.ts +46 -0
- package/core/interfaces/i_drag_target.d.ts +53 -0
- package/core/interfaces/i_drag_target.ts +84 -0
- package/core/interfaces/i_draggable.d.ts +12 -0
- package/core/interfaces/{i_draggable.js → i_draggable.ts} +4 -10
- package/core/interfaces/i_flyout.d.ts +134 -0
- package/core/interfaces/i_flyout.ts +186 -0
- package/core/interfaces/i_keyboard_accessible.d.ts +18 -0
- package/core/interfaces/i_keyboard_accessible.ts +35 -0
- package/core/interfaces/i_metrics_manager.d.ts +117 -0
- package/core/interfaces/i_metrics_manager.ts +151 -0
- package/core/interfaces/i_movable.d.ts +16 -0
- package/core/interfaces/{i_movable.js → i_movable.ts} +9 -13
- package/core/interfaces/i_positionable.d.ts +27 -0
- package/core/interfaces/i_positionable.ts +50 -0
- package/core/interfaces/i_registrable.d.ts +11 -0
- package/core/interfaces/{i_registrable.js → i_registrable.ts} +3 -7
- package/core/interfaces/i_registrable_field.d.ts +17 -0
- package/core/interfaces/{i_registrable_field.js → i_registrable_field.ts} +8 -16
- package/core/interfaces/i_selectable.d.ts +18 -0
- package/core/interfaces/i_selectable.ts +34 -0
- package/core/interfaces/i_selectable_toolbox_item.d.ts +42 -0
- package/core/interfaces/i_selectable_toolbox_item.ts +64 -0
- package/core/interfaces/i_serializer.d.ts +42 -0
- package/core/interfaces/i_serializer.ts +65 -0
- package/core/interfaces/i_styleable.d.ts +21 -0
- package/core/interfaces/i_styleable.ts +35 -0
- package/core/interfaces/i_toolbox.d.ts +85 -0
- package/core/interfaces/i_toolbox.ts +127 -0
- package/core/interfaces/i_toolbox_item.d.ts +62 -0
- package/core/interfaces/i_toolbox_item.ts +84 -0
- package/core/internal_constants.d.ts +40 -0
- package/core/{internal_constants.js → internal_constants.ts} +13 -18
- package/core/keyboard_nav/ast_node.d.ts +239 -0
- package/core/keyboard_nav/{ast_node.js → ast_node.ts} +207 -231
- package/core/keyboard_nav/basic_cursor.d.ts +88 -0
- package/core/keyboard_nav/{basic_cursor.js → basic_cursor.ts} +55 -66
- package/core/keyboard_nav/cursor.d.ts +41 -0
- package/core/keyboard_nav/{cursor.js → cursor.ts} +25 -35
- package/core/keyboard_nav/marker.d.ts +58 -0
- package/core/keyboard_nav/{marker.js → marker.ts} +36 -55
- package/core/keyboard_nav/tab_navigate_cursor.d.ts +19 -0
- package/core/keyboard_nav/{tab_navigate_cursor.js → tab_navigate_cursor.ts} +11 -15
- package/core/main.d.ts +11 -0
- package/core/main.js +303 -0
- package/core/marker_manager.d.ts +85 -0
- package/core/marker_manager.ts +181 -0
- package/core/menu.d.ts +149 -0
- package/core/{menu.js → menu.ts} +141 -174
- package/core/menuitem.d.ts +118 -0
- package/core/menuitem.ts +240 -0
- package/core/metrics_manager.d.ts +201 -0
- package/core/{metrics_manager.js → metrics_manager.ts} +117 -156
- package/core/msg.d.ts +9 -0
- package/core/{msg.js → msg.ts} +4 -8
- package/core/mutator.d.ts +128 -0
- package/core/{mutator.js → mutator.ts} +196 -211
- package/core/names.d.ts +124 -0
- package/core/names.ts +267 -0
- package/core/options.d.ts +137 -0
- package/core/{options.js → options.ts} +147 -173
- package/core/positionable_helpers.d.ts +88 -0
- package/core/{positionable_helpers.js → positionable_helpers.ts} +63 -70
- package/core/procedures.d.ts +108 -0
- package/core/{procedures.js → procedures.ts} +143 -152
- package/core/registry.d.ts +137 -0
- package/core/registry.ts +339 -0
- package/core/rendered_connection.d.ts +191 -0
- package/core/{rendered_connection.js → rendered_connection.ts} +164 -184
- package/core/renderers/common/block_rendering.d.ts +114 -0
- package/core/renderers/common/block_rendering.ts +164 -0
- package/core/renderers/common/constants.d.ts +458 -0
- package/core/renderers/common/constants.ts +1124 -0
- package/core/renderers/common/debug.d.ts +28 -0
- package/core/renderers/common/{debug.js → debug.ts} +14 -20
- package/core/renderers/common/debugger.d.ts +120 -0
- package/core/renderers/common/{debugger.js → debugger.ts} +100 -124
- package/core/renderers/common/drawer.d.ts +132 -0
- package/core/renderers/common/{drawer.js → drawer.ts} +112 -137
- package/core/renderers/common/i_path_object.d.ts +117 -0
- package/core/renderers/common/i_path_object.ts +161 -0
- package/core/renderers/common/info.d.ts +194 -0
- package/core/renderers/common/{info.js → info.ts} +165 -222
- package/core/renderers/common/marker_svg.d.ts +220 -0
- package/core/renderers/common/marker_svg.ts +680 -0
- package/core/renderers/common/path_object.d.ts +146 -0
- package/core/renderers/common/path_object.ts +272 -0
- package/core/renderers/common/renderer.d.ts +157 -0
- package/core/renderers/common/renderer.ts +271 -0
- package/core/renderers/geras/constants.d.ts +23 -0
- package/core/renderers/geras/constants.ts +61 -0
- package/core/renderers/geras/drawer.d.ts +43 -0
- package/core/renderers/geras/{drawer.js → drawer.ts} +40 -84
- package/core/renderers/geras/geras.d.ts +11 -0
- package/core/renderers/geras/geras.ts +37 -0
- package/core/renderers/geras/highlight_constants.d.ts +108 -0
- package/core/renderers/geras/{highlight_constants.js → highlight_constants.ts} +107 -69
- package/core/renderers/geras/highlighter.d.ts +98 -0
- package/core/renderers/geras/{highlighter.js → highlighter.ts} +81 -86
- package/core/renderers/geras/info.d.ts +45 -0
- package/core/renderers/geras/{info.js → info.ts} +61 -99
- package/core/renderers/geras/measurables/inline_input.d.ts +23 -0
- package/core/renderers/geras/measurables/inline_input.ts +51 -0
- package/core/renderers/geras/measurables/statement_input.d.ts +23 -0
- package/core/renderers/geras/measurables/statement_input.ts +50 -0
- package/core/renderers/geras/path_object.d.ts +47 -0
- package/core/renderers/geras/{path_object.js → path_object.ts} +46 -74
- package/core/renderers/geras/renderer.d.ts +69 -0
- package/core/renderers/geras/renderer.ts +126 -0
- package/core/renderers/measurables/base.d.ts +27 -0
- package/core/renderers/measurables/base.ts +53 -0
- package/core/renderers/measurables/bottom_row.d.ts +61 -0
- package/core/renderers/measurables/bottom_row.ts +120 -0
- package/core/renderers/measurables/connection.d.ts +25 -0
- package/core/renderers/measurables/connection.ts +52 -0
- package/core/renderers/measurables/external_value_input.d.ts +27 -0
- package/core/renderers/measurables/external_value_input.ts +65 -0
- package/core/renderers/measurables/field.d.ts +30 -0
- package/core/renderers/measurables/field.ts +63 -0
- package/core/renderers/measurables/hat.d.ts +21 -0
- package/core/renderers/measurables/{hat.js → hat.ts} +12 -14
- package/core/renderers/measurables/icon.d.ts +26 -0
- package/core/renderers/measurables/{icon.js → icon.ts} +14 -18
- package/core/renderers/measurables/in_row_spacer.d.ts +21 -0
- package/core/renderers/measurables/in_row_spacer.ts +44 -0
- package/core/renderers/measurables/inline_input.d.ts +24 -0
- package/core/renderers/measurables/{inline_input.js → inline_input.ts} +22 -26
- package/core/renderers/measurables/input_connection.d.ts +29 -0
- package/core/renderers/measurables/input_connection.ts +66 -0
- package/core/renderers/measurables/input_row.d.ts +30 -0
- package/core/renderers/measurables/{input_row.js → input_row.ts} +24 -31
- package/core/renderers/measurables/jagged_edge.d.ts +20 -0
- package/core/renderers/measurables/{jagged_edge.js → jagged_edge.ts} +10 -13
- package/core/renderers/measurables/next_connection.d.ts +23 -0
- package/core/renderers/measurables/next_connection.ts +47 -0
- package/core/renderers/measurables/output_connection.d.ts +26 -0
- package/core/renderers/measurables/output_connection.ts +56 -0
- package/core/renderers/measurables/previous_connection.d.ts +23 -0
- package/core/renderers/measurables/previous_connection.ts +47 -0
- package/core/renderers/measurables/round_corner.d.ts +21 -0
- package/core/renderers/measurables/round_corner.ts +49 -0
- package/core/renderers/measurables/row.d.ts +141 -0
- package/core/renderers/measurables/row.ts +225 -0
- package/core/renderers/measurables/spacer_row.d.ts +29 -0
- package/core/renderers/measurables/spacer_row.ts +55 -0
- package/core/renderers/measurables/square_corner.d.ts +21 -0
- package/core/renderers/measurables/square_corner.ts +47 -0
- package/core/renderers/measurables/statement_input.d.ts +22 -0
- package/core/renderers/measurables/{statement_input.js → statement_input.ts} +14 -18
- package/core/renderers/measurables/top_row.d.ts +56 -0
- package/core/renderers/measurables/top_row.ts +122 -0
- package/core/renderers/measurables/types.d.ts +235 -0
- package/core/renderers/measurables/types.ts +332 -0
- package/core/renderers/minimalist/constants.d.ts +14 -0
- package/core/renderers/minimalist/{constants.js → constants.ts} +5 -10
- package/core/renderers/minimalist/drawer.d.ts +21 -0
- package/core/renderers/minimalist/drawer.ts +38 -0
- package/core/renderers/minimalist/info.d.ts +30 -0
- package/core/renderers/minimalist/info.ts +52 -0
- package/core/renderers/minimalist/minimalist.d.ts +6 -0
- package/core/renderers/minimalist/minimalist.ts +22 -0
- package/core/renderers/minimalist/renderer.d.ts +41 -0
- package/core/renderers/minimalist/renderer.ts +71 -0
- package/core/renderers/thrasos/info.d.ts +40 -0
- package/core/renderers/thrasos/{info.js → info.ts} +66 -67
- package/core/renderers/thrasos/renderer.d.ts +25 -0
- package/core/renderers/thrasos/renderer.ts +48 -0
- package/core/renderers/thrasos/thrasos.d.ts +4 -0
- package/core/renderers/thrasos/thrasos.ts +20 -0
- package/core/renderers/zelos/constants.d.ts +186 -0
- package/core/renderers/zelos/{constants.js → constants.ts} +294 -441
- package/core/renderers/zelos/drawer.d.ts +47 -0
- package/core/renderers/zelos/{drawer.js → drawer.ts} +73 -95
- package/core/renderers/zelos/info.d.ts +88 -0
- package/core/renderers/zelos/{info.js → info.ts} +111 -142
- package/core/renderers/zelos/marker_svg.d.ts +46 -0
- package/core/renderers/zelos/marker_svg.ts +151 -0
- package/core/renderers/zelos/measurables/bottom_row.d.ts +27 -0
- package/core/renderers/zelos/measurables/bottom_row.ts +53 -0
- package/core/renderers/zelos/measurables/inputs.d.ts +23 -0
- package/core/renderers/zelos/measurables/{inputs.js → inputs.ts} +14 -15
- package/core/renderers/zelos/measurables/row_elements.d.ts +21 -0
- package/core/renderers/zelos/measurables/row_elements.ts +45 -0
- package/core/renderers/zelos/measurables/top_row.d.ts +29 -0
- package/core/renderers/zelos/measurables/{top_row.js → top_row.ts} +14 -27
- package/core/renderers/zelos/path_object.d.ts +77 -0
- package/core/renderers/zelos/path_object.ts +215 -0
- package/core/renderers/zelos/renderer.d.ts +74 -0
- package/core/renderers/zelos/renderer.ts +142 -0
- package/core/renderers/zelos/zelos.d.ts +12 -0
- package/core/renderers/zelos/zelos.ts +39 -0
- package/core/scrollbar.d.ts +277 -0
- package/core/{scrollbar.js → scrollbar.ts} +307 -328
- package/core/scrollbar_pair.d.ts +105 -0
- package/core/{scrollbar_pair.js → scrollbar_pair.ts} +71 -79
- package/core/serialization/blocks.d.ts +98 -0
- package/core/serialization/{blocks.js → blocks.ts} +229 -228
- package/core/serialization/exceptions.d.ts +73 -0
- package/core/serialization/exceptions.ts +98 -0
- package/core/serialization/priorities.d.ts +15 -0
- package/core/serialization/{priorities.js → priorities.ts} +4 -10
- package/core/serialization/registry.d.ts +20 -0
- package/core/serialization/{registry.js → registry.ts} +11 -13
- package/core/serialization/variables.d.ts +14 -0
- package/core/serialization/{variables.js → variables.ts} +30 -32
- package/core/serialization/workspaces.d.ts +28 -0
- package/core/serialization/{workspaces.js → workspaces.ts} +30 -27
- package/core/shortcut_items.d.ts +61 -0
- package/core/{shortcut_items.js → shortcut_items.ts} +121 -157
- package/core/shortcut_registry.d.ts +151 -0
- package/core/shortcut_registry.ts +355 -0
- package/core/sprites.d.ts +19 -0
- package/core/{sprites.js → sprites.ts} +4 -6
- package/core/theme/classic.d.ts +12 -0
- package/core/theme/{classic.js → classic.ts} +5 -7
- package/core/theme/themes.d.ts +8 -0
- package/core/theme/themes.ts +22 -0
- package/core/theme/zelos.d.ts +11 -0
- package/core/theme/{zelos.js → zelos.ts} +4 -7
- package/core/theme.d.ts +142 -0
- package/core/theme.ts +221 -0
- package/core/theme_manager.d.ts +81 -0
- package/core/theme_manager.ts +186 -0
- package/core/toolbox/category.d.ts +239 -0
- package/core/toolbox/category.ts +679 -0
- package/core/toolbox/collapsible_category.d.ts +91 -0
- package/core/toolbox/collapsible_category.ts +273 -0
- package/core/toolbox/separator.d.ts +39 -0
- package/core/toolbox/separator.ts +105 -0
- package/core/toolbox/toolbox.d.ts +352 -0
- package/core/toolbox/{toolbox.js → toolbox.ts} +316 -432
- package/core/toolbox/toolbox_item.d.ts +85 -0
- package/core/toolbox/toolbox_item.ts +147 -0
- package/core/tooltip.d.ts +126 -0
- package/core/{tooltip.js → tooltip.ts} +136 -214
- package/core/touch.d.ts +121 -0
- package/core/touch.ts +306 -0
- package/core/touch_gesture.d.ts +115 -0
- package/core/{touch_gesture.js → touch_gesture.ts} +87 -125
- package/core/trashcan.d.ts +195 -0
- package/core/{trashcan.js → trashcan.ts} +226 -312
- package/core/utils/aria.d.ts +67 -0
- package/core/utils/{aria.js → aria.ts} +47 -61
- package/core/utils/array.d.ts +14 -0
- package/core/utils/{array.js → array.ts} +10 -12
- package/core/utils/colour.d.ts +103 -0
- package/core/utils/{colour.js → colour.ts} +60 -72
- package/core/utils/coordinate.d.ts +72 -0
- package/core/utils/coordinate.ts +124 -0
- package/core/utils/deprecation.d.ts +17 -0
- package/core/utils/{deprecation.js → deprecation.ts} +11 -11
- package/core/utils/dom.d.ts +165 -0
- package/core/utils/{dom.js → dom.ts} +125 -147
- package/core/utils/idgenerator.d.ts +25 -0
- package/core/utils/{idgenerator.js → idgenerator.ts} +15 -18
- package/core/utils/keycodes.d.ts +137 -0
- package/core/utils/keycodes.ts +169 -0
- package/core/utils/math.d.ts +30 -0
- package/core/utils/{math.js → math.ts} +17 -19
- package/core/utils/metrics.d.ts +64 -0
- package/core/utils/metrics.ts +97 -0
- package/core/utils/object.d.ts +35 -0
- package/core/utils/{object.js → object.ts} +30 -26
- package/core/utils/parsing.d.ts +50 -0
- package/core/utils/{parsing.js → parsing.ts} +50 -50
- package/core/utils/rect.d.ts +38 -0
- package/core/utils/{rect.js → rect.ts} +18 -31
- package/core/utils/sentinel.d.ts +11 -0
- package/core/utils/{sentinel.js → sentinel.ts} +3 -5
- package/core/utils/size.d.ts +27 -0
- package/core/utils/{size.js → size.ts} +12 -26
- package/core/utils/string.d.ts +55 -0
- package/core/utils/{string.js → string.ts} +64 -61
- package/core/utils/style.d.ts +127 -0
- package/core/utils/{style.js → style.ts} +102 -92
- package/core/utils/svg.d.ts +68 -0
- package/core/utils/svg.ts +88 -0
- package/core/utils/svg_math.d.ts +70 -0
- package/core/utils/{svg_math.js → svg_math.ts} +72 -71
- package/core/utils/svg_paths.d.ts +101 -0
- package/core/utils/{svg_paths.js → svg_paths.ts} +56 -65
- package/core/utils/toolbox.d.ts +193 -0
- package/core/utils/toolbox.ts +433 -0
- package/core/utils/useragent.d.ts +33 -0
- package/core/utils/useragent.ts +135 -0
- package/core/utils/xml.d.ts +52 -0
- package/core/utils/{xml.js → xml.ts} +26 -36
- package/core/utils.d.ts +217 -0
- package/core/utils.ts +428 -0
- package/core/variable_map.d.ts +141 -0
- package/core/{variable_map.js → variable_map.ts} +131 -149
- package/core/variable_model.d.ts +40 -0
- package/core/variable_model.ts +82 -0
- package/core/variables.d.ts +181 -0
- package/core/{variables.js → variables.ts} +206 -188
- package/core/variables_dynamic.d.ts +38 -0
- package/core/{variables_dynamic.js → variables_dynamic.ts} +47 -43
- package/core/warning.d.ts +50 -0
- package/core/{warning.js → warning.ts} +52 -66
- package/core/widgetdiv.d.ts +69 -0
- package/core/widgetdiv.ts +257 -0
- package/core/workspace.d.ts +386 -0
- package/core/workspace.ts +801 -0
- package/core/workspace_audio.d.ts +47 -0
- package/core/{workspace_audio.js → workspace_audio.ts} +47 -60
- package/core/workspace_comment.d.ts +170 -0
- package/core/workspace_comment.ts +398 -0
- package/core/workspace_comment_svg.d.ts +329 -0
- package/core/{workspace_comment_svg.js → workspace_comment_svg.ts} +347 -444
- package/core/workspace_drag_surface_svg.d.ts +68 -0
- package/core/{workspace_drag_surface_svg.js → workspace_drag_surface_svg.ts} +75 -82
- package/core/workspace_dragger.d.ts +48 -0
- package/core/workspace_dragger.ts +104 -0
- package/core/workspace_svg.d.ts +920 -0
- package/core/{workspace_svg.js → workspace_svg.ts} +855 -935
- package/core/xml.d.ts +117 -0
- package/core/{xml.js → xml.ts} +306 -326
- package/core/zoom_controls.d.ts +130 -0
- package/core/{zoom_controls.js → zoom_controls.ts} +185 -251
- package/core.d.ts +1 -3
- package/core.js +1 -2
- package/dart.d.ts +0 -3
- package/dart_compressed.js +387 -99
- package/dart_compressed.js.map +1 -1
- package/generators/dart/all.js +2 -0
- package/generators/dart/colour.js +1 -1
- package/generators/dart/lists.js +1 -1
- package/generators/dart/logic.js +1 -1
- package/generators/dart/loops.js +1 -1
- package/generators/dart/math.js +1 -1
- package/generators/dart/procedures.js +1 -1
- package/generators/dart/text.js +1 -1
- package/generators/dart/variables.js +1 -1
- package/generators/dart/variables_dynamic.js +1 -1
- package/generators/dart.js +1 -2
- package/generators/javascript/all.js +2 -0
- package/generators/javascript/colour.js +1 -1
- package/generators/javascript/lists.js +1 -1
- package/generators/javascript/logic.js +1 -1
- package/generators/javascript/loops.js +1 -1
- package/generators/javascript/math.js +4 -4
- package/generators/javascript/procedures.js +1 -1
- package/generators/javascript/text.js +2 -2
- package/generators/javascript/variables.js +1 -1
- package/generators/javascript/variables_dynamic.js +1 -1
- package/generators/javascript.js +1 -3
- package/generators/lua/all.js +2 -0
- package/generators/lua/colour.js +1 -1
- package/generators/lua/lists.js +1 -1
- package/generators/lua/logic.js +1 -1
- package/generators/lua/loops.js +1 -1
- package/generators/lua/math.js +1 -1
- package/generators/lua/procedures.js +1 -1
- package/generators/lua/text.js +1 -1
- package/generators/lua/variables.js +1 -1
- package/generators/lua/variables_dynamic.js +1 -1
- package/generators/lua.js +1 -2
- package/generators/php/all.js +2 -0
- package/generators/php/colour.js +1 -1
- package/generators/php/lists.js +1 -2
- package/generators/php/logic.js +1 -1
- package/generators/php/loops.js +1 -1
- package/generators/php/math.js +1 -1
- package/generators/php/procedures.js +1 -1
- package/generators/php/text.js +1 -1
- package/generators/php/variables.js +1 -1
- package/generators/php/variables_dynamic.js +1 -1
- package/generators/php.js +1 -2
- package/generators/python/all.js +2 -0
- package/generators/python/colour.js +3 -3
- package/generators/python/lists.js +1 -1
- package/generators/python/logic.js +1 -1
- package/generators/python/loops.js +4 -7
- package/generators/python/math.js +1 -1
- package/generators/python/procedures.js +1 -1
- package/generators/python/text.js +1 -1
- package/generators/python/variables.js +1 -1
- package/generators/python/variables_dynamic.js +1 -1
- package/generators/python.js +1 -2
- package/index.d.ts +2 -8
- package/javascript.d.ts +0 -3
- package/javascript_compressed.js +314 -104
- package/javascript_compressed.js.map +1 -1
- package/lua.d.ts +0 -3
- package/lua_compressed.js +399 -81
- package/lua_compressed.js.map +1 -1
- package/package.json +5 -5
- package/php.d.ts +0 -3
- package/php_compressed.js +322 -93
- package/php_compressed.js.map +1 -1
- package/python.d.ts +0 -3
- package/python_compressed.js +237 -90
- package/python_compressed.js.map +1 -1
- package/blockly.d.ts +0 -26127
- package/core/blockly_options.js +0 -28
- package/core/bubble_dragger.js +0 -298
- package/core/clipboard.js +0 -80
- package/core/component_manager.js +0 -263
- package/core/contextmenu_items.js +0 -651
- package/core/contextmenu_registry.js +0 -178
- package/core/delete_area.js +0 -87
- package/core/dialog.js +0 -107
- package/core/drag_target.js +0 -98
- package/core/events/events.js +0 -147
- package/core/events/events_abstract.js +0 -133
- package/core/events/events_block_base.js +0 -70
- package/core/events/events_block_drag.js +0 -89
- package/core/events/events_bubble_open.js +0 -90
- package/core/events/events_comment_base.js +0 -121
- package/core/events/events_marker_move.js +0 -110
- package/core/events/events_selected.js +0 -83
- package/core/events/events_toolbox_item_select.js +0 -84
- package/core/events/events_trashcan_open.js +0 -73
- package/core/events/events_var_base.js +0 -70
- package/core/events/events_viewport.js +0 -107
- package/core/events/workspace_events.js +0 -93
- package/core/field_angle.js +0 -591
- package/core/field_checkbox.js +0 -255
- package/core/field_colour.js +0 -717
- package/core/field_image.js +0 -304
- package/core/field_label.js +0 -149
- package/core/field_label_serializable.js +0 -80
- package/core/field_textinput.js +0 -619
- package/core/flyout_button.js +0 -356
- package/core/grid.js +0 -226
- package/core/icon.js +0 -225
- package/core/input.js +0 -335
- package/core/interfaces/i_ast_node_location_svg.js +0 -45
- package/core/interfaces/i_ast_node_location_with_block.js +0 -41
- package/core/interfaces/i_autohideable.js +0 -40
- package/core/interfaces/i_block_dragger.js +0 -66
- package/core/interfaces/i_bounded_element.js +0 -45
- package/core/interfaces/i_bubble.js +0 -95
- package/core/interfaces/i_collapsible_toolbox_item.js +0 -53
- package/core/interfaces/i_connection_checker.js +0 -104
- package/core/interfaces/i_contextmenu.js +0 -32
- package/core/interfaces/i_copyable.js +0 -49
- package/core/interfaces/i_delete_area.js +0 -50
- package/core/interfaces/i_drag_target.js +0 -88
- package/core/interfaces/i_flyout.js +0 -201
- package/core/interfaces/i_keyboard_accessible.js +0 -38
- package/core/interfaces/i_metrics_manager.js +0 -154
- package/core/interfaces/i_positionable.js +0 -51
- package/core/interfaces/i_selectable.js +0 -51
- package/core/interfaces/i_selectable_toolbox_item.js +0 -73
- package/core/interfaces/i_serializer.js +0 -77
- package/core/interfaces/i_styleable.js +0 -39
- package/core/interfaces/i_toolbox.js +0 -142
- package/core/interfaces/i_toolbox_item.js +0 -85
- package/core/marker_manager.js +0 -213
- package/core/menuitem.js +0 -292
- package/core/names.js +0 -293
- package/core/registry.js +0 -384
- package/core/renderers/common/block_rendering.js +0 -170
- package/core/renderers/common/constants.js +0 -1250
- package/core/renderers/common/i_path_object.js +0 -162
- package/core/renderers/common/marker_svg.js +0 -721
- package/core/renderers/common/path_object.js +0 -283
- package/core/renderers/common/renderer.js +0 -305
- package/core/renderers/geras/constants.js +0 -73
- package/core/renderers/geras/geras.js +0 -36
- package/core/renderers/geras/measurables/inline_input.js +0 -58
- package/core/renderers/geras/measurables/statement_input.js +0 -57
- package/core/renderers/geras/renderer.js +0 -149
- package/core/renderers/measurables/base.js +0 -64
- package/core/renderers/measurables/bottom_row.js +0 -138
- package/core/renderers/measurables/connection.js +0 -56
- package/core/renderers/measurables/external_value_input.js +0 -70
- package/core/renderers/measurables/field.js +0 -71
- package/core/renderers/measurables/in_row_spacer.js +0 -47
- package/core/renderers/measurables/input_connection.js +0 -75
- package/core/renderers/measurables/next_connection.js +0 -50
- package/core/renderers/measurables/output_connection.js +0 -61
- package/core/renderers/measurables/previous_connection.js +0 -50
- package/core/renderers/measurables/round_corner.js +0 -52
- package/core/renderers/measurables/row.js +0 -247
- package/core/renderers/measurables/spacer_row.js +0 -69
- package/core/renderers/measurables/square_corner.js +0 -50
- package/core/renderers/measurables/top_row.js +0 -143
- package/core/renderers/measurables/types.js +0 -353
- package/core/renderers/minimalist/drawer.js +0 -42
- package/core/renderers/minimalist/info.js +0 -54
- package/core/renderers/minimalist/minimalist.js +0 -26
- package/core/renderers/minimalist/renderer.js +0 -80
- package/core/renderers/thrasos/renderer.js +0 -53
- package/core/renderers/thrasos/thrasos.js +0 -22
- package/core/renderers/zelos/marker_svg.js +0 -179
- package/core/renderers/zelos/measurables/bottom_row.js +0 -66
- package/core/renderers/zelos/measurables/row_elements.js +0 -46
- package/core/renderers/zelos/path_object.js +0 -247
- package/core/renderers/zelos/renderer.js +0 -147
- package/core/renderers/zelos/zelos.js +0 -38
- package/core/serialization/exceptions.js +0 -144
- package/core/shortcut_registry.js +0 -366
- package/core/theme/themes.js +0 -23
- package/core/theme.js +0 -228
- package/core/theme_manager.js +0 -211
- package/core/toolbox/category.js +0 -751
- package/core/toolbox/collapsible_category.js +0 -311
- package/core/toolbox/separator.js +0 -133
- package/core/toolbox/toolbox_item.js +0 -173
- package/core/touch.js +0 -285
- package/core/utils/coordinate.js +0 -138
- package/core/utils/global.js +0 -41
- package/core/utils/keycodes.js +0 -172
- package/core/utils/metrics.js +0 -154
- package/core/utils/svg.js +0 -186
- package/core/utils/toolbox.js +0 -459
- package/core/utils/useragent.js +0 -197
- package/core/utils.js +0 -383
- package/core/variable_model.js +0 -96
- package/core/widgetdiv.js +0 -290
- package/core/workspace.js +0 -836
- package/core/workspace_comment.js +0 -400
- package/core/workspace_dragger.js +0 -115
|
@@ -7,54 +7,57 @@
|
|
|
7
7
|
/**
|
|
8
8
|
* @fileoverview Layout code for a vertical variant of the flyout.
|
|
9
9
|
*/
|
|
10
|
-
'use strict';
|
|
11
10
|
|
|
12
11
|
/**
|
|
13
12
|
* Layout code for a vertical variant of the flyout.
|
|
14
13
|
* @class
|
|
15
14
|
*/
|
|
16
|
-
goog
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
15
|
+
import * as goog from '../closure/goog/goog.js';
|
|
16
|
+
goog.declareModuleId('Blockly.VerticalFlyout');
|
|
17
|
+
|
|
18
|
+
// Unused import preserved for side-effects. Remove if unneeded.
|
|
19
|
+
// import './block.js';
|
|
20
|
+
// Unused import preserved for side-effects. Remove if unneeded.
|
|
21
|
+
// import './constants.js';
|
|
22
|
+
|
|
23
|
+
import * as browserEvents from './browser_events.js';
|
|
24
|
+
import * as dropDownDiv from './dropdowndiv.js';
|
|
25
|
+
import {Flyout, FlyoutItem} from './flyout_base.js';
|
|
26
|
+
import type {FlyoutButton} from './flyout_button.js';
|
|
27
|
+
import type {Options} from './options.js';
|
|
28
|
+
import * as registry from './registry.js';
|
|
29
|
+
import {Scrollbar} from './scrollbar.js';
|
|
30
|
+
import type {Coordinate} from './utils/coordinate.js';
|
|
31
|
+
import {Rect} from './utils/rect.js';
|
|
32
|
+
import * as toolbox from './utils/toolbox.js';
|
|
33
|
+
import * as WidgetDiv from './widgetdiv.js';
|
|
34
34
|
|
|
35
35
|
|
|
36
36
|
/**
|
|
37
37
|
* Class for a flyout.
|
|
38
|
-
* @extends {Flyout}
|
|
39
38
|
* @alias Blockly.VerticalFlyout
|
|
40
39
|
*/
|
|
41
|
-
class VerticalFlyout extends Flyout {
|
|
42
|
-
/**
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
40
|
+
export class VerticalFlyout extends Flyout {
|
|
41
|
+
/** The name of the vertical flyout in the registry. */
|
|
42
|
+
static registryName = 'verticalFlyout';
|
|
43
|
+
|
|
44
|
+
// Record the height for workspace metrics.
|
|
45
|
+
override height_: AnyDuringMigration;
|
|
46
|
+
|
|
47
|
+
// Record the width for workspace metrics and .position.
|
|
48
|
+
override width_: AnyDuringMigration;
|
|
49
|
+
|
|
50
|
+
/** @param workspaceOptions Dictionary of options for the workspace. */
|
|
51
|
+
constructor(workspaceOptions: Options) {
|
|
47
52
|
super(workspaceOptions);
|
|
48
53
|
}
|
|
49
54
|
|
|
50
55
|
/**
|
|
51
56
|
* Sets the translation of the flyout to match the scrollbars.
|
|
52
|
-
* @param
|
|
53
|
-
*
|
|
54
|
-
* x property.
|
|
55
|
-
* @protected
|
|
57
|
+
* @param xyRatio Contains a y property which is a float between 0 and 1
|
|
58
|
+
* specifying the degree of scrolling and a similar x property.
|
|
56
59
|
*/
|
|
57
|
-
setMetrics_(xyRatio) {
|
|
60
|
+
protected override setMetrics_(xyRatio: {x: number, y: number}) {
|
|
58
61
|
if (!this.isVisible()) {
|
|
59
62
|
return;
|
|
60
63
|
}
|
|
@@ -75,28 +78,29 @@ class VerticalFlyout extends Flyout {
|
|
|
75
78
|
|
|
76
79
|
/**
|
|
77
80
|
* Calculates the x coordinate for the flyout position.
|
|
78
|
-
* @return
|
|
81
|
+
* @return X coordinate.
|
|
79
82
|
*/
|
|
80
|
-
getX() {
|
|
83
|
+
override getX(): number {
|
|
81
84
|
if (!this.isVisible()) {
|
|
82
85
|
return 0;
|
|
83
86
|
}
|
|
84
|
-
const metricsManager = this.targetWorkspace
|
|
87
|
+
const metricsManager = this.targetWorkspace!.getMetricsManager();
|
|
85
88
|
const absoluteMetrics = metricsManager.getAbsoluteMetrics();
|
|
86
89
|
const viewMetrics = metricsManager.getViewMetrics();
|
|
87
90
|
const toolboxMetrics = metricsManager.getToolboxMetrics();
|
|
88
91
|
let x = 0;
|
|
89
92
|
|
|
90
93
|
// If this flyout is not the trashcan flyout (e.g. toolbox or mutator).
|
|
91
|
-
|
|
94
|
+
// Trashcan flyout is opposite the main flyout.
|
|
95
|
+
if (this.targetWorkspace!.toolboxPosition === this.toolboxPosition_) {
|
|
92
96
|
// If there is a category toolbox.
|
|
93
|
-
|
|
97
|
+
// Simple (flyout-only) toolbox.
|
|
98
|
+
if (this.targetWorkspace!.getToolbox()) {
|
|
94
99
|
if (this.toolboxPosition_ === toolbox.Position.LEFT) {
|
|
95
100
|
x = toolboxMetrics.width;
|
|
96
101
|
} else {
|
|
97
102
|
x = viewMetrics.width - this.width_;
|
|
98
103
|
}
|
|
99
|
-
// Simple (flyout-only) toolbox.
|
|
100
104
|
} else {
|
|
101
105
|
if (this.toolboxPosition_ === toolbox.Position.LEFT) {
|
|
102
106
|
x = 0;
|
|
@@ -105,7 +109,6 @@ class VerticalFlyout extends Flyout {
|
|
|
105
109
|
x = viewMetrics.width;
|
|
106
110
|
}
|
|
107
111
|
}
|
|
108
|
-
// Trashcan flyout is opposite the main flyout.
|
|
109
112
|
} else {
|
|
110
113
|
if (this.toolboxPosition_ === toolbox.Position.LEFT) {
|
|
111
114
|
x = 0;
|
|
@@ -123,24 +126,20 @@ class VerticalFlyout extends Flyout {
|
|
|
123
126
|
|
|
124
127
|
/**
|
|
125
128
|
* Calculates the y coordinate for the flyout position.
|
|
126
|
-
* @return
|
|
129
|
+
* @return Y coordinate.
|
|
127
130
|
*/
|
|
128
|
-
getY() {
|
|
131
|
+
override getY(): number {
|
|
129
132
|
// Y is always 0 since this is a vertical flyout.
|
|
130
133
|
return 0;
|
|
131
134
|
}
|
|
132
135
|
|
|
133
|
-
/**
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
position() {
|
|
137
|
-
if (!this.isVisible() || !this.targetWorkspace.isVisible()) {
|
|
136
|
+
/** Move the flyout to the edge of the workspace. */
|
|
137
|
+
override position() {
|
|
138
|
+
if (!this.isVisible() || !this.targetWorkspace!.isVisible()) {
|
|
138
139
|
return;
|
|
139
140
|
}
|
|
140
|
-
const metricsManager = this.targetWorkspace
|
|
141
|
+
const metricsManager = this.targetWorkspace!.getMetricsManager();
|
|
141
142
|
const targetWorkspaceViewMetrics = metricsManager.getViewMetrics();
|
|
142
|
-
|
|
143
|
-
// Record the height for workspace metrics.
|
|
144
143
|
this.height_ = targetWorkspaceViewMetrics.height;
|
|
145
144
|
|
|
146
145
|
const edgeWidth = this.width_ - this.CORNER_RADIUS;
|
|
@@ -156,20 +155,18 @@ class VerticalFlyout extends Flyout {
|
|
|
156
155
|
|
|
157
156
|
/**
|
|
158
157
|
* Create and set the path for the visible boundaries of the flyout.
|
|
159
|
-
* @param
|
|
160
|
-
*
|
|
161
|
-
* @param {number} height The height of the flyout, not including
|
|
162
|
-
* rounded corners.
|
|
163
|
-
* @private
|
|
158
|
+
* @param width The width of the flyout, not including the rounded corners.
|
|
159
|
+
* @param height The height of the flyout, not including rounded corners.
|
|
164
160
|
*/
|
|
165
|
-
setBackgroundPath_(width, height) {
|
|
161
|
+
private setBackgroundPath_(width: number, height: number) {
|
|
166
162
|
const atRight = this.toolboxPosition_ === toolbox.Position.RIGHT;
|
|
167
163
|
const totalWidth = width + this.CORNER_RADIUS;
|
|
168
164
|
|
|
169
165
|
// Decide whether to start on the left or right.
|
|
170
|
-
const path
|
|
166
|
+
const path: Array<string|number> =
|
|
167
|
+
['M ' + (atRight ? totalWidth : 0) + ',0'];
|
|
171
168
|
// Top.
|
|
172
|
-
path.push('h', atRight ? -width : width);
|
|
169
|
+
path.push('h', (atRight ? -width : width));
|
|
173
170
|
// Rounded corner.
|
|
174
171
|
path.push(
|
|
175
172
|
'a', this.CORNER_RADIUS, this.CORNER_RADIUS, 0, 0, atRight ? 0 : 1,
|
|
@@ -181,31 +178,28 @@ class VerticalFlyout extends Flyout {
|
|
|
181
178
|
'a', this.CORNER_RADIUS, this.CORNER_RADIUS, 0, 0, atRight ? 0 : 1,
|
|
182
179
|
atRight ? this.CORNER_RADIUS : -this.CORNER_RADIUS, this.CORNER_RADIUS);
|
|
183
180
|
// Bottom.
|
|
184
|
-
path.push('h', atRight ? width : -width);
|
|
181
|
+
path.push('h', (atRight ? width : -width));
|
|
185
182
|
path.push('z');
|
|
186
|
-
this.svgBackground_
|
|
183
|
+
this.svgBackground_!.setAttribute('d', path.join(' '));
|
|
187
184
|
}
|
|
188
185
|
|
|
189
|
-
/**
|
|
190
|
-
|
|
191
|
-
*/
|
|
192
|
-
scrollToStart() {
|
|
186
|
+
/** Scroll the flyout to the top. */
|
|
187
|
+
override scrollToStart() {
|
|
193
188
|
this.workspace_.scrollbar.setY(0);
|
|
194
189
|
}
|
|
195
190
|
|
|
196
191
|
/**
|
|
197
192
|
* Scroll the flyout.
|
|
198
|
-
* @param
|
|
199
|
-
* @protected
|
|
193
|
+
* @param e Mouse wheel scroll event.
|
|
200
194
|
*/
|
|
201
|
-
wheel_(e) {
|
|
195
|
+
protected override wheel_(e: WheelEvent) {
|
|
202
196
|
const scrollDelta = browserEvents.getScrollDeltaPixels(e);
|
|
203
197
|
|
|
204
198
|
if (scrollDelta.y) {
|
|
205
199
|
const metricsManager = this.workspace_.getMetricsManager();
|
|
206
200
|
const scrollMetrics = metricsManager.getScrollMetrics();
|
|
207
201
|
const viewMetrics = metricsManager.getViewMetrics();
|
|
208
|
-
const pos =
|
|
202
|
+
const pos = viewMetrics.top - scrollMetrics.top + scrollDelta.y;
|
|
209
203
|
|
|
210
204
|
this.workspace_.scrollbar.setY(pos);
|
|
211
205
|
// When the flyout moves from a wheel event, hide WidgetDiv and
|
|
@@ -213,7 +207,6 @@ class VerticalFlyout extends Flyout {
|
|
|
213
207
|
WidgetDiv.hide();
|
|
214
208
|
dropDownDiv.hideWithoutAnimation();
|
|
215
209
|
}
|
|
216
|
-
|
|
217
210
|
// Don't scroll the page.
|
|
218
211
|
e.preventDefault();
|
|
219
212
|
// Don't propagate mousewheel event (zooming).
|
|
@@ -222,43 +215,47 @@ class VerticalFlyout extends Flyout {
|
|
|
222
215
|
|
|
223
216
|
/**
|
|
224
217
|
* Lay out the blocks in the flyout.
|
|
225
|
-
* @param
|
|
226
|
-
* @param
|
|
227
|
-
* @protected
|
|
218
|
+
* @param contents The blocks and buttons to lay out.
|
|
219
|
+
* @param gaps The visible gaps between blocks.
|
|
228
220
|
*/
|
|
229
|
-
layout_(contents, gaps) {
|
|
230
|
-
this.workspace_.scale = this.targetWorkspace
|
|
221
|
+
protected override layout_(contents: FlyoutItem[], gaps: number[]) {
|
|
222
|
+
this.workspace_.scale = this.targetWorkspace!.scale;
|
|
231
223
|
const margin = this.MARGIN;
|
|
232
224
|
const cursorX = this.RTL ? margin : margin + this.tabWidth_;
|
|
233
225
|
let cursorY = margin;
|
|
234
226
|
|
|
235
|
-
for (let i = 0, item;
|
|
227
|
+
for (let i = 0, item; item = contents[i]; i++) {
|
|
236
228
|
if (item.type === 'block') {
|
|
237
229
|
const block = item.block;
|
|
238
|
-
const allBlocks = block
|
|
239
|
-
for (let j = 0, child;
|
|
230
|
+
const allBlocks = block!.getDescendants(false);
|
|
231
|
+
for (let j = 0, child; child = allBlocks[j]; j++) {
|
|
240
232
|
// Mark blocks as being inside a flyout. This is used to detect and
|
|
241
233
|
// prevent the closure of the flyout if the user right-clicks on such
|
|
242
234
|
// a block.
|
|
243
235
|
child.isInFlyout = true;
|
|
244
236
|
}
|
|
245
|
-
block
|
|
246
|
-
const root = block
|
|
247
|
-
const blockHW = block
|
|
237
|
+
block!.render();
|
|
238
|
+
const root = block!.getSvgRoot();
|
|
239
|
+
const blockHW = block!.getHeightWidth();
|
|
248
240
|
const moveX =
|
|
249
|
-
block
|
|
250
|
-
block
|
|
241
|
+
block!.outputConnection ? cursorX - this.tabWidth_ : cursorX;
|
|
242
|
+
block!.moveBy(moveX, cursorY);
|
|
251
243
|
|
|
244
|
+
// AnyDuringMigration because: Argument of type 'BlockSvg | undefined'
|
|
245
|
+
// is not assignable to parameter of type 'BlockSvg'.
|
|
252
246
|
const rect = this.createRect_(
|
|
253
|
-
block
|
|
254
|
-
i);
|
|
247
|
+
block as AnyDuringMigration,
|
|
248
|
+
this.RTL ? moveX - blockHW.width : moveX, cursorY, blockHW, i);
|
|
255
249
|
|
|
256
|
-
|
|
250
|
+
// AnyDuringMigration because: Argument of type 'BlockSvg | undefined'
|
|
251
|
+
// is not assignable to parameter of type 'BlockSvg'.
|
|
252
|
+
this.addBlockListeners_(root, block as AnyDuringMigration, rect);
|
|
257
253
|
|
|
258
254
|
cursorY += blockHW.height + gaps[i];
|
|
259
255
|
} else if (item.type === 'button') {
|
|
260
|
-
|
|
261
|
-
|
|
256
|
+
const button = item.button as FlyoutButton;
|
|
257
|
+
this.initFlyoutButton_(button, cursorX, cursorY);
|
|
258
|
+
cursorY += button.height + gaps[i];
|
|
262
259
|
}
|
|
263
260
|
}
|
|
264
261
|
}
|
|
@@ -267,12 +264,12 @@ class VerticalFlyout extends Flyout {
|
|
|
267
264
|
* Determine if a drag delta is toward the workspace, based on the position
|
|
268
265
|
* and orientation of the flyout. This is used in determineDragIntention_ to
|
|
269
266
|
* determine if a new block should be created or if the flyout should scroll.
|
|
270
|
-
* @param
|
|
271
|
-
*
|
|
272
|
-
* @return
|
|
273
|
-
* @
|
|
267
|
+
* @param currentDragDeltaXY How far the pointer has moved from the position
|
|
268
|
+
* at mouse down, in pixel units.
|
|
269
|
+
* @return True if the drag is toward the workspace.
|
|
270
|
+
* @internal
|
|
274
271
|
*/
|
|
275
|
-
isDragTowardWorkspace(currentDragDeltaXY) {
|
|
272
|
+
override isDragTowardWorkspace(currentDragDeltaXY: Coordinate): boolean {
|
|
276
273
|
const dx = currentDragDeltaXY.x;
|
|
277
274
|
const dy = currentDragDeltaXY.y;
|
|
278
275
|
// Direction goes from -180 to 180, with 0 toward the right and 90 on top.
|
|
@@ -280,7 +277,7 @@ class VerticalFlyout extends Flyout {
|
|
|
280
277
|
|
|
281
278
|
const range = this.dragAngleRange_;
|
|
282
279
|
// Check for left or right dragging.
|
|
283
|
-
if (
|
|
280
|
+
if (dragDirection < range && dragDirection > -range ||
|
|
284
281
|
(dragDirection < -180 + range || dragDirection > 180 - range)) {
|
|
285
282
|
return true;
|
|
286
283
|
}
|
|
@@ -290,10 +287,10 @@ class VerticalFlyout extends Flyout {
|
|
|
290
287
|
/**
|
|
291
288
|
* Returns the bounding rectangle of the drag target area in pixel units
|
|
292
289
|
* relative to viewport.
|
|
293
|
-
* @return
|
|
294
|
-
*
|
|
290
|
+
* @return The component's bounding box. Null if drag target area should be
|
|
291
|
+
* ignored.
|
|
295
292
|
*/
|
|
296
|
-
getClientRect() {
|
|
293
|
+
override getClientRect(): Rect|null {
|
|
297
294
|
if (!this.svgGroup_ || this.autoClose || !this.isVisible()) {
|
|
298
295
|
// The bounding rectangle won't compute correctly if the flyout is closed
|
|
299
296
|
// and auto-close flyouts aren't valid drag targets (or delete areas).
|
|
@@ -319,20 +316,19 @@ class VerticalFlyout extends Flyout {
|
|
|
319
316
|
/**
|
|
320
317
|
* Compute width of flyout. toolbox.Position mat under each block.
|
|
321
318
|
* For RTL: Lay out the blocks and buttons to be right-aligned.
|
|
322
|
-
* @protected
|
|
323
319
|
*/
|
|
324
|
-
reflowInternal_() {
|
|
320
|
+
protected override reflowInternal_() {
|
|
325
321
|
this.workspace_.scale = this.getFlyoutScale();
|
|
326
322
|
let flyoutWidth = 0;
|
|
327
323
|
const blocks = this.workspace_.getTopBlocks(false);
|
|
328
|
-
for (let i = 0, block;
|
|
324
|
+
for (let i = 0, block; block = blocks[i]; i++) {
|
|
329
325
|
let width = block.getHeightWidth().width;
|
|
330
326
|
if (block.outputConnection) {
|
|
331
327
|
width -= this.tabWidth_;
|
|
332
328
|
}
|
|
333
329
|
flyoutWidth = Math.max(flyoutWidth, width);
|
|
334
330
|
}
|
|
335
|
-
for (let i = 0, button;
|
|
331
|
+
for (let i = 0, button; button = this.buttons_[i]; i++) {
|
|
336
332
|
flyoutWidth = Math.max(flyoutWidth, button.width);
|
|
337
333
|
}
|
|
338
334
|
flyoutWidth += this.MARGIN * 1.5 + this.tabWidth_;
|
|
@@ -340,7 +336,7 @@ class VerticalFlyout extends Flyout {
|
|
|
340
336
|
flyoutWidth += Scrollbar.scrollbarThickness;
|
|
341
337
|
|
|
342
338
|
if (this.width_ !== flyoutWidth) {
|
|
343
|
-
for (let i = 0, block;
|
|
339
|
+
for (let i = 0, block; block = blocks[i]; i++) {
|
|
344
340
|
if (this.RTL) {
|
|
345
341
|
// With the flyoutWidth known, right-align the blocks.
|
|
346
342
|
const oldX = block.getRelativeToSurfaceXY().x;
|
|
@@ -351,12 +347,15 @@ class VerticalFlyout extends Flyout {
|
|
|
351
347
|
block.moveBy(newX - oldX, 0);
|
|
352
348
|
}
|
|
353
349
|
if (this.rectMap_.has(block)) {
|
|
354
|
-
|
|
350
|
+
// AnyDuringMigration because: Argument of type 'SVGElement |
|
|
351
|
+
// undefined' is not assignable to parameter of type 'SVGElement'.
|
|
352
|
+
this.moveRectToBlock_(
|
|
353
|
+
this.rectMap_.get(block) as AnyDuringMigration, block);
|
|
355
354
|
}
|
|
356
355
|
}
|
|
357
356
|
if (this.RTL) {
|
|
358
357
|
// With the flyoutWidth known, right-align the buttons.
|
|
359
|
-
for (let i = 0, button;
|
|
358
|
+
for (let i = 0, button; button = this.buttons_[i]; i++) {
|
|
360
359
|
const y = button.getPosition().y;
|
|
361
360
|
const x = flyoutWidth / this.workspace_.scale - button.width -
|
|
362
361
|
this.MARGIN - this.tabWidth_;
|
|
@@ -364,32 +363,22 @@ class VerticalFlyout extends Flyout {
|
|
|
364
363
|
}
|
|
365
364
|
}
|
|
366
365
|
|
|
367
|
-
if (this.targetWorkspace
|
|
366
|
+
if (this.targetWorkspace!.toolboxPosition === this.toolboxPosition_ &&
|
|
368
367
|
this.toolboxPosition_ === toolbox.Position.LEFT &&
|
|
369
|
-
!this.targetWorkspace
|
|
368
|
+
!this.targetWorkspace!.getToolbox()) {
|
|
370
369
|
// This flyout is a simple toolbox. Reposition the workspace so that
|
|
371
370
|
// (0,0) is in the correct position relative to the new absolute edge
|
|
372
371
|
// (ie toolbox edge).
|
|
373
|
-
this.targetWorkspace
|
|
374
|
-
this.targetWorkspace
|
|
375
|
-
this.targetWorkspace
|
|
372
|
+
this.targetWorkspace!.translate(
|
|
373
|
+
this.targetWorkspace!.scrollX + flyoutWidth,
|
|
374
|
+
this.targetWorkspace!.scrollY);
|
|
376
375
|
}
|
|
377
|
-
|
|
378
|
-
// Record the width for workspace metrics and .position.
|
|
379
376
|
this.width_ = flyoutWidth;
|
|
380
377
|
this.position();
|
|
381
|
-
this.targetWorkspace
|
|
378
|
+
this.targetWorkspace!.recordDragTargets();
|
|
382
379
|
}
|
|
383
380
|
}
|
|
384
381
|
}
|
|
385
382
|
|
|
386
|
-
/**
|
|
387
|
-
* The name of the vertical flyout in the registry.
|
|
388
|
-
* @type {string}
|
|
389
|
-
*/
|
|
390
|
-
VerticalFlyout.registryName = 'verticalFlyout';
|
|
391
|
-
|
|
392
383
|
registry.register(
|
|
393
384
|
registry.Type.FLYOUTS_VERTICAL_TOOLBOX, registry.DEFAULT, VerticalFlyout);
|
|
394
|
-
|
|
395
|
-
exports.VerticalFlyout = VerticalFlyout;
|
|
@@ -0,0 +1,205 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2012 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { Block } from './block.js';
|
|
7
|
+
import { Names } from './names.js';
|
|
8
|
+
import type { Workspace } from './workspace.js';
|
|
9
|
+
/**
|
|
10
|
+
* Class for a code generator that translates the blocks into a language.
|
|
11
|
+
* @unrestricted
|
|
12
|
+
* @alias Blockly.Generator
|
|
13
|
+
*/
|
|
14
|
+
export declare class Generator {
|
|
15
|
+
name_: any;
|
|
16
|
+
/**
|
|
17
|
+
* This is used as a placeholder in functions defined using
|
|
18
|
+
* Generator.provideFunction_. It must not be legal code that could
|
|
19
|
+
* legitimately appear in a function definition (or comment), and it must
|
|
20
|
+
* not confuse the regular expression parser.
|
|
21
|
+
*/
|
|
22
|
+
protected FUNCTION_NAME_PLACEHOLDER_: string;
|
|
23
|
+
FUNCTION_NAME_PLACEHOLDER_REGEXP_: any;
|
|
24
|
+
/**
|
|
25
|
+
* Arbitrary code to inject into locations that risk causing infinite loops.
|
|
26
|
+
* Any instances of '%1' will be replaced by the block ID that failed.
|
|
27
|
+
* E.g. ' checkTimeout(%1);\n'
|
|
28
|
+
*/
|
|
29
|
+
INFINITE_LOOP_TRAP: string | null;
|
|
30
|
+
/**
|
|
31
|
+
* Arbitrary code to inject before every statement.
|
|
32
|
+
* Any instances of '%1' will be replaced by the block ID of the statement.
|
|
33
|
+
* E.g. 'highlight(%1);\n'
|
|
34
|
+
*/
|
|
35
|
+
STATEMENT_PREFIX: string | null;
|
|
36
|
+
/**
|
|
37
|
+
* Arbitrary code to inject after every statement.
|
|
38
|
+
* Any instances of '%1' will be replaced by the block ID of the statement.
|
|
39
|
+
* E.g. 'highlight(%1);\n'
|
|
40
|
+
*/
|
|
41
|
+
STATEMENT_SUFFIX: string | null;
|
|
42
|
+
/**
|
|
43
|
+
* The method of indenting. Defaults to two spaces, but language generators
|
|
44
|
+
* may override this to increase indent or change to tabs.
|
|
45
|
+
*/
|
|
46
|
+
INDENT: string;
|
|
47
|
+
/**
|
|
48
|
+
* Maximum length for a comment before wrapping. Does not account for
|
|
49
|
+
* indenting level.
|
|
50
|
+
*/
|
|
51
|
+
COMMENT_WRAP: number;
|
|
52
|
+
/** List of outer-inner pairings that do NOT require parentheses. */
|
|
53
|
+
ORDER_OVERRIDES: number[][];
|
|
54
|
+
/**
|
|
55
|
+
* Whether the init method has been called.
|
|
56
|
+
* Generators that set this flag to false after creation and true in init
|
|
57
|
+
* will cause blockToCode to emit a warning if the generator has not been
|
|
58
|
+
* initialized. If this flag is untouched, it will have no effect.
|
|
59
|
+
*/
|
|
60
|
+
isInitialized: boolean | null;
|
|
61
|
+
/** Comma-separated list of reserved words. */
|
|
62
|
+
protected RESERVED_WORDS_: string;
|
|
63
|
+
/** A dictionary of definitions to be printed before the code. */
|
|
64
|
+
protected definitions_?: any;
|
|
65
|
+
/**
|
|
66
|
+
* A dictionary mapping desired function names in definitions_ to actual
|
|
67
|
+
* function names (to avoid collisions with user functions).
|
|
68
|
+
*/
|
|
69
|
+
protected functionNames_?: any;
|
|
70
|
+
/** A database of variable and procedure names. */
|
|
71
|
+
protected nameDB_?: Names;
|
|
72
|
+
/** @param name Language name of this generator. */
|
|
73
|
+
constructor(name: string);
|
|
74
|
+
/**
|
|
75
|
+
* Generate code for all blocks in the workspace to the specified language.
|
|
76
|
+
* @param workspace Workspace to generate code from.
|
|
77
|
+
* @return Generated code.
|
|
78
|
+
*/
|
|
79
|
+
workspaceToCode(workspace?: Workspace): string;
|
|
80
|
+
/**
|
|
81
|
+
* Prepend a common prefix onto each line of code.
|
|
82
|
+
* Intended for indenting code or adding comment markers.
|
|
83
|
+
* @param text The lines of code.
|
|
84
|
+
* @param prefix The common prefix.
|
|
85
|
+
* @return The prefixed lines of code.
|
|
86
|
+
*/
|
|
87
|
+
prefixLines(text: string, prefix: string): string;
|
|
88
|
+
/**
|
|
89
|
+
* Recursively spider a tree of blocks, returning all their comments.
|
|
90
|
+
* @param block The block from which to start spidering.
|
|
91
|
+
* @return Concatenated list of comments.
|
|
92
|
+
*/
|
|
93
|
+
allNestedComments(block: Block): string;
|
|
94
|
+
/**
|
|
95
|
+
* Generate code for the specified block (and attached blocks).
|
|
96
|
+
* The generator must be initialized before calling this function.
|
|
97
|
+
* @param block The block to generate code for.
|
|
98
|
+
* @param opt_thisOnly True to generate code for only this statement.
|
|
99
|
+
* @return For statement blocks, the generated code.
|
|
100
|
+
* For value blocks, an array containing the generated code and an
|
|
101
|
+
* operator order value. Returns '' if block is null.
|
|
102
|
+
*/
|
|
103
|
+
blockToCode(block: Block | null, opt_thisOnly?: boolean): string | any[];
|
|
104
|
+
/**
|
|
105
|
+
* Generate code representing the specified value input.
|
|
106
|
+
* @param block The block containing the input.
|
|
107
|
+
* @param name The name of the input.
|
|
108
|
+
* @param outerOrder The maximum binding strength (minimum order value) of any
|
|
109
|
+
* operators adjacent to "block".
|
|
110
|
+
* @return Generated code or '' if no blocks are connected or the specified
|
|
111
|
+
* input does not exist.
|
|
112
|
+
*/
|
|
113
|
+
valueToCode(block: Block, name: string, outerOrder: number): string;
|
|
114
|
+
/**
|
|
115
|
+
* Generate a code string representing the blocks attached to the named
|
|
116
|
+
* statement input. Indent the code.
|
|
117
|
+
* This is mainly used in generators. When trying to generate code to evaluate
|
|
118
|
+
* look at using workspaceToCode or blockToCode.
|
|
119
|
+
* @param block The block containing the input.
|
|
120
|
+
* @param name The name of the input.
|
|
121
|
+
* @return Generated code or '' if no blocks are connected.
|
|
122
|
+
*/
|
|
123
|
+
statementToCode(block: Block, name: string): string;
|
|
124
|
+
/**
|
|
125
|
+
* Add an infinite loop trap to the contents of a loop.
|
|
126
|
+
* Add statement suffix at the start of the loop block (right after the loop
|
|
127
|
+
* statement executes), and a statement prefix to the end of the loop block
|
|
128
|
+
* (right before the loop statement executes).
|
|
129
|
+
* @param branch Code for loop contents.
|
|
130
|
+
* @param block Enclosing block.
|
|
131
|
+
* @return Loop contents, with infinite loop trap added.
|
|
132
|
+
*/
|
|
133
|
+
addLoopTrap(branch: string, block: Block): string;
|
|
134
|
+
/**
|
|
135
|
+
* Inject a block ID into a message to replace '%1'.
|
|
136
|
+
* Used for STATEMENT_PREFIX, STATEMENT_SUFFIX, and INFINITE_LOOP_TRAP.
|
|
137
|
+
* @param msg Code snippet with '%1'.
|
|
138
|
+
* @param block Block which has an ID.
|
|
139
|
+
* @return Code snippet with ID.
|
|
140
|
+
*/
|
|
141
|
+
injectId(msg: string, block: Block): string;
|
|
142
|
+
/**
|
|
143
|
+
* Add one or more words to the list of reserved words for this language.
|
|
144
|
+
* @param words Comma-separated list of words to add to the list.
|
|
145
|
+
* No spaces. Duplicates are ok.
|
|
146
|
+
*/
|
|
147
|
+
addReservedWords(words: string): void;
|
|
148
|
+
/**
|
|
149
|
+
* Define a developer-defined function (not a user-defined procedure) to be
|
|
150
|
+
* included in the generated code. Used for creating private helper
|
|
151
|
+
* functions. The first time this is called with a given desiredName, the code
|
|
152
|
+
* is saved and an actual name is generated. Subsequent calls with the same
|
|
153
|
+
* desiredName have no effect but have the same return value.
|
|
154
|
+
*
|
|
155
|
+
* It is up to the caller to make sure the same desiredName is not
|
|
156
|
+
* used for different helper functions (e.g. use "colourRandom" and
|
|
157
|
+
* "listRandom", not "random"). There is no danger of colliding with reserved
|
|
158
|
+
* words, or user-defined variable or procedure names.
|
|
159
|
+
*
|
|
160
|
+
* The code gets output when Generator.finish() is called.
|
|
161
|
+
*
|
|
162
|
+
* @param desiredName The desired name of the function (e.g. mathIsPrime).
|
|
163
|
+
* @param code A list of statements or one multi-line code string. Use ' '
|
|
164
|
+
* for indents (they will be replaced).
|
|
165
|
+
* @return The actual name of the new function. This may differ from
|
|
166
|
+
* desiredName if the former has already been taken by the user.
|
|
167
|
+
*/
|
|
168
|
+
protected provideFunction_(desiredName: string, code: string[] | string): string;
|
|
169
|
+
/**
|
|
170
|
+
* Hook for code to run before code generation starts.
|
|
171
|
+
* Subclasses may override this, e.g. to initialise the database of variable
|
|
172
|
+
* names.
|
|
173
|
+
* @param _workspace Workspace to generate code from.
|
|
174
|
+
*/
|
|
175
|
+
init(_workspace: Workspace): void;
|
|
176
|
+
/**
|
|
177
|
+
* Common tasks for generating code from blocks. This is called from
|
|
178
|
+
* blockToCode and is called on every block, not just top level blocks.
|
|
179
|
+
* Subclasses may override this, e.g. to generate code for statements
|
|
180
|
+
* following the block, or to handle comments for the specified block and any
|
|
181
|
+
* connected value blocks.
|
|
182
|
+
* @param _block The current block.
|
|
183
|
+
* @param code The code created for this block.
|
|
184
|
+
* @param _opt_thisOnly True to generate code for only this statement.
|
|
185
|
+
* @return Code with comments and subsequent blocks added.
|
|
186
|
+
*/
|
|
187
|
+
protected scrub_(_block: Block, code: string, _opt_thisOnly?: boolean): string;
|
|
188
|
+
/**
|
|
189
|
+
* Hook for code to run at end of code generation.
|
|
190
|
+
* Subclasses may override this, e.g. to prepend the generated code with
|
|
191
|
+
* import statements or variable definitions.
|
|
192
|
+
* @param code Generated code.
|
|
193
|
+
* @return Completed code.
|
|
194
|
+
*/
|
|
195
|
+
finish(code: string): string;
|
|
196
|
+
/**
|
|
197
|
+
* Naked values are top-level blocks with outputs that aren't plugged into
|
|
198
|
+
* anything.
|
|
199
|
+
* Subclasses may override this, e.g. if their language does not allow
|
|
200
|
+
* naked values.
|
|
201
|
+
* @param line Line of generated code.
|
|
202
|
+
* @return Legal line of code.
|
|
203
|
+
*/
|
|
204
|
+
scrubNakedValue(line: string): string;
|
|
205
|
+
}
|