blockly 8.0.4 → 8.0.5-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/blockly.min.js +2421 -2688
- package/blockly_compressed.js +1499 -1994
- package/blockly_compressed.js.map +1 -1
- package/blocks/blocks.js +3 -2
- package/blocks/colour.js +3 -1
- package/blocks/lists.js +94 -22
- package/blocks/logic.js +14 -6
- package/blocks/loops.js +5 -3
- package/blocks/math.js +3 -1
- package/blocks/procedures.js +3 -1
- package/blocks/text.js +14 -6
- package/blocks/variables.js +3 -1
- package/blocks/variables_dynamic.js +3 -1
- package/blocks.d.ts +0 -2
- package/blocks_compressed.js +189 -171
- package/blocks_compressed.js.map +1 -1
- package/closure/goog/base.d.ts +1 -0
- package/closure/goog/base_minimal.d.ts +18 -0
- package/closure/goog/goog.d.ts +25 -0
- package/core/any_aliases.d.ts +1 -0
- package/core/any_aliases.ts +1 -0
- package/core/block.d.ts +779 -0
- package/core/{block.js → block.ts} +610 -719
- package/core/block_animations.d.ts +33 -0
- package/core/{block_animations.js → block_animations.ts} +75 -79
- package/core/block_drag_surface.d.ts +111 -0
- package/core/{block_drag_surface.js → block_drag_surface.ts} +85 -117
- package/core/block_dragger.d.ts +143 -0
- package/core/{block_dragger.js → block_dragger.ts} +139 -176
- package/core/block_svg.d.ts +588 -0
- package/core/{block_svg.js → block_svg.ts} +494 -630
- package/core/blockly.d.ts +562 -0
- package/core/blockly.js +1 -1
- package/core/blockly.ts +749 -0
- package/core/blockly_options.d.ts +69 -0
- package/core/blockly_options.ts +81 -0
- package/core/blocks.d.ts +17 -0
- package/core/{blocks.js → blocks.ts} +4 -8
- package/core/browser_events.d.ts +85 -0
- package/core/{browser_events.js → browser_events.ts} +98 -93
- package/core/bubble.d.ts +279 -0
- package/core/{bubble.js → bubble.ts} +277 -370
- package/core/bubble_dragger.d.ts +73 -0
- package/core/bubble_dragger.ts +229 -0
- package/core/bump_objects.d.ts +34 -0
- package/core/{bump_objects.js → bump_objects.ts} +54 -52
- package/core/clipboard.d.ts +42 -0
- package/core/clipboard.ts +91 -0
- package/core/comment.d.ts +113 -0
- package/core/{comment.js → comment.ts} +135 -185
- package/core/common.d.ts +129 -0
- package/core/{common.js → common.ts} +105 -82
- package/core/component_manager.d.ts +91 -0
- package/core/component_manager.ts +211 -0
- package/core/config.d.ts +23 -0
- package/core/{config.js → config.ts} +12 -19
- package/core/connection.d.ts +232 -0
- package/core/{connection.js → connection.ts} +187 -237
- package/core/connection_checker.d.ts +78 -0
- package/core/{connection_checker.js → connection_checker.ts} +66 -77
- package/core/connection_db.d.ts +91 -0
- package/core/{connection_db.js → connection_db.ts} +62 -87
- package/core/connection_type.d.ts +15 -0
- package/core/{connection_type.js → connection_type.ts} +8 -12
- package/core/constants.d.ts +15 -0
- package/core/{constants.js → constants.ts} +4 -8
- package/core/contextmenu.d.ts +80 -0
- package/core/{contextmenu.js → contextmenu.ts} +118 -153
- package/core/contextmenu_items.d.ts +77 -0
- package/core/contextmenu_items.ts +576 -0
- package/core/contextmenu_registry.d.ts +105 -0
- package/core/contextmenu_registry.ts +179 -0
- package/core/css.d.ts +24 -0
- package/core/{css.js → css.ts} +16 -24
- package/core/delete_area.d.ts +47 -0
- package/core/delete_area.ts +82 -0
- package/core/dialog.d.ts +61 -0
- package/core/dialog.ts +127 -0
- package/core/drag_target.d.ts +63 -0
- package/core/drag_target.ts +94 -0
- package/core/dropdowndiv.d.ts +155 -0
- package/core/{dropdowndiv.js → dropdowndiv.ts} +262 -333
- package/core/events/events.d.ts +102 -0
- package/core/events/events.ts +123 -0
- package/core/events/events_abstract.d.ts +51 -0
- package/core/events/events_abstract.ts +112 -0
- package/core/events/events_block_base.d.ts +31 -0
- package/core/events/events_block_base.ts +65 -0
- package/core/events/events_block_change.d.ts +55 -0
- package/core/events/{events_block_change.js → events_block_change.ts} +45 -48
- package/core/events/events_block_create.d.ts +35 -0
- package/core/events/{events_block_create.js → events_block_create.ts} +30 -35
- package/core/events/events_block_delete.d.ts +36 -0
- package/core/events/{events_block_delete.js → events_block_delete.ts} +34 -39
- package/core/events/events_block_drag.d.ts +36 -0
- package/core/events/events_block_drag.ts +82 -0
- package/core/events/events_block_move.d.ts +51 -0
- package/core/events/{events_block_move.js → events_block_move.ts} +54 -50
- package/core/events/events_bubble_open.d.ts +35 -0
- package/core/events/events_bubble_open.ts +82 -0
- package/core/events/events_click.d.ts +36 -0
- package/core/events/{events_click.js → events_click.ts} +27 -30
- package/core/events/events_comment_base.d.ts +39 -0
- package/core/events/events_comment_base.ts +107 -0
- package/core/events/events_comment_change.d.ts +43 -0
- package/core/events/{events_comment_change.js → events_comment_change.ts} +31 -28
- package/core/events/events_comment_create.d.ts +35 -0
- package/core/events/{events_comment_create.js → events_comment_create.ts} +24 -26
- package/core/events/events_comment_delete.d.ts +35 -0
- package/core/events/{events_comment_delete.js → events_comment_delete.ts} +20 -24
- package/core/events/events_comment_move.d.ts +55 -0
- package/core/events/{events_comment_move.js → events_comment_move.ts} +39 -42
- package/core/events/events_marker_move.d.ts +40 -0
- package/core/events/events_marker_move.ts +99 -0
- package/core/events/events_selected.d.ts +34 -0
- package/core/events/events_selected.ts +78 -0
- package/core/events/events_theme_change.d.ts +30 -0
- package/core/events/{events_theme_change.js → events_theme_change.ts} +19 -24
- package/core/events/events_toolbox_item_select.d.ts +34 -0
- package/core/events/events_toolbox_item_select.ts +79 -0
- package/core/events/events_trashcan_open.d.ts +31 -0
- package/core/events/events_trashcan_open.ts +68 -0
- package/core/events/events_ui.d.ts +37 -0
- package/core/events/{events_ui.js → events_ui.ts} +27 -26
- package/core/events/events_ui_base.d.ts +26 -0
- package/core/events/{events_ui_base.js → events_ui_base.ts} +17 -26
- package/core/events/events_var_base.d.ts +31 -0
- package/core/events/events_var_base.ts +65 -0
- package/core/events/events_var_create.d.ts +35 -0
- package/core/events/{events_var_create.js → events_var_create.ts} +24 -25
- package/core/events/events_var_delete.d.ts +35 -0
- package/core/events/{events_var_delete.js → events_var_delete.ts} +24 -25
- package/core/events/events_var_rename.d.ts +36 -0
- package/core/events/{events_var_rename.js → events_var_rename.ts} +25 -26
- package/core/events/events_viewport.d.ts +39 -0
- package/core/events/events_viewport.ts +100 -0
- package/core/events/utils.d.ts +272 -0
- package/core/events/{utils.js → utils.ts} +148 -219
- package/core/events/workspace_events.d.ts +36 -0
- package/core/events/workspace_events.ts +86 -0
- package/core/extensions.d.ts +107 -0
- package/core/{extensions.js → extensions.ts} +153 -172
- package/core/field.d.ts +534 -0
- package/core/{field.js → field.ts} +413 -489
- package/core/field_angle.d.ts +176 -0
- package/core/field_angle.ts +563 -0
- package/core/field_checkbox.d.ts +124 -0
- package/core/field_checkbox.ts +243 -0
- package/core/field_colour.d.ts +200 -0
- package/core/field_colour.ts +632 -0
- package/core/field_dropdown.d.ts +222 -0
- package/core/{field_dropdown.js → field_dropdown.ts} +277 -299
- package/core/field_image.d.ts +134 -0
- package/core/field_image.ts +282 -0
- package/core/field_label.d.ts +71 -0
- package/core/field_label.ts +152 -0
- package/core/field_label_serializable.d.ts +42 -0
- package/core/field_label_serializable.ts +76 -0
- package/core/field_multilineinput.d.ts +146 -0
- package/core/{field_multilineinput.js → field_multilineinput.ts} +166 -163
- package/core/field_number.d.ts +156 -0
- package/core/{field_number.js → field_number.ts} +110 -123
- package/core/field_registry.d.ts +45 -0
- package/core/{field_registry.js → field_registry.ts} +37 -30
- package/core/field_textinput.d.ts +219 -0
- package/core/field_textinput.ts +591 -0
- package/core/field_variable.d.ts +217 -0
- package/core/{field_variable.js → field_variable.ts} +174 -187
- package/core/flyout_base.d.ts +459 -0
- package/core/{flyout_base.js → flyout_base.ts} +429 -518
- package/core/flyout_button.d.ts +81 -0
- package/core/flyout_button.ts +292 -0
- package/core/flyout_horizontal.d.ts +82 -0
- package/core/{flyout_horizontal.js → flyout_horizontal.ts} +97 -107
- package/core/flyout_metrics_manager.d.ts +40 -0
- package/core/{flyout_metrics_manager.js → flyout_metrics_manager.ts} +22 -34
- package/core/flyout_vertical.d.ts +83 -0
- package/core/{flyout_vertical.js → flyout_vertical.ts} +106 -117
- package/core/generator.d.ts +205 -0
- package/core/{generator.js → generator.ts} +168 -193
- package/core/gesture.d.ts +357 -0
- package/core/{gesture.js → gesture.ts} +289 -369
- package/core/grid.d.ts +83 -0
- package/core/grid.ts +192 -0
- package/core/icon.d.ts +78 -0
- package/core/icon.ts +189 -0
- package/core/inject.d.ts +15 -0
- package/core/{inject.js → inject.ts} +101 -100
- package/core/input.d.ts +128 -0
- package/core/input.ts +309 -0
- package/core/input_types.d.ts +14 -0
- package/core/{input_types.js → input_types.ts} +8 -12
- package/core/insertion_marker_manager.d.ts +212 -0
- package/core/{insertion_marker_manager.js → insertion_marker_manager.ts} +234 -236
- package/core/interfaces/i_ast_node_location.d.ts +11 -0
- package/core/interfaces/{i_ast_node_location.js → i_ast_node_location.ts} +4 -7
- package/core/interfaces/i_ast_node_location_svg.d.ts +22 -0
- package/core/interfaces/i_ast_node_location_svg.ts +37 -0
- package/core/interfaces/i_ast_node_location_with_block.d.ts +18 -0
- package/core/interfaces/i_ast_node_location_with_block.ts +38 -0
- package/core/interfaces/i_autohideable.d.ts +18 -0
- package/core/interfaces/i_autohideable.ts +34 -0
- package/core/interfaces/i_block_dragger.d.ts +43 -0
- package/core/interfaces/i_block_dragger.ts +67 -0
- package/core/interfaces/i_bounded_element.d.ts +24 -0
- package/core/interfaces/i_bounded_element.ts +42 -0
- package/core/interfaces/i_bubble.d.ts +59 -0
- package/core/interfaces/i_bubble.ts +88 -0
- package/core/interfaces/i_collapsible_toolbox_item.d.ts +26 -0
- package/core/interfaces/i_collapsible_toolbox_item.ts +47 -0
- package/core/interfaces/i_component.d.ts +17 -0
- package/core/interfaces/{i_component.js → i_component.ts} +9 -14
- package/core/interfaces/i_connection_checker.d.ts +69 -0
- package/core/interfaces/i_connection_checker.ts +102 -0
- package/core/interfaces/i_contextmenu.d.ts +13 -0
- package/core/interfaces/i_contextmenu.ts +26 -0
- package/core/interfaces/i_copyable.d.ts +24 -0
- package/core/interfaces/i_copyable.ts +40 -0
- package/core/interfaces/i_deletable.d.ts +16 -0
- package/core/interfaces/{i_deletable.js → i_deletable.ts} +9 -13
- package/core/interfaces/i_delete_area.d.ts +25 -0
- package/core/interfaces/i_delete_area.ts +46 -0
- package/core/interfaces/i_drag_target.d.ts +53 -0
- package/core/interfaces/i_drag_target.ts +84 -0
- package/core/interfaces/i_draggable.d.ts +12 -0
- package/core/interfaces/{i_draggable.js → i_draggable.ts} +4 -10
- package/core/interfaces/i_flyout.d.ts +134 -0
- package/core/interfaces/i_flyout.ts +186 -0
- package/core/interfaces/i_keyboard_accessible.d.ts +18 -0
- package/core/interfaces/i_keyboard_accessible.ts +35 -0
- package/core/interfaces/i_metrics_manager.d.ts +117 -0
- package/core/interfaces/i_metrics_manager.ts +151 -0
- package/core/interfaces/i_movable.d.ts +16 -0
- package/core/interfaces/{i_movable.js → i_movable.ts} +9 -13
- package/core/interfaces/i_positionable.d.ts +27 -0
- package/core/interfaces/i_positionable.ts +50 -0
- package/core/interfaces/i_registrable.d.ts +11 -0
- package/core/interfaces/{i_registrable.js → i_registrable.ts} +3 -7
- package/core/interfaces/i_registrable_field.d.ts +17 -0
- package/core/interfaces/{i_registrable_field.js → i_registrable_field.ts} +8 -16
- package/core/interfaces/i_selectable.d.ts +18 -0
- package/core/interfaces/i_selectable.ts +34 -0
- package/core/interfaces/i_selectable_toolbox_item.d.ts +42 -0
- package/core/interfaces/i_selectable_toolbox_item.ts +64 -0
- package/core/interfaces/i_serializer.d.ts +42 -0
- package/core/interfaces/i_serializer.ts +65 -0
- package/core/interfaces/i_styleable.d.ts +21 -0
- package/core/interfaces/i_styleable.ts +35 -0
- package/core/interfaces/i_toolbox.d.ts +85 -0
- package/core/interfaces/i_toolbox.ts +127 -0
- package/core/interfaces/i_toolbox_item.d.ts +62 -0
- package/core/interfaces/i_toolbox_item.ts +84 -0
- package/core/internal_constants.d.ts +40 -0
- package/core/{internal_constants.js → internal_constants.ts} +13 -18
- package/core/keyboard_nav/ast_node.d.ts +239 -0
- package/core/keyboard_nav/{ast_node.js → ast_node.ts} +207 -231
- package/core/keyboard_nav/basic_cursor.d.ts +88 -0
- package/core/keyboard_nav/{basic_cursor.js → basic_cursor.ts} +55 -66
- package/core/keyboard_nav/cursor.d.ts +41 -0
- package/core/keyboard_nav/{cursor.js → cursor.ts} +25 -35
- package/core/keyboard_nav/marker.d.ts +58 -0
- package/core/keyboard_nav/{marker.js → marker.ts} +36 -55
- package/core/keyboard_nav/tab_navigate_cursor.d.ts +19 -0
- package/core/keyboard_nav/{tab_navigate_cursor.js → tab_navigate_cursor.ts} +11 -15
- package/core/main.d.ts +11 -0
- package/core/main.js +303 -0
- package/core/marker_manager.d.ts +85 -0
- package/core/marker_manager.ts +181 -0
- package/core/menu.d.ts +149 -0
- package/core/{menu.js → menu.ts} +141 -174
- package/core/menuitem.d.ts +118 -0
- package/core/menuitem.ts +240 -0
- package/core/metrics_manager.d.ts +201 -0
- package/core/{metrics_manager.js → metrics_manager.ts} +117 -156
- package/core/msg.d.ts +9 -0
- package/core/{msg.js → msg.ts} +4 -8
- package/core/mutator.d.ts +128 -0
- package/core/{mutator.js → mutator.ts} +196 -211
- package/core/names.d.ts +124 -0
- package/core/names.ts +267 -0
- package/core/options.d.ts +137 -0
- package/core/{options.js → options.ts} +147 -173
- package/core/positionable_helpers.d.ts +88 -0
- package/core/{positionable_helpers.js → positionable_helpers.ts} +63 -70
- package/core/procedures.d.ts +108 -0
- package/core/{procedures.js → procedures.ts} +143 -152
- package/core/registry.d.ts +137 -0
- package/core/registry.ts +339 -0
- package/core/rendered_connection.d.ts +191 -0
- package/core/{rendered_connection.js → rendered_connection.ts} +164 -184
- package/core/renderers/common/block_rendering.d.ts +114 -0
- package/core/renderers/common/block_rendering.ts +164 -0
- package/core/renderers/common/constants.d.ts +458 -0
- package/core/renderers/common/constants.ts +1124 -0
- package/core/renderers/common/debug.d.ts +28 -0
- package/core/renderers/common/{debug.js → debug.ts} +14 -20
- package/core/renderers/common/debugger.d.ts +120 -0
- package/core/renderers/common/{debugger.js → debugger.ts} +100 -124
- package/core/renderers/common/drawer.d.ts +132 -0
- package/core/renderers/common/{drawer.js → drawer.ts} +112 -137
- package/core/renderers/common/i_path_object.d.ts +117 -0
- package/core/renderers/common/i_path_object.ts +161 -0
- package/core/renderers/common/info.d.ts +194 -0
- package/core/renderers/common/{info.js → info.ts} +165 -222
- package/core/renderers/common/marker_svg.d.ts +220 -0
- package/core/renderers/common/marker_svg.ts +680 -0
- package/core/renderers/common/path_object.d.ts +146 -0
- package/core/renderers/common/path_object.ts +272 -0
- package/core/renderers/common/renderer.d.ts +157 -0
- package/core/renderers/common/renderer.ts +271 -0
- package/core/renderers/geras/constants.d.ts +23 -0
- package/core/renderers/geras/constants.ts +61 -0
- package/core/renderers/geras/drawer.d.ts +43 -0
- package/core/renderers/geras/{drawer.js → drawer.ts} +40 -84
- package/core/renderers/geras/geras.d.ts +11 -0
- package/core/renderers/geras/geras.ts +37 -0
- package/core/renderers/geras/highlight_constants.d.ts +108 -0
- package/core/renderers/geras/{highlight_constants.js → highlight_constants.ts} +107 -69
- package/core/renderers/geras/highlighter.d.ts +98 -0
- package/core/renderers/geras/{highlighter.js → highlighter.ts} +81 -86
- package/core/renderers/geras/info.d.ts +45 -0
- package/core/renderers/geras/{info.js → info.ts} +61 -99
- package/core/renderers/geras/measurables/inline_input.d.ts +23 -0
- package/core/renderers/geras/measurables/inline_input.ts +51 -0
- package/core/renderers/geras/measurables/statement_input.d.ts +23 -0
- package/core/renderers/geras/measurables/statement_input.ts +50 -0
- package/core/renderers/geras/path_object.d.ts +47 -0
- package/core/renderers/geras/{path_object.js → path_object.ts} +46 -74
- package/core/renderers/geras/renderer.d.ts +69 -0
- package/core/renderers/geras/renderer.ts +126 -0
- package/core/renderers/measurables/base.d.ts +27 -0
- package/core/renderers/measurables/base.ts +53 -0
- package/core/renderers/measurables/bottom_row.d.ts +61 -0
- package/core/renderers/measurables/bottom_row.ts +120 -0
- package/core/renderers/measurables/connection.d.ts +25 -0
- package/core/renderers/measurables/connection.ts +52 -0
- package/core/renderers/measurables/external_value_input.d.ts +27 -0
- package/core/renderers/measurables/external_value_input.ts +65 -0
- package/core/renderers/measurables/field.d.ts +30 -0
- package/core/renderers/measurables/field.ts +63 -0
- package/core/renderers/measurables/hat.d.ts +21 -0
- package/core/renderers/measurables/{hat.js → hat.ts} +12 -14
- package/core/renderers/measurables/icon.d.ts +26 -0
- package/core/renderers/measurables/{icon.js → icon.ts} +14 -18
- package/core/renderers/measurables/in_row_spacer.d.ts +21 -0
- package/core/renderers/measurables/in_row_spacer.ts +44 -0
- package/core/renderers/measurables/inline_input.d.ts +24 -0
- package/core/renderers/measurables/{inline_input.js → inline_input.ts} +22 -26
- package/core/renderers/measurables/input_connection.d.ts +29 -0
- package/core/renderers/measurables/input_connection.ts +66 -0
- package/core/renderers/measurables/input_row.d.ts +30 -0
- package/core/renderers/measurables/{input_row.js → input_row.ts} +24 -31
- package/core/renderers/measurables/jagged_edge.d.ts +20 -0
- package/core/renderers/measurables/{jagged_edge.js → jagged_edge.ts} +10 -13
- package/core/renderers/measurables/next_connection.d.ts +23 -0
- package/core/renderers/measurables/next_connection.ts +47 -0
- package/core/renderers/measurables/output_connection.d.ts +26 -0
- package/core/renderers/measurables/output_connection.ts +56 -0
- package/core/renderers/measurables/previous_connection.d.ts +23 -0
- package/core/renderers/measurables/previous_connection.ts +47 -0
- package/core/renderers/measurables/round_corner.d.ts +21 -0
- package/core/renderers/measurables/round_corner.ts +49 -0
- package/core/renderers/measurables/row.d.ts +141 -0
- package/core/renderers/measurables/row.ts +225 -0
- package/core/renderers/measurables/spacer_row.d.ts +29 -0
- package/core/renderers/measurables/spacer_row.ts +55 -0
- package/core/renderers/measurables/square_corner.d.ts +21 -0
- package/core/renderers/measurables/square_corner.ts +47 -0
- package/core/renderers/measurables/statement_input.d.ts +22 -0
- package/core/renderers/measurables/{statement_input.js → statement_input.ts} +14 -18
- package/core/renderers/measurables/top_row.d.ts +56 -0
- package/core/renderers/measurables/top_row.ts +122 -0
- package/core/renderers/measurables/types.d.ts +235 -0
- package/core/renderers/measurables/types.ts +332 -0
- package/core/renderers/minimalist/constants.d.ts +14 -0
- package/core/renderers/minimalist/{constants.js → constants.ts} +5 -10
- package/core/renderers/minimalist/drawer.d.ts +21 -0
- package/core/renderers/minimalist/drawer.ts +38 -0
- package/core/renderers/minimalist/info.d.ts +30 -0
- package/core/renderers/minimalist/info.ts +52 -0
- package/core/renderers/minimalist/minimalist.d.ts +6 -0
- package/core/renderers/minimalist/minimalist.ts +22 -0
- package/core/renderers/minimalist/renderer.d.ts +41 -0
- package/core/renderers/minimalist/renderer.ts +71 -0
- package/core/renderers/thrasos/info.d.ts +40 -0
- package/core/renderers/thrasos/{info.js → info.ts} +66 -67
- package/core/renderers/thrasos/renderer.d.ts +25 -0
- package/core/renderers/thrasos/renderer.ts +48 -0
- package/core/renderers/thrasos/thrasos.d.ts +4 -0
- package/core/renderers/thrasos/thrasos.ts +20 -0
- package/core/renderers/zelos/constants.d.ts +186 -0
- package/core/renderers/zelos/{constants.js → constants.ts} +294 -441
- package/core/renderers/zelos/drawer.d.ts +47 -0
- package/core/renderers/zelos/{drawer.js → drawer.ts} +73 -95
- package/core/renderers/zelos/info.d.ts +88 -0
- package/core/renderers/zelos/{info.js → info.ts} +111 -142
- package/core/renderers/zelos/marker_svg.d.ts +46 -0
- package/core/renderers/zelos/marker_svg.ts +151 -0
- package/core/renderers/zelos/measurables/bottom_row.d.ts +27 -0
- package/core/renderers/zelos/measurables/bottom_row.ts +53 -0
- package/core/renderers/zelos/measurables/inputs.d.ts +23 -0
- package/core/renderers/zelos/measurables/{inputs.js → inputs.ts} +14 -15
- package/core/renderers/zelos/measurables/row_elements.d.ts +21 -0
- package/core/renderers/zelos/measurables/row_elements.ts +45 -0
- package/core/renderers/zelos/measurables/top_row.d.ts +29 -0
- package/core/renderers/zelos/measurables/{top_row.js → top_row.ts} +14 -27
- package/core/renderers/zelos/path_object.d.ts +77 -0
- package/core/renderers/zelos/path_object.ts +215 -0
- package/core/renderers/zelos/renderer.d.ts +74 -0
- package/core/renderers/zelos/renderer.ts +142 -0
- package/core/renderers/zelos/zelos.d.ts +12 -0
- package/core/renderers/zelos/zelos.ts +39 -0
- package/core/scrollbar.d.ts +277 -0
- package/core/{scrollbar.js → scrollbar.ts} +307 -328
- package/core/scrollbar_pair.d.ts +105 -0
- package/core/{scrollbar_pair.js → scrollbar_pair.ts} +71 -79
- package/core/serialization/blocks.d.ts +98 -0
- package/core/serialization/{blocks.js → blocks.ts} +229 -228
- package/core/serialization/exceptions.d.ts +73 -0
- package/core/serialization/exceptions.ts +98 -0
- package/core/serialization/priorities.d.ts +15 -0
- package/core/serialization/{priorities.js → priorities.ts} +4 -10
- package/core/serialization/registry.d.ts +20 -0
- package/core/serialization/{registry.js → registry.ts} +11 -13
- package/core/serialization/variables.d.ts +14 -0
- package/core/serialization/{variables.js → variables.ts} +30 -32
- package/core/serialization/workspaces.d.ts +28 -0
- package/core/serialization/{workspaces.js → workspaces.ts} +30 -27
- package/core/shortcut_items.d.ts +61 -0
- package/core/{shortcut_items.js → shortcut_items.ts} +121 -157
- package/core/shortcut_registry.d.ts +151 -0
- package/core/shortcut_registry.ts +355 -0
- package/core/sprites.d.ts +19 -0
- package/core/{sprites.js → sprites.ts} +4 -6
- package/core/theme/classic.d.ts +12 -0
- package/core/theme/{classic.js → classic.ts} +5 -7
- package/core/theme/themes.d.ts +8 -0
- package/core/theme/themes.ts +22 -0
- package/core/theme/zelos.d.ts +11 -0
- package/core/theme/{zelos.js → zelos.ts} +4 -7
- package/core/theme.d.ts +142 -0
- package/core/theme.ts +221 -0
- package/core/theme_manager.d.ts +81 -0
- package/core/theme_manager.ts +186 -0
- package/core/toolbox/category.d.ts +239 -0
- package/core/toolbox/category.ts +679 -0
- package/core/toolbox/collapsible_category.d.ts +91 -0
- package/core/toolbox/collapsible_category.ts +273 -0
- package/core/toolbox/separator.d.ts +39 -0
- package/core/toolbox/separator.ts +105 -0
- package/core/toolbox/toolbox.d.ts +352 -0
- package/core/toolbox/{toolbox.js → toolbox.ts} +316 -432
- package/core/toolbox/toolbox_item.d.ts +85 -0
- package/core/toolbox/toolbox_item.ts +147 -0
- package/core/tooltip.d.ts +126 -0
- package/core/{tooltip.js → tooltip.ts} +136 -214
- package/core/touch.d.ts +121 -0
- package/core/touch.ts +306 -0
- package/core/touch_gesture.d.ts +115 -0
- package/core/{touch_gesture.js → touch_gesture.ts} +87 -125
- package/core/trashcan.d.ts +195 -0
- package/core/{trashcan.js → trashcan.ts} +226 -312
- package/core/utils/aria.d.ts +67 -0
- package/core/utils/{aria.js → aria.ts} +47 -61
- package/core/utils/array.d.ts +14 -0
- package/core/utils/{array.js → array.ts} +10 -12
- package/core/utils/colour.d.ts +103 -0
- package/core/utils/{colour.js → colour.ts} +60 -72
- package/core/utils/coordinate.d.ts +72 -0
- package/core/utils/coordinate.ts +124 -0
- package/core/utils/deprecation.d.ts +17 -0
- package/core/utils/{deprecation.js → deprecation.ts} +11 -11
- package/core/utils/dom.d.ts +165 -0
- package/core/utils/{dom.js → dom.ts} +125 -147
- package/core/utils/idgenerator.d.ts +25 -0
- package/core/utils/{idgenerator.js → idgenerator.ts} +15 -18
- package/core/utils/keycodes.d.ts +137 -0
- package/core/utils/keycodes.ts +169 -0
- package/core/utils/math.d.ts +30 -0
- package/core/utils/{math.js → math.ts} +17 -19
- package/core/utils/metrics.d.ts +64 -0
- package/core/utils/metrics.ts +97 -0
- package/core/utils/object.d.ts +35 -0
- package/core/utils/{object.js → object.ts} +30 -26
- package/core/utils/parsing.d.ts +50 -0
- package/core/utils/{parsing.js → parsing.ts} +50 -50
- package/core/utils/rect.d.ts +38 -0
- package/core/utils/{rect.js → rect.ts} +18 -31
- package/core/utils/sentinel.d.ts +11 -0
- package/core/utils/{sentinel.js → sentinel.ts} +3 -5
- package/core/utils/size.d.ts +27 -0
- package/core/utils/{size.js → size.ts} +12 -26
- package/core/utils/string.d.ts +55 -0
- package/core/utils/{string.js → string.ts} +64 -61
- package/core/utils/style.d.ts +127 -0
- package/core/utils/{style.js → style.ts} +102 -92
- package/core/utils/svg.d.ts +68 -0
- package/core/utils/svg.ts +88 -0
- package/core/utils/svg_math.d.ts +70 -0
- package/core/utils/{svg_math.js → svg_math.ts} +72 -71
- package/core/utils/svg_paths.d.ts +101 -0
- package/core/utils/{svg_paths.js → svg_paths.ts} +56 -65
- package/core/utils/toolbox.d.ts +193 -0
- package/core/utils/toolbox.ts +433 -0
- package/core/utils/useragent.d.ts +33 -0
- package/core/utils/useragent.ts +135 -0
- package/core/utils/xml.d.ts +52 -0
- package/core/utils/{xml.js → xml.ts} +26 -36
- package/core/utils.d.ts +217 -0
- package/core/utils.ts +428 -0
- package/core/variable_map.d.ts +141 -0
- package/core/{variable_map.js → variable_map.ts} +131 -149
- package/core/variable_model.d.ts +40 -0
- package/core/variable_model.ts +82 -0
- package/core/variables.d.ts +181 -0
- package/core/{variables.js → variables.ts} +206 -188
- package/core/variables_dynamic.d.ts +38 -0
- package/core/{variables_dynamic.js → variables_dynamic.ts} +47 -43
- package/core/warning.d.ts +50 -0
- package/core/{warning.js → warning.ts} +52 -66
- package/core/widgetdiv.d.ts +69 -0
- package/core/widgetdiv.ts +257 -0
- package/core/workspace.d.ts +386 -0
- package/core/workspace.ts +801 -0
- package/core/workspace_audio.d.ts +47 -0
- package/core/{workspace_audio.js → workspace_audio.ts} +47 -60
- package/core/workspace_comment.d.ts +170 -0
- package/core/workspace_comment.ts +398 -0
- package/core/workspace_comment_svg.d.ts +329 -0
- package/core/{workspace_comment_svg.js → workspace_comment_svg.ts} +347 -444
- package/core/workspace_drag_surface_svg.d.ts +68 -0
- package/core/{workspace_drag_surface_svg.js → workspace_drag_surface_svg.ts} +75 -82
- package/core/workspace_dragger.d.ts +48 -0
- package/core/workspace_dragger.ts +104 -0
- package/core/workspace_svg.d.ts +920 -0
- package/core/{workspace_svg.js → workspace_svg.ts} +855 -935
- package/core/xml.d.ts +117 -0
- package/core/{xml.js → xml.ts} +306 -326
- package/core/zoom_controls.d.ts +130 -0
- package/core/{zoom_controls.js → zoom_controls.ts} +185 -251
- package/core.d.ts +1 -3
- package/core.js +1 -2
- package/dart.d.ts +0 -3
- package/dart_compressed.js +387 -99
- package/dart_compressed.js.map +1 -1
- package/generators/dart/all.js +2 -0
- package/generators/dart/colour.js +1 -1
- package/generators/dart/lists.js +1 -1
- package/generators/dart/logic.js +1 -1
- package/generators/dart/loops.js +1 -1
- package/generators/dart/math.js +1 -1
- package/generators/dart/procedures.js +1 -1
- package/generators/dart/text.js +1 -1
- package/generators/dart/variables.js +1 -1
- package/generators/dart/variables_dynamic.js +1 -1
- package/generators/dart.js +1 -2
- package/generators/javascript/all.js +2 -0
- package/generators/javascript/colour.js +1 -1
- package/generators/javascript/lists.js +1 -1
- package/generators/javascript/logic.js +1 -1
- package/generators/javascript/loops.js +1 -1
- package/generators/javascript/math.js +4 -4
- package/generators/javascript/procedures.js +1 -1
- package/generators/javascript/text.js +2 -2
- package/generators/javascript/variables.js +1 -1
- package/generators/javascript/variables_dynamic.js +1 -1
- package/generators/javascript.js +1 -3
- package/generators/lua/all.js +2 -0
- package/generators/lua/colour.js +1 -1
- package/generators/lua/lists.js +1 -1
- package/generators/lua/logic.js +1 -1
- package/generators/lua/loops.js +1 -1
- package/generators/lua/math.js +1 -1
- package/generators/lua/procedures.js +1 -1
- package/generators/lua/text.js +1 -1
- package/generators/lua/variables.js +1 -1
- package/generators/lua/variables_dynamic.js +1 -1
- package/generators/lua.js +1 -2
- package/generators/php/all.js +2 -0
- package/generators/php/colour.js +1 -1
- package/generators/php/lists.js +1 -2
- package/generators/php/logic.js +1 -1
- package/generators/php/loops.js +1 -1
- package/generators/php/math.js +1 -1
- package/generators/php/procedures.js +1 -1
- package/generators/php/text.js +1 -1
- package/generators/php/variables.js +1 -1
- package/generators/php/variables_dynamic.js +1 -1
- package/generators/php.js +1 -2
- package/generators/python/all.js +2 -0
- package/generators/python/colour.js +3 -3
- package/generators/python/lists.js +1 -1
- package/generators/python/logic.js +1 -1
- package/generators/python/loops.js +4 -7
- package/generators/python/math.js +1 -1
- package/generators/python/procedures.js +1 -1
- package/generators/python/text.js +1 -1
- package/generators/python/variables.js +1 -1
- package/generators/python/variables_dynamic.js +1 -1
- package/generators/python.js +1 -2
- package/index.d.ts +2 -8
- package/javascript.d.ts +0 -3
- package/javascript_compressed.js +314 -104
- package/javascript_compressed.js.map +1 -1
- package/lua.d.ts +0 -3
- package/lua_compressed.js +399 -81
- package/lua_compressed.js.map +1 -1
- package/msg/ab.js +420 -420
- package/msg/ace.js +420 -420
- package/msg/af.js +420 -420
- package/msg/am.js +420 -420
- package/msg/ar.js +420 -420
- package/msg/ast.js +420 -420
- package/msg/az.js +420 -420
- package/msg/ba.js +420 -420
- package/msg/bcc.js +420 -420
- package/msg/be-tarask.js +420 -420
- package/msg/be.js +420 -420
- package/msg/bg.js +420 -420
- package/msg/bn.js +420 -420
- package/msg/br.js +420 -420
- package/msg/bs.js +420 -420
- package/msg/ca.js +420 -420
- package/msg/cdo.js +420 -420
- package/msg/cs.js +420 -420
- package/msg/da.js +420 -420
- package/msg/de.js +420 -420
- package/msg/diq.js +420 -420
- package/msg/dty.js +420 -420
- package/msg/ee.js +420 -420
- package/msg/el.js +420 -420
- package/msg/en-gb.js +420 -420
- package/msg/en.js +420 -420
- package/msg/eo.js +420 -420
- package/msg/es.js +420 -420
- package/msg/et.js +420 -420
- package/msg/eu.js +420 -420
- package/msg/fa.js +420 -420
- package/msg/fi.js +420 -420
- package/msg/fo.js +420 -420
- package/msg/fr.js +420 -420
- package/msg/frr.js +420 -420
- package/msg/gl.js +420 -420
- package/msg/gn.js +420 -420
- package/msg/gor.js +420 -420
- package/msg/ha.js +420 -420
- package/msg/hak.js +420 -420
- package/msg/he.js +420 -420
- package/msg/hi.js +420 -420
- package/msg/hr.js +420 -420
- package/msg/hrx.js +420 -420
- package/msg/hu.js +420 -420
- package/msg/hy.js +420 -420
- package/msg/ia.js +420 -420
- package/msg/id.js +420 -420
- package/msg/ig.js +420 -420
- package/msg/inh.js +420 -420
- package/msg/is.js +420 -420
- package/msg/it.js +420 -420
- package/msg/ja.js +420 -420
- package/msg/ka.js +420 -420
- package/msg/kab.js +420 -420
- package/msg/kbd-cyrl.js +420 -420
- package/msg/km.js +420 -420
- package/msg/kn.js +420 -420
- package/msg/ko.js +420 -420
- package/msg/ksh.js +420 -420
- package/msg/ku-latn.js +420 -420
- package/msg/ky.js +420 -420
- package/msg/la.js +420 -420
- package/msg/lb.js +420 -420
- package/msg/lki.js +420 -420
- package/msg/lo.js +420 -420
- package/msg/lrc.js +420 -420
- package/msg/lt.js +420 -420
- package/msg/lv.js +420 -420
- package/msg/mg.js +420 -420
- package/msg/mk.js +420 -420
- package/msg/ml.js +420 -420
- package/msg/mnw.js +420 -420
- package/msg/ms.js +420 -420
- package/msg/my.js +420 -420
- package/msg/mzn.js +420 -420
- package/msg/nb.js +420 -420
- package/msg/ne.js +420 -420
- package/msg/nl.js +420 -420
- package/msg/oc.js +420 -420
- package/msg/olo.js +420 -420
- package/msg/pa.js +420 -420
- package/msg/pl.js +420 -420
- package/msg/pms.js +420 -420
- package/msg/ps.js +420 -420
- package/msg/pt-br.js +420 -420
- package/msg/pt.js +420 -420
- package/msg/ro.js +420 -420
- package/msg/ru.js +420 -420
- package/msg/sc.js +420 -420
- package/msg/sco.js +420 -420
- package/msg/sd.js +420 -420
- package/msg/shn.js +420 -420
- package/msg/si.js +420 -420
- package/msg/sk.js +420 -420
- package/msg/skr-arab.js +420 -420
- package/msg/sl.js +420 -420
- package/msg/smn.js +420 -420
- package/msg/sq.js +420 -420
- package/msg/sr-latn.js +420 -420
- package/msg/sr.js +420 -420
- package/msg/sv.js +420 -420
- package/msg/sw.js +420 -420
- package/msg/ta.js +420 -420
- package/msg/tcy.js +420 -420
- package/msg/te.js +420 -420
- package/msg/th.js +420 -420
- package/msg/ti.js +420 -420
- package/msg/tl.js +420 -420
- package/msg/tlh.js +420 -420
- package/msg/tr.js +420 -420
- package/msg/ug-arab.js +420 -420
- package/msg/uk.js +420 -420
- package/msg/ur.js +420 -420
- package/msg/uz.js +420 -420
- package/msg/vi.js +420 -420
- package/msg/xmf.js +420 -420
- package/msg/yo.js +420 -420
- package/msg/yue.js +420 -420
- package/msg/zgh.js +420 -420
- package/msg/zh-hans.js +420 -420
- package/msg/zh-hant.js +420 -420
- package/package.json +5 -5
- package/php.d.ts +0 -3
- package/php_compressed.js +322 -93
- package/php_compressed.js.map +1 -1
- package/python.d.ts +0 -3
- package/python_compressed.js +237 -90
- package/python_compressed.js.map +1 -1
- package/blockly.d.ts +0 -26127
- package/core/blockly_options.js +0 -28
- package/core/bubble_dragger.js +0 -298
- package/core/clipboard.js +0 -80
- package/core/component_manager.js +0 -263
- package/core/contextmenu_items.js +0 -651
- package/core/contextmenu_registry.js +0 -178
- package/core/delete_area.js +0 -87
- package/core/dialog.js +0 -107
- package/core/drag_target.js +0 -98
- package/core/events/events.js +0 -147
- package/core/events/events_abstract.js +0 -133
- package/core/events/events_block_base.js +0 -70
- package/core/events/events_block_drag.js +0 -89
- package/core/events/events_bubble_open.js +0 -90
- package/core/events/events_comment_base.js +0 -121
- package/core/events/events_marker_move.js +0 -110
- package/core/events/events_selected.js +0 -83
- package/core/events/events_toolbox_item_select.js +0 -84
- package/core/events/events_trashcan_open.js +0 -73
- package/core/events/events_var_base.js +0 -70
- package/core/events/events_viewport.js +0 -107
- package/core/events/workspace_events.js +0 -93
- package/core/field_angle.js +0 -591
- package/core/field_checkbox.js +0 -255
- package/core/field_colour.js +0 -717
- package/core/field_image.js +0 -304
- package/core/field_label.js +0 -149
- package/core/field_label_serializable.js +0 -80
- package/core/field_textinput.js +0 -619
- package/core/flyout_button.js +0 -356
- package/core/grid.js +0 -226
- package/core/icon.js +0 -225
- package/core/input.js +0 -335
- package/core/interfaces/i_ast_node_location_svg.js +0 -45
- package/core/interfaces/i_ast_node_location_with_block.js +0 -41
- package/core/interfaces/i_autohideable.js +0 -40
- package/core/interfaces/i_block_dragger.js +0 -66
- package/core/interfaces/i_bounded_element.js +0 -45
- package/core/interfaces/i_bubble.js +0 -95
- package/core/interfaces/i_collapsible_toolbox_item.js +0 -53
- package/core/interfaces/i_connection_checker.js +0 -104
- package/core/interfaces/i_contextmenu.js +0 -32
- package/core/interfaces/i_copyable.js +0 -49
- package/core/interfaces/i_delete_area.js +0 -50
- package/core/interfaces/i_drag_target.js +0 -88
- package/core/interfaces/i_flyout.js +0 -201
- package/core/interfaces/i_keyboard_accessible.js +0 -38
- package/core/interfaces/i_metrics_manager.js +0 -154
- package/core/interfaces/i_positionable.js +0 -51
- package/core/interfaces/i_selectable.js +0 -51
- package/core/interfaces/i_selectable_toolbox_item.js +0 -73
- package/core/interfaces/i_serializer.js +0 -77
- package/core/interfaces/i_styleable.js +0 -39
- package/core/interfaces/i_toolbox.js +0 -142
- package/core/interfaces/i_toolbox_item.js +0 -85
- package/core/marker_manager.js +0 -213
- package/core/menuitem.js +0 -292
- package/core/names.js +0 -293
- package/core/registry.js +0 -384
- package/core/renderers/common/block_rendering.js +0 -170
- package/core/renderers/common/constants.js +0 -1250
- package/core/renderers/common/i_path_object.js +0 -162
- package/core/renderers/common/marker_svg.js +0 -721
- package/core/renderers/common/path_object.js +0 -283
- package/core/renderers/common/renderer.js +0 -305
- package/core/renderers/geras/constants.js +0 -73
- package/core/renderers/geras/geras.js +0 -36
- package/core/renderers/geras/measurables/inline_input.js +0 -58
- package/core/renderers/geras/measurables/statement_input.js +0 -57
- package/core/renderers/geras/renderer.js +0 -149
- package/core/renderers/measurables/base.js +0 -64
- package/core/renderers/measurables/bottom_row.js +0 -138
- package/core/renderers/measurables/connection.js +0 -56
- package/core/renderers/measurables/external_value_input.js +0 -70
- package/core/renderers/measurables/field.js +0 -71
- package/core/renderers/measurables/in_row_spacer.js +0 -47
- package/core/renderers/measurables/input_connection.js +0 -75
- package/core/renderers/measurables/next_connection.js +0 -50
- package/core/renderers/measurables/output_connection.js +0 -61
- package/core/renderers/measurables/previous_connection.js +0 -50
- package/core/renderers/measurables/round_corner.js +0 -52
- package/core/renderers/measurables/row.js +0 -247
- package/core/renderers/measurables/spacer_row.js +0 -69
- package/core/renderers/measurables/square_corner.js +0 -50
- package/core/renderers/measurables/top_row.js +0 -143
- package/core/renderers/measurables/types.js +0 -353
- package/core/renderers/minimalist/drawer.js +0 -42
- package/core/renderers/minimalist/info.js +0 -54
- package/core/renderers/minimalist/minimalist.js +0 -26
- package/core/renderers/minimalist/renderer.js +0 -80
- package/core/renderers/thrasos/renderer.js +0 -53
- package/core/renderers/thrasos/thrasos.js +0 -22
- package/core/renderers/zelos/marker_svg.js +0 -179
- package/core/renderers/zelos/measurables/bottom_row.js +0 -66
- package/core/renderers/zelos/measurables/row_elements.js +0 -46
- package/core/renderers/zelos/path_object.js +0 -247
- package/core/renderers/zelos/renderer.js +0 -147
- package/core/renderers/zelos/zelos.js +0 -38
- package/core/serialization/exceptions.js +0 -144
- package/core/shortcut_registry.js +0 -366
- package/core/theme/themes.js +0 -23
- package/core/theme.js +0 -228
- package/core/theme_manager.js +0 -211
- package/core/toolbox/category.js +0 -751
- package/core/toolbox/collapsible_category.js +0 -311
- package/core/toolbox/separator.js +0 -133
- package/core/toolbox/toolbox_item.js +0 -173
- package/core/touch.js +0 -285
- package/core/utils/coordinate.js +0 -138
- package/core/utils/global.js +0 -41
- package/core/utils/keycodes.js +0 -172
- package/core/utils/metrics.js +0 -154
- package/core/utils/svg.js +0 -186
- package/core/utils/toolbox.js +0 -459
- package/core/utils/useragent.js +0 -197
- package/core/utils.js +0 -383
- package/core/variable_model.js +0 -96
- package/core/widgetdiv.js +0 -290
- package/core/workspace.js +0 -836
- package/core/workspace_comment.js +0 -400
- package/core/workspace_dragger.js +0 -115
|
@@ -7,175 +7,151 @@
|
|
|
7
7
|
/**
|
|
8
8
|
* @fileoverview Object representing a UI bubble.
|
|
9
9
|
*/
|
|
10
|
-
'use strict';
|
|
11
10
|
|
|
12
11
|
/**
|
|
13
12
|
* Object representing a UI bubble.
|
|
14
13
|
* @class
|
|
15
14
|
*/
|
|
16
|
-
goog
|
|
15
|
+
import * as goog from '../closure/goog/goog.js';
|
|
16
|
+
goog.declareModuleId('Blockly.Bubble');
|
|
17
17
|
|
|
18
|
-
const Touch = goog.require('Blockly.Touch');
|
|
19
|
-
const browserEvents = goog.require('Blockly.browserEvents');
|
|
20
|
-
const dom = goog.require('Blockly.utils.dom');
|
|
21
|
-
const math = goog.require('Blockly.utils.math');
|
|
22
|
-
const userAgent = goog.require('Blockly.utils.userAgent');
|
|
23
18
|
/* eslint-disable-next-line no-unused-vars */
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
19
|
+
// Unused import preserved for side-effects. Remove if unneeded.
|
|
20
|
+
// import './metrics_manager.js';
|
|
21
|
+
// Unused import preserved for side-effects. Remove if unneeded.
|
|
22
|
+
// import './workspace.js';
|
|
23
|
+
|
|
24
|
+
import type {BlockDragSurfaceSvg} from './block_drag_surface.js';
|
|
25
|
+
import type {BlockSvg} from './block_svg.js';
|
|
26
|
+
import * as browserEvents from './browser_events.js';
|
|
27
|
+
import type {IBubble} from './interfaces/i_bubble.js';
|
|
28
|
+
import type {ContainerRegion} from './metrics_manager.js';
|
|
29
|
+
import {Scrollbar} from './scrollbar.js';
|
|
30
|
+
import * as Touch from './touch.js';
|
|
31
|
+
import {Coordinate} from './utils/coordinate.js';
|
|
32
|
+
import * as dom from './utils/dom.js';
|
|
33
|
+
import * as math from './utils/math.js';
|
|
34
|
+
import {Size} from './utils/size.js';
|
|
35
|
+
import {Svg} from './utils/svg.js';
|
|
36
|
+
import * as userAgent from './utils/useragent.js';
|
|
37
|
+
import type {WorkspaceSvg} from './workspace_svg.js';
|
|
39
38
|
|
|
40
39
|
|
|
41
40
|
/**
|
|
42
41
|
* Class for UI bubble.
|
|
43
|
-
* @implements {IBubble}
|
|
44
42
|
* @alias Blockly.Bubble
|
|
45
43
|
*/
|
|
46
|
-
|
|
44
|
+
export class Bubble implements IBubble {
|
|
45
|
+
/** Width of the border around the bubble. */
|
|
46
|
+
static BORDER_WIDTH = 6;
|
|
47
|
+
|
|
47
48
|
/**
|
|
48
|
-
*
|
|
49
|
-
*
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
49
|
+
* Determines the thickness of the base of the arrow in relation to the size
|
|
50
|
+
* of the bubble. Higher numbers result in thinner arrows.
|
|
51
|
+
*/
|
|
52
|
+
static ARROW_THICKNESS = 5;
|
|
53
|
+
|
|
54
|
+
/** The number of degrees that the arrow bends counter-clockwise. */
|
|
55
|
+
static ARROW_ANGLE = 20;
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* The sharpness of the arrow's bend. Higher numbers result in smoother
|
|
59
|
+
* arrows.
|
|
60
|
+
*/
|
|
61
|
+
static ARROW_BEND = 4;
|
|
62
|
+
|
|
63
|
+
/** Distance between arrow point and anchor point. */
|
|
64
|
+
static ANCHOR_RADIUS = 8;
|
|
65
|
+
|
|
66
|
+
/** Mouse up event data. */
|
|
67
|
+
private static onMouseUpWrapper_: browserEvents.Data|null = null;
|
|
68
|
+
|
|
69
|
+
/** Mouse move event data. */
|
|
70
|
+
private static onMouseMoveWrapper_: browserEvents.Data|null = null;
|
|
71
|
+
workspace_: WorkspaceSvg;
|
|
72
|
+
content_: SVGElement;
|
|
73
|
+
shape_: SVGElement;
|
|
74
|
+
|
|
75
|
+
/** Flag to stop incremental rendering during construction. */
|
|
76
|
+
private readonly rendered_: boolean;
|
|
77
|
+
|
|
78
|
+
/** The SVG group containing all parts of the bubble. */
|
|
79
|
+
private bubbleGroup_: SVGGElement|null = null;
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* The SVG path for the arrow from the bubble to the icon on the block.
|
|
83
|
+
*/
|
|
84
|
+
private bubbleArrow_: SVGPathElement|null = null;
|
|
85
|
+
|
|
86
|
+
/** The SVG rect for the main body of the bubble. */
|
|
87
|
+
private bubbleBack_: SVGRectElement|null = null;
|
|
88
|
+
|
|
89
|
+
/** The SVG group for the resize hash marks on some bubbles. */
|
|
90
|
+
private resizeGroup_: SVGGElement|null = null;
|
|
91
|
+
|
|
92
|
+
/** Absolute coordinate of anchor point, in workspace coordinates. */
|
|
93
|
+
private anchorXY_!: Coordinate;
|
|
94
|
+
|
|
95
|
+
/**
|
|
96
|
+
* Relative X coordinate of bubble with respect to the anchor's centre,
|
|
97
|
+
* in workspace units.
|
|
98
|
+
* In RTL mode the initial value is negated.
|
|
99
|
+
*/
|
|
100
|
+
private relativeLeft_ = 0;
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Relative Y coordinate of bubble with respect to the anchor's centre, in
|
|
104
|
+
* workspace units.
|
|
105
|
+
*/
|
|
106
|
+
private relativeTop_ = 0;
|
|
107
|
+
|
|
108
|
+
/** Width of bubble, in workspace units. */
|
|
109
|
+
private width_ = 0;
|
|
110
|
+
|
|
111
|
+
/** Height of bubble, in workspace units. */
|
|
112
|
+
private height_ = 0;
|
|
113
|
+
|
|
114
|
+
/** Automatically position and reposition the bubble. */
|
|
115
|
+
private autoLayout_ = true;
|
|
116
|
+
|
|
117
|
+
/** Method to call on resize of bubble. */
|
|
118
|
+
private resizeCallback_: (() => void)|null = null;
|
|
119
|
+
|
|
120
|
+
/** Method to call on move of bubble. */
|
|
121
|
+
private moveCallback_: (() => void)|null = null;
|
|
122
|
+
|
|
123
|
+
/** Mouse down on bubbleBack_ event data. */
|
|
124
|
+
private onMouseDownBubbleWrapper_: browserEvents.Data|null = null;
|
|
125
|
+
|
|
126
|
+
/** Mouse down on resizeGroup_ event data. */
|
|
127
|
+
private onMouseDownResizeWrapper_: browserEvents.Data|null = null;
|
|
128
|
+
|
|
129
|
+
/**
|
|
130
|
+
* Describes whether this bubble has been disposed of (nodes and event
|
|
131
|
+
* listeners removed from the page) or not.
|
|
132
|
+
* @internal
|
|
133
|
+
*/
|
|
134
|
+
disposed = false;
|
|
135
|
+
private arrow_radians_: number;
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* @param workspace The workspace on which to draw the bubble.
|
|
139
|
+
* @param content SVG content for the bubble.
|
|
140
|
+
* @param shape SVG element to avoid eclipsing.
|
|
141
|
+
* @param anchorXY Absolute position of bubble's anchor point.
|
|
142
|
+
* @param bubbleWidth Width of bubble, or null if not resizable.
|
|
143
|
+
* @param bubbleHeight Height of bubble, or null if not resizable.
|
|
56
144
|
* @struct
|
|
57
145
|
*/
|
|
58
|
-
constructor(
|
|
146
|
+
constructor(
|
|
147
|
+
workspace: WorkspaceSvg, content: SVGElement, shape: SVGElement,
|
|
148
|
+
anchorXY: Coordinate, bubbleWidth: number|null,
|
|
149
|
+
bubbleHeight: number|null) {
|
|
150
|
+
this.rendered_ = false;
|
|
59
151
|
this.workspace_ = workspace;
|
|
60
152
|
this.content_ = content;
|
|
61
153
|
this.shape_ = shape;
|
|
62
154
|
|
|
63
|
-
/**
|
|
64
|
-
* Flag to stop incremental rendering during construction.
|
|
65
|
-
* @type {boolean}
|
|
66
|
-
* @private
|
|
67
|
-
*/
|
|
68
|
-
this.rendered_ = false;
|
|
69
|
-
|
|
70
|
-
/**
|
|
71
|
-
* The SVG group containing all parts of the bubble.
|
|
72
|
-
* @type {SVGGElement}
|
|
73
|
-
* @private
|
|
74
|
-
*/
|
|
75
|
-
this.bubbleGroup_ = null;
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* The SVG path for the arrow from the bubble to the icon on the block.
|
|
79
|
-
* @type {SVGPathElement}
|
|
80
|
-
* @private
|
|
81
|
-
*/
|
|
82
|
-
this.bubbleArrow_ = null;
|
|
83
|
-
|
|
84
|
-
/**
|
|
85
|
-
* The SVG rect for the main body of the bubble.
|
|
86
|
-
* @type {SVGRectElement}
|
|
87
|
-
* @private
|
|
88
|
-
*/
|
|
89
|
-
this.bubbleBack_ = null;
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* The SVG group for the resize hash marks on some bubbles.
|
|
93
|
-
* @type {SVGGElement}
|
|
94
|
-
* @private
|
|
95
|
-
*/
|
|
96
|
-
this.resizeGroup_ = null;
|
|
97
|
-
|
|
98
|
-
/**
|
|
99
|
-
* Absolute coordinate of anchor point, in workspace coordinates.
|
|
100
|
-
* @type {Coordinate}
|
|
101
|
-
* @private
|
|
102
|
-
*/
|
|
103
|
-
this.anchorXY_ = null;
|
|
104
|
-
|
|
105
|
-
/**
|
|
106
|
-
* Relative X coordinate of bubble with respect to the anchor's centre,
|
|
107
|
-
* in workspace units.
|
|
108
|
-
* In RTL mode the initial value is negated.
|
|
109
|
-
* @type {number}
|
|
110
|
-
* @private
|
|
111
|
-
*/
|
|
112
|
-
this.relativeLeft_ = 0;
|
|
113
|
-
|
|
114
|
-
/**
|
|
115
|
-
* Relative Y coordinate of bubble with respect to the anchor's centre, in
|
|
116
|
-
* workspace units.
|
|
117
|
-
* @type {number}
|
|
118
|
-
* @private
|
|
119
|
-
*/
|
|
120
|
-
this.relativeTop_ = 0;
|
|
121
|
-
|
|
122
|
-
/**
|
|
123
|
-
* Width of bubble, in workspace units.
|
|
124
|
-
* @type {number}
|
|
125
|
-
* @private
|
|
126
|
-
*/
|
|
127
|
-
this.width_ = 0;
|
|
128
|
-
|
|
129
|
-
/**
|
|
130
|
-
* Height of bubble, in workspace units.
|
|
131
|
-
* @type {number}
|
|
132
|
-
* @private
|
|
133
|
-
*/
|
|
134
|
-
this.height_ = 0;
|
|
135
|
-
|
|
136
|
-
/**
|
|
137
|
-
* Automatically position and reposition the bubble.
|
|
138
|
-
* @type {boolean}
|
|
139
|
-
* @private
|
|
140
|
-
*/
|
|
141
|
-
this.autoLayout_ = true;
|
|
142
|
-
|
|
143
|
-
/**
|
|
144
|
-
* Method to call on resize of bubble.
|
|
145
|
-
* @type {?function()}
|
|
146
|
-
* @private
|
|
147
|
-
*/
|
|
148
|
-
this.resizeCallback_ = null;
|
|
149
|
-
|
|
150
|
-
/**
|
|
151
|
-
* Method to call on move of bubble.
|
|
152
|
-
* @type {?function()}
|
|
153
|
-
* @private
|
|
154
|
-
*/
|
|
155
|
-
this.moveCallback_ = null;
|
|
156
|
-
|
|
157
|
-
/**
|
|
158
|
-
* Mouse down on bubbleBack_ event data.
|
|
159
|
-
* @type {?browserEvents.Data}
|
|
160
|
-
* @private
|
|
161
|
-
*/
|
|
162
|
-
this.onMouseDownBubbleWrapper_ = null;
|
|
163
|
-
|
|
164
|
-
/**
|
|
165
|
-
* Mouse down on resizeGroup_ event data.
|
|
166
|
-
* @type {?browserEvents.Data}
|
|
167
|
-
* @private
|
|
168
|
-
*/
|
|
169
|
-
this.onMouseDownResizeWrapper_ = null;
|
|
170
|
-
|
|
171
|
-
/**
|
|
172
|
-
* Describes whether this bubble has been disposed of (nodes and event
|
|
173
|
-
* listeners removed from the page) or not.
|
|
174
|
-
* @type {boolean}
|
|
175
|
-
* @package
|
|
176
|
-
*/
|
|
177
|
-
this.disposed = false;
|
|
178
|
-
|
|
179
155
|
let angle = Bubble.ARROW_ANGLE;
|
|
180
156
|
if (this.workspace_.RTL) {
|
|
181
157
|
angle = -angle;
|
|
@@ -188,7 +164,7 @@ const Bubble = class {
|
|
|
188
164
|
|
|
189
165
|
this.setAnchorLocation(anchorXY);
|
|
190
166
|
if (!bubbleWidth || !bubbleHeight) {
|
|
191
|
-
const bBox =
|
|
167
|
+
const bBox = (this.content_ as SVGGraphicsElement).getBBox();
|
|
192
168
|
bubbleWidth = bBox.width + 2 * Bubble.BORDER_WIDTH;
|
|
193
169
|
bubbleHeight = bBox.height + 2 * Bubble.BORDER_WIDTH;
|
|
194
170
|
}
|
|
@@ -202,32 +178,32 @@ const Bubble = class {
|
|
|
202
178
|
|
|
203
179
|
/**
|
|
204
180
|
* Create the bubble's DOM.
|
|
205
|
-
* @param
|
|
206
|
-
* @param
|
|
207
|
-
* @return
|
|
208
|
-
* @private
|
|
181
|
+
* @param content SVG content for the bubble.
|
|
182
|
+
* @param hasResize Add diagonal resize gripper if true.
|
|
183
|
+
* @return The bubble's SVG group.
|
|
209
184
|
*/
|
|
210
|
-
createDom_(content, hasResize) {
|
|
185
|
+
private createDom_(content: Element, hasResize: boolean): SVGElement {
|
|
211
186
|
/* Create the bubble. Here's the markup that will be generated:
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
187
|
+
<g>
|
|
188
|
+
<g filter="url(#blocklyEmbossFilter837493)">
|
|
189
|
+
<path d="... Z" />
|
|
190
|
+
<rect class="blocklyDraggable" rx="8" ry="8" width="180"
|
|
191
|
+
height="180"/>
|
|
192
|
+
</g>
|
|
193
|
+
<g transform="translate(165, 165)" class="blocklyResizeSE">
|
|
194
|
+
<polygon points="0,15 15,15 15,0"/>
|
|
195
|
+
<line class="blocklyResizeLine" x1="5" y1="14" x2="14" y2="5"/>
|
|
196
|
+
<line class="blocklyResizeLine" x1="10" y1="14" x2="14" y2="10"/>
|
|
197
|
+
</g>
|
|
198
|
+
[...content goes here...]
|
|
199
|
+
</g>
|
|
200
|
+
*/
|
|
201
|
+
this.bubbleGroup_ = dom.createSvgElement(Svg.G, {});
|
|
202
|
+
let filter: {filter?: string} = {
|
|
227
203
|
'filter': 'url(#' +
|
|
228
204
|
this.workspace_.getRenderer().getConstants().embossFilterId + ')',
|
|
229
205
|
};
|
|
230
|
-
if (userAgent.
|
|
206
|
+
if (userAgent.JavaFx) {
|
|
231
207
|
// Multiple reports that JavaFX can't handle filters.
|
|
232
208
|
// https://github.com/google/blockly/issues/99
|
|
233
209
|
filter = {};
|
|
@@ -291,28 +267,25 @@ const Bubble = class {
|
|
|
291
267
|
|
|
292
268
|
/**
|
|
293
269
|
* Return the root node of the bubble's SVG group.
|
|
294
|
-
* @return
|
|
270
|
+
* @return The root SVG node of the bubble's group.
|
|
295
271
|
*/
|
|
296
|
-
getSvgRoot() {
|
|
297
|
-
return
|
|
272
|
+
getSvgRoot(): SVGElement {
|
|
273
|
+
return this.bubbleGroup_ as SVGElement;
|
|
298
274
|
}
|
|
299
275
|
|
|
300
276
|
/**
|
|
301
277
|
* Expose the block's ID on the bubble's top-level SVG group.
|
|
302
|
-
* @param
|
|
278
|
+
* @param id ID of block.
|
|
303
279
|
*/
|
|
304
|
-
setSvgId(id) {
|
|
305
|
-
|
|
306
|
-
this.bubbleGroup_.dataset['blockId'] = id;
|
|
307
|
-
}
|
|
280
|
+
setSvgId(id: string) {
|
|
281
|
+
this.bubbleGroup_?.setAttribute('data-block-id', id);
|
|
308
282
|
}
|
|
309
283
|
|
|
310
284
|
/**
|
|
311
285
|
* Handle a mouse-down on bubble's border.
|
|
312
|
-
* @param
|
|
313
|
-
* @private
|
|
286
|
+
* @param e Mouse down event.
|
|
314
287
|
*/
|
|
315
|
-
bubbleMouseDown_(e) {
|
|
288
|
+
private bubbleMouseDown_(e: Event) {
|
|
316
289
|
const gesture = this.workspace_.getGesture(e);
|
|
317
290
|
if (gesture) {
|
|
318
291
|
gesture.handleBubbleStart(e, this);
|
|
@@ -321,38 +294,34 @@ const Bubble = class {
|
|
|
321
294
|
|
|
322
295
|
/**
|
|
323
296
|
* Show the context menu for this bubble.
|
|
324
|
-
* @param
|
|
325
|
-
* @
|
|
297
|
+
* @param _e Mouse event.
|
|
298
|
+
* @internal
|
|
326
299
|
*/
|
|
327
|
-
showContextMenu(_e) {
|
|
328
|
-
|
|
329
|
-
|
|
330
|
-
}
|
|
300
|
+
showContextMenu(_e: Event) {}
|
|
301
|
+
// NOP on bubbles, but used by the bubble dragger to pass events to
|
|
302
|
+
// workspace comments.
|
|
331
303
|
|
|
332
304
|
/**
|
|
333
305
|
* Get whether this bubble is deletable or not.
|
|
334
|
-
* @return
|
|
335
|
-
* @
|
|
306
|
+
* @return True if deletable.
|
|
307
|
+
* @internal
|
|
336
308
|
*/
|
|
337
|
-
isDeletable() {
|
|
309
|
+
isDeletable(): boolean {
|
|
338
310
|
return false;
|
|
339
311
|
}
|
|
340
312
|
|
|
341
313
|
/**
|
|
342
314
|
* Update the style of this bubble when it is dragged over a delete area.
|
|
343
|
-
* @param
|
|
344
|
-
* otherwise.
|
|
315
|
+
* @param _enable True if the bubble is about to be deleted, false otherwise.
|
|
345
316
|
*/
|
|
346
|
-
setDeleteStyle(_enable) {
|
|
347
|
-
|
|
348
|
-
}
|
|
317
|
+
setDeleteStyle(_enable: boolean) {}
|
|
318
|
+
// NOP if bubble is not deletable.
|
|
349
319
|
|
|
350
320
|
/**
|
|
351
321
|
* Handle a mouse-down on bubble's resize corner.
|
|
352
|
-
* @param
|
|
353
|
-
* @private
|
|
322
|
+
* @param e Mouse down event.
|
|
354
323
|
*/
|
|
355
|
-
resizeMouseDown_(e) {
|
|
324
|
+
private resizeMouseDown_(e: MouseEvent) {
|
|
356
325
|
this.promote();
|
|
357
326
|
Bubble.unbindDragEvents_();
|
|
358
327
|
if (browserEvents.isRightButton(e)) {
|
|
@@ -377,10 +346,9 @@ const Bubble = class {
|
|
|
377
346
|
|
|
378
347
|
/**
|
|
379
348
|
* Resize this bubble to follow the mouse.
|
|
380
|
-
* @param
|
|
381
|
-
* @private
|
|
349
|
+
* @param e Mouse move event.
|
|
382
350
|
*/
|
|
383
|
-
resizeMouseMove_(e) {
|
|
351
|
+
private resizeMouseMove_(e: MouseEvent) {
|
|
384
352
|
this.autoLayout_ = false;
|
|
385
353
|
const newXY = this.workspace_.moveDrag(e);
|
|
386
354
|
this.setBubbleSize(this.workspace_.RTL ? -newXY.x : newXY.x, newXY.y);
|
|
@@ -392,29 +360,29 @@ const Bubble = class {
|
|
|
392
360
|
|
|
393
361
|
/**
|
|
394
362
|
* Register a function as a callback event for when the bubble is resized.
|
|
395
|
-
* @param
|
|
363
|
+
* @param callback The function to call on resize.
|
|
396
364
|
*/
|
|
397
|
-
registerResizeEvent(callback) {
|
|
365
|
+
registerResizeEvent(callback: () => void) {
|
|
398
366
|
this.resizeCallback_ = callback;
|
|
399
367
|
}
|
|
400
368
|
|
|
401
369
|
/**
|
|
402
370
|
* Register a function as a callback event for when the bubble is moved.
|
|
403
|
-
* @param
|
|
371
|
+
* @param callback The function to call on move.
|
|
404
372
|
*/
|
|
405
|
-
registerMoveEvent(callback) {
|
|
373
|
+
registerMoveEvent(callback: () => void) {
|
|
406
374
|
this.moveCallback_ = callback;
|
|
407
375
|
}
|
|
408
376
|
|
|
409
377
|
/**
|
|
410
378
|
* Move this bubble to the top of the stack.
|
|
411
|
-
* @return
|
|
412
|
-
* @
|
|
379
|
+
* @return Whether or not the bubble has been moved.
|
|
380
|
+
* @internal
|
|
413
381
|
*/
|
|
414
|
-
promote() {
|
|
415
|
-
const svgGroup = this.bubbleGroup_
|
|
416
|
-
if (svgGroup
|
|
417
|
-
svgGroup
|
|
382
|
+
promote(): boolean {
|
|
383
|
+
const svgGroup = this.bubbleGroup_?.parentNode;
|
|
384
|
+
if (svgGroup?.lastChild !== this.bubbleGroup_ && this.bubbleGroup_) {
|
|
385
|
+
svgGroup?.appendChild(this.bubbleGroup_);
|
|
418
386
|
return true;
|
|
419
387
|
}
|
|
420
388
|
return false;
|
|
@@ -423,32 +391,30 @@ const Bubble = class {
|
|
|
423
391
|
/**
|
|
424
392
|
* Notification that the anchor has moved.
|
|
425
393
|
* Update the arrow and bubble accordingly.
|
|
426
|
-
* @param
|
|
394
|
+
* @param xy Absolute location.
|
|
427
395
|
*/
|
|
428
|
-
setAnchorLocation(xy) {
|
|
396
|
+
setAnchorLocation(xy: Coordinate) {
|
|
429
397
|
this.anchorXY_ = xy;
|
|
430
398
|
if (this.rendered_) {
|
|
431
399
|
this.positionBubble_();
|
|
432
400
|
}
|
|
433
401
|
}
|
|
434
402
|
|
|
435
|
-
/**
|
|
436
|
-
|
|
437
|
-
* @private
|
|
438
|
-
*/
|
|
439
|
-
layoutBubble_() {
|
|
403
|
+
/** Position the bubble so that it does not fall off-screen. */
|
|
404
|
+
private layoutBubble_() {
|
|
440
405
|
// Get the metrics in workspace units.
|
|
441
406
|
const viewMetrics =
|
|
442
407
|
this.workspace_.getMetricsManager().getViewMetrics(true);
|
|
443
408
|
|
|
444
409
|
const optimalLeft = this.getOptimalRelativeLeft_(viewMetrics);
|
|
445
410
|
const optimalTop = this.getOptimalRelativeTop_(viewMetrics);
|
|
446
|
-
const bbox = this.shape_.getBBox();
|
|
411
|
+
const bbox = (this.shape_ as SVGGraphicsElement).getBBox();
|
|
447
412
|
|
|
448
413
|
const topPosition = {
|
|
449
414
|
x: optimalLeft,
|
|
450
415
|
y: -this.height_ -
|
|
451
|
-
|
|
416
|
+
this.workspace_.getRenderer().getConstants().MIN_BLOCK_HEIGHT as
|
|
417
|
+
number,
|
|
452
418
|
};
|
|
453
419
|
const startPosition = {x: -this.width_ - 30, y: optimalTop};
|
|
454
420
|
const endPosition = {x: bbox.width, y: optimalTop};
|
|
@@ -495,19 +461,19 @@ const Bubble = class {
|
|
|
495
461
|
/**
|
|
496
462
|
* Calculate the what percentage of the bubble overlaps with the visible
|
|
497
463
|
* workspace (what percentage of the bubble is visible).
|
|
498
|
-
* @param
|
|
499
|
-
*
|
|
500
|
-
* @param
|
|
501
|
-
*
|
|
502
|
-
* @return
|
|
503
|
-
|
|
504
|
-
|
|
505
|
-
|
|
464
|
+
* @param relativeMin The position of the top-left corner of the bubble
|
|
465
|
+
* relative to the anchor point.
|
|
466
|
+
* @param viewMetrics The view metrics of the workspace the bubble will appear
|
|
467
|
+
* in.
|
|
468
|
+
* @return The percentage of the bubble that is visible.
|
|
469
|
+
*/
|
|
470
|
+
private getOverlap_(
|
|
471
|
+
relativeMin: {x: number, y: number},
|
|
472
|
+
viewMetrics: ContainerRegion): number {
|
|
506
473
|
// The position of the top-left corner of the bubble in workspace units.
|
|
507
474
|
const bubbleMin = {
|
|
508
|
-
x: this.workspace_.RTL ?
|
|
509
|
-
|
|
510
|
-
(relativeMin.x + this.anchorXY_.x),
|
|
475
|
+
x: this.workspace_.RTL ? this.anchorXY_.x - relativeMin.x - this.width_ :
|
|
476
|
+
relativeMin.x + this.anchorXY_.x,
|
|
511
477
|
y: relativeMin.y + this.anchorXY_.y,
|
|
512
478
|
};
|
|
513
479
|
// The position of the bottom-right corner of the bubble in workspace units.
|
|
@@ -536,20 +502,19 @@ const Bubble = class {
|
|
|
536
502
|
return Math.max(
|
|
537
503
|
0,
|
|
538
504
|
Math.min(
|
|
539
|
-
1,
|
|
505
|
+
1, overlapWidth * overlapHeight / (this.width_ * this.height_)));
|
|
540
506
|
}
|
|
541
507
|
|
|
542
508
|
/**
|
|
543
509
|
* Calculate what the optimal horizontal position of the top-left corner of
|
|
544
510
|
* the bubble is (relative to the anchor point) so that the most area of the
|
|
545
511
|
* bubble is shown.
|
|
546
|
-
* @param
|
|
547
|
-
*
|
|
548
|
-
* @return
|
|
549
|
-
*
|
|
550
|
-
* @private
|
|
512
|
+
* @param viewMetrics The view metrics of the workspace the bubble will appear
|
|
513
|
+
* in.
|
|
514
|
+
* @return The optimal horizontal position of the top-left corner of the
|
|
515
|
+
* bubble.
|
|
551
516
|
*/
|
|
552
|
-
getOptimalRelativeLeft_(viewMetrics) {
|
|
517
|
+
private getOptimalRelativeLeft_(viewMetrics: ContainerRegion): number {
|
|
553
518
|
let relativeLeft = -this.width_ / 4;
|
|
554
519
|
|
|
555
520
|
// No amount of sliding left or right will give us a better overlap.
|
|
@@ -565,7 +530,7 @@ const Bubble = class {
|
|
|
565
530
|
const workspaceRight = viewMetrics.left + viewMetrics.width;
|
|
566
531
|
const workspaceLeft = viewMetrics.left +
|
|
567
532
|
// Thickness in workspace units.
|
|
568
|
-
|
|
533
|
+
Scrollbar.scrollbarThickness / this.workspace_.scale;
|
|
569
534
|
|
|
570
535
|
if (bubbleLeft < workspaceLeft) {
|
|
571
536
|
// Slide the bubble right until it is onscreen.
|
|
@@ -581,7 +546,7 @@ const Bubble = class {
|
|
|
581
546
|
const workspaceLeft = viewMetrics.left;
|
|
582
547
|
const workspaceRight = viewMetrics.left + viewMetrics.width -
|
|
583
548
|
// Thickness in workspace units.
|
|
584
|
-
|
|
549
|
+
Scrollbar.scrollbarThickness / this.workspace_.scale;
|
|
585
550
|
|
|
586
551
|
if (bubbleLeft < workspaceLeft) {
|
|
587
552
|
// Slide the bubble right until it is onscreen.
|
|
@@ -599,13 +564,11 @@ const Bubble = class {
|
|
|
599
564
|
* Calculate what the optimal vertical position of the top-left corner of
|
|
600
565
|
* the bubble is (relative to the anchor point) so that the most area of the
|
|
601
566
|
* bubble is shown.
|
|
602
|
-
* @param
|
|
603
|
-
*
|
|
604
|
-
* @return
|
|
605
|
-
* of the bubble.
|
|
606
|
-
* @private
|
|
567
|
+
* @param viewMetrics The view metrics of the workspace the bubble will appear
|
|
568
|
+
* in.
|
|
569
|
+
* @return The optimal vertical position of the top-left corner of the bubble.
|
|
607
570
|
*/
|
|
608
|
-
getOptimalRelativeTop_(viewMetrics) {
|
|
571
|
+
private getOptimalRelativeTop_(viewMetrics: ContainerRegion): number {
|
|
609
572
|
let relativeTop = -this.height_ / 4;
|
|
610
573
|
|
|
611
574
|
// No amount of sliding up or down will give us a better overlap.
|
|
@@ -616,9 +579,9 @@ const Bubble = class {
|
|
|
616
579
|
const bubbleTop = this.anchorXY_.y + relativeTop;
|
|
617
580
|
const bubbleBottom = bubbleTop + this.height_;
|
|
618
581
|
const workspaceTop = viewMetrics.top;
|
|
619
|
-
const workspaceBottom = viewMetrics.top +
|
|
620
|
-
// Thickness in workspace units.
|
|
621
|
-
|
|
582
|
+
const workspaceBottom = viewMetrics.top +
|
|
583
|
+
viewMetrics.height - // Thickness in workspace units.
|
|
584
|
+
Scrollbar.scrollbarThickness / this.workspace_.scale;
|
|
622
585
|
|
|
623
586
|
const anchorY = this.anchorXY_.y;
|
|
624
587
|
if (bubbleTop < workspaceTop) {
|
|
@@ -632,11 +595,8 @@ const Bubble = class {
|
|
|
632
595
|
return relativeTop;
|
|
633
596
|
}
|
|
634
597
|
|
|
635
|
-
/**
|
|
636
|
-
|
|
637
|
-
* @private
|
|
638
|
-
*/
|
|
639
|
-
positionBubble_() {
|
|
598
|
+
/** Move the bubble to a location relative to the anchor's centre. */
|
|
599
|
+
private positionBubble_() {
|
|
640
600
|
let left = this.anchorXY_.x;
|
|
641
601
|
if (this.workspace_.RTL) {
|
|
642
602
|
left -= this.relativeLeft_ + this.width_;
|
|
@@ -649,21 +609,21 @@ const Bubble = class {
|
|
|
649
609
|
|
|
650
610
|
/**
|
|
651
611
|
* Move the bubble group to the specified location in workspace coordinates.
|
|
652
|
-
* @param
|
|
653
|
-
* @param
|
|
654
|
-
* @
|
|
612
|
+
* @param x The x position to move to.
|
|
613
|
+
* @param y The y position to move to.
|
|
614
|
+
* @internal
|
|
655
615
|
*/
|
|
656
|
-
moveTo(x, y) {
|
|
657
|
-
this.bubbleGroup_
|
|
616
|
+
moveTo(x: number, y: number) {
|
|
617
|
+
this.bubbleGroup_?.setAttribute(
|
|
658
618
|
'transform', 'translate(' + x + ',' + y + ')');
|
|
659
619
|
}
|
|
660
620
|
|
|
661
621
|
/**
|
|
662
622
|
* Triggers a move callback if one exists at the end of a drag.
|
|
663
|
-
* @param
|
|
664
|
-
* @
|
|
623
|
+
* @param adding True if adding, false if removing.
|
|
624
|
+
* @internal
|
|
665
625
|
*/
|
|
666
|
-
setDragging(adding) {
|
|
626
|
+
setDragging(adding: boolean) {
|
|
667
627
|
if (!adding && this.moveCallback_) {
|
|
668
628
|
this.moveCallback_();
|
|
669
629
|
}
|
|
@@ -671,26 +631,26 @@ const Bubble = class {
|
|
|
671
631
|
|
|
672
632
|
/**
|
|
673
633
|
* Get the dimensions of this bubble.
|
|
674
|
-
* @return
|
|
634
|
+
* @return The height and width of the bubble.
|
|
675
635
|
*/
|
|
676
|
-
getBubbleSize() {
|
|
636
|
+
getBubbleSize(): Size {
|
|
677
637
|
return new Size(this.width_, this.height_);
|
|
678
638
|
}
|
|
679
639
|
|
|
680
640
|
/**
|
|
681
641
|
* Size this bubble.
|
|
682
|
-
* @param
|
|
683
|
-
* @param
|
|
642
|
+
* @param width Width of the bubble.
|
|
643
|
+
* @param height Height of the bubble.
|
|
684
644
|
*/
|
|
685
|
-
setBubbleSize(width, height) {
|
|
645
|
+
setBubbleSize(width: number, height: number) {
|
|
686
646
|
const doubleBorderWidth = 2 * Bubble.BORDER_WIDTH;
|
|
687
647
|
// Minimum size of a bubble.
|
|
688
648
|
width = Math.max(width, doubleBorderWidth + 45);
|
|
689
649
|
height = Math.max(height, doubleBorderWidth + 20);
|
|
690
650
|
this.width_ = width;
|
|
691
651
|
this.height_ = height;
|
|
692
|
-
this.bubbleBack_
|
|
693
|
-
this.bubbleBack_
|
|
652
|
+
this.bubbleBack_?.setAttribute('width', width.toString());
|
|
653
|
+
this.bubbleBack_?.setAttribute('height', height.toString());
|
|
694
654
|
if (this.resizeGroup_) {
|
|
695
655
|
if (this.workspace_.RTL) {
|
|
696
656
|
// Mirror the resize group.
|
|
@@ -718,11 +678,8 @@ const Bubble = class {
|
|
|
718
678
|
}
|
|
719
679
|
}
|
|
720
680
|
|
|
721
|
-
/**
|
|
722
|
-
|
|
723
|
-
* @private
|
|
724
|
-
*/
|
|
725
|
-
renderArrow_() {
|
|
681
|
+
/** Draw the arrow between the bubble and the origin. */
|
|
682
|
+
private renderArrow_() {
|
|
726
683
|
const steps = [];
|
|
727
684
|
// Find the relative coordinates of the center of the bubble.
|
|
728
685
|
const relBubbleX = this.width_ / 2;
|
|
@@ -788,21 +745,19 @@ const Bubble = class {
|
|
|
788
745
|
',' + (baseY2 + swirlRise) + ' ' + baseX2 + ',' + baseY2);
|
|
789
746
|
}
|
|
790
747
|
steps.push('z');
|
|
791
|
-
this.bubbleArrow_
|
|
748
|
+
this.bubbleArrow_?.setAttribute('d', steps.join(' '));
|
|
792
749
|
}
|
|
793
750
|
|
|
794
751
|
/**
|
|
795
752
|
* Change the colour of a bubble.
|
|
796
|
-
* @param
|
|
753
|
+
* @param hexColour Hex code of colour.
|
|
797
754
|
*/
|
|
798
|
-
setColour(hexColour) {
|
|
799
|
-
this.bubbleBack_
|
|
800
|
-
this.bubbleArrow_
|
|
755
|
+
setColour(hexColour: string) {
|
|
756
|
+
this.bubbleBack_?.setAttribute('fill', hexColour);
|
|
757
|
+
this.bubbleArrow_?.setAttribute('fill', hexColour);
|
|
801
758
|
}
|
|
802
759
|
|
|
803
|
-
/**
|
|
804
|
-
* Dispose of this bubble.
|
|
805
|
-
*/
|
|
760
|
+
/** Dispose of this bubble. */
|
|
806
761
|
dispose() {
|
|
807
762
|
if (this.onMouseDownBubbleWrapper_) {
|
|
808
763
|
browserEvents.unbind(this.onMouseDownBubbleWrapper_);
|
|
@@ -818,13 +773,12 @@ const Bubble = class {
|
|
|
818
773
|
/**
|
|
819
774
|
* Move this bubble during a drag, taking into account whether or not there is
|
|
820
775
|
* a drag surface.
|
|
821
|
-
* @param
|
|
822
|
-
*
|
|
823
|
-
* @param
|
|
824
|
-
*
|
|
825
|
-
* @package
|
|
776
|
+
* @param dragSurface The surface that carries rendered items during a drag,
|
|
777
|
+
* or null if no drag surface is in use.
|
|
778
|
+
* @param newLoc The location to translate to, in workspace coordinates.
|
|
779
|
+
* @internal
|
|
826
780
|
*/
|
|
827
|
-
moveDuringDrag(dragSurface, newLoc) {
|
|
781
|
+
moveDuringDrag(dragSurface: BlockDragSurfaceSvg, newLoc: Coordinate) {
|
|
828
782
|
if (dragSurface) {
|
|
829
783
|
dragSurface.translateSurface(newLoc.x, newLoc.y);
|
|
830
784
|
} else {
|
|
@@ -842,9 +796,9 @@ const Bubble = class {
|
|
|
842
796
|
/**
|
|
843
797
|
* Return the coordinates of the top-left corner of this bubble's body
|
|
844
798
|
* relative to the drawing surface's origin (0,0), in workspace units.
|
|
845
|
-
* @return
|
|
799
|
+
* @return Object with .x and .y properties.
|
|
846
800
|
*/
|
|
847
|
-
getRelativeToSurfaceXY() {
|
|
801
|
+
getRelativeToSurfaceXY(): Coordinate {
|
|
848
802
|
return new Coordinate(
|
|
849
803
|
this.workspace_.RTL ?
|
|
850
804
|
-this.relativeLeft_ + this.anchorXY_.x - this.width_ :
|
|
@@ -856,19 +810,15 @@ const Bubble = class {
|
|
|
856
810
|
* Set whether auto-layout of this bubble is enabled. The first time a bubble
|
|
857
811
|
* is shown it positions itself to not cover any blocks. Once a user has
|
|
858
812
|
* dragged it to reposition, it renders where the user put it.
|
|
859
|
-
* @param
|
|
860
|
-
*
|
|
861
|
-
* @package
|
|
813
|
+
* @param enable True if auto-layout should be enabled, false otherwise.
|
|
814
|
+
* @internal
|
|
862
815
|
*/
|
|
863
|
-
setAutoLayout(enable) {
|
|
816
|
+
setAutoLayout(enable: boolean) {
|
|
864
817
|
this.autoLayout_ = enable;
|
|
865
818
|
}
|
|
866
819
|
|
|
867
|
-
/**
|
|
868
|
-
|
|
869
|
-
* @private
|
|
870
|
-
*/
|
|
871
|
-
static unbindDragEvents_() {
|
|
820
|
+
/** Stop binding to the global mouseup and mousemove events. */
|
|
821
|
+
private static unbindDragEvents_() {
|
|
872
822
|
if (Bubble.onMouseUpWrapper_) {
|
|
873
823
|
browserEvents.unbind(Bubble.onMouseUpWrapper_);
|
|
874
824
|
Bubble.onMouseUpWrapper_ = null;
|
|
@@ -881,27 +831,24 @@ const Bubble = class {
|
|
|
881
831
|
|
|
882
832
|
/**
|
|
883
833
|
* Handle a mouse-up event while dragging a bubble's border or resize handle.
|
|
884
|
-
* @param
|
|
885
|
-
* @private
|
|
834
|
+
* @param _e Mouse up event.
|
|
886
835
|
*/
|
|
887
|
-
static bubbleMouseUp_(_e) {
|
|
836
|
+
private static bubbleMouseUp_(_e: MouseEvent) {
|
|
888
837
|
Touch.clearTouchIdentifier();
|
|
889
838
|
Bubble.unbindDragEvents_();
|
|
890
839
|
}
|
|
891
840
|
|
|
892
841
|
/**
|
|
893
842
|
* Create the text for a non editable bubble.
|
|
894
|
-
* @param
|
|
895
|
-
* @return
|
|
896
|
-
* @
|
|
897
|
-
*/
|
|
898
|
-
static textToDom(text) {
|
|
899
|
-
const paragraph = dom.createSvgElement(
|
|
900
|
-
|
|
901
|
-
|
|
902
|
-
|
|
903
|
-
},
|
|
904
|
-
null);
|
|
843
|
+
* @param text The text to display.
|
|
844
|
+
* @return The top-level node of the text.
|
|
845
|
+
* @internal
|
|
846
|
+
*/
|
|
847
|
+
static textToDom(text: string): SVGTextElement {
|
|
848
|
+
const paragraph = dom.createSvgElement(Svg.TEXT, {
|
|
849
|
+
'class': 'blocklyText blocklyBubbleText blocklyNoPointerEvents',
|
|
850
|
+
'y': Bubble.BORDER_WIDTH,
|
|
851
|
+
});
|
|
905
852
|
const lines = text.split('\n');
|
|
906
853
|
for (let i = 0; i < lines.length; i++) {
|
|
907
854
|
const tspanElement = dom.createSvgElement(
|
|
@@ -914,18 +861,18 @@ const Bubble = class {
|
|
|
914
861
|
|
|
915
862
|
/**
|
|
916
863
|
* Creates a bubble that can not be edited.
|
|
917
|
-
* @param
|
|
918
|
-
*
|
|
919
|
-
* @param
|
|
920
|
-
* @
|
|
921
|
-
* @
|
|
922
|
-
|
|
923
|
-
|
|
924
|
-
|
|
864
|
+
* @param paragraphElement The text element for the non editable bubble.
|
|
865
|
+
* @param block The block that the bubble is attached to.
|
|
866
|
+
* @param iconXY The coordinate of the icon.
|
|
867
|
+
* @return The non editable bubble.
|
|
868
|
+
* @internal
|
|
869
|
+
*/
|
|
870
|
+
static createNonEditableBubble(
|
|
871
|
+
paragraphElement: SVGTextElement, block: BlockSvg,
|
|
872
|
+
iconXY: Coordinate): Bubble {
|
|
925
873
|
const bubble = new Bubble(
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
/** @type {!Coordinate} */ (iconXY), null, null);
|
|
874
|
+
block.workspace!, paragraphElement, block.pathObject.svgPath, (iconXY),
|
|
875
|
+
null, null);
|
|
929
876
|
// Expose this bubble's block's ID on its top-level SVG group.
|
|
930
877
|
bubble.setSvgId(block.id);
|
|
931
878
|
if (block.RTL) {
|
|
@@ -933,53 +880,13 @@ const Bubble = class {
|
|
|
933
880
|
// This cannot be done until the bubble is rendered on screen.
|
|
934
881
|
const maxWidth = paragraphElement.getBBox().width;
|
|
935
882
|
for (let i = 0, textElement;
|
|
936
|
-
|
|
883
|
+
textElement = paragraphElement.childNodes[i] as SVGTSpanElement;
|
|
884
|
+
i++) {
|
|
937
885
|
textElement.setAttribute('text-anchor', 'end');
|
|
938
|
-
textElement.setAttribute(
|
|
886
|
+
textElement.setAttribute(
|
|
887
|
+
'x', (maxWidth + Bubble.BORDER_WIDTH).toString());
|
|
939
888
|
}
|
|
940
889
|
}
|
|
941
890
|
return bubble;
|
|
942
891
|
}
|
|
943
|
-
}
|
|
944
|
-
|
|
945
|
-
/**
|
|
946
|
-
* Width of the border around the bubble.
|
|
947
|
-
*/
|
|
948
|
-
Bubble.BORDER_WIDTH = 6;
|
|
949
|
-
|
|
950
|
-
/**
|
|
951
|
-
* Determines the thickness of the base of the arrow in relation to the size
|
|
952
|
-
* of the bubble. Higher numbers result in thinner arrows.
|
|
953
|
-
*/
|
|
954
|
-
Bubble.ARROW_THICKNESS = 5;
|
|
955
|
-
|
|
956
|
-
/**
|
|
957
|
-
* The number of degrees that the arrow bends counter-clockwise.
|
|
958
|
-
*/
|
|
959
|
-
Bubble.ARROW_ANGLE = 20;
|
|
960
|
-
|
|
961
|
-
/**
|
|
962
|
-
* The sharpness of the arrow's bend. Higher numbers result in smoother arrows.
|
|
963
|
-
*/
|
|
964
|
-
Bubble.ARROW_BEND = 4;
|
|
965
|
-
|
|
966
|
-
/**
|
|
967
|
-
* Distance between arrow point and anchor point.
|
|
968
|
-
*/
|
|
969
|
-
Bubble.ANCHOR_RADIUS = 8;
|
|
970
|
-
|
|
971
|
-
/**
|
|
972
|
-
* Mouse up event data.
|
|
973
|
-
* @type {?browserEvents.Data}
|
|
974
|
-
* @private
|
|
975
|
-
*/
|
|
976
|
-
Bubble.onMouseUpWrapper_ = null;
|
|
977
|
-
|
|
978
|
-
/**
|
|
979
|
-
* Mouse move event data.
|
|
980
|
-
* @type {?browserEvents.Data}
|
|
981
|
-
* @private
|
|
982
|
-
*/
|
|
983
|
-
Bubble.onMouseMoveWrapper_ = null;
|
|
984
|
-
|
|
985
|
-
exports.Bubble = Bubble;
|
|
892
|
+
}
|