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
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2019 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
import type { Svg } from './svg.js';
|
|
7
|
+
/**
|
|
8
|
+
* Required name space for SVG elements.
|
|
9
|
+
* @alias Blockly.utils.dom.SVG_NS
|
|
10
|
+
*/
|
|
11
|
+
export declare const SVG_NS = "http://www.w3.org/2000/svg";
|
|
12
|
+
/**
|
|
13
|
+
* Required name space for HTML elements.
|
|
14
|
+
* @alias Blockly.utils.dom.HTML_NS
|
|
15
|
+
*/
|
|
16
|
+
export declare const HTML_NS = "http://www.w3.org/1999/xhtml";
|
|
17
|
+
/**
|
|
18
|
+
* Required name space for XLINK elements.
|
|
19
|
+
* @alias Blockly.utils.dom.XLINK_NS
|
|
20
|
+
*/
|
|
21
|
+
export declare const XLINK_NS = "http://www.w3.org/1999/xlink";
|
|
22
|
+
/**
|
|
23
|
+
* Node type constants.
|
|
24
|
+
* https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType
|
|
25
|
+
* @alias Blockly.utils.dom.NodeType
|
|
26
|
+
*/
|
|
27
|
+
export declare enum NodeType {
|
|
28
|
+
ELEMENT_NODE = 1,
|
|
29
|
+
TEXT_NODE = 3,
|
|
30
|
+
COMMENT_NODE = 8,
|
|
31
|
+
DOCUMENT_POSITION_CONTAINED_BY = 16
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Helper method for creating SVG elements.
|
|
35
|
+
* @param name Element's tag name.
|
|
36
|
+
* @param attrs Dictionary of attribute names and values.
|
|
37
|
+
* @param opt_parent Optional parent on which to append the element.
|
|
38
|
+
* @return if name is a string or a more specific type if it a member of Svg.
|
|
39
|
+
* @alias Blockly.utils.dom.createSvgElement
|
|
40
|
+
*/
|
|
41
|
+
export declare function createSvgElement<T extends SVGElement>(name: string | Svg<T>, attrs: any, opt_parent?: Element): T;
|
|
42
|
+
/**
|
|
43
|
+
* Add a CSS class to a element.
|
|
44
|
+
* Similar to Closure's goog.dom.classes.add, except it handles SVG elements.
|
|
45
|
+
* @param element DOM element to add class to.
|
|
46
|
+
* @param className Name of class to add.
|
|
47
|
+
* @return True if class was added, false if already present.
|
|
48
|
+
* @alias Blockly.utils.dom.addClass
|
|
49
|
+
*/
|
|
50
|
+
export declare function addClass(element: Element, className: string): boolean;
|
|
51
|
+
/**
|
|
52
|
+
* Removes multiple calsses from an element.
|
|
53
|
+
* @param element DOM element to remove classes from.
|
|
54
|
+
* @param classNames A string of one or multiple class names for an element.
|
|
55
|
+
* @alias Blockly.utils.dom.removeClasses
|
|
56
|
+
*/
|
|
57
|
+
export declare function removeClasses(element: Element, classNames: string): void;
|
|
58
|
+
/**
|
|
59
|
+
* Remove a CSS class from a element.
|
|
60
|
+
* Similar to Closure's goog.dom.classes.remove, except it handles SVG elements.
|
|
61
|
+
* @param element DOM element to remove class from.
|
|
62
|
+
* @param className Name of class to remove.
|
|
63
|
+
* @return True if class was removed, false if never present.
|
|
64
|
+
* @alias Blockly.utils.dom.removeClass
|
|
65
|
+
*/
|
|
66
|
+
export declare function removeClass(element: Element, className: string): boolean;
|
|
67
|
+
/**
|
|
68
|
+
* Checks if an element has the specified CSS class.
|
|
69
|
+
* Similar to Closure's goog.dom.classes.has, except it handles SVG elements.
|
|
70
|
+
* @param element DOM element to check.
|
|
71
|
+
* @param className Name of class to check.
|
|
72
|
+
* @return True if class exists, false otherwise.
|
|
73
|
+
* @alias Blockly.utils.dom.hasClass
|
|
74
|
+
*/
|
|
75
|
+
export declare function hasClass(element: Element, className: string): boolean;
|
|
76
|
+
/**
|
|
77
|
+
* Removes a node from its parent. No-op if not attached to a parent.
|
|
78
|
+
* @param node The node to remove.
|
|
79
|
+
* @return The node removed if removed; else, null.
|
|
80
|
+
* @alias Blockly.utils.dom.removeNode
|
|
81
|
+
*/
|
|
82
|
+
export declare function removeNode(node: Node | null): Node | null;
|
|
83
|
+
/**
|
|
84
|
+
* Insert a node after a reference node.
|
|
85
|
+
* Contrast with node.insertBefore function.
|
|
86
|
+
* @param newNode New element to insert.
|
|
87
|
+
* @param refNode Existing element to precede new node.
|
|
88
|
+
* @alias Blockly.utils.dom.insertAfter
|
|
89
|
+
*/
|
|
90
|
+
export declare function insertAfter(newNode: Element, refNode: Element): void;
|
|
91
|
+
/**
|
|
92
|
+
* Whether a node contains another node.
|
|
93
|
+
* @param parent The node that should contain the other node.
|
|
94
|
+
* @param descendant The node to test presence of.
|
|
95
|
+
* @return Whether the parent node contains the descendant node.
|
|
96
|
+
* @alias Blockly.utils.dom.containsNode
|
|
97
|
+
*/
|
|
98
|
+
export declare function containsNode(parent: Node, descendant: Node): boolean;
|
|
99
|
+
/**
|
|
100
|
+
* Sets the CSS transform property on an element. This function sets the
|
|
101
|
+
* non-vendor-prefixed and vendor-prefixed versions for backwards compatibility
|
|
102
|
+
* with older browsers. See https://caniuse.com/#feat=transforms2d
|
|
103
|
+
* @param element Element to which the CSS transform will be applied.
|
|
104
|
+
* @param transform The value of the CSS `transform` property.
|
|
105
|
+
* @alias Blockly.utils.dom.setCssTransform
|
|
106
|
+
*/
|
|
107
|
+
export declare function setCssTransform(element: Element, transform: string): void;
|
|
108
|
+
/**
|
|
109
|
+
* Start caching text widths. Every call to this function MUST also call
|
|
110
|
+
* stopTextWidthCache. Caches must not survive between execution threads.
|
|
111
|
+
* @alias Blockly.utils.dom.startTextWidthCache
|
|
112
|
+
*/
|
|
113
|
+
export declare function startTextWidthCache(): void;
|
|
114
|
+
/**
|
|
115
|
+
* Stop caching field widths. Unless caching was already on when the
|
|
116
|
+
* corresponding call to startTextWidthCache was made.
|
|
117
|
+
* @alias Blockly.utils.dom.stopTextWidthCache
|
|
118
|
+
*/
|
|
119
|
+
export declare function stopTextWidthCache(): void;
|
|
120
|
+
/**
|
|
121
|
+
* Gets the width of a text element, caching it in the process.
|
|
122
|
+
* @param textElement An SVG 'text' element.
|
|
123
|
+
* @return Width of element.
|
|
124
|
+
* @alias Blockly.utils.dom.getTextWidth
|
|
125
|
+
*/
|
|
126
|
+
export declare function getTextWidth(textElement: SVGTextElement): number;
|
|
127
|
+
/**
|
|
128
|
+
* Gets the width of a text element using a faster method than `getTextWidth`.
|
|
129
|
+
* This method requires that we know the text element's font family and size in
|
|
130
|
+
* advance. Similar to `getTextWidth`, we cache the width we compute.
|
|
131
|
+
* @param textElement An SVG 'text' element.
|
|
132
|
+
* @param fontSize The font size to use.
|
|
133
|
+
* @param fontWeight The font weight to use.
|
|
134
|
+
* @param fontFamily The font family to use.
|
|
135
|
+
* @return Width of element.
|
|
136
|
+
* @alias Blockly.utils.dom.getFastTextWidth
|
|
137
|
+
*/
|
|
138
|
+
export declare function getFastTextWidth(textElement: Element, fontSize: number, fontWeight: string, fontFamily: string): number;
|
|
139
|
+
/**
|
|
140
|
+
* Gets the width of a text element using a faster method than `getTextWidth`.
|
|
141
|
+
* This method requires that we know the text element's font family and size in
|
|
142
|
+
* advance. Similar to `getTextWidth`, we cache the width we compute.
|
|
143
|
+
* This method is similar to ``getFastTextWidth`` but expects the font size
|
|
144
|
+
* parameter to be a string.
|
|
145
|
+
* @param textElement An SVG 'text' element.
|
|
146
|
+
* @param fontSize The font size to use.
|
|
147
|
+
* @param fontWeight The font weight to use.
|
|
148
|
+
* @param fontFamily The font family to use.
|
|
149
|
+
* @return Width of element.
|
|
150
|
+
* @alias Blockly.utils.dom.getFastTextWidthWithSizeString
|
|
151
|
+
*/
|
|
152
|
+
export declare function getFastTextWidthWithSizeString(textElement: Element, fontSize: string, fontWeight: string, fontFamily: string): number;
|
|
153
|
+
/**
|
|
154
|
+
* Measure a font's metrics. The height and baseline values.
|
|
155
|
+
* @param text Text to measure the font dimensions of.
|
|
156
|
+
* @param fontSize The font size to use.
|
|
157
|
+
* @param fontWeight The font weight to use.
|
|
158
|
+
* @param fontFamily The font family to use.
|
|
159
|
+
* @return Font measurements.
|
|
160
|
+
* @alias Blockly.utils.dom.measureFontMetrics
|
|
161
|
+
*/
|
|
162
|
+
export declare function measureFontMetrics(text: string, fontSize: string, fontWeight: string, fontFamily: string): {
|
|
163
|
+
height: number;
|
|
164
|
+
baseline: number;
|
|
165
|
+
};
|
|
@@ -9,7 +9,6 @@
|
|
|
9
9
|
* These methods are not specific to Blockly, and could be factored out into
|
|
10
10
|
* a JavaScript framework such as Closure.
|
|
11
11
|
*/
|
|
12
|
-
'use strict';
|
|
13
12
|
|
|
14
13
|
/**
|
|
15
14
|
* Utility methods for DOM manipulation.
|
|
@@ -17,110 +16,90 @@
|
|
|
17
16
|
* a JavaScript framework such as Closure.
|
|
18
17
|
* @namespace Blockly.utils.dom
|
|
19
18
|
*/
|
|
20
|
-
goog
|
|
19
|
+
import * as goog from '../../closure/goog/goog.js';
|
|
20
|
+
goog.declareModuleId('Blockly.utils.dom');
|
|
21
21
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
const {Svg} = goog.requireType('Blockly.utils.Svg');
|
|
22
|
+
import type {Svg} from './svg.js';
|
|
23
|
+
import * as userAgent from './useragent.js';
|
|
25
24
|
|
|
26
25
|
|
|
27
26
|
/**
|
|
28
27
|
* Required name space for SVG elements.
|
|
29
|
-
* @const
|
|
30
28
|
* @alias Blockly.utils.dom.SVG_NS
|
|
31
29
|
*/
|
|
32
|
-
const SVG_NS = 'http://www.w3.org/2000/svg';
|
|
33
|
-
exports.SVG_NS = SVG_NS;
|
|
30
|
+
export const SVG_NS = 'http://www.w3.org/2000/svg';
|
|
34
31
|
|
|
35
32
|
/**
|
|
36
33
|
* Required name space for HTML elements.
|
|
37
|
-
* @const
|
|
38
34
|
* @alias Blockly.utils.dom.HTML_NS
|
|
39
35
|
*/
|
|
40
|
-
const HTML_NS = 'http://www.w3.org/1999/xhtml';
|
|
41
|
-
exports.HTML_NS = HTML_NS;
|
|
36
|
+
export const HTML_NS = 'http://www.w3.org/1999/xhtml';
|
|
42
37
|
|
|
43
38
|
/**
|
|
44
39
|
* Required name space for XLINK elements.
|
|
45
|
-
* @const
|
|
46
40
|
* @alias Blockly.utils.dom.XLINK_NS
|
|
47
41
|
*/
|
|
48
|
-
const XLINK_NS = 'http://www.w3.org/1999/xlink';
|
|
49
|
-
exports.XLINK_NS = XLINK_NS;
|
|
42
|
+
export const XLINK_NS = 'http://www.w3.org/1999/xlink';
|
|
50
43
|
|
|
51
44
|
/**
|
|
52
45
|
* Node type constants.
|
|
53
46
|
* https://developer.mozilla.org/en-US/docs/Web/API/Node/nodeType
|
|
54
|
-
* @enum {number}
|
|
55
47
|
* @alias Blockly.utils.dom.NodeType
|
|
56
48
|
*/
|
|
57
|
-
|
|
58
|
-
ELEMENT_NODE
|
|
59
|
-
TEXT_NODE
|
|
60
|
-
COMMENT_NODE
|
|
61
|
-
DOCUMENT_POSITION_CONTAINED_BY
|
|
62
|
-
}
|
|
63
|
-
exports.NodeType = NodeType;
|
|
49
|
+
export enum NodeType {
|
|
50
|
+
ELEMENT_NODE = 1,
|
|
51
|
+
TEXT_NODE = 3,
|
|
52
|
+
COMMENT_NODE = 8,
|
|
53
|
+
DOCUMENT_POSITION_CONTAINED_BY = 16
|
|
54
|
+
}
|
|
64
55
|
|
|
65
|
-
/**
|
|
66
|
-
|
|
67
|
-
* @type {Object}
|
|
68
|
-
* @private
|
|
69
|
-
*/
|
|
70
|
-
let cacheWidths = null;
|
|
56
|
+
/** Temporary cache of text widths. */
|
|
57
|
+
let cacheWidths: AnyDuringMigration = null;
|
|
71
58
|
|
|
72
|
-
/**
|
|
73
|
-
* Number of current references to cache.
|
|
74
|
-
* @type {number}
|
|
75
|
-
* @private
|
|
76
|
-
*/
|
|
59
|
+
/** Number of current references to cache. */
|
|
77
60
|
let cacheReference = 0;
|
|
78
61
|
|
|
79
|
-
/**
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
*/
|
|
84
|
-
let canvasContext = null;
|
|
62
|
+
/** A HTML canvas context used for computing text width. */
|
|
63
|
+
// AnyDuringMigration because: Type 'null' is not assignable to type
|
|
64
|
+
// 'CanvasRenderingContext2D'.
|
|
65
|
+
let canvasContext: CanvasRenderingContext2D = null as AnyDuringMigration;
|
|
85
66
|
|
|
86
67
|
/**
|
|
87
68
|
* Helper method for creating SVG elements.
|
|
88
|
-
* @param
|
|
89
|
-
* @param
|
|
90
|
-
* @param
|
|
91
|
-
* @return
|
|
92
|
-
* name is a string or a more specific type if it a member of Svg.
|
|
93
|
-
* @template T
|
|
69
|
+
* @param name Element's tag name.
|
|
70
|
+
* @param attrs Dictionary of attribute names and values.
|
|
71
|
+
* @param opt_parent Optional parent on which to append the element.
|
|
72
|
+
* @return if name is a string or a more specific type if it a member of Svg.
|
|
94
73
|
* @alias Blockly.utils.dom.createSvgElement
|
|
95
74
|
*/
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
75
|
+
export function createSvgElement<T extends SVGElement>(
|
|
76
|
+
name: string|Svg<T>, attrs: AnyDuringMigration, opt_parent?: Element): T {
|
|
77
|
+
const e = document.createElementNS(SVG_NS, String(name)) as T;
|
|
99
78
|
for (const key in attrs) {
|
|
100
79
|
e.setAttribute(key, attrs[key]);
|
|
101
80
|
}
|
|
102
81
|
// IE defines a unique attribute "runtimeStyle", it is NOT applied to
|
|
103
82
|
// elements created with createElementNS. However, Closure checks for IE
|
|
104
83
|
// and assumes the presence of the attribute and crashes.
|
|
105
|
-
if (document.body
|
|
106
|
-
|
|
84
|
+
if ((document.body as any)
|
|
85
|
+
.runtimeStyle) { // Indicates presence of IE-only attr.
|
|
86
|
+
(e as any).runtimeStyle = (e as any).currentStyle = e.style;
|
|
107
87
|
}
|
|
108
88
|
if (opt_parent) {
|
|
109
89
|
opt_parent.appendChild(e);
|
|
110
90
|
}
|
|
111
91
|
return e;
|
|
112
|
-
}
|
|
113
|
-
exports.createSvgElement = createSvgElement;
|
|
92
|
+
}
|
|
114
93
|
|
|
115
94
|
/**
|
|
116
95
|
* Add a CSS class to a element.
|
|
117
96
|
* Similar to Closure's goog.dom.classes.add, except it handles SVG elements.
|
|
118
|
-
* @param
|
|
119
|
-
* @param
|
|
120
|
-
* @return
|
|
97
|
+
* @param element DOM element to add class to.
|
|
98
|
+
* @param className Name of class to add.
|
|
99
|
+
* @return True if class was added, false if already present.
|
|
121
100
|
* @alias Blockly.utils.dom.addClass
|
|
122
101
|
*/
|
|
123
|
-
|
|
102
|
+
export function addClass(element: Element, className: string): boolean {
|
|
124
103
|
let classes = element.getAttribute('class') || '';
|
|
125
104
|
if ((' ' + classes + ' ').indexOf(' ' + className + ' ') !== -1) {
|
|
126
105
|
return false;
|
|
@@ -130,38 +109,35 @@ const addClass = function(element, className) {
|
|
|
130
109
|
}
|
|
131
110
|
element.setAttribute('class', classes + className);
|
|
132
111
|
return true;
|
|
133
|
-
}
|
|
134
|
-
exports.addClass = addClass;
|
|
112
|
+
}
|
|
135
113
|
|
|
136
114
|
/**
|
|
137
115
|
* Removes multiple calsses from an element.
|
|
138
|
-
* @param
|
|
139
|
-
* @param
|
|
140
|
-
* element.
|
|
116
|
+
* @param element DOM element to remove classes from.
|
|
117
|
+
* @param classNames A string of one or multiple class names for an element.
|
|
141
118
|
* @alias Blockly.utils.dom.removeClasses
|
|
142
119
|
*/
|
|
143
|
-
|
|
120
|
+
export function removeClasses(element: Element, classNames: string) {
|
|
144
121
|
const classList = classNames.split(' ');
|
|
145
122
|
for (let i = 0; i < classList.length; i++) {
|
|
146
123
|
removeClass(element, classList[i]);
|
|
147
124
|
}
|
|
148
|
-
}
|
|
149
|
-
exports.removeClasses = removeClasses;
|
|
125
|
+
}
|
|
150
126
|
|
|
151
127
|
/**
|
|
152
128
|
* Remove a CSS class from a element.
|
|
153
129
|
* Similar to Closure's goog.dom.classes.remove, except it handles SVG elements.
|
|
154
|
-
* @param
|
|
155
|
-
* @param
|
|
156
|
-
* @return
|
|
130
|
+
* @param element DOM element to remove class from.
|
|
131
|
+
* @param className Name of class to remove.
|
|
132
|
+
* @return True if class was removed, false if never present.
|
|
157
133
|
* @alias Blockly.utils.dom.removeClass
|
|
158
134
|
*/
|
|
159
|
-
|
|
135
|
+
export function removeClass(element: Element, className: string): boolean {
|
|
160
136
|
const classes = element.getAttribute('class');
|
|
161
137
|
if ((' ' + classes + ' ').indexOf(' ' + className + ' ') === -1) {
|
|
162
138
|
return false;
|
|
163
139
|
}
|
|
164
|
-
const classList = classes
|
|
140
|
+
const classList = classes!.split(/\s+/);
|
|
165
141
|
for (let i = 0; i < classList.length; i++) {
|
|
166
142
|
if (!classList[i] || classList[i] === className) {
|
|
167
143
|
classList.splice(i, 1);
|
|
@@ -174,43 +150,40 @@ const removeClass = function(element, className) {
|
|
|
174
150
|
element.removeAttribute('class');
|
|
175
151
|
}
|
|
176
152
|
return true;
|
|
177
|
-
}
|
|
178
|
-
exports.removeClass = removeClass;
|
|
153
|
+
}
|
|
179
154
|
|
|
180
155
|
/**
|
|
181
156
|
* Checks if an element has the specified CSS class.
|
|
182
157
|
* Similar to Closure's goog.dom.classes.has, except it handles SVG elements.
|
|
183
|
-
* @param
|
|
184
|
-
* @param
|
|
185
|
-
* @return
|
|
158
|
+
* @param element DOM element to check.
|
|
159
|
+
* @param className Name of class to check.
|
|
160
|
+
* @return True if class exists, false otherwise.
|
|
186
161
|
* @alias Blockly.utils.dom.hasClass
|
|
187
162
|
*/
|
|
188
|
-
|
|
163
|
+
export function hasClass(element: Element, className: string): boolean {
|
|
189
164
|
const classes = element.getAttribute('class');
|
|
190
165
|
return (' ' + classes + ' ').indexOf(' ' + className + ' ') !== -1;
|
|
191
|
-
}
|
|
192
|
-
exports.hasClass = hasClass;
|
|
166
|
+
}
|
|
193
167
|
|
|
194
168
|
/**
|
|
195
169
|
* Removes a node from its parent. No-op if not attached to a parent.
|
|
196
|
-
* @param
|
|
197
|
-
* @return
|
|
170
|
+
* @param node The node to remove.
|
|
171
|
+
* @return The node removed if removed; else, null.
|
|
198
172
|
* @alias Blockly.utils.dom.removeNode
|
|
199
173
|
*/
|
|
200
174
|
// Copied from Closure goog.dom.removeNode
|
|
201
|
-
|
|
175
|
+
export function removeNode(node: Node|null): Node|null {
|
|
202
176
|
return node && node.parentNode ? node.parentNode.removeChild(node) : null;
|
|
203
|
-
}
|
|
204
|
-
exports.removeNode = removeNode;
|
|
177
|
+
}
|
|
205
178
|
|
|
206
179
|
/**
|
|
207
180
|
* Insert a node after a reference node.
|
|
208
181
|
* Contrast with node.insertBefore function.
|
|
209
|
-
* @param
|
|
210
|
-
* @param
|
|
182
|
+
* @param newNode New element to insert.
|
|
183
|
+
* @param refNode Existing element to precede new node.
|
|
211
184
|
* @alias Blockly.utils.dom.insertAfter
|
|
212
185
|
*/
|
|
213
|
-
|
|
186
|
+
export function insertAfter(newNode: Element, refNode: Element) {
|
|
214
187
|
const siblingNode = refNode.nextSibling;
|
|
215
188
|
const parentNode = refNode.parentNode;
|
|
216
189
|
if (!parentNode) {
|
|
@@ -221,73 +194,71 @@ const insertAfter = function(newNode, refNode) {
|
|
|
221
194
|
} else {
|
|
222
195
|
parentNode.appendChild(newNode);
|
|
223
196
|
}
|
|
224
|
-
}
|
|
225
|
-
exports.insertAfter = insertAfter;
|
|
197
|
+
}
|
|
226
198
|
|
|
227
199
|
/**
|
|
228
200
|
* Whether a node contains another node.
|
|
229
|
-
* @param
|
|
230
|
-
* @param
|
|
231
|
-
* @return
|
|
201
|
+
* @param parent The node that should contain the other node.
|
|
202
|
+
* @param descendant The node to test presence of.
|
|
203
|
+
* @return Whether the parent node contains the descendant node.
|
|
232
204
|
* @alias Blockly.utils.dom.containsNode
|
|
233
205
|
*/
|
|
234
|
-
|
|
206
|
+
export function containsNode(parent: Node, descendant: Node): boolean {
|
|
235
207
|
return !!(
|
|
236
208
|
parent.compareDocumentPosition(descendant) &
|
|
237
209
|
NodeType.DOCUMENT_POSITION_CONTAINED_BY);
|
|
238
|
-
}
|
|
239
|
-
exports.containsNode = containsNode;
|
|
210
|
+
}
|
|
240
211
|
|
|
241
212
|
/**
|
|
242
213
|
* Sets the CSS transform property on an element. This function sets the
|
|
243
214
|
* non-vendor-prefixed and vendor-prefixed versions for backwards compatibility
|
|
244
215
|
* with older browsers. See https://caniuse.com/#feat=transforms2d
|
|
245
|
-
* @param
|
|
246
|
-
* @param
|
|
216
|
+
* @param element Element to which the CSS transform will be applied.
|
|
217
|
+
* @param transform The value of the CSS `transform` property.
|
|
247
218
|
* @alias Blockly.utils.dom.setCssTransform
|
|
248
219
|
*/
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
220
|
+
export function setCssTransform(element: Element, transform: string) {
|
|
221
|
+
// AnyDuringMigration because: Property 'style' does not exist on type
|
|
222
|
+
// 'Element'.
|
|
223
|
+
(element as AnyDuringMigration).style['transform'] = transform;
|
|
224
|
+
// AnyDuringMigration because: Property 'style' does not exist on type
|
|
225
|
+
// 'Element'.
|
|
226
|
+
(element as AnyDuringMigration).style['-webkit-transform'] = transform;
|
|
227
|
+
}
|
|
254
228
|
|
|
255
229
|
/**
|
|
256
230
|
* Start caching text widths. Every call to this function MUST also call
|
|
257
231
|
* stopTextWidthCache. Caches must not survive between execution threads.
|
|
258
232
|
* @alias Blockly.utils.dom.startTextWidthCache
|
|
259
233
|
*/
|
|
260
|
-
|
|
234
|
+
export function startTextWidthCache() {
|
|
261
235
|
cacheReference++;
|
|
262
236
|
if (!cacheWidths) {
|
|
263
237
|
cacheWidths = Object.create(null);
|
|
264
238
|
}
|
|
265
|
-
}
|
|
266
|
-
exports.startTextWidthCache = startTextWidthCache;
|
|
239
|
+
}
|
|
267
240
|
|
|
268
241
|
/**
|
|
269
242
|
* Stop caching field widths. Unless caching was already on when the
|
|
270
243
|
* corresponding call to startTextWidthCache was made.
|
|
271
244
|
* @alias Blockly.utils.dom.stopTextWidthCache
|
|
272
245
|
*/
|
|
273
|
-
|
|
246
|
+
export function stopTextWidthCache() {
|
|
274
247
|
cacheReference--;
|
|
275
248
|
if (!cacheReference) {
|
|
276
249
|
cacheWidths = null;
|
|
277
250
|
}
|
|
278
|
-
}
|
|
279
|
-
exports.stopTextWidthCache = stopTextWidthCache;
|
|
251
|
+
}
|
|
280
252
|
|
|
281
253
|
/**
|
|
282
254
|
* Gets the width of a text element, caching it in the process.
|
|
283
|
-
* @param
|
|
284
|
-
* @return
|
|
255
|
+
* @param textElement An SVG 'text' element.
|
|
256
|
+
* @return Width of element.
|
|
285
257
|
* @alias Blockly.utils.dom.getTextWidth
|
|
286
258
|
*/
|
|
287
|
-
|
|
259
|
+
export function getTextWidth(textElement: SVGTextElement): number {
|
|
288
260
|
const key = textElement.textContent + '\n' + textElement.className.baseVal;
|
|
289
261
|
let width;
|
|
290
|
-
|
|
291
262
|
// Return the cached width if it exists.
|
|
292
263
|
if (cacheWidths) {
|
|
293
264
|
width = cacheWidths[key];
|
|
@@ -308,7 +279,7 @@ const getTextWidth = function(textElement) {
|
|
|
308
279
|
// approximation and do not cache the result. At some later point in time
|
|
309
280
|
// when the block is inserted into the visible DOM, this method will be
|
|
310
281
|
// called again and, at that point in time, will not throw an exception.
|
|
311
|
-
return textElement.textContent
|
|
282
|
+
return textElement.textContent!.length * 8;
|
|
312
283
|
}
|
|
313
284
|
|
|
314
285
|
// Cache the computed width and return.
|
|
@@ -316,26 +287,25 @@ const getTextWidth = function(textElement) {
|
|
|
316
287
|
cacheWidths[key] = width;
|
|
317
288
|
}
|
|
318
289
|
return width;
|
|
319
|
-
}
|
|
320
|
-
exports.getTextWidth = getTextWidth;
|
|
290
|
+
}
|
|
321
291
|
|
|
322
292
|
/**
|
|
323
293
|
* Gets the width of a text element using a faster method than `getTextWidth`.
|
|
324
294
|
* This method requires that we know the text element's font family and size in
|
|
325
295
|
* advance. Similar to `getTextWidth`, we cache the width we compute.
|
|
326
|
-
* @param
|
|
327
|
-
* @param
|
|
328
|
-
* @param
|
|
329
|
-
* @param
|
|
330
|
-
* @return
|
|
296
|
+
* @param textElement An SVG 'text' element.
|
|
297
|
+
* @param fontSize The font size to use.
|
|
298
|
+
* @param fontWeight The font weight to use.
|
|
299
|
+
* @param fontFamily The font family to use.
|
|
300
|
+
* @return Width of element.
|
|
331
301
|
* @alias Blockly.utils.dom.getFastTextWidth
|
|
332
302
|
*/
|
|
333
|
-
|
|
334
|
-
textElement, fontSize, fontWeight,
|
|
303
|
+
export function getFastTextWidth(
|
|
304
|
+
textElement: Element, fontSize: number, fontWeight: string,
|
|
305
|
+
fontFamily: string): number {
|
|
335
306
|
return getFastTextWidthWithSizeString(
|
|
336
307
|
textElement, fontSize + 'pt', fontWeight, fontFamily);
|
|
337
|
-
}
|
|
338
|
-
exports.getFastTextWidth = getFastTextWidth;
|
|
308
|
+
}
|
|
339
309
|
|
|
340
310
|
/**
|
|
341
311
|
* Gets the width of a text element using a faster method than `getTextWidth`.
|
|
@@ -343,17 +313,21 @@ exports.getFastTextWidth = getFastTextWidth;
|
|
|
343
313
|
* advance. Similar to `getTextWidth`, we cache the width we compute.
|
|
344
314
|
* This method is similar to ``getFastTextWidth`` but expects the font size
|
|
345
315
|
* parameter to be a string.
|
|
346
|
-
* @param
|
|
347
|
-
* @param
|
|
348
|
-
* @param
|
|
349
|
-
* @param
|
|
350
|
-
* @return
|
|
316
|
+
* @param textElement An SVG 'text' element.
|
|
317
|
+
* @param fontSize The font size to use.
|
|
318
|
+
* @param fontWeight The font weight to use.
|
|
319
|
+
* @param fontFamily The font family to use.
|
|
320
|
+
* @return Width of element.
|
|
351
321
|
* @alias Blockly.utils.dom.getFastTextWidthWithSizeString
|
|
352
322
|
*/
|
|
353
|
-
|
|
354
|
-
textElement, fontSize, fontWeight,
|
|
323
|
+
export function getFastTextWidthWithSizeString(
|
|
324
|
+
textElement: Element, fontSize: string, fontWeight: string,
|
|
325
|
+
fontFamily: string): number {
|
|
355
326
|
const text = textElement.textContent;
|
|
356
|
-
|
|
327
|
+
// AnyDuringMigration because: Property 'baseVal' does not exist on type
|
|
328
|
+
// 'string'.
|
|
329
|
+
const key =
|
|
330
|
+
text + '\n' + (textElement.className as AnyDuringMigration).baseVal;
|
|
357
331
|
let width;
|
|
358
332
|
|
|
359
333
|
// Return the cached width if it exists.
|
|
@@ -366,48 +340,53 @@ const getFastTextWidthWithSizeString = function(
|
|
|
366
340
|
|
|
367
341
|
if (!canvasContext) {
|
|
368
342
|
// Inject the canvas element used for computing text widths.
|
|
369
|
-
const computeCanvas = document.createElement('canvas');
|
|
343
|
+
const computeCanvas = (document.createElement('canvas'));
|
|
370
344
|
computeCanvas.className = 'blocklyComputeCanvas';
|
|
371
345
|
document.body.appendChild(computeCanvas);
|
|
372
346
|
|
|
373
347
|
// Initialize the HTML canvas context and set the font.
|
|
374
348
|
// The context font must match blocklyText's fontsize and font-family
|
|
375
349
|
// set in CSS.
|
|
376
|
-
canvasContext = computeCanvas.getContext('2d');
|
|
350
|
+
canvasContext = computeCanvas.getContext('2d') as CanvasRenderingContext2D;
|
|
377
351
|
}
|
|
378
352
|
// Set the desired font size and family.
|
|
379
353
|
canvasContext.font = fontWeight + ' ' + fontSize + ' ' + fontFamily;
|
|
380
354
|
|
|
381
355
|
// Measure the text width using the helper canvas context.
|
|
382
|
-
|
|
356
|
+
// AnyDuringMigration because: Argument of type 'string | null' is not
|
|
357
|
+
// assignable to parameter of type 'string'.
|
|
358
|
+
width = canvasContext.measureText(text as AnyDuringMigration).width;
|
|
383
359
|
|
|
384
360
|
// Cache the computed width and return.
|
|
385
361
|
if (cacheWidths) {
|
|
386
362
|
cacheWidths[key] = width;
|
|
387
363
|
}
|
|
388
364
|
return width;
|
|
389
|
-
}
|
|
390
|
-
exports.getFastTextWidthWithSizeString = getFastTextWidthWithSizeString;
|
|
365
|
+
}
|
|
391
366
|
|
|
392
367
|
/**
|
|
393
368
|
* Measure a font's metrics. The height and baseline values.
|
|
394
|
-
* @param
|
|
395
|
-
* @param
|
|
396
|
-
* @param
|
|
397
|
-
* @param
|
|
398
|
-
* @return
|
|
369
|
+
* @param text Text to measure the font dimensions of.
|
|
370
|
+
* @param fontSize The font size to use.
|
|
371
|
+
* @param fontWeight The font weight to use.
|
|
372
|
+
* @param fontFamily The font family to use.
|
|
373
|
+
* @return Font measurements.
|
|
399
374
|
* @alias Blockly.utils.dom.measureFontMetrics
|
|
400
375
|
*/
|
|
401
|
-
|
|
402
|
-
|
|
376
|
+
export function measureFontMetrics(
|
|
377
|
+
text: string, fontSize: string, fontWeight: string,
|
|
378
|
+
fontFamily: string): {height: number, baseline: number} {
|
|
379
|
+
const span = (document.createElement('span'));
|
|
403
380
|
span.style.font = fontWeight + ' ' + fontSize + ' ' + fontFamily;
|
|
404
381
|
span.textContent = text;
|
|
405
382
|
|
|
406
|
-
const block =
|
|
383
|
+
const block = (document.createElement('div'));
|
|
407
384
|
block.style.width = '1px';
|
|
408
|
-
|
|
385
|
+
// AnyDuringMigration because: Type 'number' is not assignable to type
|
|
386
|
+
// 'string'.
|
|
387
|
+
block.style.height = 0 as AnyDuringMigration;
|
|
409
388
|
|
|
410
|
-
const div =
|
|
389
|
+
const div = (document.createElement('div'));
|
|
411
390
|
div.setAttribute('style', 'position: fixed; top: 0; left: 0; display: flex;');
|
|
412
391
|
div.appendChild(span);
|
|
413
392
|
div.appendChild(block);
|
|
@@ -426,5 +405,4 @@ const measureFontMetrics = function(text, fontSize, fontWeight, fontFamily) {
|
|
|
426
405
|
document.body.removeChild(div);
|
|
427
406
|
}
|
|
428
407
|
return result;
|
|
429
|
-
}
|
|
430
|
-
exports.measureFontMetrics = measureFontMetrics;
|
|
408
|
+
}
|