blockly 12.4.0 → 12.5.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 +2751 -0
- package/blockly.mjs +163 -0
- package/blockly_compressed.js +1825 -0
- package/blockly_compressed.js.map +1 -0
- package/blocks.js +4 -0
- package/blocks.mjs +12 -0
- package/blocks_compressed.js +194 -0
- package/blocks_compressed.js.map +1 -0
- package/core/any_aliases.d.ts +7 -0
- package/core/block.d.ts +1006 -0
- package/core/block_animations.d.ts +34 -0
- package/core/block_flyout_inflater.d.ts +94 -0
- package/core/block_svg.d.ts +737 -0
- package/core/blockly.d.ts +286 -0
- package/core/blockly_options.d.ts +70 -0
- package/core/blocks.d.ts +17 -0
- package/core/browser_events.d.ts +88 -0
- package/core/bubbles/bubble.d.ts +228 -0
- package/core/bubbles/mini_workspace_bubble.d.ts +84 -0
- package/core/bubbles/text_bubble.d.ts +38 -0
- package/core/bubbles/textinput_bubble.d.ts +102 -0
- package/core/bubbles.d.ts +11 -0
- package/core/bump_objects.d.ts +37 -0
- package/core/button_flyout_inflater.d.ts +42 -0
- package/core/clipboard/block_paster.d.ts +34 -0
- package/core/clipboard/registry.d.ts +21 -0
- package/core/clipboard/workspace_comment_paster.d.ts +19 -0
- package/core/clipboard.d.ts +103 -0
- package/core/comments/collapse_comment_bar_button.d.ts +52 -0
- package/core/comments/comment_bar_button.d.ts +62 -0
- package/core/comments/comment_editor.d.ts +62 -0
- package/core/comments/comment_view.d.ts +213 -0
- package/core/comments/delete_comment_bar_button.d.ts +52 -0
- package/core/comments/rendered_workspace_comment.d.ts +121 -0
- package/core/comments/workspace_comment.d.ts +107 -0
- package/core/comments.d.ts +13 -0
- package/core/common.d.ts +163 -0
- package/core/component_manager.d.ts +112 -0
- package/core/config.d.ts +24 -0
- package/core/connection.d.ts +291 -0
- package/core/connection_checker.d.ts +85 -0
- package/core/connection_db.d.ts +100 -0
- package/core/connection_type.d.ts +15 -0
- package/core/constants.d.ts +19 -0
- package/core/contextmenu.d.ts +58 -0
- package/core/contextmenu_items.d.ts +73 -0
- package/core/contextmenu_registry.d.ts +173 -0
- package/core/css.d.ts +25 -0
- package/core/delete_area.d.ts +48 -0
- package/core/dialog.d.ts +82 -0
- package/core/drag_target.d.ts +75 -0
- package/core/dragging/block_drag_strategy.d.ts +130 -0
- package/core/dragging/bubble_drag_strategy.d.ts +20 -0
- package/core/dragging/comment_drag_strategy.d.ts +26 -0
- package/core/dragging/dragger.d.ts +49 -0
- package/core/dragging.d.ts +11 -0
- package/core/dropdowndiv.d.ts +208 -0
- package/core/events/events.d.ts +72 -0
- package/core/events/events_abstract.d.ts +72 -0
- package/core/events/events_block_base.d.ts +46 -0
- package/core/events/events_block_change.d.ts +100 -0
- package/core/events/events_block_create.d.ts +59 -0
- package/core/events/events_block_delete.d.ts +62 -0
- package/core/events/events_block_drag.d.ts +61 -0
- package/core/events/events_block_field_intermediate_change.d.ts +71 -0
- package/core/events/events_block_move.d.ts +115 -0
- package/core/events/events_bubble_open.d.ts +62 -0
- package/core/events/events_click.d.ts +64 -0
- package/core/events/events_comment_base.d.ts +55 -0
- package/core/events/events_comment_change.d.ts +64 -0
- package/core/events/events_comment_collapse.d.ts +40 -0
- package/core/events/events_comment_create.d.ts +57 -0
- package/core/events/events_comment_delete.d.ts +57 -0
- package/core/events/events_comment_drag.d.ts +51 -0
- package/core/events/events_comment_move.d.ts +93 -0
- package/core/events/events_comment_resize.d.ts +68 -0
- package/core/events/events_selected.d.ts +53 -0
- package/core/events/events_theme_change.d.ts +43 -0
- package/core/events/events_toolbox_item_select.d.ts +49 -0
- package/core/events/events_trashcan_open.d.ts +47 -0
- package/core/events/events_ui_base.d.ts +32 -0
- package/core/events/events_var_base.d.ts +46 -0
- package/core/events/events_var_create.d.ts +55 -0
- package/core/events/events_var_delete.d.ts +50 -0
- package/core/events/events_var_rename.d.ts +51 -0
- package/core/events/events_var_type_change.d.ts +55 -0
- package/core/events/events_viewport.d.ts +67 -0
- package/core/events/predicates.d.ts +87 -0
- package/core/events/type.d.ts +81 -0
- package/core/events/utils.d.ts +211 -0
- package/core/events/workspace_events.d.ts +23 -0
- package/core/extensions.d.ts +99 -0
- package/core/field.d.ts +724 -0
- package/core/field_checkbox.d.ts +156 -0
- package/core/field_dropdown.d.ts +295 -0
- package/core/field_image.d.ts +148 -0
- package/core/field_input.d.ts +293 -0
- package/core/field_label.d.ts +80 -0
- package/core/field_label_serializable.d.ts +50 -0
- package/core/field_number.d.ts +194 -0
- package/core/field_registry.d.ts +83 -0
- package/core/field_textinput.d.ts +78 -0
- package/core/field_variable.d.ts +261 -0
- package/core/flyout_base.d.ts +453 -0
- package/core/flyout_button.d.ts +140 -0
- package/core/flyout_horizontal.d.ts +87 -0
- package/core/flyout_item.d.ts +26 -0
- package/core/flyout_metrics_manager.d.ts +46 -0
- package/core/flyout_navigator.d.ts +11 -0
- package/core/flyout_separator.d.ts +64 -0
- package/core/flyout_vertical.d.ts +88 -0
- package/core/focus_manager.d.ts +266 -0
- package/core/generator.d.ts +279 -0
- package/core/gesture.d.ts +449 -0
- package/core/grid.d.ts +124 -0
- package/core/icons/comment_icon.d.ts +134 -0
- package/core/icons/exceptions.d.ts +17 -0
- package/core/icons/icon.d.ts +84 -0
- package/core/icons/icon_types.d.ts +25 -0
- package/core/icons/mutator_icon.d.ts +96 -0
- package/core/icons/registry.d.ts +23 -0
- package/core/icons/warning_icon.d.ts +77 -0
- package/core/icons.d.ts +14 -0
- package/core/inject.d.ts +16 -0
- package/core/inputs/align.d.ts +14 -0
- package/core/inputs/dummy_input.d.ts +20 -0
- package/core/inputs/end_row_input.d.ts +25 -0
- package/core/inputs/input.d.ts +147 -0
- package/core/inputs/input_types.d.ts +16 -0
- package/core/inputs/statement_input.d.ts +22 -0
- package/core/inputs/value_input.d.ts +20 -0
- package/core/inputs.d.ts +14 -0
- package/core/insertion_marker_previewer.d.ts +67 -0
- package/core/interfaces/i_autohideable.d.ts +21 -0
- package/core/interfaces/i_bounded_element.d.ts +27 -0
- package/core/interfaces/i_bubble.d.ts +55 -0
- package/core/interfaces/i_collapsible_toolbox_item.d.ts +28 -0
- package/core/interfaces/i_comment_icon.d.ts +24 -0
- package/core/interfaces/i_component.d.ts +17 -0
- package/core/interfaces/i_connection_checker.d.ts +75 -0
- package/core/interfaces/i_connection_previewer.d.ts +39 -0
- package/core/interfaces/i_contextmenu.d.ts +16 -0
- package/core/interfaces/i_copyable.d.ts +30 -0
- package/core/interfaces/i_deletable.d.ts +23 -0
- package/core/interfaces/i_delete_area.d.ts +25 -0
- package/core/interfaces/i_drag_target.d.ts +59 -0
- package/core/interfaces/i_draggable.d.ts +56 -0
- package/core/interfaces/i_dragger.d.ts +32 -0
- package/core/interfaces/i_flyout.d.ts +159 -0
- package/core/interfaces/i_flyout_inflater.d.ts +48 -0
- package/core/interfaces/i_focusable_node.d.ts +105 -0
- package/core/interfaces/i_focusable_tree.d.ts +125 -0
- package/core/interfaces/i_has_bubble.d.ts +27 -0
- package/core/interfaces/i_icon.d.ts +84 -0
- package/core/interfaces/i_keyboard_accessible.d.ts +19 -0
- package/core/interfaces/i_legacy_procedure_blocks.d.ts +34 -0
- package/core/interfaces/i_metrics_manager.d.ts +129 -0
- package/core/interfaces/i_movable.d.ts +17 -0
- package/core/interfaces/i_navigation_policy.d.ts +63 -0
- package/core/interfaces/i_observable.d.ts +21 -0
- package/core/interfaces/i_parameter_model.d.ts +44 -0
- package/core/interfaces/i_paster.d.ts +15 -0
- package/core/interfaces/i_positionable.d.ts +29 -0
- package/core/interfaces/i_procedure_block.d.ts +16 -0
- package/core/interfaces/i_procedure_map.d.ts +16 -0
- package/core/interfaces/i_procedure_model.d.ts +59 -0
- package/core/interfaces/i_registrable.d.ts +11 -0
- package/core/interfaces/i_rendered_element.d.ts +16 -0
- package/core/interfaces/i_selectable.d.ts +26 -0
- package/core/interfaces/i_selectable_toolbox_item.d.ts +51 -0
- package/core/interfaces/i_serializable.d.ts +24 -0
- package/core/interfaces/i_serializer.d.ts +45 -0
- package/core/interfaces/i_styleable.d.ts +23 -0
- package/core/interfaces/i_toolbox.d.ts +102 -0
- package/core/interfaces/i_toolbox_item.d.ts +71 -0
- package/core/interfaces/i_variable_backed_parameter_model.d.ts +17 -0
- package/core/interfaces/i_variable_map.d.ts +48 -0
- package/core/interfaces/i_variable_model.d.ts +36 -0
- package/core/internal_constants.d.ts +34 -0
- package/core/keyboard_nav/block_comment_navigation_policy.d.ts +56 -0
- package/core/keyboard_nav/block_navigation_policy.d.ts +84 -0
- package/core/keyboard_nav/comment_bar_button_navigation_policy.d.ts +56 -0
- package/core/keyboard_nav/comment_editor_navigation_policy.d.ts +34 -0
- package/core/keyboard_nav/connection_navigation_policy.d.ts +67 -0
- package/core/keyboard_nav/field_navigation_policy.d.ts +56 -0
- package/core/keyboard_nav/flyout_button_navigation_policy.d.ts +56 -0
- package/core/keyboard_nav/flyout_navigation_policy.d.ts +65 -0
- package/core/keyboard_nav/flyout_separator_navigation_policy.d.ts +33 -0
- package/core/keyboard_nav/icon_navigation_policy.d.ts +56 -0
- package/core/keyboard_nav/line_cursor.d.ts +187 -0
- package/core/keyboard_nav/marker.d.ts +53 -0
- package/core/keyboard_nav/workspace_comment_navigation_policy.d.ts +56 -0
- package/core/keyboard_nav/workspace_navigation_policy.d.ts +56 -0
- package/core/keyboard_navigation_controller.d.ts +48 -0
- package/core/label_flyout_inflater.d.ts +42 -0
- package/core/layer_manager.d.ts +101 -0
- package/core/layers.d.ts +16 -0
- package/core/main.d.ts +7 -0
- package/core/marker_manager.d.ts +72 -0
- package/core/menu.d.ts +170 -0
- package/core/menu_separator.d.ts +25 -0
- package/core/menuitem.d.ts +147 -0
- package/core/metrics_manager.d.ts +221 -0
- package/core/msg.d.ts +24 -0
- package/core/names.d.ts +139 -0
- package/core/navigator.d.ts +65 -0
- package/core/observable_procedure_map.d.ts +34 -0
- package/core/options.d.ts +148 -0
- package/core/positionable_helpers.d.ts +89 -0
- package/core/procedures.d.ts +108 -0
- package/core/registry.d.ts +158 -0
- package/core/render_management.d.ts +34 -0
- package/core/rendered_connection.d.ts +262 -0
- package/core/renderers/common/block_rendering.d.ts +63 -0
- package/core/renderers/common/constants.d.ts +454 -0
- package/core/renderers/common/drawer.d.ts +156 -0
- package/core/renderers/common/i_path_object.d.ts +88 -0
- package/core/renderers/common/info.d.ts +201 -0
- package/core/renderers/common/path_object.d.ts +130 -0
- package/core/renderers/common/renderer.d.ts +141 -0
- package/core/renderers/geras/constants.d.ts +22 -0
- package/core/renderers/geras/drawer.d.ts +44 -0
- package/core/renderers/geras/geras.d.ts +17 -0
- package/core/renderers/geras/highlight_constants.d.ts +100 -0
- package/core/renderers/geras/highlighter.d.ts +96 -0
- package/core/renderers/geras/info.d.ts +45 -0
- package/core/renderers/geras/measurables/inline_input.d.ts +22 -0
- package/core/renderers/geras/measurables/statement_input.d.ts +22 -0
- package/core/renderers/geras/path_object.d.ts +42 -0
- package/core/renderers/geras/renderer.d.ts +77 -0
- package/core/renderers/measurables/base.d.ts +26 -0
- package/core/renderers/measurables/bottom_row.d.ts +58 -0
- package/core/renderers/measurables/connection.d.ts +25 -0
- package/core/renderers/measurables/external_value_input.d.ts +25 -0
- package/core/renderers/measurables/field.d.ts +28 -0
- package/core/renderers/measurables/hat.d.ts +19 -0
- package/core/renderers/measurables/icon.d.ts +25 -0
- package/core/renderers/measurables/in_row_spacer.d.ts +20 -0
- package/core/renderers/measurables/inline_input.d.ts +22 -0
- package/core/renderers/measurables/input_connection.d.ts +28 -0
- package/core/renderers/measurables/input_row.d.ts +26 -0
- package/core/renderers/measurables/jagged_edge.d.ts +19 -0
- package/core/renderers/measurables/next_connection.d.ts +22 -0
- package/core/renderers/measurables/output_connection.d.ts +24 -0
- package/core/renderers/measurables/previous_connection.d.ts +22 -0
- package/core/renderers/measurables/round_corner.d.ts +20 -0
- package/core/renderers/measurables/row.d.ts +124 -0
- package/core/renderers/measurables/spacer_row.d.ts +27 -0
- package/core/renderers/measurables/square_corner.d.ts +20 -0
- package/core/renderers/measurables/statement_input.d.ts +21 -0
- package/core/renderers/measurables/top_row.d.ts +53 -0
- package/core/renderers/measurables/types.d.ts +258 -0
- package/core/renderers/thrasos/info.d.ts +37 -0
- package/core/renderers/thrasos/renderer.d.ts +28 -0
- package/core/renderers/thrasos/thrasos.d.ts +10 -0
- package/core/renderers/zelos/constants.d.ts +165 -0
- package/core/renderers/zelos/drawer.d.ts +51 -0
- package/core/renderers/zelos/info.d.ts +89 -0
- package/core/renderers/zelos/measurables/bottom_row.d.ts +26 -0
- package/core/renderers/zelos/measurables/inputs.d.ts +21 -0
- package/core/renderers/zelos/measurables/row_elements.d.ts +20 -0
- package/core/renderers/zelos/measurables/top_row.d.ts +28 -0
- package/core/renderers/zelos/path_object.d.ts +76 -0
- package/core/renderers/zelos/renderer.d.ts +64 -0
- package/core/renderers/zelos/zelos.d.ts +17 -0
- package/core/scrollbar.d.ts +348 -0
- package/core/scrollbar_pair.d.ts +121 -0
- package/core/separator_flyout_inflater.d.ts +57 -0
- package/core/serialization/blocks.d.ts +138 -0
- package/core/serialization/exceptions.d.ts +81 -0
- package/core/serialization/priorities.d.ts +20 -0
- package/core/serialization/procedures.d.ts +97 -0
- package/core/serialization/registry.d.ts +21 -0
- package/core/serialization/variables.d.ts +38 -0
- package/core/serialization/workspace_comments.d.ts +45 -0
- package/core/serialization/workspaces.d.ts +29 -0
- package/core/serialization.d.ts +19 -0
- package/core/shortcut_items.d.ts +59 -0
- package/core/shortcut_registry.d.ts +236 -0
- package/core/sprites.d.ts +15 -0
- package/core/theme/classic.d.ts +12 -0
- package/core/theme/themes.d.ts +9 -0
- package/core/theme/zelos.d.ts +11 -0
- package/core/theme.d.ts +151 -0
- package/core/theme_manager.d.ts +92 -0
- package/core/toast.d.ts +74 -0
- package/core/toolbox/category.d.ts +265 -0
- package/core/toolbox/collapsible_category.d.ts +99 -0
- package/core/toolbox/separator.d.ts +40 -0
- package/core/toolbox/toolbox.d.ts +419 -0
- package/core/toolbox/toolbox_item.d.ts +109 -0
- package/core/tooltip.d.ts +118 -0
- package/core/touch.d.ts +72 -0
- package/core/trashcan.d.ts +212 -0
- package/core/utils/aria.d.ts +69 -0
- package/core/utils/array.d.ts +15 -0
- package/core/utils/colour.d.ts +102 -0
- package/core/utils/coordinate.d.ts +87 -0
- package/core/utils/deprecation.d.ts +18 -0
- package/core/utils/dom.d.ts +154 -0
- package/core/utils/drag.d.ts +33 -0
- package/core/utils/focusable_tree_traverser.d.ts +53 -0
- package/core/utils/idgenerator.d.ts +33 -0
- package/core/utils/keycodes.d.ts +137 -0
- package/core/utils/math.d.ts +31 -0
- package/core/utils/metrics.d.ts +64 -0
- package/core/utils/object.d.ts +17 -0
- package/core/utils/parsing.d.ts +52 -0
- package/core/utils/rect.d.ts +82 -0
- package/core/utils/size.d.ts +44 -0
- package/core/utils/string.d.ts +46 -0
- package/core/utils/style.d.ts +89 -0
- package/core/utils/svg.d.ts +75 -0
- package/core/utils/svg_math.d.ts +64 -0
- package/core/utils/svg_paths.d.ts +103 -0
- package/core/utils/toolbox.d.ts +180 -0
- package/core/utils/useragent.d.ts +14 -0
- package/core/utils/xml.d.ts +96 -0
- package/core/utils.d.ts +31 -0
- package/core/variable_map.d.ts +164 -0
- package/core/variable_model.d.ts +73 -0
- package/core/variables.d.ts +238 -0
- package/core/variables_dynamic.d.ts +56 -0
- package/core/widgetdiv.d.ts +87 -0
- package/core/workspace.d.ts +482 -0
- package/core/workspace_audio.d.ts +62 -0
- package/core/workspace_dragger.d.ts +48 -0
- package/core/workspace_svg.d.ts +1103 -0
- package/core/xml.d.ts +127 -0
- package/core/zoom_controls.d.ts +134 -0
- package/core.js +4 -0
- package/dart.js +4 -0
- package/dart.mjs +6 -0
- package/dart_compressed.js +330 -0
- package/dart_compressed.js.map +1 -0
- package/generators/dart/dart_generator.d.ts +104 -0
- package/generators/dart/lists.d.ts +21 -0
- package/generators/dart/logic.d.ts +20 -0
- package/generators/dart/loops.d.ts +14 -0
- package/generators/dart/math.d.ts +26 -0
- package/generators/dart/procedures.d.ts +14 -0
- package/generators/dart/text.d.ts +25 -0
- package/generators/dart/variables.d.ts +14 -0
- package/generators/dart/variables_dynamic.d.ts +10 -0
- package/generators/dart.d.ts +18 -0
- package/generators/javascript/javascript_generator.d.ts +123 -0
- package/generators/javascript/lists.d.ts +21 -0
- package/generators/javascript/logic.d.ts +20 -0
- package/generators/javascript/loops.d.ts +14 -0
- package/generators/javascript/math.d.ts +26 -0
- package/generators/javascript/procedures.d.ts +14 -0
- package/generators/javascript/text.d.ts +25 -0
- package/generators/javascript/variables.d.ts +14 -0
- package/generators/javascript/variables_dynamic.d.ts +10 -0
- package/generators/javascript.d.ts +18 -0
- package/generators/lua/lists.d.ts +21 -0
- package/generators/lua/logic.d.ts +20 -0
- package/generators/lua/loops.d.ts +14 -0
- package/generators/lua/lua_generator.d.ts +91 -0
- package/generators/lua/math.d.ts +26 -0
- package/generators/lua/procedures.d.ts +14 -0
- package/generators/lua/text.d.ts +25 -0
- package/generators/lua/variables.d.ts +14 -0
- package/generators/lua/variables_dynamic.d.ts +10 -0
- package/generators/lua.d.ts +12 -0
- package/generators/php/lists.d.ts +21 -0
- package/generators/php/logic.d.ts +20 -0
- package/generators/php/loops.d.ts +14 -0
- package/generators/php/math.d.ts +26 -0
- package/generators/php/php_generator.d.ts +122 -0
- package/generators/php/procedures.d.ts +14 -0
- package/generators/php/text.d.ts +25 -0
- package/generators/php/variables.d.ts +14 -0
- package/generators/php/variables_dynamic.d.ts +10 -0
- package/generators/php.d.ts +13 -0
- package/generators/python/lists.d.ts +21 -0
- package/generators/python/logic.d.ts +20 -0
- package/generators/python/loops.d.ts +14 -0
- package/generators/python/math.d.ts +26 -0
- package/generators/python/procedures.d.ts +14 -0
- package/generators/python/python_generator.d.ts +111 -0
- package/generators/python/text.d.ts +25 -0
- package/generators/python/variables.d.ts +14 -0
- package/generators/python/variables_dynamic.d.ts +10 -0
- package/generators/python.d.ts +13 -0
- package/index.js +36 -0
- package/index.mjs +163 -0
- package/javascript.js +4 -0
- package/javascript.mjs +6 -0
- package/javascript_compressed.js +264 -0
- package/javascript_compressed.js.map +1 -0
- package/lua.js +4 -0
- package/lua.mjs +6 -0
- package/lua_compressed.js +373 -0
- package/lua_compressed.js.map +1 -0
- package/msg/ab.js +465 -0
- package/msg/ab.mjs +446 -0
- package/msg/ace.js +465 -0
- package/msg/ace.mjs +446 -0
- package/msg/af.js +465 -0
- package/msg/af.mjs +446 -0
- package/msg/am.js +465 -0
- package/msg/am.mjs +446 -0
- package/msg/ar.js +465 -0
- package/msg/ar.mjs +446 -0
- package/msg/ast.js +465 -0
- package/msg/ast.mjs +446 -0
- package/msg/az.js +465 -0
- package/msg/az.mjs +446 -0
- package/msg/ba.js +465 -0
- package/msg/ba.mjs +446 -0
- package/msg/bcc.js +465 -0
- package/msg/bcc.mjs +446 -0
- package/msg/be-tarask.js +465 -0
- package/msg/be-tarask.mjs +446 -0
- package/msg/be.js +465 -0
- package/msg/be.mjs +446 -0
- package/msg/bg.js +465 -0
- package/msg/bg.mjs +446 -0
- package/msg/bn.js +465 -0
- package/msg/bn.mjs +446 -0
- package/msg/br.js +465 -0
- package/msg/br.mjs +446 -0
- package/msg/bs.js +465 -0
- package/msg/bs.mjs +446 -0
- package/msg/ca.js +465 -0
- package/msg/ca.mjs +446 -0
- package/msg/cdo.js +465 -0
- package/msg/cdo.mjs +446 -0
- package/msg/ce.js +465 -0
- package/msg/ce.mjs +446 -0
- package/msg/cs.js +465 -0
- package/msg/cs.mjs +446 -0
- package/msg/da.js +465 -0
- package/msg/da.mjs +446 -0
- package/msg/de.js +465 -0
- package/msg/de.mjs +446 -0
- package/msg/diq.js +465 -0
- package/msg/diq.mjs +446 -0
- package/msg/dtp.js +465 -0
- package/msg/dtp.mjs +446 -0
- package/msg/dty.js +465 -0
- package/msg/dty.mjs +446 -0
- package/msg/ee.js +465 -0
- package/msg/ee.mjs +446 -0
- package/msg/el.js +465 -0
- package/msg/el.mjs +446 -0
- package/msg/en-gb.js +465 -0
- package/msg/en-gb.mjs +446 -0
- package/msg/en.js +465 -0
- package/msg/en.mjs +446 -0
- package/msg/eo.js +465 -0
- package/msg/eo.mjs +446 -0
- package/msg/es.js +465 -0
- package/msg/es.mjs +446 -0
- package/msg/et.js +465 -0
- package/msg/et.mjs +446 -0
- package/msg/eu.js +465 -0
- package/msg/eu.mjs +446 -0
- package/msg/fa.js +465 -0
- package/msg/fa.mjs +446 -0
- package/msg/fi.js +465 -0
- package/msg/fi.mjs +446 -0
- package/msg/fo.js +465 -0
- package/msg/fo.mjs +446 -0
- package/msg/fr.js +465 -0
- package/msg/fr.mjs +446 -0
- package/msg/frr.js +465 -0
- package/msg/frr.mjs +446 -0
- package/msg/gl.js +465 -0
- package/msg/gl.mjs +446 -0
- package/msg/gn.js +465 -0
- package/msg/gn.mjs +446 -0
- package/msg/gor.js +465 -0
- package/msg/gor.mjs +446 -0
- package/msg/ha.js +465 -0
- package/msg/ha.mjs +446 -0
- package/msg/hak.js +465 -0
- package/msg/hak.mjs +446 -0
- package/msg/he.js +465 -0
- package/msg/he.mjs +446 -0
- package/msg/hi.js +465 -0
- package/msg/hi.mjs +446 -0
- package/msg/hr.js +465 -0
- package/msg/hr.mjs +446 -0
- package/msg/hrx.js +465 -0
- package/msg/hrx.mjs +446 -0
- package/msg/hsb.js +465 -0
- package/msg/hsb.mjs +446 -0
- package/msg/hu.js +465 -0
- package/msg/hu.mjs +446 -0
- package/msg/hy.js +465 -0
- package/msg/hy.mjs +446 -0
- package/msg/ia.js +465 -0
- package/msg/ia.mjs +446 -0
- package/msg/id.js +465 -0
- package/msg/id.mjs +446 -0
- package/msg/ig.js +465 -0
- package/msg/ig.mjs +446 -0
- package/msg/inh.js +465 -0
- package/msg/inh.mjs +446 -0
- package/msg/is.js +465 -0
- package/msg/is.mjs +446 -0
- package/msg/it.js +465 -0
- package/msg/it.mjs +446 -0
- package/msg/ja.js +465 -0
- package/msg/ja.mjs +446 -0
- package/msg/ka.js +465 -0
- package/msg/ka.mjs +446 -0
- package/msg/kab.js +465 -0
- package/msg/kab.mjs +446 -0
- package/msg/kbd-cyrl.js +465 -0
- package/msg/kbd-cyrl.mjs +446 -0
- package/msg/km.js +465 -0
- package/msg/km.mjs +446 -0
- package/msg/kn.js +465 -0
- package/msg/kn.mjs +446 -0
- package/msg/ko.js +465 -0
- package/msg/ko.mjs +446 -0
- package/msg/ksh.js +465 -0
- package/msg/ksh.mjs +446 -0
- package/msg/ku-latn.js +465 -0
- package/msg/ku-latn.mjs +446 -0
- package/msg/ky.js +465 -0
- package/msg/ky.mjs +446 -0
- package/msg/la.js +465 -0
- package/msg/la.mjs +446 -0
- package/msg/lb.js +465 -0
- package/msg/lb.mjs +446 -0
- package/msg/lki.js +465 -0
- package/msg/lki.mjs +446 -0
- package/msg/lo.js +465 -0
- package/msg/lo.mjs +446 -0
- package/msg/lrc.js +465 -0
- package/msg/lrc.mjs +446 -0
- package/msg/lt.js +465 -0
- package/msg/lt.mjs +446 -0
- package/msg/lv.js +465 -0
- package/msg/lv.mjs +446 -0
- package/msg/mg.js +465 -0
- package/msg/mg.mjs +446 -0
- package/msg/mk.js +465 -0
- package/msg/mk.mjs +446 -0
- package/msg/ml.js +465 -0
- package/msg/ml.mjs +446 -0
- package/msg/mnw.js +465 -0
- package/msg/mnw.mjs +446 -0
- package/msg/ms.js +465 -0
- package/msg/ms.mjs +446 -0
- package/msg/my.js +465 -0
- package/msg/my.mjs +446 -0
- package/msg/mzn.js +465 -0
- package/msg/mzn.mjs +446 -0
- package/msg/nb.js +465 -0
- package/msg/nb.mjs +446 -0
- package/msg/ne.js +465 -0
- package/msg/ne.mjs +446 -0
- package/msg/nl.js +465 -0
- package/msg/nl.mjs +446 -0
- package/msg/oc.js +465 -0
- package/msg/oc.mjs +446 -0
- package/msg/olo.js +465 -0
- package/msg/olo.mjs +446 -0
- package/msg/pa.js +465 -0
- package/msg/pa.mjs +446 -0
- package/msg/pl.js +465 -0
- package/msg/pl.mjs +446 -0
- package/msg/pms.js +465 -0
- package/msg/pms.mjs +446 -0
- package/msg/ps.js +465 -0
- package/msg/ps.mjs +446 -0
- package/msg/pt-br.js +465 -0
- package/msg/pt-br.mjs +446 -0
- package/msg/pt.js +465 -0
- package/msg/pt.mjs +446 -0
- package/msg/ro.js +465 -0
- package/msg/ro.mjs +446 -0
- package/msg/ru.js +465 -0
- package/msg/ru.mjs +446 -0
- package/msg/sc.js +465 -0
- package/msg/sc.mjs +446 -0
- package/msg/sco.js +465 -0
- package/msg/sco.mjs +446 -0
- package/msg/sd.js +465 -0
- package/msg/sd.mjs +446 -0
- package/msg/shn.js +465 -0
- package/msg/shn.mjs +446 -0
- package/msg/si.js +465 -0
- package/msg/si.mjs +446 -0
- package/msg/sk.js +465 -0
- package/msg/sk.mjs +446 -0
- package/msg/skr-arab.js +465 -0
- package/msg/skr-arab.mjs +446 -0
- package/msg/sl.js +465 -0
- package/msg/sl.mjs +446 -0
- package/msg/smn.js +465 -0
- package/msg/smn.mjs +446 -0
- package/msg/sq.js +465 -0
- package/msg/sq.mjs +446 -0
- package/msg/sr-latn.js +465 -0
- package/msg/sr-latn.mjs +446 -0
- package/msg/sr.js +465 -0
- package/msg/sr.mjs +446 -0
- package/msg/sv.js +465 -0
- package/msg/sv.mjs +446 -0
- package/msg/sw.js +465 -0
- package/msg/sw.mjs +446 -0
- package/msg/ta.js +465 -0
- package/msg/ta.mjs +446 -0
- package/msg/tcy.js +465 -0
- package/msg/tcy.mjs +446 -0
- package/msg/tdd.js +465 -0
- package/msg/tdd.mjs +446 -0
- package/msg/te.js +465 -0
- package/msg/te.mjs +446 -0
- package/msg/th.js +465 -0
- package/msg/th.mjs +446 -0
- package/msg/ti.js +465 -0
- package/msg/ti.mjs +446 -0
- package/msg/tl.js +465 -0
- package/msg/tl.mjs +446 -0
- package/msg/tlh.js +465 -0
- package/msg/tlh.mjs +446 -0
- package/msg/tr.js +465 -0
- package/msg/tr.mjs +446 -0
- package/msg/ug-arab.js +465 -0
- package/msg/ug-arab.mjs +446 -0
- package/msg/uk.js +465 -0
- package/msg/uk.mjs +446 -0
- package/msg/ur.js +465 -0
- package/msg/ur.mjs +446 -0
- package/msg/uz.js +465 -0
- package/msg/uz.mjs +446 -0
- package/msg/vi.js +465 -0
- package/msg/vi.mjs +446 -0
- package/msg/xmf.js +465 -0
- package/msg/xmf.mjs +446 -0
- package/msg/yo.js +465 -0
- package/msg/yo.mjs +446 -0
- package/msg/zgh.js +465 -0
- package/msg/zgh.mjs +446 -0
- package/msg/zh-hans.js +465 -0
- package/msg/zh-hans.mjs +446 -0
- package/msg/zh-hant.js +465 -0
- package/msg/zh-hant.mjs +446 -0
- package/package.json +8 -37
- package/php.js +4 -0
- package/php.mjs +6 -0
- package/php_compressed.js +283 -0
- package/php_compressed.js.map +1 -0
- package/python.js +4 -0
- package/python.mjs +6 -0
- package/python_compressed.js +208 -0
- package/python_compressed.js.map +1 -0
- package/.prettierignore +0 -30
- package/.prettierrc.js +0 -15
- package/api-extractor.json +0 -390
- package/appengine/.gcloudignore +0 -20
- package/appengine/README.txt +0 -42
- package/appengine/add_timestamps.py +0 -69
- package/appengine/app.yaml +0 -106
- package/appengine/apple-touch-icon.png +0 -0
- package/appengine/blockly_compressed.js +0 -11
- package/appengine/expiration.py +0 -52
- package/appengine/favicon.ico +0 -0
- package/appengine/index.yaml +0 -11
- package/appengine/main.py +0 -39
- package/appengine/redirect.html +0 -107
- package/appengine/requirements.txt +0 -1
- package/appengine/robots.txt +0 -2
- package/appengine/storage.js +0 -190
- package/appengine/storage.py +0 -125
- package/blocks/blocks.ts +0 -44
- package/blocks/lists.ts +0 -1065
- package/blocks/logic.ts +0 -712
- package/blocks/loops.ts +0 -408
- package/blocks/math.ts +0 -591
- package/blocks/procedures.ts +0 -1366
- package/blocks/text.ts +0 -1001
- package/blocks/variables.ts +0 -181
- package/blocks/variables_dynamic.ts +0 -192
- package/core/any_aliases.ts +0 -8
- package/core/block.ts +0 -2511
- package/core/block_animations.ts +0 -233
- package/core/block_flyout_inflater.ts +0 -283
- package/core/block_svg.ts +0 -1873
- package/core/blockly.ts +0 -644
- package/core/blockly_options.ts +0 -71
- package/core/blocks.ts +0 -18
- package/core/browser_events.ts +0 -256
- package/core/bubbles/bubble.ts +0 -732
- package/core/bubbles/mini_workspace_bubble.ts +0 -292
- package/core/bubbles/text_bubble.ts +0 -112
- package/core/bubbles/textinput_bubble.ts +0 -296
- package/core/bubbles.ts +0 -12
- package/core/bump_objects.ts +0 -188
- package/core/button_flyout_inflater.ts +0 -76
- package/core/clipboard/block_paster.ts +0 -154
- package/core/clipboard/registry.ts +0 -31
- package/core/clipboard/workspace_comment_paster.ts +0 -95
- package/core/clipboard.ts +0 -197
- package/core/comments/collapse_comment_bar_button.ts +0 -102
- package/core/comments/comment_bar_button.ts +0 -105
- package/core/comments/comment_editor.ts +0 -220
- package/core/comments/comment_view.ts +0 -773
- package/core/comments/delete_comment_bar_button.ts +0 -106
- package/core/comments/rendered_workspace_comment.ts +0 -361
- package/core/comments/workspace_comment.ts +0 -247
- package/core/comments.ts +0 -13
- package/core/common.ts +0 -347
- package/core/component_manager.ts +0 -247
- package/core/config.ts +0 -65
- package/core/connection.ts +0 -807
- package/core/connection_checker.ts +0 -348
- package/core/connection_db.ts +0 -297
- package/core/connection_type.ts +0 -21
- package/core/constants.ts +0 -23
- package/core/contextmenu.ts +0 -295
- package/core/contextmenu_items.ts +0 -684
- package/core/contextmenu_registry.ts +0 -278
- package/core/css.ts +0 -518
- package/core/delete_area.ts +0 -77
- package/core/dialog.ts +0 -167
- package/core/drag_target.ts +0 -97
- package/core/dragging/block_drag_strategy.ts +0 -523
- package/core/dragging/bubble_drag_strategy.ts +0 -49
- package/core/dragging/comment_drag_strategy.ts +0 -92
- package/core/dragging/dragger.ts +0 -174
- package/core/dragging.ts +0 -12
- package/core/dropdowndiv.ts +0 -792
- package/core/events/events.ts +0 -109
- package/core/events/events_abstract.ts +0 -129
- package/core/events/events_block_base.ts +0 -87
- package/core/events/events_block_change.ts +0 -259
- package/core/events/events_block_create.ts +0 -185
- package/core/events/events_block_delete.ts +0 -182
- package/core/events/events_block_drag.ts +0 -116
- package/core/events/events_block_field_intermediate_change.ts +0 -166
- package/core/events/events_block_move.ts +0 -306
- package/core/events/events_bubble_open.ts +0 -121
- package/core/events/events_click.ts +0 -110
- package/core/events/events_comment_base.ts +0 -126
- package/core/events/events_comment_change.ts +0 -156
- package/core/events/events_comment_collapse.ts +0 -103
- package/core/events/events_comment_create.ts +0 -114
- package/core/events/events_comment_delete.ts +0 -113
- package/core/events/events_comment_drag.ts +0 -99
- package/core/events/events_comment_move.ts +0 -206
- package/core/events/events_comment_resize.ts +0 -169
- package/core/events/events_selected.ts +0 -97
- package/core/events/events_theme_change.ts +0 -84
- package/core/events/events_toolbox_item_select.ts +0 -96
- package/core/events/events_trashcan_open.ts +0 -87
- package/core/events/events_ui_base.ts +0 -47
- package/core/events/events_var_base.ts +0 -88
- package/core/events/events_var_create.ts +0 -131
- package/core/events/events_var_delete.ts +0 -124
- package/core/events/events_var_rename.ts +0 -133
- package/core/events/events_var_type_change.ts +0 -122
- package/core/events/events_viewport.ts +0 -149
- package/core/events/predicates.ts +0 -166
- package/core/events/type.ts +0 -87
- package/core/events/utils.ts +0 -455
- package/core/events/workspace_events.ts +0 -46
- package/core/extensions.ts +0 -497
- package/core/field.ts +0 -1445
- package/core/field_checkbox.ts +0 -266
- package/core/field_dropdown.ts +0 -907
- package/core/field_image.ts +0 -307
- package/core/field_input.ts +0 -826
- package/core/field_label.ts +0 -150
- package/core/field_label_serializable.ts +0 -73
- package/core/field_number.ts +0 -381
- package/core/field_registry.ts +0 -115
- package/core/field_textinput.ts +0 -125
- package/core/field_variable.ts +0 -654
- package/core/flyout_base.ts +0 -1013
- package/core/flyout_button.ts +0 -447
- package/core/flyout_horizontal.ts +0 -375
- package/core/flyout_item.ts +0 -33
- package/core/flyout_metrics_manager.ts +0 -90
- package/core/flyout_navigator.ts +0 -24
- package/core/flyout_separator.ts +0 -94
- package/core/flyout_vertical.ts +0 -354
- package/core/focus_manager.ts +0 -675
- package/core/generator.ts +0 -611
- package/core/gesture.ts +0 -1190
- package/core/grid.ts +0 -267
- package/core/icons/comment_icon.ts +0 -429
- package/core/icons/exceptions.ts +0 -23
- package/core/icons/icon.ts +0 -204
- package/core/icons/icon_types.ts +0 -32
- package/core/icons/mutator_icon.ts +0 -360
- package/core/icons/registry.ts +0 -33
- package/core/icons/warning_icon.ts +0 -226
- package/core/icons.ts +0 -24
- package/core/inject.ts +0 -332
- package/core/inputs/align.ts +0 -14
- package/core/inputs/dummy_input.ts +0 -26
- package/core/inputs/end_row_input.ts +0 -31
- package/core/inputs/input.ts +0 -317
- package/core/inputs/input_types.ts +0 -27
- package/core/inputs/statement_input.ts +0 -34
- package/core/inputs/value_input.ts +0 -30
- package/core/inputs.ts +0 -23
- package/core/insertion_marker_previewer.ts +0 -268
- package/core/interfaces/i_autohideable.ts +0 -27
- package/core/interfaces/i_bounded_element.ts +0 -31
- package/core/interfaces/i_bubble.ts +0 -64
- package/core/interfaces/i_collapsible_toolbox_item.ts +0 -33
- package/core/interfaces/i_comment_icon.ts +0 -47
- package/core/interfaces/i_component.ts +0 -19
- package/core/interfaces/i_connection_checker.ts +0 -101
- package/core/interfaces/i_connection_previewer.ts +0 -50
- package/core/interfaces/i_contextmenu.ts +0 -21
- package/core/interfaces/i_copyable.ts +0 -39
- package/core/interfaces/i_deletable.ts +0 -35
- package/core/interfaces/i_delete_area.ts +0 -28
- package/core/interfaces/i_drag_target.ts +0 -67
- package/core/interfaces/i_draggable.ts +0 -73
- package/core/interfaces/i_dragger.ts +0 -35
- package/core/interfaces/i_flyout.ts +0 -190
- package/core/interfaces/i_flyout_inflater.ts +0 -51
- package/core/interfaces/i_focusable_node.ts +0 -120
- package/core/interfaces/i_focusable_tree.ts +0 -144
- package/core/interfaces/i_has_bubble.ts +0 -37
- package/core/interfaces/i_icon.ts +0 -116
- package/core/interfaces/i_keyboard_accessible.ts +0 -22
- package/core/interfaces/i_legacy_procedure_blocks.ts +0 -51
- package/core/interfaces/i_metrics_manager.ts +0 -150
- package/core/interfaces/i_movable.ts +0 -19
- package/core/interfaces/i_navigation_policy.ts +0 -69
- package/core/interfaces/i_observable.ts +0 -28
- package/core/interfaces/i_parameter_model.ts +0 -51
- package/core/interfaces/i_paster.ts +0 -25
- package/core/interfaces/i_positionable.ts +0 -33
- package/core/interfaces/i_procedure_block.ts +0 -29
- package/core/interfaces/i_procedure_map.ts +0 -18
- package/core/interfaces/i_procedure_model.ts +0 -71
- package/core/interfaces/i_registrable.ts +0 -12
- package/core/interfaces/i_rendered_element.ts +0 -19
- package/core/interfaces/i_selectable.ts +0 -41
- package/core/interfaces/i_selectable_toolbox_item.ts +0 -63
- package/core/interfaces/i_serializable.ts +0 -32
- package/core/interfaces/i_serializer.ts +0 -51
- package/core/interfaces/i_styleable.ts +0 -26
- package/core/interfaces/i_toolbox.ts +0 -121
- package/core/interfaces/i_toolbox_item.ts +0 -83
- package/core/interfaces/i_variable_backed_parameter_model.ts +0 -23
- package/core/interfaces/i_variable_map.ts +0 -65
- package/core/interfaces/i_variable_model.ts +0 -57
- package/core/internal_constants.ts +0 -47
- package/core/keyboard_nav/block_comment_navigation_policy.ts +0 -76
- package/core/keyboard_nav/block_navigation_policy.ts +0 -213
- package/core/keyboard_nav/comment_bar_button_navigation_policy.ts +0 -88
- package/core/keyboard_nav/comment_editor_navigation_policy.ts +0 -54
- package/core/keyboard_nav/connection_navigation_policy.ts +0 -155
- package/core/keyboard_nav/field_navigation_policy.ts +0 -85
- package/core/keyboard_nav/flyout_button_navigation_policy.ts +0 -76
- package/core/keyboard_nav/flyout_navigation_policy.ts +0 -111
- package/core/keyboard_nav/flyout_separator_navigation_policy.ts +0 -53
- package/core/keyboard_nav/icon_navigation_policy.ts +0 -93
- package/core/keyboard_nav/line_cursor.ts +0 -414
- package/core/keyboard_nav/marker.ts +0 -86
- package/core/keyboard_nav/workspace_comment_navigation_policy.ts +0 -77
- package/core/keyboard_nav/workspace_navigation_policy.ts +0 -77
- package/core/keyboard_navigation_controller.ts +0 -63
- package/core/label_flyout_inflater.ts +0 -75
- package/core/layer_manager.ts +0 -229
- package/core/layers.ts +0 -17
- package/core/main.ts +0 -31
- package/core/marker_manager.ts +0 -116
- package/core/menu.ts +0 -486
- package/core/menu_separator.ts +0 -38
- package/core/menuitem.ts +0 -289
- package/core/metrics_manager.ts +0 -486
- package/core/msg.ts +0 -27
- package/core/names.ts +0 -275
- package/core/navigator.ts +0 -123
- package/core/observable_procedure_map.ts +0 -66
- package/core/options.ts +0 -377
- package/core/positionable_helpers.ts +0 -186
- package/core/procedures.ts +0 -622
- package/core/registry.ts +0 -400
- package/core/render_management.ts +0 -193
- package/core/rendered_connection.ts +0 -690
- package/core/renderers/common/block_rendering.ts +0 -122
- package/core/renderers/common/constants.ts +0 -1226
- package/core/renderers/common/drawer.ts +0 -511
- package/core/renderers/common/i_path_object.ts +0 -109
- package/core/renderers/common/info.ts +0 -768
- package/core/renderers/common/path_object.ts +0 -260
- package/core/renderers/common/renderer.ts +0 -236
- package/core/renderers/geras/constants.ts +0 -42
- package/core/renderers/geras/drawer.ts +0 -166
- package/core/renderers/geras/geras.ts +0 -31
- package/core/renderers/geras/highlight_constants.ts +0 -342
- package/core/renderers/geras/highlighter.ts +0 -312
- package/core/renderers/geras/info.ts +0 -476
- package/core/renderers/geras/measurables/inline_input.ts +0 -36
- package/core/renderers/geras/measurables/statement_input.ts +0 -35
- package/core/renderers/geras/path_object.ts +0 -121
- package/core/renderers/geras/renderer.ts +0 -127
- package/core/renderers/measurables/base.ts +0 -40
- package/core/renderers/measurables/bottom_row.ts +0 -103
- package/core/renderers/measurables/connection.ts +0 -41
- package/core/renderers/measurables/external_value_input.ts +0 -51
- package/core/renderers/measurables/field.ts +0 -48
- package/core/renderers/measurables/hat.ts +0 -32
- package/core/renderers/measurables/icon.ts +0 -40
- package/core/renderers/measurables/in_row_spacer.ts +0 -36
- package/core/renderers/measurables/inline_input.ts +0 -61
- package/core/renderers/measurables/input_connection.ts +0 -56
- package/core/renderers/measurables/input_row.ts +0 -62
- package/core/renderers/measurables/jagged_edge.ts +0 -35
- package/core/renderers/measurables/next_connection.ts +0 -41
- package/core/renderers/measurables/output_connection.ts +0 -42
- package/core/renderers/measurables/previous_connection.ts +0 -41
- package/core/renderers/measurables/round_corner.ts +0 -41
- package/core/renderers/measurables/row.ts +0 -190
- package/core/renderers/measurables/spacer_row.ts +0 -43
- package/core/renderers/measurables/square_corner.ts +0 -39
- package/core/renderers/measurables/statement_input.ts +0 -47
- package/core/renderers/measurables/top_row.ts +0 -108
- package/core/renderers/measurables/types.ts +0 -362
- package/core/renderers/thrasos/info.ts +0 -327
- package/core/renderers/thrasos/renderer.ts +0 -39
- package/core/renderers/thrasos/thrasos.ts +0 -14
- package/core/renderers/zelos/constants.ts +0 -913
- package/core/renderers/zelos/drawer.ts +0 -272
- package/core/renderers/zelos/info.ts +0 -651
- package/core/renderers/zelos/measurables/bottom_row.ts +0 -44
- package/core/renderers/zelos/measurables/inputs.ts +0 -40
- package/core/renderers/zelos/measurables/row_elements.ts +0 -29
- package/core/renderers/zelos/measurables/top_row.ts +0 -50
- package/core/renderers/zelos/path_object.ts +0 -209
- package/core/renderers/zelos/renderer.ts +0 -91
- package/core/renderers/zelos/zelos.ts +0 -31
- package/core/scrollbar.ts +0 -898
- package/core/scrollbar_pair.ts +0 -349
- package/core/separator_flyout_inflater.ts +0 -83
- package/core/serialization/blocks.ts +0 -834
- package/core/serialization/exceptions.ts +0 -112
- package/core/serialization/priorities.ts +0 -25
- package/core/serialization/procedures.ts +0 -158
- package/core/serialization/registry.ts +0 -30
- package/core/serialization/variables.ts +0 -69
- package/core/serialization/workspace_comments.ts +0 -143
- package/core/serialization/workspaces.ts +0 -94
- package/core/serialization.ts +0 -32
- package/core/shortcut_items.ts +0 -405
- package/core/shortcut_registry.ts +0 -451
- package/core/sprites.ts +0 -15
- package/core/theme/classic.ts +0 -40
- package/core/theme/themes.ts +0 -12
- package/core/theme/zelos.ts +0 -80
- package/core/theme.ts +0 -232
- package/core/theme_manager.ts +0 -192
- package/core/toast.ts +0 -219
- package/core/toolbox/category.ts +0 -746
- package/core/toolbox/collapsible_category.ts +0 -287
- package/core/toolbox/separator.ts +0 -108
- package/core/toolbox/toolbox.ts +0 -1210
- package/core/toolbox/toolbox_item.ts +0 -181
- package/core/tooltip.ts +0 -466
- package/core/touch.ts +0 -155
- package/core/trashcan.ts +0 -730
- package/core/utils/aria.ts +0 -158
- package/core/utils/array.ts +0 -24
- package/core/utils/colour.ts +0 -265
- package/core/utils/coordinate.ts +0 -129
- package/core/utils/deprecation.ts +0 -47
- package/core/utils/dom.ts +0 -356
- package/core/utils/drag.ts +0 -74
- package/core/utils/focusable_tree_traverser.ts +0 -126
- package/core/utils/idgenerator.ts +0 -70
- package/core/utils/keycodes.ts +0 -154
- package/core/utils/math.ts +0 -50
- package/core/utils/metrics.ts +0 -86
- package/core/utils/object.ts +0 -33
- package/core/utils/parsing.ts +0 -286
- package/core/utils/rect.ts +0 -142
- package/core/utils/size.ts +0 -62
- package/core/utils/string.ts +0 -289
- package/core/utils/style.ts +0 -219
- package/core/utils/svg.ts +0 -84
- package/core/utils/svg_math.ts +0 -207
- package/core/utils/svg_paths.ts +0 -133
- package/core/utils/toolbox.ts +0 -417
- package/core/utils/useragent.ts +0 -86
- package/core/utils/xml.ts +0 -165
- package/core/utils.ts +0 -59
- package/core/variable_map.ts +0 -476
- package/core/variable_model.ts +0 -150
- package/core/variables.ts +0 -931
- package/core/variables_dynamic.ts +0 -230
- package/core/widgetdiv.ts +0 -349
- package/core/workspace.ts +0 -994
- package/core/workspace_audio.ts +0 -137
- package/core/workspace_dragger.ts +0 -81
- package/core/workspace_svg.ts +0 -2954
- package/core/xml.ts +0 -1126
- package/core/zoom_controls.ts +0 -495
- package/demos/blockfactory/analytics.js +0 -195
- package/demos/blockfactory/app_controller.js +0 -726
- package/demos/blockfactory/block_definition_extractor.js +0 -742
- package/demos/blockfactory/block_exporter_controller.js +0 -311
- package/demos/blockfactory/block_exporter_tools.js +0 -212
- package/demos/blockfactory/block_exporter_view.js +0 -101
- package/demos/blockfactory/block_library_controller.js +0 -325
- package/demos/blockfactory/block_library_storage.js +0 -149
- package/demos/blockfactory/block_library_view.js +0 -178
- package/demos/blockfactory/block_option.js +0 -151
- package/demos/blockfactory/blocks.js +0 -920
- package/demos/blockfactory/cp.css +0 -46
- package/demos/blockfactory/cp.js +0 -179
- package/demos/blockfactory/factory.css +0 -586
- package/demos/blockfactory/factory.js +0 -338
- package/demos/blockfactory/factory_utils.js +0 -1036
- package/demos/blockfactory/icon.png +0 -0
- package/demos/blockfactory/index.html +0 -767
- package/demos/blockfactory/link.png +0 -0
- package/demos/blockfactory/standard_categories.js +0 -384
- package/demos/blockfactory/workspacefactory/wfactory_controller.js +0 -1332
- package/demos/blockfactory/workspacefactory/wfactory_generator.js +0 -224
- package/demos/blockfactory/workspacefactory/wfactory_init.js +0 -541
- package/demos/blockfactory/workspacefactory/wfactory_model.js +0 -548
- package/demos/blockfactory/workspacefactory/wfactory_view.js +0 -424
- package/demos/code/code.js +0 -626
- package/demos/code/icon.png +0 -0
- package/demos/code/icons.png +0 -0
- package/demos/code/index.html +0 -359
- package/demos/code/msg/ar.js +0 -24
- package/demos/code/msg/be-tarask.js +0 -24
- package/demos/code/msg/br.js +0 -24
- package/demos/code/msg/ca.js +0 -24
- package/demos/code/msg/cs.js +0 -24
- package/demos/code/msg/da.js +0 -24
- package/demos/code/msg/de.js +0 -24
- package/demos/code/msg/el.js +0 -24
- package/demos/code/msg/en.js +0 -24
- package/demos/code/msg/es.js +0 -24
- package/demos/code/msg/et.js +0 -24
- package/demos/code/msg/fa.js +0 -24
- package/demos/code/msg/fr.js +0 -24
- package/demos/code/msg/he.js +0 -24
- package/demos/code/msg/hr.js +0 -24
- package/demos/code/msg/hrx.js +0 -24
- package/demos/code/msg/hu.js +0 -24
- package/demos/code/msg/ia.js +0 -24
- package/demos/code/msg/is.js +0 -24
- package/demos/code/msg/it.js +0 -24
- package/demos/code/msg/ja.js +0 -24
- package/demos/code/msg/kab.js +0 -24
- package/demos/code/msg/ko.js +0 -24
- package/demos/code/msg/mk.js +0 -24
- package/demos/code/msg/ms.js +0 -24
- package/demos/code/msg/nb.js +0 -24
- package/demos/code/msg/nl.js +0 -24
- package/demos/code/msg/oc.js +0 -24
- package/demos/code/msg/pl.js +0 -24
- package/demos/code/msg/pms.js +0 -24
- package/demos/code/msg/pt-br.js +0 -24
- package/demos/code/msg/ro.js +0 -24
- package/demos/code/msg/ru.js +0 -24
- package/demos/code/msg/sc.js +0 -24
- package/demos/code/msg/sk.js +0 -24
- package/demos/code/msg/sr.js +0 -24
- package/demos/code/msg/sv.js +0 -24
- package/demos/code/msg/ta.js +0 -24
- package/demos/code/msg/th.js +0 -24
- package/demos/code/msg/tlh.js +0 -24
- package/demos/code/msg/tr.js +0 -24
- package/demos/code/msg/uk.js +0 -24
- package/demos/code/msg/vi.js +0 -24
- package/demos/code/msg/zh-hans.js +0 -24
- package/demos/code/msg/zh-hant.js +0 -24
- package/demos/code/style.css +0 -184
- package/demos/index.html +0 -68
- package/demos/storage/icon.png +0 -0
- package/demos/storage/index.html +0 -104
- package/eslint.config.mjs +0 -314
- package/generators/dart/dart_generator.ts +0 -321
- package/generators/dart/lists.ts +0 -525
- package/generators/dart/logic.ts +0 -157
- package/generators/dart/loops.ts +0 -217
- package/generators/dart/math.ts +0 -559
- package/generators/dart/procedures.ts +0 -138
- package/generators/dart/text.ts +0 -405
- package/generators/dart/variables.ts +0 -32
- package/generators/dart/variables_dynamic.ts +0 -17
- package/generators/dart.ts +0 -50
- package/generators/javascript/javascript_generator.ts +0 -346
- package/generators/javascript/lists.ts +0 -465
- package/generators/javascript/logic.ts +0 -155
- package/generators/javascript/loops.ts +0 -245
- package/generators/javascript/math.ts +0 -450
- package/generators/javascript/procedures.ts +0 -142
- package/generators/javascript/text.ts +0 -418
- package/generators/javascript/variables.ts +0 -32
- package/generators/javascript/variables_dynamic.ts +0 -17
- package/generators/javascript.ts +0 -46
- package/generators/lua/lists.ts +0 -445
- package/generators/lua/logic.ts +0 -144
- package/generators/lua/loops.ts +0 -192
- package/generators/lua/lua_generator.ts +0 -225
- package/generators/lua/math.ts +0 -473
- package/generators/lua/procedures.ts +0 -144
- package/generators/lua/text.ts +0 -380
- package/generators/lua/variables.ts +0 -31
- package/generators/lua/variables_dynamic.ts +0 -17
- package/generators/lua.ts +0 -44
- package/generators/php/lists.ts +0 -585
- package/generators/php/logic.ts +0 -157
- package/generators/php/loops.ts +0 -218
- package/generators/php/math.ts +0 -408
- package/generators/php/php_generator.ts +0 -320
- package/generators/php/procedures.ts +0 -159
- package/generators/php/text.ts +0 -315
- package/generators/php/variables.ts +0 -32
- package/generators/php/variables_dynamic.ts +0 -17
- package/generators/php.ts +0 -46
- package/generators/python/lists.ts +0 -398
- package/generators/python/logic.ts +0 -152
- package/generators/python/loops.ts +0 -251
- package/generators/python/math.ts +0 -434
- package/generators/python/procedures.ts +0 -159
- package/generators/python/python_generator.ts +0 -355
- package/generators/python/text.ts +0 -338
- package/generators/python/variables.ts +0 -31
- package/generators/python/variables_dynamic.ts +0 -17
- package/generators/python.ts +0 -51
- package/gulpfile.mjs +0 -100
- package/jsconfig.json +0 -7
- package/msg/json/README.md +0 -33
- package/msg/json/ab.json +0 -222
- package/msg/json/ace.json +0 -7
- package/msg/json/af.json +0 -34
- package/msg/json/am.json +0 -30
- package/msg/json/ar.json +0 -355
- package/msg/json/ast.json +0 -10
- package/msg/json/az.json +0 -334
- package/msg/json/ba.json +0 -211
- package/msg/json/bcc.json +0 -290
- package/msg/json/be-tarask.json +0 -335
- package/msg/json/be.json +0 -326
- package/msg/json/bg.json +0 -347
- package/msg/json/bn.json +0 -189
- package/msg/json/br.json +0 -334
- package/msg/json/bs.json +0 -166
- package/msg/json/ca.json +0 -341
- package/msg/json/cdo.json +0 -6
- package/msg/json/ce.json +0 -328
- package/msg/json/constants.json +0 -12
- package/msg/json/cs.json +0 -344
- package/msg/json/da.json +0 -346
- package/msg/json/de.json +0 -369
- package/msg/json/diq.json +0 -264
- package/msg/json/dtp.json +0 -198
- package/msg/json/dty.json +0 -97
- package/msg/json/ee.json +0 -160
- package/msg/json/el.json +0 -356
- package/msg/json/en-gb.json +0 -199
- package/msg/json/en.json +0 -423
- package/msg/json/eo.json +0 -337
- package/msg/json/es.json +0 -361
- package/msg/json/et.json +0 -335
- package/msg/json/eu.json +0 -219
- package/msg/json/fa.json +0 -342
- package/msg/json/fi.json +0 -350
- package/msg/json/fo.json +0 -46
- package/msg/json/fr.json +0 -374
- package/msg/json/frr.json +0 -6
- package/msg/json/gl.json +0 -338
- package/msg/json/gn.json +0 -54
- package/msg/json/gor.json +0 -87
- package/msg/json/ha.json +0 -313
- package/msg/json/hak.json +0 -17
- package/msg/json/he.json +0 -355
- package/msg/json/hi.json +0 -318
- package/msg/json/hr.json +0 -337
- package/msg/json/hrx.json +0 -287
- package/msg/json/hsb.json +0 -128
- package/msg/json/hu.json +0 -349
- package/msg/json/hy.json +0 -337
- package/msg/json/ia.json +0 -337
- package/msg/json/id.json +0 -338
- package/msg/json/ig.json +0 -323
- package/msg/json/inh.json +0 -80
- package/msg/json/is.json +0 -331
- package/msg/json/it.json +0 -346
- package/msg/json/ja.json +0 -362
- package/msg/json/ka.json +0 -14
- package/msg/json/kab.json +0 -323
- package/msg/json/kbd-cyrl.json +0 -84
- package/msg/json/km.json +0 -29
- package/msg/json/kn.json +0 -333
- package/msg/json/ko.json +0 -377
- package/msg/json/ksh.json +0 -43
- package/msg/json/ku-latn.json +0 -41
- package/msg/json/ky.json +0 -71
- package/msg/json/la.json +0 -6
- package/msg/json/lb.json +0 -156
- package/msg/json/lki.json +0 -282
- package/msg/json/lo.json +0 -92
- package/msg/json/lrc.json +0 -123
- package/msg/json/lt.json +0 -321
- package/msg/json/lv.json +0 -324
- package/msg/json/mg.json +0 -58
- package/msg/json/mk.json +0 -178
- package/msg/json/ml.json +0 -35
- package/msg/json/mnw.json +0 -90
- package/msg/json/ms.json +0 -300
- package/msg/json/my.json +0 -57
- package/msg/json/mzn.json +0 -6
- package/msg/json/nb.json +0 -331
- package/msg/json/ne.json +0 -247
- package/msg/json/nl.json +0 -358
- package/msg/json/oc.json +0 -194
- package/msg/json/olo.json +0 -37
- package/msg/json/pa.json +0 -75
- package/msg/json/pl.json +0 -358
- package/msg/json/pms.json +0 -325
- package/msg/json/ps.json +0 -50
- package/msg/json/pt-br.json +0 -371
- package/msg/json/pt.json +0 -360
- package/msg/json/qqq.json +0 -430
- package/msg/json/ro.json +0 -333
- package/msg/json/ru.json +0 -363
- package/msg/json/sc.json +0 -283
- package/msg/json/sco.json +0 -11
- package/msg/json/sd.json +0 -158
- package/msg/json/shn.json +0 -109
- package/msg/json/si.json +0 -16
- package/msg/json/sk.json +0 -339
- package/msg/json/skr-arab.json +0 -117
- package/msg/json/sl.json +0 -355
- package/msg/json/smn.json +0 -133
- package/msg/json/sq.json +0 -343
- package/msg/json/sr-latn.json +0 -324
- package/msg/json/sr.json +0 -349
- package/msg/json/sv.json +0 -350
- package/msg/json/sw.json +0 -12
- package/msg/json/synonyms.json +0 -22
- package/msg/json/ta.json +0 -306
- package/msg/json/tcy.json +0 -316
- package/msg/json/tdd.json +0 -110
- package/msg/json/te.json +0 -101
- package/msg/json/th.json +0 -333
- package/msg/json/ti.json +0 -50
- package/msg/json/tl.json +0 -149
- package/msg/json/tlh.json +0 -179
- package/msg/json/tr.json +0 -370
- package/msg/json/ug-arab.json +0 -180
- package/msg/json/uk.json +0 -346
- package/msg/json/ur.json +0 -118
- package/msg/json/uz.json +0 -36
- package/msg/json/vi.json +0 -345
- package/msg/json/xmf.json +0 -99
- package/msg/json/yo.json +0 -316
- package/msg/json/zgh.json +0 -83
- package/msg/json/zh-hans.json +0 -374
- package/msg/json/zh-hant.json +0 -362
- package/msg/messages.js +0 -1695
- package/scripts/gulpfiles/appengine_tasks.mjs +0 -189
- package/scripts/gulpfiles/build_tasks.mjs +0 -753
- package/scripts/gulpfiles/config.mjs +0 -40
- package/scripts/gulpfiles/docs_tasks.mjs +0 -146
- package/scripts/gulpfiles/git_tasks.mjs +0 -167
- package/scripts/gulpfiles/helper_tasks.mjs +0 -25
- package/scripts/gulpfiles/package_tasks.mjs +0 -257
- package/scripts/gulpfiles/release_tasks.mjs +0 -174
- package/scripts/gulpfiles/test_tasks.mjs +0 -409
- package/scripts/helpers.js +0 -74
- package/scripts/i18n/common.py +0 -233
- package/scripts/i18n/create_messages.py +0 -167
- package/scripts/i18n/dedup_json.py +0 -72
- package/scripts/i18n/js_to_json.py +0 -135
- package/scripts/i18n/tests.py +0 -46
- package/scripts/migration/renamings.json5 +0 -1599
- package/scripts/package/index.js +0 -23
- package/scripts/package/templates/umd-msg.template +0 -16
- package/scripts/package/templates/umd.template +0 -13
- package/scripts/themes/blockStyles_example.json +0 -11
- package/scripts/themes/create_blockStyles.py +0 -184
- package/scripts/tsick.js +0 -86
- package/tests/browser/.mocharc.js +0 -7
- package/tests/browser/test/basic_block_factory_test.mjs +0 -44
- package/tests/browser/test/basic_block_test.mjs +0 -38
- package/tests/browser/test/basic_playground_test.mjs +0 -461
- package/tests/browser/test/block_undo_test.mjs +0 -50
- package/tests/browser/test/clipboard_test.mjs +0 -611
- package/tests/browser/test/delete_blocks_test.mjs +0 -217
- package/tests/browser/test/extensive_test.mjs +0 -191
- package/tests/browser/test/field_edits_test.mjs +0 -61
- package/tests/browser/test/hooks.mjs +0 -23
- package/tests/browser/test/mutator_test.mjs +0 -87
- package/tests/browser/test/procedure_test.mjs +0 -109
- package/tests/browser/test/test_setup.mjs +0 -623
- package/tests/browser/test/toolbox_drag_test.mjs +0 -219
- package/tests/browser/test/workspace_comment_test.mjs +0 -220
- package/tests/compile/index.html +0 -43
- package/tests/compile/main.js +0 -53
- package/tests/compile/test_blocks.js +0 -47
- package/tests/compile/webdriver.js +0 -81
- package/tests/generators/functions.xml +0 -561
- package/tests/generators/golden/generated.dart +0 -1604
- package/tests/generators/golden/generated.js +0 -1552
- package/tests/generators/golden/generated.lua +0 -1828
- package/tests/generators/golden/generated.php +0 -1611
- package/tests/generators/golden/generated.py +0 -1407
- package/tests/generators/index.html +0 -408
- package/tests/generators/lists.xml +0 -8675
- package/tests/generators/logic.xml +0 -1019
- package/tests/generators/loops1.xml +0 -345
- package/tests/generators/loops2.xml +0 -891
- package/tests/generators/loops3.xml +0 -735
- package/tests/generators/math.xml +0 -2077
- package/tests/generators/text.xml +0 -4651
- package/tests/generators/unittest.js +0 -103
- package/tests/generators/unittest_dart.js +0 -163
- package/tests/generators/unittest_javascript.js +0 -167
- package/tests/generators/unittest_lua.js +0 -165
- package/tests/generators/unittest_php.js +0 -154
- package/tests/generators/unittest_python.js +0 -138
- package/tests/generators/variables.xml +0 -68
- package/tests/generators/webdriver.js +0 -123
- package/tests/media/200px.png +0 -0
- package/tests/media/30px.png +0 -0
- package/tests/media/50px.png +0 -0
- package/tests/media/a.png +0 -0
- package/tests/media/arrow.png +0 -0
- package/tests/media/b.png +0 -0
- package/tests/media/c.png +0 -0
- package/tests/media/d.png +0 -0
- package/tests/media/e.png +0 -0
- package/tests/media/f.png +0 -0
- package/tests/media/g.png +0 -0
- package/tests/media/h.png +0 -0
- package/tests/media/i.png +0 -0
- package/tests/media/j.png +0 -0
- package/tests/media/k.png +0 -0
- package/tests/media/l.png +0 -0
- package/tests/media/m.png +0 -0
- package/tests/migration/renamings.schema.json +0 -59
- package/tests/migration/validate-renamings.mjs +0 -63
- package/tests/mocha/.mocharc.js +0 -6
- package/tests/mocha/block_json_test.js +0 -777
- package/tests/mocha/block_test.js +0 -2949
- package/tests/mocha/blocks/lists_test.js +0 -238
- package/tests/mocha/blocks/logic_ternary_test.js +0 -320
- package/tests/mocha/blocks/loops_test.js +0 -56
- package/tests/mocha/blocks/procedures_test.js +0 -2509
- package/tests/mocha/blocks/variables_test.js +0 -345
- package/tests/mocha/clipboard_test.js +0 -263
- package/tests/mocha/comment_deserialization_test.js +0 -122
- package/tests/mocha/comment_test.js +0 -215
- package/tests/mocha/comment_view_test.js +0 -188
- package/tests/mocha/connection_checker_test.js +0 -694
- package/tests/mocha/connection_db_test.js +0 -363
- package/tests/mocha/connection_test.js +0 -3738
- package/tests/mocha/contextmenu_items_test.js +0 -653
- package/tests/mocha/contextmenu_test.js +0 -73
- package/tests/mocha/cursor_test.js +0 -922
- package/tests/mocha/dialog_test.js +0 -168
- package/tests/mocha/dropdowndiv_test.js +0 -458
- package/tests/mocha/event_block_change_test.js +0 -126
- package/tests/mocha/event_block_create_test.js +0 -109
- package/tests/mocha/event_block_delete_test.js +0 -55
- package/tests/mocha/event_block_drag_test.js +0 -36
- package/tests/mocha/event_block_field_intermediate_change_test.js +0 -67
- package/tests/mocha/event_block_move_test.js +0 -39
- package/tests/mocha/event_bubble_open_test.js +0 -42
- package/tests/mocha/event_click_test.js +0 -40
- package/tests/mocha/event_comment_change_test.js +0 -39
- package/tests/mocha/event_comment_collapse_test.js +0 -34
- package/tests/mocha/event_comment_create_test.js +0 -38
- package/tests/mocha/event_comment_delete_test.js +0 -38
- package/tests/mocha/event_comment_drag_test.js +0 -35
- package/tests/mocha/event_comment_move_test.js +0 -40
- package/tests/mocha/event_comment_resize_test.js +0 -38
- package/tests/mocha/event_selected_test.js +0 -41
- package/tests/mocha/event_test.js +0 -1668
- package/tests/mocha/event_theme_change_test.js +0 -36
- package/tests/mocha/event_toolbox_item_select_test.js +0 -64
- package/tests/mocha/event_trashcan_open_test.js +0 -36
- package/tests/mocha/event_var_create_test.js +0 -54
- package/tests/mocha/event_var_delete_test.js +0 -54
- package/tests/mocha/event_var_rename_test.js +0 -39
- package/tests/mocha/event_var_type_change_test.js +0 -43
- package/tests/mocha/event_viewport_test.js +0 -39
- package/tests/mocha/extensions_test.js +0 -613
- package/tests/mocha/field_checkbox_test.js +0 -299
- package/tests/mocha/field_colour_test.js +0 -395
- package/tests/mocha/field_dropdown_test.js +0 -328
- package/tests/mocha/field_image_test.js +0 -351
- package/tests/mocha/field_label_serializable_test.js +0 -252
- package/tests/mocha/field_label_test.js +0 -226
- package/tests/mocha/field_number_test.js +0 -505
- package/tests/mocha/field_registry_test.js +0 -115
- package/tests/mocha/field_test.js +0 -821
- package/tests/mocha/field_textinput_test.js +0 -593
- package/tests/mocha/field_variable_test.js +0 -644
- package/tests/mocha/flyout_test.js +0 -650
- package/tests/mocha/focus_manager_test.js +0 -5979
- package/tests/mocha/focusable_tree_traverser_test.js +0 -602
- package/tests/mocha/generator_test.js +0 -233
- package/tests/mocha/gesture_test.js +0 -133
- package/tests/mocha/icon_test.js +0 -431
- package/tests/mocha/index.html +0 -354
- package/tests/mocha/input_test.js +0 -296
- package/tests/mocha/insertion_marker_test.js +0 -432
- package/tests/mocha/jso_deserialization_test.js +0 -848
- package/tests/mocha/jso_serialization_test.js +0 -1068
- package/tests/mocha/json_test.js +0 -303
- package/tests/mocha/keyboard_navigation_controller_test.js +0 -37
- package/tests/mocha/layering_test.js +0 -104
- package/tests/mocha/menu_item_test.js +0 -176
- package/tests/mocha/metrics_test.js +0 -671
- package/tests/mocha/mutator_test.js +0 -87
- package/tests/mocha/names_test.js +0 -97
- package/tests/mocha/navigation_test.js +0 -876
- package/tests/mocha/old_workspace_comment_test.js +0 -256
- package/tests/mocha/procedure_map_test.js +0 -52
- package/tests/mocha/rect_test.js +0 -1668
- package/tests/mocha/registry_test.js +0 -281
- package/tests/mocha/render_management_test.js +0 -127
- package/tests/mocha/serializer_test.js +0 -2100
- package/tests/mocha/shortcut_items_test.js +0 -563
- package/tests/mocha/shortcut_registry_test.js +0 -533
- package/tests/mocha/test_helpers/block_definitions.js +0 -204
- package/tests/mocha/test_helpers/code_generation.js +0 -114
- package/tests/mocha/test_helpers/common.js +0 -106
- package/tests/mocha/test_helpers/events.js +0 -290
- package/tests/mocha/test_helpers/fields.js +0 -310
- package/tests/mocha/test_helpers/icon_mocks.js +0 -130
- package/tests/mocha/test_helpers/procedures.js +0 -304
- package/tests/mocha/test_helpers/serialization.js +0 -124
- package/tests/mocha/test_helpers/setup_teardown.js +0 -232
- package/tests/mocha/test_helpers/toolbox_definitions.js +0 -269
- package/tests/mocha/test_helpers/user_input.js +0 -62
- package/tests/mocha/test_helpers/variables.js +0 -27
- package/tests/mocha/test_helpers/warnings.js +0 -83
- package/tests/mocha/test_helpers/workspace.js +0 -1659
- package/tests/mocha/theme_test.js +0 -307
- package/tests/mocha/toast_test.js +0 -129
- package/tests/mocha/toolbox_test.js +0 -821
- package/tests/mocha/tooltip_test.js +0 -276
- package/tests/mocha/touch_test.js +0 -109
- package/tests/mocha/trashcan_test.js +0 -376
- package/tests/mocha/utils_test.js +0 -557
- package/tests/mocha/variable_map_test.js +0 -470
- package/tests/mocha/variable_model_test.js +0 -85
- package/tests/mocha/webdriver.js +0 -110
- package/tests/mocha/widget_div_test.js +0 -427
- package/tests/mocha/workspace_comment_test.js +0 -197
- package/tests/mocha/workspace_svg_test.js +0 -922
- package/tests/mocha/workspace_test.js +0 -24
- package/tests/mocha/xml_test.js +0 -893
- package/tests/mocha/zoom_controls_test.js +0 -81
- package/tests/multi_playground.html +0 -482
- package/tests/node/.mocharc.js +0 -6
- package/tests/node/run_node_test.mjs +0 -191
- package/tests/playground.html +0 -1280
- package/tests/playgrounds/advanced_playground.html +0 -188
- package/tests/playgrounds/iframe.html +0 -40
- package/tests/playgrounds/screenshot.js +0 -123
- package/tests/scripts/check_metadata.sh +0 -170
- package/tests/scripts/load.mjs +0 -140
- package/tests/scripts/setup_linux_env.sh +0 -7
- package/tests/scripts/update_metadata.sh +0 -46
- package/tests/themes/test_themes.js +0 -62
- package/tests/typescript/README.md +0 -4
- package/tests/typescript/src/field/different_user_input.ts +0 -81
- package/tests/typescript/src/generators/dart.ts +0 -24
- package/tests/typescript/src/generators/javascript.ts +0 -28
- package/tests/typescript/src/generators/lua.ts +0 -24
- package/tests/typescript/src/generators/php.ts +0 -24
- package/tests/typescript/src/generators/python.ts +0 -24
- package/tests/typescript/src/generators.ts +0 -33
- package/tests/typescript/src/msg.ts +0 -20
- package/tests/typescript/tsconfig.json +0 -20
- package/tests/xml/README.txt +0 -11
- package/tests/xml/blockly.xsd +0 -178
- package/tests/xml/invalid.xml +0 -6
- package/tests/xml/toolbox.xml +0 -311
- package/tests/xml/workspace.xml +0 -114
- package/tsconfig.json +0 -37
- package/tsdoc.json +0 -25
- package/typings/README.md +0 -5
- package/typings/templates/blockly-header.template +0 -11
- package/typings/templates/blockly-interfaces.template +0 -83
- package/typings/templates/msg.template +0 -15
- package/typings/tsconfig.json +0 -23
- /package/{scripts/package/README.md → README.md} +0 -0
- /package/{typings/blocks.d.ts → blocks.d.ts} +0 -0
- /package/{scripts/package/core-node.js → core-node.js} +0 -0
- /package/{typings/core.d.ts → core.d.ts} +0 -0
- /package/{typings/dart.d.ts → dart.d.ts} +0 -0
- /package/{typings/index.d.ts → index.d.ts} +0 -0
- /package/{typings/javascript.d.ts → javascript.d.ts} +0 -0
- /package/{typings/lua.d.ts → lua.d.ts} +0 -0
- /package/{typings/msg → msg}/ab.d.ts +0 -0
- /package/{typings/msg → msg}/ace.d.ts +0 -0
- /package/{typings/msg → msg}/af.d.ts +0 -0
- /package/{typings/msg → msg}/am.d.ts +0 -0
- /package/{typings/msg → msg}/ar.d.ts +0 -0
- /package/{typings/msg → msg}/ast.d.ts +0 -0
- /package/{typings/msg → msg}/az.d.ts +0 -0
- /package/{typings/msg → msg}/ba.d.ts +0 -0
- /package/{typings/msg → msg}/bcc.d.ts +0 -0
- /package/{typings/msg → msg}/be-tarask.d.ts +0 -0
- /package/{typings/msg → msg}/be.d.ts +0 -0
- /package/{typings/msg → msg}/bg.d.ts +0 -0
- /package/{typings/msg → msg}/bn.d.ts +0 -0
- /package/{typings/msg → msg}/br.d.ts +0 -0
- /package/{typings/msg → msg}/bs.d.ts +0 -0
- /package/{typings/msg → msg}/ca.d.ts +0 -0
- /package/{typings/msg → msg}/cdo.d.ts +0 -0
- /package/{typings/msg → msg}/ce.d.ts +0 -0
- /package/{typings/msg → msg}/cs.d.ts +0 -0
- /package/{typings/msg → msg}/da.d.ts +0 -0
- /package/{typings/msg → msg}/de.d.ts +0 -0
- /package/{typings/msg → msg}/diq.d.ts +0 -0
- /package/{typings/msg → msg}/dtp.d.ts +0 -0
- /package/{typings/msg → msg}/dty.d.ts +0 -0
- /package/{typings/msg → msg}/ee.d.ts +0 -0
- /package/{typings/msg → msg}/el.d.ts +0 -0
- /package/{typings/msg → msg}/en-gb.d.ts +0 -0
- /package/{typings/msg → msg}/en.d.ts +0 -0
- /package/{typings/msg → msg}/eo.d.ts +0 -0
- /package/{typings/msg → msg}/es.d.ts +0 -0
- /package/{typings/msg → msg}/et.d.ts +0 -0
- /package/{typings/msg → msg}/eu.d.ts +0 -0
- /package/{typings/msg → msg}/fa.d.ts +0 -0
- /package/{typings/msg → msg}/fi.d.ts +0 -0
- /package/{typings/msg → msg}/fo.d.ts +0 -0
- /package/{typings/msg → msg}/fr.d.ts +0 -0
- /package/{typings/msg → msg}/frr.d.ts +0 -0
- /package/{typings/msg → msg}/gl.d.ts +0 -0
- /package/{typings/msg → msg}/gn.d.ts +0 -0
- /package/{typings/msg → msg}/gor.d.ts +0 -0
- /package/{typings/msg → msg}/ha.d.ts +0 -0
- /package/{typings/msg → msg}/hak.d.ts +0 -0
- /package/{typings/msg → msg}/he.d.ts +0 -0
- /package/{typings/msg → msg}/hi.d.ts +0 -0
- /package/{typings/msg → msg}/hr.d.ts +0 -0
- /package/{typings/msg → msg}/hrx.d.ts +0 -0
- /package/{typings/msg → msg}/hsb.d.ts +0 -0
- /package/{typings/msg → msg}/hu.d.ts +0 -0
- /package/{typings/msg → msg}/hy.d.ts +0 -0
- /package/{typings/msg → msg}/ia.d.ts +0 -0
- /package/{typings/msg → msg}/id.d.ts +0 -0
- /package/{typings/msg → msg}/ig.d.ts +0 -0
- /package/{typings/msg → msg}/inh.d.ts +0 -0
- /package/{typings/msg → msg}/is.d.ts +0 -0
- /package/{typings/msg → msg}/it.d.ts +0 -0
- /package/{typings/msg → msg}/ja.d.ts +0 -0
- /package/{typings/msg → msg}/ka.d.ts +0 -0
- /package/{typings/msg → msg}/kab.d.ts +0 -0
- /package/{typings/msg → msg}/kbd-cyrl.d.ts +0 -0
- /package/{typings/msg → msg}/km.d.ts +0 -0
- /package/{typings/msg → msg}/kn.d.ts +0 -0
- /package/{typings/msg → msg}/ko.d.ts +0 -0
- /package/{typings/msg → msg}/ksh.d.ts +0 -0
- /package/{typings/msg → msg}/ku-latn.d.ts +0 -0
- /package/{typings/msg → msg}/ky.d.ts +0 -0
- /package/{typings/msg → msg}/la.d.ts +0 -0
- /package/{typings/msg → msg}/lb.d.ts +0 -0
- /package/{typings/msg → msg}/lki.d.ts +0 -0
- /package/{typings/msg → msg}/lo.d.ts +0 -0
- /package/{typings/msg → msg}/lrc.d.ts +0 -0
- /package/{typings/msg → msg}/lt.d.ts +0 -0
- /package/{typings/msg → msg}/lv.d.ts +0 -0
- /package/{typings/msg → msg}/mg.d.ts +0 -0
- /package/{typings/msg → msg}/mk.d.ts +0 -0
- /package/{typings/msg → msg}/ml.d.ts +0 -0
- /package/{typings/msg → msg}/mnw.d.ts +0 -0
- /package/{typings/msg → msg}/ms.d.ts +0 -0
- /package/{typings/msg → msg}/msg.d.ts +0 -0
- /package/{typings/msg → msg}/my.d.ts +0 -0
- /package/{typings/msg → msg}/mzn.d.ts +0 -0
- /package/{typings/msg → msg}/nb.d.ts +0 -0
- /package/{typings/msg → msg}/ne.d.ts +0 -0
- /package/{typings/msg → msg}/nl.d.ts +0 -0
- /package/{typings/msg → msg}/oc.d.ts +0 -0
- /package/{typings/msg → msg}/olo.d.ts +0 -0
- /package/{typings/msg → msg}/pa.d.ts +0 -0
- /package/{typings/msg → msg}/pl.d.ts +0 -0
- /package/{typings/msg → msg}/pms.d.ts +0 -0
- /package/{typings/msg → msg}/ps.d.ts +0 -0
- /package/{typings/msg → msg}/pt-br.d.ts +0 -0
- /package/{typings/msg → msg}/pt.d.ts +0 -0
- /package/{typings/msg → msg}/ro.d.ts +0 -0
- /package/{typings/msg → msg}/ru.d.ts +0 -0
- /package/{typings/msg → msg}/sc.d.ts +0 -0
- /package/{typings/msg → msg}/sco.d.ts +0 -0
- /package/{typings/msg → msg}/sd.d.ts +0 -0
- /package/{typings/msg → msg}/shn.d.ts +0 -0
- /package/{typings/msg → msg}/si.d.ts +0 -0
- /package/{typings/msg → msg}/sk.d.ts +0 -0
- /package/{typings/msg → msg}/skr-arab.d.ts +0 -0
- /package/{typings/msg → msg}/sl.d.ts +0 -0
- /package/{typings/msg → msg}/smn.d.ts +0 -0
- /package/{typings/msg → msg}/sq.d.ts +0 -0
- /package/{typings/msg → msg}/sr-latn.d.ts +0 -0
- /package/{typings/msg → msg}/sr.d.ts +0 -0
- /package/{typings/msg → msg}/sv.d.ts +0 -0
- /package/{typings/msg → msg}/sw.d.ts +0 -0
- /package/{typings/msg → msg}/ta.d.ts +0 -0
- /package/{typings/msg → msg}/tcy.d.ts +0 -0
- /package/{typings/msg → msg}/tdd.d.ts +0 -0
- /package/{typings/msg → msg}/te.d.ts +0 -0
- /package/{typings/msg → msg}/th.d.ts +0 -0
- /package/{typings/msg → msg}/ti.d.ts +0 -0
- /package/{typings/msg → msg}/tl.d.ts +0 -0
- /package/{typings/msg → msg}/tlh.d.ts +0 -0
- /package/{typings/msg → msg}/tr.d.ts +0 -0
- /package/{typings/msg → msg}/ug-arab.d.ts +0 -0
- /package/{typings/msg → msg}/uk.d.ts +0 -0
- /package/{typings/msg → msg}/ur.d.ts +0 -0
- /package/{typings/msg → msg}/uz.d.ts +0 -0
- /package/{typings/msg → msg}/vi.d.ts +0 -0
- /package/{typings/msg → msg}/xmf.d.ts +0 -0
- /package/{typings/msg → msg}/yo.d.ts +0 -0
- /package/{typings/msg → msg}/zgh.d.ts +0 -0
- /package/{typings/msg → msg}/zh-hans.d.ts +0 -0
- /package/{typings/msg → msg}/zh-hant.d.ts +0 -0
- /package/{typings/php.d.ts → php.d.ts} +0 -0
- /package/{typings/python.d.ts → python.d.ts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["generators/python/lists.ts","generators/python/logic.ts","generators/python/loops.ts","generators/python/math.ts","generators/python/procedures.ts","generators/python/text.ts","generators/python/variables.ts","generators/python/python_generator.ts","generators/python/variables_dynamic.ts","generators/python.ts"],"names":["lists_create_empty","block","generator","Order","ATOMIC","lists_create_with","elements","Array","itemCount_","i","valueToCode","NONE","join","lists_repeat","item","times","MULTIPLICATIVE","lists_length","FUNCTION_CALL","lists_isEmpty","LOGICAL_NOT","lists_indexOf","list","errorIndex","firstIndexAdjustment","lastIndexAdjustment","workspace","options","oneBasedIndex","getFieldValue","functionName","provideFunction_","FUNCTION_NAME_PLACEHOLDER_","lists_getIndex","mode","where","listOrder","MEMBER","at","getAdjustedInt","definitions_","code","Error","lists_setIndex","value","match","listVar","nameDB_","getDistinctName","NameType","VARIABLE","xVar","lists_getSublist","where1","where2","at1","at2","isNumber","String","lists_sort","type","reverse","sortFunctionName","lists_split","value_input","value_delim","lists_reverse","controls_if","n","branchCode","conditionCode","STATEMENT_PREFIX","injectId","statementToCode","PASS","STATEMENT_SUFFIX","prefixLines","INDENT","getInput","logic_compare","operator","OPERATORS","order","RELATIONAL","argument0","argument1","logic_operation","LOGICAL_AND","LOGICAL_OR","defaultArgument","logic_negate","logic_boolean","logic_null","logic_ternary","value_if","CONDITIONAL","value_then","value_else","controls_repeat_ext","repeats","getField","parseInt","branch","addLoopTrap","loopVar","controls_whileUntil","until","controls_for","variable0","getVariableName","increment","defineUpRange","defineDownRange","Number","Math","abs","range","scrub","arg","suffix","varName","startVar","endVar","incVar","controls_forEach","controls_flow_statements","xfix","loop","getSurroundLoop","suppressPrefixSuffix","math_number","number","Infinity","UNARY_SIGN","math_arithmetic","tuple","ADDITIVE","EXPONENTIATION","math_single","math_constant","CONSTANTS","constant","math_number_property","PROPERTIES","dropdownProperty","inputOrder","outputOrder","numberToCheck","divisor","math_change","math_on_list","func","math_modulo","math_constrain","argument2","math_random_int","math_random_float","math_atan2","procedures_defreturn","globals","usedVariables","allUsedVarModels","variable","getName","getVars","includes","push","devVarList","allDeveloperVariables","length","DEVELOPER_VARIABLE","globalString","funcName","getProcedureName","xfix1","loopTrap","INFINITE_LOOP_TRAP","returnValue","xfix2","args","variables","scrub_","procedures_callreturn","procedures_callnoreturn","forBlock","procedures_ifreturn","hasReturnValue_","text","quote_","text_join","element","codeAndOrder","forceString","element0","element1","tempVar","text_append","text_length","text_isEmpty","text_indexOf","substring","text_charAt","textOrder","text_getSubstring","text_changeCase","text_trim","text_print","text_prompt_ext","msg","text_count","sub","text_replace","from","to","text_reverse","variables_get","variables_set","COLLECTION","STRING_CONVERSION","BITWISE_NOT","BITWISE_SHIFT","BITWISE_AND","BITWISE_XOR","BITWISE_OR","LAMBDA","PythonGenerator","CodeGenerator","constructor","name","ORDER_OVERRIDES","isInitialized","key","addReservedWords","init","reset","Names","RESERVED_WORDS_","setVariableMap","getVariableMap","populateVariables","populateProcedures","defvars","DEVELOPER_VARIABLE_TYPE","getId","finish","imports","definitions","def","replace","scrubNakedValue","line","string","quote","multiline_quote_","split","map","lines","thisOnly","commentCode","outputConnection","targetConnection","comment","getCommentText","wrap","COMMENT_WRAP","inputList","inputTypes","VALUE","childBlock","connection","targetBlock","allNestedComments","nextBlock","nextConnection","nextCode","blockToCode","atId","delta","negate","defaultAtIndex","atOrder","$jscomp$tmp$exports$module$name","controls_ifelse","controls_repeat","math_round","math_trig","procedures_defnoreturn","strRegExp","test","text_prompt","pythonGenerator","generators","lists","logic","loops","math","procedures","variablesDynamic"],"mappings":"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","file":"python_compressed.js","sourcesContent":["/**\n * @license\n * Copyright 2012 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @file Generating Python for list blocks.\n */\n\n// Former goog.module ID: Blockly.Python.lists\n\nimport type {CreateWithBlock} from '../../blocks/lists.js';\nimport type {Block} from '../../core/block.js';\nimport {NameType} from '../../core/names.js';\nimport * as stringUtils from '../../core/utils/string.js';\nimport type {PythonGenerator} from './python_generator.js';\nimport {Order} from './python_generator.js';\n\nexport function lists_create_empty(\n block: Block,\n generator: PythonGenerator,\n): [string, Order] {\n // Create an empty list.\n return ['[]', Order.ATOMIC];\n}\n\nexport function lists_create_with(\n block: Block,\n generator: PythonGenerator,\n): [string, Order] {\n // Create a list with any number of elements of any type.\n const createWithBlock = block as CreateWithBlock;\n const elements = new Array(createWithBlock.itemCount_);\n for (let i = 0; i < createWithBlock.itemCount_; i++) {\n elements[i] = generator.valueToCode(block, 'ADD' + i, Order.NONE) || 'None';\n }\n const code = '[' + elements.join(', ') + ']';\n return [code, Order.ATOMIC];\n}\n\nexport function lists_repeat(\n block: Block,\n generator: PythonGenerator,\n): [string, Order] {\n // Create a list with one element repeated.\n const item = generator.valueToCode(block, 'ITEM', Order.NONE) || 'None';\n const times =\n generator.valueToCode(block, 'NUM', Order.MULTIPLICATIVE) || '0';\n const code = '[' + item + '] * ' + times;\n return [code, Order.MULTIPLICATIVE];\n}\n\nexport function lists_length(\n block: Block,\n generator: PythonGenerator,\n): [string, Order] {\n // String or array length.\n const list = generator.valueToCode(block, 'VALUE', Order.NONE) || '[]';\n return ['len(' + list + ')', Order.FUNCTION_CALL];\n}\n\nexport function lists_isEmpty(\n block: Block,\n generator: PythonGenerator,\n): [string, Order] {\n // Is the string null or array empty?\n const list = generator.valueToCode(block, 'VALUE', Order.NONE) || '[]';\n const code = 'not len(' + list + ')';\n return [code, Order.LOGICAL_NOT];\n}\n\nexport function lists_indexOf(\n block: Block,\n generator: PythonGenerator,\n): [string, Order] {\n // Find an item in the list.\n const item = generator.valueToCode(block, 'FIND', Order.NONE) || '[]';\n const list = generator.valueToCode(block, 'VALUE', Order.NONE) || \"''\";\n let errorIndex = ' -1';\n let firstIndexAdjustment = '';\n let lastIndexAdjustment = ' - 1';\n\n if (block.workspace.options.oneBasedIndex) {\n errorIndex = ' 0';\n firstIndexAdjustment = ' + 1';\n lastIndexAdjustment = '';\n }\n\n let functionName;\n if (block.getFieldValue('END') === 'FIRST') {\n functionName = generator.provideFunction_(\n 'first_index',\n `\ndef ${generator.FUNCTION_NAME_PLACEHOLDER_}(my_list, elem):\n try: index = my_list.index(elem)${firstIndexAdjustment}\n except: index =${errorIndex}\n return index\n`,\n );\n } else {\n functionName = generator.provideFunction_(\n 'last_index',\n `\ndef ${generator.FUNCTION_NAME_PLACEHOLDER_}(my_list, elem):\n try: index = len(my_list) - my_list[::-1].index(elem)${lastIndexAdjustment}\n except: index =${errorIndex}\n return index\n`,\n );\n }\n const code = functionName + '(' + list + ', ' + item + ')';\n return [code, Order.FUNCTION_CALL];\n}\n\nexport function lists_getIndex(\n block: Block,\n generator: PythonGenerator,\n): [string, Order] | string {\n // Get element at index.\n // Note: Until January 2013 this block did not have MODE or WHERE inputs.\n const mode = block.getFieldValue('MODE') || 'GET';\n const where = block.getFieldValue('WHERE') || 'FROM_START';\n const listOrder = where === 'RANDOM' ? Order.NONE : Order.MEMBER;\n const list = generator.valueToCode(block, 'VALUE', listOrder) || '[]';\n\n switch (where) {\n case 'FIRST':\n if (mode === 'GET') {\n const code = list + '[0]';\n return [code, Order.MEMBER];\n } else if (mode === 'GET_REMOVE') {\n const code = list + '.pop(0)';\n return [code, Order.FUNCTION_CALL];\n } else if (mode === 'REMOVE') {\n return list + '.pop(0)\\n';\n }\n break;\n case 'LAST':\n if (mode === 'GET') {\n const code = list + '[-1]';\n return [code, Order.MEMBER];\n } else if (mode === 'GET_REMOVE') {\n const code = list + '.pop()';\n return [code, Order.FUNCTION_CALL];\n } else if (mode === 'REMOVE') {\n return list + '.pop()\\n';\n }\n break;\n case 'FROM_START': {\n const at = generator.getAdjustedInt(block, 'AT');\n if (mode === 'GET') {\n const code = list + '[' + at + ']';\n return [code, Order.MEMBER];\n } else if (mode === 'GET_REMOVE') {\n const code = list + '.pop(' + at + ')';\n return [code, Order.FUNCTION_CALL];\n } else if (mode === 'REMOVE') {\n return list + '.pop(' + at + ')\\n';\n }\n break;\n }\n case 'FROM_END': {\n const at = generator.getAdjustedInt(block, 'AT', 1, true);\n if (mode === 'GET') {\n const code = list + '[' + at + ']';\n return [code, Order.MEMBER];\n } else if (mode === 'GET_REMOVE') {\n const code = list + '.pop(' + at + ')';\n return [code, Order.FUNCTION_CALL];\n } else if (mode === 'REMOVE') {\n return list + '.pop(' + at + ')\\n';\n }\n break;\n }\n case 'RANDOM':\n (generator as AnyDuringMigration).definitions_['import_random'] =\n 'import random';\n if (mode === 'GET') {\n const code = 'random.choice(' + list + ')';\n return [code, Order.FUNCTION_CALL];\n } else {\n const functionName = generator.provideFunction_(\n 'lists_remove_random_item',\n `\ndef ${generator.FUNCTION_NAME_PLACEHOLDER_}(myList):\n x = int(random.random() * len(myList))\n return myList.pop(x)\n`,\n );\n const code = functionName + '(' + list + ')';\n if (mode === 'GET_REMOVE') {\n return [code, Order.FUNCTION_CALL];\n } else if (mode === 'REMOVE') {\n return code + '\\n';\n }\n }\n break;\n }\n throw Error('Unhandled combination (lists_getIndex).');\n}\n\nexport function lists_setIndex(block: Block, generator: PythonGenerator) {\n // Set element at index.\n // Note: Until February 2013 this block did not have MODE or WHERE inputs.\n let list = generator.valueToCode(block, 'LIST', Order.MEMBER) || '[]';\n const mode = block.getFieldValue('MODE') || 'GET';\n const where = block.getFieldValue('WHERE') || 'FROM_START';\n const value = generator.valueToCode(block, 'TO', Order.NONE) || 'None';\n // Cache non-trivial values to variables to prevent repeated look-ups.\n // Closure, which accesses and modifies 'list'.\n function cacheList() {\n if (list.match(/^\\w+$/)) {\n return '';\n }\n const listVar = generator.nameDB_!.getDistinctName(\n 'tmp_list',\n NameType.VARIABLE,\n );\n const code = listVar + ' = ' + list + '\\n';\n list = listVar;\n return code;\n }\n\n switch (where) {\n case 'FIRST':\n if (mode === 'SET') {\n return list + '[0] = ' + value + '\\n';\n } else if (mode === 'INSERT') {\n return list + '.insert(0, ' + value + ')\\n';\n }\n break;\n case 'LAST':\n if (mode === 'SET') {\n return list + '[-1] = ' + value + '\\n';\n } else if (mode === 'INSERT') {\n return list + '.append(' + value + ')\\n';\n }\n break;\n case 'FROM_START': {\n const at = generator.getAdjustedInt(block, 'AT');\n if (mode === 'SET') {\n return list + '[' + at + '] = ' + value + '\\n';\n } else if (mode === 'INSERT') {\n return list + '.insert(' + at + ', ' + value + ')\\n';\n }\n break;\n }\n case 'FROM_END': {\n const at = generator.getAdjustedInt(block, 'AT', 1, true);\n if (mode === 'SET') {\n return list + '[' + at + '] = ' + value + '\\n';\n } else if (mode === 'INSERT') {\n return list + '.insert(' + at + ', ' + value + ')\\n';\n }\n break;\n }\n case 'RANDOM': {\n (generator as AnyDuringMigration).definitions_['import_random'] =\n 'import random';\n let code = cacheList();\n const xVar = generator.nameDB_!.getDistinctName(\n 'tmp_x',\n NameType.VARIABLE,\n );\n code += xVar + ' = int(random.random() * len(' + list + '))\\n';\n if (mode === 'SET') {\n code += list + '[' + xVar + '] = ' + value + '\\n';\n return code;\n } else if (mode === 'INSERT') {\n code += list + '.insert(' + xVar + ', ' + value + ')\\n';\n return code;\n }\n break;\n }\n }\n throw Error('Unhandled combination (lists_setIndex).');\n}\n\nexport function lists_getSublist(\n block: Block,\n generator: PythonGenerator,\n): [string, Order] {\n // Get sublist.\n const list = generator.valueToCode(block, 'LIST', Order.MEMBER) || '[]';\n const where1 = block.getFieldValue('WHERE1');\n const where2 = block.getFieldValue('WHERE2');\n let at1;\n switch (where1) {\n case 'FROM_START':\n at1 = generator.getAdjustedInt(block, 'AT1');\n if (at1 === 0) {\n at1 = '';\n }\n break;\n case 'FROM_END':\n at1 = generator.getAdjustedInt(block, 'AT1', 1, true);\n break;\n case 'FIRST':\n at1 = '';\n break;\n default:\n throw Error('Unhandled option (lists_getSublist)');\n }\n\n let at2;\n switch (where2) {\n case 'FROM_START':\n at2 = generator.getAdjustedInt(block, 'AT2', 1);\n break;\n case 'FROM_END':\n at2 = generator.getAdjustedInt(block, 'AT2', 0, true);\n // Ensure that if the result calculated is 0 that sub-sequence will\n // include all elements as expected.\n if (!stringUtils.isNumber(String(at2))) {\n (generator as AnyDuringMigration).definitions_['import_sys'] =\n 'import sys';\n at2 += ' or sys.maxsize';\n } else if (at2 === 0) {\n at2 = '';\n }\n break;\n case 'LAST':\n at2 = '';\n break;\n default:\n throw Error('Unhandled option (lists_getSublist)');\n }\n const code = list + '[' + at1 + ' : ' + at2 + ']';\n return [code, Order.MEMBER];\n}\n\nexport function lists_sort(\n block: Block,\n generator: PythonGenerator,\n): [string, Order] {\n // Block for sorting a list.\n const list = generator.valueToCode(block, 'LIST', Order.NONE) || '[]';\n const type = block.getFieldValue('TYPE');\n const reverse = block.getFieldValue('DIRECTION') === '1' ? 'False' : 'True';\n const sortFunctionName = generator.provideFunction_(\n 'lists_sort',\n `\ndef ${generator.FUNCTION_NAME_PLACEHOLDER_}(my_list, type, reverse):\n def try_float(s):\n try:\n return float(s)\n except:\n return 0\n key_funcs = {\n \"NUMERIC\": try_float,\n \"TEXT\": str,\n \"IGNORE_CASE\": lambda s: str(s).lower()\n }\n key_func = key_funcs[type]\n list_cpy = list(my_list)\n return sorted(list_cpy, key=key_func, reverse=reverse)\n`,\n );\n\n const code =\n sortFunctionName + '(' + list + ', \"' + type + '\", ' + reverse + ')';\n return [code, Order.FUNCTION_CALL];\n}\n\nexport function lists_split(\n block: Block,\n generator: PythonGenerator,\n): [string, Order] {\n // Block for splitting text into a list, or joining a list into text.\n const mode = block.getFieldValue('MODE');\n let code;\n if (mode === 'SPLIT') {\n const value_input =\n generator.valueToCode(block, 'INPUT', Order.MEMBER) || \"''\";\n const value_delim = generator.valueToCode(block, 'DELIM', Order.NONE);\n code = value_input + '.split(' + value_delim + ')';\n } else if (mode === 'JOIN') {\n const value_input =\n generator.valueToCode(block, 'INPUT', Order.NONE) || '[]';\n const value_delim =\n generator.valueToCode(block, 'DELIM', Order.MEMBER) || \"''\";\n code = value_delim + '.join(' + value_input + ')';\n } else {\n throw Error('Unknown mode: ' + mode);\n }\n return [code, Order.FUNCTION_CALL];\n}\n\nexport function lists_reverse(\n block: Block,\n generator: PythonGenerator,\n): [string, Order] {\n // Block for reversing a list.\n const list = generator.valueToCode(block, 'LIST', Order.NONE) || '[]';\n const code = 'list(reversed(' + list + '))';\n return [code, Order.FUNCTION_CALL];\n}\n","/**\n * @license\n * Copyright 2012 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @file Generating Python for logic blocks.\n */\n\n// Former goog.module ID: Blockly.Python.logic\n\nimport type {Block} from '../../core/block.js';\nimport type {PythonGenerator} from './python_generator.js';\nimport {Order} from './python_generator.js';\n\nexport function controls_if(block: Block, generator: PythonGenerator) {\n // If/elseif/else condition.\n let n = 0;\n let code = '',\n branchCode,\n conditionCode;\n if (generator.STATEMENT_PREFIX) {\n // Automatic prefix insertion is switched off for this block. Add manually.\n code += generator.injectId(generator.STATEMENT_PREFIX, block);\n }\n do {\n conditionCode =\n generator.valueToCode(block, 'IF' + n, Order.NONE) || 'False';\n branchCode = generator.statementToCode(block, 'DO' + n) || generator.PASS;\n if (generator.STATEMENT_SUFFIX) {\n branchCode =\n generator.prefixLines(\n generator.injectId(generator.STATEMENT_SUFFIX, block),\n generator.INDENT,\n ) + branchCode;\n }\n code += (n === 0 ? 'if ' : 'elif ') + conditionCode + ':\\n' + branchCode;\n n++;\n } while (block.getInput('IF' + n));\n\n if (block.getInput('ELSE') || generator.STATEMENT_SUFFIX) {\n if (block.getInput('ELSE')) {\n branchCode = generator.statementToCode(block, 'ELSE') || generator.PASS;\n } else {\n branchCode = generator.PASS;\n }\n if (generator.STATEMENT_SUFFIX) {\n branchCode =\n generator.prefixLines(\n generator.injectId(generator.STATEMENT_SUFFIX, block),\n generator.INDENT,\n ) + branchCode;\n }\n code += 'else:\\n' + branchCode;\n }\n return code;\n}\n\nexport const controls_ifelse = controls_if;\n\nexport function logic_compare(\n block: Block,\n generator: PythonGenerator,\n): [string, Order] {\n // Comparison operator.\n const OPERATORS = {\n 'EQ': '==',\n 'NEQ': '!=',\n 'LT': '<',\n 'LTE': '<=',\n 'GT': '>',\n 'GTE': '>=',\n };\n type OperatorOption = keyof typeof OPERATORS;\n const operator = OPERATORS[block.getFieldValue('OP') as OperatorOption];\n const order = Order.RELATIONAL;\n const argument0 = generator.valueToCode(block, 'A', order) || '0';\n const argument1 = generator.valueToCode(block, 'B', order) || '0';\n const code = argument0 + ' ' + operator + ' ' + argument1;\n return [code, order];\n}\n\nexport function logic_operation(\n block: Block,\n generator: PythonGenerator,\n): [string, Order] {\n // Operations 'and', 'or'.\n const operator = block.getFieldValue('OP') === 'AND' ? 'and' : 'or';\n const order = operator === 'and' ? Order.LOGICAL_AND : Order.LOGICAL_OR;\n let argument0 = generator.valueToCode(block, 'A', order);\n let argument1 = generator.valueToCode(block, 'B', order);\n if (!argument0 && !argument1) {\n // If there are no arguments, then the return value is false.\n argument0 = 'False';\n argument1 = 'False';\n } else {\n // Single missing arguments have no effect on the return value.\n const defaultArgument = operator === 'and' ? 'True' : 'False';\n if (!argument0) {\n argument0 = defaultArgument;\n }\n if (!argument1) {\n argument1 = defaultArgument;\n }\n }\n const code = argument0 + ' ' + operator + ' ' + argument1;\n return [code, order];\n}\n\nexport function logic_negate(\n block: Block,\n generator: PythonGenerator,\n): [string, Order] {\n // Negation.\n const argument0 =\n generator.valueToCode(block, 'BOOL', Order.LOGICAL_NOT) || 'True';\n const code = 'not ' + argument0;\n return [code, Order.LOGICAL_NOT];\n}\n\nexport function logic_boolean(\n block: Block,\n generator: PythonGenerator,\n): [string, Order] {\n // Boolean values true and false.\n const code = block.getFieldValue('BOOL') === 'TRUE' ? 'True' : 'False';\n return [code, Order.ATOMIC];\n}\n\nexport function logic_null(\n block: Block,\n generator: PythonGenerator,\n): [string, Order] {\n // Null data type.\n return ['None', Order.ATOMIC];\n}\n\nexport function logic_ternary(\n block: Block,\n generator: PythonGenerator,\n): [string, Order] {\n // Ternary operator.\n const value_if =\n generator.valueToCode(block, 'IF', Order.CONDITIONAL) || 'False';\n const value_then =\n generator.valueToCode(block, 'THEN', Order.CONDITIONAL) || 'None';\n const value_else =\n generator.valueToCode(block, 'ELSE', Order.CONDITIONAL) || 'None';\n const code = value_then + ' if ' + value_if + ' else ' + value_else;\n return [code, Order.CONDITIONAL];\n}\n","/**\n * @license\n * Copyright 2012 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @file Generating Python for loop blocks.\n */\n\n// Former goog.module ID: Blockly.Python.loops\n\nimport type {ControlFlowInLoopBlock} from '../../blocks/loops.js';\nimport type {Block} from '../../core/block.js';\nimport {NameType} from '../../core/names.js';\nimport * as stringUtils from '../../core/utils/string.js';\nimport type {PythonGenerator} from './python_generator.js';\nimport {Order} from './python_generator.js';\n\nexport function controls_repeat_ext(block: Block, generator: PythonGenerator) {\n // Repeat n times.\n let repeats;\n if (block.getField('TIMES')) {\n // Internal number.\n repeats = String(parseInt(block.getFieldValue('TIMES'), 10));\n } else {\n // External number.\n repeats = generator.valueToCode(block, 'TIMES', Order.NONE) || '0';\n }\n if (stringUtils.isNumber(repeats)) {\n repeats = parseInt(repeats, 10);\n } else {\n repeats = 'int(' + repeats + ')';\n }\n let branch = generator.statementToCode(block, 'DO');\n branch = generator.addLoopTrap(branch, block) || generator.PASS;\n const loopVar = generator.nameDB_!.getDistinctName(\n 'count',\n NameType.VARIABLE,\n );\n const code = 'for ' + loopVar + ' in range(' + repeats + '):\\n' + branch;\n return code;\n}\n\nexport const controls_repeat = controls_repeat_ext;\n\nexport function controls_whileUntil(block: Block, generator: PythonGenerator) {\n // Do while/until loop.\n const until = block.getFieldValue('MODE') === 'UNTIL';\n let argument0 =\n generator.valueToCode(\n block,\n 'BOOL',\n until ? Order.LOGICAL_NOT : Order.NONE,\n ) || 'False';\n let branch = generator.statementToCode(block, 'DO');\n branch = generator.addLoopTrap(branch, block) || generator.PASS;\n if (until) {\n argument0 = 'not ' + argument0;\n }\n return 'while ' + argument0 + ':\\n' + branch;\n}\n\nexport function controls_for(block: Block, generator: PythonGenerator) {\n // For loop.\n const variable0 = generator.getVariableName(block.getFieldValue('VAR'));\n let argument0: string | number =\n generator.valueToCode(block, 'FROM', Order.NONE) || '0';\n let argument1: string | number =\n generator.valueToCode(block, 'TO', Order.NONE) || '0';\n let increment: string | number =\n generator.valueToCode(block, 'BY', Order.NONE) || '1';\n let branch = generator.statementToCode(block, 'DO');\n branch = generator.addLoopTrap(branch, block) || generator.PASS;\n\n let code = '';\n let range;\n\n // Helper functions.\n const defineUpRange = function () {\n return generator.provideFunction_(\n 'upRange',\n `\ndef ${generator.FUNCTION_NAME_PLACEHOLDER_}(start, stop, step):\n while start <= stop:\n yield start\n start += abs(step)\n`,\n );\n };\n const defineDownRange = function () {\n return generator.provideFunction_(\n 'downRange',\n `\ndef ${generator.FUNCTION_NAME_PLACEHOLDER_}(start, stop, step):\n while start >= stop:\n yield start\n start -= abs(step)\n`,\n );\n };\n // Arguments are legal generator code (numbers or strings returned by scrub()).\n const generateUpDownRange = function (\n start: string,\n end: string,\n inc: string,\n ) {\n return (\n '(' +\n start +\n ' <= ' +\n end +\n ') and ' +\n defineUpRange() +\n '(' +\n start +\n ', ' +\n end +\n ', ' +\n inc +\n ') or ' +\n defineDownRange() +\n '(' +\n start +\n ', ' +\n end +\n ', ' +\n inc +\n ')'\n );\n };\n\n if (\n stringUtils.isNumber(argument0) &&\n stringUtils.isNumber(argument1) &&\n stringUtils.isNumber(increment)\n ) {\n // All parameters are simple numbers.\n argument0 = Number(argument0);\n argument1 = Number(argument1);\n increment = Math.abs(Number(increment));\n if (argument0 % 1 === 0 && argument1 % 1 === 0 && increment % 1 === 0) {\n // All parameters are integers.\n if (argument0 <= argument1) {\n // Count up.\n argument1++;\n if (argument0 === 0 && increment === 1) {\n // If starting index is 0, omit it.\n range = argument1;\n } else {\n range = argument0 + ', ' + argument1;\n }\n // If increment isn't 1, it must be explicit.\n if (increment !== 1) {\n range += ', ' + increment;\n }\n } else {\n // Count down.\n argument1--;\n range = argument0 + ', ' + argument1 + ', -' + increment;\n }\n range = 'range(' + range + ')';\n } else {\n // At least one of the parameters is not an integer.\n if (argument0 < argument1) {\n range = defineUpRange();\n } else {\n range = defineDownRange();\n }\n range += '(' + argument0 + ', ' + argument1 + ', ' + increment + ')';\n }\n } else {\n // Cache non-trivial values to variables to prevent repeated look-ups.\n const scrub = function (arg: string, suffix: string) {\n if (stringUtils.isNumber(arg)) {\n // Simple number.\n arg = String(Number(arg));\n } else if (!arg.match(/^\\w+$/)) {\n // Not a variable, it's complicated.\n const varName = generator.nameDB_!.getDistinctName(\n variable0 + suffix,\n NameType.VARIABLE,\n );\n code += varName + ' = ' + arg + '\\n';\n arg = varName;\n }\n return arg;\n };\n const startVar = scrub(argument0, '_start');\n const endVar = scrub(argument1, '_end');\n const incVar = scrub(increment, '_inc');\n\n if (typeof startVar === 'number' && typeof endVar === 'number') {\n if (startVar < endVar) {\n range = defineUpRange();\n } else {\n range = defineDownRange();\n }\n range += '(' + startVar + ', ' + endVar + ', ' + incVar + ')';\n } else {\n // We cannot determine direction statically.\n range = generateUpDownRange(startVar, endVar, incVar);\n }\n }\n code += 'for ' + variable0 + ' in ' + range + ':\\n' + branch;\n return code;\n}\n\nexport function controls_forEach(block: Block, generator: PythonGenerator) {\n // For each loop.\n const variable0 = generator.getVariableName(block.getFieldValue('VAR'));\n const argument0 =\n generator.valueToCode(block, 'LIST', Order.RELATIONAL) || '[]';\n let branch = generator.statementToCode(block, 'DO');\n branch = generator.addLoopTrap(branch, block) || generator.PASS;\n const code = 'for ' + variable0 + ' in ' + argument0 + ':\\n' + branch;\n return code;\n}\n\nexport function controls_flow_statements(\n block: Block,\n generator: PythonGenerator,\n) {\n // Flow statements: continue, break.\n let xfix = '';\n if (generator.STATEMENT_PREFIX) {\n // Automatic prefix insertion is switched off for this block. Add manually.\n xfix += generator.injectId(generator.STATEMENT_PREFIX, block);\n }\n if (generator.STATEMENT_SUFFIX) {\n // Inject any statement suffix here since the regular one at the end\n // will not get executed if the break/continue is triggered.\n xfix += generator.injectId(generator.STATEMENT_SUFFIX, block);\n }\n if (generator.STATEMENT_PREFIX) {\n const loop = (block as ControlFlowInLoopBlock).getSurroundLoop();\n if (loop && !loop.suppressPrefixSuffix) {\n // Inject loop's statement prefix here since the regular one at the end\n // of the loop will not get executed if 'continue' is triggered.\n // In the case of 'break', a prefix is needed due to the loop's suffix.\n xfix += generator.injectId(generator.STATEMENT_PREFIX, loop);\n }\n }\n switch (block.getFieldValue('FLOW')) {\n case 'BREAK':\n return xfix + 'break\\n';\n case 'CONTINUE':\n return xfix + 'continue\\n';\n }\n throw Error('Unknown flow statement.');\n}\n","/**\n * @license\n * Copyright 2012 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @file Generating Python for math blocks.\n */\n\n// Former goog.module ID: Blockly.Python.math\n\nimport type {Block} from '../../core/block.js';\nimport type {PythonGenerator} from './python_generator.js';\nimport {Order} from './python_generator.js';\n\n// If any new block imports any library, add that library name here.\n// RESERVED WORDS: 'math,random,Number'\n\nexport function math_number(\n block: Block,\n generator: PythonGenerator,\n): [string, Order] {\n // Numeric value.\n let number = Number(block.getFieldValue('NUM'));\n if (number === Infinity) {\n return ['float(\"inf\")', Order.FUNCTION_CALL];\n } else if (number === -Infinity) {\n return ['-float(\"inf\")', Order.UNARY_SIGN];\n } else {\n return [String(number), number < 0 ? Order.UNARY_SIGN : Order.ATOMIC];\n }\n}\n\nexport function math_arithmetic(\n block: Block,\n generator: PythonGenerator,\n): [string, Order] {\n // Basic arithmetic operators, and power.\n const OPERATORS: Record<string, [string | null, Order]> = {\n 'ADD': [' + ', Order.ADDITIVE],\n 'MINUS': [' - ', Order.ADDITIVE],\n 'MULTIPLY': [' * ', Order.MULTIPLICATIVE],\n 'DIVIDE': [' / ', Order.MULTIPLICATIVE],\n 'POWER': [' ** ', Order.EXPONENTIATION],\n };\n type OperatorOption = keyof typeof OPERATORS;\n const tuple = OPERATORS[block.getFieldValue('OP') as OperatorOption];\n const operator = tuple[0];\n const order = tuple[1];\n const argument0 = generator.valueToCode(block, 'A', order) || '0';\n const argument1 = generator.valueToCode(block, 'B', order) || '0';\n const code = argument0 + operator + argument1;\n return [code, order];\n // In case of 'DIVIDE', division between integers returns different results\n // in generator 2 and 3. However, is not an issue since Blockly does not\n // guarantee identical results in all languages. To do otherwise would\n // require every operator to be wrapped in a function call. This would kill\n // legibility of the generated code.\n}\n\nexport function math_single(\n block: Block,\n generator: PythonGenerator,\n): [string, Order] {\n // Math operators with single operand.\n const operator = block.getFieldValue('OP');\n let code;\n let arg;\n if (operator === 'NEG') {\n // Negation is a special case given its different operator precedence.\n code = generator.valueToCode(block, 'NUM', Order.UNARY_SIGN) || '0';\n return ['-' + code, Order.UNARY_SIGN];\n }\n // TODO(#7600): find better approach than casting to any to override\n // CodeGenerator declaring .definitions protected (here and below).\n (generator as AnyDuringMigration).definitions_['import_math'] = 'import math';\n if (operator === 'SIN' || operator === 'COS' || operator === 'TAN') {\n arg = generator.valueToCode(block, 'NUM', Order.MULTIPLICATIVE) || '0';\n } else {\n arg = generator.valueToCode(block, 'NUM', Order.NONE) || '0';\n }\n // First, handle cases which generate values that don't need parentheses\n // wrapping the code.\n switch (operator) {\n case 'ABS':\n code = 'math.fabs(' + arg + ')';\n break;\n case 'ROOT':\n code = 'math.sqrt(' + arg + ')';\n break;\n case 'LN':\n code = 'math.log(' + arg + ')';\n break;\n case 'LOG10':\n code = 'math.log10(' + arg + ')';\n break;\n case 'EXP':\n code = 'math.exp(' + arg + ')';\n break;\n case 'POW10':\n code = 'math.pow(10,' + arg + ')';\n break;\n case 'ROUND':\n code = 'round(' + arg + ')';\n break;\n case 'ROUNDUP':\n code = 'math.ceil(' + arg + ')';\n break;\n case 'ROUNDDOWN':\n code = 'math.floor(' + arg + ')';\n break;\n case 'SIN':\n code = 'math.sin(' + arg + ' / 180.0 * math.pi)';\n break;\n case 'COS':\n code = 'math.cos(' + arg + ' / 180.0 * math.pi)';\n break;\n case 'TAN':\n code = 'math.tan(' + arg + ' / 180.0 * math.pi)';\n break;\n }\n if (code) {\n return [code, Order.FUNCTION_CALL];\n }\n // Second, handle cases which generate values that may need parentheses\n // wrapping the code.\n switch (operator) {\n case 'ASIN':\n code = 'math.asin(' + arg + ') / math.pi * 180';\n break;\n case 'ACOS':\n code = 'math.acos(' + arg + ') / math.pi * 180';\n break;\n case 'ATAN':\n code = 'math.atan(' + arg + ') / math.pi * 180';\n break;\n default:\n throw Error('Unknown math operator: ' + operator);\n }\n return [code, Order.MULTIPLICATIVE];\n}\n\nexport function math_constant(\n block: Block,\n generator: PythonGenerator,\n): [string, Order] {\n // Constants: PI, E, the Golden Ratio, sqrt(2), 1/sqrt(2), INFINITY.\n const CONSTANTS: Record<string, [string, Order]> = {\n 'PI': ['math.pi', Order.MEMBER],\n 'E': ['math.e', Order.MEMBER],\n 'GOLDEN_RATIO': ['(1 + math.sqrt(5)) / 2', Order.MULTIPLICATIVE],\n 'SQRT2': ['math.sqrt(2)', Order.MEMBER],\n 'SQRT1_2': ['math.sqrt(1.0 / 2)', Order.MEMBER],\n 'INFINITY': [\"float('inf')\", Order.ATOMIC],\n };\n type ConstantOption = keyof typeof CONSTANTS;\n const constant = block.getFieldValue('CONSTANT') as ConstantOption;\n if (constant !== 'INFINITY') {\n (generator as AnyDuringMigration).definitions_['import_math'] =\n 'import math';\n }\n return CONSTANTS[constant];\n}\n\nexport function math_number_property(\n block: Block,\n generator: PythonGenerator,\n): [string, Order] {\n // Check if a number is even, odd, prime, whole, positive, or negative\n // or if it is divisible by certain number. Returns true or false.\n const PROPERTIES: Record<string, [string | null, Order, Order]> = {\n 'EVEN': [' % 2 == 0', Order.MULTIPLICATIVE, Order.RELATIONAL],\n 'ODD': [' % 2 == 1', Order.MULTIPLICATIVE, Order.RELATIONAL],\n 'WHOLE': [' % 1 == 0', Order.MULTIPLICATIVE, Order.RELATIONAL],\n 'POSITIVE': [' > 0', Order.RELATIONAL, Order.RELATIONAL],\n 'NEGATIVE': [' < 0', Order.RELATIONAL, Order.RELATIONAL],\n 'DIVISIBLE_BY': [null, Order.MULTIPLICATIVE, Order.RELATIONAL],\n 'PRIME': [null, Order.NONE, Order.FUNCTION_CALL],\n };\n type PropertyOption = keyof typeof PROPERTIES;\n const dropdownProperty = block.getFieldValue('PROPERTY') as PropertyOption;\n const [suffix, inputOrder, outputOrder] = PROPERTIES[dropdownProperty];\n const numberToCheck =\n generator.valueToCode(block, 'NUMBER_TO_CHECK', inputOrder) || '0';\n let code;\n if (dropdownProperty === 'PRIME') {\n // Prime is a special case as it is not a one-liner test.\n (generator as AnyDuringMigration).definitions_['import_math'] =\n 'import math';\n (generator as AnyDuringMigration).definitions_[\n 'from_numbers_import_Number'\n ] = 'from numbers import Number';\n const functionName = generator.provideFunction_(\n 'math_isPrime',\n `\ndef ${generator.FUNCTION_NAME_PLACEHOLDER_}(n):\n # https://en.wikipedia.org/wiki/Primality_test#Naive_methods\n # If n is not a number but a string, try parsing it.\n if not isinstance(n, Number):\n try:\n n = float(n)\n except:\n return False\n if n == 2 or n == 3:\n return True\n # False if n is negative, is 1, or not whole, or if n is divisible by 2 or 3.\n if n <= 1 or n % 1 != 0 or n % 2 == 0 or n % 3 == 0:\n return False\n # Check all the numbers of form 6k +/- 1, up to sqrt(n).\n for x in range(6, int(math.sqrt(n)) + 2, 6):\n if n % (x - 1) == 0 or n % (x + 1) == 0:\n return False\n return True\n`,\n );\n code = functionName + '(' + numberToCheck + ')';\n } else if (dropdownProperty === 'DIVISIBLE_BY') {\n const divisor =\n generator.valueToCode(block, 'DIVISOR', Order.MULTIPLICATIVE) || '0';\n // If 'divisor' is some code that evals to 0, generator will raise an error.\n if (divisor === '0') {\n return ['False', Order.ATOMIC];\n }\n code = numberToCheck + ' % ' + divisor + ' == 0';\n } else {\n code = numberToCheck + suffix;\n }\n return [code, outputOrder];\n}\n\nexport function math_change(block: Block, generator: PythonGenerator) {\n // Add to a variable in place.\n (generator as AnyDuringMigration).definitions_['from_numbers_import_Number'] =\n 'from numbers import Number';\n const argument0 =\n generator.valueToCode(block, 'DELTA', Order.ADDITIVE) || '0';\n const varName = generator.getVariableName(block.getFieldValue('VAR'));\n return (\n varName +\n ' = (' +\n varName +\n ' if isinstance(' +\n varName +\n ', Number) else 0) + ' +\n argument0 +\n '\\n'\n );\n}\n\n// Rounding functions have a single operand.\nexport const math_round = math_single;\n// Trigonometry functions have a single operand.\nexport const math_trig = math_single;\n\nexport function math_on_list(\n block: Block,\n generator: PythonGenerator,\n): [string, Order] {\n // Math functions for lists.\n const func = block.getFieldValue('OP');\n const list = generator.valueToCode(block, 'LIST', Order.NONE) || '[]';\n let code;\n switch (func) {\n case 'SUM':\n code = 'sum(' + list + ')';\n break;\n case 'MIN':\n code = 'min(' + list + ')';\n break;\n case 'MAX':\n code = 'max(' + list + ')';\n break;\n case 'AVERAGE': {\n (generator as AnyDuringMigration).definitions_[\n 'from_numbers_import_Number'\n ] = 'from numbers import Number';\n // This operation excludes null and values that aren't int or float:\n // math_mean([null, null, \"aString\", 1, 9]) -> 5.0\n const functionName = generator.provideFunction_(\n 'math_mean',\n `\ndef ${generator.FUNCTION_NAME_PLACEHOLDER_}(myList):\n localList = [e for e in myList if isinstance(e, Number)]\n if not localList: return\n return float(sum(localList)) / len(localList)\n`,\n );\n code = functionName + '(' + list + ')';\n break;\n }\n case 'MEDIAN': {\n (generator as AnyDuringMigration).definitions_[\n 'from_numbers_import_Number'\n ] = 'from numbers import Number';\n // This operation excludes null values:\n // math_median([null, null, 1, 3]) -> 2.0\n const functionName = generator.provideFunction_(\n 'math_median',\n `\ndef ${generator.FUNCTION_NAME_PLACEHOLDER_}(myList):\n localList = sorted([e for e in myList if isinstance(e, Number)])\n if not localList: return\n if len(localList) % 2 == 0:\n return (localList[len(localList) // 2 - 1] + localList[len(localList) // 2]) / 2.0\n else:\n return localList[(len(localList) - 1) // 2]\n`,\n );\n code = functionName + '(' + list + ')';\n break;\n }\n case 'MODE': {\n // As a list of numbers can contain more than one mode,\n // the returned result is provided as an array.\n // Mode of [3, 'x', 'x', 1, 1, 2, '3'] -> ['x', 1]\n const functionName = generator.provideFunction_(\n 'math_modes',\n `\ndef ${generator.FUNCTION_NAME_PLACEHOLDER_}(some_list):\n modes = []\n # Using a lists of [item, count] to keep count rather than dict\n # to avoid \"unhashable\" errors when the counted item is itself a list or dict.\n counts = []\n maxCount = 1\n for item in some_list:\n found = False\n for count in counts:\n if count[0] == item:\n count[1] += 1\n maxCount = max(maxCount, count[1])\n found = True\n if not found:\n counts.append([item, 1])\n for counted_item, item_count in counts:\n if item_count == maxCount:\n modes.append(counted_item)\n return modes\n`,\n );\n code = functionName + '(' + list + ')';\n break;\n }\n case 'STD_DEV': {\n (generator as AnyDuringMigration).definitions_['import_math'] =\n 'import math';\n const functionName = generator.provideFunction_(\n 'math_standard_deviation',\n `\ndef ${generator.FUNCTION_NAME_PLACEHOLDER_}(numbers):\n n = len(numbers)\n if n == 0: return\n mean = float(sum(numbers)) / n\n variance = sum((x - mean) ** 2 for x in numbers) / n\n return math.sqrt(variance)\n`,\n );\n code = functionName + '(' + list + ')';\n break;\n }\n case 'RANDOM':\n (generator as AnyDuringMigration).definitions_['import_random'] =\n 'import random';\n code = 'random.choice(' + list + ')';\n break;\n default:\n throw Error('Unknown operator: ' + func);\n }\n return [code, Order.FUNCTION_CALL];\n}\n\nexport function math_modulo(\n block: Block,\n generator: PythonGenerator,\n): [string, Order] {\n // Remainder computation.\n const argument0 =\n generator.valueToCode(block, 'DIVIDEND', Order.MULTIPLICATIVE) || '0';\n const argument1 =\n generator.valueToCode(block, 'DIVISOR', Order.MULTIPLICATIVE) || '0';\n const code = argument0 + ' % ' + argument1;\n return [code, Order.MULTIPLICATIVE];\n}\n\nexport function math_constrain(\n block: Block,\n generator: PythonGenerator,\n): [string, Order] {\n // Constrain a number between two limits.\n const argument0 = generator.valueToCode(block, 'VALUE', Order.NONE) || '0';\n const argument1 = generator.valueToCode(block, 'LOW', Order.NONE) || '0';\n const argument2 =\n generator.valueToCode(block, 'HIGH', Order.NONE) || \"float('inf')\";\n const code =\n 'min(max(' + argument0 + ', ' + argument1 + '), ' + argument2 + ')';\n return [code, Order.FUNCTION_CALL];\n}\n\nexport function math_random_int(\n block: Block,\n generator: PythonGenerator,\n): [string, Order] {\n // Random integer between [X] and [Y].\n (generator as AnyDuringMigration).definitions_['import_random'] =\n 'import random';\n const argument0 = generator.valueToCode(block, 'FROM', Order.NONE) || '0';\n const argument1 = generator.valueToCode(block, 'TO', Order.NONE) || '0';\n const code = 'random.randint(' + argument0 + ', ' + argument1 + ')';\n return [code, Order.FUNCTION_CALL];\n}\n\nexport function math_random_float(\n block: Block,\n generator: PythonGenerator,\n): [string, Order] {\n // Random fraction between 0 and 1.\n (generator as AnyDuringMigration).definitions_['import_random'] =\n 'import random';\n return ['random.random()', Order.FUNCTION_CALL];\n}\n\nexport function math_atan2(\n block: Block,\n generator: PythonGenerator,\n): [string, Order] {\n // Arctangent of point (X, Y) in degrees from -180 to 180.\n (generator as AnyDuringMigration).definitions_['import_math'] = 'import math';\n const argument0 = generator.valueToCode(block, 'X', Order.NONE) || '0';\n const argument1 = generator.valueToCode(block, 'Y', Order.NONE) || '0';\n return [\n 'math.atan2(' + argument1 + ', ' + argument0 + ') / math.pi * 180',\n Order.MULTIPLICATIVE,\n ];\n}\n","/**\n * @license\n * Copyright 2012 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @file Generating Python for procedure blocks.\n */\n\n// Former goog.module ID: Blockly.Python.procedures\n\nimport type {IfReturnBlock} from '../../blocks/procedures.js';\nimport type {Block} from '../../core/block.js';\nimport {NameType} from '../../core/names.js';\nimport * as Variables from '../../core/variables.js';\nimport type {PythonGenerator} from './python_generator.js';\nimport {Order} from './python_generator.js';\n\nexport function procedures_defreturn(block: Block, generator: PythonGenerator) {\n // Define a procedure with a return value.\n // First, add a 'global' statement for every variable that is not shadowed by\n // a local parameter.\n const globals = [];\n const workspace = block.workspace;\n const usedVariables = Variables.allUsedVarModels(workspace) || [];\n for (const variable of usedVariables) {\n const varName = variable.getName();\n // getVars returns parameter names, not ids, for procedure blocks\n if (!block.getVars().includes(varName)) {\n globals.push(generator.getVariableName(varName));\n }\n }\n // Add developer variables.\n const devVarList = Variables.allDeveloperVariables(workspace);\n for (let i = 0; i < devVarList.length; i++) {\n globals.push(\n generator.nameDB_!.getName(devVarList[i], NameType.DEVELOPER_VARIABLE),\n );\n }\n\n const globalString = globals.length\n ? generator.INDENT + 'global ' + globals.join(', ') + '\\n'\n : '';\n const funcName = generator.getProcedureName(block.getFieldValue('NAME'));\n let xfix1 = '';\n if (generator.STATEMENT_PREFIX) {\n xfix1 += generator.injectId(generator.STATEMENT_PREFIX, block);\n }\n if (generator.STATEMENT_SUFFIX) {\n xfix1 += generator.injectId(generator.STATEMENT_SUFFIX, block);\n }\n if (xfix1) {\n xfix1 = generator.prefixLines(xfix1, generator.INDENT);\n }\n let loopTrap = '';\n if (generator.INFINITE_LOOP_TRAP) {\n loopTrap = generator.prefixLines(\n generator.injectId(generator.INFINITE_LOOP_TRAP, block),\n generator.INDENT,\n );\n }\n let branch = '';\n if (block.getInput('STACK')) {\n // The 'procedures_defreturn' block might not have a STACK input.\n branch = generator.statementToCode(block, 'STACK');\n }\n let returnValue = '';\n if (block.getInput('RETURN')) {\n // The 'procedures_defnoreturn' block (which shares this code)\n // does not have a RETURN input.\n returnValue = generator.valueToCode(block, 'RETURN', Order.NONE) || '';\n }\n let xfix2 = '';\n if (branch && returnValue) {\n // After executing the function body, revisit this block for the return.\n xfix2 = xfix1;\n }\n if (returnValue) {\n returnValue = generator.INDENT + 'return ' + returnValue + '\\n';\n } else if (!branch) {\n branch = generator.PASS;\n }\n const args = [];\n const variables = block.getVars();\n for (let i = 0; i < variables.length; i++) {\n args[i] = generator.getVariableName(variables[i]);\n }\n let code =\n 'def ' +\n funcName +\n '(' +\n args.join(', ') +\n '):\\n' +\n globalString +\n xfix1 +\n loopTrap +\n branch +\n xfix2 +\n returnValue;\n code = generator.scrub_(block, code);\n // Add % so as not to collide with helper functions in definitions list.\n // TODO(#7600): find better approach than casting to any to override\n // CodeGenerator declaring .definitions protected.\n (generator as AnyDuringMigration).definitions_['%' + funcName] = code;\n return null;\n}\n\n// Defining a procedure without a return value uses the same generator as\n// a procedure with a return value.\nexport const procedures_defnoreturn = procedures_defreturn;\n\nexport function procedures_callreturn(\n block: Block,\n generator: PythonGenerator,\n): [string, Order] {\n // Call a procedure with a return value.\n const funcName = generator.getProcedureName(block.getFieldValue('NAME'));\n const args = [];\n const variables = block.getVars();\n for (let i = 0; i < variables.length; i++) {\n args[i] = generator.valueToCode(block, 'ARG' + i, Order.NONE) || 'None';\n }\n const code = funcName + '(' + args.join(', ') + ')';\n return [code, Order.FUNCTION_CALL];\n}\n\nexport function procedures_callnoreturn(\n block: Block,\n generator: PythonGenerator,\n) {\n // Call a procedure with no return value.\n // Generated code is for a function call as a statement is the same as a\n // function call as a value, with the addition of line ending.\n const tuple = generator.forBlock['procedures_callreturn'](block, generator)!;\n return tuple[0] + '\\n';\n}\n\nexport function procedures_ifreturn(block: Block, generator: PythonGenerator) {\n // Conditionally return value from a procedure.\n const condition =\n generator.valueToCode(block, 'CONDITION', Order.NONE) || 'False';\n let code = 'if ' + condition + ':\\n';\n if (generator.STATEMENT_SUFFIX) {\n // Inject any statement suffix here since the regular one at the end\n // will not get executed if the return is triggered.\n code += generator.prefixLines(\n generator.injectId(generator.STATEMENT_SUFFIX, block),\n generator.INDENT,\n );\n }\n if ((block as IfReturnBlock).hasReturnValue_) {\n const value = generator.valueToCode(block, 'VALUE', Order.NONE) || 'None';\n code += generator.INDENT + 'return ' + value + '\\n';\n } else {\n code += generator.INDENT + 'return\\n';\n }\n return code;\n}\n","/**\n * @license\n * Copyright 2012 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @file Generating Python for text blocks.\n */\n\n// Former goog.module ID: Blockly.Python.texts\n\nimport type {JoinMutatorBlock} from '../../blocks/text.js';\nimport type {Block} from '../../core/block.js';\nimport {NameType} from '../../core/names.js';\nimport * as stringUtils from '../../core/utils/string.js';\nimport type {PythonGenerator} from './python_generator.js';\nimport {Order} from './python_generator.js';\n\nexport function text(\n block: Block,\n generator: PythonGenerator,\n): [string, Order] {\n // Text value.\n const code = generator.quote_(block.getFieldValue('TEXT'));\n return [code, Order.ATOMIC];\n}\n\n/**\n * Regular expression to detect a single-quoted string literal.\n */\nconst strRegExp = /^\\s*'([^']|\\\\')*'\\s*$/;\n\n/**\n * Enclose the provided value in 'str(...)' function.\n * Leave string literals alone.\n *\n * @param value Code evaluating to a value.\n * @returns Array containing code evaluating to a string\n * and\n * the order of the returned code.[string, number]\n */\nconst forceString = function (value: string): [string, Order] {\n if (strRegExp.test(value)) {\n return [value, Order.ATOMIC];\n }\n return ['str(' + value + ')', Order.FUNCTION_CALL];\n};\n\nexport function text_join(\n block: Block,\n generator: PythonGenerator,\n): [string, Order] {\n // Create a string made up of any number of elements of any type.\n // Should we allow joining by '-' or ',' or any other characters?\n const joinBlock = block as JoinMutatorBlock;\n switch (joinBlock.itemCount_) {\n case 0:\n return [\"''\", Order.ATOMIC];\n case 1: {\n const element = generator.valueToCode(block, 'ADD0', Order.NONE) || \"''\";\n const codeAndOrder = forceString(element);\n return codeAndOrder;\n }\n case 2: {\n const element0 = generator.valueToCode(block, 'ADD0', Order.NONE) || \"''\";\n const element1 = generator.valueToCode(block, 'ADD1', Order.NONE) || \"''\";\n const code = forceString(element0)[0] + ' + ' + forceString(element1)[0];\n return [code, Order.ADDITIVE];\n }\n default: {\n const elements = [];\n for (let i = 0; i < joinBlock.itemCount_; i++) {\n elements[i] =\n generator.valueToCode(block, 'ADD' + i, Order.NONE) || \"''\";\n }\n const tempVar = generator.nameDB_!.getDistinctName(\n 'x',\n NameType.VARIABLE,\n );\n const code =\n \"''.join([str(\" +\n tempVar +\n ') for ' +\n tempVar +\n ' in [' +\n elements.join(', ') +\n ']])';\n return [code, Order.FUNCTION_CALL];\n }\n }\n}\n\nexport function text_append(block: Block, generator: PythonGenerator) {\n // Append to a variable in place.\n const varName = generator.getVariableName(block.getFieldValue('VAR'));\n const value = generator.valueToCode(block, 'TEXT', Order.NONE) || \"''\";\n return varName + ' = str(' + varName + ') + ' + forceString(value)[0] + '\\n';\n}\n\nexport function text_length(\n block: Block,\n generator: PythonGenerator,\n): [string, Order] {\n // Is the string null or array empty?\n const text = generator.valueToCode(block, 'VALUE', Order.NONE) || \"''\";\n return ['len(' + text + ')', Order.FUNCTION_CALL];\n}\n\nexport function text_isEmpty(\n block: Block,\n generator: PythonGenerator,\n): [string, Order] {\n // Is the string null or array empty?\n const text = generator.valueToCode(block, 'VALUE', Order.NONE) || \"''\";\n const code = 'not len(' + text + ')';\n return [code, Order.LOGICAL_NOT];\n}\n\nexport function text_indexOf(\n block: Block,\n generator: PythonGenerator,\n): [string, Order] {\n // Search the text for a substring.\n // Should we allow for non-case sensitive???\n const operator = block.getFieldValue('END') === 'FIRST' ? 'find' : 'rfind';\n const substring = generator.valueToCode(block, 'FIND', Order.NONE) || \"''\";\n const text = generator.valueToCode(block, 'VALUE', Order.MEMBER) || \"''\";\n const code = text + '.' + operator + '(' + substring + ')';\n if (block.workspace.options.oneBasedIndex) {\n return [code + ' + 1', Order.ADDITIVE];\n }\n return [code, Order.FUNCTION_CALL];\n}\n\nexport function text_charAt(\n block: Block,\n generator: PythonGenerator,\n): [string, Order] {\n // Get letter at index.\n // Note: Until January 2013 this block did not have the WHERE input.\n const where = block.getFieldValue('WHERE') || 'FROM_START';\n const textOrder = where === 'RANDOM' ? Order.NONE : Order.MEMBER;\n const text = generator.valueToCode(block, 'VALUE', textOrder) || \"''\";\n switch (where) {\n case 'FIRST': {\n const code = text + '[0]';\n return [code, Order.MEMBER];\n }\n case 'LAST': {\n const code = text + '[-1]';\n return [code, Order.MEMBER];\n }\n case 'FROM_START': {\n const at = generator.getAdjustedInt(block, 'AT');\n const code = text + '[' + at + ']';\n return [code, Order.MEMBER];\n }\n case 'FROM_END': {\n const at = generator.getAdjustedInt(block, 'AT', 1, true);\n const code = text + '[' + at + ']';\n return [code, Order.MEMBER];\n }\n case 'RANDOM': {\n // TODO(#7600): find better approach than casting to any to override\n // CodeGenerator declaring .definitions protected (here and below).\n (generator as AnyDuringMigration).definitions_['import_random'] =\n 'import random';\n const functionName = generator.provideFunction_(\n 'text_random_letter',\n `\ndef ${generator.FUNCTION_NAME_PLACEHOLDER_}(text):\n x = int(random.random() * len(text))\n return text[x]\n`,\n );\n const code = functionName + '(' + text + ')';\n return [code, Order.FUNCTION_CALL];\n }\n }\n throw Error('Unhandled option (text_charAt).');\n}\n\nexport function text_getSubstring(\n block: Block,\n generator: PythonGenerator,\n): [string, Order] {\n // Get substring.\n const where1 = block.getFieldValue('WHERE1');\n const where2 = block.getFieldValue('WHERE2');\n const text = generator.valueToCode(block, 'STRING', Order.MEMBER) || \"''\";\n let at1;\n switch (where1) {\n case 'FROM_START':\n at1 = generator.getAdjustedInt(block, 'AT1');\n if (at1 === 0) {\n at1 = '';\n }\n break;\n case 'FROM_END':\n at1 = generator.getAdjustedInt(block, 'AT1', 1, true);\n break;\n case 'FIRST':\n at1 = '';\n break;\n default:\n throw Error('Unhandled option (text_getSubstring)');\n }\n\n let at2;\n switch (where2) {\n case 'FROM_START':\n at2 = generator.getAdjustedInt(block, 'AT2', 1);\n break;\n case 'FROM_END':\n at2 = generator.getAdjustedInt(block, 'AT2', 0, true);\n // Ensure that if the result calculated is 0 that sub-sequence will\n // include all elements as expected.\n if (!stringUtils.isNumber(String(at2))) {\n (generator as AnyDuringMigration).definitions_['import_sys'] =\n 'import sys';\n at2 += ' or sys.maxsize';\n } else if (at2 === 0) {\n at2 = '';\n }\n break;\n case 'LAST':\n at2 = '';\n break;\n default:\n throw Error('Unhandled option (text_getSubstring)');\n }\n const code = text + '[' + at1 + ' : ' + at2 + ']';\n return [code, Order.MEMBER];\n}\n\nexport function text_changeCase(\n block: Block,\n generator: PythonGenerator,\n): [string, Order] {\n // Change capitalization.\n const OPERATORS = {\n 'UPPERCASE': '.upper()',\n 'LOWERCASE': '.lower()',\n 'TITLECASE': '.title()',\n };\n type OperatorOption = keyof typeof OPERATORS;\n const operator = OPERATORS[block.getFieldValue('CASE') as OperatorOption];\n const text = generator.valueToCode(block, 'TEXT', Order.MEMBER) || \"''\";\n const code = text + operator;\n return [code, Order.FUNCTION_CALL];\n}\n\nexport function text_trim(\n block: Block,\n generator: PythonGenerator,\n): [string, Order] {\n // Trim spaces.\n const OPERATORS = {\n 'LEFT': '.lstrip()',\n 'RIGHT': '.rstrip()',\n 'BOTH': '.strip()',\n };\n type OperatorOption = keyof typeof OPERATORS;\n const operator = OPERATORS[block.getFieldValue('MODE') as OperatorOption];\n const text = generator.valueToCode(block, 'TEXT', Order.MEMBER) || \"''\";\n const code = text + operator;\n return [code, Order.FUNCTION_CALL];\n}\n\nexport function text_print(block: Block, generator: PythonGenerator) {\n // Print statement.\n const msg = generator.valueToCode(block, 'TEXT', Order.NONE) || \"''\";\n return 'print(' + msg + ')\\n';\n}\n\nexport function text_prompt_ext(\n block: Block,\n generator: PythonGenerator,\n): [string, Order] {\n // Prompt function.\n const functionName = generator.provideFunction_(\n 'text_prompt',\n `\ndef ${generator.FUNCTION_NAME_PLACEHOLDER_}(msg):\n try:\n return raw_input(msg)\n except NameError:\n return input(msg)\n`,\n );\n let msg;\n if (block.getField('TEXT')) {\n // Internal message.\n msg = generator.quote_(block.getFieldValue('TEXT'));\n } else {\n // External message.\n msg = generator.valueToCode(block, 'TEXT', Order.NONE) || \"''\";\n }\n let code = functionName + '(' + msg + ')';\n const toNumber = block.getFieldValue('TYPE') === 'NUMBER';\n if (toNumber) {\n code = 'float(' + code + ')';\n }\n return [code, Order.FUNCTION_CALL];\n}\n\nexport const text_prompt = text_prompt_ext;\n\nexport function text_count(\n block: Block,\n generator: PythonGenerator,\n): [string, Order] {\n const text = generator.valueToCode(block, 'TEXT', Order.MEMBER) || \"''\";\n const sub = generator.valueToCode(block, 'SUB', Order.NONE) || \"''\";\n const code = text + '.count(' + sub + ')';\n return [code, Order.FUNCTION_CALL];\n}\n\nexport function text_replace(\n block: Block,\n generator: PythonGenerator,\n): [string, Order] {\n const text = generator.valueToCode(block, 'TEXT', Order.MEMBER) || \"''\";\n const from = generator.valueToCode(block, 'FROM', Order.NONE) || \"''\";\n const to = generator.valueToCode(block, 'TO', Order.NONE) || \"''\";\n const code = text + '.replace(' + from + ', ' + to + ')';\n return [code, Order.MEMBER];\n}\n\nexport function text_reverse(\n block: Block,\n generator: PythonGenerator,\n): [string, Order] {\n const text = generator.valueToCode(block, 'TEXT', Order.MEMBER) || \"''\";\n const code = text + '[::-1]';\n return [code, Order.MEMBER];\n}\n","/**\n * @license\n * Copyright 2012 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @file Generating Python for variable blocks.\n */\n\n// Former goog.module ID: Blockly.Python.variables\n\nimport type {Block} from '../../core/block.js';\nimport type {PythonGenerator} from './python_generator.js';\nimport {Order} from './python_generator.js';\n\nexport function variables_get(\n block: Block,\n generator: PythonGenerator,\n): [string, Order] {\n // Variable getter.\n const code = generator.getVariableName(block.getFieldValue('VAR'));\n return [code, Order.ATOMIC];\n}\n\nexport function variables_set(block: Block, generator: PythonGenerator) {\n // Variable setter.\n const argument0 = generator.valueToCode(block, 'VALUE', Order.NONE) || '0';\n const varName = generator.getVariableName(block.getFieldValue('VAR'));\n return varName + ' = ' + argument0 + '\\n';\n}\n","/**\n * @license\n * Copyright 2012 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @file Python code generator class, including helper methods for\n * generating Python for blocks.\n */\n\n// Former goog.module ID: Blockly.Python\n\nimport type {Block} from '../../core/block.js';\nimport {CodeGenerator} from '../../core/generator.js';\nimport {inputTypes} from '../../core/inputs/input_types.js';\nimport {Names} from '../../core/names.js';\nimport * as stringUtils from '../../core/utils/string.js';\nimport * as Variables from '../../core/variables.js';\nimport type {Workspace} from '../../core/workspace.js';\n\n/**\n * Order of operation ENUMs.\n * http://docs.python.org/reference/expressions.html#summary\n */\n// prettier-ignore\nexport enum Order {\n ATOMIC = 0, // 0 \"\" ...\n COLLECTION = 1, // tuples, lists, dictionaries\n STRING_CONVERSION = 1, // `expression...`\n MEMBER = 2.1, // . []\n FUNCTION_CALL = 2.2, // ()\n EXPONENTIATION = 3, // **\n UNARY_SIGN = 4, // + -\n BITWISE_NOT = 4, // ~\n MULTIPLICATIVE = 5, // * / // %\n ADDITIVE = 6, // + -\n BITWISE_SHIFT = 7, // << >>\n BITWISE_AND = 8, // &\n BITWISE_XOR = 9, // ^\n BITWISE_OR = 10, // |\n RELATIONAL = 11, // in, not in, is, is not, >, >=, <>, !=, ==\n LOGICAL_NOT = 12, // not\n LOGICAL_AND = 13, // and\n LOGICAL_OR = 14, // or\n CONDITIONAL = 15, // if else\n LAMBDA = 16, // lambda\n NONE = 99, // (...)\n}\n\n/**\n * PythonScript code generator class.\n */\nexport class PythonGenerator extends CodeGenerator {\n /** List of outer-inner pairings that do NOT require parentheses. */\n ORDER_OVERRIDES: [Order, Order][] = [\n // (foo()).bar -> foo().bar\n // (foo())[0] -> foo()[0]\n [Order.FUNCTION_CALL, Order.MEMBER],\n // (foo())() -> foo()()\n [Order.FUNCTION_CALL, Order.FUNCTION_CALL],\n // (foo.bar).baz -> foo.bar.baz\n // (foo.bar)[0] -> foo.bar[0]\n // (foo[0]).bar -> foo[0].bar\n // (foo[0])[1] -> foo[0][1]\n [Order.MEMBER, Order.MEMBER],\n // (foo.bar)() -> foo.bar()\n // (foo[0])() -> foo[0]()\n [Order.MEMBER, Order.FUNCTION_CALL],\n\n // not (not foo) -> not not foo\n [Order.LOGICAL_NOT, Order.LOGICAL_NOT],\n // a and (b and c) -> a and b and c\n [Order.LOGICAL_AND, Order.LOGICAL_AND],\n // a or (b or c) -> a or b or c\n [Order.LOGICAL_OR, Order.LOGICAL_OR],\n ];\n\n /**\n * Empty loops or conditionals are not allowed in Python.\n */\n PASS: string = ''; // Initialised by init().\n\n /** @param name Name of the language the generator is for. */\n constructor(name = 'Python') {\n super(name);\n this.isInitialized = false;\n\n // Copy Order values onto instance for backwards compatibility\n // while ensuring they are not part of the publically-advertised\n // API.\n //\n // TODO(#7085): deprecate these in due course. (Could initially\n // replace data properties with get accessors that call\n // deprecate.warn().)\n for (const key in Order) {\n // Must assign Order[key] to a temporary to get the type guard to work;\n // see https://github.com/microsoft/TypeScript/issues/10530.\n const value = Order[key];\n // Skip reverse-lookup entries in the enum. Due to\n // https://github.com/microsoft/TypeScript/issues/55713 this (as\n // of TypeScript 5.5.2) actually narrows the type of value to\n // never - but that still allows the following assignment to\n // succeed.\n if (typeof value === 'string') continue;\n (this as unknown as Record<string, Order>)['ORDER_' + key] = value;\n }\n\n // List of illegal variable names. This is not intended to be a\n // security feature. Blockly is 100% client-side, so bypassing\n // this list is trivial. This is intended to prevent users from\n // accidentally clobbering a built-in object or function.\n this.addReservedWords(\n // import keyword\n // print(','.join(sorted(keyword.kwlist)))\n // https://docs.python.org/3/reference/lexical_analysis.html#keywords\n // https://docs.python.org/2/reference/lexical_analysis.html#keywords\n 'False,None,True,and,as,assert,break,class,continue,def,del,elif,else,' +\n 'except,exec,finally,for,from,global,if,import,in,is,lambda,nonlocal,' +\n 'not,or,pass,print,raise,return,try,while,with,yield,' +\n // https://docs.python.org/3/library/constants.html\n // https://docs.python.org/2/library/constants.html\n 'NotImplemented,Ellipsis,__debug__,quit,exit,copyright,license,credits,' +\n // >>> print(','.join(sorted(dir(__builtins__))))\n // https://docs.python.org/3/library/functions.html\n // https://docs.python.org/2/library/functions.html\n 'ArithmeticError,AssertionError,AttributeError,BaseException,' +\n 'BlockingIOError,BrokenPipeError,BufferError,BytesWarning,' +\n 'ChildProcessError,ConnectionAbortedError,ConnectionError,' +\n 'ConnectionRefusedError,ConnectionResetError,DeprecationWarning,' +\n 'EOFError,Ellipsis,EnvironmentError,Exception,FileExistsError,' +\n 'FileNotFoundError,FloatingPointError,FutureWarning,GeneratorExit,' +\n 'IOError,ImportError,ImportWarning,IndentationError,IndexError,' +\n 'InterruptedError,IsADirectoryError,KeyError,KeyboardInterrupt,' +\n 'LookupError,MemoryError,ModuleNotFoundError,NameError,' +\n 'NotADirectoryError,NotImplemented,NotImplementedError,OSError,' +\n 'OverflowError,PendingDeprecationWarning,PermissionError,' +\n 'ProcessLookupError,RecursionError,ReferenceError,ResourceWarning,' +\n 'RuntimeError,RuntimeWarning,StandardError,StopAsyncIteration,' +\n 'StopIteration,SyntaxError,SyntaxWarning,SystemError,SystemExit,' +\n 'TabError,TimeoutError,TypeError,UnboundLocalError,UnicodeDecodeError,' +\n 'UnicodeEncodeError,UnicodeError,UnicodeTranslateError,UnicodeWarning,' +\n 'UserWarning,ValueError,Warning,ZeroDivisionError,_,__build_class__,' +\n '__debug__,__doc__,__import__,__loader__,__name__,__package__,__spec__,' +\n 'abs,all,any,apply,ascii,basestring,bin,bool,buffer,bytearray,bytes,' +\n 'callable,chr,classmethod,cmp,coerce,compile,complex,copyright,credits,' +\n 'delattr,dict,dir,divmod,enumerate,eval,exec,execfile,exit,file,filter,' +\n 'float,format,frozenset,getattr,globals,hasattr,hash,help,hex,id,input,' +\n 'int,intern,isinstance,issubclass,iter,len,license,list,locals,long,' +\n 'map,max,memoryview,min,next,object,oct,open,ord,pow,print,property,' +\n 'quit,range,raw_input,reduce,reload,repr,reversed,round,set,setattr,' +\n 'slice,sorted,staticmethod,str,sum,super,tuple,type,unichr,unicode,' +\n 'vars,xrange,zip',\n );\n }\n\n /**\n * Initialise the database of variable names.\n *\n * @param workspace Workspace to generate code from.\n */\n init(workspace: Workspace) {\n super.init(workspace);\n\n this.PASS = this.INDENT + 'pass\\n';\n\n if (!this.nameDB_) {\n this.nameDB_ = new Names(this.RESERVED_WORDS_);\n } else {\n this.nameDB_.reset();\n }\n\n this.nameDB_.setVariableMap(workspace.getVariableMap());\n this.nameDB_.populateVariables(workspace);\n this.nameDB_.populateProcedures(workspace);\n\n const defvars = [];\n // Add developer variables (not created or named by the user).\n const devVarList = Variables.allDeveloperVariables(workspace);\n for (let i = 0; i < devVarList.length; i++) {\n defvars.push(\n this.nameDB_.getName(devVarList[i], Names.DEVELOPER_VARIABLE_TYPE) +\n ' = None',\n );\n }\n\n // Add user variables, but only ones that are being used.\n const variables = Variables.allUsedVarModels(workspace);\n for (let i = 0; i < variables.length; i++) {\n defvars.push(this.getVariableName(variables[i].getId()) + ' = None');\n }\n\n this.definitions_['variables'] = defvars.join('\\n');\n this.isInitialized = true;\n }\n\n /**\n * Prepend the generated code with import statements and variable definitions.\n *\n * @param code Generated code.\n * @returns Completed code.\n */\n finish(code: string): string {\n // Convert the definitions dictionary into a list.\n const imports = [];\n const definitions = [];\n for (let name in this.definitions_) {\n const def = this.definitions_[name];\n if (def.match(/^(from\\s+\\S+\\s+)?import\\s+\\S+/)) {\n imports.push(def);\n } else {\n definitions.push(def);\n }\n }\n // Call Blockly.CodeGenerator's finish.\n code = super.finish(code);\n this.isInitialized = false;\n\n this.nameDB_!.reset();\n const allDefs = imports.join('\\n') + '\\n\\n' + definitions.join('\\n\\n');\n return allDefs.replace(/\\n\\n+/g, '\\n\\n').replace(/\\n*$/, '\\n\\n\\n') + code;\n }\n\n /**\n * Naked values are top-level blocks with outputs that aren't plugged into\n * anything.\n *\n * @param line Line of generated code.\n * @returns Legal line of code.\n */\n scrubNakedValue(line: string): string {\n return line + '\\n';\n }\n\n /**\n * Encode a string as a properly escaped Python string, complete with quotes.\n *\n * @param string Text to encode.\n * @returns Python string.\n */\n quote_(string: string): string {\n string = string.replace(/\\\\/g, '\\\\\\\\').replace(/\\n/g, '\\\\\\n');\n\n // Follow the CPython behaviour of repr() for a non-byte string.\n let quote = \"'\";\n if (string.includes(\"'\")) {\n if (!string.includes('\"')) {\n quote = '\"';\n } else {\n string = string.replace(/'/g, \"\\\\'\");\n }\n }\n return quote + string + quote;\n }\n\n /**\n * Encode a string as a properly escaped multiline Python string, complete\n * with quotes.\n *\n * @param string Text to encode.\n * @returns Python string.\n */\n multiline_quote_(string: string): string {\n const lines = string.split(/\\n/g).map(this.quote_);\n // Join with the following, plus a newline:\n // + '\\n' +\n return lines.join(\" + '\\\\n' + \\n\");\n }\n\n /**\n * Common tasks for generating Python from blocks.\n * Handles comments for the specified block and any connected value blocks.\n * Calls any statements following this block.\n *\n * @param block The current block.\n * @param code The Python code created for this block.\n * @param thisOnly True to generate code for only this statement.\n * @returns Python code with comments and subsequent blocks added.\n */\n scrub_(block: Block, code: string, thisOnly = false): string {\n let commentCode = '';\n // Only collect comments for blocks that aren't inline.\n if (!block.outputConnection || !block.outputConnection.targetConnection) {\n // Collect comment for this block.\n let comment = block.getCommentText();\n if (comment) {\n comment = stringUtils.wrap(comment, this.COMMENT_WRAP - 3);\n commentCode += this.prefixLines(comment + '\\n', '# ');\n }\n // Collect comments for all value arguments.\n // Don't collect comments for nested statements.\n for (let i = 0; i < block.inputList.length; i++) {\n if (block.inputList[i].type === inputTypes.VALUE) {\n const childBlock = block.inputList[i].connection!.targetBlock();\n if (childBlock) {\n comment = this.allNestedComments(childBlock);\n if (comment) {\n commentCode += this.prefixLines(comment, '# ');\n }\n }\n }\n }\n }\n const nextBlock =\n block.nextConnection && block.nextConnection.targetBlock();\n const nextCode = thisOnly ? '' : this.blockToCode(nextBlock);\n return commentCode + code + nextCode;\n }\n\n /**\n * Gets a property and adjusts the value, taking into account indexing.\n * If a static int, casts to an integer, otherwise returns a code string.\n *\n * @param block The block.\n * @param atId The ID of the input block to get (and adjust) the value of.\n * @param delta Value to add.\n * @param negate Whether to negate the value.\n * @returns The adjusted value or code that evaluates to it.\n */\n getAdjustedInt(\n block: Block,\n atId: string,\n delta = 0,\n negate = false,\n ): string | number {\n if (block.workspace.options.oneBasedIndex) {\n delta--;\n }\n const defaultAtIndex = block.workspace.options.oneBasedIndex ? '1' : '0';\n const atOrder = delta ? Order.ADDITIVE : Order.NONE;\n let at: string | number =\n this.valueToCode(block, atId, atOrder) || defaultAtIndex;\n\n if (stringUtils.isNumber(at)) {\n // If the index is a naked number, adjust it right now.\n at = parseInt(at, 10) + delta;\n if (negate) {\n at = -at;\n }\n } else {\n // If the index is dynamic, adjust it in code.\n if (delta > 0) {\n at = 'int(' + at + ' + ' + delta + ')';\n } else if (delta < 0) {\n at = 'int(' + at + ' - ' + -delta + ')';\n } else {\n at = 'int(' + at + ')';\n }\n if (negate) {\n at = '-' + at;\n }\n }\n return at;\n }\n}\n","/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @file Generating Python for dynamic variable blocks.\n */\n\n// Former goog.module ID: Blockly.Python.variablesDynamic\n\n// generator is dynamically typed.\nexport {\n variables_get as variables_get_dynamic,\n variables_set as variables_set_dynamic,\n} from './variables.js';\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @file Instantiate a PythonGenerator and populate it with the\n * complete set of block generator functions for Python. This is the\n * entrypoint for python_compressed.js.\n */\n\n// Former goog.module ID: Blockly.Python.all\n\nimport * as lists from './python/lists.js';\nimport * as logic from './python/logic.js';\nimport * as loops from './python/loops.js';\nimport * as math from './python/math.js';\nimport * as procedures from './python/procedures.js';\nimport {PythonGenerator} from './python/python_generator.js';\nimport * as text from './python/text.js';\nimport * as variables from './python/variables.js';\nimport * as variablesDynamic from './python/variables_dynamic.js';\n\nexport * from './python/python_generator.js';\n\n/**\n * Python code generator instance.\n * @type {!PythonGenerator}\n */\nexport const pythonGenerator = new PythonGenerator();\n\n// Add reserved words. This list should include all words mentioned\n// in RESERVED WORDS: comments in the imports above.\npythonGenerator.addReservedWords('math,random,Number');\n\n// Install per-block-type generator functions:\n// Install per-block-type generator functions:\nconst generators: typeof pythonGenerator.forBlock = {\n ...lists,\n ...logic,\n ...loops,\n ...math,\n ...procedures,\n ...text,\n ...variables,\n ...variablesDynamic,\n};\nfor (const name in generators) {\n pythonGenerator.forBlock[name] = generators[name];\n}\n"]}
|
package/.prettierignore
DELETED
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
# Build Artifacts
|
|
2
|
-
/msg/*
|
|
3
|
-
/build/*
|
|
4
|
-
/dist/*
|
|
5
|
-
/typings/*
|
|
6
|
-
/docs/*
|
|
7
|
-
|
|
8
|
-
# Tests other than mocha unit tests
|
|
9
|
-
/tests/blocks/*
|
|
10
|
-
/tests/themes/*
|
|
11
|
-
/tests/compile/*
|
|
12
|
-
/tests/jsunit/*
|
|
13
|
-
/tests/generators/*
|
|
14
|
-
/tests/mocha/webdriver.js
|
|
15
|
-
/tests/screenshot/*
|
|
16
|
-
/tests/test_runner.js
|
|
17
|
-
/tests/workspace_svg/*
|
|
18
|
-
|
|
19
|
-
# Demos, scripts, misc
|
|
20
|
-
/node_modules/*
|
|
21
|
-
/demos/*
|
|
22
|
-
/appengine/*
|
|
23
|
-
/externs/*
|
|
24
|
-
/closure/*
|
|
25
|
-
/scripts/gulpfiles/*
|
|
26
|
-
CHANGELOG.md
|
|
27
|
-
PULL_REQUEST_TEMPLATE.md
|
|
28
|
-
|
|
29
|
-
# Don't bother formatting JavaScript files we're about to migrate:
|
|
30
|
-
/generators/**/*.js
|
package/.prettierrc.js
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
// This config attempts to match google-style code.
|
|
2
|
-
|
|
3
|
-
module.exports = {
|
|
4
|
-
// Prefer single quotes, but minimize escaping.
|
|
5
|
-
singleQuote: true,
|
|
6
|
-
// Some properties must be quoted to preserve closure compiler behavior.
|
|
7
|
-
// Don't ever change whether properties are quoted.
|
|
8
|
-
quoteProps: 'preserve',
|
|
9
|
-
// Don't add spaces around braces for object literals.
|
|
10
|
-
bracketSpacing: false,
|
|
11
|
-
// Put HTML tag closing brackets on same line as last attribute.
|
|
12
|
-
bracketSameLine: true,
|
|
13
|
-
// Organise imports using a plugin.
|
|
14
|
-
'plugins': ['prettier-plugin-organize-imports'],
|
|
15
|
-
};
|