blockly 8.0.4-beta.0 → 8.0.5-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/blockly.min.js +2421 -2688
- package/blockly_compressed.js +1499 -1994
- package/blockly_compressed.js.map +1 -1
- package/blocks/blocks.js +3 -2
- package/blocks/colour.js +3 -1
- package/blocks/lists.js +94 -22
- package/blocks/logic.js +14 -6
- package/blocks/loops.js +5 -3
- package/blocks/math.js +3 -1
- package/blocks/procedures.js +3 -1
- package/blocks/text.js +14 -6
- package/blocks/variables.js +3 -1
- package/blocks/variables_dynamic.js +3 -1
- package/blocks.d.ts +0 -2
- package/blocks_compressed.js +189 -171
- package/blocks_compressed.js.map +1 -1
- package/closure/goog/base.d.ts +1 -0
- package/closure/goog/base_minimal.d.ts +18 -0
- package/closure/goog/goog.d.ts +25 -0
- package/core/any_aliases.d.ts +1 -0
- package/core/any_aliases.ts +1 -0
- package/core/block.d.ts +779 -0
- package/core/{block.js → block.ts} +610 -719
- package/core/block_animations.d.ts +33 -0
- package/core/{block_animations.js → block_animations.ts} +75 -79
- package/core/block_drag_surface.d.ts +111 -0
- package/core/{block_drag_surface.js → block_drag_surface.ts} +85 -117
- package/core/block_dragger.d.ts +143 -0
- package/core/{block_dragger.js → block_dragger.ts} +139 -176
- package/core/block_svg.d.ts +588 -0
- package/core/{block_svg.js → block_svg.ts} +494 -630
- package/core/blockly.d.ts +562 -0
- package/core/blockly.js +1 -1
- package/core/blockly.ts +749 -0
- package/core/blockly_options.d.ts +69 -0
- package/core/blockly_options.ts +81 -0
- package/core/blocks.d.ts +17 -0
- package/core/{blocks.js → blocks.ts} +4 -8
- package/core/browser_events.d.ts +85 -0
- package/core/{browser_events.js → browser_events.ts} +98 -93
- package/core/bubble.d.ts +279 -0
- package/core/{bubble.js → bubble.ts} +277 -370
- package/core/bubble_dragger.d.ts +73 -0
- package/core/bubble_dragger.ts +229 -0
- package/core/bump_objects.d.ts +34 -0
- package/core/{bump_objects.js → bump_objects.ts} +54 -52
- package/core/clipboard.d.ts +42 -0
- package/core/clipboard.ts +91 -0
- package/core/comment.d.ts +113 -0
- package/core/{comment.js → comment.ts} +135 -185
- package/core/common.d.ts +129 -0
- package/core/{common.js → common.ts} +105 -82
- package/core/component_manager.d.ts +91 -0
- package/core/component_manager.ts +211 -0
- package/core/config.d.ts +23 -0
- package/core/{config.js → config.ts} +12 -19
- package/core/connection.d.ts +232 -0
- package/core/{connection.js → connection.ts} +187 -237
- package/core/connection_checker.d.ts +78 -0
- package/core/{connection_checker.js → connection_checker.ts} +66 -77
- package/core/connection_db.d.ts +91 -0
- package/core/{connection_db.js → connection_db.ts} +62 -87
- package/core/connection_type.d.ts +15 -0
- package/core/{connection_type.js → connection_type.ts} +8 -12
- package/core/constants.d.ts +15 -0
- package/core/{constants.js → constants.ts} +4 -8
- package/core/contextmenu.d.ts +80 -0
- package/core/{contextmenu.js → contextmenu.ts} +118 -153
- package/core/contextmenu_items.d.ts +77 -0
- package/core/contextmenu_items.ts +576 -0
- package/core/contextmenu_registry.d.ts +105 -0
- package/core/contextmenu_registry.ts +179 -0
- package/core/css.d.ts +24 -0
- package/core/{css.js → css.ts} +16 -24
- package/core/delete_area.d.ts +47 -0
- package/core/delete_area.ts +82 -0
- package/core/dialog.d.ts +61 -0
- package/core/dialog.ts +127 -0
- package/core/drag_target.d.ts +63 -0
- package/core/drag_target.ts +94 -0
- package/core/dropdowndiv.d.ts +155 -0
- package/core/{dropdowndiv.js → dropdowndiv.ts} +262 -333
- package/core/events/events.d.ts +102 -0
- package/core/events/events.ts +123 -0
- package/core/events/events_abstract.d.ts +51 -0
- package/core/events/events_abstract.ts +112 -0
- package/core/events/events_block_base.d.ts +31 -0
- package/core/events/events_block_base.ts +65 -0
- package/core/events/events_block_change.d.ts +55 -0
- package/core/events/{events_block_change.js → events_block_change.ts} +45 -48
- package/core/events/events_block_create.d.ts +35 -0
- package/core/events/{events_block_create.js → events_block_create.ts} +30 -35
- package/core/events/events_block_delete.d.ts +36 -0
- package/core/events/{events_block_delete.js → events_block_delete.ts} +34 -39
- package/core/events/events_block_drag.d.ts +36 -0
- package/core/events/events_block_drag.ts +82 -0
- package/core/events/events_block_move.d.ts +51 -0
- package/core/events/{events_block_move.js → events_block_move.ts} +54 -50
- package/core/events/events_bubble_open.d.ts +35 -0
- package/core/events/events_bubble_open.ts +82 -0
- package/core/events/events_click.d.ts +36 -0
- package/core/events/{events_click.js → events_click.ts} +27 -30
- package/core/events/events_comment_base.d.ts +39 -0
- package/core/events/events_comment_base.ts +107 -0
- package/core/events/events_comment_change.d.ts +43 -0
- package/core/events/{events_comment_change.js → events_comment_change.ts} +31 -28
- package/core/events/events_comment_create.d.ts +35 -0
- package/core/events/{events_comment_create.js → events_comment_create.ts} +24 -26
- package/core/events/events_comment_delete.d.ts +35 -0
- package/core/events/{events_comment_delete.js → events_comment_delete.ts} +20 -24
- package/core/events/events_comment_move.d.ts +55 -0
- package/core/events/{events_comment_move.js → events_comment_move.ts} +39 -42
- package/core/events/events_marker_move.d.ts +40 -0
- package/core/events/events_marker_move.ts +99 -0
- package/core/events/events_selected.d.ts +34 -0
- package/core/events/events_selected.ts +78 -0
- package/core/events/events_theme_change.d.ts +30 -0
- package/core/events/{events_theme_change.js → events_theme_change.ts} +19 -24
- package/core/events/events_toolbox_item_select.d.ts +34 -0
- package/core/events/events_toolbox_item_select.ts +79 -0
- package/core/events/events_trashcan_open.d.ts +31 -0
- package/core/events/events_trashcan_open.ts +68 -0
- package/core/events/events_ui.d.ts +37 -0
- package/core/events/{events_ui.js → events_ui.ts} +27 -26
- package/core/events/events_ui_base.d.ts +26 -0
- package/core/events/{events_ui_base.js → events_ui_base.ts} +17 -26
- package/core/events/events_var_base.d.ts +31 -0
- package/core/events/events_var_base.ts +65 -0
- package/core/events/events_var_create.d.ts +35 -0
- package/core/events/{events_var_create.js → events_var_create.ts} +24 -25
- package/core/events/events_var_delete.d.ts +35 -0
- package/core/events/{events_var_delete.js → events_var_delete.ts} +24 -25
- package/core/events/events_var_rename.d.ts +36 -0
- package/core/events/{events_var_rename.js → events_var_rename.ts} +25 -26
- package/core/events/events_viewport.d.ts +39 -0
- package/core/events/events_viewport.ts +100 -0
- package/core/events/utils.d.ts +272 -0
- package/core/events/{utils.js → utils.ts} +148 -219
- package/core/events/workspace_events.d.ts +36 -0
- package/core/events/workspace_events.ts +86 -0
- package/core/extensions.d.ts +107 -0
- package/core/{extensions.js → extensions.ts} +153 -172
- package/core/field.d.ts +534 -0
- package/core/{field.js → field.ts} +413 -489
- package/core/field_angle.d.ts +176 -0
- package/core/field_angle.ts +563 -0
- package/core/field_checkbox.d.ts +124 -0
- package/core/field_checkbox.ts +243 -0
- package/core/field_colour.d.ts +200 -0
- package/core/field_colour.ts +632 -0
- package/core/field_dropdown.d.ts +222 -0
- package/core/{field_dropdown.js → field_dropdown.ts} +277 -299
- package/core/field_image.d.ts +134 -0
- package/core/field_image.ts +282 -0
- package/core/field_label.d.ts +71 -0
- package/core/field_label.ts +152 -0
- package/core/field_label_serializable.d.ts +42 -0
- package/core/field_label_serializable.ts +76 -0
- package/core/field_multilineinput.d.ts +146 -0
- package/core/{field_multilineinput.js → field_multilineinput.ts} +166 -163
- package/core/field_number.d.ts +156 -0
- package/core/{field_number.js → field_number.ts} +110 -123
- package/core/field_registry.d.ts +45 -0
- package/core/{field_registry.js → field_registry.ts} +37 -30
- package/core/field_textinput.d.ts +219 -0
- package/core/field_textinput.ts +591 -0
- package/core/field_variable.d.ts +217 -0
- package/core/{field_variable.js → field_variable.ts} +174 -187
- package/core/flyout_base.d.ts +459 -0
- package/core/{flyout_base.js → flyout_base.ts} +429 -518
- package/core/flyout_button.d.ts +81 -0
- package/core/flyout_button.ts +292 -0
- package/core/flyout_horizontal.d.ts +82 -0
- package/core/{flyout_horizontal.js → flyout_horizontal.ts} +97 -107
- package/core/flyout_metrics_manager.d.ts +40 -0
- package/core/{flyout_metrics_manager.js → flyout_metrics_manager.ts} +22 -34
- package/core/flyout_vertical.d.ts +83 -0
- package/core/{flyout_vertical.js → flyout_vertical.ts} +106 -117
- package/core/generator.d.ts +205 -0
- package/core/{generator.js → generator.ts} +168 -193
- package/core/gesture.d.ts +357 -0
- package/core/{gesture.js → gesture.ts} +289 -369
- package/core/grid.d.ts +83 -0
- package/core/grid.ts +192 -0
- package/core/icon.d.ts +78 -0
- package/core/icon.ts +189 -0
- package/core/inject.d.ts +15 -0
- package/core/{inject.js → inject.ts} +101 -100
- package/core/input.d.ts +128 -0
- package/core/input.ts +309 -0
- package/core/input_types.d.ts +14 -0
- package/core/{input_types.js → input_types.ts} +8 -12
- package/core/insertion_marker_manager.d.ts +212 -0
- package/core/{insertion_marker_manager.js → insertion_marker_manager.ts} +234 -236
- package/core/interfaces/i_ast_node_location.d.ts +11 -0
- package/core/interfaces/{i_ast_node_location.js → i_ast_node_location.ts} +4 -7
- package/core/interfaces/i_ast_node_location_svg.d.ts +22 -0
- package/core/interfaces/i_ast_node_location_svg.ts +37 -0
- package/core/interfaces/i_ast_node_location_with_block.d.ts +18 -0
- package/core/interfaces/i_ast_node_location_with_block.ts +38 -0
- package/core/interfaces/i_autohideable.d.ts +18 -0
- package/core/interfaces/i_autohideable.ts +34 -0
- package/core/interfaces/i_block_dragger.d.ts +43 -0
- package/core/interfaces/i_block_dragger.ts +67 -0
- package/core/interfaces/i_bounded_element.d.ts +24 -0
- package/core/interfaces/i_bounded_element.ts +42 -0
- package/core/interfaces/i_bubble.d.ts +59 -0
- package/core/interfaces/i_bubble.ts +88 -0
- package/core/interfaces/i_collapsible_toolbox_item.d.ts +26 -0
- package/core/interfaces/i_collapsible_toolbox_item.ts +47 -0
- package/core/interfaces/i_component.d.ts +17 -0
- package/core/interfaces/{i_component.js → i_component.ts} +9 -14
- package/core/interfaces/i_connection_checker.d.ts +69 -0
- package/core/interfaces/i_connection_checker.ts +102 -0
- package/core/interfaces/i_contextmenu.d.ts +13 -0
- package/core/interfaces/i_contextmenu.ts +26 -0
- package/core/interfaces/i_copyable.d.ts +24 -0
- package/core/interfaces/i_copyable.ts +40 -0
- package/core/interfaces/i_deletable.d.ts +16 -0
- package/core/interfaces/{i_deletable.js → i_deletable.ts} +9 -13
- package/core/interfaces/i_delete_area.d.ts +25 -0
- package/core/interfaces/i_delete_area.ts +46 -0
- package/core/interfaces/i_drag_target.d.ts +53 -0
- package/core/interfaces/i_drag_target.ts +84 -0
- package/core/interfaces/i_draggable.d.ts +12 -0
- package/core/interfaces/{i_draggable.js → i_draggable.ts} +4 -10
- package/core/interfaces/i_flyout.d.ts +134 -0
- package/core/interfaces/i_flyout.ts +186 -0
- package/core/interfaces/i_keyboard_accessible.d.ts +18 -0
- package/core/interfaces/i_keyboard_accessible.ts +35 -0
- package/core/interfaces/i_metrics_manager.d.ts +117 -0
- package/core/interfaces/i_metrics_manager.ts +151 -0
- package/core/interfaces/i_movable.d.ts +16 -0
- package/core/interfaces/{i_movable.js → i_movable.ts} +9 -13
- package/core/interfaces/i_positionable.d.ts +27 -0
- package/core/interfaces/i_positionable.ts +50 -0
- package/core/interfaces/i_registrable.d.ts +11 -0
- package/core/interfaces/{i_registrable.js → i_registrable.ts} +3 -7
- package/core/interfaces/i_registrable_field.d.ts +17 -0
- package/core/interfaces/{i_registrable_field.js → i_registrable_field.ts} +8 -16
- package/core/interfaces/i_selectable.d.ts +18 -0
- package/core/interfaces/i_selectable.ts +34 -0
- package/core/interfaces/i_selectable_toolbox_item.d.ts +42 -0
- package/core/interfaces/i_selectable_toolbox_item.ts +64 -0
- package/core/interfaces/i_serializer.d.ts +42 -0
- package/core/interfaces/i_serializer.ts +65 -0
- package/core/interfaces/i_styleable.d.ts +21 -0
- package/core/interfaces/i_styleable.ts +35 -0
- package/core/interfaces/i_toolbox.d.ts +85 -0
- package/core/interfaces/i_toolbox.ts +127 -0
- package/core/interfaces/i_toolbox_item.d.ts +62 -0
- package/core/interfaces/i_toolbox_item.ts +84 -0
- package/core/internal_constants.d.ts +40 -0
- package/core/{internal_constants.js → internal_constants.ts} +13 -18
- package/core/keyboard_nav/ast_node.d.ts +239 -0
- package/core/keyboard_nav/{ast_node.js → ast_node.ts} +207 -231
- package/core/keyboard_nav/basic_cursor.d.ts +88 -0
- package/core/keyboard_nav/{basic_cursor.js → basic_cursor.ts} +55 -66
- package/core/keyboard_nav/cursor.d.ts +41 -0
- package/core/keyboard_nav/{cursor.js → cursor.ts} +25 -35
- package/core/keyboard_nav/marker.d.ts +58 -0
- package/core/keyboard_nav/{marker.js → marker.ts} +36 -55
- package/core/keyboard_nav/tab_navigate_cursor.d.ts +19 -0
- package/core/keyboard_nav/{tab_navigate_cursor.js → tab_navigate_cursor.ts} +11 -15
- package/core/main.d.ts +11 -0
- package/core/main.js +303 -0
- package/core/marker_manager.d.ts +85 -0
- package/core/marker_manager.ts +181 -0
- package/core/menu.d.ts +149 -0
- package/core/{menu.js → menu.ts} +141 -174
- package/core/menuitem.d.ts +118 -0
- package/core/menuitem.ts +240 -0
- package/core/metrics_manager.d.ts +201 -0
- package/core/{metrics_manager.js → metrics_manager.ts} +117 -156
- package/core/msg.d.ts +9 -0
- package/core/{msg.js → msg.ts} +4 -8
- package/core/mutator.d.ts +128 -0
- package/core/{mutator.js → mutator.ts} +196 -211
- package/core/names.d.ts +124 -0
- package/core/names.ts +267 -0
- package/core/options.d.ts +137 -0
- package/core/{options.js → options.ts} +147 -173
- package/core/positionable_helpers.d.ts +88 -0
- package/core/{positionable_helpers.js → positionable_helpers.ts} +63 -70
- package/core/procedures.d.ts +108 -0
- package/core/{procedures.js → procedures.ts} +143 -152
- package/core/registry.d.ts +137 -0
- package/core/registry.ts +339 -0
- package/core/rendered_connection.d.ts +191 -0
- package/core/{rendered_connection.js → rendered_connection.ts} +164 -184
- package/core/renderers/common/block_rendering.d.ts +114 -0
- package/core/renderers/common/block_rendering.ts +164 -0
- package/core/renderers/common/constants.d.ts +458 -0
- package/core/renderers/common/constants.ts +1124 -0
- package/core/renderers/common/debug.d.ts +28 -0
- package/core/renderers/common/{debug.js → debug.ts} +14 -20
- package/core/renderers/common/debugger.d.ts +120 -0
- package/core/renderers/common/{debugger.js → debugger.ts} +100 -124
- package/core/renderers/common/drawer.d.ts +132 -0
- package/core/renderers/common/{drawer.js → drawer.ts} +112 -137
- package/core/renderers/common/i_path_object.d.ts +117 -0
- package/core/renderers/common/i_path_object.ts +161 -0
- package/core/renderers/common/info.d.ts +194 -0
- package/core/renderers/common/{info.js → info.ts} +165 -222
- package/core/renderers/common/marker_svg.d.ts +220 -0
- package/core/renderers/common/marker_svg.ts +680 -0
- package/core/renderers/common/path_object.d.ts +146 -0
- package/core/renderers/common/path_object.ts +272 -0
- package/core/renderers/common/renderer.d.ts +157 -0
- package/core/renderers/common/renderer.ts +271 -0
- package/core/renderers/geras/constants.d.ts +23 -0
- package/core/renderers/geras/constants.ts +61 -0
- package/core/renderers/geras/drawer.d.ts +43 -0
- package/core/renderers/geras/{drawer.js → drawer.ts} +40 -84
- package/core/renderers/geras/geras.d.ts +11 -0
- package/core/renderers/geras/geras.ts +37 -0
- package/core/renderers/geras/highlight_constants.d.ts +108 -0
- package/core/renderers/geras/{highlight_constants.js → highlight_constants.ts} +107 -69
- package/core/renderers/geras/highlighter.d.ts +98 -0
- package/core/renderers/geras/{highlighter.js → highlighter.ts} +81 -86
- package/core/renderers/geras/info.d.ts +45 -0
- package/core/renderers/geras/{info.js → info.ts} +61 -99
- package/core/renderers/geras/measurables/inline_input.d.ts +23 -0
- package/core/renderers/geras/measurables/inline_input.ts +51 -0
- package/core/renderers/geras/measurables/statement_input.d.ts +23 -0
- package/core/renderers/geras/measurables/statement_input.ts +50 -0
- package/core/renderers/geras/path_object.d.ts +47 -0
- package/core/renderers/geras/{path_object.js → path_object.ts} +46 -74
- package/core/renderers/geras/renderer.d.ts +69 -0
- package/core/renderers/geras/renderer.ts +126 -0
- package/core/renderers/measurables/base.d.ts +27 -0
- package/core/renderers/measurables/base.ts +53 -0
- package/core/renderers/measurables/bottom_row.d.ts +61 -0
- package/core/renderers/measurables/bottom_row.ts +120 -0
- package/core/renderers/measurables/connection.d.ts +25 -0
- package/core/renderers/measurables/connection.ts +52 -0
- package/core/renderers/measurables/external_value_input.d.ts +27 -0
- package/core/renderers/measurables/external_value_input.ts +65 -0
- package/core/renderers/measurables/field.d.ts +30 -0
- package/core/renderers/measurables/field.ts +63 -0
- package/core/renderers/measurables/hat.d.ts +21 -0
- package/core/renderers/measurables/{hat.js → hat.ts} +12 -14
- package/core/renderers/measurables/icon.d.ts +26 -0
- package/core/renderers/measurables/{icon.js → icon.ts} +14 -18
- package/core/renderers/measurables/in_row_spacer.d.ts +21 -0
- package/core/renderers/measurables/in_row_spacer.ts +44 -0
- package/core/renderers/measurables/inline_input.d.ts +24 -0
- package/core/renderers/measurables/{inline_input.js → inline_input.ts} +22 -26
- package/core/renderers/measurables/input_connection.d.ts +29 -0
- package/core/renderers/measurables/input_connection.ts +66 -0
- package/core/renderers/measurables/input_row.d.ts +30 -0
- package/core/renderers/measurables/{input_row.js → input_row.ts} +24 -31
- package/core/renderers/measurables/jagged_edge.d.ts +20 -0
- package/core/renderers/measurables/{jagged_edge.js → jagged_edge.ts} +10 -13
- package/core/renderers/measurables/next_connection.d.ts +23 -0
- package/core/renderers/measurables/next_connection.ts +47 -0
- package/core/renderers/measurables/output_connection.d.ts +26 -0
- package/core/renderers/measurables/output_connection.ts +56 -0
- package/core/renderers/measurables/previous_connection.d.ts +23 -0
- package/core/renderers/measurables/previous_connection.ts +47 -0
- package/core/renderers/measurables/round_corner.d.ts +21 -0
- package/core/renderers/measurables/round_corner.ts +49 -0
- package/core/renderers/measurables/row.d.ts +141 -0
- package/core/renderers/measurables/row.ts +225 -0
- package/core/renderers/measurables/spacer_row.d.ts +29 -0
- package/core/renderers/measurables/spacer_row.ts +55 -0
- package/core/renderers/measurables/square_corner.d.ts +21 -0
- package/core/renderers/measurables/square_corner.ts +47 -0
- package/core/renderers/measurables/statement_input.d.ts +22 -0
- package/core/renderers/measurables/{statement_input.js → statement_input.ts} +14 -18
- package/core/renderers/measurables/top_row.d.ts +56 -0
- package/core/renderers/measurables/top_row.ts +122 -0
- package/core/renderers/measurables/types.d.ts +235 -0
- package/core/renderers/measurables/types.ts +332 -0
- package/core/renderers/minimalist/constants.d.ts +14 -0
- package/core/renderers/minimalist/{constants.js → constants.ts} +5 -10
- package/core/renderers/minimalist/drawer.d.ts +21 -0
- package/core/renderers/minimalist/drawer.ts +38 -0
- package/core/renderers/minimalist/info.d.ts +30 -0
- package/core/renderers/minimalist/info.ts +52 -0
- package/core/renderers/minimalist/minimalist.d.ts +6 -0
- package/core/renderers/minimalist/minimalist.ts +22 -0
- package/core/renderers/minimalist/renderer.d.ts +41 -0
- package/core/renderers/minimalist/renderer.ts +71 -0
- package/core/renderers/thrasos/info.d.ts +40 -0
- package/core/renderers/thrasos/{info.js → info.ts} +66 -67
- package/core/renderers/thrasos/renderer.d.ts +25 -0
- package/core/renderers/thrasos/renderer.ts +48 -0
- package/core/renderers/thrasos/thrasos.d.ts +4 -0
- package/core/renderers/thrasos/thrasos.ts +20 -0
- package/core/renderers/zelos/constants.d.ts +186 -0
- package/core/renderers/zelos/{constants.js → constants.ts} +294 -441
- package/core/renderers/zelos/drawer.d.ts +47 -0
- package/core/renderers/zelos/{drawer.js → drawer.ts} +73 -95
- package/core/renderers/zelos/info.d.ts +88 -0
- package/core/renderers/zelos/{info.js → info.ts} +111 -142
- package/core/renderers/zelos/marker_svg.d.ts +46 -0
- package/core/renderers/zelos/marker_svg.ts +151 -0
- package/core/renderers/zelos/measurables/bottom_row.d.ts +27 -0
- package/core/renderers/zelos/measurables/bottom_row.ts +53 -0
- package/core/renderers/zelos/measurables/inputs.d.ts +23 -0
- package/core/renderers/zelos/measurables/{inputs.js → inputs.ts} +14 -15
- package/core/renderers/zelos/measurables/row_elements.d.ts +21 -0
- package/core/renderers/zelos/measurables/row_elements.ts +45 -0
- package/core/renderers/zelos/measurables/top_row.d.ts +29 -0
- package/core/renderers/zelos/measurables/{top_row.js → top_row.ts} +14 -27
- package/core/renderers/zelos/path_object.d.ts +77 -0
- package/core/renderers/zelos/path_object.ts +215 -0
- package/core/renderers/zelos/renderer.d.ts +74 -0
- package/core/renderers/zelos/renderer.ts +142 -0
- package/core/renderers/zelos/zelos.d.ts +12 -0
- package/core/renderers/zelos/zelos.ts +39 -0
- package/core/scrollbar.d.ts +277 -0
- package/core/{scrollbar.js → scrollbar.ts} +307 -328
- package/core/scrollbar_pair.d.ts +105 -0
- package/core/{scrollbar_pair.js → scrollbar_pair.ts} +71 -79
- package/core/serialization/blocks.d.ts +98 -0
- package/core/serialization/{blocks.js → blocks.ts} +229 -228
- package/core/serialization/exceptions.d.ts +73 -0
- package/core/serialization/exceptions.ts +98 -0
- package/core/serialization/priorities.d.ts +15 -0
- package/core/serialization/{priorities.js → priorities.ts} +4 -10
- package/core/serialization/registry.d.ts +20 -0
- package/core/serialization/{registry.js → registry.ts} +11 -13
- package/core/serialization/variables.d.ts +14 -0
- package/core/serialization/{variables.js → variables.ts} +30 -32
- package/core/serialization/workspaces.d.ts +28 -0
- package/core/serialization/{workspaces.js → workspaces.ts} +30 -27
- package/core/shortcut_items.d.ts +61 -0
- package/core/{shortcut_items.js → shortcut_items.ts} +121 -157
- package/core/shortcut_registry.d.ts +151 -0
- package/core/shortcut_registry.ts +355 -0
- package/core/sprites.d.ts +19 -0
- package/core/{sprites.js → sprites.ts} +4 -6
- package/core/theme/classic.d.ts +12 -0
- package/core/theme/{classic.js → classic.ts} +5 -7
- package/core/theme/themes.d.ts +8 -0
- package/core/theme/themes.ts +22 -0
- package/core/theme/zelos.d.ts +11 -0
- package/core/theme/{zelos.js → zelos.ts} +4 -7
- package/core/theme.d.ts +142 -0
- package/core/theme.ts +221 -0
- package/core/theme_manager.d.ts +81 -0
- package/core/theme_manager.ts +186 -0
- package/core/toolbox/category.d.ts +239 -0
- package/core/toolbox/category.ts +679 -0
- package/core/toolbox/collapsible_category.d.ts +91 -0
- package/core/toolbox/collapsible_category.ts +273 -0
- package/core/toolbox/separator.d.ts +39 -0
- package/core/toolbox/separator.ts +105 -0
- package/core/toolbox/toolbox.d.ts +352 -0
- package/core/toolbox/{toolbox.js → toolbox.ts} +316 -432
- package/core/toolbox/toolbox_item.d.ts +85 -0
- package/core/toolbox/toolbox_item.ts +147 -0
- package/core/tooltip.d.ts +126 -0
- package/core/{tooltip.js → tooltip.ts} +136 -214
- package/core/touch.d.ts +121 -0
- package/core/touch.ts +306 -0
- package/core/touch_gesture.d.ts +115 -0
- package/core/{touch_gesture.js → touch_gesture.ts} +87 -125
- package/core/trashcan.d.ts +195 -0
- package/core/{trashcan.js → trashcan.ts} +226 -312
- package/core/utils/aria.d.ts +67 -0
- package/core/utils/{aria.js → aria.ts} +47 -61
- package/core/utils/array.d.ts +14 -0
- package/core/utils/{array.js → array.ts} +10 -12
- package/core/utils/colour.d.ts +103 -0
- package/core/utils/{colour.js → colour.ts} +60 -72
- package/core/utils/coordinate.d.ts +72 -0
- package/core/utils/coordinate.ts +124 -0
- package/core/utils/deprecation.d.ts +17 -0
- package/core/utils/{deprecation.js → deprecation.ts} +11 -11
- package/core/utils/dom.d.ts +165 -0
- package/core/utils/{dom.js → dom.ts} +125 -147
- package/core/utils/idgenerator.d.ts +25 -0
- package/core/utils/{idgenerator.js → idgenerator.ts} +15 -18
- package/core/utils/keycodes.d.ts +137 -0
- package/core/utils/keycodes.ts +169 -0
- package/core/utils/math.d.ts +30 -0
- package/core/utils/{math.js → math.ts} +17 -19
- package/core/utils/metrics.d.ts +64 -0
- package/core/utils/metrics.ts +97 -0
- package/core/utils/object.d.ts +35 -0
- package/core/utils/{object.js → object.ts} +30 -26
- package/core/utils/parsing.d.ts +50 -0
- package/core/utils/{parsing.js → parsing.ts} +50 -50
- package/core/utils/rect.d.ts +38 -0
- package/core/utils/{rect.js → rect.ts} +18 -31
- package/core/utils/sentinel.d.ts +11 -0
- package/core/utils/{sentinel.js → sentinel.ts} +3 -5
- package/core/utils/size.d.ts +27 -0
- package/core/utils/{size.js → size.ts} +12 -26
- package/core/utils/string.d.ts +55 -0
- package/core/utils/{string.js → string.ts} +64 -61
- package/core/utils/style.d.ts +127 -0
- package/core/utils/{style.js → style.ts} +102 -92
- package/core/utils/svg.d.ts +68 -0
- package/core/utils/svg.ts +88 -0
- package/core/utils/svg_math.d.ts +70 -0
- package/core/utils/{svg_math.js → svg_math.ts} +72 -71
- package/core/utils/svg_paths.d.ts +101 -0
- package/core/utils/{svg_paths.js → svg_paths.ts} +56 -65
- package/core/utils/toolbox.d.ts +193 -0
- package/core/utils/toolbox.ts +433 -0
- package/core/utils/useragent.d.ts +33 -0
- package/core/utils/useragent.ts +135 -0
- package/core/utils/xml.d.ts +52 -0
- package/core/utils/{xml.js → xml.ts} +26 -36
- package/core/utils.d.ts +217 -0
- package/core/utils.ts +428 -0
- package/core/variable_map.d.ts +141 -0
- package/core/{variable_map.js → variable_map.ts} +131 -149
- package/core/variable_model.d.ts +40 -0
- package/core/variable_model.ts +82 -0
- package/core/variables.d.ts +181 -0
- package/core/{variables.js → variables.ts} +206 -188
- package/core/variables_dynamic.d.ts +38 -0
- package/core/{variables_dynamic.js → variables_dynamic.ts} +47 -43
- package/core/warning.d.ts +50 -0
- package/core/{warning.js → warning.ts} +52 -66
- package/core/widgetdiv.d.ts +69 -0
- package/core/widgetdiv.ts +257 -0
- package/core/workspace.d.ts +386 -0
- package/core/workspace.ts +801 -0
- package/core/workspace_audio.d.ts +47 -0
- package/core/{workspace_audio.js → workspace_audio.ts} +47 -60
- package/core/workspace_comment.d.ts +170 -0
- package/core/workspace_comment.ts +398 -0
- package/core/workspace_comment_svg.d.ts +329 -0
- package/core/{workspace_comment_svg.js → workspace_comment_svg.ts} +347 -444
- package/core/workspace_drag_surface_svg.d.ts +68 -0
- package/core/{workspace_drag_surface_svg.js → workspace_drag_surface_svg.ts} +75 -82
- package/core/workspace_dragger.d.ts +48 -0
- package/core/workspace_dragger.ts +104 -0
- package/core/workspace_svg.d.ts +920 -0
- package/core/{workspace_svg.js → workspace_svg.ts} +855 -935
- package/core/xml.d.ts +117 -0
- package/core/{xml.js → xml.ts} +306 -326
- package/core/zoom_controls.d.ts +130 -0
- package/core/{zoom_controls.js → zoom_controls.ts} +185 -251
- package/core.d.ts +1 -3
- package/core.js +1 -2
- package/dart.d.ts +0 -3
- package/dart_compressed.js +387 -99
- package/dart_compressed.js.map +1 -1
- package/generators/dart/all.js +2 -0
- package/generators/dart/colour.js +1 -1
- package/generators/dart/lists.js +1 -1
- package/generators/dart/logic.js +1 -1
- package/generators/dart/loops.js +1 -1
- package/generators/dart/math.js +1 -1
- package/generators/dart/procedures.js +1 -1
- package/generators/dart/text.js +1 -1
- package/generators/dart/variables.js +1 -1
- package/generators/dart/variables_dynamic.js +1 -1
- package/generators/dart.js +1 -2
- package/generators/javascript/all.js +2 -0
- package/generators/javascript/colour.js +1 -1
- package/generators/javascript/lists.js +1 -1
- package/generators/javascript/logic.js +1 -1
- package/generators/javascript/loops.js +1 -1
- package/generators/javascript/math.js +4 -4
- package/generators/javascript/procedures.js +1 -1
- package/generators/javascript/text.js +2 -2
- package/generators/javascript/variables.js +1 -1
- package/generators/javascript/variables_dynamic.js +1 -1
- package/generators/javascript.js +1 -3
- package/generators/lua/all.js +2 -0
- package/generators/lua/colour.js +1 -1
- package/generators/lua/lists.js +1 -1
- package/generators/lua/logic.js +1 -1
- package/generators/lua/loops.js +1 -1
- package/generators/lua/math.js +1 -1
- package/generators/lua/procedures.js +1 -1
- package/generators/lua/text.js +1 -1
- package/generators/lua/variables.js +1 -1
- package/generators/lua/variables_dynamic.js +1 -1
- package/generators/lua.js +1 -2
- package/generators/php/all.js +2 -0
- package/generators/php/colour.js +1 -1
- package/generators/php/lists.js +1 -2
- package/generators/php/logic.js +1 -1
- package/generators/php/loops.js +1 -1
- package/generators/php/math.js +1 -1
- package/generators/php/procedures.js +1 -1
- package/generators/php/text.js +1 -1
- package/generators/php/variables.js +1 -1
- package/generators/php/variables_dynamic.js +1 -1
- package/generators/php.js +1 -2
- package/generators/python/all.js +2 -0
- package/generators/python/colour.js +3 -3
- package/generators/python/lists.js +1 -1
- package/generators/python/logic.js +1 -1
- package/generators/python/loops.js +4 -7
- package/generators/python/math.js +1 -1
- package/generators/python/procedures.js +1 -1
- package/generators/python/text.js +1 -1
- package/generators/python/variables.js +1 -1
- package/generators/python/variables_dynamic.js +1 -1
- package/generators/python.js +1 -2
- package/index.d.ts +2 -8
- package/javascript.d.ts +0 -3
- package/javascript_compressed.js +314 -104
- package/javascript_compressed.js.map +1 -1
- package/lua.d.ts +0 -3
- package/lua_compressed.js +399 -81
- package/lua_compressed.js.map +1 -1
- package/msg/ab.js +421 -421
- package/msg/ace.js +421 -421
- package/msg/af.js +421 -421
- package/msg/am.js +421 -421
- package/msg/ar.js +421 -421
- package/msg/ast.js +421 -421
- package/msg/az.js +421 -421
- package/msg/ba.js +421 -421
- package/msg/bcc.js +421 -421
- package/msg/be-tarask.js +421 -421
- package/msg/be.js +421 -421
- package/msg/bg.js +421 -421
- package/msg/bn.js +421 -421
- package/msg/br.js +421 -421
- package/msg/bs.js +421 -421
- package/msg/ca.js +421 -421
- package/msg/cdo.js +421 -421
- package/msg/cs.js +421 -421
- package/msg/da.js +421 -421
- package/msg/de.js +421 -421
- package/msg/diq.js +421 -421
- package/msg/dty.js +421 -421
- package/msg/ee.js +421 -421
- package/msg/el.js +421 -421
- package/msg/en-gb.js +421 -421
- package/msg/en.js +421 -421
- package/msg/eo.js +421 -421
- package/msg/es.js +421 -421
- package/msg/et.js +421 -421
- package/msg/eu.js +421 -421
- package/msg/fa.js +421 -421
- package/msg/fi.js +421 -421
- package/msg/fo.js +421 -421
- package/msg/fr.js +421 -421
- package/msg/frr.js +421 -421
- package/msg/gl.js +421 -421
- package/msg/gn.js +421 -421
- package/msg/gor.js +421 -421
- package/msg/ha.js +421 -421
- package/msg/hak.js +421 -421
- package/msg/he.js +421 -421
- package/msg/hi.js +421 -421
- package/msg/hr.js +421 -421
- package/msg/hrx.js +421 -421
- package/msg/hu.js +421 -421
- package/msg/hy.js +421 -421
- package/msg/ia.js +421 -421
- package/msg/id.js +421 -421
- package/msg/ig.js +421 -421
- package/msg/inh.js +421 -421
- package/msg/is.js +421 -421
- package/msg/it.js +421 -421
- package/msg/ja.js +421 -421
- package/msg/ka.js +421 -421
- package/msg/kab.js +421 -421
- package/msg/kbd-cyrl.js +421 -421
- package/msg/km.js +421 -421
- package/msg/kn.js +421 -421
- package/msg/ko.js +421 -421
- package/msg/ksh.js +421 -421
- package/msg/ku-latn.js +421 -421
- package/msg/ky.js +421 -421
- package/msg/la.js +421 -421
- package/msg/lb.js +421 -421
- package/msg/lki.js +421 -421
- package/msg/lo.js +421 -421
- package/msg/lrc.js +421 -421
- package/msg/lt.js +421 -421
- package/msg/lv.js +421 -421
- package/msg/mg.js +421 -421
- package/msg/mk.js +421 -421
- package/msg/ml.js +421 -421
- package/msg/mnw.js +421 -421
- package/msg/ms.js +421 -421
- package/msg/my.js +421 -421
- package/msg/mzn.js +421 -421
- package/msg/nb.js +421 -421
- package/msg/ne.js +421 -421
- package/msg/nl.js +421 -421
- package/msg/oc.js +421 -421
- package/msg/olo.js +421 -421
- package/msg/pa.js +421 -421
- package/msg/pl.js +421 -421
- package/msg/pms.js +421 -421
- package/msg/ps.js +421 -421
- package/msg/pt-br.js +421 -421
- package/msg/pt.js +421 -421
- package/msg/ro.js +421 -421
- package/msg/ru.js +421 -421
- package/msg/sc.js +421 -421
- package/msg/sco.js +421 -421
- package/msg/sd.js +421 -421
- package/msg/shn.js +421 -421
- package/msg/si.js +421 -421
- package/msg/sk.js +421 -421
- package/msg/skr-arab.js +421 -421
- package/msg/sl.js +421 -421
- package/msg/smn.js +421 -421
- package/msg/sq.js +421 -421
- package/msg/sr-latn.js +421 -421
- package/msg/sr.js +421 -421
- package/msg/sv.js +421 -421
- package/msg/sw.js +421 -421
- package/msg/ta.js +421 -421
- package/msg/tcy.js +421 -421
- package/msg/te.js +421 -421
- package/msg/th.js +421 -421
- package/msg/ti.js +421 -421
- package/msg/tl.js +421 -421
- package/msg/tlh.js +421 -421
- package/msg/tr.js +421 -421
- package/msg/ug-arab.js +421 -421
- package/msg/uk.js +421 -421
- package/msg/ur.js +421 -421
- package/msg/uz.js +421 -421
- package/msg/vi.js +421 -421
- package/msg/xmf.js +421 -421
- package/msg/yo.js +421 -421
- package/msg/yue.js +421 -421
- package/msg/zgh.js +421 -421
- package/msg/zh-hans.js +421 -421
- package/msg/zh-hant.js +421 -421
- package/package.json +5 -5
- package/php.d.ts +0 -3
- package/php_compressed.js +322 -93
- package/php_compressed.js.map +1 -1
- package/python.d.ts +0 -3
- package/python_compressed.js +237 -90
- package/python_compressed.js.map +1 -1
- package/blockly.d.ts +0 -26127
- package/core/blockly_options.js +0 -28
- package/core/bubble_dragger.js +0 -298
- package/core/clipboard.js +0 -80
- package/core/component_manager.js +0 -263
- package/core/contextmenu_items.js +0 -651
- package/core/contextmenu_registry.js +0 -178
- package/core/delete_area.js +0 -87
- package/core/dialog.js +0 -107
- package/core/drag_target.js +0 -98
- package/core/events/events.js +0 -147
- package/core/events/events_abstract.js +0 -133
- package/core/events/events_block_base.js +0 -70
- package/core/events/events_block_drag.js +0 -89
- package/core/events/events_bubble_open.js +0 -90
- package/core/events/events_comment_base.js +0 -121
- package/core/events/events_marker_move.js +0 -110
- package/core/events/events_selected.js +0 -83
- package/core/events/events_toolbox_item_select.js +0 -84
- package/core/events/events_trashcan_open.js +0 -73
- package/core/events/events_var_base.js +0 -70
- package/core/events/events_viewport.js +0 -107
- package/core/events/workspace_events.js +0 -93
- package/core/field_angle.js +0 -591
- package/core/field_checkbox.js +0 -255
- package/core/field_colour.js +0 -717
- package/core/field_image.js +0 -304
- package/core/field_label.js +0 -149
- package/core/field_label_serializable.js +0 -80
- package/core/field_textinput.js +0 -619
- package/core/flyout_button.js +0 -356
- package/core/grid.js +0 -226
- package/core/icon.js +0 -225
- package/core/input.js +0 -335
- package/core/interfaces/i_ast_node_location_svg.js +0 -45
- package/core/interfaces/i_ast_node_location_with_block.js +0 -41
- package/core/interfaces/i_autohideable.js +0 -40
- package/core/interfaces/i_block_dragger.js +0 -66
- package/core/interfaces/i_bounded_element.js +0 -45
- package/core/interfaces/i_bubble.js +0 -95
- package/core/interfaces/i_collapsible_toolbox_item.js +0 -53
- package/core/interfaces/i_connection_checker.js +0 -104
- package/core/interfaces/i_contextmenu.js +0 -32
- package/core/interfaces/i_copyable.js +0 -49
- package/core/interfaces/i_delete_area.js +0 -50
- package/core/interfaces/i_drag_target.js +0 -88
- package/core/interfaces/i_flyout.js +0 -201
- package/core/interfaces/i_keyboard_accessible.js +0 -38
- package/core/interfaces/i_metrics_manager.js +0 -154
- package/core/interfaces/i_positionable.js +0 -51
- package/core/interfaces/i_selectable.js +0 -51
- package/core/interfaces/i_selectable_toolbox_item.js +0 -73
- package/core/interfaces/i_serializer.js +0 -77
- package/core/interfaces/i_styleable.js +0 -39
- package/core/interfaces/i_toolbox.js +0 -142
- package/core/interfaces/i_toolbox_item.js +0 -85
- package/core/marker_manager.js +0 -213
- package/core/menuitem.js +0 -292
- package/core/names.js +0 -293
- package/core/registry.js +0 -384
- package/core/renderers/common/block_rendering.js +0 -170
- package/core/renderers/common/constants.js +0 -1250
- package/core/renderers/common/i_path_object.js +0 -162
- package/core/renderers/common/marker_svg.js +0 -721
- package/core/renderers/common/path_object.js +0 -283
- package/core/renderers/common/renderer.js +0 -305
- package/core/renderers/geras/constants.js +0 -73
- package/core/renderers/geras/geras.js +0 -36
- package/core/renderers/geras/measurables/inline_input.js +0 -58
- package/core/renderers/geras/measurables/statement_input.js +0 -57
- package/core/renderers/geras/renderer.js +0 -149
- package/core/renderers/measurables/base.js +0 -64
- package/core/renderers/measurables/bottom_row.js +0 -138
- package/core/renderers/measurables/connection.js +0 -56
- package/core/renderers/measurables/external_value_input.js +0 -70
- package/core/renderers/measurables/field.js +0 -71
- package/core/renderers/measurables/in_row_spacer.js +0 -47
- package/core/renderers/measurables/input_connection.js +0 -75
- package/core/renderers/measurables/next_connection.js +0 -50
- package/core/renderers/measurables/output_connection.js +0 -61
- package/core/renderers/measurables/previous_connection.js +0 -50
- package/core/renderers/measurables/round_corner.js +0 -52
- package/core/renderers/measurables/row.js +0 -247
- package/core/renderers/measurables/spacer_row.js +0 -69
- package/core/renderers/measurables/square_corner.js +0 -50
- package/core/renderers/measurables/top_row.js +0 -143
- package/core/renderers/measurables/types.js +0 -353
- package/core/renderers/minimalist/drawer.js +0 -42
- package/core/renderers/minimalist/info.js +0 -54
- package/core/renderers/minimalist/minimalist.js +0 -26
- package/core/renderers/minimalist/renderer.js +0 -80
- package/core/renderers/thrasos/renderer.js +0 -53
- package/core/renderers/thrasos/thrasos.js +0 -22
- package/core/renderers/zelos/marker_svg.js +0 -179
- package/core/renderers/zelos/measurables/bottom_row.js +0 -66
- package/core/renderers/zelos/measurables/row_elements.js +0 -46
- package/core/renderers/zelos/path_object.js +0 -247
- package/core/renderers/zelos/renderer.js +0 -147
- package/core/renderers/zelos/zelos.js +0 -38
- package/core/serialization/exceptions.js +0 -144
- package/core/shortcut_registry.js +0 -366
- package/core/theme/themes.js +0 -23
- package/core/theme.js +0 -228
- package/core/theme_manager.js +0 -211
- package/core/toolbox/category.js +0 -751
- package/core/toolbox/collapsible_category.js +0 -311
- package/core/toolbox/separator.js +0 -133
- package/core/toolbox/toolbox_item.js +0 -173
- package/core/touch.js +0 -285
- package/core/utils/coordinate.js +0 -138
- package/core/utils/global.js +0 -41
- package/core/utils/keycodes.js +0 -172
- package/core/utils/metrics.js +0 -154
- package/core/utils/svg.js +0 -186
- package/core/utils/toolbox.js +0 -459
- package/core/utils/useragent.js +0 -197
- package/core/utils.js +0 -383
- package/core/variable_model.js +0 -96
- package/core/widgetdiv.js +0 -290
- package/core/workspace.js +0 -836
- package/core/workspace_comment.js +0 -400
- package/core/workspace_dragger.js +0 -115
|
@@ -7,48 +7,41 @@
|
|
|
7
7
|
/**
|
|
8
8
|
* @fileoverview Methods for graphically rendering a block as SVG.
|
|
9
9
|
*/
|
|
10
|
-
'use strict';
|
|
11
10
|
|
|
12
11
|
/**
|
|
13
12
|
* Methods for graphically rendering a block as SVG.
|
|
14
13
|
* @class
|
|
15
14
|
*/
|
|
16
|
-
goog
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
const {SpacerRow} = goog.require('Blockly.blockRendering.SpacerRow');
|
|
47
|
-
const {SquareCorner} = goog.require('Blockly.blockRendering.SquareCorner');
|
|
48
|
-
const {StatementInput} = goog.require('Blockly.blockRendering.StatementInput');
|
|
49
|
-
const {TopRow} = goog.require('Blockly.blockRendering.TopRow');
|
|
50
|
-
const {Types} = goog.require('Blockly.blockRendering.Types');
|
|
51
|
-
const {inputTypes} = goog.require('Blockly.inputTypes');
|
|
15
|
+
import * as goog from '../../../closure/goog/goog.js';
|
|
16
|
+
goog.declareModuleId('Blockly.blockRendering.RenderInfo');
|
|
17
|
+
|
|
18
|
+
import type {BlockSvg} from '../../block_svg.js';
|
|
19
|
+
import {Align, Input} from '../../input.js';
|
|
20
|
+
import {inputTypes} from '../../input_types.js';
|
|
21
|
+
import type {RenderedConnection} from '../../rendered_connection.js';
|
|
22
|
+
import type {Measurable} from '../measurables/base.js';
|
|
23
|
+
import {BottomRow} from '../measurables/bottom_row.js';
|
|
24
|
+
import {ExternalValueInput} from '../measurables/external_value_input.js';
|
|
25
|
+
import {Field} from '../measurables/field.js';
|
|
26
|
+
import {Hat} from '../measurables/hat.js';
|
|
27
|
+
import {Icon} from '../measurables/icon.js';
|
|
28
|
+
import {InRowSpacer} from '../measurables/in_row_spacer.js';
|
|
29
|
+
import {InlineInput} from '../measurables/inline_input.js';
|
|
30
|
+
import {InputRow} from '../measurables/input_row.js';
|
|
31
|
+
import {JaggedEdge} from '../measurables/jagged_edge.js';
|
|
32
|
+
import {NextConnection} from '../measurables/next_connection.js';
|
|
33
|
+
import {OutputConnection} from '../measurables/output_connection.js';
|
|
34
|
+
import {PreviousConnection} from '../measurables/previous_connection.js';
|
|
35
|
+
import {RoundCorner} from '../measurables/round_corner.js';
|
|
36
|
+
import type {Row} from '../measurables/row.js';
|
|
37
|
+
import {SpacerRow} from '../measurables/spacer_row.js';
|
|
38
|
+
import {SquareCorner} from '../measurables/square_corner.js';
|
|
39
|
+
import {StatementInput} from '../measurables/statement_input.js';
|
|
40
|
+
import {TopRow} from '../measurables/top_row.js';
|
|
41
|
+
import {Types} from '../measurables/types.js';
|
|
42
|
+
|
|
43
|
+
import type {ConstantProvider} from './constants.js';
|
|
44
|
+
import type {Renderer} from './renderer.js';
|
|
52
45
|
|
|
53
46
|
|
|
54
47
|
/**
|
|
@@ -59,133 +52,107 @@ const {inputTypes} = goog.require('Blockly.inputTypes');
|
|
|
59
52
|
* repeatedly may be expensive.
|
|
60
53
|
* @alias Blockly.blockRendering.RenderInfo
|
|
61
54
|
*/
|
|
62
|
-
class RenderInfo {
|
|
55
|
+
export class RenderInfo {
|
|
56
|
+
block_: AnyDuringMigration;
|
|
57
|
+
protected constants_: ConstantProvider;
|
|
58
|
+
outputConnection: OutputConnection;
|
|
59
|
+
isInline: boolean;
|
|
60
|
+
isCollapsed: boolean;
|
|
61
|
+
isInsertionMarker: boolean;
|
|
62
|
+
RTL: boolean;
|
|
63
|
+
|
|
64
|
+
/** The block renderer in use. */
|
|
65
|
+
protected readonly renderer_: Renderer;
|
|
66
|
+
|
|
67
|
+
/** The height of the rendered block, including child blocks. */
|
|
68
|
+
height = 0;
|
|
69
|
+
|
|
70
|
+
/** The width of the rendered block, including child blocks. */
|
|
71
|
+
widthWithChildren = 0;
|
|
72
|
+
|
|
63
73
|
/**
|
|
64
|
-
*
|
|
65
|
-
*
|
|
66
|
-
* @package
|
|
74
|
+
* The width of the rendered block, excluding child blocks. This is the
|
|
75
|
+
* right edge of the block when rendered LTR.
|
|
67
76
|
*/
|
|
68
|
-
|
|
69
|
-
|
|
77
|
+
width = 0;
|
|
78
|
+
statementEdge = 0;
|
|
70
79
|
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
80
|
+
/** An array of Row objects containing sizing information. */
|
|
81
|
+
rows: Row[] = [];
|
|
82
|
+
|
|
83
|
+
/** An array of input rows on the block. */
|
|
84
|
+
inputRows: InputRow[] = [];
|
|
85
|
+
|
|
86
|
+
/** An array of measurable objects containing hidden icons. */
|
|
87
|
+
hiddenIcons: Icon[] = [];
|
|
88
|
+
topRow: TopRow;
|
|
89
|
+
bottomRow: BottomRow;
|
|
90
|
+
|
|
91
|
+
// The position of the start point for drawing, relative to the block's
|
|
92
|
+
// location.
|
|
93
|
+
startX = 0;
|
|
94
|
+
startY = 0;
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* @param renderer The renderer in use.
|
|
98
|
+
* @param block The block to measure.
|
|
99
|
+
* @internal
|
|
100
|
+
*/
|
|
101
|
+
constructor(renderer: Renderer, block: BlockSvg) {
|
|
76
102
|
this.renderer_ = renderer;
|
|
77
103
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
* @protected
|
|
82
|
-
*/
|
|
104
|
+
this.block_ = block;
|
|
105
|
+
|
|
106
|
+
/** The renderer's constant provider. */
|
|
83
107
|
this.constants_ = this.renderer_.getConstants();
|
|
84
108
|
|
|
85
109
|
/**
|
|
86
110
|
* A measurable representing the output connection if the block has one.
|
|
87
111
|
* Otherwise null.
|
|
88
|
-
* @type {OutputConnection}
|
|
89
112
|
*/
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
113
|
+
// AnyDuringMigration because: Type 'OutputConnection | null' is not
|
|
114
|
+
// assignable to type 'OutputConnection'.
|
|
115
|
+
this.outputConnection =
|
|
116
|
+
(!block.outputConnection ?
|
|
117
|
+
null :
|
|
118
|
+
new OutputConnection(this.constants_, (block.outputConnection))) as
|
|
119
|
+
AnyDuringMigration;
|
|
95
120
|
|
|
96
121
|
/**
|
|
97
122
|
* Whether the block should be rendered as a single line, either because
|
|
98
123
|
* it's inline or because it has been collapsed.
|
|
99
|
-
* @type {boolean}
|
|
100
124
|
*/
|
|
101
125
|
this.isInline = block.getInputsInline() && !block.isCollapsed();
|
|
102
126
|
|
|
103
|
-
/**
|
|
104
|
-
* Whether the block is collapsed.
|
|
105
|
-
* @type {boolean}
|
|
106
|
-
*/
|
|
127
|
+
/** Whether the block is collapsed. */
|
|
107
128
|
this.isCollapsed = block.isCollapsed();
|
|
108
129
|
|
|
109
130
|
/**
|
|
110
131
|
* Whether the block is an insertion marker. Insertion markers are the same
|
|
111
132
|
* shape as normal blocks, but don't show fields.
|
|
112
|
-
* @type {boolean}
|
|
113
133
|
*/
|
|
114
134
|
this.isInsertionMarker = block.isInsertionMarker();
|
|
115
135
|
|
|
116
|
-
/**
|
|
117
|
-
* True if the block should be rendered right-to-left.
|
|
118
|
-
* @type {boolean}
|
|
119
|
-
*/
|
|
136
|
+
/** True if the block should be rendered right-to-left. */
|
|
120
137
|
this.RTL = block.RTL;
|
|
121
138
|
|
|
122
|
-
/**
|
|
123
|
-
* The height of the rendered block, including child blocks.
|
|
124
|
-
* @type {number}
|
|
125
|
-
*/
|
|
126
|
-
this.height = 0;
|
|
127
|
-
|
|
128
|
-
/**
|
|
129
|
-
* The width of the rendered block, including child blocks.
|
|
130
|
-
* @type {number}
|
|
131
|
-
*/
|
|
132
|
-
this.widthWithChildren = 0;
|
|
133
|
-
|
|
134
|
-
/**
|
|
135
|
-
* The width of the rendered block, excluding child blocks. This is the
|
|
136
|
-
* right edge of the block when rendered LTR.
|
|
137
|
-
* @type {number}
|
|
138
|
-
*/
|
|
139
|
-
this.width = 0;
|
|
140
|
-
|
|
141
|
-
/**
|
|
142
|
-
*
|
|
143
|
-
* @type {number}
|
|
144
|
-
*/
|
|
145
|
-
this.statementEdge = 0;
|
|
146
|
-
|
|
147
|
-
/**
|
|
148
|
-
* An array of Row objects containing sizing information.
|
|
149
|
-
* @type {!Array<!Row>}
|
|
150
|
-
*/
|
|
151
|
-
this.rows = [];
|
|
152
|
-
|
|
153
|
-
/**
|
|
154
|
-
* An array of input rows on the block.
|
|
155
|
-
* @type {!Array<!InputRow>}
|
|
156
|
-
*/
|
|
157
|
-
this.inputRows = [];
|
|
158
|
-
|
|
159
|
-
/**
|
|
160
|
-
* An array of measurable objects containing hidden icons.
|
|
161
|
-
* @type {!Array<!Icon>}
|
|
162
|
-
*/
|
|
163
|
-
this.hiddenIcons = [];
|
|
164
|
-
|
|
165
139
|
/**
|
|
166
140
|
* An object with rendering information about the top row of the block.
|
|
167
|
-
* @type {!TopRow}
|
|
168
141
|
*/
|
|
169
142
|
this.topRow = new TopRow(this.constants_);
|
|
170
143
|
|
|
171
144
|
/**
|
|
172
145
|
* An object with rendering information about the bottom row of the block.
|
|
173
|
-
* @type {!BottomRow}
|
|
174
146
|
*/
|
|
175
147
|
this.bottomRow = new BottomRow(this.constants_);
|
|
176
|
-
|
|
177
|
-
// The position of the start point for drawing, relative to the block's
|
|
178
|
-
// location.
|
|
179
|
-
this.startX = 0;
|
|
180
|
-
this.startY = 0;
|
|
181
148
|
}
|
|
182
149
|
|
|
183
150
|
/**
|
|
184
151
|
* Get the block renderer in use.
|
|
185
|
-
* @return
|
|
186
|
-
* @
|
|
152
|
+
* @return The block renderer in use.
|
|
153
|
+
* @internal
|
|
187
154
|
*/
|
|
188
|
-
getRenderer() {
|
|
155
|
+
getRenderer(): Renderer {
|
|
189
156
|
return this.renderer_;
|
|
190
157
|
}
|
|
191
158
|
|
|
@@ -196,8 +163,7 @@ class RenderInfo {
|
|
|
196
163
|
* This measure pass does not propagate changes to the block (although fields
|
|
197
164
|
* may choose to rerender when getSize() is called). However, calling it
|
|
198
165
|
* repeatedly may be expensive.
|
|
199
|
-
*
|
|
200
|
-
* @package
|
|
166
|
+
* @internal
|
|
201
167
|
*/
|
|
202
168
|
measure() {
|
|
203
169
|
this.createRows_();
|
|
@@ -211,9 +177,8 @@ class RenderInfo {
|
|
|
211
177
|
/**
|
|
212
178
|
* Create rows of Measurable objects representing all renderable parts of the
|
|
213
179
|
* block.
|
|
214
|
-
* @protected
|
|
215
180
|
*/
|
|
216
|
-
createRows_() {
|
|
181
|
+
protected createRows_() {
|
|
217
182
|
this.populateTopRow_();
|
|
218
183
|
this.rows.push(this.topRow);
|
|
219
184
|
let activeRow = new InputRow(this.constants_);
|
|
@@ -221,7 +186,7 @@ class RenderInfo {
|
|
|
221
186
|
|
|
222
187
|
// Icons always go on the first row, before anything else.
|
|
223
188
|
const icons = this.block_.getIcons();
|
|
224
|
-
for (let i = 0, icon;
|
|
189
|
+
for (let i = 0, icon; icon = icons[i]; i++) {
|
|
225
190
|
const iconInfo = new Icon(this.constants_, icon);
|
|
226
191
|
if (this.isCollapsed && icon.collapseHidden) {
|
|
227
192
|
this.hiddenIcons.push(iconInfo);
|
|
@@ -233,7 +198,7 @@ class RenderInfo {
|
|
|
233
198
|
let lastInput = null;
|
|
234
199
|
// Loop across all of the inputs on the block, creating objects for anything
|
|
235
200
|
// that needs to be rendered and breaking the block up into visual rows.
|
|
236
|
-
for (let i = 0, input;
|
|
201
|
+
for (let i = 0, input; input = this.block_.inputList[i]; i++) {
|
|
237
202
|
if (!input.isVisible()) {
|
|
238
203
|
continue;
|
|
239
204
|
}
|
|
@@ -245,7 +210,7 @@ class RenderInfo {
|
|
|
245
210
|
}
|
|
246
211
|
|
|
247
212
|
// All of the fields in an input go on the same row.
|
|
248
|
-
for (let j = 0, field;
|
|
213
|
+
for (let j = 0, field; field = input.fieldRow[j]; j++) {
|
|
249
214
|
activeRow.elements.push(new Field(this.constants_, field, input));
|
|
250
215
|
}
|
|
251
216
|
this.addInput_(input, activeRow);
|
|
@@ -266,7 +231,7 @@ class RenderInfo {
|
|
|
266
231
|
|
|
267
232
|
/**
|
|
268
233
|
* Create all non-spacer elements that belong on the top row.
|
|
269
|
-
* @
|
|
234
|
+
* @internal
|
|
270
235
|
*/
|
|
271
236
|
populateTopRow_() {
|
|
272
237
|
const hasPrevious = !!this.block_.previousConnection;
|
|
@@ -287,8 +252,7 @@ class RenderInfo {
|
|
|
287
252
|
this.topRow.hasPreviousConnection = true;
|
|
288
253
|
this.topRow.connection = new PreviousConnection(
|
|
289
254
|
this.constants_,
|
|
290
|
-
|
|
291
|
-
(this.block_.previousConnection));
|
|
255
|
+
(this.block_.previousConnection as RenderedConnection));
|
|
292
256
|
this.topRow.elements.push(this.topRow.connection);
|
|
293
257
|
}
|
|
294
258
|
|
|
@@ -311,7 +275,7 @@ class RenderInfo {
|
|
|
311
275
|
|
|
312
276
|
/**
|
|
313
277
|
* Create all non-spacer elements that belong on the bottom row.
|
|
314
|
-
* @
|
|
278
|
+
* @internal
|
|
315
279
|
*/
|
|
316
280
|
populateBottomRow_() {
|
|
317
281
|
this.bottomRow.hasNextConnection = !!this.block_.nextConnection;
|
|
@@ -339,8 +303,7 @@ class RenderInfo {
|
|
|
339
303
|
|
|
340
304
|
if (this.bottomRow.hasNextConnection) {
|
|
341
305
|
this.bottomRow.connection = new NextConnection(
|
|
342
|
-
this.constants_,
|
|
343
|
-
/** @type {!RenderedConnection} */ (this.block_.nextConnection));
|
|
306
|
+
this.constants_, (this.block_.nextConnection as RenderedConnection));
|
|
344
307
|
this.bottomRow.elements.push(this.bottomRow.connection);
|
|
345
308
|
}
|
|
346
309
|
|
|
@@ -356,12 +319,10 @@ class RenderInfo {
|
|
|
356
319
|
/**
|
|
357
320
|
* Add an input element to the active row, if needed, and record the type of
|
|
358
321
|
* the input on the row.
|
|
359
|
-
* @param
|
|
360
|
-
* @param
|
|
361
|
-
* populated.
|
|
362
|
-
* @protected
|
|
322
|
+
* @param input The input to record information about.
|
|
323
|
+
* @param activeRow The row that is currently being populated.
|
|
363
324
|
*/
|
|
364
|
-
addInput_(input, activeRow) {
|
|
325
|
+
protected addInput_(input: Input, activeRow: Row) {
|
|
365
326
|
// Non-dummy inputs have visual representations onscreen.
|
|
366
327
|
if (this.isInline && input.type === inputTypes.VALUE) {
|
|
367
328
|
activeRow.elements.push(new InlineInput(this.constants_, input));
|
|
@@ -377,7 +338,7 @@ class RenderInfo {
|
|
|
377
338
|
// still important.
|
|
378
339
|
activeRow.minHeight = Math.max(
|
|
379
340
|
activeRow.minHeight,
|
|
380
|
-
input.getSourceBlock() && input.getSourceBlock()
|
|
341
|
+
input.getSourceBlock() && input.getSourceBlock()!.isShadow() ?
|
|
381
342
|
this.constants_.DUMMY_INPUT_SHADOW_MIN_HEIGHT :
|
|
382
343
|
this.constants_.DUMMY_INPUT_MIN_HEIGHT);
|
|
383
344
|
activeRow.hasDummyInput = true;
|
|
@@ -389,12 +350,11 @@ class RenderInfo {
|
|
|
389
350
|
|
|
390
351
|
/**
|
|
391
352
|
* Decide whether to start a new row between the two Blockly.Inputs.
|
|
392
|
-
* @param
|
|
393
|
-
* @param
|
|
394
|
-
* @return
|
|
395
|
-
* @protected
|
|
353
|
+
* @param input The first input to consider
|
|
354
|
+
* @param lastInput The input that follows.
|
|
355
|
+
* @return True if the next input should be rendered on a new row.
|
|
396
356
|
*/
|
|
397
|
-
shouldStartNewRow_(input, lastInput) {
|
|
357
|
+
protected shouldStartNewRow_(input: Input, lastInput: Input): boolean {
|
|
398
358
|
// If this is the first input, just add to the existing row.
|
|
399
359
|
// That row is either empty or has some icons in it.
|
|
400
360
|
if (!lastInput) {
|
|
@@ -412,12 +372,9 @@ class RenderInfo {
|
|
|
412
372
|
return false;
|
|
413
373
|
}
|
|
414
374
|
|
|
415
|
-
/**
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
*/
|
|
419
|
-
addElemSpacing_() {
|
|
420
|
-
for (let i = 0, row; (row = this.rows[i]); i++) {
|
|
375
|
+
/** Add horizontal spacing between and around elements within each row. */
|
|
376
|
+
protected addElemSpacing_() {
|
|
377
|
+
for (let i = 0, row; row = this.rows[i]; i++) {
|
|
421
378
|
const oldElems = row.elements;
|
|
422
379
|
row.elements = [];
|
|
423
380
|
// No spacing needed before the corner on the top row or the bottom row.
|
|
@@ -448,13 +405,12 @@ class RenderInfo {
|
|
|
448
405
|
* Calculate the width of a spacer element in a row based on the previous and
|
|
449
406
|
* next elements in that row. For instance, extra padding is added between
|
|
450
407
|
* two editable fields.
|
|
451
|
-
* @param
|
|
452
|
-
*
|
|
453
|
-
* @
|
|
454
|
-
* @return {number} The size of the spacing between the two elements.
|
|
455
|
-
* @protected
|
|
408
|
+
* @param prev The element before the spacer.
|
|
409
|
+
* @param next The element after the spacer.
|
|
410
|
+
* @return The size of the spacing between the two elements.
|
|
456
411
|
*/
|
|
457
|
-
getInRowSpacing_(prev, next)
|
|
412
|
+
protected getInRowSpacing_(prev: Measurable|null, next: Measurable|null):
|
|
413
|
+
number {
|
|
458
414
|
if (!prev) {
|
|
459
415
|
// Statement input padding.
|
|
460
416
|
if (next && Types.isStatementInput(next)) {
|
|
@@ -463,7 +419,9 @@ class RenderInfo {
|
|
|
463
419
|
}
|
|
464
420
|
// Between inputs and the end of the row.
|
|
465
421
|
if (prev && Types.isInput(prev) && !next) {
|
|
466
|
-
|
|
422
|
+
// AnyDuringMigration because: Property 'isExternalInput' does not exist
|
|
423
|
+
// on type 'typeof Types'.
|
|
424
|
+
if ((Types as AnyDuringMigration).isExternalInput(prev)) {
|
|
467
425
|
return this.constants_.NO_PADDING;
|
|
468
426
|
} else if (Types.isInlineInput(prev)) {
|
|
469
427
|
return this.constants_.LARGE_PADDING;
|
|
@@ -492,13 +450,12 @@ class RenderInfo {
|
|
|
492
450
|
/**
|
|
493
451
|
* Figure out where the right edge of the block and right edge of statement
|
|
494
452
|
* inputs should be placed.
|
|
495
|
-
* @protected
|
|
496
453
|
*/
|
|
497
|
-
computeBounds_() {
|
|
454
|
+
protected computeBounds_() {
|
|
498
455
|
let widestStatementRowFields = 0;
|
|
499
456
|
let blockWidth = 0;
|
|
500
457
|
let widestRowWithConnectedBlocks = 0;
|
|
501
|
-
for (let i = 0, row;
|
|
458
|
+
for (let i = 0, row; row = this.rows[i]; i++) {
|
|
502
459
|
row.measure();
|
|
503
460
|
blockWidth = Math.max(blockWidth, row.width);
|
|
504
461
|
if (row.hasStatement) {
|
|
@@ -514,7 +471,7 @@ class RenderInfo {
|
|
|
514
471
|
this.statementEdge = widestStatementRowFields;
|
|
515
472
|
this.width = blockWidth;
|
|
516
473
|
|
|
517
|
-
for (let i = 0, row;
|
|
474
|
+
for (let i = 0, row; row = this.rows[i]; i++) {
|
|
518
475
|
if (row.hasStatement) {
|
|
519
476
|
row.statementEdge = this.statementEdge;
|
|
520
477
|
}
|
|
@@ -533,13 +490,11 @@ class RenderInfo {
|
|
|
533
490
|
* Extra spacing may be necessary to make sure that the right sides of all
|
|
534
491
|
* rows line up. This can only be calculated after a first pass to calculate
|
|
535
492
|
* the sizes of all rows.
|
|
536
|
-
* @protected
|
|
537
493
|
*/
|
|
538
|
-
alignRowElements_() {
|
|
539
|
-
for (let i = 0, row;
|
|
494
|
+
protected alignRowElements_() {
|
|
495
|
+
for (let i = 0, row; row = this.rows[i]; i++) {
|
|
540
496
|
if (row.hasStatement) {
|
|
541
|
-
this.alignStatementRow_(
|
|
542
|
-
/** @type {!InputRow} */ (row));
|
|
497
|
+
this.alignStatementRow_(row as InputRow);
|
|
543
498
|
} else {
|
|
544
499
|
const currentWidth = row.width;
|
|
545
500
|
const desiredWidth = this.getDesiredRowWidth_(row);
|
|
@@ -547,7 +502,9 @@ class RenderInfo {
|
|
|
547
502
|
if (missingSpace > 0) {
|
|
548
503
|
this.addAlignmentPadding_(row, missingSpace);
|
|
549
504
|
}
|
|
550
|
-
|
|
505
|
+
// AnyDuringMigration because: Property 'isTopOrBottomRow' does not
|
|
506
|
+
// exist on type 'typeof Types'.
|
|
507
|
+
if ((Types as AnyDuringMigration).isTopOrBottomRow(row)) {
|
|
551
508
|
row.widthWithConnectedBlocks = row.width;
|
|
552
509
|
}
|
|
553
510
|
}
|
|
@@ -556,11 +513,10 @@ class RenderInfo {
|
|
|
556
513
|
|
|
557
514
|
/**
|
|
558
515
|
* Calculate the desired width of an input row.
|
|
559
|
-
* @param
|
|
560
|
-
* @return
|
|
561
|
-
* @protected
|
|
516
|
+
* @param _row The input row.
|
|
517
|
+
* @return The desired width of the input row.
|
|
562
518
|
*/
|
|
563
|
-
getDesiredRowWidth_(_row) {
|
|
519
|
+
protected getDesiredRowWidth_(_row: Row): number {
|
|
564
520
|
return this.width - this.startX;
|
|
565
521
|
}
|
|
566
522
|
|
|
@@ -568,11 +524,10 @@ class RenderInfo {
|
|
|
568
524
|
* Modify the given row to add the given amount of padding around its fields.
|
|
569
525
|
* The exact location of the padding is based on the alignment property of the
|
|
570
526
|
* last input in the field.
|
|
571
|
-
* @param
|
|
572
|
-
* @param
|
|
573
|
-
* @protected
|
|
527
|
+
* @param row The row to add padding to.
|
|
528
|
+
* @param missingSpace How much padding to add.
|
|
574
529
|
*/
|
|
575
|
-
addAlignmentPadding_(row, missingSpace) {
|
|
530
|
+
protected addAlignmentPadding_(row: Row, missingSpace: number) {
|
|
576
531
|
const firstSpacer = row.getFirstSpacer();
|
|
577
532
|
const lastSpacer = row.getLastSpacer();
|
|
578
533
|
if (row.hasExternalInput || row.hasStatement) {
|
|
@@ -600,10 +555,9 @@ class RenderInfo {
|
|
|
600
555
|
/**
|
|
601
556
|
* Align the elements of a statement row based on computed bounds.
|
|
602
557
|
* Unlike other types of rows, statement rows add space in multiple places.
|
|
603
|
-
* @param
|
|
604
|
-
* @protected
|
|
558
|
+
* @param row The statement row to resize.
|
|
605
559
|
*/
|
|
606
|
-
alignStatementRow_(row) {
|
|
560
|
+
protected alignStatementRow_(row: InputRow) {
|
|
607
561
|
const statementInput = row.getLastInput();
|
|
608
562
|
let currentWidth = row.width - statementInput.width;
|
|
609
563
|
let desiredWidth = this.statementEdge;
|
|
@@ -616,18 +570,15 @@ class RenderInfo {
|
|
|
616
570
|
// block. Note that this does not add padding.
|
|
617
571
|
currentWidth = row.width;
|
|
618
572
|
desiredWidth = this.getDesiredRowWidth_(row);
|
|
619
|
-
statementInput.width +=
|
|
573
|
+
statementInput.width += desiredWidth - currentWidth;
|
|
620
574
|
statementInput.height = Math.max(statementInput.height, row.height);
|
|
621
|
-
row.width +=
|
|
575
|
+
row.width += desiredWidth - currentWidth;
|
|
622
576
|
row.widthWithConnectedBlocks =
|
|
623
577
|
Math.max(row.width, this.statementEdge + row.connectedBlockWidths);
|
|
624
578
|
}
|
|
625
579
|
|
|
626
|
-
/**
|
|
627
|
-
|
|
628
|
-
* @protected
|
|
629
|
-
*/
|
|
630
|
-
addRowSpacing_() {
|
|
580
|
+
/** Add spacers between rows and set their sizes. */
|
|
581
|
+
protected addRowSpacing_() {
|
|
631
582
|
const oldRows = this.rows;
|
|
632
583
|
this.rows = [];
|
|
633
584
|
|
|
@@ -641,12 +592,11 @@ class RenderInfo {
|
|
|
641
592
|
|
|
642
593
|
/**
|
|
643
594
|
* Create a spacer row to go between prev and next, and set its size.
|
|
644
|
-
* @param
|
|
645
|
-
* @param
|
|
646
|
-
* @return
|
|
647
|
-
* @protected
|
|
595
|
+
* @param prev The previous row.
|
|
596
|
+
* @param next The next row.
|
|
597
|
+
* @return The newly created spacer row.
|
|
648
598
|
*/
|
|
649
|
-
makeSpacerRow_(prev, next) {
|
|
599
|
+
protected makeSpacerRow_(prev: Row, next: Row): SpacerRow {
|
|
650
600
|
const height = this.getSpacerRowHeight_(prev, next);
|
|
651
601
|
const width = this.getSpacerRowWidth_(prev, next);
|
|
652
602
|
const spacer = new SpacerRow(this.constants_, height, width);
|
|
@@ -661,25 +611,21 @@ class RenderInfo {
|
|
|
661
611
|
|
|
662
612
|
/**
|
|
663
613
|
* Calculate the width of a spacer row.
|
|
664
|
-
* @param
|
|
665
|
-
* @param
|
|
666
|
-
* @return
|
|
667
|
-
* rows.
|
|
668
|
-
* @protected
|
|
614
|
+
* @param _prev The row before the spacer.
|
|
615
|
+
* @param _next The row after the spacer.
|
|
616
|
+
* @return The desired width of the spacer row between these two rows.
|
|
669
617
|
*/
|
|
670
|
-
getSpacerRowWidth_(_prev, _next) {
|
|
618
|
+
protected getSpacerRowWidth_(_prev: Row, _next: Row): number {
|
|
671
619
|
return this.width - this.startX;
|
|
672
620
|
}
|
|
673
621
|
|
|
674
622
|
/**
|
|
675
623
|
* Calculate the height of a spacer row.
|
|
676
|
-
* @param
|
|
677
|
-
* @param
|
|
678
|
-
* @return
|
|
679
|
-
* rows.
|
|
680
|
-
* @protected
|
|
624
|
+
* @param _prev The row before the spacer.
|
|
625
|
+
* @param _next The row after the spacer.
|
|
626
|
+
* @return The desired height of the spacer row between these two rows.
|
|
681
627
|
*/
|
|
682
|
-
getSpacerRowHeight_(_prev, _next) {
|
|
628
|
+
protected getSpacerRowHeight_(_prev: Row, _next: Row): number {
|
|
683
629
|
return this.constants_.MEDIUM_PADDING;
|
|
684
630
|
}
|
|
685
631
|
|
|
@@ -688,18 +634,17 @@ class RenderInfo {
|
|
|
688
634
|
* This base implementation puts the centerline at the middle of the row
|
|
689
635
|
* vertically, with no special cases. You will likely need extra logic to
|
|
690
636
|
* handle (at minimum) top and bottom rows.
|
|
691
|
-
* @param
|
|
692
|
-
* @param
|
|
693
|
-
* @return
|
|
694
|
-
*
|
|
695
|
-
* @protected
|
|
637
|
+
* @param row The row containing the element.
|
|
638
|
+
* @param elem The element to place.
|
|
639
|
+
* @return The desired centerline of the given element, as an offset from the
|
|
640
|
+
* top left of the block.
|
|
696
641
|
*/
|
|
697
|
-
getElemCenterline_(row, elem) {
|
|
642
|
+
protected getElemCenterline_(row: Row, elem: Measurable): number {
|
|
698
643
|
if (Types.isSpacer(elem)) {
|
|
699
644
|
return row.yPos + elem.height / 2;
|
|
700
645
|
}
|
|
701
646
|
if (Types.isBottomRow(row)) {
|
|
702
|
-
const bottomRow =
|
|
647
|
+
const bottomRow = row as BottomRow;
|
|
703
648
|
const baseline =
|
|
704
649
|
bottomRow.yPos + bottomRow.height - bottomRow.descenderHeight;
|
|
705
650
|
if (Types.isNextConnection(elem)) {
|
|
@@ -708,8 +653,10 @@ class RenderInfo {
|
|
|
708
653
|
return baseline - elem.height / 2;
|
|
709
654
|
}
|
|
710
655
|
if (Types.isTopRow(row)) {
|
|
711
|
-
const topRow =
|
|
712
|
-
|
|
656
|
+
const topRow = row as TopRow;
|
|
657
|
+
// AnyDuringMigration because: Property 'isHat' does not exist on type
|
|
658
|
+
// 'typeof Types'.
|
|
659
|
+
if ((Types as AnyDuringMigration).isHat(elem)) {
|
|
713
660
|
return topRow.capline - elem.height / 2;
|
|
714
661
|
}
|
|
715
662
|
return topRow.capline + elem.height / 2;
|
|
@@ -720,12 +667,11 @@ class RenderInfo {
|
|
|
720
667
|
/**
|
|
721
668
|
* Record final position information on elements on the given row, for use in
|
|
722
669
|
* drawing. At minimum this records xPos and centerline on each element.
|
|
723
|
-
* @param
|
|
724
|
-
* @protected
|
|
670
|
+
* @param row The row containing the elements.
|
|
725
671
|
*/
|
|
726
|
-
recordElemPositions_(row) {
|
|
672
|
+
protected recordElemPositions_(row: Row) {
|
|
727
673
|
let xCursor = row.xPos;
|
|
728
|
-
for (let j = 0, elem;
|
|
674
|
+
for (let j = 0, elem; elem = row.elements[j]; j++) {
|
|
729
675
|
// Now that row heights are finalized, make spacers use the row height.
|
|
730
676
|
if (Types.isSpacer(elem)) {
|
|
731
677
|
elem.height = row.height;
|
|
@@ -739,15 +685,14 @@ class RenderInfo {
|
|
|
739
685
|
/**
|
|
740
686
|
* Make any final changes to the rendering information object. In particular,
|
|
741
687
|
* store the y position of each row, and record the height of the full block.
|
|
742
|
-
* @protected
|
|
743
688
|
*/
|
|
744
|
-
finalize_() {
|
|
689
|
+
protected finalize_() {
|
|
745
690
|
// Performance note: this could be combined with the draw pass, if the time
|
|
746
691
|
// that this takes is excessive. But it shouldn't be, because it only
|
|
747
692
|
// accesses and sets properties that already exist on the objects.
|
|
748
693
|
let widestRowWithConnectedBlocks = 0;
|
|
749
694
|
let yCursor = 0;
|
|
750
|
-
for (let i = 0, row;
|
|
695
|
+
for (let i = 0, row; row = this.rows[i]; i++) {
|
|
751
696
|
row.yPos = yCursor;
|
|
752
697
|
row.xPos = this.startX;
|
|
753
698
|
yCursor += row.height;
|
|
@@ -771,5 +716,3 @@ class RenderInfo {
|
|
|
771
716
|
this.bottomRow.baseline = yCursor - this.bottomRow.descenderHeight;
|
|
772
717
|
}
|
|
773
718
|
}
|
|
774
|
-
|
|
775
|
-
exports.RenderInfo = RenderInfo;
|