blockly 8.0.4-beta.0 → 8.0.5-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/blockly.min.js +2421 -2688
- package/blockly_compressed.js +1499 -1994
- package/blockly_compressed.js.map +1 -1
- package/blocks/blocks.js +3 -2
- package/blocks/colour.js +3 -1
- package/blocks/lists.js +94 -22
- package/blocks/logic.js +14 -6
- package/blocks/loops.js +5 -3
- package/blocks/math.js +3 -1
- package/blocks/procedures.js +3 -1
- package/blocks/text.js +14 -6
- package/blocks/variables.js +3 -1
- package/blocks/variables_dynamic.js +3 -1
- package/blocks.d.ts +0 -2
- package/blocks_compressed.js +189 -171
- package/blocks_compressed.js.map +1 -1
- package/closure/goog/base.d.ts +1 -0
- package/closure/goog/base_minimal.d.ts +18 -0
- package/closure/goog/goog.d.ts +25 -0
- package/core/any_aliases.d.ts +1 -0
- package/core/any_aliases.ts +1 -0
- package/core/block.d.ts +779 -0
- package/core/{block.js → block.ts} +610 -719
- package/core/block_animations.d.ts +33 -0
- package/core/{block_animations.js → block_animations.ts} +75 -79
- package/core/block_drag_surface.d.ts +111 -0
- package/core/{block_drag_surface.js → block_drag_surface.ts} +85 -117
- package/core/block_dragger.d.ts +143 -0
- package/core/{block_dragger.js → block_dragger.ts} +139 -176
- package/core/block_svg.d.ts +588 -0
- package/core/{block_svg.js → block_svg.ts} +494 -630
- package/core/blockly.d.ts +562 -0
- package/core/blockly.js +1 -1
- package/core/blockly.ts +749 -0
- package/core/blockly_options.d.ts +69 -0
- package/core/blockly_options.ts +81 -0
- package/core/blocks.d.ts +17 -0
- package/core/{blocks.js → blocks.ts} +4 -8
- package/core/browser_events.d.ts +85 -0
- package/core/{browser_events.js → browser_events.ts} +98 -93
- package/core/bubble.d.ts +279 -0
- package/core/{bubble.js → bubble.ts} +277 -370
- package/core/bubble_dragger.d.ts +73 -0
- package/core/bubble_dragger.ts +229 -0
- package/core/bump_objects.d.ts +34 -0
- package/core/{bump_objects.js → bump_objects.ts} +54 -52
- package/core/clipboard.d.ts +42 -0
- package/core/clipboard.ts +91 -0
- package/core/comment.d.ts +113 -0
- package/core/{comment.js → comment.ts} +135 -185
- package/core/common.d.ts +129 -0
- package/core/{common.js → common.ts} +105 -82
- package/core/component_manager.d.ts +91 -0
- package/core/component_manager.ts +211 -0
- package/core/config.d.ts +23 -0
- package/core/{config.js → config.ts} +12 -19
- package/core/connection.d.ts +232 -0
- package/core/{connection.js → connection.ts} +187 -237
- package/core/connection_checker.d.ts +78 -0
- package/core/{connection_checker.js → connection_checker.ts} +66 -77
- package/core/connection_db.d.ts +91 -0
- package/core/{connection_db.js → connection_db.ts} +62 -87
- package/core/connection_type.d.ts +15 -0
- package/core/{connection_type.js → connection_type.ts} +8 -12
- package/core/constants.d.ts +15 -0
- package/core/{constants.js → constants.ts} +4 -8
- package/core/contextmenu.d.ts +80 -0
- package/core/{contextmenu.js → contextmenu.ts} +118 -153
- package/core/contextmenu_items.d.ts +77 -0
- package/core/contextmenu_items.ts +576 -0
- package/core/contextmenu_registry.d.ts +105 -0
- package/core/contextmenu_registry.ts +179 -0
- package/core/css.d.ts +24 -0
- package/core/{css.js → css.ts} +16 -24
- package/core/delete_area.d.ts +47 -0
- package/core/delete_area.ts +82 -0
- package/core/dialog.d.ts +61 -0
- package/core/dialog.ts +127 -0
- package/core/drag_target.d.ts +63 -0
- package/core/drag_target.ts +94 -0
- package/core/dropdowndiv.d.ts +155 -0
- package/core/{dropdowndiv.js → dropdowndiv.ts} +262 -333
- package/core/events/events.d.ts +102 -0
- package/core/events/events.ts +123 -0
- package/core/events/events_abstract.d.ts +51 -0
- package/core/events/events_abstract.ts +112 -0
- package/core/events/events_block_base.d.ts +31 -0
- package/core/events/events_block_base.ts +65 -0
- package/core/events/events_block_change.d.ts +55 -0
- package/core/events/{events_block_change.js → events_block_change.ts} +45 -48
- package/core/events/events_block_create.d.ts +35 -0
- package/core/events/{events_block_create.js → events_block_create.ts} +30 -35
- package/core/events/events_block_delete.d.ts +36 -0
- package/core/events/{events_block_delete.js → events_block_delete.ts} +34 -39
- package/core/events/events_block_drag.d.ts +36 -0
- package/core/events/events_block_drag.ts +82 -0
- package/core/events/events_block_move.d.ts +51 -0
- package/core/events/{events_block_move.js → events_block_move.ts} +54 -50
- package/core/events/events_bubble_open.d.ts +35 -0
- package/core/events/events_bubble_open.ts +82 -0
- package/core/events/events_click.d.ts +36 -0
- package/core/events/{events_click.js → events_click.ts} +27 -30
- package/core/events/events_comment_base.d.ts +39 -0
- package/core/events/events_comment_base.ts +107 -0
- package/core/events/events_comment_change.d.ts +43 -0
- package/core/events/{events_comment_change.js → events_comment_change.ts} +31 -28
- package/core/events/events_comment_create.d.ts +35 -0
- package/core/events/{events_comment_create.js → events_comment_create.ts} +24 -26
- package/core/events/events_comment_delete.d.ts +35 -0
- package/core/events/{events_comment_delete.js → events_comment_delete.ts} +20 -24
- package/core/events/events_comment_move.d.ts +55 -0
- package/core/events/{events_comment_move.js → events_comment_move.ts} +39 -42
- package/core/events/events_marker_move.d.ts +40 -0
- package/core/events/events_marker_move.ts +99 -0
- package/core/events/events_selected.d.ts +34 -0
- package/core/events/events_selected.ts +78 -0
- package/core/events/events_theme_change.d.ts +30 -0
- package/core/events/{events_theme_change.js → events_theme_change.ts} +19 -24
- package/core/events/events_toolbox_item_select.d.ts +34 -0
- package/core/events/events_toolbox_item_select.ts +79 -0
- package/core/events/events_trashcan_open.d.ts +31 -0
- package/core/events/events_trashcan_open.ts +68 -0
- package/core/events/events_ui.d.ts +37 -0
- package/core/events/{events_ui.js → events_ui.ts} +27 -26
- package/core/events/events_ui_base.d.ts +26 -0
- package/core/events/{events_ui_base.js → events_ui_base.ts} +17 -26
- package/core/events/events_var_base.d.ts +31 -0
- package/core/events/events_var_base.ts +65 -0
- package/core/events/events_var_create.d.ts +35 -0
- package/core/events/{events_var_create.js → events_var_create.ts} +24 -25
- package/core/events/events_var_delete.d.ts +35 -0
- package/core/events/{events_var_delete.js → events_var_delete.ts} +24 -25
- package/core/events/events_var_rename.d.ts +36 -0
- package/core/events/{events_var_rename.js → events_var_rename.ts} +25 -26
- package/core/events/events_viewport.d.ts +39 -0
- package/core/events/events_viewport.ts +100 -0
- package/core/events/utils.d.ts +272 -0
- package/core/events/{utils.js → utils.ts} +148 -219
- package/core/events/workspace_events.d.ts +36 -0
- package/core/events/workspace_events.ts +86 -0
- package/core/extensions.d.ts +107 -0
- package/core/{extensions.js → extensions.ts} +153 -172
- package/core/field.d.ts +534 -0
- package/core/{field.js → field.ts} +413 -489
- package/core/field_angle.d.ts +176 -0
- package/core/field_angle.ts +563 -0
- package/core/field_checkbox.d.ts +124 -0
- package/core/field_checkbox.ts +243 -0
- package/core/field_colour.d.ts +200 -0
- package/core/field_colour.ts +632 -0
- package/core/field_dropdown.d.ts +222 -0
- package/core/{field_dropdown.js → field_dropdown.ts} +277 -299
- package/core/field_image.d.ts +134 -0
- package/core/field_image.ts +282 -0
- package/core/field_label.d.ts +71 -0
- package/core/field_label.ts +152 -0
- package/core/field_label_serializable.d.ts +42 -0
- package/core/field_label_serializable.ts +76 -0
- package/core/field_multilineinput.d.ts +146 -0
- package/core/{field_multilineinput.js → field_multilineinput.ts} +166 -163
- package/core/field_number.d.ts +156 -0
- package/core/{field_number.js → field_number.ts} +110 -123
- package/core/field_registry.d.ts +45 -0
- package/core/{field_registry.js → field_registry.ts} +37 -30
- package/core/field_textinput.d.ts +219 -0
- package/core/field_textinput.ts +591 -0
- package/core/field_variable.d.ts +217 -0
- package/core/{field_variable.js → field_variable.ts} +174 -187
- package/core/flyout_base.d.ts +459 -0
- package/core/{flyout_base.js → flyout_base.ts} +429 -518
- package/core/flyout_button.d.ts +81 -0
- package/core/flyout_button.ts +292 -0
- package/core/flyout_horizontal.d.ts +82 -0
- package/core/{flyout_horizontal.js → flyout_horizontal.ts} +97 -107
- package/core/flyout_metrics_manager.d.ts +40 -0
- package/core/{flyout_metrics_manager.js → flyout_metrics_manager.ts} +22 -34
- package/core/flyout_vertical.d.ts +83 -0
- package/core/{flyout_vertical.js → flyout_vertical.ts} +106 -117
- package/core/generator.d.ts +205 -0
- package/core/{generator.js → generator.ts} +168 -193
- package/core/gesture.d.ts +357 -0
- package/core/{gesture.js → gesture.ts} +289 -369
- package/core/grid.d.ts +83 -0
- package/core/grid.ts +192 -0
- package/core/icon.d.ts +78 -0
- package/core/icon.ts +189 -0
- package/core/inject.d.ts +15 -0
- package/core/{inject.js → inject.ts} +101 -100
- package/core/input.d.ts +128 -0
- package/core/input.ts +309 -0
- package/core/input_types.d.ts +14 -0
- package/core/{input_types.js → input_types.ts} +8 -12
- package/core/insertion_marker_manager.d.ts +212 -0
- package/core/{insertion_marker_manager.js → insertion_marker_manager.ts} +234 -236
- package/core/interfaces/i_ast_node_location.d.ts +11 -0
- package/core/interfaces/{i_ast_node_location.js → i_ast_node_location.ts} +4 -7
- package/core/interfaces/i_ast_node_location_svg.d.ts +22 -0
- package/core/interfaces/i_ast_node_location_svg.ts +37 -0
- package/core/interfaces/i_ast_node_location_with_block.d.ts +18 -0
- package/core/interfaces/i_ast_node_location_with_block.ts +38 -0
- package/core/interfaces/i_autohideable.d.ts +18 -0
- package/core/interfaces/i_autohideable.ts +34 -0
- package/core/interfaces/i_block_dragger.d.ts +43 -0
- package/core/interfaces/i_block_dragger.ts +67 -0
- package/core/interfaces/i_bounded_element.d.ts +24 -0
- package/core/interfaces/i_bounded_element.ts +42 -0
- package/core/interfaces/i_bubble.d.ts +59 -0
- package/core/interfaces/i_bubble.ts +88 -0
- package/core/interfaces/i_collapsible_toolbox_item.d.ts +26 -0
- package/core/interfaces/i_collapsible_toolbox_item.ts +47 -0
- package/core/interfaces/i_component.d.ts +17 -0
- package/core/interfaces/{i_component.js → i_component.ts} +9 -14
- package/core/interfaces/i_connection_checker.d.ts +69 -0
- package/core/interfaces/i_connection_checker.ts +102 -0
- package/core/interfaces/i_contextmenu.d.ts +13 -0
- package/core/interfaces/i_contextmenu.ts +26 -0
- package/core/interfaces/i_copyable.d.ts +24 -0
- package/core/interfaces/i_copyable.ts +40 -0
- package/core/interfaces/i_deletable.d.ts +16 -0
- package/core/interfaces/{i_deletable.js → i_deletable.ts} +9 -13
- package/core/interfaces/i_delete_area.d.ts +25 -0
- package/core/interfaces/i_delete_area.ts +46 -0
- package/core/interfaces/i_drag_target.d.ts +53 -0
- package/core/interfaces/i_drag_target.ts +84 -0
- package/core/interfaces/i_draggable.d.ts +12 -0
- package/core/interfaces/{i_draggable.js → i_draggable.ts} +4 -10
- package/core/interfaces/i_flyout.d.ts +134 -0
- package/core/interfaces/i_flyout.ts +186 -0
- package/core/interfaces/i_keyboard_accessible.d.ts +18 -0
- package/core/interfaces/i_keyboard_accessible.ts +35 -0
- package/core/interfaces/i_metrics_manager.d.ts +117 -0
- package/core/interfaces/i_metrics_manager.ts +151 -0
- package/core/interfaces/i_movable.d.ts +16 -0
- package/core/interfaces/{i_movable.js → i_movable.ts} +9 -13
- package/core/interfaces/i_positionable.d.ts +27 -0
- package/core/interfaces/i_positionable.ts +50 -0
- package/core/interfaces/i_registrable.d.ts +11 -0
- package/core/interfaces/{i_registrable.js → i_registrable.ts} +3 -7
- package/core/interfaces/i_registrable_field.d.ts +17 -0
- package/core/interfaces/{i_registrable_field.js → i_registrable_field.ts} +8 -16
- package/core/interfaces/i_selectable.d.ts +18 -0
- package/core/interfaces/i_selectable.ts +34 -0
- package/core/interfaces/i_selectable_toolbox_item.d.ts +42 -0
- package/core/interfaces/i_selectable_toolbox_item.ts +64 -0
- package/core/interfaces/i_serializer.d.ts +42 -0
- package/core/interfaces/i_serializer.ts +65 -0
- package/core/interfaces/i_styleable.d.ts +21 -0
- package/core/interfaces/i_styleable.ts +35 -0
- package/core/interfaces/i_toolbox.d.ts +85 -0
- package/core/interfaces/i_toolbox.ts +127 -0
- package/core/interfaces/i_toolbox_item.d.ts +62 -0
- package/core/interfaces/i_toolbox_item.ts +84 -0
- package/core/internal_constants.d.ts +40 -0
- package/core/{internal_constants.js → internal_constants.ts} +13 -18
- package/core/keyboard_nav/ast_node.d.ts +239 -0
- package/core/keyboard_nav/{ast_node.js → ast_node.ts} +207 -231
- package/core/keyboard_nav/basic_cursor.d.ts +88 -0
- package/core/keyboard_nav/{basic_cursor.js → basic_cursor.ts} +55 -66
- package/core/keyboard_nav/cursor.d.ts +41 -0
- package/core/keyboard_nav/{cursor.js → cursor.ts} +25 -35
- package/core/keyboard_nav/marker.d.ts +58 -0
- package/core/keyboard_nav/{marker.js → marker.ts} +36 -55
- package/core/keyboard_nav/tab_navigate_cursor.d.ts +19 -0
- package/core/keyboard_nav/{tab_navigate_cursor.js → tab_navigate_cursor.ts} +11 -15
- package/core/main.d.ts +11 -0
- package/core/main.js +303 -0
- package/core/marker_manager.d.ts +85 -0
- package/core/marker_manager.ts +181 -0
- package/core/menu.d.ts +149 -0
- package/core/{menu.js → menu.ts} +141 -174
- package/core/menuitem.d.ts +118 -0
- package/core/menuitem.ts +240 -0
- package/core/metrics_manager.d.ts +201 -0
- package/core/{metrics_manager.js → metrics_manager.ts} +117 -156
- package/core/msg.d.ts +9 -0
- package/core/{msg.js → msg.ts} +4 -8
- package/core/mutator.d.ts +128 -0
- package/core/{mutator.js → mutator.ts} +196 -211
- package/core/names.d.ts +124 -0
- package/core/names.ts +267 -0
- package/core/options.d.ts +137 -0
- package/core/{options.js → options.ts} +147 -173
- package/core/positionable_helpers.d.ts +88 -0
- package/core/{positionable_helpers.js → positionable_helpers.ts} +63 -70
- package/core/procedures.d.ts +108 -0
- package/core/{procedures.js → procedures.ts} +143 -152
- package/core/registry.d.ts +137 -0
- package/core/registry.ts +339 -0
- package/core/rendered_connection.d.ts +191 -0
- package/core/{rendered_connection.js → rendered_connection.ts} +164 -184
- package/core/renderers/common/block_rendering.d.ts +114 -0
- package/core/renderers/common/block_rendering.ts +164 -0
- package/core/renderers/common/constants.d.ts +458 -0
- package/core/renderers/common/constants.ts +1124 -0
- package/core/renderers/common/debug.d.ts +28 -0
- package/core/renderers/common/{debug.js → debug.ts} +14 -20
- package/core/renderers/common/debugger.d.ts +120 -0
- package/core/renderers/common/{debugger.js → debugger.ts} +100 -124
- package/core/renderers/common/drawer.d.ts +132 -0
- package/core/renderers/common/{drawer.js → drawer.ts} +112 -137
- package/core/renderers/common/i_path_object.d.ts +117 -0
- package/core/renderers/common/i_path_object.ts +161 -0
- package/core/renderers/common/info.d.ts +194 -0
- package/core/renderers/common/{info.js → info.ts} +165 -222
- package/core/renderers/common/marker_svg.d.ts +220 -0
- package/core/renderers/common/marker_svg.ts +680 -0
- package/core/renderers/common/path_object.d.ts +146 -0
- package/core/renderers/common/path_object.ts +272 -0
- package/core/renderers/common/renderer.d.ts +157 -0
- package/core/renderers/common/renderer.ts +271 -0
- package/core/renderers/geras/constants.d.ts +23 -0
- package/core/renderers/geras/constants.ts +61 -0
- package/core/renderers/geras/drawer.d.ts +43 -0
- package/core/renderers/geras/{drawer.js → drawer.ts} +40 -84
- package/core/renderers/geras/geras.d.ts +11 -0
- package/core/renderers/geras/geras.ts +37 -0
- package/core/renderers/geras/highlight_constants.d.ts +108 -0
- package/core/renderers/geras/{highlight_constants.js → highlight_constants.ts} +107 -69
- package/core/renderers/geras/highlighter.d.ts +98 -0
- package/core/renderers/geras/{highlighter.js → highlighter.ts} +81 -86
- package/core/renderers/geras/info.d.ts +45 -0
- package/core/renderers/geras/{info.js → info.ts} +61 -99
- package/core/renderers/geras/measurables/inline_input.d.ts +23 -0
- package/core/renderers/geras/measurables/inline_input.ts +51 -0
- package/core/renderers/geras/measurables/statement_input.d.ts +23 -0
- package/core/renderers/geras/measurables/statement_input.ts +50 -0
- package/core/renderers/geras/path_object.d.ts +47 -0
- package/core/renderers/geras/{path_object.js → path_object.ts} +46 -74
- package/core/renderers/geras/renderer.d.ts +69 -0
- package/core/renderers/geras/renderer.ts +126 -0
- package/core/renderers/measurables/base.d.ts +27 -0
- package/core/renderers/measurables/base.ts +53 -0
- package/core/renderers/measurables/bottom_row.d.ts +61 -0
- package/core/renderers/measurables/bottom_row.ts +120 -0
- package/core/renderers/measurables/connection.d.ts +25 -0
- package/core/renderers/measurables/connection.ts +52 -0
- package/core/renderers/measurables/external_value_input.d.ts +27 -0
- package/core/renderers/measurables/external_value_input.ts +65 -0
- package/core/renderers/measurables/field.d.ts +30 -0
- package/core/renderers/measurables/field.ts +63 -0
- package/core/renderers/measurables/hat.d.ts +21 -0
- package/core/renderers/measurables/{hat.js → hat.ts} +12 -14
- package/core/renderers/measurables/icon.d.ts +26 -0
- package/core/renderers/measurables/{icon.js → icon.ts} +14 -18
- package/core/renderers/measurables/in_row_spacer.d.ts +21 -0
- package/core/renderers/measurables/in_row_spacer.ts +44 -0
- package/core/renderers/measurables/inline_input.d.ts +24 -0
- package/core/renderers/measurables/{inline_input.js → inline_input.ts} +22 -26
- package/core/renderers/measurables/input_connection.d.ts +29 -0
- package/core/renderers/measurables/input_connection.ts +66 -0
- package/core/renderers/measurables/input_row.d.ts +30 -0
- package/core/renderers/measurables/{input_row.js → input_row.ts} +24 -31
- package/core/renderers/measurables/jagged_edge.d.ts +20 -0
- package/core/renderers/measurables/{jagged_edge.js → jagged_edge.ts} +10 -13
- package/core/renderers/measurables/next_connection.d.ts +23 -0
- package/core/renderers/measurables/next_connection.ts +47 -0
- package/core/renderers/measurables/output_connection.d.ts +26 -0
- package/core/renderers/measurables/output_connection.ts +56 -0
- package/core/renderers/measurables/previous_connection.d.ts +23 -0
- package/core/renderers/measurables/previous_connection.ts +47 -0
- package/core/renderers/measurables/round_corner.d.ts +21 -0
- package/core/renderers/measurables/round_corner.ts +49 -0
- package/core/renderers/measurables/row.d.ts +141 -0
- package/core/renderers/measurables/row.ts +225 -0
- package/core/renderers/measurables/spacer_row.d.ts +29 -0
- package/core/renderers/measurables/spacer_row.ts +55 -0
- package/core/renderers/measurables/square_corner.d.ts +21 -0
- package/core/renderers/measurables/square_corner.ts +47 -0
- package/core/renderers/measurables/statement_input.d.ts +22 -0
- package/core/renderers/measurables/{statement_input.js → statement_input.ts} +14 -18
- package/core/renderers/measurables/top_row.d.ts +56 -0
- package/core/renderers/measurables/top_row.ts +122 -0
- package/core/renderers/measurables/types.d.ts +235 -0
- package/core/renderers/measurables/types.ts +332 -0
- package/core/renderers/minimalist/constants.d.ts +14 -0
- package/core/renderers/minimalist/{constants.js → constants.ts} +5 -10
- package/core/renderers/minimalist/drawer.d.ts +21 -0
- package/core/renderers/minimalist/drawer.ts +38 -0
- package/core/renderers/minimalist/info.d.ts +30 -0
- package/core/renderers/minimalist/info.ts +52 -0
- package/core/renderers/minimalist/minimalist.d.ts +6 -0
- package/core/renderers/minimalist/minimalist.ts +22 -0
- package/core/renderers/minimalist/renderer.d.ts +41 -0
- package/core/renderers/minimalist/renderer.ts +71 -0
- package/core/renderers/thrasos/info.d.ts +40 -0
- package/core/renderers/thrasos/{info.js → info.ts} +66 -67
- package/core/renderers/thrasos/renderer.d.ts +25 -0
- package/core/renderers/thrasos/renderer.ts +48 -0
- package/core/renderers/thrasos/thrasos.d.ts +4 -0
- package/core/renderers/thrasos/thrasos.ts +20 -0
- package/core/renderers/zelos/constants.d.ts +186 -0
- package/core/renderers/zelos/{constants.js → constants.ts} +294 -441
- package/core/renderers/zelos/drawer.d.ts +47 -0
- package/core/renderers/zelos/{drawer.js → drawer.ts} +73 -95
- package/core/renderers/zelos/info.d.ts +88 -0
- package/core/renderers/zelos/{info.js → info.ts} +111 -142
- package/core/renderers/zelos/marker_svg.d.ts +46 -0
- package/core/renderers/zelos/marker_svg.ts +151 -0
- package/core/renderers/zelos/measurables/bottom_row.d.ts +27 -0
- package/core/renderers/zelos/measurables/bottom_row.ts +53 -0
- package/core/renderers/zelos/measurables/inputs.d.ts +23 -0
- package/core/renderers/zelos/measurables/{inputs.js → inputs.ts} +14 -15
- package/core/renderers/zelos/measurables/row_elements.d.ts +21 -0
- package/core/renderers/zelos/measurables/row_elements.ts +45 -0
- package/core/renderers/zelos/measurables/top_row.d.ts +29 -0
- package/core/renderers/zelos/measurables/{top_row.js → top_row.ts} +14 -27
- package/core/renderers/zelos/path_object.d.ts +77 -0
- package/core/renderers/zelos/path_object.ts +215 -0
- package/core/renderers/zelos/renderer.d.ts +74 -0
- package/core/renderers/zelos/renderer.ts +142 -0
- package/core/renderers/zelos/zelos.d.ts +12 -0
- package/core/renderers/zelos/zelos.ts +39 -0
- package/core/scrollbar.d.ts +277 -0
- package/core/{scrollbar.js → scrollbar.ts} +307 -328
- package/core/scrollbar_pair.d.ts +105 -0
- package/core/{scrollbar_pair.js → scrollbar_pair.ts} +71 -79
- package/core/serialization/blocks.d.ts +98 -0
- package/core/serialization/{blocks.js → blocks.ts} +229 -228
- package/core/serialization/exceptions.d.ts +73 -0
- package/core/serialization/exceptions.ts +98 -0
- package/core/serialization/priorities.d.ts +15 -0
- package/core/serialization/{priorities.js → priorities.ts} +4 -10
- package/core/serialization/registry.d.ts +20 -0
- package/core/serialization/{registry.js → registry.ts} +11 -13
- package/core/serialization/variables.d.ts +14 -0
- package/core/serialization/{variables.js → variables.ts} +30 -32
- package/core/serialization/workspaces.d.ts +28 -0
- package/core/serialization/{workspaces.js → workspaces.ts} +30 -27
- package/core/shortcut_items.d.ts +61 -0
- package/core/{shortcut_items.js → shortcut_items.ts} +121 -157
- package/core/shortcut_registry.d.ts +151 -0
- package/core/shortcut_registry.ts +355 -0
- package/core/sprites.d.ts +19 -0
- package/core/{sprites.js → sprites.ts} +4 -6
- package/core/theme/classic.d.ts +12 -0
- package/core/theme/{classic.js → classic.ts} +5 -7
- package/core/theme/themes.d.ts +8 -0
- package/core/theme/themes.ts +22 -0
- package/core/theme/zelos.d.ts +11 -0
- package/core/theme/{zelos.js → zelos.ts} +4 -7
- package/core/theme.d.ts +142 -0
- package/core/theme.ts +221 -0
- package/core/theme_manager.d.ts +81 -0
- package/core/theme_manager.ts +186 -0
- package/core/toolbox/category.d.ts +239 -0
- package/core/toolbox/category.ts +679 -0
- package/core/toolbox/collapsible_category.d.ts +91 -0
- package/core/toolbox/collapsible_category.ts +273 -0
- package/core/toolbox/separator.d.ts +39 -0
- package/core/toolbox/separator.ts +105 -0
- package/core/toolbox/toolbox.d.ts +352 -0
- package/core/toolbox/{toolbox.js → toolbox.ts} +316 -432
- package/core/toolbox/toolbox_item.d.ts +85 -0
- package/core/toolbox/toolbox_item.ts +147 -0
- package/core/tooltip.d.ts +126 -0
- package/core/{tooltip.js → tooltip.ts} +136 -214
- package/core/touch.d.ts +121 -0
- package/core/touch.ts +306 -0
- package/core/touch_gesture.d.ts +115 -0
- package/core/{touch_gesture.js → touch_gesture.ts} +87 -125
- package/core/trashcan.d.ts +195 -0
- package/core/{trashcan.js → trashcan.ts} +226 -312
- package/core/utils/aria.d.ts +67 -0
- package/core/utils/{aria.js → aria.ts} +47 -61
- package/core/utils/array.d.ts +14 -0
- package/core/utils/{array.js → array.ts} +10 -12
- package/core/utils/colour.d.ts +103 -0
- package/core/utils/{colour.js → colour.ts} +60 -72
- package/core/utils/coordinate.d.ts +72 -0
- package/core/utils/coordinate.ts +124 -0
- package/core/utils/deprecation.d.ts +17 -0
- package/core/utils/{deprecation.js → deprecation.ts} +11 -11
- package/core/utils/dom.d.ts +165 -0
- package/core/utils/{dom.js → dom.ts} +125 -147
- package/core/utils/idgenerator.d.ts +25 -0
- package/core/utils/{idgenerator.js → idgenerator.ts} +15 -18
- package/core/utils/keycodes.d.ts +137 -0
- package/core/utils/keycodes.ts +169 -0
- package/core/utils/math.d.ts +30 -0
- package/core/utils/{math.js → math.ts} +17 -19
- package/core/utils/metrics.d.ts +64 -0
- package/core/utils/metrics.ts +97 -0
- package/core/utils/object.d.ts +35 -0
- package/core/utils/{object.js → object.ts} +30 -26
- package/core/utils/parsing.d.ts +50 -0
- package/core/utils/{parsing.js → parsing.ts} +50 -50
- package/core/utils/rect.d.ts +38 -0
- package/core/utils/{rect.js → rect.ts} +18 -31
- package/core/utils/sentinel.d.ts +11 -0
- package/core/utils/{sentinel.js → sentinel.ts} +3 -5
- package/core/utils/size.d.ts +27 -0
- package/core/utils/{size.js → size.ts} +12 -26
- package/core/utils/string.d.ts +55 -0
- package/core/utils/{string.js → string.ts} +64 -61
- package/core/utils/style.d.ts +127 -0
- package/core/utils/{style.js → style.ts} +102 -92
- package/core/utils/svg.d.ts +68 -0
- package/core/utils/svg.ts +88 -0
- package/core/utils/svg_math.d.ts +70 -0
- package/core/utils/{svg_math.js → svg_math.ts} +72 -71
- package/core/utils/svg_paths.d.ts +101 -0
- package/core/utils/{svg_paths.js → svg_paths.ts} +56 -65
- package/core/utils/toolbox.d.ts +193 -0
- package/core/utils/toolbox.ts +433 -0
- package/core/utils/useragent.d.ts +33 -0
- package/core/utils/useragent.ts +135 -0
- package/core/utils/xml.d.ts +52 -0
- package/core/utils/{xml.js → xml.ts} +26 -36
- package/core/utils.d.ts +217 -0
- package/core/utils.ts +428 -0
- package/core/variable_map.d.ts +141 -0
- package/core/{variable_map.js → variable_map.ts} +131 -149
- package/core/variable_model.d.ts +40 -0
- package/core/variable_model.ts +82 -0
- package/core/variables.d.ts +181 -0
- package/core/{variables.js → variables.ts} +206 -188
- package/core/variables_dynamic.d.ts +38 -0
- package/core/{variables_dynamic.js → variables_dynamic.ts} +47 -43
- package/core/warning.d.ts +50 -0
- package/core/{warning.js → warning.ts} +52 -66
- package/core/widgetdiv.d.ts +69 -0
- package/core/widgetdiv.ts +257 -0
- package/core/workspace.d.ts +386 -0
- package/core/workspace.ts +801 -0
- package/core/workspace_audio.d.ts +47 -0
- package/core/{workspace_audio.js → workspace_audio.ts} +47 -60
- package/core/workspace_comment.d.ts +170 -0
- package/core/workspace_comment.ts +398 -0
- package/core/workspace_comment_svg.d.ts +329 -0
- package/core/{workspace_comment_svg.js → workspace_comment_svg.ts} +347 -444
- package/core/workspace_drag_surface_svg.d.ts +68 -0
- package/core/{workspace_drag_surface_svg.js → workspace_drag_surface_svg.ts} +75 -82
- package/core/workspace_dragger.d.ts +48 -0
- package/core/workspace_dragger.ts +104 -0
- package/core/workspace_svg.d.ts +920 -0
- package/core/{workspace_svg.js → workspace_svg.ts} +855 -935
- package/core/xml.d.ts +117 -0
- package/core/{xml.js → xml.ts} +306 -326
- package/core/zoom_controls.d.ts +130 -0
- package/core/{zoom_controls.js → zoom_controls.ts} +185 -251
- package/core.d.ts +1 -3
- package/core.js +1 -2
- package/dart.d.ts +0 -3
- package/dart_compressed.js +387 -99
- package/dart_compressed.js.map +1 -1
- package/generators/dart/all.js +2 -0
- package/generators/dart/colour.js +1 -1
- package/generators/dart/lists.js +1 -1
- package/generators/dart/logic.js +1 -1
- package/generators/dart/loops.js +1 -1
- package/generators/dart/math.js +1 -1
- package/generators/dart/procedures.js +1 -1
- package/generators/dart/text.js +1 -1
- package/generators/dart/variables.js +1 -1
- package/generators/dart/variables_dynamic.js +1 -1
- package/generators/dart.js +1 -2
- package/generators/javascript/all.js +2 -0
- package/generators/javascript/colour.js +1 -1
- package/generators/javascript/lists.js +1 -1
- package/generators/javascript/logic.js +1 -1
- package/generators/javascript/loops.js +1 -1
- package/generators/javascript/math.js +4 -4
- package/generators/javascript/procedures.js +1 -1
- package/generators/javascript/text.js +2 -2
- package/generators/javascript/variables.js +1 -1
- package/generators/javascript/variables_dynamic.js +1 -1
- package/generators/javascript.js +1 -3
- package/generators/lua/all.js +2 -0
- package/generators/lua/colour.js +1 -1
- package/generators/lua/lists.js +1 -1
- package/generators/lua/logic.js +1 -1
- package/generators/lua/loops.js +1 -1
- package/generators/lua/math.js +1 -1
- package/generators/lua/procedures.js +1 -1
- package/generators/lua/text.js +1 -1
- package/generators/lua/variables.js +1 -1
- package/generators/lua/variables_dynamic.js +1 -1
- package/generators/lua.js +1 -2
- package/generators/php/all.js +2 -0
- package/generators/php/colour.js +1 -1
- package/generators/php/lists.js +1 -2
- package/generators/php/logic.js +1 -1
- package/generators/php/loops.js +1 -1
- package/generators/php/math.js +1 -1
- package/generators/php/procedures.js +1 -1
- package/generators/php/text.js +1 -1
- package/generators/php/variables.js +1 -1
- package/generators/php/variables_dynamic.js +1 -1
- package/generators/php.js +1 -2
- package/generators/python/all.js +2 -0
- package/generators/python/colour.js +3 -3
- package/generators/python/lists.js +1 -1
- package/generators/python/logic.js +1 -1
- package/generators/python/loops.js +4 -7
- package/generators/python/math.js +1 -1
- package/generators/python/procedures.js +1 -1
- package/generators/python/text.js +1 -1
- package/generators/python/variables.js +1 -1
- package/generators/python/variables_dynamic.js +1 -1
- package/generators/python.js +1 -2
- package/index.d.ts +2 -8
- package/javascript.d.ts +0 -3
- package/javascript_compressed.js +314 -104
- package/javascript_compressed.js.map +1 -1
- package/lua.d.ts +0 -3
- package/lua_compressed.js +399 -81
- package/lua_compressed.js.map +1 -1
- package/msg/ab.js +421 -421
- package/msg/ace.js +421 -421
- package/msg/af.js +421 -421
- package/msg/am.js +421 -421
- package/msg/ar.js +421 -421
- package/msg/ast.js +421 -421
- package/msg/az.js +421 -421
- package/msg/ba.js +421 -421
- package/msg/bcc.js +421 -421
- package/msg/be-tarask.js +421 -421
- package/msg/be.js +421 -421
- package/msg/bg.js +421 -421
- package/msg/bn.js +421 -421
- package/msg/br.js +421 -421
- package/msg/bs.js +421 -421
- package/msg/ca.js +421 -421
- package/msg/cdo.js +421 -421
- package/msg/cs.js +421 -421
- package/msg/da.js +421 -421
- package/msg/de.js +421 -421
- package/msg/diq.js +421 -421
- package/msg/dty.js +421 -421
- package/msg/ee.js +421 -421
- package/msg/el.js +421 -421
- package/msg/en-gb.js +421 -421
- package/msg/en.js +421 -421
- package/msg/eo.js +421 -421
- package/msg/es.js +421 -421
- package/msg/et.js +421 -421
- package/msg/eu.js +421 -421
- package/msg/fa.js +421 -421
- package/msg/fi.js +421 -421
- package/msg/fo.js +421 -421
- package/msg/fr.js +421 -421
- package/msg/frr.js +421 -421
- package/msg/gl.js +421 -421
- package/msg/gn.js +421 -421
- package/msg/gor.js +421 -421
- package/msg/ha.js +421 -421
- package/msg/hak.js +421 -421
- package/msg/he.js +421 -421
- package/msg/hi.js +421 -421
- package/msg/hr.js +421 -421
- package/msg/hrx.js +421 -421
- package/msg/hu.js +421 -421
- package/msg/hy.js +421 -421
- package/msg/ia.js +421 -421
- package/msg/id.js +421 -421
- package/msg/ig.js +421 -421
- package/msg/inh.js +421 -421
- package/msg/is.js +421 -421
- package/msg/it.js +421 -421
- package/msg/ja.js +421 -421
- package/msg/ka.js +421 -421
- package/msg/kab.js +421 -421
- package/msg/kbd-cyrl.js +421 -421
- package/msg/km.js +421 -421
- package/msg/kn.js +421 -421
- package/msg/ko.js +421 -421
- package/msg/ksh.js +421 -421
- package/msg/ku-latn.js +421 -421
- package/msg/ky.js +421 -421
- package/msg/la.js +421 -421
- package/msg/lb.js +421 -421
- package/msg/lki.js +421 -421
- package/msg/lo.js +421 -421
- package/msg/lrc.js +421 -421
- package/msg/lt.js +421 -421
- package/msg/lv.js +421 -421
- package/msg/mg.js +421 -421
- package/msg/mk.js +421 -421
- package/msg/ml.js +421 -421
- package/msg/mnw.js +421 -421
- package/msg/ms.js +421 -421
- package/msg/my.js +421 -421
- package/msg/mzn.js +421 -421
- package/msg/nb.js +421 -421
- package/msg/ne.js +421 -421
- package/msg/nl.js +421 -421
- package/msg/oc.js +421 -421
- package/msg/olo.js +421 -421
- package/msg/pa.js +421 -421
- package/msg/pl.js +421 -421
- package/msg/pms.js +421 -421
- package/msg/ps.js +421 -421
- package/msg/pt-br.js +421 -421
- package/msg/pt.js +421 -421
- package/msg/ro.js +421 -421
- package/msg/ru.js +421 -421
- package/msg/sc.js +421 -421
- package/msg/sco.js +421 -421
- package/msg/sd.js +421 -421
- package/msg/shn.js +421 -421
- package/msg/si.js +421 -421
- package/msg/sk.js +421 -421
- package/msg/skr-arab.js +421 -421
- package/msg/sl.js +421 -421
- package/msg/smn.js +421 -421
- package/msg/sq.js +421 -421
- package/msg/sr-latn.js +421 -421
- package/msg/sr.js +421 -421
- package/msg/sv.js +421 -421
- package/msg/sw.js +421 -421
- package/msg/ta.js +421 -421
- package/msg/tcy.js +421 -421
- package/msg/te.js +421 -421
- package/msg/th.js +421 -421
- package/msg/ti.js +421 -421
- package/msg/tl.js +421 -421
- package/msg/tlh.js +421 -421
- package/msg/tr.js +421 -421
- package/msg/ug-arab.js +421 -421
- package/msg/uk.js +421 -421
- package/msg/ur.js +421 -421
- package/msg/uz.js +421 -421
- package/msg/vi.js +421 -421
- package/msg/xmf.js +421 -421
- package/msg/yo.js +421 -421
- package/msg/yue.js +421 -421
- package/msg/zgh.js +421 -421
- package/msg/zh-hans.js +421 -421
- package/msg/zh-hant.js +421 -421
- package/package.json +5 -5
- package/php.d.ts +0 -3
- package/php_compressed.js +322 -93
- package/php_compressed.js.map +1 -1
- package/python.d.ts +0 -3
- package/python_compressed.js +237 -90
- package/python_compressed.js.map +1 -1
- package/blockly.d.ts +0 -26127
- package/core/blockly_options.js +0 -28
- package/core/bubble_dragger.js +0 -298
- package/core/clipboard.js +0 -80
- package/core/component_manager.js +0 -263
- package/core/contextmenu_items.js +0 -651
- package/core/contextmenu_registry.js +0 -178
- package/core/delete_area.js +0 -87
- package/core/dialog.js +0 -107
- package/core/drag_target.js +0 -98
- package/core/events/events.js +0 -147
- package/core/events/events_abstract.js +0 -133
- package/core/events/events_block_base.js +0 -70
- package/core/events/events_block_drag.js +0 -89
- package/core/events/events_bubble_open.js +0 -90
- package/core/events/events_comment_base.js +0 -121
- package/core/events/events_marker_move.js +0 -110
- package/core/events/events_selected.js +0 -83
- package/core/events/events_toolbox_item_select.js +0 -84
- package/core/events/events_trashcan_open.js +0 -73
- package/core/events/events_var_base.js +0 -70
- package/core/events/events_viewport.js +0 -107
- package/core/events/workspace_events.js +0 -93
- package/core/field_angle.js +0 -591
- package/core/field_checkbox.js +0 -255
- package/core/field_colour.js +0 -717
- package/core/field_image.js +0 -304
- package/core/field_label.js +0 -149
- package/core/field_label_serializable.js +0 -80
- package/core/field_textinput.js +0 -619
- package/core/flyout_button.js +0 -356
- package/core/grid.js +0 -226
- package/core/icon.js +0 -225
- package/core/input.js +0 -335
- package/core/interfaces/i_ast_node_location_svg.js +0 -45
- package/core/interfaces/i_ast_node_location_with_block.js +0 -41
- package/core/interfaces/i_autohideable.js +0 -40
- package/core/interfaces/i_block_dragger.js +0 -66
- package/core/interfaces/i_bounded_element.js +0 -45
- package/core/interfaces/i_bubble.js +0 -95
- package/core/interfaces/i_collapsible_toolbox_item.js +0 -53
- package/core/interfaces/i_connection_checker.js +0 -104
- package/core/interfaces/i_contextmenu.js +0 -32
- package/core/interfaces/i_copyable.js +0 -49
- package/core/interfaces/i_delete_area.js +0 -50
- package/core/interfaces/i_drag_target.js +0 -88
- package/core/interfaces/i_flyout.js +0 -201
- package/core/interfaces/i_keyboard_accessible.js +0 -38
- package/core/interfaces/i_metrics_manager.js +0 -154
- package/core/interfaces/i_positionable.js +0 -51
- package/core/interfaces/i_selectable.js +0 -51
- package/core/interfaces/i_selectable_toolbox_item.js +0 -73
- package/core/interfaces/i_serializer.js +0 -77
- package/core/interfaces/i_styleable.js +0 -39
- package/core/interfaces/i_toolbox.js +0 -142
- package/core/interfaces/i_toolbox_item.js +0 -85
- package/core/marker_manager.js +0 -213
- package/core/menuitem.js +0 -292
- package/core/names.js +0 -293
- package/core/registry.js +0 -384
- package/core/renderers/common/block_rendering.js +0 -170
- package/core/renderers/common/constants.js +0 -1250
- package/core/renderers/common/i_path_object.js +0 -162
- package/core/renderers/common/marker_svg.js +0 -721
- package/core/renderers/common/path_object.js +0 -283
- package/core/renderers/common/renderer.js +0 -305
- package/core/renderers/geras/constants.js +0 -73
- package/core/renderers/geras/geras.js +0 -36
- package/core/renderers/geras/measurables/inline_input.js +0 -58
- package/core/renderers/geras/measurables/statement_input.js +0 -57
- package/core/renderers/geras/renderer.js +0 -149
- package/core/renderers/measurables/base.js +0 -64
- package/core/renderers/measurables/bottom_row.js +0 -138
- package/core/renderers/measurables/connection.js +0 -56
- package/core/renderers/measurables/external_value_input.js +0 -70
- package/core/renderers/measurables/field.js +0 -71
- package/core/renderers/measurables/in_row_spacer.js +0 -47
- package/core/renderers/measurables/input_connection.js +0 -75
- package/core/renderers/measurables/next_connection.js +0 -50
- package/core/renderers/measurables/output_connection.js +0 -61
- package/core/renderers/measurables/previous_connection.js +0 -50
- package/core/renderers/measurables/round_corner.js +0 -52
- package/core/renderers/measurables/row.js +0 -247
- package/core/renderers/measurables/spacer_row.js +0 -69
- package/core/renderers/measurables/square_corner.js +0 -50
- package/core/renderers/measurables/top_row.js +0 -143
- package/core/renderers/measurables/types.js +0 -353
- package/core/renderers/minimalist/drawer.js +0 -42
- package/core/renderers/minimalist/info.js +0 -54
- package/core/renderers/minimalist/minimalist.js +0 -26
- package/core/renderers/minimalist/renderer.js +0 -80
- package/core/renderers/thrasos/renderer.js +0 -53
- package/core/renderers/thrasos/thrasos.js +0 -22
- package/core/renderers/zelos/marker_svg.js +0 -179
- package/core/renderers/zelos/measurables/bottom_row.js +0 -66
- package/core/renderers/zelos/measurables/row_elements.js +0 -46
- package/core/renderers/zelos/path_object.js +0 -247
- package/core/renderers/zelos/renderer.js +0 -147
- package/core/renderers/zelos/zelos.js +0 -38
- package/core/serialization/exceptions.js +0 -144
- package/core/shortcut_registry.js +0 -366
- package/core/theme/themes.js +0 -23
- package/core/theme.js +0 -228
- package/core/theme_manager.js +0 -211
- package/core/toolbox/category.js +0 -751
- package/core/toolbox/collapsible_category.js +0 -311
- package/core/toolbox/separator.js +0 -133
- package/core/toolbox/toolbox_item.js +0 -173
- package/core/touch.js +0 -285
- package/core/utils/coordinate.js +0 -138
- package/core/utils/global.js +0 -41
- package/core/utils/keycodes.js +0 -172
- package/core/utils/metrics.js +0 -154
- package/core/utils/svg.js +0 -186
- package/core/utils/toolbox.js +0 -459
- package/core/utils/useragent.js +0 -197
- package/core/utils.js +0 -383
- package/core/variable_model.js +0 -96
- package/core/widgetdiv.js +0 -290
- package/core/workspace.js +0 -836
- package/core/workspace_comment.js +0 -400
- package/core/workspace_dragger.js +0 -115
|
@@ -8,31 +8,27 @@
|
|
|
8
8
|
* @fileoverview Handles serializing blocks to plain JavaScript objects only
|
|
9
9
|
* containing state.
|
|
10
10
|
*/
|
|
11
|
-
'use strict';
|
|
12
11
|
|
|
13
12
|
/**
|
|
14
13
|
* Handles serializing blocks to plain JavaScript objects only containing state.
|
|
15
14
|
* @namespace Blockly.serialization.blocks
|
|
16
15
|
*/
|
|
17
|
-
goog
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
// eslint-disable-next-line no-unused-vars
|
|
34
|
-
const {Workspace} = goog.requireType('Blockly.Workspace');
|
|
35
|
-
const {inputTypes} = goog.require('Blockly.inputTypes');
|
|
16
|
+
import * as goog from '../../closure/goog/goog.js';
|
|
17
|
+
goog.declareModuleId('Blockly.serialization.blocks');
|
|
18
|
+
|
|
19
|
+
import type {Block} from '../block.js';
|
|
20
|
+
import type {BlockSvg} from '../block_svg.js';
|
|
21
|
+
import type {Connection} from '../connection.js';
|
|
22
|
+
import * as eventUtils from '../events/utils.js';
|
|
23
|
+
import {inputTypes} from '../input_types.js';
|
|
24
|
+
import type {ISerializer} from '../interfaces/i_serializer.js';
|
|
25
|
+
import {Size} from '../utils/size.js';
|
|
26
|
+
import type {Workspace} from '../workspace.js';
|
|
27
|
+
import * as Xml from '../xml.js';
|
|
28
|
+
|
|
29
|
+
import {BadConnectionCheck, MissingBlockType, MissingConnection, RealChildOfShadow} from './exceptions.js';
|
|
30
|
+
import * as priorities from './priorities.js';
|
|
31
|
+
import * as serializationRegistry from './registry.js';
|
|
36
32
|
|
|
37
33
|
|
|
38
34
|
// TODO(#5160): Remove this once lint is fixed.
|
|
@@ -40,64 +36,61 @@ const {inputTypes} = goog.require('Blockly.inputTypes');
|
|
|
40
36
|
|
|
41
37
|
/**
|
|
42
38
|
* Represents the state of a connection.
|
|
43
|
-
* @typedef {{
|
|
44
|
-
* shadow: (!State|undefined),
|
|
45
|
-
* block: (!State|undefined)
|
|
46
|
-
* }}
|
|
47
39
|
* @alias Blockly.serialization.blocks.ConnectionState
|
|
48
40
|
*/
|
|
49
|
-
|
|
50
|
-
|
|
41
|
+
export interface ConnectionState {
|
|
42
|
+
shadow: State|undefined;
|
|
43
|
+
block: State|undefined;
|
|
44
|
+
}
|
|
51
45
|
|
|
52
46
|
/**
|
|
53
47
|
* Represents the state of a given block.
|
|
54
|
-
* @typedef {{
|
|
55
|
-
* type: string,
|
|
56
|
-
* id: (string|undefined),
|
|
57
|
-
* x: (number|undefined),
|
|
58
|
-
* y: (number|undefined),
|
|
59
|
-
* collapsed: (boolean|undefined),
|
|
60
|
-
* enabled: (boolean|undefined),
|
|
61
|
-
* inline: (boolean|undefined),
|
|
62
|
-
* data: (string|undefined),
|
|
63
|
-
* extra-state: (*|undefined),
|
|
64
|
-
* icons: (!Object<string, *>|undefined),
|
|
65
|
-
* fields: (!Object<string, *>|undefined),
|
|
66
|
-
* inputs: (!Object<string, !ConnectionState>|undefined),
|
|
67
|
-
* next: (!ConnectionState|undefined)
|
|
68
|
-
* }}
|
|
69
48
|
* @alias Blockly.serialization.blocks.State
|
|
70
49
|
*/
|
|
71
|
-
|
|
72
|
-
|
|
50
|
+
export interface State {
|
|
51
|
+
type: string;
|
|
52
|
+
id?: string;
|
|
53
|
+
x?: number;
|
|
54
|
+
y?: number;
|
|
55
|
+
collapsed?: boolean;
|
|
56
|
+
enabled?: boolean;
|
|
57
|
+
inline?: boolean;
|
|
58
|
+
data?: string;
|
|
59
|
+
extraState?: AnyDuringMigration;
|
|
60
|
+
icons?: {[key: string]: AnyDuringMigration};
|
|
61
|
+
fields?: {[key: string]: AnyDuringMigration};
|
|
62
|
+
inputs?: {[key: string]: ConnectionState};
|
|
63
|
+
next?: ConnectionState;
|
|
64
|
+
}
|
|
73
65
|
|
|
74
66
|
/**
|
|
75
67
|
* Returns the state of the given block as a plain JavaScript object.
|
|
76
|
-
* @param
|
|
77
|
-
* @param
|
|
78
|
-
*
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
*
|
|
82
|
-
*
|
|
83
|
-
*
|
|
84
|
-
*
|
|
85
|
-
*
|
|
86
|
-
*
|
|
87
|
-
*
|
|
88
|
-
*
|
|
89
|
-
* info about that state. This supports deserializing the block into a
|
|
90
|
-
* workspace where that state doesn't yet exist. True by default.
|
|
91
|
-
* @return {?State} The serialized state of the block, or null if the block
|
|
92
|
-
* could not be serialied (eg it was an insertion marker).
|
|
68
|
+
* @param block The block to serialize.
|
|
69
|
+
* @param param1 addCoordinates: If true, the coordinates of the block are added
|
|
70
|
+
* to the serialized state. False by default. addinputBlocks: If true,
|
|
71
|
+
* children of the block which are connected to inputs will be serialized.
|
|
72
|
+
* True by default. addNextBlocks: If true, children of the block which are
|
|
73
|
+
* connected to the block's next connection (if it exists) will be
|
|
74
|
+
* serialized. True by default. doFullSerialization: If true, fields that
|
|
75
|
+
* normally just save a reference to some external state (eg variables) will
|
|
76
|
+
* instead serialize all of the info about that state. This supports
|
|
77
|
+
* deserializing the block into a workspace where that state doesn't yet
|
|
78
|
+
* exist. True by default.
|
|
79
|
+
* @return The serialized state of the block, or null if the block could not be
|
|
80
|
+
* serialied (eg it was an insertion marker).
|
|
93
81
|
* @alias Blockly.serialization.blocks.save
|
|
94
82
|
*/
|
|
95
|
-
|
|
83
|
+
export function save(block: Block, {
|
|
96
84
|
addCoordinates = false,
|
|
97
85
|
addInputBlocks = true,
|
|
98
86
|
addNextBlocks = true,
|
|
99
|
-
doFullSerialization = true
|
|
100
|
-
}
|
|
87
|
+
doFullSerialization = true
|
|
88
|
+
}: {
|
|
89
|
+
addCoordinates?: boolean,
|
|
90
|
+
addInputBlocks?: boolean,
|
|
91
|
+
addNextBlocks?: boolean,
|
|
92
|
+
doFullSerialization?: boolean
|
|
93
|
+
} = {}): State|null {
|
|
101
94
|
if (block.isInsertionMarker()) {
|
|
102
95
|
return null;
|
|
103
96
|
}
|
|
@@ -108,30 +101,45 @@ const save = function(block, {
|
|
|
108
101
|
};
|
|
109
102
|
|
|
110
103
|
if (addCoordinates) {
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
104
|
+
// AnyDuringMigration because: Argument of type '{ type: string; id:
|
|
105
|
+
// string; }' is not assignable to parameter of type 'State'.
|
|
106
|
+
saveCoords(block, state as AnyDuringMigration);
|
|
107
|
+
}
|
|
108
|
+
// AnyDuringMigration because: Argument of type '{ type: string; id: string;
|
|
109
|
+
// }' is not assignable to parameter of type 'State'.
|
|
110
|
+
saveAttributes(block, state as AnyDuringMigration);
|
|
111
|
+
// AnyDuringMigration because: Argument of type '{ type: string; id: string;
|
|
112
|
+
// }' is not assignable to parameter of type 'State'.
|
|
113
|
+
saveExtraState(block, state as AnyDuringMigration);
|
|
114
|
+
// AnyDuringMigration because: Argument of type '{ type: string; id: string;
|
|
115
|
+
// }' is not assignable to parameter of type 'State'.
|
|
116
|
+
saveIcons(block, state as AnyDuringMigration);
|
|
117
|
+
// AnyDuringMigration because: Argument of type '{ type: string; id: string;
|
|
118
|
+
// }' is not assignable to parameter of type 'State'.
|
|
119
|
+
saveFields(block, state as AnyDuringMigration, doFullSerialization);
|
|
117
120
|
if (addInputBlocks) {
|
|
118
|
-
|
|
121
|
+
// AnyDuringMigration because: Argument of type '{ type: string; id:
|
|
122
|
+
// string; }' is not assignable to parameter of type 'State'.
|
|
123
|
+
saveInputBlocks(block, state as AnyDuringMigration, doFullSerialization);
|
|
119
124
|
}
|
|
120
125
|
if (addNextBlocks) {
|
|
121
|
-
|
|
126
|
+
// AnyDuringMigration because: Argument of type '{ type: string; id:
|
|
127
|
+
// string; }' is not assignable to parameter of type 'State'.
|
|
128
|
+
saveNextBlocks(block, state as AnyDuringMigration, doFullSerialization);
|
|
122
129
|
}
|
|
123
130
|
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
131
|
+
// AnyDuringMigration because: Type '{ type: string; id: string; }' is not
|
|
132
|
+
// assignable to type 'State'.
|
|
133
|
+
return state as AnyDuringMigration;
|
|
134
|
+
}
|
|
127
135
|
|
|
128
136
|
/**
|
|
129
137
|
* Adds attributes to the given state object based on the state of the block.
|
|
130
138
|
* Eg collapsed, disabled, inline, etc.
|
|
131
|
-
* @param
|
|
132
|
-
* @param
|
|
139
|
+
* @param block The block to base the attributes on.
|
|
140
|
+
* @param state The state object to append to.
|
|
133
141
|
*/
|
|
134
|
-
|
|
142
|
+
function saveAttributes(block: Block, state: State) {
|
|
135
143
|
if (block.isCollapsed()) {
|
|
136
144
|
state['collapsed'] = true;
|
|
137
145
|
}
|
|
@@ -146,26 +154,25 @@ const saveAttributes = function(block, state) {
|
|
|
146
154
|
if (block.data) {
|
|
147
155
|
state['data'] = block.data;
|
|
148
156
|
}
|
|
149
|
-
}
|
|
157
|
+
}
|
|
150
158
|
|
|
151
159
|
/**
|
|
152
160
|
* Adds the coordinates of the given block to the given state object.
|
|
153
|
-
* @param
|
|
154
|
-
* @param
|
|
161
|
+
* @param block The block to base the coordinates on.
|
|
162
|
+
* @param state The state object to append to.
|
|
155
163
|
*/
|
|
156
|
-
|
|
164
|
+
function saveCoords(block: Block, state: State) {
|
|
157
165
|
const workspace = block.workspace;
|
|
158
166
|
const xy = block.getRelativeToSurfaceXY();
|
|
159
167
|
state['x'] = Math.round(workspace.RTL ? workspace.getWidth() - xy.x : xy.x);
|
|
160
168
|
state['y'] = Math.round(xy.y);
|
|
161
|
-
}
|
|
162
|
-
|
|
169
|
+
}
|
|
163
170
|
/**
|
|
164
171
|
* Adds any extra state the block may provide to the given state object.
|
|
165
|
-
* @param
|
|
166
|
-
* @param
|
|
172
|
+
* @param block The block to serialize the extra state of.
|
|
173
|
+
* @param state The state object to append to.
|
|
167
174
|
*/
|
|
168
|
-
|
|
175
|
+
function saveExtraState(block: Block, state: State) {
|
|
169
176
|
if (block.saveExtraState) {
|
|
170
177
|
const extraState = block.saveExtraState();
|
|
171
178
|
if (extraState !== null) {
|
|
@@ -180,14 +187,14 @@ const saveExtraState = function(block, state) {
|
|
|
180
187
|
' xmlns="https://developers.google.com/blockly/xml"', '');
|
|
181
188
|
}
|
|
182
189
|
}
|
|
183
|
-
}
|
|
190
|
+
}
|
|
184
191
|
|
|
185
192
|
/**
|
|
186
193
|
* Adds the state of all of the icons on the block to the given state object.
|
|
187
|
-
* @param
|
|
188
|
-
* @param
|
|
194
|
+
* @param block The block to serialize the icon state of.
|
|
195
|
+
* @param state The state object to append to.
|
|
189
196
|
*/
|
|
190
|
-
|
|
197
|
+
function saveIcons(block: Block, state: State) {
|
|
191
198
|
// TODO(#2105): Remove this logic and put it in the icon.
|
|
192
199
|
if (block.getCommentText()) {
|
|
193
200
|
state['icons'] = {
|
|
@@ -199,48 +206,48 @@ const saveIcons = function(block, state) {
|
|
|
199
206
|
},
|
|
200
207
|
};
|
|
201
208
|
}
|
|
202
|
-
}
|
|
209
|
+
}
|
|
203
210
|
|
|
204
211
|
/**
|
|
205
212
|
* Adds the state of all of the fields on the block to the given state object.
|
|
206
|
-
* @param
|
|
207
|
-
* @param
|
|
208
|
-
* @param
|
|
209
|
-
*
|
|
210
|
-
* state).
|
|
213
|
+
* @param block The block to serialize the field state of.
|
|
214
|
+
* @param state The state object to append to.
|
|
215
|
+
* @param doFullSerialization Whether or not to serialize the full state of the
|
|
216
|
+
* field (rather than possibly saving a reference to some state).
|
|
211
217
|
*/
|
|
212
|
-
|
|
218
|
+
function saveFields(block: Block, state: State, doFullSerialization: boolean) {
|
|
213
219
|
const fields = Object.create(null);
|
|
214
220
|
for (let i = 0; i < block.inputList.length; i++) {
|
|
215
221
|
const input = block.inputList[i];
|
|
216
222
|
for (let j = 0; j < input.fieldRow.length; j++) {
|
|
217
223
|
const field = input.fieldRow[j];
|
|
218
224
|
if (field.isSerializable()) {
|
|
219
|
-
fields[field.name] = field.saveState(doFullSerialization);
|
|
225
|
+
fields[field.name!] = field.saveState(doFullSerialization);
|
|
220
226
|
}
|
|
221
227
|
}
|
|
222
228
|
}
|
|
223
229
|
if (Object.keys(fields).length) {
|
|
224
230
|
state['fields'] = fields;
|
|
225
231
|
}
|
|
226
|
-
}
|
|
232
|
+
}
|
|
227
233
|
|
|
228
234
|
/**
|
|
229
235
|
* Adds the state of all of the child blocks of the given block (which are
|
|
230
236
|
* connected to inputs) to the given state object.
|
|
231
|
-
* @param
|
|
232
|
-
* @param
|
|
233
|
-
* @param
|
|
237
|
+
* @param block The block to serialize the input blocks of.
|
|
238
|
+
* @param state The state object to append to.
|
|
239
|
+
* @param doFullSerialization Whether or not to do full serialization.
|
|
234
240
|
*/
|
|
235
|
-
|
|
241
|
+
function saveInputBlocks(
|
|
242
|
+
block: Block, state: State, doFullSerialization: boolean) {
|
|
236
243
|
const inputs = Object.create(null);
|
|
237
244
|
for (let i = 0; i < block.inputList.length; i++) {
|
|
238
245
|
const input = block.inputList[i];
|
|
239
246
|
if (input.type === inputTypes.DUMMY) {
|
|
240
247
|
continue;
|
|
241
248
|
}
|
|
242
|
-
const connectionState =
|
|
243
|
-
|
|
249
|
+
const connectionState =
|
|
250
|
+
saveConnection(input.connection as Connection, doFullSerialization);
|
|
244
251
|
if (connectionState) {
|
|
245
252
|
inputs[input.name] = connectionState;
|
|
246
253
|
}
|
|
@@ -249,16 +256,17 @@ const saveInputBlocks = function(block, state, doFullSerialization) {
|
|
|
249
256
|
if (Object.keys(inputs).length) {
|
|
250
257
|
state['inputs'] = inputs;
|
|
251
258
|
}
|
|
252
|
-
}
|
|
259
|
+
}
|
|
253
260
|
|
|
254
261
|
/**
|
|
255
262
|
* Adds the state of all of the next blocks of the given block to the given
|
|
256
263
|
* state object.
|
|
257
|
-
* @param
|
|
258
|
-
* @param
|
|
259
|
-
* @param
|
|
264
|
+
* @param block The block to serialize the next blocks of.
|
|
265
|
+
* @param state The state object to append to.
|
|
266
|
+
* @param doFullSerialization Whether or not to do full serialization.
|
|
260
267
|
*/
|
|
261
|
-
|
|
268
|
+
function saveNextBlocks(
|
|
269
|
+
block: Block, state: State, doFullSerialization: boolean) {
|
|
262
270
|
if (!block.nextConnection) {
|
|
263
271
|
return;
|
|
264
272
|
}
|
|
@@ -267,18 +275,18 @@ const saveNextBlocks = function(block, state, doFullSerialization) {
|
|
|
267
275
|
if (connectionState) {
|
|
268
276
|
state['next'] = connectionState;
|
|
269
277
|
}
|
|
270
|
-
}
|
|
278
|
+
}
|
|
271
279
|
|
|
272
280
|
/**
|
|
273
281
|
* Returns the state of the given connection (ie the state of any connected
|
|
274
282
|
* shadow or real blocks).
|
|
275
|
-
* @param
|
|
276
|
-
*
|
|
277
|
-
*
|
|
278
|
-
*
|
|
279
|
-
* @param {boolean} doFullSerialization Whether or not to do full serialization.
|
|
283
|
+
* @param connection The connection to serialize the connected blocks of.
|
|
284
|
+
* @return An object containing the state of any connected shadow block, or any
|
|
285
|
+
* connected real block.
|
|
286
|
+
* @param doFullSerialization Whether or not to do full serialization.
|
|
280
287
|
*/
|
|
281
|
-
|
|
288
|
+
function saveConnection(connection: Connection, doFullSerialization: boolean):
|
|
289
|
+
ConnectionState|null {
|
|
282
290
|
const shadow = connection.getShadowState(true);
|
|
283
291
|
const child = connection.targetBlock();
|
|
284
292
|
if (!shadow && !child) {
|
|
@@ -292,22 +300,22 @@ const saveConnection = function(connection, doFullSerialization) {
|
|
|
292
300
|
state['block'] = save(child, {doFullSerialization});
|
|
293
301
|
}
|
|
294
302
|
return state;
|
|
295
|
-
}
|
|
303
|
+
}
|
|
296
304
|
|
|
297
305
|
/**
|
|
298
306
|
* Loads the block represented by the given state into the given workspace.
|
|
299
|
-
* @param
|
|
300
|
-
* @param
|
|
301
|
-
* @param
|
|
302
|
-
*
|
|
303
|
-
*
|
|
304
|
-
* @return {!Block} The block that was just loaded.
|
|
307
|
+
* @param state The state of a block to deserialize into the workspace.
|
|
308
|
+
* @param workspace The workspace to add the block to.
|
|
309
|
+
* @param param1 recordUndo: If true, events triggered by this function will be
|
|
310
|
+
* undo-able by the user. False by default.
|
|
311
|
+
* @return The block that was just loaded.
|
|
305
312
|
* @alias Blockly.serialization.blocks.append
|
|
306
313
|
*/
|
|
307
|
-
|
|
314
|
+
export function append(
|
|
315
|
+
state: State, workspace: Workspace,
|
|
316
|
+
{recordUndo = false}: {recordUndo?: boolean} = {}): Block {
|
|
308
317
|
return appendInternal(state, workspace, {recordUndo});
|
|
309
|
-
}
|
|
310
|
-
exports.append = append;
|
|
318
|
+
}
|
|
311
319
|
|
|
312
320
|
/**
|
|
313
321
|
* Loads the block represented by the given state into the given workspace.
|
|
@@ -315,25 +323,24 @@ exports.append = append;
|
|
|
315
323
|
* external API.
|
|
316
324
|
* But it is exported so that other places within Blockly can call it directly
|
|
317
325
|
* with the extra parameters.
|
|
318
|
-
* @param
|
|
319
|
-
* @param
|
|
320
|
-
* @param
|
|
321
|
-
*
|
|
322
|
-
*
|
|
323
|
-
*
|
|
324
|
-
*
|
|
325
|
-
*
|
|
326
|
-
* recordUndo: If true, events triggered by this function will be undo-able
|
|
327
|
-
* by the user. False by default.
|
|
328
|
-
* @return {!Block} The block that was just appended.
|
|
326
|
+
* @param state The state of a block to deserialize into the workspace.
|
|
327
|
+
* @param workspace The workspace to add the block to.
|
|
328
|
+
* @param param1 parentConnection: If provided, the system will attempt to
|
|
329
|
+
* connect the block to this connection after it is created. Undefined by
|
|
330
|
+
* default. isShadow: If true, the block will be set to a shadow block after
|
|
331
|
+
* it is created. False by default. recordUndo: If true, events triggered by
|
|
332
|
+
* this function will be undo-able by the user. False by default.
|
|
333
|
+
* @return The block that was just appended.
|
|
329
334
|
* @alias Blockly.serialization.blocks.appendInternal
|
|
330
|
-
* @
|
|
335
|
+
* @internal
|
|
331
336
|
*/
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
+
export function appendInternal(
|
|
338
|
+
state: State, workspace: Workspace,
|
|
339
|
+
{parentConnection = undefined, isShadow = false, recordUndo = false}: {
|
|
340
|
+
parentConnection?: Connection,
|
|
341
|
+
isShadow?: boolean,
|
|
342
|
+
recordUndo?: boolean
|
|
343
|
+
} = {}): Block {
|
|
337
344
|
const prevRecordUndo = eventUtils.getRecordUndo();
|
|
338
345
|
eventUtils.setRecordUndo(recordUndo);
|
|
339
346
|
const existingGroup = eventUtils.getGroup();
|
|
@@ -345,14 +352,14 @@ const appendInternal = function(state, workspace, {
|
|
|
345
352
|
const block = appendPrivate(state, workspace, {parentConnection, isShadow});
|
|
346
353
|
|
|
347
354
|
eventUtils.enable();
|
|
348
|
-
eventUtils.fire(new (eventUtils.get(eventUtils.BLOCK_CREATE))(block));
|
|
355
|
+
eventUtils.fire(new (eventUtils.get(eventUtils.BLOCK_CREATE))!(block));
|
|
349
356
|
eventUtils.setGroup(existingGroup);
|
|
350
357
|
eventUtils.setRecordUndo(prevRecordUndo);
|
|
351
358
|
|
|
352
359
|
// Adding connections to the connection db is expensive. This defers that
|
|
353
360
|
// operation to decrease load time.
|
|
354
361
|
if (workspace.rendered) {
|
|
355
|
-
const blockSvg =
|
|
362
|
+
const blockSvg = block as BlockSvg;
|
|
356
363
|
setTimeout(() => {
|
|
357
364
|
if (!blockSvg.disposed) {
|
|
358
365
|
blockSvg.setConnectionTracking(true);
|
|
@@ -361,28 +368,25 @@ const appendInternal = function(state, workspace, {
|
|
|
361
368
|
}
|
|
362
369
|
|
|
363
370
|
return block;
|
|
364
|
-
}
|
|
365
|
-
exports.appendInternal = appendInternal;
|
|
371
|
+
}
|
|
366
372
|
|
|
367
373
|
/**
|
|
368
374
|
* Loads the block represented by the given state into the given workspace.
|
|
369
375
|
* This is defined privately so that it can be called recursively without firing
|
|
370
376
|
* eroneous events. Events (and other things we only want to occur on the top
|
|
371
377
|
* block) are handled by appendInternal.
|
|
372
|
-
* @param
|
|
373
|
-
* @param
|
|
374
|
-
* @param
|
|
375
|
-
*
|
|
376
|
-
*
|
|
377
|
-
*
|
|
378
|
-
*
|
|
379
|
-
* False by default.
|
|
380
|
-
* @return {!Block} The block that was just appended.
|
|
378
|
+
* @param state The state of a block to deserialize into the workspace.
|
|
379
|
+
* @param workspace The workspace to add the block to.
|
|
380
|
+
* @param param1 parentConnection: If provided, the system will attempt to
|
|
381
|
+
* connect the block to this connection after it is created. Undefined by
|
|
382
|
+
* default. isShadow: The block will be set to a shadow block after it is
|
|
383
|
+
* created. False by default.
|
|
384
|
+
* @return The block that was just appended.
|
|
381
385
|
*/
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
} = {}) {
|
|
386
|
+
function appendPrivate(
|
|
387
|
+
state: State, workspace: Workspace,
|
|
388
|
+
{parentConnection = undefined, isShadow = false}:
|
|
389
|
+
{parentConnection?: Connection, isShadow?: boolean} = {}): Block {
|
|
386
390
|
if (!state['type']) {
|
|
387
391
|
throw new MissingBlockType(state);
|
|
388
392
|
}
|
|
@@ -400,15 +404,15 @@ const appendPrivate = function(state, workspace, {
|
|
|
400
404
|
initBlock(block, workspace.rendered);
|
|
401
405
|
|
|
402
406
|
return block;
|
|
403
|
-
}
|
|
407
|
+
}
|
|
404
408
|
|
|
405
409
|
/**
|
|
406
410
|
* Applies any coordinate information available on the state object to the
|
|
407
411
|
* block.
|
|
408
|
-
* @param
|
|
409
|
-
* @param
|
|
412
|
+
* @param block The block to set the position of.
|
|
413
|
+
* @param state The state object to reference.
|
|
410
414
|
*/
|
|
411
|
-
|
|
415
|
+
function loadCoords(block: Block, state: State) {
|
|
412
416
|
let x = state['x'] === undefined ? 0 : state['x'];
|
|
413
417
|
const y = state['y'] === undefined ? 0 : state['y'];
|
|
414
418
|
|
|
@@ -416,14 +420,14 @@ const loadCoords = function(block, state) {
|
|
|
416
420
|
x = workspace.RTL ? workspace.getWidth() - x : x;
|
|
417
421
|
|
|
418
422
|
block.moveBy(x, y);
|
|
419
|
-
}
|
|
423
|
+
}
|
|
420
424
|
|
|
421
425
|
/**
|
|
422
426
|
* Applies any attribute information available on the state object to the block.
|
|
423
|
-
* @param
|
|
424
|
-
* @param
|
|
427
|
+
* @param block The block to set the attributes of.
|
|
428
|
+
* @param state The state object to reference.
|
|
425
429
|
*/
|
|
426
|
-
|
|
430
|
+
function loadAttributes(block: Block, state: State) {
|
|
427
431
|
if (state['collapsed']) {
|
|
428
432
|
block.setCollapsed(true);
|
|
429
433
|
}
|
|
@@ -436,33 +440,33 @@ const loadAttributes = function(block, state) {
|
|
|
436
440
|
if (state['data'] !== undefined) {
|
|
437
441
|
block.data = state['data'];
|
|
438
442
|
}
|
|
439
|
-
}
|
|
443
|
+
}
|
|
440
444
|
|
|
441
445
|
/**
|
|
442
446
|
* Applies any extra state information available on the state object to the
|
|
443
447
|
* block.
|
|
444
|
-
* @param
|
|
445
|
-
* @param
|
|
448
|
+
* @param block The block to set the extra state of.
|
|
449
|
+
* @param state The state object to reference.
|
|
446
450
|
*/
|
|
447
|
-
|
|
451
|
+
function loadExtraState(block: Block, state: State) {
|
|
448
452
|
if (!state['extraState']) {
|
|
449
453
|
return;
|
|
450
454
|
}
|
|
451
455
|
if (block.loadExtraState) {
|
|
452
456
|
block.loadExtraState(state['extraState']);
|
|
453
|
-
} else {
|
|
457
|
+
} else if (block.domToMutation) {
|
|
454
458
|
block.domToMutation(Xml.textToDom(state['extraState']));
|
|
455
459
|
}
|
|
456
|
-
}
|
|
460
|
+
}
|
|
457
461
|
|
|
458
462
|
/**
|
|
459
463
|
* Attempts to connect the block to the parent connection, if it exists.
|
|
460
|
-
* @param
|
|
461
|
-
*
|
|
462
|
-
* @param
|
|
463
|
-
* @param {!State} state The state which defines the given block
|
|
464
|
+
* @param parentConnection The parent connection to try to connect the block to.
|
|
465
|
+
* @param child The block to try to connect to the parent.
|
|
466
|
+
* @param state The state which defines the given block
|
|
464
467
|
*/
|
|
465
|
-
|
|
468
|
+
function tryToConnectParent(
|
|
469
|
+
parentConnection: Connection|undefined, child: Block, state: State) {
|
|
466
470
|
if (!parentConnection) {
|
|
467
471
|
return;
|
|
468
472
|
}
|
|
@@ -498,15 +502,15 @@ const tryToConnectParent = function(parentConnection, child, state) {
|
|
|
498
502
|
'previous connection',
|
|
499
503
|
child, state);
|
|
500
504
|
}
|
|
501
|
-
}
|
|
505
|
+
}
|
|
502
506
|
|
|
503
507
|
/**
|
|
504
508
|
* Applies icon state to the icons on the block, based on the given state
|
|
505
509
|
* object.
|
|
506
|
-
* @param
|
|
507
|
-
* @param
|
|
510
|
+
* @param block The block to set the icon state of.
|
|
511
|
+
* @param state The state object to reference.
|
|
508
512
|
*/
|
|
509
|
-
|
|
513
|
+
function loadIcons(block: Block, state: State) {
|
|
510
514
|
if (!state['icons']) {
|
|
511
515
|
return;
|
|
512
516
|
}
|
|
@@ -523,18 +527,18 @@ const loadIcons = function(block, state) {
|
|
|
523
527
|
}
|
|
524
528
|
if (comment['pinned'] && block.rendered && !block.isInFlyout) {
|
|
525
529
|
// Give the block a chance to be positioned and rendered before showing.
|
|
526
|
-
const blockSvg =
|
|
527
|
-
setTimeout(() => blockSvg.getCommentIcon()
|
|
530
|
+
const blockSvg = block as BlockSvg;
|
|
531
|
+
setTimeout(() => blockSvg.getCommentIcon()!.setVisible(true), 1);
|
|
528
532
|
}
|
|
529
533
|
}
|
|
530
|
-
}
|
|
534
|
+
}
|
|
531
535
|
|
|
532
536
|
/**
|
|
533
537
|
* Applies any field information available on the state object to the block.
|
|
534
|
-
* @param
|
|
535
|
-
* @param
|
|
538
|
+
* @param block The block to set the field state of.
|
|
539
|
+
* @param state The state object to reference.
|
|
536
540
|
*/
|
|
537
|
-
|
|
541
|
+
function loadFields(block: Block, state: State) {
|
|
538
542
|
if (!state['fields']) {
|
|
539
543
|
return;
|
|
540
544
|
}
|
|
@@ -550,15 +554,15 @@ const loadFields = function(block, state) {
|
|
|
550
554
|
}
|
|
551
555
|
field.loadState(fieldState);
|
|
552
556
|
}
|
|
553
|
-
}
|
|
557
|
+
}
|
|
554
558
|
|
|
555
559
|
/**
|
|
556
560
|
* Creates any child blocks (attached to inputs) defined by the given state
|
|
557
561
|
* and attaches them to the given block.
|
|
558
|
-
* @param
|
|
559
|
-
* @param
|
|
562
|
+
* @param block The block to attach input blocks to.
|
|
563
|
+
* @param state The state object to reference.
|
|
560
564
|
*/
|
|
561
|
-
|
|
565
|
+
function loadInputBlocks(block: Block, state: State) {
|
|
562
566
|
if (!state['inputs']) {
|
|
563
567
|
return;
|
|
564
568
|
}
|
|
@@ -571,15 +575,15 @@ const loadInputBlocks = function(block, state) {
|
|
|
571
575
|
}
|
|
572
576
|
loadConnection(input.connection, state['inputs'][inputName]);
|
|
573
577
|
}
|
|
574
|
-
}
|
|
578
|
+
}
|
|
575
579
|
|
|
576
580
|
/**
|
|
577
581
|
* Creates any next blocks defined by the given state and attaches them to the
|
|
578
582
|
* given block.
|
|
579
|
-
* @param
|
|
580
|
-
* @param
|
|
583
|
+
* @param block The block to attach next blocks to.
|
|
584
|
+
* @param state The state object to reference.
|
|
581
585
|
*/
|
|
582
|
-
|
|
586
|
+
function loadNextBlocks(block: Block, state: State) {
|
|
583
587
|
if (!state['next']) {
|
|
584
588
|
return;
|
|
585
589
|
}
|
|
@@ -587,17 +591,16 @@ const loadNextBlocks = function(block, state) {
|
|
|
587
591
|
throw new MissingConnection('next', block, state);
|
|
588
592
|
}
|
|
589
593
|
loadConnection(block.nextConnection, state['next']);
|
|
590
|
-
}
|
|
591
|
-
|
|
594
|
+
}
|
|
592
595
|
/**
|
|
593
596
|
* Applies the state defined by connectionState to the given connection, ie
|
|
594
597
|
* assigns shadows and attaches child blocks.
|
|
595
|
-
* @param
|
|
596
|
-
*
|
|
597
|
-
*
|
|
598
|
-
* any connected shadow block, or any connected real block.
|
|
598
|
+
* @param connection The connection to deserialize the connected blocks of.
|
|
599
|
+
* @param connectionState The object containing the state of any connected
|
|
600
|
+
* shadow block, or any connected real block.
|
|
599
601
|
*/
|
|
600
|
-
|
|
602
|
+
function loadConnection(
|
|
603
|
+
connection: Connection, connectionState: ConnectionState) {
|
|
601
604
|
if (connectionState['shadow']) {
|
|
602
605
|
connection.setShadowState(connectionState['shadow']);
|
|
603
606
|
}
|
|
@@ -606,17 +609,17 @@ const loadConnection = function(connection, connectionState) {
|
|
|
606
609
|
connectionState['block'], connection.getSourceBlock().workspace,
|
|
607
610
|
{parentConnection: connection});
|
|
608
611
|
}
|
|
609
|
-
}
|
|
612
|
+
}
|
|
610
613
|
|
|
611
614
|
// TODO(#5146): Remove this from the serialization system.
|
|
612
615
|
/**
|
|
613
616
|
* Initializes the give block, eg init the model, inits the svg, renders, etc.
|
|
614
|
-
* @param
|
|
615
|
-
* @param
|
|
617
|
+
* @param block The block to initialize.
|
|
618
|
+
* @param rendered Whether the block is a rendered or headless block.
|
|
616
619
|
*/
|
|
617
|
-
|
|
620
|
+
function initBlock(block: Block, rendered: boolean) {
|
|
618
621
|
if (rendered) {
|
|
619
|
-
const blockSvg =
|
|
622
|
+
const blockSvg = block as BlockSvg;
|
|
620
623
|
// Adding connections to the connection db is expensive. This defers that
|
|
621
624
|
// operation to decrease load time.
|
|
622
625
|
blockSvg.setConnectionTracking(false);
|
|
@@ -625,40 +628,38 @@ const initBlock = function(block, rendered) {
|
|
|
625
628
|
blockSvg.render(false);
|
|
626
629
|
// fixes #6076 JSO deserialization doesn't
|
|
627
630
|
// set .iconXY_ property so here it will be set
|
|
628
|
-
const icons =
|
|
631
|
+
const icons = blockSvg.getIcons();
|
|
629
632
|
for (let i = 0; i < icons.length; i++) {
|
|
630
633
|
icons[i].computeIconLocation();
|
|
631
634
|
}
|
|
632
635
|
} else {
|
|
633
636
|
block.initModel();
|
|
634
637
|
}
|
|
635
|
-
}
|
|
638
|
+
}
|
|
636
639
|
|
|
637
640
|
// Alias to disambiguate saving within the serializer.
|
|
638
641
|
const saveBlock = save;
|
|
639
642
|
|
|
640
643
|
/**
|
|
641
644
|
* Serializer for saving and loading block state.
|
|
642
|
-
* @implements {ISerializer}
|
|
643
645
|
* @alias Blockly.serialization.blocks.BlockSerializer
|
|
644
646
|
*/
|
|
645
|
-
class BlockSerializer {
|
|
647
|
+
class BlockSerializer implements ISerializer {
|
|
648
|
+
priority: number;
|
|
649
|
+
|
|
646
650
|
/* eslint-disable-next-line require-jsdoc */
|
|
647
651
|
constructor() {
|
|
648
|
-
/**
|
|
649
|
-
* The priority for deserializing blocks.
|
|
650
|
-
* @type {number}
|
|
651
|
-
*/
|
|
652
|
+
/** The priority for deserializing blocks. */
|
|
652
653
|
this.priority = priorities.BLOCKS;
|
|
653
654
|
}
|
|
654
655
|
|
|
655
656
|
/**
|
|
656
657
|
* Serializes the blocks of the given workspace.
|
|
657
|
-
* @param
|
|
658
|
-
* @return
|
|
659
|
-
*
|
|
658
|
+
* @param workspace The workspace to save the blocks of.
|
|
659
|
+
* @return The state of the workspace's blocks, or null if there are no
|
|
660
|
+
* blocks.
|
|
660
661
|
*/
|
|
661
|
-
save(workspace) {
|
|
662
|
+
save(workspace: Workspace): {languageVersion: number, blocks: State[]}|null {
|
|
662
663
|
const blockStates = [];
|
|
663
664
|
for (const block of workspace.getTopBlocks(false)) {
|
|
664
665
|
const state =
|
|
@@ -679,11 +680,11 @@ class BlockSerializer {
|
|
|
679
680
|
/**
|
|
680
681
|
* Deserializes the blocks defined by the given state into the given
|
|
681
682
|
* workspace.
|
|
682
|
-
* @param
|
|
683
|
-
*
|
|
684
|
-
* @param {!Workspace} workspace The workspace to deserialize into.
|
|
683
|
+
* @param state The state of the blocks to deserialize.
|
|
684
|
+
* @param workspace The workspace to deserialize into.
|
|
685
685
|
*/
|
|
686
|
-
load(
|
|
686
|
+
load(
|
|
687
|
+
state: {languageVersion: number, blocks: State[]}, workspace: Workspace) {
|
|
687
688
|
const blockStates = state['blocks'];
|
|
688
689
|
for (const state of blockStates) {
|
|
689
690
|
append(state, workspace, {recordUndo: eventUtils.getRecordUndo()});
|
|
@@ -692,9 +693,9 @@ class BlockSerializer {
|
|
|
692
693
|
|
|
693
694
|
/**
|
|
694
695
|
* Disposes of any blocks that exist on the workspace.
|
|
695
|
-
* @param
|
|
696
|
+
* @param workspace The workspace to clear the blocks of.
|
|
696
697
|
*/
|
|
697
|
-
clear(workspace) {
|
|
698
|
+
clear(workspace: Workspace) {
|
|
698
699
|
// Cannot use workspace.clear() because that also removes variables.
|
|
699
700
|
for (const block of workspace.getTopBlocks(false)) {
|
|
700
701
|
block.dispose(false);
|