blockly 9.0.0-beta.0 → 9.0.0-beta.1
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 +401 -405
- package/blockly_compressed.js +398 -402
- package/blockly_compressed.js.map +1 -1
- package/blocks.d.ts +0 -5
- package/blocks_compressed.js +3 -3
- package/blocks_compressed.js.map +1 -1
- package/closure/goog/base.d.ts +1 -0
- package/closure/goog/base_minimal.d.ts +1 -0
- package/closure/goog/goog.d.ts +1 -0
- package/core/any_aliases.d.ts +1 -0
- package/core/block.d.ts +145 -53
- package/core/block_animations.d.ts +5 -0
- package/core/block_drag_surface.d.ts +18 -5
- package/core/block_dragger.d.ts +20 -5
- package/core/block_svg.d.ts +89 -21
- package/core/blockly.d.ts +29 -8
- package/core/blockly_options.d.ts +2 -0
- package/core/blocks.d.ts +2 -0
- package/core/browser_events.d.ts +16 -7
- package/core/bubble.d.ts +42 -12
- package/core/bubble_dragger.d.ts +9 -2
- package/core/bump_objects.d.ts +6 -2
- package/core/clipboard.d.ts +6 -2
- package/core/comment.d.ts +13 -3
- package/core/common.d.ts +35 -9
- package/core/component_manager.d.ts +16 -6
- package/core/config.d.ts +1 -0
- package/core/connection.d.ts +48 -18
- package/core/connection_checker.d.ts +16 -7
- package/core/connection_db.d.ts +17 -6
- package/core/connection_type.d.ts +2 -0
- package/core/constants.d.ts +3 -0
- package/core/contextmenu.d.ts +15 -5
- package/core/contextmenu_items.d.ts +15 -0
- package/core/contextmenu_registry.d.ts +12 -7
- package/core/css.d.ts +3 -0
- package/core/delete_area.d.ts +5 -1
- package/core/dialog.d.ts +14 -7
- package/core/drag_target.d.ts +10 -2
- package/core/dropdowndiv.d.ts +42 -10
- package/core/events/events.d.ts +1 -0
- package/core/events/events_abstract.d.ts +10 -3
- package/core/events/events_block_base.d.ts +5 -1
- package/core/events/events_block_change.d.ts +10 -3
- package/core/events/events_block_create.d.ts +6 -1
- package/core/events/events_block_delete.d.ts +6 -1
- package/core/events/events_block_drag.d.ts +5 -1
- package/core/events/events_block_move.d.ts +10 -3
- package/core/events/events_bubble_open.d.ts +6 -2
- package/core/events/events_click.d.ts +5 -1
- package/core/events/events_comment_base.d.ts +6 -1
- package/core/events/events_comment_change.d.ts +8 -2
- package/core/events/events_comment_create.d.ts +6 -1
- package/core/events/events_comment_delete.d.ts +6 -1
- package/core/events/events_comment_move.d.ts +9 -2
- package/core/events/events_marker_move.d.ts +5 -1
- package/core/events/events_selected.d.ts +5 -1
- package/core/events/events_theme_change.d.ts +5 -1
- package/core/events/events_toolbox_item_select.d.ts +5 -1
- package/core/events/events_trashcan_open.d.ts +5 -1
- package/core/events/events_ui.d.ts +5 -1
- package/core/events/events_ui_base.d.ts +2 -0
- package/core/events/events_var_base.d.ts +5 -1
- package/core/events/events_var_create.d.ts +6 -1
- package/core/events/events_var_delete.d.ts +6 -1
- package/core/events/events_var_rename.d.ts +6 -1
- package/core/events/events_viewport.d.ts +5 -1
- package/core/events/utils.d.ts +50 -7
- package/core/events/workspace_events.d.ts +5 -1
- package/core/extensions.d.ts +14 -4
- package/core/field.d.ts +93 -34
- package/core/field_angle.d.ts +14 -3
- package/core/field_checkbox.d.ts +20 -7
- package/core/field_colour.d.ts +22 -6
- package/core/field_dropdown.d.ts +28 -8
- package/core/field_image.d.ts +15 -4
- package/core/field_label.d.ts +8 -2
- package/core/field_label_serializable.d.ts +4 -1
- package/core/field_multilineinput.d.ts +21 -6
- package/core/field_number.d.ts +22 -6
- package/core/field_registry.d.ts +8 -2
- package/core/field_textinput.d.ts +28 -8
- package/core/field_variable.d.ts +36 -13
- package/core/flyout_base.d.ts +70 -24
- package/core/flyout_button.d.ts +12 -5
- package/core/flyout_horizontal.d.ts +14 -6
- package/core/flyout_metrics_manager.d.ts +6 -3
- package/core/flyout_vertical.d.ts +14 -6
- package/core/generator.d.ts +39 -20
- package/core/gesture.d.ts +48 -13
- package/core/grid.d.ts +19 -15
- package/core/icon.d.ts +12 -3
- package/core/inject.d.ts +3 -1
- package/core/input.d.ts +25 -10
- package/core/input_types.d.ts +2 -0
- package/core/insertion_marker_manager.d.ts +27 -9
- package/core/interfaces/i_ast_node_location.d.ts +2 -0
- package/core/interfaces/i_ast_node_location_svg.d.ts +4 -0
- package/core/interfaces/i_ast_node_location_with_block.d.ts +4 -1
- package/core/interfaces/i_autohideable.d.ts +3 -0
- package/core/interfaces/i_block_dragger.d.ts +7 -1
- package/core/interfaces/i_bounded_element.d.ts +5 -1
- package/core/interfaces/i_bubble.d.ts +11 -2
- package/core/interfaces/i_collapsible_toolbox_item.d.ts +6 -2
- package/core/interfaces/i_component.d.ts +2 -0
- package/core/interfaces/i_connection_checker.d.ts +14 -6
- package/core/interfaces/i_contextmenu.d.ts +2 -0
- package/core/interfaces/i_copyable.d.ts +3 -1
- package/core/interfaces/i_deletable.d.ts +4 -1
- package/core/interfaces/i_delete_area.d.ts +4 -1
- package/core/interfaces/i_drag_target.d.ts +10 -2
- package/core/interfaces/i_draggable.d.ts +2 -0
- package/core/interfaces/i_flyout.d.ts +27 -11
- package/core/interfaces/i_keyboard_accessible.d.ts +4 -1
- package/core/interfaces/i_metrics_manager.d.ts +24 -12
- package/core/interfaces/i_movable.d.ts +4 -1
- package/core/interfaces/i_positionable.d.ts +5 -1
- package/core/interfaces/i_registrable.d.ts +2 -0
- package/core/interfaces/i_registrable_field.d.ts +2 -0
- package/core/interfaces/i_selectable.d.ts +2 -0
- package/core/interfaces/i_selectable_toolbox_item.d.ts +10 -3
- package/core/interfaces/i_serializer.d.ts +6 -1
- package/core/interfaces/i_styleable.d.ts +4 -0
- package/core/interfaces/i_toolbox.d.ts +17 -6
- package/core/interfaces/i_toolbox_item.d.ts +17 -7
- package/core/internal_constants.d.ts +6 -0
- package/core/keyboard_nav/ast_node.d.ts +55 -28
- package/core/keyboard_nav/basic_cursor.d.ts +20 -9
- package/core/keyboard_nav/cursor.d.ts +11 -5
- package/core/keyboard_nav/marker.d.ts +9 -2
- package/core/keyboard_nav/tab_navigate_cursor.d.ts +4 -1
- package/core/main.d.ts +1 -0
- package/core/marker_manager.d.ts +13 -2
- package/core/menu.d.ts +23 -5
- package/core/menuitem.d.ts +22 -7
- package/core/metrics_manager.d.ts +30 -15
- package/core/msg.d.ts +1 -0
- package/core/mutator.d.ts +19 -7
- package/core/names.d.ts +20 -8
- package/core/options.d.ts +12 -6
- package/core/positionable_helpers.d.ts +11 -3
- package/core/procedures.d.ts +27 -10
- package/core/registry.d.ts +19 -8
- package/core/rendered_connection.d.ts +28 -7
- package/core/renderers/common/block_rendering.d.ts +9 -2
- package/core/renderers/common/constants.d.ts +49 -17
- package/core/renderers/common/debug.d.ts +5 -1
- package/core/renderers/common/debugger.d.ts +12 -1
- package/core/renderers/common/drawer.d.ts +12 -0
- package/core/renderers/common/i_path_object.d.ts +15 -0
- package/core/renderers/common/info.d.ts +25 -8
- package/core/renderers/common/marker_svg.d.ts +35 -6
- package/core/renderers/common/path_object.d.ts +20 -0
- package/core/renderers/common/renderer.d.ts +33 -12
- package/core/renderers/geras/constants.d.ts +2 -0
- package/core/renderers/geras/drawer.d.ts +2 -0
- package/core/renderers/geras/geras.d.ts +3 -2
- package/core/renderers/geras/highlight_constants.d.ts +9 -6
- package/core/renderers/geras/highlighter.d.ts +12 -1
- package/core/renderers/geras/info.d.ts +4 -1
- package/core/renderers/geras/measurables/inline_input.d.ts +2 -0
- package/core/renderers/geras/measurables/statement_input.d.ts +2 -0
- package/core/renderers/geras/path_object.d.ts +4 -0
- package/core/renderers/geras/renderer.d.ts +16 -6
- package/core/renderers/measurables/base.d.ts +2 -0
- package/core/renderers/measurables/bottom_row.d.ts +9 -3
- package/core/renderers/measurables/connection.d.ts +2 -0
- package/core/renderers/measurables/external_value_input.d.ts +2 -1
- package/core/renderers/measurables/field.d.ts +2 -1
- package/core/renderers/measurables/hat.d.ts +2 -1
- package/core/renderers/measurables/icon.d.ts +3 -1
- package/core/renderers/measurables/in_row_spacer.d.ts +2 -1
- package/core/renderers/measurables/inline_input.d.ts +2 -1
- package/core/renderers/measurables/input_connection.d.ts +2 -0
- package/core/renderers/measurables/input_row.d.ts +4 -1
- package/core/renderers/measurables/jagged_edge.d.ts +2 -1
- package/core/renderers/measurables/next_connection.d.ts +2 -1
- package/core/renderers/measurables/output_connection.d.ts +2 -1
- package/core/renderers/measurables/previous_connection.d.ts +2 -1
- package/core/renderers/measurables/round_corner.d.ts +2 -1
- package/core/renderers/measurables/row.d.ts +27 -5
- package/core/renderers/measurables/spacer_row.d.ts +2 -1
- package/core/renderers/measurables/square_corner.d.ts +2 -1
- package/core/renderers/measurables/statement_input.d.ts +2 -1
- package/core/renderers/measurables/top_row.d.ts +7 -3
- package/core/renderers/measurables/types.d.ts +54 -25
- package/core/renderers/minimalist/constants.d.ts +2 -0
- package/core/renderers/minimalist/drawer.d.ts +2 -0
- package/core/renderers/minimalist/info.d.ts +4 -1
- package/core/renderers/minimalist/minimalist.d.ts +2 -1
- package/core/renderers/minimalist/renderer.d.ts +8 -3
- package/core/renderers/thrasos/info.d.ts +4 -1
- package/core/renderers/thrasos/renderer.d.ts +4 -1
- package/core/renderers/thrasos/thrasos.d.ts +2 -1
- package/core/renderers/zelos/constants.d.ts +11 -3
- package/core/renderers/zelos/drawer.d.ts +3 -0
- package/core/renderers/zelos/info.d.ts +10 -5
- package/core/renderers/zelos/marker_svg.d.ts +5 -0
- package/core/renderers/zelos/measurables/bottom_row.d.ts +2 -0
- package/core/renderers/zelos/measurables/inputs.d.ts +2 -0
- package/core/renderers/zelos/measurables/row_elements.d.ts +2 -0
- package/core/renderers/zelos/measurables/top_row.d.ts +2 -0
- package/core/renderers/zelos/path_object.d.ts +8 -1
- package/core/renderers/zelos/renderer.d.ts +14 -6
- package/core/renderers/zelos/zelos.d.ts +3 -2
- package/core/scrollbar.d.ts +41 -9
- package/core/scrollbar_pair.d.ts +20 -6
- package/core/serialization/blocks.d.ts +10 -4
- package/core/serialization/exceptions.d.ts +5 -0
- package/core/serialization/priorities.d.ts +3 -0
- package/core/serialization/registry.d.ts +3 -0
- package/core/serialization/variables.d.ts +2 -0
- package/core/serialization/workspaces.d.ts +4 -1
- package/core/shortcut_items.d.ts +10 -0
- package/core/shortcut_registry.d.ts +25 -9
- package/core/sprites.d.ts +2 -4
- package/core/theme/classic.d.ts +2 -0
- package/core/theme/themes.d.ts +1 -0
- package/core/theme/zelos.d.ts +2 -0
- package/core/theme.d.ts +14 -3
- package/core/theme_manager.d.ts +10 -1
- package/core/toolbox/category.d.ts +42 -15
- package/core/toolbox/collapsible_category.d.ts +10 -3
- package/core/toolbox/separator.d.ts +4 -1
- package/core/toolbox/toolbox.d.ts +70 -22
- package/core/toolbox/toolbox_item.d.ts +17 -7
- package/core/tooltip.d.ts +22 -1
- package/core/touch.d.ts +18 -6
- package/core/touch_gesture.d.ts +16 -2
- package/core/trashcan.d.ts +27 -6
- package/core/utils/aria.d.ts +4 -0
- package/core/utils/array.d.ts +4 -2
- package/core/utils/colour.d.ts +24 -13
- package/core/utils/coordinate.d.ts +18 -8
- package/core/utils/deprecation.d.ts +6 -4
- package/core/utils/dom.d.ts +32 -12
- package/core/utils/idgenerator.d.ts +13 -3
- package/core/utils/keycodes.d.ts +1 -0
- package/core/utils/math.d.ts +7 -3
- package/core/utils/metrics.d.ts +1 -0
- package/core/utils/object.d.ts +7 -2
- package/core/utils/parsing.d.ts +9 -4
- package/core/utils/rect.d.ts +5 -3
- package/core/utils/sentinel.d.ts +2 -0
- package/core/utils/size.d.ts +4 -2
- package/core/utils/string.d.ts +13 -6
- package/core/utils/style.d.ts +14 -33
- package/core/utils/svg.d.ts +5 -2
- package/core/utils/svg_math.d.ts +15 -7
- package/core/utils/svg_paths.d.ts +20 -10
- package/core/utils/toolbox.d.ts +26 -5
- package/core/utils/useragent.d.ts +1 -12
- package/core/utils/xml.d.ts +13 -5
- package/core/utils.d.ts +43 -21
- package/core/variable_map.d.ts +26 -9
- package/core/variable_model.d.ts +5 -2
- package/core/variables.d.ts +33 -18
- package/core/variables_dynamic.d.ts +25 -5
- package/core/warning.d.ts +8 -3
- package/core/widgetdiv.d.ts +15 -6
- package/core/workspace.d.ts +80 -30
- package/core/workspace_audio.d.ts +6 -0
- package/core/workspace_comment.d.ts +33 -11
- package/core/workspace_comment_svg.d.ts +52 -9
- package/core/workspace_drag_surface_svg.d.ts +20 -14
- package/core/workspace_dragger.d.ts +6 -0
- package/core/workspace_svg.d.ts +174 -62
- package/core/xml.d.ts +26 -11
- package/core/zoom_controls.d.ts +16 -6
- package/core.d.ts +0 -5
- package/dart.d.ts +0 -5
- package/dart_compressed.js.map +1 -1
- package/index.d.ts +2 -6
- package/javascript.d.ts +0 -5
- package/javascript_compressed.js.map +1 -1
- package/lua.d.ts +0 -5
- package/lua_compressed.js.map +1 -1
- package/package.json +6 -3
- package/php.d.ts +0 -5
- package/php_compressed.js.map +1 -1
- package/python.d.ts +0 -5
- package/python_compressed.js.map +1 -1
- package/blocks/blocks.js +0 -48
- package/blocks/colour.js +0 -121
- package/blocks/lists.js +0 -996
- package/blocks/logic.js +0 -665
- package/blocks/loops.js +0 -375
- package/blocks/math.js +0 -594
- package/blocks/procedures.js +0 -1196
- package/blocks/text.js +0 -1000
- package/blocks/variables.js +0 -176
- package/blocks/variables_dynamic.js +0 -192
- package/core/any_aliases.ts +0 -1
- package/core/block.ts +0 -2102
- package/core/block_animations.ts +0 -202
- package/core/block_drag_surface.ts +0 -237
- package/core/block_dragger.ts +0 -447
- package/core/block_svg.ts +0 -1758
- package/core/blockly.js +0 -890
- package/core/blockly.ts +0 -749
- package/core/blockly_options.ts +0 -81
- package/core/blocks.ts +0 -29
- package/core/browser_events.ts +0 -289
- package/core/bubble.ts +0 -892
- package/core/bubble_dragger.ts +0 -229
- package/core/bump_objects.ts +0 -182
- package/core/clipboard.ts +0 -91
- package/core/comment.ts +0 -398
- package/core/common.ts +0 -288
- package/core/component_manager.ts +0 -211
- package/core/config.ts +0 -80
- package/core/connection.ts +0 -692
- package/core/connection_checker.ts +0 -301
- package/core/connection_db.ts +0 -289
- package/core/connection_type.ts +0 -32
- package/core/constants.ts +0 -29
- package/core/contextmenu.ts +0 -363
- package/core/contextmenu_items.ts +0 -576
- package/core/contextmenu_registry.ts +0 -179
- package/core/css.ts +0 -560
- package/core/delete_area.ts +0 -82
- package/core/dialog.ts +0 -127
- package/core/drag_target.ts +0 -94
- package/core/dropdowndiv.ts +0 -683
- package/core/events/events.ts +0 -123
- package/core/events/events_abstract.ts +0 -112
- package/core/events/events_block_base.ts +0 -65
- package/core/events/events_block_change.ts +0 -176
- package/core/events/events_block_create.ts +0 -114
- package/core/events/events_block_delete.ts +0 -126
- package/core/events/events_block_drag.ts +0 -82
- package/core/events/events_block_move.ts +0 -206
- package/core/events/events_bubble_open.ts +0 -82
- package/core/events/events_click.ts +0 -84
- package/core/events/events_comment_base.ts +0 -107
- package/core/events/events_comment_change.ts +0 -108
- package/core/events/events_comment_create.ts +0 -82
- package/core/events/events_comment_delete.ts +0 -77
- package/core/events/events_comment_move.ts +0 -154
- package/core/events/events_marker_move.ts +0 -99
- package/core/events/events_selected.ts +0 -78
- package/core/events/events_theme_change.ts +0 -67
- package/core/events/events_toolbox_item_select.ts +0 -79
- package/core/events/events_trashcan_open.ts +0 -68
- package/core/events/events_ui.ts +0 -89
- package/core/events/events_ui_base.ts +0 -54
- package/core/events/events_var_base.ts +0 -65
- package/core/events/events_var_create.ts +0 -88
- package/core/events/events_var_delete.ts +0 -88
- package/core/events/events_var_rename.ts +0 -89
- package/core/events/events_viewport.ts +0 -100
- package/core/events/utils.ts +0 -529
- package/core/events/workspace_events.ts +0 -86
- package/core/extensions.ts +0 -504
- package/core/field.ts +0 -1206
- package/core/field_angle.ts +0 -563
- package/core/field_checkbox.ts +0 -243
- package/core/field_colour.ts +0 -632
- package/core/field_dropdown.ts +0 -773
- package/core/field_image.ts +0 -282
- package/core/field_label.ts +0 -152
- package/core/field_label_serializable.ts +0 -76
- package/core/field_multilineinput.ts +0 -466
- package/core/field_number.ts +0 -327
- package/core/field_registry.ts +0 -87
- package/core/field_textinput.ts +0 -591
- package/core/field_variable.ts +0 -545
- package/core/flyout_base.ts +0 -1165
- package/core/flyout_button.ts +0 -292
- package/core/flyout_horizontal.ts +0 -381
- package/core/flyout_metrics_manager.ts +0 -94
- package/core/flyout_vertical.ts +0 -384
- package/core/generator.ts +0 -539
- package/core/gesture.ts +0 -946
- package/core/grid.ts +0 -192
- package/core/icon.ts +0 -189
- package/core/inject.ts +0 -390
- package/core/input.ts +0 -309
- package/core/input_types.ts +0 -32
- package/core/insertion_marker_manager.ts +0 -788
- package/core/interfaces/i_ast_node_location.ts +0 -23
- package/core/interfaces/i_ast_node_location_svg.ts +0 -37
- package/core/interfaces/i_ast_node_location_with_block.ts +0 -38
- package/core/interfaces/i_autohideable.ts +0 -34
- package/core/interfaces/i_block_dragger.ts +0 -67
- package/core/interfaces/i_bounded_element.ts +0 -42
- package/core/interfaces/i_bubble.ts +0 -88
- package/core/interfaces/i_collapsible_toolbox_item.ts +0 -47
- package/core/interfaces/i_component.ts +0 -32
- package/core/interfaces/i_connection_checker.ts +0 -102
- package/core/interfaces/i_contextmenu.ts +0 -26
- package/core/interfaces/i_copyable.ts +0 -40
- package/core/interfaces/i_deletable.ts +0 -29
- package/core/interfaces/i_delete_area.ts +0 -46
- package/core/interfaces/i_drag_target.ts +0 -84
- package/core/interfaces/i_draggable.ts +0 -25
- package/core/interfaces/i_flyout.ts +0 -186
- package/core/interfaces/i_keyboard_accessible.ts +0 -35
- package/core/interfaces/i_metrics_manager.ts +0 -151
- package/core/interfaces/i_movable.ts +0 -29
- package/core/interfaces/i_positionable.ts +0 -50
- package/core/interfaces/i_registrable.ts +0 -25
- package/core/interfaces/i_registrable_field.ts +0 -31
- package/core/interfaces/i_selectable.ts +0 -34
- package/core/interfaces/i_selectable_toolbox_item.ts +0 -64
- package/core/interfaces/i_serializer.ts +0 -65
- package/core/interfaces/i_styleable.ts +0 -35
- package/core/interfaces/i_toolbox.ts +0 -127
- package/core/interfaces/i_toolbox_item.ts +0 -84
- package/core/internal_constants.ts +0 -67
- package/core/keyboard_nav/ast_node.ts +0 -717
- package/core/keyboard_nav/basic_cursor.ts +0 -214
- package/core/keyboard_nav/cursor.ts +0 -134
- package/core/keyboard_nav/marker.ts +0 -115
- package/core/keyboard_nav/tab_navigate_cursor.ts +0 -48
- package/core/main.js +0 -303
- package/core/marker_manager.ts +0 -181
- package/core/menu.ts +0 -449
- package/core/menuitem.ts +0 -240
- package/core/metrics_manager.ts +0 -456
- package/core/msg.ts +0 -20
- package/core/mutator.ts +0 -560
- package/core/names.ts +0 -267
- package/core/options.ts +0 -365
- package/core/positionable_helpers.ts +0 -181
- package/core/procedures.ts +0 -443
- package/core/registry.ts +0 -339
- package/core/rendered_connection.ts +0 -568
- package/core/renderers/common/block_rendering.ts +0 -164
- package/core/renderers/common/constants.ts +0 -1124
- package/core/renderers/common/debug.ts +0 -61
- package/core/renderers/common/debugger.ts +0 -433
- package/core/renderers/common/drawer.ts +0 -450
- package/core/renderers/common/i_path_object.ts +0 -161
- package/core/renderers/common/info.ts +0 -718
- package/core/renderers/common/marker_svg.ts +0 -680
- package/core/renderers/common/path_object.ts +0 -272
- package/core/renderers/common/renderer.ts +0 -271
- package/core/renderers/geras/constants.ts +0 -61
- package/core/renderers/geras/drawer.ts +0 -176
- package/core/renderers/geras/geras.ts +0 -37
- package/core/renderers/geras/highlight_constants.ts +0 -337
- package/core/renderers/geras/highlighter.ts +0 -306
- package/core/renderers/geras/info.ts +0 -450
- package/core/renderers/geras/measurables/inline_input.ts +0 -51
- package/core/renderers/geras/measurables/statement_input.ts +0 -50
- package/core/renderers/geras/path_object.ts +0 -138
- package/core/renderers/geras/renderer.ts +0 -126
- package/core/renderers/measurables/base.ts +0 -53
- package/core/renderers/measurables/bottom_row.ts +0 -120
- package/core/renderers/measurables/connection.ts +0 -52
- package/core/renderers/measurables/external_value_input.ts +0 -65
- package/core/renderers/measurables/field.ts +0 -63
- package/core/renderers/measurables/hat.ts +0 -48
- package/core/renderers/measurables/icon.ts +0 -54
- package/core/renderers/measurables/in_row_spacer.ts +0 -44
- package/core/renderers/measurables/inline_input.ts +0 -76
- package/core/renderers/measurables/input_connection.ts +0 -66
- package/core/renderers/measurables/input_row.ts +0 -82
- package/core/renderers/measurables/jagged_edge.ts +0 -43
- package/core/renderers/measurables/next_connection.ts +0 -47
- package/core/renderers/measurables/output_connection.ts +0 -56
- package/core/renderers/measurables/previous_connection.ts +0 -47
- package/core/renderers/measurables/round_corner.ts +0 -49
- package/core/renderers/measurables/row.ts +0 -225
- package/core/renderers/measurables/spacer_row.ts +0 -55
- package/core/renderers/measurables/square_corner.ts +0 -47
- package/core/renderers/measurables/statement_input.ts +0 -55
- package/core/renderers/measurables/top_row.ts +0 -122
- package/core/renderers/measurables/types.ts +0 -332
- package/core/renderers/minimalist/constants.ts +0 -32
- package/core/renderers/minimalist/drawer.ts +0 -38
- package/core/renderers/minimalist/info.ts +0 -52
- package/core/renderers/minimalist/minimalist.ts +0 -22
- package/core/renderers/minimalist/renderer.ts +0 -71
- package/core/renderers/thrasos/info.ts +0 -338
- package/core/renderers/thrasos/renderer.ts +0 -48
- package/core/renderers/thrasos/thrasos.ts +0 -20
- package/core/renderers/zelos/constants.ts +0 -858
- package/core/renderers/zelos/drawer.ts +0 -228
- package/core/renderers/zelos/info.ts +0 -593
- package/core/renderers/zelos/marker_svg.ts +0 -151
- package/core/renderers/zelos/measurables/bottom_row.ts +0 -53
- package/core/renderers/zelos/measurables/inputs.ts +0 -56
- package/core/renderers/zelos/measurables/row_elements.ts +0 -45
- package/core/renderers/zelos/measurables/top_row.ts +0 -58
- package/core/renderers/zelos/path_object.ts +0 -215
- package/core/renderers/zelos/renderer.ts +0 -142
- package/core/renderers/zelos/zelos.ts +0 -39
- package/core/scrollbar.ts +0 -870
- package/core/scrollbar_pair.ts +0 -321
- package/core/serialization/blocks.ts +0 -706
- package/core/serialization/exceptions.ts +0 -98
- package/core/serialization/priorities.ts +0 -32
- package/core/serialization/registry.ts +0 -43
- package/core/serialization/variables.ts +0 -96
- package/core/serialization/workspaces.ts +0 -106
- package/core/shortcut_items.ts +0 -266
- package/core/shortcut_registry.ts +0 -355
- package/core/sprites.ts +0 -29
- package/core/theme/classic.ts +0 -54
- package/core/theme/themes.ts +0 -22
- package/core/theme/zelos.ts +0 -91
- package/core/theme.ts +0 -221
- package/core/theme_manager.ts +0 -186
- package/core/toolbox/category.ts +0 -679
- package/core/toolbox/collapsible_category.ts +0 -273
- package/core/toolbox/separator.ts +0 -105
- package/core/toolbox/toolbox.ts +0 -1044
- package/core/toolbox/toolbox_item.ts +0 -147
- package/core/tooltip.ts +0 -463
- package/core/touch.ts +0 -306
- package/core/touch_gesture.ts +0 -295
- package/core/trashcan.ts +0 -671
- package/core/utils/aria.ts +0 -160
- package/core/utils/array.ts +0 -32
- package/core/utils/colour.ts +0 -276
- package/core/utils/coordinate.ts +0 -124
- package/core/utils/deprecation.ts +0 -41
- package/core/utils/dom.ts +0 -408
- package/core/utils/idgenerator.ts +0 -80
- package/core/utils/keycodes.ts +0 -169
- package/core/utils/math.ts +0 -61
- package/core/utils/metrics.ts +0 -97
- package/core/utils/object.ts +0 -95
- package/core/utils/parsing.ts +0 -261
- package/core/utils/rect.ts +0 -62
- package/core/utils/sentinel.ts +0 -23
- package/core/utils/size.ts +0 -51
- package/core/utils/string.ts +0 -308
- package/core/utils/style.ts +0 -306
- package/core/utils/svg.ts +0 -88
- package/core/utils/svg_math.ts +0 -269
- package/core/utils/svg_paths.ts +0 -140
- package/core/utils/toolbox.ts +0 -433
- package/core/utils/useragent.ts +0 -135
- package/core/utils/xml.ts +0 -97
- package/core/utils.ts +0 -428
- package/core/variable_map.ts +0 -392
- package/core/variable_model.ts +0 -82
- package/core/variables.ts +0 -596
- package/core/variables_dynamic.ts +0 -133
- package/core/warning.ts +0 -161
- package/core/widgetdiv.ts +0 -257
- package/core/workspace.ts +0 -801
- package/core/workspace_audio.ts +0 -156
- package/core/workspace_comment.ts +0 -398
- package/core/workspace_comment_svg.ts +0 -1127
- package/core/workspace_drag_surface_svg.ts +0 -187
- package/core/workspace_dragger.ts +0 -104
- package/core/workspace_svg.ts +0 -2655
- package/core/xml.ts +0 -1023
- package/core/zoom_controls.ts +0 -441
- package/generators/dart/all.js +0 -27
- package/generators/dart/colour.js +0 -105
- package/generators/dart/lists.js +0 -431
- package/generators/dart/logic.js +0 -123
- package/generators/dart/loops.js +0 -161
- package/generators/dart/math.js +0 -446
- package/generators/dart/procedures.js +0 -105
- package/generators/dart/text.js +0 -338
- package/generators/dart/variables.js +0 -32
- package/generators/dart/variables_dynamic.js +0 -21
- package/generators/dart.js +0 -303
- package/generators/javascript/all.js +0 -27
- package/generators/javascript/colour.js +0 -85
- package/generators/javascript/lists.js +0 -405
- package/generators/javascript/logic.js +0 -127
- package/generators/javascript/loops.js +0 -180
- package/generators/javascript/math.js +0 -401
- package/generators/javascript/procedures.js +0 -110
- package/generators/javascript/text.js +0 -371
- package/generators/javascript/variables.js +0 -32
- package/generators/javascript/variables_dynamic.js +0 -21
- package/generators/javascript.js +0 -322
- package/generators/lua/all.js +0 -27
- package/generators/lua/colour.js +0 -71
- package/generators/lua/lists.js +0 -348
- package/generators/lua/logic.js +0 -112
- package/generators/lua/loops.js +0 -168
- package/generators/lua/math.js +0 -406
- package/generators/lua/procedures.js +0 -106
- package/generators/lua/text.js +0 -327
- package/generators/lua/variables.js +0 -31
- package/generators/lua/variables_dynamic.js +0 -21
- package/generators/lua.js +0 -206
- package/generators/php/all.js +0 -27
- package/generators/php/colour.js +0 -81
- package/generators/php/lists.js +0 -481
- package/generators/php/logic.js +0 -119
- package/generators/php/loops.js +0 -161
- package/generators/php/math.js +0 -349
- package/generators/php/procedures.js +0 -125
- package/generators/php/text.js +0 -255
- package/generators/php/variables.js +0 -32
- package/generators/php/variables_dynamic.js +0 -21
- package/generators/php.js +0 -303
- package/generators/python/all.js +0 -27
- package/generators/python/colour.js +0 -67
- package/generators/python/lists.js +0 -346
- package/generators/python/logic.js +0 -120
- package/generators/python/loops.js +0 -206
- package/generators/python/math.js +0 -373
- package/generators/python/procedures.js +0 -129
- package/generators/python/text.js +0 -291
- package/generators/python/variables.js +0 -32
- package/generators/python/variables_dynamic.js +0 -21
- package/generators/python.js +0 -333
package/core/field_number.ts
DELETED
|
@@ -1,327 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2016 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* @fileoverview Number input field
|
|
9
|
-
*/
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Number input field
|
|
13
|
-
* @class
|
|
14
|
-
*/
|
|
15
|
-
import * as goog from '../closure/goog/goog.js';
|
|
16
|
-
goog.declareModuleId('Blockly.FieldNumber');
|
|
17
|
-
|
|
18
|
-
import {Field} from './field.js';
|
|
19
|
-
import * as fieldRegistry from './field_registry.js';
|
|
20
|
-
import {FieldTextInputConfig, FieldTextInput} from './field_textinput.js';
|
|
21
|
-
import * as aria from './utils/aria.js';
|
|
22
|
-
import type {Sentinel} from './utils/sentinel.js';
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
/**
|
|
26
|
-
* Class for an editable number field.
|
|
27
|
-
* @alias Blockly.FieldNumber
|
|
28
|
-
*/
|
|
29
|
-
export class FieldNumber extends FieldTextInput {
|
|
30
|
-
/** The minimum value this number field can contain. */
|
|
31
|
-
protected min_: number = -Infinity;
|
|
32
|
-
|
|
33
|
-
/** The maximum value this number field can contain. */
|
|
34
|
-
protected max_: number = Infinity;
|
|
35
|
-
|
|
36
|
-
/** The multiple to which this fields value is rounded. */
|
|
37
|
-
protected precision_ = 0;
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* The number of decimal places to allow, or null to allow any number of
|
|
41
|
-
* decimal digits.
|
|
42
|
-
*/
|
|
43
|
-
private decimalPlaces_: number|null = null;
|
|
44
|
-
|
|
45
|
-
/**
|
|
46
|
-
* Serializable fields are saved by the serializer, non-serializable fields
|
|
47
|
-
* are not. Editable fields should also be serializable.
|
|
48
|
-
*/
|
|
49
|
-
override SERIALIZABLE = true;
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* @param opt_value The initial value of the field. Should cast to a number.
|
|
53
|
-
* Defaults to 0. Also accepts Field.SKIP_SETUP if you wish to skip setup
|
|
54
|
-
* (only used by subclasses that want to handle configuration and setting
|
|
55
|
-
* the field value after their own constructors have run).
|
|
56
|
-
* @param opt_min Minimum value. Will only be used if opt_config is not
|
|
57
|
-
* provided.
|
|
58
|
-
* @param opt_max Maximum value. Will only be used if opt_config is not
|
|
59
|
-
* provided.
|
|
60
|
-
* @param opt_precision Precision for value. Will only be used if opt_config
|
|
61
|
-
* is not provided.
|
|
62
|
-
* @param opt_validator A function that is called to validate changes to the
|
|
63
|
-
* field's value. Takes in a number & returns a validated number, or null
|
|
64
|
-
* to abort the change.
|
|
65
|
-
* @param opt_config A map of options used to configure the field.
|
|
66
|
-
* See the [field creation documentation]{@link
|
|
67
|
-
* https://developers.google.com/blockly/guides/create-custom-blocks/fields/built-in-fields/number#creation}
|
|
68
|
-
* for a list of properties this parameter supports.
|
|
69
|
-
*/
|
|
70
|
-
constructor(
|
|
71
|
-
opt_value?: string|number|Sentinel, opt_min?: string|number|null,
|
|
72
|
-
opt_max?: string|number|null, opt_precision?: string|number|null,
|
|
73
|
-
opt_validator?: Function|null, opt_config?: FieldNumberConfig) {
|
|
74
|
-
// Pass SENTINEL so that we can define properties before value validation.
|
|
75
|
-
super(Field.SKIP_SETUP);
|
|
76
|
-
|
|
77
|
-
if (opt_value === Field.SKIP_SETUP) {
|
|
78
|
-
return;
|
|
79
|
-
}
|
|
80
|
-
if (opt_config) {
|
|
81
|
-
this.configure_(opt_config);
|
|
82
|
-
} else {
|
|
83
|
-
this.setConstraints(opt_min, opt_max, opt_precision);
|
|
84
|
-
}
|
|
85
|
-
this.setValue(opt_value);
|
|
86
|
-
if (opt_validator) {
|
|
87
|
-
this.setValidator(opt_validator);
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
/**
|
|
92
|
-
* Configure the field based on the given map of options.
|
|
93
|
-
* @param config A map of options to configure the field based on.
|
|
94
|
-
*/
|
|
95
|
-
protected override configure_(config: FieldNumberConfig) {
|
|
96
|
-
super.configure_(config);
|
|
97
|
-
this.setMinInternal_(config.min);
|
|
98
|
-
this.setMaxInternal_(config.max);
|
|
99
|
-
this.setPrecisionInternal_(config.precision);
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
/**
|
|
103
|
-
* Set the maximum, minimum and precision constraints on this field.
|
|
104
|
-
* Any of these properties may be undefined or NaN to be disabled.
|
|
105
|
-
* Setting precision (usually a power of 10) enforces a minimum step between
|
|
106
|
-
* values. That is, the user's value will rounded to the closest multiple of
|
|
107
|
-
* precision. The least significant digit place is inferred from the
|
|
108
|
-
* precision. Integers values can be enforces by choosing an integer
|
|
109
|
-
* precision.
|
|
110
|
-
* @param min Minimum value.
|
|
111
|
-
* @param max Maximum value.
|
|
112
|
-
* @param precision Precision for value.
|
|
113
|
-
*/
|
|
114
|
-
setConstraints(
|
|
115
|
-
min: number|string|undefined|null, max: number|string|undefined|null,
|
|
116
|
-
precision: number|string|undefined|null) {
|
|
117
|
-
this.setMinInternal_(min);
|
|
118
|
-
this.setMaxInternal_(max);
|
|
119
|
-
this.setPrecisionInternal_(precision);
|
|
120
|
-
this.setValue(this.getValue());
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
/**
|
|
124
|
-
* Sets the minimum value this field can contain. Updates the value to
|
|
125
|
-
* reflect.
|
|
126
|
-
* @param min Minimum value.
|
|
127
|
-
*/
|
|
128
|
-
setMin(min: number|string|undefined|null) {
|
|
129
|
-
this.setMinInternal_(min);
|
|
130
|
-
this.setValue(this.getValue());
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
/**
|
|
134
|
-
* Sets the minimum value this field can contain. Called internally to avoid
|
|
135
|
-
* value updates.
|
|
136
|
-
* @param min Minimum value.
|
|
137
|
-
*/
|
|
138
|
-
private setMinInternal_(min: number|string|undefined|null) {
|
|
139
|
-
if (min == null) {
|
|
140
|
-
this.min_ = -Infinity;
|
|
141
|
-
} else {
|
|
142
|
-
min = Number(min);
|
|
143
|
-
if (!isNaN(min)) {
|
|
144
|
-
this.min_ = min;
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
/**
|
|
150
|
-
* Returns the current minimum value this field can contain. Default is
|
|
151
|
-
* -Infinity.
|
|
152
|
-
* @return The current minimum value this field can contain.
|
|
153
|
-
*/
|
|
154
|
-
getMin(): number {
|
|
155
|
-
return this.min_;
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
/**
|
|
159
|
-
* Sets the maximum value this field can contain. Updates the value to
|
|
160
|
-
* reflect.
|
|
161
|
-
* @param max Maximum value.
|
|
162
|
-
*/
|
|
163
|
-
setMax(max: number|string|undefined|null) {
|
|
164
|
-
this.setMaxInternal_(max);
|
|
165
|
-
this.setValue(this.getValue());
|
|
166
|
-
}
|
|
167
|
-
|
|
168
|
-
/**
|
|
169
|
-
* Sets the maximum value this field can contain. Called internally to avoid
|
|
170
|
-
* value updates.
|
|
171
|
-
* @param max Maximum value.
|
|
172
|
-
*/
|
|
173
|
-
private setMaxInternal_(max: number|string|undefined|null) {
|
|
174
|
-
if (max == null) {
|
|
175
|
-
this.max_ = Infinity;
|
|
176
|
-
} else {
|
|
177
|
-
max = Number(max);
|
|
178
|
-
if (!isNaN(max)) {
|
|
179
|
-
this.max_ = max;
|
|
180
|
-
}
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
/**
|
|
185
|
-
* Returns the current maximum value this field can contain. Default is
|
|
186
|
-
* Infinity.
|
|
187
|
-
* @return The current maximum value this field can contain.
|
|
188
|
-
*/
|
|
189
|
-
getMax(): number {
|
|
190
|
-
return this.max_;
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
/**
|
|
194
|
-
* Sets the precision of this field's value, i.e. the number to which the
|
|
195
|
-
* value is rounded. Updates the field to reflect.
|
|
196
|
-
* @param precision The number to which the field's value is rounded.
|
|
197
|
-
*/
|
|
198
|
-
setPrecision(precision: number|string|undefined|null) {
|
|
199
|
-
this.setPrecisionInternal_(precision);
|
|
200
|
-
this.setValue(this.getValue());
|
|
201
|
-
}
|
|
202
|
-
|
|
203
|
-
/**
|
|
204
|
-
* Sets the precision of this field's value. Called internally to avoid
|
|
205
|
-
* value updates.
|
|
206
|
-
* @param precision The number to which the field's value is rounded.
|
|
207
|
-
*/
|
|
208
|
-
private setPrecisionInternal_(precision: number|string|undefined|null) {
|
|
209
|
-
this.precision_ = Number(precision) || 0;
|
|
210
|
-
let precisionString = String(this.precision_);
|
|
211
|
-
if (precisionString.indexOf('e') !== -1) {
|
|
212
|
-
// String() is fast. But it turns .0000001 into '1e-7'.
|
|
213
|
-
// Use the much slower toLocaleString to access all the digits.
|
|
214
|
-
precisionString =
|
|
215
|
-
this.precision_.toLocaleString('en-US', {maximumFractionDigits: 20});
|
|
216
|
-
}
|
|
217
|
-
const decimalIndex = precisionString.indexOf('.');
|
|
218
|
-
if (decimalIndex === -1) {
|
|
219
|
-
// If the precision is 0 (float) allow any number of decimals,
|
|
220
|
-
// otherwise allow none.
|
|
221
|
-
this.decimalPlaces_ = precision ? 0 : null;
|
|
222
|
-
} else {
|
|
223
|
-
this.decimalPlaces_ = precisionString.length - decimalIndex - 1;
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
|
|
227
|
-
/**
|
|
228
|
-
* Returns the current precision of this field. The precision being the
|
|
229
|
-
* number to which the field's value is rounded. A precision of 0 means that
|
|
230
|
-
* the value is not rounded.
|
|
231
|
-
* @return The number to which this field's value is rounded.
|
|
232
|
-
*/
|
|
233
|
-
getPrecision(): number {
|
|
234
|
-
return this.precision_;
|
|
235
|
-
}
|
|
236
|
-
|
|
237
|
-
/**
|
|
238
|
-
* Ensure that the input value is a valid number (must fulfill the
|
|
239
|
-
* constraints placed on the field).
|
|
240
|
-
* @param opt_newValue The input value.
|
|
241
|
-
* @return A valid number, or null if invalid.
|
|
242
|
-
*/
|
|
243
|
-
protected override doClassValidation_(opt_newValue?: AnyDuringMigration):
|
|
244
|
-
number|null {
|
|
245
|
-
if (opt_newValue === null) {
|
|
246
|
-
return null;
|
|
247
|
-
}
|
|
248
|
-
// Clean up text.
|
|
249
|
-
let newValue = String(opt_newValue);
|
|
250
|
-
// TODO: Handle cases like 'ten', '1.203,14', etc.
|
|
251
|
-
// 'O' is sometimes mistaken for '0' by inexperienced users.
|
|
252
|
-
newValue = newValue.replace(/O/ig, '0');
|
|
253
|
-
// Strip out thousands separators.
|
|
254
|
-
newValue = newValue.replace(/,/g, '');
|
|
255
|
-
// Ignore case of 'Infinity'.
|
|
256
|
-
newValue = newValue.replace(/infinity/i, 'Infinity');
|
|
257
|
-
|
|
258
|
-
// Clean up number.
|
|
259
|
-
let n = Number(newValue || 0);
|
|
260
|
-
if (isNaN(n)) {
|
|
261
|
-
// Invalid number.
|
|
262
|
-
return null;
|
|
263
|
-
}
|
|
264
|
-
// Get the value in range.
|
|
265
|
-
n = Math.min(Math.max(n, this.min_), this.max_);
|
|
266
|
-
// Round to nearest multiple of precision.
|
|
267
|
-
if (this.precision_ && isFinite(n)) {
|
|
268
|
-
n = Math.round(n / this.precision_) * this.precision_;
|
|
269
|
-
}
|
|
270
|
-
// Clean up floating point errors.
|
|
271
|
-
if (this.decimalPlaces_ !== null) {
|
|
272
|
-
n = Number(n.toFixed(this.decimalPlaces_));
|
|
273
|
-
}
|
|
274
|
-
return n;
|
|
275
|
-
}
|
|
276
|
-
|
|
277
|
-
/**
|
|
278
|
-
* Create the number input editor widget.
|
|
279
|
-
* @return The newly created number input editor.
|
|
280
|
-
*/
|
|
281
|
-
protected override widgetCreate_(): HTMLElement {
|
|
282
|
-
const htmlInput = super.widgetCreate_();
|
|
283
|
-
|
|
284
|
-
// Set the accessibility state
|
|
285
|
-
if (this.min_ > -Infinity) {
|
|
286
|
-
aria.setState(htmlInput, aria.State.VALUEMIN, this.min_);
|
|
287
|
-
}
|
|
288
|
-
if (this.max_ < Infinity) {
|
|
289
|
-
aria.setState(htmlInput, aria.State.VALUEMAX, this.max_);
|
|
290
|
-
}
|
|
291
|
-
return htmlInput;
|
|
292
|
-
}
|
|
293
|
-
|
|
294
|
-
/**
|
|
295
|
-
* Construct a FieldNumber from a JSON arg object.
|
|
296
|
-
* @param options A JSON object with options (value, min, max, and precision).
|
|
297
|
-
* @return The new field instance.
|
|
298
|
-
* @nocollapse
|
|
299
|
-
* @internal
|
|
300
|
-
*/
|
|
301
|
-
static override fromJson(options: FieldNumberFromJsonConfig): FieldNumber {
|
|
302
|
-
// `this` might be a subclass of FieldNumber if that class doesn't override
|
|
303
|
-
// the static fromJson method.
|
|
304
|
-
return new this(
|
|
305
|
-
options.value, undefined, undefined, undefined, undefined, options);
|
|
306
|
-
}
|
|
307
|
-
}
|
|
308
|
-
|
|
309
|
-
fieldRegistry.register('field_number', FieldNumber);
|
|
310
|
-
|
|
311
|
-
(FieldNumber.prototype as AnyDuringMigration).DEFAULT_VALUE = 0;
|
|
312
|
-
|
|
313
|
-
/**
|
|
314
|
-
* Config options for the number field.
|
|
315
|
-
*/
|
|
316
|
-
export interface FieldNumberConfig extends FieldTextInputConfig {
|
|
317
|
-
min?: number;
|
|
318
|
-
max?: number;
|
|
319
|
-
precision?: number;
|
|
320
|
-
}
|
|
321
|
-
|
|
322
|
-
/**
|
|
323
|
-
* fromJson config options for the number field.
|
|
324
|
-
*/
|
|
325
|
-
export interface FieldNumberFromJsonConfig extends FieldNumberConfig {
|
|
326
|
-
value?: number;
|
|
327
|
-
}
|
package/core/field_registry.ts
DELETED
|
@@ -1,87 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* @license
|
|
3
|
-
* Copyright 2019 Google LLC
|
|
4
|
-
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
/**
|
|
8
|
-
* @fileoverview Fields can be created based on a JSON definition. This file
|
|
9
|
-
* contains methods for registering those JSON definitions, and building the
|
|
10
|
-
* fields based on JSON.
|
|
11
|
-
*/
|
|
12
|
-
|
|
13
|
-
/**
|
|
14
|
-
* Fields can be created based on a JSON definition. This file
|
|
15
|
-
* contains methods for registering those JSON definitions, and building the
|
|
16
|
-
* fields based on JSON.
|
|
17
|
-
* @namespace Blockly.fieldRegistry
|
|
18
|
-
*/
|
|
19
|
-
import * as goog from '../closure/goog/goog.js';
|
|
20
|
-
goog.declareModuleId('Blockly.fieldRegistry');
|
|
21
|
-
|
|
22
|
-
import type {Field} from './field.js';
|
|
23
|
-
import type {IRegistrableField} from './interfaces/i_registrable_field.js';
|
|
24
|
-
import * as registry from './registry.js';
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
/**
|
|
28
|
-
* Registers a field type.
|
|
29
|
-
* fieldRegistry.fromJson uses this registry to
|
|
30
|
-
* find the appropriate field type.
|
|
31
|
-
* @param type The field type name as used in the JSON definition.
|
|
32
|
-
* @param fieldClass The field class containing a fromJson function that can
|
|
33
|
-
* construct an instance of the field.
|
|
34
|
-
* @throws {Error} if the type name is empty, the field is already registered,
|
|
35
|
-
* or the fieldClass is not an object containing a fromJson function.
|
|
36
|
-
* @alias Blockly.fieldRegistry.register
|
|
37
|
-
*/
|
|
38
|
-
export function register(type: string, fieldClass: IRegistrableField) {
|
|
39
|
-
registry.register(registry.Type.FIELD, type, fieldClass);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* Unregisters the field registered with the given type.
|
|
44
|
-
* @param type The field type name as used in the JSON definition.
|
|
45
|
-
* @alias Blockly.fieldRegistry.unregister
|
|
46
|
-
*/
|
|
47
|
-
export function unregister(type: string) {
|
|
48
|
-
registry.unregister(registry.Type.FIELD, type);
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* Construct a Field from a JSON arg object.
|
|
53
|
-
* Finds the appropriate registered field by the type name as registered using
|
|
54
|
-
* fieldRegistry.register.
|
|
55
|
-
* @param options A JSON object with a type and options specific to the field
|
|
56
|
-
* type.
|
|
57
|
-
* @return The new field instance or null if a field wasn't found with the given
|
|
58
|
-
* type name
|
|
59
|
-
* @alias Blockly.fieldRegistry.fromJson
|
|
60
|
-
* @internal
|
|
61
|
-
*/
|
|
62
|
-
export function fromJson(options: AnyDuringMigration): Field|null {
|
|
63
|
-
return TEST_ONLY.fromJsonInternal(options);
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
/**
|
|
67
|
-
* Private version of fromJson for stubbing in tests.
|
|
68
|
-
*/
|
|
69
|
-
function fromJsonInternal(options: AnyDuringMigration): Field|null {
|
|
70
|
-
const fieldObject =
|
|
71
|
-
registry.getObject(registry.Type.FIELD, options['type']) as
|
|
72
|
-
IRegistrableField |
|
|
73
|
-
null;
|
|
74
|
-
if (!fieldObject) {
|
|
75
|
-
console.warn(
|
|
76
|
-
'Blockly could not create a field of type ' + options['type'] +
|
|
77
|
-
'. The field is probably not being registered. This could be because' +
|
|
78
|
-
' the file is not loaded, the field does not register itself (Issue' +
|
|
79
|
-
' #1584), or the registration is not being reached.');
|
|
80
|
-
return null;
|
|
81
|
-
}
|
|
82
|
-
return fieldObject.fromJson(options);
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
export const TEST_ONLY = {
|
|
86
|
-
fromJsonInternal,
|
|
87
|
-
}
|