blockly 8.0.5 → 9.0.0-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 +2002 -2269
- 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/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,30 +7,28 @@
|
|
|
7
7
|
/**
|
|
8
8
|
* @fileoverview Object representing a map of variables and their types.
|
|
9
9
|
*/
|
|
10
|
-
'use strict';
|
|
11
10
|
|
|
12
11
|
/**
|
|
13
12
|
* Object representing a map of variables and their types.
|
|
14
13
|
* @class
|
|
15
14
|
*/
|
|
16
|
-
goog
|
|
15
|
+
import * as goog from '../closure/goog/goog.js';
|
|
16
|
+
goog.declareModuleId('Blockly.VariableMap');
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
/** @suppress {extraRequire} */
|
|
33
|
-
goog.require('Blockly.Events.VarRename');
|
|
18
|
+
// Unused import preserved for side-effects. Remove if unneeded.
|
|
19
|
+
import './events/events_var_delete.js';
|
|
20
|
+
// Unused import preserved for side-effects. Remove if unneeded.
|
|
21
|
+
import './events/events_var_rename.js';
|
|
22
|
+
|
|
23
|
+
import type {Block} from './block.js';
|
|
24
|
+
import * as dialog from './dialog.js';
|
|
25
|
+
import * as eventUtils from './events/utils.js';
|
|
26
|
+
import {Msg} from './msg.js';
|
|
27
|
+
import {Names} from './names.js';
|
|
28
|
+
import * as arrayUtils from './utils/array.js';
|
|
29
|
+
import * as idGenerator from './utils/idgenerator.js';
|
|
30
|
+
import {VariableModel} from './variable_model.js';
|
|
31
|
+
import type {Workspace} from './workspace.js';
|
|
34
32
|
|
|
35
33
|
|
|
36
34
|
/**
|
|
@@ -39,40 +37,29 @@ goog.require('Blockly.Events.VarRename');
|
|
|
39
37
|
* variables are the type indicated by the key.
|
|
40
38
|
* @alias Blockly.VariableMap
|
|
41
39
|
*/
|
|
42
|
-
class VariableMap {
|
|
40
|
+
export class VariableMap {
|
|
43
41
|
/**
|
|
44
|
-
*
|
|
42
|
+
* A map from variable type to list of variable names. The lists contain
|
|
43
|
+
* all of the named variables in the workspace, including variables that are
|
|
44
|
+
* not currently in use.
|
|
45
45
|
*/
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* A map from variable type to list of variable names. The lists contain
|
|
49
|
-
* all of the named variables in the workspace, including variables that are
|
|
50
|
-
* not currently in use.
|
|
51
|
-
* @type {!Object<string, !Array<VariableModel>>}
|
|
52
|
-
* @private
|
|
53
|
-
*/
|
|
54
|
-
this.variableMap_ = Object.create(null);
|
|
46
|
+
private variableMap = new Map<string, VariableModel[]>();
|
|
55
47
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
this.workspace = workspace;
|
|
61
|
-
}
|
|
62
|
-
/**
|
|
63
|
-
* Clear the variable map.
|
|
64
|
-
*/
|
|
48
|
+
/** @param workspace The workspace this map belongs to. */
|
|
49
|
+
constructor(public workspace: Workspace) {}
|
|
50
|
+
|
|
51
|
+
/** Clear the variable map. */
|
|
65
52
|
clear() {
|
|
66
|
-
this.
|
|
53
|
+
this.variableMap.clear();
|
|
67
54
|
}
|
|
68
55
|
/* Begin functions for renaming variables. */
|
|
69
56
|
/**
|
|
70
57
|
* Rename the given variable by updating its name in the variable map.
|
|
71
|
-
* @param
|
|
72
|
-
* @param
|
|
73
|
-
* @
|
|
58
|
+
* @param variable Variable to rename.
|
|
59
|
+
* @param newName New variable name.
|
|
60
|
+
* @internal
|
|
74
61
|
*/
|
|
75
|
-
renameVariable(variable, newName) {
|
|
62
|
+
renameVariable(variable: VariableModel, newName: string) {
|
|
76
63
|
const type = variable.type;
|
|
77
64
|
const conflictVar = this.getVariable(newName, type);
|
|
78
65
|
const blocks = this.workspace.getAllBlocks(false);
|
|
@@ -90,13 +77,14 @@ class VariableMap {
|
|
|
90
77
|
eventUtils.setGroup(false);
|
|
91
78
|
}
|
|
92
79
|
}
|
|
80
|
+
|
|
93
81
|
/**
|
|
94
82
|
* Rename a variable by updating its name in the variable map. Identify the
|
|
95
83
|
* variable to rename with the given ID.
|
|
96
|
-
* @param
|
|
97
|
-
* @param
|
|
84
|
+
* @param id ID of the variable to rename.
|
|
85
|
+
* @param newName New variable name.
|
|
98
86
|
*/
|
|
99
|
-
renameVariableById(id, newName) {
|
|
87
|
+
renameVariableById(id: string, newName: string) {
|
|
100
88
|
const variable = this.getVariableById(id);
|
|
101
89
|
if (!variable) {
|
|
102
90
|
throw Error('Tried to rename a variable that didn\'t exist. ID: ' + id);
|
|
@@ -104,37 +92,37 @@ class VariableMap {
|
|
|
104
92
|
|
|
105
93
|
this.renameVariable(variable, newName);
|
|
106
94
|
}
|
|
95
|
+
|
|
107
96
|
/**
|
|
108
97
|
* Update the name of the given variable and refresh all references to it.
|
|
109
98
|
* The new name must not conflict with any existing variable names.
|
|
110
|
-
* @param
|
|
111
|
-
* @param
|
|
112
|
-
* @param
|
|
113
|
-
* workspace.
|
|
114
|
-
* @private
|
|
99
|
+
* @param variable Variable to rename.
|
|
100
|
+
* @param newName New variable name.
|
|
101
|
+
* @param blocks The list of all blocks in the workspace.
|
|
115
102
|
*/
|
|
116
|
-
renameVariableAndUses_(
|
|
117
|
-
|
|
118
|
-
|
|
103
|
+
private renameVariableAndUses_(
|
|
104
|
+
variable: VariableModel, newName: string, blocks: Block[]) {
|
|
105
|
+
eventUtils.fire(new (eventUtils.get(eventUtils.VAR_RENAME))!
|
|
106
|
+
(variable, newName));
|
|
119
107
|
variable.name = newName;
|
|
120
108
|
for (let i = 0; i < blocks.length; i++) {
|
|
121
109
|
blocks[i].updateVarName(variable);
|
|
122
110
|
}
|
|
123
111
|
}
|
|
112
|
+
|
|
124
113
|
/**
|
|
125
114
|
* Update the name of the given variable to the same name as an existing
|
|
126
115
|
* variable. The two variables are coalesced into a single variable with the
|
|
127
116
|
* ID of the existing variable that was already using newName. Refresh all
|
|
128
117
|
* references to the variable.
|
|
129
|
-
* @param
|
|
130
|
-
* @param
|
|
131
|
-
* @param
|
|
132
|
-
*
|
|
133
|
-
* @param {!Array<!Block>} blocks The list of all blocks in the
|
|
134
|
-
* workspace.
|
|
135
|
-
* @private
|
|
118
|
+
* @param variable Variable to rename.
|
|
119
|
+
* @param newName New variable name.
|
|
120
|
+
* @param conflictVar The variable that was already using newName.
|
|
121
|
+
* @param blocks The list of all blocks in the workspace.
|
|
136
122
|
*/
|
|
137
|
-
renameVariableWithConflict_(
|
|
123
|
+
private renameVariableWithConflict_(
|
|
124
|
+
variable: VariableModel, newName: string, conflictVar: VariableModel,
|
|
125
|
+
blocks: Block[]) {
|
|
138
126
|
const type = variable.type;
|
|
139
127
|
const oldCase = conflictVar.name;
|
|
140
128
|
|
|
@@ -148,25 +136,24 @@ class VariableMap {
|
|
|
148
136
|
for (let i = 0; i < blocks.length; i++) {
|
|
149
137
|
blocks[i].renameVarById(variable.getId(), conflictVar.getId());
|
|
150
138
|
}
|
|
151
|
-
|
|
152
139
|
// Finally delete the original variable, which is now unreferenced.
|
|
153
|
-
eventUtils.fire(new (eventUtils.get(eventUtils.VAR_DELETE))(variable));
|
|
140
|
+
eventUtils.fire(new (eventUtils.get(eventUtils.VAR_DELETE))!(variable));
|
|
154
141
|
// And remove it from the list.
|
|
155
|
-
arrayUtils.removeElem(this.
|
|
142
|
+
arrayUtils.removeElem(this.variableMap.get(type)!, variable);
|
|
156
143
|
}
|
|
157
144
|
/* End functions for renaming variables. */
|
|
158
145
|
/**
|
|
159
146
|
* Create a variable with a given name, optional type, and optional ID.
|
|
160
|
-
* @param
|
|
161
|
-
*
|
|
162
|
-
* @param
|
|
147
|
+
* @param name The name of the variable. This must be unique across variables
|
|
148
|
+
* and procedures.
|
|
149
|
+
* @param opt_type The type of the variable like 'int' or 'string'.
|
|
163
150
|
* Does not need to be unique. Field_variable can filter variables based
|
|
164
151
|
* on their type. This will default to '' which is a specific type.
|
|
165
|
-
* @param
|
|
166
|
-
*
|
|
167
|
-
* @return {!VariableModel} The newly created variable.
|
|
152
|
+
* @param opt_id The unique ID of the variable. This will default to a UUID.
|
|
153
|
+
* @return The newly created variable.
|
|
168
154
|
*/
|
|
169
|
-
createVariable(name, opt_type, opt_id)
|
|
155
|
+
createVariable(name: string, opt_type?: string|null, opt_id?: string|null):
|
|
156
|
+
VariableModel {
|
|
170
157
|
let variable = this.getVariable(name, opt_type);
|
|
171
158
|
if (variable) {
|
|
172
159
|
if (opt_id && variable.getId() !== opt_id) {
|
|
@@ -185,46 +172,50 @@ class VariableMap {
|
|
|
185
172
|
const type = opt_type || '';
|
|
186
173
|
variable = new VariableModel(this.workspace, name, type, id);
|
|
187
174
|
|
|
188
|
-
const variables = this.
|
|
175
|
+
const variables = this.variableMap.get(type) || [];
|
|
189
176
|
variables.push(variable);
|
|
190
177
|
// Delete the list of variables of this type, and re-add it so that
|
|
191
178
|
// the most recent addition is at the end.
|
|
192
179
|
// This is used so the toolbox's set block is set to the most recent
|
|
193
180
|
// variable.
|
|
194
|
-
|
|
195
|
-
this.
|
|
181
|
+
this.variableMap.delete(type);
|
|
182
|
+
this.variableMap.set(type, variables);
|
|
196
183
|
|
|
197
184
|
return variable;
|
|
198
185
|
}
|
|
199
186
|
/* Begin functions for variable deletion. */
|
|
200
187
|
/**
|
|
201
188
|
* Delete a variable.
|
|
202
|
-
* @param
|
|
189
|
+
* @param variable Variable to delete.
|
|
203
190
|
*/
|
|
204
|
-
deleteVariable(variable) {
|
|
191
|
+
deleteVariable(variable: VariableModel) {
|
|
205
192
|
const variableId = variable.getId();
|
|
206
|
-
const variableList = this.
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
193
|
+
const variableList = this.variableMap.get(variable.type);
|
|
194
|
+
if (variableList) {
|
|
195
|
+
for (let i = 0; i < variableList.length; i++) {
|
|
196
|
+
const tempVar = variableList[i];
|
|
197
|
+
if (tempVar.getId() === variableId) {
|
|
198
|
+
variableList.splice(i, 1);
|
|
199
|
+
eventUtils.fire(new (eventUtils.get(eventUtils.VAR_DELETE))!
|
|
200
|
+
(variable));
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
213
203
|
}
|
|
214
204
|
}
|
|
215
205
|
}
|
|
206
|
+
|
|
216
207
|
/**
|
|
217
208
|
* Delete a variables by the passed in ID and all of its uses from this
|
|
218
209
|
* workspace. May prompt the user for confirmation.
|
|
219
|
-
* @param
|
|
210
|
+
* @param id ID of variable to delete.
|
|
220
211
|
*/
|
|
221
|
-
deleteVariableById(id) {
|
|
212
|
+
deleteVariableById(id: string) {
|
|
222
213
|
const variable = this.getVariableById(id);
|
|
223
214
|
if (variable) {
|
|
224
215
|
// Check whether this variable is a function parameter before deleting.
|
|
225
216
|
const variableName = variable.name;
|
|
226
217
|
const uses = this.getVariableUsesById(id);
|
|
227
|
-
for (let i = 0, block;
|
|
218
|
+
for (let i = 0, block; block = uses[i]; i++) {
|
|
228
219
|
if (block.type === 'procedures_defnoreturn' ||
|
|
229
220
|
block.type === 'procedures_defreturn') {
|
|
230
221
|
const procedureName = String(block.getFieldValue('NAME'));
|
|
@@ -255,14 +246,15 @@ class VariableMap {
|
|
|
255
246
|
console.warn('Can\'t delete non-existent variable: ' + id);
|
|
256
247
|
}
|
|
257
248
|
}
|
|
249
|
+
|
|
258
250
|
/**
|
|
259
251
|
* Deletes a variable and all of its uses from this workspace without asking
|
|
260
252
|
* the user for confirmation.
|
|
261
|
-
* @param
|
|
262
|
-
* @param
|
|
263
|
-
* @
|
|
253
|
+
* @param variable Variable to delete.
|
|
254
|
+
* @param uses An array of uses of the variable.
|
|
255
|
+
* @internal
|
|
264
256
|
*/
|
|
265
|
-
deleteVariableInternal(variable, uses) {
|
|
257
|
+
deleteVariableInternal(variable: VariableModel, uses: Block[]) {
|
|
266
258
|
const existingGroup = eventUtils.getGroup();
|
|
267
259
|
if (!existingGroup) {
|
|
268
260
|
eventUtils.setGroup(true);
|
|
@@ -282,17 +274,16 @@ class VariableMap {
|
|
|
282
274
|
/**
|
|
283
275
|
* Find the variable by the given name and type and return it. Return null if
|
|
284
276
|
* it is not found.
|
|
285
|
-
* @param
|
|
286
|
-
* @param
|
|
287
|
-
*
|
|
288
|
-
* @return
|
|
289
|
-
* it was not found.
|
|
277
|
+
* @param name The name to check for.
|
|
278
|
+
* @param opt_type The type of the variable. If not provided it defaults to
|
|
279
|
+
* the empty string, which is a specific type.
|
|
280
|
+
* @return The variable with the given name, or null if it was not found.
|
|
290
281
|
*/
|
|
291
|
-
getVariable(name, opt_type) {
|
|
282
|
+
getVariable(name: string, opt_type?: string|null): VariableModel|null {
|
|
292
283
|
const type = opt_type || '';
|
|
293
|
-
const list = this.
|
|
284
|
+
const list = this.variableMap.get(type);
|
|
294
285
|
if (list) {
|
|
295
|
-
for (let j = 0, variable;
|
|
286
|
+
for (let j = 0, variable; variable = list[j]; j++) {
|
|
296
287
|
if (Names.equals(variable.name, name)) {
|
|
297
288
|
return variable;
|
|
298
289
|
}
|
|
@@ -300,16 +291,15 @@ class VariableMap {
|
|
|
300
291
|
}
|
|
301
292
|
return null;
|
|
302
293
|
}
|
|
294
|
+
|
|
303
295
|
/**
|
|
304
296
|
* Find the variable by the given ID and return it. Return null if not found.
|
|
305
|
-
* @param
|
|
306
|
-
* @return
|
|
297
|
+
* @param id The ID to check for.
|
|
298
|
+
* @return The variable with the given ID.
|
|
307
299
|
*/
|
|
308
|
-
getVariableById(id) {
|
|
309
|
-
const
|
|
310
|
-
|
|
311
|
-
const key = keys[i];
|
|
312
|
-
for (let j = 0, variable; (variable = this.variableMap_[key][j]); j++) {
|
|
300
|
+
getVariableById(id: string): VariableModel|null {
|
|
301
|
+
for (const [key, variables] of this.variableMap) {
|
|
302
|
+
for (const variable of variables) {
|
|
313
303
|
if (variable.getId() === id) {
|
|
314
304
|
return variable;
|
|
315
305
|
}
|
|
@@ -317,79 +307,73 @@ class VariableMap {
|
|
|
317
307
|
}
|
|
318
308
|
return null;
|
|
319
309
|
}
|
|
310
|
+
|
|
320
311
|
/**
|
|
321
312
|
* Get a list containing all of the variables of a specified type. If type is
|
|
322
313
|
* null, return list of variables with empty string type.
|
|
323
|
-
* @param
|
|
324
|
-
* @return
|
|
325
|
-
*
|
|
314
|
+
* @param type Type of the variables to find.
|
|
315
|
+
* @return The sought after variables of the passed in type. An empty array if
|
|
316
|
+
* none are found.
|
|
326
317
|
*/
|
|
327
|
-
getVariablesOfType(type) {
|
|
318
|
+
getVariablesOfType(type: string|null): VariableModel[] {
|
|
328
319
|
type = type || '';
|
|
329
|
-
const variableList = this.
|
|
320
|
+
const variableList = this.variableMap.get(type);
|
|
330
321
|
if (variableList) {
|
|
331
322
|
return variableList.slice();
|
|
332
323
|
}
|
|
333
324
|
return [];
|
|
334
325
|
}
|
|
326
|
+
|
|
335
327
|
/**
|
|
336
328
|
* Return all variable and potential variable types. This list always
|
|
337
329
|
* contains the empty string.
|
|
338
|
-
* @param
|
|
339
|
-
*
|
|
340
|
-
*
|
|
341
|
-
* @return
|
|
342
|
-
* @
|
|
330
|
+
* @param ws The workspace used to look for potential variables. This can be
|
|
331
|
+
* different than the workspace stored on this object if the passed in ws
|
|
332
|
+
* is a flyout workspace.
|
|
333
|
+
* @return List of variable types.
|
|
334
|
+
* @internal
|
|
343
335
|
*/
|
|
344
|
-
getVariableTypes(ws) {
|
|
345
|
-
const
|
|
346
|
-
object.mixin(variableMap, this.variableMap_);
|
|
336
|
+
getVariableTypes(ws: Workspace|null): string[] {
|
|
337
|
+
const variableTypes = new Set<string>(this.variableMap.keys());
|
|
347
338
|
if (ws && ws.getPotentialVariableMap()) {
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
const types = Object.keys(variableMap);
|
|
351
|
-
let hasEmpty = false;
|
|
352
|
-
for (let i = 0; i < types.length; i++) {
|
|
353
|
-
if (types[i] === '') {
|
|
354
|
-
hasEmpty = true;
|
|
339
|
+
for (const key of ws.getPotentialVariableMap()!.variableMap.keys()) {
|
|
340
|
+
variableTypes.add(key);
|
|
355
341
|
}
|
|
356
342
|
}
|
|
357
|
-
if (!
|
|
358
|
-
|
|
343
|
+
if (!variableTypes.has('')) {
|
|
344
|
+
variableTypes.add('');
|
|
359
345
|
}
|
|
360
|
-
return
|
|
346
|
+
return Array.from(variableTypes.values());
|
|
361
347
|
}
|
|
348
|
+
|
|
362
349
|
/**
|
|
363
350
|
* Return all variables of all types.
|
|
364
|
-
* @return
|
|
351
|
+
* @return List of variable models.
|
|
365
352
|
*/
|
|
366
|
-
getAllVariables() {
|
|
367
|
-
let allVariables = [];
|
|
368
|
-
for (const
|
|
369
|
-
allVariables = allVariables.concat(
|
|
353
|
+
getAllVariables(): VariableModel[] {
|
|
354
|
+
let allVariables: VariableModel[] = [];
|
|
355
|
+
for (const variables of this.variableMap.values()) {
|
|
356
|
+
allVariables = allVariables.concat(variables);
|
|
370
357
|
}
|
|
371
358
|
return allVariables;
|
|
372
359
|
}
|
|
360
|
+
|
|
373
361
|
/**
|
|
374
362
|
* Returns all of the variable names of all types.
|
|
375
|
-
* @return
|
|
363
|
+
* @return All of the variable names of all types.
|
|
376
364
|
*/
|
|
377
|
-
getAllVariableNames() {
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
for (let i = 0, variable; (variable = variables[i]); i++) {
|
|
382
|
-
allNames.push(variable.name);
|
|
383
|
-
}
|
|
384
|
-
}
|
|
385
|
-
return allNames;
|
|
365
|
+
getAllVariableNames(): string[] {
|
|
366
|
+
return Array.from(this.variableMap.values())
|
|
367
|
+
.flat()
|
|
368
|
+
.map(variable => variable.name);
|
|
386
369
|
}
|
|
370
|
+
|
|
387
371
|
/**
|
|
388
372
|
* Find all the uses of a named variable.
|
|
389
|
-
* @param
|
|
390
|
-
* @return
|
|
373
|
+
* @param id ID of the variable to find.
|
|
374
|
+
* @return Array of block usages.
|
|
391
375
|
*/
|
|
392
|
-
getVariableUsesById(id) {
|
|
376
|
+
getVariableUsesById(id: string): Block[] {
|
|
393
377
|
const uses = [];
|
|
394
378
|
const blocks = this.workspace.getAllBlocks(false);
|
|
395
379
|
// Iterate through every block and check the name.
|
|
@@ -406,5 +390,3 @@ class VariableMap {
|
|
|
406
390
|
return uses;
|
|
407
391
|
}
|
|
408
392
|
}
|
|
409
|
-
|
|
410
|
-
exports.VariableMap = VariableMap;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2017 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import './events/events_var_create.js';
|
|
7
|
+
import type { Workspace } from './workspace.js';
|
|
8
|
+
/**
|
|
9
|
+
* Class for a variable model.
|
|
10
|
+
* Holds information for the variable including name, ID, and type.
|
|
11
|
+
* @see {Blockly.FieldVariable}
|
|
12
|
+
* @alias Blockly.VariableModel
|
|
13
|
+
*/
|
|
14
|
+
export declare class VariableModel {
|
|
15
|
+
workspace: Workspace;
|
|
16
|
+
name: string;
|
|
17
|
+
type: string;
|
|
18
|
+
private readonly id_;
|
|
19
|
+
/**
|
|
20
|
+
* @param workspace The variable's workspace.
|
|
21
|
+
* @param name The name of the variable. This is the user-visible name (e.g.
|
|
22
|
+
* 'my var' or '私の変数'), not the generated name.
|
|
23
|
+
* @param opt_type The type of the variable like 'int' or 'string'.
|
|
24
|
+
* Does not need to be unique. Field_variable can filter variables based
|
|
25
|
+
* on their type. This will default to '' which is a specific type.
|
|
26
|
+
* @param opt_id The unique ID of the variable. This will default to a UUID.
|
|
27
|
+
*/
|
|
28
|
+
constructor(workspace: Workspace, name: string, opt_type?: string, opt_id?: string);
|
|
29
|
+
/** @return The ID for the variable. */
|
|
30
|
+
getId(): string;
|
|
31
|
+
/**
|
|
32
|
+
* A custom compare function for the VariableModel objects.
|
|
33
|
+
* @param var1 First variable to compare.
|
|
34
|
+
* @param var2 Second variable to compare.
|
|
35
|
+
* @return -1 if name of var1 is less than name of var2, 0 if equal, and 1 if
|
|
36
|
+
* greater.
|
|
37
|
+
* @internal
|
|
38
|
+
*/
|
|
39
|
+
static compareByName(var1: VariableModel, var2: VariableModel): number;
|
|
40
|
+
}
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2017 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @fileoverview Components for the variable model.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Components for the variable model.
|
|
13
|
+
* @class
|
|
14
|
+
*/
|
|
15
|
+
import * as goog from '../closure/goog/goog.js';
|
|
16
|
+
goog.declareModuleId('Blockly.VariableModel');
|
|
17
|
+
|
|
18
|
+
// Unused import preserved for side-effects. Remove if unneeded.
|
|
19
|
+
import './events/events_var_create.js';
|
|
20
|
+
|
|
21
|
+
import * as eventUtils from './events/utils.js';
|
|
22
|
+
import * as idGenerator from './utils/idgenerator.js';
|
|
23
|
+
import type {Workspace} from './workspace.js';
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
/**
|
|
27
|
+
* Class for a variable model.
|
|
28
|
+
* Holds information for the variable including name, ID, and type.
|
|
29
|
+
* @see {Blockly.FieldVariable}
|
|
30
|
+
* @alias Blockly.VariableModel
|
|
31
|
+
*/
|
|
32
|
+
export class VariableModel {
|
|
33
|
+
type: string;
|
|
34
|
+
private readonly id_: string;
|
|
35
|
+
|
|
36
|
+
/**
|
|
37
|
+
* @param workspace The variable's workspace.
|
|
38
|
+
* @param name The name of the variable. This is the user-visible name (e.g.
|
|
39
|
+
* 'my var' or '私の変数'), not the generated name.
|
|
40
|
+
* @param opt_type The type of the variable like 'int' or 'string'.
|
|
41
|
+
* Does not need to be unique. Field_variable can filter variables based
|
|
42
|
+
* on their type. This will default to '' which is a specific type.
|
|
43
|
+
* @param opt_id The unique ID of the variable. This will default to a UUID.
|
|
44
|
+
*/
|
|
45
|
+
constructor(
|
|
46
|
+
public workspace: Workspace, public name: string, opt_type?: string,
|
|
47
|
+
opt_id?: string) {
|
|
48
|
+
/**
|
|
49
|
+
* The type of the variable, such as 'int' or 'sound_effect'. This may be
|
|
50
|
+
* used to build a list of variables of a specific type. By default this is
|
|
51
|
+
* the empty string '', which is a specific type.
|
|
52
|
+
* @see {Blockly.FieldVariable}
|
|
53
|
+
*/
|
|
54
|
+
this.type = opt_type || '';
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* A unique ID for the variable. This should be defined at creation and
|
|
58
|
+
* not change, even if the name changes. In most cases this should be a
|
|
59
|
+
* UUID.
|
|
60
|
+
*/
|
|
61
|
+
this.id_ = opt_id || idGenerator.genUid();
|
|
62
|
+
|
|
63
|
+
eventUtils.fire(new (eventUtils.get(eventUtils.VAR_CREATE))!(this));
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
/** @return The ID for the variable. */
|
|
67
|
+
getId(): string {
|
|
68
|
+
return this.id_;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* A custom compare function for the VariableModel objects.
|
|
73
|
+
* @param var1 First variable to compare.
|
|
74
|
+
* @param var2 Second variable to compare.
|
|
75
|
+
* @return -1 if name of var1 is less than name of var2, 0 if equal, and 1 if
|
|
76
|
+
* greater.
|
|
77
|
+
* @internal
|
|
78
|
+
*/
|
|
79
|
+
static compareByName(var1: VariableModel, var2: VariableModel): number {
|
|
80
|
+
return var1.name.localeCompare(var2.name, undefined, {sensitivity: 'base'});
|
|
81
|
+
}
|
|
82
|
+
}
|