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
package/core/flyout_button.ts
DELETED
|
@@ -1,292 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2016 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* @fileoverview Class for a button in the flyout.
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Class for a button in the flyout.
|
|
13
|
-
* @class
|
|
14
|
-
*/
|
|
15
|
-
import * as goog from '../closure/goog/goog.js';
|
|
16
|
-
goog.declareModuleId('Blockly.FlyoutButton');
|
|
17
|
-
|
|
18
|
-
import * as browserEvents from './browser_events.js';
|
|
19
|
-
import * as Css from './css.js';
|
|
20
|
-
import {Coordinate} from './utils/coordinate.js';
|
|
21
|
-
import * as dom from './utils/dom.js';
|
|
22
|
-
import * as parsing from './utils/parsing.js';
|
|
23
|
-
import * as style from './utils/style.js';
|
|
24
|
-
import {Svg} from './utils/svg.js';
|
|
25
|
-
import type * as toolbox from './utils/toolbox.js';
|
|
26
|
-
import type {WorkspaceSvg} from './workspace_svg.js';
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* Class for a button or label in the flyout.
|
|
31
|
-
* @alias Blockly.FlyoutButton
|
|
32
|
-
*/
|
|
33
|
-
export class FlyoutButton {
|
|
34
|
-
/** The horizontal margin around the text in the button. */
|
|
35
|
-
static TEXT_MARGIN_X = 5;
|
|
36
|
-
|
|
37
|
-
/** The vertical margin around the text in the button. */
|
|
38
|
-
static TEXT_MARGIN_Y = 2;
|
|
39
|
-
private readonly text_: string;
|
|
40
|
-
private readonly position_: Coordinate;
|
|
41
|
-
private readonly callbackKey_: string;
|
|
42
|
-
private readonly cssClass_: string|null;
|
|
43
|
-
|
|
44
|
-
/** Mouse up event data. */
|
|
45
|
-
private onMouseUpWrapper_: browserEvents.Data|null = null;
|
|
46
|
-
info: toolbox.ButtonOrLabelInfo;
|
|
47
|
-
|
|
48
|
-
/** The width of the button's rect. */
|
|
49
|
-
width = 0;
|
|
50
|
-
|
|
51
|
-
/** The height of the button's rect. */
|
|
52
|
-
height = 0;
|
|
53
|
-
|
|
54
|
-
/** The root SVG group for the button or label. */
|
|
55
|
-
private svgGroup_: SVGGElement|null = null;
|
|
56
|
-
|
|
57
|
-
/** The SVG element with the text of the label or button. */
|
|
58
|
-
private svgText_: SVGTextElement|null = null;
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* @param workspace The workspace in which to place this button.
|
|
62
|
-
* @param targetWorkspace The flyout's target workspace.
|
|
63
|
-
* @param json The JSON specifying the label/button.
|
|
64
|
-
* @param isLabel_ Whether this button should be styled as a label.
|
|
65
|
-
* @internal
|
|
66
|
-
*/
|
|
67
|
-
constructor(
|
|
68
|
-
private readonly workspace: WorkspaceSvg,
|
|
69
|
-
private readonly targetWorkspace: WorkspaceSvg,
|
|
70
|
-
json: toolbox.ButtonOrLabelInfo, private readonly isLabel_: boolean) {
|
|
71
|
-
this.text_ = json['text'];
|
|
72
|
-
|
|
73
|
-
this.position_ = new Coordinate(0, 0);
|
|
74
|
-
|
|
75
|
-
/** The key to the function called when this button is clicked. */
|
|
76
|
-
this.callbackKey_ =
|
|
77
|
-
(json as
|
|
78
|
-
AnyDuringMigration)['callbackKey'] || /* Check the lower case version
|
|
79
|
-
too to satisfy IE */
|
|
80
|
-
(json as AnyDuringMigration)['callbackkey'];
|
|
81
|
-
|
|
82
|
-
/** If specified, a CSS class to add to this button. */
|
|
83
|
-
this.cssClass_ = (json as AnyDuringMigration)['web-class'] || null;
|
|
84
|
-
|
|
85
|
-
/** The JSON specifying the label / button. */
|
|
86
|
-
this.info = json;
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
* Create the button elements.
|
|
91
|
-
* @return The button's SVG group.
|
|
92
|
-
*/
|
|
93
|
-
createDom(): SVGElement {
|
|
94
|
-
let cssClass = this.isLabel_ ? 'blocklyFlyoutLabel' : 'blocklyFlyoutButton';
|
|
95
|
-
if (this.cssClass_) {
|
|
96
|
-
cssClass += ' ' + this.cssClass_;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
this.svgGroup_ = dom.createSvgElement(
|
|
100
|
-
Svg.G, {'class': cssClass}, this.workspace.getCanvas());
|
|
101
|
-
|
|
102
|
-
let shadow;
|
|
103
|
-
if (!this.isLabel_) {
|
|
104
|
-
// Shadow rectangle (light source does not mirror in RTL).
|
|
105
|
-
shadow = dom.createSvgElement(
|
|
106
|
-
Svg.RECT, {
|
|
107
|
-
'class': 'blocklyFlyoutButtonShadow',
|
|
108
|
-
'rx': 4,
|
|
109
|
-
'ry': 4,
|
|
110
|
-
'x': 1,
|
|
111
|
-
'y': 1,
|
|
112
|
-
},
|
|
113
|
-
this.svgGroup_!);
|
|
114
|
-
}
|
|
115
|
-
// Background rectangle.
|
|
116
|
-
const rect = dom.createSvgElement(
|
|
117
|
-
Svg.RECT, {
|
|
118
|
-
'class': this.isLabel_ ? 'blocklyFlyoutLabelBackground' :
|
|
119
|
-
'blocklyFlyoutButtonBackground',
|
|
120
|
-
'rx': 4,
|
|
121
|
-
'ry': 4,
|
|
122
|
-
},
|
|
123
|
-
this.svgGroup_!);
|
|
124
|
-
|
|
125
|
-
const svgText = dom.createSvgElement(
|
|
126
|
-
Svg.TEXT, {
|
|
127
|
-
'class': this.isLabel_ ? 'blocklyFlyoutLabelText' : 'blocklyText',
|
|
128
|
-
'x': 0,
|
|
129
|
-
'y': 0,
|
|
130
|
-
'text-anchor': 'middle',
|
|
131
|
-
},
|
|
132
|
-
this.svgGroup_!);
|
|
133
|
-
let text = parsing.replaceMessageReferences(this.text_);
|
|
134
|
-
if (this.workspace.RTL) {
|
|
135
|
-
// Force text to be RTL by adding an RLM.
|
|
136
|
-
text += '\u200F';
|
|
137
|
-
}
|
|
138
|
-
svgText.textContent = text;
|
|
139
|
-
if (this.isLabel_) {
|
|
140
|
-
this.svgText_ = svgText;
|
|
141
|
-
this.workspace.getThemeManager().subscribe(
|
|
142
|
-
this.svgText_, 'flyoutForegroundColour', 'fill');
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
const fontSize = style.getComputedStyle(svgText, 'fontSize');
|
|
146
|
-
const fontWeight = style.getComputedStyle(svgText, 'fontWeight');
|
|
147
|
-
const fontFamily = style.getComputedStyle(svgText, 'fontFamily');
|
|
148
|
-
this.width = dom.getFastTextWidthWithSizeString(
|
|
149
|
-
svgText, fontSize, fontWeight, fontFamily);
|
|
150
|
-
const fontMetrics =
|
|
151
|
-
dom.measureFontMetrics(text, fontSize, fontWeight, fontFamily);
|
|
152
|
-
this.height = fontMetrics.height;
|
|
153
|
-
|
|
154
|
-
if (!this.isLabel_) {
|
|
155
|
-
this.width += 2 * FlyoutButton.TEXT_MARGIN_X;
|
|
156
|
-
this.height += 2 * FlyoutButton.TEXT_MARGIN_Y;
|
|
157
|
-
shadow?.setAttribute('width', this.width.toString());
|
|
158
|
-
shadow?.setAttribute('height', this.height.toString());
|
|
159
|
-
}
|
|
160
|
-
rect.setAttribute('width', this.width.toString());
|
|
161
|
-
rect.setAttribute('height', this.height.toString());
|
|
162
|
-
|
|
163
|
-
svgText.setAttribute('x', (this.width / 2).toString());
|
|
164
|
-
svgText.setAttribute(
|
|
165
|
-
'y',
|
|
166
|
-
(this.height / 2 - fontMetrics.height / 2 + fontMetrics.baseline)
|
|
167
|
-
.toString());
|
|
168
|
-
|
|
169
|
-
this.updateTransform_();
|
|
170
|
-
|
|
171
|
-
// AnyDuringMigration because: Argument of type 'SVGGElement | null' is not
|
|
172
|
-
// assignable to parameter of type 'EventTarget'.
|
|
173
|
-
this.onMouseUpWrapper_ = browserEvents.conditionalBind(
|
|
174
|
-
this.svgGroup_ as AnyDuringMigration, 'mouseup', this, this.onMouseUp_);
|
|
175
|
-
return this.svgGroup_!;
|
|
176
|
-
}
|
|
177
|
-
|
|
178
|
-
/** Correctly position the flyout button and make it visible. */
|
|
179
|
-
show() {
|
|
180
|
-
this.updateTransform_();
|
|
181
|
-
this.svgGroup_!.setAttribute('display', 'block');
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
/** Update SVG attributes to match internal state. */
|
|
185
|
-
private updateTransform_() {
|
|
186
|
-
this.svgGroup_!.setAttribute(
|
|
187
|
-
'transform',
|
|
188
|
-
'translate(' + this.position_.x + ',' + this.position_.y + ')');
|
|
189
|
-
}
|
|
190
|
-
|
|
191
|
-
/**
|
|
192
|
-
* Move the button to the given x, y coordinates.
|
|
193
|
-
* @param x The new x coordinate.
|
|
194
|
-
* @param y The new y coordinate.
|
|
195
|
-
*/
|
|
196
|
-
moveTo(x: number, y: number) {
|
|
197
|
-
this.position_.x = x;
|
|
198
|
-
this.position_.y = y;
|
|
199
|
-
this.updateTransform_();
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
/** @return Whether or not the button is a label. */
|
|
203
|
-
isLabel(): boolean {
|
|
204
|
-
return this.isLabel_;
|
|
205
|
-
}
|
|
206
|
-
|
|
207
|
-
/**
|
|
208
|
-
* Location of the button.
|
|
209
|
-
* @return x, y coordinates.
|
|
210
|
-
* @internal
|
|
211
|
-
*/
|
|
212
|
-
getPosition(): Coordinate {
|
|
213
|
-
return this.position_;
|
|
214
|
-
}
|
|
215
|
-
|
|
216
|
-
/** @return Text of the button. */
|
|
217
|
-
getButtonText(): string {
|
|
218
|
-
return this.text_;
|
|
219
|
-
}
|
|
220
|
-
|
|
221
|
-
/**
|
|
222
|
-
* Get the button's target workspace.
|
|
223
|
-
* @return The target workspace of the flyout where this button resides.
|
|
224
|
-
*/
|
|
225
|
-
getTargetWorkspace(): WorkspaceSvg {
|
|
226
|
-
return this.targetWorkspace;
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
/** Dispose of this button. */
|
|
230
|
-
dispose() {
|
|
231
|
-
if (this.onMouseUpWrapper_) {
|
|
232
|
-
browserEvents.unbind(this.onMouseUpWrapper_);
|
|
233
|
-
}
|
|
234
|
-
if (this.svgGroup_) {
|
|
235
|
-
dom.removeNode(this.svgGroup_);
|
|
236
|
-
}
|
|
237
|
-
if (this.svgText_) {
|
|
238
|
-
this.workspace.getThemeManager().unsubscribe(this.svgText_);
|
|
239
|
-
}
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
/**
|
|
243
|
-
* Do something when the button is clicked.
|
|
244
|
-
* @param e Mouse up event.
|
|
245
|
-
*/
|
|
246
|
-
private onMouseUp_(e: Event) {
|
|
247
|
-
const gesture = this.targetWorkspace.getGesture(e);
|
|
248
|
-
if (gesture) {
|
|
249
|
-
gesture.cancel();
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
if (this.isLabel_ && this.callbackKey_) {
|
|
253
|
-
console.warn(
|
|
254
|
-
'Labels should not have callbacks. Label text: ' + this.text_);
|
|
255
|
-
} else if (
|
|
256
|
-
!this.isLabel_ &&
|
|
257
|
-
!(this.callbackKey_ &&
|
|
258
|
-
this.targetWorkspace.getButtonCallback(this.callbackKey_))) {
|
|
259
|
-
console.warn('Buttons should have callbacks. Button text: ' + this.text_);
|
|
260
|
-
} else if (!this.isLabel_) {
|
|
261
|
-
const callback =
|
|
262
|
-
this.targetWorkspace.getButtonCallback(this.callbackKey_);
|
|
263
|
-
if (callback) {
|
|
264
|
-
callback(this);
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
/** CSS for buttons and labels. See css.js for use. */
|
|
271
|
-
Css.register(`
|
|
272
|
-
.blocklyFlyoutButton {
|
|
273
|
-
fill: #888;
|
|
274
|
-
cursor: default;
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
.blocklyFlyoutButtonShadow {
|
|
278
|
-
fill: #666;
|
|
279
|
-
}
|
|
280
|
-
|
|
281
|
-
.blocklyFlyoutButton:hover {
|
|
282
|
-
fill: #aaa;
|
|
283
|
-
}
|
|
284
|
-
|
|
285
|
-
.blocklyFlyoutLabel {
|
|
286
|
-
cursor: default;
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
.blocklyFlyoutLabelBackground {
|
|
290
|
-
opacity: 0;
|
|
291
|
-
}
|
|
292
|
-
`);
|
|
@@ -1,381 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2017 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* @fileoverview Horizontal flyout tray containing blocks which may be created.
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Horizontal flyout tray containing blocks which may be created.
|
|
13
|
-
* @class
|
|
14
|
-
*/
|
|
15
|
-
import * as goog from '../closure/goog/goog.js';
|
|
16
|
-
goog.declareModuleId('Blockly.HorizontalFlyout');
|
|
17
|
-
|
|
18
|
-
import * as browserEvents from './browser_events.js';
|
|
19
|
-
import * as dropDownDiv from './dropdowndiv.js';
|
|
20
|
-
import {Flyout, FlyoutItem} from './flyout_base.js';
|
|
21
|
-
import type {FlyoutButton} from './flyout_button.js';
|
|
22
|
-
import type {Options} from './options.js';
|
|
23
|
-
import * as registry from './registry.js';
|
|
24
|
-
import {Scrollbar} from './scrollbar.js';
|
|
25
|
-
import type {Coordinate} from './utils/coordinate.js';
|
|
26
|
-
import {Rect} from './utils/rect.js';
|
|
27
|
-
import * as toolbox from './utils/toolbox.js';
|
|
28
|
-
import * as WidgetDiv from './widgetdiv.js';
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* Class for a flyout.
|
|
33
|
-
* @alias Blockly.HorizontalFlyout
|
|
34
|
-
*/
|
|
35
|
-
export class HorizontalFlyout extends Flyout {
|
|
36
|
-
override horizontalLayout = true;
|
|
37
|
-
// Record the width for workspace metrics.
|
|
38
|
-
override width_: AnyDuringMigration;
|
|
39
|
-
|
|
40
|
-
// Record the height for workspace metrics and .position.
|
|
41
|
-
override height_: AnyDuringMigration;
|
|
42
|
-
|
|
43
|
-
/** @param workspaceOptions Dictionary of options for the workspace. */
|
|
44
|
-
constructor(workspaceOptions: Options) {
|
|
45
|
-
super(workspaceOptions);
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Sets the translation of the flyout to match the scrollbars.
|
|
50
|
-
* @param xyRatio Contains a y property which is a float between 0 and 1
|
|
51
|
-
* specifying the degree of scrolling and a similar x property.
|
|
52
|
-
*/
|
|
53
|
-
protected override setMetrics_(xyRatio: {x: number, y: number}) {
|
|
54
|
-
if (!this.isVisible()) {
|
|
55
|
-
return;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
const metricsManager = this.workspace_.getMetricsManager();
|
|
59
|
-
const scrollMetrics = metricsManager.getScrollMetrics();
|
|
60
|
-
const viewMetrics = metricsManager.getViewMetrics();
|
|
61
|
-
const absoluteMetrics = metricsManager.getAbsoluteMetrics();
|
|
62
|
-
|
|
63
|
-
if (typeof xyRatio.x === 'number') {
|
|
64
|
-
this.workspace_.scrollX =
|
|
65
|
-
-(scrollMetrics.left +
|
|
66
|
-
(scrollMetrics.width - viewMetrics.width) * xyRatio.x);
|
|
67
|
-
}
|
|
68
|
-
|
|
69
|
-
this.workspace_.translate(
|
|
70
|
-
this.workspace_.scrollX + absoluteMetrics.left,
|
|
71
|
-
this.workspace_.scrollY + absoluteMetrics.top);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* Calculates the x coordinate for the flyout position.
|
|
76
|
-
* @return X coordinate.
|
|
77
|
-
*/
|
|
78
|
-
override getX(): number {
|
|
79
|
-
// X is always 0 since this is a horizontal flyout.
|
|
80
|
-
return 0;
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
/**
|
|
84
|
-
* Calculates the y coordinate for the flyout position.
|
|
85
|
-
* @return Y coordinate.
|
|
86
|
-
*/
|
|
87
|
-
override getY(): number {
|
|
88
|
-
if (!this.isVisible()) {
|
|
89
|
-
return 0;
|
|
90
|
-
}
|
|
91
|
-
const metricsManager = this.targetWorkspace!.getMetricsManager();
|
|
92
|
-
const absoluteMetrics = metricsManager.getAbsoluteMetrics();
|
|
93
|
-
const viewMetrics = metricsManager.getViewMetrics();
|
|
94
|
-
const toolboxMetrics = metricsManager.getToolboxMetrics();
|
|
95
|
-
|
|
96
|
-
let y = 0;
|
|
97
|
-
const atTop = this.toolboxPosition_ === toolbox.Position.TOP;
|
|
98
|
-
// If this flyout is not the trashcan flyout (e.g. toolbox or mutator).
|
|
99
|
-
// Trashcan flyout is opposite the main flyout.
|
|
100
|
-
if (this.targetWorkspace!.toolboxPosition === this.toolboxPosition_) {
|
|
101
|
-
// If there is a category toolbox.
|
|
102
|
-
// Simple (flyout-only) toolbox.
|
|
103
|
-
if (this.targetWorkspace!.getToolbox()) {
|
|
104
|
-
if (atTop) {
|
|
105
|
-
y = toolboxMetrics.height;
|
|
106
|
-
} else {
|
|
107
|
-
y = viewMetrics.height - this.height_;
|
|
108
|
-
}
|
|
109
|
-
} else {
|
|
110
|
-
if (atTop) {
|
|
111
|
-
y = 0;
|
|
112
|
-
} else {
|
|
113
|
-
// The simple flyout does not cover the workspace.
|
|
114
|
-
y = viewMetrics.height;
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
} else {
|
|
118
|
-
if (atTop) {
|
|
119
|
-
y = 0;
|
|
120
|
-
} else {
|
|
121
|
-
// Because the anchor point of the flyout is on the top, but we want
|
|
122
|
-
// to align the bottom edge of the flyout with the bottom edge of the
|
|
123
|
-
// blocklyDiv, we calculate the full height of the div minus the height
|
|
124
|
-
// of the flyout.
|
|
125
|
-
y = viewMetrics.height + absoluteMetrics.top - this.height_;
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
return y;
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
/** Move the flyout to the edge of the workspace. */
|
|
133
|
-
override position() {
|
|
134
|
-
if (!this.isVisible() || !this.targetWorkspace!.isVisible()) {
|
|
135
|
-
return;
|
|
136
|
-
}
|
|
137
|
-
const metricsManager = this.targetWorkspace!.getMetricsManager();
|
|
138
|
-
const targetWorkspaceViewMetrics = metricsManager.getViewMetrics();
|
|
139
|
-
this.width_ = targetWorkspaceViewMetrics.width;
|
|
140
|
-
|
|
141
|
-
const edgeWidth = targetWorkspaceViewMetrics.width - 2 * this.CORNER_RADIUS;
|
|
142
|
-
const edgeHeight = this.height_ - this.CORNER_RADIUS;
|
|
143
|
-
this.setBackgroundPath_(edgeWidth, edgeHeight);
|
|
144
|
-
|
|
145
|
-
const x = this.getX();
|
|
146
|
-
const y = this.getY();
|
|
147
|
-
|
|
148
|
-
this.positionAt_(this.width_, this.height_, x, y);
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
/**
|
|
152
|
-
* Create and set the path for the visible boundaries of the flyout.
|
|
153
|
-
* @param width The width of the flyout, not including the rounded corners.
|
|
154
|
-
* @param height The height of the flyout, not including rounded corners.
|
|
155
|
-
*/
|
|
156
|
-
private setBackgroundPath_(width: number, height: number) {
|
|
157
|
-
const atTop = this.toolboxPosition_ === toolbox.Position.TOP;
|
|
158
|
-
// Start at top left.
|
|
159
|
-
const path: (string|number)[] = ['M 0,' + (atTop ? 0 : this.CORNER_RADIUS)];
|
|
160
|
-
|
|
161
|
-
if (atTop) {
|
|
162
|
-
// Top.
|
|
163
|
-
path.push('h', width + 2 * this.CORNER_RADIUS);
|
|
164
|
-
// Right.
|
|
165
|
-
path.push('v', height);
|
|
166
|
-
// Bottom.
|
|
167
|
-
path.push(
|
|
168
|
-
'a', this.CORNER_RADIUS, this.CORNER_RADIUS, 0, 0, 1,
|
|
169
|
-
-this.CORNER_RADIUS, this.CORNER_RADIUS);
|
|
170
|
-
path.push('h', -width);
|
|
171
|
-
// Left.
|
|
172
|
-
path.push(
|
|
173
|
-
'a', this.CORNER_RADIUS, this.CORNER_RADIUS, 0, 0, 1,
|
|
174
|
-
-this.CORNER_RADIUS, -this.CORNER_RADIUS);
|
|
175
|
-
path.push('z');
|
|
176
|
-
} else {
|
|
177
|
-
// Top.
|
|
178
|
-
path.push(
|
|
179
|
-
'a', this.CORNER_RADIUS, this.CORNER_RADIUS, 0, 0, 1,
|
|
180
|
-
this.CORNER_RADIUS, -this.CORNER_RADIUS);
|
|
181
|
-
path.push('h', width);
|
|
182
|
-
// Right.
|
|
183
|
-
path.push(
|
|
184
|
-
'a', this.CORNER_RADIUS, this.CORNER_RADIUS, 0, 0, 1,
|
|
185
|
-
this.CORNER_RADIUS, this.CORNER_RADIUS);
|
|
186
|
-
path.push('v', height);
|
|
187
|
-
// Bottom.
|
|
188
|
-
path.push('h', -width - 2 * this.CORNER_RADIUS);
|
|
189
|
-
// Left.
|
|
190
|
-
path.push('z');
|
|
191
|
-
}
|
|
192
|
-
this.svgBackground_!.setAttribute('d', path.join(' '));
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
/** Scroll the flyout to the top. */
|
|
196
|
-
override scrollToStart() {
|
|
197
|
-
this.workspace_.scrollbar.setX(this.RTL ? Infinity : 0);
|
|
198
|
-
}
|
|
199
|
-
|
|
200
|
-
/**
|
|
201
|
-
* Scroll the flyout.
|
|
202
|
-
* @param e Mouse wheel scroll event.
|
|
203
|
-
*/
|
|
204
|
-
protected override wheel_(e: WheelEvent) {
|
|
205
|
-
const scrollDelta = browserEvents.getScrollDeltaPixels(e);
|
|
206
|
-
const delta = scrollDelta.x || scrollDelta.y;
|
|
207
|
-
|
|
208
|
-
if (delta) {
|
|
209
|
-
const metricsManager = this.workspace_.getMetricsManager();
|
|
210
|
-
const scrollMetrics = metricsManager.getScrollMetrics();
|
|
211
|
-
const viewMetrics = metricsManager.getViewMetrics();
|
|
212
|
-
|
|
213
|
-
const pos = viewMetrics.left - scrollMetrics.left + delta;
|
|
214
|
-
this.workspace_.scrollbar.setX(pos);
|
|
215
|
-
// When the flyout moves from a wheel event, hide WidgetDiv and
|
|
216
|
-
// dropDownDiv.
|
|
217
|
-
WidgetDiv.hide();
|
|
218
|
-
dropDownDiv.hideWithoutAnimation();
|
|
219
|
-
}
|
|
220
|
-
// Don't scroll the page.
|
|
221
|
-
e.preventDefault();
|
|
222
|
-
// Don't propagate mousewheel event (zooming).
|
|
223
|
-
e.stopPropagation();
|
|
224
|
-
}
|
|
225
|
-
|
|
226
|
-
/**
|
|
227
|
-
* Lay out the blocks in the flyout.
|
|
228
|
-
* @param contents The blocks and buttons to lay out.
|
|
229
|
-
* @param gaps The visible gaps between blocks.
|
|
230
|
-
*/
|
|
231
|
-
protected override layout_(contents: FlyoutItem[], gaps: number[]) {
|
|
232
|
-
this.workspace_.scale = this.targetWorkspace!.scale;
|
|
233
|
-
const margin = this.MARGIN;
|
|
234
|
-
let cursorX = margin + this.tabWidth_;
|
|
235
|
-
const cursorY = margin;
|
|
236
|
-
if (this.RTL) {
|
|
237
|
-
contents = contents.reverse();
|
|
238
|
-
}
|
|
239
|
-
|
|
240
|
-
for (let i = 0, item; item = contents[i]; i++) {
|
|
241
|
-
if (item.type === 'block') {
|
|
242
|
-
const block = item.block;
|
|
243
|
-
const allBlocks = block!.getDescendants(false);
|
|
244
|
-
for (let j = 0, child; child = allBlocks[j]; j++) {
|
|
245
|
-
// Mark blocks as being inside a flyout. This is used to detect and
|
|
246
|
-
// prevent the closure of the flyout if the user right-clicks on such
|
|
247
|
-
// a block.
|
|
248
|
-
child.isInFlyout = true;
|
|
249
|
-
}
|
|
250
|
-
block!.render();
|
|
251
|
-
const root = block!.getSvgRoot();
|
|
252
|
-
const blockHW = block!.getHeightWidth();
|
|
253
|
-
// Figure out where to place the block.
|
|
254
|
-
const tab = block!.outputConnection ? this.tabWidth_ : 0;
|
|
255
|
-
let moveX;
|
|
256
|
-
if (this.RTL) {
|
|
257
|
-
moveX = cursorX + blockHW.width;
|
|
258
|
-
} else {
|
|
259
|
-
moveX = cursorX - tab;
|
|
260
|
-
}
|
|
261
|
-
block!.moveBy(moveX, cursorY);
|
|
262
|
-
|
|
263
|
-
// AnyDuringMigration because: Argument of type 'BlockSvg | undefined'
|
|
264
|
-
// is not assignable to parameter of type 'BlockSvg'.
|
|
265
|
-
const rect = this.createRect_(
|
|
266
|
-
block as AnyDuringMigration, moveX, cursorY, blockHW, i);
|
|
267
|
-
cursorX += blockHW.width + gaps[i];
|
|
268
|
-
|
|
269
|
-
// AnyDuringMigration because: Argument of type 'BlockSvg | undefined'
|
|
270
|
-
// is not assignable to parameter of type 'BlockSvg'.
|
|
271
|
-
this.addBlockListeners_(root, block as AnyDuringMigration, rect);
|
|
272
|
-
} else if (item.type === 'button') {
|
|
273
|
-
const button = item.button as FlyoutButton;
|
|
274
|
-
this.initFlyoutButton_(button, cursorX, cursorY);
|
|
275
|
-
cursorX += button.width + gaps[i];
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
/**
|
|
281
|
-
* Determine if a drag delta is toward the workspace, based on the position
|
|
282
|
-
* and orientation of the flyout. This is used in determineDragIntention_ to
|
|
283
|
-
* determine if a new block should be created or if the flyout should scroll.
|
|
284
|
-
* @param currentDragDeltaXY How far the pointer has moved from the position
|
|
285
|
-
* at mouse down, in pixel units.
|
|
286
|
-
* @return True if the drag is toward the workspace.
|
|
287
|
-
* @internal
|
|
288
|
-
*/
|
|
289
|
-
override isDragTowardWorkspace(currentDragDeltaXY: Coordinate): boolean {
|
|
290
|
-
const dx = currentDragDeltaXY.x;
|
|
291
|
-
const dy = currentDragDeltaXY.y;
|
|
292
|
-
// Direction goes from -180 to 180, with 0 toward the right and 90 on top.
|
|
293
|
-
const dragDirection = Math.atan2(dy, dx) / Math.PI * 180;
|
|
294
|
-
|
|
295
|
-
const range = this.dragAngleRange_;
|
|
296
|
-
// Check for up or down dragging.
|
|
297
|
-
if (dragDirection < 90 + range && dragDirection > 90 - range ||
|
|
298
|
-
dragDirection > -90 - range && dragDirection < -90 + range) {
|
|
299
|
-
return true;
|
|
300
|
-
}
|
|
301
|
-
return false;
|
|
302
|
-
}
|
|
303
|
-
|
|
304
|
-
/**
|
|
305
|
-
* Returns the bounding rectangle of the drag target area in pixel units
|
|
306
|
-
* relative to viewport.
|
|
307
|
-
* @return The component's bounding box. Null if drag target area should be
|
|
308
|
-
* ignored.
|
|
309
|
-
*/
|
|
310
|
-
override getClientRect(): Rect|null {
|
|
311
|
-
if (!this.svgGroup_ || this.autoClose || !this.isVisible()) {
|
|
312
|
-
// The bounding rectangle won't compute correctly if the flyout is closed
|
|
313
|
-
// and auto-close flyouts aren't valid drag targets (or delete areas).
|
|
314
|
-
return null;
|
|
315
|
-
}
|
|
316
|
-
|
|
317
|
-
const flyoutRect = this.svgGroup_.getBoundingClientRect();
|
|
318
|
-
// BIG_NUM is offscreen padding so that blocks dragged beyond the shown
|
|
319
|
-
// flyout area are still deleted. Must be larger than the largest screen
|
|
320
|
-
// size, but be smaller than half Number.MAX_SAFE_INTEGER (not available on
|
|
321
|
-
// IE).
|
|
322
|
-
const BIG_NUM = 1000000000;
|
|
323
|
-
const top = flyoutRect.top;
|
|
324
|
-
|
|
325
|
-
if (this.toolboxPosition_ === toolbox.Position.TOP) {
|
|
326
|
-
const height = flyoutRect.height;
|
|
327
|
-
return new Rect(-BIG_NUM, top + height, -BIG_NUM, BIG_NUM);
|
|
328
|
-
} else { // Bottom.
|
|
329
|
-
return new Rect(top, BIG_NUM, -BIG_NUM, BIG_NUM);
|
|
330
|
-
}
|
|
331
|
-
}
|
|
332
|
-
|
|
333
|
-
/**
|
|
334
|
-
* Compute height of flyout. toolbox.Position mat under each block.
|
|
335
|
-
* For RTL: Lay out the blocks right-aligned.
|
|
336
|
-
*/
|
|
337
|
-
protected override reflowInternal_() {
|
|
338
|
-
this.workspace_.scale = this.getFlyoutScale();
|
|
339
|
-
let flyoutHeight = 0;
|
|
340
|
-
const blocks = this.workspace_.getTopBlocks(false);
|
|
341
|
-
for (let i = 0, block; block = blocks[i]; i++) {
|
|
342
|
-
flyoutHeight = Math.max(flyoutHeight, block.getHeightWidth().height);
|
|
343
|
-
}
|
|
344
|
-
const buttons = this.buttons_;
|
|
345
|
-
for (let i = 0, button; button = buttons[i]; i++) {
|
|
346
|
-
flyoutHeight = Math.max(flyoutHeight, button.height);
|
|
347
|
-
}
|
|
348
|
-
flyoutHeight += this.MARGIN * 1.5;
|
|
349
|
-
flyoutHeight *= this.workspace_.scale;
|
|
350
|
-
flyoutHeight += Scrollbar.scrollbarThickness;
|
|
351
|
-
|
|
352
|
-
if (this.height_ !== flyoutHeight) {
|
|
353
|
-
for (let i = 0, block; block = blocks[i]; i++) {
|
|
354
|
-
if (this.rectMap_.has(block)) {
|
|
355
|
-
// AnyDuringMigration because: Argument of type 'SVGElement |
|
|
356
|
-
// undefined' is not assignable to parameter of type 'SVGElement'.
|
|
357
|
-
this.moveRectToBlock_(
|
|
358
|
-
this.rectMap_.get(block) as AnyDuringMigration, block);
|
|
359
|
-
}
|
|
360
|
-
}
|
|
361
|
-
|
|
362
|
-
if (this.targetWorkspace!.toolboxPosition === this.toolboxPosition_ &&
|
|
363
|
-
this.toolboxPosition_ === toolbox.Position.TOP &&
|
|
364
|
-
!this.targetWorkspace!.getToolbox()) {
|
|
365
|
-
// This flyout is a simple toolbox. Reposition the workspace so that
|
|
366
|
-
// (0,0) is in the correct position relative to the new absolute edge
|
|
367
|
-
// (ie toolbox edge).
|
|
368
|
-
this.targetWorkspace!.translate(
|
|
369
|
-
this.targetWorkspace!.scrollX,
|
|
370
|
-
this.targetWorkspace!.scrollY + flyoutHeight);
|
|
371
|
-
}
|
|
372
|
-
this.height_ = flyoutHeight;
|
|
373
|
-
this.position();
|
|
374
|
-
this.targetWorkspace!.recordDragTargets();
|
|
375
|
-
}
|
|
376
|
-
}
|
|
377
|
-
}
|
|
378
|
-
|
|
379
|
-
registry.register(
|
|
380
|
-
registry.Type.FLYOUTS_HORIZONTAL_TOOLBOX, registry.DEFAULT,
|
|
381
|
-
HorizontalFlyout);
|