blockly 12.4.0 → 12.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/blockly.min.js +2751 -0
- package/blockly.mjs +163 -0
- package/blockly_compressed.js +1825 -0
- package/blockly_compressed.js.map +1 -0
- package/blocks.js +4 -0
- package/blocks.mjs +12 -0
- package/blocks_compressed.js +194 -0
- package/blocks_compressed.js.map +1 -0
- package/core/any_aliases.d.ts +7 -0
- package/core/block.d.ts +1006 -0
- package/core/block_animations.d.ts +34 -0
- package/core/block_flyout_inflater.d.ts +94 -0
- package/core/block_svg.d.ts +737 -0
- package/core/blockly.d.ts +286 -0
- package/core/blockly_options.d.ts +70 -0
- package/core/blocks.d.ts +17 -0
- package/core/browser_events.d.ts +88 -0
- package/core/bubbles/bubble.d.ts +228 -0
- package/core/bubbles/mini_workspace_bubble.d.ts +84 -0
- package/core/bubbles/text_bubble.d.ts +38 -0
- package/core/bubbles/textinput_bubble.d.ts +102 -0
- package/core/bubbles.d.ts +11 -0
- package/core/bump_objects.d.ts +37 -0
- package/core/button_flyout_inflater.d.ts +42 -0
- package/core/clipboard/block_paster.d.ts +34 -0
- package/core/clipboard/registry.d.ts +21 -0
- package/core/clipboard/workspace_comment_paster.d.ts +19 -0
- package/core/clipboard.d.ts +103 -0
- package/core/comments/collapse_comment_bar_button.d.ts +52 -0
- package/core/comments/comment_bar_button.d.ts +62 -0
- package/core/comments/comment_editor.d.ts +62 -0
- package/core/comments/comment_view.d.ts +213 -0
- package/core/comments/delete_comment_bar_button.d.ts +52 -0
- package/core/comments/rendered_workspace_comment.d.ts +121 -0
- package/core/comments/workspace_comment.d.ts +107 -0
- package/core/comments.d.ts +13 -0
- package/core/common.d.ts +163 -0
- package/core/component_manager.d.ts +112 -0
- package/core/config.d.ts +24 -0
- package/core/connection.d.ts +291 -0
- package/core/connection_checker.d.ts +85 -0
- package/core/connection_db.d.ts +100 -0
- package/core/connection_type.d.ts +15 -0
- package/core/constants.d.ts +19 -0
- package/core/contextmenu.d.ts +58 -0
- package/core/contextmenu_items.d.ts +73 -0
- package/core/contextmenu_registry.d.ts +173 -0
- package/core/css.d.ts +25 -0
- package/core/delete_area.d.ts +48 -0
- package/core/dialog.d.ts +82 -0
- package/core/drag_target.d.ts +75 -0
- package/core/dragging/block_drag_strategy.d.ts +130 -0
- package/core/dragging/bubble_drag_strategy.d.ts +20 -0
- package/core/dragging/comment_drag_strategy.d.ts +26 -0
- package/core/dragging/dragger.d.ts +49 -0
- package/core/dragging.d.ts +11 -0
- package/core/dropdowndiv.d.ts +208 -0
- package/core/events/events.d.ts +72 -0
- package/core/events/events_abstract.d.ts +72 -0
- package/core/events/events_block_base.d.ts +46 -0
- package/core/events/events_block_change.d.ts +100 -0
- package/core/events/events_block_create.d.ts +59 -0
- package/core/events/events_block_delete.d.ts +62 -0
- package/core/events/events_block_drag.d.ts +61 -0
- package/core/events/events_block_field_intermediate_change.d.ts +71 -0
- package/core/events/events_block_move.d.ts +115 -0
- package/core/events/events_bubble_open.d.ts +62 -0
- package/core/events/events_click.d.ts +64 -0
- package/core/events/events_comment_base.d.ts +55 -0
- package/core/events/events_comment_change.d.ts +64 -0
- package/core/events/events_comment_collapse.d.ts +40 -0
- package/core/events/events_comment_create.d.ts +57 -0
- package/core/events/events_comment_delete.d.ts +57 -0
- package/core/events/events_comment_drag.d.ts +51 -0
- package/core/events/events_comment_move.d.ts +93 -0
- package/core/events/events_comment_resize.d.ts +68 -0
- package/core/events/events_selected.d.ts +53 -0
- package/core/events/events_theme_change.d.ts +43 -0
- package/core/events/events_toolbox_item_select.d.ts +49 -0
- package/core/events/events_trashcan_open.d.ts +47 -0
- package/core/events/events_ui_base.d.ts +32 -0
- package/core/events/events_var_base.d.ts +46 -0
- package/core/events/events_var_create.d.ts +55 -0
- package/core/events/events_var_delete.d.ts +50 -0
- package/core/events/events_var_rename.d.ts +51 -0
- package/core/events/events_var_type_change.d.ts +55 -0
- package/core/events/events_viewport.d.ts +67 -0
- package/core/events/predicates.d.ts +87 -0
- package/core/events/type.d.ts +81 -0
- package/core/events/utils.d.ts +211 -0
- package/core/events/workspace_events.d.ts +23 -0
- package/core/extensions.d.ts +99 -0
- package/core/field.d.ts +724 -0
- package/core/field_checkbox.d.ts +156 -0
- package/core/field_dropdown.d.ts +295 -0
- package/core/field_image.d.ts +148 -0
- package/core/field_input.d.ts +293 -0
- package/core/field_label.d.ts +80 -0
- package/core/field_label_serializable.d.ts +50 -0
- package/core/field_number.d.ts +194 -0
- package/core/field_registry.d.ts +83 -0
- package/core/field_textinput.d.ts +78 -0
- package/core/field_variable.d.ts +261 -0
- package/core/flyout_base.d.ts +453 -0
- package/core/flyout_button.d.ts +140 -0
- package/core/flyout_horizontal.d.ts +87 -0
- package/core/flyout_item.d.ts +26 -0
- package/core/flyout_metrics_manager.d.ts +46 -0
- package/core/flyout_navigator.d.ts +11 -0
- package/core/flyout_separator.d.ts +64 -0
- package/core/flyout_vertical.d.ts +88 -0
- package/core/focus_manager.d.ts +266 -0
- package/core/generator.d.ts +279 -0
- package/core/gesture.d.ts +449 -0
- package/core/grid.d.ts +124 -0
- package/core/icons/comment_icon.d.ts +134 -0
- package/core/icons/exceptions.d.ts +17 -0
- package/core/icons/icon.d.ts +84 -0
- package/core/icons/icon_types.d.ts +25 -0
- package/core/icons/mutator_icon.d.ts +96 -0
- package/core/icons/registry.d.ts +23 -0
- package/core/icons/warning_icon.d.ts +77 -0
- package/core/icons.d.ts +14 -0
- package/core/inject.d.ts +16 -0
- package/core/inputs/align.d.ts +14 -0
- package/core/inputs/dummy_input.d.ts +20 -0
- package/core/inputs/end_row_input.d.ts +25 -0
- package/core/inputs/input.d.ts +147 -0
- package/core/inputs/input_types.d.ts +16 -0
- package/core/inputs/statement_input.d.ts +22 -0
- package/core/inputs/value_input.d.ts +20 -0
- package/core/inputs.d.ts +14 -0
- package/core/insertion_marker_previewer.d.ts +67 -0
- package/core/interfaces/i_autohideable.d.ts +21 -0
- package/core/interfaces/i_bounded_element.d.ts +27 -0
- package/core/interfaces/i_bubble.d.ts +55 -0
- package/core/interfaces/i_collapsible_toolbox_item.d.ts +28 -0
- package/core/interfaces/i_comment_icon.d.ts +24 -0
- package/core/interfaces/i_component.d.ts +17 -0
- package/core/interfaces/i_connection_checker.d.ts +75 -0
- package/core/interfaces/i_connection_previewer.d.ts +39 -0
- package/core/interfaces/i_contextmenu.d.ts +16 -0
- package/core/interfaces/i_copyable.d.ts +30 -0
- package/core/interfaces/i_deletable.d.ts +23 -0
- package/core/interfaces/i_delete_area.d.ts +25 -0
- package/core/interfaces/i_drag_target.d.ts +59 -0
- package/core/interfaces/i_draggable.d.ts +56 -0
- package/core/interfaces/i_dragger.d.ts +32 -0
- package/core/interfaces/i_flyout.d.ts +159 -0
- package/core/interfaces/i_flyout_inflater.d.ts +48 -0
- package/core/interfaces/i_focusable_node.d.ts +105 -0
- package/core/interfaces/i_focusable_tree.d.ts +125 -0
- package/core/interfaces/i_has_bubble.d.ts +27 -0
- package/core/interfaces/i_icon.d.ts +84 -0
- package/core/interfaces/i_keyboard_accessible.d.ts +19 -0
- package/core/interfaces/i_legacy_procedure_blocks.d.ts +34 -0
- package/core/interfaces/i_metrics_manager.d.ts +129 -0
- package/core/interfaces/i_movable.d.ts +17 -0
- package/core/interfaces/i_navigation_policy.d.ts +63 -0
- package/core/interfaces/i_observable.d.ts +21 -0
- package/core/interfaces/i_parameter_model.d.ts +44 -0
- package/core/interfaces/i_paster.d.ts +15 -0
- package/core/interfaces/i_positionable.d.ts +29 -0
- package/core/interfaces/i_procedure_block.d.ts +16 -0
- package/core/interfaces/i_procedure_map.d.ts +16 -0
- package/core/interfaces/i_procedure_model.d.ts +59 -0
- package/core/interfaces/i_registrable.d.ts +11 -0
- package/core/interfaces/i_rendered_element.d.ts +16 -0
- package/core/interfaces/i_selectable.d.ts +26 -0
- package/core/interfaces/i_selectable_toolbox_item.d.ts +51 -0
- package/core/interfaces/i_serializable.d.ts +24 -0
- package/core/interfaces/i_serializer.d.ts +45 -0
- package/core/interfaces/i_styleable.d.ts +23 -0
- package/core/interfaces/i_toolbox.d.ts +102 -0
- package/core/interfaces/i_toolbox_item.d.ts +71 -0
- package/core/interfaces/i_variable_backed_parameter_model.d.ts +17 -0
- package/core/interfaces/i_variable_map.d.ts +48 -0
- package/core/interfaces/i_variable_model.d.ts +36 -0
- package/core/internal_constants.d.ts +34 -0
- package/core/keyboard_nav/block_comment_navigation_policy.d.ts +56 -0
- package/core/keyboard_nav/block_navigation_policy.d.ts +84 -0
- package/core/keyboard_nav/comment_bar_button_navigation_policy.d.ts +56 -0
- package/core/keyboard_nav/comment_editor_navigation_policy.d.ts +34 -0
- package/core/keyboard_nav/connection_navigation_policy.d.ts +67 -0
- package/core/keyboard_nav/field_navigation_policy.d.ts +56 -0
- package/core/keyboard_nav/flyout_button_navigation_policy.d.ts +56 -0
- package/core/keyboard_nav/flyout_navigation_policy.d.ts +65 -0
- package/core/keyboard_nav/flyout_separator_navigation_policy.d.ts +33 -0
- package/core/keyboard_nav/icon_navigation_policy.d.ts +56 -0
- package/core/keyboard_nav/line_cursor.d.ts +187 -0
- package/core/keyboard_nav/marker.d.ts +53 -0
- package/core/keyboard_nav/workspace_comment_navigation_policy.d.ts +56 -0
- package/core/keyboard_nav/workspace_navigation_policy.d.ts +56 -0
- package/core/keyboard_navigation_controller.d.ts +48 -0
- package/core/label_flyout_inflater.d.ts +42 -0
- package/core/layer_manager.d.ts +101 -0
- package/core/layers.d.ts +16 -0
- package/core/main.d.ts +7 -0
- package/core/marker_manager.d.ts +72 -0
- package/core/menu.d.ts +170 -0
- package/core/menu_separator.d.ts +25 -0
- package/core/menuitem.d.ts +147 -0
- package/core/metrics_manager.d.ts +221 -0
- package/core/msg.d.ts +24 -0
- package/core/names.d.ts +139 -0
- package/core/navigator.d.ts +65 -0
- package/core/observable_procedure_map.d.ts +34 -0
- package/core/options.d.ts +148 -0
- package/core/positionable_helpers.d.ts +89 -0
- package/core/procedures.d.ts +108 -0
- package/core/registry.d.ts +158 -0
- package/core/render_management.d.ts +34 -0
- package/core/rendered_connection.d.ts +262 -0
- package/core/renderers/common/block_rendering.d.ts +63 -0
- package/core/renderers/common/constants.d.ts +454 -0
- package/core/renderers/common/drawer.d.ts +156 -0
- package/core/renderers/common/i_path_object.d.ts +88 -0
- package/core/renderers/common/info.d.ts +201 -0
- package/core/renderers/common/path_object.d.ts +130 -0
- package/core/renderers/common/renderer.d.ts +141 -0
- package/core/renderers/geras/constants.d.ts +22 -0
- package/core/renderers/geras/drawer.d.ts +44 -0
- package/core/renderers/geras/geras.d.ts +17 -0
- package/core/renderers/geras/highlight_constants.d.ts +100 -0
- package/core/renderers/geras/highlighter.d.ts +96 -0
- package/core/renderers/geras/info.d.ts +45 -0
- package/core/renderers/geras/measurables/inline_input.d.ts +22 -0
- package/core/renderers/geras/measurables/statement_input.d.ts +22 -0
- package/core/renderers/geras/path_object.d.ts +42 -0
- package/core/renderers/geras/renderer.d.ts +77 -0
- package/core/renderers/measurables/base.d.ts +26 -0
- package/core/renderers/measurables/bottom_row.d.ts +58 -0
- package/core/renderers/measurables/connection.d.ts +25 -0
- package/core/renderers/measurables/external_value_input.d.ts +25 -0
- package/core/renderers/measurables/field.d.ts +28 -0
- package/core/renderers/measurables/hat.d.ts +19 -0
- package/core/renderers/measurables/icon.d.ts +25 -0
- package/core/renderers/measurables/in_row_spacer.d.ts +20 -0
- package/core/renderers/measurables/inline_input.d.ts +22 -0
- package/core/renderers/measurables/input_connection.d.ts +28 -0
- package/core/renderers/measurables/input_row.d.ts +26 -0
- package/core/renderers/measurables/jagged_edge.d.ts +19 -0
- package/core/renderers/measurables/next_connection.d.ts +22 -0
- package/core/renderers/measurables/output_connection.d.ts +24 -0
- package/core/renderers/measurables/previous_connection.d.ts +22 -0
- package/core/renderers/measurables/round_corner.d.ts +20 -0
- package/core/renderers/measurables/row.d.ts +124 -0
- package/core/renderers/measurables/spacer_row.d.ts +27 -0
- package/core/renderers/measurables/square_corner.d.ts +20 -0
- package/core/renderers/measurables/statement_input.d.ts +21 -0
- package/core/renderers/measurables/top_row.d.ts +53 -0
- package/core/renderers/measurables/types.d.ts +258 -0
- package/core/renderers/thrasos/info.d.ts +37 -0
- package/core/renderers/thrasos/renderer.d.ts +28 -0
- package/core/renderers/thrasos/thrasos.d.ts +10 -0
- package/core/renderers/zelos/constants.d.ts +165 -0
- package/core/renderers/zelos/drawer.d.ts +51 -0
- package/core/renderers/zelos/info.d.ts +89 -0
- package/core/renderers/zelos/measurables/bottom_row.d.ts +26 -0
- package/core/renderers/zelos/measurables/inputs.d.ts +21 -0
- package/core/renderers/zelos/measurables/row_elements.d.ts +20 -0
- package/core/renderers/zelos/measurables/top_row.d.ts +28 -0
- package/core/renderers/zelos/path_object.d.ts +76 -0
- package/core/renderers/zelos/renderer.d.ts +64 -0
- package/core/renderers/zelos/zelos.d.ts +17 -0
- package/core/scrollbar.d.ts +348 -0
- package/core/scrollbar_pair.d.ts +121 -0
- package/core/separator_flyout_inflater.d.ts +57 -0
- package/core/serialization/blocks.d.ts +138 -0
- package/core/serialization/exceptions.d.ts +81 -0
- package/core/serialization/priorities.d.ts +20 -0
- package/core/serialization/procedures.d.ts +97 -0
- package/core/serialization/registry.d.ts +21 -0
- package/core/serialization/variables.d.ts +38 -0
- package/core/serialization/workspace_comments.d.ts +45 -0
- package/core/serialization/workspaces.d.ts +29 -0
- package/core/serialization.d.ts +19 -0
- package/core/shortcut_items.d.ts +59 -0
- package/core/shortcut_registry.d.ts +236 -0
- package/core/sprites.d.ts +15 -0
- package/core/theme/classic.d.ts +12 -0
- package/core/theme/themes.d.ts +9 -0
- package/core/theme/zelos.d.ts +11 -0
- package/core/theme.d.ts +151 -0
- package/core/theme_manager.d.ts +92 -0
- package/core/toast.d.ts +74 -0
- package/core/toolbox/category.d.ts +265 -0
- package/core/toolbox/collapsible_category.d.ts +99 -0
- package/core/toolbox/separator.d.ts +40 -0
- package/core/toolbox/toolbox.d.ts +419 -0
- package/core/toolbox/toolbox_item.d.ts +109 -0
- package/core/tooltip.d.ts +118 -0
- package/core/touch.d.ts +72 -0
- package/core/trashcan.d.ts +212 -0
- package/core/utils/aria.d.ts +69 -0
- package/core/utils/array.d.ts +15 -0
- package/core/utils/colour.d.ts +102 -0
- package/core/utils/coordinate.d.ts +87 -0
- package/core/utils/deprecation.d.ts +18 -0
- package/core/utils/dom.d.ts +154 -0
- package/core/utils/drag.d.ts +33 -0
- package/core/utils/focusable_tree_traverser.d.ts +53 -0
- package/core/utils/idgenerator.d.ts +33 -0
- package/core/utils/keycodes.d.ts +137 -0
- package/core/utils/math.d.ts +31 -0
- package/core/utils/metrics.d.ts +64 -0
- package/core/utils/object.d.ts +17 -0
- package/core/utils/parsing.d.ts +52 -0
- package/core/utils/rect.d.ts +82 -0
- package/core/utils/size.d.ts +44 -0
- package/core/utils/string.d.ts +46 -0
- package/core/utils/style.d.ts +89 -0
- package/core/utils/svg.d.ts +75 -0
- package/core/utils/svg_math.d.ts +64 -0
- package/core/utils/svg_paths.d.ts +103 -0
- package/core/utils/toolbox.d.ts +180 -0
- package/core/utils/useragent.d.ts +14 -0
- package/core/utils/xml.d.ts +96 -0
- package/core/utils.d.ts +31 -0
- package/core/variable_map.d.ts +164 -0
- package/core/variable_model.d.ts +73 -0
- package/core/variables.d.ts +238 -0
- package/core/variables_dynamic.d.ts +56 -0
- package/core/widgetdiv.d.ts +87 -0
- package/core/workspace.d.ts +482 -0
- package/core/workspace_audio.d.ts +62 -0
- package/core/workspace_dragger.d.ts +48 -0
- package/core/workspace_svg.d.ts +1103 -0
- package/core/xml.d.ts +127 -0
- package/core/zoom_controls.d.ts +134 -0
- package/core.js +4 -0
- package/dart.js +4 -0
- package/dart.mjs +6 -0
- package/dart_compressed.js +330 -0
- package/dart_compressed.js.map +1 -0
- package/generators/dart/dart_generator.d.ts +104 -0
- package/generators/dart/lists.d.ts +21 -0
- package/generators/dart/logic.d.ts +20 -0
- package/generators/dart/loops.d.ts +14 -0
- package/generators/dart/math.d.ts +26 -0
- package/generators/dart/procedures.d.ts +14 -0
- package/generators/dart/text.d.ts +25 -0
- package/generators/dart/variables.d.ts +14 -0
- package/generators/dart/variables_dynamic.d.ts +10 -0
- package/generators/dart.d.ts +18 -0
- package/generators/javascript/javascript_generator.d.ts +123 -0
- package/generators/javascript/lists.d.ts +21 -0
- package/generators/javascript/logic.d.ts +20 -0
- package/generators/javascript/loops.d.ts +14 -0
- package/generators/javascript/math.d.ts +26 -0
- package/generators/javascript/procedures.d.ts +14 -0
- package/generators/javascript/text.d.ts +25 -0
- package/generators/javascript/variables.d.ts +14 -0
- package/generators/javascript/variables_dynamic.d.ts +10 -0
- package/generators/javascript.d.ts +18 -0
- package/generators/lua/lists.d.ts +21 -0
- package/generators/lua/logic.d.ts +20 -0
- package/generators/lua/loops.d.ts +14 -0
- package/generators/lua/lua_generator.d.ts +91 -0
- package/generators/lua/math.d.ts +26 -0
- package/generators/lua/procedures.d.ts +14 -0
- package/generators/lua/text.d.ts +25 -0
- package/generators/lua/variables.d.ts +14 -0
- package/generators/lua/variables_dynamic.d.ts +10 -0
- package/generators/lua.d.ts +12 -0
- package/generators/php/lists.d.ts +21 -0
- package/generators/php/logic.d.ts +20 -0
- package/generators/php/loops.d.ts +14 -0
- package/generators/php/math.d.ts +26 -0
- package/generators/php/php_generator.d.ts +122 -0
- package/generators/php/procedures.d.ts +14 -0
- package/generators/php/text.d.ts +25 -0
- package/generators/php/variables.d.ts +14 -0
- package/generators/php/variables_dynamic.d.ts +10 -0
- package/generators/php.d.ts +13 -0
- package/generators/python/lists.d.ts +21 -0
- package/generators/python/logic.d.ts +20 -0
- package/generators/python/loops.d.ts +14 -0
- package/generators/python/math.d.ts +26 -0
- package/generators/python/procedures.d.ts +14 -0
- package/generators/python/python_generator.d.ts +111 -0
- package/generators/python/text.d.ts +25 -0
- package/generators/python/variables.d.ts +14 -0
- package/generators/python/variables_dynamic.d.ts +10 -0
- package/generators/python.d.ts +13 -0
- package/index.js +36 -0
- package/index.mjs +163 -0
- package/javascript.js +4 -0
- package/javascript.mjs +6 -0
- package/javascript_compressed.js +264 -0
- package/javascript_compressed.js.map +1 -0
- package/lua.js +4 -0
- package/lua.mjs +6 -0
- package/lua_compressed.js +373 -0
- package/lua_compressed.js.map +1 -0
- package/msg/ab.js +465 -0
- package/msg/ab.mjs +446 -0
- package/msg/ace.js +465 -0
- package/msg/ace.mjs +446 -0
- package/msg/af.js +465 -0
- package/msg/af.mjs +446 -0
- package/msg/am.js +465 -0
- package/msg/am.mjs +446 -0
- package/msg/ar.js +465 -0
- package/msg/ar.mjs +446 -0
- package/msg/ast.js +465 -0
- package/msg/ast.mjs +446 -0
- package/msg/az.js +465 -0
- package/msg/az.mjs +446 -0
- package/msg/ba.js +465 -0
- package/msg/ba.mjs +446 -0
- package/msg/bcc.js +465 -0
- package/msg/bcc.mjs +446 -0
- package/msg/be-tarask.js +465 -0
- package/msg/be-tarask.mjs +446 -0
- package/msg/be.js +465 -0
- package/msg/be.mjs +446 -0
- package/msg/bg.js +465 -0
- package/msg/bg.mjs +446 -0
- package/msg/bn.js +465 -0
- package/msg/bn.mjs +446 -0
- package/msg/br.js +465 -0
- package/msg/br.mjs +446 -0
- package/msg/bs.js +465 -0
- package/msg/bs.mjs +446 -0
- package/msg/ca.js +465 -0
- package/msg/ca.mjs +446 -0
- package/msg/cdo.js +465 -0
- package/msg/cdo.mjs +446 -0
- package/msg/ce.js +465 -0
- package/msg/ce.mjs +446 -0
- package/msg/cs.js +465 -0
- package/msg/cs.mjs +446 -0
- package/msg/da.js +465 -0
- package/msg/da.mjs +446 -0
- package/msg/de.js +465 -0
- package/msg/de.mjs +446 -0
- package/msg/diq.js +465 -0
- package/msg/diq.mjs +446 -0
- package/msg/dtp.js +465 -0
- package/msg/dtp.mjs +446 -0
- package/msg/dty.js +465 -0
- package/msg/dty.mjs +446 -0
- package/msg/ee.js +465 -0
- package/msg/ee.mjs +446 -0
- package/msg/el.js +465 -0
- package/msg/el.mjs +446 -0
- package/msg/en-gb.js +465 -0
- package/msg/en-gb.mjs +446 -0
- package/msg/en.js +465 -0
- package/msg/en.mjs +446 -0
- package/msg/eo.js +465 -0
- package/msg/eo.mjs +446 -0
- package/msg/es.js +465 -0
- package/msg/es.mjs +446 -0
- package/msg/et.js +465 -0
- package/msg/et.mjs +446 -0
- package/msg/eu.js +465 -0
- package/msg/eu.mjs +446 -0
- package/msg/fa.js +465 -0
- package/msg/fa.mjs +446 -0
- package/msg/fi.js +465 -0
- package/msg/fi.mjs +446 -0
- package/msg/fo.js +465 -0
- package/msg/fo.mjs +446 -0
- package/msg/fr.js +465 -0
- package/msg/fr.mjs +446 -0
- package/msg/frr.js +465 -0
- package/msg/frr.mjs +446 -0
- package/msg/gl.js +465 -0
- package/msg/gl.mjs +446 -0
- package/msg/gn.js +465 -0
- package/msg/gn.mjs +446 -0
- package/msg/gor.js +465 -0
- package/msg/gor.mjs +446 -0
- package/msg/ha.js +465 -0
- package/msg/ha.mjs +446 -0
- package/msg/hak.js +465 -0
- package/msg/hak.mjs +446 -0
- package/msg/he.js +465 -0
- package/msg/he.mjs +446 -0
- package/msg/hi.js +465 -0
- package/msg/hi.mjs +446 -0
- package/msg/hr.js +465 -0
- package/msg/hr.mjs +446 -0
- package/msg/hrx.js +465 -0
- package/msg/hrx.mjs +446 -0
- package/msg/hsb.js +465 -0
- package/msg/hsb.mjs +446 -0
- package/msg/hu.js +465 -0
- package/msg/hu.mjs +446 -0
- package/msg/hy.js +465 -0
- package/msg/hy.mjs +446 -0
- package/msg/ia.js +465 -0
- package/msg/ia.mjs +446 -0
- package/msg/id.js +465 -0
- package/msg/id.mjs +446 -0
- package/msg/ig.js +465 -0
- package/msg/ig.mjs +446 -0
- package/msg/inh.js +465 -0
- package/msg/inh.mjs +446 -0
- package/msg/is.js +465 -0
- package/msg/is.mjs +446 -0
- package/msg/it.js +465 -0
- package/msg/it.mjs +446 -0
- package/msg/ja.js +465 -0
- package/msg/ja.mjs +446 -0
- package/msg/ka.js +465 -0
- package/msg/ka.mjs +446 -0
- package/msg/kab.js +465 -0
- package/msg/kab.mjs +446 -0
- package/msg/kbd-cyrl.js +465 -0
- package/msg/kbd-cyrl.mjs +446 -0
- package/msg/km.js +465 -0
- package/msg/km.mjs +446 -0
- package/msg/kn.js +465 -0
- package/msg/kn.mjs +446 -0
- package/msg/ko.js +465 -0
- package/msg/ko.mjs +446 -0
- package/msg/ksh.js +465 -0
- package/msg/ksh.mjs +446 -0
- package/msg/ku-latn.js +465 -0
- package/msg/ku-latn.mjs +446 -0
- package/msg/ky.js +465 -0
- package/msg/ky.mjs +446 -0
- package/msg/la.js +465 -0
- package/msg/la.mjs +446 -0
- package/msg/lb.js +465 -0
- package/msg/lb.mjs +446 -0
- package/msg/lki.js +465 -0
- package/msg/lki.mjs +446 -0
- package/msg/lo.js +465 -0
- package/msg/lo.mjs +446 -0
- package/msg/lrc.js +465 -0
- package/msg/lrc.mjs +446 -0
- package/msg/lt.js +465 -0
- package/msg/lt.mjs +446 -0
- package/msg/lv.js +465 -0
- package/msg/lv.mjs +446 -0
- package/msg/mg.js +465 -0
- package/msg/mg.mjs +446 -0
- package/msg/mk.js +465 -0
- package/msg/mk.mjs +446 -0
- package/msg/ml.js +465 -0
- package/msg/ml.mjs +446 -0
- package/msg/mnw.js +465 -0
- package/msg/mnw.mjs +446 -0
- package/msg/ms.js +465 -0
- package/msg/ms.mjs +446 -0
- package/msg/my.js +465 -0
- package/msg/my.mjs +446 -0
- package/msg/mzn.js +465 -0
- package/msg/mzn.mjs +446 -0
- package/msg/nb.js +465 -0
- package/msg/nb.mjs +446 -0
- package/msg/ne.js +465 -0
- package/msg/ne.mjs +446 -0
- package/msg/nl.js +465 -0
- package/msg/nl.mjs +446 -0
- package/msg/oc.js +465 -0
- package/msg/oc.mjs +446 -0
- package/msg/olo.js +465 -0
- package/msg/olo.mjs +446 -0
- package/msg/pa.js +465 -0
- package/msg/pa.mjs +446 -0
- package/msg/pl.js +465 -0
- package/msg/pl.mjs +446 -0
- package/msg/pms.js +465 -0
- package/msg/pms.mjs +446 -0
- package/msg/ps.js +465 -0
- package/msg/ps.mjs +446 -0
- package/msg/pt-br.js +465 -0
- package/msg/pt-br.mjs +446 -0
- package/msg/pt.js +465 -0
- package/msg/pt.mjs +446 -0
- package/msg/ro.js +465 -0
- package/msg/ro.mjs +446 -0
- package/msg/ru.js +465 -0
- package/msg/ru.mjs +446 -0
- package/msg/sc.js +465 -0
- package/msg/sc.mjs +446 -0
- package/msg/sco.js +465 -0
- package/msg/sco.mjs +446 -0
- package/msg/sd.js +465 -0
- package/msg/sd.mjs +446 -0
- package/msg/shn.js +465 -0
- package/msg/shn.mjs +446 -0
- package/msg/si.js +465 -0
- package/msg/si.mjs +446 -0
- package/msg/sk.js +465 -0
- package/msg/sk.mjs +446 -0
- package/msg/skr-arab.js +465 -0
- package/msg/skr-arab.mjs +446 -0
- package/msg/sl.js +465 -0
- package/msg/sl.mjs +446 -0
- package/msg/smn.js +465 -0
- package/msg/smn.mjs +446 -0
- package/msg/sq.js +465 -0
- package/msg/sq.mjs +446 -0
- package/msg/sr-latn.js +465 -0
- package/msg/sr-latn.mjs +446 -0
- package/msg/sr.js +465 -0
- package/msg/sr.mjs +446 -0
- package/msg/sv.js +465 -0
- package/msg/sv.mjs +446 -0
- package/msg/sw.js +465 -0
- package/msg/sw.mjs +446 -0
- package/msg/ta.js +465 -0
- package/msg/ta.mjs +446 -0
- package/msg/tcy.js +465 -0
- package/msg/tcy.mjs +446 -0
- package/msg/tdd.js +465 -0
- package/msg/tdd.mjs +446 -0
- package/msg/te.js +465 -0
- package/msg/te.mjs +446 -0
- package/msg/th.js +465 -0
- package/msg/th.mjs +446 -0
- package/msg/ti.js +465 -0
- package/msg/ti.mjs +446 -0
- package/msg/tl.js +465 -0
- package/msg/tl.mjs +446 -0
- package/msg/tlh.js +465 -0
- package/msg/tlh.mjs +446 -0
- package/msg/tr.js +465 -0
- package/msg/tr.mjs +446 -0
- package/msg/ug-arab.js +465 -0
- package/msg/ug-arab.mjs +446 -0
- package/msg/uk.js +465 -0
- package/msg/uk.mjs +446 -0
- package/msg/ur.js +465 -0
- package/msg/ur.mjs +446 -0
- package/msg/uz.js +465 -0
- package/msg/uz.mjs +446 -0
- package/msg/vi.js +465 -0
- package/msg/vi.mjs +446 -0
- package/msg/xmf.js +465 -0
- package/msg/xmf.mjs +446 -0
- package/msg/yo.js +465 -0
- package/msg/yo.mjs +446 -0
- package/msg/zgh.js +465 -0
- package/msg/zgh.mjs +446 -0
- package/msg/zh-hans.js +465 -0
- package/msg/zh-hans.mjs +446 -0
- package/msg/zh-hant.js +465 -0
- package/msg/zh-hant.mjs +446 -0
- package/package.json +8 -37
- package/php.js +4 -0
- package/php.mjs +6 -0
- package/php_compressed.js +283 -0
- package/php_compressed.js.map +1 -0
- package/python.js +4 -0
- package/python.mjs +6 -0
- package/python_compressed.js +208 -0
- package/python_compressed.js.map +1 -0
- package/.prettierignore +0 -30
- package/.prettierrc.js +0 -15
- package/api-extractor.json +0 -390
- package/appengine/.gcloudignore +0 -20
- package/appengine/README.txt +0 -42
- package/appengine/add_timestamps.py +0 -69
- package/appengine/app.yaml +0 -106
- package/appengine/apple-touch-icon.png +0 -0
- package/appengine/blockly_compressed.js +0 -11
- package/appengine/expiration.py +0 -52
- package/appengine/favicon.ico +0 -0
- package/appengine/index.yaml +0 -11
- package/appengine/main.py +0 -39
- package/appengine/redirect.html +0 -107
- package/appengine/requirements.txt +0 -1
- package/appengine/robots.txt +0 -2
- package/appengine/storage.js +0 -190
- package/appengine/storage.py +0 -125
- package/blocks/blocks.ts +0 -44
- package/blocks/lists.ts +0 -1065
- package/blocks/logic.ts +0 -712
- package/blocks/loops.ts +0 -408
- package/blocks/math.ts +0 -591
- package/blocks/procedures.ts +0 -1366
- package/blocks/text.ts +0 -1001
- package/blocks/variables.ts +0 -181
- package/blocks/variables_dynamic.ts +0 -192
- package/core/any_aliases.ts +0 -8
- package/core/block.ts +0 -2511
- package/core/block_animations.ts +0 -233
- package/core/block_flyout_inflater.ts +0 -283
- package/core/block_svg.ts +0 -1873
- package/core/blockly.ts +0 -644
- package/core/blockly_options.ts +0 -71
- package/core/blocks.ts +0 -18
- package/core/browser_events.ts +0 -256
- package/core/bubbles/bubble.ts +0 -732
- package/core/bubbles/mini_workspace_bubble.ts +0 -292
- package/core/bubbles/text_bubble.ts +0 -112
- package/core/bubbles/textinput_bubble.ts +0 -296
- package/core/bubbles.ts +0 -12
- package/core/bump_objects.ts +0 -188
- package/core/button_flyout_inflater.ts +0 -76
- package/core/clipboard/block_paster.ts +0 -154
- package/core/clipboard/registry.ts +0 -31
- package/core/clipboard/workspace_comment_paster.ts +0 -95
- package/core/clipboard.ts +0 -197
- package/core/comments/collapse_comment_bar_button.ts +0 -102
- package/core/comments/comment_bar_button.ts +0 -105
- package/core/comments/comment_editor.ts +0 -220
- package/core/comments/comment_view.ts +0 -773
- package/core/comments/delete_comment_bar_button.ts +0 -106
- package/core/comments/rendered_workspace_comment.ts +0 -361
- package/core/comments/workspace_comment.ts +0 -247
- package/core/comments.ts +0 -13
- package/core/common.ts +0 -347
- package/core/component_manager.ts +0 -247
- package/core/config.ts +0 -65
- package/core/connection.ts +0 -807
- package/core/connection_checker.ts +0 -348
- package/core/connection_db.ts +0 -297
- package/core/connection_type.ts +0 -21
- package/core/constants.ts +0 -23
- package/core/contextmenu.ts +0 -295
- package/core/contextmenu_items.ts +0 -684
- package/core/contextmenu_registry.ts +0 -278
- package/core/css.ts +0 -518
- package/core/delete_area.ts +0 -77
- package/core/dialog.ts +0 -167
- package/core/drag_target.ts +0 -97
- package/core/dragging/block_drag_strategy.ts +0 -523
- package/core/dragging/bubble_drag_strategy.ts +0 -49
- package/core/dragging/comment_drag_strategy.ts +0 -92
- package/core/dragging/dragger.ts +0 -174
- package/core/dragging.ts +0 -12
- package/core/dropdowndiv.ts +0 -792
- package/core/events/events.ts +0 -109
- package/core/events/events_abstract.ts +0 -129
- package/core/events/events_block_base.ts +0 -87
- package/core/events/events_block_change.ts +0 -259
- package/core/events/events_block_create.ts +0 -185
- package/core/events/events_block_delete.ts +0 -182
- package/core/events/events_block_drag.ts +0 -116
- package/core/events/events_block_field_intermediate_change.ts +0 -166
- package/core/events/events_block_move.ts +0 -306
- package/core/events/events_bubble_open.ts +0 -121
- package/core/events/events_click.ts +0 -110
- package/core/events/events_comment_base.ts +0 -126
- package/core/events/events_comment_change.ts +0 -156
- package/core/events/events_comment_collapse.ts +0 -103
- package/core/events/events_comment_create.ts +0 -114
- package/core/events/events_comment_delete.ts +0 -113
- package/core/events/events_comment_drag.ts +0 -99
- package/core/events/events_comment_move.ts +0 -206
- package/core/events/events_comment_resize.ts +0 -169
- package/core/events/events_selected.ts +0 -97
- package/core/events/events_theme_change.ts +0 -84
- package/core/events/events_toolbox_item_select.ts +0 -96
- package/core/events/events_trashcan_open.ts +0 -87
- package/core/events/events_ui_base.ts +0 -47
- package/core/events/events_var_base.ts +0 -88
- package/core/events/events_var_create.ts +0 -131
- package/core/events/events_var_delete.ts +0 -124
- package/core/events/events_var_rename.ts +0 -133
- package/core/events/events_var_type_change.ts +0 -122
- package/core/events/events_viewport.ts +0 -149
- package/core/events/predicates.ts +0 -166
- package/core/events/type.ts +0 -87
- package/core/events/utils.ts +0 -455
- package/core/events/workspace_events.ts +0 -46
- package/core/extensions.ts +0 -497
- package/core/field.ts +0 -1445
- package/core/field_checkbox.ts +0 -266
- package/core/field_dropdown.ts +0 -907
- package/core/field_image.ts +0 -307
- package/core/field_input.ts +0 -826
- package/core/field_label.ts +0 -150
- package/core/field_label_serializable.ts +0 -73
- package/core/field_number.ts +0 -381
- package/core/field_registry.ts +0 -115
- package/core/field_textinput.ts +0 -125
- package/core/field_variable.ts +0 -654
- package/core/flyout_base.ts +0 -1013
- package/core/flyout_button.ts +0 -447
- package/core/flyout_horizontal.ts +0 -375
- package/core/flyout_item.ts +0 -33
- package/core/flyout_metrics_manager.ts +0 -90
- package/core/flyout_navigator.ts +0 -24
- package/core/flyout_separator.ts +0 -94
- package/core/flyout_vertical.ts +0 -354
- package/core/focus_manager.ts +0 -675
- package/core/generator.ts +0 -611
- package/core/gesture.ts +0 -1190
- package/core/grid.ts +0 -267
- package/core/icons/comment_icon.ts +0 -429
- package/core/icons/exceptions.ts +0 -23
- package/core/icons/icon.ts +0 -204
- package/core/icons/icon_types.ts +0 -32
- package/core/icons/mutator_icon.ts +0 -360
- package/core/icons/registry.ts +0 -33
- package/core/icons/warning_icon.ts +0 -226
- package/core/icons.ts +0 -24
- package/core/inject.ts +0 -332
- package/core/inputs/align.ts +0 -14
- package/core/inputs/dummy_input.ts +0 -26
- package/core/inputs/end_row_input.ts +0 -31
- package/core/inputs/input.ts +0 -317
- package/core/inputs/input_types.ts +0 -27
- package/core/inputs/statement_input.ts +0 -34
- package/core/inputs/value_input.ts +0 -30
- package/core/inputs.ts +0 -23
- package/core/insertion_marker_previewer.ts +0 -268
- package/core/interfaces/i_autohideable.ts +0 -27
- package/core/interfaces/i_bounded_element.ts +0 -31
- package/core/interfaces/i_bubble.ts +0 -64
- package/core/interfaces/i_collapsible_toolbox_item.ts +0 -33
- package/core/interfaces/i_comment_icon.ts +0 -47
- package/core/interfaces/i_component.ts +0 -19
- package/core/interfaces/i_connection_checker.ts +0 -101
- package/core/interfaces/i_connection_previewer.ts +0 -50
- package/core/interfaces/i_contextmenu.ts +0 -21
- package/core/interfaces/i_copyable.ts +0 -39
- package/core/interfaces/i_deletable.ts +0 -35
- package/core/interfaces/i_delete_area.ts +0 -28
- package/core/interfaces/i_drag_target.ts +0 -67
- package/core/interfaces/i_draggable.ts +0 -73
- package/core/interfaces/i_dragger.ts +0 -35
- package/core/interfaces/i_flyout.ts +0 -190
- package/core/interfaces/i_flyout_inflater.ts +0 -51
- package/core/interfaces/i_focusable_node.ts +0 -120
- package/core/interfaces/i_focusable_tree.ts +0 -144
- package/core/interfaces/i_has_bubble.ts +0 -37
- package/core/interfaces/i_icon.ts +0 -116
- package/core/interfaces/i_keyboard_accessible.ts +0 -22
- package/core/interfaces/i_legacy_procedure_blocks.ts +0 -51
- package/core/interfaces/i_metrics_manager.ts +0 -150
- package/core/interfaces/i_movable.ts +0 -19
- package/core/interfaces/i_navigation_policy.ts +0 -69
- package/core/interfaces/i_observable.ts +0 -28
- package/core/interfaces/i_parameter_model.ts +0 -51
- package/core/interfaces/i_paster.ts +0 -25
- package/core/interfaces/i_positionable.ts +0 -33
- package/core/interfaces/i_procedure_block.ts +0 -29
- package/core/interfaces/i_procedure_map.ts +0 -18
- package/core/interfaces/i_procedure_model.ts +0 -71
- package/core/interfaces/i_registrable.ts +0 -12
- package/core/interfaces/i_rendered_element.ts +0 -19
- package/core/interfaces/i_selectable.ts +0 -41
- package/core/interfaces/i_selectable_toolbox_item.ts +0 -63
- package/core/interfaces/i_serializable.ts +0 -32
- package/core/interfaces/i_serializer.ts +0 -51
- package/core/interfaces/i_styleable.ts +0 -26
- package/core/interfaces/i_toolbox.ts +0 -121
- package/core/interfaces/i_toolbox_item.ts +0 -83
- package/core/interfaces/i_variable_backed_parameter_model.ts +0 -23
- package/core/interfaces/i_variable_map.ts +0 -65
- package/core/interfaces/i_variable_model.ts +0 -57
- package/core/internal_constants.ts +0 -47
- package/core/keyboard_nav/block_comment_navigation_policy.ts +0 -76
- package/core/keyboard_nav/block_navigation_policy.ts +0 -213
- package/core/keyboard_nav/comment_bar_button_navigation_policy.ts +0 -88
- package/core/keyboard_nav/comment_editor_navigation_policy.ts +0 -54
- package/core/keyboard_nav/connection_navigation_policy.ts +0 -155
- package/core/keyboard_nav/field_navigation_policy.ts +0 -85
- package/core/keyboard_nav/flyout_button_navigation_policy.ts +0 -76
- package/core/keyboard_nav/flyout_navigation_policy.ts +0 -111
- package/core/keyboard_nav/flyout_separator_navigation_policy.ts +0 -53
- package/core/keyboard_nav/icon_navigation_policy.ts +0 -93
- package/core/keyboard_nav/line_cursor.ts +0 -414
- package/core/keyboard_nav/marker.ts +0 -86
- package/core/keyboard_nav/workspace_comment_navigation_policy.ts +0 -77
- package/core/keyboard_nav/workspace_navigation_policy.ts +0 -77
- package/core/keyboard_navigation_controller.ts +0 -63
- package/core/label_flyout_inflater.ts +0 -75
- package/core/layer_manager.ts +0 -229
- package/core/layers.ts +0 -17
- package/core/main.ts +0 -31
- package/core/marker_manager.ts +0 -116
- package/core/menu.ts +0 -486
- package/core/menu_separator.ts +0 -38
- package/core/menuitem.ts +0 -289
- package/core/metrics_manager.ts +0 -486
- package/core/msg.ts +0 -27
- package/core/names.ts +0 -275
- package/core/navigator.ts +0 -123
- package/core/observable_procedure_map.ts +0 -66
- package/core/options.ts +0 -377
- package/core/positionable_helpers.ts +0 -186
- package/core/procedures.ts +0 -622
- package/core/registry.ts +0 -400
- package/core/render_management.ts +0 -193
- package/core/rendered_connection.ts +0 -690
- package/core/renderers/common/block_rendering.ts +0 -122
- package/core/renderers/common/constants.ts +0 -1226
- package/core/renderers/common/drawer.ts +0 -511
- package/core/renderers/common/i_path_object.ts +0 -109
- package/core/renderers/common/info.ts +0 -768
- package/core/renderers/common/path_object.ts +0 -260
- package/core/renderers/common/renderer.ts +0 -236
- package/core/renderers/geras/constants.ts +0 -42
- package/core/renderers/geras/drawer.ts +0 -166
- package/core/renderers/geras/geras.ts +0 -31
- package/core/renderers/geras/highlight_constants.ts +0 -342
- package/core/renderers/geras/highlighter.ts +0 -312
- package/core/renderers/geras/info.ts +0 -476
- package/core/renderers/geras/measurables/inline_input.ts +0 -36
- package/core/renderers/geras/measurables/statement_input.ts +0 -35
- package/core/renderers/geras/path_object.ts +0 -121
- package/core/renderers/geras/renderer.ts +0 -127
- package/core/renderers/measurables/base.ts +0 -40
- package/core/renderers/measurables/bottom_row.ts +0 -103
- package/core/renderers/measurables/connection.ts +0 -41
- package/core/renderers/measurables/external_value_input.ts +0 -51
- package/core/renderers/measurables/field.ts +0 -48
- package/core/renderers/measurables/hat.ts +0 -32
- package/core/renderers/measurables/icon.ts +0 -40
- package/core/renderers/measurables/in_row_spacer.ts +0 -36
- package/core/renderers/measurables/inline_input.ts +0 -61
- package/core/renderers/measurables/input_connection.ts +0 -56
- package/core/renderers/measurables/input_row.ts +0 -62
- package/core/renderers/measurables/jagged_edge.ts +0 -35
- package/core/renderers/measurables/next_connection.ts +0 -41
- package/core/renderers/measurables/output_connection.ts +0 -42
- package/core/renderers/measurables/previous_connection.ts +0 -41
- package/core/renderers/measurables/round_corner.ts +0 -41
- package/core/renderers/measurables/row.ts +0 -190
- package/core/renderers/measurables/spacer_row.ts +0 -43
- package/core/renderers/measurables/square_corner.ts +0 -39
- package/core/renderers/measurables/statement_input.ts +0 -47
- package/core/renderers/measurables/top_row.ts +0 -108
- package/core/renderers/measurables/types.ts +0 -362
- package/core/renderers/thrasos/info.ts +0 -327
- package/core/renderers/thrasos/renderer.ts +0 -39
- package/core/renderers/thrasos/thrasos.ts +0 -14
- package/core/renderers/zelos/constants.ts +0 -913
- package/core/renderers/zelos/drawer.ts +0 -272
- package/core/renderers/zelos/info.ts +0 -651
- package/core/renderers/zelos/measurables/bottom_row.ts +0 -44
- package/core/renderers/zelos/measurables/inputs.ts +0 -40
- package/core/renderers/zelos/measurables/row_elements.ts +0 -29
- package/core/renderers/zelos/measurables/top_row.ts +0 -50
- package/core/renderers/zelos/path_object.ts +0 -209
- package/core/renderers/zelos/renderer.ts +0 -91
- package/core/renderers/zelos/zelos.ts +0 -31
- package/core/scrollbar.ts +0 -898
- package/core/scrollbar_pair.ts +0 -349
- package/core/separator_flyout_inflater.ts +0 -83
- package/core/serialization/blocks.ts +0 -834
- package/core/serialization/exceptions.ts +0 -112
- package/core/serialization/priorities.ts +0 -25
- package/core/serialization/procedures.ts +0 -158
- package/core/serialization/registry.ts +0 -30
- package/core/serialization/variables.ts +0 -69
- package/core/serialization/workspace_comments.ts +0 -143
- package/core/serialization/workspaces.ts +0 -94
- package/core/serialization.ts +0 -32
- package/core/shortcut_items.ts +0 -405
- package/core/shortcut_registry.ts +0 -451
- package/core/sprites.ts +0 -15
- package/core/theme/classic.ts +0 -40
- package/core/theme/themes.ts +0 -12
- package/core/theme/zelos.ts +0 -80
- package/core/theme.ts +0 -232
- package/core/theme_manager.ts +0 -192
- package/core/toast.ts +0 -219
- package/core/toolbox/category.ts +0 -746
- package/core/toolbox/collapsible_category.ts +0 -287
- package/core/toolbox/separator.ts +0 -108
- package/core/toolbox/toolbox.ts +0 -1210
- package/core/toolbox/toolbox_item.ts +0 -181
- package/core/tooltip.ts +0 -466
- package/core/touch.ts +0 -155
- package/core/trashcan.ts +0 -730
- package/core/utils/aria.ts +0 -158
- package/core/utils/array.ts +0 -24
- package/core/utils/colour.ts +0 -265
- package/core/utils/coordinate.ts +0 -129
- package/core/utils/deprecation.ts +0 -47
- package/core/utils/dom.ts +0 -356
- package/core/utils/drag.ts +0 -74
- package/core/utils/focusable_tree_traverser.ts +0 -126
- package/core/utils/idgenerator.ts +0 -70
- package/core/utils/keycodes.ts +0 -154
- package/core/utils/math.ts +0 -50
- package/core/utils/metrics.ts +0 -86
- package/core/utils/object.ts +0 -33
- package/core/utils/parsing.ts +0 -286
- package/core/utils/rect.ts +0 -142
- package/core/utils/size.ts +0 -62
- package/core/utils/string.ts +0 -289
- package/core/utils/style.ts +0 -219
- package/core/utils/svg.ts +0 -84
- package/core/utils/svg_math.ts +0 -207
- package/core/utils/svg_paths.ts +0 -133
- package/core/utils/toolbox.ts +0 -417
- package/core/utils/useragent.ts +0 -86
- package/core/utils/xml.ts +0 -165
- package/core/utils.ts +0 -59
- package/core/variable_map.ts +0 -476
- package/core/variable_model.ts +0 -150
- package/core/variables.ts +0 -931
- package/core/variables_dynamic.ts +0 -230
- package/core/widgetdiv.ts +0 -349
- package/core/workspace.ts +0 -994
- package/core/workspace_audio.ts +0 -137
- package/core/workspace_dragger.ts +0 -81
- package/core/workspace_svg.ts +0 -2954
- package/core/xml.ts +0 -1126
- package/core/zoom_controls.ts +0 -495
- package/demos/blockfactory/analytics.js +0 -195
- package/demos/blockfactory/app_controller.js +0 -726
- package/demos/blockfactory/block_definition_extractor.js +0 -742
- package/demos/blockfactory/block_exporter_controller.js +0 -311
- package/demos/blockfactory/block_exporter_tools.js +0 -212
- package/demos/blockfactory/block_exporter_view.js +0 -101
- package/demos/blockfactory/block_library_controller.js +0 -325
- package/demos/blockfactory/block_library_storage.js +0 -149
- package/demos/blockfactory/block_library_view.js +0 -178
- package/demos/blockfactory/block_option.js +0 -151
- package/demos/blockfactory/blocks.js +0 -920
- package/demos/blockfactory/cp.css +0 -46
- package/demos/blockfactory/cp.js +0 -179
- package/demos/blockfactory/factory.css +0 -586
- package/demos/blockfactory/factory.js +0 -338
- package/demos/blockfactory/factory_utils.js +0 -1036
- package/demos/blockfactory/icon.png +0 -0
- package/demos/blockfactory/index.html +0 -767
- package/demos/blockfactory/link.png +0 -0
- package/demos/blockfactory/standard_categories.js +0 -384
- package/demos/blockfactory/workspacefactory/wfactory_controller.js +0 -1332
- package/demos/blockfactory/workspacefactory/wfactory_generator.js +0 -224
- package/demos/blockfactory/workspacefactory/wfactory_init.js +0 -541
- package/demos/blockfactory/workspacefactory/wfactory_model.js +0 -548
- package/demos/blockfactory/workspacefactory/wfactory_view.js +0 -424
- package/demos/code/code.js +0 -626
- package/demos/code/icon.png +0 -0
- package/demos/code/icons.png +0 -0
- package/demos/code/index.html +0 -359
- package/demos/code/msg/ar.js +0 -24
- package/demos/code/msg/be-tarask.js +0 -24
- package/demos/code/msg/br.js +0 -24
- package/demos/code/msg/ca.js +0 -24
- package/demos/code/msg/cs.js +0 -24
- package/demos/code/msg/da.js +0 -24
- package/demos/code/msg/de.js +0 -24
- package/demos/code/msg/el.js +0 -24
- package/demos/code/msg/en.js +0 -24
- package/demos/code/msg/es.js +0 -24
- package/demos/code/msg/et.js +0 -24
- package/demos/code/msg/fa.js +0 -24
- package/demos/code/msg/fr.js +0 -24
- package/demos/code/msg/he.js +0 -24
- package/demos/code/msg/hr.js +0 -24
- package/demos/code/msg/hrx.js +0 -24
- package/demos/code/msg/hu.js +0 -24
- package/demos/code/msg/ia.js +0 -24
- package/demos/code/msg/is.js +0 -24
- package/demos/code/msg/it.js +0 -24
- package/demos/code/msg/ja.js +0 -24
- package/demos/code/msg/kab.js +0 -24
- package/demos/code/msg/ko.js +0 -24
- package/demos/code/msg/mk.js +0 -24
- package/demos/code/msg/ms.js +0 -24
- package/demos/code/msg/nb.js +0 -24
- package/demos/code/msg/nl.js +0 -24
- package/demos/code/msg/oc.js +0 -24
- package/demos/code/msg/pl.js +0 -24
- package/demos/code/msg/pms.js +0 -24
- package/demos/code/msg/pt-br.js +0 -24
- package/demos/code/msg/ro.js +0 -24
- package/demos/code/msg/ru.js +0 -24
- package/demos/code/msg/sc.js +0 -24
- package/demos/code/msg/sk.js +0 -24
- package/demos/code/msg/sr.js +0 -24
- package/demos/code/msg/sv.js +0 -24
- package/demos/code/msg/ta.js +0 -24
- package/demos/code/msg/th.js +0 -24
- package/demos/code/msg/tlh.js +0 -24
- package/demos/code/msg/tr.js +0 -24
- package/demos/code/msg/uk.js +0 -24
- package/demos/code/msg/vi.js +0 -24
- package/demos/code/msg/zh-hans.js +0 -24
- package/demos/code/msg/zh-hant.js +0 -24
- package/demos/code/style.css +0 -184
- package/demos/index.html +0 -68
- package/demos/storage/icon.png +0 -0
- package/demos/storage/index.html +0 -104
- package/eslint.config.mjs +0 -314
- package/generators/dart/dart_generator.ts +0 -321
- package/generators/dart/lists.ts +0 -525
- package/generators/dart/logic.ts +0 -157
- package/generators/dart/loops.ts +0 -217
- package/generators/dart/math.ts +0 -559
- package/generators/dart/procedures.ts +0 -138
- package/generators/dart/text.ts +0 -405
- package/generators/dart/variables.ts +0 -32
- package/generators/dart/variables_dynamic.ts +0 -17
- package/generators/dart.ts +0 -50
- package/generators/javascript/javascript_generator.ts +0 -346
- package/generators/javascript/lists.ts +0 -465
- package/generators/javascript/logic.ts +0 -155
- package/generators/javascript/loops.ts +0 -245
- package/generators/javascript/math.ts +0 -450
- package/generators/javascript/procedures.ts +0 -142
- package/generators/javascript/text.ts +0 -418
- package/generators/javascript/variables.ts +0 -32
- package/generators/javascript/variables_dynamic.ts +0 -17
- package/generators/javascript.ts +0 -46
- package/generators/lua/lists.ts +0 -445
- package/generators/lua/logic.ts +0 -144
- package/generators/lua/loops.ts +0 -192
- package/generators/lua/lua_generator.ts +0 -225
- package/generators/lua/math.ts +0 -473
- package/generators/lua/procedures.ts +0 -144
- package/generators/lua/text.ts +0 -380
- package/generators/lua/variables.ts +0 -31
- package/generators/lua/variables_dynamic.ts +0 -17
- package/generators/lua.ts +0 -44
- package/generators/php/lists.ts +0 -585
- package/generators/php/logic.ts +0 -157
- package/generators/php/loops.ts +0 -218
- package/generators/php/math.ts +0 -408
- package/generators/php/php_generator.ts +0 -320
- package/generators/php/procedures.ts +0 -159
- package/generators/php/text.ts +0 -315
- package/generators/php/variables.ts +0 -32
- package/generators/php/variables_dynamic.ts +0 -17
- package/generators/php.ts +0 -46
- package/generators/python/lists.ts +0 -398
- package/generators/python/logic.ts +0 -152
- package/generators/python/loops.ts +0 -251
- package/generators/python/math.ts +0 -434
- package/generators/python/procedures.ts +0 -159
- package/generators/python/python_generator.ts +0 -355
- package/generators/python/text.ts +0 -338
- package/generators/python/variables.ts +0 -31
- package/generators/python/variables_dynamic.ts +0 -17
- package/generators/python.ts +0 -51
- package/gulpfile.mjs +0 -100
- package/jsconfig.json +0 -7
- package/msg/json/README.md +0 -33
- package/msg/json/ab.json +0 -222
- package/msg/json/ace.json +0 -7
- package/msg/json/af.json +0 -34
- package/msg/json/am.json +0 -30
- package/msg/json/ar.json +0 -355
- package/msg/json/ast.json +0 -10
- package/msg/json/az.json +0 -334
- package/msg/json/ba.json +0 -211
- package/msg/json/bcc.json +0 -290
- package/msg/json/be-tarask.json +0 -335
- package/msg/json/be.json +0 -326
- package/msg/json/bg.json +0 -347
- package/msg/json/bn.json +0 -189
- package/msg/json/br.json +0 -334
- package/msg/json/bs.json +0 -166
- package/msg/json/ca.json +0 -341
- package/msg/json/cdo.json +0 -6
- package/msg/json/ce.json +0 -328
- package/msg/json/constants.json +0 -12
- package/msg/json/cs.json +0 -344
- package/msg/json/da.json +0 -346
- package/msg/json/de.json +0 -369
- package/msg/json/diq.json +0 -264
- package/msg/json/dtp.json +0 -198
- package/msg/json/dty.json +0 -97
- package/msg/json/ee.json +0 -160
- package/msg/json/el.json +0 -356
- package/msg/json/en-gb.json +0 -199
- package/msg/json/en.json +0 -423
- package/msg/json/eo.json +0 -337
- package/msg/json/es.json +0 -361
- package/msg/json/et.json +0 -335
- package/msg/json/eu.json +0 -219
- package/msg/json/fa.json +0 -342
- package/msg/json/fi.json +0 -350
- package/msg/json/fo.json +0 -46
- package/msg/json/fr.json +0 -374
- package/msg/json/frr.json +0 -6
- package/msg/json/gl.json +0 -338
- package/msg/json/gn.json +0 -54
- package/msg/json/gor.json +0 -87
- package/msg/json/ha.json +0 -313
- package/msg/json/hak.json +0 -17
- package/msg/json/he.json +0 -355
- package/msg/json/hi.json +0 -318
- package/msg/json/hr.json +0 -337
- package/msg/json/hrx.json +0 -287
- package/msg/json/hsb.json +0 -128
- package/msg/json/hu.json +0 -349
- package/msg/json/hy.json +0 -337
- package/msg/json/ia.json +0 -337
- package/msg/json/id.json +0 -338
- package/msg/json/ig.json +0 -323
- package/msg/json/inh.json +0 -80
- package/msg/json/is.json +0 -331
- package/msg/json/it.json +0 -346
- package/msg/json/ja.json +0 -362
- package/msg/json/ka.json +0 -14
- package/msg/json/kab.json +0 -323
- package/msg/json/kbd-cyrl.json +0 -84
- package/msg/json/km.json +0 -29
- package/msg/json/kn.json +0 -333
- package/msg/json/ko.json +0 -377
- package/msg/json/ksh.json +0 -43
- package/msg/json/ku-latn.json +0 -41
- package/msg/json/ky.json +0 -71
- package/msg/json/la.json +0 -6
- package/msg/json/lb.json +0 -156
- package/msg/json/lki.json +0 -282
- package/msg/json/lo.json +0 -92
- package/msg/json/lrc.json +0 -123
- package/msg/json/lt.json +0 -321
- package/msg/json/lv.json +0 -324
- package/msg/json/mg.json +0 -58
- package/msg/json/mk.json +0 -178
- package/msg/json/ml.json +0 -35
- package/msg/json/mnw.json +0 -90
- package/msg/json/ms.json +0 -300
- package/msg/json/my.json +0 -57
- package/msg/json/mzn.json +0 -6
- package/msg/json/nb.json +0 -331
- package/msg/json/ne.json +0 -247
- package/msg/json/nl.json +0 -358
- package/msg/json/oc.json +0 -194
- package/msg/json/olo.json +0 -37
- package/msg/json/pa.json +0 -75
- package/msg/json/pl.json +0 -358
- package/msg/json/pms.json +0 -325
- package/msg/json/ps.json +0 -50
- package/msg/json/pt-br.json +0 -371
- package/msg/json/pt.json +0 -360
- package/msg/json/qqq.json +0 -430
- package/msg/json/ro.json +0 -333
- package/msg/json/ru.json +0 -363
- package/msg/json/sc.json +0 -283
- package/msg/json/sco.json +0 -11
- package/msg/json/sd.json +0 -158
- package/msg/json/shn.json +0 -109
- package/msg/json/si.json +0 -16
- package/msg/json/sk.json +0 -339
- package/msg/json/skr-arab.json +0 -117
- package/msg/json/sl.json +0 -355
- package/msg/json/smn.json +0 -133
- package/msg/json/sq.json +0 -343
- package/msg/json/sr-latn.json +0 -324
- package/msg/json/sr.json +0 -349
- package/msg/json/sv.json +0 -350
- package/msg/json/sw.json +0 -12
- package/msg/json/synonyms.json +0 -22
- package/msg/json/ta.json +0 -306
- package/msg/json/tcy.json +0 -316
- package/msg/json/tdd.json +0 -110
- package/msg/json/te.json +0 -101
- package/msg/json/th.json +0 -333
- package/msg/json/ti.json +0 -50
- package/msg/json/tl.json +0 -149
- package/msg/json/tlh.json +0 -179
- package/msg/json/tr.json +0 -370
- package/msg/json/ug-arab.json +0 -180
- package/msg/json/uk.json +0 -346
- package/msg/json/ur.json +0 -118
- package/msg/json/uz.json +0 -36
- package/msg/json/vi.json +0 -345
- package/msg/json/xmf.json +0 -99
- package/msg/json/yo.json +0 -316
- package/msg/json/zgh.json +0 -83
- package/msg/json/zh-hans.json +0 -374
- package/msg/json/zh-hant.json +0 -362
- package/msg/messages.js +0 -1695
- package/scripts/gulpfiles/appengine_tasks.mjs +0 -189
- package/scripts/gulpfiles/build_tasks.mjs +0 -753
- package/scripts/gulpfiles/config.mjs +0 -40
- package/scripts/gulpfiles/docs_tasks.mjs +0 -146
- package/scripts/gulpfiles/git_tasks.mjs +0 -167
- package/scripts/gulpfiles/helper_tasks.mjs +0 -25
- package/scripts/gulpfiles/package_tasks.mjs +0 -257
- package/scripts/gulpfiles/release_tasks.mjs +0 -174
- package/scripts/gulpfiles/test_tasks.mjs +0 -409
- package/scripts/helpers.js +0 -74
- package/scripts/i18n/common.py +0 -233
- package/scripts/i18n/create_messages.py +0 -167
- package/scripts/i18n/dedup_json.py +0 -72
- package/scripts/i18n/js_to_json.py +0 -135
- package/scripts/i18n/tests.py +0 -46
- package/scripts/migration/renamings.json5 +0 -1599
- package/scripts/package/index.js +0 -23
- package/scripts/package/templates/umd-msg.template +0 -16
- package/scripts/package/templates/umd.template +0 -13
- package/scripts/themes/blockStyles_example.json +0 -11
- package/scripts/themes/create_blockStyles.py +0 -184
- package/scripts/tsick.js +0 -86
- package/tests/browser/.mocharc.js +0 -7
- package/tests/browser/test/basic_block_factory_test.mjs +0 -44
- package/tests/browser/test/basic_block_test.mjs +0 -38
- package/tests/browser/test/basic_playground_test.mjs +0 -461
- package/tests/browser/test/block_undo_test.mjs +0 -50
- package/tests/browser/test/clipboard_test.mjs +0 -611
- package/tests/browser/test/delete_blocks_test.mjs +0 -217
- package/tests/browser/test/extensive_test.mjs +0 -191
- package/tests/browser/test/field_edits_test.mjs +0 -61
- package/tests/browser/test/hooks.mjs +0 -23
- package/tests/browser/test/mutator_test.mjs +0 -87
- package/tests/browser/test/procedure_test.mjs +0 -109
- package/tests/browser/test/test_setup.mjs +0 -623
- package/tests/browser/test/toolbox_drag_test.mjs +0 -219
- package/tests/browser/test/workspace_comment_test.mjs +0 -220
- package/tests/compile/index.html +0 -43
- package/tests/compile/main.js +0 -53
- package/tests/compile/test_blocks.js +0 -47
- package/tests/compile/webdriver.js +0 -81
- package/tests/generators/functions.xml +0 -561
- package/tests/generators/golden/generated.dart +0 -1604
- package/tests/generators/golden/generated.js +0 -1552
- package/tests/generators/golden/generated.lua +0 -1828
- package/tests/generators/golden/generated.php +0 -1611
- package/tests/generators/golden/generated.py +0 -1407
- package/tests/generators/index.html +0 -408
- package/tests/generators/lists.xml +0 -8675
- package/tests/generators/logic.xml +0 -1019
- package/tests/generators/loops1.xml +0 -345
- package/tests/generators/loops2.xml +0 -891
- package/tests/generators/loops3.xml +0 -735
- package/tests/generators/math.xml +0 -2077
- package/tests/generators/text.xml +0 -4651
- package/tests/generators/unittest.js +0 -103
- package/tests/generators/unittest_dart.js +0 -163
- package/tests/generators/unittest_javascript.js +0 -167
- package/tests/generators/unittest_lua.js +0 -165
- package/tests/generators/unittest_php.js +0 -154
- package/tests/generators/unittest_python.js +0 -138
- package/tests/generators/variables.xml +0 -68
- package/tests/generators/webdriver.js +0 -123
- package/tests/media/200px.png +0 -0
- package/tests/media/30px.png +0 -0
- package/tests/media/50px.png +0 -0
- package/tests/media/a.png +0 -0
- package/tests/media/arrow.png +0 -0
- package/tests/media/b.png +0 -0
- package/tests/media/c.png +0 -0
- package/tests/media/d.png +0 -0
- package/tests/media/e.png +0 -0
- package/tests/media/f.png +0 -0
- package/tests/media/g.png +0 -0
- package/tests/media/h.png +0 -0
- package/tests/media/i.png +0 -0
- package/tests/media/j.png +0 -0
- package/tests/media/k.png +0 -0
- package/tests/media/l.png +0 -0
- package/tests/media/m.png +0 -0
- package/tests/migration/renamings.schema.json +0 -59
- package/tests/migration/validate-renamings.mjs +0 -63
- package/tests/mocha/.mocharc.js +0 -6
- package/tests/mocha/block_json_test.js +0 -777
- package/tests/mocha/block_test.js +0 -2949
- package/tests/mocha/blocks/lists_test.js +0 -238
- package/tests/mocha/blocks/logic_ternary_test.js +0 -320
- package/tests/mocha/blocks/loops_test.js +0 -56
- package/tests/mocha/blocks/procedures_test.js +0 -2509
- package/tests/mocha/blocks/variables_test.js +0 -345
- package/tests/mocha/clipboard_test.js +0 -263
- package/tests/mocha/comment_deserialization_test.js +0 -122
- package/tests/mocha/comment_test.js +0 -215
- package/tests/mocha/comment_view_test.js +0 -188
- package/tests/mocha/connection_checker_test.js +0 -694
- package/tests/mocha/connection_db_test.js +0 -363
- package/tests/mocha/connection_test.js +0 -3738
- package/tests/mocha/contextmenu_items_test.js +0 -653
- package/tests/mocha/contextmenu_test.js +0 -73
- package/tests/mocha/cursor_test.js +0 -922
- package/tests/mocha/dialog_test.js +0 -168
- package/tests/mocha/dropdowndiv_test.js +0 -458
- package/tests/mocha/event_block_change_test.js +0 -126
- package/tests/mocha/event_block_create_test.js +0 -109
- package/tests/mocha/event_block_delete_test.js +0 -55
- package/tests/mocha/event_block_drag_test.js +0 -36
- package/tests/mocha/event_block_field_intermediate_change_test.js +0 -67
- package/tests/mocha/event_block_move_test.js +0 -39
- package/tests/mocha/event_bubble_open_test.js +0 -42
- package/tests/mocha/event_click_test.js +0 -40
- package/tests/mocha/event_comment_change_test.js +0 -39
- package/tests/mocha/event_comment_collapse_test.js +0 -34
- package/tests/mocha/event_comment_create_test.js +0 -38
- package/tests/mocha/event_comment_delete_test.js +0 -38
- package/tests/mocha/event_comment_drag_test.js +0 -35
- package/tests/mocha/event_comment_move_test.js +0 -40
- package/tests/mocha/event_comment_resize_test.js +0 -38
- package/tests/mocha/event_selected_test.js +0 -41
- package/tests/mocha/event_test.js +0 -1668
- package/tests/mocha/event_theme_change_test.js +0 -36
- package/tests/mocha/event_toolbox_item_select_test.js +0 -64
- package/tests/mocha/event_trashcan_open_test.js +0 -36
- package/tests/mocha/event_var_create_test.js +0 -54
- package/tests/mocha/event_var_delete_test.js +0 -54
- package/tests/mocha/event_var_rename_test.js +0 -39
- package/tests/mocha/event_var_type_change_test.js +0 -43
- package/tests/mocha/event_viewport_test.js +0 -39
- package/tests/mocha/extensions_test.js +0 -613
- package/tests/mocha/field_checkbox_test.js +0 -299
- package/tests/mocha/field_colour_test.js +0 -395
- package/tests/mocha/field_dropdown_test.js +0 -328
- package/tests/mocha/field_image_test.js +0 -351
- package/tests/mocha/field_label_serializable_test.js +0 -252
- package/tests/mocha/field_label_test.js +0 -226
- package/tests/mocha/field_number_test.js +0 -505
- package/tests/mocha/field_registry_test.js +0 -115
- package/tests/mocha/field_test.js +0 -821
- package/tests/mocha/field_textinput_test.js +0 -593
- package/tests/mocha/field_variable_test.js +0 -644
- package/tests/mocha/flyout_test.js +0 -650
- package/tests/mocha/focus_manager_test.js +0 -5979
- package/tests/mocha/focusable_tree_traverser_test.js +0 -602
- package/tests/mocha/generator_test.js +0 -233
- package/tests/mocha/gesture_test.js +0 -133
- package/tests/mocha/icon_test.js +0 -431
- package/tests/mocha/index.html +0 -354
- package/tests/mocha/input_test.js +0 -296
- package/tests/mocha/insertion_marker_test.js +0 -432
- package/tests/mocha/jso_deserialization_test.js +0 -848
- package/tests/mocha/jso_serialization_test.js +0 -1068
- package/tests/mocha/json_test.js +0 -303
- package/tests/mocha/keyboard_navigation_controller_test.js +0 -37
- package/tests/mocha/layering_test.js +0 -104
- package/tests/mocha/menu_item_test.js +0 -176
- package/tests/mocha/metrics_test.js +0 -671
- package/tests/mocha/mutator_test.js +0 -87
- package/tests/mocha/names_test.js +0 -97
- package/tests/mocha/navigation_test.js +0 -876
- package/tests/mocha/old_workspace_comment_test.js +0 -256
- package/tests/mocha/procedure_map_test.js +0 -52
- package/tests/mocha/rect_test.js +0 -1668
- package/tests/mocha/registry_test.js +0 -281
- package/tests/mocha/render_management_test.js +0 -127
- package/tests/mocha/serializer_test.js +0 -2100
- package/tests/mocha/shortcut_items_test.js +0 -563
- package/tests/mocha/shortcut_registry_test.js +0 -533
- package/tests/mocha/test_helpers/block_definitions.js +0 -204
- package/tests/mocha/test_helpers/code_generation.js +0 -114
- package/tests/mocha/test_helpers/common.js +0 -106
- package/tests/mocha/test_helpers/events.js +0 -290
- package/tests/mocha/test_helpers/fields.js +0 -310
- package/tests/mocha/test_helpers/icon_mocks.js +0 -130
- package/tests/mocha/test_helpers/procedures.js +0 -304
- package/tests/mocha/test_helpers/serialization.js +0 -124
- package/tests/mocha/test_helpers/setup_teardown.js +0 -232
- package/tests/mocha/test_helpers/toolbox_definitions.js +0 -269
- package/tests/mocha/test_helpers/user_input.js +0 -62
- package/tests/mocha/test_helpers/variables.js +0 -27
- package/tests/mocha/test_helpers/warnings.js +0 -83
- package/tests/mocha/test_helpers/workspace.js +0 -1659
- package/tests/mocha/theme_test.js +0 -307
- package/tests/mocha/toast_test.js +0 -129
- package/tests/mocha/toolbox_test.js +0 -821
- package/tests/mocha/tooltip_test.js +0 -276
- package/tests/mocha/touch_test.js +0 -109
- package/tests/mocha/trashcan_test.js +0 -376
- package/tests/mocha/utils_test.js +0 -557
- package/tests/mocha/variable_map_test.js +0 -470
- package/tests/mocha/variable_model_test.js +0 -85
- package/tests/mocha/webdriver.js +0 -110
- package/tests/mocha/widget_div_test.js +0 -427
- package/tests/mocha/workspace_comment_test.js +0 -197
- package/tests/mocha/workspace_svg_test.js +0 -922
- package/tests/mocha/workspace_test.js +0 -24
- package/tests/mocha/xml_test.js +0 -893
- package/tests/mocha/zoom_controls_test.js +0 -81
- package/tests/multi_playground.html +0 -482
- package/tests/node/.mocharc.js +0 -6
- package/tests/node/run_node_test.mjs +0 -191
- package/tests/playground.html +0 -1280
- package/tests/playgrounds/advanced_playground.html +0 -188
- package/tests/playgrounds/iframe.html +0 -40
- package/tests/playgrounds/screenshot.js +0 -123
- package/tests/scripts/check_metadata.sh +0 -170
- package/tests/scripts/load.mjs +0 -140
- package/tests/scripts/setup_linux_env.sh +0 -7
- package/tests/scripts/update_metadata.sh +0 -46
- package/tests/themes/test_themes.js +0 -62
- package/tests/typescript/README.md +0 -4
- package/tests/typescript/src/field/different_user_input.ts +0 -81
- package/tests/typescript/src/generators/dart.ts +0 -24
- package/tests/typescript/src/generators/javascript.ts +0 -28
- package/tests/typescript/src/generators/lua.ts +0 -24
- package/tests/typescript/src/generators/php.ts +0 -24
- package/tests/typescript/src/generators/python.ts +0 -24
- package/tests/typescript/src/generators.ts +0 -33
- package/tests/typescript/src/msg.ts +0 -20
- package/tests/typescript/tsconfig.json +0 -20
- package/tests/xml/README.txt +0 -11
- package/tests/xml/blockly.xsd +0 -178
- package/tests/xml/invalid.xml +0 -6
- package/tests/xml/toolbox.xml +0 -311
- package/tests/xml/workspace.xml +0 -114
- package/tsconfig.json +0 -37
- package/tsdoc.json +0 -25
- package/typings/README.md +0 -5
- package/typings/templates/blockly-header.template +0 -11
- package/typings/templates/blockly-interfaces.template +0 -83
- package/typings/templates/msg.template +0 -15
- package/typings/tsconfig.json +0 -23
- /package/{scripts/package/README.md → README.md} +0 -0
- /package/{typings/blocks.d.ts → blocks.d.ts} +0 -0
- /package/{scripts/package/core-node.js → core-node.js} +0 -0
- /package/{typings/core.d.ts → core.d.ts} +0 -0
- /package/{typings/dart.d.ts → dart.d.ts} +0 -0
- /package/{typings/index.d.ts → index.d.ts} +0 -0
- /package/{typings/javascript.d.ts → javascript.d.ts} +0 -0
- /package/{typings/lua.d.ts → lua.d.ts} +0 -0
- /package/{typings/msg → msg}/ab.d.ts +0 -0
- /package/{typings/msg → msg}/ace.d.ts +0 -0
- /package/{typings/msg → msg}/af.d.ts +0 -0
- /package/{typings/msg → msg}/am.d.ts +0 -0
- /package/{typings/msg → msg}/ar.d.ts +0 -0
- /package/{typings/msg → msg}/ast.d.ts +0 -0
- /package/{typings/msg → msg}/az.d.ts +0 -0
- /package/{typings/msg → msg}/ba.d.ts +0 -0
- /package/{typings/msg → msg}/bcc.d.ts +0 -0
- /package/{typings/msg → msg}/be-tarask.d.ts +0 -0
- /package/{typings/msg → msg}/be.d.ts +0 -0
- /package/{typings/msg → msg}/bg.d.ts +0 -0
- /package/{typings/msg → msg}/bn.d.ts +0 -0
- /package/{typings/msg → msg}/br.d.ts +0 -0
- /package/{typings/msg → msg}/bs.d.ts +0 -0
- /package/{typings/msg → msg}/ca.d.ts +0 -0
- /package/{typings/msg → msg}/cdo.d.ts +0 -0
- /package/{typings/msg → msg}/ce.d.ts +0 -0
- /package/{typings/msg → msg}/cs.d.ts +0 -0
- /package/{typings/msg → msg}/da.d.ts +0 -0
- /package/{typings/msg → msg}/de.d.ts +0 -0
- /package/{typings/msg → msg}/diq.d.ts +0 -0
- /package/{typings/msg → msg}/dtp.d.ts +0 -0
- /package/{typings/msg → msg}/dty.d.ts +0 -0
- /package/{typings/msg → msg}/ee.d.ts +0 -0
- /package/{typings/msg → msg}/el.d.ts +0 -0
- /package/{typings/msg → msg}/en-gb.d.ts +0 -0
- /package/{typings/msg → msg}/en.d.ts +0 -0
- /package/{typings/msg → msg}/eo.d.ts +0 -0
- /package/{typings/msg → msg}/es.d.ts +0 -0
- /package/{typings/msg → msg}/et.d.ts +0 -0
- /package/{typings/msg → msg}/eu.d.ts +0 -0
- /package/{typings/msg → msg}/fa.d.ts +0 -0
- /package/{typings/msg → msg}/fi.d.ts +0 -0
- /package/{typings/msg → msg}/fo.d.ts +0 -0
- /package/{typings/msg → msg}/fr.d.ts +0 -0
- /package/{typings/msg → msg}/frr.d.ts +0 -0
- /package/{typings/msg → msg}/gl.d.ts +0 -0
- /package/{typings/msg → msg}/gn.d.ts +0 -0
- /package/{typings/msg → msg}/gor.d.ts +0 -0
- /package/{typings/msg → msg}/ha.d.ts +0 -0
- /package/{typings/msg → msg}/hak.d.ts +0 -0
- /package/{typings/msg → msg}/he.d.ts +0 -0
- /package/{typings/msg → msg}/hi.d.ts +0 -0
- /package/{typings/msg → msg}/hr.d.ts +0 -0
- /package/{typings/msg → msg}/hrx.d.ts +0 -0
- /package/{typings/msg → msg}/hsb.d.ts +0 -0
- /package/{typings/msg → msg}/hu.d.ts +0 -0
- /package/{typings/msg → msg}/hy.d.ts +0 -0
- /package/{typings/msg → msg}/ia.d.ts +0 -0
- /package/{typings/msg → msg}/id.d.ts +0 -0
- /package/{typings/msg → msg}/ig.d.ts +0 -0
- /package/{typings/msg → msg}/inh.d.ts +0 -0
- /package/{typings/msg → msg}/is.d.ts +0 -0
- /package/{typings/msg → msg}/it.d.ts +0 -0
- /package/{typings/msg → msg}/ja.d.ts +0 -0
- /package/{typings/msg → msg}/ka.d.ts +0 -0
- /package/{typings/msg → msg}/kab.d.ts +0 -0
- /package/{typings/msg → msg}/kbd-cyrl.d.ts +0 -0
- /package/{typings/msg → msg}/km.d.ts +0 -0
- /package/{typings/msg → msg}/kn.d.ts +0 -0
- /package/{typings/msg → msg}/ko.d.ts +0 -0
- /package/{typings/msg → msg}/ksh.d.ts +0 -0
- /package/{typings/msg → msg}/ku-latn.d.ts +0 -0
- /package/{typings/msg → msg}/ky.d.ts +0 -0
- /package/{typings/msg → msg}/la.d.ts +0 -0
- /package/{typings/msg → msg}/lb.d.ts +0 -0
- /package/{typings/msg → msg}/lki.d.ts +0 -0
- /package/{typings/msg → msg}/lo.d.ts +0 -0
- /package/{typings/msg → msg}/lrc.d.ts +0 -0
- /package/{typings/msg → msg}/lt.d.ts +0 -0
- /package/{typings/msg → msg}/lv.d.ts +0 -0
- /package/{typings/msg → msg}/mg.d.ts +0 -0
- /package/{typings/msg → msg}/mk.d.ts +0 -0
- /package/{typings/msg → msg}/ml.d.ts +0 -0
- /package/{typings/msg → msg}/mnw.d.ts +0 -0
- /package/{typings/msg → msg}/ms.d.ts +0 -0
- /package/{typings/msg → msg}/msg.d.ts +0 -0
- /package/{typings/msg → msg}/my.d.ts +0 -0
- /package/{typings/msg → msg}/mzn.d.ts +0 -0
- /package/{typings/msg → msg}/nb.d.ts +0 -0
- /package/{typings/msg → msg}/ne.d.ts +0 -0
- /package/{typings/msg → msg}/nl.d.ts +0 -0
- /package/{typings/msg → msg}/oc.d.ts +0 -0
- /package/{typings/msg → msg}/olo.d.ts +0 -0
- /package/{typings/msg → msg}/pa.d.ts +0 -0
- /package/{typings/msg → msg}/pl.d.ts +0 -0
- /package/{typings/msg → msg}/pms.d.ts +0 -0
- /package/{typings/msg → msg}/ps.d.ts +0 -0
- /package/{typings/msg → msg}/pt-br.d.ts +0 -0
- /package/{typings/msg → msg}/pt.d.ts +0 -0
- /package/{typings/msg → msg}/ro.d.ts +0 -0
- /package/{typings/msg → msg}/ru.d.ts +0 -0
- /package/{typings/msg → msg}/sc.d.ts +0 -0
- /package/{typings/msg → msg}/sco.d.ts +0 -0
- /package/{typings/msg → msg}/sd.d.ts +0 -0
- /package/{typings/msg → msg}/shn.d.ts +0 -0
- /package/{typings/msg → msg}/si.d.ts +0 -0
- /package/{typings/msg → msg}/sk.d.ts +0 -0
- /package/{typings/msg → msg}/skr-arab.d.ts +0 -0
- /package/{typings/msg → msg}/sl.d.ts +0 -0
- /package/{typings/msg → msg}/smn.d.ts +0 -0
- /package/{typings/msg → msg}/sq.d.ts +0 -0
- /package/{typings/msg → msg}/sr-latn.d.ts +0 -0
- /package/{typings/msg → msg}/sr.d.ts +0 -0
- /package/{typings/msg → msg}/sv.d.ts +0 -0
- /package/{typings/msg → msg}/sw.d.ts +0 -0
- /package/{typings/msg → msg}/ta.d.ts +0 -0
- /package/{typings/msg → msg}/tcy.d.ts +0 -0
- /package/{typings/msg → msg}/tdd.d.ts +0 -0
- /package/{typings/msg → msg}/te.d.ts +0 -0
- /package/{typings/msg → msg}/th.d.ts +0 -0
- /package/{typings/msg → msg}/ti.d.ts +0 -0
- /package/{typings/msg → msg}/tl.d.ts +0 -0
- /package/{typings/msg → msg}/tlh.d.ts +0 -0
- /package/{typings/msg → msg}/tr.d.ts +0 -0
- /package/{typings/msg → msg}/ug-arab.d.ts +0 -0
- /package/{typings/msg → msg}/uk.d.ts +0 -0
- /package/{typings/msg → msg}/ur.d.ts +0 -0
- /package/{typings/msg → msg}/uz.d.ts +0 -0
- /package/{typings/msg → msg}/vi.d.ts +0 -0
- /package/{typings/msg → msg}/xmf.d.ts +0 -0
- /package/{typings/msg → msg}/yo.d.ts +0 -0
- /package/{typings/msg → msg}/zgh.d.ts +0 -0
- /package/{typings/msg → msg}/zh-hans.d.ts +0 -0
- /package/{typings/msg → msg}/zh-hant.d.ts +0 -0
- /package/{typings/php.d.ts → php.d.ts} +0 -0
- /package/{typings/python.d.ts → python.d.ts} +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["generators/php/lists.ts","generators/php/logic.ts","generators/php/loops.ts","generators/php/math.ts","generators/php/procedures.ts","generators/php/text.ts","generators/php/variables.ts","generators/php/php_generator.ts","generators/php/variables_dynamic.ts","generators/php.ts"],"names":["lists_create_empty","block","generator","Order","FUNCTION_CALL","lists_create_with","elements","Array","itemCount_","i","valueToCode","NONE","join","lists_repeat","functionName","provideFunction_","FUNCTION_NAME_PLACEHOLDER_","element","repeatCount","lists_length","list","lists_isEmpty","lists_indexOf","argument0","argument1","MEMBER","errorIndex","indexAdjustment","workspace","options","oneBasedIndex","getFieldValue","lists_getIndex","mode","at","getAdjusted","SUBTRACTION","code","Error","lists_setIndex","where","value","ASSIGNMENT","cachedList","REFERENCE","match","listVar","nameDB_","getDistinctName","NameType","VARIABLE","xVar","lists_getSublist","where1","where2","at1","at2","length","isNumber","String","lists_sort","listCode","direction","type","lists_split","value_input","value_delim","lists_reverse","controls_if","n","branchCode","conditionCode","STATEMENT_PREFIX","injectId","statementToCode","STATEMENT_SUFFIX","prefixLines","INDENT","getInput","logic_compare","operator","OPERATORS","order","EQUALITY","RELATIONAL","logic_operation","LOGICAL_AND","LOGICAL_OR","defaultArgument","logic_negate","LOGICAL_NOT","logic_boolean","ATOMIC","logic_null","logic_ternary","value_if","CONDITIONAL","value_then","value_else","controls_repeat_ext","repeats","getField","Number","branch","addLoopTrap","loopVar","endVar","controls_whileUntil","until","controls_for","variable0","getVariableName","increment","up","step","Math","abs","startVar","incVar","controls_forEach","controls_flow_statements","xfix","loop","getSurroundLoop","suppressPrefixSuffix","math_number","number","Infinity","UNARY_NEGATION","math_arithmetic","tuple","ADDITION","MULTIPLICATION","DIVISION","POWER","math_single","arg","math_constant","CONSTANTS","math_number_property","PROPERTIES","MODULUS","dropdownProperty","prefix","suffix","inputOrder","outputOrder","numberToCheck","divisor","math_change","varName","math_on_list","func","math_modulo","math_constrain","argument2","math_random_int","math_random_float","math_atan2","procedures_defreturn","globals","usedVariables","allUsedVarModels","variable","getName","getVars","includes","push","devVarList","allDeveloperVariables","DEVELOPER_VARIABLE","globalStr","funcName","getProcedureName","xfix1","loopTrap","INFINITE_LOOP_TRAP","returnValue","xfix2","args","variables","scrub_","definitions_","procedures_callreturn","procedures_callnoreturn","forBlock","procedures_ifreturn","hasReturnValue_","text","quote_","text_join","element0","STRING_CONCAT","element1","text_append","text_length","text_isEmpty","text_indexOf","substring","text_charAt","text_getSubstring","text_changeCase","text_trim","text_print","text_prompt_ext","msg","text_count","sub","text_replace","from","to","text_reverse","variables_get","variables_set","CLONE","NEW","INCREMENT","DECREMENT","BITWISE_NOT","CAST","SUPPRESS_ERROR","INSTANCEOF","UNARY_PLUS","BITWISE_SHIFT","BITWISE_AND","BITWISE_XOR","BITWISE_OR","IF_NULL","LOGICAL_AND_WEAK","LOGICAL_XOR","LOGICAL_OR_WEAK","PhpGenerator","CodeGenerator","constructor","name","ORDER_OVERRIDES","isInitialized","key","addReservedWords","init","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","atId","delta","negate","defaultAtIndex","orderForInput","floor","$jscomp$tmp$exports$module$name","controls_ifelse","controls_repeat","math_round","math_trig","procedures_defnoreturn","text_prompt","phpGenerator","generators","lists","logic","loops","math","procedures","variablesDynamic"],"mappings":"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","file":"php_compressed.js","sourcesContent":["/**\n * @license\n * Copyright 2015 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @file Generating PHP for list blocks.\n */\n\n/**\n * Lists in PHP are known to break when non-variables are passed into blocks\n * that require a list. PHP, unlike other languages, passes arrays as reference\n * value instead of value so we are unable to support it to the extent we can\n * for the other languages.\n * For example, a ternary operator with two arrays will return the array by\n * value and that cannot be passed into any of the built-in array functions for\n * PHP (because only variables can be passed by reference).\n * ex: end(true ? list1 : list2)\n */\n\n// Former goog.module ID: Blockly.generator.lists\n\nimport type {CreateWithBlock} from '../../blocks/lists.js';\nimport type {Block} from '../../core/block.js';\nimport {NameType} from '../../core/names.js';\nimport * as stringUtils from '../../core/utils/string.js';\nimport type {PhpGenerator} from './php_generator.js';\nimport {Order} from './php_generator.js';\n\nexport function lists_create_empty(\n block: Block,\n generator: PhpGenerator,\n): [string, Order] {\n // Create an empty list.\n return ['array()', Order.FUNCTION_CALL];\n}\n\nexport function lists_create_with(\n block: Block,\n generator: PhpGenerator,\n): [string, Order] {\n // Create a list with any number of elements of any type.\n const createWithBlock = block as CreateWithBlock;\n const elements = new Array(createWithBlock.itemCount_);\n for (let i = 0; i < createWithBlock.itemCount_; i++) {\n elements[i] = generator.valueToCode(block, 'ADD' + i, Order.NONE) || 'null';\n }\n const code = 'array(' + elements.join(', ') + ')';\n return [code, Order.FUNCTION_CALL];\n}\n\nexport function lists_repeat(\n block: Block,\n generator: PhpGenerator,\n): [string, Order] {\n // Create a list with one element repeated.\n const functionName = generator.provideFunction_(\n 'lists_repeat',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}($value, $count) {\n $array = array();\n for ($index = 0; $index < $count; $index++) {\n $array[] = $value;\n }\n return $array;\n}\n`,\n );\n const element = generator.valueToCode(block, 'ITEM', Order.NONE) || 'null';\n const repeatCount = generator.valueToCode(block, 'NUM', Order.NONE) || '0';\n const code = functionName + '(' + element + ', ' + repeatCount + ')';\n return [code, Order.FUNCTION_CALL];\n}\n\nexport function lists_length(\n block: Block,\n generator: PhpGenerator,\n): [string, Order] {\n // String or array length.\n const functionName = generator.provideFunction_(\n 'length',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}($value) {\n if (is_string($value)) {\n return strlen($value);\n } else {\n return count($value);\n }\n}\n`,\n );\n const list = generator.valueToCode(block, 'VALUE', Order.NONE) || \"''\";\n return [functionName + '(' + list + ')', Order.FUNCTION_CALL];\n}\n\nexport function lists_isEmpty(\n block: Block,\n generator: PhpGenerator,\n): [string, Order] {\n // Is the string null or array empty?\n const argument0 =\n generator.valueToCode(block, 'VALUE', Order.FUNCTION_CALL) || 'array()';\n return ['empty(' + argument0 + ')', Order.FUNCTION_CALL];\n}\n\nexport function lists_indexOf(\n block: Block,\n generator: PhpGenerator,\n): [string, Order] {\n // Find an item in the list.\n const argument0 = generator.valueToCode(block, 'FIND', Order.NONE) || \"''\";\n const argument1 = generator.valueToCode(block, 'VALUE', Order.MEMBER) || '[]';\n let errorIndex = ' -1';\n let indexAdjustment = '';\n if (block.workspace.options.oneBasedIndex) {\n errorIndex = ' 0';\n indexAdjustment = ' + 1';\n }\n let functionName;\n if (block.getFieldValue('END') === 'FIRST') {\n // indexOf\n functionName = generator.provideFunction_(\n 'indexOf',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}($haystack, $needle) {\n for ($index = 0; $index < count($haystack); $index++) {\n if ($haystack[$index] == $needle) return $index${indexAdjustment};\n }\n return ${errorIndex};\n}\n`,\n );\n } else {\n // lastIndexOf\n functionName = generator.provideFunction_(\n 'lastIndexOf',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}($haystack, $needle) {\n $last = ${errorIndex};\n for ($index = 0; $index < count($haystack); $index++) {\n if ($haystack[$index] == $needle) $last = $index${indexAdjustment};\n }\n return $last;\n}\n`,\n );\n }\n\n const code = functionName + '(' + argument1 + ', ' + argument0 + ')';\n return [code, Order.FUNCTION_CALL];\n}\n\nexport function lists_getIndex(\n block: Block,\n generator: PhpGenerator,\n): [string, Order] | string {\n // Get element at index.\n const mode = block.getFieldValue('MODE') || 'GET';\n const where = block.getFieldValue('WHERE') || 'FROM_START';\n switch (where) {\n case 'FIRST':\n if (mode === 'GET') {\n const list =\n generator.valueToCode(block, 'VALUE', Order.MEMBER) || 'array()';\n const code = list + '[0]';\n return [code, Order.MEMBER];\n } else if (mode === 'GET_REMOVE') {\n const list =\n generator.valueToCode(block, 'VALUE', Order.NONE) || 'array()';\n const code = 'array_shift(' + list + ')';\n return [code, Order.FUNCTION_CALL];\n } else if (mode === 'REMOVE') {\n const list =\n generator.valueToCode(block, 'VALUE', Order.NONE) || 'array()';\n return 'array_shift(' + list + ');\\n';\n }\n break;\n case 'LAST':\n if (mode === 'GET') {\n const list =\n generator.valueToCode(block, 'VALUE', Order.NONE) || 'array()';\n const code = 'end(' + list + ')';\n return [code, Order.FUNCTION_CALL];\n } else if (mode === 'GET_REMOVE') {\n const list =\n generator.valueToCode(block, 'VALUE', Order.NONE) || 'array()';\n const code = 'array_pop(' + list + ')';\n return [code, Order.FUNCTION_CALL];\n } else if (mode === 'REMOVE') {\n const list =\n generator.valueToCode(block, 'VALUE', Order.NONE) || 'array()';\n return 'array_pop(' + list + ');\\n';\n }\n break;\n case 'FROM_START': {\n const at = generator.getAdjusted(block, 'AT');\n if (mode === 'GET') {\n const list =\n generator.valueToCode(block, 'VALUE', Order.MEMBER) || 'array()';\n const code = list + '[' + at + ']';\n return [code, Order.MEMBER];\n } else if (mode === 'GET_REMOVE') {\n const list =\n generator.valueToCode(block, 'VALUE', Order.NONE) || 'array()';\n const code = 'array_splice(' + list + ', ' + at + ', 1)[0]';\n return [code, Order.FUNCTION_CALL];\n } else if (mode === 'REMOVE') {\n const list =\n generator.valueToCode(block, 'VALUE', Order.NONE) || 'array()';\n return 'array_splice(' + list + ', ' + at + ', 1);\\n';\n }\n break;\n }\n case 'FROM_END':\n if (mode === 'GET') {\n const list =\n generator.valueToCode(block, 'VALUE', Order.NONE) || 'array()';\n const at = generator.getAdjusted(block, 'AT', 1, true);\n const code = 'array_slice(' + list + ', ' + at + ', 1)[0]';\n return [code, Order.FUNCTION_CALL];\n } else if (mode === 'GET_REMOVE' || mode === 'REMOVE') {\n const list =\n generator.valueToCode(block, 'VALUE', Order.NONE) || 'array()';\n const at = generator.getAdjusted(\n block,\n 'AT',\n 1,\n false,\n Order.SUBTRACTION,\n );\n const code =\n 'array_splice(' + list + ', count(' + list + ') - ' + at + ', 1)[0]';\n if (mode === 'GET_REMOVE') {\n return [code, Order.FUNCTION_CALL];\n } else if (mode === 'REMOVE') {\n return code + ';\\n';\n }\n }\n break;\n case 'RANDOM': {\n const list =\n generator.valueToCode(block, 'VALUE', Order.NONE) || 'array()';\n if (mode === 'GET') {\n const functionName = generator.provideFunction_(\n 'lists_get_random_item',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}($list) {\n return $list[rand(0,count($list)-1)];\n}\n`,\n );\n const code = functionName + '(' + list + ')';\n return [code, Order.FUNCTION_CALL];\n } else if (mode === 'GET_REMOVE') {\n const functionName = generator.provideFunction_(\n 'lists_get_remove_random_item',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}(&$list) {\n $x = rand(0,count($list)-1);\n unset($list[$x]);\n return array_values($list);\n}\n`,\n );\n const code = functionName + '(' + list + ')';\n return [code, Order.FUNCTION_CALL];\n } else if (mode === 'REMOVE') {\n const functionName = generator.provideFunction_(\n 'lists_remove_random_item',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}(&$list) {\n unset($list[rand(0,count($list)-1)]);\n}\n`,\n );\n return functionName + '(' + list + ');\\n';\n }\n break;\n }\n }\n throw Error('Unhandled combination (lists_getIndex).');\n}\n\nexport function lists_setIndex(block: Block, generator: PhpGenerator) {\n // Set element at index.\n // Note: Until February 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 value = generator.valueToCode(block, 'TO', Order.ASSIGNMENT) || 'null';\n // Cache non-trivial values to variables to prevent repeated look-ups.\n // Closure, which accesses and modifies 'list'.\n let cachedList: string;\n function cacheList() {\n if (cachedList.match(/^\\$\\w+$/)) {\n return '';\n }\n const listVar = generator.nameDB_!.getDistinctName(\n 'tmp_list',\n NameType.VARIABLE,\n );\n const code = listVar + ' = &' + cachedList + ';\\n';\n cachedList = listVar;\n return code;\n }\n switch (where) {\n case 'FIRST':\n if (mode === 'SET') {\n const list =\n generator.valueToCode(block, 'LIST', Order.MEMBER) || 'array()';\n return list + '[0] = ' + value + ';\\n';\n } else if (mode === 'INSERT') {\n const list =\n generator.valueToCode(block, 'LIST', Order.NONE) || 'array()';\n return 'array_unshift(' + list + ', ' + value + ');\\n';\n }\n break;\n case 'LAST': {\n const list =\n generator.valueToCode(block, 'LIST', Order.NONE) || 'array()';\n if (mode === 'SET') {\n const functionName = generator.provideFunction_(\n 'lists_set_last_item',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}(&$list, $value) {\n $list[count($list) - 1] = $value;\n}\n`,\n );\n return functionName + '(' + list + ', ' + value + ');\\n';\n } else if (mode === 'INSERT') {\n return 'array_push(' + list + ', ' + value + ');\\n';\n }\n break;\n }\n case 'FROM_START': {\n const at = generator.getAdjusted(block, 'AT');\n if (mode === 'SET') {\n const list =\n generator.valueToCode(block, 'LIST', Order.MEMBER) || 'array()';\n return list + '[' + at + '] = ' + value + ';\\n';\n } else if (mode === 'INSERT') {\n const list =\n generator.valueToCode(block, 'LIST', Order.NONE) || 'array()';\n return 'array_splice(' + list + ', ' + at + ', 0, ' + value + ');\\n';\n }\n break;\n }\n case 'FROM_END': {\n const list =\n generator.valueToCode(block, 'LIST', Order.NONE) || 'array()';\n const at = generator.getAdjusted(block, 'AT', 1);\n if (mode === 'SET') {\n const functionName = generator.provideFunction_(\n 'lists_set_from_end',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}(&$list, $at, $value) {\n $list[count($list) - $at] = $value;\n}\n`,\n );\n return functionName + '(' + list + ', ' + at + ', ' + value + ');\\n';\n } else if (mode === 'INSERT') {\n const functionName = generator.provideFunction_(\n 'lists_insert_from_end',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}(&$list, $at, $value) {\n return array_splice($list, count($list) - $at, 0, $value);\n}\n`,\n );\n return functionName + '(' + list + ', ' + at + ', ' + value + ');\\n';\n }\n break;\n }\n case 'RANDOM':\n cachedList =\n generator.valueToCode(block, 'LIST', Order.REFERENCE) || 'array()';\n let code = cacheList();\n const list = cachedList;\n const xVar = generator.nameDB_!.getDistinctName(\n 'tmp_x',\n NameType.VARIABLE,\n );\n code += xVar + ' = rand(0, count(' + list + ')-1);\\n';\n if (mode === 'SET') {\n code += list + '[' + xVar + '] = ' + value + ';\\n';\n return code;\n } else if (mode === 'INSERT') {\n code += 'array_splice(' + list + ', ' + xVar + ', 0, ' + value + ');\\n';\n return code;\n }\n break;\n }\n throw Error('Unhandled combination (lists_setIndex).');\n}\n\nexport function lists_getSublist(\n block: Block,\n generator: PhpGenerator,\n): [string, Order] {\n // Get sublist.\n const list = generator.valueToCode(block, 'LIST', Order.NONE) || 'array()';\n const where1 = block.getFieldValue('WHERE1');\n const where2 = block.getFieldValue('WHERE2');\n let code;\n if (where1 === 'FIRST' && where2 === 'LAST') {\n code = list;\n } else if (\n list.match(/^\\$\\w+$/) ||\n (where1 !== 'FROM_END' && where2 === 'FROM_START')\n ) {\n // If the list is a simple value or doesn't require a call for length, don't\n // generate a helper function.\n let at1;\n switch (where1) {\n case 'FROM_START':\n at1 = generator.getAdjusted(block, 'AT1');\n break;\n case 'FROM_END':\n at1 = generator.getAdjusted(block, 'AT1', 1, false, Order.SUBTRACTION);\n at1 = 'count(' + list + ') - ' + at1;\n break;\n case 'FIRST':\n at1 = '0';\n break;\n default:\n throw Error('Unhandled option (lists_getSublist).');\n }\n let at2;\n let length;\n switch (where2) {\n case 'FROM_START':\n at2 = generator.getAdjusted(block, 'AT2', 0, false, Order.SUBTRACTION);\n length = at2 + ' - ';\n if (\n stringUtils.isNumber(String(at1)) ||\n String(at1).match(/^\\(.+\\)$/)\n ) {\n length += at1;\n } else {\n length += '(' + at1 + ')';\n }\n length += ' + 1';\n break;\n case 'FROM_END':\n at2 = generator.getAdjusted(block, 'AT2', 0, false, Order.SUBTRACTION);\n length = 'count(' + list + ') - ' + at2 + ' - ';\n if (\n stringUtils.isNumber(String(at1)) ||\n String(at1).match(/^\\(.+\\)$/)\n ) {\n length += at1;\n } else {\n length += '(' + at1 + ')';\n }\n break;\n case 'LAST':\n length = 'count(' + list + ') - ';\n if (\n stringUtils.isNumber(String(at1)) ||\n String(at1).match(/^\\(.+\\)$/)\n ) {\n length += at1;\n } else {\n length += '(' + at1 + ')';\n }\n break;\n default:\n throw Error('Unhandled option (lists_getSublist).');\n }\n code = 'array_slice(' + list + ', ' + at1 + ', ' + length + ')';\n } else {\n const at1 = generator.getAdjusted(block, 'AT1');\n const at2 = generator.getAdjusted(block, 'AT2');\n const functionName = generator.provideFunction_(\n 'lists_get_sublist',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}($list, $where1, $at1, $where2, $at2) {\n if ($where1 == 'FROM_END') {\n $at1 = count($list) - 1 - $at1;\n } else if ($where1 == 'FIRST') {\n $at1 = 0;\n } else if ($where1 != 'FROM_START') {\n throw new Exception('Unhandled option (lists_get_sublist).');\n }\n $length = 0;\n if ($where2 == 'FROM_START') {\n $length = $at2 - $at1 + 1;\n } else if ($where2 == 'FROM_END') {\n $length = count($list) - $at1 - $at2;\n } else if ($where2 == 'LAST') {\n $length = count($list) - $at1;\n } else {\n throw new Exception('Unhandled option (lists_get_sublist).');\n }\n return array_slice($list, $at1, $length);\n}\n`,\n );\n code =\n functionName +\n '(' +\n list +\n \", '\" +\n where1 +\n \"', \" +\n at1 +\n \", '\" +\n where2 +\n \"', \" +\n at2 +\n ')';\n }\n return [code, Order.FUNCTION_CALL];\n}\n\nexport function lists_sort(\n block: Block,\n generator: PhpGenerator,\n): [string, Order] {\n // Block for sorting a list.\n const listCode =\n generator.valueToCode(block, 'LIST', Order.NONE) || 'array()';\n const direction = block.getFieldValue('DIRECTION') === '1' ? 1 : -1;\n const type = block.getFieldValue('TYPE');\n const functionName = generator.provideFunction_(\n 'lists_sort',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}($list, $type, $direction) {\n $sortCmpFuncs = array(\n 'NUMERIC' => 'strnatcasecmp',\n 'TEXT' => 'strcmp',\n 'IGNORE_CASE' => 'strcasecmp'\n );\n $sortCmp = $sortCmpFuncs[$type];\n $list2 = $list;\n usort($list2, $sortCmp);\n if ($direction == -1) {\n $list2 = array_reverse($list2);\n }\n return $list2;\n}\n`,\n );\n const sortCode =\n functionName + '(' + listCode + ', \"' + type + '\", ' + direction + ')';\n return [sortCode, Order.FUNCTION_CALL];\n}\n\nexport function lists_split(\n block: Block,\n generator: PhpGenerator,\n): [string, Order] {\n // Block for splitting text into a list, or joining a list into text.\n let value_input = generator.valueToCode(block, 'INPUT', Order.NONE);\n const value_delim = generator.valueToCode(block, 'DELIM', Order.NONE) || \"''\";\n const mode = block.getFieldValue('MODE');\n let functionName;\n if (mode === 'SPLIT') {\n if (!value_input) {\n value_input = \"''\";\n }\n functionName = 'explode';\n } else if (mode === 'JOIN') {\n if (!value_input) {\n value_input = 'array()';\n }\n functionName = 'implode';\n } else {\n throw Error('Unknown mode: ' + mode);\n }\n const code = functionName + '(' + value_delim + ', ' + value_input + ')';\n return [code, Order.FUNCTION_CALL];\n}\n\nexport function lists_reverse(\n block: Block,\n generator: PhpGenerator,\n): [string, Order] {\n // Block for reversing a list.\n const list = generator.valueToCode(block, 'LIST', Order.NONE) || '[]';\n const code = 'array_reverse(' + list + ')';\n return [code, Order.FUNCTION_CALL];\n}\n","/**\n * @license\n * Copyright 2015 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @file Generating PHP for logic blocks.\n */\n\n// Former goog.module ID: Blockly.PHP.logic\n\nimport type {Block} from '../../core/block.js';\nimport type {PhpGenerator} from './php_generator.js';\nimport {Order} from './php_generator.js';\n\nexport function controls_if(block: Block, generator: PhpGenerator) {\n // If/elseif/else condition.\n let n = 0;\n let code = '',\n branchCode,\n conditionCode;\n if (generator.STATEMENT_PREFIX) {\n // Automatic prefix insertion is switched off for this block. Add manually.\n code += generator.injectId(generator.STATEMENT_PREFIX, block);\n }\n do {\n conditionCode =\n generator.valueToCode(block, 'IF' + n, Order.NONE) || 'false';\n branchCode = generator.statementToCode(block, 'DO' + n);\n if (generator.STATEMENT_SUFFIX) {\n branchCode =\n generator.prefixLines(\n generator.injectId(generator.STATEMENT_SUFFIX, block),\n generator.INDENT,\n ) + branchCode;\n }\n code +=\n (n > 0 ? ' else ' : '') +\n 'if (' +\n conditionCode +\n ') {\\n' +\n branchCode +\n '}';\n n++;\n } while (block.getInput('IF' + n));\n\n if (block.getInput('ELSE') || generator.STATEMENT_SUFFIX) {\n branchCode = block.getInput('ELSE')\n ? generator.statementToCode(block, 'ELSE')\n : '';\n if (generator.STATEMENT_SUFFIX) {\n branchCode =\n generator.prefixLines(\n generator.injectId(generator.STATEMENT_SUFFIX, block),\n generator.INDENT,\n ) + branchCode;\n }\n code += ' else {\\n' + branchCode + '}';\n }\n return code + '\\n';\n}\n\nexport const controls_ifelse = controls_if;\n\nexport function logic_compare(\n block: Block,\n generator: PhpGenerator,\n): [string, Order] {\n // Comparison operator.\n const OPERATORS = {\n 'EQ': '==',\n 'NEQ': '!=',\n 'LT': '<',\n 'LTE': '<=',\n 'GT': '>',\n 'GTE': '>=',\n };\n type OperatorOption = keyof typeof OPERATORS;\n const operator = OPERATORS[block.getFieldValue('OP') as OperatorOption];\n const order =\n operator === '==' || operator === '!=' ? Order.EQUALITY : Order.RELATIONAL;\n const argument0 = generator.valueToCode(block, 'A', order) || '0';\n const argument1 = generator.valueToCode(block, 'B', order) || '0';\n const code = argument0 + ' ' + operator + ' ' + argument1;\n return [code, order];\n}\n\nexport function logic_operation(\n block: Block,\n generator: PhpGenerator,\n): [string, Order] {\n // Operations 'and', 'or'.\n const operator = block.getFieldValue('OP') === 'AND' ? '&&' : '||';\n const order = operator === '&&' ? Order.LOGICAL_AND : Order.LOGICAL_OR;\n let argument0 = generator.valueToCode(block, 'A', order);\n let argument1 = generator.valueToCode(block, 'B', order);\n if (!argument0 && !argument1) {\n // If there are no arguments, then the return value is false.\n argument0 = 'false';\n argument1 = 'false';\n } else {\n // Single missing arguments have no effect on the return value.\n const defaultArgument = operator === '&&' ? 'true' : 'false';\n if (!argument0) {\n argument0 = defaultArgument;\n }\n if (!argument1) {\n argument1 = defaultArgument;\n }\n }\n const code = argument0 + ' ' + operator + ' ' + argument1;\n return [code, order];\n}\n\nexport function logic_negate(\n block: Block,\n generator: PhpGenerator,\n): [string, Order] {\n // Negation.\n const order = Order.LOGICAL_NOT;\n const argument0 = generator.valueToCode(block, 'BOOL', order) || 'true';\n const code = '!' + argument0;\n return [code, order];\n}\n\nexport function logic_boolean(\n block: Block,\n generator: PhpGenerator,\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: PhpGenerator,\n): [string, Order] {\n // Null data type.\n return ['null', Order.ATOMIC];\n}\n\nexport function logic_ternary(\n block: Block,\n generator: PhpGenerator,\n): [string, Order] {\n // Ternary operator.\n const value_if =\n generator.valueToCode(block, 'IF', Order.CONDITIONAL) || 'false';\n const value_then =\n generator.valueToCode(block, 'THEN', Order.CONDITIONAL) || 'null';\n const value_else =\n generator.valueToCode(block, 'ELSE', Order.CONDITIONAL) || 'null';\n const code = value_if + ' ? ' + value_then + ' : ' + value_else;\n return [code, Order.CONDITIONAL];\n}\n","/**\n * @license\n * Copyright 2015 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @file Generating PHP for loop blocks.\n */\n\n// Former goog.module ID: Blockly.PHP.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 {PhpGenerator} from './php_generator.js';\nimport {Order} from './php_generator.js';\n\nexport function controls_repeat_ext(block: Block, generator: PhpGenerator) {\n // Repeat n times.\n let repeats;\n if (block.getField('TIMES')) {\n // Internal number.\n repeats = String(Number(block.getFieldValue('TIMES')));\n } else {\n // External number.\n repeats = generator.valueToCode(block, 'TIMES', Order.ASSIGNMENT) || '0';\n }\n let branch = generator.statementToCode(block, 'DO');\n branch = generator.addLoopTrap(branch, block);\n let code = '';\n const loopVar = generator.nameDB_!.getDistinctName(\n 'count',\n NameType.VARIABLE,\n );\n let endVar = repeats;\n if (!repeats.match(/^\\w+$/) && !stringUtils.isNumber(repeats)) {\n endVar = generator.nameDB_!.getDistinctName(\n 'repeat_end',\n NameType.VARIABLE,\n );\n code += endVar + ' = ' + repeats + ';\\n';\n }\n code +=\n 'for (' +\n loopVar +\n ' = 0; ' +\n loopVar +\n ' < ' +\n endVar +\n '; ' +\n loopVar +\n '++) {\\n' +\n branch +\n '}\\n';\n return code;\n}\n\nexport const controls_repeat = controls_repeat_ext;\n\nexport function controls_whileUntil(block: Block, generator: PhpGenerator) {\n // Do while/until loop.\n const until = block.getFieldValue('MODE') === 'UNTIL';\n let argument0 =\n generator.valueToCode(\n block,\n 'BOOL',\n until ? Order.LOGICAL_NOT : Order.NONE,\n ) || 'false';\n let branch = generator.statementToCode(block, 'DO');\n branch = generator.addLoopTrap(branch, block);\n if (until) {\n argument0 = '!' + argument0;\n }\n return 'while (' + argument0 + ') {\\n' + branch + '}\\n';\n}\n\nexport function controls_for(block: Block, generator: PhpGenerator) {\n // For loop.\n const variable0 = generator.getVariableName(block.getFieldValue('VAR'));\n const argument0 =\n generator.valueToCode(block, 'FROM', Order.ASSIGNMENT) || '0';\n const argument1 = generator.valueToCode(block, 'TO', Order.ASSIGNMENT) || '0';\n const increment = generator.valueToCode(block, 'BY', Order.ASSIGNMENT) || '1';\n let branch = generator.statementToCode(block, 'DO');\n branch = generator.addLoopTrap(branch, block);\n let code;\n if (\n stringUtils.isNumber(argument0) &&\n stringUtils.isNumber(argument1) &&\n stringUtils.isNumber(increment)\n ) {\n // All arguments are simple numbers.\n const up = Number(argument0) <= Number(argument1);\n code =\n 'for (' +\n variable0 +\n ' = ' +\n argument0 +\n '; ' +\n variable0 +\n (up ? ' <= ' : ' >= ') +\n argument1 +\n '; ' +\n variable0;\n const step = Math.abs(Number(increment));\n if (step === 1) {\n code += up ? '++' : '--';\n } else {\n code += (up ? ' += ' : ' -= ') + step;\n }\n code += ') {\\n' + branch + '}\\n';\n } else {\n code = '';\n // Cache non-trivial values to variables to prevent repeated look-ups.\n let startVar = argument0;\n if (!argument0.match(/^\\w+$/) && !stringUtils.isNumber(argument0)) {\n startVar = generator.nameDB_!.getDistinctName(\n variable0 + '_start',\n NameType.VARIABLE,\n );\n code += startVar + ' = ' + argument0 + ';\\n';\n }\n let endVar = argument1;\n if (!argument1.match(/^\\w+$/) && !stringUtils.isNumber(argument1)) {\n endVar = generator.nameDB_!.getDistinctName(\n variable0 + '_end',\n NameType.VARIABLE,\n );\n code += endVar + ' = ' + argument1 + ';\\n';\n }\n // Determine loop direction at start, in case one of the bounds\n // changes during loop execution.\n const incVar = generator.nameDB_!.getDistinctName(\n variable0 + '_inc',\n NameType.VARIABLE,\n );\n code += incVar + ' = ';\n if (stringUtils.isNumber(increment)) {\n code += Math.abs(Number(increment)) + ';\\n';\n } else {\n code += 'abs(' + increment + ');\\n';\n }\n code += 'if (' + startVar + ' > ' + endVar + ') {\\n';\n code += generator.INDENT + incVar + ' = -' + incVar + ';\\n';\n code += '}\\n';\n code +=\n 'for (' +\n variable0 +\n ' = ' +\n startVar +\n '; ' +\n incVar +\n ' >= 0 ? ' +\n variable0 +\n ' <= ' +\n endVar +\n ' : ' +\n variable0 +\n ' >= ' +\n endVar +\n '; ' +\n variable0 +\n ' += ' +\n incVar +\n ') {\\n' +\n branch +\n '}\\n';\n }\n return code;\n}\n\nexport function controls_forEach(block: Block, generator: PhpGenerator) {\n // For each loop.\n const variable0 = generator.getVariableName(block.getFieldValue('VAR'));\n const argument0 =\n generator.valueToCode(block, 'LIST', Order.ASSIGNMENT) || '[]';\n let branch = generator.statementToCode(block, 'DO');\n branch = generator.addLoopTrap(branch, block);\n let code = '';\n code +=\n 'foreach (' + argument0 + ' as ' + variable0 + ') {\\n' + branch + '}\\n';\n return code;\n}\n\nexport function controls_flow_statements(\n block: Block,\n generator: PhpGenerator,\n) {\n // Flow statements: continue, break.\n let xfix = '';\n if (generator.STATEMENT_PREFIX) {\n // Automatic prefix insertion is switched off for this block. Add manually.\n xfix += generator.injectId(generator.STATEMENT_PREFIX, block);\n }\n if (generator.STATEMENT_SUFFIX) {\n // Inject any statement suffix here since the regular one at the end\n // will not get executed if the break/continue is triggered.\n xfix += generator.injectId(generator.STATEMENT_SUFFIX, block);\n }\n if (generator.STATEMENT_PREFIX) {\n const loop = (block as ControlFlowInLoopBlock).getSurroundLoop();\n if (loop && !loop.suppressPrefixSuffix) {\n // Inject loop's statement prefix here since the regular one at the end\n // of the loop will not get executed if 'continue' is triggered.\n // In the case of 'break', a prefix is needed due to the loop's suffix.\n xfix += generator.injectId(generator.STATEMENT_PREFIX, loop);\n }\n }\n switch (block.getFieldValue('FLOW')) {\n case 'BREAK':\n return xfix + 'break;\\n';\n case 'CONTINUE':\n return xfix + 'continue;\\n';\n }\n throw Error('Unknown flow statement.');\n}\n","/**\n * @license\n * Copyright 2015 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @file Generating PHP for math blocks.\n */\n\n// Former goog.module ID: Blockly.PHP.math\n\nimport type {Block} from '../../core/block.js';\nimport type {PhpGenerator} from './php_generator.js';\nimport {Order} from './php_generator.js';\n\nexport function math_number(\n block: Block,\n generator: PhpGenerator,\n): [string, Order] {\n // Numeric value.\n let number = Number(block.getFieldValue('NUM'));\n if (number === Infinity) {\n return ['INF', Order.ATOMIC];\n } else if (number === -Infinity) {\n return ['-INF', Order.UNARY_NEGATION];\n }\n return [String(number), number >= 0 ? Order.ATOMIC : Order.UNARY_NEGATION];\n}\n\nexport function math_arithmetic(\n block: Block,\n generator: PhpGenerator,\n): [string, Order] {\n // Basic arithmetic operators, and power.\n const OPERATORS: Record<string, [string, Order]> = {\n 'ADD': [' + ', Order.ADDITION],\n 'MINUS': [' - ', Order.SUBTRACTION],\n 'MULTIPLY': [' * ', Order.MULTIPLICATION],\n 'DIVIDE': [' / ', Order.DIVISION],\n 'POWER': [' ** ', Order.POWER],\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: PhpGenerator,\n): [string, Order] {\n // Math operators with single operand.\n const operator = block.getFieldValue('OP');\n let code;\n let arg;\n if (operator === 'NEG') {\n // Negation is a special case given its different operator precedence.\n arg = generator.valueToCode(block, 'NUM', Order.UNARY_NEGATION) || '0';\n if (arg[0] === '-') {\n // --3 is not legal in JS.\n arg = ' ' + arg;\n }\n code = '-' + arg;\n return [code, Order.UNARY_NEGATION];\n }\n if (operator === 'SIN' || operator === 'COS' || operator === 'TAN') {\n arg = generator.valueToCode(block, 'NUM', Order.DIVISION) || '0';\n } else {\n arg = generator.valueToCode(block, 'NUM', Order.NONE) || '0';\n }\n // First, handle cases which generate values that don't need parentheses\n // wrapping the code.\n switch (operator) {\n case 'ABS':\n code = 'abs(' + arg + ')';\n break;\n case 'ROOT':\n code = 'sqrt(' + arg + ')';\n break;\n case 'LN':\n code = 'log(' + arg + ')';\n break;\n case 'EXP':\n code = 'exp(' + arg + ')';\n break;\n case 'POW10':\n code = 'pow(10,' + arg + ')';\n break;\n case 'ROUND':\n code = 'round(' + arg + ')';\n break;\n case 'ROUNDUP':\n code = 'ceil(' + arg + ')';\n break;\n case 'ROUNDDOWN':\n code = 'floor(' + arg + ')';\n break;\n case 'SIN':\n code = 'sin(' + arg + ' / 180 * pi())';\n break;\n case 'COS':\n code = 'cos(' + arg + ' / 180 * pi())';\n break;\n case 'TAN':\n code = 'tan(' + arg + ' / 180 * pi())';\n break;\n }\n if (code) {\n return [code, Order.FUNCTION_CALL];\n }\n // Second, handle cases which generate values that may need parentheses\n // wrapping the code.\n switch (operator) {\n case 'LOG10':\n code = 'log(' + arg + ') / log(10)';\n break;\n case 'ASIN':\n code = 'asin(' + arg + ') / pi() * 180';\n break;\n case 'ACOS':\n code = 'acos(' + arg + ') / pi() * 180';\n break;\n case 'ATAN':\n code = 'atan(' + arg + ') / pi() * 180';\n break;\n default:\n throw Error('Unknown math operator: ' + operator);\n }\n return [code, Order.DIVISION];\n}\n\nexport function math_constant(\n block: Block,\n generator: PhpGenerator,\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': ['M_PI', Order.ATOMIC],\n 'E': ['M_E', Order.ATOMIC],\n 'GOLDEN_RATIO': ['(1 + sqrt(5)) / 2', Order.DIVISION],\n 'SQRT2': ['M_SQRT2', Order.ATOMIC],\n 'SQRT1_2': ['M_SQRT1_2', Order.ATOMIC],\n 'INFINITY': ['INF', Order.ATOMIC],\n };\n type ConstantOption = keyof typeof CONSTANTS;\n return CONSTANTS[block.getFieldValue('CONSTANT') as ConstantOption];\n}\n\nexport function math_number_property(\n block: Block,\n generator: PhpGenerator,\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<\n string,\n [string, string, Order, Order] | [null, null, Order, Order]\n > = {\n 'EVEN': ['', ' % 2 == 0', Order.MODULUS, Order.EQUALITY],\n 'ODD': ['', ' % 2 == 1', Order.MODULUS, Order.EQUALITY],\n 'WHOLE': ['is_int(', ')', Order.NONE, Order.FUNCTION_CALL],\n 'POSITIVE': ['', ' > 0', Order.RELATIONAL, Order.RELATIONAL],\n 'NEGATIVE': ['', ' < 0', Order.RELATIONAL, Order.RELATIONAL],\n 'DIVISIBLE_BY': [null, null, Order.MODULUS, Order.EQUALITY],\n 'PRIME': [null, null, Order.NONE, Order.FUNCTION_CALL],\n };\n type PropertyOption = keyof typeof PROPERTIES;\n const dropdownProperty = block.getFieldValue('PROPERTY') as PropertyOption;\n const [prefix, suffix, inputOrder, outputOrder] =\n 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 || $n == 3) {\n return true;\n }\n // False if n is NaN, negative, is 1, or not whole.\n // And false if n is divisible by 2 or 3.\n if (!is_numeric($n) || $n <= 1 || $n % 1 != 0 || $n % 2 == 0 || $n % 3 == 0) {\n return false;\n }\n // Check all the numbers of form 6k +/- 1, up to sqrt(n).\n for ($x = 6; $x <= sqrt($n) + 1; $x += 6) {\n if ($n % ($x - 1) == 0 || $n % ($x + 1) == 0) {\n return false;\n }\n }\n return true;\n}\n`,\n );\n code = functionName + '(' + numberToCheck + ')';\n } else if (dropdownProperty === 'DIVISIBLE_BY') {\n const divisor =\n generator.valueToCode(block, 'DIVISOR', Order.MODULUS) || '0';\n if (divisor === '0') {\n return ['false', Order.ATOMIC];\n }\n code = numberToCheck + ' % ' + divisor + ' == 0';\n } else {\n code = prefix + numberToCheck + suffix;\n }\n return [code, outputOrder];\n}\n\nexport function math_change(block: Block, generator: PhpGenerator) {\n // Add to a variable in place.\n const argument0 =\n generator.valueToCode(block, 'DELTA', Order.ADDITION) || '0';\n const varName = generator.getVariableName(block.getFieldValue('VAR'));\n return 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: PhpGenerator,\n): [string, Order] {\n // Math functions for lists.\n const func = block.getFieldValue('OP');\n let list;\n let code;\n switch (func) {\n case 'SUM':\n list =\n generator.valueToCode(block, 'LIST', Order.FUNCTION_CALL) || 'array()';\n code = 'array_sum(' + list + ')';\n break;\n case 'MIN':\n list =\n generator.valueToCode(block, 'LIST', Order.FUNCTION_CALL) || 'array()';\n code = 'min(' + list + ')';\n break;\n case 'MAX':\n list =\n generator.valueToCode(block, 'LIST', Order.FUNCTION_CALL) || 'array()';\n code = 'max(' + list + ')';\n break;\n case 'AVERAGE': {\n const functionName = generator.provideFunction_(\n 'math_mean',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}($myList) {\n return array_sum($myList) / count($myList);\n}\n`,\n );\n list = generator.valueToCode(block, 'LIST', Order.NONE) || 'array()';\n code = functionName + '(' + list + ')';\n break;\n }\n case 'MEDIAN': {\n const functionName = generator.provideFunction_(\n 'math_median',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}($arr) {\n sort($arr,SORT_NUMERIC);\n return (count($arr) % 2) ? $arr[floor(count($arr) / 2)] :\n ($arr[floor(count($arr) / 2)] + $arr[floor(count($arr) / 2) - 1]) / 2;\n}\n`,\n );\n list = generator.valueToCode(block, 'LIST', Order.NONE) || '[]';\n code = functionName + '(' + list + ')';\n break;\n }\n case 'MODE': {\n // As a list of numbers can contain more than one mode,\n // the returned result is provided as an array.\n // Mode of [3, 'x', 'x', 1, 1, 2, '3'] -> ['x', 1].\n const functionName = generator.provideFunction_(\n 'math_modes',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}($values) {\n if (empty($values)) return array();\n $counts = array_count_values($values);\n arsort($counts); // Sort counts in descending order\n $modes = array_keys($counts, current($counts), true);\n return $modes;\n}\n`,\n );\n list = generator.valueToCode(block, 'LIST', Order.NONE) || '[]';\n code = functionName + '(' + list + ')';\n break;\n }\n case 'STD_DEV': {\n const functionName = generator.provideFunction_(\n 'math_standard_deviation',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}($numbers) {\n $n = count($numbers);\n if (!$n) return null;\n $mean = array_sum($numbers) / count($numbers);\n foreach($numbers as $key => $num) $devs[$key] = pow($num - $mean, 2);\n return sqrt(array_sum($devs) / (count($devs) - 1));\n}\n`,\n );\n list = generator.valueToCode(block, 'LIST', Order.NONE) || '[]';\n code = functionName + '(' + list + ')';\n break;\n }\n case 'RANDOM': {\n const functionName = generator.provideFunction_(\n 'math_random_list',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}($list) {\n $x = rand(0, count($list)-1);\n return $list[$x];\n}\n`,\n );\n list = generator.valueToCode(block, 'LIST', Order.NONE) || '[]';\n code = functionName + '(' + list + ')';\n break;\n }\n default:\n throw Error('Unknown operator: ' + func);\n }\n return [code, Order.FUNCTION_CALL];\n}\n\nexport function math_modulo(\n block: Block,\n generator: PhpGenerator,\n): [string, Order] {\n // Remainder computation.\n const argument0 =\n generator.valueToCode(block, 'DIVIDEND', Order.MODULUS) || '0';\n const argument1 =\n generator.valueToCode(block, 'DIVISOR', Order.MODULUS) || '0';\n const code = argument0 + ' % ' + argument1;\n return [code, Order.MODULUS];\n}\n\nexport function math_constrain(\n block: Block,\n generator: PhpGenerator,\n): [string, Order] {\n // Constrain a number between two limits.\n const argument0 = generator.valueToCode(block, 'VALUE', Order.NONE) || '0';\n const argument1 = generator.valueToCode(block, 'LOW', Order.NONE) || '0';\n const argument2 =\n generator.valueToCode(block, 'HIGH', Order.NONE) || 'Infinity';\n const code =\n 'min(max(' + argument0 + ', ' + argument1 + '), ' + argument2 + ')';\n return [code, Order.FUNCTION_CALL];\n}\n\nexport function math_random_int(\n block: Block,\n generator: PhpGenerator,\n): [string, Order] {\n // Random integer between [X] and [Y].\n const argument0 = generator.valueToCode(block, 'FROM', Order.NONE) || '0';\n const argument1 = generator.valueToCode(block, 'TO', Order.NONE) || '0';\n const functionName = generator.provideFunction_(\n 'math_random_int',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}($a, $b) {\n if ($a > $b) {\n return rand($b, $a);\n }\n return rand($a, $b);\n}\n`,\n );\n const code = functionName + '(' + argument0 + ', ' + argument1 + ')';\n return [code, Order.FUNCTION_CALL];\n}\n\nexport function math_random_float(\n block: Block,\n generator: PhpGenerator,\n): [string, Order] {\n // Random fraction between 0 and 1.\n return ['(float)rand()/(float)getrandmax()', Order.FUNCTION_CALL];\n}\n\nexport function math_atan2(\n block: Block,\n generator: PhpGenerator,\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 'atan2(' + argument1 + ', ' + argument0 + ') / pi() * 180',\n Order.DIVISION,\n ];\n}\n","/**\n * @license\n * Copyright 2015 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @file Generating PHP for procedure blocks.\n */\n\n// Former goog.module ID: Blockly.PHP.procedures\n\nimport type {IfReturnBlock} from '../../blocks/procedures.js';\nimport type {Block} from '../../core/block.js';\nimport {NameType} from '../../core/names.js';\nimport * as Variables from '../../core/variables.js';\nimport type {PhpGenerator} from './php_generator.js';\nimport {Order} from './php_generator.js';\n\nexport function procedures_defreturn(block: Block, generator: PhpGenerator) {\n // Define a procedure with a return value.\n // First, add a 'global' statement for every variable that is not shadowed by\n // a local parameter.\n const globals = [];\n const workspace = block.workspace;\n const usedVariables = Variables.allUsedVarModels(workspace) || [];\n for (const variable of usedVariables) {\n const varName = variable.getName();\n // getVars returns parameter names, not ids, for procedure blocks\n if (!block.getVars().includes(varName)) {\n globals.push(generator.getVariableName(varName));\n }\n }\n // Add developer variables.\n const devVarList = Variables.allDeveloperVariables(workspace);\n for (let i = 0; i < devVarList.length; i++) {\n globals.push(\n generator.nameDB_!.getName(devVarList[i], NameType.DEVELOPER_VARIABLE),\n );\n }\n const globalStr = globals.length\n ? generator.INDENT + 'global ' + globals.join(', ') + ';\\n'\n : '';\n\n const funcName = generator.getProcedureName(block.getFieldValue('NAME'));\n let xfix1 = '';\n if (generator.STATEMENT_PREFIX) {\n xfix1 += generator.injectId(generator.STATEMENT_PREFIX, block);\n }\n if (generator.STATEMENT_SUFFIX) {\n xfix1 += generator.injectId(generator.STATEMENT_SUFFIX, block);\n }\n if (xfix1) {\n xfix1 = generator.prefixLines(xfix1, generator.INDENT);\n }\n let loopTrap = '';\n if (generator.INFINITE_LOOP_TRAP) {\n loopTrap = generator.prefixLines(\n generator.injectId(generator.INFINITE_LOOP_TRAP, block),\n generator.INDENT,\n );\n }\n let branch = '';\n if (block.getInput('STACK')) {\n // The 'procedures_defreturn' block might not have a STACK input.\n branch = generator.statementToCode(block, 'STACK');\n }\n let returnValue = '';\n if (block.getInput('RETURN')) {\n // The 'procedures_defnoreturn' block (which shares this code)\n // does not have a RETURN input.\n returnValue = generator.valueToCode(block, 'RETURN', Order.NONE) || '';\n }\n let xfix2 = '';\n if (branch && returnValue) {\n // After executing the function body, revisit this block for the return.\n xfix2 = xfix1;\n }\n if (returnValue) {\n returnValue = generator.INDENT + 'return ' + returnValue + ';\\n';\n }\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 globalStr +\n xfix1 +\n loopTrap +\n branch +\n xfix2 +\n returnValue +\n '}';\n code = generator.scrub_(block, code);\n // Add % so as not to collide with helper functions in definitions list.\n // TODO(#7600): find better approach than casting to any to override\n // CodeGenerator declaring .definitions protected.\n (generator as AnyDuringMigration).definitions_['%' + funcName] = code;\n return null;\n}\n\n// Defining a procedure without a return value uses the same generator as\n// a procedure with a return value.\nexport const procedures_defnoreturn = procedures_defreturn;\n\nexport function procedures_callreturn(\n block: Block,\n generator: PhpGenerator,\n): [string, Order] {\n // Call a procedure with a return value.\n const funcName = generator.getProcedureName(block.getFieldValue('NAME'));\n const args = [];\n const variables = block.getVars();\n for (let i = 0; i < variables.length; i++) {\n args[i] = generator.valueToCode(block, 'ARG' + i, Order.NONE) || 'null';\n }\n const code = funcName + '(' + args.join(', ') + ')';\n return [code, Order.FUNCTION_CALL];\n}\n\nexport function procedures_callnoreturn(block: Block, generator: PhpGenerator) {\n // Call a procedure with no return value.\n // Generated code is for a function call as a statement is the same as a\n // function call as a value, with the addition of line ending.\n const tuple = generator.forBlock['procedures_callreturn'](\n block,\n generator,\n ) as [string, Order];\n return tuple[0] + ';\\n';\n}\n\nexport function procedures_ifreturn(block: Block, generator: PhpGenerator) {\n // Conditionally return value from a procedure.\n const condition =\n generator.valueToCode(block, 'CONDITION', Order.NONE) || 'false';\n let code = 'if (' + condition + ') {\\n';\n if (generator.STATEMENT_SUFFIX) {\n // Inject any statement suffix here since the regular one at the end\n // will not get executed if the return is triggered.\n code += generator.prefixLines(\n generator.injectId(generator.STATEMENT_SUFFIX, block),\n generator.INDENT,\n );\n }\n if ((block as IfReturnBlock).hasReturnValue_) {\n const value = generator.valueToCode(block, 'VALUE', Order.NONE) || 'null';\n code += generator.INDENT + 'return ' + value + ';\\n';\n } else {\n code += generator.INDENT + 'return;\\n';\n }\n code += '}\\n';\n return code;\n}\n","/**\n * @license\n * Copyright 2015 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @file Generating PHP for text blocks.\n */\n\n// Former goog.module ID: Blockly.PHP.texts\n\nimport type {JoinMutatorBlock} from '../../blocks/text.js';\nimport type {Block} from '../../core/block.js';\nimport type {PhpGenerator} from './php_generator.js';\nimport {Order} from './php_generator.js';\n\nexport function text(block: Block, generator: PhpGenerator): [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: PhpGenerator,\n): [string, Order] {\n // Create a string made up of any number of elements of any type.\n const joinBlock = block as JoinMutatorBlock;\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 = element;\n return [code, Order.NONE];\n } else if (joinBlock.itemCount_ === 2) {\n const element0 =\n generator.valueToCode(block, 'ADD0', Order.STRING_CONCAT) || \"''\";\n const element1 =\n generator.valueToCode(block, 'ADD1', Order.STRING_CONCAT) || \"''\";\n const code = element0 + ' . ' + element1;\n return [code, Order.STRING_CONCAT];\n } else {\n const elements = new Array(joinBlock.itemCount_);\n for (let i = 0; i < joinBlock.itemCount_; i++) {\n elements[i] = generator.valueToCode(block, 'ADD' + i, Order.NONE) || \"''\";\n }\n const code = \"implode('', array(\" + elements.join(',') + '))';\n return [code, Order.FUNCTION_CALL];\n }\n}\n\nexport function text_append(block: Block, generator: PhpGenerator) {\n // Append to a variable in place.\n const varName = generator.getVariableName(block.getFieldValue('VAR'));\n const value = generator.valueToCode(block, 'TEXT', Order.ASSIGNMENT) || \"''\";\n return varName + ' .= ' + value + ';\\n';\n}\n\nexport function text_length(\n block: Block,\n generator: PhpGenerator,\n): [string, Order] {\n // String or array length.\n const functionName = generator.provideFunction_(\n 'length',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}($value) {\n if (is_string($value)) {\n return strlen($value);\n }\n return count($value);\n}\n`,\n );\n const text = generator.valueToCode(block, 'VALUE', Order.NONE) || \"''\";\n return [functionName + '(' + text + ')', Order.FUNCTION_CALL];\n}\n\nexport function text_isEmpty(\n block: Block,\n generator: PhpGenerator,\n): [string, Order] {\n // Is the string null or array empty?\n const text = generator.valueToCode(block, 'VALUE', Order.NONE) || \"''\";\n return ['empty(' + text + ')', Order.FUNCTION_CALL];\n}\n\nexport function text_indexOf(\n block: Block,\n generator: PhpGenerator,\n): [string, Order] {\n // Search the text for a substring.\n const operator =\n block.getFieldValue('END') === 'FIRST' ? 'strpos' : 'strrpos';\n const substring = generator.valueToCode(block, 'FIND', Order.NONE) || \"''\";\n const text = generator.valueToCode(block, 'VALUE', Order.NONE) || \"''\";\n let errorIndex = ' -1';\n let indexAdjustment = '';\n if (block.workspace.options.oneBasedIndex) {\n errorIndex = ' 0';\n indexAdjustment = ' + 1';\n }\n const functionName = generator.provideFunction_(\n block.getFieldValue('END') === 'FIRST'\n ? 'text_indexOf'\n : 'text_lastIndexOf',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}($text, $search) {\n $pos = ${operator}($text, $search);\n return $pos === false ? ${errorIndex} : $pos${indexAdjustment};\n}\n`,\n );\n const code = functionName + '(' + text + ', ' + substring + ')';\n return [code, Order.FUNCTION_CALL];\n}\n\nexport function text_charAt(\n block: Block,\n generator: PhpGenerator,\n): [string, Order] {\n // Get letter at index.\n const where = block.getFieldValue('WHERE') || 'FROM_START';\n const textOrder = where === 'RANDOM' ? Order.NONE : Order.NONE;\n const text = generator.valueToCode(block, 'VALUE', textOrder) || \"''\";\n switch (where) {\n case 'FIRST': {\n const code = 'substr(' + text + ', 0, 1)';\n return [code, Order.FUNCTION_CALL];\n }\n case 'LAST': {\n const code = 'substr(' + text + ', -1)';\n return [code, Order.FUNCTION_CALL];\n }\n case 'FROM_START': {\n const at = generator.getAdjusted(block, 'AT');\n const code = 'substr(' + text + ', ' + at + ', 1)';\n return [code, Order.FUNCTION_CALL];\n }\n case 'FROM_END': {\n const at = generator.getAdjusted(block, 'AT', 1, true);\n const code = 'substr(' + text + ', ' + at + ', 1)';\n return [code, Order.FUNCTION_CALL];\n }\n case 'RANDOM': {\n const functionName = generator.provideFunction_(\n 'text_random_letter',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}($text) {\n return $text[rand(0, strlen($text) - 1)];\n}\n`,\n );\n const code = functionName + '(' + text + ')';\n return [code, Order.FUNCTION_CALL];\n }\n }\n throw Error('Unhandled option (text_charAt).');\n}\n\nexport function text_getSubstring(\n block: Block,\n generator: PhpGenerator,\n): [string, Order] {\n // Get substring.\n const where1 = block.getFieldValue('WHERE1');\n const where2 = block.getFieldValue('WHERE2');\n const text = generator.valueToCode(block, 'STRING', Order.NONE) || \"''\";\n if (where1 === 'FIRST' && where2 === 'LAST') {\n const code = text;\n return [code, Order.NONE];\n } else {\n const at1 = generator.getAdjusted(block, 'AT1');\n const at2 = generator.getAdjusted(block, 'AT2');\n const functionName = generator.provideFunction_(\n 'text_get_substring',\n `\nfunction ${generator.FUNCTION_NAME_PLACEHOLDER_}($text, $where1, $at1, $where2, $at2) {\n if ($where1 == 'FROM_END') {\n $at1 = strlen($text) - 1 - $at1;\n } else if ($where1 == 'FIRST') {\n $at1 = 0;\n } else if ($where1 != 'FROM_START') {\n throw new Exception('Unhandled option (text_get_substring).');\n }\n $length = 0;\n if ($where2 == 'FROM_START') {\n $length = $at2 - $at1 + 1;\n } else if ($where2 == 'FROM_END') {\n $length = strlen($text) - $at1 - $at2;\n } else if ($where2 == 'LAST') {\n $length = strlen($text) - $at1;\n } else {\n throw new Exception('Unhandled option (text_get_substring).');\n }\n return substr($text, $at1, $length);\n}\n`,\n );\n const code =\n functionName +\n '(' +\n text +\n \", '\" +\n where1 +\n \"', \" +\n at1 +\n \", '\" +\n where2 +\n \"', \" +\n at2 +\n ')';\n return [code, Order.FUNCTION_CALL];\n }\n}\n\nexport function text_changeCase(\n block: Block,\n generator: PhpGenerator,\n): [string, Order] {\n // Change capitalization.\n const text = generator.valueToCode(block, 'TEXT', Order.NONE) || \"''\";\n let code;\n if (block.getFieldValue('CASE') === 'UPPERCASE') {\n code = 'strtoupper(' + text + ')';\n } else if (block.getFieldValue('CASE') === 'LOWERCASE') {\n code = 'strtolower(' + text + ')';\n } else if (block.getFieldValue('CASE') === 'TITLECASE') {\n code = 'ucwords(strtolower(' + text + '))';\n }\n return [code as string, Order.FUNCTION_CALL];\n}\n\nexport function text_trim(\n block: Block,\n generator: PhpGenerator,\n): [string, Order] {\n // Trim spaces.\n const OPERATORS = {'LEFT': 'ltrim', 'RIGHT': 'rtrim', 'BOTH': 'trim'};\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 return [operator + '(' + text + ')', Order.FUNCTION_CALL];\n}\n\nexport function text_print(block: Block, generator: PhpGenerator) {\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: PhpGenerator,\n): [string, Order] {\n // Prompt function.\n let msg;\n if (block.getField('TEXT')) {\n // Internal message.\n msg = generator.quote_(block.getFieldValue('TEXT'));\n } else {\n // External message.\n msg = generator.valueToCode(block, 'TEXT', Order.NONE) || \"''\";\n }\n let code = 'readline(' + msg + ')';\n const toNumber = block.getFieldValue('TYPE') === 'NUMBER';\n if (toNumber) {\n code = 'floatval(' + code + ')';\n }\n return [code, Order.FUNCTION_CALL];\n}\n\nexport const text_prompt = text_prompt_ext;\n\nexport function text_count(\n block: Block,\n generator: PhpGenerator,\n): [string, Order] {\n const text = generator.valueToCode(block, 'TEXT', Order.NONE) || \"''\";\n const sub = generator.valueToCode(block, 'SUB', Order.NONE) || \"''\";\n const code =\n 'strlen(' +\n sub +\n ') === 0' +\n ' ? strlen(' +\n text +\n ') + 1' +\n ' : substr_count(' +\n text +\n ', ' +\n sub +\n ')';\n return [code, Order.CONDITIONAL];\n}\n\nexport function text_replace(\n block: Block,\n generator: PhpGenerator,\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 code = 'str_replace(' + from + ', ' + to + ', ' + text + ')';\n return [code, Order.FUNCTION_CALL];\n}\n\nexport function text_reverse(\n block: Block,\n generator: PhpGenerator,\n): [string, Order] {\n const text = generator.valueToCode(block, 'TEXT', Order.NONE) || \"''\";\n const code = 'strrev(' + text + ')';\n return [code, Order.FUNCTION_CALL];\n}\n","/**\n * @license\n * Copyright 2015 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @file Generating PHP for variable blocks.\n */\n\n// Former goog.module ID: Blockly.PHP.variables\n\nimport type {Block} from '../../core/block.js';\nimport type {PhpGenerator} from './php_generator.js';\nimport {Order} from './php_generator.js';\n\nexport function variables_get(\n block: Block,\n generator: PhpGenerator,\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: PhpGenerator) {\n // Variable setter.\n const argument0 =\n generator.valueToCode(block, 'VALUE', Order.ASSIGNMENT) || '0';\n const varName = generator.getVariableName(block.getFieldValue('VAR'));\n return varName + ' = ' + argument0 + ';\\n';\n}\n","/**\n * @license\n * Copyright 2015 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @file PHP code generator class, including helper methods for\n * generating PHP for blocks.\n */\n\n// Former goog.module ID: Blockly.PHP\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://php.net/manual/en/language.operators.precedence.php\n */\n// prettier-ignore\nexport enum Order {\n ATOMIC = 0, // 0 \"\" ...\n CLONE = 1, // clone\n NEW = 1, // new\n MEMBER = 2.1, // []\n FUNCTION_CALL = 2.2, // ()\n POWER = 3, // **\n INCREMENT = 4, // ++\n DECREMENT = 4, // --\n BITWISE_NOT = 4, // ~\n CAST = 4, // (int) (float) (string) (array) ...\n SUPPRESS_ERROR = 4, // @\n INSTANCEOF = 5, // instanceof\n LOGICAL_NOT = 6, // !\n UNARY_PLUS = 7.1, // +\n UNARY_NEGATION = 7.2, // -\n MULTIPLICATION = 8.1, // *\n DIVISION = 8.2, // /\n MODULUS = 8.3, // %\n ADDITION = 9.1, // +\n SUBTRACTION = 9.2, // -\n STRING_CONCAT = 9.3, // .\n BITWISE_SHIFT = 10, // << >>\n RELATIONAL = 11, // < <= > >=\n EQUALITY = 12, // == != === !== <> <=>\n REFERENCE = 13, // &\n BITWISE_AND = 13, // &\n BITWISE_XOR = 14, // ^\n BITWISE_OR = 15, // |\n LOGICAL_AND = 16, // &&\n LOGICAL_OR = 17, // ||\n IF_NULL = 18, // ??\n CONDITIONAL = 19, // ?:\n ASSIGNMENT = 20, // = += -= *= /= %= <<= >>= ...\n LOGICAL_AND_WEAK = 21, // and\n LOGICAL_XOR = 22, // xor\n LOGICAL_OR_WEAK = 23, // or\n NONE = 99, // (...)\n}\n\nexport class PhpGenerator extends CodeGenerator {\n /** List of outer-inner pairings that do NOT require parentheses. */\n ORDER_OVERRIDES: [Order, Order][] = [\n // (foo()).bar() -> foo().bar()\n // (foo())[0] -> foo()[0]\n [Order.MEMBER, Order.FUNCTION_CALL],\n // (foo[0])[1] -> foo[0][1]\n // (foo.bar).baz -> foo.bar.baz\n [Order.MEMBER, Order.MEMBER],\n // !(!foo) -> !!foo\n [Order.LOGICAL_NOT, Order.LOGICAL_NOT],\n // a * (b * c) -> a * b * c\n [Order.MULTIPLICATION, Order.MULTIPLICATION],\n // a + (b + c) -> a + b + c\n [Order.ADDITION, Order.ADDITION],\n // a && (b && c) -> a && b && c\n [Order.LOGICAL_AND, Order.LOGICAL_AND],\n // a || (b || c) -> a || b || c\n [Order.LOGICAL_OR, Order.LOGICAL_OR],\n ];\n\n /** @param name Name of the language the generator is for. */\n constructor(name = 'PHP') {\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 // http://php.net/manual/en/reserved.keywords.php\n '__halt_compiler,abstract,and,array,as,break,callable,case,catch,class,' +\n 'clone,const,continue,declare,default,die,do,echo,else,elseif,empty,' +\n 'enddeclare,endfor,endforeach,endif,endswitch,endwhile,eval,exit,' +\n 'extends,final,for,foreach,function,global,goto,if,implements,include,' +\n 'include_once,instanceof,insteadof,interface,isset,list,namespace,new,' +\n 'or,print,private,protected,public,require,require_once,return,static,' +\n 'switch,throw,trait,try,unset,use,var,while,xor,' +\n // http://php.net/manual/en/reserved.constants.php\n 'PHP_VERSION,PHP_MAJOR_VERSION,PHP_MINOR_VERSION,PHP_RELEASE_VERSION,' +\n 'PHP_VERSION_ID,PHP_EXTRA_VERSION,PHP_ZTS,PHP_DEBUG,PHP_MAXPATHLEN,' +\n 'PHP_OS,PHP_SAPI,PHP_EOL,PHP_INT_MAX,PHP_INT_SIZE,DEFAULT_INCLUDE_PATH,' +\n 'PEAR_INSTALL_DIR,PEAR_EXTENSION_DIR,PHP_EXTENSION_DIR,PHP_PREFIX,' +\n 'PHP_BINDIR,PHP_BINARY,PHP_MANDIR,PHP_LIBDIR,PHP_DATADIR,' +\n 'PHP_SYSCONFDIR,PHP_LOCALSTATEDIR,PHP_CONFIG_FILE_PATH,' +\n 'PHP_CONFIG_FILE_SCAN_DIR,PHP_SHLIB_SUFFIX,E_ERROR,E_WARNING,E_PARSE,' +\n 'E_NOTICE,E_CORE_ERROR,E_CORE_WARNING,E_COMPILE_ERROR,' +\n 'E_COMPILE_WARNING,E_USER_ERROR,E_USER_WARNING,E_USER_NOTICE,' +\n 'E_DEPRECATED,E_USER_DEPRECATED,E_ALL,E_STRICT,' +\n '__COMPILER_HALT_OFFSET__,TRUE,FALSE,NULL,__CLASS__,__DIR__,__FILE__,' +\n '__FUNCTION__,__LINE__,__METHOD__,__NAMESPACE__,__TRAIT__',\n );\n }\n\n /**\n * Initialise the database of variable names.\n *\n * @param workspace Workspace to generate code from.\n */\n init(workspace: Workspace) {\n super.init(workspace);\n\n if (!this.nameDB_) {\n this.nameDB_ = new Names(this.RESERVED_WORDS_, '$');\n } else {\n this.nameDB_.reset();\n }\n\n this.nameDB_.setVariableMap(workspace.getVariableMap());\n this.nameDB_.populateVariables(workspace);\n this.nameDB_.populateProcedures(workspace);\n\n 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.\n *\n * @param line Line of generated code.\n * @returns Legal line of code.\n */\n scrubNakedValue(line: string): string {\n return line + ';\\n';\n }\n\n /**\n * Encode a string as a properly escaped PHP string, complete with\n * quotes.\n *\n * @param string Text to encode.\n * @returns PHP 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 PHP string, complete with\n * quotes.\n * @param string Text to encode.\n * @returns PHP 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 // Newline escaping only works in double-quoted strings.\n return lines.join(' . \"\\\\n\" .\\n');\n }\n\n /**\n * Common tasks for generating PHP from blocks.\n * Handles comments for the specified block and any connected value blocks.\n * Calls any statements following this block.\n *\n * @param block The current block.\n * @param code The PHP code created for this block.\n * @param thisOnly True to generate code for only this statement.\n * @returns PHP code with comments and subsequent blocks added.\n */\n scrub_(block: Block, code: string, thisOnly = false): string {\n let commentCode = '';\n // Only collect comments for blocks that aren't inline.\n if (!block.outputConnection || !block.outputConnection.targetConnection) {\n // Collect comment for this block.\n let comment = block.getCommentText();\n if (comment) {\n comment = stringUtils.wrap(comment, this.COMMENT_WRAP - 3);\n commentCode += this.prefixLines(comment, '// ') + '\\n';\n }\n // Collect comments for all value arguments.\n // Don't collect comments for nested statements.\n for (let i = 0; i < block.inputList.length; i++) {\n if (block.inputList[i].type === inputTypes.VALUE) {\n const childBlock = block.inputList[i].connection!.targetBlock();\n if (childBlock) {\n comment = this.allNestedComments(childBlock);\n if (comment) {\n commentCode += this.prefixLines(comment, '// ');\n }\n }\n }\n }\n }\n const nextBlock =\n block.nextConnection && block.nextConnection.targetBlock();\n const nextCode = thisOnly ? '' : this.blockToCode(nextBlock);\n return commentCode + code + nextCode;\n }\n\n /**\n * Generate code representing the specified value input, adjusted to take into\n * account indexing (zero- or one-based) and optionally by a specified delta\n * and/or by negation.\n *\n * @param block The block.\n * @param atId The ID of the input block to get (and adjust) the value of.\n * @param delta Value to add.\n * @param negate Whether to negate the value.\n * @param order The highest order acting on this value.\n * @returns The adjusted value or code that evaluates to it.\n */\n getAdjusted(\n block: Block,\n atId: string,\n delta = 0,\n negate = false,\n order = Order.NONE,\n ): string {\n if (block.workspace.options.oneBasedIndex) {\n delta--;\n }\n let defaultAtIndex = block.workspace.options.oneBasedIndex ? '1' : '0';\n\n let orderForInput = order;\n if (delta > 0) {\n orderForInput = Order.ADDITION;\n } else if (delta < 0) {\n orderForInput = Order.SUBTRACTION;\n } else if (negate) {\n orderForInput = Order.UNARY_NEGATION;\n }\n\n let at = this.valueToCode(block, atId, orderForInput) || defaultAtIndex;\n\n // Easy case: no adjustments.\n if (delta === 0 && !negate) {\n return at;\n }\n // If the index is a naked number, adjust it right now.\n if (stringUtils.isNumber(at)) {\n at = String(Number(at) + delta);\n if (negate) {\n at = String(-Number(at));\n }\n return at;\n }\n // If the index is dynamic, adjust it in code.\n if (delta > 0) {\n at = `${at} + ${delta}`;\n } else if (delta < 0) {\n at = `${at} - ${-delta}`;\n }\n if (negate) {\n at = delta ? `-(${at})` : `-${at}`;\n }\n if (Math.floor(order) >= Math.floor(orderForInput)) {\n at = `(${at})`;\n }\n return at;\n }\n}\n","/**\n * @license\n * Copyright 2018 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @file Generating PHP for dynamic variable blocks.\n */\n\n// Former goog.module ID: Blockly.PHP.variablesDynamic\n\n// generator is dynamically typed.\nexport {\n variables_get as variables_get_dynamic,\n variables_set as variables_set_dynamic,\n} from './variables.js';\n","/**\n * @license\n * Copyright 2021 Google LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n/**\n * @file Instantiate a PhpGenerator and populate it with the complete\n * set of block generator functions for PHP. This is the entrypoint\n * for php_compressed.js.\n */\n\n// Former goog.module ID: Blockly.PHP.all\n\nimport * as lists from './php/lists.js';\nimport * as logic from './php/logic.js';\nimport * as loops from './php/loops.js';\nimport * as math from './php/math.js';\nimport {PhpGenerator} from './php/php_generator.js';\nimport * as procedures from './php/procedures.js';\nimport * as text from './php/text.js';\nimport * as variables from './php/variables.js';\nimport * as variablesDynamic from './php/variables_dynamic.js';\n\nexport * from './php/php_generator.js';\n\n/**\n * Php code generator instance.\n * @type {!PhpGenerator}\n */\nexport const phpGenerator = new PhpGenerator();\n\n// Install per-block-type generator functions:\nconst generators: typeof phpGenerator.forBlock = {\n ...lists,\n ...logic,\n ...loops,\n ...math,\n ...procedures,\n ...text,\n ...variables,\n ...variablesDynamic,\n};\nfor (const name in generators) {\n phpGenerator.forBlock[name] = generators[name];\n}\n"]}
|
package/python.js
ADDED