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/javascript/lists.ts","generators/javascript/logic.ts","generators/javascript/loops.ts","generators/javascript/math.ts","generators/javascript/procedures.ts","generators/javascript/text.ts","generators/javascript/variables.ts","generators/javascript/javascript_generator.ts","generators/javascript/variables_dynamic.ts","generators/javascript.ts"],"names":["lists_create_empty","block","generator","Order","ATOMIC","lists_create_with","elements","Array","itemCount_","i","valueToCode","NONE","join","lists_repeat","functionName","provideFunction_","FUNCTION_NAME_PLACEHOLDER_","element","repeatCount","FUNCTION_CALL","lists_length","MEMBER","lists_isEmpty","LOGICAL_NOT","lists_indexOf","operator","getFieldValue","item","code","workspace","options","oneBasedIndex","ADDITION","lists_getIndex","mode","where","list","listOrder","at","getAdjusted","Error","lists_setIndex","cacheList","match","listVar","nameDB_","getDistinctName","NameType","VARIABLE","value","ASSIGNMENT","SUBTRACTION","xVar","lists_getSublist","wherePascalCase","where1","where2","at1","at2","at1Param","at2Param","getSubstringIndex","lists_sort","direction","type","getCompareFunctionName","lists_split","input","delimiter","lists_reverse","controls_if","n","STATEMENT_PREFIX","injectId","conditionCode","branchCode","statementToCode","STATEMENT_SUFFIX","prefixLines","INDENT","getInput","logic_compare","OPERATORS","order","EQUALITY","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","String","Number","branch","addLoopTrap","loopVar","endVar","isNumber","controls_whileUntil","until","controls_for","variable0","getVariableName","increment","up","step","Math","abs","startVar","incVar","controls_forEach","indexVar","controls_flow_statements","xfix","loop","getSurroundLoop","suppressPrefixSuffix","math_number","number","UNARY_NEGATION","math_arithmetic","tuple","MULTIPLICATION","DIVISION","math_single","arg","math_constant","CONSTANTS","math_number_property","PROPERTIES","MODULUS","dropdownProperty","suffix","inputOrder","outputOrder","numberToCheck","divisor","math_change","varName","math_on_list","func","math_modulo","math_constrain","argument2","math_random_int","math_random_float","math_atan2","procedures_defreturn","funcName","getProcedureName","xfix1","loopTrap","INFINITE_LOOP_TRAP","returnValue","xfix2","args","variables","getVars","length","scrub_","definitions_","procedures_callreturn","procedures_callnoreturn","forBlock","procedures_ifreturn","hasReturnValue_","text","quote_","text_join","codeAndOrder","forceString","element0","element1","text_append","text_length","text_isEmpty","text_indexOf","substring","text_charAt","textOrder","text_getSubstring","requiresLengthCall","text_changeCase","text_trim","text_print","text_prompt_ext","msg","text_count","sub","text_replace","from","to","text_reverse","variables_get","variables_set","NEW","INCREMENT","DECREMENT","BITWISE_NOT","UNARY_PLUS","TYPEOF","VOID","DELETE","AWAIT","EXPONENTIATION","BITWISE_SHIFT","IN","INSTANCEOF","BITWISE_AND","BITWISE_XOR","BITWISE_OR","YIELD","COMMA","JavascriptGenerator","CodeGenerator","constructor","name","ORDER_OVERRIDES","isInitialized","key","addReservedWords","Object","getOwnPropertyNames","globalThis","init","reset","Names","RESERVED_WORDS_","setVariableMap","getVariableMap","populateVariables","populateProcedures","defvars","devVarList","allDeveloperVariables","push","getName","DEVELOPER_VARIABLE","allUsedVarModels","getId","finish","definitions","values","scrubNakedValue","line","string","replace","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","orderForInput","floor","$jscomp$tmp$exports$module$name","listName","opt_at","controls_ifelse","controls_repeat","math_round","math_trig","procedures_defnoreturn","strRegExp","test","stringName","text_prompt","javascriptGenerator","generators","lists","logic","loops","math","procedures","variablesDynamic"],"mappings":"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","file":"javascript_compressed.js","sourcesContent":["/**\n * @license\n * Copyright 2012 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @file Generating JavaScript for list blocks.\n */\n\n// Former goog.module ID: Blockly.JavaScript.lists\n\nimport type {CreateWithBlock} from '../../blocks/lists.js';\nimport type {Block} from '../../core/block.js';\nimport {NameType} from '../../core/names.js';\nimport type {JavascriptGenerator} from './javascript_generator.js';\nimport {Order} from './javascript_generator.js';\n\nexport function lists_create_empty(\n block: Block,\n generator: JavascriptGenerator,\n): [string, Order] {\n // Create an empty list.\n return ['[]', Order.ATOMIC];\n}\n\nexport function lists_create_with(\n block: Block,\n generator: JavascriptGenerator,\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) || 'null';\n }\n const code = '[' + elements.join(', ') + ']';\n return [code, Order.ATOMIC];\n}\n\nexport function lists_repeat(\n block: Block,\n generator: JavascriptGenerator,\n): [string, Order] {\n // Create a list with one element repeated.\n const functionName = generator.provideFunction_(\n 'listsRepeat',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}(value, n) {\n var array = [];\n for (var i = 0; i < n; i++) {\n array[i] = value;\n }\n return array;\n}\n`,\n );\n const element = generator.valueToCode(block, 'ITEM', Order.NONE) || 'null';\n const repeatCount = generator.valueToCode(block, 'NUM', Order.NONE) || '0';\n const code = functionName + '(' + element + ', ' + repeatCount + ')';\n return [code, Order.FUNCTION_CALL];\n}\n\nexport function lists_length(\n block: Block,\n generator: JavascriptGenerator,\n): [string, Order] {\n // String or array length.\n const list = generator.valueToCode(block, 'VALUE', Order.MEMBER) || '[]';\n return [list + '.length', Order.MEMBER];\n}\n\nexport function lists_isEmpty(\n block: Block,\n generator: JavascriptGenerator,\n): [string, Order] {\n // Is the string null or array empty?\n const list = generator.valueToCode(block, 'VALUE', Order.MEMBER) || '[]';\n return ['!' + list + '.length', Order.LOGICAL_NOT];\n}\n\nexport function lists_indexOf(\n block: Block,\n generator: JavascriptGenerator,\n): [string, Order] {\n // Find an item in the list.\n const operator =\n block.getFieldValue('END') === 'FIRST' ? 'indexOf' : 'lastIndexOf';\n const item = generator.valueToCode(block, 'FIND', Order.NONE) || \"''\";\n const list = generator.valueToCode(block, 'VALUE', Order.MEMBER) || '[]';\n const code = list + '.' + operator + '(' + item + ')';\n if (block.workspace.options.oneBasedIndex) {\n return [code + ' + 1', Order.ADDITION];\n }\n return [code, Order.FUNCTION_CALL];\n}\n\nexport function lists_getIndex(\n block: Block,\n generator: JavascriptGenerator,\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 + '.shift()';\n return [code, Order.MEMBER];\n } else if (mode === 'REMOVE') {\n return list + '.shift();\\n';\n }\n break;\n case 'LAST':\n if (mode === 'GET') {\n const code = list + '.slice(-1)[0]';\n return [code, Order.MEMBER];\n } else if (mode === 'GET_REMOVE') {\n const code = list + '.pop()';\n return [code, Order.MEMBER];\n } else if (mode === 'REMOVE') {\n return list + '.pop();\\n';\n }\n break;\n case 'FROM_START': {\n const at = generator.getAdjusted(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 + '.splice(' + at + ', 1)[0]';\n return [code, Order.FUNCTION_CALL];\n } else if (mode === 'REMOVE') {\n return list + '.splice(' + at + ', 1);\\n';\n }\n break;\n }\n case 'FROM_END': {\n const at = generator.getAdjusted(block, 'AT', 1, true);\n if (mode === 'GET') {\n const code = list + '.slice(' + at + ')[0]';\n return [code, Order.FUNCTION_CALL];\n } else if (mode === 'GET_REMOVE') {\n const code = list + '.splice(' + at + ', 1)[0]';\n return [code, Order.FUNCTION_CALL];\n } else if (mode === 'REMOVE') {\n return list + '.splice(' + at + ', 1);';\n }\n break;\n }\n case 'RANDOM': {\n const functionName = generator.provideFunction_(\n 'listsGetRandomItem',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}(list, remove) {\n var x = Math.floor(Math.random() * list.length);\n if (remove) {\n return list.splice(x, 1)[0];\n } else {\n return list[x];\n }\n}\n`,\n );\n const code = functionName + '(' + list + ', ' + (mode !== 'GET') + ')';\n if (mode === 'GET' || mode === 'GET_REMOVE') {\n return [code, Order.FUNCTION_CALL];\n } else if (mode === 'REMOVE') {\n return code + ';\\n';\n }\n break;\n }\n }\n throw Error('Unhandled combination (lists_getIndex).');\n}\n\nexport function lists_setIndex(block: Block, generator: JavascriptGenerator) {\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.ASSIGNMENT) || 'null';\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 'tmpList',\n NameType.VARIABLE,\n )!;\n const code = 'var ' + listVar + ' = ' + list + ';\\n';\n list = listVar;\n return code;\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 + '.unshift(' + value + ');\\n';\n }\n break;\n case 'LAST':\n if (mode === 'SET') {\n let code = cacheList();\n code += list + '[' + list + '.length - 1] = ' + value + ';\\n';\n return code;\n } else if (mode === 'INSERT') {\n return list + '.push(' + value + ');\\n';\n }\n break;\n case 'FROM_START': {\n const at = generator.getAdjusted(block, 'AT');\n if (mode === 'SET') {\n return list + '[' + at + '] = ' + value + ';\\n';\n } else if (mode === 'INSERT') {\n return list + '.splice(' + at + ', 0, ' + value + ');\\n';\n }\n break;\n }\n case 'FROM_END': {\n const at = generator.getAdjusted(\n block,\n 'AT',\n 1,\n false,\n Order.SUBTRACTION,\n );\n let code = cacheList();\n if (mode === 'SET') {\n code += list + '[' + list + '.length - ' + at + '] = ' + value + ';\\n';\n return code;\n } else if (mode === 'INSERT') {\n code +=\n list +\n '.splice(' +\n list +\n '.length - ' +\n at +\n ', 0, ' +\n value +\n ');\\n';\n return code;\n }\n break;\n }\n case 'RANDOM': {\n let code = cacheList();\n const xVar = generator.nameDB_!.getDistinctName(\n 'tmpX',\n NameType.VARIABLE,\n );\n code +=\n 'var ' + xVar + ' = Math.floor(Math.random() * ' + list + '.length);\\n';\n if (mode === 'SET') {\n code += list + '[' + xVar + '] = ' + value + ';\\n';\n return code;\n } else if (mode === 'INSERT') {\n code += list + '.splice(' + xVar + ', 0, ' + value + ');\\n';\n return code;\n }\n break;\n }\n }\n throw Error('Unhandled combination (lists_setIndex).');\n}\n\n/**\n * Returns an expression calculating the index into a list.\n * @param listName Name of the list, used to calculate length.\n * @param where The method of indexing, selected by dropdown in Blockly\n * @param opt_at The optional offset when indexing from start/end.\n * @returns Index expression.\n */\nconst getSubstringIndex = function (\n listName: string,\n where: string,\n opt_at?: string,\n): string | undefined {\n if (where === 'FIRST') {\n return '0';\n } else if (where === 'FROM_END') {\n return listName + '.length - 1 - ' + opt_at;\n } else if (where === 'LAST') {\n return listName + '.length - 1';\n } else {\n return opt_at;\n }\n};\n\nexport function lists_getSublist(\n block: Block,\n generator: JavascriptGenerator,\n): [string, Order] {\n // Get sublist.\n // Dictionary of WHEREn field choices and their CamelCase equivalents.\n const wherePascalCase = {\n 'FIRST': 'First',\n 'LAST': 'Last',\n 'FROM_START': 'FromStart',\n 'FROM_END': 'FromEnd',\n };\n type WhereOption = keyof typeof wherePascalCase;\n const list = generator.valueToCode(block, 'LIST', Order.MEMBER) || '[]';\n const where1 = block.getFieldValue('WHERE1') as WhereOption;\n const where2 = block.getFieldValue('WHERE2') as WhereOption;\n let code;\n if (where1 === 'FIRST' && where2 === 'LAST') {\n code = list + '.slice(0)';\n } else if (\n list.match(/^\\w+$/) ||\n (where1 !== 'FROM_END' && where2 === 'FROM_START')\n ) {\n // If the list is a variable or doesn't require a call for length, don't\n // generate a helper function.\n let at1;\n switch (where1) {\n case 'FROM_START':\n at1 = generator.getAdjusted(block, 'AT1');\n break;\n case 'FROM_END':\n at1 = generator.getAdjusted(block, 'AT1', 1, false, Order.SUBTRACTION);\n at1 = list + '.length - ' + at1;\n break;\n case 'FIRST':\n at1 = '0';\n break;\n default:\n throw Error('Unhandled option (lists_getSublist).');\n }\n let at2;\n switch (where2) {\n case 'FROM_START':\n at2 = generator.getAdjusted(block, 'AT2', 1);\n break;\n case 'FROM_END':\n at2 = generator.getAdjusted(block, 'AT2', 0, false, Order.SUBTRACTION);\n at2 = list + '.length - ' + at2;\n break;\n case 'LAST':\n at2 = list + '.length';\n break;\n default:\n throw Error('Unhandled option (lists_getSublist).');\n }\n code = list + '.slice(' + at1 + ', ' + at2 + ')';\n } else {\n const at1 = generator.getAdjusted(block, 'AT1');\n const at2 = generator.getAdjusted(block, 'AT2');\n // The value for 'FROM_END' and'FROM_START' depends on `at` so\n // we add it as a parameter.\n const at1Param =\n where1 === 'FROM_END' || where1 === 'FROM_START' ? ', at1' : '';\n const at2Param =\n where2 === 'FROM_END' || where2 === 'FROM_START' ? ', at2' : '';\n const functionName = generator.provideFunction_(\n 'subsequence' + wherePascalCase[where1] + wherePascalCase[where2],\n `\nfunction ${\n generator.FUNCTION_NAME_PLACEHOLDER_\n }(sequence${at1Param}${at2Param}) {\n var start = ${getSubstringIndex('sequence', where1, 'at1')};\n var end = ${getSubstringIndex('sequence', where2, 'at2')} + 1;\n return sequence.slice(start, end);\n}\n`,\n );\n code =\n functionName +\n '(' +\n list +\n // The value for 'FROM_END' and 'FROM_START' depends on `at` so we\n // pass it.\n (where1 === 'FROM_END' || where1 === 'FROM_START' ? ', ' + at1 : '') +\n (where2 === 'FROM_END' || where2 === 'FROM_START' ? ', ' + at2 : '') +\n ')';\n }\n return [code, Order.FUNCTION_CALL];\n}\n\nexport function lists_sort(\n block: Block,\n generator: JavascriptGenerator,\n): [string, Order] {\n // Block for sorting a list.\n const list =\n generator.valueToCode(block, 'LIST', Order.FUNCTION_CALL) || '[]';\n const direction = block.getFieldValue('DIRECTION') === '1' ? 1 : -1;\n const type = block.getFieldValue('TYPE');\n const getCompareFunctionName = generator.provideFunction_(\n 'listsGetSortCompare',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}(type, direction) {\n var compareFuncs = {\n 'NUMERIC': function(a, b) {\n return Number(a) - Number(b); },\n 'TEXT': function(a, b) {\n return String(a) > String(b) ? 1 : -1; },\n 'IGNORE_CASE': function(a, b) {\n return String(a).toLowerCase() > String(b).toLowerCase() ? 1 : -1; },\n };\n var compare = compareFuncs[type];\n return function(a, b) { return compare(a, b) * direction; };\n}\n `,\n );\n return [\n list +\n '.slice().sort(' +\n getCompareFunctionName +\n '(\"' +\n type +\n '\", ' +\n direction +\n '))',\n Order.FUNCTION_CALL,\n ];\n}\n\nexport function lists_split(\n block: Block,\n generator: JavascriptGenerator,\n): [string, Order] {\n // Block for splitting text into a list, or joining a list into text.\n let input = generator.valueToCode(block, 'INPUT', Order.MEMBER);\n const delimiter = generator.valueToCode(block, 'DELIM', Order.NONE) || \"''\";\n const mode = block.getFieldValue('MODE');\n let functionName;\n if (mode === 'SPLIT') {\n if (!input) {\n input = \"''\";\n }\n functionName = 'split';\n } else if (mode === 'JOIN') {\n if (!input) {\n input = '[]';\n }\n functionName = 'join';\n } else {\n throw Error('Unknown mode: ' + mode);\n }\n const code = input + '.' + functionName + '(' + delimiter + ')';\n return [code, Order.FUNCTION_CALL];\n}\n\nexport function lists_reverse(\n block: Block,\n generator: JavascriptGenerator,\n): [string, Order] {\n // Block for reversing a list.\n const list =\n generator.valueToCode(block, 'LIST', Order.FUNCTION_CALL) || '[]';\n const code = list + '.slice().reverse()';\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 JavaScript for logic blocks.\n */\n\n// Former goog.module ID: Blockly.JavaScript.logic\n\nimport type {Block} from '../../core/block.js';\nimport type {JavascriptGenerator} from './javascript_generator.js';\nimport {Order} from './javascript_generator.js';\n\nexport function controls_if(block: Block, generator: JavascriptGenerator) {\n // If/elseif/else condition.\n let n = 0;\n let code = '';\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 const conditionCode =\n generator.valueToCode(block, 'IF' + n, Order.NONE) || 'false';\n let branchCode = generator.statementToCode(block, 'DO' + 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 +=\n (n > 0 ? ' else ' : '') +\n 'if (' +\n conditionCode +\n ') {\\n' +\n branchCode +\n '}';\n n++;\n } while (block.getInput('IF' + n));\n\n if (block.getInput('ELSE') || generator.STATEMENT_SUFFIX) {\n let branchCode = block.getInput('ELSE')\n ? generator.statementToCode(block, 'ELSE')\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}\n\nexport const controls_ifelse = controls_if;\n\nexport function logic_compare(\n block: Block,\n generator: JavascriptGenerator,\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 =\n operator === '==' || operator === '!=' ? Order.EQUALITY : 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: JavascriptGenerator,\n): [string, Order] {\n // Operations 'and', 'or'.\n const operator = block.getFieldValue('OP') === 'AND' ? '&&' : '||';\n const order = operator === '&&' ? 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 === '&&' ? '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: JavascriptGenerator,\n): [string, Order] {\n // Negation.\n const order = Order.LOGICAL_NOT;\n const argument0 = generator.valueToCode(block, 'BOOL', order) || 'true';\n const code = '!' + argument0;\n return [code, order];\n}\n\nexport function logic_boolean(\n block: Block,\n generator: JavascriptGenerator,\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: JavascriptGenerator,\n): [string, Order] {\n // Null data type.\n return ['null', Order.ATOMIC];\n}\n\nexport function logic_ternary(\n block: Block,\n generator: JavascriptGenerator,\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) || 'null';\n const value_else =\n generator.valueToCode(block, 'ELSE', Order.CONDITIONAL) || 'null';\n const code = value_if + ' ? ' + value_then + ' : ' + 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 JavaScript for loop blocks.\n */\n\n// Former goog.module ID: Blockly.JavaScript.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 {JavascriptGenerator} from './javascript_generator.js';\nimport {Order} from './javascript_generator.js';\n\nexport function controls_repeat_ext(\n block: Block,\n generator: JavascriptGenerator,\n) {\n // Repeat n times.\n let repeats;\n if (block.getField('TIMES')) {\n // Internal number.\n repeats = String(Number(block.getFieldValue('TIMES')));\n } else {\n // External number.\n repeats = generator.valueToCode(block, 'TIMES', Order.ASSIGNMENT) || '0';\n }\n let branch = generator.statementToCode(block, 'DO');\n branch = generator.addLoopTrap(branch, block);\n let code = '';\n const loopVar = generator.nameDB_!.getDistinctName(\n 'count',\n NameType.VARIABLE,\n );\n let endVar = repeats;\n if (!repeats.match(/^\\w+$/) && !stringUtils.isNumber(repeats)) {\n endVar = generator.nameDB_!.getDistinctName(\n 'repeat_end',\n NameType.VARIABLE,\n );\n code += 'var ' + endVar + ' = ' + repeats + ';\\n';\n }\n code +=\n 'for (var ' +\n loopVar +\n ' = 0; ' +\n loopVar +\n ' < ' +\n endVar +\n '; ' +\n loopVar +\n '++) {\\n' +\n branch +\n '}\\n';\n return code;\n}\n\nexport const controls_repeat = controls_repeat_ext;\n\nexport function controls_whileUntil(\n block: Block,\n generator: JavascriptGenerator,\n) {\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);\n if (until) {\n argument0 = '!' + argument0;\n }\n return 'while (' + argument0 + ') {\\n' + branch + '}\\n';\n}\n\nexport function controls_for(block: Block, generator: JavascriptGenerator) {\n // For loop.\n const variable0 = generator.getVariableName(block.getFieldValue('VAR'));\n const argument0 =\n generator.valueToCode(block, 'FROM', Order.ASSIGNMENT) || '0';\n const argument1 = generator.valueToCode(block, 'TO', Order.ASSIGNMENT) || '0';\n const increment = generator.valueToCode(block, 'BY', Order.ASSIGNMENT) || '1';\n let branch = generator.statementToCode(block, 'DO');\n branch = generator.addLoopTrap(branch, block);\n let code;\n if (\n stringUtils.isNumber(argument0) &&\n stringUtils.isNumber(argument1) &&\n stringUtils.isNumber(increment)\n ) {\n // All arguments are simple numbers.\n const up = Number(argument0) <= Number(argument1);\n code =\n 'for (' +\n variable0 +\n ' = ' +\n argument0 +\n '; ' +\n variable0 +\n (up ? ' <= ' : ' >= ') +\n argument1 +\n '; ' +\n variable0;\n const step = Math.abs(Number(increment));\n if (step === 1) {\n code += up ? '++' : '--';\n } else {\n code += (up ? ' += ' : ' -= ') + step;\n }\n code += ') {\\n' + branch + '}\\n';\n } else {\n code = '';\n // Cache non-trivial values to variables to prevent repeated look-ups.\n let startVar = argument0;\n if (!argument0.match(/^\\w+$/) && !stringUtils.isNumber(argument0)) {\n startVar = generator.nameDB_!.getDistinctName(\n variable0 + '_start',\n NameType.VARIABLE,\n );\n code += 'var ' + startVar + ' = ' + argument0 + ';\\n';\n }\n let endVar = argument1;\n if (!argument1.match(/^\\w+$/) && !stringUtils.isNumber(argument1)) {\n endVar = generator.nameDB_!.getDistinctName(\n variable0 + '_end',\n NameType.VARIABLE,\n );\n code += 'var ' + endVar + ' = ' + argument1 + ';\\n';\n }\n // Determine loop direction at start, in case one of the bounds\n // changes during loop execution.\n const incVar = generator.nameDB_!.getDistinctName(\n variable0 + '_inc',\n NameType.VARIABLE,\n );\n code += 'var ' + incVar + ' = ';\n if (stringUtils.isNumber(increment)) {\n code += Math.abs(Number(increment)) + ';\\n';\n } else {\n code += 'Math.abs(' + increment + ');\\n';\n }\n code += 'if (' + startVar + ' > ' + endVar + ') {\\n';\n code += generator.INDENT + incVar + ' = -' + incVar + ';\\n';\n code += '}\\n';\n code +=\n 'for (' +\n variable0 +\n ' = ' +\n startVar +\n '; ' +\n incVar +\n ' >= 0 ? ' +\n variable0 +\n ' <= ' +\n endVar +\n ' : ' +\n variable0 +\n ' >= ' +\n endVar +\n '; ' +\n variable0 +\n ' += ' +\n incVar +\n ') {\\n' +\n branch +\n '}\\n';\n }\n return code;\n}\n\nexport function controls_forEach(block: Block, generator: JavascriptGenerator) {\n // For each loop.\n const variable0 = generator.getVariableName(block.getFieldValue('VAR'));\n const argument0 =\n generator.valueToCode(block, 'LIST', Order.ASSIGNMENT) || '[]';\n let branch = generator.statementToCode(block, 'DO');\n branch = generator.addLoopTrap(branch, block);\n let code = '';\n // Cache non-trivial values to variables to prevent repeated look-ups.\n let listVar = argument0;\n if (!argument0.match(/^\\w+$/)) {\n listVar = generator.nameDB_!.getDistinctName(\n variable0 + '_list',\n NameType.VARIABLE,\n );\n code += 'var ' + listVar + ' = ' + argument0 + ';\\n';\n }\n const indexVar = generator.nameDB_!.getDistinctName(\n variable0 + '_index',\n NameType.VARIABLE,\n );\n branch =\n generator.INDENT +\n variable0 +\n ' = ' +\n listVar +\n '[' +\n indexVar +\n '];\\n' +\n branch;\n code += 'for (var ' + indexVar + ' in ' + listVar + ') {\\n' + branch + '}\\n';\n return code;\n}\n\nexport function controls_flow_statements(\n block: Block,\n generator: JavascriptGenerator,\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 JavaScript for math blocks.\n */\n\n// Former goog.module ID: Blockly.JavaScript.math\n\nimport type {Block} from '../../core/block.js';\nimport type {JavascriptGenerator} from './javascript_generator.js';\nimport {Order} from './javascript_generator.js';\n\nexport function math_number(\n block: Block,\n generator: JavascriptGenerator,\n): [string, Order] {\n // Numeric value.\n const number = Number(block.getFieldValue('NUM'));\n const order = number >= 0 ? Order.ATOMIC : Order.UNARY_NEGATION;\n return [String(number), order];\n}\n\nexport function math_arithmetic(\n block: Block,\n generator: JavascriptGenerator,\n): [string, Order] {\n // Basic arithmetic operators, and power.\n const OPERATORS: Record<string, [string | null, Order]> = {\n 'ADD': [' + ', Order.ADDITION],\n 'MINUS': [' - ', Order.SUBTRACTION],\n 'MULTIPLY': [' * ', Order.MULTIPLICATION],\n 'DIVIDE': [' / ', Order.DIVISION],\n 'POWER': [null, Order.NONE], // Handle power separately.\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 let code;\n // Power in JavaScript requires a special case since it has no operator.\n if (!operator) {\n code = 'Math.pow(' + argument0 + ', ' + argument1 + ')';\n return [code, Order.FUNCTION_CALL];\n }\n code = argument0 + operator + argument1;\n return [code, order];\n}\n\nexport function math_single(\n block: Block,\n generator: JavascriptGenerator,\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 arg = generator.valueToCode(block, 'NUM', Order.UNARY_NEGATION) || '0';\n if (arg[0] === '-') {\n // --3 is not legal in JS.\n arg = ' ' + arg;\n }\n code = '-' + arg;\n return [code, Order.UNARY_NEGATION];\n }\n if (operator === 'SIN' || operator === 'COS' || operator === 'TAN') {\n arg = generator.valueToCode(block, 'NUM', Order.DIVISION) || '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.abs(' + 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 'EXP':\n code = 'Math.exp(' + arg + ')';\n break;\n case 'POW10':\n code = 'Math.pow(10,' + arg + ')';\n break;\n case 'ROUND':\n code = 'Math.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 * Math.PI)';\n break;\n case 'COS':\n code = 'Math.cos(' + arg + ' / 180 * Math.PI)';\n break;\n case 'TAN':\n code = 'Math.tan(' + arg + ' / 180 * 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 'LOG10':\n code = 'Math.log(' + arg + ') / Math.log(10)';\n break;\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.DIVISION];\n}\n\nexport function math_constant(\n block: Block,\n generator: JavascriptGenerator,\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.DIVISION],\n 'SQRT2': ['Math.SQRT2', Order.MEMBER],\n 'SQRT1_2': ['Math.SQRT1_2', Order.MEMBER],\n 'INFINITY': ['Infinity', Order.ATOMIC],\n };\n type ConstantOption = keyof typeof CONSTANTS;\n return CONSTANTS[block.getFieldValue('CONSTANT') as ConstantOption];\n}\n\nexport function math_number_property(\n block: Block,\n generator: JavascriptGenerator,\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.MODULUS, Order.EQUALITY],\n 'ODD': [' % 2 === 1', Order.MODULUS, Order.EQUALITY],\n 'WHOLE': [' % 1 === 0', Order.MODULUS, Order.EQUALITY],\n 'POSITIVE': [' > 0', Order.RELATIONAL, Order.RELATIONAL],\n 'NEGATIVE': [' < 0', Order.RELATIONAL, Order.RELATIONAL],\n 'DIVISIBLE_BY': [null, Order.MODULUS, Order.EQUALITY],\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 const functionName = generator.provideFunction_(\n 'mathIsPrime',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}(n) {\n // https://en.wikipedia.org/wiki/Primality_test#Naive_methods\n if (n == 2 || n == 3) {\n return true;\n }\n // False if n is NaN, negative, is 1, or not whole.\n // And false if n is divisible by 2 or 3.\n if (isNaN(n) || n <= 1 || n % 1 !== 0 || n % 2 === 0 || n % 3 === 0) {\n return false;\n }\n // Check all the numbers of form 6k +/- 1, up to sqrt(n).\n for (var x = 6; x <= Math.sqrt(n) + 1; x += 6) {\n if (n % (x - 1) === 0 || n % (x + 1) === 0) {\n return false;\n }\n }\n return true;\n}\n`,\n );\n code = functionName + '(' + numberToCheck + ')';\n } else if (dropdownProperty === 'DIVISIBLE_BY') {\n const divisor =\n generator.valueToCode(block, 'DIVISOR', Order.MODULUS) || '0';\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: JavascriptGenerator) {\n // Add to a variable in place.\n const argument0 =\n generator.valueToCode(block, 'DELTA', Order.ADDITION) || '0';\n const varName = generator.getVariableName(block.getFieldValue('VAR'));\n return (\n varName +\n ' = (typeof ' +\n varName +\n \" === 'number' ? \" +\n varName +\n ' : 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: JavascriptGenerator,\n): [string, Order] {\n // Math functions for lists.\n const func = block.getFieldValue('OP');\n let list;\n let code;\n switch (func) {\n case 'SUM':\n list = generator.valueToCode(block, 'LIST', Order.MEMBER) || '[]';\n code = list + '.reduce(function(x, y) {return x + y;}, 0)';\n break;\n case 'MIN':\n list = generator.valueToCode(block, 'LIST', Order.NONE) || '[]';\n code = 'Math.min.apply(null, ' + list + ')';\n break;\n case 'MAX':\n list = generator.valueToCode(block, 'LIST', Order.NONE) || '[]';\n code = 'Math.max.apply(null, ' + list + ')';\n break;\n case 'AVERAGE': {\n // mathMean([null,null,1,3]) === 2.0.\n const functionName = generator.provideFunction_(\n 'mathMean',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}(myList) {\n return myList.reduce(function(x, y) {return x + y;}, 0) / myList.length;\n}\n`,\n );\n list = generator.valueToCode(block, 'LIST', Order.NONE) || '[]';\n code = functionName + '(' + list + ')';\n break;\n }\n case 'MEDIAN': {\n // mathMedian([null,null,1,3]) === 2.0.\n const functionName = generator.provideFunction_(\n 'mathMedian',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}(myList) {\n var localList = myList.filter(function (x) {return typeof x === 'number';});\n if (!localList.length) return null;\n localList.sort(function(a, b) {return b - a;});\n if (localList.length % 2 === 0) {\n return (localList[localList.length / 2 - 1] + localList[localList.length / 2]) / 2;\n } else {\n return localList[(localList.length - 1) / 2];\n }\n}\n`,\n );\n list = generator.valueToCode(block, 'LIST', Order.NONE) || '[]';\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 'mathModes',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}(values) {\n var modes = [];\n var counts = [];\n var maxCount = 0;\n for (var i = 0; i < values.length; i++) {\n var value = values[i];\n var found = false;\n var thisCount;\n for (var j = 0; j < counts.length; j++) {\n if (counts[j][0] === value) {\n thisCount = ++counts[j][1];\n found = true;\n break;\n }\n }\n if (!found) {\n counts.push([value, 1]);\n thisCount = 1;\n }\n maxCount = Math.max(thisCount, maxCount);\n }\n for (var j = 0; j < counts.length; j++) {\n if (counts[j][1] === maxCount) {\n modes.push(counts[j][0]);\n }\n }\n return modes;\n}\n`,\n );\n list = generator.valueToCode(block, 'LIST', Order.NONE) || '[]';\n code = functionName + '(' + list + ')';\n break;\n }\n case 'STD_DEV': {\n const functionName = generator.provideFunction_(\n 'mathStandardDeviation',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}(numbers) {\n var n = numbers.length;\n if (!n) return null;\n var mean = numbers.reduce(function(x, y) {return x + y;}) / n;\n var variance = 0;\n for (var j = 0; j < n; j++) {\n variance += Math.pow(numbers[j] - mean, 2);\n }\n variance /= n;\n return Math.sqrt(variance);\n}\n`,\n );\n list = generator.valueToCode(block, 'LIST', Order.NONE) || '[]';\n code = functionName + '(' + list + ')';\n break;\n }\n case 'RANDOM': {\n const functionName = generator.provideFunction_(\n 'mathRandomList',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}(list) {\n var x = Math.floor(Math.random() * list.length);\n return list[x];\n}\n`,\n );\n list = generator.valueToCode(block, 'LIST', Order.NONE) || '[]';\n code = functionName + '(' + list + ')';\n break;\n }\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: JavascriptGenerator,\n): [string, Order] {\n // Remainder computation.\n const argument0 =\n generator.valueToCode(block, 'DIVIDEND', Order.MODULUS) || '0';\n const argument1 =\n generator.valueToCode(block, 'DIVISOR', Order.MODULUS) || '0';\n const code = argument0 + ' % ' + argument1;\n return [code, Order.MODULUS];\n}\n\nexport function math_constrain(\n block: Block,\n generator: JavascriptGenerator,\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) || 'Infinity';\n const code =\n 'Math.min(Math.max(' +\n argument0 +\n ', ' +\n argument1 +\n '), ' +\n argument2 +\n ')';\n return [code, Order.FUNCTION_CALL];\n}\n\nexport function math_random_int(\n block: Block,\n generator: JavascriptGenerator,\n): [string, Order] {\n // Random integer between [X] and [Y].\n const argument0 = generator.valueToCode(block, 'FROM', Order.NONE) || '0';\n const argument1 = generator.valueToCode(block, 'TO', Order.NONE) || '0';\n const functionName = generator.provideFunction_(\n 'mathRandomInt',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}(a, b) {\n if (a > b) {\n // Swap a and b to ensure a is smaller.\n var c = a;\n a = b;\n b = c;\n }\n return Math.floor(Math.random() * (b - a + 1) + a);\n}\n`,\n );\n const code = functionName + '(' + argument0 + ', ' + argument1 + ')';\n return [code, Order.FUNCTION_CALL];\n}\n\nexport function math_random_float(\n block: Block,\n generator: JavascriptGenerator,\n): [string, Order] {\n // Random fraction between 0 and 1.\n return ['Math.random()', Order.FUNCTION_CALL];\n}\n\nexport function math_atan2(\n block: Block,\n generator: JavascriptGenerator,\n): [string, Order] {\n // Arctangent of point (X, Y) in degrees from -180 to 180.\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.DIVISION,\n ];\n}\n","/**\n * @license\n * Copyright 2012 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @file Generating JavaScript for procedure blocks.\n */\n\n// Former goog.module ID: Blockly.JavaScript.procedures\n\nimport type {IfReturnBlock} from '../../blocks/procedures.js';\nimport type {Block} from '../../core/block.js';\nimport type {JavascriptGenerator} from './javascript_generator.js';\nimport {Order} from './javascript_generator.js';\n\nexport function procedures_defreturn(\n block: Block,\n generator: JavascriptGenerator,\n) {\n // Define a procedure with a return value.\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 }\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 'function ' +\n funcName +\n '(' +\n args.join(', ') +\n ') {\\n' +\n xfix1 +\n loopTrap +\n branch +\n xfix2 +\n returnValue +\n '}';\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: JavascriptGenerator,\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) || 'null';\n }\n const code = funcName + '(' + args.join(', ') + ')';\n return [code, Order.FUNCTION_CALL];\n}\n\nexport function procedures_callnoreturn(\n block: Block,\n generator: JavascriptGenerator,\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'](\n block,\n generator,\n ) as [string, Order];\n return tuple[0] + ';\\n';\n}\n\nexport function procedures_ifreturn(\n block: Block,\n generator: JavascriptGenerator,\n) {\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) || 'null';\n code += generator.INDENT + 'return ' + value + ';\\n';\n } else {\n code += generator.INDENT + 'return;\\n';\n }\n code += '}\\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 JavaScript for text blocks.\n */\n\n// Former goog.module ID: Blockly.JavaScript.texts\n\nimport type {JoinMutatorBlock} from '../../blocks/text.js';\nimport type {Block} from '../../core/block.js';\nimport type {JavascriptGenerator} from './javascript_generator.js';\nimport {Order} from './javascript_generator.js';\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 'String(...)' function.\n * Leave string literals alone.\n * @param value Code evaluating to a value.\n * @returns Array containing code evaluating to a string\n * and 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 ['String(' + value + ')', Order.FUNCTION_CALL];\n};\n\n/**\n * Returns an expression calculating the index into a string.\n * @param stringName Name of the string, used to calculate length.\n * @param where The method of indexing, selected by dropdown in Blockly\n * @param opt_at The optional offset when indexing from start/end.\n * @returns Index expression.\n */\nconst getSubstringIndex = function (\n stringName: string,\n where: string,\n opt_at?: string,\n): string | undefined {\n if (where === 'FIRST') {\n return '0';\n } else if (where === 'FROM_END') {\n return stringName + '.length - 1 - ' + opt_at;\n } else if (where === 'LAST') {\n return stringName + '.length - 1';\n } else {\n return opt_at;\n }\n};\n\nexport function text(\n block: Block,\n generator: JavascriptGenerator,\n): [string, Order] {\n // Text value.\n const code = generator.quote_(block.getFieldValue('TEXT'));\n return [code, Order.ATOMIC];\n}\n\nexport function text_join(\n block: Block,\n generator: JavascriptGenerator,\n): [string, Order] {\n // Create a string made up of any number of elements of any type.\n const joinBlock = block as JoinMutatorBlock;\n switch (joinBlock.itemCount_) {\n case 0:\n return [\"''\", Order.ATOMIC];\n case 1: {\n const element =\n generator.valueToCode(joinBlock, 'ADD0', Order.NONE) || \"''\";\n const codeAndOrder = forceString(element);\n return codeAndOrder;\n }\n case 2: {\n const element0 =\n generator.valueToCode(joinBlock, 'ADD0', Order.NONE) || \"''\";\n const element1 =\n generator.valueToCode(joinBlock, 'ADD1', Order.NONE) || \"''\";\n const code = forceString(element0)[0] + ' + ' + forceString(element1)[0];\n return [code, Order.ADDITION];\n }\n default: {\n const elements = new Array(joinBlock.itemCount_);\n for (let i = 0; i < joinBlock.itemCount_; i++) {\n elements[i] =\n generator.valueToCode(joinBlock, 'ADD' + i, Order.NONE) || \"''\";\n }\n const code = '[' + elements.join(',') + \"].join('')\";\n return [code, Order.FUNCTION_CALL];\n }\n }\n}\n\nexport function text_append(block: Block, generator: JavascriptGenerator) {\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 const code = varName + ' += ' + forceString(value)[0] + ';\\n';\n return code;\n}\n\nexport function text_length(\n block: Block,\n generator: JavascriptGenerator,\n): [string, Order] {\n // String or array length.\n const text = generator.valueToCode(block, 'VALUE', Order.MEMBER) || \"''\";\n return [text + '.length', Order.MEMBER];\n}\n\nexport function text_isEmpty(\n block: Block,\n generator: JavascriptGenerator,\n): [string, Order] {\n // Is the string null or array empty?\n const text = generator.valueToCode(block, 'VALUE', Order.MEMBER) || \"''\";\n return ['!' + text + '.length', Order.LOGICAL_NOT];\n}\n\nexport function text_indexOf(\n block: Block,\n generator: JavascriptGenerator,\n): [string, Order] {\n // Search the text for a substring.\n const operator =\n block.getFieldValue('END') === 'FIRST' ? 'indexOf' : 'lastIndexOf';\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 // Adjust index if using one-based indices.\n if (block.workspace.options.oneBasedIndex) {\n return [code + ' + 1', Order.ADDITION];\n }\n return [code, Order.FUNCTION_CALL];\n}\n\nexport function text_charAt(\n block: Block,\n generator: JavascriptGenerator,\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 + '.charAt(0)';\n return [code, Order.FUNCTION_CALL];\n }\n case 'LAST': {\n const code = text + '.slice(-1)';\n return [code, Order.FUNCTION_CALL];\n }\n case 'FROM_START': {\n const at = generator.getAdjusted(block, 'AT');\n // Adjust index if using one-based indices.\n const code = text + '.charAt(' + at + ')';\n return [code, Order.FUNCTION_CALL];\n }\n case 'FROM_END': {\n const at = generator.getAdjusted(block, 'AT', 1, true);\n const code = text + '.slice(' + at + ').charAt(0)';\n return [code, Order.FUNCTION_CALL];\n }\n case 'RANDOM': {\n const functionName = generator.provideFunction_(\n 'textRandomLetter',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}(text) {\n var x = Math.floor(Math.random() * text.length);\n return text[x];\n}\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: JavascriptGenerator,\n): [string, Order] {\n // Dictionary of WHEREn field choices and their CamelCase equivalents. */\n const wherePascalCase = {\n 'FIRST': 'First',\n 'LAST': 'Last',\n 'FROM_START': 'FromStart',\n 'FROM_END': 'FromEnd',\n };\n type WhereOption = keyof typeof wherePascalCase;\n // Get substring.\n const where1 = block.getFieldValue('WHERE1') as WhereOption;\n const where2 = block.getFieldValue('WHERE2') as WhereOption;\n const requiresLengthCall =\n where1 !== 'FROM_END' &&\n where1 !== 'LAST' &&\n where2 !== 'FROM_END' &&\n where2 !== 'LAST';\n const textOrder = requiresLengthCall ? Order.MEMBER : Order.NONE;\n const text = generator.valueToCode(block, 'STRING', textOrder) || \"''\";\n let code;\n if (where1 === 'FIRST' && where2 === 'LAST') {\n code = text;\n return [code, Order.NONE];\n } else if (text.match(/^'?\\w+'?$/) || requiresLengthCall) {\n // If the text is a variable or literal or doesn't require a call for\n // length, don't generate a helper function.\n let at1;\n switch (where1) {\n case 'FROM_START':\n at1 = generator.getAdjusted(block, 'AT1');\n break;\n case 'FROM_END':\n at1 = generator.getAdjusted(block, 'AT1', 1, false, Order.SUBTRACTION);\n at1 = text + '.length - ' + at1;\n break;\n case 'FIRST':\n at1 = '0';\n break;\n default:\n throw Error('Unhandled option (text_getSubstring).');\n }\n let at2;\n switch (where2) {\n case 'FROM_START':\n at2 = generator.getAdjusted(block, 'AT2', 1);\n break;\n case 'FROM_END':\n at2 = generator.getAdjusted(block, 'AT2', 0, false, Order.SUBTRACTION);\n at2 = text + '.length - ' + at2;\n break;\n case 'LAST':\n at2 = text + '.length';\n break;\n default:\n throw Error('Unhandled option (text_getSubstring).');\n }\n code = text + '.slice(' + at1 + ', ' + at2 + ')';\n } else {\n const at1 = generator.getAdjusted(block, 'AT1');\n const at2 = generator.getAdjusted(block, 'AT2');\n // The value for 'FROM_END' and'FROM_START' depends on `at` so\n // we add it as a parameter.\n const at1Param =\n where1 === 'FROM_END' || where1 === 'FROM_START' ? ', at1' : '';\n const at2Param =\n where2 === 'FROM_END' || where2 === 'FROM_START' ? ', at2' : '';\n const functionName = generator.provideFunction_(\n 'subsequence' + wherePascalCase[where1] + wherePascalCase[where2],\n `\nfunction ${\n generator.FUNCTION_NAME_PLACEHOLDER_\n }(sequence${at1Param}${at2Param}) {\n var start = ${getSubstringIndex('sequence', where1, 'at1')};\n var end = ${getSubstringIndex('sequence', where2, 'at2')} + 1;\n return sequence.slice(start, end);\n}\n`,\n );\n code =\n functionName +\n '(' +\n text +\n // The value for 'FROM_END' and 'FROM_START' depends on `at` so we\n // pass it.\n (where1 === 'FROM_END' || where1 === 'FROM_START' ? ', ' + at1 : '') +\n (where2 === 'FROM_END' || where2 === 'FROM_START' ? ', ' + at2 : '') +\n ')';\n }\n return [code, Order.FUNCTION_CALL];\n}\n\nexport function text_changeCase(\n block: Block,\n generator: JavascriptGenerator,\n): [string, Order] {\n // Change capitalization.\n const OPERATORS = {\n 'UPPERCASE': '.toUpperCase()',\n 'LOWERCASE': '.toLowerCase()',\n 'TITLECASE': null,\n };\n type OperatorOption = keyof typeof OPERATORS;\n const operator = OPERATORS[block.getFieldValue('CASE') as OperatorOption];\n const textOrder = operator ? Order.MEMBER : Order.NONE;\n const text = generator.valueToCode(block, 'TEXT', textOrder) || \"''\";\n let code;\n if (operator) {\n // Upper and lower case are functions built into generator.\n code = text + operator;\n } else {\n // Title case is not a native JavaScript function. Define one.\n const functionName = generator.provideFunction_(\n 'textToTitleCase',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}(str) {\n return str.replace(/\\\\S+/g,\n function(txt) {return txt[0].toUpperCase() + txt.substring(1).toLowerCase();});\n}\n`,\n );\n code = functionName + '(' + text + ')';\n }\n return [code, Order.FUNCTION_CALL];\n}\n\nexport function text_trim(\n block: Block,\n generator: JavascriptGenerator,\n): [string, Order] {\n // Trim spaces.\n const OPERATORS = {\n 'LEFT': \".replace(/^[\\\\s\\\\xa0]+/, '')\",\n 'RIGHT': \".replace(/[\\\\s\\\\xa0]+$/, '')\",\n 'BOTH': '.trim()',\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 return [text + operator, Order.FUNCTION_CALL];\n}\n\nexport function text_print(block: Block, generator: JavascriptGenerator) {\n // Print statement.\n const msg = generator.valueToCode(block, 'TEXT', Order.NONE) || \"''\";\n return 'window.alert(' + msg + ');\\n';\n}\n\nexport function text_prompt_ext(\n block: Block,\n generator: JavascriptGenerator,\n): [string, Order] {\n // Prompt function.\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 = 'window.prompt(' + msg + ')';\n const toNumber = block.getFieldValue('TYPE') === 'NUMBER';\n if (toNumber) {\n code = 'Number(' + 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: JavascriptGenerator,\n): [string, Order] {\n const text = generator.valueToCode(block, 'TEXT', Order.NONE) || \"''\";\n const sub = generator.valueToCode(block, 'SUB', Order.NONE) || \"''\";\n const functionName = generator.provideFunction_(\n 'textCount',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}(haystack, needle) {\n if (needle.length === 0) {\n return haystack.length + 1;\n } else {\n return haystack.split(needle).length - 1;\n }\n}\n`,\n );\n const code = functionName + '(' + text + ', ' + sub + ')';\n return [code, Order.FUNCTION_CALL];\n}\n\nexport function text_replace(\n block: Block,\n generator: JavascriptGenerator,\n): [string, Order] {\n const text = generator.valueToCode(block, 'TEXT', Order.NONE) || \"''\";\n const from = generator.valueToCode(block, 'FROM', Order.NONE) || \"''\";\n const to = generator.valueToCode(block, 'TO', Order.NONE) || \"''\";\n // The regex escaping code below is taken from the implementation of\n // goog.string.regExpEscape.\n const functionName = generator.provideFunction_(\n 'textReplace',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}(haystack, needle, replacement) {\n needle = needle.replace(/([-()\\\\[\\\\]{}+?*.$\\\\^|,:#<!\\\\\\\\])/g, '\\\\\\\\$1')\n .replace(/\\\\x08/g, '\\\\\\\\x08');\n return haystack.replace(new RegExp(needle, 'g'), replacement);\n}\n`,\n );\n const code = functionName + '(' + text + ', ' + from + ', ' + to + ')';\n return [code, Order.FUNCTION_CALL];\n}\n\nexport function text_reverse(\n block: Block,\n generator: JavascriptGenerator,\n): [string, Order] {\n const text = generator.valueToCode(block, 'TEXT', Order.MEMBER) || \"''\";\n const code = text + \".split('').reverse().join('')\";\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 JavaScript for variable blocks.\n */\n\n// Former goog.module ID: Blockly.JavaScript.variables\n\nimport type {Block} from '../../core/block.js';\nimport type {JavascriptGenerator} from './javascript_generator.js';\nimport {Order} from './javascript_generator.js';\n\nexport function variables_get(\n block: Block,\n generator: JavascriptGenerator,\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: JavascriptGenerator) {\n // Variable setter.\n const argument0 =\n generator.valueToCode(block, 'VALUE', Order.ASSIGNMENT) || '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 JavaScript code generator class, including helper methods for\n * generating JavaScript for blocks.\n */\n\n// Former goog.module ID: Blockly.JavaScript\n\nimport type {Block} from '../../core/block.js';\nimport {CodeGenerator} from '../../core/generator.js';\nimport {inputTypes} from '../../core/inputs/input_types.js';\nimport {Names, NameType} 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 * https://developer.mozilla.org/en/JavaScript/Reference/Operators/Operator_Precedence\n */\n// prettier-ignore\nexport enum Order {\n ATOMIC = 0, // 0 \"\" ...\n NEW = 1.1, // new\n MEMBER = 1.2, // . []\n FUNCTION_CALL = 2, // ()\n INCREMENT = 3, // ++\n DECREMENT = 3, // --\n BITWISE_NOT = 4.1, // ~\n UNARY_PLUS = 4.2, // +\n UNARY_NEGATION = 4.3, // -\n LOGICAL_NOT = 4.4, // !\n TYPEOF = 4.5, // typeof\n VOID = 4.6, // void\n DELETE = 4.7, // delete\n AWAIT = 4.8, // await\n EXPONENTIATION = 5.0, // **\n MULTIPLICATION = 5.1, // *\n DIVISION = 5.2, // /\n MODULUS = 5.3, // %\n SUBTRACTION = 6.1, // -\n ADDITION = 6.2, // +\n BITWISE_SHIFT = 7, // << >> >>>\n RELATIONAL = 8, // < <= > >=\n IN = 8, // in\n INSTANCEOF = 8, // instanceof\n EQUALITY = 9, // == != === !==\n BITWISE_AND = 10, // &\n BITWISE_XOR = 11, // ^\n BITWISE_OR = 12, // |\n LOGICAL_AND = 13, // &&\n LOGICAL_OR = 14, // ||\n CONDITIONAL = 15, // ?:\n ASSIGNMENT = 16, // = += -= **= *= /= %= <<= >>= ...\n YIELD = 17, // yield\n COMMA = 18, // ,\n NONE = 99, // (...)\n}\n\n/**\n * JavaScript code generator class.\n */\nexport class JavascriptGenerator 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 // !(!foo) -> !!foo\n [Order.LOGICAL_NOT, Order.LOGICAL_NOT],\n // a * (b * c) -> a * b * c\n [Order.MULTIPLICATION, Order.MULTIPLICATION],\n // a + (b + c) -> a + b + c\n [Order.ADDITION, Order.ADDITION],\n // a && (b && c) -> a && b && c\n [Order.LOGICAL_AND, Order.LOGICAL_AND],\n // a || (b || c) -> a || b || c\n [Order.LOGICAL_OR, Order.LOGICAL_OR],\n ];\n\n /** @param name Name of the language the generator is for. */\n constructor(name = 'JavaScript') {\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 //\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Lexical_grammar#Keywords\n this.addReservedWords(\n 'break,case,catch,class,const,continue,debugger,default,delete,do,' +\n 'else,export,extends,finally,for,function,if,import,in,instanceof,' +\n 'new,return,super,switch,this,throw,try,typeof,var,void,' +\n 'while,with,yield,' +\n 'enum,' +\n 'implements,interface,let,package,private,protected,public,static,' +\n 'await,' +\n 'null,true,false,' +\n // Magic variable.\n 'arguments,' +\n // Everything in the current environment (835 items in Chrome,\n // 104 in Node).\n Object.getOwnPropertyNames(globalThis).join(','),\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 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], NameType.DEVELOPER_VARIABLE),\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(\n this.nameDB_.getName(variables[i].getId(), NameType.VARIABLE),\n );\n }\n\n // Declare all of the variables.\n if (defvars.length) {\n this.definitions_['variables'] = 'var ' + defvars.join(', ') + ';';\n }\n this.isInitialized = true;\n }\n\n /**\n * Prepend the generated code with the 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 definitions = Object.values(this.definitions_);\n // Call Blockly.CodeGenerator's finish.\n super.finish(code);\n this.isInitialized = false;\n\n this.nameDB_!.reset();\n return definitions.join('\\n\\n') + '\\n\\n\\n' + code;\n }\n\n /**\n * Naked values are top-level blocks with outputs that aren't plugged into\n * anything. A trailing semicolon is needed to make this legal.\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 JavaScript string, complete with\n * quotes.\n *\n * @param string Text to encode.\n * @returns JavaScript string.\n */\n quote_(string: string): string {\n // Can't use goog.string.quote since Google's style guide recommends\n // JS string literals use single quotes.\n string = string\n .replace(/\\\\/g, '\\\\\\\\')\n .replace(/\\n/g, '\\\\\\n')\n .replace(/'/g, \"\\\\'\");\n return \"'\" + string + \"'\";\n }\n\n /**\n * Encode a string as a properly escaped multiline JavaScript string, complete\n * with quotes.\n * @param string Text to encode.\n * @returns JavaScript string.\n */\n multiline_quote_(string: string): string {\n // Can't use goog.string.quote since Google's style guide recommends\n // JS string literals use single quotes.\n const lines = string.split(/\\n/g).map(this.quote_);\n return lines.join(\" + '\\\\n' +\\n\");\n }\n\n /**\n * Common tasks for generating JavaScript 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 JavaScript code created for this block.\n * @param thisOnly True to generate code for only this statement.\n * @returns JavaScript 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 * Generate code representing the specified value input, adjusted to take into\n * account indexing (zero- or one-based) and optionally by a specified delta\n * and/or by negation.\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 * @param order The highest order acting on this value.\n * @returns The adjusted value or code that evaluates to it.\n */\n getAdjusted(\n block: Block,\n atId: string,\n delta = 0,\n negate = false,\n order = Order.NONE,\n ): string {\n if (block.workspace.options.oneBasedIndex) {\n delta--;\n }\n const defaultAtIndex = block.workspace.options.oneBasedIndex ? '1' : '0';\n\n let orderForInput = order;\n if (delta > 0) {\n orderForInput = Order.ADDITION;\n } else if (delta < 0) {\n orderForInput = Order.SUBTRACTION;\n } else if (negate) {\n orderForInput = Order.UNARY_NEGATION;\n }\n\n let at = this.valueToCode(block, atId, orderForInput) || defaultAtIndex;\n\n // Easy case: no adjustments.\n if (delta === 0 && !negate) {\n return at;\n }\n // If the index is a naked number, adjust it right now.\n if (stringUtils.isNumber(at)) {\n at = String(Number(at) + delta);\n if (negate) {\n at = String(-Number(at));\n }\n return at;\n }\n // If the index is dynamic, adjust it in code.\n if (delta > 0) {\n at = `${at} + ${delta}`;\n } else if (delta < 0) {\n at = `${at} - ${-delta}`;\n }\n if (negate) {\n at = delta ? `-(${at})` : `-${at}`;\n }\n if (Math.floor(order) >= Math.floor(orderForInput)) {\n at = `(${at})`;\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 JavaScript for dynamic variable blocks.\n */\n\n// Former goog.module ID: Blockly.JavaScript.variablesDynamic\n\n// JavaScript 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 JavascriptGenerator and populate it with the\n * complete set of block generator functions for JavaScript. This is\n * the entrypoint for javascript_compressed.js.\n */\n\n// Former goog.module ID: Blockly.JavaScript.all\n\nimport {JavascriptGenerator} from './javascript/javascript_generator.js';\nimport * as lists from './javascript/lists.js';\nimport * as logic from './javascript/logic.js';\nimport * as loops from './javascript/loops.js';\nimport * as math from './javascript/math.js';\nimport * as procedures from './javascript/procedures.js';\nimport * as text from './javascript/text.js';\nimport * as variables from './javascript/variables.js';\nimport * as variablesDynamic from './javascript/variables_dynamic.js';\n\nexport * from './javascript/javascript_generator.js';\n\n/**\n * JavaScript code generator instance.\n * @type {!JavascriptGenerator}\n */\nexport const javascriptGenerator = new JavascriptGenerator();\n\n// Install per-block-type generator functions:\nconst generators: typeof javascriptGenerator.forBlock = {\n ...lists,\n ...logic,\n ...loops,\n ...math,\n ...procedures,\n ...text,\n ...variables,\n ...variablesDynamic,\n};\nfor (const name in generators) {\n javascriptGenerator.forBlock[name] = generators[name];\n}\n"]}
|
package/lua.js
ADDED