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
|
@@ -10,7 +10,6 @@
|
|
|
10
10
|
* are applied using Block.applyExtension(), or the JSON "extensions"
|
|
11
11
|
* array attribute.
|
|
12
12
|
*/
|
|
13
|
-
'use strict';
|
|
14
13
|
|
|
15
14
|
/**
|
|
16
15
|
* Extensions are functions that help initialize blocks, usually
|
|
@@ -19,35 +18,36 @@
|
|
|
19
18
|
* array attribute.
|
|
20
19
|
* @namespace Blockly.Extensions
|
|
21
20
|
*/
|
|
22
|
-
goog
|
|
21
|
+
import * as goog from '../closure/goog/goog.js';
|
|
22
|
+
goog.declareModuleId('Blockly.Extensions');
|
|
23
23
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
const {Block} = goog.requireType('Blockly.Block');
|
|
27
|
-
const {FieldDropdown} = goog.require('Blockly.FieldDropdown');
|
|
28
|
-
goog.requireType('Blockly.Mutator');
|
|
24
|
+
// Unused import preserved for side-effects. Remove if unneeded.
|
|
25
|
+
// import './mutator.js';
|
|
29
26
|
|
|
27
|
+
import type {Block} from './block.js';
|
|
28
|
+
import type {BlockSvg} from './block_svg.js';
|
|
29
|
+
import {FieldDropdown} from './field_dropdown.js';
|
|
30
|
+
import {Mutator} from './mutator.js';
|
|
31
|
+
import * as parsing from './utils/parsing.js';
|
|
30
32
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
* @private
|
|
34
|
-
*/
|
|
33
|
+
|
|
34
|
+
/** The set of all registered extensions, keyed by extension name/id. */
|
|
35
35
|
const allExtensions = Object.create(null);
|
|
36
|
-
|
|
36
|
+
export const TEST_ONLY = {allExtensions};
|
|
37
37
|
|
|
38
38
|
/**
|
|
39
39
|
* Registers a new extension function. Extensions are functions that help
|
|
40
40
|
* initialize blocks, usually adding dynamic behavior such as onchange
|
|
41
41
|
* handlers and mutators. These are applied using Block.applyExtension(), or
|
|
42
42
|
* the JSON "extensions" array attribute.
|
|
43
|
-
* @param
|
|
44
|
-
* @param
|
|
43
|
+
* @param name The name of this extension.
|
|
44
|
+
* @param initFn The function to initialize an extended block.
|
|
45
45
|
* @throws {Error} if the extension name is empty, the extension is already
|
|
46
46
|
* registered, or extensionFn is not a function.
|
|
47
47
|
* @alias Blockly.Extensions.register
|
|
48
48
|
*/
|
|
49
|
-
|
|
50
|
-
if (
|
|
49
|
+
export function register(name: string, initFn: Function) {
|
|
50
|
+
if (typeof name !== 'string' || name.trim() === '') {
|
|
51
51
|
throw Error('Error: Invalid extension name "' + name + '"');
|
|
52
52
|
}
|
|
53
53
|
if (allExtensions[name]) {
|
|
@@ -57,113 +57,98 @@ const register = function(name, initFn) {
|
|
|
57
57
|
throw Error('Error: Extension "' + name + '" must be a function');
|
|
58
58
|
}
|
|
59
59
|
allExtensions[name] = initFn;
|
|
60
|
-
}
|
|
61
|
-
exports.register = register;
|
|
60
|
+
}
|
|
62
61
|
|
|
63
62
|
/**
|
|
64
63
|
* Registers a new extension function that adds all key/value of mixinObj.
|
|
65
|
-
* @param
|
|
66
|
-
* @param
|
|
64
|
+
* @param name The name of this extension.
|
|
65
|
+
* @param mixinObj The values to mix in.
|
|
67
66
|
* @throws {Error} if the extension name is empty or the extension is already
|
|
68
67
|
* registered.
|
|
69
68
|
* @alias Blockly.Extensions.registerMixin
|
|
70
69
|
*/
|
|
71
|
-
|
|
70
|
+
export function registerMixin(name: string, mixinObj: AnyDuringMigration) {
|
|
72
71
|
if (!mixinObj || typeof mixinObj !== 'object') {
|
|
73
72
|
throw Error('Error: Mixin "' + name + '" must be a object');
|
|
74
73
|
}
|
|
75
|
-
register(
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
this.mixin(mixinObj);
|
|
80
|
-
});
|
|
81
|
-
};
|
|
82
|
-
exports.registerMixin = registerMixin;
|
|
74
|
+
register(name, function(this: Block) {
|
|
75
|
+
this.mixin(mixinObj);
|
|
76
|
+
});
|
|
77
|
+
}
|
|
83
78
|
|
|
84
79
|
/**
|
|
85
80
|
* Registers a new extension function that adds a mutator to the block.
|
|
86
81
|
* At register time this performs some basic sanity checks on the mutator.
|
|
87
82
|
* The wrapper may also add a mutator dialog to the block, if both compose and
|
|
88
83
|
* decompose are defined on the mixin.
|
|
89
|
-
* @param
|
|
90
|
-
* @param
|
|
91
|
-
* @param
|
|
92
|
-
*
|
|
93
|
-
*
|
|
94
|
-
* flyout of the mutator dialog.
|
|
84
|
+
* @param name The name of this mutator extension.
|
|
85
|
+
* @param mixinObj The values to mix in.
|
|
86
|
+
* @param opt_helperFn An optional function to apply after mixing in the object.
|
|
87
|
+
* @param opt_blockList A list of blocks to appear in the flyout of the mutator
|
|
88
|
+
* dialog.
|
|
95
89
|
* @throws {Error} if the mutation is invalid or can't be applied to the block.
|
|
96
90
|
* @alias Blockly.Extensions.registerMutator
|
|
97
91
|
*/
|
|
98
|
-
|
|
92
|
+
export function registerMutator(
|
|
93
|
+
name: string, mixinObj: AnyDuringMigration,
|
|
94
|
+
opt_helperFn?: () => AnyDuringMigration, opt_blockList?: string[]) {
|
|
99
95
|
const errorPrefix = 'Error when registering mutator "' + name + '": ';
|
|
100
96
|
|
|
101
97
|
checkHasMutatorProperties(errorPrefix, mixinObj);
|
|
102
98
|
const hasMutatorDialog = checkMutatorDialog(mixinObj, errorPrefix);
|
|
103
99
|
|
|
104
|
-
if (opt_helperFn &&
|
|
100
|
+
if (opt_helperFn && typeof opt_helperFn !== 'function') {
|
|
105
101
|
throw Error(errorPrefix + 'Extension "' + name + '" is not a function');
|
|
106
102
|
}
|
|
107
103
|
|
|
108
104
|
// Sanity checks passed.
|
|
109
|
-
register(
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
if (!Mutator) {
|
|
116
|
-
throw Error(errorPrefix + 'Missing require for Blockly.Mutator');
|
|
117
|
-
}
|
|
118
|
-
this.setMutator(new Mutator(opt_blockList || []));
|
|
119
|
-
}
|
|
120
|
-
// Mixin the object.
|
|
121
|
-
this.mixin(mixinObj);
|
|
105
|
+
register(name, function(this: Block) {
|
|
106
|
+
if (hasMutatorDialog) {
|
|
107
|
+
this.setMutator(new Mutator(this as BlockSvg, opt_blockList || []));
|
|
108
|
+
}
|
|
109
|
+
// Mixin the object.
|
|
110
|
+
this.mixin(mixinObj);
|
|
122
111
|
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
}
|
|
128
|
-
exports.registerMutator = registerMutator;
|
|
112
|
+
if (opt_helperFn) {
|
|
113
|
+
opt_helperFn.apply(this);
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
}
|
|
129
117
|
|
|
130
118
|
/**
|
|
131
119
|
* Unregisters the extension registered with the given name.
|
|
132
|
-
* @param
|
|
120
|
+
* @param name The name of the extension to unregister.
|
|
133
121
|
* @alias Blockly.Extensions.unregister
|
|
134
122
|
*/
|
|
135
|
-
|
|
123
|
+
export function unregister(name: string) {
|
|
136
124
|
if (isRegistered(name)) {
|
|
137
125
|
delete allExtensions[name];
|
|
138
126
|
} else {
|
|
139
127
|
console.warn(
|
|
140
128
|
'No extension mapping for name "' + name + '" found to unregister');
|
|
141
129
|
}
|
|
142
|
-
}
|
|
143
|
-
exports.unregister = unregister;
|
|
130
|
+
}
|
|
144
131
|
|
|
145
132
|
/**
|
|
146
133
|
* Returns whether an extension is registered with the given name.
|
|
147
|
-
* @param
|
|
148
|
-
* @return
|
|
149
|
-
* not registered.
|
|
134
|
+
* @param name The name of the extension to check for.
|
|
135
|
+
* @return True if the extension is registered. False if it is not registered.
|
|
150
136
|
* @alias Blockly.Extensions.isRegistered
|
|
151
137
|
*/
|
|
152
|
-
|
|
138
|
+
export function isRegistered(name: string): boolean {
|
|
153
139
|
return !!allExtensions[name];
|
|
154
|
-
}
|
|
155
|
-
exports.isRegistered = isRegistered;
|
|
140
|
+
}
|
|
156
141
|
|
|
157
142
|
/**
|
|
158
143
|
* Applies an extension method to a block. This should only be called during
|
|
159
144
|
* block construction.
|
|
160
|
-
* @param
|
|
161
|
-
* @param
|
|
162
|
-
* @param
|
|
145
|
+
* @param name The name of the extension.
|
|
146
|
+
* @param block The block to apply the named extension to.
|
|
147
|
+
* @param isMutator True if this extension defines a mutator.
|
|
163
148
|
* @throws {Error} if the extension is not found.
|
|
164
149
|
* @alias Blockly.Extensions.apply
|
|
165
150
|
*/
|
|
166
|
-
|
|
151
|
+
export function apply(name: string, block: Block, isMutator: boolean) {
|
|
167
152
|
const extensionFn = allExtensions[name];
|
|
168
153
|
if (typeof extensionFn !== 'function') {
|
|
169
154
|
throw Error('Error: Extension "' + name + '" not found.');
|
|
@@ -184,25 +169,23 @@ const apply = function(name, block, isMutator) {
|
|
|
184
169
|
checkHasMutatorProperties(errorPrefix, block);
|
|
185
170
|
} else {
|
|
186
171
|
if (!mutatorPropertiesMatch(
|
|
187
|
-
|
|
172
|
+
mutatorProperties as AnyDuringMigration[], block)) {
|
|
188
173
|
throw Error(
|
|
189
174
|
'Error when applying extension "' + name + '": ' +
|
|
190
175
|
'mutation properties changed when applying a non-mutator extension.');
|
|
191
176
|
}
|
|
192
177
|
}
|
|
193
|
-
}
|
|
194
|
-
exports.apply = apply;
|
|
178
|
+
}
|
|
195
179
|
|
|
196
180
|
/**
|
|
197
181
|
* Check that the given block does not have any of the four mutator properties
|
|
198
182
|
* defined on it. This function should be called before applying a mutator
|
|
199
183
|
* extension to a block, to make sure we are not overwriting properties.
|
|
200
|
-
* @param
|
|
201
|
-
*
|
|
202
|
-
* @param {!Block} block The block to check.
|
|
184
|
+
* @param mutationName The name of the mutation to reference in error messages.
|
|
185
|
+
* @param block The block to check.
|
|
203
186
|
* @throws {Error} if any of the properties already exist on the block.
|
|
204
187
|
*/
|
|
205
|
-
|
|
188
|
+
function checkNoMutatorProperties(mutationName: string, block: Block) {
|
|
206
189
|
const properties = getMutatorProperties(block);
|
|
207
190
|
if (properties.length) {
|
|
208
191
|
throw Error(
|
|
@@ -210,66 +193,70 @@ const checkNoMutatorProperties = function(mutationName, block) {
|
|
|
210
193
|
'" to a block that already has mutator functions.' +
|
|
211
194
|
' Block id: ' + block.id);
|
|
212
195
|
}
|
|
213
|
-
}
|
|
196
|
+
}
|
|
214
197
|
|
|
215
198
|
/**
|
|
216
199
|
* Checks if the given object has both the 'mutationToDom' and 'domToMutation'
|
|
217
200
|
* functions.
|
|
218
|
-
* @param
|
|
219
|
-
* @param
|
|
220
|
-
* @return
|
|
221
|
-
*
|
|
222
|
-
* @throws {Error} if the object has only one of the functions, or either is
|
|
223
|
-
*
|
|
201
|
+
* @param object The object to check.
|
|
202
|
+
* @param errorPrefix The string to prepend to any error message.
|
|
203
|
+
* @return True if the object has both functions. False if it has neither
|
|
204
|
+
* function.
|
|
205
|
+
* @throws {Error} if the object has only one of the functions, or either is not
|
|
206
|
+
* actually a function.
|
|
224
207
|
*/
|
|
225
|
-
|
|
208
|
+
function checkXmlHooks(
|
|
209
|
+
object: AnyDuringMigration, errorPrefix: string): boolean {
|
|
226
210
|
return checkHasFunctionPair(
|
|
227
211
|
object.mutationToDom, object.domToMutation,
|
|
228
212
|
errorPrefix + ' mutationToDom/domToMutation');
|
|
229
|
-
}
|
|
230
|
-
|
|
213
|
+
}
|
|
231
214
|
/**
|
|
232
215
|
* Checks if the given object has both the 'saveExtraState' and 'loadExtraState'
|
|
233
216
|
* functions.
|
|
234
|
-
* @param
|
|
235
|
-
* @param
|
|
236
|
-
* @return
|
|
237
|
-
*
|
|
238
|
-
* @throws {Error} if the object has only one of the functions, or either is
|
|
239
|
-
*
|
|
217
|
+
* @param object The object to check.
|
|
218
|
+
* @param errorPrefix The string to prepend to any error message.
|
|
219
|
+
* @return True if the object has both functions. False if it has neither
|
|
220
|
+
* function.
|
|
221
|
+
* @throws {Error} if the object has only one of the functions, or either is not
|
|
222
|
+
* actually a function.
|
|
240
223
|
*/
|
|
241
|
-
|
|
224
|
+
function checkJsonHooks(
|
|
225
|
+
object: AnyDuringMigration, errorPrefix: string): boolean {
|
|
242
226
|
return checkHasFunctionPair(
|
|
243
227
|
object.saveExtraState, object.loadExtraState,
|
|
244
228
|
errorPrefix + ' saveExtraState/loadExtraState');
|
|
245
|
-
}
|
|
229
|
+
}
|
|
246
230
|
|
|
247
231
|
/**
|
|
248
232
|
* Checks if the given object has both the 'compose' and 'decompose' functions.
|
|
249
|
-
* @param
|
|
250
|
-
* @param
|
|
251
|
-
* @return
|
|
252
|
-
*
|
|
253
|
-
* @throws {Error} if the object has only one of the functions, or either is
|
|
254
|
-
*
|
|
233
|
+
* @param object The object to check.
|
|
234
|
+
* @param errorPrefix The string to prepend to any error message.
|
|
235
|
+
* @return True if the object has both functions. False if it has neither
|
|
236
|
+
* function.
|
|
237
|
+
* @throws {Error} if the object has only one of the functions, or either is not
|
|
238
|
+
* actually a function.
|
|
255
239
|
*/
|
|
256
|
-
|
|
240
|
+
function checkMutatorDialog(
|
|
241
|
+
object: AnyDuringMigration, errorPrefix: string): boolean {
|
|
257
242
|
return checkHasFunctionPair(
|
|
258
243
|
object.compose, object.decompose, errorPrefix + ' compose/decompose');
|
|
259
|
-
}
|
|
244
|
+
}
|
|
260
245
|
|
|
261
246
|
/**
|
|
262
247
|
* Checks that both or neither of the given functions exist and that they are
|
|
263
248
|
* indeed functions.
|
|
264
|
-
* @param
|
|
265
|
-
* @param
|
|
266
|
-
* @param
|
|
267
|
-
* @return
|
|
268
|
-
*
|
|
269
|
-
* @throws {Error} If the object has only one of the functions, or either is
|
|
270
|
-
*
|
|
249
|
+
* @param func1 The first function in the pair.
|
|
250
|
+
* @param func2 The second function in the pair.
|
|
251
|
+
* @param errorPrefix The string to prepend to any error message.
|
|
252
|
+
* @return True if the object has both functions. False if it has neither
|
|
253
|
+
* function.
|
|
254
|
+
* @throws {Error} If the object has only one of the functions, or either is not
|
|
255
|
+
* actually a function.
|
|
271
256
|
*/
|
|
272
|
-
|
|
257
|
+
function checkHasFunctionPair(
|
|
258
|
+
func1: AnyDuringMigration, func2: AnyDuringMigration,
|
|
259
|
+
errorPrefix: string): boolean {
|
|
273
260
|
if (func1 && func2) {
|
|
274
261
|
if (typeof func1 !== 'function' || typeof func2 !== 'function') {
|
|
275
262
|
throw Error(errorPrefix + ' must be a function');
|
|
@@ -279,14 +266,15 @@ const checkHasFunctionPair = function(func1, func2, errorPrefix) {
|
|
|
279
266
|
return false;
|
|
280
267
|
}
|
|
281
268
|
throw Error(errorPrefix + 'Must have both or neither functions');
|
|
282
|
-
}
|
|
269
|
+
}
|
|
283
270
|
|
|
284
271
|
/**
|
|
285
272
|
* Checks that the given object required mutator properties.
|
|
286
|
-
* @param
|
|
287
|
-
* @param
|
|
273
|
+
* @param errorPrefix The string to prepend to any error message.
|
|
274
|
+
* @param object The object to inspect.
|
|
288
275
|
*/
|
|
289
|
-
|
|
276
|
+
function checkHasMutatorProperties(
|
|
277
|
+
errorPrefix: string, object: AnyDuringMigration) {
|
|
290
278
|
const hasXmlHooks = checkXmlHooks(object, errorPrefix);
|
|
291
279
|
const hasJsonHooks = checkJsonHooks(object, errorPrefix);
|
|
292
280
|
if (!hasXmlHooks && !hasJsonHooks) {
|
|
@@ -297,15 +285,15 @@ const checkHasMutatorProperties = function(errorPrefix, object) {
|
|
|
297
285
|
// A block with a mutator isn't required to have a mutation dialog, but
|
|
298
286
|
// it should still have both or neither of compose and decompose.
|
|
299
287
|
checkMutatorDialog(object, errorPrefix);
|
|
300
|
-
}
|
|
288
|
+
}
|
|
301
289
|
|
|
302
290
|
/**
|
|
303
291
|
* Get a list of values of mutator properties on the given block.
|
|
304
|
-
* @param
|
|
305
|
-
* @return
|
|
306
|
-
*
|
|
292
|
+
* @param block The block to inspect.
|
|
293
|
+
* @return A list with all of the defined properties, which should be functions,
|
|
294
|
+
* but may be anything other than undefined.
|
|
307
295
|
*/
|
|
308
|
-
|
|
296
|
+
function getMutatorProperties(block: Block): AnyDuringMigration[] {
|
|
309
297
|
const result = [];
|
|
310
298
|
// List each function explicitly by reference to allow for renaming
|
|
311
299
|
// during compilation.
|
|
@@ -328,17 +316,18 @@ const getMutatorProperties = function(block) {
|
|
|
328
316
|
result.push(block.decompose);
|
|
329
317
|
}
|
|
330
318
|
return result;
|
|
331
|
-
}
|
|
319
|
+
}
|
|
332
320
|
|
|
333
321
|
/**
|
|
334
322
|
* Check that the current mutator properties match a list of old mutator
|
|
335
323
|
* properties. This should be called after applying a non-mutator extension,
|
|
336
324
|
* to verify that the extension didn't change properties it shouldn't.
|
|
337
|
-
* @param
|
|
338
|
-
* @param
|
|
339
|
-
* @return
|
|
325
|
+
* @param oldProperties The old values to compare to.
|
|
326
|
+
* @param block The block to inspect for new values.
|
|
327
|
+
* @return True if the property lists match.
|
|
340
328
|
*/
|
|
341
|
-
|
|
329
|
+
function mutatorPropertiesMatch(
|
|
330
|
+
oldProperties: AnyDuringMigration[], block: Block): boolean {
|
|
342
331
|
const newProperties = getMutatorProperties(block);
|
|
343
332
|
if (newProperties.length !== oldProperties.length) {
|
|
344
333
|
return false;
|
|
@@ -349,15 +338,15 @@ const mutatorPropertiesMatch = function(oldProperties, block) {
|
|
|
349
338
|
}
|
|
350
339
|
}
|
|
351
340
|
return true;
|
|
352
|
-
}
|
|
341
|
+
}
|
|
353
342
|
|
|
354
343
|
/**
|
|
355
344
|
* Calls a function after the page has loaded, possibly immediately.
|
|
356
|
-
* @param
|
|
345
|
+
* @param fn Function to run.
|
|
357
346
|
* @throws Error Will throw if no global document can be found (e.g., Node.js).
|
|
358
|
-
* @
|
|
347
|
+
* @internal
|
|
359
348
|
*/
|
|
360
|
-
|
|
349
|
+
export function runAfterPageLoad(fn: () => AnyDuringMigration) {
|
|
361
350
|
if (typeof document !== 'object') {
|
|
362
351
|
throw Error('runAfterPageLoad() requires browser document.');
|
|
363
352
|
}
|
|
@@ -372,8 +361,7 @@ const runAfterPageLoad = function(fn) {
|
|
|
372
361
|
}
|
|
373
362
|
}, 10);
|
|
374
363
|
}
|
|
375
|
-
}
|
|
376
|
-
exports.runAfterPageLoad = runAfterPageLoad;
|
|
364
|
+
}
|
|
377
365
|
|
|
378
366
|
/**
|
|
379
367
|
* Builds an extension function that will map a dropdown value to a tooltip
|
|
@@ -388,16 +376,16 @@ exports.runAfterPageLoad = runAfterPageLoad;
|
|
|
388
376
|
* loading the first block of any given type, the extension will validate every
|
|
389
377
|
* dropdown option has a matching tooltip in the lookupTable. Errors are
|
|
390
378
|
* reported as warnings in the console, and are never fatal.
|
|
391
|
-
* @param
|
|
392
|
-
*
|
|
393
|
-
* @param
|
|
394
|
-
*
|
|
395
|
-
* @return {!Function} The extension function.
|
|
379
|
+
* @param dropdownName The name of the field whose value is the key to the
|
|
380
|
+
* lookup table.
|
|
381
|
+
* @param lookupTable The table of field values to tooltip text.
|
|
382
|
+
* @return The extension function.
|
|
396
383
|
* @alias Blockly.Extensions.buildTooltipForDropdown
|
|
397
384
|
*/
|
|
398
|
-
|
|
385
|
+
export function buildTooltipForDropdown(
|
|
386
|
+
dropdownName: string, lookupTable: {[key: string]: string}): Function {
|
|
399
387
|
// List of block types already validated, to minimize duplicate warnings.
|
|
400
|
-
const blockTypesChecked = [];
|
|
388
|
+
const blockTypesChecked: AnyDuringMigration[] = [];
|
|
401
389
|
|
|
402
390
|
// Check the tooltip string messages for invalid references.
|
|
403
391
|
// Wait for load, in case Blockly.Msg is not yet populated.
|
|
@@ -412,17 +400,14 @@ const buildTooltipForDropdown = function(dropdownName, lookupTable) {
|
|
|
412
400
|
});
|
|
413
401
|
}
|
|
414
402
|
|
|
415
|
-
/**
|
|
416
|
-
|
|
417
|
-
* @this {Block}
|
|
418
|
-
*/
|
|
419
|
-
const extensionFn = function() {
|
|
403
|
+
/** The actual extension. */
|
|
404
|
+
function extensionFn(this: Block) {
|
|
420
405
|
if (this.type && blockTypesChecked.indexOf(this.type) === -1) {
|
|
421
406
|
checkDropdownOptionsInTable(this, dropdownName, lookupTable);
|
|
422
407
|
blockTypesChecked.push(this.type);
|
|
423
408
|
}
|
|
424
409
|
|
|
425
|
-
this.setTooltip(function() {
|
|
410
|
+
this.setTooltip(function(this: Block) {
|
|
426
411
|
const value = String(this.getFieldValue(dropdownName));
|
|
427
412
|
let tooltip = lookupTable[value];
|
|
428
413
|
if (tooltip === null) {
|
|
@@ -431,7 +416,7 @@ const buildTooltipForDropdown = function(dropdownName, lookupTable) {
|
|
|
431
416
|
let warning = 'No tooltip mapping for value ' + value + ' of field ' +
|
|
432
417
|
dropdownName;
|
|
433
418
|
if (this.type !== null) {
|
|
434
|
-
warning +=
|
|
419
|
+
warning += ' of block type ' + this.type;
|
|
435
420
|
}
|
|
436
421
|
console.warn(warning + '.');
|
|
437
422
|
}
|
|
@@ -440,19 +425,19 @@ const buildTooltipForDropdown = function(dropdownName, lookupTable) {
|
|
|
440
425
|
}
|
|
441
426
|
return tooltip;
|
|
442
427
|
}.bind(this));
|
|
443
|
-
}
|
|
428
|
+
}
|
|
444
429
|
return extensionFn;
|
|
445
|
-
}
|
|
446
|
-
exports.buildTooltipForDropdown = buildTooltipForDropdown;
|
|
430
|
+
}
|
|
447
431
|
|
|
448
432
|
/**
|
|
449
433
|
* Checks all options keys are present in the provided string lookup table.
|
|
450
434
|
* Emits console warnings when they are not.
|
|
451
|
-
* @param
|
|
452
|
-
* @param
|
|
453
|
-
* @param
|
|
435
|
+
* @param block The block containing the dropdown
|
|
436
|
+
* @param dropdownName The name of the dropdown
|
|
437
|
+
* @param lookupTable The string lookup table
|
|
454
438
|
*/
|
|
455
|
-
|
|
439
|
+
function checkDropdownOptionsInTable(
|
|
440
|
+
block: Block, dropdownName: string, lookupTable: {[key: string]: string}) {
|
|
456
441
|
// Validate all dropdown options have values.
|
|
457
442
|
const dropdown = block.getField(dropdownName);
|
|
458
443
|
if (dropdown instanceof FieldDropdown && !dropdown.isOptionListDynamic()) {
|
|
@@ -466,19 +451,20 @@ const checkDropdownOptionsInTable = function(block, dropdownName, lookupTable) {
|
|
|
466
451
|
}
|
|
467
452
|
}
|
|
468
453
|
}
|
|
469
|
-
}
|
|
454
|
+
}
|
|
470
455
|
|
|
471
456
|
/**
|
|
472
457
|
* Builds an extension function that will install a dynamic tooltip. The
|
|
473
458
|
* tooltip message should include the string '%1' and that string will be
|
|
474
459
|
* replaced with the text of the named field.
|
|
475
|
-
* @param
|
|
476
|
-
*
|
|
477
|
-
* @param
|
|
478
|
-
* @return
|
|
460
|
+
* @param msgTemplate The template form to of the message text, with %1
|
|
461
|
+
* placeholder.
|
|
462
|
+
* @param fieldName The field with the replacement text.
|
|
463
|
+
* @return The extension function.
|
|
479
464
|
* @alias Blockly.Extensions.buildTooltipWithFieldText
|
|
480
465
|
*/
|
|
481
|
-
|
|
466
|
+
export function buildTooltipWithFieldText(
|
|
467
|
+
msgTemplate: string, fieldName: string): Function {
|
|
482
468
|
// Check the tooltip string messages for invalid references.
|
|
483
469
|
// Wait for load, in case Blockly.Msg is not yet populated.
|
|
484
470
|
// runAfterPageLoad() does not run in a Node.js environment due to lack
|
|
@@ -490,34 +476,29 @@ const buildTooltipWithFieldText = function(msgTemplate, fieldName) {
|
|
|
490
476
|
});
|
|
491
477
|
}
|
|
492
478
|
|
|
493
|
-
/**
|
|
494
|
-
|
|
495
|
-
|
|
496
|
-
*/
|
|
497
|
-
const extensionFn = function() {
|
|
498
|
-
this.setTooltip(function() {
|
|
479
|
+
/** The actual extension. */
|
|
480
|
+
function extensionFn(this: Block) {
|
|
481
|
+
this.setTooltip(function(this: Block) {
|
|
499
482
|
const field = this.getField(fieldName);
|
|
500
483
|
return parsing.replaceMessageReferences(msgTemplate)
|
|
501
484
|
.replace('%1', field ? field.getText() : '');
|
|
502
485
|
}.bind(this));
|
|
503
|
-
}
|
|
486
|
+
}
|
|
504
487
|
return extensionFn;
|
|
505
|
-
}
|
|
506
|
-
exports.buildTooltipWithFieldText = buildTooltipWithFieldText;
|
|
488
|
+
}
|
|
507
489
|
|
|
508
490
|
/**
|
|
509
491
|
* Configures the tooltip to mimic the parent block when connected. Otherwise,
|
|
510
492
|
* uses the tooltip text at the time this extension is initialized. This takes
|
|
511
493
|
* advantage of the fact that all other values from JSON are initialized before
|
|
512
494
|
* extensions.
|
|
513
|
-
* @this {Block}
|
|
514
495
|
*/
|
|
515
|
-
|
|
496
|
+
function extensionParentTooltip(this: Block) {
|
|
516
497
|
const tooltipWhenNotConnected = this.tooltip;
|
|
517
|
-
this.setTooltip(function() {
|
|
498
|
+
this.setTooltip(function(this: Block) {
|
|
518
499
|
const parent = this.getParent();
|
|
519
|
-
return
|
|
500
|
+
return parent && parent.getInputsInline() && parent.tooltip ||
|
|
520
501
|
tooltipWhenNotConnected;
|
|
521
502
|
}.bind(this));
|
|
522
|
-
}
|
|
503
|
+
}
|
|
523
504
|
register('parent_tooltip_when_inline', extensionParentTooltip);
|