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
|
@@ -8,23 +8,20 @@
|
|
|
8
8
|
* @fileoverview Utility functions for generating executable code from
|
|
9
9
|
* Blockly code.
|
|
10
10
|
*/
|
|
11
|
-
'use strict';
|
|
12
11
|
|
|
13
12
|
/**
|
|
14
13
|
* Utility functions for generating executable code from
|
|
15
14
|
* Blockly code.
|
|
16
15
|
* @class
|
|
17
16
|
*/
|
|
18
|
-
goog
|
|
17
|
+
import * as goog from '../closure/goog/goog.js';
|
|
18
|
+
goog.declareModuleId('Blockly.Generator');
|
|
19
19
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
const {Names, NameType} = goog.require('Blockly.Names');
|
|
26
|
-
/* eslint-disable-next-line no-unused-vars */
|
|
27
|
-
const {Workspace} = goog.requireType('Blockly.Workspace');
|
|
20
|
+
import type {Block} from './block.js';
|
|
21
|
+
import * as common from './common.js';
|
|
22
|
+
import {Names, NameType} from './names.js';
|
|
23
|
+
import * as deprecation from './utils/deprecation.js';
|
|
24
|
+
import type {Workspace} from './workspace.js';
|
|
28
25
|
|
|
29
26
|
|
|
30
27
|
/**
|
|
@@ -32,115 +29,91 @@ const {Workspace} = goog.requireType('Blockly.Workspace');
|
|
|
32
29
|
* @unrestricted
|
|
33
30
|
* @alias Blockly.Generator
|
|
34
31
|
*/
|
|
35
|
-
class Generator {
|
|
32
|
+
export class Generator {
|
|
33
|
+
name_: AnyDuringMigration;
|
|
34
|
+
|
|
36
35
|
/**
|
|
37
|
-
*
|
|
36
|
+
* This is used as a placeholder in functions defined using
|
|
37
|
+
* Generator.provideFunction_. It must not be legal code that could
|
|
38
|
+
* legitimately appear in a function definition (or comment), and it must
|
|
39
|
+
* not confuse the regular expression parser.
|
|
38
40
|
*/
|
|
39
|
-
|
|
40
|
-
|
|
41
|
+
protected FUNCTION_NAME_PLACEHOLDER_ = '{leCUI8hutHZI4480Dc}';
|
|
42
|
+
FUNCTION_NAME_PLACEHOLDER_REGEXP_: AnyDuringMigration;
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Arbitrary code to inject into locations that risk causing infinite loops.
|
|
46
|
+
* Any instances of '%1' will be replaced by the block ID that failed.
|
|
47
|
+
* E.g. ' checkTimeout(%1);\n'
|
|
48
|
+
*/
|
|
49
|
+
INFINITE_LOOP_TRAP: string|null = null;
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* Arbitrary code to inject before every statement.
|
|
53
|
+
* Any instances of '%1' will be replaced by the block ID of the statement.
|
|
54
|
+
* E.g. 'highlight(%1);\n'
|
|
55
|
+
*/
|
|
56
|
+
STATEMENT_PREFIX: string|null = null;
|
|
41
57
|
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
58
|
+
/**
|
|
59
|
+
* Arbitrary code to inject after every statement.
|
|
60
|
+
* Any instances of '%1' will be replaced by the block ID of the statement.
|
|
61
|
+
* E.g. 'highlight(%1);\n'
|
|
62
|
+
*/
|
|
63
|
+
STATEMENT_SUFFIX: string|null = null;
|
|
64
|
+
|
|
65
|
+
/**
|
|
66
|
+
* The method of indenting. Defaults to two spaces, but language generators
|
|
67
|
+
* may override this to increase indent or change to tabs.
|
|
68
|
+
*/
|
|
69
|
+
INDENT = ' ';
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* Maximum length for a comment before wrapping. Does not account for
|
|
73
|
+
* indenting level.
|
|
74
|
+
*/
|
|
75
|
+
COMMENT_WRAP = 60;
|
|
76
|
+
|
|
77
|
+
/** List of outer-inner pairings that do NOT require parentheses. */
|
|
78
|
+
ORDER_OVERRIDES: number[][] = [];
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Whether the init method has been called.
|
|
82
|
+
* Generators that set this flag to false after creation and true in init
|
|
83
|
+
* will cause blockToCode to emit a warning if the generator has not been
|
|
84
|
+
* initialized. If this flag is untouched, it will have no effect.
|
|
85
|
+
*/
|
|
86
|
+
isInitialized: boolean|null = null;
|
|
87
|
+
|
|
88
|
+
/** Comma-separated list of reserved words. */
|
|
89
|
+
protected RESERVED_WORDS_ = '';
|
|
90
|
+
|
|
91
|
+
/** A dictionary of definitions to be printed before the code. */
|
|
92
|
+
protected definitions_?: AnyDuringMigration = undefined;
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* A dictionary mapping desired function names in definitions_ to actual
|
|
96
|
+
* function names (to avoid collisions with user functions).
|
|
97
|
+
*/
|
|
98
|
+
protected functionNames_?: AnyDuringMigration = undefined;
|
|
99
|
+
|
|
100
|
+
/** A database of variable and procedure names. */
|
|
101
|
+
protected nameDB_?: Names = undefined;
|
|
102
|
+
|
|
103
|
+
/** @param name Language name of this generator. */
|
|
104
|
+
constructor(name: string) {
|
|
105
|
+
this.name_ = name;
|
|
51
106
|
|
|
52
107
|
this.FUNCTION_NAME_PLACEHOLDER_REGEXP_ =
|
|
53
108
|
new RegExp(this.FUNCTION_NAME_PLACEHOLDER_, 'g');
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Arbitrary code to inject into locations that risk causing infinite loops.
|
|
57
|
-
* Any instances of '%1' will be replaced by the block ID that failed.
|
|
58
|
-
* E.g. ' checkTimeout(%1);\n'
|
|
59
|
-
* @type {?string}
|
|
60
|
-
*/
|
|
61
|
-
this.INFINITE_LOOP_TRAP = null;
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* Arbitrary code to inject before every statement.
|
|
65
|
-
* Any instances of '%1' will be replaced by the block ID of the statement.
|
|
66
|
-
* E.g. 'highlight(%1);\n'
|
|
67
|
-
* @type {?string}
|
|
68
|
-
*/
|
|
69
|
-
this.STATEMENT_PREFIX = null;
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
* Arbitrary code to inject after every statement.
|
|
73
|
-
* Any instances of '%1' will be replaced by the block ID of the statement.
|
|
74
|
-
* E.g. 'highlight(%1);\n'
|
|
75
|
-
* @type {?string}
|
|
76
|
-
*/
|
|
77
|
-
this.STATEMENT_SUFFIX = null;
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* The method of indenting. Defaults to two spaces, but language generators
|
|
81
|
-
* may override this to increase indent or change to tabs.
|
|
82
|
-
* @type {string}
|
|
83
|
-
*/
|
|
84
|
-
this.INDENT = ' ';
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
* Maximum length for a comment before wrapping. Does not account for
|
|
88
|
-
* indenting level.
|
|
89
|
-
* @type {number}
|
|
90
|
-
*/
|
|
91
|
-
this.COMMENT_WRAP = 60;
|
|
92
|
-
|
|
93
|
-
/**
|
|
94
|
-
* List of outer-inner pairings that do NOT require parentheses.
|
|
95
|
-
* @type {!Array<!Array<number>>}
|
|
96
|
-
*/
|
|
97
|
-
this.ORDER_OVERRIDES = [];
|
|
98
|
-
|
|
99
|
-
/**
|
|
100
|
-
* Whether the init method has been called.
|
|
101
|
-
* Generators that set this flag to false after creation and true in init
|
|
102
|
-
* will cause blockToCode to emit a warning if the generator has not been
|
|
103
|
-
* initialized. If this flag is untouched, it will have no effect.
|
|
104
|
-
* @type {?boolean}
|
|
105
|
-
*/
|
|
106
|
-
this.isInitialized = null;
|
|
107
|
-
|
|
108
|
-
/**
|
|
109
|
-
* Comma-separated list of reserved words.
|
|
110
|
-
* @type {string}
|
|
111
|
-
* @protected
|
|
112
|
-
*/
|
|
113
|
-
this.RESERVED_WORDS_ = '';
|
|
114
|
-
|
|
115
|
-
/**
|
|
116
|
-
* A dictionary of definitions to be printed before the code.
|
|
117
|
-
* @type {!Object|undefined}
|
|
118
|
-
* @protected
|
|
119
|
-
*/
|
|
120
|
-
this.definitions_ = undefined;
|
|
121
|
-
|
|
122
|
-
/**
|
|
123
|
-
* A dictionary mapping desired function names in definitions_ to actual
|
|
124
|
-
* function names (to avoid collisions with user functions).
|
|
125
|
-
* @type {!Object|undefined}
|
|
126
|
-
* @protected
|
|
127
|
-
*/
|
|
128
|
-
this.functionNames_ = undefined;
|
|
129
|
-
|
|
130
|
-
/**
|
|
131
|
-
* A database of variable and procedure names.
|
|
132
|
-
* @type {!Names|undefined}
|
|
133
|
-
* @protected
|
|
134
|
-
*/
|
|
135
|
-
this.nameDB_ = undefined;
|
|
136
109
|
}
|
|
137
110
|
|
|
138
111
|
/**
|
|
139
112
|
* Generate code for all blocks in the workspace to the specified language.
|
|
140
|
-
* @param
|
|
141
|
-
* @return
|
|
113
|
+
* @param workspace Workspace to generate code from.
|
|
114
|
+
* @return Generated code.
|
|
142
115
|
*/
|
|
143
|
-
workspaceToCode(workspace) {
|
|
116
|
+
workspaceToCode(workspace?: Workspace): string {
|
|
144
117
|
if (!workspace) {
|
|
145
118
|
// Backwards compatibility from before there could be multiple workspaces.
|
|
146
119
|
console.warn(
|
|
@@ -150,7 +123,7 @@ class Generator {
|
|
|
150
123
|
let code = [];
|
|
151
124
|
this.init(workspace);
|
|
152
125
|
const blocks = workspace.getTopBlocks(true);
|
|
153
|
-
for (let i = 0, block;
|
|
126
|
+
for (let i = 0, block; block = blocks[i]; i++) {
|
|
154
127
|
let line = this.blockToCode(block);
|
|
155
128
|
if (Array.isArray(line)) {
|
|
156
129
|
// Value blocks return tuples of code and operator order.
|
|
@@ -161,7 +134,9 @@ class Generator {
|
|
|
161
134
|
if (block.outputConnection) {
|
|
162
135
|
// This block is a naked value. Ask the language's code generator if
|
|
163
136
|
// it wants to append a semicolon, or something.
|
|
164
|
-
|
|
137
|
+
// AnyDuringMigration because: Argument of type 'string | any[]' is
|
|
138
|
+
// not assignable to parameter of type 'string'.
|
|
139
|
+
line = this.scrubNakedValue(line as AnyDuringMigration);
|
|
165
140
|
if (this.STATEMENT_PREFIX && !block.suppressPrefixSuffix) {
|
|
166
141
|
line = this.injectId(this.STATEMENT_PREFIX, block) + line;
|
|
167
142
|
}
|
|
@@ -172,10 +147,18 @@ class Generator {
|
|
|
172
147
|
code.push(line);
|
|
173
148
|
}
|
|
174
149
|
}
|
|
175
|
-
|
|
176
|
-
|
|
150
|
+
// AnyDuringMigration because: Type 'string' is not assignable to type
|
|
151
|
+
// 'any[]'.
|
|
152
|
+
// Blank line between each section.
|
|
153
|
+
code = code.join('\n') as AnyDuringMigration;
|
|
154
|
+
// AnyDuringMigration because: Argument of type 'any[]' is not assignable
|
|
155
|
+
// to parameter of type 'string'. AnyDuringMigration because: Type 'string'
|
|
156
|
+
// is not assignable to type 'any[]'.
|
|
157
|
+
code = this.finish(code as AnyDuringMigration) as AnyDuringMigration;
|
|
177
158
|
// Final scrubbing of whitespace.
|
|
178
|
-
|
|
159
|
+
// AnyDuringMigration because: Property 'replace' does not exist on type
|
|
160
|
+
// 'any[]'.
|
|
161
|
+
code = (code as AnyDuringMigration).replace(/^\s+\n/, '');
|
|
179
162
|
code = code.replace(/\n\s+$/, '\n');
|
|
180
163
|
code = code.replace(/[ \t]+\n/g, '\n');
|
|
181
164
|
return code;
|
|
@@ -188,20 +171,20 @@ class Generator {
|
|
|
188
171
|
/**
|
|
189
172
|
* Prepend a common prefix onto each line of code.
|
|
190
173
|
* Intended for indenting code or adding comment markers.
|
|
191
|
-
* @param
|
|
192
|
-
* @param
|
|
193
|
-
* @return
|
|
174
|
+
* @param text The lines of code.
|
|
175
|
+
* @param prefix The common prefix.
|
|
176
|
+
* @return The prefixed lines of code.
|
|
194
177
|
*/
|
|
195
|
-
prefixLines(text, prefix) {
|
|
178
|
+
prefixLines(text: string, prefix: string): string {
|
|
196
179
|
return prefix + text.replace(/(?!\n$)\n/g, '\n' + prefix);
|
|
197
180
|
}
|
|
198
181
|
|
|
199
182
|
/**
|
|
200
183
|
* Recursively spider a tree of blocks, returning all their comments.
|
|
201
|
-
* @param
|
|
202
|
-
* @return
|
|
184
|
+
* @param block The block from which to start spidering.
|
|
185
|
+
* @return Concatenated list of comments.
|
|
203
186
|
*/
|
|
204
|
-
allNestedComments(block) {
|
|
187
|
+
allNestedComments(block: Block): string {
|
|
205
188
|
const comments = [];
|
|
206
189
|
const blocks = block.getDescendants(true);
|
|
207
190
|
for (let i = 0; i < blocks.length; i++) {
|
|
@@ -220,14 +203,14 @@ class Generator {
|
|
|
220
203
|
/**
|
|
221
204
|
* Generate code for the specified block (and attached blocks).
|
|
222
205
|
* The generator must be initialized before calling this function.
|
|
223
|
-
* @param
|
|
224
|
-
* @param
|
|
225
|
-
*
|
|
226
|
-
* @return {string|!Array} For statement blocks, the generated code.
|
|
206
|
+
* @param block The block to generate code for.
|
|
207
|
+
* @param opt_thisOnly True to generate code for only this statement.
|
|
208
|
+
* @return For statement blocks, the generated code.
|
|
227
209
|
* For value blocks, an array containing the generated code and an
|
|
228
|
-
*
|
|
210
|
+
* operator order value. Returns '' if block is null.
|
|
229
211
|
*/
|
|
230
|
-
blockToCode(block, opt_thisOnly)
|
|
212
|
+
blockToCode(block: Block|null, opt_thisOnly?: boolean): string
|
|
213
|
+
|AnyDuringMigration[] {
|
|
231
214
|
if (this.isInitialized === false) {
|
|
232
215
|
console.warn(
|
|
233
216
|
'Generator init was not called before blockToCode was called.');
|
|
@@ -244,7 +227,7 @@ class Generator {
|
|
|
244
227
|
return opt_thisOnly ? '' : this.blockToCode(block.getChildren(false)[0]);
|
|
245
228
|
}
|
|
246
229
|
|
|
247
|
-
const func = this[block.type];
|
|
230
|
+
const func = (this as AnyDuringMigration)[block.type];
|
|
248
231
|
if (typeof func !== 'function') {
|
|
249
232
|
throw Error(
|
|
250
233
|
'Language "' + this.name_ + '" does not know how to generate ' +
|
|
@@ -279,14 +262,14 @@ class Generator {
|
|
|
279
262
|
|
|
280
263
|
/**
|
|
281
264
|
* Generate code representing the specified value input.
|
|
282
|
-
* @param
|
|
283
|
-
* @param
|
|
284
|
-
* @param
|
|
285
|
-
*
|
|
286
|
-
* @return
|
|
287
|
-
*
|
|
265
|
+
* @param block The block containing the input.
|
|
266
|
+
* @param name The name of the input.
|
|
267
|
+
* @param outerOrder The maximum binding strength (minimum order value) of any
|
|
268
|
+
* operators adjacent to "block".
|
|
269
|
+
* @return Generated code or '' if no blocks are connected or the specified
|
|
270
|
+
* input does not exist.
|
|
288
271
|
*/
|
|
289
|
-
valueToCode(block, name, outerOrder) {
|
|
272
|
+
valueToCode(block: Block, name: string, outerOrder: number): string {
|
|
290
273
|
if (isNaN(outerOrder)) {
|
|
291
274
|
throw TypeError('Expecting valid order from block: ' + block.type);
|
|
292
275
|
}
|
|
@@ -353,11 +336,11 @@ class Generator {
|
|
|
353
336
|
* statement input. Indent the code.
|
|
354
337
|
* This is mainly used in generators. When trying to generate code to evaluate
|
|
355
338
|
* look at using workspaceToCode or blockToCode.
|
|
356
|
-
* @param
|
|
357
|
-
* @param
|
|
358
|
-
* @return
|
|
339
|
+
* @param block The block containing the input.
|
|
340
|
+
* @param name The name of the input.
|
|
341
|
+
* @return Generated code or '' if no blocks are connected.
|
|
359
342
|
*/
|
|
360
|
-
statementToCode(block, name) {
|
|
343
|
+
statementToCode(block: Block, name: string): string {
|
|
361
344
|
const targetBlock = block.getInputTargetBlock(name);
|
|
362
345
|
let code = this.blockToCode(targetBlock);
|
|
363
346
|
// Value blocks must return code and order of operations info.
|
|
@@ -368,7 +351,7 @@ class Generator {
|
|
|
368
351
|
(targetBlock && targetBlock.type));
|
|
369
352
|
}
|
|
370
353
|
if (code) {
|
|
371
|
-
code = this.prefixLines(
|
|
354
|
+
code = this.prefixLines((code), this.INDENT);
|
|
372
355
|
}
|
|
373
356
|
return code;
|
|
374
357
|
}
|
|
@@ -378,11 +361,11 @@ class Generator {
|
|
|
378
361
|
* Add statement suffix at the start of the loop block (right after the loop
|
|
379
362
|
* statement executes), and a statement prefix to the end of the loop block
|
|
380
363
|
* (right before the loop statement executes).
|
|
381
|
-
* @param
|
|
382
|
-
* @param
|
|
383
|
-
* @return
|
|
364
|
+
* @param branch Code for loop contents.
|
|
365
|
+
* @param block Enclosing block.
|
|
366
|
+
* @return Loop contents, with infinite loop trap added.
|
|
384
367
|
*/
|
|
385
|
-
addLoopTrap(branch, block) {
|
|
368
|
+
addLoopTrap(branch: string, block: Block): string {
|
|
386
369
|
if (this.INFINITE_LOOP_TRAP) {
|
|
387
370
|
branch = this.prefixLines(
|
|
388
371
|
this.injectId(this.INFINITE_LOOP_TRAP, block), this.INDENT) +
|
|
@@ -404,21 +387,21 @@ class Generator {
|
|
|
404
387
|
/**
|
|
405
388
|
* Inject a block ID into a message to replace '%1'.
|
|
406
389
|
* Used for STATEMENT_PREFIX, STATEMENT_SUFFIX, and INFINITE_LOOP_TRAP.
|
|
407
|
-
* @param
|
|
408
|
-
* @param
|
|
409
|
-
* @return
|
|
390
|
+
* @param msg Code snippet with '%1'.
|
|
391
|
+
* @param block Block which has an ID.
|
|
392
|
+
* @return Code snippet with ID.
|
|
410
393
|
*/
|
|
411
|
-
injectId(msg, block) {
|
|
394
|
+
injectId(msg: string, block: Block): string {
|
|
412
395
|
const id = block.id.replace(/\$/g, '$$$$'); // Issue 251.
|
|
413
396
|
return msg.replace(/%1/g, '\'' + id + '\'');
|
|
414
397
|
}
|
|
415
398
|
|
|
416
399
|
/**
|
|
417
400
|
* Add one or more words to the list of reserved words for this language.
|
|
418
|
-
* @param
|
|
401
|
+
* @param words Comma-separated list of words to add to the list.
|
|
419
402
|
* No spaces. Duplicates are ok.
|
|
420
403
|
*/
|
|
421
|
-
addReservedWords(words) {
|
|
404
|
+
addReservedWords(words: string) {
|
|
422
405
|
this.RESERVED_WORDS_ += words + ',';
|
|
423
406
|
}
|
|
424
407
|
|
|
@@ -436,18 +419,17 @@ class Generator {
|
|
|
436
419
|
*
|
|
437
420
|
* The code gets output when Generator.finish() is called.
|
|
438
421
|
*
|
|
439
|
-
* @param
|
|
440
|
-
*
|
|
441
|
-
*
|
|
442
|
-
*
|
|
443
|
-
*
|
|
444
|
-
* from desiredName if the former has already been taken by the user.
|
|
445
|
-
* @protected
|
|
422
|
+
* @param desiredName The desired name of the function (e.g. mathIsPrime).
|
|
423
|
+
* @param code A list of statements or one multi-line code string. Use ' '
|
|
424
|
+
* for indents (they will be replaced).
|
|
425
|
+
* @return The actual name of the new function. This may differ from
|
|
426
|
+
* desiredName if the former has already been taken by the user.
|
|
446
427
|
*/
|
|
447
|
-
provideFunction_(desiredName, code)
|
|
428
|
+
protected provideFunction_(desiredName: string, code: string[]|string):
|
|
429
|
+
string {
|
|
448
430
|
if (!this.definitions_[desiredName]) {
|
|
449
431
|
const functionName =
|
|
450
|
-
this.nameDB_
|
|
432
|
+
this.nameDB_!.getDistinctName(desiredName, NameType.PROCEDURE);
|
|
451
433
|
this.functionNames_[desiredName] = functionName;
|
|
452
434
|
if (Array.isArray(code)) {
|
|
453
435
|
code = code.join('\n');
|
|
@@ -473,9 +455,9 @@ class Generator {
|
|
|
473
455
|
* Hook for code to run before code generation starts.
|
|
474
456
|
* Subclasses may override this, e.g. to initialise the database of variable
|
|
475
457
|
* names.
|
|
476
|
-
* @param
|
|
458
|
+
* @param _workspace Workspace to generate code from.
|
|
477
459
|
*/
|
|
478
|
-
init(_workspace) {
|
|
460
|
+
init(_workspace: Workspace) {
|
|
479
461
|
// Optionally override
|
|
480
462
|
// Create a dictionary of definitions to be printed before the code.
|
|
481
463
|
this.definitions_ = Object.create(null);
|
|
@@ -491,14 +473,13 @@ class Generator {
|
|
|
491
473
|
* Subclasses may override this, e.g. to generate code for statements
|
|
492
474
|
* following the block, or to handle comments for the specified block and any
|
|
493
475
|
* connected value blocks.
|
|
494
|
-
* @param
|
|
495
|
-
* @param
|
|
496
|
-
* @param
|
|
497
|
-
*
|
|
498
|
-
* @return {string} Code with comments and subsequent blocks added.
|
|
499
|
-
* @protected
|
|
476
|
+
* @param _block The current block.
|
|
477
|
+
* @param code The code created for this block.
|
|
478
|
+
* @param _opt_thisOnly True to generate code for only this statement.
|
|
479
|
+
* @return Code with comments and subsequent blocks added.
|
|
500
480
|
*/
|
|
501
|
-
scrub_(_block, code, _opt_thisOnly)
|
|
481
|
+
protected scrub_(_block: Block, code: string, _opt_thisOnly?: boolean):
|
|
482
|
+
string {
|
|
502
483
|
// Optionally override
|
|
503
484
|
return code;
|
|
504
485
|
}
|
|
@@ -507,10 +488,10 @@ class Generator {
|
|
|
507
488
|
* Hook for code to run at end of code generation.
|
|
508
489
|
* Subclasses may override this, e.g. to prepend the generated code with
|
|
509
490
|
* import statements or variable definitions.
|
|
510
|
-
* @param
|
|
511
|
-
* @return
|
|
491
|
+
* @param code Generated code.
|
|
492
|
+
* @return Completed code.
|
|
512
493
|
*/
|
|
513
|
-
finish(code) {
|
|
494
|
+
finish(code: string): string {
|
|
514
495
|
// Optionally override
|
|
515
496
|
// Clean up temporary data.
|
|
516
497
|
delete this.definitions_;
|
|
@@ -523,10 +504,10 @@ class Generator {
|
|
|
523
504
|
* anything.
|
|
524
505
|
* Subclasses may override this, e.g. if their language does not allow
|
|
525
506
|
* naked values.
|
|
526
|
-
* @param
|
|
527
|
-
* @return
|
|
507
|
+
* @param line Line of generated code.
|
|
508
|
+
* @return Legal line of code.
|
|
528
509
|
*/
|
|
529
|
-
scrubNakedValue(line) {
|
|
510
|
+
scrubNakedValue(line: string): string {
|
|
530
511
|
// Optionally override
|
|
531
512
|
return line;
|
|
532
513
|
}
|
|
@@ -536,29 +517,23 @@ Object.defineProperties(Generator.prototype, {
|
|
|
536
517
|
/**
|
|
537
518
|
* A database of variable names.
|
|
538
519
|
* @name Blockly.Generator.prototype.variableDB_
|
|
539
|
-
* @type {!Names|undefined}
|
|
540
|
-
* @protected
|
|
541
520
|
* @deprecated 'variableDB_' was renamed to 'nameDB_' (May 2021).
|
|
542
521
|
* @suppress {checkTypes}
|
|
543
522
|
*/
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
set: function(nameDb) {
|
|
558
|
-
deprecation.warn('variableDB_', 'May 2021', 'May 2026', 'nameDB_');
|
|
523
|
+
// AnyDuringMigration because: Type 'Names | undefined' is not assignable to
|
|
524
|
+
// type 'PropertyDescriptor'.
|
|
525
|
+
variableDB_: ({
|
|
526
|
+
/** @return Name database. */
|
|
527
|
+
get(this: Generator): Names |
|
|
528
|
+
undefined {
|
|
529
|
+
deprecation.warn(
|
|
530
|
+
'variableDB_', 'May 2021', 'September 2022', 'nameDB_');
|
|
531
|
+
return this.nameDB_;
|
|
532
|
+
},
|
|
533
|
+
/** @param nameDb New name database. */
|
|
534
|
+
set(this: Generator, nameDb: Names|undefined) {
|
|
535
|
+
deprecation.warn('variableDB_', 'May 2021', 'September2022', 'nameDB_');
|
|
559
536
|
this.nameDB_ = nameDb;
|
|
560
537
|
},
|
|
561
|
-
},
|
|
538
|
+
}),
|
|
562
539
|
});
|
|
563
|
-
|
|
564
|
-
exports.Generator = Generator;
|