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,34 +8,30 @@
|
|
|
8
8
|
* @fileoverview Methods for adding highlights on block, for rendering in
|
|
9
9
|
* compatibility mode.
|
|
10
10
|
*/
|
|
11
|
-
'use strict';
|
|
12
11
|
|
|
13
12
|
/**
|
|
14
13
|
* Methods for adding highlights on block, for rendering in
|
|
15
14
|
* compatibility mode.
|
|
16
15
|
* @class
|
|
17
16
|
*/
|
|
18
|
-
goog
|
|
17
|
+
import * as goog from '../../../closure/goog/goog.js';
|
|
18
|
+
goog.declareModuleId('Blockly.geras.Highlighter');
|
|
19
19
|
|
|
20
|
-
const svgPaths = goog.require('Blockly.utils.svgPaths');
|
|
21
20
|
/* eslint-disable-next-line no-unused-vars */
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
/* eslint-disable-next-line no-unused-vars */
|
|
37
|
-
const {TopRow} = goog.require('Blockly.blockRendering.TopRow');
|
|
38
|
-
const {Types} = goog.require('Blockly.blockRendering.Types');
|
|
21
|
+
// Unused import preserved for side-effects. Remove if unneeded.
|
|
22
|
+
// import './renderer.js';
|
|
23
|
+
|
|
24
|
+
import * as svgPaths from '../../utils/svg_paths.js';
|
|
25
|
+
import type {ConstantProvider} from '../common/constants.js';
|
|
26
|
+
import type {BottomRow} from '../measurables/bottom_row.js';
|
|
27
|
+
import type {Row} from '../measurables/row.js';
|
|
28
|
+
import {SpacerRow} from '../measurables/spacer_row.js';
|
|
29
|
+
import type {TopRow} from '../measurables/top_row.js';
|
|
30
|
+
import {Types} from '../measurables/types.js';
|
|
31
|
+
|
|
32
|
+
import type {HighlightConstantProvider, InsideCorner, JaggedTeeth, Notch, OutsideCorner, PuzzleTab, StartHat} from './highlight_constants.js';
|
|
33
|
+
import type {RenderInfo} from './info.js';
|
|
34
|
+
import type {InlineInput} from './measurables/inline_input.js';
|
|
39
35
|
|
|
40
36
|
|
|
41
37
|
/**
|
|
@@ -50,36 +46,38 @@ const {Types} = goog.require('Blockly.blockRendering.Types');
|
|
|
50
46
|
* tab and notch shapes, but are not exactly the same.
|
|
51
47
|
* @alias Blockly.geras.Highlighter
|
|
52
48
|
*/
|
|
53
|
-
class Highlighter {
|
|
49
|
+
export class Highlighter {
|
|
50
|
+
info_: RenderInfo;
|
|
51
|
+
steps_ = '';
|
|
52
|
+
inlineSteps_ = '';
|
|
53
|
+
RTL_: boolean;
|
|
54
|
+
constants_: ConstantProvider;
|
|
55
|
+
highlightConstants_: HighlightConstantProvider;
|
|
56
|
+
private readonly highlightOffset_: number;
|
|
57
|
+
outsideCornerPaths_: OutsideCorner;
|
|
58
|
+
insideCornerPaths_: InsideCorner;
|
|
59
|
+
puzzleTabPaths_: PuzzleTab;
|
|
60
|
+
notchPaths_: Notch;
|
|
61
|
+
startPaths_: StartHat;
|
|
62
|
+
jaggedTeethPaths_: JaggedTeeth;
|
|
63
|
+
|
|
54
64
|
/**
|
|
55
|
-
* @param
|
|
56
|
-
*
|
|
57
|
-
* @
|
|
65
|
+
* @param info An object containing all information needed to render this
|
|
66
|
+
* block.
|
|
67
|
+
* @internal
|
|
58
68
|
*/
|
|
59
|
-
constructor(info) {
|
|
69
|
+
constructor(info: RenderInfo) {
|
|
60
70
|
this.info_ = info;
|
|
61
|
-
this.steps_ = '';
|
|
62
|
-
this.inlineSteps_ = '';
|
|
63
71
|
|
|
64
72
|
this.RTL_ = this.info_.RTL;
|
|
65
73
|
|
|
66
|
-
const renderer =
|
|
74
|
+
const renderer = (info.getRenderer());
|
|
67
75
|
|
|
68
|
-
/**
|
|
69
|
-
* The renderer's constant provider.
|
|
70
|
-
* @type {!ConstantProvider}
|
|
71
|
-
*/
|
|
76
|
+
/** The renderer's constant provider. */
|
|
72
77
|
this.constants_ = renderer.getConstants();
|
|
73
78
|
|
|
74
|
-
/**
|
|
75
|
-
* @type {!HighlightConstantProvider}
|
|
76
|
-
*/
|
|
77
79
|
this.highlightConstants_ = renderer.getHighlightConstants();
|
|
78
|
-
/**
|
|
79
|
-
* The offset between the block's main path and highlight path.
|
|
80
|
-
* @type {number}
|
|
81
|
-
* @private
|
|
82
|
-
*/
|
|
80
|
+
/** The offset between the block's main path and highlight path. */
|
|
83
81
|
this.highlightOffset_ = this.highlightConstants_.OFFSET;
|
|
84
82
|
|
|
85
83
|
this.outsideCornerPaths_ = this.highlightConstants_.OUTSIDE_CORNER;
|
|
@@ -92,21 +90,21 @@ class Highlighter {
|
|
|
92
90
|
|
|
93
91
|
/**
|
|
94
92
|
* Get the steps for the highlight path.
|
|
95
|
-
* @return
|
|
96
|
-
* @
|
|
93
|
+
* @return The steps for the highlight path.
|
|
94
|
+
* @internal
|
|
97
95
|
*/
|
|
98
|
-
getPath() {
|
|
96
|
+
getPath(): string {
|
|
99
97
|
return this.steps_ + '\n' + this.inlineSteps_;
|
|
100
98
|
}
|
|
101
99
|
|
|
102
100
|
/**
|
|
103
101
|
* Add a highlight to the top corner of a block.
|
|
104
|
-
* @param
|
|
105
|
-
* @
|
|
102
|
+
* @param row The top row of the block.
|
|
103
|
+
* @internal
|
|
106
104
|
*/
|
|
107
|
-
drawTopCorner(row) {
|
|
105
|
+
drawTopCorner(row: TopRow) {
|
|
108
106
|
this.steps_ += svgPaths.moveBy(row.xPos, this.info_.startY);
|
|
109
|
-
for (let i = 0, elem;
|
|
107
|
+
for (let i = 0, elem; elem = row.elements[i]; i++) {
|
|
110
108
|
if (Types.isLeftSquareCorner(elem)) {
|
|
111
109
|
this.steps_ += this.highlightConstants_.START_POINT;
|
|
112
110
|
} else if (Types.isLeftRoundedCorner(elem)) {
|
|
@@ -131,10 +129,10 @@ class Highlighter {
|
|
|
131
129
|
|
|
132
130
|
/**
|
|
133
131
|
* Add a highlight on a jagged edge for a collapsed block.
|
|
134
|
-
* @param
|
|
135
|
-
* @
|
|
132
|
+
* @param row The row to highlight.
|
|
133
|
+
* @internal
|
|
136
134
|
*/
|
|
137
|
-
drawJaggedEdge_(row) {
|
|
135
|
+
drawJaggedEdge_(row: Row) {
|
|
138
136
|
if (this.info_.RTL) {
|
|
139
137
|
const remainder =
|
|
140
138
|
row.height - this.jaggedTeethPaths_.height - this.highlightOffset_;
|
|
@@ -145,11 +143,11 @@ class Highlighter {
|
|
|
145
143
|
|
|
146
144
|
/**
|
|
147
145
|
* Add a highlight on a value input.
|
|
148
|
-
* @param
|
|
149
|
-
* @
|
|
146
|
+
* @param row The row the input belongs to.
|
|
147
|
+
* @internal
|
|
150
148
|
*/
|
|
151
|
-
drawValueInput(row) {
|
|
152
|
-
const input =
|
|
149
|
+
drawValueInput(row: Row) {
|
|
150
|
+
const input = row.getLastInput() as InlineInput;
|
|
153
151
|
if (this.RTL_) {
|
|
154
152
|
const belowTabHeight = row.height - input.connectionHeight;
|
|
155
153
|
|
|
@@ -166,13 +164,13 @@ class Highlighter {
|
|
|
166
164
|
|
|
167
165
|
/**
|
|
168
166
|
* Add a highlight on a statement input.
|
|
169
|
-
* @param
|
|
170
|
-
* @
|
|
167
|
+
* @param row The row to highlight.
|
|
168
|
+
* @internal
|
|
171
169
|
*/
|
|
172
|
-
drawStatementInput(row) {
|
|
170
|
+
drawStatementInput(row: Row) {
|
|
173
171
|
const input = row.getLastInput();
|
|
174
172
|
if (this.RTL_) {
|
|
175
|
-
const innerHeight = row.height -
|
|
173
|
+
const innerHeight = row.height - 2 * this.insideCornerPaths_.height;
|
|
176
174
|
this.steps_ += svgPaths.moveTo(input.xPos, row.yPos) +
|
|
177
175
|
this.insideCornerPaths_.pathTop(this.RTL_) +
|
|
178
176
|
svgPaths.lineOnAxis('v', innerHeight) +
|
|
@@ -189,10 +187,10 @@ class Highlighter {
|
|
|
189
187
|
|
|
190
188
|
/**
|
|
191
189
|
* Add a highlight on the right side of a row.
|
|
192
|
-
* @param
|
|
193
|
-
* @
|
|
190
|
+
* @param row The row to highlight.
|
|
191
|
+
* @internal
|
|
194
192
|
*/
|
|
195
|
-
drawRightSideRow(row) {
|
|
193
|
+
drawRightSideRow(row: Row) {
|
|
196
194
|
const rightEdge = row.xPos + row.width - this.highlightOffset_;
|
|
197
195
|
if (row instanceof SpacerRow && row.followsStatement) {
|
|
198
196
|
this.steps_ += svgPaths.lineOnAxis('H', rightEdge);
|
|
@@ -208,10 +206,10 @@ class Highlighter {
|
|
|
208
206
|
|
|
209
207
|
/**
|
|
210
208
|
* Add a highlight to the bottom row.
|
|
211
|
-
* @param
|
|
212
|
-
* @
|
|
209
|
+
* @param row The row to highlight.
|
|
210
|
+
* @internal
|
|
213
211
|
*/
|
|
214
|
-
drawBottomRow(row) {
|
|
212
|
+
drawBottomRow(row: BottomRow) {
|
|
215
213
|
// Highlight the vertical edge of the bottom row on the input side.
|
|
216
214
|
// Highlighting is always from the top left, both in LTR and RTL.
|
|
217
215
|
if (this.RTL_) {
|
|
@@ -232,7 +230,7 @@ class Highlighter {
|
|
|
232
230
|
|
|
233
231
|
/**
|
|
234
232
|
* Draw the highlight on the left side of the block.
|
|
235
|
-
* @
|
|
233
|
+
* @internal
|
|
236
234
|
*/
|
|
237
235
|
drawLeft() {
|
|
238
236
|
const outputConnection = this.info_.outputConnection;
|
|
@@ -265,10 +263,10 @@ class Highlighter {
|
|
|
265
263
|
|
|
266
264
|
/**
|
|
267
265
|
* Add a highlight to an inline input.
|
|
268
|
-
* @param
|
|
269
|
-
* @
|
|
266
|
+
* @param input The input to highlight.
|
|
267
|
+
* @internal
|
|
270
268
|
*/
|
|
271
|
-
drawInlineInput(input) {
|
|
269
|
+
drawInlineInput(input: InlineInput) {
|
|
272
270
|
const offset = this.highlightOffset_;
|
|
273
271
|
|
|
274
272
|
// Relative to the block's left.
|
|
@@ -284,28 +282,25 @@ class Highlighter {
|
|
|
284
282
|
|
|
285
283
|
const startX = connectionRight - offset;
|
|
286
284
|
|
|
287
|
-
this.inlineSteps_ +=
|
|
288
|
-
// Right edge above tab.
|
|
289
|
-
svgPaths.lineOnAxis('v', aboveTabHeight) +
|
|
290
|
-
//
|
|
291
|
-
|
|
292
|
-
// Right edge below tab.
|
|
293
|
-
svgPaths.lineOnAxis('v', belowTabHeight) +
|
|
294
|
-
// Bottom.
|
|
285
|
+
this.inlineSteps_ +=
|
|
286
|
+
svgPaths.moveTo(startX, startY) + // Right edge above tab.
|
|
287
|
+
svgPaths.lineOnAxis('v', aboveTabHeight) + // Back of tab.
|
|
288
|
+
this.puzzleTabPaths_.pathDown(this.RTL_) + // Right edge below tab.
|
|
289
|
+
svgPaths.lineOnAxis('v', belowTabHeight) + // Bottom.
|
|
295
290
|
svgPaths.lineOnAxis('h', bottomHighlightWidth);
|
|
296
291
|
} else {
|
|
297
|
-
this.inlineSteps_ +=
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
292
|
+
this.inlineSteps_ += // Go to top right corner.
|
|
293
|
+
svgPaths.moveTo(
|
|
294
|
+
input.xPos + input.width + offset,
|
|
295
|
+
startY) + // Highlight right edge, bottom.
|
|
301
296
|
svgPaths.lineOnAxis('v', input.height) +
|
|
302
|
-
svgPaths.lineOnAxis(
|
|
303
|
-
|
|
304
|
-
svgPaths.moveTo(
|
|
305
|
-
|
|
297
|
+
svgPaths.lineOnAxis(
|
|
298
|
+
'h', -bottomHighlightWidth) + // Go to top of tab.
|
|
299
|
+
svgPaths.moveTo(
|
|
300
|
+
connectionRight,
|
|
301
|
+
yPos + input.connectionOffsetY) + // Short highlight glint at
|
|
302
|
+
// bottom of tab.
|
|
306
303
|
this.puzzleTabPaths_.pathDown(this.RTL_);
|
|
307
304
|
}
|
|
308
305
|
}
|
|
309
306
|
}
|
|
310
|
-
|
|
311
|
-
exports.Highlighter = Highlighter;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2019 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { BlockSvg } from '../../block_svg.js';
|
|
7
|
+
import type { Input } from '../../input.js';
|
|
8
|
+
import { RenderInfo as BaseRenderInfo } from '../common/info.js';
|
|
9
|
+
import type { Measurable } from '../measurables/base.js';
|
|
10
|
+
import type { Row } from '../measurables/row.js';
|
|
11
|
+
import type { ConstantProvider } from './constants.js';
|
|
12
|
+
import type { Renderer } from './renderer.js';
|
|
13
|
+
/**
|
|
14
|
+
* An object containing all sizing information needed to draw this block.
|
|
15
|
+
*
|
|
16
|
+
* This measure pass does not propagate changes to the block (although fields
|
|
17
|
+
* may choose to rerender when getSize() is called). However, calling it
|
|
18
|
+
* repeatedly may be expensive.
|
|
19
|
+
* @alias Blockly.geras.RenderInfo
|
|
20
|
+
*/
|
|
21
|
+
export declare class RenderInfo extends BaseRenderInfo {
|
|
22
|
+
constants_: ConstantProvider;
|
|
23
|
+
protected readonly renderer_: Renderer;
|
|
24
|
+
/**
|
|
25
|
+
* @param renderer The renderer in use.
|
|
26
|
+
* @param block The block to measure.
|
|
27
|
+
* @internal
|
|
28
|
+
*/
|
|
29
|
+
constructor(renderer: Renderer, block: BlockSvg);
|
|
30
|
+
/**
|
|
31
|
+
* Get the block renderer in use.
|
|
32
|
+
* @return The block renderer in use.
|
|
33
|
+
* @internal
|
|
34
|
+
*/
|
|
35
|
+
getRenderer(): Renderer;
|
|
36
|
+
populateBottomRow_(): void;
|
|
37
|
+
addInput_(input: Input, activeRow: Row): void;
|
|
38
|
+
addElemSpacing_(): void;
|
|
39
|
+
getInRowSpacing_(prev: Measurable | null, next: Measurable | null): number;
|
|
40
|
+
getSpacerRowHeight_(prev: Row, next: Row): number;
|
|
41
|
+
getElemCenterline_(row: Row, elem: Measurable): number;
|
|
42
|
+
alignRowElements_(): void;
|
|
43
|
+
getDesiredRowWidth_(row: Row): number;
|
|
44
|
+
finalize_(): void;
|
|
45
|
+
}
|
|
@@ -8,36 +8,33 @@
|
|
|
8
8
|
* @fileoverview Old (compatibility) renderer.
|
|
9
9
|
* Geras: spirit of old age.
|
|
10
10
|
*/
|
|
11
|
-
'use strict';
|
|
12
11
|
|
|
13
12
|
/**
|
|
14
13
|
* Old (compatibility) renderer.
|
|
15
14
|
* Geras: spirit of old age.
|
|
16
15
|
* @class
|
|
17
16
|
*/
|
|
18
|
-
goog
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
const {Types} = goog.require('Blockly.blockRendering.Types');
|
|
40
|
-
const {inputTypes} = goog.require('Blockly.inputTypes');
|
|
17
|
+
import * as goog from '../../../closure/goog/goog.js';
|
|
18
|
+
goog.declareModuleId('Blockly.geras.RenderInfo');
|
|
19
|
+
|
|
20
|
+
import type {BlockSvg} from '../../block_svg.js';
|
|
21
|
+
import type {Input} from '../../input.js';
|
|
22
|
+
import {inputTypes} from '../../input_types.js';
|
|
23
|
+
import {RenderInfo as BaseRenderInfo} from '../common/info.js';
|
|
24
|
+
import type {Measurable} from '../measurables/base.js';
|
|
25
|
+
import type {BottomRow} from '../measurables/bottom_row.js';
|
|
26
|
+
import {ExternalValueInput} from '../measurables/external_value_input.js';
|
|
27
|
+
import type {Field} from '../measurables/field.js';
|
|
28
|
+
import {InRowSpacer} from '../measurables/in_row_spacer.js';
|
|
29
|
+
import type {InputRow} from '../measurables/input_row.js';
|
|
30
|
+
import type {Row} from '../measurables/row.js';
|
|
31
|
+
import type {TopRow} from '../measurables/top_row.js';
|
|
32
|
+
import {Types} from '../measurables/types.js';
|
|
33
|
+
|
|
34
|
+
import type {ConstantProvider} from './constants.js';
|
|
35
|
+
import {InlineInput} from './measurables/inline_input.js';
|
|
36
|
+
import {StatementInput} from './measurables/statement_input.js';
|
|
37
|
+
import type {Renderer} from './renderer.js';
|
|
41
38
|
|
|
42
39
|
|
|
43
40
|
/**
|
|
@@ -46,41 +43,39 @@ const {inputTypes} = goog.require('Blockly.inputTypes');
|
|
|
46
43
|
* This measure pass does not propagate changes to the block (although fields
|
|
47
44
|
* may choose to rerender when getSize() is called). However, calling it
|
|
48
45
|
* repeatedly may be expensive.
|
|
49
|
-
* @extends {BaseRenderInfo}
|
|
50
46
|
* @alias Blockly.geras.RenderInfo
|
|
51
47
|
*/
|
|
52
|
-
class RenderInfo extends BaseRenderInfo {
|
|
48
|
+
export class RenderInfo extends BaseRenderInfo {
|
|
49
|
+
// TODO(b/109816955): remove '!', see go/strict-prop-init-fix.
|
|
50
|
+
override constants_!: ConstantProvider;
|
|
51
|
+
|
|
52
|
+
protected override readonly renderer_: Renderer;
|
|
53
|
+
|
|
53
54
|
/**
|
|
54
|
-
* @param
|
|
55
|
-
* @param
|
|
56
|
-
* @
|
|
55
|
+
* @param renderer The renderer in use.
|
|
56
|
+
* @param block The block to measure.
|
|
57
|
+
* @internal
|
|
57
58
|
*/
|
|
58
|
-
constructor(renderer, block) {
|
|
59
|
+
constructor(renderer: Renderer, block: BlockSvg) {
|
|
59
60
|
super(renderer, block);
|
|
60
|
-
|
|
61
|
-
/** @type {!ConstantProvider} */
|
|
62
|
-
this.constants_;
|
|
61
|
+
this.renderer_ = renderer;
|
|
63
62
|
}
|
|
64
63
|
|
|
65
64
|
/**
|
|
66
65
|
* Get the block renderer in use.
|
|
67
|
-
* @return
|
|
68
|
-
* @
|
|
66
|
+
* @return The block renderer in use.
|
|
67
|
+
* @internal
|
|
69
68
|
*/
|
|
70
|
-
getRenderer() {
|
|
71
|
-
return
|
|
69
|
+
override getRenderer(): Renderer {
|
|
70
|
+
return this.renderer_;
|
|
72
71
|
}
|
|
73
72
|
|
|
74
|
-
|
|
75
|
-
* @override
|
|
76
|
-
*/
|
|
77
|
-
populateBottomRow_() {
|
|
73
|
+
override populateBottomRow_() {
|
|
78
74
|
super.populateBottomRow_();
|
|
79
75
|
|
|
80
76
|
const followsStatement = this.block_.inputList.length &&
|
|
81
77
|
this.block_.inputList[this.block_.inputList.length - 1].type ===
|
|
82
78
|
inputTypes.STATEMENT;
|
|
83
|
-
|
|
84
79
|
// The minimum height of the bottom row is smaller in Geras than in other
|
|
85
80
|
// renderers, because the dark path adds a pixel.
|
|
86
81
|
// If one of the row's elements has a greater height this will be
|
|
@@ -91,10 +86,7 @@ class RenderInfo extends BaseRenderInfo {
|
|
|
91
86
|
}
|
|
92
87
|
}
|
|
93
88
|
|
|
94
|
-
|
|
95
|
-
* @override
|
|
96
|
-
*/
|
|
97
|
-
addInput_(input, activeRow) {
|
|
89
|
+
override addInput_(input: Input, activeRow: Row) {
|
|
98
90
|
// Non-dummy inputs have visual representations onscreen.
|
|
99
91
|
if (this.isInline && input.type === inputTypes.VALUE) {
|
|
100
92
|
activeRow.elements.push(new InlineInput(this.constants_, input));
|
|
@@ -118,17 +110,14 @@ class RenderInfo extends BaseRenderInfo {
|
|
|
118
110
|
}
|
|
119
111
|
}
|
|
120
112
|
|
|
121
|
-
|
|
122
|
-
* @override
|
|
123
|
-
*/
|
|
124
|
-
addElemSpacing_() {
|
|
113
|
+
override addElemSpacing_() {
|
|
125
114
|
let hasExternalInputs = false;
|
|
126
|
-
for (let i = 0, row;
|
|
115
|
+
for (let i = 0, row; row = this.rows[i]; i++) {
|
|
127
116
|
if (row.hasExternalInput) {
|
|
128
117
|
hasExternalInputs = true;
|
|
129
118
|
}
|
|
130
119
|
}
|
|
131
|
-
for (let i = 0, row;
|
|
120
|
+
for (let i = 0, row; row = this.rows[i]; i++) {
|
|
132
121
|
const oldElems = row.elements;
|
|
133
122
|
row.elements = [];
|
|
134
123
|
// No spacing needed before the corner on the top row or the bottom row.
|
|
@@ -158,14 +147,10 @@ class RenderInfo extends BaseRenderInfo {
|
|
|
158
147
|
}
|
|
159
148
|
}
|
|
160
149
|
|
|
161
|
-
|
|
162
|
-
* @override
|
|
163
|
-
*/
|
|
164
|
-
getInRowSpacing_(prev, next) {
|
|
150
|
+
override getInRowSpacing_(prev: Measurable|null, next: Measurable|null) {
|
|
165
151
|
if (!prev) {
|
|
166
152
|
// Between an editable field and the beginning of the row.
|
|
167
|
-
if (next && Types.isField(next) &&
|
|
168
|
-
(/** @type {Field} */ (next)).isEditable) {
|
|
153
|
+
if (next && Types.isField(next) && (next as Field).isEditable) {
|
|
169
154
|
return this.constants_.MEDIUM_PADDING;
|
|
170
155
|
}
|
|
171
156
|
// Inline input at the beginning of the row.
|
|
@@ -182,12 +167,12 @@ class RenderInfo extends BaseRenderInfo {
|
|
|
182
167
|
// Spacing between a non-input and the end of the row or a statement input.
|
|
183
168
|
if (!Types.isInput(prev) && (!next || Types.isStatementInput(next))) {
|
|
184
169
|
// Between an editable field and the end of the row.
|
|
185
|
-
if (Types.isField(prev) && (
|
|
170
|
+
if (Types.isField(prev) && (prev as Field).isEditable) {
|
|
186
171
|
return this.constants_.MEDIUM_PADDING;
|
|
187
172
|
}
|
|
188
173
|
// Padding at the end of an icon-only row to make the block shape clearer.
|
|
189
174
|
if (Types.isIcon(prev)) {
|
|
190
|
-
return
|
|
175
|
+
return this.constants_.LARGE_PADDING * 2 + 1;
|
|
191
176
|
}
|
|
192
177
|
if (Types.isHat(prev)) {
|
|
193
178
|
return this.constants_.NO_PADDING;
|
|
@@ -223,7 +208,7 @@ class RenderInfo extends BaseRenderInfo {
|
|
|
223
208
|
// Spacing between a non-input and an input.
|
|
224
209
|
if (!Types.isInput(prev) && next && Types.isInput(next)) {
|
|
225
210
|
// Between an editable field and an input.
|
|
226
|
-
if (Types.isField(prev) && (
|
|
211
|
+
if (Types.isField(prev) && (prev as Field).isEditable) {
|
|
227
212
|
if (Types.isInlineInput(next)) {
|
|
228
213
|
return this.constants_.SMALL_PADDING;
|
|
229
214
|
} else if (Types.isExternalInput(next)) {
|
|
@@ -245,11 +230,10 @@ class RenderInfo extends BaseRenderInfo {
|
|
|
245
230
|
if (Types.isIcon(prev) && next && !Types.isInput(next)) {
|
|
246
231
|
return this.constants_.LARGE_PADDING;
|
|
247
232
|
}
|
|
248
|
-
|
|
249
233
|
// Spacing between an inline input and a field.
|
|
250
234
|
if (Types.isInlineInput(prev) && next && Types.isField(next)) {
|
|
251
235
|
// Editable field after inline input.
|
|
252
|
-
if ((
|
|
236
|
+
if ((next as Field).isEditable) {
|
|
253
237
|
return this.constants_.MEDIUM_PADDING;
|
|
254
238
|
} else {
|
|
255
239
|
// Noneditable field after inline input.
|
|
@@ -291,8 +275,7 @@ class RenderInfo extends BaseRenderInfo {
|
|
|
291
275
|
|
|
292
276
|
// Spacing between two fields of the same editability.
|
|
293
277
|
if (Types.isField(prev) && next && Types.isField(next) &&
|
|
294
|
-
(
|
|
295
|
-
(/** @type {Field} */ (next)).isEditable)) {
|
|
278
|
+
(prev as Field).isEditable === (next as Field).isEditable) {
|
|
296
279
|
return this.constants_.LARGE_PADDING;
|
|
297
280
|
}
|
|
298
281
|
|
|
@@ -304,10 +287,7 @@ class RenderInfo extends BaseRenderInfo {
|
|
|
304
287
|
return this.constants_.MEDIUM_PADDING;
|
|
305
288
|
}
|
|
306
289
|
|
|
307
|
-
|
|
308
|
-
* @override
|
|
309
|
-
*/
|
|
310
|
-
getSpacerRowHeight_(prev, next) {
|
|
290
|
+
override getSpacerRowHeight_(prev: Row, next: Row) {
|
|
311
291
|
// If we have an empty block add a spacer to increase the height.
|
|
312
292
|
if (Types.isTopRow(prev) && Types.isBottomRow(next)) {
|
|
313
293
|
return this.constants_.EMPTY_BLOCK_SPACER_HEIGHT;
|
|
@@ -334,15 +314,12 @@ class RenderInfo extends BaseRenderInfo {
|
|
|
334
314
|
return this.constants_.MEDIUM_PADDING;
|
|
335
315
|
}
|
|
336
316
|
|
|
337
|
-
|
|
338
|
-
* @override
|
|
339
|
-
*/
|
|
340
|
-
getElemCenterline_(row, elem) {
|
|
317
|
+
override getElemCenterline_(row: Row, elem: Measurable) {
|
|
341
318
|
if (Types.isSpacer(elem)) {
|
|
342
319
|
return row.yPos + elem.height / 2;
|
|
343
320
|
}
|
|
344
321
|
if (Types.isBottomRow(row)) {
|
|
345
|
-
const bottomRow =
|
|
322
|
+
const bottomRow = row as BottomRow;
|
|
346
323
|
const baseline =
|
|
347
324
|
bottomRow.yPos + bottomRow.height - bottomRow.descenderHeight;
|
|
348
325
|
if (Types.isNextConnection(elem)) {
|
|
@@ -351,7 +328,7 @@ class RenderInfo extends BaseRenderInfo {
|
|
|
351
328
|
return baseline - elem.height / 2;
|
|
352
329
|
}
|
|
353
330
|
if (Types.isTopRow(row)) {
|
|
354
|
-
const topRow =
|
|
331
|
+
const topRow = row as TopRow;
|
|
355
332
|
if (Types.isHat(elem)) {
|
|
356
333
|
return topRow.capline - elem.height / 2;
|
|
357
334
|
}
|
|
@@ -360,7 +337,7 @@ class RenderInfo extends BaseRenderInfo {
|
|
|
360
337
|
|
|
361
338
|
let result = row.yPos;
|
|
362
339
|
if (Types.isField(elem) || Types.isIcon(elem)) {
|
|
363
|
-
result +=
|
|
340
|
+
result += elem.height / 2;
|
|
364
341
|
if ((row.hasInlineInput || row.hasStatement) &&
|
|
365
342
|
elem.height + this.constants_.TALL_INPUT_FIELD_OFFSET_Y <=
|
|
366
343
|
row.height) {
|
|
@@ -369,31 +346,26 @@ class RenderInfo extends BaseRenderInfo {
|
|
|
369
346
|
} else if (Types.isInlineInput(elem)) {
|
|
370
347
|
result += elem.height / 2;
|
|
371
348
|
} else {
|
|
372
|
-
result +=
|
|
349
|
+
result += row.height / 2;
|
|
373
350
|
}
|
|
374
351
|
return result;
|
|
375
352
|
}
|
|
376
353
|
|
|
377
|
-
|
|
378
|
-
* @override
|
|
379
|
-
*/
|
|
380
|
-
alignRowElements_() {
|
|
354
|
+
override alignRowElements_() {
|
|
381
355
|
if (!this.isInline) {
|
|
382
356
|
super.alignRowElements_();
|
|
383
357
|
return;
|
|
384
358
|
}
|
|
385
|
-
|
|
386
359
|
// Walk backgrounds through rows on the block, keeping track of the right
|
|
387
360
|
// input edge.
|
|
388
361
|
let nextRightEdge = 0;
|
|
389
362
|
const rowNextRightEdges = new WeakMap();
|
|
390
363
|
let prevInput = null;
|
|
391
|
-
for (let i = this.rows.length - 1, row;
|
|
364
|
+
for (let i = this.rows.length - 1, row; row = this.rows[i]; i--) {
|
|
392
365
|
rowNextRightEdges.set(row, nextRightEdge);
|
|
393
366
|
if (Types.isInputRow(row)) {
|
|
394
367
|
if (row.hasStatement) {
|
|
395
|
-
this.alignStatementRow_(
|
|
396
|
-
/** @type {!InputRow} */ (row));
|
|
368
|
+
this.alignStatementRow_(row as InputRow);
|
|
397
369
|
}
|
|
398
370
|
if (prevInput && prevInput.hasStatement &&
|
|
399
371
|
row.width < prevInput.width) {
|
|
@@ -407,7 +379,7 @@ class RenderInfo extends BaseRenderInfo {
|
|
|
407
379
|
// Walk down each row from the top, comparing the prev and next right input
|
|
408
380
|
// edges and setting the desired width to the max of the two.
|
|
409
381
|
let prevRightEdge = 0;
|
|
410
|
-
for (let i = 0, row;
|
|
382
|
+
for (let i = 0, row; row = this.rows[i]; i++) {
|
|
411
383
|
if (row.hasStatement) {
|
|
412
384
|
prevRightEdge = this.getDesiredRowWidth_(row);
|
|
413
385
|
} else if (Types.isSpacer(row)) {
|
|
@@ -426,10 +398,7 @@ class RenderInfo extends BaseRenderInfo {
|
|
|
426
398
|
}
|
|
427
399
|
}
|
|
428
400
|
|
|
429
|
-
|
|
430
|
-
* @override
|
|
431
|
-
*/
|
|
432
|
-
getDesiredRowWidth_(row) {
|
|
401
|
+
override getDesiredRowWidth_(row: Row) {
|
|
433
402
|
// Limit the width of a statement row when a block is inline.
|
|
434
403
|
if (this.isInline && row.hasStatement) {
|
|
435
404
|
return this.statementEdge + this.constants_.MAX_BOTTOM_WIDTH +
|
|
@@ -438,16 +407,13 @@ class RenderInfo extends BaseRenderInfo {
|
|
|
438
407
|
return super.getDesiredRowWidth_(row);
|
|
439
408
|
}
|
|
440
409
|
|
|
441
|
-
|
|
442
|
-
* @override
|
|
443
|
-
*/
|
|
444
|
-
finalize_() {
|
|
410
|
+
override finalize_() {
|
|
445
411
|
// Performance note: this could be combined with the draw pass, if the time
|
|
446
412
|
// that this takes is excessive. But it shouldn't be, because it only
|
|
447
413
|
// accesses and sets properties that already exist on the objects.
|
|
448
414
|
let widestRowWithConnectedBlocks = 0;
|
|
449
415
|
let yCursor = 0;
|
|
450
|
-
for (let i = 0, row;
|
|
416
|
+
for (let i = 0, row; row = this.rows[i]; i++) {
|
|
451
417
|
row.yPos = yCursor;
|
|
452
418
|
row.xPos = this.startX;
|
|
453
419
|
yCursor += row.height;
|
|
@@ -475,8 +441,6 @@ class RenderInfo extends BaseRenderInfo {
|
|
|
475
441
|
}
|
|
476
442
|
|
|
477
443
|
this.bottomRow.baseline = yCursor - this.bottomRow.descenderHeight;
|
|
478
|
-
|
|
479
|
-
// The dark (lowlight) adds to the size of the block in both x and y.
|
|
480
444
|
this.widthWithChildren = widestRowWithConnectedBlocks + this.startX +
|
|
481
445
|
this.constants_.DARK_PATH_OFFSET;
|
|
482
446
|
this.width += this.constants_.DARK_PATH_OFFSET;
|
|
@@ -484,5 +448,3 @@ class RenderInfo extends BaseRenderInfo {
|
|
|
484
448
|
this.startY = this.topRow.capline;
|
|
485
449
|
}
|
|
486
450
|
}
|
|
487
|
-
|
|
488
|
-
exports.RenderInfo = RenderInfo;
|