blockly 8.0.4-beta.0 → 8.0.5-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/blockly.min.js +2421 -2688
- package/blockly_compressed.js +1499 -1994
- package/blockly_compressed.js.map +1 -1
- package/blocks/blocks.js +3 -2
- package/blocks/colour.js +3 -1
- package/blocks/lists.js +94 -22
- package/blocks/logic.js +14 -6
- package/blocks/loops.js +5 -3
- package/blocks/math.js +3 -1
- package/blocks/procedures.js +3 -1
- package/blocks/text.js +14 -6
- package/blocks/variables.js +3 -1
- package/blocks/variables_dynamic.js +3 -1
- package/blocks.d.ts +0 -2
- package/blocks_compressed.js +189 -171
- package/blocks_compressed.js.map +1 -1
- package/closure/goog/base.d.ts +1 -0
- package/closure/goog/base_minimal.d.ts +18 -0
- package/closure/goog/goog.d.ts +25 -0
- package/core/any_aliases.d.ts +1 -0
- package/core/any_aliases.ts +1 -0
- package/core/block.d.ts +779 -0
- package/core/{block.js → block.ts} +610 -719
- package/core/block_animations.d.ts +33 -0
- package/core/{block_animations.js → block_animations.ts} +75 -79
- package/core/block_drag_surface.d.ts +111 -0
- package/core/{block_drag_surface.js → block_drag_surface.ts} +85 -117
- package/core/block_dragger.d.ts +143 -0
- package/core/{block_dragger.js → block_dragger.ts} +139 -176
- package/core/block_svg.d.ts +588 -0
- package/core/{block_svg.js → block_svg.ts} +494 -630
- package/core/blockly.d.ts +562 -0
- package/core/blockly.js +1 -1
- package/core/blockly.ts +749 -0
- package/core/blockly_options.d.ts +69 -0
- package/core/blockly_options.ts +81 -0
- package/core/blocks.d.ts +17 -0
- package/core/{blocks.js → blocks.ts} +4 -8
- package/core/browser_events.d.ts +85 -0
- package/core/{browser_events.js → browser_events.ts} +98 -93
- package/core/bubble.d.ts +279 -0
- package/core/{bubble.js → bubble.ts} +277 -370
- package/core/bubble_dragger.d.ts +73 -0
- package/core/bubble_dragger.ts +229 -0
- package/core/bump_objects.d.ts +34 -0
- package/core/{bump_objects.js → bump_objects.ts} +54 -52
- package/core/clipboard.d.ts +42 -0
- package/core/clipboard.ts +91 -0
- package/core/comment.d.ts +113 -0
- package/core/{comment.js → comment.ts} +135 -185
- package/core/common.d.ts +129 -0
- package/core/{common.js → common.ts} +105 -82
- package/core/component_manager.d.ts +91 -0
- package/core/component_manager.ts +211 -0
- package/core/config.d.ts +23 -0
- package/core/{config.js → config.ts} +12 -19
- package/core/connection.d.ts +232 -0
- package/core/{connection.js → connection.ts} +187 -237
- package/core/connection_checker.d.ts +78 -0
- package/core/{connection_checker.js → connection_checker.ts} +66 -77
- package/core/connection_db.d.ts +91 -0
- package/core/{connection_db.js → connection_db.ts} +62 -87
- package/core/connection_type.d.ts +15 -0
- package/core/{connection_type.js → connection_type.ts} +8 -12
- package/core/constants.d.ts +15 -0
- package/core/{constants.js → constants.ts} +4 -8
- package/core/contextmenu.d.ts +80 -0
- package/core/{contextmenu.js → contextmenu.ts} +118 -153
- package/core/contextmenu_items.d.ts +77 -0
- package/core/contextmenu_items.ts +576 -0
- package/core/contextmenu_registry.d.ts +105 -0
- package/core/contextmenu_registry.ts +179 -0
- package/core/css.d.ts +24 -0
- package/core/{css.js → css.ts} +16 -24
- package/core/delete_area.d.ts +47 -0
- package/core/delete_area.ts +82 -0
- package/core/dialog.d.ts +61 -0
- package/core/dialog.ts +127 -0
- package/core/drag_target.d.ts +63 -0
- package/core/drag_target.ts +94 -0
- package/core/dropdowndiv.d.ts +155 -0
- package/core/{dropdowndiv.js → dropdowndiv.ts} +262 -333
- package/core/events/events.d.ts +102 -0
- package/core/events/events.ts +123 -0
- package/core/events/events_abstract.d.ts +51 -0
- package/core/events/events_abstract.ts +112 -0
- package/core/events/events_block_base.d.ts +31 -0
- package/core/events/events_block_base.ts +65 -0
- package/core/events/events_block_change.d.ts +55 -0
- package/core/events/{events_block_change.js → events_block_change.ts} +45 -48
- package/core/events/events_block_create.d.ts +35 -0
- package/core/events/{events_block_create.js → events_block_create.ts} +30 -35
- package/core/events/events_block_delete.d.ts +36 -0
- package/core/events/{events_block_delete.js → events_block_delete.ts} +34 -39
- package/core/events/events_block_drag.d.ts +36 -0
- package/core/events/events_block_drag.ts +82 -0
- package/core/events/events_block_move.d.ts +51 -0
- package/core/events/{events_block_move.js → events_block_move.ts} +54 -50
- package/core/events/events_bubble_open.d.ts +35 -0
- package/core/events/events_bubble_open.ts +82 -0
- package/core/events/events_click.d.ts +36 -0
- package/core/events/{events_click.js → events_click.ts} +27 -30
- package/core/events/events_comment_base.d.ts +39 -0
- package/core/events/events_comment_base.ts +107 -0
- package/core/events/events_comment_change.d.ts +43 -0
- package/core/events/{events_comment_change.js → events_comment_change.ts} +31 -28
- package/core/events/events_comment_create.d.ts +35 -0
- package/core/events/{events_comment_create.js → events_comment_create.ts} +24 -26
- package/core/events/events_comment_delete.d.ts +35 -0
- package/core/events/{events_comment_delete.js → events_comment_delete.ts} +20 -24
- package/core/events/events_comment_move.d.ts +55 -0
- package/core/events/{events_comment_move.js → events_comment_move.ts} +39 -42
- package/core/events/events_marker_move.d.ts +40 -0
- package/core/events/events_marker_move.ts +99 -0
- package/core/events/events_selected.d.ts +34 -0
- package/core/events/events_selected.ts +78 -0
- package/core/events/events_theme_change.d.ts +30 -0
- package/core/events/{events_theme_change.js → events_theme_change.ts} +19 -24
- package/core/events/events_toolbox_item_select.d.ts +34 -0
- package/core/events/events_toolbox_item_select.ts +79 -0
- package/core/events/events_trashcan_open.d.ts +31 -0
- package/core/events/events_trashcan_open.ts +68 -0
- package/core/events/events_ui.d.ts +37 -0
- package/core/events/{events_ui.js → events_ui.ts} +27 -26
- package/core/events/events_ui_base.d.ts +26 -0
- package/core/events/{events_ui_base.js → events_ui_base.ts} +17 -26
- package/core/events/events_var_base.d.ts +31 -0
- package/core/events/events_var_base.ts +65 -0
- package/core/events/events_var_create.d.ts +35 -0
- package/core/events/{events_var_create.js → events_var_create.ts} +24 -25
- package/core/events/events_var_delete.d.ts +35 -0
- package/core/events/{events_var_delete.js → events_var_delete.ts} +24 -25
- package/core/events/events_var_rename.d.ts +36 -0
- package/core/events/{events_var_rename.js → events_var_rename.ts} +25 -26
- package/core/events/events_viewport.d.ts +39 -0
- package/core/events/events_viewport.ts +100 -0
- package/core/events/utils.d.ts +272 -0
- package/core/events/{utils.js → utils.ts} +148 -219
- package/core/events/workspace_events.d.ts +36 -0
- package/core/events/workspace_events.ts +86 -0
- package/core/extensions.d.ts +107 -0
- package/core/{extensions.js → extensions.ts} +153 -172
- package/core/field.d.ts +534 -0
- package/core/{field.js → field.ts} +413 -489
- package/core/field_angle.d.ts +176 -0
- package/core/field_angle.ts +563 -0
- package/core/field_checkbox.d.ts +124 -0
- package/core/field_checkbox.ts +243 -0
- package/core/field_colour.d.ts +200 -0
- package/core/field_colour.ts +632 -0
- package/core/field_dropdown.d.ts +222 -0
- package/core/{field_dropdown.js → field_dropdown.ts} +277 -299
- package/core/field_image.d.ts +134 -0
- package/core/field_image.ts +282 -0
- package/core/field_label.d.ts +71 -0
- package/core/field_label.ts +152 -0
- package/core/field_label_serializable.d.ts +42 -0
- package/core/field_label_serializable.ts +76 -0
- package/core/field_multilineinput.d.ts +146 -0
- package/core/{field_multilineinput.js → field_multilineinput.ts} +166 -163
- package/core/field_number.d.ts +156 -0
- package/core/{field_number.js → field_number.ts} +110 -123
- package/core/field_registry.d.ts +45 -0
- package/core/{field_registry.js → field_registry.ts} +37 -30
- package/core/field_textinput.d.ts +219 -0
- package/core/field_textinput.ts +591 -0
- package/core/field_variable.d.ts +217 -0
- package/core/{field_variable.js → field_variable.ts} +174 -187
- package/core/flyout_base.d.ts +459 -0
- package/core/{flyout_base.js → flyout_base.ts} +429 -518
- package/core/flyout_button.d.ts +81 -0
- package/core/flyout_button.ts +292 -0
- package/core/flyout_horizontal.d.ts +82 -0
- package/core/{flyout_horizontal.js → flyout_horizontal.ts} +97 -107
- package/core/flyout_metrics_manager.d.ts +40 -0
- package/core/{flyout_metrics_manager.js → flyout_metrics_manager.ts} +22 -34
- package/core/flyout_vertical.d.ts +83 -0
- package/core/{flyout_vertical.js → flyout_vertical.ts} +106 -117
- package/core/generator.d.ts +205 -0
- package/core/{generator.js → generator.ts} +168 -193
- package/core/gesture.d.ts +357 -0
- package/core/{gesture.js → gesture.ts} +289 -369
- package/core/grid.d.ts +83 -0
- package/core/grid.ts +192 -0
- package/core/icon.d.ts +78 -0
- package/core/icon.ts +189 -0
- package/core/inject.d.ts +15 -0
- package/core/{inject.js → inject.ts} +101 -100
- package/core/input.d.ts +128 -0
- package/core/input.ts +309 -0
- package/core/input_types.d.ts +14 -0
- package/core/{input_types.js → input_types.ts} +8 -12
- package/core/insertion_marker_manager.d.ts +212 -0
- package/core/{insertion_marker_manager.js → insertion_marker_manager.ts} +234 -236
- package/core/interfaces/i_ast_node_location.d.ts +11 -0
- package/core/interfaces/{i_ast_node_location.js → i_ast_node_location.ts} +4 -7
- package/core/interfaces/i_ast_node_location_svg.d.ts +22 -0
- package/core/interfaces/i_ast_node_location_svg.ts +37 -0
- package/core/interfaces/i_ast_node_location_with_block.d.ts +18 -0
- package/core/interfaces/i_ast_node_location_with_block.ts +38 -0
- package/core/interfaces/i_autohideable.d.ts +18 -0
- package/core/interfaces/i_autohideable.ts +34 -0
- package/core/interfaces/i_block_dragger.d.ts +43 -0
- package/core/interfaces/i_block_dragger.ts +67 -0
- package/core/interfaces/i_bounded_element.d.ts +24 -0
- package/core/interfaces/i_bounded_element.ts +42 -0
- package/core/interfaces/i_bubble.d.ts +59 -0
- package/core/interfaces/i_bubble.ts +88 -0
- package/core/interfaces/i_collapsible_toolbox_item.d.ts +26 -0
- package/core/interfaces/i_collapsible_toolbox_item.ts +47 -0
- package/core/interfaces/i_component.d.ts +17 -0
- package/core/interfaces/{i_component.js → i_component.ts} +9 -14
- package/core/interfaces/i_connection_checker.d.ts +69 -0
- package/core/interfaces/i_connection_checker.ts +102 -0
- package/core/interfaces/i_contextmenu.d.ts +13 -0
- package/core/interfaces/i_contextmenu.ts +26 -0
- package/core/interfaces/i_copyable.d.ts +24 -0
- package/core/interfaces/i_copyable.ts +40 -0
- package/core/interfaces/i_deletable.d.ts +16 -0
- package/core/interfaces/{i_deletable.js → i_deletable.ts} +9 -13
- package/core/interfaces/i_delete_area.d.ts +25 -0
- package/core/interfaces/i_delete_area.ts +46 -0
- package/core/interfaces/i_drag_target.d.ts +53 -0
- package/core/interfaces/i_drag_target.ts +84 -0
- package/core/interfaces/i_draggable.d.ts +12 -0
- package/core/interfaces/{i_draggable.js → i_draggable.ts} +4 -10
- package/core/interfaces/i_flyout.d.ts +134 -0
- package/core/interfaces/i_flyout.ts +186 -0
- package/core/interfaces/i_keyboard_accessible.d.ts +18 -0
- package/core/interfaces/i_keyboard_accessible.ts +35 -0
- package/core/interfaces/i_metrics_manager.d.ts +117 -0
- package/core/interfaces/i_metrics_manager.ts +151 -0
- package/core/interfaces/i_movable.d.ts +16 -0
- package/core/interfaces/{i_movable.js → i_movable.ts} +9 -13
- package/core/interfaces/i_positionable.d.ts +27 -0
- package/core/interfaces/i_positionable.ts +50 -0
- package/core/interfaces/i_registrable.d.ts +11 -0
- package/core/interfaces/{i_registrable.js → i_registrable.ts} +3 -7
- package/core/interfaces/i_registrable_field.d.ts +17 -0
- package/core/interfaces/{i_registrable_field.js → i_registrable_field.ts} +8 -16
- package/core/interfaces/i_selectable.d.ts +18 -0
- package/core/interfaces/i_selectable.ts +34 -0
- package/core/interfaces/i_selectable_toolbox_item.d.ts +42 -0
- package/core/interfaces/i_selectable_toolbox_item.ts +64 -0
- package/core/interfaces/i_serializer.d.ts +42 -0
- package/core/interfaces/i_serializer.ts +65 -0
- package/core/interfaces/i_styleable.d.ts +21 -0
- package/core/interfaces/i_styleable.ts +35 -0
- package/core/interfaces/i_toolbox.d.ts +85 -0
- package/core/interfaces/i_toolbox.ts +127 -0
- package/core/interfaces/i_toolbox_item.d.ts +62 -0
- package/core/interfaces/i_toolbox_item.ts +84 -0
- package/core/internal_constants.d.ts +40 -0
- package/core/{internal_constants.js → internal_constants.ts} +13 -18
- package/core/keyboard_nav/ast_node.d.ts +239 -0
- package/core/keyboard_nav/{ast_node.js → ast_node.ts} +207 -231
- package/core/keyboard_nav/basic_cursor.d.ts +88 -0
- package/core/keyboard_nav/{basic_cursor.js → basic_cursor.ts} +55 -66
- package/core/keyboard_nav/cursor.d.ts +41 -0
- package/core/keyboard_nav/{cursor.js → cursor.ts} +25 -35
- package/core/keyboard_nav/marker.d.ts +58 -0
- package/core/keyboard_nav/{marker.js → marker.ts} +36 -55
- package/core/keyboard_nav/tab_navigate_cursor.d.ts +19 -0
- package/core/keyboard_nav/{tab_navigate_cursor.js → tab_navigate_cursor.ts} +11 -15
- package/core/main.d.ts +11 -0
- package/core/main.js +303 -0
- package/core/marker_manager.d.ts +85 -0
- package/core/marker_manager.ts +181 -0
- package/core/menu.d.ts +149 -0
- package/core/{menu.js → menu.ts} +141 -174
- package/core/menuitem.d.ts +118 -0
- package/core/menuitem.ts +240 -0
- package/core/metrics_manager.d.ts +201 -0
- package/core/{metrics_manager.js → metrics_manager.ts} +117 -156
- package/core/msg.d.ts +9 -0
- package/core/{msg.js → msg.ts} +4 -8
- package/core/mutator.d.ts +128 -0
- package/core/{mutator.js → mutator.ts} +196 -211
- package/core/names.d.ts +124 -0
- package/core/names.ts +267 -0
- package/core/options.d.ts +137 -0
- package/core/{options.js → options.ts} +147 -173
- package/core/positionable_helpers.d.ts +88 -0
- package/core/{positionable_helpers.js → positionable_helpers.ts} +63 -70
- package/core/procedures.d.ts +108 -0
- package/core/{procedures.js → procedures.ts} +143 -152
- package/core/registry.d.ts +137 -0
- package/core/registry.ts +339 -0
- package/core/rendered_connection.d.ts +191 -0
- package/core/{rendered_connection.js → rendered_connection.ts} +164 -184
- package/core/renderers/common/block_rendering.d.ts +114 -0
- package/core/renderers/common/block_rendering.ts +164 -0
- package/core/renderers/common/constants.d.ts +458 -0
- package/core/renderers/common/constants.ts +1124 -0
- package/core/renderers/common/debug.d.ts +28 -0
- package/core/renderers/common/{debug.js → debug.ts} +14 -20
- package/core/renderers/common/debugger.d.ts +120 -0
- package/core/renderers/common/{debugger.js → debugger.ts} +100 -124
- package/core/renderers/common/drawer.d.ts +132 -0
- package/core/renderers/common/{drawer.js → drawer.ts} +112 -137
- package/core/renderers/common/i_path_object.d.ts +117 -0
- package/core/renderers/common/i_path_object.ts +161 -0
- package/core/renderers/common/info.d.ts +194 -0
- package/core/renderers/common/{info.js → info.ts} +165 -222
- package/core/renderers/common/marker_svg.d.ts +220 -0
- package/core/renderers/common/marker_svg.ts +680 -0
- package/core/renderers/common/path_object.d.ts +146 -0
- package/core/renderers/common/path_object.ts +272 -0
- package/core/renderers/common/renderer.d.ts +157 -0
- package/core/renderers/common/renderer.ts +271 -0
- package/core/renderers/geras/constants.d.ts +23 -0
- package/core/renderers/geras/constants.ts +61 -0
- package/core/renderers/geras/drawer.d.ts +43 -0
- package/core/renderers/geras/{drawer.js → drawer.ts} +40 -84
- package/core/renderers/geras/geras.d.ts +11 -0
- package/core/renderers/geras/geras.ts +37 -0
- package/core/renderers/geras/highlight_constants.d.ts +108 -0
- package/core/renderers/geras/{highlight_constants.js → highlight_constants.ts} +107 -69
- package/core/renderers/geras/highlighter.d.ts +98 -0
- package/core/renderers/geras/{highlighter.js → highlighter.ts} +81 -86
- package/core/renderers/geras/info.d.ts +45 -0
- package/core/renderers/geras/{info.js → info.ts} +61 -99
- package/core/renderers/geras/measurables/inline_input.d.ts +23 -0
- package/core/renderers/geras/measurables/inline_input.ts +51 -0
- package/core/renderers/geras/measurables/statement_input.d.ts +23 -0
- package/core/renderers/geras/measurables/statement_input.ts +50 -0
- package/core/renderers/geras/path_object.d.ts +47 -0
- package/core/renderers/geras/{path_object.js → path_object.ts} +46 -74
- package/core/renderers/geras/renderer.d.ts +69 -0
- package/core/renderers/geras/renderer.ts +126 -0
- package/core/renderers/measurables/base.d.ts +27 -0
- package/core/renderers/measurables/base.ts +53 -0
- package/core/renderers/measurables/bottom_row.d.ts +61 -0
- package/core/renderers/measurables/bottom_row.ts +120 -0
- package/core/renderers/measurables/connection.d.ts +25 -0
- package/core/renderers/measurables/connection.ts +52 -0
- package/core/renderers/measurables/external_value_input.d.ts +27 -0
- package/core/renderers/measurables/external_value_input.ts +65 -0
- package/core/renderers/measurables/field.d.ts +30 -0
- package/core/renderers/measurables/field.ts +63 -0
- package/core/renderers/measurables/hat.d.ts +21 -0
- package/core/renderers/measurables/{hat.js → hat.ts} +12 -14
- package/core/renderers/measurables/icon.d.ts +26 -0
- package/core/renderers/measurables/{icon.js → icon.ts} +14 -18
- package/core/renderers/measurables/in_row_spacer.d.ts +21 -0
- package/core/renderers/measurables/in_row_spacer.ts +44 -0
- package/core/renderers/measurables/inline_input.d.ts +24 -0
- package/core/renderers/measurables/{inline_input.js → inline_input.ts} +22 -26
- package/core/renderers/measurables/input_connection.d.ts +29 -0
- package/core/renderers/measurables/input_connection.ts +66 -0
- package/core/renderers/measurables/input_row.d.ts +30 -0
- package/core/renderers/measurables/{input_row.js → input_row.ts} +24 -31
- package/core/renderers/measurables/jagged_edge.d.ts +20 -0
- package/core/renderers/measurables/{jagged_edge.js → jagged_edge.ts} +10 -13
- package/core/renderers/measurables/next_connection.d.ts +23 -0
- package/core/renderers/measurables/next_connection.ts +47 -0
- package/core/renderers/measurables/output_connection.d.ts +26 -0
- package/core/renderers/measurables/output_connection.ts +56 -0
- package/core/renderers/measurables/previous_connection.d.ts +23 -0
- package/core/renderers/measurables/previous_connection.ts +47 -0
- package/core/renderers/measurables/round_corner.d.ts +21 -0
- package/core/renderers/measurables/round_corner.ts +49 -0
- package/core/renderers/measurables/row.d.ts +141 -0
- package/core/renderers/measurables/row.ts +225 -0
- package/core/renderers/measurables/spacer_row.d.ts +29 -0
- package/core/renderers/measurables/spacer_row.ts +55 -0
- package/core/renderers/measurables/square_corner.d.ts +21 -0
- package/core/renderers/measurables/square_corner.ts +47 -0
- package/core/renderers/measurables/statement_input.d.ts +22 -0
- package/core/renderers/measurables/{statement_input.js → statement_input.ts} +14 -18
- package/core/renderers/measurables/top_row.d.ts +56 -0
- package/core/renderers/measurables/top_row.ts +122 -0
- package/core/renderers/measurables/types.d.ts +235 -0
- package/core/renderers/measurables/types.ts +332 -0
- package/core/renderers/minimalist/constants.d.ts +14 -0
- package/core/renderers/minimalist/{constants.js → constants.ts} +5 -10
- package/core/renderers/minimalist/drawer.d.ts +21 -0
- package/core/renderers/minimalist/drawer.ts +38 -0
- package/core/renderers/minimalist/info.d.ts +30 -0
- package/core/renderers/minimalist/info.ts +52 -0
- package/core/renderers/minimalist/minimalist.d.ts +6 -0
- package/core/renderers/minimalist/minimalist.ts +22 -0
- package/core/renderers/minimalist/renderer.d.ts +41 -0
- package/core/renderers/minimalist/renderer.ts +71 -0
- package/core/renderers/thrasos/info.d.ts +40 -0
- package/core/renderers/thrasos/{info.js → info.ts} +66 -67
- package/core/renderers/thrasos/renderer.d.ts +25 -0
- package/core/renderers/thrasos/renderer.ts +48 -0
- package/core/renderers/thrasos/thrasos.d.ts +4 -0
- package/core/renderers/thrasos/thrasos.ts +20 -0
- package/core/renderers/zelos/constants.d.ts +186 -0
- package/core/renderers/zelos/{constants.js → constants.ts} +294 -441
- package/core/renderers/zelos/drawer.d.ts +47 -0
- package/core/renderers/zelos/{drawer.js → drawer.ts} +73 -95
- package/core/renderers/zelos/info.d.ts +88 -0
- package/core/renderers/zelos/{info.js → info.ts} +111 -142
- package/core/renderers/zelos/marker_svg.d.ts +46 -0
- package/core/renderers/zelos/marker_svg.ts +151 -0
- package/core/renderers/zelos/measurables/bottom_row.d.ts +27 -0
- package/core/renderers/zelos/measurables/bottom_row.ts +53 -0
- package/core/renderers/zelos/measurables/inputs.d.ts +23 -0
- package/core/renderers/zelos/measurables/{inputs.js → inputs.ts} +14 -15
- package/core/renderers/zelos/measurables/row_elements.d.ts +21 -0
- package/core/renderers/zelos/measurables/row_elements.ts +45 -0
- package/core/renderers/zelos/measurables/top_row.d.ts +29 -0
- package/core/renderers/zelos/measurables/{top_row.js → top_row.ts} +14 -27
- package/core/renderers/zelos/path_object.d.ts +77 -0
- package/core/renderers/zelos/path_object.ts +215 -0
- package/core/renderers/zelos/renderer.d.ts +74 -0
- package/core/renderers/zelos/renderer.ts +142 -0
- package/core/renderers/zelos/zelos.d.ts +12 -0
- package/core/renderers/zelos/zelos.ts +39 -0
- package/core/scrollbar.d.ts +277 -0
- package/core/{scrollbar.js → scrollbar.ts} +307 -328
- package/core/scrollbar_pair.d.ts +105 -0
- package/core/{scrollbar_pair.js → scrollbar_pair.ts} +71 -79
- package/core/serialization/blocks.d.ts +98 -0
- package/core/serialization/{blocks.js → blocks.ts} +229 -228
- package/core/serialization/exceptions.d.ts +73 -0
- package/core/serialization/exceptions.ts +98 -0
- package/core/serialization/priorities.d.ts +15 -0
- package/core/serialization/{priorities.js → priorities.ts} +4 -10
- package/core/serialization/registry.d.ts +20 -0
- package/core/serialization/{registry.js → registry.ts} +11 -13
- package/core/serialization/variables.d.ts +14 -0
- package/core/serialization/{variables.js → variables.ts} +30 -32
- package/core/serialization/workspaces.d.ts +28 -0
- package/core/serialization/{workspaces.js → workspaces.ts} +30 -27
- package/core/shortcut_items.d.ts +61 -0
- package/core/{shortcut_items.js → shortcut_items.ts} +121 -157
- package/core/shortcut_registry.d.ts +151 -0
- package/core/shortcut_registry.ts +355 -0
- package/core/sprites.d.ts +19 -0
- package/core/{sprites.js → sprites.ts} +4 -6
- package/core/theme/classic.d.ts +12 -0
- package/core/theme/{classic.js → classic.ts} +5 -7
- package/core/theme/themes.d.ts +8 -0
- package/core/theme/themes.ts +22 -0
- package/core/theme/zelos.d.ts +11 -0
- package/core/theme/{zelos.js → zelos.ts} +4 -7
- package/core/theme.d.ts +142 -0
- package/core/theme.ts +221 -0
- package/core/theme_manager.d.ts +81 -0
- package/core/theme_manager.ts +186 -0
- package/core/toolbox/category.d.ts +239 -0
- package/core/toolbox/category.ts +679 -0
- package/core/toolbox/collapsible_category.d.ts +91 -0
- package/core/toolbox/collapsible_category.ts +273 -0
- package/core/toolbox/separator.d.ts +39 -0
- package/core/toolbox/separator.ts +105 -0
- package/core/toolbox/toolbox.d.ts +352 -0
- package/core/toolbox/{toolbox.js → toolbox.ts} +316 -432
- package/core/toolbox/toolbox_item.d.ts +85 -0
- package/core/toolbox/toolbox_item.ts +147 -0
- package/core/tooltip.d.ts +126 -0
- package/core/{tooltip.js → tooltip.ts} +136 -214
- package/core/touch.d.ts +121 -0
- package/core/touch.ts +306 -0
- package/core/touch_gesture.d.ts +115 -0
- package/core/{touch_gesture.js → touch_gesture.ts} +87 -125
- package/core/trashcan.d.ts +195 -0
- package/core/{trashcan.js → trashcan.ts} +226 -312
- package/core/utils/aria.d.ts +67 -0
- package/core/utils/{aria.js → aria.ts} +47 -61
- package/core/utils/array.d.ts +14 -0
- package/core/utils/{array.js → array.ts} +10 -12
- package/core/utils/colour.d.ts +103 -0
- package/core/utils/{colour.js → colour.ts} +60 -72
- package/core/utils/coordinate.d.ts +72 -0
- package/core/utils/coordinate.ts +124 -0
- package/core/utils/deprecation.d.ts +17 -0
- package/core/utils/{deprecation.js → deprecation.ts} +11 -11
- package/core/utils/dom.d.ts +165 -0
- package/core/utils/{dom.js → dom.ts} +125 -147
- package/core/utils/idgenerator.d.ts +25 -0
- package/core/utils/{idgenerator.js → idgenerator.ts} +15 -18
- package/core/utils/keycodes.d.ts +137 -0
- package/core/utils/keycodes.ts +169 -0
- package/core/utils/math.d.ts +30 -0
- package/core/utils/{math.js → math.ts} +17 -19
- package/core/utils/metrics.d.ts +64 -0
- package/core/utils/metrics.ts +97 -0
- package/core/utils/object.d.ts +35 -0
- package/core/utils/{object.js → object.ts} +30 -26
- package/core/utils/parsing.d.ts +50 -0
- package/core/utils/{parsing.js → parsing.ts} +50 -50
- package/core/utils/rect.d.ts +38 -0
- package/core/utils/{rect.js → rect.ts} +18 -31
- package/core/utils/sentinel.d.ts +11 -0
- package/core/utils/{sentinel.js → sentinel.ts} +3 -5
- package/core/utils/size.d.ts +27 -0
- package/core/utils/{size.js → size.ts} +12 -26
- package/core/utils/string.d.ts +55 -0
- package/core/utils/{string.js → string.ts} +64 -61
- package/core/utils/style.d.ts +127 -0
- package/core/utils/{style.js → style.ts} +102 -92
- package/core/utils/svg.d.ts +68 -0
- package/core/utils/svg.ts +88 -0
- package/core/utils/svg_math.d.ts +70 -0
- package/core/utils/{svg_math.js → svg_math.ts} +72 -71
- package/core/utils/svg_paths.d.ts +101 -0
- package/core/utils/{svg_paths.js → svg_paths.ts} +56 -65
- package/core/utils/toolbox.d.ts +193 -0
- package/core/utils/toolbox.ts +433 -0
- package/core/utils/useragent.d.ts +33 -0
- package/core/utils/useragent.ts +135 -0
- package/core/utils/xml.d.ts +52 -0
- package/core/utils/{xml.js → xml.ts} +26 -36
- package/core/utils.d.ts +217 -0
- package/core/utils.ts +428 -0
- package/core/variable_map.d.ts +141 -0
- package/core/{variable_map.js → variable_map.ts} +131 -149
- package/core/variable_model.d.ts +40 -0
- package/core/variable_model.ts +82 -0
- package/core/variables.d.ts +181 -0
- package/core/{variables.js → variables.ts} +206 -188
- package/core/variables_dynamic.d.ts +38 -0
- package/core/{variables_dynamic.js → variables_dynamic.ts} +47 -43
- package/core/warning.d.ts +50 -0
- package/core/{warning.js → warning.ts} +52 -66
- package/core/widgetdiv.d.ts +69 -0
- package/core/widgetdiv.ts +257 -0
- package/core/workspace.d.ts +386 -0
- package/core/workspace.ts +801 -0
- package/core/workspace_audio.d.ts +47 -0
- package/core/{workspace_audio.js → workspace_audio.ts} +47 -60
- package/core/workspace_comment.d.ts +170 -0
- package/core/workspace_comment.ts +398 -0
- package/core/workspace_comment_svg.d.ts +329 -0
- package/core/{workspace_comment_svg.js → workspace_comment_svg.ts} +347 -444
- package/core/workspace_drag_surface_svg.d.ts +68 -0
- package/core/{workspace_drag_surface_svg.js → workspace_drag_surface_svg.ts} +75 -82
- package/core/workspace_dragger.d.ts +48 -0
- package/core/workspace_dragger.ts +104 -0
- package/core/workspace_svg.d.ts +920 -0
- package/core/{workspace_svg.js → workspace_svg.ts} +855 -935
- package/core/xml.d.ts +117 -0
- package/core/{xml.js → xml.ts} +306 -326
- package/core/zoom_controls.d.ts +130 -0
- package/core/{zoom_controls.js → zoom_controls.ts} +185 -251
- package/core.d.ts +1 -3
- package/core.js +1 -2
- package/dart.d.ts +0 -3
- package/dart_compressed.js +387 -99
- package/dart_compressed.js.map +1 -1
- package/generators/dart/all.js +2 -0
- package/generators/dart/colour.js +1 -1
- package/generators/dart/lists.js +1 -1
- package/generators/dart/logic.js +1 -1
- package/generators/dart/loops.js +1 -1
- package/generators/dart/math.js +1 -1
- package/generators/dart/procedures.js +1 -1
- package/generators/dart/text.js +1 -1
- package/generators/dart/variables.js +1 -1
- package/generators/dart/variables_dynamic.js +1 -1
- package/generators/dart.js +1 -2
- package/generators/javascript/all.js +2 -0
- package/generators/javascript/colour.js +1 -1
- package/generators/javascript/lists.js +1 -1
- package/generators/javascript/logic.js +1 -1
- package/generators/javascript/loops.js +1 -1
- package/generators/javascript/math.js +4 -4
- package/generators/javascript/procedures.js +1 -1
- package/generators/javascript/text.js +2 -2
- package/generators/javascript/variables.js +1 -1
- package/generators/javascript/variables_dynamic.js +1 -1
- package/generators/javascript.js +1 -3
- package/generators/lua/all.js +2 -0
- package/generators/lua/colour.js +1 -1
- package/generators/lua/lists.js +1 -1
- package/generators/lua/logic.js +1 -1
- package/generators/lua/loops.js +1 -1
- package/generators/lua/math.js +1 -1
- package/generators/lua/procedures.js +1 -1
- package/generators/lua/text.js +1 -1
- package/generators/lua/variables.js +1 -1
- package/generators/lua/variables_dynamic.js +1 -1
- package/generators/lua.js +1 -2
- package/generators/php/all.js +2 -0
- package/generators/php/colour.js +1 -1
- package/generators/php/lists.js +1 -2
- package/generators/php/logic.js +1 -1
- package/generators/php/loops.js +1 -1
- package/generators/php/math.js +1 -1
- package/generators/php/procedures.js +1 -1
- package/generators/php/text.js +1 -1
- package/generators/php/variables.js +1 -1
- package/generators/php/variables_dynamic.js +1 -1
- package/generators/php.js +1 -2
- package/generators/python/all.js +2 -0
- package/generators/python/colour.js +3 -3
- package/generators/python/lists.js +1 -1
- package/generators/python/logic.js +1 -1
- package/generators/python/loops.js +4 -7
- package/generators/python/math.js +1 -1
- package/generators/python/procedures.js +1 -1
- package/generators/python/text.js +1 -1
- package/generators/python/variables.js +1 -1
- package/generators/python/variables_dynamic.js +1 -1
- package/generators/python.js +1 -2
- package/index.d.ts +2 -8
- package/javascript.d.ts +0 -3
- package/javascript_compressed.js +314 -104
- package/javascript_compressed.js.map +1 -1
- package/lua.d.ts +0 -3
- package/lua_compressed.js +399 -81
- package/lua_compressed.js.map +1 -1
- package/msg/ab.js +421 -421
- package/msg/ace.js +421 -421
- package/msg/af.js +421 -421
- package/msg/am.js +421 -421
- package/msg/ar.js +421 -421
- package/msg/ast.js +421 -421
- package/msg/az.js +421 -421
- package/msg/ba.js +421 -421
- package/msg/bcc.js +421 -421
- package/msg/be-tarask.js +421 -421
- package/msg/be.js +421 -421
- package/msg/bg.js +421 -421
- package/msg/bn.js +421 -421
- package/msg/br.js +421 -421
- package/msg/bs.js +421 -421
- package/msg/ca.js +421 -421
- package/msg/cdo.js +421 -421
- package/msg/cs.js +421 -421
- package/msg/da.js +421 -421
- package/msg/de.js +421 -421
- package/msg/diq.js +421 -421
- package/msg/dty.js +421 -421
- package/msg/ee.js +421 -421
- package/msg/el.js +421 -421
- package/msg/en-gb.js +421 -421
- package/msg/en.js +421 -421
- package/msg/eo.js +421 -421
- package/msg/es.js +421 -421
- package/msg/et.js +421 -421
- package/msg/eu.js +421 -421
- package/msg/fa.js +421 -421
- package/msg/fi.js +421 -421
- package/msg/fo.js +421 -421
- package/msg/fr.js +421 -421
- package/msg/frr.js +421 -421
- package/msg/gl.js +421 -421
- package/msg/gn.js +421 -421
- package/msg/gor.js +421 -421
- package/msg/ha.js +421 -421
- package/msg/hak.js +421 -421
- package/msg/he.js +421 -421
- package/msg/hi.js +421 -421
- package/msg/hr.js +421 -421
- package/msg/hrx.js +421 -421
- package/msg/hu.js +421 -421
- package/msg/hy.js +421 -421
- package/msg/ia.js +421 -421
- package/msg/id.js +421 -421
- package/msg/ig.js +421 -421
- package/msg/inh.js +421 -421
- package/msg/is.js +421 -421
- package/msg/it.js +421 -421
- package/msg/ja.js +421 -421
- package/msg/ka.js +421 -421
- package/msg/kab.js +421 -421
- package/msg/kbd-cyrl.js +421 -421
- package/msg/km.js +421 -421
- package/msg/kn.js +421 -421
- package/msg/ko.js +421 -421
- package/msg/ksh.js +421 -421
- package/msg/ku-latn.js +421 -421
- package/msg/ky.js +421 -421
- package/msg/la.js +421 -421
- package/msg/lb.js +421 -421
- package/msg/lki.js +421 -421
- package/msg/lo.js +421 -421
- package/msg/lrc.js +421 -421
- package/msg/lt.js +421 -421
- package/msg/lv.js +421 -421
- package/msg/mg.js +421 -421
- package/msg/mk.js +421 -421
- package/msg/ml.js +421 -421
- package/msg/mnw.js +421 -421
- package/msg/ms.js +421 -421
- package/msg/my.js +421 -421
- package/msg/mzn.js +421 -421
- package/msg/nb.js +421 -421
- package/msg/ne.js +421 -421
- package/msg/nl.js +421 -421
- package/msg/oc.js +421 -421
- package/msg/olo.js +421 -421
- package/msg/pa.js +421 -421
- package/msg/pl.js +421 -421
- package/msg/pms.js +421 -421
- package/msg/ps.js +421 -421
- package/msg/pt-br.js +421 -421
- package/msg/pt.js +421 -421
- package/msg/ro.js +421 -421
- package/msg/ru.js +421 -421
- package/msg/sc.js +421 -421
- package/msg/sco.js +421 -421
- package/msg/sd.js +421 -421
- package/msg/shn.js +421 -421
- package/msg/si.js +421 -421
- package/msg/sk.js +421 -421
- package/msg/skr-arab.js +421 -421
- package/msg/sl.js +421 -421
- package/msg/smn.js +421 -421
- package/msg/sq.js +421 -421
- package/msg/sr-latn.js +421 -421
- package/msg/sr.js +421 -421
- package/msg/sv.js +421 -421
- package/msg/sw.js +421 -421
- package/msg/ta.js +421 -421
- package/msg/tcy.js +421 -421
- package/msg/te.js +421 -421
- package/msg/th.js +421 -421
- package/msg/ti.js +421 -421
- package/msg/tl.js +421 -421
- package/msg/tlh.js +421 -421
- package/msg/tr.js +421 -421
- package/msg/ug-arab.js +421 -421
- package/msg/uk.js +421 -421
- package/msg/ur.js +421 -421
- package/msg/uz.js +421 -421
- package/msg/vi.js +421 -421
- package/msg/xmf.js +421 -421
- package/msg/yo.js +421 -421
- package/msg/yue.js +421 -421
- package/msg/zgh.js +421 -421
- package/msg/zh-hans.js +421 -421
- package/msg/zh-hant.js +421 -421
- package/package.json +5 -5
- package/php.d.ts +0 -3
- package/php_compressed.js +322 -93
- package/php_compressed.js.map +1 -1
- package/python.d.ts +0 -3
- package/python_compressed.js +237 -90
- package/python_compressed.js.map +1 -1
- package/blockly.d.ts +0 -26127
- package/core/blockly_options.js +0 -28
- package/core/bubble_dragger.js +0 -298
- package/core/clipboard.js +0 -80
- package/core/component_manager.js +0 -263
- package/core/contextmenu_items.js +0 -651
- package/core/contextmenu_registry.js +0 -178
- package/core/delete_area.js +0 -87
- package/core/dialog.js +0 -107
- package/core/drag_target.js +0 -98
- package/core/events/events.js +0 -147
- package/core/events/events_abstract.js +0 -133
- package/core/events/events_block_base.js +0 -70
- package/core/events/events_block_drag.js +0 -89
- package/core/events/events_bubble_open.js +0 -90
- package/core/events/events_comment_base.js +0 -121
- package/core/events/events_marker_move.js +0 -110
- package/core/events/events_selected.js +0 -83
- package/core/events/events_toolbox_item_select.js +0 -84
- package/core/events/events_trashcan_open.js +0 -73
- package/core/events/events_var_base.js +0 -70
- package/core/events/events_viewport.js +0 -107
- package/core/events/workspace_events.js +0 -93
- package/core/field_angle.js +0 -591
- package/core/field_checkbox.js +0 -255
- package/core/field_colour.js +0 -717
- package/core/field_image.js +0 -304
- package/core/field_label.js +0 -149
- package/core/field_label_serializable.js +0 -80
- package/core/field_textinput.js +0 -619
- package/core/flyout_button.js +0 -356
- package/core/grid.js +0 -226
- package/core/icon.js +0 -225
- package/core/input.js +0 -335
- package/core/interfaces/i_ast_node_location_svg.js +0 -45
- package/core/interfaces/i_ast_node_location_with_block.js +0 -41
- package/core/interfaces/i_autohideable.js +0 -40
- package/core/interfaces/i_block_dragger.js +0 -66
- package/core/interfaces/i_bounded_element.js +0 -45
- package/core/interfaces/i_bubble.js +0 -95
- package/core/interfaces/i_collapsible_toolbox_item.js +0 -53
- package/core/interfaces/i_connection_checker.js +0 -104
- package/core/interfaces/i_contextmenu.js +0 -32
- package/core/interfaces/i_copyable.js +0 -49
- package/core/interfaces/i_delete_area.js +0 -50
- package/core/interfaces/i_drag_target.js +0 -88
- package/core/interfaces/i_flyout.js +0 -201
- package/core/interfaces/i_keyboard_accessible.js +0 -38
- package/core/interfaces/i_metrics_manager.js +0 -154
- package/core/interfaces/i_positionable.js +0 -51
- package/core/interfaces/i_selectable.js +0 -51
- package/core/interfaces/i_selectable_toolbox_item.js +0 -73
- package/core/interfaces/i_serializer.js +0 -77
- package/core/interfaces/i_styleable.js +0 -39
- package/core/interfaces/i_toolbox.js +0 -142
- package/core/interfaces/i_toolbox_item.js +0 -85
- package/core/marker_manager.js +0 -213
- package/core/menuitem.js +0 -292
- package/core/names.js +0 -293
- package/core/registry.js +0 -384
- package/core/renderers/common/block_rendering.js +0 -170
- package/core/renderers/common/constants.js +0 -1250
- package/core/renderers/common/i_path_object.js +0 -162
- package/core/renderers/common/marker_svg.js +0 -721
- package/core/renderers/common/path_object.js +0 -283
- package/core/renderers/common/renderer.js +0 -305
- package/core/renderers/geras/constants.js +0 -73
- package/core/renderers/geras/geras.js +0 -36
- package/core/renderers/geras/measurables/inline_input.js +0 -58
- package/core/renderers/geras/measurables/statement_input.js +0 -57
- package/core/renderers/geras/renderer.js +0 -149
- package/core/renderers/measurables/base.js +0 -64
- package/core/renderers/measurables/bottom_row.js +0 -138
- package/core/renderers/measurables/connection.js +0 -56
- package/core/renderers/measurables/external_value_input.js +0 -70
- package/core/renderers/measurables/field.js +0 -71
- package/core/renderers/measurables/in_row_spacer.js +0 -47
- package/core/renderers/measurables/input_connection.js +0 -75
- package/core/renderers/measurables/next_connection.js +0 -50
- package/core/renderers/measurables/output_connection.js +0 -61
- package/core/renderers/measurables/previous_connection.js +0 -50
- package/core/renderers/measurables/round_corner.js +0 -52
- package/core/renderers/measurables/row.js +0 -247
- package/core/renderers/measurables/spacer_row.js +0 -69
- package/core/renderers/measurables/square_corner.js +0 -50
- package/core/renderers/measurables/top_row.js +0 -143
- package/core/renderers/measurables/types.js +0 -353
- package/core/renderers/minimalist/drawer.js +0 -42
- package/core/renderers/minimalist/info.js +0 -54
- package/core/renderers/minimalist/minimalist.js +0 -26
- package/core/renderers/minimalist/renderer.js +0 -80
- package/core/renderers/thrasos/renderer.js +0 -53
- package/core/renderers/thrasos/thrasos.js +0 -22
- package/core/renderers/zelos/marker_svg.js +0 -179
- package/core/renderers/zelos/measurables/bottom_row.js +0 -66
- package/core/renderers/zelos/measurables/row_elements.js +0 -46
- package/core/renderers/zelos/path_object.js +0 -247
- package/core/renderers/zelos/renderer.js +0 -147
- package/core/renderers/zelos/zelos.js +0 -38
- package/core/serialization/exceptions.js +0 -144
- package/core/shortcut_registry.js +0 -366
- package/core/theme/themes.js +0 -23
- package/core/theme.js +0 -228
- package/core/theme_manager.js +0 -211
- package/core/toolbox/category.js +0 -751
- package/core/toolbox/collapsible_category.js +0 -311
- package/core/toolbox/separator.js +0 -133
- package/core/toolbox/toolbox_item.js +0 -173
- package/core/touch.js +0 -285
- package/core/utils/coordinate.js +0 -138
- package/core/utils/global.js +0 -41
- package/core/utils/keycodes.js +0 -172
- package/core/utils/metrics.js +0 -154
- package/core/utils/svg.js +0 -186
- package/core/utils/toolbox.js +0 -459
- package/core/utils/useragent.js +0 -197
- package/core/utils.js +0 -383
- package/core/variable_model.js +0 -96
- package/core/widgetdiv.js +0 -290
- package/core/workspace.js +0 -836
- package/core/workspace_comment.js +0 -400
- package/core/workspace_dragger.js +0 -115
|
@@ -7,174 +7,114 @@
|
|
|
7
7
|
/**
|
|
8
8
|
* @fileoverview Object representing a code comment on a rendered workspace.
|
|
9
9
|
*/
|
|
10
|
-
'use strict';
|
|
11
10
|
|
|
12
11
|
/**
|
|
13
12
|
* Object representing a code comment on a rendered workspace.
|
|
14
13
|
* @class
|
|
15
14
|
*/
|
|
16
|
-
goog
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
/**
|
|
47
|
-
goog.require('Blockly.Events.Selected');
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* Size of the resize icon.
|
|
52
|
-
* @type {number}
|
|
53
|
-
* @const
|
|
54
|
-
*/
|
|
15
|
+
import * as goog from '../closure/goog/goog.js';
|
|
16
|
+
goog.declareModuleId('Blockly.WorkspaceCommentSvg');
|
|
17
|
+
|
|
18
|
+
// Unused import preserved for side-effects. Remove if unneeded.
|
|
19
|
+
// import './events/events_comment_create.js';
|
|
20
|
+
// Unused import preserved for side-effects. Remove if unneeded.
|
|
21
|
+
// import './events/events_comment_delete.js';
|
|
22
|
+
// Unused import preserved for side-effects. Remove if unneeded.
|
|
23
|
+
import './events/events_selected.js';
|
|
24
|
+
|
|
25
|
+
import type {BlockDragSurfaceSvg} from './block_drag_surface.js';
|
|
26
|
+
import * as browserEvents from './browser_events.js';
|
|
27
|
+
import * as common from './common.js';
|
|
28
|
+
// import * as ContextMenu from './contextmenu.js';
|
|
29
|
+
import * as Css from './css.js';
|
|
30
|
+
import type {CommentMove} from './events/events_comment_move.js';
|
|
31
|
+
import * as eventUtils from './events/utils.js';
|
|
32
|
+
import type {IBoundedElement} from './interfaces/i_bounded_element.js';
|
|
33
|
+
import type {IBubble} from './interfaces/i_bubble.js';
|
|
34
|
+
import type {CopyData, ICopyable} from './interfaces/i_copyable.js';
|
|
35
|
+
import * as Touch from './touch.js';
|
|
36
|
+
import {Coordinate} from './utils/coordinate.js';
|
|
37
|
+
import * as dom from './utils/dom.js';
|
|
38
|
+
import {Rect} from './utils/rect.js';
|
|
39
|
+
import {Svg} from './utils/svg.js';
|
|
40
|
+
import * as svgMath from './utils/svg_math.js';
|
|
41
|
+
import {WorkspaceComment} from './workspace_comment.js';
|
|
42
|
+
import type {WorkspaceSvg} from './workspace_svg.js';
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
/** Size of the resize icon. */
|
|
55
46
|
const RESIZE_SIZE = 8;
|
|
56
47
|
|
|
57
|
-
/**
|
|
58
|
-
* Radius of the border around the comment.
|
|
59
|
-
* @type {number}
|
|
60
|
-
* @const
|
|
61
|
-
*/
|
|
48
|
+
/** Radius of the border around the comment. */
|
|
62
49
|
const BORDER_RADIUS = 3;
|
|
63
50
|
|
|
64
|
-
/**
|
|
65
|
-
* Offset from the foreignobject edge to the textarea edge.
|
|
66
|
-
* @type {number}
|
|
67
|
-
* @const
|
|
68
|
-
*/
|
|
51
|
+
/** Offset from the foreignobject edge to the textarea edge. */
|
|
69
52
|
const TEXTAREA_OFFSET = 2;
|
|
70
53
|
|
|
71
54
|
/**
|
|
72
55
|
* Class for a workspace comment's SVG representation.
|
|
73
|
-
* @extends {WorkspaceComment}
|
|
74
|
-
* @implements {IBoundedElement}
|
|
75
|
-
* @implements {IBubble}
|
|
76
|
-
* @implements {ICopyable}
|
|
77
56
|
* @alias Blockly.WorkspaceCommentSvg
|
|
78
57
|
*/
|
|
79
|
-
class WorkspaceCommentSvg extends WorkspaceComment
|
|
58
|
+
export class WorkspaceCommentSvg extends WorkspaceComment implements
|
|
59
|
+
IBoundedElement, IBubble, ICopyable {
|
|
80
60
|
/**
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
* @
|
|
84
|
-
* @param {number} width Width of the comment.
|
|
85
|
-
* @param {string=} opt_id Optional ID. Use this ID if provided, otherwise
|
|
86
|
-
* create a new ID.
|
|
61
|
+
* The width and height to use to size a workspace comment when it is first
|
|
62
|
+
* added, before it has been edited by the user.
|
|
63
|
+
* @internal
|
|
87
64
|
*/
|
|
88
|
-
|
|
89
|
-
super(workspace, content, height, width, opt_id);
|
|
90
|
-
/**
|
|
91
|
-
* @type {!WorkspaceSvg}
|
|
92
|
-
*/
|
|
93
|
-
this.workspace;
|
|
65
|
+
static DEFAULT_SIZE = 100;
|
|
94
66
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
* @private
|
|
99
|
-
*/
|
|
100
|
-
this.onMouseUpWrapper_ = null;
|
|
67
|
+
/** Offset from the top to make room for a top bar. */
|
|
68
|
+
private static readonly TOP_OFFSET = 10;
|
|
69
|
+
override workspace: WorkspaceSvg;
|
|
101
70
|
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
* @type {?browserEvents.Data}
|
|
105
|
-
* @private
|
|
106
|
-
*/
|
|
107
|
-
this.onMouseMoveWrapper_ = null;
|
|
71
|
+
/** Mouse up event data. */
|
|
72
|
+
private onMouseUpWrapper_: browserEvents.Data|null = null;
|
|
108
73
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
* @type {boolean}
|
|
112
|
-
* @private
|
|
113
|
-
*/
|
|
114
|
-
this.eventsInit_ = false;
|
|
74
|
+
/** Mouse move event data. */
|
|
75
|
+
private onMouseMoveWrapper_: browserEvents.Data|null = null;
|
|
115
76
|
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
*/
|
|
120
|
-
this.textarea_ = null;
|
|
77
|
+
/** Whether event handlers have been initialized. */
|
|
78
|
+
private eventsInit_ = false;
|
|
79
|
+
private textarea_: HTMLTextAreaElement|null = null;
|
|
121
80
|
|
|
122
|
-
|
|
123
|
-
* @type {?SVGRectElement}
|
|
124
|
-
* @private
|
|
125
|
-
*/
|
|
126
|
-
this.svgRectTarget_ = null;
|
|
81
|
+
private svgRectTarget_: SVGRectElement|null = null;
|
|
127
82
|
|
|
128
|
-
|
|
129
|
-
* @type {?SVGRectElement}
|
|
130
|
-
* @private
|
|
131
|
-
*/
|
|
132
|
-
this.svgHandleTarget_ = null;
|
|
83
|
+
private svgHandleTarget_: SVGRectElement|null = null;
|
|
133
84
|
|
|
134
|
-
|
|
135
|
-
* @type {?SVGForeignObjectElement}
|
|
136
|
-
* @private
|
|
137
|
-
*/
|
|
138
|
-
this.foreignObject_ = null;
|
|
85
|
+
private foreignObject_: SVGForeignObjectElement|null = null;
|
|
139
86
|
|
|
140
|
-
|
|
141
|
-
* @type {?SVGGElement}
|
|
142
|
-
* @private
|
|
143
|
-
*/
|
|
144
|
-
this.resizeGroup_ = null;
|
|
87
|
+
private resizeGroup_: SVGGElement|null = null;
|
|
145
88
|
|
|
146
|
-
|
|
147
|
-
* @type {?SVGGElement}
|
|
148
|
-
* @private
|
|
149
|
-
*/
|
|
150
|
-
this.deleteGroup_ = null;
|
|
89
|
+
private deleteGroup_: SVGGElement|null = null;
|
|
151
90
|
|
|
152
|
-
|
|
153
|
-
* @type {?SVGCircleElement}
|
|
154
|
-
* @private
|
|
155
|
-
*/
|
|
156
|
-
this.deleteIconBorder_ = null;
|
|
91
|
+
private deleteIconBorder_: SVGCircleElement|null = null;
|
|
157
92
|
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
93
|
+
private focused_ = false;
|
|
94
|
+
private autoLayout_ = false;
|
|
95
|
+
// Create core elements for the block.
|
|
96
|
+
private readonly svgGroup_: SVGElement;
|
|
97
|
+
svgRect_: AnyDuringMigration;
|
|
163
98
|
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
*/
|
|
168
|
-
this.autoLayout_ = false;
|
|
99
|
+
/** Whether the comment is rendered onscreen and is a part of the DOM. */
|
|
100
|
+
private rendered_ = false;
|
|
101
|
+
private readonly useDragSurface_: boolean;
|
|
169
102
|
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
103
|
+
/**
|
|
104
|
+
* @param workspace The block's workspace.
|
|
105
|
+
* @param content The content of this workspace comment.
|
|
106
|
+
* @param height Height of the comment.
|
|
107
|
+
* @param width Width of the comment.
|
|
108
|
+
* @param opt_id Optional ID. Use this ID if provided, otherwise create a new
|
|
109
|
+
* ID.
|
|
110
|
+
*/
|
|
111
|
+
constructor(
|
|
112
|
+
workspace: WorkspaceSvg, content: string, height: number, width: number,
|
|
113
|
+
opt_id?: string) {
|
|
114
|
+
super(workspace, content, height, width, opt_id);
|
|
115
|
+
this.svgGroup_ = dom.createSvgElement(Svg.G, {'class': 'blocklyComment'});
|
|
116
|
+
(this.svgGroup_ as AnyDuringMigration).translate_ = '';
|
|
117
|
+
this.workspace = workspace;
|
|
178
118
|
|
|
179
119
|
this.svgRect_ = dom.createSvgElement(Svg.RECT, {
|
|
180
120
|
'class': 'blocklyCommentRect',
|
|
@@ -185,18 +125,9 @@ class WorkspaceCommentSvg extends WorkspaceComment {
|
|
|
185
125
|
});
|
|
186
126
|
this.svgGroup_.appendChild(this.svgRect_);
|
|
187
127
|
|
|
188
|
-
/**
|
|
189
|
-
* Whether the comment is rendered onscreen and is a part of the DOM.
|
|
190
|
-
* @type {boolean}
|
|
191
|
-
* @private
|
|
192
|
-
*/
|
|
193
|
-
this.rendered_ = false;
|
|
194
|
-
|
|
195
128
|
/**
|
|
196
129
|
* Whether to move the comment to the drag surface when it is dragged.
|
|
197
130
|
* True if it should move, false if it should be translated directly.
|
|
198
|
-
* @type {boolean}
|
|
199
|
-
* @private
|
|
200
131
|
*/
|
|
201
132
|
this.useDragSurface_ =
|
|
202
133
|
svgMath.is3dSupported() && !!workspace.getBlockDragSurface();
|
|
@@ -206,9 +137,9 @@ class WorkspaceCommentSvg extends WorkspaceComment {
|
|
|
206
137
|
|
|
207
138
|
/**
|
|
208
139
|
* Dispose of this comment.
|
|
209
|
-
* @
|
|
140
|
+
* @internal
|
|
210
141
|
*/
|
|
211
|
-
dispose() {
|
|
142
|
+
override dispose() {
|
|
212
143
|
if (this.disposed_) {
|
|
213
144
|
return;
|
|
214
145
|
}
|
|
@@ -219,7 +150,7 @@ class WorkspaceCommentSvg extends WorkspaceComment {
|
|
|
219
150
|
}
|
|
220
151
|
|
|
221
152
|
if (eventUtils.isEnabled()) {
|
|
222
|
-
eventUtils.fire(new (eventUtils.get(eventUtils.COMMENT_DELETE))(this));
|
|
153
|
+
eventUtils.fire(new (eventUtils.get(eventUtils.COMMENT_DELETE))!(this));
|
|
223
154
|
}
|
|
224
155
|
|
|
225
156
|
dom.removeNode(this.svgGroup_);
|
|
@@ -235,22 +166,20 @@ class WorkspaceCommentSvg extends WorkspaceComment {
|
|
|
235
166
|
* Create and initialize the SVG representation of a workspace comment.
|
|
236
167
|
* May be called more than once.
|
|
237
168
|
*
|
|
238
|
-
* @param
|
|
239
|
-
*
|
|
240
|
-
*
|
|
241
|
-
* @package
|
|
169
|
+
* @param opt_noSelect Text inside text area will be selected if false
|
|
170
|
+
* @internal
|
|
242
171
|
*/
|
|
243
|
-
initSvg(opt_noSelect) {
|
|
172
|
+
initSvg(opt_noSelect?: boolean) {
|
|
244
173
|
if (!this.workspace.rendered) {
|
|
245
174
|
throw TypeError('Workspace is headless.');
|
|
246
175
|
}
|
|
247
176
|
if (!this.workspace.options.readOnly && !this.eventsInit_) {
|
|
248
177
|
browserEvents.conditionalBind(
|
|
249
|
-
|
|
250
|
-
this
|
|
178
|
+
this.svgRectTarget_ as SVGRectElement, 'mousedown', this,
|
|
179
|
+
this.pathMouseDown_);
|
|
251
180
|
browserEvents.conditionalBind(
|
|
252
|
-
|
|
253
|
-
this
|
|
181
|
+
this.svgHandleTarget_ as SVGRectElement, 'mousedown', this,
|
|
182
|
+
this.pathMouseDown_);
|
|
254
183
|
}
|
|
255
184
|
this.eventsInit_ = true;
|
|
256
185
|
|
|
@@ -266,10 +195,9 @@ class WorkspaceCommentSvg extends WorkspaceComment {
|
|
|
266
195
|
|
|
267
196
|
/**
|
|
268
197
|
* Handle a mouse-down on an SVG comment.
|
|
269
|
-
* @param
|
|
270
|
-
* @private
|
|
198
|
+
* @param e Mouse down event or touch start event.
|
|
271
199
|
*/
|
|
272
|
-
pathMouseDown_(e) {
|
|
200
|
+
private pathMouseDown_(e: Event) {
|
|
273
201
|
const gesture = this.workspace.getGesture(e);
|
|
274
202
|
if (gesture) {
|
|
275
203
|
gesture.handleBubbleStart(e, this);
|
|
@@ -278,28 +206,18 @@ class WorkspaceCommentSvg extends WorkspaceComment {
|
|
|
278
206
|
|
|
279
207
|
/**
|
|
280
208
|
* Show the context menu for this workspace comment.
|
|
281
|
-
* @param
|
|
282
|
-
* @
|
|
209
|
+
* @param e Mouse event.
|
|
210
|
+
* @internal
|
|
283
211
|
*/
|
|
284
|
-
showContextMenu(e) {
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
// Save the current workspace comment in a variable for use in closures.
|
|
289
|
-
const comment = this;
|
|
290
|
-
const menuOptions = [];
|
|
291
|
-
|
|
292
|
-
if (this.isDeletable() && this.isMovable()) {
|
|
293
|
-
menuOptions.push(ContextMenu.commentDuplicateOption(comment));
|
|
294
|
-
menuOptions.push(ContextMenu.commentDeleteOption(comment));
|
|
295
|
-
}
|
|
296
|
-
|
|
297
|
-
ContextMenu.show(e, menuOptions, this.RTL);
|
|
212
|
+
showContextMenu(e: Event) {
|
|
213
|
+
throw new Error(
|
|
214
|
+
'The implementation of showContextMenu should be ' +
|
|
215
|
+
'monkey-patched in by blockly.ts');
|
|
298
216
|
}
|
|
299
217
|
|
|
300
218
|
/**
|
|
301
219
|
* Select this comment. Highlight it visually.
|
|
302
|
-
* @
|
|
220
|
+
* @internal
|
|
303
221
|
*/
|
|
304
222
|
select() {
|
|
305
223
|
if (common.getSelected() === this) {
|
|
@@ -307,17 +225,17 @@ class WorkspaceCommentSvg extends WorkspaceComment {
|
|
|
307
225
|
}
|
|
308
226
|
let oldId = null;
|
|
309
227
|
if (common.getSelected()) {
|
|
310
|
-
oldId = common.getSelected()
|
|
228
|
+
oldId = common.getSelected()!.id;
|
|
311
229
|
// Unselect any previously selected block.
|
|
312
230
|
eventUtils.disable();
|
|
313
231
|
try {
|
|
314
|
-
common.getSelected()
|
|
232
|
+
common.getSelected()!.unselect();
|
|
315
233
|
} finally {
|
|
316
234
|
eventUtils.enable();
|
|
317
235
|
}
|
|
318
236
|
}
|
|
319
|
-
const event = new (eventUtils.get(eventUtils.SELECTED))
|
|
320
|
-
oldId, this.id, this.workspace.id);
|
|
237
|
+
const event = new (eventUtils.get(eventUtils.SELECTED))!
|
|
238
|
+
(oldId, this.id, this.workspace.id);
|
|
321
239
|
eventUtils.fire(event);
|
|
322
240
|
common.setSelected(this);
|
|
323
241
|
this.addSelect();
|
|
@@ -325,14 +243,14 @@ class WorkspaceCommentSvg extends WorkspaceComment {
|
|
|
325
243
|
|
|
326
244
|
/**
|
|
327
245
|
* Unselect this comment. Remove its highlighting.
|
|
328
|
-
* @
|
|
246
|
+
* @internal
|
|
329
247
|
*/
|
|
330
248
|
unselect() {
|
|
331
249
|
if (common.getSelected() !== this) {
|
|
332
250
|
return;
|
|
333
251
|
}
|
|
334
|
-
const event = new (eventUtils.get(eventUtils.SELECTED))
|
|
335
|
-
this.id, null, this.workspace.id);
|
|
252
|
+
const event = new (eventUtils.get(eventUtils.SELECTED))!
|
|
253
|
+
(this.id, null, this.workspace.id);
|
|
336
254
|
eventUtils.fire(event);
|
|
337
255
|
common.setSelected(null);
|
|
338
256
|
this.removeSelect();
|
|
@@ -341,40 +259,36 @@ class WorkspaceCommentSvg extends WorkspaceComment {
|
|
|
341
259
|
|
|
342
260
|
/**
|
|
343
261
|
* Select this comment. Highlight it visually.
|
|
344
|
-
* @
|
|
262
|
+
* @internal
|
|
345
263
|
*/
|
|
346
264
|
addSelect() {
|
|
347
|
-
dom.addClass(
|
|
348
|
-
/** @type {!Element} */ (this.svgGroup_), 'blocklySelected');
|
|
265
|
+
dom.addClass(this.svgGroup_ as Element, 'blocklySelected');
|
|
349
266
|
this.setFocus();
|
|
350
267
|
}
|
|
351
268
|
|
|
352
269
|
/**
|
|
353
270
|
* Unselect this comment. Remove its highlighting.
|
|
354
|
-
* @
|
|
271
|
+
* @internal
|
|
355
272
|
*/
|
|
356
273
|
removeSelect() {
|
|
357
|
-
dom.removeClass(
|
|
358
|
-
/** @type {!Element} */ (this.svgGroup_), 'blocklySelected');
|
|
274
|
+
dom.removeClass(this.svgGroup_ as Element, 'blocklySelected');
|
|
359
275
|
this.blurFocus();
|
|
360
276
|
}
|
|
361
277
|
|
|
362
278
|
/**
|
|
363
279
|
* Focus this comment. Highlight it visually.
|
|
364
|
-
* @
|
|
280
|
+
* @internal
|
|
365
281
|
*/
|
|
366
282
|
addFocus() {
|
|
367
|
-
dom.addClass(
|
|
368
|
-
/** @type {!Element} */ (this.svgGroup_), 'blocklyFocused');
|
|
283
|
+
dom.addClass(this.svgGroup_ as Element, 'blocklyFocused');
|
|
369
284
|
}
|
|
370
285
|
|
|
371
286
|
/**
|
|
372
287
|
* Unfocus this comment. Remove its highlighting.
|
|
373
|
-
* @
|
|
288
|
+
* @internal
|
|
374
289
|
*/
|
|
375
290
|
removeFocus() {
|
|
376
|
-
dom.removeClass(
|
|
377
|
-
/** @type {!Element} */ (this.svgGroup_), 'blocklyFocused');
|
|
291
|
+
dom.removeClass(this.svgGroup_ as Element, 'blocklyFocused');
|
|
378
292
|
}
|
|
379
293
|
|
|
380
294
|
/**
|
|
@@ -383,36 +297,37 @@ class WorkspaceCommentSvg extends WorkspaceComment {
|
|
|
383
297
|
* If the comment is on the workspace, (0, 0) is the origin of the workspace
|
|
384
298
|
* coordinate system.
|
|
385
299
|
* This does not change with workspace scale.
|
|
386
|
-
* @return
|
|
387
|
-
*
|
|
388
|
-
* @package
|
|
300
|
+
* @return Object with .x and .y properties in workspace coordinates.
|
|
301
|
+
* @internal
|
|
389
302
|
*/
|
|
390
|
-
getRelativeToSurfaceXY() {
|
|
303
|
+
getRelativeToSurfaceXY(): Coordinate {
|
|
391
304
|
let x = 0;
|
|
392
305
|
let y = 0;
|
|
393
306
|
|
|
394
307
|
const dragSurfaceGroup = this.useDragSurface_ ?
|
|
395
|
-
this.workspace.getBlockDragSurface()
|
|
308
|
+
this.workspace.getBlockDragSurface()!.getGroup() :
|
|
396
309
|
null;
|
|
397
310
|
|
|
398
311
|
let element = this.getSvgRoot();
|
|
399
312
|
if (element) {
|
|
400
313
|
do {
|
|
401
314
|
// Loop through this comment and every parent.
|
|
402
|
-
const xy = svgMath.getRelativeXY(
|
|
315
|
+
const xy = svgMath.getRelativeXY(element as Element);
|
|
403
316
|
x += xy.x;
|
|
404
317
|
y += xy.y;
|
|
405
318
|
// If this element is the current element on the drag surface, include
|
|
406
319
|
// the translation of the drag surface itself.
|
|
407
320
|
if (this.useDragSurface_ &&
|
|
408
|
-
this.workspace.getBlockDragSurface()
|
|
321
|
+
this.workspace.getBlockDragSurface()!.getCurrentBlock() ===
|
|
409
322
|
element) {
|
|
410
323
|
const surfaceTranslation =
|
|
411
|
-
this.workspace.getBlockDragSurface()
|
|
324
|
+
this.workspace.getBlockDragSurface()!.getSurfaceTranslation();
|
|
412
325
|
x += surfaceTranslation.x;
|
|
413
326
|
y += surfaceTranslation.y;
|
|
414
327
|
}
|
|
415
|
-
|
|
328
|
+
// AnyDuringMigration because: Type 'ParentNode | null' is not
|
|
329
|
+
// assignable to type 'SVGElement'.
|
|
330
|
+
element = element.parentNode as AnyDuringMigration;
|
|
416
331
|
} while (element && element !== this.workspace.getBubbleCanvas() &&
|
|
417
332
|
element !== dragSurfaceGroup);
|
|
418
333
|
}
|
|
@@ -422,13 +337,13 @@ class WorkspaceCommentSvg extends WorkspaceComment {
|
|
|
422
337
|
|
|
423
338
|
/**
|
|
424
339
|
* Move a comment by a relative offset.
|
|
425
|
-
* @param
|
|
426
|
-
* @param
|
|
427
|
-
* @
|
|
340
|
+
* @param dx Horizontal offset, in workspace units.
|
|
341
|
+
* @param dy Vertical offset, in workspace units.
|
|
342
|
+
* @internal
|
|
428
343
|
*/
|
|
429
|
-
moveBy(dx, dy) {
|
|
430
|
-
const event =
|
|
431
|
-
new (eventUtils.get(eventUtils.COMMENT_MOVE))(this)
|
|
344
|
+
override moveBy(dx: number, dy: number) {
|
|
345
|
+
const event =
|
|
346
|
+
new (eventUtils.get(eventUtils.COMMENT_MOVE))!(this) as CommentMove;
|
|
432
347
|
// TODO: Do I need to look up the relative to surface XY position here?
|
|
433
348
|
const xy = this.getRelativeToSurfaceXY();
|
|
434
349
|
this.translate(xy.x + dx, xy.y + dy);
|
|
@@ -441,11 +356,11 @@ class WorkspaceCommentSvg extends WorkspaceComment {
|
|
|
441
356
|
/**
|
|
442
357
|
* Transforms a comment by setting the translation on the transform attribute
|
|
443
358
|
* of the block's SVG.
|
|
444
|
-
* @param
|
|
445
|
-
* @param
|
|
446
|
-
* @
|
|
359
|
+
* @param x The x coordinate of the translation in workspace units.
|
|
360
|
+
* @param y The y coordinate of the translation in workspace units.
|
|
361
|
+
* @internal
|
|
447
362
|
*/
|
|
448
|
-
translate(x, y) {
|
|
363
|
+
translate(x: number, y: number) {
|
|
449
364
|
this.xy_ = new Coordinate(x, y);
|
|
450
365
|
this.getSvgRoot().setAttribute(
|
|
451
366
|
'transform', 'translate(' + x + ',' + y + ')');
|
|
@@ -455,7 +370,7 @@ class WorkspaceCommentSvg extends WorkspaceComment {
|
|
|
455
370
|
* Move this comment to its workspace's drag surface, accounting for
|
|
456
371
|
* positioning. Generally should be called at the same time as
|
|
457
372
|
* setDragging(true). Does nothing if useDragSurface_ is false.
|
|
458
|
-
* @
|
|
373
|
+
* @internal
|
|
459
374
|
*/
|
|
460
375
|
moveToDragSurface() {
|
|
461
376
|
if (!this.useDragSurface_) {
|
|
@@ -467,47 +382,48 @@ class WorkspaceCommentSvg extends WorkspaceComment {
|
|
|
467
382
|
// This is in workspace coordinates.
|
|
468
383
|
const xy = this.getRelativeToSurfaceXY();
|
|
469
384
|
this.clearTransformAttributes_();
|
|
470
|
-
this.workspace.getBlockDragSurface()
|
|
385
|
+
this.workspace.getBlockDragSurface()!.translateSurface(xy.x, xy.y);
|
|
471
386
|
// Execute the move on the top-level SVG component
|
|
472
|
-
this.workspace.getBlockDragSurface()
|
|
387
|
+
this.workspace.getBlockDragSurface()!.setBlocksAndShow(this.getSvgRoot());
|
|
473
388
|
}
|
|
474
389
|
|
|
475
390
|
/**
|
|
476
391
|
* Move this comment during a drag, taking into account whether we are using a
|
|
477
392
|
* drag surface to translate blocks.
|
|
478
|
-
* @param
|
|
479
|
-
*
|
|
480
|
-
* @param
|
|
481
|
-
*
|
|
482
|
-
* @package
|
|
393
|
+
* @param dragSurface The surface that carries rendered items during a drag,
|
|
394
|
+
* or null if no drag surface is in use.
|
|
395
|
+
* @param newLoc The location to translate to, in workspace coordinates.
|
|
396
|
+
* @internal
|
|
483
397
|
*/
|
|
484
|
-
moveDuringDrag(dragSurface, newLoc) {
|
|
398
|
+
moveDuringDrag(dragSurface: BlockDragSurfaceSvg, newLoc: Coordinate) {
|
|
485
399
|
if (dragSurface) {
|
|
486
400
|
dragSurface.translateSurface(newLoc.x, newLoc.y);
|
|
487
401
|
} else {
|
|
488
|
-
this.svgGroup_.translate_ =
|
|
402
|
+
(this.svgGroup_ as AnyDuringMigration).translate_ =
|
|
489
403
|
'translate(' + newLoc.x + ',' + newLoc.y + ')';
|
|
490
|
-
this.svgGroup_
|
|
491
|
-
|
|
404
|
+
(this.svgGroup_ as AnyDuringMigration)
|
|
405
|
+
.setAttribute(
|
|
406
|
+
'transform',
|
|
407
|
+
(this.svgGroup_ as AnyDuringMigration).translate_ +
|
|
408
|
+
(this.svgGroup_ as AnyDuringMigration).skew_);
|
|
492
409
|
}
|
|
493
410
|
}
|
|
494
411
|
|
|
495
412
|
/**
|
|
496
413
|
* Move the bubble group to the specified location in workspace coordinates.
|
|
497
|
-
* @param
|
|
498
|
-
* @param
|
|
499
|
-
* @
|
|
414
|
+
* @param x The x position to move to.
|
|
415
|
+
* @param y The y position to move to.
|
|
416
|
+
* @internal
|
|
500
417
|
*/
|
|
501
|
-
moveTo(x, y) {
|
|
418
|
+
moveTo(x: number, y: number) {
|
|
502
419
|
this.translate(x, y);
|
|
503
420
|
}
|
|
504
421
|
|
|
505
422
|
/**
|
|
506
423
|
* Clear the comment of transform="..." attributes.
|
|
507
424
|
* Used when the comment is switching from 3d to 2d transform or vice versa.
|
|
508
|
-
* @private
|
|
509
425
|
*/
|
|
510
|
-
clearTransformAttributes_() {
|
|
426
|
+
private clearTransformAttributes_() {
|
|
511
427
|
this.getSvgRoot().removeAttribute('transform');
|
|
512
428
|
}
|
|
513
429
|
|
|
@@ -515,10 +431,10 @@ class WorkspaceCommentSvg extends WorkspaceComment {
|
|
|
515
431
|
* Returns the coordinates of a bounding box describing the dimensions of this
|
|
516
432
|
* comment.
|
|
517
433
|
* Coordinate system: workspace coordinates.
|
|
518
|
-
* @return
|
|
519
|
-
* @
|
|
434
|
+
* @return Object with coordinates of the bounding box.
|
|
435
|
+
* @internal
|
|
520
436
|
*/
|
|
521
|
-
getBoundingRectangle() {
|
|
437
|
+
getBoundingRectangle(): Rect {
|
|
522
438
|
const blockXY = this.getRelativeToSurfaceXY();
|
|
523
439
|
const commentBounds = this.getHeightWidth();
|
|
524
440
|
const top = blockXY.y;
|
|
@@ -541,33 +457,31 @@ class WorkspaceCommentSvg extends WorkspaceComment {
|
|
|
541
457
|
|
|
542
458
|
/**
|
|
543
459
|
* Add or remove the UI indicating if this comment is movable or not.
|
|
544
|
-
* @
|
|
460
|
+
* @internal
|
|
545
461
|
*/
|
|
546
462
|
updateMovable() {
|
|
547
463
|
if (this.isMovable()) {
|
|
548
|
-
dom.addClass(
|
|
549
|
-
/** @type {!Element} */ (this.svgGroup_), 'blocklyDraggable');
|
|
464
|
+
dom.addClass(this.svgGroup_ as Element, 'blocklyDraggable');
|
|
550
465
|
} else {
|
|
551
|
-
dom.removeClass(
|
|
552
|
-
/** @type {!Element} */ (this.svgGroup_), 'blocklyDraggable');
|
|
466
|
+
dom.removeClass(this.svgGroup_ as Element, 'blocklyDraggable');
|
|
553
467
|
}
|
|
554
468
|
}
|
|
555
469
|
|
|
556
470
|
/**
|
|
557
471
|
* Set whether this comment is movable or not.
|
|
558
|
-
* @param
|
|
559
|
-
* @
|
|
472
|
+
* @param movable True if movable.
|
|
473
|
+
* @internal
|
|
560
474
|
*/
|
|
561
|
-
setMovable(movable) {
|
|
475
|
+
override setMovable(movable: boolean) {
|
|
562
476
|
super.setMovable(movable);
|
|
563
477
|
this.updateMovable();
|
|
564
478
|
}
|
|
565
479
|
|
|
566
480
|
/**
|
|
567
481
|
* Set whether this comment is editable or not.
|
|
568
|
-
* @param
|
|
482
|
+
* @param editable True if editable.
|
|
569
483
|
*/
|
|
570
|
-
setEditable(editable) {
|
|
484
|
+
override setEditable(editable: boolean) {
|
|
571
485
|
super.setEditable(editable);
|
|
572
486
|
if (this.textarea_) {
|
|
573
487
|
this.textarea_.readOnly = !editable;
|
|
@@ -577,46 +491,44 @@ class WorkspaceCommentSvg extends WorkspaceComment {
|
|
|
577
491
|
/**
|
|
578
492
|
* Recursively adds or removes the dragging class to this node and its
|
|
579
493
|
* children.
|
|
580
|
-
* @param
|
|
581
|
-
* @
|
|
494
|
+
* @param adding True if adding, false if removing.
|
|
495
|
+
* @internal
|
|
582
496
|
*/
|
|
583
|
-
setDragging(adding) {
|
|
497
|
+
setDragging(adding: boolean) {
|
|
584
498
|
if (adding) {
|
|
585
499
|
const group = this.getSvgRoot();
|
|
586
|
-
group.translate_ = '';
|
|
587
|
-
group.skew_ = '';
|
|
588
|
-
dom.addClass(
|
|
589
|
-
/** @type {!Element} */ (this.svgGroup_), 'blocklyDragging');
|
|
500
|
+
(group as AnyDuringMigration).translate_ = '';
|
|
501
|
+
(group as AnyDuringMigration).skew_ = '';
|
|
502
|
+
dom.addClass(this.svgGroup_ as Element, 'blocklyDragging');
|
|
590
503
|
} else {
|
|
591
|
-
dom.removeClass(
|
|
592
|
-
/** @type {!Element} */ (this.svgGroup_), 'blocklyDragging');
|
|
504
|
+
dom.removeClass(this.svgGroup_ as Element, 'blocklyDragging');
|
|
593
505
|
}
|
|
594
506
|
}
|
|
595
507
|
|
|
596
508
|
/**
|
|
597
509
|
* Return the root node of the SVG or null if none exists.
|
|
598
|
-
* @return
|
|
599
|
-
* @
|
|
510
|
+
* @return The root SVG node (probably a group).
|
|
511
|
+
* @internal
|
|
600
512
|
*/
|
|
601
|
-
getSvgRoot() {
|
|
513
|
+
getSvgRoot(): SVGElement {
|
|
602
514
|
return this.svgGroup_;
|
|
603
515
|
}
|
|
604
516
|
|
|
605
517
|
/**
|
|
606
518
|
* Returns this comment's text.
|
|
607
|
-
* @return
|
|
608
|
-
* @
|
|
519
|
+
* @return Comment text.
|
|
520
|
+
* @internal
|
|
609
521
|
*/
|
|
610
|
-
getContent() {
|
|
522
|
+
override getContent(): string {
|
|
611
523
|
return this.textarea_ ? this.textarea_.value : this.content_;
|
|
612
524
|
}
|
|
613
525
|
|
|
614
526
|
/**
|
|
615
527
|
* Set this comment's content.
|
|
616
|
-
* @param
|
|
617
|
-
* @
|
|
528
|
+
* @param content Comment content.
|
|
529
|
+
* @internal
|
|
618
530
|
*/
|
|
619
|
-
setContent(content) {
|
|
531
|
+
override setContent(content: string) {
|
|
620
532
|
super.setContent(content);
|
|
621
533
|
if (this.textarea_) {
|
|
622
534
|
this.textarea_.value = content;
|
|
@@ -625,17 +537,14 @@ class WorkspaceCommentSvg extends WorkspaceComment {
|
|
|
625
537
|
|
|
626
538
|
/**
|
|
627
539
|
* Update the cursor over this comment by adding or removing a class.
|
|
628
|
-
* @param
|
|
629
|
-
*
|
|
630
|
-
* @package
|
|
540
|
+
* @param enable True if the delete cursor should be shown, false otherwise.
|
|
541
|
+
* @internal
|
|
631
542
|
*/
|
|
632
|
-
setDeleteStyle(enable) {
|
|
543
|
+
setDeleteStyle(enable: boolean) {
|
|
633
544
|
if (enable) {
|
|
634
|
-
dom.addClass(
|
|
635
|
-
/** @type {!Element} */ (this.svgGroup_), 'blocklyDraggingDelete');
|
|
545
|
+
dom.addClass(this.svgGroup_ as Element, 'blocklyDraggingDelete');
|
|
636
546
|
} else {
|
|
637
|
-
dom.removeClass(
|
|
638
|
-
/** @type {!Element} */ (this.svgGroup_), 'blocklyDraggingDelete');
|
|
547
|
+
dom.removeClass(this.svgGroup_ as Element, 'blocklyDraggingDelete');
|
|
639
548
|
}
|
|
640
549
|
}
|
|
641
550
|
|
|
@@ -643,42 +552,50 @@ class WorkspaceCommentSvg extends WorkspaceComment {
|
|
|
643
552
|
* Set whether auto-layout of this bubble is enabled. The first time a bubble
|
|
644
553
|
* is shown it positions itself to not cover any blocks. Once a user has
|
|
645
554
|
* dragged it to reposition, it renders where the user put it.
|
|
646
|
-
* @param
|
|
647
|
-
*
|
|
648
|
-
* @package
|
|
555
|
+
* @param _enable True if auto-layout should be enabled, false otherwise.
|
|
556
|
+
* @internal
|
|
649
557
|
*/
|
|
650
|
-
setAutoLayout(_enable) {
|
|
651
|
-
|
|
652
|
-
}
|
|
558
|
+
setAutoLayout(_enable: boolean) {}
|
|
559
|
+
// NOP for compatibility with the bubble dragger.
|
|
653
560
|
|
|
654
561
|
/**
|
|
655
562
|
* Encode a comment subtree as XML with XY coordinates.
|
|
656
|
-
* @param
|
|
657
|
-
* @return
|
|
658
|
-
* @
|
|
563
|
+
* @param opt_noId True if the encoder should skip the comment ID.
|
|
564
|
+
* @return Tree of XML elements.
|
|
565
|
+
* @internal
|
|
659
566
|
*/
|
|
660
|
-
toXmlWithXY(opt_noId) {
|
|
661
|
-
let width; // Not used in LTR.
|
|
567
|
+
override toXmlWithXY(opt_noId?: boolean): Element {
|
|
568
|
+
let width = 0; // Not used in LTR.
|
|
662
569
|
if (this.workspace.RTL) {
|
|
663
570
|
// Here be performance dragons: This calls getMetrics().
|
|
664
571
|
width = this.workspace.getWidth();
|
|
665
572
|
}
|
|
666
573
|
const element = this.toXml(opt_noId);
|
|
667
574
|
const xy = this.getRelativeToSurfaceXY();
|
|
575
|
+
// AnyDuringMigration because: Argument of type 'number' is not assignable
|
|
576
|
+
// to parameter of type 'string'.
|
|
668
577
|
element.setAttribute(
|
|
669
|
-
'x',
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
578
|
+
'x',
|
|
579
|
+
Math.round(this.workspace.RTL ? width - xy.x : xy.x) as
|
|
580
|
+
AnyDuringMigration);
|
|
581
|
+
// AnyDuringMigration because: Argument of type 'number' is not assignable
|
|
582
|
+
// to parameter of type 'string'.
|
|
583
|
+
element.setAttribute('y', Math.round(xy.y) as AnyDuringMigration);
|
|
584
|
+
// AnyDuringMigration because: Argument of type 'number' is not assignable
|
|
585
|
+
// to parameter of type 'string'.
|
|
586
|
+
element.setAttribute('h', this.getHeight() as AnyDuringMigration);
|
|
587
|
+
// AnyDuringMigration because: Argument of type 'number' is not assignable
|
|
588
|
+
// to parameter of type 'string'.
|
|
589
|
+
element.setAttribute('w', this.getWidth() as AnyDuringMigration);
|
|
673
590
|
return element;
|
|
674
591
|
}
|
|
675
592
|
|
|
676
593
|
/**
|
|
677
594
|
* Encode a comment for copying.
|
|
678
|
-
* @return
|
|
679
|
-
* @
|
|
595
|
+
* @return Copy metadata.
|
|
596
|
+
* @internal
|
|
680
597
|
*/
|
|
681
|
-
toCopyData() {
|
|
598
|
+
toCopyData(): CopyData {
|
|
682
599
|
return {
|
|
683
600
|
saveInfo: this.toXmlWithXY(),
|
|
684
601
|
source: this.workspace,
|
|
@@ -688,17 +605,16 @@ class WorkspaceCommentSvg extends WorkspaceComment {
|
|
|
688
605
|
|
|
689
606
|
/**
|
|
690
607
|
* Returns a bounding box describing the dimensions of this comment.
|
|
691
|
-
* @return
|
|
692
|
-
*
|
|
693
|
-
* @package
|
|
608
|
+
* @return Object with height and width properties in workspace units.
|
|
609
|
+
* @internal
|
|
694
610
|
*/
|
|
695
|
-
getHeightWidth() {
|
|
611
|
+
getHeightWidth(): {height: number, width: number} {
|
|
696
612
|
return {width: this.getWidth(), height: this.getHeight()};
|
|
697
613
|
}
|
|
698
614
|
|
|
699
615
|
/**
|
|
700
616
|
* Renders the workspace comment.
|
|
701
|
-
* @
|
|
617
|
+
* @internal
|
|
702
618
|
*/
|
|
703
619
|
render() {
|
|
704
620
|
if (this.rendered_) {
|
|
@@ -709,11 +625,15 @@ class WorkspaceCommentSvg extends WorkspaceComment {
|
|
|
709
625
|
|
|
710
626
|
// Add text area
|
|
711
627
|
this.createEditor_();
|
|
712
|
-
|
|
628
|
+
// AnyDuringMigration because: Argument of type 'SVGForeignObjectElement |
|
|
629
|
+
// null' is not assignable to parameter of type 'Node'.
|
|
630
|
+
this.svgGroup_.appendChild(this.foreignObject_ as AnyDuringMigration);
|
|
713
631
|
|
|
714
632
|
this.svgHandleTarget_ = dom.createSvgElement(
|
|
715
633
|
Svg.RECT, {'class': 'blocklyCommentHandleTarget', 'x': 0, 'y': 0});
|
|
716
|
-
|
|
634
|
+
// AnyDuringMigration because: Argument of type 'SVGRectElement | null' is
|
|
635
|
+
// not assignable to parameter of type 'Node'.
|
|
636
|
+
this.svgGroup_.appendChild(this.svgHandleTarget_ as AnyDuringMigration);
|
|
717
637
|
this.svgRectTarget_ = dom.createSvgElement(Svg.RECT, {
|
|
718
638
|
'class': 'blocklyCommentTarget',
|
|
719
639
|
'x': 0,
|
|
@@ -721,7 +641,9 @@ class WorkspaceCommentSvg extends WorkspaceComment {
|
|
|
721
641
|
'rx': BORDER_RADIUS,
|
|
722
642
|
'ry': BORDER_RADIUS,
|
|
723
643
|
});
|
|
724
|
-
|
|
644
|
+
// AnyDuringMigration because: Argument of type 'SVGRectElement | null' is
|
|
645
|
+
// not assignable to parameter of type 'Node'.
|
|
646
|
+
this.svgGroup_.appendChild(this.svgRectTarget_ as AnyDuringMigration);
|
|
725
647
|
|
|
726
648
|
// Add the resize icon
|
|
727
649
|
this.addResizeDom_();
|
|
@@ -733,91 +655,90 @@ class WorkspaceCommentSvg extends WorkspaceComment {
|
|
|
733
655
|
this.setSize_(size.width, size.height);
|
|
734
656
|
|
|
735
657
|
// Set the content
|
|
736
|
-
this.textarea_
|
|
658
|
+
this.textarea_!.value = this.content_;
|
|
737
659
|
|
|
738
660
|
this.rendered_ = true;
|
|
739
661
|
|
|
740
662
|
if (this.resizeGroup_) {
|
|
741
663
|
browserEvents.conditionalBind(
|
|
742
|
-
|
|
743
|
-
this.resizeMouseDown_);
|
|
664
|
+
(this.resizeGroup_), 'mousedown', this, this.resizeMouseDown_);
|
|
744
665
|
}
|
|
745
666
|
|
|
746
667
|
if (this.isDeletable()) {
|
|
747
668
|
browserEvents.conditionalBind(
|
|
748
|
-
|
|
669
|
+
this.deleteGroup_ as SVGGElement, 'mousedown', this,
|
|
749
670
|
this.deleteMouseDown_);
|
|
750
671
|
browserEvents.conditionalBind(
|
|
751
|
-
|
|
672
|
+
this.deleteGroup_ as SVGGElement, 'mouseout', this,
|
|
752
673
|
this.deleteMouseOut_);
|
|
753
674
|
browserEvents.conditionalBind(
|
|
754
|
-
|
|
675
|
+
this.deleteGroup_ as SVGGElement, 'mouseup', this,
|
|
755
676
|
this.deleteMouseUp_);
|
|
756
677
|
}
|
|
757
678
|
}
|
|
758
679
|
|
|
759
680
|
/**
|
|
760
681
|
* Create the text area for the comment.
|
|
761
|
-
* @return
|
|
762
|
-
* @private
|
|
682
|
+
* @return The top-level node of the editor.
|
|
763
683
|
*/
|
|
764
|
-
createEditor_() {
|
|
684
|
+
private createEditor_(): Element {
|
|
765
685
|
/* Create the editor. Here's the markup that will be generated:
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
this.foreignObject_ = dom.createSvgElement(
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
},
|
|
780
|
-
null);
|
|
686
|
+
<foreignObject class="blocklyCommentForeignObject" x="0" y="10"
|
|
687
|
+
width="164" height="164"> <body xmlns="http://www.w3.org/1999/xhtml"
|
|
688
|
+
class="blocklyMinimalBody"> <textarea
|
|
689
|
+
xmlns="http://www.w3.org/1999/xhtml" class="blocklyCommentTextarea"
|
|
690
|
+
style="height: 164px; width: 164px;"></textarea>
|
|
691
|
+
</body>
|
|
692
|
+
</foreignObject>
|
|
693
|
+
*/
|
|
694
|
+
this.foreignObject_ = dom.createSvgElement(Svg.FOREIGNOBJECT, {
|
|
695
|
+
'x': 0,
|
|
696
|
+
'y': WorkspaceCommentSvg.TOP_OFFSET,
|
|
697
|
+
'class': 'blocklyCommentForeignObject',
|
|
698
|
+
});
|
|
781
699
|
const body = document.createElementNS(dom.HTML_NS, 'body');
|
|
782
700
|
body.setAttribute('xmlns', dom.HTML_NS);
|
|
783
701
|
body.className = 'blocklyMinimalBody';
|
|
784
|
-
const textarea = document.createElementNS(dom.HTML_NS, 'textarea')
|
|
702
|
+
const textarea = document.createElementNS(dom.HTML_NS, 'textarea') as
|
|
703
|
+
HTMLTextAreaElement;
|
|
785
704
|
textarea.className = 'blocklyCommentTextarea';
|
|
786
705
|
textarea.setAttribute('dir', this.RTL ? 'RTL' : 'LTR');
|
|
787
706
|
textarea.readOnly = !this.isEditable();
|
|
788
707
|
body.appendChild(textarea);
|
|
789
708
|
this.textarea_ = textarea;
|
|
790
|
-
this.foreignObject_
|
|
709
|
+
this.foreignObject_!.appendChild(body);
|
|
791
710
|
// Don't zoom with mousewheel.
|
|
792
|
-
browserEvents.conditionalBind(
|
|
793
|
-
|
|
794
|
-
|
|
711
|
+
browserEvents.conditionalBind(
|
|
712
|
+
textarea, 'wheel', this, function(e: AnyDuringMigration) {
|
|
713
|
+
e.stopPropagation();
|
|
714
|
+
});
|
|
795
715
|
browserEvents.conditionalBind(
|
|
796
716
|
textarea, 'change', this,
|
|
797
|
-
/**
|
|
798
|
-
|
|
799
|
-
* @param {Event} e Unused event parameter
|
|
800
|
-
*/
|
|
717
|
+
/** @param e Unused event parameter */
|
|
718
|
+
/* eslint-enable no-unused-vars */
|
|
801
719
|
function(
|
|
802
|
-
|
|
803
|
-
/* eslint-
|
|
720
|
+
this: WorkspaceCommentSvg,
|
|
721
|
+
/* eslint-disable no-unused-vars */ e: Event) {
|
|
804
722
|
this.setContent(textarea.value);
|
|
805
723
|
});
|
|
806
|
-
|
|
724
|
+
// AnyDuringMigration because: Type 'SVGForeignObjectElement | null' is not
|
|
725
|
+
// assignable to type 'Element'.
|
|
726
|
+
return this.foreignObject_ as AnyDuringMigration;
|
|
807
727
|
}
|
|
808
728
|
|
|
809
|
-
/**
|
|
810
|
-
|
|
811
|
-
* @private
|
|
812
|
-
*/
|
|
813
|
-
addResizeDom_() {
|
|
729
|
+
/** Add the resize icon to the DOM */
|
|
730
|
+
private addResizeDom_() {
|
|
814
731
|
this.resizeGroup_ = dom.createSvgElement(
|
|
815
732
|
Svg.G, {'class': this.RTL ? 'blocklyResizeSW' : 'blocklyResizeSE'},
|
|
816
733
|
this.svgGroup_);
|
|
734
|
+
// AnyDuringMigration because: Argument of type 'SVGGElement | null' is not
|
|
735
|
+
// assignable to parameter of type 'Element | undefined'.
|
|
817
736
|
dom.createSvgElement(
|
|
818
737
|
Svg.POLYGON,
|
|
819
738
|
{'points': '0,x x,x x,0'.replace(/x/g, RESIZE_SIZE.toString())},
|
|
820
|
-
this.resizeGroup_);
|
|
739
|
+
this.resizeGroup_ as AnyDuringMigration);
|
|
740
|
+
// AnyDuringMigration because: Argument of type 'SVGGElement | null' is not
|
|
741
|
+
// assignable to parameter of type 'Element | undefined'.
|
|
821
742
|
dom.createSvgElement(
|
|
822
743
|
Svg.LINE, {
|
|
823
744
|
'class': 'blocklyResizeLine',
|
|
@@ -826,7 +747,9 @@ class WorkspaceCommentSvg extends WorkspaceComment {
|
|
|
826
747
|
'x2': RESIZE_SIZE - 1,
|
|
827
748
|
'y2': RESIZE_SIZE / 3,
|
|
828
749
|
},
|
|
829
|
-
this.resizeGroup_);
|
|
750
|
+
this.resizeGroup_ as AnyDuringMigration);
|
|
751
|
+
// AnyDuringMigration because: Argument of type 'SVGGElement | null' is not
|
|
752
|
+
// assignable to parameter of type 'Element | undefined'.
|
|
830
753
|
dom.createSvgElement(
|
|
831
754
|
Svg.LINE, {
|
|
832
755
|
'class': 'blocklyResizeLine',
|
|
@@ -835,21 +758,22 @@ class WorkspaceCommentSvg extends WorkspaceComment {
|
|
|
835
758
|
'x2': RESIZE_SIZE - 1,
|
|
836
759
|
'y2': RESIZE_SIZE * 2 / 3,
|
|
837
760
|
},
|
|
838
|
-
this.resizeGroup_);
|
|
761
|
+
this.resizeGroup_ as AnyDuringMigration);
|
|
839
762
|
}
|
|
840
763
|
|
|
841
|
-
/**
|
|
842
|
-
|
|
843
|
-
* @private
|
|
844
|
-
*/
|
|
845
|
-
addDeleteDom_() {
|
|
764
|
+
/** Add the delete icon to the DOM */
|
|
765
|
+
private addDeleteDom_() {
|
|
846
766
|
this.deleteGroup_ = dom.createSvgElement(
|
|
847
767
|
Svg.G, {'class': 'blocklyCommentDeleteIcon'}, this.svgGroup_);
|
|
768
|
+
// AnyDuringMigration because: Argument of type 'SVGGElement | null' is not
|
|
769
|
+
// assignable to parameter of type 'Element | undefined'.
|
|
848
770
|
this.deleteIconBorder_ = dom.createSvgElement(
|
|
849
771
|
Svg.CIRCLE,
|
|
850
772
|
{'class': 'blocklyDeleteIconShape', 'r': '7', 'cx': '7.5', 'cy': '7.5'},
|
|
851
|
-
this.deleteGroup_);
|
|
773
|
+
this.deleteGroup_ as AnyDuringMigration);
|
|
852
774
|
// x icon.
|
|
775
|
+
// AnyDuringMigration because: Argument of type 'SVGGElement | null' is not
|
|
776
|
+
// assignable to parameter of type 'Element | undefined'.
|
|
853
777
|
dom.createSvgElement(
|
|
854
778
|
Svg.LINE, {
|
|
855
779
|
'x1': '5',
|
|
@@ -859,7 +783,9 @@ class WorkspaceCommentSvg extends WorkspaceComment {
|
|
|
859
783
|
'stroke': '#fff',
|
|
860
784
|
'stroke-width': '2',
|
|
861
785
|
},
|
|
862
|
-
this.deleteGroup_);
|
|
786
|
+
this.deleteGroup_ as AnyDuringMigration);
|
|
787
|
+
// AnyDuringMigration because: Argument of type 'SVGGElement | null' is not
|
|
788
|
+
// assignable to parameter of type 'Element | undefined'.
|
|
863
789
|
dom.createSvgElement(
|
|
864
790
|
Svg.LINE, {
|
|
865
791
|
'x1': '5',
|
|
@@ -869,15 +795,14 @@ class WorkspaceCommentSvg extends WorkspaceComment {
|
|
|
869
795
|
'stroke': '#fff',
|
|
870
796
|
'stroke-width': '2',
|
|
871
797
|
},
|
|
872
|
-
this.deleteGroup_);
|
|
798
|
+
this.deleteGroup_ as AnyDuringMigration);
|
|
873
799
|
}
|
|
874
800
|
|
|
875
801
|
/**
|
|
876
802
|
* Handle a mouse-down on comment's resize corner.
|
|
877
|
-
* @param
|
|
878
|
-
* @private
|
|
803
|
+
* @param e Mouse down event.
|
|
879
804
|
*/
|
|
880
|
-
resizeMouseDown_(e) {
|
|
805
|
+
private resizeMouseDown_(e: MouseEvent) {
|
|
881
806
|
this.unbindDragEvents_();
|
|
882
807
|
if (browserEvents.isRightButton(e)) {
|
|
883
808
|
// No right-click.
|
|
@@ -901,47 +826,39 @@ class WorkspaceCommentSvg extends WorkspaceComment {
|
|
|
901
826
|
|
|
902
827
|
/**
|
|
903
828
|
* Handle a mouse-down on comment's delete icon.
|
|
904
|
-
* @param
|
|
905
|
-
* @private
|
|
829
|
+
* @param e Mouse down event.
|
|
906
830
|
*/
|
|
907
|
-
deleteMouseDown_(e) {
|
|
831
|
+
private deleteMouseDown_(e: Event) {
|
|
908
832
|
// Highlight the delete icon.
|
|
909
833
|
dom.addClass(
|
|
910
|
-
|
|
911
|
-
'blocklyDeleteIconHighlighted');
|
|
834
|
+
this.deleteIconBorder_ as Element, 'blocklyDeleteIconHighlighted');
|
|
912
835
|
// This event has been handled. No need to bubble up to the document.
|
|
913
836
|
e.stopPropagation();
|
|
914
837
|
}
|
|
915
838
|
|
|
916
839
|
/**
|
|
917
840
|
* Handle a mouse-out on comment's delete icon.
|
|
918
|
-
* @param
|
|
919
|
-
* @private
|
|
841
|
+
* @param _e Mouse out event.
|
|
920
842
|
*/
|
|
921
|
-
deleteMouseOut_(_e) {
|
|
843
|
+
private deleteMouseOut_(_e: Event) {
|
|
922
844
|
// Restore highlight on the delete icon.
|
|
923
845
|
dom.removeClass(
|
|
924
|
-
|
|
925
|
-
'blocklyDeleteIconHighlighted');
|
|
846
|
+
this.deleteIconBorder_ as Element, 'blocklyDeleteIconHighlighted');
|
|
926
847
|
}
|
|
927
848
|
|
|
928
849
|
/**
|
|
929
850
|
* Handle a mouse-up on comment's delete icon.
|
|
930
|
-
* @param
|
|
931
|
-
* @private
|
|
851
|
+
* @param e Mouse up event.
|
|
932
852
|
*/
|
|
933
|
-
deleteMouseUp_(e) {
|
|
853
|
+
private deleteMouseUp_(e: Event) {
|
|
934
854
|
// Delete this comment.
|
|
935
855
|
this.dispose();
|
|
936
856
|
// This event has been handled. No need to bubble up to the document.
|
|
937
857
|
e.stopPropagation();
|
|
938
858
|
}
|
|
939
859
|
|
|
940
|
-
/**
|
|
941
|
-
|
|
942
|
-
* @private
|
|
943
|
-
*/
|
|
944
|
-
unbindDragEvents_() {
|
|
860
|
+
/** Stop binding to the global mouseup and mousemove events. */
|
|
861
|
+
private unbindDragEvents_() {
|
|
945
862
|
if (this.onMouseUpWrapper_) {
|
|
946
863
|
browserEvents.unbind(this.onMouseUpWrapper_);
|
|
947
864
|
this.onMouseUpWrapper_ = null;
|
|
@@ -954,20 +871,18 @@ class WorkspaceCommentSvg extends WorkspaceComment {
|
|
|
954
871
|
|
|
955
872
|
/**
|
|
956
873
|
* Handle a mouse-up event while dragging a comment's border or resize handle.
|
|
957
|
-
* @param
|
|
958
|
-
* @private
|
|
874
|
+
* @param _e Mouse up event.
|
|
959
875
|
*/
|
|
960
|
-
resizeMouseUp_(_e) {
|
|
876
|
+
private resizeMouseUp_(_e: Event) {
|
|
961
877
|
Touch.clearTouchIdentifier();
|
|
962
878
|
this.unbindDragEvents_();
|
|
963
879
|
}
|
|
964
880
|
|
|
965
881
|
/**
|
|
966
882
|
* Resize this comment to follow the mouse.
|
|
967
|
-
* @param
|
|
968
|
-
* @private
|
|
883
|
+
* @param e Mouse move event.
|
|
969
884
|
*/
|
|
970
|
-
resizeMouseMove_(e) {
|
|
885
|
+
private resizeMouseMove_(e: MouseEvent) {
|
|
971
886
|
this.autoLayout_ = false;
|
|
972
887
|
const newXY = this.workspace.moveDrag(e);
|
|
973
888
|
this.setSize_(this.RTL ? -newXY.x : newXY.x, newXY.y);
|
|
@@ -976,29 +891,31 @@ class WorkspaceCommentSvg extends WorkspaceComment {
|
|
|
976
891
|
/**
|
|
977
892
|
* Callback function triggered when the comment has resized.
|
|
978
893
|
* Resize the text area accordingly.
|
|
979
|
-
* @private
|
|
980
894
|
*/
|
|
981
|
-
resizeComment_() {
|
|
895
|
+
private resizeComment_() {
|
|
982
896
|
const size = this.getHeightWidth();
|
|
983
897
|
const topOffset = WorkspaceCommentSvg.TOP_OFFSET;
|
|
984
898
|
const textOffset = TEXTAREA_OFFSET * 2;
|
|
985
899
|
|
|
986
|
-
|
|
987
|
-
|
|
900
|
+
// AnyDuringMigration because: Argument of type 'number' is not assignable
|
|
901
|
+
// to parameter of type 'string'.
|
|
902
|
+
this.foreignObject_!.setAttribute(
|
|
903
|
+
'width', size.width as AnyDuringMigration);
|
|
904
|
+
this.foreignObject_!.setAttribute(
|
|
905
|
+
'height', (size.height - topOffset).toString());
|
|
988
906
|
if (this.RTL) {
|
|
989
|
-
this.foreignObject_
|
|
907
|
+
this.foreignObject_!.setAttribute('x', (-size.width).toString());
|
|
990
908
|
}
|
|
991
|
-
this.textarea_
|
|
992
|
-
this.textarea_
|
|
909
|
+
this.textarea_!.style.width = size.width - textOffset + 'px';
|
|
910
|
+
this.textarea_!.style.height = size.height - textOffset - topOffset + 'px';
|
|
993
911
|
}
|
|
994
912
|
|
|
995
913
|
/**
|
|
996
914
|
* Set size
|
|
997
|
-
* @param
|
|
998
|
-
* @param
|
|
999
|
-
* @private
|
|
915
|
+
* @param width width of the container
|
|
916
|
+
* @param height height of the container
|
|
1000
917
|
*/
|
|
1001
|
-
setSize_(width, height) {
|
|
918
|
+
private setSize_(width: number, height: number) {
|
|
1002
919
|
// Minimum size of a comment.
|
|
1003
920
|
width = Math.max(width, 45);
|
|
1004
921
|
height = Math.max(height, 20 + WorkspaceCommentSvg.TOP_OFFSET);
|
|
@@ -1006,14 +923,22 @@ class WorkspaceCommentSvg extends WorkspaceComment {
|
|
|
1006
923
|
this.height_ = height;
|
|
1007
924
|
this.svgRect_.setAttribute('width', width);
|
|
1008
925
|
this.svgRect_.setAttribute('height', height);
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
this.
|
|
1012
|
-
|
|
1013
|
-
|
|
926
|
+
// AnyDuringMigration because: Argument of type 'number' is not assignable
|
|
927
|
+
// to parameter of type 'string'.
|
|
928
|
+
this.svgRectTarget_!.setAttribute('width', width as AnyDuringMigration);
|
|
929
|
+
// AnyDuringMigration because: Argument of type 'number' is not assignable
|
|
930
|
+
// to parameter of type 'string'.
|
|
931
|
+
this.svgRectTarget_!.setAttribute('height', height as AnyDuringMigration);
|
|
932
|
+
// AnyDuringMigration because: Argument of type 'number' is not assignable
|
|
933
|
+
// to parameter of type 'string'.
|
|
934
|
+
this.svgHandleTarget_!.setAttribute('width', width as AnyDuringMigration);
|
|
935
|
+
// AnyDuringMigration because: Argument of type 'number' is not assignable
|
|
936
|
+
// to parameter of type 'string'.
|
|
937
|
+
this.svgHandleTarget_!.setAttribute(
|
|
938
|
+
'height', WorkspaceCommentSvg.TOP_OFFSET as AnyDuringMigration);
|
|
1014
939
|
if (this.RTL) {
|
|
1015
940
|
this.svgRect_.setAttribute('transform', 'scale(-1 1)');
|
|
1016
|
-
this.svgRectTarget_
|
|
941
|
+
this.svgRectTarget_!.setAttribute('transform', 'scale(-1 1)');
|
|
1017
942
|
}
|
|
1018
943
|
|
|
1019
944
|
if (this.resizeGroup_) {
|
|
@@ -1023,18 +948,18 @@ class WorkspaceCommentSvg extends WorkspaceComment {
|
|
|
1023
948
|
'transform',
|
|
1024
949
|
'translate(' + (-width + RESIZE_SIZE) + ',' +
|
|
1025
950
|
(height - RESIZE_SIZE) + ') scale(-1 1)');
|
|
1026
|
-
this.deleteGroup_
|
|
951
|
+
this.deleteGroup_!.setAttribute(
|
|
1027
952
|
'transform',
|
|
1028
|
-
'translate(' + (-width + RESIZE_SIZE) + ',' +
|
|
953
|
+
'translate(' + (-width + RESIZE_SIZE) + ',' + -RESIZE_SIZE +
|
|
1029
954
|
') scale(-1 1)');
|
|
1030
955
|
} else {
|
|
1031
956
|
this.resizeGroup_.setAttribute(
|
|
1032
957
|
'transform',
|
|
1033
958
|
'translate(' + (width - RESIZE_SIZE) + ',' +
|
|
1034
959
|
(height - RESIZE_SIZE) + ')');
|
|
1035
|
-
this.deleteGroup_
|
|
960
|
+
this.deleteGroup_!.setAttribute(
|
|
1036
961
|
'transform',
|
|
1037
|
-
'translate(' + (width - RESIZE_SIZE) + ',' +
|
|
962
|
+
'translate(' + (width - RESIZE_SIZE) + ',' + -RESIZE_SIZE + ')');
|
|
1038
963
|
}
|
|
1039
964
|
}
|
|
1040
965
|
|
|
@@ -1042,11 +967,8 @@ class WorkspaceCommentSvg extends WorkspaceComment {
|
|
|
1042
967
|
this.resizeComment_();
|
|
1043
968
|
}
|
|
1044
969
|
|
|
1045
|
-
/**
|
|
1046
|
-
|
|
1047
|
-
* @private
|
|
1048
|
-
*/
|
|
1049
|
-
disposeInternal_() {
|
|
970
|
+
/** Dispose of any rendered comment components. */
|
|
971
|
+
private disposeInternal_() {
|
|
1050
972
|
this.textarea_ = null;
|
|
1051
973
|
this.foreignObject_ = null;
|
|
1052
974
|
this.svgRectTarget_ = null;
|
|
@@ -1056,7 +978,7 @@ class WorkspaceCommentSvg extends WorkspaceComment {
|
|
|
1056
978
|
|
|
1057
979
|
/**
|
|
1058
980
|
* Set the focus on the text area.
|
|
1059
|
-
* @
|
|
981
|
+
* @internal
|
|
1060
982
|
*/
|
|
1061
983
|
setFocus() {
|
|
1062
984
|
const comment = this;
|
|
@@ -1066,20 +988,20 @@ class WorkspaceCommentSvg extends WorkspaceComment {
|
|
|
1066
988
|
if (comment.disposed_) {
|
|
1067
989
|
return;
|
|
1068
990
|
}
|
|
1069
|
-
comment.textarea_
|
|
991
|
+
comment.textarea_!.focus();
|
|
1070
992
|
comment.addFocus();
|
|
1071
993
|
dom.addClass(
|
|
1072
|
-
|
|
994
|
+
comment.svgRectTarget_ as SVGRectElement,
|
|
1073
995
|
'blocklyCommentTargetFocused');
|
|
1074
996
|
dom.addClass(
|
|
1075
|
-
|
|
997
|
+
comment.svgHandleTarget_ as SVGRectElement,
|
|
1076
998
|
'blocklyCommentHandleTargetFocused');
|
|
1077
999
|
}, 0);
|
|
1078
1000
|
}
|
|
1079
1001
|
|
|
1080
1002
|
/**
|
|
1081
1003
|
* Remove focus from the text area.
|
|
1082
|
-
* @
|
|
1004
|
+
* @internal
|
|
1083
1005
|
*/
|
|
1084
1006
|
blurFocus() {
|
|
1085
1007
|
const comment = this;
|
|
@@ -1090,27 +1012,29 @@ class WorkspaceCommentSvg extends WorkspaceComment {
|
|
|
1090
1012
|
return;
|
|
1091
1013
|
}
|
|
1092
1014
|
|
|
1093
|
-
comment.textarea_
|
|
1015
|
+
comment.textarea_!.blur();
|
|
1094
1016
|
comment.removeFocus();
|
|
1095
1017
|
dom.removeClass(
|
|
1096
|
-
|
|
1018
|
+
comment.svgRectTarget_ as SVGRectElement,
|
|
1097
1019
|
'blocklyCommentTargetFocused');
|
|
1098
1020
|
dom.removeClass(
|
|
1099
|
-
|
|
1021
|
+
comment.svgHandleTarget_ as SVGRectElement,
|
|
1100
1022
|
'blocklyCommentHandleTargetFocused');
|
|
1101
1023
|
}, 0);
|
|
1102
1024
|
}
|
|
1103
1025
|
|
|
1104
1026
|
/**
|
|
1105
1027
|
* Decode an XML comment tag and create a rendered comment on the workspace.
|
|
1106
|
-
* @param
|
|
1107
|
-
* @param
|
|
1108
|
-
* @param
|
|
1109
|
-
*
|
|
1110
|
-
* @return
|
|
1111
|
-
* @
|
|
1028
|
+
* @param xmlComment XML comment element.
|
|
1029
|
+
* @param workspace The workspace.
|
|
1030
|
+
* @param opt_wsWidth The width of the workspace, which is used to position
|
|
1031
|
+
* comments correctly in RTL.
|
|
1032
|
+
* @return The created workspace comment.
|
|
1033
|
+
* @internal
|
|
1112
1034
|
*/
|
|
1113
|
-
static fromXmlRendered(
|
|
1035
|
+
static fromXmlRendered(
|
|
1036
|
+
xmlComment: Element, workspace: WorkspaceSvg,
|
|
1037
|
+
opt_wsWidth?: number): WorkspaceCommentSvg {
|
|
1114
1038
|
eventUtils.disable();
|
|
1115
1039
|
let comment;
|
|
1116
1040
|
try {
|
|
@@ -1136,31 +1060,12 @@ class WorkspaceCommentSvg extends WorkspaceComment {
|
|
|
1136
1060
|
eventUtils.enable();
|
|
1137
1061
|
}
|
|
1138
1062
|
|
|
1139
|
-
WorkspaceComment.fireCreateEvent(
|
|
1140
|
-
|
|
1141
|
-
return (/** @type {!WorkspaceCommentSvg} */ (comment));
|
|
1063
|
+
WorkspaceComment.fireCreateEvent((comment));
|
|
1064
|
+
return comment;
|
|
1142
1065
|
}
|
|
1143
1066
|
}
|
|
1144
1067
|
|
|
1145
|
-
/**
|
|
1146
|
-
* The width and height to use to size a workspace comment when it is first
|
|
1147
|
-
* added, before it has been edited by the user.
|
|
1148
|
-
* @type {number}
|
|
1149
|
-
* @package
|
|
1150
|
-
*/
|
|
1151
|
-
WorkspaceCommentSvg.DEFAULT_SIZE = 100;
|
|
1152
|
-
|
|
1153
|
-
/**
|
|
1154
|
-
* Offset from the top to make room for a top bar.
|
|
1155
|
-
* @type {number}
|
|
1156
|
-
* @const
|
|
1157
|
-
* @private
|
|
1158
|
-
*/
|
|
1159
|
-
WorkspaceCommentSvg.TOP_OFFSET = 10;
|
|
1160
|
-
|
|
1161
|
-
/**
|
|
1162
|
-
* CSS for workspace comment. See css.js for use.
|
|
1163
|
-
*/
|
|
1068
|
+
/** CSS for workspace comment. See css.js for use. */
|
|
1164
1069
|
Css.register(`
|
|
1165
1070
|
.blocklyCommentForeignObject {
|
|
1166
1071
|
position: relative;
|
|
@@ -1220,5 +1125,3 @@ Css.register(`
|
|
|
1220
1125
|
stroke: #fc3;
|
|
1221
1126
|
}
|
|
1222
1127
|
`);
|
|
1223
|
-
|
|
1224
|
-
exports.WorkspaceCommentSvg = WorkspaceCommentSvg;
|