blockly 9.0.0-beta.0 → 9.0.0-beta.1
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 +401 -405
- package/blockly_compressed.js +398 -402
- package/blockly_compressed.js.map +1 -1
- package/blocks.d.ts +0 -5
- package/blocks_compressed.js +3 -3
- package/blocks_compressed.js.map +1 -1
- package/closure/goog/base.d.ts +1 -0
- package/closure/goog/base_minimal.d.ts +1 -0
- package/closure/goog/goog.d.ts +1 -0
- package/core/any_aliases.d.ts +1 -0
- package/core/block.d.ts +145 -53
- package/core/block_animations.d.ts +5 -0
- package/core/block_drag_surface.d.ts +18 -5
- package/core/block_dragger.d.ts +20 -5
- package/core/block_svg.d.ts +89 -21
- package/core/blockly.d.ts +29 -8
- package/core/blockly_options.d.ts +2 -0
- package/core/blocks.d.ts +2 -0
- package/core/browser_events.d.ts +16 -7
- package/core/bubble.d.ts +42 -12
- package/core/bubble_dragger.d.ts +9 -2
- package/core/bump_objects.d.ts +6 -2
- package/core/clipboard.d.ts +6 -2
- package/core/comment.d.ts +13 -3
- package/core/common.d.ts +35 -9
- package/core/component_manager.d.ts +16 -6
- package/core/config.d.ts +1 -0
- package/core/connection.d.ts +48 -18
- package/core/connection_checker.d.ts +16 -7
- package/core/connection_db.d.ts +17 -6
- package/core/connection_type.d.ts +2 -0
- package/core/constants.d.ts +3 -0
- package/core/contextmenu.d.ts +15 -5
- package/core/contextmenu_items.d.ts +15 -0
- package/core/contextmenu_registry.d.ts +12 -7
- package/core/css.d.ts +3 -0
- package/core/delete_area.d.ts +5 -1
- package/core/dialog.d.ts +14 -7
- package/core/drag_target.d.ts +10 -2
- package/core/dropdowndiv.d.ts +42 -10
- package/core/events/events.d.ts +1 -0
- package/core/events/events_abstract.d.ts +10 -3
- package/core/events/events_block_base.d.ts +5 -1
- package/core/events/events_block_change.d.ts +10 -3
- package/core/events/events_block_create.d.ts +6 -1
- package/core/events/events_block_delete.d.ts +6 -1
- package/core/events/events_block_drag.d.ts +5 -1
- package/core/events/events_block_move.d.ts +10 -3
- package/core/events/events_bubble_open.d.ts +6 -2
- package/core/events/events_click.d.ts +5 -1
- package/core/events/events_comment_base.d.ts +6 -1
- package/core/events/events_comment_change.d.ts +8 -2
- package/core/events/events_comment_create.d.ts +6 -1
- package/core/events/events_comment_delete.d.ts +6 -1
- package/core/events/events_comment_move.d.ts +9 -2
- package/core/events/events_marker_move.d.ts +5 -1
- package/core/events/events_selected.d.ts +5 -1
- package/core/events/events_theme_change.d.ts +5 -1
- package/core/events/events_toolbox_item_select.d.ts +5 -1
- package/core/events/events_trashcan_open.d.ts +5 -1
- package/core/events/events_ui.d.ts +5 -1
- package/core/events/events_ui_base.d.ts +2 -0
- package/core/events/events_var_base.d.ts +5 -1
- package/core/events/events_var_create.d.ts +6 -1
- package/core/events/events_var_delete.d.ts +6 -1
- package/core/events/events_var_rename.d.ts +6 -1
- package/core/events/events_viewport.d.ts +5 -1
- package/core/events/utils.d.ts +50 -7
- package/core/events/workspace_events.d.ts +5 -1
- package/core/extensions.d.ts +14 -4
- package/core/field.d.ts +93 -34
- package/core/field_angle.d.ts +14 -3
- package/core/field_checkbox.d.ts +20 -7
- package/core/field_colour.d.ts +22 -6
- package/core/field_dropdown.d.ts +28 -8
- package/core/field_image.d.ts +15 -4
- package/core/field_label.d.ts +8 -2
- package/core/field_label_serializable.d.ts +4 -1
- package/core/field_multilineinput.d.ts +21 -6
- package/core/field_number.d.ts +22 -6
- package/core/field_registry.d.ts +8 -2
- package/core/field_textinput.d.ts +28 -8
- package/core/field_variable.d.ts +36 -13
- package/core/flyout_base.d.ts +70 -24
- package/core/flyout_button.d.ts +12 -5
- package/core/flyout_horizontal.d.ts +14 -6
- package/core/flyout_metrics_manager.d.ts +6 -3
- package/core/flyout_vertical.d.ts +14 -6
- package/core/generator.d.ts +39 -20
- package/core/gesture.d.ts +48 -13
- package/core/grid.d.ts +19 -15
- package/core/icon.d.ts +12 -3
- package/core/inject.d.ts +3 -1
- package/core/input.d.ts +25 -10
- package/core/input_types.d.ts +2 -0
- package/core/insertion_marker_manager.d.ts +27 -9
- package/core/interfaces/i_ast_node_location.d.ts +2 -0
- package/core/interfaces/i_ast_node_location_svg.d.ts +4 -0
- package/core/interfaces/i_ast_node_location_with_block.d.ts +4 -1
- package/core/interfaces/i_autohideable.d.ts +3 -0
- package/core/interfaces/i_block_dragger.d.ts +7 -1
- package/core/interfaces/i_bounded_element.d.ts +5 -1
- package/core/interfaces/i_bubble.d.ts +11 -2
- package/core/interfaces/i_collapsible_toolbox_item.d.ts +6 -2
- package/core/interfaces/i_component.d.ts +2 -0
- package/core/interfaces/i_connection_checker.d.ts +14 -6
- package/core/interfaces/i_contextmenu.d.ts +2 -0
- package/core/interfaces/i_copyable.d.ts +3 -1
- package/core/interfaces/i_deletable.d.ts +4 -1
- package/core/interfaces/i_delete_area.d.ts +4 -1
- package/core/interfaces/i_drag_target.d.ts +10 -2
- package/core/interfaces/i_draggable.d.ts +2 -0
- package/core/interfaces/i_flyout.d.ts +27 -11
- package/core/interfaces/i_keyboard_accessible.d.ts +4 -1
- package/core/interfaces/i_metrics_manager.d.ts +24 -12
- package/core/interfaces/i_movable.d.ts +4 -1
- package/core/interfaces/i_positionable.d.ts +5 -1
- package/core/interfaces/i_registrable.d.ts +2 -0
- package/core/interfaces/i_registrable_field.d.ts +2 -0
- package/core/interfaces/i_selectable.d.ts +2 -0
- package/core/interfaces/i_selectable_toolbox_item.d.ts +10 -3
- package/core/interfaces/i_serializer.d.ts +6 -1
- package/core/interfaces/i_styleable.d.ts +4 -0
- package/core/interfaces/i_toolbox.d.ts +17 -6
- package/core/interfaces/i_toolbox_item.d.ts +17 -7
- package/core/internal_constants.d.ts +6 -0
- package/core/keyboard_nav/ast_node.d.ts +55 -28
- package/core/keyboard_nav/basic_cursor.d.ts +20 -9
- package/core/keyboard_nav/cursor.d.ts +11 -5
- package/core/keyboard_nav/marker.d.ts +9 -2
- package/core/keyboard_nav/tab_navigate_cursor.d.ts +4 -1
- package/core/main.d.ts +1 -0
- package/core/marker_manager.d.ts +13 -2
- package/core/menu.d.ts +23 -5
- package/core/menuitem.d.ts +22 -7
- package/core/metrics_manager.d.ts +30 -15
- package/core/msg.d.ts +1 -0
- package/core/mutator.d.ts +19 -7
- package/core/names.d.ts +20 -8
- package/core/options.d.ts +12 -6
- package/core/positionable_helpers.d.ts +11 -3
- package/core/procedures.d.ts +27 -10
- package/core/registry.d.ts +19 -8
- package/core/rendered_connection.d.ts +28 -7
- package/core/renderers/common/block_rendering.d.ts +9 -2
- package/core/renderers/common/constants.d.ts +49 -17
- package/core/renderers/common/debug.d.ts +5 -1
- package/core/renderers/common/debugger.d.ts +12 -1
- package/core/renderers/common/drawer.d.ts +12 -0
- package/core/renderers/common/i_path_object.d.ts +15 -0
- package/core/renderers/common/info.d.ts +25 -8
- package/core/renderers/common/marker_svg.d.ts +35 -6
- package/core/renderers/common/path_object.d.ts +20 -0
- package/core/renderers/common/renderer.d.ts +33 -12
- package/core/renderers/geras/constants.d.ts +2 -0
- package/core/renderers/geras/drawer.d.ts +2 -0
- package/core/renderers/geras/geras.d.ts +3 -2
- package/core/renderers/geras/highlight_constants.d.ts +9 -6
- package/core/renderers/geras/highlighter.d.ts +12 -1
- package/core/renderers/geras/info.d.ts +4 -1
- package/core/renderers/geras/measurables/inline_input.d.ts +2 -0
- package/core/renderers/geras/measurables/statement_input.d.ts +2 -0
- package/core/renderers/geras/path_object.d.ts +4 -0
- package/core/renderers/geras/renderer.d.ts +16 -6
- package/core/renderers/measurables/base.d.ts +2 -0
- package/core/renderers/measurables/bottom_row.d.ts +9 -3
- package/core/renderers/measurables/connection.d.ts +2 -0
- package/core/renderers/measurables/external_value_input.d.ts +2 -1
- package/core/renderers/measurables/field.d.ts +2 -1
- package/core/renderers/measurables/hat.d.ts +2 -1
- package/core/renderers/measurables/icon.d.ts +3 -1
- package/core/renderers/measurables/in_row_spacer.d.ts +2 -1
- package/core/renderers/measurables/inline_input.d.ts +2 -1
- package/core/renderers/measurables/input_connection.d.ts +2 -0
- package/core/renderers/measurables/input_row.d.ts +4 -1
- package/core/renderers/measurables/jagged_edge.d.ts +2 -1
- package/core/renderers/measurables/next_connection.d.ts +2 -1
- package/core/renderers/measurables/output_connection.d.ts +2 -1
- package/core/renderers/measurables/previous_connection.d.ts +2 -1
- package/core/renderers/measurables/round_corner.d.ts +2 -1
- package/core/renderers/measurables/row.d.ts +27 -5
- package/core/renderers/measurables/spacer_row.d.ts +2 -1
- package/core/renderers/measurables/square_corner.d.ts +2 -1
- package/core/renderers/measurables/statement_input.d.ts +2 -1
- package/core/renderers/measurables/top_row.d.ts +7 -3
- package/core/renderers/measurables/types.d.ts +54 -25
- package/core/renderers/minimalist/constants.d.ts +2 -0
- package/core/renderers/minimalist/drawer.d.ts +2 -0
- package/core/renderers/minimalist/info.d.ts +4 -1
- package/core/renderers/minimalist/minimalist.d.ts +2 -1
- package/core/renderers/minimalist/renderer.d.ts +8 -3
- package/core/renderers/thrasos/info.d.ts +4 -1
- package/core/renderers/thrasos/renderer.d.ts +4 -1
- package/core/renderers/thrasos/thrasos.d.ts +2 -1
- package/core/renderers/zelos/constants.d.ts +11 -3
- package/core/renderers/zelos/drawer.d.ts +3 -0
- package/core/renderers/zelos/info.d.ts +10 -5
- package/core/renderers/zelos/marker_svg.d.ts +5 -0
- package/core/renderers/zelos/measurables/bottom_row.d.ts +2 -0
- package/core/renderers/zelos/measurables/inputs.d.ts +2 -0
- package/core/renderers/zelos/measurables/row_elements.d.ts +2 -0
- package/core/renderers/zelos/measurables/top_row.d.ts +2 -0
- package/core/renderers/zelos/path_object.d.ts +8 -1
- package/core/renderers/zelos/renderer.d.ts +14 -6
- package/core/renderers/zelos/zelos.d.ts +3 -2
- package/core/scrollbar.d.ts +41 -9
- package/core/scrollbar_pair.d.ts +20 -6
- package/core/serialization/blocks.d.ts +10 -4
- package/core/serialization/exceptions.d.ts +5 -0
- package/core/serialization/priorities.d.ts +3 -0
- package/core/serialization/registry.d.ts +3 -0
- package/core/serialization/variables.d.ts +2 -0
- package/core/serialization/workspaces.d.ts +4 -1
- package/core/shortcut_items.d.ts +10 -0
- package/core/shortcut_registry.d.ts +25 -9
- package/core/sprites.d.ts +2 -4
- package/core/theme/classic.d.ts +2 -0
- package/core/theme/themes.d.ts +1 -0
- package/core/theme/zelos.d.ts +2 -0
- package/core/theme.d.ts +14 -3
- package/core/theme_manager.d.ts +10 -1
- package/core/toolbox/category.d.ts +42 -15
- package/core/toolbox/collapsible_category.d.ts +10 -3
- package/core/toolbox/separator.d.ts +4 -1
- package/core/toolbox/toolbox.d.ts +70 -22
- package/core/toolbox/toolbox_item.d.ts +17 -7
- package/core/tooltip.d.ts +22 -1
- package/core/touch.d.ts +18 -6
- package/core/touch_gesture.d.ts +16 -2
- package/core/trashcan.d.ts +27 -6
- package/core/utils/aria.d.ts +4 -0
- package/core/utils/array.d.ts +4 -2
- package/core/utils/colour.d.ts +24 -13
- package/core/utils/coordinate.d.ts +18 -8
- package/core/utils/deprecation.d.ts +6 -4
- package/core/utils/dom.d.ts +32 -12
- package/core/utils/idgenerator.d.ts +13 -3
- package/core/utils/keycodes.d.ts +1 -0
- package/core/utils/math.d.ts +7 -3
- package/core/utils/metrics.d.ts +1 -0
- package/core/utils/object.d.ts +7 -2
- package/core/utils/parsing.d.ts +9 -4
- package/core/utils/rect.d.ts +5 -3
- package/core/utils/sentinel.d.ts +2 -0
- package/core/utils/size.d.ts +4 -2
- package/core/utils/string.d.ts +13 -6
- package/core/utils/style.d.ts +14 -33
- package/core/utils/svg.d.ts +5 -2
- package/core/utils/svg_math.d.ts +15 -7
- package/core/utils/svg_paths.d.ts +20 -10
- package/core/utils/toolbox.d.ts +26 -5
- package/core/utils/useragent.d.ts +1 -12
- package/core/utils/xml.d.ts +13 -5
- package/core/utils.d.ts +43 -21
- package/core/variable_map.d.ts +26 -9
- package/core/variable_model.d.ts +5 -2
- package/core/variables.d.ts +33 -18
- package/core/variables_dynamic.d.ts +25 -5
- package/core/warning.d.ts +8 -3
- package/core/widgetdiv.d.ts +15 -6
- package/core/workspace.d.ts +80 -30
- package/core/workspace_audio.d.ts +6 -0
- package/core/workspace_comment.d.ts +33 -11
- package/core/workspace_comment_svg.d.ts +52 -9
- package/core/workspace_drag_surface_svg.d.ts +20 -14
- package/core/workspace_dragger.d.ts +6 -0
- package/core/workspace_svg.d.ts +174 -62
- package/core/xml.d.ts +26 -11
- package/core/zoom_controls.d.ts +16 -6
- package/core.d.ts +0 -5
- package/dart.d.ts +0 -5
- package/dart_compressed.js.map +1 -1
- package/index.d.ts +2 -6
- package/javascript.d.ts +0 -5
- package/javascript_compressed.js.map +1 -1
- package/lua.d.ts +0 -5
- package/lua_compressed.js.map +1 -1
- package/package.json +6 -3
- package/php.d.ts +0 -5
- package/php_compressed.js.map +1 -1
- package/python.d.ts +0 -5
- package/python_compressed.js.map +1 -1
- package/blocks/blocks.js +0 -48
- package/blocks/colour.js +0 -121
- package/blocks/lists.js +0 -996
- package/blocks/logic.js +0 -665
- package/blocks/loops.js +0 -375
- package/blocks/math.js +0 -594
- package/blocks/procedures.js +0 -1196
- package/blocks/text.js +0 -1000
- package/blocks/variables.js +0 -176
- package/blocks/variables_dynamic.js +0 -192
- package/core/any_aliases.ts +0 -1
- package/core/block.ts +0 -2102
- package/core/block_animations.ts +0 -202
- package/core/block_drag_surface.ts +0 -237
- package/core/block_dragger.ts +0 -447
- package/core/block_svg.ts +0 -1758
- package/core/blockly.js +0 -890
- package/core/blockly.ts +0 -749
- package/core/blockly_options.ts +0 -81
- package/core/blocks.ts +0 -29
- package/core/browser_events.ts +0 -289
- package/core/bubble.ts +0 -892
- package/core/bubble_dragger.ts +0 -229
- package/core/bump_objects.ts +0 -182
- package/core/clipboard.ts +0 -91
- package/core/comment.ts +0 -398
- package/core/common.ts +0 -288
- package/core/component_manager.ts +0 -211
- package/core/config.ts +0 -80
- package/core/connection.ts +0 -692
- package/core/connection_checker.ts +0 -301
- package/core/connection_db.ts +0 -289
- package/core/connection_type.ts +0 -32
- package/core/constants.ts +0 -29
- package/core/contextmenu.ts +0 -363
- package/core/contextmenu_items.ts +0 -576
- package/core/contextmenu_registry.ts +0 -179
- package/core/css.ts +0 -560
- package/core/delete_area.ts +0 -82
- package/core/dialog.ts +0 -127
- package/core/drag_target.ts +0 -94
- package/core/dropdowndiv.ts +0 -683
- package/core/events/events.ts +0 -123
- package/core/events/events_abstract.ts +0 -112
- package/core/events/events_block_base.ts +0 -65
- package/core/events/events_block_change.ts +0 -176
- package/core/events/events_block_create.ts +0 -114
- package/core/events/events_block_delete.ts +0 -126
- package/core/events/events_block_drag.ts +0 -82
- package/core/events/events_block_move.ts +0 -206
- package/core/events/events_bubble_open.ts +0 -82
- package/core/events/events_click.ts +0 -84
- package/core/events/events_comment_base.ts +0 -107
- package/core/events/events_comment_change.ts +0 -108
- package/core/events/events_comment_create.ts +0 -82
- package/core/events/events_comment_delete.ts +0 -77
- package/core/events/events_comment_move.ts +0 -154
- package/core/events/events_marker_move.ts +0 -99
- package/core/events/events_selected.ts +0 -78
- package/core/events/events_theme_change.ts +0 -67
- package/core/events/events_toolbox_item_select.ts +0 -79
- package/core/events/events_trashcan_open.ts +0 -68
- package/core/events/events_ui.ts +0 -89
- package/core/events/events_ui_base.ts +0 -54
- package/core/events/events_var_base.ts +0 -65
- package/core/events/events_var_create.ts +0 -88
- package/core/events/events_var_delete.ts +0 -88
- package/core/events/events_var_rename.ts +0 -89
- package/core/events/events_viewport.ts +0 -100
- package/core/events/utils.ts +0 -529
- package/core/events/workspace_events.ts +0 -86
- package/core/extensions.ts +0 -504
- package/core/field.ts +0 -1206
- package/core/field_angle.ts +0 -563
- package/core/field_checkbox.ts +0 -243
- package/core/field_colour.ts +0 -632
- package/core/field_dropdown.ts +0 -773
- package/core/field_image.ts +0 -282
- package/core/field_label.ts +0 -152
- package/core/field_label_serializable.ts +0 -76
- package/core/field_multilineinput.ts +0 -466
- package/core/field_number.ts +0 -327
- package/core/field_registry.ts +0 -87
- package/core/field_textinput.ts +0 -591
- package/core/field_variable.ts +0 -545
- package/core/flyout_base.ts +0 -1165
- package/core/flyout_button.ts +0 -292
- package/core/flyout_horizontal.ts +0 -381
- package/core/flyout_metrics_manager.ts +0 -94
- package/core/flyout_vertical.ts +0 -384
- package/core/generator.ts +0 -539
- package/core/gesture.ts +0 -946
- package/core/grid.ts +0 -192
- package/core/icon.ts +0 -189
- package/core/inject.ts +0 -390
- package/core/input.ts +0 -309
- package/core/input_types.ts +0 -32
- package/core/insertion_marker_manager.ts +0 -788
- package/core/interfaces/i_ast_node_location.ts +0 -23
- package/core/interfaces/i_ast_node_location_svg.ts +0 -37
- package/core/interfaces/i_ast_node_location_with_block.ts +0 -38
- package/core/interfaces/i_autohideable.ts +0 -34
- package/core/interfaces/i_block_dragger.ts +0 -67
- package/core/interfaces/i_bounded_element.ts +0 -42
- package/core/interfaces/i_bubble.ts +0 -88
- package/core/interfaces/i_collapsible_toolbox_item.ts +0 -47
- package/core/interfaces/i_component.ts +0 -32
- package/core/interfaces/i_connection_checker.ts +0 -102
- package/core/interfaces/i_contextmenu.ts +0 -26
- package/core/interfaces/i_copyable.ts +0 -40
- package/core/interfaces/i_deletable.ts +0 -29
- package/core/interfaces/i_delete_area.ts +0 -46
- package/core/interfaces/i_drag_target.ts +0 -84
- package/core/interfaces/i_draggable.ts +0 -25
- package/core/interfaces/i_flyout.ts +0 -186
- package/core/interfaces/i_keyboard_accessible.ts +0 -35
- package/core/interfaces/i_metrics_manager.ts +0 -151
- package/core/interfaces/i_movable.ts +0 -29
- package/core/interfaces/i_positionable.ts +0 -50
- package/core/interfaces/i_registrable.ts +0 -25
- package/core/interfaces/i_registrable_field.ts +0 -31
- package/core/interfaces/i_selectable.ts +0 -34
- package/core/interfaces/i_selectable_toolbox_item.ts +0 -64
- package/core/interfaces/i_serializer.ts +0 -65
- package/core/interfaces/i_styleable.ts +0 -35
- package/core/interfaces/i_toolbox.ts +0 -127
- package/core/interfaces/i_toolbox_item.ts +0 -84
- package/core/internal_constants.ts +0 -67
- package/core/keyboard_nav/ast_node.ts +0 -717
- package/core/keyboard_nav/basic_cursor.ts +0 -214
- package/core/keyboard_nav/cursor.ts +0 -134
- package/core/keyboard_nav/marker.ts +0 -115
- package/core/keyboard_nav/tab_navigate_cursor.ts +0 -48
- package/core/main.js +0 -303
- package/core/marker_manager.ts +0 -181
- package/core/menu.ts +0 -449
- package/core/menuitem.ts +0 -240
- package/core/metrics_manager.ts +0 -456
- package/core/msg.ts +0 -20
- package/core/mutator.ts +0 -560
- package/core/names.ts +0 -267
- package/core/options.ts +0 -365
- package/core/positionable_helpers.ts +0 -181
- package/core/procedures.ts +0 -443
- package/core/registry.ts +0 -339
- package/core/rendered_connection.ts +0 -568
- package/core/renderers/common/block_rendering.ts +0 -164
- package/core/renderers/common/constants.ts +0 -1124
- package/core/renderers/common/debug.ts +0 -61
- package/core/renderers/common/debugger.ts +0 -433
- package/core/renderers/common/drawer.ts +0 -450
- package/core/renderers/common/i_path_object.ts +0 -161
- package/core/renderers/common/info.ts +0 -718
- package/core/renderers/common/marker_svg.ts +0 -680
- package/core/renderers/common/path_object.ts +0 -272
- package/core/renderers/common/renderer.ts +0 -271
- package/core/renderers/geras/constants.ts +0 -61
- package/core/renderers/geras/drawer.ts +0 -176
- package/core/renderers/geras/geras.ts +0 -37
- package/core/renderers/geras/highlight_constants.ts +0 -337
- package/core/renderers/geras/highlighter.ts +0 -306
- package/core/renderers/geras/info.ts +0 -450
- package/core/renderers/geras/measurables/inline_input.ts +0 -51
- package/core/renderers/geras/measurables/statement_input.ts +0 -50
- package/core/renderers/geras/path_object.ts +0 -138
- package/core/renderers/geras/renderer.ts +0 -126
- package/core/renderers/measurables/base.ts +0 -53
- package/core/renderers/measurables/bottom_row.ts +0 -120
- package/core/renderers/measurables/connection.ts +0 -52
- package/core/renderers/measurables/external_value_input.ts +0 -65
- package/core/renderers/measurables/field.ts +0 -63
- package/core/renderers/measurables/hat.ts +0 -48
- package/core/renderers/measurables/icon.ts +0 -54
- package/core/renderers/measurables/in_row_spacer.ts +0 -44
- package/core/renderers/measurables/inline_input.ts +0 -76
- package/core/renderers/measurables/input_connection.ts +0 -66
- package/core/renderers/measurables/input_row.ts +0 -82
- package/core/renderers/measurables/jagged_edge.ts +0 -43
- package/core/renderers/measurables/next_connection.ts +0 -47
- package/core/renderers/measurables/output_connection.ts +0 -56
- package/core/renderers/measurables/previous_connection.ts +0 -47
- package/core/renderers/measurables/round_corner.ts +0 -49
- package/core/renderers/measurables/row.ts +0 -225
- package/core/renderers/measurables/spacer_row.ts +0 -55
- package/core/renderers/measurables/square_corner.ts +0 -47
- package/core/renderers/measurables/statement_input.ts +0 -55
- package/core/renderers/measurables/top_row.ts +0 -122
- package/core/renderers/measurables/types.ts +0 -332
- package/core/renderers/minimalist/constants.ts +0 -32
- package/core/renderers/minimalist/drawer.ts +0 -38
- package/core/renderers/minimalist/info.ts +0 -52
- package/core/renderers/minimalist/minimalist.ts +0 -22
- package/core/renderers/minimalist/renderer.ts +0 -71
- package/core/renderers/thrasos/info.ts +0 -338
- package/core/renderers/thrasos/renderer.ts +0 -48
- package/core/renderers/thrasos/thrasos.ts +0 -20
- package/core/renderers/zelos/constants.ts +0 -858
- package/core/renderers/zelos/drawer.ts +0 -228
- package/core/renderers/zelos/info.ts +0 -593
- package/core/renderers/zelos/marker_svg.ts +0 -151
- package/core/renderers/zelos/measurables/bottom_row.ts +0 -53
- package/core/renderers/zelos/measurables/inputs.ts +0 -56
- package/core/renderers/zelos/measurables/row_elements.ts +0 -45
- package/core/renderers/zelos/measurables/top_row.ts +0 -58
- package/core/renderers/zelos/path_object.ts +0 -215
- package/core/renderers/zelos/renderer.ts +0 -142
- package/core/renderers/zelos/zelos.ts +0 -39
- package/core/scrollbar.ts +0 -870
- package/core/scrollbar_pair.ts +0 -321
- package/core/serialization/blocks.ts +0 -706
- package/core/serialization/exceptions.ts +0 -98
- package/core/serialization/priorities.ts +0 -32
- package/core/serialization/registry.ts +0 -43
- package/core/serialization/variables.ts +0 -96
- package/core/serialization/workspaces.ts +0 -106
- package/core/shortcut_items.ts +0 -266
- package/core/shortcut_registry.ts +0 -355
- package/core/sprites.ts +0 -29
- package/core/theme/classic.ts +0 -54
- package/core/theme/themes.ts +0 -22
- package/core/theme/zelos.ts +0 -91
- package/core/theme.ts +0 -221
- package/core/theme_manager.ts +0 -186
- package/core/toolbox/category.ts +0 -679
- package/core/toolbox/collapsible_category.ts +0 -273
- package/core/toolbox/separator.ts +0 -105
- package/core/toolbox/toolbox.ts +0 -1044
- package/core/toolbox/toolbox_item.ts +0 -147
- package/core/tooltip.ts +0 -463
- package/core/touch.ts +0 -306
- package/core/touch_gesture.ts +0 -295
- package/core/trashcan.ts +0 -671
- package/core/utils/aria.ts +0 -160
- package/core/utils/array.ts +0 -32
- package/core/utils/colour.ts +0 -276
- package/core/utils/coordinate.ts +0 -124
- package/core/utils/deprecation.ts +0 -41
- package/core/utils/dom.ts +0 -408
- package/core/utils/idgenerator.ts +0 -80
- package/core/utils/keycodes.ts +0 -169
- package/core/utils/math.ts +0 -61
- package/core/utils/metrics.ts +0 -97
- package/core/utils/object.ts +0 -95
- package/core/utils/parsing.ts +0 -261
- package/core/utils/rect.ts +0 -62
- package/core/utils/sentinel.ts +0 -23
- package/core/utils/size.ts +0 -51
- package/core/utils/string.ts +0 -308
- package/core/utils/style.ts +0 -306
- package/core/utils/svg.ts +0 -88
- package/core/utils/svg_math.ts +0 -269
- package/core/utils/svg_paths.ts +0 -140
- package/core/utils/toolbox.ts +0 -433
- package/core/utils/useragent.ts +0 -135
- package/core/utils/xml.ts +0 -97
- package/core/utils.ts +0 -428
- package/core/variable_map.ts +0 -392
- package/core/variable_model.ts +0 -82
- package/core/variables.ts +0 -596
- package/core/variables_dynamic.ts +0 -133
- package/core/warning.ts +0 -161
- package/core/widgetdiv.ts +0 -257
- package/core/workspace.ts +0 -801
- package/core/workspace_audio.ts +0 -156
- package/core/workspace_comment.ts +0 -398
- package/core/workspace_comment_svg.ts +0 -1127
- package/core/workspace_drag_surface_svg.ts +0 -187
- package/core/workspace_dragger.ts +0 -104
- package/core/workspace_svg.ts +0 -2655
- package/core/xml.ts +0 -1023
- package/core/zoom_controls.ts +0 -441
- package/generators/dart/all.js +0 -27
- package/generators/dart/colour.js +0 -105
- package/generators/dart/lists.js +0 -431
- package/generators/dart/logic.js +0 -123
- package/generators/dart/loops.js +0 -161
- package/generators/dart/math.js +0 -446
- package/generators/dart/procedures.js +0 -105
- package/generators/dart/text.js +0 -338
- package/generators/dart/variables.js +0 -32
- package/generators/dart/variables_dynamic.js +0 -21
- package/generators/dart.js +0 -303
- package/generators/javascript/all.js +0 -27
- package/generators/javascript/colour.js +0 -85
- package/generators/javascript/lists.js +0 -405
- package/generators/javascript/logic.js +0 -127
- package/generators/javascript/loops.js +0 -180
- package/generators/javascript/math.js +0 -401
- package/generators/javascript/procedures.js +0 -110
- package/generators/javascript/text.js +0 -371
- package/generators/javascript/variables.js +0 -32
- package/generators/javascript/variables_dynamic.js +0 -21
- package/generators/javascript.js +0 -322
- package/generators/lua/all.js +0 -27
- package/generators/lua/colour.js +0 -71
- package/generators/lua/lists.js +0 -348
- package/generators/lua/logic.js +0 -112
- package/generators/lua/loops.js +0 -168
- package/generators/lua/math.js +0 -406
- package/generators/lua/procedures.js +0 -106
- package/generators/lua/text.js +0 -327
- package/generators/lua/variables.js +0 -31
- package/generators/lua/variables_dynamic.js +0 -21
- package/generators/lua.js +0 -206
- package/generators/php/all.js +0 -27
- package/generators/php/colour.js +0 -81
- package/generators/php/lists.js +0 -481
- package/generators/php/logic.js +0 -119
- package/generators/php/loops.js +0 -161
- package/generators/php/math.js +0 -349
- package/generators/php/procedures.js +0 -125
- package/generators/php/text.js +0 -255
- package/generators/php/variables.js +0 -32
- package/generators/php/variables_dynamic.js +0 -21
- package/generators/php.js +0 -303
- package/generators/python/all.js +0 -27
- package/generators/python/colour.js +0 -67
- package/generators/python/lists.js +0 -346
- package/generators/python/logic.js +0 -120
- package/generators/python/loops.js +0 -206
- package/generators/python/math.js +0 -373
- package/generators/python/procedures.js +0 -129
- package/generators/python/text.js +0 -291
- package/generators/python/variables.js +0 -32
- package/generators/python/variables_dynamic.js +0 -21
- package/generators/python.js +0 -333
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2021 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* @fileoverview Calculates and reports flyout workspace metrics.
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Calculates and reports flyout workspace metrics.
|
|
13
|
-
* @class
|
|
14
|
-
*/
|
|
15
|
-
import * as goog from '../closure/goog/goog.js';
|
|
16
|
-
goog.declareModuleId('Blockly.FlyoutMetricsManager');
|
|
17
|
-
|
|
18
|
-
import type {IFlyout} from './interfaces/i_flyout.js';
|
|
19
|
-
import {ContainerRegion, MetricsManager} from './metrics_manager.js';
|
|
20
|
-
import type {WorkspaceSvg} from './workspace_svg.js';
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* Calculates metrics for a flyout's workspace.
|
|
25
|
-
* The metrics are mainly used to size scrollbars for the flyout.
|
|
26
|
-
* @alias Blockly.FlyoutMetricsManager
|
|
27
|
-
*/
|
|
28
|
-
export class FlyoutMetricsManager extends MetricsManager {
|
|
29
|
-
/** The flyout that owns the workspace to calculate metrics for. */
|
|
30
|
-
protected flyout_: IFlyout;
|
|
31
|
-
|
|
32
|
-
/**
|
|
33
|
-
* @param workspace The flyout's workspace.
|
|
34
|
-
* @param flyout The flyout.
|
|
35
|
-
*/
|
|
36
|
-
constructor(workspace: WorkspaceSvg, flyout: IFlyout) {
|
|
37
|
-
super(workspace);
|
|
38
|
-
this.flyout_ = flyout;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
/**
|
|
42
|
-
* Gets the bounding box of the blocks on the flyout's workspace.
|
|
43
|
-
* This is in workspace coordinates.
|
|
44
|
-
* @return The bounding box of the blocks on the workspace.
|
|
45
|
-
*/
|
|
46
|
-
private getBoundingBox_(): SVGRect|
|
|
47
|
-
{height: number, y: number, width: number, x: number} {
|
|
48
|
-
let blockBoundingBox;
|
|
49
|
-
try {
|
|
50
|
-
blockBoundingBox = this.workspace_.getCanvas().getBBox();
|
|
51
|
-
} catch (e) {
|
|
52
|
-
// Firefox has trouble with hidden elements (Bug 528969).
|
|
53
|
-
// 2021 Update: It looks like this was fixed around Firefox 77 released in
|
|
54
|
-
// 2020.
|
|
55
|
-
blockBoundingBox = {height: 0, y: 0, width: 0, x: 0};
|
|
56
|
-
}
|
|
57
|
-
return blockBoundingBox;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
override getContentMetrics(opt_getWorkspaceCoordinates: boolean) {
|
|
61
|
-
// The bounding box is in workspace coordinates.
|
|
62
|
-
const blockBoundingBox = this.getBoundingBox_();
|
|
63
|
-
const scale = opt_getWorkspaceCoordinates ? 1 : this.workspace_.scale;
|
|
64
|
-
|
|
65
|
-
return {
|
|
66
|
-
height: blockBoundingBox.height * scale,
|
|
67
|
-
width: blockBoundingBox.width * scale,
|
|
68
|
-
top: blockBoundingBox.y * scale,
|
|
69
|
-
left: blockBoundingBox.x * scale,
|
|
70
|
-
};
|
|
71
|
-
}
|
|
72
|
-
|
|
73
|
-
override getScrollMetrics(
|
|
74
|
-
opt_getWorkspaceCoordinates: boolean, opt_viewMetrics: ContainerRegion,
|
|
75
|
-
opt_contentMetrics: ContainerRegion) {
|
|
76
|
-
// AnyDuringMigration because: Expected 1 arguments, but got 0.
|
|
77
|
-
const contentMetrics =
|
|
78
|
-
opt_contentMetrics || (this.getContentMetrics as AnyDuringMigration)();
|
|
79
|
-
const margin = this.flyout_.MARGIN * this.workspace_.scale;
|
|
80
|
-
const scale = opt_getWorkspaceCoordinates ? this.workspace_.scale : 1;
|
|
81
|
-
|
|
82
|
-
// The left padding isn't just the margin. Some blocks are also offset by
|
|
83
|
-
// tabWidth so that value and statement blocks line up.
|
|
84
|
-
// The contentMetrics.left value is equivalent to the variable left padding.
|
|
85
|
-
const leftPadding = contentMetrics.left;
|
|
86
|
-
|
|
87
|
-
return {
|
|
88
|
-
height: (contentMetrics.height + 2 * margin) / scale,
|
|
89
|
-
width: (contentMetrics.width + leftPadding + margin) / scale,
|
|
90
|
-
top: 0,
|
|
91
|
-
left: 0,
|
|
92
|
-
};
|
|
93
|
-
}
|
|
94
|
-
}
|
package/core/flyout_vertical.ts
DELETED
|
@@ -1,384 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2017 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* @fileoverview Layout code for a vertical variant of the flyout.
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Layout code for a vertical variant of the flyout.
|
|
13
|
-
* @class
|
|
14
|
-
*/
|
|
15
|
-
import * as goog from '../closure/goog/goog.js';
|
|
16
|
-
goog.declareModuleId('Blockly.VerticalFlyout');
|
|
17
|
-
|
|
18
|
-
// Unused import preserved for side-effects. Remove if unneeded.
|
|
19
|
-
// import './block.js';
|
|
20
|
-
// Unused import preserved for side-effects. Remove if unneeded.
|
|
21
|
-
// import './constants.js';
|
|
22
|
-
|
|
23
|
-
import * as browserEvents from './browser_events.js';
|
|
24
|
-
import * as dropDownDiv from './dropdowndiv.js';
|
|
25
|
-
import {Flyout, FlyoutItem} from './flyout_base.js';
|
|
26
|
-
import type {FlyoutButton} from './flyout_button.js';
|
|
27
|
-
import type {Options} from './options.js';
|
|
28
|
-
import * as registry from './registry.js';
|
|
29
|
-
import {Scrollbar} from './scrollbar.js';
|
|
30
|
-
import type {Coordinate} from './utils/coordinate.js';
|
|
31
|
-
import {Rect} from './utils/rect.js';
|
|
32
|
-
import * as toolbox from './utils/toolbox.js';
|
|
33
|
-
import * as WidgetDiv from './widgetdiv.js';
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Class for a flyout.
|
|
38
|
-
* @alias Blockly.VerticalFlyout
|
|
39
|
-
*/
|
|
40
|
-
export class VerticalFlyout extends Flyout {
|
|
41
|
-
/** The name of the vertical flyout in the registry. */
|
|
42
|
-
static registryName = 'verticalFlyout';
|
|
43
|
-
|
|
44
|
-
// Record the height for workspace metrics.
|
|
45
|
-
override height_: AnyDuringMigration;
|
|
46
|
-
|
|
47
|
-
// Record the width for workspace metrics and .position.
|
|
48
|
-
override width_: AnyDuringMigration;
|
|
49
|
-
|
|
50
|
-
/** @param workspaceOptions Dictionary of options for the workspace. */
|
|
51
|
-
constructor(workspaceOptions: Options) {
|
|
52
|
-
super(workspaceOptions);
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
/**
|
|
56
|
-
* Sets the translation of the flyout to match the scrollbars.
|
|
57
|
-
* @param xyRatio Contains a y property which is a float between 0 and 1
|
|
58
|
-
* specifying the degree of scrolling and a similar x property.
|
|
59
|
-
*/
|
|
60
|
-
protected override setMetrics_(xyRatio: {x: number, y: number}) {
|
|
61
|
-
if (!this.isVisible()) {
|
|
62
|
-
return;
|
|
63
|
-
}
|
|
64
|
-
const metricsManager = this.workspace_.getMetricsManager();
|
|
65
|
-
const scrollMetrics = metricsManager.getScrollMetrics();
|
|
66
|
-
const viewMetrics = metricsManager.getViewMetrics();
|
|
67
|
-
const absoluteMetrics = metricsManager.getAbsoluteMetrics();
|
|
68
|
-
|
|
69
|
-
if (typeof xyRatio.y === 'number') {
|
|
70
|
-
this.workspace_.scrollY =
|
|
71
|
-
-(scrollMetrics.top +
|
|
72
|
-
(scrollMetrics.height - viewMetrics.height) * xyRatio.y);
|
|
73
|
-
}
|
|
74
|
-
this.workspace_.translate(
|
|
75
|
-
this.workspace_.scrollX + absoluteMetrics.left,
|
|
76
|
-
this.workspace_.scrollY + absoluteMetrics.top);
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
/**
|
|
80
|
-
* Calculates the x coordinate for the flyout position.
|
|
81
|
-
* @return X coordinate.
|
|
82
|
-
*/
|
|
83
|
-
override getX(): number {
|
|
84
|
-
if (!this.isVisible()) {
|
|
85
|
-
return 0;
|
|
86
|
-
}
|
|
87
|
-
const metricsManager = this.targetWorkspace!.getMetricsManager();
|
|
88
|
-
const absoluteMetrics = metricsManager.getAbsoluteMetrics();
|
|
89
|
-
const viewMetrics = metricsManager.getViewMetrics();
|
|
90
|
-
const toolboxMetrics = metricsManager.getToolboxMetrics();
|
|
91
|
-
let x = 0;
|
|
92
|
-
|
|
93
|
-
// If this flyout is not the trashcan flyout (e.g. toolbox or mutator).
|
|
94
|
-
// Trashcan flyout is opposite the main flyout.
|
|
95
|
-
if (this.targetWorkspace!.toolboxPosition === this.toolboxPosition_) {
|
|
96
|
-
// If there is a category toolbox.
|
|
97
|
-
// Simple (flyout-only) toolbox.
|
|
98
|
-
if (this.targetWorkspace!.getToolbox()) {
|
|
99
|
-
if (this.toolboxPosition_ === toolbox.Position.LEFT) {
|
|
100
|
-
x = toolboxMetrics.width;
|
|
101
|
-
} else {
|
|
102
|
-
x = viewMetrics.width - this.width_;
|
|
103
|
-
}
|
|
104
|
-
} else {
|
|
105
|
-
if (this.toolboxPosition_ === toolbox.Position.LEFT) {
|
|
106
|
-
x = 0;
|
|
107
|
-
} else {
|
|
108
|
-
// The simple flyout does not cover the workspace.
|
|
109
|
-
x = viewMetrics.width;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
} else {
|
|
113
|
-
if (this.toolboxPosition_ === toolbox.Position.LEFT) {
|
|
114
|
-
x = 0;
|
|
115
|
-
} else {
|
|
116
|
-
// Because the anchor point of the flyout is on the left, but we want
|
|
117
|
-
// to align the right edge of the flyout with the right edge of the
|
|
118
|
-
// blocklyDiv, we calculate the full width of the div minus the width
|
|
119
|
-
// of the flyout.
|
|
120
|
-
x = viewMetrics.width + absoluteMetrics.left - this.width_;
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
return x;
|
|
125
|
-
}
|
|
126
|
-
|
|
127
|
-
/**
|
|
128
|
-
* Calculates the y coordinate for the flyout position.
|
|
129
|
-
* @return Y coordinate.
|
|
130
|
-
*/
|
|
131
|
-
override getY(): number {
|
|
132
|
-
// Y is always 0 since this is a vertical flyout.
|
|
133
|
-
return 0;
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
/** Move the flyout to the edge of the workspace. */
|
|
137
|
-
override position() {
|
|
138
|
-
if (!this.isVisible() || !this.targetWorkspace!.isVisible()) {
|
|
139
|
-
return;
|
|
140
|
-
}
|
|
141
|
-
const metricsManager = this.targetWorkspace!.getMetricsManager();
|
|
142
|
-
const targetWorkspaceViewMetrics = metricsManager.getViewMetrics();
|
|
143
|
-
this.height_ = targetWorkspaceViewMetrics.height;
|
|
144
|
-
|
|
145
|
-
const edgeWidth = this.width_ - this.CORNER_RADIUS;
|
|
146
|
-
const edgeHeight =
|
|
147
|
-
targetWorkspaceViewMetrics.height - 2 * this.CORNER_RADIUS;
|
|
148
|
-
this.setBackgroundPath_(edgeWidth, edgeHeight);
|
|
149
|
-
|
|
150
|
-
const x = this.getX();
|
|
151
|
-
const y = this.getY();
|
|
152
|
-
|
|
153
|
-
this.positionAt_(this.width_, this.height_, x, y);
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
/**
|
|
157
|
-
* Create and set the path for the visible boundaries of the flyout.
|
|
158
|
-
* @param width The width of the flyout, not including the rounded corners.
|
|
159
|
-
* @param height The height of the flyout, not including rounded corners.
|
|
160
|
-
*/
|
|
161
|
-
private setBackgroundPath_(width: number, height: number) {
|
|
162
|
-
const atRight = this.toolboxPosition_ === toolbox.Position.RIGHT;
|
|
163
|
-
const totalWidth = width + this.CORNER_RADIUS;
|
|
164
|
-
|
|
165
|
-
// Decide whether to start on the left or right.
|
|
166
|
-
const path: Array<string|number> =
|
|
167
|
-
['M ' + (atRight ? totalWidth : 0) + ',0'];
|
|
168
|
-
// Top.
|
|
169
|
-
path.push('h', (atRight ? -width : width));
|
|
170
|
-
// Rounded corner.
|
|
171
|
-
path.push(
|
|
172
|
-
'a', this.CORNER_RADIUS, this.CORNER_RADIUS, 0, 0, atRight ? 0 : 1,
|
|
173
|
-
atRight ? -this.CORNER_RADIUS : this.CORNER_RADIUS, this.CORNER_RADIUS);
|
|
174
|
-
// Side closest to workspace.
|
|
175
|
-
path.push('v', Math.max(0, height));
|
|
176
|
-
// Rounded corner.
|
|
177
|
-
path.push(
|
|
178
|
-
'a', this.CORNER_RADIUS, this.CORNER_RADIUS, 0, 0, atRight ? 0 : 1,
|
|
179
|
-
atRight ? this.CORNER_RADIUS : -this.CORNER_RADIUS, this.CORNER_RADIUS);
|
|
180
|
-
// Bottom.
|
|
181
|
-
path.push('h', (atRight ? width : -width));
|
|
182
|
-
path.push('z');
|
|
183
|
-
this.svgBackground_!.setAttribute('d', path.join(' '));
|
|
184
|
-
}
|
|
185
|
-
|
|
186
|
-
/** Scroll the flyout to the top. */
|
|
187
|
-
override scrollToStart() {
|
|
188
|
-
this.workspace_.scrollbar.setY(0);
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
/**
|
|
192
|
-
* Scroll the flyout.
|
|
193
|
-
* @param e Mouse wheel scroll event.
|
|
194
|
-
*/
|
|
195
|
-
protected override wheel_(e: WheelEvent) {
|
|
196
|
-
const scrollDelta = browserEvents.getScrollDeltaPixels(e);
|
|
197
|
-
|
|
198
|
-
if (scrollDelta.y) {
|
|
199
|
-
const metricsManager = this.workspace_.getMetricsManager();
|
|
200
|
-
const scrollMetrics = metricsManager.getScrollMetrics();
|
|
201
|
-
const viewMetrics = metricsManager.getViewMetrics();
|
|
202
|
-
const pos = viewMetrics.top - scrollMetrics.top + scrollDelta.y;
|
|
203
|
-
|
|
204
|
-
this.workspace_.scrollbar.setY(pos);
|
|
205
|
-
// When the flyout moves from a wheel event, hide WidgetDiv and
|
|
206
|
-
// dropDownDiv.
|
|
207
|
-
WidgetDiv.hide();
|
|
208
|
-
dropDownDiv.hideWithoutAnimation();
|
|
209
|
-
}
|
|
210
|
-
// Don't scroll the page.
|
|
211
|
-
e.preventDefault();
|
|
212
|
-
// Don't propagate mousewheel event (zooming).
|
|
213
|
-
e.stopPropagation();
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
/**
|
|
217
|
-
* Lay out the blocks in the flyout.
|
|
218
|
-
* @param contents The blocks and buttons to lay out.
|
|
219
|
-
* @param gaps The visible gaps between blocks.
|
|
220
|
-
*/
|
|
221
|
-
protected override layout_(contents: FlyoutItem[], gaps: number[]) {
|
|
222
|
-
this.workspace_.scale = this.targetWorkspace!.scale;
|
|
223
|
-
const margin = this.MARGIN;
|
|
224
|
-
const cursorX = this.RTL ? margin : margin + this.tabWidth_;
|
|
225
|
-
let cursorY = margin;
|
|
226
|
-
|
|
227
|
-
for (let i = 0, item; item = contents[i]; i++) {
|
|
228
|
-
if (item.type === 'block') {
|
|
229
|
-
const block = item.block;
|
|
230
|
-
const allBlocks = block!.getDescendants(false);
|
|
231
|
-
for (let j = 0, child; child = allBlocks[j]; j++) {
|
|
232
|
-
// Mark blocks as being inside a flyout. This is used to detect and
|
|
233
|
-
// prevent the closure of the flyout if the user right-clicks on such
|
|
234
|
-
// a block.
|
|
235
|
-
child.isInFlyout = true;
|
|
236
|
-
}
|
|
237
|
-
block!.render();
|
|
238
|
-
const root = block!.getSvgRoot();
|
|
239
|
-
const blockHW = block!.getHeightWidth();
|
|
240
|
-
const moveX =
|
|
241
|
-
block!.outputConnection ? cursorX - this.tabWidth_ : cursorX;
|
|
242
|
-
block!.moveBy(moveX, cursorY);
|
|
243
|
-
|
|
244
|
-
// AnyDuringMigration because: Argument of type 'BlockSvg | undefined'
|
|
245
|
-
// is not assignable to parameter of type 'BlockSvg'.
|
|
246
|
-
const rect = this.createRect_(
|
|
247
|
-
block as AnyDuringMigration,
|
|
248
|
-
this.RTL ? moveX - blockHW.width : moveX, cursorY, blockHW, i);
|
|
249
|
-
|
|
250
|
-
// AnyDuringMigration because: Argument of type 'BlockSvg | undefined'
|
|
251
|
-
// is not assignable to parameter of type 'BlockSvg'.
|
|
252
|
-
this.addBlockListeners_(root, block as AnyDuringMigration, rect);
|
|
253
|
-
|
|
254
|
-
cursorY += blockHW.height + gaps[i];
|
|
255
|
-
} else if (item.type === 'button') {
|
|
256
|
-
const button = item.button as FlyoutButton;
|
|
257
|
-
this.initFlyoutButton_(button, cursorX, cursorY);
|
|
258
|
-
cursorY += button.height + gaps[i];
|
|
259
|
-
}
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
/**
|
|
264
|
-
* Determine if a drag delta is toward the workspace, based on the position
|
|
265
|
-
* and orientation of the flyout. This is used in determineDragIntention_ to
|
|
266
|
-
* determine if a new block should be created or if the flyout should scroll.
|
|
267
|
-
* @param currentDragDeltaXY How far the pointer has moved from the position
|
|
268
|
-
* at mouse down, in pixel units.
|
|
269
|
-
* @return True if the drag is toward the workspace.
|
|
270
|
-
* @internal
|
|
271
|
-
*/
|
|
272
|
-
override isDragTowardWorkspace(currentDragDeltaXY: Coordinate): boolean {
|
|
273
|
-
const dx = currentDragDeltaXY.x;
|
|
274
|
-
const dy = currentDragDeltaXY.y;
|
|
275
|
-
// Direction goes from -180 to 180, with 0 toward the right and 90 on top.
|
|
276
|
-
const dragDirection = Math.atan2(dy, dx) / Math.PI * 180;
|
|
277
|
-
|
|
278
|
-
const range = this.dragAngleRange_;
|
|
279
|
-
// Check for left or right dragging.
|
|
280
|
-
if (dragDirection < range && dragDirection > -range ||
|
|
281
|
-
(dragDirection < -180 + range || dragDirection > 180 - range)) {
|
|
282
|
-
return true;
|
|
283
|
-
}
|
|
284
|
-
return false;
|
|
285
|
-
}
|
|
286
|
-
|
|
287
|
-
/**
|
|
288
|
-
* Returns the bounding rectangle of the drag target area in pixel units
|
|
289
|
-
* relative to viewport.
|
|
290
|
-
* @return The component's bounding box. Null if drag target area should be
|
|
291
|
-
* ignored.
|
|
292
|
-
*/
|
|
293
|
-
override getClientRect(): Rect|null {
|
|
294
|
-
if (!this.svgGroup_ || this.autoClose || !this.isVisible()) {
|
|
295
|
-
// The bounding rectangle won't compute correctly if the flyout is closed
|
|
296
|
-
// and auto-close flyouts aren't valid drag targets (or delete areas).
|
|
297
|
-
return null;
|
|
298
|
-
}
|
|
299
|
-
|
|
300
|
-
const flyoutRect = this.svgGroup_.getBoundingClientRect();
|
|
301
|
-
// BIG_NUM is offscreen padding so that blocks dragged beyond the shown
|
|
302
|
-
// flyout area are still deleted. Must be larger than the largest screen
|
|
303
|
-
// size, but be smaller than half Number.MAX_SAFE_INTEGER (not available on
|
|
304
|
-
// IE).
|
|
305
|
-
const BIG_NUM = 1000000000;
|
|
306
|
-
const left = flyoutRect.left;
|
|
307
|
-
|
|
308
|
-
if (this.toolboxPosition_ === toolbox.Position.LEFT) {
|
|
309
|
-
const width = flyoutRect.width;
|
|
310
|
-
return new Rect(-BIG_NUM, BIG_NUM, -BIG_NUM, left + width);
|
|
311
|
-
} else { // Right
|
|
312
|
-
return new Rect(-BIG_NUM, BIG_NUM, left, BIG_NUM);
|
|
313
|
-
}
|
|
314
|
-
}
|
|
315
|
-
|
|
316
|
-
/**
|
|
317
|
-
* Compute width of flyout. toolbox.Position mat under each block.
|
|
318
|
-
* For RTL: Lay out the blocks and buttons to be right-aligned.
|
|
319
|
-
*/
|
|
320
|
-
protected override reflowInternal_() {
|
|
321
|
-
this.workspace_.scale = this.getFlyoutScale();
|
|
322
|
-
let flyoutWidth = 0;
|
|
323
|
-
const blocks = this.workspace_.getTopBlocks(false);
|
|
324
|
-
for (let i = 0, block; block = blocks[i]; i++) {
|
|
325
|
-
let width = block.getHeightWidth().width;
|
|
326
|
-
if (block.outputConnection) {
|
|
327
|
-
width -= this.tabWidth_;
|
|
328
|
-
}
|
|
329
|
-
flyoutWidth = Math.max(flyoutWidth, width);
|
|
330
|
-
}
|
|
331
|
-
for (let i = 0, button; button = this.buttons_[i]; i++) {
|
|
332
|
-
flyoutWidth = Math.max(flyoutWidth, button.width);
|
|
333
|
-
}
|
|
334
|
-
flyoutWidth += this.MARGIN * 1.5 + this.tabWidth_;
|
|
335
|
-
flyoutWidth *= this.workspace_.scale;
|
|
336
|
-
flyoutWidth += Scrollbar.scrollbarThickness;
|
|
337
|
-
|
|
338
|
-
if (this.width_ !== flyoutWidth) {
|
|
339
|
-
for (let i = 0, block; block = blocks[i]; i++) {
|
|
340
|
-
if (this.RTL) {
|
|
341
|
-
// With the flyoutWidth known, right-align the blocks.
|
|
342
|
-
const oldX = block.getRelativeToSurfaceXY().x;
|
|
343
|
-
let newX = flyoutWidth / this.workspace_.scale - this.MARGIN;
|
|
344
|
-
if (!block.outputConnection) {
|
|
345
|
-
newX -= this.tabWidth_;
|
|
346
|
-
}
|
|
347
|
-
block.moveBy(newX - oldX, 0);
|
|
348
|
-
}
|
|
349
|
-
if (this.rectMap_.has(block)) {
|
|
350
|
-
// AnyDuringMigration because: Argument of type 'SVGElement |
|
|
351
|
-
// undefined' is not assignable to parameter of type 'SVGElement'.
|
|
352
|
-
this.moveRectToBlock_(
|
|
353
|
-
this.rectMap_.get(block) as AnyDuringMigration, block);
|
|
354
|
-
}
|
|
355
|
-
}
|
|
356
|
-
if (this.RTL) {
|
|
357
|
-
// With the flyoutWidth known, right-align the buttons.
|
|
358
|
-
for (let i = 0, button; button = this.buttons_[i]; i++) {
|
|
359
|
-
const y = button.getPosition().y;
|
|
360
|
-
const x = flyoutWidth / this.workspace_.scale - button.width -
|
|
361
|
-
this.MARGIN - this.tabWidth_;
|
|
362
|
-
button.moveTo(x, y);
|
|
363
|
-
}
|
|
364
|
-
}
|
|
365
|
-
|
|
366
|
-
if (this.targetWorkspace!.toolboxPosition === this.toolboxPosition_ &&
|
|
367
|
-
this.toolboxPosition_ === toolbox.Position.LEFT &&
|
|
368
|
-
!this.targetWorkspace!.getToolbox()) {
|
|
369
|
-
// This flyout is a simple toolbox. Reposition the workspace so that
|
|
370
|
-
// (0,0) is in the correct position relative to the new absolute edge
|
|
371
|
-
// (ie toolbox edge).
|
|
372
|
-
this.targetWorkspace!.translate(
|
|
373
|
-
this.targetWorkspace!.scrollX + flyoutWidth,
|
|
374
|
-
this.targetWorkspace!.scrollY);
|
|
375
|
-
}
|
|
376
|
-
this.width_ = flyoutWidth;
|
|
377
|
-
this.position();
|
|
378
|
-
this.targetWorkspace!.recordDragTargets();
|
|
379
|
-
}
|
|
380
|
-
}
|
|
381
|
-
}
|
|
382
|
-
|
|
383
|
-
registry.register(
|
|
384
|
-
registry.Type.FLYOUTS_VERTICAL_TOOLBOX, registry.DEFAULT, VerticalFlyout);
|