blockly 12.4.0 → 12.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/blockly.min.js +2748 -0
- package/blockly.mjs +163 -0
- package/blockly_compressed.js +1822 -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 +733 -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 +53 -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 +54 -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 +136 -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 +4 -35
- 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/lua/lists.ts","generators/lua/logic.ts","generators/lua/loops.ts","generators/lua/math.ts","generators/lua/procedures.ts","generators/lua/text.ts","generators/lua/variables.ts","generators/lua/lua_generator.ts","generators/lua/variables_dynamic.ts","generators/lua.ts"],"names":["lists_create_empty","block","generator","Order","HIGH","lists_create_with","elements","Array","itemCount_","i","valueToCode","NONE","join","lists_repeat","functionName","provideFunction_","FUNCTION_NAME_PLACEHOLDER_","element","repeatCount","lists_length","UNARY","lists_isEmpty","RELATIONAL","lists_indexOf","item","list","getFieldValue","lists_getIndex","mode","where","match","at","atOrder","ADDITIVE","getListIndex","code","listVar","nameDB_","getDistinctName","NameType","VARIABLE","toLowerCase","lists_setIndex","value","lists_getSublist","where1","where2","at1","at2","at1Param","at2Param","lists_sort","direction","type","lists_split","input","delimiter","Error","lists_reverse","controls_if","n","STATEMENT_PREFIX","injectId","conditionCode","branchCode","statementToCode","STATEMENT_SUFFIX","prefixLines","INDENT","getInput","logic_compare","operator","OPERATORS","argument0","argument1","logic_operation","order","AND","OR","defaultArgument","logic_negate","logic_boolean","ATOMIC","logic_null","logic_ternary","value_if","value_then","value_else","addContinueLabel","branch","indent","includes","CONTINUE_STATEMENT","controls_repeat_ext","repeats","getField","String","Number","isNumber","parseInt","addLoopTrap","loopVar","controls_whileUntil","until","controls_for","variable0","getVariableName","startVar","endVar","increment","incValue","Math","abs","step","controls_forEach","controls_flow_statements","xfix","loop","getSurroundLoop","suppressPrefixSuffix","math_number","math_arithmetic","tuple","MULTIPLICATIVE","EXPONENTIATION","math_single","arg","math_constant","CONSTANTS","math_number_property","PROPERTIES","dropdownProperty","suffix","inputOrder","outputOrder","numberToCheck","divisor","math_change","varName","math_on_list","provideSum","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","element0","CONCATENATION","element1","text_append","text_length","text_isEmpty","text_indexOf","substring","text_charAt","start","text_getSubstring","at1Order","at2Order","end","text_changeCase","text_trim","LEFT","RIGHT","BOTH","text_print","text_prompt_ext","msg","text_count","sub","text_replace","from","to","text_reverse","variables_get","variables_set","LuaGenerator","CodeGenerator","constructor","name","isInitialized","key","addReservedWords","init","workspace","reset","Names","RESERVED_WORDS_","setVariableMap","getVariableMap","populateVariables","populateProcedures","finish","definitions","Object","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","$jscomp$tmp$exports$module$name","listName","opt_at","controls_ifelse","controls_repeat","math_round","math_trig","procedures_defnoreturn","text_prompt","luaGenerator","generators","lists","logic","loops","math","procedures","variablesDynamic"],"mappings":"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","file":"lua_compressed.js","sourcesContent":["/**\n * @license\n * Copyright 2016 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @file Generating Lua for list blocks.\n */\n\n// Former goog.module ID: Blockly.Lua.lists\n\nimport type {CreateWithBlock} from '../../blocks/lists.js';\nimport type {Block} from '../../core/block.js';\nimport {NameType} from '../../core/names.js';\nimport type {LuaGenerator} from './lua_generator.js';\nimport {Order} from './lua_generator.js';\n\nexport function lists_create_empty(\n block: Block,\n generator: LuaGenerator,\n): [string, Order] {\n // Create an empty list.\n return ['{}', Order.HIGH];\n}\n\nexport function lists_create_with(\n block: Block,\n generator: LuaGenerator,\n): [string, Order] {\n const createWithBlock = block as CreateWithBlock;\n // Create a list with any number of elements of any type.\n const elements = new Array(createWithBlock.itemCount_);\n for (let i = 0; i < createWithBlock.itemCount_; i++) {\n elements[i] =\n generator.valueToCode(createWithBlock, 'ADD' + i, Order.NONE) || 'nil';\n }\n const code = '{' + elements.join(', ') + '}';\n return [code, Order.HIGH];\n}\n\nexport function lists_repeat(\n block: Block,\n generator: LuaGenerator,\n): [string, Order] {\n // Create a list with one element repeated.\n const functionName = generator.provideFunction_(\n 'create_list_repeated',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}(item, count)\n local t = {}\n for i = 1, count do\n table.insert(t, item)\n end\n return t\nend\n `,\n );\n const element = generator.valueToCode(block, 'ITEM', Order.NONE) || 'nil';\n const repeatCount = generator.valueToCode(block, 'NUM', Order.NONE) || '0';\n const code = functionName + '(' + element + ', ' + repeatCount + ')';\n return [code, Order.HIGH];\n}\n\nexport function lists_length(\n block: Block,\n generator: LuaGenerator,\n): [string, Order] {\n // String or array length.\n const list = generator.valueToCode(block, 'VALUE', Order.UNARY) || '{}';\n return ['#' + list, Order.UNARY];\n}\n\nexport function lists_isEmpty(\n block: Block,\n generator: LuaGenerator,\n): [string, Order] {\n // Is the string null or array empty?\n const list = generator.valueToCode(block, 'VALUE', Order.UNARY) || '{}';\n const code = '#' + list + ' == 0';\n return [code, Order.RELATIONAL];\n}\n\nexport function lists_indexOf(\n block: Block,\n generator: LuaGenerator,\n): [string, Order] {\n // Find an item in the list.\n const item = generator.valueToCode(block, 'FIND', Order.NONE) || \"''\";\n const list = generator.valueToCode(block, 'VALUE', Order.NONE) || '{}';\n let functionName;\n if (block.getFieldValue('END') === 'FIRST') {\n functionName = generator.provideFunction_(\n 'first_index',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}(t, elem)\n for k, v in ipairs(t) do\n if v == elem then\n return k\n end\n end\n return 0\nend\n`,\n );\n } else {\n functionName = generator.provideFunction_(\n 'last_index',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}(t, elem)\n for i = #t, 1, -1 do\n if t[i] == elem then\n return i\n end\n end\n return 0\nend\n`,\n );\n }\n const code = functionName + '(' + list + ', ' + item + ')';\n return [code, Order.HIGH];\n}\n\n/**\n * Returns an expression calculating the index into a list.\n *\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 getListIndex = function (\n listName: string,\n where: string,\n opt_at: string,\n): string {\n if (where === 'FIRST') {\n return '1';\n } else if (where === 'FROM_END') {\n return '#' + listName + ' + 1 - ' + opt_at;\n } else if (where === 'LAST') {\n return '#' + listName;\n } else if (where === 'RANDOM') {\n return 'math.random(#' + listName + ')';\n } else {\n return opt_at;\n }\n};\n\nexport function lists_getIndex(\n block: Block,\n generator: LuaGenerator,\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 list = generator.valueToCode(block, 'VALUE', Order.HIGH) || '({})';\n\n // If `list` would be evaluated more than once (which is the case for LAST,\n // FROM_END, and RANDOM) and is non-trivial, make sure to access it only once.\n if (\n (where === 'LAST' || where === 'FROM_END' || where === 'RANDOM') &&\n !list.match(/^\\w+$/)\n ) {\n // `list` is an expression, so we may not evaluate it more than once.\n if (mode === 'REMOVE') {\n // We can use multiple statements.\n const atOrder = where === 'FROM_END' ? Order.ADDITIVE : Order.NONE;\n let at = generator.valueToCode(block, 'AT', atOrder) || '1';\n const listVar = generator.nameDB_!.getDistinctName(\n 'tmp_list',\n NameType.VARIABLE,\n );\n at = getListIndex(listVar, where, at);\n const code =\n listVar +\n ' = ' +\n list +\n '\\n' +\n 'table.remove(' +\n listVar +\n ', ' +\n at +\n ')\\n';\n return code;\n } else {\n // We need to create a procedure to avoid reevaluating values.\n const at = generator.valueToCode(block, 'AT', Order.NONE) || '1';\n let functionName;\n if (mode === 'GET') {\n functionName = generator.provideFunction_(\n 'list_get_' + where.toLowerCase(),\n [\n 'function ' +\n generator.FUNCTION_NAME_PLACEHOLDER_ +\n '(t' +\n // The value for 'FROM_END' and'FROM_START' depends on `at` so\n // we add it as a parameter.\n (where === 'FROM_END' || where === 'FROM_START' ? ', at)' : ')'),\n ' return t[' + getListIndex('t', where, 'at') + ']',\n 'end',\n ],\n );\n } else {\n // `mode` === 'GET_REMOVE'\n functionName = generator.provideFunction_(\n 'list_remove_' + where.toLowerCase(),\n [\n 'function ' +\n generator.FUNCTION_NAME_PLACEHOLDER_ +\n '(t' +\n // The value for 'FROM_END' and'FROM_START' depends on `at` so\n // we add it as a parameter.\n (where === 'FROM_END' || where === 'FROM_START' ? ', at)' : ')'),\n ' return table.remove(t, ' + getListIndex('t', where, 'at') + ')',\n 'end',\n ],\n );\n }\n const code =\n functionName +\n '(' +\n list +\n // The value for 'FROM_END' and 'FROM_START' depends on `at` so we\n // pass it.\n (where === 'FROM_END' || where === 'FROM_START' ? ', ' + at : '') +\n ')';\n return [code, Order.HIGH];\n }\n } else {\n // Either `list` is a simple variable, or we only need to refer to `list`\n // once.\n const atOrder =\n mode === 'GET' && where === 'FROM_END' ? Order.ADDITIVE : Order.NONE;\n let at = generator.valueToCode(block, 'AT', atOrder) || '1';\n at = getListIndex(list, where, at);\n if (mode === 'GET') {\n const code = list + '[' + at + ']';\n return [code, Order.HIGH];\n } else {\n const code = 'table.remove(' + list + ', ' + at + ')';\n if (mode === 'GET_REMOVE') {\n return [code, Order.HIGH];\n } else {\n // `mode` === 'REMOVE'\n return code + '\\n';\n }\n }\n }\n}\n\nexport function lists_setIndex(block: Block, generator: LuaGenerator): string {\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.HIGH) || '{}';\n const mode = block.getFieldValue('MODE') || 'SET';\n const where = block.getFieldValue('WHERE') || 'FROM_START';\n const at = generator.valueToCode(block, 'AT', Order.ADDITIVE) || '1';\n const value = generator.valueToCode(block, 'TO', Order.NONE) || 'Nil';\n\n let code = '';\n // If `list` would be evaluated more than once (which is the case for LAST,\n // FROM_END, and RANDOM) and is non-trivial, make sure to access it only once.\n if (\n (where === 'LAST' || where === 'FROM_END' || where === 'RANDOM') &&\n !list.match(/^\\w+$/)\n ) {\n // `list` is an expression, so we may not evaluate it more than once.\n // We can use multiple statements.\n const listVar = generator.nameDB_!.getDistinctName(\n 'tmp_list',\n NameType.VARIABLE,\n );\n code = listVar + ' = ' + list + '\\n';\n list = listVar;\n }\n if (mode === 'SET') {\n code += list + '[' + getListIndex(list, where, at) + '] = ' + value;\n } else {\n // `mode` === 'INSERT'\n // LAST is a special case, because we want to insert\n // *after* not *before*, the existing last element.\n code +=\n 'table.insert(' +\n list +\n ', ' +\n (getListIndex(list, where, at) + (where === 'LAST' ? ' + 1' : '')) +\n ', ' +\n value +\n ')';\n }\n return code + '\\n';\n}\n\nexport function lists_getSublist(\n block: Block,\n generator: LuaGenerator,\n): [string, Order] {\n // Get sublist.\n const list = generator.valueToCode(block, 'LIST', Order.NONE) || '{}';\n const where1 = block.getFieldValue('WHERE1');\n const where2 = block.getFieldValue('WHERE2');\n const at1 = generator.valueToCode(block, 'AT1', Order.NONE) || '1';\n const at2 = generator.valueToCode(block, 'AT2', Order.NONE) || '1';\n\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 'list_sublist_' + where1.toLowerCase() + '_' + where2.toLowerCase(),\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}(source${at1Param}${at2Param})\n local t = {}\n local start = ${getListIndex('source', where1, 'at1')}\n local finish = ${getListIndex('source', where2, 'at2')}\n for i = start, finish do\n table.insert(t, source[i])\n end\n return t\nend\n`,\n );\n const 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 return [code, Order.HIGH];\n}\n\nexport function lists_sort(\n block: Block,\n generator: LuaGenerator,\n): [string, Order] {\n // Block for sorting a list.\n const list = generator.valueToCode(block, 'LIST', Order.NONE) || '{}';\n const direction = block.getFieldValue('DIRECTION') === '1' ? 1 : -1;\n const type = block.getFieldValue('TYPE');\n\n const functionName = generator.provideFunction_(\n 'list_sort',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}(list, typev, direction)\n local t = {}\n for n,v in pairs(list) do table.insert(t, v) end\n local compareFuncs = {\n NUMERIC = function(a, b)\n return (tonumber(tostring(a)) or 0)\n < (tonumber(tostring(b)) or 0) end,\n TEXT = function(a, b)\n return tostring(a) < tostring(b) end,\n IGNORE_CASE = function(a, b)\n return string.lower(tostring(a)) < string.lower(tostring(b)) end\n }\n local compareTemp = compareFuncs[typev]\n local compare = compareTemp\n if direction == -1\n then compare = function(a, b) return compareTemp(b, a) end\n end\n table.sort(t, compare)\n return t\nend\n`,\n );\n\n const code =\n functionName + '(' + list + ',\"' + type + '\", ' + direction + ')';\n return [code, Order.HIGH];\n}\n\nexport function lists_split(\n block: Block,\n generator: LuaGenerator,\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.NONE);\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 = generator.provideFunction_(\n 'list_string_split',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}(input, delim)\n local t = {}\n local pos = 1\n while true do\n next_delim = string.find(input, delim, pos)\n if next_delim == nil then\n table.insert(t, string.sub(input, pos))\n break\n else\n table.insert(t, string.sub(input, pos, next_delim-1))\n pos = next_delim + #delim\n end\n end\n return t\nend\n`,\n );\n } else if (mode === 'JOIN') {\n if (!input) {\n input = '{}';\n }\n functionName = 'table.concat';\n } else {\n throw Error('Unknown mode: ' + mode);\n }\n const code = functionName + '(' + input + ', ' + delimiter + ')';\n return [code, Order.HIGH];\n}\n\nexport function lists_reverse(\n block: Block,\n generator: LuaGenerator,\n): [string, Order] {\n // Block for reversing a list.\n const list = generator.valueToCode(block, 'LIST', Order.NONE) || '{}';\n const functionName = generator.provideFunction_(\n 'list_reverse',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}(input)\n local reversed = {}\n for i = #input, 1, -1 do\n table.insert(reversed, input[i])\n end\n return reversed\nend\n`,\n );\n const code = functionName + '(' + list + ')';\n return [code, Order.HIGH];\n}\n","/**\n * @license\n * Copyright 2016 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @file Generating Lua for logic blocks.\n */\n\n// Former goog.module ID: Blockly.Lua.logic\n\nimport type {Block} from '../../core/block.js';\nimport type {LuaGenerator} from './lua_generator.js';\nimport {Order} from './lua_generator.js';\n\nexport function controls_if(block: Block, generator: LuaGenerator): string {\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' : '') + 'if ' + conditionCode + ' then\\n' + branchCode;\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 + 'end\\n';\n}\n\nexport const controls_ifelse = controls_if;\n\nexport function logic_compare(\n block: Block,\n generator: LuaGenerator,\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 argument0 = generator.valueToCode(block, 'A', Order.RELATIONAL) || '0';\n const argument1 = generator.valueToCode(block, 'B', Order.RELATIONAL) || '0';\n const code = argument0 + ' ' + operator + ' ' + argument1;\n return [code, Order.RELATIONAL];\n}\n\nexport function logic_operation(\n block: Block,\n generator: LuaGenerator,\n): [string, Order] {\n // Operations 'and', 'or'.\n const operator = block.getFieldValue('OP') === 'AND' ? 'and' : 'or';\n const order = operator === 'and' ? Order.AND : Order.OR;\n let argument0 = generator.valueToCode(block, 'A', order);\n let argument1 = generator.valueToCode(block, 'B', order);\n if (!argument0 && !argument1) {\n // If there are no arguments, then the return value is false.\n argument0 = 'false';\n argument1 = 'false';\n } else {\n // Single missing arguments have no effect on the return value.\n const defaultArgument = operator === 'and' ? 'true' : 'false';\n if (!argument0) {\n argument0 = defaultArgument;\n }\n if (!argument1) {\n argument1 = defaultArgument;\n }\n }\n const code = argument0 + ' ' + operator + ' ' + argument1;\n return [code, order];\n}\n\nexport function logic_negate(\n block: Block,\n generator: LuaGenerator,\n): [string, Order] {\n // Negation.\n const argument0 = generator.valueToCode(block, 'BOOL', Order.UNARY) || 'true';\n const code = 'not ' + argument0;\n return [code, Order.UNARY];\n}\n\nexport function logic_boolean(\n block: Block,\n generator: LuaGenerator,\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: LuaGenerator,\n): [string, Order] {\n // Null data type.\n return ['nil', Order.ATOMIC];\n}\n\nexport function logic_ternary(\n block: Block,\n generator: LuaGenerator,\n): [string, Order] {\n // Ternary operator.\n const value_if = generator.valueToCode(block, 'IF', Order.AND) || 'false';\n const value_then = generator.valueToCode(block, 'THEN', Order.AND) || 'nil';\n const value_else = generator.valueToCode(block, 'ELSE', Order.OR) || 'nil';\n const code = value_if + ' and ' + value_then + ' or ' + value_else;\n return [code, Order.OR];\n}\n","/**\n * @license\n * Copyright 2016 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @file Generating Lua for loop blocks.\n */\n\n// Former goog.module ID: Blockly.Lua.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 {LuaGenerator} from './lua_generator.js';\nimport {Order} from './lua_generator.js';\n\n/**\n * This is the text used to implement a <pre>continue</pre>.\n * It is also used to recognise <pre>continue</pre>s in generated code so that\n * the appropriate label can be put at the end of the loop body.\n */\nconst CONTINUE_STATEMENT = 'goto continue\\n';\n\n/**\n * If the loop body contains a \"goto continue\" statement, add a continue label\n * to the loop body. Slightly inefficient, as continue labels will be generated\n * in all outer loops, but this is safer than duplicating the logic of\n * blockToCode.\n *\n * @param branch Generated code of the loop body\n * @param indent Whitespace by which to indent a continue statement.\n * @returns Generated label or '' if unnecessary\n */\nfunction addContinueLabel(branch: string, indent: string): string {\n if (branch.includes(CONTINUE_STATEMENT)) {\n // False positives are possible (e.g. a string literal), but are harmless.\n return branch + indent + '::continue::\\n';\n } else {\n return branch;\n }\n}\n\nexport function controls_repeat_ext(\n block: Block,\n generator: LuaGenerator,\n): string {\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.NONE) || '0';\n }\n if (stringUtils.isNumber(repeats)) {\n repeats = parseInt(repeats, 10);\n } else {\n repeats = 'math.floor(' + repeats + ')';\n }\n let branch = generator.statementToCode(block, 'DO');\n branch = generator.addLoopTrap(branch, block);\n branch = addContinueLabel(branch, generator.INDENT);\n const loopVar = generator.nameDB_!.getDistinctName(\n 'count',\n NameType.VARIABLE,\n );\n const code =\n 'for ' + loopVar + ' = 1, ' + repeats + ' do\\n' + branch + 'end\\n';\n return code;\n}\n\nexport const controls_repeat = controls_repeat_ext;\n\nexport function controls_whileUntil(\n block: Block,\n generator: LuaGenerator,\n): string {\n // Do while/until loop.\n const until = block.getFieldValue('MODE') === 'UNTIL';\n let argument0 =\n generator.valueToCode(block, 'BOOL', until ? Order.UNARY : Order.NONE) ||\n 'false';\n let branch = generator.statementToCode(block, 'DO');\n branch = generator.addLoopTrap(branch, block);\n branch = addContinueLabel(branch, generator.INDENT);\n if (until) {\n argument0 = 'not ' + argument0;\n }\n return 'while ' + argument0 + ' do\\n' + branch + 'end\\n';\n}\n\nexport function controls_for(block: Block, generator: LuaGenerator): string {\n // For loop.\n const variable0 = generator.getVariableName(block.getFieldValue('VAR'));\n const startVar = generator.valueToCode(block, 'FROM', Order.NONE) || '0';\n const endVar = generator.valueToCode(block, 'TO', Order.NONE) || '0';\n const increment = generator.valueToCode(block, 'BY', Order.NONE) || '1';\n let branch = generator.statementToCode(block, 'DO');\n branch = generator.addLoopTrap(branch, block);\n branch = addContinueLabel(branch, generator.INDENT);\n let code = '';\n let incValue;\n if (\n stringUtils.isNumber(startVar) &&\n stringUtils.isNumber(endVar) &&\n stringUtils.isNumber(increment)\n ) {\n // All arguments are simple numbers.\n const up = Number(startVar) <= Number(endVar);\n const step = Math.abs(Number(increment));\n incValue = (up ? '' : '-') + step;\n } else {\n code = '';\n // Determine loop direction at start, in case one of the bounds\n // changes during loop execution.\n incValue = generator.nameDB_!.getDistinctName(\n variable0 + '_inc',\n NameType.VARIABLE,\n );\n code += incValue + ' = ';\n if (stringUtils.isNumber(increment)) {\n code += Math.abs(increment as unknown as number) + '\\n';\n } else {\n code += 'math.abs(' + increment + ')\\n';\n }\n code += 'if (' + startVar + ') > (' + endVar + ') then\\n';\n code += generator.INDENT + incValue + ' = -' + incValue + '\\n';\n code += 'end\\n';\n }\n code +=\n 'for ' + variable0 + ' = ' + startVar + ', ' + endVar + ', ' + incValue;\n code += ' do\\n' + branch + 'end\\n';\n return code;\n}\n\nexport function controls_forEach(\n block: Block,\n generator: LuaGenerator,\n): string {\n // For each loop.\n const variable0 = generator.getVariableName(block.getFieldValue('VAR'));\n const argument0 = generator.valueToCode(block, 'LIST', Order.NONE) || '{}';\n let branch = generator.statementToCode(block, 'DO');\n branch = generator.addLoopTrap(branch, block);\n branch = addContinueLabel(branch, generator.INDENT);\n const code =\n 'for _, ' +\n variable0 +\n ' in ipairs(' +\n argument0 +\n ') do \\n' +\n branch +\n 'end\\n';\n return code;\n}\n\nexport function controls_flow_statements(\n block: Block,\n generator: LuaGenerator,\n): string {\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_STATEMENT;\n }\n throw Error('Unknown flow statement.');\n}\n","/**\n * @license\n * Copyright 2016 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @file Generating Lua for math blocks.\n */\n\n// Former goog.module ID: Blockly.Lua.math\n\nimport type {Block} from '../../core/block.js';\nimport type {LuaGenerator} from './lua_generator.js';\nimport {Order} from './lua_generator.js';\n\nexport function math_number(\n block: Block,\n generator: LuaGenerator,\n): [string, Order] {\n // Numeric value.\n const code = Number(block.getFieldValue('NUM'));\n const order = code < 0 ? Order.UNARY : Order.ATOMIC;\n return [String(code), order];\n}\n\nexport function math_arithmetic(\n block: Block,\n generator: LuaGenerator,\n): [string, Order] {\n // Basic arithmetic operators, and power.\n const OPERATORS: Record<string, [string, Order]> = {\n 'ADD': [' + ', Order.ADDITIVE],\n 'MINUS': [' - ', Order.ADDITIVE],\n 'MULTIPLY': [' * ', Order.MULTIPLICATIVE],\n 'DIVIDE': [' / ', Order.MULTIPLICATIVE],\n 'POWER': [' ^ ', Order.EXPONENTIATION],\n };\n type OperatorOption = keyof typeof OPERATORS;\n const tuple = OPERATORS[block.getFieldValue('OP') as OperatorOption];\n const operator = tuple[0];\n const order = tuple[1];\n const argument0 = generator.valueToCode(block, 'A', order) || '0';\n const argument1 = generator.valueToCode(block, 'B', order) || '0';\n const code = argument0 + operator + argument1;\n return [code, order];\n}\n\nexport function math_single(\n block: Block,\n generator: LuaGenerator,\n): [string, Order] {\n // Math operators with single operand.\n const operator = block.getFieldValue('OP');\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) || '0';\n return ['-' + arg, Order.UNARY];\n }\n if (operator === 'POW10') {\n arg = generator.valueToCode(block, 'NUM', Order.EXPONENTIATION) || '0';\n return ['10 ^ ' + arg, Order.EXPONENTIATION];\n }\n if (operator === 'ROUND') {\n arg = generator.valueToCode(block, 'NUM', Order.ADDITIVE) || '0';\n } else {\n arg = generator.valueToCode(block, 'NUM', Order.NONE) || '0';\n }\n\n let 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 'LOG10':\n code = 'math.log(' + arg + ', 10)';\n break;\n case 'EXP':\n code = 'math.exp(' + arg + ')';\n break;\n case 'ROUND':\n // This rounds up. Blockly does not specify rounding direction.\n code = 'math.floor(' + arg + ' + .5)';\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(math.rad(' + arg + '))';\n break;\n case 'COS':\n code = 'math.cos(math.rad(' + arg + '))';\n break;\n case 'TAN':\n code = 'math.tan(math.rad(' + arg + '))';\n break;\n case 'ASIN':\n code = 'math.deg(math.asin(' + arg + '))';\n break;\n case 'ACOS':\n code = 'math.deg(math.acos(' + arg + '))';\n break;\n case 'ATAN':\n code = 'math.deg(math.atan(' + arg + '))';\n break;\n default:\n throw Error('Unknown math operator: ' + operator);\n }\n return [code, Order.HIGH];\n}\n\nexport function math_constant(\n block: Block,\n generator: LuaGenerator,\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.HIGH],\n 'E': ['math.exp(1)', Order.HIGH],\n 'GOLDEN_RATIO': ['(1 + math.sqrt(5)) / 2', Order.MULTIPLICATIVE],\n 'SQRT2': ['math.sqrt(2)', Order.HIGH],\n 'SQRT1_2': ['math.sqrt(1 / 2)', Order.HIGH],\n 'INFINITY': ['math.huge', Order.HIGH],\n };\n return CONSTANTS[block.getFieldValue('CONSTANT')];\n}\n\nexport function math_number_property(\n block: Block,\n generator: LuaGenerator,\n): [string, Order] {\n // Check if a number is even, odd, prime, whole, positive, or negative\n // or if it is divisible by certain number. Returns true or false.\n const PROPERTIES: Record<string, [string | null, Order, Order]> = {\n 'EVEN': [' % 2 == 0', Order.MULTIPLICATIVE, Order.RELATIONAL],\n 'ODD': [' % 2 == 1', Order.MULTIPLICATIVE, Order.RELATIONAL],\n 'WHOLE': [' % 1 == 0', Order.MULTIPLICATIVE, Order.RELATIONAL],\n 'POSITIVE': [' > 0', Order.RELATIONAL, Order.RELATIONAL],\n 'NEGATIVE': [' < 0', Order.RELATIONAL, Order.RELATIONAL],\n 'DIVISIBLE_BY': [null, Order.MULTIPLICATIVE, Order.RELATIONAL],\n 'PRIME': [null, Order.NONE, Order.HIGH],\n };\n const dropdownProperty = block.getFieldValue('PROPERTY');\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 'math_isPrime',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}(n)\n -- https://en.wikipedia.org/wiki/Primality_test#Naive_methods\n if n == 2 or n == 3 then\n return true\n end\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 not(n > 1) or n % 1 ~= 0 or n % 2 == 0 or n % 3 == 0 then\n return false\n end\n -- Check all the numbers of form 6k +/- 1, up to sqrt(n).\n for x = 6, math.sqrt(n) + 1.5, 6 do\n if n % (x - 1) == 0 or n % (x + 1) == 0 then\n return false\n end\n end\n return true\nend\n`,\n );\n code = functionName + '(' + numberToCheck + ')';\n } else if (dropdownProperty === 'DIVISIBLE_BY') {\n const divisor =\n generator.valueToCode(block, 'DIVISOR', Order.MULTIPLICATIVE) || '0';\n // If 'divisor' is some code that evals to 0, generator will produce a nan.\n // Let's produce nil if we can determine this at compile-time.\n if (divisor === '0') {\n return ['nil', Order.ATOMIC];\n }\n // The normal trick to implement ?: with and/or doesn't work here:\n // divisor == 0 and nil or number_to_check % divisor == 0\n // because nil is false, so allow a runtime failure. :-(\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: LuaGenerator): string {\n // Add to a variable in place.\n const argument0 =\n generator.valueToCode(block, 'DELTA', Order.ADDITIVE) || '0';\n const varName = generator.getVariableName(block.getFieldValue('VAR'));\n return varName + ' = ' + varName + ' + ' + argument0 + '\\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: LuaGenerator,\n): [string, Order] {\n // Math functions for lists.\n const func = block.getFieldValue('OP');\n const list = generator.valueToCode(block, 'LIST', Order.NONE) || '{}';\n let functionName;\n\n // Functions needed in more than one case.\n function provideSum() {\n return generator.provideFunction_(\n 'math_sum',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}(t)\n local result = 0\n for _, v in ipairs(t) do\n result = result + v\n end\n return result\nend\n`,\n );\n }\n\n switch (func) {\n case 'SUM':\n functionName = provideSum();\n break;\n\n case 'MIN':\n // Returns 0 for the empty list.\n functionName = generator.provideFunction_(\n 'math_min',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}(t)\n if #t == 0 then\n return 0\n end\n local result = math.huge\n for _, v in ipairs(t) do\n if v < result then\n result = v\n end\n end\n return result\nend\n`,\n );\n break;\n\n case 'AVERAGE':\n // Returns 0 for the empty list.\n functionName = generator.provideFunction_(\n 'math_average',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}(t)\n if #t == 0 then\n return 0\n end\n return ${provideSum()}(t) / #t\nend\n`,\n );\n break;\n\n case 'MAX':\n // Returns 0 for the empty list.\n functionName = generator.provideFunction_(\n 'math_max',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}(t)\n if #t == 0 then\n return 0\n end\n local result = -math.huge\n for _, v in ipairs(t) do\n if v > result then\n result = v\n end\n end\n return result\nend\n`,\n );\n break;\n\n case 'MEDIAN':\n // This operation excludes non-numbers.\n functionName = generator.provideFunction_(\n 'math_median',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}(t)\n -- Source: http://lua-users.org/wiki/SimpleStats\n if #t == 0 then\n return 0\n end\n local temp = {}\n for _, v in ipairs(t) do\n if type(v) == 'number' then\n table.insert(temp, v)\n end\n end\n table.sort(temp)\n if #temp % 2 == 0 then\n return (temp[#temp / 2] + temp[(#temp / 2) + 1]) / 2\n else\n return temp[math.ceil(#temp / 2)]\n end\nend\n`,\n );\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 // The generator version includes non-numbers.\n functionName = generator.provideFunction_(\n 'math_modes',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}(t)\n -- Source: http://lua-users.org/wiki/SimpleStats\n local counts = {}\n for _, v in ipairs(t) do\n if counts[v] == nil then\n counts[v] = 1\n else\n counts[v] = counts[v] + 1\n end\n end\n local biggestCount = 0\n for _, v in pairs(counts) do\n if v > biggestCount then\n biggestCount = v\n end\n end\n local temp = {}\n for k, v in pairs(counts) do\n if v == biggestCount then\n table.insert(temp, k)\n end\n end\n return temp\nend\n`,\n );\n break;\n\n case 'STD_DEV':\n functionName = generator.provideFunction_(\n 'math_standard_deviation',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}(t)\n local m\n local vm\n local total = 0\n local count = 0\n local result\n m = #t == 0 and 0 or ${provideSum()}(t) / #t\n for _, v in ipairs(t) do\n if type(v) == 'number' then\n vm = v - m\n total = total + (vm * vm)\n count = count + 1\n end\n end\n result = math.sqrt(total / (count-1))\n return result\nend\n`,\n );\n break;\n\n case 'RANDOM':\n functionName = generator.provideFunction_(\n 'math_random_list',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}(t)\n if #t == 0 then\n return nil\n end\n return t[math.random(#t)]\nend\n`,\n );\n break;\n\n default:\n throw Error('Unknown operator: ' + func);\n }\n return [functionName + '(' + list + ')', Order.HIGH];\n}\n\nexport function math_modulo(\n block: Block,\n generator: LuaGenerator,\n): [string, Order] {\n // Remainder computation.\n const argument0 =\n generator.valueToCode(block, 'DIVIDEND', Order.MULTIPLICATIVE) || '0';\n const argument1 =\n generator.valueToCode(block, 'DIVISOR', Order.MULTIPLICATIVE) || '0';\n const code = argument0 + ' % ' + argument1;\n return [code, Order.MULTIPLICATIVE];\n}\n\nexport function math_constrain(\n block: Block,\n generator: LuaGenerator,\n): [string, Order] {\n // Constrain a number between two limits.\n const argument0 = generator.valueToCode(block, 'VALUE', Order.NONE) || '0';\n const argument1 =\n generator.valueToCode(block, 'LOW', Order.NONE) || '-math.huge';\n const argument2 =\n generator.valueToCode(block, 'HIGH', Order.NONE) || 'math.huge';\n const code =\n 'math.min(math.max(' +\n argument0 +\n ', ' +\n argument1 +\n '), ' +\n argument2 +\n ')';\n return [code, Order.HIGH];\n}\n\nexport function math_random_int(\n block: Block,\n generator: LuaGenerator,\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 code = 'math.random(' + argument0 + ', ' + argument1 + ')';\n return [code, Order.HIGH];\n}\n\nexport function math_random_float(\n block: Block,\n generator: LuaGenerator,\n): [string, Order] {\n // Random fraction between 0 and 1.\n return ['math.random()', Order.HIGH];\n}\n\nexport function math_atan2(\n block: Block,\n generator: LuaGenerator,\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.deg(math.atan2(' + argument1 + ', ' + argument0 + '))',\n Order.HIGH,\n ];\n}\n","/**\n * @license\n * Copyright 2016 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @file Generating Lua for procedure blocks.\n */\n\n// Former goog.module ID: Blockly.Lua.procedures\n\nimport type {IfReturnBlock} from '../../blocks/procedures.js';\nimport type {Block} from '../../core/block.js';\nimport type {LuaGenerator} from './lua_generator.js';\nimport {Order} from './lua_generator.js';\n\nexport function procedures_defreturn(\n block: Block,\n generator: LuaGenerator,\n): null {\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 } else if (!branch) {\n branch = '';\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 'end\\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: LuaGenerator,\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) || 'nil';\n }\n const code = funcName + '(' + args.join(', ') + ')';\n return [code, Order.HIGH];\n}\n\nexport function procedures_callnoreturn(\n block: Block,\n generator: LuaGenerator,\n): string {\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, number];\n return tuple[0] + '\\n';\n}\n\nexport function procedures_ifreturn(\n block: Block,\n generator: LuaGenerator,\n): string {\n // Conditionally return value from a procedure.\n const condition =\n generator.valueToCode(block, 'CONDITION', Order.NONE) || 'false';\n let code = 'if ' + condition + ' then\\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) || 'nil';\n code += generator.INDENT + 'return ' + value + '\\n';\n } else {\n code += generator.INDENT + 'return\\n';\n }\n code += 'end\\n';\n return code;\n}\n","/**\n * @license\n * Copyright 2016 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @file Generating Lua for text blocks.\n */\n\n// Former goog.module ID: Blockly.Lua.texts\n\nimport type {JoinMutatorBlock} from '../../blocks/text.js';\nimport type {Block} from '../../core/block.js';\nimport type {LuaGenerator} from './lua_generator.js';\nimport {Order} from './lua_generator.js';\n\nexport function text(block: Block, generator: LuaGenerator): [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: LuaGenerator,\n): [string, Order] {\n const joinBlock = block as JoinMutatorBlock;\n // Create a string made up of any number of elements of any type.\n if (joinBlock.itemCount_ === 0) {\n return [\"''\", Order.ATOMIC];\n } else if (joinBlock.itemCount_ === 1) {\n const element = generator.valueToCode(block, 'ADD0', Order.NONE) || \"''\";\n const code = 'tostring(' + element + ')';\n return [code, Order.HIGH];\n } else if (joinBlock.itemCount_ === 2) {\n const element0 =\n generator.valueToCode(block, 'ADD0', Order.CONCATENATION) || \"''\";\n const element1 =\n generator.valueToCode(block, 'ADD1', Order.CONCATENATION) || \"''\";\n const code = element0 + ' .. ' + element1;\n return [code, Order.CONCATENATION];\n } else {\n const elements = [];\n for (let i = 0; i < joinBlock.itemCount_; i++) {\n elements[i] = generator.valueToCode(block, 'ADD' + i, Order.NONE) || \"''\";\n }\n const code = 'table.concat({' + elements.join(', ') + '})';\n return [code, Order.HIGH];\n }\n}\n\nexport function text_append(block: Block, generator: LuaGenerator): string {\n // Append to a variable in place.\n const varName = generator.getVariableName(block.getFieldValue('VAR'));\n const value =\n generator.valueToCode(block, 'TEXT', Order.CONCATENATION) || \"''\";\n return varName + ' = ' + varName + ' .. ' + value + '\\n';\n}\n\nexport function text_length(\n block: Block,\n generator: LuaGenerator,\n): [string, Order] {\n // String or array length.\n const text = generator.valueToCode(block, 'VALUE', Order.UNARY) || \"''\";\n return ['#' + text, Order.UNARY];\n}\n\nexport function text_isEmpty(\n block: Block,\n generator: LuaGenerator,\n): [string, Order] {\n // Is the string null or array empty?\n const text = generator.valueToCode(block, 'VALUE', Order.UNARY) || \"''\";\n return ['#' + text + ' == 0', Order.RELATIONAL];\n}\n\nexport function text_indexOf(\n block: Block,\n generator: LuaGenerator,\n): [string, Order] {\n // Search the text for a substring.\n const substring = generator.valueToCode(block, 'FIND', Order.NONE) || \"''\";\n const text = generator.valueToCode(block, 'VALUE', Order.NONE) || \"''\";\n let functionName;\n if (block.getFieldValue('END') === 'FIRST') {\n functionName = generator.provideFunction_(\n 'firstIndexOf',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}(str, substr)\n local i = string.find(str, substr, 1, true)\n if i == nil then\n return 0\n end\n return i\nend\n`,\n );\n } else {\n functionName = generator.provideFunction_(\n 'lastIndexOf',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}(str, substr)\n local i = string.find(string.reverse(str), string.reverse(substr), 1, true)\n if i then\n return #str + 2 - i - #substr\n end\n return 0\nend\n`,\n );\n }\n const code = functionName + '(' + text + ', ' + substring + ')';\n return [code, Order.HIGH];\n}\n\nexport function text_charAt(\n block: Block,\n generator: LuaGenerator,\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 text = generator.valueToCode(block, 'VALUE', Order.NONE) || \"''\";\n let code;\n if (where === 'RANDOM') {\n const functionName = generator.provideFunction_(\n 'text_random_letter',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}(str)\n local index = math.random(string.len(str))\n return string.sub(str, index, index)\nend\n`,\n );\n code = functionName + '(' + text + ')';\n } else {\n let start;\n if (where === 'FIRST') {\n start = '1';\n } else if (where === 'LAST') {\n start = '-1';\n } else {\n const atOrder = where === 'FROM_END' ? Order.UNARY : Order.NONE;\n const at = generator.valueToCode(block, 'AT', atOrder) || '1';\n if (where === 'FROM_START') {\n start = at;\n } else if (where === 'FROM_END') {\n start = '-' + at;\n } else {\n throw Error('Unhandled option (text_charAt).');\n }\n }\n if (start.match(/^-?\\w*$/)) {\n code = 'string.sub(' + text + ', ' + start + ', ' + start + ')';\n } else {\n // use function to avoid reevaluation\n const functionName = generator.provideFunction_(\n 'text_char_at',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}(str, index)\n return string.sub(str, index, index)\nend\n`,\n );\n code = functionName + '(' + text + ', ' + start + ')';\n }\n }\n return [code, Order.HIGH];\n}\n\nexport function text_getSubstring(\n block: Block,\n generator: LuaGenerator,\n): [string, Order] {\n // Get substring.\n const text = generator.valueToCode(block, 'STRING', Order.NONE) || \"''\";\n\n // Get start index.\n const where1 = block.getFieldValue('WHERE1');\n const at1Order = where1 === 'FROM_END' ? Order.UNARY : Order.NONE;\n const at1 = generator.valueToCode(block, 'AT1', at1Order) || '1';\n let start;\n if (where1 === 'FIRST') {\n start = 1;\n } else if (where1 === 'FROM_START') {\n start = at1;\n } else if (where1 === 'FROM_END') {\n start = '-' + at1;\n } else {\n throw Error('Unhandled option (text_getSubstring)');\n }\n\n // Get end index.\n const where2 = block.getFieldValue('WHERE2');\n const at2Order = where2 === 'FROM_END' ? Order.UNARY : Order.NONE;\n const at2 = generator.valueToCode(block, 'AT2', at2Order) || '1';\n let end;\n if (where2 === 'LAST') {\n end = -1;\n } else if (where2 === 'FROM_START') {\n end = at2;\n } else if (where2 === 'FROM_END') {\n end = '-' + at2;\n } else {\n throw Error('Unhandled option (text_getSubstring)');\n }\n const code = 'string.sub(' + text + ', ' + start + ', ' + end + ')';\n return [code, Order.HIGH];\n}\n\nexport function text_changeCase(\n block: Block,\n generator: LuaGenerator,\n): [string, Order] {\n // Change capitalization.\n const operator = block.getFieldValue('CASE');\n const text = generator.valueToCode(block, 'TEXT', Order.NONE) || \"''\";\n let functionName;\n if (operator === 'UPPERCASE') {\n functionName = 'string.upper';\n } else if (operator === 'LOWERCASE') {\n functionName = 'string.lower';\n } else if (operator === 'TITLECASE') {\n // There are shorter versions at\n // http://lua-users.org/wiki/SciteTitleCase\n // that do not preserve whitespace.\n functionName = generator.provideFunction_(\n 'text_titlecase',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}(str)\n local buf = {}\n local inWord = false\n for i = 1, #str do\n local c = string.sub(str, i, i)\n if inWord then\n table.insert(buf, string.lower(c))\n if string.find(c, \"%s\") then\n inWord = false\n end\n else\n table.insert(buf, string.upper(c))\n inWord = true\n end\n end\n return table.concat(buf)\nend\n`,\n );\n }\n const code = functionName + '(' + text + ')';\n return [code, Order.HIGH];\n}\n\nexport function text_trim(\n block: Block,\n generator: LuaGenerator,\n): [string, Order] {\n // Trim spaces.\n const OPERATORS = {LEFT: '^%s*(,-)', RIGHT: '(.-)%s*$', BOTH: '^%s*(.-)%s*$'};\n type OperatorOption = keyof typeof OPERATORS;\n const operator = OPERATORS[block.getFieldValue('MODE') as OperatorOption];\n const text = generator.valueToCode(block, 'TEXT', Order.NONE) || \"''\";\n const code = 'string.gsub(' + text + ', \"' + operator + '\", \"%1\")';\n return [code, Order.HIGH];\n}\n\nexport function text_print(block: Block, generator: LuaGenerator): string {\n // Print statement.\n const msg = generator.valueToCode(block, 'TEXT', Order.NONE) || \"''\";\n return 'print(' + msg + ')\\n';\n}\n\nexport function text_prompt_ext(\n block: Block,\n generator: LuaGenerator,\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\n const functionName = generator.provideFunction_(\n 'text_prompt',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}(msg)\n io.write(msg)\n io.flush()\n return io.read()\nend\n`,\n );\n let code = functionName + '(' + msg + ')';\n\n const toNumber = block.getFieldValue('TYPE') === 'NUMBER';\n if (toNumber) {\n code = 'tonumber(' + code + ', 10)';\n }\n return [code, Order.HIGH];\n}\n\nexport const text_prompt = text_prompt_ext;\n\nexport function text_count(\n block: Block,\n generator: LuaGenerator,\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 'text_count',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}(haystack, needle)\n if #needle == 0 then\n return #haystack + 1\n end\n local i = 1\n local count = 0\n while true do\n i = string.find(haystack, needle, i, true)\n if i == nil then\n break\n end\n count = count + 1\n i = i + #needle\n end\n return count\nend\n`,\n );\n const code = functionName + '(' + text + ', ' + sub + ')';\n return [code, Order.HIGH];\n}\n\nexport function text_replace(\n block: Block,\n generator: LuaGenerator,\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 const functionName = generator.provideFunction_(\n 'text_replace',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}(haystack, needle, replacement)\n local buf = {}\n local i = 1\n while i <= #haystack do\n if string.sub(haystack, i, i + #needle - 1) == needle then\n for j = 1, #replacement do\n table.insert(buf, string.sub(replacement, j, j))\n end\n i = i + #needle\n else\n table.insert(buf, string.sub(haystack, i, i))\n i = i + 1\n end\n end\n return table.concat(buf)\nend\n`,\n );\n const code = functionName + '(' + text + ', ' + from + ', ' + to + ')';\n return [code, Order.HIGH];\n}\n\nexport function text_reverse(\n block: Block,\n generator: LuaGenerator,\n): [string, Order] {\n const text = generator.valueToCode(block, 'TEXT', Order.NONE) || \"''\";\n const code = 'string.reverse(' + text + ')';\n return [code, Order.HIGH];\n}\n","/**\n * @license\n * Copyright 2016 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @file Generating Lua for variable blocks.\n */\n\n// Former goog.module ID: Blockly.Lua.variables\n\nimport type {Block} from '../../core/block.js';\nimport type {LuaGenerator} from './lua_generator.js';\nimport {Order} from './lua_generator.js';\n\nexport function variables_get(\n block: Block,\n generator: LuaGenerator,\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: LuaGenerator): string {\n // Variable setter.\n const argument0 = generator.valueToCode(block, 'VALUE', Order.NONE) || '0';\n const varName = generator.getVariableName(block.getFieldValue('VAR'));\n return varName + ' = ' + argument0 + '\\n';\n}\n","/**\n * @license\n * Copyright 2016 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @file Lua code generator class, including helper methods for\n * generating Lua for blocks.\n *\n * Based on Ellen Spertus's blocky-lua project.\n */\n\n// Former goog.module ID: Blockly.Lua\n\nimport type {Block} from '../../core/block.js';\nimport {CodeGenerator} from '../../core/generator.js';\nimport {inputTypes} from '../../core/inputs/input_types.js';\nimport {Names} from '../../core/names.js';\nimport * as stringUtils from '../../core/utils/string.js';\nimport type {Workspace} from '../../core/workspace.js';\n\n/**\n * Order of operation ENUMs.\n * http://www.lua.org/manual/5.3/manual.html#3.4.8\n */\n// prettier-ignore\nexport enum Order {\n ATOMIC = 0, // literals\n // The next level was not explicit in documentation and inferred by Ellen.\n HIGH = 1, // Function calls, tables[]\n EXPONENTIATION = 2, // ^\n UNARY = 3, // not # - ~\n MULTIPLICATIVE = 4, // * / %\n ADDITIVE = 5, // + -\n CONCATENATION = 6, // ..\n RELATIONAL = 7, // < > <= >= ~= ==\n AND = 8, // and\n OR = 9, // or\n NONE = 99,\n}\n\n/**\n * Lua code generator class.\n *\n * Note: Lua is not supporting zero-indexing since the language itself is\n * one-indexed, so the generator does not repoct the oneBasedIndex configuration\n * option used for lists and text.\n */\nexport class LuaGenerator extends CodeGenerator {\n constructor(name = 'Lua') {\n super(name);\n this.isInitialized = false;\n\n // Copy Order values onto instance for backwards compatibility\n // while ensuring they are not part of the publically-advertised\n // API.\n //\n // TODO(#7085): deprecate these in due course. (Could initially\n // replace data properties with get accessors that call\n // deprecate.warn().)\n for (const key in Order) {\n // Must assign Order[key] to a temporary to get the type guard to work;\n // see https://github.com/microsoft/TypeScript/issues/10530.\n const value = Order[key];\n // Skip reverse-lookup entries in the enum. Due to\n // https://github.com/microsoft/TypeScript/issues/55713 this (as\n // of TypeScript 5.5.2) actually narrows the type of value to\n // never - but that still allows the following assignment to\n // succeed.\n if (typeof value === 'string') continue;\n (this as unknown as Record<string, Order>)['ORDER_' + key] = value;\n }\n\n // List of illegal variable names. This is not intended to be a\n // security feature. Blockly is 100% client-side, so bypassing\n // this list is trivial. This is intended to prevent users from\n // accidentally clobbering a built-in object or function.\n this.addReservedWords(\n // Special character\n '_,' +\n // From theoriginalbit's script:\n // https://github.com/espertus/blockly-lua/issues/6\n '__inext,assert,bit,colors,colours,coroutine,disk,dofile,error,fs,' +\n 'fetfenv,getmetatable,gps,help,io,ipairs,keys,loadfile,loadstring,math,' +\n 'native,next,os,paintutils,pairs,parallel,pcall,peripheral,print,' +\n 'printError,rawequal,rawget,rawset,read,rednet,redstone,rs,select,' +\n 'setfenv,setmetatable,sleep,string,table,term,textutils,tonumber,' +\n 'tostring,turtle,type,unpack,vector,write,xpcall,_VERSION,__indext,' +\n // Not included in the script, probably because it wasn't enabled:\n 'HTTP,' +\n // Keywords (http://www.lua.org/pil/1.3.html).\n 'and,break,do,else,elseif,end,false,for,function,if,in,local,nil,not,' +\n 'or,repeat,return,then,true,until,while,' +\n // Metamethods (http://www.lua.org/manual/5.2/manual.html).\n 'add,sub,mul,div,mod,pow,unm,concat,len,eq,lt,le,index,newindex,call,' +\n // Basic functions (http://www.lua.org/manual/5.2/manual.html,\n // section 6.1).\n 'assert,collectgarbage,dofile,error,_G,getmetatable,inpairs,load,' +\n 'loadfile,next,pairs,pcall,print,rawequal,rawget,rawlen,rawset,select,' +\n 'setmetatable,tonumber,tostring,type,_VERSION,xpcall,' +\n // Modules (http://www.lua.org/manual/5.2/manual.html, section 6.3).\n 'require,package,string,table,math,bit32,io,file,os,debug',\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 // Call Blockly.CodeGenerator's init.\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 this.nameDB_.setVariableMap(workspace.getVariableMap());\n this.nameDB_.populateVariables(workspace);\n this.nameDB_.populateProcedures(workspace);\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 code = 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. In Lua, an expression is not a legal statement, so we must assign\n * the value to the (conventionally ignored) _.\n * http://lua-users.org/wiki/ExpressionsAsStatements\n *\n * @param line Line of generated code.\n * @return Legal line of code.\n */\n scrubNakedValue(line: string): string {\n return 'local _ = ' + line + '\\n';\n }\n\n /**\n * Encode a string as a properly escaped Lua string, complete with\n * quotes.\n *\n * @param string Text to encode.\n * @returns Lua string.\n */\n quote_(string: string): string {\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 Lua string, complete with\n * quotes.\n *\n * @param string Text to encode.\n * @returns Lua string.\n */\n multiline_quote_(string: string): string {\n const lines = string.split(/\\n/g).map(this.quote_);\n // Join with the following, plus a newline:\n // .. '\\n' ..\n return lines.join(\" .. '\\\\n' ..\\n\");\n }\n\n /**\n * Common tasks for generating Lua from blocks.\n * Handles comments for the specified block and any connected value blocks.\n * Calls any statements following this block.\n * @param block The current block.\n * @param code The Lua code created for this block.\n * @param thisOnly True to generate code for only this statement.\n * @returns Lua 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 * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @file Generating Lua for dynamic variable blocks.\n */\n\n// Former goog.module ID: Blockly.Lua.variablesDynamic\n\n// Lua 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 Complete helper functions for generating Lua for\n * blocks. This is the entrypoint for lua_compressed.js.\n */\n\n// Former goog.module ID: Blockly.Lua.all\n\nimport * as lists from './lua/lists.js';\nimport * as logic from './lua/logic.js';\nimport * as loops from './lua/loops.js';\nimport {LuaGenerator} from './lua/lua_generator.js';\nimport * as math from './lua/math.js';\nimport * as procedures from './lua/procedures.js';\nimport * as text from './lua/text.js';\nimport * as variables from './lua/variables.js';\nimport * as variablesDynamic from './lua/variables_dynamic.js';\n\nexport * from './lua/lua_generator.js';\n\n/**\n * Lua code generator instance.\n */\nexport const luaGenerator = new LuaGenerator();\n\n// Install per-block-type generator functions:\nconst generators: typeof luaGenerator.forBlock = {\n ...lists,\n ...logic,\n ...loops,\n ...math,\n ...procedures,\n ...text,\n ...variables,\n ...variablesDynamic,\n};\nfor (const name in generators) {\n luaGenerator.forBlock[name] = generators[name];\n}\n"]}
|