blockly 8.0.4 → 8.0.5-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/blockly.min.js +2421 -2688
- package/blockly_compressed.js +1499 -1994
- package/blockly_compressed.js.map +1 -1
- package/blocks/blocks.js +3 -2
- package/blocks/colour.js +3 -1
- package/blocks/lists.js +94 -22
- package/blocks/logic.js +14 -6
- package/blocks/loops.js +5 -3
- package/blocks/math.js +3 -1
- package/blocks/procedures.js +3 -1
- package/blocks/text.js +14 -6
- package/blocks/variables.js +3 -1
- package/blocks/variables_dynamic.js +3 -1
- package/blocks.d.ts +0 -2
- package/blocks_compressed.js +189 -171
- package/blocks_compressed.js.map +1 -1
- package/closure/goog/base.d.ts +1 -0
- package/closure/goog/base_minimal.d.ts +18 -0
- package/closure/goog/goog.d.ts +25 -0
- package/core/any_aliases.d.ts +1 -0
- package/core/any_aliases.ts +1 -0
- package/core/block.d.ts +779 -0
- package/core/{block.js → block.ts} +610 -719
- package/core/block_animations.d.ts +33 -0
- package/core/{block_animations.js → block_animations.ts} +75 -79
- package/core/block_drag_surface.d.ts +111 -0
- package/core/{block_drag_surface.js → block_drag_surface.ts} +85 -117
- package/core/block_dragger.d.ts +143 -0
- package/core/{block_dragger.js → block_dragger.ts} +139 -176
- package/core/block_svg.d.ts +588 -0
- package/core/{block_svg.js → block_svg.ts} +494 -630
- package/core/blockly.d.ts +562 -0
- package/core/blockly.js +1 -1
- package/core/blockly.ts +749 -0
- package/core/blockly_options.d.ts +69 -0
- package/core/blockly_options.ts +81 -0
- package/core/blocks.d.ts +17 -0
- package/core/{blocks.js → blocks.ts} +4 -8
- package/core/browser_events.d.ts +85 -0
- package/core/{browser_events.js → browser_events.ts} +98 -93
- package/core/bubble.d.ts +279 -0
- package/core/{bubble.js → bubble.ts} +277 -370
- package/core/bubble_dragger.d.ts +73 -0
- package/core/bubble_dragger.ts +229 -0
- package/core/bump_objects.d.ts +34 -0
- package/core/{bump_objects.js → bump_objects.ts} +54 -52
- package/core/clipboard.d.ts +42 -0
- package/core/clipboard.ts +91 -0
- package/core/comment.d.ts +113 -0
- package/core/{comment.js → comment.ts} +135 -185
- package/core/common.d.ts +129 -0
- package/core/{common.js → common.ts} +105 -82
- package/core/component_manager.d.ts +91 -0
- package/core/component_manager.ts +211 -0
- package/core/config.d.ts +23 -0
- package/core/{config.js → config.ts} +12 -19
- package/core/connection.d.ts +232 -0
- package/core/{connection.js → connection.ts} +187 -237
- package/core/connection_checker.d.ts +78 -0
- package/core/{connection_checker.js → connection_checker.ts} +66 -77
- package/core/connection_db.d.ts +91 -0
- package/core/{connection_db.js → connection_db.ts} +62 -87
- package/core/connection_type.d.ts +15 -0
- package/core/{connection_type.js → connection_type.ts} +8 -12
- package/core/constants.d.ts +15 -0
- package/core/{constants.js → constants.ts} +4 -8
- package/core/contextmenu.d.ts +80 -0
- package/core/{contextmenu.js → contextmenu.ts} +118 -153
- package/core/contextmenu_items.d.ts +77 -0
- package/core/contextmenu_items.ts +576 -0
- package/core/contextmenu_registry.d.ts +105 -0
- package/core/contextmenu_registry.ts +179 -0
- package/core/css.d.ts +24 -0
- package/core/{css.js → css.ts} +16 -24
- package/core/delete_area.d.ts +47 -0
- package/core/delete_area.ts +82 -0
- package/core/dialog.d.ts +61 -0
- package/core/dialog.ts +127 -0
- package/core/drag_target.d.ts +63 -0
- package/core/drag_target.ts +94 -0
- package/core/dropdowndiv.d.ts +155 -0
- package/core/{dropdowndiv.js → dropdowndiv.ts} +262 -333
- package/core/events/events.d.ts +102 -0
- package/core/events/events.ts +123 -0
- package/core/events/events_abstract.d.ts +51 -0
- package/core/events/events_abstract.ts +112 -0
- package/core/events/events_block_base.d.ts +31 -0
- package/core/events/events_block_base.ts +65 -0
- package/core/events/events_block_change.d.ts +55 -0
- package/core/events/{events_block_change.js → events_block_change.ts} +45 -48
- package/core/events/events_block_create.d.ts +35 -0
- package/core/events/{events_block_create.js → events_block_create.ts} +30 -35
- package/core/events/events_block_delete.d.ts +36 -0
- package/core/events/{events_block_delete.js → events_block_delete.ts} +34 -39
- package/core/events/events_block_drag.d.ts +36 -0
- package/core/events/events_block_drag.ts +82 -0
- package/core/events/events_block_move.d.ts +51 -0
- package/core/events/{events_block_move.js → events_block_move.ts} +54 -50
- package/core/events/events_bubble_open.d.ts +35 -0
- package/core/events/events_bubble_open.ts +82 -0
- package/core/events/events_click.d.ts +36 -0
- package/core/events/{events_click.js → events_click.ts} +27 -30
- package/core/events/events_comment_base.d.ts +39 -0
- package/core/events/events_comment_base.ts +107 -0
- package/core/events/events_comment_change.d.ts +43 -0
- package/core/events/{events_comment_change.js → events_comment_change.ts} +31 -28
- package/core/events/events_comment_create.d.ts +35 -0
- package/core/events/{events_comment_create.js → events_comment_create.ts} +24 -26
- package/core/events/events_comment_delete.d.ts +35 -0
- package/core/events/{events_comment_delete.js → events_comment_delete.ts} +20 -24
- package/core/events/events_comment_move.d.ts +55 -0
- package/core/events/{events_comment_move.js → events_comment_move.ts} +39 -42
- package/core/events/events_marker_move.d.ts +40 -0
- package/core/events/events_marker_move.ts +99 -0
- package/core/events/events_selected.d.ts +34 -0
- package/core/events/events_selected.ts +78 -0
- package/core/events/events_theme_change.d.ts +30 -0
- package/core/events/{events_theme_change.js → events_theme_change.ts} +19 -24
- package/core/events/events_toolbox_item_select.d.ts +34 -0
- package/core/events/events_toolbox_item_select.ts +79 -0
- package/core/events/events_trashcan_open.d.ts +31 -0
- package/core/events/events_trashcan_open.ts +68 -0
- package/core/events/events_ui.d.ts +37 -0
- package/core/events/{events_ui.js → events_ui.ts} +27 -26
- package/core/events/events_ui_base.d.ts +26 -0
- package/core/events/{events_ui_base.js → events_ui_base.ts} +17 -26
- package/core/events/events_var_base.d.ts +31 -0
- package/core/events/events_var_base.ts +65 -0
- package/core/events/events_var_create.d.ts +35 -0
- package/core/events/{events_var_create.js → events_var_create.ts} +24 -25
- package/core/events/events_var_delete.d.ts +35 -0
- package/core/events/{events_var_delete.js → events_var_delete.ts} +24 -25
- package/core/events/events_var_rename.d.ts +36 -0
- package/core/events/{events_var_rename.js → events_var_rename.ts} +25 -26
- package/core/events/events_viewport.d.ts +39 -0
- package/core/events/events_viewport.ts +100 -0
- package/core/events/utils.d.ts +272 -0
- package/core/events/{utils.js → utils.ts} +148 -219
- package/core/events/workspace_events.d.ts +36 -0
- package/core/events/workspace_events.ts +86 -0
- package/core/extensions.d.ts +107 -0
- package/core/{extensions.js → extensions.ts} +153 -172
- package/core/field.d.ts +534 -0
- package/core/{field.js → field.ts} +413 -489
- package/core/field_angle.d.ts +176 -0
- package/core/field_angle.ts +563 -0
- package/core/field_checkbox.d.ts +124 -0
- package/core/field_checkbox.ts +243 -0
- package/core/field_colour.d.ts +200 -0
- package/core/field_colour.ts +632 -0
- package/core/field_dropdown.d.ts +222 -0
- package/core/{field_dropdown.js → field_dropdown.ts} +277 -299
- package/core/field_image.d.ts +134 -0
- package/core/field_image.ts +282 -0
- package/core/field_label.d.ts +71 -0
- package/core/field_label.ts +152 -0
- package/core/field_label_serializable.d.ts +42 -0
- package/core/field_label_serializable.ts +76 -0
- package/core/field_multilineinput.d.ts +146 -0
- package/core/{field_multilineinput.js → field_multilineinput.ts} +166 -163
- package/core/field_number.d.ts +156 -0
- package/core/{field_number.js → field_number.ts} +110 -123
- package/core/field_registry.d.ts +45 -0
- package/core/{field_registry.js → field_registry.ts} +37 -30
- package/core/field_textinput.d.ts +219 -0
- package/core/field_textinput.ts +591 -0
- package/core/field_variable.d.ts +217 -0
- package/core/{field_variable.js → field_variable.ts} +174 -187
- package/core/flyout_base.d.ts +459 -0
- package/core/{flyout_base.js → flyout_base.ts} +429 -518
- package/core/flyout_button.d.ts +81 -0
- package/core/flyout_button.ts +292 -0
- package/core/flyout_horizontal.d.ts +82 -0
- package/core/{flyout_horizontal.js → flyout_horizontal.ts} +97 -107
- package/core/flyout_metrics_manager.d.ts +40 -0
- package/core/{flyout_metrics_manager.js → flyout_metrics_manager.ts} +22 -34
- package/core/flyout_vertical.d.ts +83 -0
- package/core/{flyout_vertical.js → flyout_vertical.ts} +106 -117
- package/core/generator.d.ts +205 -0
- package/core/{generator.js → generator.ts} +168 -193
- package/core/gesture.d.ts +357 -0
- package/core/{gesture.js → gesture.ts} +289 -369
- package/core/grid.d.ts +83 -0
- package/core/grid.ts +192 -0
- package/core/icon.d.ts +78 -0
- package/core/icon.ts +189 -0
- package/core/inject.d.ts +15 -0
- package/core/{inject.js → inject.ts} +101 -100
- package/core/input.d.ts +128 -0
- package/core/input.ts +309 -0
- package/core/input_types.d.ts +14 -0
- package/core/{input_types.js → input_types.ts} +8 -12
- package/core/insertion_marker_manager.d.ts +212 -0
- package/core/{insertion_marker_manager.js → insertion_marker_manager.ts} +234 -236
- package/core/interfaces/i_ast_node_location.d.ts +11 -0
- package/core/interfaces/{i_ast_node_location.js → i_ast_node_location.ts} +4 -7
- package/core/interfaces/i_ast_node_location_svg.d.ts +22 -0
- package/core/interfaces/i_ast_node_location_svg.ts +37 -0
- package/core/interfaces/i_ast_node_location_with_block.d.ts +18 -0
- package/core/interfaces/i_ast_node_location_with_block.ts +38 -0
- package/core/interfaces/i_autohideable.d.ts +18 -0
- package/core/interfaces/i_autohideable.ts +34 -0
- package/core/interfaces/i_block_dragger.d.ts +43 -0
- package/core/interfaces/i_block_dragger.ts +67 -0
- package/core/interfaces/i_bounded_element.d.ts +24 -0
- package/core/interfaces/i_bounded_element.ts +42 -0
- package/core/interfaces/i_bubble.d.ts +59 -0
- package/core/interfaces/i_bubble.ts +88 -0
- package/core/interfaces/i_collapsible_toolbox_item.d.ts +26 -0
- package/core/interfaces/i_collapsible_toolbox_item.ts +47 -0
- package/core/interfaces/i_component.d.ts +17 -0
- package/core/interfaces/{i_component.js → i_component.ts} +9 -14
- package/core/interfaces/i_connection_checker.d.ts +69 -0
- package/core/interfaces/i_connection_checker.ts +102 -0
- package/core/interfaces/i_contextmenu.d.ts +13 -0
- package/core/interfaces/i_contextmenu.ts +26 -0
- package/core/interfaces/i_copyable.d.ts +24 -0
- package/core/interfaces/i_copyable.ts +40 -0
- package/core/interfaces/i_deletable.d.ts +16 -0
- package/core/interfaces/{i_deletable.js → i_deletable.ts} +9 -13
- package/core/interfaces/i_delete_area.d.ts +25 -0
- package/core/interfaces/i_delete_area.ts +46 -0
- package/core/interfaces/i_drag_target.d.ts +53 -0
- package/core/interfaces/i_drag_target.ts +84 -0
- package/core/interfaces/i_draggable.d.ts +12 -0
- package/core/interfaces/{i_draggable.js → i_draggable.ts} +4 -10
- package/core/interfaces/i_flyout.d.ts +134 -0
- package/core/interfaces/i_flyout.ts +186 -0
- package/core/interfaces/i_keyboard_accessible.d.ts +18 -0
- package/core/interfaces/i_keyboard_accessible.ts +35 -0
- package/core/interfaces/i_metrics_manager.d.ts +117 -0
- package/core/interfaces/i_metrics_manager.ts +151 -0
- package/core/interfaces/i_movable.d.ts +16 -0
- package/core/interfaces/{i_movable.js → i_movable.ts} +9 -13
- package/core/interfaces/i_positionable.d.ts +27 -0
- package/core/interfaces/i_positionable.ts +50 -0
- package/core/interfaces/i_registrable.d.ts +11 -0
- package/core/interfaces/{i_registrable.js → i_registrable.ts} +3 -7
- package/core/interfaces/i_registrable_field.d.ts +17 -0
- package/core/interfaces/{i_registrable_field.js → i_registrable_field.ts} +8 -16
- package/core/interfaces/i_selectable.d.ts +18 -0
- package/core/interfaces/i_selectable.ts +34 -0
- package/core/interfaces/i_selectable_toolbox_item.d.ts +42 -0
- package/core/interfaces/i_selectable_toolbox_item.ts +64 -0
- package/core/interfaces/i_serializer.d.ts +42 -0
- package/core/interfaces/i_serializer.ts +65 -0
- package/core/interfaces/i_styleable.d.ts +21 -0
- package/core/interfaces/i_styleable.ts +35 -0
- package/core/interfaces/i_toolbox.d.ts +85 -0
- package/core/interfaces/i_toolbox.ts +127 -0
- package/core/interfaces/i_toolbox_item.d.ts +62 -0
- package/core/interfaces/i_toolbox_item.ts +84 -0
- package/core/internal_constants.d.ts +40 -0
- package/core/{internal_constants.js → internal_constants.ts} +13 -18
- package/core/keyboard_nav/ast_node.d.ts +239 -0
- package/core/keyboard_nav/{ast_node.js → ast_node.ts} +207 -231
- package/core/keyboard_nav/basic_cursor.d.ts +88 -0
- package/core/keyboard_nav/{basic_cursor.js → basic_cursor.ts} +55 -66
- package/core/keyboard_nav/cursor.d.ts +41 -0
- package/core/keyboard_nav/{cursor.js → cursor.ts} +25 -35
- package/core/keyboard_nav/marker.d.ts +58 -0
- package/core/keyboard_nav/{marker.js → marker.ts} +36 -55
- package/core/keyboard_nav/tab_navigate_cursor.d.ts +19 -0
- package/core/keyboard_nav/{tab_navigate_cursor.js → tab_navigate_cursor.ts} +11 -15
- package/core/main.d.ts +11 -0
- package/core/main.js +303 -0
- package/core/marker_manager.d.ts +85 -0
- package/core/marker_manager.ts +181 -0
- package/core/menu.d.ts +149 -0
- package/core/{menu.js → menu.ts} +141 -174
- package/core/menuitem.d.ts +118 -0
- package/core/menuitem.ts +240 -0
- package/core/metrics_manager.d.ts +201 -0
- package/core/{metrics_manager.js → metrics_manager.ts} +117 -156
- package/core/msg.d.ts +9 -0
- package/core/{msg.js → msg.ts} +4 -8
- package/core/mutator.d.ts +128 -0
- package/core/{mutator.js → mutator.ts} +196 -211
- package/core/names.d.ts +124 -0
- package/core/names.ts +267 -0
- package/core/options.d.ts +137 -0
- package/core/{options.js → options.ts} +147 -173
- package/core/positionable_helpers.d.ts +88 -0
- package/core/{positionable_helpers.js → positionable_helpers.ts} +63 -70
- package/core/procedures.d.ts +108 -0
- package/core/{procedures.js → procedures.ts} +143 -152
- package/core/registry.d.ts +137 -0
- package/core/registry.ts +339 -0
- package/core/rendered_connection.d.ts +191 -0
- package/core/{rendered_connection.js → rendered_connection.ts} +164 -184
- package/core/renderers/common/block_rendering.d.ts +114 -0
- package/core/renderers/common/block_rendering.ts +164 -0
- package/core/renderers/common/constants.d.ts +458 -0
- package/core/renderers/common/constants.ts +1124 -0
- package/core/renderers/common/debug.d.ts +28 -0
- package/core/renderers/common/{debug.js → debug.ts} +14 -20
- package/core/renderers/common/debugger.d.ts +120 -0
- package/core/renderers/common/{debugger.js → debugger.ts} +100 -124
- package/core/renderers/common/drawer.d.ts +132 -0
- package/core/renderers/common/{drawer.js → drawer.ts} +112 -137
- package/core/renderers/common/i_path_object.d.ts +117 -0
- package/core/renderers/common/i_path_object.ts +161 -0
- package/core/renderers/common/info.d.ts +194 -0
- package/core/renderers/common/{info.js → info.ts} +165 -222
- package/core/renderers/common/marker_svg.d.ts +220 -0
- package/core/renderers/common/marker_svg.ts +680 -0
- package/core/renderers/common/path_object.d.ts +146 -0
- package/core/renderers/common/path_object.ts +272 -0
- package/core/renderers/common/renderer.d.ts +157 -0
- package/core/renderers/common/renderer.ts +271 -0
- package/core/renderers/geras/constants.d.ts +23 -0
- package/core/renderers/geras/constants.ts +61 -0
- package/core/renderers/geras/drawer.d.ts +43 -0
- package/core/renderers/geras/{drawer.js → drawer.ts} +40 -84
- package/core/renderers/geras/geras.d.ts +11 -0
- package/core/renderers/geras/geras.ts +37 -0
- package/core/renderers/geras/highlight_constants.d.ts +108 -0
- package/core/renderers/geras/{highlight_constants.js → highlight_constants.ts} +107 -69
- package/core/renderers/geras/highlighter.d.ts +98 -0
- package/core/renderers/geras/{highlighter.js → highlighter.ts} +81 -86
- package/core/renderers/geras/info.d.ts +45 -0
- package/core/renderers/geras/{info.js → info.ts} +61 -99
- package/core/renderers/geras/measurables/inline_input.d.ts +23 -0
- package/core/renderers/geras/measurables/inline_input.ts +51 -0
- package/core/renderers/geras/measurables/statement_input.d.ts +23 -0
- package/core/renderers/geras/measurables/statement_input.ts +50 -0
- package/core/renderers/geras/path_object.d.ts +47 -0
- package/core/renderers/geras/{path_object.js → path_object.ts} +46 -74
- package/core/renderers/geras/renderer.d.ts +69 -0
- package/core/renderers/geras/renderer.ts +126 -0
- package/core/renderers/measurables/base.d.ts +27 -0
- package/core/renderers/measurables/base.ts +53 -0
- package/core/renderers/measurables/bottom_row.d.ts +61 -0
- package/core/renderers/measurables/bottom_row.ts +120 -0
- package/core/renderers/measurables/connection.d.ts +25 -0
- package/core/renderers/measurables/connection.ts +52 -0
- package/core/renderers/measurables/external_value_input.d.ts +27 -0
- package/core/renderers/measurables/external_value_input.ts +65 -0
- package/core/renderers/measurables/field.d.ts +30 -0
- package/core/renderers/measurables/field.ts +63 -0
- package/core/renderers/measurables/hat.d.ts +21 -0
- package/core/renderers/measurables/{hat.js → hat.ts} +12 -14
- package/core/renderers/measurables/icon.d.ts +26 -0
- package/core/renderers/measurables/{icon.js → icon.ts} +14 -18
- package/core/renderers/measurables/in_row_spacer.d.ts +21 -0
- package/core/renderers/measurables/in_row_spacer.ts +44 -0
- package/core/renderers/measurables/inline_input.d.ts +24 -0
- package/core/renderers/measurables/{inline_input.js → inline_input.ts} +22 -26
- package/core/renderers/measurables/input_connection.d.ts +29 -0
- package/core/renderers/measurables/input_connection.ts +66 -0
- package/core/renderers/measurables/input_row.d.ts +30 -0
- package/core/renderers/measurables/{input_row.js → input_row.ts} +24 -31
- package/core/renderers/measurables/jagged_edge.d.ts +20 -0
- package/core/renderers/measurables/{jagged_edge.js → jagged_edge.ts} +10 -13
- package/core/renderers/measurables/next_connection.d.ts +23 -0
- package/core/renderers/measurables/next_connection.ts +47 -0
- package/core/renderers/measurables/output_connection.d.ts +26 -0
- package/core/renderers/measurables/output_connection.ts +56 -0
- package/core/renderers/measurables/previous_connection.d.ts +23 -0
- package/core/renderers/measurables/previous_connection.ts +47 -0
- package/core/renderers/measurables/round_corner.d.ts +21 -0
- package/core/renderers/measurables/round_corner.ts +49 -0
- package/core/renderers/measurables/row.d.ts +141 -0
- package/core/renderers/measurables/row.ts +225 -0
- package/core/renderers/measurables/spacer_row.d.ts +29 -0
- package/core/renderers/measurables/spacer_row.ts +55 -0
- package/core/renderers/measurables/square_corner.d.ts +21 -0
- package/core/renderers/measurables/square_corner.ts +47 -0
- package/core/renderers/measurables/statement_input.d.ts +22 -0
- package/core/renderers/measurables/{statement_input.js → statement_input.ts} +14 -18
- package/core/renderers/measurables/top_row.d.ts +56 -0
- package/core/renderers/measurables/top_row.ts +122 -0
- package/core/renderers/measurables/types.d.ts +235 -0
- package/core/renderers/measurables/types.ts +332 -0
- package/core/renderers/minimalist/constants.d.ts +14 -0
- package/core/renderers/minimalist/{constants.js → constants.ts} +5 -10
- package/core/renderers/minimalist/drawer.d.ts +21 -0
- package/core/renderers/minimalist/drawer.ts +38 -0
- package/core/renderers/minimalist/info.d.ts +30 -0
- package/core/renderers/minimalist/info.ts +52 -0
- package/core/renderers/minimalist/minimalist.d.ts +6 -0
- package/core/renderers/minimalist/minimalist.ts +22 -0
- package/core/renderers/minimalist/renderer.d.ts +41 -0
- package/core/renderers/minimalist/renderer.ts +71 -0
- package/core/renderers/thrasos/info.d.ts +40 -0
- package/core/renderers/thrasos/{info.js → info.ts} +66 -67
- package/core/renderers/thrasos/renderer.d.ts +25 -0
- package/core/renderers/thrasos/renderer.ts +48 -0
- package/core/renderers/thrasos/thrasos.d.ts +4 -0
- package/core/renderers/thrasos/thrasos.ts +20 -0
- package/core/renderers/zelos/constants.d.ts +186 -0
- package/core/renderers/zelos/{constants.js → constants.ts} +294 -441
- package/core/renderers/zelos/drawer.d.ts +47 -0
- package/core/renderers/zelos/{drawer.js → drawer.ts} +73 -95
- package/core/renderers/zelos/info.d.ts +88 -0
- package/core/renderers/zelos/{info.js → info.ts} +111 -142
- package/core/renderers/zelos/marker_svg.d.ts +46 -0
- package/core/renderers/zelos/marker_svg.ts +151 -0
- package/core/renderers/zelos/measurables/bottom_row.d.ts +27 -0
- package/core/renderers/zelos/measurables/bottom_row.ts +53 -0
- package/core/renderers/zelos/measurables/inputs.d.ts +23 -0
- package/core/renderers/zelos/measurables/{inputs.js → inputs.ts} +14 -15
- package/core/renderers/zelos/measurables/row_elements.d.ts +21 -0
- package/core/renderers/zelos/measurables/row_elements.ts +45 -0
- package/core/renderers/zelos/measurables/top_row.d.ts +29 -0
- package/core/renderers/zelos/measurables/{top_row.js → top_row.ts} +14 -27
- package/core/renderers/zelos/path_object.d.ts +77 -0
- package/core/renderers/zelos/path_object.ts +215 -0
- package/core/renderers/zelos/renderer.d.ts +74 -0
- package/core/renderers/zelos/renderer.ts +142 -0
- package/core/renderers/zelos/zelos.d.ts +12 -0
- package/core/renderers/zelos/zelos.ts +39 -0
- package/core/scrollbar.d.ts +277 -0
- package/core/{scrollbar.js → scrollbar.ts} +307 -328
- package/core/scrollbar_pair.d.ts +105 -0
- package/core/{scrollbar_pair.js → scrollbar_pair.ts} +71 -79
- package/core/serialization/blocks.d.ts +98 -0
- package/core/serialization/{blocks.js → blocks.ts} +229 -228
- package/core/serialization/exceptions.d.ts +73 -0
- package/core/serialization/exceptions.ts +98 -0
- package/core/serialization/priorities.d.ts +15 -0
- package/core/serialization/{priorities.js → priorities.ts} +4 -10
- package/core/serialization/registry.d.ts +20 -0
- package/core/serialization/{registry.js → registry.ts} +11 -13
- package/core/serialization/variables.d.ts +14 -0
- package/core/serialization/{variables.js → variables.ts} +30 -32
- package/core/serialization/workspaces.d.ts +28 -0
- package/core/serialization/{workspaces.js → workspaces.ts} +30 -27
- package/core/shortcut_items.d.ts +61 -0
- package/core/{shortcut_items.js → shortcut_items.ts} +121 -157
- package/core/shortcut_registry.d.ts +151 -0
- package/core/shortcut_registry.ts +355 -0
- package/core/sprites.d.ts +19 -0
- package/core/{sprites.js → sprites.ts} +4 -6
- package/core/theme/classic.d.ts +12 -0
- package/core/theme/{classic.js → classic.ts} +5 -7
- package/core/theme/themes.d.ts +8 -0
- package/core/theme/themes.ts +22 -0
- package/core/theme/zelos.d.ts +11 -0
- package/core/theme/{zelos.js → zelos.ts} +4 -7
- package/core/theme.d.ts +142 -0
- package/core/theme.ts +221 -0
- package/core/theme_manager.d.ts +81 -0
- package/core/theme_manager.ts +186 -0
- package/core/toolbox/category.d.ts +239 -0
- package/core/toolbox/category.ts +679 -0
- package/core/toolbox/collapsible_category.d.ts +91 -0
- package/core/toolbox/collapsible_category.ts +273 -0
- package/core/toolbox/separator.d.ts +39 -0
- package/core/toolbox/separator.ts +105 -0
- package/core/toolbox/toolbox.d.ts +352 -0
- package/core/toolbox/{toolbox.js → toolbox.ts} +316 -432
- package/core/toolbox/toolbox_item.d.ts +85 -0
- package/core/toolbox/toolbox_item.ts +147 -0
- package/core/tooltip.d.ts +126 -0
- package/core/{tooltip.js → tooltip.ts} +136 -214
- package/core/touch.d.ts +121 -0
- package/core/touch.ts +306 -0
- package/core/touch_gesture.d.ts +115 -0
- package/core/{touch_gesture.js → touch_gesture.ts} +87 -125
- package/core/trashcan.d.ts +195 -0
- package/core/{trashcan.js → trashcan.ts} +226 -312
- package/core/utils/aria.d.ts +67 -0
- package/core/utils/{aria.js → aria.ts} +47 -61
- package/core/utils/array.d.ts +14 -0
- package/core/utils/{array.js → array.ts} +10 -12
- package/core/utils/colour.d.ts +103 -0
- package/core/utils/{colour.js → colour.ts} +60 -72
- package/core/utils/coordinate.d.ts +72 -0
- package/core/utils/coordinate.ts +124 -0
- package/core/utils/deprecation.d.ts +17 -0
- package/core/utils/{deprecation.js → deprecation.ts} +11 -11
- package/core/utils/dom.d.ts +165 -0
- package/core/utils/{dom.js → dom.ts} +125 -147
- package/core/utils/idgenerator.d.ts +25 -0
- package/core/utils/{idgenerator.js → idgenerator.ts} +15 -18
- package/core/utils/keycodes.d.ts +137 -0
- package/core/utils/keycodes.ts +169 -0
- package/core/utils/math.d.ts +30 -0
- package/core/utils/{math.js → math.ts} +17 -19
- package/core/utils/metrics.d.ts +64 -0
- package/core/utils/metrics.ts +97 -0
- package/core/utils/object.d.ts +35 -0
- package/core/utils/{object.js → object.ts} +30 -26
- package/core/utils/parsing.d.ts +50 -0
- package/core/utils/{parsing.js → parsing.ts} +50 -50
- package/core/utils/rect.d.ts +38 -0
- package/core/utils/{rect.js → rect.ts} +18 -31
- package/core/utils/sentinel.d.ts +11 -0
- package/core/utils/{sentinel.js → sentinel.ts} +3 -5
- package/core/utils/size.d.ts +27 -0
- package/core/utils/{size.js → size.ts} +12 -26
- package/core/utils/string.d.ts +55 -0
- package/core/utils/{string.js → string.ts} +64 -61
- package/core/utils/style.d.ts +127 -0
- package/core/utils/{style.js → style.ts} +102 -92
- package/core/utils/svg.d.ts +68 -0
- package/core/utils/svg.ts +88 -0
- package/core/utils/svg_math.d.ts +70 -0
- package/core/utils/{svg_math.js → svg_math.ts} +72 -71
- package/core/utils/svg_paths.d.ts +101 -0
- package/core/utils/{svg_paths.js → svg_paths.ts} +56 -65
- package/core/utils/toolbox.d.ts +193 -0
- package/core/utils/toolbox.ts +433 -0
- package/core/utils/useragent.d.ts +33 -0
- package/core/utils/useragent.ts +135 -0
- package/core/utils/xml.d.ts +52 -0
- package/core/utils/{xml.js → xml.ts} +26 -36
- package/core/utils.d.ts +217 -0
- package/core/utils.ts +428 -0
- package/core/variable_map.d.ts +141 -0
- package/core/{variable_map.js → variable_map.ts} +131 -149
- package/core/variable_model.d.ts +40 -0
- package/core/variable_model.ts +82 -0
- package/core/variables.d.ts +181 -0
- package/core/{variables.js → variables.ts} +206 -188
- package/core/variables_dynamic.d.ts +38 -0
- package/core/{variables_dynamic.js → variables_dynamic.ts} +47 -43
- package/core/warning.d.ts +50 -0
- package/core/{warning.js → warning.ts} +52 -66
- package/core/widgetdiv.d.ts +69 -0
- package/core/widgetdiv.ts +257 -0
- package/core/workspace.d.ts +386 -0
- package/core/workspace.ts +801 -0
- package/core/workspace_audio.d.ts +47 -0
- package/core/{workspace_audio.js → workspace_audio.ts} +47 -60
- package/core/workspace_comment.d.ts +170 -0
- package/core/workspace_comment.ts +398 -0
- package/core/workspace_comment_svg.d.ts +329 -0
- package/core/{workspace_comment_svg.js → workspace_comment_svg.ts} +347 -444
- package/core/workspace_drag_surface_svg.d.ts +68 -0
- package/core/{workspace_drag_surface_svg.js → workspace_drag_surface_svg.ts} +75 -82
- package/core/workspace_dragger.d.ts +48 -0
- package/core/workspace_dragger.ts +104 -0
- package/core/workspace_svg.d.ts +920 -0
- package/core/{workspace_svg.js → workspace_svg.ts} +855 -935
- package/core/xml.d.ts +117 -0
- package/core/{xml.js → xml.ts} +306 -326
- package/core/zoom_controls.d.ts +130 -0
- package/core/{zoom_controls.js → zoom_controls.ts} +185 -251
- package/core.d.ts +1 -3
- package/core.js +1 -2
- package/dart.d.ts +0 -3
- package/dart_compressed.js +387 -99
- package/dart_compressed.js.map +1 -1
- package/generators/dart/all.js +2 -0
- package/generators/dart/colour.js +1 -1
- package/generators/dart/lists.js +1 -1
- package/generators/dart/logic.js +1 -1
- package/generators/dart/loops.js +1 -1
- package/generators/dart/math.js +1 -1
- package/generators/dart/procedures.js +1 -1
- package/generators/dart/text.js +1 -1
- package/generators/dart/variables.js +1 -1
- package/generators/dart/variables_dynamic.js +1 -1
- package/generators/dart.js +1 -2
- package/generators/javascript/all.js +2 -0
- package/generators/javascript/colour.js +1 -1
- package/generators/javascript/lists.js +1 -1
- package/generators/javascript/logic.js +1 -1
- package/generators/javascript/loops.js +1 -1
- package/generators/javascript/math.js +4 -4
- package/generators/javascript/procedures.js +1 -1
- package/generators/javascript/text.js +2 -2
- package/generators/javascript/variables.js +1 -1
- package/generators/javascript/variables_dynamic.js +1 -1
- package/generators/javascript.js +1 -3
- package/generators/lua/all.js +2 -0
- package/generators/lua/colour.js +1 -1
- package/generators/lua/lists.js +1 -1
- package/generators/lua/logic.js +1 -1
- package/generators/lua/loops.js +1 -1
- package/generators/lua/math.js +1 -1
- package/generators/lua/procedures.js +1 -1
- package/generators/lua/text.js +1 -1
- package/generators/lua/variables.js +1 -1
- package/generators/lua/variables_dynamic.js +1 -1
- package/generators/lua.js +1 -2
- package/generators/php/all.js +2 -0
- package/generators/php/colour.js +1 -1
- package/generators/php/lists.js +1 -2
- package/generators/php/logic.js +1 -1
- package/generators/php/loops.js +1 -1
- package/generators/php/math.js +1 -1
- package/generators/php/procedures.js +1 -1
- package/generators/php/text.js +1 -1
- package/generators/php/variables.js +1 -1
- package/generators/php/variables_dynamic.js +1 -1
- package/generators/php.js +1 -2
- package/generators/python/all.js +2 -0
- package/generators/python/colour.js +3 -3
- package/generators/python/lists.js +1 -1
- package/generators/python/logic.js +1 -1
- package/generators/python/loops.js +4 -7
- package/generators/python/math.js +1 -1
- package/generators/python/procedures.js +1 -1
- package/generators/python/text.js +1 -1
- package/generators/python/variables.js +1 -1
- package/generators/python/variables_dynamic.js +1 -1
- package/generators/python.js +1 -2
- package/index.d.ts +2 -8
- package/javascript.d.ts +0 -3
- package/javascript_compressed.js +314 -104
- package/javascript_compressed.js.map +1 -1
- package/lua.d.ts +0 -3
- package/lua_compressed.js +399 -81
- package/lua_compressed.js.map +1 -1
- package/msg/ab.js +420 -420
- package/msg/ace.js +420 -420
- package/msg/af.js +420 -420
- package/msg/am.js +420 -420
- package/msg/ar.js +420 -420
- package/msg/ast.js +420 -420
- package/msg/az.js +420 -420
- package/msg/ba.js +420 -420
- package/msg/bcc.js +420 -420
- package/msg/be-tarask.js +420 -420
- package/msg/be.js +420 -420
- package/msg/bg.js +420 -420
- package/msg/bn.js +420 -420
- package/msg/br.js +420 -420
- package/msg/bs.js +420 -420
- package/msg/ca.js +420 -420
- package/msg/cdo.js +420 -420
- package/msg/cs.js +420 -420
- package/msg/da.js +420 -420
- package/msg/de.js +420 -420
- package/msg/diq.js +420 -420
- package/msg/dty.js +420 -420
- package/msg/ee.js +420 -420
- package/msg/el.js +420 -420
- package/msg/en-gb.js +420 -420
- package/msg/en.js +420 -420
- package/msg/eo.js +420 -420
- package/msg/es.js +420 -420
- package/msg/et.js +420 -420
- package/msg/eu.js +420 -420
- package/msg/fa.js +420 -420
- package/msg/fi.js +420 -420
- package/msg/fo.js +420 -420
- package/msg/fr.js +420 -420
- package/msg/frr.js +420 -420
- package/msg/gl.js +420 -420
- package/msg/gn.js +420 -420
- package/msg/gor.js +420 -420
- package/msg/ha.js +420 -420
- package/msg/hak.js +420 -420
- package/msg/he.js +420 -420
- package/msg/hi.js +420 -420
- package/msg/hr.js +420 -420
- package/msg/hrx.js +420 -420
- package/msg/hu.js +420 -420
- package/msg/hy.js +420 -420
- package/msg/ia.js +420 -420
- package/msg/id.js +420 -420
- package/msg/ig.js +420 -420
- package/msg/inh.js +420 -420
- package/msg/is.js +420 -420
- package/msg/it.js +420 -420
- package/msg/ja.js +420 -420
- package/msg/ka.js +420 -420
- package/msg/kab.js +420 -420
- package/msg/kbd-cyrl.js +420 -420
- package/msg/km.js +420 -420
- package/msg/kn.js +420 -420
- package/msg/ko.js +420 -420
- package/msg/ksh.js +420 -420
- package/msg/ku-latn.js +420 -420
- package/msg/ky.js +420 -420
- package/msg/la.js +420 -420
- package/msg/lb.js +420 -420
- package/msg/lki.js +420 -420
- package/msg/lo.js +420 -420
- package/msg/lrc.js +420 -420
- package/msg/lt.js +420 -420
- package/msg/lv.js +420 -420
- package/msg/mg.js +420 -420
- package/msg/mk.js +420 -420
- package/msg/ml.js +420 -420
- package/msg/mnw.js +420 -420
- package/msg/ms.js +420 -420
- package/msg/my.js +420 -420
- package/msg/mzn.js +420 -420
- package/msg/nb.js +420 -420
- package/msg/ne.js +420 -420
- package/msg/nl.js +420 -420
- package/msg/oc.js +420 -420
- package/msg/olo.js +420 -420
- package/msg/pa.js +420 -420
- package/msg/pl.js +420 -420
- package/msg/pms.js +420 -420
- package/msg/ps.js +420 -420
- package/msg/pt-br.js +420 -420
- package/msg/pt.js +420 -420
- package/msg/ro.js +420 -420
- package/msg/ru.js +420 -420
- package/msg/sc.js +420 -420
- package/msg/sco.js +420 -420
- package/msg/sd.js +420 -420
- package/msg/shn.js +420 -420
- package/msg/si.js +420 -420
- package/msg/sk.js +420 -420
- package/msg/skr-arab.js +420 -420
- package/msg/sl.js +420 -420
- package/msg/smn.js +420 -420
- package/msg/sq.js +420 -420
- package/msg/sr-latn.js +420 -420
- package/msg/sr.js +420 -420
- package/msg/sv.js +420 -420
- package/msg/sw.js +420 -420
- package/msg/ta.js +420 -420
- package/msg/tcy.js +420 -420
- package/msg/te.js +420 -420
- package/msg/th.js +420 -420
- package/msg/ti.js +420 -420
- package/msg/tl.js +420 -420
- package/msg/tlh.js +420 -420
- package/msg/tr.js +420 -420
- package/msg/ug-arab.js +420 -420
- package/msg/uk.js +420 -420
- package/msg/ur.js +420 -420
- package/msg/uz.js +420 -420
- package/msg/vi.js +420 -420
- package/msg/xmf.js +420 -420
- package/msg/yo.js +420 -420
- package/msg/yue.js +420 -420
- package/msg/zgh.js +420 -420
- package/msg/zh-hans.js +420 -420
- package/msg/zh-hant.js +420 -420
- package/package.json +5 -5
- package/php.d.ts +0 -3
- package/php_compressed.js +322 -93
- package/php_compressed.js.map +1 -1
- package/python.d.ts +0 -3
- package/python_compressed.js +237 -90
- package/python_compressed.js.map +1 -1
- package/blockly.d.ts +0 -26127
- package/core/blockly_options.js +0 -28
- package/core/bubble_dragger.js +0 -298
- package/core/clipboard.js +0 -80
- package/core/component_manager.js +0 -263
- package/core/contextmenu_items.js +0 -651
- package/core/contextmenu_registry.js +0 -178
- package/core/delete_area.js +0 -87
- package/core/dialog.js +0 -107
- package/core/drag_target.js +0 -98
- package/core/events/events.js +0 -147
- package/core/events/events_abstract.js +0 -133
- package/core/events/events_block_base.js +0 -70
- package/core/events/events_block_drag.js +0 -89
- package/core/events/events_bubble_open.js +0 -90
- package/core/events/events_comment_base.js +0 -121
- package/core/events/events_marker_move.js +0 -110
- package/core/events/events_selected.js +0 -83
- package/core/events/events_toolbox_item_select.js +0 -84
- package/core/events/events_trashcan_open.js +0 -73
- package/core/events/events_var_base.js +0 -70
- package/core/events/events_viewport.js +0 -107
- package/core/events/workspace_events.js +0 -93
- package/core/field_angle.js +0 -591
- package/core/field_checkbox.js +0 -255
- package/core/field_colour.js +0 -717
- package/core/field_image.js +0 -304
- package/core/field_label.js +0 -149
- package/core/field_label_serializable.js +0 -80
- package/core/field_textinput.js +0 -619
- package/core/flyout_button.js +0 -356
- package/core/grid.js +0 -226
- package/core/icon.js +0 -225
- package/core/input.js +0 -335
- package/core/interfaces/i_ast_node_location_svg.js +0 -45
- package/core/interfaces/i_ast_node_location_with_block.js +0 -41
- package/core/interfaces/i_autohideable.js +0 -40
- package/core/interfaces/i_block_dragger.js +0 -66
- package/core/interfaces/i_bounded_element.js +0 -45
- package/core/interfaces/i_bubble.js +0 -95
- package/core/interfaces/i_collapsible_toolbox_item.js +0 -53
- package/core/interfaces/i_connection_checker.js +0 -104
- package/core/interfaces/i_contextmenu.js +0 -32
- package/core/interfaces/i_copyable.js +0 -49
- package/core/interfaces/i_delete_area.js +0 -50
- package/core/interfaces/i_drag_target.js +0 -88
- package/core/interfaces/i_flyout.js +0 -201
- package/core/interfaces/i_keyboard_accessible.js +0 -38
- package/core/interfaces/i_metrics_manager.js +0 -154
- package/core/interfaces/i_positionable.js +0 -51
- package/core/interfaces/i_selectable.js +0 -51
- package/core/interfaces/i_selectable_toolbox_item.js +0 -73
- package/core/interfaces/i_serializer.js +0 -77
- package/core/interfaces/i_styleable.js +0 -39
- package/core/interfaces/i_toolbox.js +0 -142
- package/core/interfaces/i_toolbox_item.js +0 -85
- package/core/marker_manager.js +0 -213
- package/core/menuitem.js +0 -292
- package/core/names.js +0 -293
- package/core/registry.js +0 -384
- package/core/renderers/common/block_rendering.js +0 -170
- package/core/renderers/common/constants.js +0 -1250
- package/core/renderers/common/i_path_object.js +0 -162
- package/core/renderers/common/marker_svg.js +0 -721
- package/core/renderers/common/path_object.js +0 -283
- package/core/renderers/common/renderer.js +0 -305
- package/core/renderers/geras/constants.js +0 -73
- package/core/renderers/geras/geras.js +0 -36
- package/core/renderers/geras/measurables/inline_input.js +0 -58
- package/core/renderers/geras/measurables/statement_input.js +0 -57
- package/core/renderers/geras/renderer.js +0 -149
- package/core/renderers/measurables/base.js +0 -64
- package/core/renderers/measurables/bottom_row.js +0 -138
- package/core/renderers/measurables/connection.js +0 -56
- package/core/renderers/measurables/external_value_input.js +0 -70
- package/core/renderers/measurables/field.js +0 -71
- package/core/renderers/measurables/in_row_spacer.js +0 -47
- package/core/renderers/measurables/input_connection.js +0 -75
- package/core/renderers/measurables/next_connection.js +0 -50
- package/core/renderers/measurables/output_connection.js +0 -61
- package/core/renderers/measurables/previous_connection.js +0 -50
- package/core/renderers/measurables/round_corner.js +0 -52
- package/core/renderers/measurables/row.js +0 -247
- package/core/renderers/measurables/spacer_row.js +0 -69
- package/core/renderers/measurables/square_corner.js +0 -50
- package/core/renderers/measurables/top_row.js +0 -143
- package/core/renderers/measurables/types.js +0 -353
- package/core/renderers/minimalist/drawer.js +0 -42
- package/core/renderers/minimalist/info.js +0 -54
- package/core/renderers/minimalist/minimalist.js +0 -26
- package/core/renderers/minimalist/renderer.js +0 -80
- package/core/renderers/thrasos/renderer.js +0 -53
- package/core/renderers/thrasos/thrasos.js +0 -22
- package/core/renderers/zelos/marker_svg.js +0 -179
- package/core/renderers/zelos/measurables/bottom_row.js +0 -66
- package/core/renderers/zelos/measurables/row_elements.js +0 -46
- package/core/renderers/zelos/path_object.js +0 -247
- package/core/renderers/zelos/renderer.js +0 -147
- package/core/renderers/zelos/zelos.js +0 -38
- package/core/serialization/exceptions.js +0 -144
- package/core/shortcut_registry.js +0 -366
- package/core/theme/themes.js +0 -23
- package/core/theme.js +0 -228
- package/core/theme_manager.js +0 -211
- package/core/toolbox/category.js +0 -751
- package/core/toolbox/collapsible_category.js +0 -311
- package/core/toolbox/separator.js +0 -133
- package/core/toolbox/toolbox_item.js +0 -173
- package/core/touch.js +0 -285
- package/core/utils/coordinate.js +0 -138
- package/core/utils/global.js +0 -41
- package/core/utils/keycodes.js +0 -172
- package/core/utils/metrics.js +0 -154
- package/core/utils/svg.js +0 -186
- package/core/utils/toolbox.js +0 -459
- package/core/utils/useragent.js +0 -197
- package/core/utils.js +0 -383
- package/core/variable_model.js +0 -96
- package/core/widgetdiv.js +0 -290
- package/core/workspace.js +0 -836
- package/core/workspace_comment.js +0 -400
- package/core/workspace_dragger.js +0 -115
|
@@ -1,147 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2019 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* @fileoverview Zelos renderer.
|
|
9
|
-
*/
|
|
10
|
-
'use strict';
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Zelos renderer.
|
|
14
|
-
* @class
|
|
15
|
-
*/
|
|
16
|
-
goog.module('Blockly.zelos.Renderer');
|
|
17
|
-
|
|
18
|
-
const blockRendering = goog.require('Blockly.blockRendering');
|
|
19
|
-
/* eslint-disable-next-line no-unused-vars */
|
|
20
|
-
const {BlockSvg} = goog.requireType('Blockly.BlockSvg');
|
|
21
|
-
const {ConnectionType} = goog.require('Blockly.ConnectionType');
|
|
22
|
-
const {ConstantProvider} = goog.require('Blockly.zelos.ConstantProvider');
|
|
23
|
-
const {Drawer} = goog.require('Blockly.zelos.Drawer');
|
|
24
|
-
const {InsertionMarkerManager} = goog.require('Blockly.InsertionMarkerManager');
|
|
25
|
-
const {MarkerSvg} = goog.require('Blockly.zelos.MarkerSvg');
|
|
26
|
-
/* eslint-disable-next-line no-unused-vars */
|
|
27
|
-
const {Marker} = goog.requireType('Blockly.Marker');
|
|
28
|
-
const {PathObject} = goog.require('Blockly.zelos.PathObject');
|
|
29
|
-
/* eslint-disable-next-line no-unused-vars */
|
|
30
|
-
const {RenderInfo: BaseRenderInfo} = goog.requireType('Blockly.blockRendering.RenderInfo');
|
|
31
|
-
const {RenderInfo} = goog.require('Blockly.zelos.RenderInfo');
|
|
32
|
-
const {Renderer: BaseRenderer} = goog.require('Blockly.blockRendering.Renderer');
|
|
33
|
-
/* eslint-disable-next-line no-unused-vars */
|
|
34
|
-
const {Theme} = goog.requireType('Blockly.Theme');
|
|
35
|
-
/* eslint-disable-next-line no-unused-vars */
|
|
36
|
-
const {WorkspaceSvg} = goog.requireType('Blockly.WorkspaceSvg');
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* The zelos renderer.
|
|
41
|
-
* @extends {BaseRenderer}
|
|
42
|
-
* @alias Blockly.zelos.Renderer
|
|
43
|
-
*/
|
|
44
|
-
class Renderer extends BaseRenderer {
|
|
45
|
-
/**
|
|
46
|
-
* @param {string} name The renderer name.
|
|
47
|
-
* @package
|
|
48
|
-
*/
|
|
49
|
-
constructor(name) {
|
|
50
|
-
super(name);
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* Create a new instance of the renderer's constant provider.
|
|
55
|
-
* @return {!ConstantProvider} The constant provider.
|
|
56
|
-
* @protected
|
|
57
|
-
* @override
|
|
58
|
-
*/
|
|
59
|
-
makeConstants_() {
|
|
60
|
-
return new ConstantProvider();
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
/**
|
|
64
|
-
* Create a new instance of the renderer's render info object.
|
|
65
|
-
* @param {!BlockSvg} block The block to measure.
|
|
66
|
-
* @return {!RenderInfo} The render info object.
|
|
67
|
-
* @protected
|
|
68
|
-
* @override
|
|
69
|
-
*/
|
|
70
|
-
makeRenderInfo_(block) {
|
|
71
|
-
return new RenderInfo(this, block);
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* Create a new instance of the renderer's drawer.
|
|
76
|
-
* @param {!BlockSvg} block The block to render.
|
|
77
|
-
* @param {!BaseRenderInfo} info An object containing all
|
|
78
|
-
* information needed to render this block.
|
|
79
|
-
* @return {!Drawer} The drawer.
|
|
80
|
-
* @protected
|
|
81
|
-
* @override
|
|
82
|
-
*/
|
|
83
|
-
makeDrawer_(block, info) {
|
|
84
|
-
return new Drawer(
|
|
85
|
-
block,
|
|
86
|
-
/** @type {!RenderInfo} */ (info));
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
/**
|
|
90
|
-
* Create a new instance of the renderer's cursor drawer.
|
|
91
|
-
* @param {!WorkspaceSvg} workspace The workspace the cursor belongs to.
|
|
92
|
-
* @param {!Marker} marker The marker.
|
|
93
|
-
* @return {!MarkerSvg} The object in charge of drawing
|
|
94
|
-
* the marker.
|
|
95
|
-
* @package
|
|
96
|
-
* @override
|
|
97
|
-
*/
|
|
98
|
-
makeMarkerDrawer(workspace, marker) {
|
|
99
|
-
return new MarkerSvg(workspace, this.getConstants(), marker);
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
/**
|
|
103
|
-
* Create a new instance of a renderer path object.
|
|
104
|
-
* @param {!SVGElement} root The root SVG element.
|
|
105
|
-
* @param {!Theme.BlockStyle} style The style object to use for
|
|
106
|
-
* colouring.
|
|
107
|
-
* @return {!PathObject} The renderer path object.
|
|
108
|
-
* @package
|
|
109
|
-
* @override
|
|
110
|
-
*/
|
|
111
|
-
makePathObject(root, style) {
|
|
112
|
-
return new PathObject(
|
|
113
|
-
root, style,
|
|
114
|
-
/** @type {!ConstantProvider} */ (this.getConstants()));
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
/**
|
|
118
|
-
* @override
|
|
119
|
-
*/
|
|
120
|
-
shouldHighlightConnection(conn) {
|
|
121
|
-
return conn.type !== ConnectionType.INPUT_VALUE &&
|
|
122
|
-
conn.type !== ConnectionType.OUTPUT_VALUE;
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
/**
|
|
126
|
-
* @override
|
|
127
|
-
*/
|
|
128
|
-
getConnectionPreviewMethod(closest, local, topBlock) {
|
|
129
|
-
if (local.type === ConnectionType.OUTPUT_VALUE) {
|
|
130
|
-
if (!closest.isConnected()) {
|
|
131
|
-
return InsertionMarkerManager.PREVIEW_TYPE.INPUT_OUTLINE;
|
|
132
|
-
}
|
|
133
|
-
// TODO: Returning this is a total hack, because we don't want to show
|
|
134
|
-
// a replacement fade, we want to show an outline affect.
|
|
135
|
-
// Sadly zelos does not support showing an outline around filled
|
|
136
|
-
// inputs, so we have to pretend like the connected block is getting
|
|
137
|
-
// replaced.
|
|
138
|
-
return InsertionMarkerManager.PREVIEW_TYPE.REPLACEMENT_FADE;
|
|
139
|
-
}
|
|
140
|
-
|
|
141
|
-
return super.getConnectionPreviewMethod(closest, local, topBlock);
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
|
|
145
|
-
blockRendering.register('zelos', Renderer);
|
|
146
|
-
|
|
147
|
-
exports.Renderer = Renderer;
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2021 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* @fileoverview Re-exports of Blockly.zelos.* modules.
|
|
9
|
-
*/
|
|
10
|
-
'use strict';
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Re-exports of Blockly.zelos.* modules.
|
|
14
|
-
* @namespace Blockly.zelos
|
|
15
|
-
*/
|
|
16
|
-
goog.module('Blockly.zelos');
|
|
17
|
-
|
|
18
|
-
const {BottomRow} = goog.require('Blockly.zelos.BottomRow');
|
|
19
|
-
const {ConstantProvider} = goog.require('Blockly.zelos.ConstantProvider');
|
|
20
|
-
const {Drawer} = goog.require('Blockly.zelos.Drawer');
|
|
21
|
-
const {MarkerSvg} = goog.require('Blockly.zelos.MarkerSvg');
|
|
22
|
-
const {PathObject} = goog.require('Blockly.zelos.PathObject');
|
|
23
|
-
const {RenderInfo} = goog.require('Blockly.zelos.RenderInfo');
|
|
24
|
-
const {Renderer} = goog.require('Blockly.zelos.Renderer');
|
|
25
|
-
const {RightConnectionShape} = goog.require('Blockly.zelos.RightConnectionShape');
|
|
26
|
-
const {StatementInput} = goog.require('Blockly.zelos.StatementInput');
|
|
27
|
-
const {TopRow} = goog.require('Blockly.zelos.TopRow');
|
|
28
|
-
|
|
29
|
-
exports.BottomRow = BottomRow;
|
|
30
|
-
exports.ConstantProvider = ConstantProvider;
|
|
31
|
-
exports.Drawer = Drawer;
|
|
32
|
-
exports.MarkerSvg = MarkerSvg;
|
|
33
|
-
exports.PathObject = PathObject;
|
|
34
|
-
exports.RenderInfo = RenderInfo;
|
|
35
|
-
exports.Renderer = Renderer;
|
|
36
|
-
exports.RightConnectionShape = RightConnectionShape;
|
|
37
|
-
exports.StatementInput = StatementInput;
|
|
38
|
-
exports.TopRow = TopRow;
|
|
@@ -1,144 +0,0 @@
|
|
|
1
|
-
|
|
2
|
-
/**
|
|
3
|
-
* @license
|
|
4
|
-
* Copyright 2021 Google LLC
|
|
5
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
/**
|
|
9
|
-
* @fileoverview Contains custom errors thrown by the serialization system.
|
|
10
|
-
*/
|
|
11
|
-
'use strict';
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Contains custom errors thrown by the serialization system.
|
|
15
|
-
* @namespace Blockly.serialization.exceptions
|
|
16
|
-
*/
|
|
17
|
-
goog.module('Blockly.serialization.exceptions');
|
|
18
|
-
|
|
19
|
-
/* eslint-disable-next-line no-unused-vars */
|
|
20
|
-
const {Block} = goog.requireType('Blockly.Block');
|
|
21
|
-
// eslint-disable-next-line no-unused-vars
|
|
22
|
-
const {State} = goog.requireType('Blockly.serialization.blocks');
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* @alias Blockly.serialization.exceptions.DeserializationError
|
|
27
|
-
*/
|
|
28
|
-
class DeserializationError extends Error {}
|
|
29
|
-
exports.DeserializationError = DeserializationError;
|
|
30
|
-
|
|
31
|
-
/**
|
|
32
|
-
* Represents an error where the serialized state is expected to provide a
|
|
33
|
-
* block type, but it is not provided.
|
|
34
|
-
* @alias Blockly.serialization.exceptions.MissingBlockType
|
|
35
|
-
*/
|
|
36
|
-
class MissingBlockType extends DeserializationError {
|
|
37
|
-
/**
|
|
38
|
-
* @param {!State} state The state object which is missing the block type.
|
|
39
|
-
* @package
|
|
40
|
-
*/
|
|
41
|
-
constructor(state) {
|
|
42
|
-
super(`Expected to find a 'type' property, defining the block type`);
|
|
43
|
-
|
|
44
|
-
/**
|
|
45
|
-
* The state object containing the bad name.
|
|
46
|
-
* @type {!State}
|
|
47
|
-
*/
|
|
48
|
-
this.state = state;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
exports.MissingBlockType = MissingBlockType;
|
|
52
|
-
|
|
53
|
-
/**
|
|
54
|
-
* Represents an error where deserialization encountered a block that did
|
|
55
|
-
* not have a connection that was defined in the serialized state.
|
|
56
|
-
* @alias Blockly.serialization.exceptions.MissingConnection
|
|
57
|
-
*/
|
|
58
|
-
class MissingConnection extends DeserializationError {
|
|
59
|
-
/**
|
|
60
|
-
* @param {string} connection The name of the connection that is missing. E.g.
|
|
61
|
-
* 'IF0', or 'next'.
|
|
62
|
-
* @param {!Block} block The block missing the connection.
|
|
63
|
-
* @param {!State} state The state object containing the bad connection.
|
|
64
|
-
* @package
|
|
65
|
-
*/
|
|
66
|
-
constructor(connection, block, state) {
|
|
67
|
-
super(`The block ${block.toDevString()} is missing a(n) ${connection}
|
|
68
|
-
connection`);
|
|
69
|
-
|
|
70
|
-
/**
|
|
71
|
-
* The block missing the connection.
|
|
72
|
-
* @type {!Block}
|
|
73
|
-
*/
|
|
74
|
-
this.block = block;
|
|
75
|
-
|
|
76
|
-
/**
|
|
77
|
-
* The state object containing the bad name.
|
|
78
|
-
* @type {!State}
|
|
79
|
-
*/
|
|
80
|
-
this.state = state;
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
exports.MissingConnection = MissingConnection;
|
|
84
|
-
|
|
85
|
-
/**
|
|
86
|
-
* Represents an error where deserialization tried to connect two connections
|
|
87
|
-
* that were not compatible.
|
|
88
|
-
* @alias Blockly.serialization.exceptions.BadConnectionCheck
|
|
89
|
-
*/
|
|
90
|
-
class BadConnectionCheck extends DeserializationError {
|
|
91
|
-
/**
|
|
92
|
-
* @param {string} reason The reason the connections were not compatible.
|
|
93
|
-
* @param {string} childConnection The name of the incompatible child
|
|
94
|
-
* connection. E.g. 'output' or 'previous'.
|
|
95
|
-
* @param {!Block} childBlock The child block that could not connect
|
|
96
|
-
* to its parent.
|
|
97
|
-
* @param {!State} childState The state object representing the child block.
|
|
98
|
-
* @package
|
|
99
|
-
*/
|
|
100
|
-
constructor(reason, childConnection, childBlock, childState) {
|
|
101
|
-
super(`The block ${childBlock.toDevString()} could not connect its
|
|
102
|
-
${childConnection} to its parent, because: ${reason}`);
|
|
103
|
-
|
|
104
|
-
/**
|
|
105
|
-
* The block that could not connect to its parent.
|
|
106
|
-
* @type {!Block}
|
|
107
|
-
*/
|
|
108
|
-
this.childBlock = childBlock;
|
|
109
|
-
|
|
110
|
-
/**
|
|
111
|
-
* The state object representing the block that could not connect to its
|
|
112
|
-
* parent.
|
|
113
|
-
* @type {!State}
|
|
114
|
-
*/
|
|
115
|
-
this.childState = childState;
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
exports.BadConnectionCheck = BadConnectionCheck;
|
|
119
|
-
|
|
120
|
-
/**
|
|
121
|
-
* Represents an error where deserialization encountered a real block as it
|
|
122
|
-
* was deserializing children of a shadow.
|
|
123
|
-
* This is an error because it is an invariant of Blockly that shadow blocks
|
|
124
|
-
* do not have real children.
|
|
125
|
-
* @alias Blockly.serialization.exceptions.RealChildOfShadow
|
|
126
|
-
*/
|
|
127
|
-
class RealChildOfShadow extends DeserializationError {
|
|
128
|
-
/**
|
|
129
|
-
* @param {!State} state The state object representing the real block.
|
|
130
|
-
* @package
|
|
131
|
-
*/
|
|
132
|
-
constructor(state) {
|
|
133
|
-
super(`Encountered a real block which is defined as a child of a shadow
|
|
134
|
-
block. It is an invariant of Blockly that shadow blocks only have shadow
|
|
135
|
-
children`);
|
|
136
|
-
|
|
137
|
-
/**
|
|
138
|
-
* The state object representing the real block.
|
|
139
|
-
* @type {!State}
|
|
140
|
-
*/
|
|
141
|
-
this.state = state;
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
exports.RealChildOfShadow = RealChildOfShadow;
|
|
@@ -1,366 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2020 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* @fileoverview The namespace used to keep track of keyboard shortcuts and the
|
|
9
|
-
* key codes used to execute those shortcuts.
|
|
10
|
-
*/
|
|
11
|
-
'use strict';
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* The namespace used to keep track of keyboard shortcuts and the
|
|
15
|
-
* key codes used to execute those shortcuts.
|
|
16
|
-
* @class
|
|
17
|
-
*/
|
|
18
|
-
goog.module('Blockly.ShortcutRegistry');
|
|
19
|
-
|
|
20
|
-
const object = goog.require('Blockly.utils.object');
|
|
21
|
-
const {KeyCodes} = goog.require('Blockly.utils.KeyCodes');
|
|
22
|
-
/* eslint-disable-next-line no-unused-vars */
|
|
23
|
-
const {Workspace} = goog.requireType('Blockly.Workspace');
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
/**
|
|
27
|
-
* Class for the registry of keyboard shortcuts. This is intended to be a
|
|
28
|
-
* singleton. You should not create a new instance, and only access this class
|
|
29
|
-
* from ShortcutRegistry.registry.
|
|
30
|
-
* @alias Blockly.ShortcutRegistry
|
|
31
|
-
*/
|
|
32
|
-
class ShortcutRegistry {
|
|
33
|
-
/**
|
|
34
|
-
* Resets the existing ShortcutRegistry singleton.
|
|
35
|
-
*/
|
|
36
|
-
constructor() {
|
|
37
|
-
this.reset();
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Clear and recreate the registry and keyMap.
|
|
42
|
-
*/
|
|
43
|
-
reset() {
|
|
44
|
-
/**
|
|
45
|
-
* Registry of all keyboard shortcuts, keyed by name of shortcut.
|
|
46
|
-
* @type {!Object<string, !ShortcutRegistry.KeyboardShortcut>}
|
|
47
|
-
* @private
|
|
48
|
-
*/
|
|
49
|
-
this.registry_ = Object.create(null);
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* Map of key codes to an array of shortcut names.
|
|
53
|
-
* @type {!Object<string, !Array<string>>}
|
|
54
|
-
* @private
|
|
55
|
-
*/
|
|
56
|
-
this.keyMap_ = Object.create(null);
|
|
57
|
-
}
|
|
58
|
-
|
|
59
|
-
/**
|
|
60
|
-
* Registers a keyboard shortcut.
|
|
61
|
-
* @param {!ShortcutRegistry.KeyboardShortcut} shortcut The
|
|
62
|
-
* shortcut for this key code.
|
|
63
|
-
* @param {boolean=} opt_allowOverrides True to prevent a warning when
|
|
64
|
-
* overriding an already registered item.
|
|
65
|
-
* @throws {Error} if a shortcut with the same name already exists.
|
|
66
|
-
* @public
|
|
67
|
-
*/
|
|
68
|
-
register(shortcut, opt_allowOverrides) {
|
|
69
|
-
const registeredShortcut = this.registry_[shortcut.name];
|
|
70
|
-
if (registeredShortcut && !opt_allowOverrides) {
|
|
71
|
-
throw new Error(
|
|
72
|
-
'Shortcut with name "' + shortcut.name + '" already exists.');
|
|
73
|
-
}
|
|
74
|
-
this.registry_[shortcut.name] = shortcut;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* Unregisters a keyboard shortcut registered with the given key code. This
|
|
79
|
-
* will also remove any key mappings that reference this shortcut.
|
|
80
|
-
* @param {string} shortcutName The name of the shortcut to unregister.
|
|
81
|
-
* @return {boolean} True if an item was unregistered, false otherwise.
|
|
82
|
-
* @public
|
|
83
|
-
*/
|
|
84
|
-
unregister(shortcutName) {
|
|
85
|
-
const shortcut = this.registry_[shortcutName];
|
|
86
|
-
|
|
87
|
-
if (!shortcut) {
|
|
88
|
-
console.warn(
|
|
89
|
-
'Keyboard shortcut with name "' + shortcutName + '" not found.');
|
|
90
|
-
return false;
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
this.removeAllKeyMappings(shortcutName);
|
|
94
|
-
|
|
95
|
-
delete this.registry_[shortcutName];
|
|
96
|
-
return true;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
/**
|
|
100
|
-
* Adds a mapping between a keycode and a keyboard shortcut.
|
|
101
|
-
* @param {string|KeyCodes} keyCode The key code for the keyboard
|
|
102
|
-
* shortcut. If registering a key code with a modifier (ex: ctrl+c) use
|
|
103
|
-
* ShortcutRegistry.registry.createSerializedKey;
|
|
104
|
-
* @param {string} shortcutName The name of the shortcut to execute when the
|
|
105
|
-
* given keycode is pressed.
|
|
106
|
-
* @param {boolean=} opt_allowCollision True to prevent an error when adding a
|
|
107
|
-
* shortcut to a key that is already mapped to a shortcut.
|
|
108
|
-
* @throws {Error} if the given key code is already mapped to a shortcut.
|
|
109
|
-
* @public
|
|
110
|
-
*/
|
|
111
|
-
addKeyMapping(keyCode, shortcutName, opt_allowCollision) {
|
|
112
|
-
keyCode = String(keyCode);
|
|
113
|
-
const shortcutNames = this.keyMap_[keyCode];
|
|
114
|
-
if (shortcutNames && !opt_allowCollision) {
|
|
115
|
-
throw new Error(
|
|
116
|
-
'Shortcut with name "' + shortcutName + '" collides with shortcuts ' +
|
|
117
|
-
shortcutNames.toString());
|
|
118
|
-
} else if (shortcutNames && opt_allowCollision) {
|
|
119
|
-
shortcutNames.unshift(shortcutName);
|
|
120
|
-
} else {
|
|
121
|
-
this.keyMap_[keyCode] = [shortcutName];
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
|
|
125
|
-
/**
|
|
126
|
-
* Removes a mapping between a keycode and a keyboard shortcut.
|
|
127
|
-
* @param {string} keyCode The key code for the keyboard shortcut. If
|
|
128
|
-
* registering a key code with a modifier (ex: ctrl+c) use
|
|
129
|
-
* ShortcutRegistry.registry.createSerializedKey;
|
|
130
|
-
* @param {string} shortcutName The name of the shortcut to execute when the
|
|
131
|
-
* given keycode is pressed.
|
|
132
|
-
* @param {boolean=} opt_quiet True to not console warn when there is no
|
|
133
|
-
* shortcut to remove.
|
|
134
|
-
* @return {boolean} True if a key mapping was removed, false otherwise.
|
|
135
|
-
* @public
|
|
136
|
-
*/
|
|
137
|
-
removeKeyMapping(keyCode, shortcutName, opt_quiet) {
|
|
138
|
-
const shortcutNames = this.keyMap_[keyCode];
|
|
139
|
-
|
|
140
|
-
if (!shortcutNames && !opt_quiet) {
|
|
141
|
-
console.warn(
|
|
142
|
-
'No keyboard shortcut with name "' + shortcutName +
|
|
143
|
-
'" registered with key code "' + keyCode + '"');
|
|
144
|
-
return false;
|
|
145
|
-
}
|
|
146
|
-
|
|
147
|
-
const shortcutIdx = shortcutNames.indexOf(shortcutName);
|
|
148
|
-
if (shortcutIdx > -1) {
|
|
149
|
-
shortcutNames.splice(shortcutIdx, 1);
|
|
150
|
-
if (shortcutNames.length === 0) {
|
|
151
|
-
delete this.keyMap_[keyCode];
|
|
152
|
-
}
|
|
153
|
-
return true;
|
|
154
|
-
}
|
|
155
|
-
if (!opt_quiet) {
|
|
156
|
-
console.warn(
|
|
157
|
-
'No keyboard shortcut with name "' + shortcutName +
|
|
158
|
-
'" registered with key code "' + keyCode + '"');
|
|
159
|
-
}
|
|
160
|
-
return false;
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
/**
|
|
164
|
-
* Removes all the key mappings for a shortcut with the given name.
|
|
165
|
-
* Useful when changing the default key mappings and the key codes registered
|
|
166
|
-
* to the shortcut are unknown.
|
|
167
|
-
* @param {string} shortcutName The name of the shortcut to remove from the
|
|
168
|
-
* key map.
|
|
169
|
-
* @public
|
|
170
|
-
*/
|
|
171
|
-
removeAllKeyMappings(shortcutName) {
|
|
172
|
-
for (const keyCode in this.keyMap_) {
|
|
173
|
-
this.removeKeyMapping(keyCode, shortcutName, true);
|
|
174
|
-
}
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
/**
|
|
178
|
-
* Sets the key map. Setting the key map will override any default key
|
|
179
|
-
* mappings.
|
|
180
|
-
* @param {!Object<string, !Array<string>>} keyMap The object with key code to
|
|
181
|
-
* shortcut names.
|
|
182
|
-
* @public
|
|
183
|
-
*/
|
|
184
|
-
setKeyMap(keyMap) {
|
|
185
|
-
this.keyMap_ = keyMap;
|
|
186
|
-
}
|
|
187
|
-
|
|
188
|
-
/**
|
|
189
|
-
* Gets the current key map.
|
|
190
|
-
* @return {!Object<string,!Array<!ShortcutRegistry.KeyboardShortcut>>}
|
|
191
|
-
* The object holding key codes to ShortcutRegistry.KeyboardShortcut.
|
|
192
|
-
* @public
|
|
193
|
-
*/
|
|
194
|
-
getKeyMap() {
|
|
195
|
-
return object.deepMerge(Object.create(null), this.keyMap_);
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
/**
|
|
199
|
-
* Gets the registry of keyboard shortcuts.
|
|
200
|
-
* @return {!Object<string, !ShortcutRegistry.KeyboardShortcut>}
|
|
201
|
-
* The registry of keyboard shortcuts.
|
|
202
|
-
* @public
|
|
203
|
-
*/
|
|
204
|
-
getRegistry() {
|
|
205
|
-
return object.deepMerge(Object.create(null), this.registry_);
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
/**
|
|
209
|
-
* Handles key down events.
|
|
210
|
-
* @param {!Workspace} workspace The main workspace where the event was
|
|
211
|
-
* captured.
|
|
212
|
-
* @param {!Event} e The key down event.
|
|
213
|
-
* @return {boolean} True if the event was handled, false otherwise.
|
|
214
|
-
* @public
|
|
215
|
-
*/
|
|
216
|
-
onKeyDown(workspace, e) {
|
|
217
|
-
const key = this.serializeKeyEvent_(e);
|
|
218
|
-
const shortcutNames = this.getShortcutNamesByKeyCode(key);
|
|
219
|
-
if (!shortcutNames) {
|
|
220
|
-
return false;
|
|
221
|
-
}
|
|
222
|
-
for (let i = 0, shortcutName; (shortcutName = shortcutNames[i]); i++) {
|
|
223
|
-
const shortcut = this.registry_[shortcutName];
|
|
224
|
-
if (!shortcut.preconditionFn || shortcut.preconditionFn(workspace)) {
|
|
225
|
-
// If the key has been handled, stop processing shortcuts.
|
|
226
|
-
if (shortcut.callback && shortcut.callback(workspace, e, shortcut)) {
|
|
227
|
-
return true;
|
|
228
|
-
}
|
|
229
|
-
}
|
|
230
|
-
}
|
|
231
|
-
return false;
|
|
232
|
-
}
|
|
233
|
-
|
|
234
|
-
/**
|
|
235
|
-
* Gets the shortcuts registered to the given key code.
|
|
236
|
-
* @param {string} keyCode The serialized key code.
|
|
237
|
-
* @return {!Array<string>|undefined} The list of shortcuts to call when the
|
|
238
|
-
* given keyCode is used. Undefined if no shortcuts exist.
|
|
239
|
-
* @public
|
|
240
|
-
*/
|
|
241
|
-
getShortcutNamesByKeyCode(keyCode) {
|
|
242
|
-
return this.keyMap_[keyCode] || [];
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
/**
|
|
246
|
-
* Gets the serialized key codes that the shortcut with the given name is
|
|
247
|
-
* registered under.
|
|
248
|
-
* @param {string} shortcutName The name of the shortcut.
|
|
249
|
-
* @return {!Array<string>} An array with all the key codes the shortcut is
|
|
250
|
-
* registered under.
|
|
251
|
-
* @public
|
|
252
|
-
*/
|
|
253
|
-
getKeyCodesByShortcutName(shortcutName) {
|
|
254
|
-
const keys = [];
|
|
255
|
-
for (const keyCode in this.keyMap_) {
|
|
256
|
-
const shortcuts = this.keyMap_[keyCode];
|
|
257
|
-
const shortcutIdx = shortcuts.indexOf(shortcutName);
|
|
258
|
-
if (shortcutIdx > -1) {
|
|
259
|
-
keys.push(keyCode);
|
|
260
|
-
}
|
|
261
|
-
}
|
|
262
|
-
return keys;
|
|
263
|
-
}
|
|
264
|
-
|
|
265
|
-
/**
|
|
266
|
-
* Serializes a key event.
|
|
267
|
-
* @param {!Event} e A key down event.
|
|
268
|
-
* @return {string} The serialized key code for the given event.
|
|
269
|
-
* @private
|
|
270
|
-
*/
|
|
271
|
-
serializeKeyEvent_(e) {
|
|
272
|
-
let serializedKey = '';
|
|
273
|
-
for (const modifier in ShortcutRegistry.modifierKeys) {
|
|
274
|
-
if (e.getModifierState(modifier)) {
|
|
275
|
-
if (serializedKey !== '') {
|
|
276
|
-
serializedKey += '+';
|
|
277
|
-
}
|
|
278
|
-
serializedKey += modifier;
|
|
279
|
-
}
|
|
280
|
-
}
|
|
281
|
-
if (serializedKey !== '' && e.keyCode) {
|
|
282
|
-
serializedKey = serializedKey + '+' + e.keyCode;
|
|
283
|
-
} else if (e.keyCode) {
|
|
284
|
-
serializedKey = e.keyCode.toString();
|
|
285
|
-
}
|
|
286
|
-
return serializedKey;
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
/**
|
|
290
|
-
* Checks whether any of the given modifiers are not valid.
|
|
291
|
-
* @param {!Array<string>} modifiers List of modifiers to be used with the
|
|
292
|
-
* key.
|
|
293
|
-
* @throws {Error} if the modifier is not in the valid modifiers list.
|
|
294
|
-
* @private
|
|
295
|
-
*/
|
|
296
|
-
checkModifiers_(modifiers) {
|
|
297
|
-
const validModifiers = object.values(ShortcutRegistry.modifierKeys);
|
|
298
|
-
for (let i = 0, modifier; (modifier = modifiers[i]); i++) {
|
|
299
|
-
if (validModifiers.indexOf(modifier) < 0) {
|
|
300
|
-
throw new Error(modifier + ' is not a valid modifier key.');
|
|
301
|
-
}
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
/**
|
|
306
|
-
* Creates the serialized key code that will be used in the key map.
|
|
307
|
-
* @param {number} keyCode Number code representing the key.
|
|
308
|
-
* @param {?Array<string>} modifiers List of modifier key codes to be used
|
|
309
|
-
* with the key. All valid modifiers can be found in the
|
|
310
|
-
* ShortcutRegistry.modifierKeys.
|
|
311
|
-
* @return {string} The serialized key code for the given modifiers and key.
|
|
312
|
-
* @public
|
|
313
|
-
*/
|
|
314
|
-
createSerializedKey(keyCode, modifiers) {
|
|
315
|
-
let serializedKey = '';
|
|
316
|
-
|
|
317
|
-
if (modifiers) {
|
|
318
|
-
this.checkModifiers_(modifiers);
|
|
319
|
-
for (const modifier in ShortcutRegistry.modifierKeys) {
|
|
320
|
-
const modifierKeyCode = ShortcutRegistry.modifierKeys[modifier];
|
|
321
|
-
if (modifiers.indexOf(modifierKeyCode) > -1) {
|
|
322
|
-
if (serializedKey !== '') {
|
|
323
|
-
serializedKey += '+';
|
|
324
|
-
}
|
|
325
|
-
serializedKey += modifier;
|
|
326
|
-
}
|
|
327
|
-
}
|
|
328
|
-
}
|
|
329
|
-
|
|
330
|
-
if (serializedKey !== '' && keyCode) {
|
|
331
|
-
serializedKey = serializedKey + '+' + keyCode;
|
|
332
|
-
} else if (keyCode) {
|
|
333
|
-
serializedKey = keyCode.toString();
|
|
334
|
-
}
|
|
335
|
-
return serializedKey;
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
|
|
339
|
-
/**
|
|
340
|
-
* Enum of valid modifiers.
|
|
341
|
-
* @enum {!KeyCodes}
|
|
342
|
-
*/
|
|
343
|
-
ShortcutRegistry.modifierKeys = {
|
|
344
|
-
'Shift': KeyCodes.SHIFT,
|
|
345
|
-
'Control': KeyCodes.CTRL,
|
|
346
|
-
'Alt': KeyCodes.ALT,
|
|
347
|
-
'Meta': KeyCodes.META,
|
|
348
|
-
};
|
|
349
|
-
|
|
350
|
-
/**
|
|
351
|
-
* A keyboard shortcut.
|
|
352
|
-
* @typedef {{
|
|
353
|
-
* callback: ((function(!Workspace, Event,
|
|
354
|
-
* !ShortcutRegistry.KeyboardShortcut):boolean)|undefined),
|
|
355
|
-
* name: string,
|
|
356
|
-
* preconditionFn: ((function(!Workspace):boolean)|undefined),
|
|
357
|
-
* metadata: (Object|undefined)
|
|
358
|
-
* }}
|
|
359
|
-
*/
|
|
360
|
-
ShortcutRegistry.KeyboardShortcut;
|
|
361
|
-
|
|
362
|
-
// Creates and assigns the singleton instance.
|
|
363
|
-
const registry = new ShortcutRegistry();
|
|
364
|
-
ShortcutRegistry.registry = registry;
|
|
365
|
-
|
|
366
|
-
exports.ShortcutRegistry = ShortcutRegistry;
|