blockly 8.0.4-beta.0 → 8.0.5-beta.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/blockly.min.js +2421 -2688
- package/blockly_compressed.js +1499 -1994
- package/blockly_compressed.js.map +1 -1
- package/blocks/blocks.js +3 -2
- package/blocks/colour.js +3 -1
- package/blocks/lists.js +94 -22
- package/blocks/logic.js +14 -6
- package/blocks/loops.js +5 -3
- package/blocks/math.js +3 -1
- package/blocks/procedures.js +3 -1
- package/blocks/text.js +14 -6
- package/blocks/variables.js +3 -1
- package/blocks/variables_dynamic.js +3 -1
- package/blocks.d.ts +0 -2
- package/blocks_compressed.js +189 -171
- package/blocks_compressed.js.map +1 -1
- package/closure/goog/base.d.ts +1 -0
- package/closure/goog/base_minimal.d.ts +18 -0
- package/closure/goog/goog.d.ts +25 -0
- package/core/any_aliases.d.ts +1 -0
- package/core/any_aliases.ts +1 -0
- package/core/block.d.ts +779 -0
- package/core/{block.js → block.ts} +610 -719
- package/core/block_animations.d.ts +33 -0
- package/core/{block_animations.js → block_animations.ts} +75 -79
- package/core/block_drag_surface.d.ts +111 -0
- package/core/{block_drag_surface.js → block_drag_surface.ts} +85 -117
- package/core/block_dragger.d.ts +143 -0
- package/core/{block_dragger.js → block_dragger.ts} +139 -176
- package/core/block_svg.d.ts +588 -0
- package/core/{block_svg.js → block_svg.ts} +494 -630
- package/core/blockly.d.ts +562 -0
- package/core/blockly.js +1 -1
- package/core/blockly.ts +749 -0
- package/core/blockly_options.d.ts +69 -0
- package/core/blockly_options.ts +81 -0
- package/core/blocks.d.ts +17 -0
- package/core/{blocks.js → blocks.ts} +4 -8
- package/core/browser_events.d.ts +85 -0
- package/core/{browser_events.js → browser_events.ts} +98 -93
- package/core/bubble.d.ts +279 -0
- package/core/{bubble.js → bubble.ts} +277 -370
- package/core/bubble_dragger.d.ts +73 -0
- package/core/bubble_dragger.ts +229 -0
- package/core/bump_objects.d.ts +34 -0
- package/core/{bump_objects.js → bump_objects.ts} +54 -52
- package/core/clipboard.d.ts +42 -0
- package/core/clipboard.ts +91 -0
- package/core/comment.d.ts +113 -0
- package/core/{comment.js → comment.ts} +135 -185
- package/core/common.d.ts +129 -0
- package/core/{common.js → common.ts} +105 -82
- package/core/component_manager.d.ts +91 -0
- package/core/component_manager.ts +211 -0
- package/core/config.d.ts +23 -0
- package/core/{config.js → config.ts} +12 -19
- package/core/connection.d.ts +232 -0
- package/core/{connection.js → connection.ts} +187 -237
- package/core/connection_checker.d.ts +78 -0
- package/core/{connection_checker.js → connection_checker.ts} +66 -77
- package/core/connection_db.d.ts +91 -0
- package/core/{connection_db.js → connection_db.ts} +62 -87
- package/core/connection_type.d.ts +15 -0
- package/core/{connection_type.js → connection_type.ts} +8 -12
- package/core/constants.d.ts +15 -0
- package/core/{constants.js → constants.ts} +4 -8
- package/core/contextmenu.d.ts +80 -0
- package/core/{contextmenu.js → contextmenu.ts} +118 -153
- package/core/contextmenu_items.d.ts +77 -0
- package/core/contextmenu_items.ts +576 -0
- package/core/contextmenu_registry.d.ts +105 -0
- package/core/contextmenu_registry.ts +179 -0
- package/core/css.d.ts +24 -0
- package/core/{css.js → css.ts} +16 -24
- package/core/delete_area.d.ts +47 -0
- package/core/delete_area.ts +82 -0
- package/core/dialog.d.ts +61 -0
- package/core/dialog.ts +127 -0
- package/core/drag_target.d.ts +63 -0
- package/core/drag_target.ts +94 -0
- package/core/dropdowndiv.d.ts +155 -0
- package/core/{dropdowndiv.js → dropdowndiv.ts} +262 -333
- package/core/events/events.d.ts +102 -0
- package/core/events/events.ts +123 -0
- package/core/events/events_abstract.d.ts +51 -0
- package/core/events/events_abstract.ts +112 -0
- package/core/events/events_block_base.d.ts +31 -0
- package/core/events/events_block_base.ts +65 -0
- package/core/events/events_block_change.d.ts +55 -0
- package/core/events/{events_block_change.js → events_block_change.ts} +45 -48
- package/core/events/events_block_create.d.ts +35 -0
- package/core/events/{events_block_create.js → events_block_create.ts} +30 -35
- package/core/events/events_block_delete.d.ts +36 -0
- package/core/events/{events_block_delete.js → events_block_delete.ts} +34 -39
- package/core/events/events_block_drag.d.ts +36 -0
- package/core/events/events_block_drag.ts +82 -0
- package/core/events/events_block_move.d.ts +51 -0
- package/core/events/{events_block_move.js → events_block_move.ts} +54 -50
- package/core/events/events_bubble_open.d.ts +35 -0
- package/core/events/events_bubble_open.ts +82 -0
- package/core/events/events_click.d.ts +36 -0
- package/core/events/{events_click.js → events_click.ts} +27 -30
- package/core/events/events_comment_base.d.ts +39 -0
- package/core/events/events_comment_base.ts +107 -0
- package/core/events/events_comment_change.d.ts +43 -0
- package/core/events/{events_comment_change.js → events_comment_change.ts} +31 -28
- package/core/events/events_comment_create.d.ts +35 -0
- package/core/events/{events_comment_create.js → events_comment_create.ts} +24 -26
- package/core/events/events_comment_delete.d.ts +35 -0
- package/core/events/{events_comment_delete.js → events_comment_delete.ts} +20 -24
- package/core/events/events_comment_move.d.ts +55 -0
- package/core/events/{events_comment_move.js → events_comment_move.ts} +39 -42
- package/core/events/events_marker_move.d.ts +40 -0
- package/core/events/events_marker_move.ts +99 -0
- package/core/events/events_selected.d.ts +34 -0
- package/core/events/events_selected.ts +78 -0
- package/core/events/events_theme_change.d.ts +30 -0
- package/core/events/{events_theme_change.js → events_theme_change.ts} +19 -24
- package/core/events/events_toolbox_item_select.d.ts +34 -0
- package/core/events/events_toolbox_item_select.ts +79 -0
- package/core/events/events_trashcan_open.d.ts +31 -0
- package/core/events/events_trashcan_open.ts +68 -0
- package/core/events/events_ui.d.ts +37 -0
- package/core/events/{events_ui.js → events_ui.ts} +27 -26
- package/core/events/events_ui_base.d.ts +26 -0
- package/core/events/{events_ui_base.js → events_ui_base.ts} +17 -26
- package/core/events/events_var_base.d.ts +31 -0
- package/core/events/events_var_base.ts +65 -0
- package/core/events/events_var_create.d.ts +35 -0
- package/core/events/{events_var_create.js → events_var_create.ts} +24 -25
- package/core/events/events_var_delete.d.ts +35 -0
- package/core/events/{events_var_delete.js → events_var_delete.ts} +24 -25
- package/core/events/events_var_rename.d.ts +36 -0
- package/core/events/{events_var_rename.js → events_var_rename.ts} +25 -26
- package/core/events/events_viewport.d.ts +39 -0
- package/core/events/events_viewport.ts +100 -0
- package/core/events/utils.d.ts +272 -0
- package/core/events/{utils.js → utils.ts} +148 -219
- package/core/events/workspace_events.d.ts +36 -0
- package/core/events/workspace_events.ts +86 -0
- package/core/extensions.d.ts +107 -0
- package/core/{extensions.js → extensions.ts} +153 -172
- package/core/field.d.ts +534 -0
- package/core/{field.js → field.ts} +413 -489
- package/core/field_angle.d.ts +176 -0
- package/core/field_angle.ts +563 -0
- package/core/field_checkbox.d.ts +124 -0
- package/core/field_checkbox.ts +243 -0
- package/core/field_colour.d.ts +200 -0
- package/core/field_colour.ts +632 -0
- package/core/field_dropdown.d.ts +222 -0
- package/core/{field_dropdown.js → field_dropdown.ts} +277 -299
- package/core/field_image.d.ts +134 -0
- package/core/field_image.ts +282 -0
- package/core/field_label.d.ts +71 -0
- package/core/field_label.ts +152 -0
- package/core/field_label_serializable.d.ts +42 -0
- package/core/field_label_serializable.ts +76 -0
- package/core/field_multilineinput.d.ts +146 -0
- package/core/{field_multilineinput.js → field_multilineinput.ts} +166 -163
- package/core/field_number.d.ts +156 -0
- package/core/{field_number.js → field_number.ts} +110 -123
- package/core/field_registry.d.ts +45 -0
- package/core/{field_registry.js → field_registry.ts} +37 -30
- package/core/field_textinput.d.ts +219 -0
- package/core/field_textinput.ts +591 -0
- package/core/field_variable.d.ts +217 -0
- package/core/{field_variable.js → field_variable.ts} +174 -187
- package/core/flyout_base.d.ts +459 -0
- package/core/{flyout_base.js → flyout_base.ts} +429 -518
- package/core/flyout_button.d.ts +81 -0
- package/core/flyout_button.ts +292 -0
- package/core/flyout_horizontal.d.ts +82 -0
- package/core/{flyout_horizontal.js → flyout_horizontal.ts} +97 -107
- package/core/flyout_metrics_manager.d.ts +40 -0
- package/core/{flyout_metrics_manager.js → flyout_metrics_manager.ts} +22 -34
- package/core/flyout_vertical.d.ts +83 -0
- package/core/{flyout_vertical.js → flyout_vertical.ts} +106 -117
- package/core/generator.d.ts +205 -0
- package/core/{generator.js → generator.ts} +168 -193
- package/core/gesture.d.ts +357 -0
- package/core/{gesture.js → gesture.ts} +289 -369
- package/core/grid.d.ts +83 -0
- package/core/grid.ts +192 -0
- package/core/icon.d.ts +78 -0
- package/core/icon.ts +189 -0
- package/core/inject.d.ts +15 -0
- package/core/{inject.js → inject.ts} +101 -100
- package/core/input.d.ts +128 -0
- package/core/input.ts +309 -0
- package/core/input_types.d.ts +14 -0
- package/core/{input_types.js → input_types.ts} +8 -12
- package/core/insertion_marker_manager.d.ts +212 -0
- package/core/{insertion_marker_manager.js → insertion_marker_manager.ts} +234 -236
- package/core/interfaces/i_ast_node_location.d.ts +11 -0
- package/core/interfaces/{i_ast_node_location.js → i_ast_node_location.ts} +4 -7
- package/core/interfaces/i_ast_node_location_svg.d.ts +22 -0
- package/core/interfaces/i_ast_node_location_svg.ts +37 -0
- package/core/interfaces/i_ast_node_location_with_block.d.ts +18 -0
- package/core/interfaces/i_ast_node_location_with_block.ts +38 -0
- package/core/interfaces/i_autohideable.d.ts +18 -0
- package/core/interfaces/i_autohideable.ts +34 -0
- package/core/interfaces/i_block_dragger.d.ts +43 -0
- package/core/interfaces/i_block_dragger.ts +67 -0
- package/core/interfaces/i_bounded_element.d.ts +24 -0
- package/core/interfaces/i_bounded_element.ts +42 -0
- package/core/interfaces/i_bubble.d.ts +59 -0
- package/core/interfaces/i_bubble.ts +88 -0
- package/core/interfaces/i_collapsible_toolbox_item.d.ts +26 -0
- package/core/interfaces/i_collapsible_toolbox_item.ts +47 -0
- package/core/interfaces/i_component.d.ts +17 -0
- package/core/interfaces/{i_component.js → i_component.ts} +9 -14
- package/core/interfaces/i_connection_checker.d.ts +69 -0
- package/core/interfaces/i_connection_checker.ts +102 -0
- package/core/interfaces/i_contextmenu.d.ts +13 -0
- package/core/interfaces/i_contextmenu.ts +26 -0
- package/core/interfaces/i_copyable.d.ts +24 -0
- package/core/interfaces/i_copyable.ts +40 -0
- package/core/interfaces/i_deletable.d.ts +16 -0
- package/core/interfaces/{i_deletable.js → i_deletable.ts} +9 -13
- package/core/interfaces/i_delete_area.d.ts +25 -0
- package/core/interfaces/i_delete_area.ts +46 -0
- package/core/interfaces/i_drag_target.d.ts +53 -0
- package/core/interfaces/i_drag_target.ts +84 -0
- package/core/interfaces/i_draggable.d.ts +12 -0
- package/core/interfaces/{i_draggable.js → i_draggable.ts} +4 -10
- package/core/interfaces/i_flyout.d.ts +134 -0
- package/core/interfaces/i_flyout.ts +186 -0
- package/core/interfaces/i_keyboard_accessible.d.ts +18 -0
- package/core/interfaces/i_keyboard_accessible.ts +35 -0
- package/core/interfaces/i_metrics_manager.d.ts +117 -0
- package/core/interfaces/i_metrics_manager.ts +151 -0
- package/core/interfaces/i_movable.d.ts +16 -0
- package/core/interfaces/{i_movable.js → i_movable.ts} +9 -13
- package/core/interfaces/i_positionable.d.ts +27 -0
- package/core/interfaces/i_positionable.ts +50 -0
- package/core/interfaces/i_registrable.d.ts +11 -0
- package/core/interfaces/{i_registrable.js → i_registrable.ts} +3 -7
- package/core/interfaces/i_registrable_field.d.ts +17 -0
- package/core/interfaces/{i_registrable_field.js → i_registrable_field.ts} +8 -16
- package/core/interfaces/i_selectable.d.ts +18 -0
- package/core/interfaces/i_selectable.ts +34 -0
- package/core/interfaces/i_selectable_toolbox_item.d.ts +42 -0
- package/core/interfaces/i_selectable_toolbox_item.ts +64 -0
- package/core/interfaces/i_serializer.d.ts +42 -0
- package/core/interfaces/i_serializer.ts +65 -0
- package/core/interfaces/i_styleable.d.ts +21 -0
- package/core/interfaces/i_styleable.ts +35 -0
- package/core/interfaces/i_toolbox.d.ts +85 -0
- package/core/interfaces/i_toolbox.ts +127 -0
- package/core/interfaces/i_toolbox_item.d.ts +62 -0
- package/core/interfaces/i_toolbox_item.ts +84 -0
- package/core/internal_constants.d.ts +40 -0
- package/core/{internal_constants.js → internal_constants.ts} +13 -18
- package/core/keyboard_nav/ast_node.d.ts +239 -0
- package/core/keyboard_nav/{ast_node.js → ast_node.ts} +207 -231
- package/core/keyboard_nav/basic_cursor.d.ts +88 -0
- package/core/keyboard_nav/{basic_cursor.js → basic_cursor.ts} +55 -66
- package/core/keyboard_nav/cursor.d.ts +41 -0
- package/core/keyboard_nav/{cursor.js → cursor.ts} +25 -35
- package/core/keyboard_nav/marker.d.ts +58 -0
- package/core/keyboard_nav/{marker.js → marker.ts} +36 -55
- package/core/keyboard_nav/tab_navigate_cursor.d.ts +19 -0
- package/core/keyboard_nav/{tab_navigate_cursor.js → tab_navigate_cursor.ts} +11 -15
- package/core/main.d.ts +11 -0
- package/core/main.js +303 -0
- package/core/marker_manager.d.ts +85 -0
- package/core/marker_manager.ts +181 -0
- package/core/menu.d.ts +149 -0
- package/core/{menu.js → menu.ts} +141 -174
- package/core/menuitem.d.ts +118 -0
- package/core/menuitem.ts +240 -0
- package/core/metrics_manager.d.ts +201 -0
- package/core/{metrics_manager.js → metrics_manager.ts} +117 -156
- package/core/msg.d.ts +9 -0
- package/core/{msg.js → msg.ts} +4 -8
- package/core/mutator.d.ts +128 -0
- package/core/{mutator.js → mutator.ts} +196 -211
- package/core/names.d.ts +124 -0
- package/core/names.ts +267 -0
- package/core/options.d.ts +137 -0
- package/core/{options.js → options.ts} +147 -173
- package/core/positionable_helpers.d.ts +88 -0
- package/core/{positionable_helpers.js → positionable_helpers.ts} +63 -70
- package/core/procedures.d.ts +108 -0
- package/core/{procedures.js → procedures.ts} +143 -152
- package/core/registry.d.ts +137 -0
- package/core/registry.ts +339 -0
- package/core/rendered_connection.d.ts +191 -0
- package/core/{rendered_connection.js → rendered_connection.ts} +164 -184
- package/core/renderers/common/block_rendering.d.ts +114 -0
- package/core/renderers/common/block_rendering.ts +164 -0
- package/core/renderers/common/constants.d.ts +458 -0
- package/core/renderers/common/constants.ts +1124 -0
- package/core/renderers/common/debug.d.ts +28 -0
- package/core/renderers/common/{debug.js → debug.ts} +14 -20
- package/core/renderers/common/debugger.d.ts +120 -0
- package/core/renderers/common/{debugger.js → debugger.ts} +100 -124
- package/core/renderers/common/drawer.d.ts +132 -0
- package/core/renderers/common/{drawer.js → drawer.ts} +112 -137
- package/core/renderers/common/i_path_object.d.ts +117 -0
- package/core/renderers/common/i_path_object.ts +161 -0
- package/core/renderers/common/info.d.ts +194 -0
- package/core/renderers/common/{info.js → info.ts} +165 -222
- package/core/renderers/common/marker_svg.d.ts +220 -0
- package/core/renderers/common/marker_svg.ts +680 -0
- package/core/renderers/common/path_object.d.ts +146 -0
- package/core/renderers/common/path_object.ts +272 -0
- package/core/renderers/common/renderer.d.ts +157 -0
- package/core/renderers/common/renderer.ts +271 -0
- package/core/renderers/geras/constants.d.ts +23 -0
- package/core/renderers/geras/constants.ts +61 -0
- package/core/renderers/geras/drawer.d.ts +43 -0
- package/core/renderers/geras/{drawer.js → drawer.ts} +40 -84
- package/core/renderers/geras/geras.d.ts +11 -0
- package/core/renderers/geras/geras.ts +37 -0
- package/core/renderers/geras/highlight_constants.d.ts +108 -0
- package/core/renderers/geras/{highlight_constants.js → highlight_constants.ts} +107 -69
- package/core/renderers/geras/highlighter.d.ts +98 -0
- package/core/renderers/geras/{highlighter.js → highlighter.ts} +81 -86
- package/core/renderers/geras/info.d.ts +45 -0
- package/core/renderers/geras/{info.js → info.ts} +61 -99
- package/core/renderers/geras/measurables/inline_input.d.ts +23 -0
- package/core/renderers/geras/measurables/inline_input.ts +51 -0
- package/core/renderers/geras/measurables/statement_input.d.ts +23 -0
- package/core/renderers/geras/measurables/statement_input.ts +50 -0
- package/core/renderers/geras/path_object.d.ts +47 -0
- package/core/renderers/geras/{path_object.js → path_object.ts} +46 -74
- package/core/renderers/geras/renderer.d.ts +69 -0
- package/core/renderers/geras/renderer.ts +126 -0
- package/core/renderers/measurables/base.d.ts +27 -0
- package/core/renderers/measurables/base.ts +53 -0
- package/core/renderers/measurables/bottom_row.d.ts +61 -0
- package/core/renderers/measurables/bottom_row.ts +120 -0
- package/core/renderers/measurables/connection.d.ts +25 -0
- package/core/renderers/measurables/connection.ts +52 -0
- package/core/renderers/measurables/external_value_input.d.ts +27 -0
- package/core/renderers/measurables/external_value_input.ts +65 -0
- package/core/renderers/measurables/field.d.ts +30 -0
- package/core/renderers/measurables/field.ts +63 -0
- package/core/renderers/measurables/hat.d.ts +21 -0
- package/core/renderers/measurables/{hat.js → hat.ts} +12 -14
- package/core/renderers/measurables/icon.d.ts +26 -0
- package/core/renderers/measurables/{icon.js → icon.ts} +14 -18
- package/core/renderers/measurables/in_row_spacer.d.ts +21 -0
- package/core/renderers/measurables/in_row_spacer.ts +44 -0
- package/core/renderers/measurables/inline_input.d.ts +24 -0
- package/core/renderers/measurables/{inline_input.js → inline_input.ts} +22 -26
- package/core/renderers/measurables/input_connection.d.ts +29 -0
- package/core/renderers/measurables/input_connection.ts +66 -0
- package/core/renderers/measurables/input_row.d.ts +30 -0
- package/core/renderers/measurables/{input_row.js → input_row.ts} +24 -31
- package/core/renderers/measurables/jagged_edge.d.ts +20 -0
- package/core/renderers/measurables/{jagged_edge.js → jagged_edge.ts} +10 -13
- package/core/renderers/measurables/next_connection.d.ts +23 -0
- package/core/renderers/measurables/next_connection.ts +47 -0
- package/core/renderers/measurables/output_connection.d.ts +26 -0
- package/core/renderers/measurables/output_connection.ts +56 -0
- package/core/renderers/measurables/previous_connection.d.ts +23 -0
- package/core/renderers/measurables/previous_connection.ts +47 -0
- package/core/renderers/measurables/round_corner.d.ts +21 -0
- package/core/renderers/measurables/round_corner.ts +49 -0
- package/core/renderers/measurables/row.d.ts +141 -0
- package/core/renderers/measurables/row.ts +225 -0
- package/core/renderers/measurables/spacer_row.d.ts +29 -0
- package/core/renderers/measurables/spacer_row.ts +55 -0
- package/core/renderers/measurables/square_corner.d.ts +21 -0
- package/core/renderers/measurables/square_corner.ts +47 -0
- package/core/renderers/measurables/statement_input.d.ts +22 -0
- package/core/renderers/measurables/{statement_input.js → statement_input.ts} +14 -18
- package/core/renderers/measurables/top_row.d.ts +56 -0
- package/core/renderers/measurables/top_row.ts +122 -0
- package/core/renderers/measurables/types.d.ts +235 -0
- package/core/renderers/measurables/types.ts +332 -0
- package/core/renderers/minimalist/constants.d.ts +14 -0
- package/core/renderers/minimalist/{constants.js → constants.ts} +5 -10
- package/core/renderers/minimalist/drawer.d.ts +21 -0
- package/core/renderers/minimalist/drawer.ts +38 -0
- package/core/renderers/minimalist/info.d.ts +30 -0
- package/core/renderers/minimalist/info.ts +52 -0
- package/core/renderers/minimalist/minimalist.d.ts +6 -0
- package/core/renderers/minimalist/minimalist.ts +22 -0
- package/core/renderers/minimalist/renderer.d.ts +41 -0
- package/core/renderers/minimalist/renderer.ts +71 -0
- package/core/renderers/thrasos/info.d.ts +40 -0
- package/core/renderers/thrasos/{info.js → info.ts} +66 -67
- package/core/renderers/thrasos/renderer.d.ts +25 -0
- package/core/renderers/thrasos/renderer.ts +48 -0
- package/core/renderers/thrasos/thrasos.d.ts +4 -0
- package/core/renderers/thrasos/thrasos.ts +20 -0
- package/core/renderers/zelos/constants.d.ts +186 -0
- package/core/renderers/zelos/{constants.js → constants.ts} +294 -441
- package/core/renderers/zelos/drawer.d.ts +47 -0
- package/core/renderers/zelos/{drawer.js → drawer.ts} +73 -95
- package/core/renderers/zelos/info.d.ts +88 -0
- package/core/renderers/zelos/{info.js → info.ts} +111 -142
- package/core/renderers/zelos/marker_svg.d.ts +46 -0
- package/core/renderers/zelos/marker_svg.ts +151 -0
- package/core/renderers/zelos/measurables/bottom_row.d.ts +27 -0
- package/core/renderers/zelos/measurables/bottom_row.ts +53 -0
- package/core/renderers/zelos/measurables/inputs.d.ts +23 -0
- package/core/renderers/zelos/measurables/{inputs.js → inputs.ts} +14 -15
- package/core/renderers/zelos/measurables/row_elements.d.ts +21 -0
- package/core/renderers/zelos/measurables/row_elements.ts +45 -0
- package/core/renderers/zelos/measurables/top_row.d.ts +29 -0
- package/core/renderers/zelos/measurables/{top_row.js → top_row.ts} +14 -27
- package/core/renderers/zelos/path_object.d.ts +77 -0
- package/core/renderers/zelos/path_object.ts +215 -0
- package/core/renderers/zelos/renderer.d.ts +74 -0
- package/core/renderers/zelos/renderer.ts +142 -0
- package/core/renderers/zelos/zelos.d.ts +12 -0
- package/core/renderers/zelos/zelos.ts +39 -0
- package/core/scrollbar.d.ts +277 -0
- package/core/{scrollbar.js → scrollbar.ts} +307 -328
- package/core/scrollbar_pair.d.ts +105 -0
- package/core/{scrollbar_pair.js → scrollbar_pair.ts} +71 -79
- package/core/serialization/blocks.d.ts +98 -0
- package/core/serialization/{blocks.js → blocks.ts} +229 -228
- package/core/serialization/exceptions.d.ts +73 -0
- package/core/serialization/exceptions.ts +98 -0
- package/core/serialization/priorities.d.ts +15 -0
- package/core/serialization/{priorities.js → priorities.ts} +4 -10
- package/core/serialization/registry.d.ts +20 -0
- package/core/serialization/{registry.js → registry.ts} +11 -13
- package/core/serialization/variables.d.ts +14 -0
- package/core/serialization/{variables.js → variables.ts} +30 -32
- package/core/serialization/workspaces.d.ts +28 -0
- package/core/serialization/{workspaces.js → workspaces.ts} +30 -27
- package/core/shortcut_items.d.ts +61 -0
- package/core/{shortcut_items.js → shortcut_items.ts} +121 -157
- package/core/shortcut_registry.d.ts +151 -0
- package/core/shortcut_registry.ts +355 -0
- package/core/sprites.d.ts +19 -0
- package/core/{sprites.js → sprites.ts} +4 -6
- package/core/theme/classic.d.ts +12 -0
- package/core/theme/{classic.js → classic.ts} +5 -7
- package/core/theme/themes.d.ts +8 -0
- package/core/theme/themes.ts +22 -0
- package/core/theme/zelos.d.ts +11 -0
- package/core/theme/{zelos.js → zelos.ts} +4 -7
- package/core/theme.d.ts +142 -0
- package/core/theme.ts +221 -0
- package/core/theme_manager.d.ts +81 -0
- package/core/theme_manager.ts +186 -0
- package/core/toolbox/category.d.ts +239 -0
- package/core/toolbox/category.ts +679 -0
- package/core/toolbox/collapsible_category.d.ts +91 -0
- package/core/toolbox/collapsible_category.ts +273 -0
- package/core/toolbox/separator.d.ts +39 -0
- package/core/toolbox/separator.ts +105 -0
- package/core/toolbox/toolbox.d.ts +352 -0
- package/core/toolbox/{toolbox.js → toolbox.ts} +316 -432
- package/core/toolbox/toolbox_item.d.ts +85 -0
- package/core/toolbox/toolbox_item.ts +147 -0
- package/core/tooltip.d.ts +126 -0
- package/core/{tooltip.js → tooltip.ts} +136 -214
- package/core/touch.d.ts +121 -0
- package/core/touch.ts +306 -0
- package/core/touch_gesture.d.ts +115 -0
- package/core/{touch_gesture.js → touch_gesture.ts} +87 -125
- package/core/trashcan.d.ts +195 -0
- package/core/{trashcan.js → trashcan.ts} +226 -312
- package/core/utils/aria.d.ts +67 -0
- package/core/utils/{aria.js → aria.ts} +47 -61
- package/core/utils/array.d.ts +14 -0
- package/core/utils/{array.js → array.ts} +10 -12
- package/core/utils/colour.d.ts +103 -0
- package/core/utils/{colour.js → colour.ts} +60 -72
- package/core/utils/coordinate.d.ts +72 -0
- package/core/utils/coordinate.ts +124 -0
- package/core/utils/deprecation.d.ts +17 -0
- package/core/utils/{deprecation.js → deprecation.ts} +11 -11
- package/core/utils/dom.d.ts +165 -0
- package/core/utils/{dom.js → dom.ts} +125 -147
- package/core/utils/idgenerator.d.ts +25 -0
- package/core/utils/{idgenerator.js → idgenerator.ts} +15 -18
- package/core/utils/keycodes.d.ts +137 -0
- package/core/utils/keycodes.ts +169 -0
- package/core/utils/math.d.ts +30 -0
- package/core/utils/{math.js → math.ts} +17 -19
- package/core/utils/metrics.d.ts +64 -0
- package/core/utils/metrics.ts +97 -0
- package/core/utils/object.d.ts +35 -0
- package/core/utils/{object.js → object.ts} +30 -26
- package/core/utils/parsing.d.ts +50 -0
- package/core/utils/{parsing.js → parsing.ts} +50 -50
- package/core/utils/rect.d.ts +38 -0
- package/core/utils/{rect.js → rect.ts} +18 -31
- package/core/utils/sentinel.d.ts +11 -0
- package/core/utils/{sentinel.js → sentinel.ts} +3 -5
- package/core/utils/size.d.ts +27 -0
- package/core/utils/{size.js → size.ts} +12 -26
- package/core/utils/string.d.ts +55 -0
- package/core/utils/{string.js → string.ts} +64 -61
- package/core/utils/style.d.ts +127 -0
- package/core/utils/{style.js → style.ts} +102 -92
- package/core/utils/svg.d.ts +68 -0
- package/core/utils/svg.ts +88 -0
- package/core/utils/svg_math.d.ts +70 -0
- package/core/utils/{svg_math.js → svg_math.ts} +72 -71
- package/core/utils/svg_paths.d.ts +101 -0
- package/core/utils/{svg_paths.js → svg_paths.ts} +56 -65
- package/core/utils/toolbox.d.ts +193 -0
- package/core/utils/toolbox.ts +433 -0
- package/core/utils/useragent.d.ts +33 -0
- package/core/utils/useragent.ts +135 -0
- package/core/utils/xml.d.ts +52 -0
- package/core/utils/{xml.js → xml.ts} +26 -36
- package/core/utils.d.ts +217 -0
- package/core/utils.ts +428 -0
- package/core/variable_map.d.ts +141 -0
- package/core/{variable_map.js → variable_map.ts} +131 -149
- package/core/variable_model.d.ts +40 -0
- package/core/variable_model.ts +82 -0
- package/core/variables.d.ts +181 -0
- package/core/{variables.js → variables.ts} +206 -188
- package/core/variables_dynamic.d.ts +38 -0
- package/core/{variables_dynamic.js → variables_dynamic.ts} +47 -43
- package/core/warning.d.ts +50 -0
- package/core/{warning.js → warning.ts} +52 -66
- package/core/widgetdiv.d.ts +69 -0
- package/core/widgetdiv.ts +257 -0
- package/core/workspace.d.ts +386 -0
- package/core/workspace.ts +801 -0
- package/core/workspace_audio.d.ts +47 -0
- package/core/{workspace_audio.js → workspace_audio.ts} +47 -60
- package/core/workspace_comment.d.ts +170 -0
- package/core/workspace_comment.ts +398 -0
- package/core/workspace_comment_svg.d.ts +329 -0
- package/core/{workspace_comment_svg.js → workspace_comment_svg.ts} +347 -444
- package/core/workspace_drag_surface_svg.d.ts +68 -0
- package/core/{workspace_drag_surface_svg.js → workspace_drag_surface_svg.ts} +75 -82
- package/core/workspace_dragger.d.ts +48 -0
- package/core/workspace_dragger.ts +104 -0
- package/core/workspace_svg.d.ts +920 -0
- package/core/{workspace_svg.js → workspace_svg.ts} +855 -935
- package/core/xml.d.ts +117 -0
- package/core/{xml.js → xml.ts} +306 -326
- package/core/zoom_controls.d.ts +130 -0
- package/core/{zoom_controls.js → zoom_controls.ts} +185 -251
- package/core.d.ts +1 -3
- package/core.js +1 -2
- package/dart.d.ts +0 -3
- package/dart_compressed.js +387 -99
- package/dart_compressed.js.map +1 -1
- package/generators/dart/all.js +2 -0
- package/generators/dart/colour.js +1 -1
- package/generators/dart/lists.js +1 -1
- package/generators/dart/logic.js +1 -1
- package/generators/dart/loops.js +1 -1
- package/generators/dart/math.js +1 -1
- package/generators/dart/procedures.js +1 -1
- package/generators/dart/text.js +1 -1
- package/generators/dart/variables.js +1 -1
- package/generators/dart/variables_dynamic.js +1 -1
- package/generators/dart.js +1 -2
- package/generators/javascript/all.js +2 -0
- package/generators/javascript/colour.js +1 -1
- package/generators/javascript/lists.js +1 -1
- package/generators/javascript/logic.js +1 -1
- package/generators/javascript/loops.js +1 -1
- package/generators/javascript/math.js +4 -4
- package/generators/javascript/procedures.js +1 -1
- package/generators/javascript/text.js +2 -2
- package/generators/javascript/variables.js +1 -1
- package/generators/javascript/variables_dynamic.js +1 -1
- package/generators/javascript.js +1 -3
- package/generators/lua/all.js +2 -0
- package/generators/lua/colour.js +1 -1
- package/generators/lua/lists.js +1 -1
- package/generators/lua/logic.js +1 -1
- package/generators/lua/loops.js +1 -1
- package/generators/lua/math.js +1 -1
- package/generators/lua/procedures.js +1 -1
- package/generators/lua/text.js +1 -1
- package/generators/lua/variables.js +1 -1
- package/generators/lua/variables_dynamic.js +1 -1
- package/generators/lua.js +1 -2
- package/generators/php/all.js +2 -0
- package/generators/php/colour.js +1 -1
- package/generators/php/lists.js +1 -2
- package/generators/php/logic.js +1 -1
- package/generators/php/loops.js +1 -1
- package/generators/php/math.js +1 -1
- package/generators/php/procedures.js +1 -1
- package/generators/php/text.js +1 -1
- package/generators/php/variables.js +1 -1
- package/generators/php/variables_dynamic.js +1 -1
- package/generators/php.js +1 -2
- package/generators/python/all.js +2 -0
- package/generators/python/colour.js +3 -3
- package/generators/python/lists.js +1 -1
- package/generators/python/logic.js +1 -1
- package/generators/python/loops.js +4 -7
- package/generators/python/math.js +1 -1
- package/generators/python/procedures.js +1 -1
- package/generators/python/text.js +1 -1
- package/generators/python/variables.js +1 -1
- package/generators/python/variables_dynamic.js +1 -1
- package/generators/python.js +1 -2
- package/index.d.ts +2 -8
- package/javascript.d.ts +0 -3
- package/javascript_compressed.js +314 -104
- package/javascript_compressed.js.map +1 -1
- package/lua.d.ts +0 -3
- package/lua_compressed.js +399 -81
- package/lua_compressed.js.map +1 -1
- package/msg/ab.js +421 -421
- package/msg/ace.js +421 -421
- package/msg/af.js +421 -421
- package/msg/am.js +421 -421
- package/msg/ar.js +421 -421
- package/msg/ast.js +421 -421
- package/msg/az.js +421 -421
- package/msg/ba.js +421 -421
- package/msg/bcc.js +421 -421
- package/msg/be-tarask.js +421 -421
- package/msg/be.js +421 -421
- package/msg/bg.js +421 -421
- package/msg/bn.js +421 -421
- package/msg/br.js +421 -421
- package/msg/bs.js +421 -421
- package/msg/ca.js +421 -421
- package/msg/cdo.js +421 -421
- package/msg/cs.js +421 -421
- package/msg/da.js +421 -421
- package/msg/de.js +421 -421
- package/msg/diq.js +421 -421
- package/msg/dty.js +421 -421
- package/msg/ee.js +421 -421
- package/msg/el.js +421 -421
- package/msg/en-gb.js +421 -421
- package/msg/en.js +421 -421
- package/msg/eo.js +421 -421
- package/msg/es.js +421 -421
- package/msg/et.js +421 -421
- package/msg/eu.js +421 -421
- package/msg/fa.js +421 -421
- package/msg/fi.js +421 -421
- package/msg/fo.js +421 -421
- package/msg/fr.js +421 -421
- package/msg/frr.js +421 -421
- package/msg/gl.js +421 -421
- package/msg/gn.js +421 -421
- package/msg/gor.js +421 -421
- package/msg/ha.js +421 -421
- package/msg/hak.js +421 -421
- package/msg/he.js +421 -421
- package/msg/hi.js +421 -421
- package/msg/hr.js +421 -421
- package/msg/hrx.js +421 -421
- package/msg/hu.js +421 -421
- package/msg/hy.js +421 -421
- package/msg/ia.js +421 -421
- package/msg/id.js +421 -421
- package/msg/ig.js +421 -421
- package/msg/inh.js +421 -421
- package/msg/is.js +421 -421
- package/msg/it.js +421 -421
- package/msg/ja.js +421 -421
- package/msg/ka.js +421 -421
- package/msg/kab.js +421 -421
- package/msg/kbd-cyrl.js +421 -421
- package/msg/km.js +421 -421
- package/msg/kn.js +421 -421
- package/msg/ko.js +421 -421
- package/msg/ksh.js +421 -421
- package/msg/ku-latn.js +421 -421
- package/msg/ky.js +421 -421
- package/msg/la.js +421 -421
- package/msg/lb.js +421 -421
- package/msg/lki.js +421 -421
- package/msg/lo.js +421 -421
- package/msg/lrc.js +421 -421
- package/msg/lt.js +421 -421
- package/msg/lv.js +421 -421
- package/msg/mg.js +421 -421
- package/msg/mk.js +421 -421
- package/msg/ml.js +421 -421
- package/msg/mnw.js +421 -421
- package/msg/ms.js +421 -421
- package/msg/my.js +421 -421
- package/msg/mzn.js +421 -421
- package/msg/nb.js +421 -421
- package/msg/ne.js +421 -421
- package/msg/nl.js +421 -421
- package/msg/oc.js +421 -421
- package/msg/olo.js +421 -421
- package/msg/pa.js +421 -421
- package/msg/pl.js +421 -421
- package/msg/pms.js +421 -421
- package/msg/ps.js +421 -421
- package/msg/pt-br.js +421 -421
- package/msg/pt.js +421 -421
- package/msg/ro.js +421 -421
- package/msg/ru.js +421 -421
- package/msg/sc.js +421 -421
- package/msg/sco.js +421 -421
- package/msg/sd.js +421 -421
- package/msg/shn.js +421 -421
- package/msg/si.js +421 -421
- package/msg/sk.js +421 -421
- package/msg/skr-arab.js +421 -421
- package/msg/sl.js +421 -421
- package/msg/smn.js +421 -421
- package/msg/sq.js +421 -421
- package/msg/sr-latn.js +421 -421
- package/msg/sr.js +421 -421
- package/msg/sv.js +421 -421
- package/msg/sw.js +421 -421
- package/msg/ta.js +421 -421
- package/msg/tcy.js +421 -421
- package/msg/te.js +421 -421
- package/msg/th.js +421 -421
- package/msg/ti.js +421 -421
- package/msg/tl.js +421 -421
- package/msg/tlh.js +421 -421
- package/msg/tr.js +421 -421
- package/msg/ug-arab.js +421 -421
- package/msg/uk.js +421 -421
- package/msg/ur.js +421 -421
- package/msg/uz.js +421 -421
- package/msg/vi.js +421 -421
- package/msg/xmf.js +421 -421
- package/msg/yo.js +421 -421
- package/msg/yue.js +421 -421
- package/msg/zgh.js +421 -421
- package/msg/zh-hans.js +421 -421
- package/msg/zh-hant.js +421 -421
- package/package.json +5 -5
- package/php.d.ts +0 -3
- package/php_compressed.js +322 -93
- package/php_compressed.js.map +1 -1
- package/python.d.ts +0 -3
- package/python_compressed.js +237 -90
- package/python_compressed.js.map +1 -1
- package/blockly.d.ts +0 -26127
- package/core/blockly_options.js +0 -28
- package/core/bubble_dragger.js +0 -298
- package/core/clipboard.js +0 -80
- package/core/component_manager.js +0 -263
- package/core/contextmenu_items.js +0 -651
- package/core/contextmenu_registry.js +0 -178
- package/core/delete_area.js +0 -87
- package/core/dialog.js +0 -107
- package/core/drag_target.js +0 -98
- package/core/events/events.js +0 -147
- package/core/events/events_abstract.js +0 -133
- package/core/events/events_block_base.js +0 -70
- package/core/events/events_block_drag.js +0 -89
- package/core/events/events_bubble_open.js +0 -90
- package/core/events/events_comment_base.js +0 -121
- package/core/events/events_marker_move.js +0 -110
- package/core/events/events_selected.js +0 -83
- package/core/events/events_toolbox_item_select.js +0 -84
- package/core/events/events_trashcan_open.js +0 -73
- package/core/events/events_var_base.js +0 -70
- package/core/events/events_viewport.js +0 -107
- package/core/events/workspace_events.js +0 -93
- package/core/field_angle.js +0 -591
- package/core/field_checkbox.js +0 -255
- package/core/field_colour.js +0 -717
- package/core/field_image.js +0 -304
- package/core/field_label.js +0 -149
- package/core/field_label_serializable.js +0 -80
- package/core/field_textinput.js +0 -619
- package/core/flyout_button.js +0 -356
- package/core/grid.js +0 -226
- package/core/icon.js +0 -225
- package/core/input.js +0 -335
- package/core/interfaces/i_ast_node_location_svg.js +0 -45
- package/core/interfaces/i_ast_node_location_with_block.js +0 -41
- package/core/interfaces/i_autohideable.js +0 -40
- package/core/interfaces/i_block_dragger.js +0 -66
- package/core/interfaces/i_bounded_element.js +0 -45
- package/core/interfaces/i_bubble.js +0 -95
- package/core/interfaces/i_collapsible_toolbox_item.js +0 -53
- package/core/interfaces/i_connection_checker.js +0 -104
- package/core/interfaces/i_contextmenu.js +0 -32
- package/core/interfaces/i_copyable.js +0 -49
- package/core/interfaces/i_delete_area.js +0 -50
- package/core/interfaces/i_drag_target.js +0 -88
- package/core/interfaces/i_flyout.js +0 -201
- package/core/interfaces/i_keyboard_accessible.js +0 -38
- package/core/interfaces/i_metrics_manager.js +0 -154
- package/core/interfaces/i_positionable.js +0 -51
- package/core/interfaces/i_selectable.js +0 -51
- package/core/interfaces/i_selectable_toolbox_item.js +0 -73
- package/core/interfaces/i_serializer.js +0 -77
- package/core/interfaces/i_styleable.js +0 -39
- package/core/interfaces/i_toolbox.js +0 -142
- package/core/interfaces/i_toolbox_item.js +0 -85
- package/core/marker_manager.js +0 -213
- package/core/menuitem.js +0 -292
- package/core/names.js +0 -293
- package/core/registry.js +0 -384
- package/core/renderers/common/block_rendering.js +0 -170
- package/core/renderers/common/constants.js +0 -1250
- package/core/renderers/common/i_path_object.js +0 -162
- package/core/renderers/common/marker_svg.js +0 -721
- package/core/renderers/common/path_object.js +0 -283
- package/core/renderers/common/renderer.js +0 -305
- package/core/renderers/geras/constants.js +0 -73
- package/core/renderers/geras/geras.js +0 -36
- package/core/renderers/geras/measurables/inline_input.js +0 -58
- package/core/renderers/geras/measurables/statement_input.js +0 -57
- package/core/renderers/geras/renderer.js +0 -149
- package/core/renderers/measurables/base.js +0 -64
- package/core/renderers/measurables/bottom_row.js +0 -138
- package/core/renderers/measurables/connection.js +0 -56
- package/core/renderers/measurables/external_value_input.js +0 -70
- package/core/renderers/measurables/field.js +0 -71
- package/core/renderers/measurables/in_row_spacer.js +0 -47
- package/core/renderers/measurables/input_connection.js +0 -75
- package/core/renderers/measurables/next_connection.js +0 -50
- package/core/renderers/measurables/output_connection.js +0 -61
- package/core/renderers/measurables/previous_connection.js +0 -50
- package/core/renderers/measurables/round_corner.js +0 -52
- package/core/renderers/measurables/row.js +0 -247
- package/core/renderers/measurables/spacer_row.js +0 -69
- package/core/renderers/measurables/square_corner.js +0 -50
- package/core/renderers/measurables/top_row.js +0 -143
- package/core/renderers/measurables/types.js +0 -353
- package/core/renderers/minimalist/drawer.js +0 -42
- package/core/renderers/minimalist/info.js +0 -54
- package/core/renderers/minimalist/minimalist.js +0 -26
- package/core/renderers/minimalist/renderer.js +0 -80
- package/core/renderers/thrasos/renderer.js +0 -53
- package/core/renderers/thrasos/thrasos.js +0 -22
- package/core/renderers/zelos/marker_svg.js +0 -179
- package/core/renderers/zelos/measurables/bottom_row.js +0 -66
- package/core/renderers/zelos/measurables/row_elements.js +0 -46
- package/core/renderers/zelos/path_object.js +0 -247
- package/core/renderers/zelos/renderer.js +0 -147
- package/core/renderers/zelos/zelos.js +0 -38
- package/core/serialization/exceptions.js +0 -144
- package/core/shortcut_registry.js +0 -366
- package/core/theme/themes.js +0 -23
- package/core/theme.js +0 -228
- package/core/theme_manager.js +0 -211
- package/core/toolbox/category.js +0 -751
- package/core/toolbox/collapsible_category.js +0 -311
- package/core/toolbox/separator.js +0 -133
- package/core/toolbox/toolbox_item.js +0 -173
- package/core/touch.js +0 -285
- package/core/utils/coordinate.js +0 -138
- package/core/utils/global.js +0 -41
- package/core/utils/keycodes.js +0 -172
- package/core/utils/metrics.js +0 -154
- package/core/utils/svg.js +0 -186
- package/core/utils/toolbox.js +0 -459
- package/core/utils/useragent.js +0 -197
- package/core/utils.js +0 -383
- package/core/variable_model.js +0 -96
- package/core/widgetdiv.js +0 -290
- package/core/workspace.js +0 -836
- package/core/workspace_comment.js +0 -400
- package/core/workspace_dragger.js +0 -115
|
@@ -7,24 +7,22 @@
|
|
|
7
7
|
/**
|
|
8
8
|
* @fileoverview Object representing a scrollbar.
|
|
9
9
|
*/
|
|
10
|
-
'use strict';
|
|
11
10
|
|
|
12
11
|
/**
|
|
13
12
|
* Object representing a scrollbar.
|
|
14
13
|
* @class
|
|
15
14
|
*/
|
|
16
|
-
goog
|
|
15
|
+
import * as goog from '../closure/goog/goog.js';
|
|
16
|
+
goog.declareModuleId('Blockly.Scrollbar');
|
|
17
17
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
/* eslint-disable-next-line no-unused-vars */
|
|
27
|
-
const {WorkspaceSvg} = goog.requireType('Blockly.WorkspaceSvg');
|
|
18
|
+
import * as browserEvents from './browser_events.js';
|
|
19
|
+
import * as Touch from './touch.js';
|
|
20
|
+
import {Coordinate} from './utils/coordinate.js';
|
|
21
|
+
import * as dom from './utils/dom.js';
|
|
22
|
+
import type {Metrics} from './utils/metrics.js';
|
|
23
|
+
import {Svg} from './utils/svg.js';
|
|
24
|
+
import * as svgMath from './utils/svg_math.js';
|
|
25
|
+
import type {WorkspaceSvg} from './workspace_svg.js';
|
|
28
26
|
|
|
29
27
|
|
|
30
28
|
/**
|
|
@@ -38,144 +36,105 @@ const {WorkspaceSvg} = goog.requireType('Blockly.WorkspaceSvg');
|
|
|
38
36
|
* look or behave like the system's scrollbars.
|
|
39
37
|
* @alias Blockly.Scrollbar
|
|
40
38
|
*/
|
|
41
|
-
class Scrollbar {
|
|
39
|
+
export class Scrollbar {
|
|
42
40
|
/**
|
|
43
|
-
*
|
|
44
|
-
*
|
|
45
|
-
* @param {boolean=} opt_pair True if scrollbar is part of a horiz/vert pair.
|
|
46
|
-
* @param {string=} opt_class A class to be applied to this scrollbar.
|
|
47
|
-
* @param {number=} opt_margin The margin to apply to this scrollbar.
|
|
41
|
+
* Width of vertical scrollbar or height of horizontal scrollbar in CSS
|
|
42
|
+
* pixels. Scrollbars should be larger on touch devices.
|
|
48
43
|
*/
|
|
49
|
-
|
|
50
|
-
/**
|
|
51
|
-
* The workspace this scrollbar is bound to.
|
|
52
|
-
* @type {!WorkspaceSvg}
|
|
53
|
-
* @private
|
|
54
|
-
*/
|
|
55
|
-
this.workspace_ = workspace;
|
|
56
|
-
/**
|
|
57
|
-
* Whether this scrollbar is part of a pair.
|
|
58
|
-
* @type {boolean}
|
|
59
|
-
* @private
|
|
60
|
-
*/
|
|
61
|
-
this.pair_ = opt_pair || false;
|
|
62
|
-
/**
|
|
63
|
-
* Whether this is a horizontal scrollbar.
|
|
64
|
-
* @type {boolean}
|
|
65
|
-
* @private
|
|
66
|
-
*/
|
|
67
|
-
this.horizontal_ = horizontal;
|
|
68
|
-
/**
|
|
69
|
-
* Margin around the scrollbar (between the scrollbar and the edge of the
|
|
70
|
-
* viewport in pixels).
|
|
71
|
-
* @type {number}
|
|
72
|
-
* @const
|
|
73
|
-
* @private
|
|
74
|
-
*/
|
|
75
|
-
this.margin_ = (opt_margin !== undefined) ?
|
|
76
|
-
opt_margin :
|
|
77
|
-
Scrollbar.DEFAULT_SCROLLBAR_MARGIN;
|
|
78
|
-
/**
|
|
79
|
-
* Previously recorded metrics from the workspace.
|
|
80
|
-
* @type {?Metrics}
|
|
81
|
-
* @private
|
|
82
|
-
*/
|
|
83
|
-
this.oldHostMetrics_ = null;
|
|
84
|
-
/**
|
|
85
|
-
* The ratio of handle position offset to workspace content displacement.
|
|
86
|
-
* @type {?number}
|
|
87
|
-
* @package
|
|
88
|
-
*/
|
|
89
|
-
this.ratio = null;
|
|
44
|
+
static scrollbarThickness = Touch.TOUCH_ENABLED ? 25 : 15;
|
|
90
45
|
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
this.origin_ = new Coordinate(0, 0);
|
|
46
|
+
/**
|
|
47
|
+
* Default margin around the scrollbar (between the scrollbar and the edge of
|
|
48
|
+
* the viewport in pixels).
|
|
49
|
+
* @internal
|
|
50
|
+
*/
|
|
51
|
+
static readonly DEFAULT_SCROLLBAR_MARGIN = 0.5;
|
|
52
|
+
private readonly pair_: boolean;
|
|
53
|
+
private readonly margin_: number;
|
|
100
54
|
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
* of the most recent drag. Units are CSS pixels, with (0, 0) at the top
|
|
104
|
-
* left of the browser window. For a horizontal scrollbar this is the x
|
|
105
|
-
* coordinate of the mouse down event; for a vertical scrollbar it's the y
|
|
106
|
-
* coordinate of the mouse down event.
|
|
107
|
-
* @type {number}
|
|
108
|
-
* @private
|
|
109
|
-
*/
|
|
110
|
-
this.startDragMouse_ = 0;
|
|
55
|
+
/** Previously recorded metrics from the workspace. */
|
|
56
|
+
private oldHostMetrics_: Metrics|null = null;
|
|
111
57
|
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
*/
|
|
119
|
-
this.scrollbarLength_ = 0;
|
|
58
|
+
/**
|
|
59
|
+
* The ratio of handle position offset to workspace content displacement.
|
|
60
|
+
* @internal
|
|
61
|
+
*/
|
|
62
|
+
ratio = 1;
|
|
63
|
+
private origin_: Coordinate;
|
|
120
64
|
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
65
|
+
/**
|
|
66
|
+
* The position of the mouse along this scrollbar's major axis at the start
|
|
67
|
+
* of the most recent drag. Units are CSS pixels, with (0, 0) at the top
|
|
68
|
+
* left of the browser window. For a horizontal scrollbar this is the x
|
|
69
|
+
* coordinate of the mouse down event; for a vertical scrollbar it's the y
|
|
70
|
+
* coordinate of the mouse down event.
|
|
71
|
+
*/
|
|
72
|
+
private startDragMouse_ = 0;
|
|
127
73
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
this.handlePosition_ = 0;
|
|
74
|
+
/**
|
|
75
|
+
* The length of the scrollbars (including the handle and the background),
|
|
76
|
+
* in CSS pixels. This is equivalent to scrollbar background length and the
|
|
77
|
+
* area within which the scrollbar handle can move.
|
|
78
|
+
*/
|
|
79
|
+
private scrollbarLength_ = 0;
|
|
135
80
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
* @private
|
|
139
|
-
*/
|
|
140
|
-
this.startDragHandle = 0;
|
|
81
|
+
/** The length of the scrollbar handle in CSS pixels. */
|
|
82
|
+
private handleLength_ = 0;
|
|
141
83
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
this.isVisible_ = true;
|
|
84
|
+
/**
|
|
85
|
+
* The offset of the start of the handle from the scrollbar position, in CSS
|
|
86
|
+
* pixels.
|
|
87
|
+
*/
|
|
88
|
+
private handlePosition_ = 0;
|
|
148
89
|
|
|
149
|
-
|
|
150
|
-
* Whether the workspace containing this scrollbar is visible.
|
|
151
|
-
* @type {boolean}
|
|
152
|
-
* @private
|
|
153
|
-
*/
|
|
154
|
-
this.containerVisible_ = true;
|
|
90
|
+
private startDragHandle = 0;
|
|
155
91
|
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
* @private
|
|
159
|
-
*/
|
|
160
|
-
this.svgBackground_ = null;
|
|
92
|
+
/** Whether the scrollbar handle is visible. */
|
|
93
|
+
private isVisible_ = true;
|
|
161
94
|
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
*/
|
|
166
|
-
this.svgHandle_ = null;
|
|
95
|
+
/** Whether the workspace containing this scrollbar is visible. */
|
|
96
|
+
private containerVisible_ = true;
|
|
97
|
+
private svgBackground_: SVGRectElement|null = null;
|
|
167
98
|
|
|
99
|
+
private svgHandle_: SVGRectElement|null = null;
|
|
100
|
+
|
|
101
|
+
private outerSvg_: SVGSVGElement|null = null;
|
|
102
|
+
|
|
103
|
+
private svgGroup_: SVGGElement|null = null;
|
|
104
|
+
position: Coordinate;
|
|
105
|
+
|
|
106
|
+
lengthAttribute_ = 'width';
|
|
107
|
+
positionAttribute_ = 'x';
|
|
108
|
+
onMouseDownBarWrapper_: AnyDuringMigration;
|
|
109
|
+
onMouseDownHandleWrapper_: AnyDuringMigration;
|
|
110
|
+
|
|
111
|
+
/**
|
|
112
|
+
* @param workspace Workspace to bind the scrollbar to.
|
|
113
|
+
* @param horizontal True if horizontal, false if vertical.
|
|
114
|
+
* @param opt_pair True if scrollbar is part of a horiz/vert pair.
|
|
115
|
+
* @param opt_class A class to be applied to this scrollbar.
|
|
116
|
+
* @param opt_margin The margin to apply to this scrollbar.
|
|
117
|
+
*/
|
|
118
|
+
constructor(
|
|
119
|
+
private workspace: WorkspaceSvg, private readonly horizontal: boolean,
|
|
120
|
+
opt_pair?: boolean, opt_class?: string, opt_margin?: number) {
|
|
121
|
+
/** Whether this scrollbar is part of a pair. */
|
|
122
|
+
this.pair_ = opt_pair || false;
|
|
168
123
|
/**
|
|
169
|
-
*
|
|
170
|
-
*
|
|
124
|
+
* Margin around the scrollbar (between the scrollbar and the edge of the
|
|
125
|
+
* viewport in pixels).
|
|
171
126
|
*/
|
|
172
|
-
this.
|
|
127
|
+
this.margin_ = opt_margin !== undefined ?
|
|
128
|
+
opt_margin :
|
|
129
|
+
Scrollbar.DEFAULT_SCROLLBAR_MARGIN;
|
|
173
130
|
|
|
174
131
|
/**
|
|
175
|
-
*
|
|
176
|
-
*
|
|
132
|
+
* The location of the origin of the workspace that the scrollbar is in,
|
|
133
|
+
* measured in CSS pixels relative to the injection div origin. This is
|
|
134
|
+
* usually (0, 0). When the scrollbar is in a flyout it may have a
|
|
135
|
+
* different origin.
|
|
177
136
|
*/
|
|
178
|
-
this.
|
|
137
|
+
this.origin_ = new Coordinate(0, 0);
|
|
179
138
|
|
|
180
139
|
this.createDom_(opt_class);
|
|
181
140
|
|
|
@@ -183,35 +142,42 @@ class Scrollbar {
|
|
|
183
142
|
* The upper left corner of the scrollbar's SVG group in CSS pixels relative
|
|
184
143
|
* to the scrollbar's origin. This is usually relative to the injection div
|
|
185
144
|
* origin.
|
|
186
|
-
* @
|
|
187
|
-
* @package
|
|
145
|
+
* @internal
|
|
188
146
|
*/
|
|
189
147
|
this.position = new Coordinate(0, 0);
|
|
190
148
|
|
|
191
149
|
// Store the thickness in a temp variable for readability.
|
|
192
150
|
const scrollbarThickness = Scrollbar.scrollbarThickness;
|
|
193
151
|
if (horizontal) {
|
|
194
|
-
this.svgBackground_
|
|
195
|
-
|
|
196
|
-
this.
|
|
197
|
-
this.svgHandle_
|
|
198
|
-
|
|
199
|
-
this.
|
|
200
|
-
this.positionAttribute_ = 'x';
|
|
152
|
+
this.svgBackground_!.setAttribute(
|
|
153
|
+
'height', scrollbarThickness.toString());
|
|
154
|
+
this.outerSvg_!.setAttribute('height', scrollbarThickness.toString());
|
|
155
|
+
this.svgHandle_!.setAttribute(
|
|
156
|
+
'height', (scrollbarThickness - 5).toString());
|
|
157
|
+
this.svgHandle_!.setAttribute('y', (2.5).toString());
|
|
201
158
|
} else {
|
|
202
|
-
this.svgBackground_
|
|
203
|
-
this.outerSvg_
|
|
204
|
-
this.svgHandle_
|
|
205
|
-
|
|
159
|
+
this.svgBackground_!.setAttribute('width', scrollbarThickness.toString());
|
|
160
|
+
this.outerSvg_!.setAttribute('width', scrollbarThickness.toString());
|
|
161
|
+
this.svgHandle_!.setAttribute(
|
|
162
|
+
'width', (scrollbarThickness - 5).toString());
|
|
163
|
+
// AnyDuringMigration because: Argument of type 'number' is not
|
|
164
|
+
// assignable to parameter of type 'string'.
|
|
165
|
+
this.svgHandle_!.setAttribute('x', (2.5).toString());
|
|
206
166
|
|
|
207
167
|
this.lengthAttribute_ = 'height';
|
|
208
168
|
this.positionAttribute_ = 'y';
|
|
209
169
|
}
|
|
210
170
|
const scrollbar = this;
|
|
171
|
+
// AnyDuringMigration because: Argument of type 'SVGRectElement | null' is
|
|
172
|
+
// not assignable to parameter of type 'EventTarget'.
|
|
211
173
|
this.onMouseDownBarWrapper_ = browserEvents.conditionalBind(
|
|
212
|
-
this.svgBackground_, 'mousedown', scrollbar,
|
|
174
|
+
this.svgBackground_ as AnyDuringMigration, 'mousedown', scrollbar,
|
|
175
|
+
scrollbar.onMouseDownBar_);
|
|
176
|
+
// AnyDuringMigration because: Argument of type 'SVGRectElement | null' is
|
|
177
|
+
// not assignable to parameter of type 'EventTarget'.
|
|
213
178
|
this.onMouseDownHandleWrapper_ = browserEvents.conditionalBind(
|
|
214
|
-
this.svgHandle_, 'mousedown', scrollbar,
|
|
179
|
+
this.svgHandle_ as AnyDuringMigration, 'mousedown', scrollbar,
|
|
180
|
+
scrollbar.onMouseDownHandle_);
|
|
215
181
|
}
|
|
216
182
|
|
|
217
183
|
/**
|
|
@@ -231,21 +197,21 @@ class Scrollbar {
|
|
|
231
197
|
this.svgGroup_ = null;
|
|
232
198
|
this.svgBackground_ = null;
|
|
233
199
|
if (this.svgHandle_) {
|
|
234
|
-
this.
|
|
200
|
+
this.workspace.getThemeManager().unsubscribe(this.svgHandle_);
|
|
235
201
|
this.svgHandle_ = null;
|
|
236
202
|
}
|
|
237
|
-
|
|
203
|
+
// AnyDuringMigration because: Type 'null' is not assignable to type
|
|
204
|
+
// 'WorkspaceSvg'.
|
|
205
|
+
this.workspace = null as AnyDuringMigration;
|
|
238
206
|
}
|
|
239
207
|
|
|
240
208
|
/**
|
|
241
209
|
* Constrain the handle's length within the minimum (0) and maximum
|
|
242
210
|
* (scrollbar background) values allowed for the scrollbar.
|
|
243
|
-
* @param
|
|
244
|
-
*
|
|
245
|
-
* @return {number} Constrained value, in CSS pixels.
|
|
246
|
-
* @private
|
|
211
|
+
* @param value Value that is potentially out of bounds, in CSS pixels.
|
|
212
|
+
* @return Constrained value, in CSS pixels.
|
|
247
213
|
*/
|
|
248
|
-
constrainHandleLength_(value) {
|
|
214
|
+
private constrainHandleLength_(value: number): number {
|
|
249
215
|
if (value <= 0 || isNaN(value)) {
|
|
250
216
|
value = 0;
|
|
251
217
|
} else {
|
|
@@ -257,23 +223,23 @@ class Scrollbar {
|
|
|
257
223
|
/**
|
|
258
224
|
* Set the length of the scrollbar's handle and change the SVG attribute
|
|
259
225
|
* accordingly.
|
|
260
|
-
* @param
|
|
261
|
-
* @private
|
|
226
|
+
* @param newLength The new scrollbar handle length in CSS pixels.
|
|
262
227
|
*/
|
|
263
|
-
setHandleLength_(newLength) {
|
|
228
|
+
private setHandleLength_(newLength: number) {
|
|
264
229
|
this.handleLength_ = newLength;
|
|
265
|
-
|
|
230
|
+
// AnyDuringMigration because: Argument of type 'number' is not assignable
|
|
231
|
+
// to parameter of type 'string'.
|
|
232
|
+
this.svgHandle_!.setAttribute(
|
|
233
|
+
this.lengthAttribute_, this.handleLength_ as AnyDuringMigration);
|
|
266
234
|
}
|
|
267
235
|
|
|
268
236
|
/**
|
|
269
237
|
* Constrain the handle's position within the minimum (0) and maximum values
|
|
270
238
|
* allowed for the scrollbar.
|
|
271
|
-
* @param
|
|
272
|
-
*
|
|
273
|
-
* @return {number} Constrained value, in CSS pixels.
|
|
274
|
-
* @private
|
|
239
|
+
* @param value Value that is potentially out of bounds, in CSS pixels.
|
|
240
|
+
* @return Constrained value, in CSS pixels.
|
|
275
241
|
*/
|
|
276
|
-
constrainHandlePosition_(value) {
|
|
242
|
+
private constrainHandlePosition_(value: number): number {
|
|
277
243
|
if (value <= 0 || isNaN(value)) {
|
|
278
244
|
value = 0;
|
|
279
245
|
} else {
|
|
@@ -288,55 +254,61 @@ class Scrollbar {
|
|
|
288
254
|
/**
|
|
289
255
|
* Set the offset of the scrollbar's handle from the scrollbar's position, and
|
|
290
256
|
* change the SVG attribute accordingly.
|
|
291
|
-
* @param
|
|
257
|
+
* @param newPosition The new scrollbar handle offset in CSS pixels.
|
|
292
258
|
*/
|
|
293
|
-
setHandlePosition(newPosition) {
|
|
259
|
+
setHandlePosition(newPosition: number) {
|
|
294
260
|
this.handlePosition_ = newPosition;
|
|
295
|
-
|
|
261
|
+
// AnyDuringMigration because: Argument of type 'number' is not assignable
|
|
262
|
+
// to parameter of type 'string'.
|
|
263
|
+
this.svgHandle_!.setAttribute(
|
|
264
|
+
this.positionAttribute_, this.handlePosition_ as AnyDuringMigration);
|
|
296
265
|
}
|
|
297
266
|
|
|
298
267
|
/**
|
|
299
268
|
* Set the size of the scrollbar's background and change the SVG attribute
|
|
300
269
|
* accordingly.
|
|
301
|
-
* @param
|
|
302
|
-
* @private
|
|
270
|
+
* @param newSize The new scrollbar background length in CSS pixels.
|
|
303
271
|
*/
|
|
304
|
-
setScrollbarLength_(newSize) {
|
|
272
|
+
private setScrollbarLength_(newSize: number) {
|
|
305
273
|
this.scrollbarLength_ = newSize;
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
274
|
+
// AnyDuringMigration because: Argument of type 'number' is not assignable
|
|
275
|
+
// to parameter of type 'string'.
|
|
276
|
+
this.outerSvg_!.setAttribute(
|
|
277
|
+
this.lengthAttribute_, this.scrollbarLength_ as AnyDuringMigration);
|
|
278
|
+
// AnyDuringMigration because: Argument of type 'number' is not assignable
|
|
279
|
+
// to parameter of type 'string'.
|
|
280
|
+
this.svgBackground_!.setAttribute(
|
|
281
|
+
this.lengthAttribute_, this.scrollbarLength_ as AnyDuringMigration);
|
|
309
282
|
}
|
|
310
283
|
|
|
311
284
|
/**
|
|
312
285
|
* Set the position of the scrollbar's SVG group in CSS pixels relative to the
|
|
313
286
|
* scrollbar's origin. This sets the scrollbar's location within the
|
|
314
287
|
* workspace.
|
|
315
|
-
* @param
|
|
316
|
-
* @param
|
|
317
|
-
* @
|
|
288
|
+
* @param x The new x coordinate.
|
|
289
|
+
* @param y The new y coordinate.
|
|
290
|
+
* @internal
|
|
318
291
|
*/
|
|
319
|
-
setPosition(x, y) {
|
|
292
|
+
setPosition(x: number, y: number) {
|
|
320
293
|
this.position.x = x;
|
|
321
294
|
this.position.y = y;
|
|
322
295
|
|
|
323
296
|
const tempX = this.position.x + this.origin_.x;
|
|
324
297
|
const tempY = this.position.y + this.origin_.y;
|
|
325
298
|
const transform = 'translate(' + tempX + 'px,' + tempY + 'px)';
|
|
326
|
-
dom.setCssTransform(
|
|
299
|
+
dom.setCssTransform(this.outerSvg_ as Element, transform);
|
|
327
300
|
}
|
|
328
301
|
|
|
329
302
|
/**
|
|
330
303
|
* Recalculate the scrollbar's location and its length.
|
|
331
|
-
* @param
|
|
332
|
-
*
|
|
333
|
-
* fetched from the host object.
|
|
304
|
+
* @param opt_metrics A data structure of from the describing all the required
|
|
305
|
+
* dimensions. If not provided, it will be fetched from the host object.
|
|
334
306
|
*/
|
|
335
|
-
resize(opt_metrics) {
|
|
307
|
+
resize(opt_metrics?: Metrics) {
|
|
336
308
|
// Determine the location, height and width of the host element.
|
|
337
309
|
let hostMetrics = opt_metrics;
|
|
338
310
|
if (!hostMetrics) {
|
|
339
|
-
hostMetrics = this.
|
|
311
|
+
hostMetrics = this.workspace.getMetrics();
|
|
340
312
|
if (!hostMetrics) {
|
|
341
313
|
// Host element is likely not visible.
|
|
342
314
|
return;
|
|
@@ -348,7 +320,7 @@ class Scrollbar {
|
|
|
348
320
|
return;
|
|
349
321
|
}
|
|
350
322
|
|
|
351
|
-
if (this.
|
|
323
|
+
if (this.horizontal) {
|
|
352
324
|
this.resizeHorizontal_(hostMetrics);
|
|
353
325
|
} else {
|
|
354
326
|
this.resizeVertical_(hostMetrics);
|
|
@@ -363,12 +335,11 @@ class Scrollbar {
|
|
|
363
335
|
/**
|
|
364
336
|
* Returns whether the a resizeView is necessary by comparing the passed
|
|
365
337
|
* hostMetrics with cached old host metrics.
|
|
366
|
-
* @param
|
|
367
|
-
*
|
|
368
|
-
* @return
|
|
369
|
-
* @private
|
|
338
|
+
* @param hostMetrics A data structure describing all the required dimensions,
|
|
339
|
+
* possibly fetched from the host object.
|
|
340
|
+
* @return Whether a resizeView is necessary.
|
|
370
341
|
*/
|
|
371
|
-
requiresViewResize_(hostMetrics) {
|
|
342
|
+
private requiresViewResize_(hostMetrics: Metrics): boolean {
|
|
372
343
|
if (!this.oldHostMetrics_) {
|
|
373
344
|
return true;
|
|
374
345
|
}
|
|
@@ -380,11 +351,10 @@ class Scrollbar {
|
|
|
380
351
|
|
|
381
352
|
/**
|
|
382
353
|
* Recalculate a horizontal scrollbar's location and length.
|
|
383
|
-
* @param
|
|
384
|
-
*
|
|
385
|
-
* @private
|
|
354
|
+
* @param hostMetrics A data structure describing all the required dimensions,
|
|
355
|
+
* possibly fetched from the host object.
|
|
386
356
|
*/
|
|
387
|
-
resizeHorizontal_(hostMetrics) {
|
|
357
|
+
private resizeHorizontal_(hostMetrics: Metrics) {
|
|
388
358
|
if (this.requiresViewResize_(hostMetrics)) {
|
|
389
359
|
this.resizeViewHorizontal(hostMetrics);
|
|
390
360
|
} else {
|
|
@@ -396,10 +366,10 @@ class Scrollbar {
|
|
|
396
366
|
* Recalculate a horizontal scrollbar's location on the screen and path
|
|
397
367
|
* length. This should be called when the layout or size of the window has
|
|
398
368
|
* changed.
|
|
399
|
-
* @param
|
|
400
|
-
*
|
|
369
|
+
* @param hostMetrics A data structure describing all the required dimensions,
|
|
370
|
+
* possibly fetched from the host object.
|
|
401
371
|
*/
|
|
402
|
-
resizeViewHorizontal(hostMetrics) {
|
|
372
|
+
resizeViewHorizontal(hostMetrics: Metrics) {
|
|
403
373
|
let viewSize = hostMetrics.viewWidth - this.margin_ * 2;
|
|
404
374
|
if (this.pair_) {
|
|
405
375
|
// Shorten the scrollbar to make room for the corner square.
|
|
@@ -408,7 +378,7 @@ class Scrollbar {
|
|
|
408
378
|
this.setScrollbarLength_(Math.max(0, viewSize));
|
|
409
379
|
|
|
410
380
|
let xCoordinate = hostMetrics.absoluteLeft + this.margin_;
|
|
411
|
-
if (this.pair_ && this.
|
|
381
|
+
if (this.pair_ && this.workspace.RTL) {
|
|
412
382
|
xCoordinate += Scrollbar.scrollbarThickness;
|
|
413
383
|
}
|
|
414
384
|
|
|
@@ -426,10 +396,10 @@ class Scrollbar {
|
|
|
426
396
|
/**
|
|
427
397
|
* Recalculate a horizontal scrollbar's location within its path and length.
|
|
428
398
|
* This should be called when the contents of the workspace have changed.
|
|
429
|
-
* @param
|
|
430
|
-
*
|
|
399
|
+
* @param hostMetrics A data structure describing all the required dimensions,
|
|
400
|
+
* possibly fetched from the host object.
|
|
431
401
|
*/
|
|
432
|
-
resizeContentHorizontal(hostMetrics) {
|
|
402
|
+
resizeContentHorizontal(hostMetrics: Metrics) {
|
|
433
403
|
if (hostMetrics.viewWidth >= hostMetrics.scrollWidth) {
|
|
434
404
|
// viewWidth is often greater than scrollWidth in flyouts and
|
|
435
405
|
// non-scrollable workspaces.
|
|
@@ -479,11 +449,10 @@ class Scrollbar {
|
|
|
479
449
|
|
|
480
450
|
/**
|
|
481
451
|
* Recalculate a vertical scrollbar's location and length.
|
|
482
|
-
* @param
|
|
483
|
-
*
|
|
484
|
-
* @private
|
|
452
|
+
* @param hostMetrics A data structure describing all the required dimensions,
|
|
453
|
+
* possibly fetched from the host object.
|
|
485
454
|
*/
|
|
486
|
-
resizeVertical_(hostMetrics) {
|
|
455
|
+
private resizeVertical_(hostMetrics: Metrics) {
|
|
487
456
|
if (this.requiresViewResize_(hostMetrics)) {
|
|
488
457
|
this.resizeViewVertical(hostMetrics);
|
|
489
458
|
} else {
|
|
@@ -494,10 +463,10 @@ class Scrollbar {
|
|
|
494
463
|
/**
|
|
495
464
|
* Recalculate a vertical scrollbar's location on the screen and path length.
|
|
496
465
|
* This should be called when the layout or size of the window has changed.
|
|
497
|
-
* @param
|
|
498
|
-
*
|
|
466
|
+
* @param hostMetrics A data structure describing all the required dimensions,
|
|
467
|
+
* possibly fetched from the host object.
|
|
499
468
|
*/
|
|
500
|
-
resizeViewVertical(hostMetrics) {
|
|
469
|
+
resizeViewVertical(hostMetrics: Metrics) {
|
|
501
470
|
let viewSize = hostMetrics.viewHeight - this.margin_ * 2;
|
|
502
471
|
if (this.pair_) {
|
|
503
472
|
// Shorten the scrollbar to make room for the corner square.
|
|
@@ -505,7 +474,7 @@ class Scrollbar {
|
|
|
505
474
|
}
|
|
506
475
|
this.setScrollbarLength_(Math.max(0, viewSize));
|
|
507
476
|
|
|
508
|
-
const xCoordinate = this.
|
|
477
|
+
const xCoordinate = this.workspace.RTL ?
|
|
509
478
|
hostMetrics.absoluteLeft + this.margin_ :
|
|
510
479
|
hostMetrics.absoluteLeft + hostMetrics.viewWidth -
|
|
511
480
|
Scrollbar.scrollbarThickness - this.margin_;
|
|
@@ -521,10 +490,10 @@ class Scrollbar {
|
|
|
521
490
|
/**
|
|
522
491
|
* Recalculate a vertical scrollbar's location within its path and length.
|
|
523
492
|
* This should be called when the contents of the workspace have changed.
|
|
524
|
-
* @param
|
|
525
|
-
*
|
|
493
|
+
* @param hostMetrics A data structure describing all the required dimensions,
|
|
494
|
+
* possibly fetched from the host object.
|
|
526
495
|
*/
|
|
527
|
-
resizeContentVertical(hostMetrics) {
|
|
496
|
+
resizeContentVertical(hostMetrics: Metrics) {
|
|
528
497
|
if (hostMetrics.viewHeight >= hostMetrics.scrollHeight) {
|
|
529
498
|
// viewHeight is often greater than scrollHeight in flyouts and
|
|
530
499
|
// non-scrollable workspaces.
|
|
@@ -575,55 +544,70 @@ class Scrollbar {
|
|
|
575
544
|
/**
|
|
576
545
|
* Create all the DOM elements required for a scrollbar.
|
|
577
546
|
* The resulting widget is not sized.
|
|
578
|
-
* @param
|
|
579
|
-
* @private
|
|
547
|
+
* @param opt_class A class to be applied to this scrollbar.
|
|
580
548
|
*/
|
|
581
|
-
createDom_(opt_class) {
|
|
549
|
+
private createDom_(opt_class?: string) {
|
|
582
550
|
/* Create the following DOM:
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
551
|
+
<svg class="blocklyScrollbarHorizontal optionalClass">
|
|
552
|
+
<g>
|
|
553
|
+
<rect class="blocklyScrollbarBackground" />
|
|
554
|
+
<rect class="blocklyScrollbarHandle" rx="8" ry="8" />
|
|
555
|
+
</g>
|
|
556
|
+
</svg>
|
|
557
|
+
*/
|
|
590
558
|
let className =
|
|
591
|
-
'blocklyScrollbar' + (this.
|
|
559
|
+
'blocklyScrollbar' + (this.horizontal ? 'Horizontal' : 'Vertical');
|
|
592
560
|
if (opt_class) {
|
|
593
561
|
className += ' ' + opt_class;
|
|
594
562
|
}
|
|
595
|
-
this.outerSvg_ = dom.createSvgElement(Svg.SVG, {'class': className}
|
|
596
|
-
|
|
563
|
+
this.outerSvg_ = dom.createSvgElement(Svg.SVG, {'class': className});
|
|
564
|
+
// AnyDuringMigration because: Argument of type 'SVGSVGElement | null' is
|
|
565
|
+
// not assignable to parameter of type 'Element | undefined'.
|
|
566
|
+
this.svgGroup_ =
|
|
567
|
+
dom.createSvgElement(Svg.G, {}, this.outerSvg_ as AnyDuringMigration);
|
|
568
|
+
// AnyDuringMigration because: Argument of type 'SVGGElement | null' is not
|
|
569
|
+
// assignable to parameter of type 'Element | undefined'.
|
|
597
570
|
this.svgBackground_ = dom.createSvgElement(
|
|
598
|
-
Svg.RECT, {'class': 'blocklyScrollbarBackground'},
|
|
571
|
+
Svg.RECT, {'class': 'blocklyScrollbarBackground'},
|
|
572
|
+
this.svgGroup_ as AnyDuringMigration);
|
|
599
573
|
const radius = Math.floor((Scrollbar.scrollbarThickness - 5) / 2);
|
|
574
|
+
// AnyDuringMigration because: Argument of type 'SVGGElement | null' is not
|
|
575
|
+
// assignable to parameter of type 'Element | undefined'.
|
|
600
576
|
this.svgHandle_ = dom.createSvgElement(
|
|
601
577
|
Svg.RECT,
|
|
602
578
|
{'class': 'blocklyScrollbarHandle', 'rx': radius, 'ry': radius},
|
|
603
|
-
this.svgGroup_);
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
this.
|
|
607
|
-
this.svgHandle_, '
|
|
608
|
-
|
|
579
|
+
this.svgGroup_ as AnyDuringMigration);
|
|
580
|
+
// AnyDuringMigration because: Argument of type 'SVGRectElement | null' is
|
|
581
|
+
// not assignable to parameter of type 'Element'.
|
|
582
|
+
this.workspace.getThemeManager().subscribe(
|
|
583
|
+
this.svgHandle_ as AnyDuringMigration, 'scrollbarColour', 'fill');
|
|
584
|
+
// AnyDuringMigration because: Argument of type 'SVGRectElement | null' is
|
|
585
|
+
// not assignable to parameter of type 'Element'.
|
|
586
|
+
this.workspace.getThemeManager().subscribe(
|
|
587
|
+
this.svgHandle_ as AnyDuringMigration, 'scrollbarOpacity',
|
|
588
|
+
'fill-opacity');
|
|
589
|
+
// AnyDuringMigration because: Argument of type 'SVGSVGElement | null' is
|
|
590
|
+
// not assignable to parameter of type 'Element'.
|
|
591
|
+
dom.insertAfter(
|
|
592
|
+
this.outerSvg_ as AnyDuringMigration, this.workspace.getParentSvg());
|
|
609
593
|
}
|
|
610
594
|
|
|
611
595
|
/**
|
|
612
596
|
* Is the scrollbar visible. Non-paired scrollbars disappear when they aren't
|
|
613
597
|
* needed.
|
|
614
|
-
* @return
|
|
598
|
+
* @return True if visible.
|
|
615
599
|
*/
|
|
616
|
-
isVisible() {
|
|
600
|
+
isVisible(): boolean {
|
|
617
601
|
return this.isVisible_;
|
|
618
602
|
}
|
|
619
603
|
|
|
620
604
|
/**
|
|
621
605
|
* Set whether the scrollbar's container is visible and update
|
|
622
606
|
* display accordingly if visibility has changed.
|
|
623
|
-
* @param
|
|
607
|
+
* @param visible Whether the container is visible
|
|
624
608
|
*/
|
|
625
|
-
setContainerVisible(visible) {
|
|
626
|
-
const visibilityChanged =
|
|
609
|
+
setContainerVisible(visible: boolean) {
|
|
610
|
+
const visibilityChanged = visible !== this.containerVisible_;
|
|
627
611
|
|
|
628
612
|
this.containerVisible_ = visible;
|
|
629
613
|
if (visibilityChanged) {
|
|
@@ -634,10 +618,10 @@ class Scrollbar {
|
|
|
634
618
|
/**
|
|
635
619
|
* Set whether the scrollbar is visible.
|
|
636
620
|
* Only applies to non-paired scrollbars.
|
|
637
|
-
* @param
|
|
621
|
+
* @param visible True if visible.
|
|
638
622
|
*/
|
|
639
|
-
setVisible(visible) {
|
|
640
|
-
const visibilityChanged =
|
|
623
|
+
setVisible(visible: boolean) {
|
|
624
|
+
const visibilityChanged = visible !== this.isVisible();
|
|
641
625
|
|
|
642
626
|
// Ideally this would also apply to scrollbar pairs, but that's a bigger
|
|
643
627
|
// headache (due to interactions with the corner square).
|
|
@@ -665,20 +649,19 @@ class Scrollbar {
|
|
|
665
649
|
show = this.isVisible();
|
|
666
650
|
}
|
|
667
651
|
if (show) {
|
|
668
|
-
this.outerSvg_
|
|
652
|
+
this.outerSvg_!.setAttribute('display', 'block');
|
|
669
653
|
} else {
|
|
670
|
-
this.outerSvg_
|
|
654
|
+
this.outerSvg_!.setAttribute('display', 'none');
|
|
671
655
|
}
|
|
672
656
|
}
|
|
673
657
|
|
|
674
658
|
/**
|
|
675
659
|
* Scroll by one pageful.
|
|
676
660
|
* Called when scrollbar background is clicked.
|
|
677
|
-
* @param
|
|
678
|
-
* @private
|
|
661
|
+
* @param e Mouse down event.
|
|
679
662
|
*/
|
|
680
|
-
onMouseDownBar_(e) {
|
|
681
|
-
this.
|
|
663
|
+
private onMouseDownBar_(e: MouseEvent) {
|
|
664
|
+
this.workspace.markFocused();
|
|
682
665
|
Touch.clearTouchIdentifier(); // This is really a click.
|
|
683
666
|
this.cleanUp_();
|
|
684
667
|
if (browserEvents.isRightButton(e)) {
|
|
@@ -688,13 +671,11 @@ class Scrollbar {
|
|
|
688
671
|
return;
|
|
689
672
|
}
|
|
690
673
|
const mouseXY = browserEvents.mouseToSvg(
|
|
691
|
-
e, this.
|
|
692
|
-
|
|
693
|
-
const mouseLocation = this.horizontal_ ? mouseXY.x : mouseXY.y;
|
|
674
|
+
e, this.workspace.getParentSvg(), this.workspace.getInverseScreenCTM());
|
|
675
|
+
const mouseLocation = this.horizontal ? mouseXY.x : mouseXY.y;
|
|
694
676
|
|
|
695
|
-
const handleXY =
|
|
696
|
-
|
|
697
|
-
const handleStart = this.horizontal_ ? handleXY.x : handleXY.y;
|
|
677
|
+
const handleXY = svgMath.getInjectionDivXY(this.svgHandle_ as Element);
|
|
678
|
+
const handleStart = this.horizontal ? handleXY.x : handleXY.y;
|
|
698
679
|
let handlePosition = this.handlePosition_;
|
|
699
680
|
|
|
700
681
|
const pageLength = this.handleLength_ * 0.95;
|
|
@@ -716,11 +697,10 @@ class Scrollbar {
|
|
|
716
697
|
/**
|
|
717
698
|
* Start a dragging operation.
|
|
718
699
|
* Called when scrollbar handle is clicked.
|
|
719
|
-
* @param
|
|
720
|
-
* @private
|
|
700
|
+
* @param e Mouse down event.
|
|
721
701
|
*/
|
|
722
|
-
onMouseDownHandle_(e) {
|
|
723
|
-
this.
|
|
702
|
+
private onMouseDownHandle_(e: MouseEvent) {
|
|
703
|
+
this.workspace.markFocused();
|
|
724
704
|
this.cleanUp_();
|
|
725
705
|
if (browserEvents.isRightButton(e)) {
|
|
726
706
|
// Right-click.
|
|
@@ -734,25 +714,38 @@ class Scrollbar {
|
|
|
734
714
|
// Tell the workspace to setup its drag surface since it is about to move.
|
|
735
715
|
// onMouseMoveHandle will call onScroll which actually tells the workspace
|
|
736
716
|
// to move.
|
|
737
|
-
this.
|
|
717
|
+
this.workspace.setupDragSurface();
|
|
738
718
|
|
|
739
719
|
// Record the current mouse position.
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
720
|
+
// AnyDuringMigration because: Property 'clientY' does not exist on type
|
|
721
|
+
// 'Event'. AnyDuringMigration because: Property 'clientX' does not exist
|
|
722
|
+
// on type 'Event'.
|
|
723
|
+
this.startDragMouse_ = this.horizontal ? (e as AnyDuringMigration).clientX :
|
|
724
|
+
(e as AnyDuringMigration).clientY;
|
|
725
|
+
// AnyDuringMigration because: Property 'onMouseUpWrapper_' does not exist
|
|
726
|
+
// on type 'typeof Scrollbar'.
|
|
727
|
+
(Scrollbar as AnyDuringMigration).onMouseUpWrapper_ =
|
|
728
|
+
browserEvents.conditionalBind(
|
|
729
|
+
document, 'mouseup', this, this.onMouseUpHandle_);
|
|
730
|
+
// AnyDuringMigration because: Property 'onMouseMoveWrapper_' does not
|
|
731
|
+
// exist on type 'typeof Scrollbar'.
|
|
732
|
+
(Scrollbar as AnyDuringMigration).onMouseMoveWrapper_ =
|
|
733
|
+
browserEvents.conditionalBind(
|
|
734
|
+
document, 'mousemove', this, this.onMouseMoveHandle_);
|
|
745
735
|
e.stopPropagation();
|
|
746
736
|
e.preventDefault();
|
|
747
737
|
}
|
|
748
738
|
|
|
749
739
|
/**
|
|
750
740
|
* Drag the scrollbar's handle.
|
|
751
|
-
* @param
|
|
752
|
-
* @private
|
|
741
|
+
* @param e Mouse up event.
|
|
753
742
|
*/
|
|
754
|
-
onMouseMoveHandle_(e) {
|
|
755
|
-
|
|
743
|
+
private onMouseMoveHandle_(e: Event) {
|
|
744
|
+
// AnyDuringMigration because: Property 'clientY' does not exist on type
|
|
745
|
+
// 'Event'. AnyDuringMigration because: Property 'clientX' does not exist
|
|
746
|
+
// on type 'Event'.
|
|
747
|
+
const currentMouse = this.horizontal ? (e as AnyDuringMigration).clientX :
|
|
748
|
+
(e as AnyDuringMigration).clientY;
|
|
756
749
|
const mouseDelta = currentMouse - this.startDragMouse_;
|
|
757
750
|
const handlePosition = this.startDragHandle + mouseDelta;
|
|
758
751
|
// Position the bar.
|
|
@@ -760,13 +753,10 @@ class Scrollbar {
|
|
|
760
753
|
this.updateMetrics_();
|
|
761
754
|
}
|
|
762
755
|
|
|
763
|
-
/**
|
|
764
|
-
|
|
765
|
-
* @private
|
|
766
|
-
*/
|
|
767
|
-
onMouseUpHandle_() {
|
|
756
|
+
/** Release the scrollbar handle and reset state accordingly. */
|
|
757
|
+
private onMouseUpHandle_() {
|
|
768
758
|
// Tell the workspace to clean up now that the workspace is done moving.
|
|
769
|
-
this.
|
|
759
|
+
this.workspace.resetDragSurface();
|
|
770
760
|
Touch.clearTouchIdentifier();
|
|
771
761
|
this.cleanUp_();
|
|
772
762
|
}
|
|
@@ -774,26 +764,38 @@ class Scrollbar {
|
|
|
774
764
|
/**
|
|
775
765
|
* Hide chaff and stop binding to mouseup and mousemove events. Call this to
|
|
776
766
|
* wrap up loose ends associated with the scrollbar.
|
|
777
|
-
* @private
|
|
778
767
|
*/
|
|
779
|
-
cleanUp_() {
|
|
780
|
-
this.
|
|
781
|
-
|
|
782
|
-
|
|
783
|
-
|
|
768
|
+
private cleanUp_() {
|
|
769
|
+
this.workspace.hideChaff(true);
|
|
770
|
+
// AnyDuringMigration because: Property 'onMouseUpWrapper_' does not exist
|
|
771
|
+
// on type 'typeof Scrollbar'.
|
|
772
|
+
if ((Scrollbar as AnyDuringMigration).onMouseUpWrapper_) {
|
|
773
|
+
// AnyDuringMigration because: Property 'onMouseUpWrapper_' does not
|
|
774
|
+
// exist on type 'typeof Scrollbar'.
|
|
775
|
+
browserEvents.unbind((Scrollbar as AnyDuringMigration).onMouseUpWrapper_);
|
|
776
|
+
// AnyDuringMigration because: Property 'onMouseUpWrapper_' does not
|
|
777
|
+
// exist on type 'typeof Scrollbar'.
|
|
778
|
+
(Scrollbar as AnyDuringMigration).onMouseUpWrapper_ = null;
|
|
784
779
|
}
|
|
785
|
-
|
|
786
|
-
|
|
787
|
-
|
|
780
|
+
// AnyDuringMigration because: Property 'onMouseMoveWrapper_' does not
|
|
781
|
+
// exist on type 'typeof Scrollbar'.
|
|
782
|
+
if ((Scrollbar as AnyDuringMigration).onMouseMoveWrapper_) {
|
|
783
|
+
// AnyDuringMigration because: Property 'onMouseMoveWrapper_' does not
|
|
784
|
+
// exist on type 'typeof Scrollbar'.
|
|
785
|
+
browserEvents.unbind(
|
|
786
|
+
(Scrollbar as AnyDuringMigration).onMouseMoveWrapper_);
|
|
787
|
+
// AnyDuringMigration because: Property 'onMouseMoveWrapper_' does not
|
|
788
|
+
// exist on type 'typeof Scrollbar'.
|
|
789
|
+
(Scrollbar as AnyDuringMigration).onMouseMoveWrapper_ = null;
|
|
788
790
|
}
|
|
789
791
|
}
|
|
790
792
|
|
|
791
793
|
/**
|
|
792
794
|
* Helper to calculate the ratio of handle position to scrollbar view size.
|
|
793
|
-
* @return
|
|
794
|
-
* @
|
|
795
|
+
* @return Ratio.
|
|
796
|
+
* @internal
|
|
795
797
|
*/
|
|
796
|
-
getRatio_() {
|
|
798
|
+
getRatio_(): number {
|
|
797
799
|
const scrollHandleRange = this.scrollbarLength_ - this.handleLength_;
|
|
798
800
|
let ratio = this.handlePosition_ / scrollHandleRange;
|
|
799
801
|
if (isNaN(ratio)) {
|
|
@@ -805,27 +807,29 @@ class Scrollbar {
|
|
|
805
807
|
/**
|
|
806
808
|
* Updates workspace metrics based on new scroll ratio. Called when scrollbar
|
|
807
809
|
* is moved.
|
|
808
|
-
* @private
|
|
809
810
|
*/
|
|
810
|
-
updateMetrics_() {
|
|
811
|
+
private updateMetrics_() {
|
|
811
812
|
const ratio = this.getRatio_();
|
|
812
813
|
const xyRatio = {};
|
|
813
|
-
if (this.
|
|
814
|
-
|
|
814
|
+
if (this.horizontal) {
|
|
815
|
+
// AnyDuringMigration because: Property 'x' does not exist on type '{}'.
|
|
816
|
+
(xyRatio as AnyDuringMigration).x = ratio;
|
|
815
817
|
} else {
|
|
816
|
-
|
|
818
|
+
// AnyDuringMigration because: Property 'y' does not exist on type '{}'.
|
|
819
|
+
(xyRatio as AnyDuringMigration).y = ratio;
|
|
817
820
|
}
|
|
818
|
-
|
|
821
|
+
// AnyDuringMigration because: Argument of type '{}' is not assignable to
|
|
822
|
+
// parameter of type '{ x: number; y: number; }'.
|
|
823
|
+
this.workspace.setMetrics(xyRatio as AnyDuringMigration);
|
|
819
824
|
}
|
|
820
825
|
|
|
821
826
|
/**
|
|
822
827
|
* Set the scrollbar handle's position.
|
|
823
|
-
* @param
|
|
824
|
-
*
|
|
825
|
-
* @param {boolean=} updateMetrics Whether to update metrics on this set call.
|
|
828
|
+
* @param value The content displacement, relative to the view in pixels.
|
|
829
|
+
* @param updateMetrics Whether to update metrics on this set call.
|
|
826
830
|
* Defaults to true.
|
|
827
831
|
*/
|
|
828
|
-
set(value, updateMetrics) {
|
|
832
|
+
set(value: number, updateMetrics?: boolean) {
|
|
829
833
|
this.setHandlePosition(this.constrainHandlePosition_(value * this.ratio));
|
|
830
834
|
if (updateMetrics || updateMetrics === undefined) {
|
|
831
835
|
this.updateMetrics_();
|
|
@@ -837,26 +841,22 @@ class Scrollbar {
|
|
|
837
841
|
* relative to the injection div origin. This is for times when the scrollbar
|
|
838
842
|
* is used in an object whose origin isn't the same as the main workspace
|
|
839
843
|
* (e.g. in a flyout.)
|
|
840
|
-
* @param
|
|
841
|
-
*
|
|
842
|
-
* @param {number} y The y coordinate of the scrollbar's origin, in CSS
|
|
843
|
-
* pixels.
|
|
844
|
+
* @param x The x coordinate of the scrollbar's origin, in CSS pixels.
|
|
845
|
+
* @param y The y coordinate of the scrollbar's origin, in CSS pixels.
|
|
844
846
|
*/
|
|
845
|
-
setOrigin(x, y) {
|
|
847
|
+
setOrigin(x: number, y: number) {
|
|
846
848
|
this.origin_ = new Coordinate(x, y);
|
|
847
849
|
}
|
|
848
850
|
|
|
849
851
|
/**
|
|
850
|
-
* @param
|
|
851
|
-
*
|
|
852
|
-
*
|
|
853
|
-
*
|
|
854
|
-
* @return {boolean} Whether the two sets of metrics are equivalent.
|
|
855
|
-
* @private
|
|
852
|
+
* @param first An object containing computed measurements of a workspace.
|
|
853
|
+
* @param second Another object containing computed measurements of a
|
|
854
|
+
* workspace.
|
|
855
|
+
* @return Whether the two sets of metrics are equivalent.
|
|
856
856
|
*/
|
|
857
|
-
static metricsAreEquivalent_(first, second)
|
|
858
|
-
|
|
859
|
-
|
|
857
|
+
private static metricsAreEquivalent_(first: Metrics, second: Metrics):
|
|
858
|
+
boolean {
|
|
859
|
+
return first.viewWidth === second.viewWidth &&
|
|
860
860
|
first.viewHeight === second.viewHeight &&
|
|
861
861
|
first.viewLeft === second.viewLeft &&
|
|
862
862
|
first.viewTop === second.viewTop &&
|
|
@@ -865,27 +865,6 @@ class Scrollbar {
|
|
|
865
865
|
first.scrollWidth === second.scrollWidth &&
|
|
866
866
|
first.scrollHeight === second.scrollHeight &&
|
|
867
867
|
first.scrollLeft === second.scrollLeft &&
|
|
868
|
-
first.scrollTop === second.scrollTop
|
|
868
|
+
first.scrollTop === second.scrollTop;
|
|
869
869
|
}
|
|
870
870
|
}
|
|
871
|
-
|
|
872
|
-
/**
|
|
873
|
-
* Width of vertical scrollbar or height of horizontal scrollbar in CSS pixels.
|
|
874
|
-
* Scrollbars should be larger on touch devices.
|
|
875
|
-
*/
|
|
876
|
-
Scrollbar.scrollbarThickness = 15;
|
|
877
|
-
|
|
878
|
-
if (Touch.TOUCH_ENABLED) {
|
|
879
|
-
Scrollbar.scrollbarThickness = 25;
|
|
880
|
-
}
|
|
881
|
-
|
|
882
|
-
/**
|
|
883
|
-
* Default margin around the scrollbar (between the scrollbar and the edge of
|
|
884
|
-
* the viewport in pixels).
|
|
885
|
-
* @type {number}
|
|
886
|
-
* @const
|
|
887
|
-
* @package
|
|
888
|
-
*/
|
|
889
|
-
Scrollbar.DEFAULT_SCROLLBAR_MARGIN = 0.5;
|
|
890
|
-
|
|
891
|
-
exports.Scrollbar = Scrollbar;
|