nodeskini 1.0.0 → 1.0.2
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/blocklySkini/archive/blocklyControleur.js +87 -0
- package/blocklySkini/archive/blocklySkini.js +84 -0
- package/blocklySkini/archive/blocklyhop.js +75 -0
- package/blocklySkini/archive/clientControleurBlocly.js +170 -0
- package/blocklySkini/archive/index.html +76 -0
- package/blocklySkini/archive/testHHsuspend.txt +89 -0
- package/blocklySkini/archive/testHHtrap.txt +262 -0
- package/blocklySkini/archive/testOrchestration.txt +177 -0
- package/blocklySkini/archive/testOrchestration.xml +447 -0
- package/blocklySkini/archive/testOrchestration2.xml +456 -0
- package/blocklySkini/blockly/README.md +77 -0
- package/blocklySkini/blockly/blockly.d.ts +21480 -0
- package/blocklySkini/blockly/blockly.js +25 -0
- package/blocklySkini/blockly/blockly.min.js +2188 -0
- package/blocklySkini/blockly/blockly_compressed.js +1455 -0
- package/blocklySkini/blockly/blockly_compressed.js.map +1 -0
- package/blocklySkini/blockly/blocks/colour.js +122 -0
- package/blocklySkini/blockly/blocks/lists.js +862 -0
- package/blocklySkini/blockly/blocks/logic.js +635 -0
- package/blocklySkini/blockly/blocks/loops.js +357 -0
- package/blocklySkini/blockly/blocks/math.js +566 -0
- package/blocklySkini/blockly/blocks/procedures.js +1072 -0
- package/blocklySkini/blockly/blocks/text.js +923 -0
- package/blocklySkini/blockly/blocks/variables.js +163 -0
- package/blocklySkini/blockly/blocks/variables_dynamic.js +180 -0
- package/blocklySkini/blockly/blocks.d.ts +15 -0
- package/blocklySkini/blockly/blocks.js +27 -0
- package/blocklySkini/blockly/blocks_compressed.js +182 -0
- package/blocklySkini/blockly/blocks_compressed.js.map +1 -0
- package/blocklySkini/blockly/browser.js +36 -0
- package/blocklySkini/blockly/core/block.js +2010 -0
- package/blocklySkini/blockly/core/block_animations.js +203 -0
- package/blocklySkini/blockly/core/block_drag_surface.js +212 -0
- package/blocklySkini/blockly/core/block_dragger.js +378 -0
- package/blocklySkini/blockly/core/block_events.js +548 -0
- package/blocklySkini/blockly/core/block_svg.js +1763 -0
- package/blocklySkini/blockly/core/blockly.js +674 -0
- package/blocklySkini/blockly/core/blocks.js +23 -0
- package/blocklySkini/blockly/core/bubble.js +880 -0
- package/blocklySkini/blockly/core/bubble_dragger.js +274 -0
- package/blocklySkini/blockly/core/comment.js +439 -0
- package/blocklySkini/blockly/core/components/component.js +554 -0
- package/blocklySkini/blockly/core/components/tree/basenode.js +895 -0
- package/blocklySkini/blockly/core/components/tree/treecontrol.js +332 -0
- package/blocklySkini/blockly/core/components/tree/treenode.js +172 -0
- package/blocklySkini/blockly/core/connection.js +682 -0
- package/blocklySkini/blockly/core/connection_checker.js +285 -0
- package/blocklySkini/blockly/core/connection_db.js +295 -0
- package/blocklySkini/blockly/core/constants.js +277 -0
- package/blocklySkini/blockly/core/contextmenu.js +307 -0
- package/blocklySkini/blockly/core/contextmenu_items.js +534 -0
- package/blocklySkini/blockly/core/contextmenu_registry.js +165 -0
- package/blocklySkini/blockly/core/css.js +549 -0
- package/blocklySkini/blockly/core/dropdowndiv.js +776 -0
- package/blocklySkini/blockly/core/events.js +387 -0
- package/blocklySkini/blockly/core/events_abstract.js +106 -0
- package/blocklySkini/blockly/core/extensions.js +450 -0
- package/blocklySkini/blockly/core/field.js +1162 -0
- package/blocklySkini/blockly/core/field_angle.js +562 -0
- package/blocklySkini/blockly/core/field_checkbox.js +220 -0
- package/blocklySkini/blockly/core/field_colour.js +664 -0
- package/blocklySkini/blockly/core/field_dropdown.js +760 -0
- package/blocklySkini/blockly/core/field_image.js +286 -0
- package/blocklySkini/blockly/core/field_label.js +130 -0
- package/blocklySkini/blockly/core/field_label_serializable.js +69 -0
- package/blocklySkini/blockly/core/field_multilineinput.js +299 -0
- package/blocklySkini/blockly/core/field_number.js +317 -0
- package/blocklySkini/blockly/core/field_registry.js +66 -0
- package/blocklySkini/blockly/core/field_textinput.js +616 -0
- package/blocklySkini/blockly/core/field_variable.js +463 -0
- package/blocklySkini/blockly/core/flyout_base.js +1071 -0
- package/blocklySkini/blockly/core/flyout_button.js +325 -0
- package/blocklySkini/blockly/core/flyout_dragger.js +76 -0
- package/blocklySkini/blockly/core/flyout_horizontal.js +388 -0
- package/blocklySkini/blockly/core/flyout_vertical.js +397 -0
- package/blocklySkini/blockly/core/generator.js +482 -0
- package/blocklySkini/blockly/core/gesture.js +993 -0
- package/blocklySkini/blockly/core/grid.js +222 -0
- package/blocklySkini/blockly/core/icon.js +206 -0
- package/blocklySkini/blockly/core/inject.js +487 -0
- package/blocklySkini/blockly/core/input.js +296 -0
- package/blocklySkini/blockly/core/insertion_marker_manager.js +700 -0
- package/blocklySkini/blockly/core/interfaces/i_accessibility.js +72 -0
- package/blocklySkini/blockly/core/interfaces/i_bounded_element.js +31 -0
- package/blocklySkini/blockly/core/interfaces/i_bubble.js +83 -0
- package/blocklySkini/blockly/core/interfaces/i_connection_checker.js +94 -0
- package/blocklySkini/blockly/core/interfaces/i_contextmenu.js +26 -0
- package/blocklySkini/blockly/core/interfaces/i_copyable.js +40 -0
- package/blocklySkini/blockly/core/interfaces/i_deletable.js +27 -0
- package/blocklySkini/blockly/core/interfaces/i_deletearea.js +28 -0
- package/blocklySkini/blockly/core/interfaces/i_flyout.js +178 -0
- package/blocklySkini/blockly/core/interfaces/i_movable.js +27 -0
- package/blocklySkini/blockly/core/interfaces/i_registrable.js +22 -0
- package/blocklySkini/blockly/core/interfaces/i_registrable_field.js +31 -0
- package/blocklySkini/blockly/core/interfaces/i_selectable.js +43 -0
- package/blocklySkini/blockly/core/interfaces/i_styleable.js +33 -0
- package/blocklySkini/blockly/core/interfaces/i_toolbox.js +131 -0
- package/blocklySkini/blockly/core/interfaces/i_toolbox_item.js +148 -0
- package/blocklySkini/blockly/core/keyboard_nav/action.js +26 -0
- package/blocklySkini/blockly/core/keyboard_nav/ast_node.js +684 -0
- package/blocklySkini/blockly/core/keyboard_nav/basic_cursor.js +208 -0
- package/blocklySkini/blockly/core/keyboard_nav/cursor.js +170 -0
- package/blocklySkini/blockly/core/keyboard_nav/flyout_cursor.js +106 -0
- package/blocklySkini/blockly/core/keyboard_nav/key_map.js +190 -0
- package/blocklySkini/blockly/core/keyboard_nav/marker.js +120 -0
- package/blocklySkini/blockly/core/keyboard_nav/navigation.js +1084 -0
- package/blocklySkini/blockly/core/keyboard_nav/tab_navigate_cursor.js +48 -0
- package/blocklySkini/blockly/core/marker_manager.js +183 -0
- package/blocklySkini/blockly/core/menu.js +465 -0
- package/blocklySkini/blockly/core/menuitem.js +280 -0
- package/blocklySkini/blockly/core/msg.js +31 -0
- package/blocklySkini/blockly/core/mutator.js +555 -0
- package/blocklySkini/blockly/core/names.js +186 -0
- package/blocklySkini/blockly/core/options.js +365 -0
- package/blocklySkini/blockly/core/procedures.js +404 -0
- package/blocklySkini/blockly/core/registry.js +265 -0
- package/blocklySkini/blockly/core/rendered_connection.js +565 -0
- package/blocklySkini/blockly/core/renderers/common/block_rendering.js +81 -0
- package/blocklySkini/blockly/core/renderers/common/constants.js +1256 -0
- package/blocklySkini/blockly/core/renderers/common/debugger.js +431 -0
- package/blocklySkini/blockly/core/renderers/common/drawer.js +468 -0
- package/blocklySkini/blockly/core/renderers/common/i_path_object.js +151 -0
- package/blocklySkini/blockly/core/renderers/common/info.js +775 -0
- package/blocklySkini/blockly/core/renderers/common/marker_svg.js +687 -0
- package/blocklySkini/blockly/core/renderers/common/path_object.js +279 -0
- package/blocklySkini/blockly/core/renderers/common/renderer.js +301 -0
- package/blocklySkini/blockly/core/renderers/geras/constants.js +64 -0
- package/blocklySkini/blockly/core/renderers/geras/drawer.js +205 -0
- package/blocklySkini/blockly/core/renderers/geras/highlight_constants.js +311 -0
- package/blocklySkini/blockly/core/renderers/geras/highlighter.js +256 -0
- package/blocklySkini/blockly/core/renderers/geras/info.js +483 -0
- package/blocklySkini/blockly/core/renderers/geras/measurables/inputs.js +67 -0
- package/blocklySkini/blockly/core/renderers/geras/path_object.js +177 -0
- package/blocklySkini/blockly/core/renderers/geras/renderer.js +138 -0
- package/blocklySkini/blockly/core/renderers/measurables/base.js +44 -0
- package/blocklySkini/blockly/core/renderers/measurables/connections.js +114 -0
- package/blocklySkini/blockly/core/renderers/measurables/inputs.js +160 -0
- package/blocklySkini/blockly/core/renderers/measurables/row_elements.js +185 -0
- package/blocklySkini/blockly/core/renderers/measurables/rows.js +532 -0
- package/blocklySkini/blockly/core/renderers/measurables/types.js +349 -0
- package/blocklySkini/blockly/core/renderers/minimalist/constants.js +29 -0
- package/blocklySkini/blockly/core/renderers/minimalist/drawer.js +32 -0
- package/blocklySkini/blockly/core/renderers/minimalist/info.js +45 -0
- package/blocklySkini/blockly/core/renderers/minimalist/renderer.js +70 -0
- package/blocklySkini/blockly/core/renderers/thrasos/info.js +338 -0
- package/blocklySkini/blockly/core/renderers/thrasos/renderer.js +45 -0
- package/blocklySkini/blockly/core/renderers/zelos/constants.js +1002 -0
- package/blocklySkini/blockly/core/renderers/zelos/drawer.js +233 -0
- package/blocklySkini/blockly/core/renderers/zelos/info.js +587 -0
- package/blocklySkini/blockly/core/renderers/zelos/marker_svg.js +148 -0
- package/blocklySkini/blockly/core/renderers/zelos/measurables/inputs.js +47 -0
- package/blocklySkini/blockly/core/renderers/zelos/measurables/row_elements.js +37 -0
- package/blocklySkini/blockly/core/renderers/zelos/measurables/rows.js +108 -0
- package/blocklySkini/blockly/core/renderers/zelos/path_object.js +244 -0
- package/blocklySkini/blockly/core/renderers/zelos/renderer.js +130 -0
- package/blocklySkini/blockly/core/requires.js +84 -0
- package/blocklySkini/blockly/core/scrollbar.js +880 -0
- package/blocklySkini/blockly/core/theme/classic.js +87 -0
- package/blocklySkini/blockly/core/theme/dark.js +33 -0
- package/blocklySkini/blockly/core/theme/deuteranopia.js +104 -0
- package/blocklySkini/blockly/core/theme/highcontrast.js +119 -0
- package/blocklySkini/blockly/core/theme/modern.js +108 -0
- package/blocklySkini/blockly/core/theme/tritanopia.js +103 -0
- package/blocklySkini/blockly/core/theme/zelos.js +106 -0
- package/blocklySkini/blockly/core/theme.js +236 -0
- package/blocklySkini/blockly/core/theme_manager.js +197 -0
- package/blocklySkini/blockly/core/toolbox/category.js +690 -0
- package/blocklySkini/blockly/core/toolbox/collapsible_category.js +294 -0
- package/blocklySkini/blockly/core/toolbox/separator.js +123 -0
- package/blocklySkini/blockly/core/toolbox/toolbox.js +984 -0
- package/blocklySkini/blockly/core/toolbox/toolbox_item.js +145 -0
- package/blocklySkini/blockly/core/toolbox.js +943 -0
- package/blocklySkini/blockly/core/tooltip.js +387 -0
- package/blocklySkini/blockly/core/touch.js +255 -0
- package/blocklySkini/blockly/core/touch_gesture.js +325 -0
- package/blocklySkini/blockly/core/trashcan.js +661 -0
- package/blocklySkini/blockly/core/ui_events.js +85 -0
- package/blocklySkini/blockly/core/utils/aria.js +167 -0
- package/blocklySkini/blockly/core/utils/colour.js +208 -0
- package/blocklySkini/blockly/core/utils/coordinate.js +125 -0
- package/blocklySkini/blockly/core/utils/deprecation.js +34 -0
- package/blocklySkini/blockly/core/utils/dom.js +391 -0
- package/blocklySkini/blockly/core/utils/global.js +37 -0
- package/blocklySkini/blockly/core/utils/idgenerator.js +33 -0
- package/blocklySkini/blockly/core/utils/keycodes.js +164 -0
- package/blocklySkini/blockly/core/utils/math.js +56 -0
- package/blocklySkini/blockly/core/utils/metrics.js +124 -0
- package/blocklySkini/blockly/core/utils/object.js +73 -0
- package/blocklySkini/blockly/core/utils/rect.js +54 -0
- package/blocklySkini/blockly/core/utils/size.js +58 -0
- package/blocklySkini/blockly/core/utils/string.js +284 -0
- package/blocklySkini/blockly/core/utils/style.js +281 -0
- package/blocklySkini/blockly/core/utils/svg.js +181 -0
- package/blocklySkini/blockly/core/utils/svg_paths.js +142 -0
- package/blocklySkini/blockly/core/utils/toolbox.js +401 -0
- package/blocklySkini/blockly/core/utils/useragent.js +110 -0
- package/blocklySkini/blockly/core/utils/xml.js +79 -0
- package/blocklySkini/blockly/core/utils.js +652 -0
- package/blocklySkini/blockly/core/variable_events.js +248 -0
- package/blocklySkini/blockly/core/variable_map.js +414 -0
- package/blocklySkini/blockly/core/variable_model.js +95 -0
- package/blocklySkini/blockly/core/variables.js +571 -0
- package/blocklySkini/blockly/core/variables_dynamic.js +100 -0
- package/blocklySkini/blockly/core/warning.js +200 -0
- package/blocklySkini/blockly/core/widgetdiv.js +241 -0
- package/blocklySkini/blockly/core/workspace.js +786 -0
- package/blocklySkini/blockly/core/workspace_audio.js +153 -0
- package/blocklySkini/blockly/core/workspace_comment.js +373 -0
- package/blocklySkini/blockly/core/workspace_comment_render_svg.js +461 -0
- package/blocklySkini/blockly/core/workspace_comment_svg.js +701 -0
- package/blocklySkini/blockly/core/workspace_drag_surface_svg.js +176 -0
- package/blocklySkini/blockly/core/workspace_dragger.js +85 -0
- package/blocklySkini/blockly/core/workspace_events.js +93 -0
- package/blocklySkini/blockly/core/workspace_svg.js +2661 -0
- package/blocklySkini/blockly/core/ws_comment_events.js +417 -0
- package/blocklySkini/blockly/core/xml.js +827 -0
- package/blocklySkini/blockly/core/zoom_controls.js +449 -0
- package/blocklySkini/blockly/core-browser.js +34 -0
- package/blocklySkini/blockly/core.d.ts +15 -0
- package/blocklySkini/blockly/core.js +38 -0
- package/blocklySkini/blockly/dart.d.ts +15 -0
- package/blocklySkini/blockly/dart.js +27 -0
- package/blocklySkini/blockly/dart_compressed.js +114 -0
- package/blocklySkini/blockly/dart_compressed.js.map +1 -0
- package/blocklySkini/blockly/generators/dart/colour.js +114 -0
- package/blocklySkini/blockly/generators/dart/lists.js +447 -0
- package/blocklySkini/blockly/generators/dart/logic.js +127 -0
- package/blocklySkini/blockly/generators/dart/loops.js +169 -0
- package/blocklySkini/blockly/generators/dart/math.js +485 -0
- package/blocklySkini/blockly/generators/dart/procedures.js +111 -0
- package/blocklySkini/blockly/generators/dart/text.js +339 -0
- package/blocklySkini/blockly/generators/dart/variables.js +32 -0
- package/blocklySkini/blockly/generators/dart/variables_dynamic.js +21 -0
- package/blocklySkini/blockly/generators/dart.js +290 -0
- package/blocklySkini/blockly/generators/javascript/colour.js +89 -0
- package/blocklySkini/blockly/generators/javascript/lists.js +388 -0
- package/blocklySkini/blockly/generators/javascript/logic.js +129 -0
- package/blocklySkini/blockly/generators/javascript/loops.js +184 -0
- package/blocklySkini/blockly/generators/javascript/math.js +409 -0
- package/blocklySkini/blockly/generators/javascript/procedures.js +113 -0
- package/blocklySkini/blockly/generators/javascript/text.js +367 -0
- package/blocklySkini/blockly/generators/javascript/variables.js +32 -0
- package/blocklySkini/blockly/generators/javascript/variables_dynamic.js +23 -0
- package/blocklySkini/blockly/generators/javascript.js +317 -0
- package/blocklySkini/blockly/generators/lua/colour.js +76 -0
- package/blocklySkini/blockly/generators/lua/lists.js +368 -0
- package/blocklySkini/blockly/generators/lua/logic.js +127 -0
- package/blocklySkini/blockly/generators/lua/loops.js +173 -0
- package/blocklySkini/blockly/generators/lua/math.js +423 -0
- package/blocklySkini/blockly/generators/lua/procedures.js +113 -0
- package/blocklySkini/blockly/generators/lua/text.js +353 -0
- package/blocklySkini/blockly/generators/lua/variables.js +32 -0
- package/blocklySkini/blockly/generators/lua/variables_dynamic.js +21 -0
- package/blocklySkini/blockly/generators/lua.js +198 -0
- package/blocklySkini/blockly/generators/php/colour.js +91 -0
- package/blocklySkini/blockly/generators/php/lists.js +498 -0
- package/blocklySkini/blockly/generators/php/logic.js +128 -0
- package/blocklySkini/blockly/generators/php/loops.js +170 -0
- package/blocklySkini/blockly/generators/php/math.js +370 -0
- package/blocklySkini/blockly/generators/php/procedures.js +132 -0
- package/blocklySkini/blockly/generators/php/text.js +271 -0
- package/blocklySkini/blockly/generators/php/variables.js +32 -0
- package/blocklySkini/blockly/generators/php/variables_dynamic.js +21 -0
- package/blocklySkini/blockly/generators/php.js +318 -0
- package/blocklySkini/blockly/generators/python/colour.js +72 -0
- package/blocklySkini/blockly/generators/python/lists.js +349 -0
- package/blocklySkini/blockly/generators/python/logic.js +127 -0
- package/blocklySkini/blockly/generators/python/loops.js +214 -0
- package/blocklySkini/blockly/generators/python/math.js +385 -0
- package/blocklySkini/blockly/generators/python/procedures.js +134 -0
- package/blocklySkini/blockly/generators/python/text.js +293 -0
- package/blocklySkini/blockly/generators/python/variables.js +32 -0
- package/blocklySkini/blockly/generators/python/variables_dynamic.js +21 -0
- package/blocklySkini/blockly/generators/python.js +322 -0
- package/blocklySkini/blockly/index.d.ts +22 -0
- package/blocklySkini/blockly/index.js +24 -0
- package/blocklySkini/blockly/javascript.d.ts +15 -0
- package/blocklySkini/blockly/javascript.js +27 -0
- package/blocklySkini/blockly/javascript_compressed.js +115 -0
- package/blocklySkini/blockly/javascript_compressed.js.map +1 -0
- package/blocklySkini/blockly/lua.d.ts +15 -0
- package/blocklySkini/blockly/lua.js +27 -0
- package/blocklySkini/blockly/lua_compressed.js +94 -0
- package/blocklySkini/blockly/lua_compressed.js.map +1 -0
- package/blocklySkini/blockly/media/1x1.gif +0 -0
- package/blocklySkini/blockly/media/click.mp3 +0 -0
- package/blocklySkini/blockly/media/click.ogg +0 -0
- package/blocklySkini/blockly/media/click.wav +0 -0
- package/blocklySkini/blockly/media/delete.mp3 +0 -0
- package/blocklySkini/blockly/media/delete.ogg +0 -0
- package/blocklySkini/blockly/media/delete.wav +0 -0
- package/blocklySkini/blockly/media/disconnect.mp3 +0 -0
- package/blocklySkini/blockly/media/disconnect.ogg +0 -0
- package/blocklySkini/blockly/media/disconnect.wav +0 -0
- package/blocklySkini/blockly/media/dropdown-arrow.svg +1 -0
- package/blocklySkini/blockly/media/handclosed.cur +0 -0
- package/blocklySkini/blockly/media/handdelete.cur +0 -0
- package/blocklySkini/blockly/media/handopen.cur +0 -0
- package/blocklySkini/blockly/media/pilcrow.png +0 -0
- package/blocklySkini/blockly/media/quote0.png +0 -0
- package/blocklySkini/blockly/media/quote1.png +0 -0
- package/blocklySkini/blockly/media/sprites.png +0 -0
- package/blocklySkini/blockly/media/sprites.svg +74 -0
- package/blocklySkini/blockly/msg/ab.d.ts +16 -0
- package/blocklySkini/blockly/msg/ab.js +447 -0
- package/blocklySkini/blockly/msg/ar.d.ts +16 -0
- package/blocklySkini/blockly/msg/ar.js +447 -0
- package/blocklySkini/blockly/msg/az.d.ts +16 -0
- package/blocklySkini/blockly/msg/az.js +447 -0
- package/blocklySkini/blockly/msg/ba.d.ts +16 -0
- package/blocklySkini/blockly/msg/ba.js +447 -0
- package/blocklySkini/blockly/msg/bcc.d.ts +16 -0
- package/blocklySkini/blockly/msg/bcc.js +447 -0
- package/blocklySkini/blockly/msg/be-tarask.d.ts +16 -0
- package/blocklySkini/blockly/msg/be-tarask.js +447 -0
- package/blocklySkini/blockly/msg/be.d.ts +16 -0
- package/blocklySkini/blockly/msg/be.js +447 -0
- package/blocklySkini/blockly/msg/bg.d.ts +16 -0
- package/blocklySkini/blockly/msg/bg.js +447 -0
- package/blocklySkini/blockly/msg/bn.d.ts +16 -0
- package/blocklySkini/blockly/msg/bn.js +447 -0
- package/blocklySkini/blockly/msg/br.d.ts +16 -0
- package/blocklySkini/blockly/msg/br.js +447 -0
- package/blocklySkini/blockly/msg/ca.d.ts +16 -0
- package/blocklySkini/blockly/msg/ca.js +447 -0
- package/blocklySkini/blockly/msg/constants.d.ts +16 -0
- package/blocklySkini/blockly/msg/cs.d.ts +16 -0
- package/blocklySkini/blockly/msg/cs.js +447 -0
- package/blocklySkini/blockly/msg/da.d.ts +16 -0
- package/blocklySkini/blockly/msg/da.js +447 -0
- package/blocklySkini/blockly/msg/de.d.ts +16 -0
- package/blocklySkini/blockly/msg/de.js +447 -0
- package/blocklySkini/blockly/msg/diq.d.ts +16 -0
- package/blocklySkini/blockly/msg/diq.js +447 -0
- package/blocklySkini/blockly/msg/dty.d.ts +16 -0
- package/blocklySkini/blockly/msg/dty.js +447 -0
- package/blocklySkini/blockly/msg/ee.d.ts +16 -0
- package/blocklySkini/blockly/msg/ee.js +447 -0
- package/blocklySkini/blockly/msg/el.d.ts +16 -0
- package/blocklySkini/blockly/msg/el.js +447 -0
- package/blocklySkini/blockly/msg/en-gb.d.ts +16 -0
- package/blocklySkini/blockly/msg/en-gb.js +447 -0
- package/blocklySkini/blockly/msg/en.d.ts +16 -0
- package/blocklySkini/blockly/msg/en.js +447 -0
- package/blocklySkini/blockly/msg/eo.d.ts +16 -0
- package/blocklySkini/blockly/msg/eo.js +447 -0
- package/blocklySkini/blockly/msg/es.d.ts +16 -0
- package/blocklySkini/blockly/msg/es.js +447 -0
- package/blocklySkini/blockly/msg/et.d.ts +16 -0
- package/blocklySkini/blockly/msg/et.js +447 -0
- package/blocklySkini/blockly/msg/eu.d.ts +16 -0
- package/blocklySkini/blockly/msg/eu.js +447 -0
- package/blocklySkini/blockly/msg/fa.d.ts +16 -0
- package/blocklySkini/blockly/msg/fa.js +447 -0
- package/blocklySkini/blockly/msg/fi.d.ts +16 -0
- package/blocklySkini/blockly/msg/fi.js +447 -0
- package/blocklySkini/blockly/msg/fr.d.ts +16 -0
- package/blocklySkini/blockly/msg/fr.js +447 -0
- package/blocklySkini/blockly/msg/gl.d.ts +16 -0
- package/blocklySkini/blockly/msg/gl.js +447 -0
- package/blocklySkini/blockly/msg/gor.d.ts +16 -0
- package/blocklySkini/blockly/msg/gor.js +447 -0
- package/blocklySkini/blockly/msg/ha.d.ts +16 -0
- package/blocklySkini/blockly/msg/ha.js +447 -0
- package/blocklySkini/blockly/msg/he.d.ts +16 -0
- package/blocklySkini/blockly/msg/he.js +447 -0
- package/blocklySkini/blockly/msg/hi.d.ts +16 -0
- package/blocklySkini/blockly/msg/hi.js +447 -0
- package/blocklySkini/blockly/msg/hrx.d.ts +16 -0
- package/blocklySkini/blockly/msg/hrx.js +447 -0
- package/blocklySkini/blockly/msg/hu.d.ts +16 -0
- package/blocklySkini/blockly/msg/hu.js +447 -0
- package/blocklySkini/blockly/msg/hy.d.ts +16 -0
- package/blocklySkini/blockly/msg/hy.js +447 -0
- package/blocklySkini/blockly/msg/ia.d.ts +16 -0
- package/blocklySkini/blockly/msg/ia.js +447 -0
- package/blocklySkini/blockly/msg/id.d.ts +16 -0
- package/blocklySkini/blockly/msg/id.js +447 -0
- package/blocklySkini/blockly/msg/ig.d.ts +16 -0
- package/blocklySkini/blockly/msg/ig.js +447 -0
- package/blocklySkini/blockly/msg/is.d.ts +16 -0
- package/blocklySkini/blockly/msg/is.js +447 -0
- package/blocklySkini/blockly/msg/it.d.ts +16 -0
- package/blocklySkini/blockly/msg/it.js +447 -0
- package/blocklySkini/blockly/msg/ja.d.ts +16 -0
- package/blocklySkini/blockly/msg/ja.js +447 -0
- package/blocklySkini/blockly/msg/kab.d.ts +16 -0
- package/blocklySkini/blockly/msg/kab.js +447 -0
- package/blocklySkini/blockly/msg/kn.d.ts +16 -0
- package/blocklySkini/blockly/msg/kn.js +447 -0
- package/blocklySkini/blockly/msg/ko.d.ts +16 -0
- package/blocklySkini/blockly/msg/ko.js +447 -0
- package/blocklySkini/blockly/msg/lb.d.ts +16 -0
- package/blocklySkini/blockly/msg/lb.js +447 -0
- package/blocklySkini/blockly/msg/lki.d.ts +16 -0
- package/blocklySkini/blockly/msg/lki.js +447 -0
- package/blocklySkini/blockly/msg/lo.d.ts +16 -0
- package/blocklySkini/blockly/msg/lo.js +447 -0
- package/blocklySkini/blockly/msg/lrc.d.ts +16 -0
- package/blocklySkini/blockly/msg/lrc.js +447 -0
- package/blocklySkini/blockly/msg/lt.d.ts +16 -0
- package/blocklySkini/blockly/msg/lt.js +447 -0
- package/blocklySkini/blockly/msg/lv.d.ts +16 -0
- package/blocklySkini/blockly/msg/lv.js +447 -0
- package/blocklySkini/blockly/msg/mk.d.ts +16 -0
- package/blocklySkini/blockly/msg/mk.js +447 -0
- package/blocklySkini/blockly/msg/mnw.d.ts +16 -0
- package/blocklySkini/blockly/msg/mnw.js +447 -0
- package/blocklySkini/blockly/msg/ms.d.ts +16 -0
- package/blocklySkini/blockly/msg/ms.js +447 -0
- package/blocklySkini/blockly/msg/msg.d.ts +444 -0
- package/blocklySkini/blockly/msg/nb.d.ts +16 -0
- package/blocklySkini/blockly/msg/nb.js +447 -0
- package/blocklySkini/blockly/msg/nl.d.ts +16 -0
- package/blocklySkini/blockly/msg/nl.js +447 -0
- package/blocklySkini/blockly/msg/oc.d.ts +16 -0
- package/blocklySkini/blockly/msg/oc.js +447 -0
- package/blocklySkini/blockly/msg/pl.d.ts +16 -0
- package/blocklySkini/blockly/msg/pl.js +447 -0
- package/blocklySkini/blockly/msg/pms.d.ts +16 -0
- package/blocklySkini/blockly/msg/pms.js +447 -0
- package/blocklySkini/blockly/msg/pt-br.d.ts +16 -0
- package/blocklySkini/blockly/msg/pt-br.js +447 -0
- package/blocklySkini/blockly/msg/pt.d.ts +16 -0
- package/blocklySkini/blockly/msg/pt.js +447 -0
- package/blocklySkini/blockly/msg/qqq.d.ts +16 -0
- package/blocklySkini/blockly/msg/ro.d.ts +16 -0
- package/blocklySkini/blockly/msg/ro.js +447 -0
- package/blocklySkini/blockly/msg/ru.d.ts +16 -0
- package/blocklySkini/blockly/msg/ru.js +447 -0
- package/blocklySkini/blockly/msg/sc.d.ts +16 -0
- package/blocklySkini/blockly/msg/sc.js +447 -0
- package/blocklySkini/blockly/msg/sd.d.ts +16 -0
- package/blocklySkini/blockly/msg/sd.js +447 -0
- package/blocklySkini/blockly/msg/shn.d.ts +16 -0
- package/blocklySkini/blockly/msg/shn.js +447 -0
- package/blocklySkini/blockly/msg/sk.d.ts +16 -0
- package/blocklySkini/blockly/msg/sk.js +447 -0
- package/blocklySkini/blockly/msg/skr-arab.d.ts +16 -0
- package/blocklySkini/blockly/msg/skr-arab.js +447 -0
- package/blocklySkini/blockly/msg/sl.d.ts +16 -0
- package/blocklySkini/blockly/msg/sl.js +447 -0
- package/blocklySkini/blockly/msg/sq.d.ts +16 -0
- package/blocklySkini/blockly/msg/sq.js +447 -0
- package/blocklySkini/blockly/msg/sr-latn.d.ts +16 -0
- package/blocklySkini/blockly/msg/sr-latn.js +447 -0
- package/blocklySkini/blockly/msg/sr.d.ts +16 -0
- package/blocklySkini/blockly/msg/sr.js +447 -0
- package/blocklySkini/blockly/msg/sv.d.ts +16 -0
- package/blocklySkini/blockly/msg/sv.js +447 -0
- package/blocklySkini/blockly/msg/synonyms.d.ts +16 -0
- package/blocklySkini/blockly/msg/ta.d.ts +16 -0
- package/blocklySkini/blockly/msg/ta.js +447 -0
- package/blocklySkini/blockly/msg/tcy.d.ts +16 -0
- package/blocklySkini/blockly/msg/tcy.js +447 -0
- package/blocklySkini/blockly/msg/te.d.ts +16 -0
- package/blocklySkini/blockly/msg/te.js +447 -0
- package/blocklySkini/blockly/msg/th.d.ts +16 -0
- package/blocklySkini/blockly/msg/th.js +447 -0
- package/blocklySkini/blockly/msg/tl.d.ts +16 -0
- package/blocklySkini/blockly/msg/tl.js +447 -0
- package/blocklySkini/blockly/msg/tlh.d.ts +16 -0
- package/blocklySkini/blockly/msg/tlh.js +447 -0
- package/blocklySkini/blockly/msg/tr.d.ts +16 -0
- package/blocklySkini/blockly/msg/tr.js +447 -0
- package/blocklySkini/blockly/msg/ug-arab.d.ts +16 -0
- package/blocklySkini/blockly/msg/ug-arab.js +447 -0
- package/blocklySkini/blockly/msg/uk.d.ts +16 -0
- package/blocklySkini/blockly/msg/uk.js +447 -0
- package/blocklySkini/blockly/msg/ur.d.ts +16 -0
- package/blocklySkini/blockly/msg/ur.js +447 -0
- package/blocklySkini/blockly/msg/vi.d.ts +16 -0
- package/blocklySkini/blockly/msg/vi.js +447 -0
- package/blocklySkini/blockly/msg/xmf.d.ts +16 -0
- package/blocklySkini/blockly/msg/xmf.js +447 -0
- package/blocklySkini/blockly/msg/yo.d.ts +16 -0
- package/blocklySkini/blockly/msg/yo.js +447 -0
- package/blocklySkini/blockly/msg/zh-hans.d.ts +16 -0
- package/blocklySkini/blockly/msg/zh-hans.js +447 -0
- package/blocklySkini/blockly/msg/zh-hant.d.ts +16 -0
- package/blocklySkini/blockly/msg/zh-hant.js +447 -0
- package/blocklySkini/blockly/node.js +35 -0
- package/blocklySkini/blockly/package.json +84 -0
- package/blocklySkini/blockly/php.d.ts +15 -0
- package/blocklySkini/blockly/php.js +27 -0
- package/blocklySkini/blockly/php_compressed.js +103 -0
- package/blocklySkini/blockly/php_compressed.js.map +1 -0
- package/blocklySkini/blockly/python.d.ts +15 -0
- package/blocklySkini/blockly/python.js +27 -0
- package/blocklySkini/blockly/python_compressed.js +98 -0
- package/blocklySkini/blockly/python_compressed.js.map +1 -0
- package/blocklySkini/blocklySkini.html +81 -0
- package/blocklySkini/orchestrations/.xml +1 -0
- package/blocklySkini/orchestrations/BluesSkini-1.xml +231 -0
- package/blocklySkini/orchestrations/BluesSkini-2.xml +741 -0
- package/blocklySkini/orchestrations/BluesSkini-3.xml +731 -0
- package/blocklySkini/orchestrations/BluesSkini-4.xml +695 -0
- package/blocklySkini/orchestrations/BluesSkini-5.xml +731 -0
- package/blocklySkini/orchestrations/BluesSkini.xml +704 -0
- package/blocklySkini/orchestrations/FunkBitwig-1.xml +778 -0
- package/blocklySkini/orchestrations/FunkBitwig-2.xml +471 -0
- package/blocklySkini/orchestrations/JouerLeBonInstrument1-1.xml +784 -0
- package/blocklySkini/orchestrations/MajeurMineur-1.xml +638 -0
- package/blocklySkini/orchestrations/Opus5-3 - Copie.xml +1041 -0
- package/blocklySkini/orchestrations/Opus5-3.xml +1128 -0
- package/blocklySkini/orchestrations/Quatuor1-1.xml +357 -0
- package/blocklySkini/orchestrations/TechnoBitwig-1.xml +221 -0
- package/blocklySkini/orchestrations/TestBlockly.xml +497 -0
- package/blocklySkini/orchestrations/TestBlockly1.xml +500 -0
- package/blocklySkini/orchestrations/TestBlockly2.xml +792 -0
- package/blocklySkini/orchestrations/TestBlockly3-1.xml +1182 -0
- package/blocklySkini/orchestrations/TestBlockly3.xml +1251 -0
- package/blocklySkini/orchestrations/TestFunction.xml +143 -0
- package/blocklySkini/orchestrations/TestIf.xml +80 -0
- package/blocklySkini/orchestrations/TestLoop.xml +127 -0
- package/blocklySkini/orchestrations/TestOrchestration2.xml +460 -0
- package/blocklySkini/orchestrations/TestPrint.xml +70 -0
- package/blocklySkini/orchestrations/TestSubMod.xml +81 -0
- package/blocklySkini/orchestrations/Testlogic.xml +113 -0
- package/blocklySkini/orchestrations/TrouveLaPercu-1.xml +813 -0
- package/blocklySkini/orchestrations/TrouveLaPercu-2.xml +813 -0
- package/blocklySkini/orchestrations/bar.xml +496 -0
- package/blocklySkini/orchestrations/bar2.xml +496 -0
- package/blocklySkini/orchestrations/foo.xml +500 -0
- package/blocklySkini/orchestrations/opus5Blockly - Copie.xml +496 -0
- package/blocklySkini/orchestrations/opus5Blockly-3.xml +868 -0
- package/blocklySkini/orchestrations/opus5Blockly.xml +496 -0
- package/blocklySkini/orchestrations/testOrchestration3.xml +483 -0
- package/blocklySkini/orchestrations/testOrchestration4.xml +487 -0
- package/blocklySkini/scripts/hiphop_blocks.js +6104 -0
- package/blocklySkini/scripts/main2.js +801 -0
- package/blocklySkini/styles/index.css +320 -0
- package/blocklySkini/styles/material.css +11552 -0
- package/package.json +4 -3
|
@@ -0,0 +1,404 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2012 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @fileoverview Utility functions for handling procedures.
|
|
9
|
+
* @author fraser@google.com (Neil Fraser)
|
|
10
|
+
*/
|
|
11
|
+
'use strict';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* @name Blockly.Procedures
|
|
15
|
+
* @namespace
|
|
16
|
+
*/
|
|
17
|
+
goog.provide('Blockly.Procedures');
|
|
18
|
+
|
|
19
|
+
goog.require('Blockly.Blocks');
|
|
20
|
+
goog.require('Blockly.constants');
|
|
21
|
+
goog.require('Blockly.Events');
|
|
22
|
+
goog.require('Blockly.Events.BlockChange');
|
|
23
|
+
goog.require('Blockly.Field');
|
|
24
|
+
goog.require('Blockly.Msg');
|
|
25
|
+
goog.require('Blockly.Names');
|
|
26
|
+
goog.require('Blockly.utils.xml');
|
|
27
|
+
goog.require('Blockly.Workspace');
|
|
28
|
+
goog.require('Blockly.Xml');
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Constant to separate procedure names from variables and generated functions
|
|
33
|
+
* when running generators.
|
|
34
|
+
* @deprecated Use Blockly.PROCEDURE_CATEGORY_NAME
|
|
35
|
+
*/
|
|
36
|
+
Blockly.Procedures.NAME_TYPE = Blockly.PROCEDURE_CATEGORY_NAME;
|
|
37
|
+
|
|
38
|
+
/**
|
|
39
|
+
* The default argument for a procedures_mutatorarg block.
|
|
40
|
+
* @type {string}
|
|
41
|
+
*/
|
|
42
|
+
Blockly.Procedures.DEFAULT_ARG = 'x';
|
|
43
|
+
|
|
44
|
+
/**
|
|
45
|
+
* Procedure block type.
|
|
46
|
+
* @typedef {{
|
|
47
|
+
* getProcedureCall: function():string,
|
|
48
|
+
* renameProcedure: function(string,string),
|
|
49
|
+
* getProcedureDef: function():!Array
|
|
50
|
+
* }}
|
|
51
|
+
*/
|
|
52
|
+
Blockly.Procedures.ProcedureBlock;
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Find all user-created procedure definitions in a workspace.
|
|
56
|
+
* @param {!Blockly.Workspace} root Root workspace.
|
|
57
|
+
* @return {!Array.<!Array.<!Array>>} Pair of arrays, the
|
|
58
|
+
* first contains procedures without return variables, the second with.
|
|
59
|
+
* Each procedure is defined by a three-element list of name, parameter
|
|
60
|
+
* list, and return value boolean.
|
|
61
|
+
*/
|
|
62
|
+
Blockly.Procedures.allProcedures = function(root) {
|
|
63
|
+
var proceduresNoReturn = root.getBlocksByType('procedures_defnoreturn', false)
|
|
64
|
+
.map(function(block) {
|
|
65
|
+
return /** @type {!Blockly.Procedures.ProcedureBlock} */ (block).getProcedureDef();
|
|
66
|
+
});
|
|
67
|
+
var proceduresReturn = root.getBlocksByType('procedures_defreturn', false).map(function(block) {
|
|
68
|
+
return /** @type {!Blockly.Procedures.ProcedureBlock} */ (block).getProcedureDef();
|
|
69
|
+
});
|
|
70
|
+
proceduresNoReturn.sort(Blockly.Procedures.procTupleComparator_);
|
|
71
|
+
proceduresReturn.sort(Blockly.Procedures.procTupleComparator_);
|
|
72
|
+
return [proceduresNoReturn, proceduresReturn];
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Comparison function for case-insensitive sorting of the first element of
|
|
77
|
+
* a tuple.
|
|
78
|
+
* @param {!Array} ta First tuple.
|
|
79
|
+
* @param {!Array} tb Second tuple.
|
|
80
|
+
* @return {number} -1, 0, or 1 to signify greater than, equality, or less than.
|
|
81
|
+
* @private
|
|
82
|
+
*/
|
|
83
|
+
Blockly.Procedures.procTupleComparator_ = function(ta, tb) {
|
|
84
|
+
return ta[0].toLowerCase().localeCompare(tb[0].toLowerCase());
|
|
85
|
+
};
|
|
86
|
+
|
|
87
|
+
/**
|
|
88
|
+
* Ensure two identically-named procedures don't exist.
|
|
89
|
+
* Take the proposed procedure name, and return a legal name i.e. one that
|
|
90
|
+
* is not empty and doesn't collide with other procedures.
|
|
91
|
+
* @param {string} name Proposed procedure name.
|
|
92
|
+
* @param {!Blockly.Block} block Block to disambiguate.
|
|
93
|
+
* @return {string} Non-colliding name.
|
|
94
|
+
*/
|
|
95
|
+
Blockly.Procedures.findLegalName = function(name, block) {
|
|
96
|
+
if (block.isInFlyout) {
|
|
97
|
+
// Flyouts can have multiple procedures called 'do something'.
|
|
98
|
+
return name;
|
|
99
|
+
}
|
|
100
|
+
name = name || Blockly.Msg['UNNAMED_KEY'] || 'unnamed';
|
|
101
|
+
while (!Blockly.Procedures.isLegalName_(name, block.workspace, block)) {
|
|
102
|
+
// Collision with another procedure.
|
|
103
|
+
var r = name.match(/^(.*?)(\d+)$/);
|
|
104
|
+
if (!r) {
|
|
105
|
+
name += '2';
|
|
106
|
+
} else {
|
|
107
|
+
name = r[1] + (parseInt(r[2], 10) + 1);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return name;
|
|
111
|
+
};
|
|
112
|
+
|
|
113
|
+
/**
|
|
114
|
+
* Does this procedure have a legal name? Illegal names include names of
|
|
115
|
+
* procedures already defined.
|
|
116
|
+
* @param {string} name The questionable name.
|
|
117
|
+
* @param {!Blockly.Workspace} workspace The workspace to scan for collisions.
|
|
118
|
+
* @param {Blockly.Block=} opt_exclude Optional block to exclude from
|
|
119
|
+
* comparisons (one doesn't want to collide with oneself).
|
|
120
|
+
* @return {boolean} True if the name is legal.
|
|
121
|
+
* @private
|
|
122
|
+
*/
|
|
123
|
+
Blockly.Procedures.isLegalName_ = function(name, workspace, opt_exclude) {
|
|
124
|
+
return !Blockly.Procedures.isNameUsed(name, workspace, opt_exclude);
|
|
125
|
+
};
|
|
126
|
+
|
|
127
|
+
/**
|
|
128
|
+
* Return if the given name is already a procedure name.
|
|
129
|
+
* @param {string} name The questionable name.
|
|
130
|
+
* @param {!Blockly.Workspace} workspace The workspace to scan for collisions.
|
|
131
|
+
* @param {Blockly.Block=} opt_exclude Optional block to exclude from
|
|
132
|
+
* comparisons (one doesn't want to collide with oneself).
|
|
133
|
+
* @return {boolean} True if the name is used, otherwise return false.
|
|
134
|
+
*/
|
|
135
|
+
Blockly.Procedures.isNameUsed = function(name, workspace, opt_exclude) {
|
|
136
|
+
var blocks = workspace.getAllBlocks(false);
|
|
137
|
+
// Iterate through every block and check the name.
|
|
138
|
+
for (var i = 0; i < blocks.length; i++) {
|
|
139
|
+
if (blocks[i] == opt_exclude) {
|
|
140
|
+
continue;
|
|
141
|
+
}
|
|
142
|
+
if (blocks[i].getProcedureDef) {
|
|
143
|
+
var procedureBlock = /** @type {!Blockly.Procedures.ProcedureBlock} */ (
|
|
144
|
+
blocks[i]);
|
|
145
|
+
var procName = procedureBlock.getProcedureDef();
|
|
146
|
+
if (Blockly.Names.equals(procName[0], name)) {
|
|
147
|
+
return true;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
return false;
|
|
152
|
+
};
|
|
153
|
+
|
|
154
|
+
/**
|
|
155
|
+
* Rename a procedure. Called by the editable field.
|
|
156
|
+
* @param {string} name The proposed new name.
|
|
157
|
+
* @return {string} The accepted name.
|
|
158
|
+
* @this {Blockly.Field}
|
|
159
|
+
*/
|
|
160
|
+
Blockly.Procedures.rename = function(name) {
|
|
161
|
+
// Strip leading and trailing whitespace. Beyond this, all names are legal.
|
|
162
|
+
name = name.trim();
|
|
163
|
+
|
|
164
|
+
var legalName = Blockly.Procedures.findLegalName(name,
|
|
165
|
+
/** @type {!Blockly.Block} */ (this.getSourceBlock()));
|
|
166
|
+
var oldName = this.getValue();
|
|
167
|
+
if (oldName != name && oldName != legalName) {
|
|
168
|
+
// Rename any callers.
|
|
169
|
+
var blocks = this.getSourceBlock().workspace.getAllBlocks(false);
|
|
170
|
+
for (var i = 0; i < blocks.length; i++) {
|
|
171
|
+
if (blocks[i].renameProcedure) {
|
|
172
|
+
var procedureBlock = /** @type {!Blockly.Procedures.ProcedureBlock} */ (
|
|
173
|
+
blocks[i]);
|
|
174
|
+
procedureBlock.renameProcedure(
|
|
175
|
+
/** @type {string} */ (oldName), legalName);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
return legalName;
|
|
180
|
+
};
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* Construct the blocks required by the flyout for the procedure category.
|
|
184
|
+
* @param {!Blockly.Workspace} workspace The workspace containing procedures.
|
|
185
|
+
* @return {!Array.<!Element>} Array of XML block elements.
|
|
186
|
+
*/
|
|
187
|
+
Blockly.Procedures.flyoutCategory = function(workspace) {
|
|
188
|
+
var xmlList = [];
|
|
189
|
+
if (Blockly.Blocks['procedures_defnoreturn']) {
|
|
190
|
+
// <block type="procedures_defnoreturn" gap="16">
|
|
191
|
+
// <field name="NAME">do something</field>
|
|
192
|
+
// </block>
|
|
193
|
+
var block = Blockly.utils.xml.createElement('block');
|
|
194
|
+
block.setAttribute('type', 'procedures_defnoreturn');
|
|
195
|
+
block.setAttribute('gap', 16);
|
|
196
|
+
var nameField = Blockly.utils.xml.createElement('field');
|
|
197
|
+
nameField.setAttribute('name', 'NAME');
|
|
198
|
+
nameField.appendChild(Blockly.utils.xml.createTextNode(
|
|
199
|
+
Blockly.Msg['PROCEDURES_DEFNORETURN_PROCEDURE']));
|
|
200
|
+
block.appendChild(nameField);
|
|
201
|
+
xmlList.push(block);
|
|
202
|
+
}
|
|
203
|
+
if (Blockly.Blocks['procedures_defreturn']) {
|
|
204
|
+
// <block type="procedures_defreturn" gap="16">
|
|
205
|
+
// <field name="NAME">do something</field>
|
|
206
|
+
// </block>
|
|
207
|
+
var block = Blockly.utils.xml.createElement('block');
|
|
208
|
+
block.setAttribute('type', 'procedures_defreturn');
|
|
209
|
+
block.setAttribute('gap', 16);
|
|
210
|
+
var nameField = Blockly.utils.xml.createElement('field');
|
|
211
|
+
nameField.setAttribute('name', 'NAME');
|
|
212
|
+
nameField.appendChild(Blockly.utils.xml.createTextNode(
|
|
213
|
+
Blockly.Msg['PROCEDURES_DEFRETURN_PROCEDURE']));
|
|
214
|
+
block.appendChild(nameField);
|
|
215
|
+
xmlList.push(block);
|
|
216
|
+
}
|
|
217
|
+
if (Blockly.Blocks['procedures_ifreturn']) {
|
|
218
|
+
// <block type="procedures_ifreturn" gap="16"></block>
|
|
219
|
+
var block = Blockly.utils.xml.createElement('block');
|
|
220
|
+
block.setAttribute('type', 'procedures_ifreturn');
|
|
221
|
+
block.setAttribute('gap', 16);
|
|
222
|
+
xmlList.push(block);
|
|
223
|
+
}
|
|
224
|
+
if (xmlList.length) {
|
|
225
|
+
// Add slightly larger gap between system blocks and user calls.
|
|
226
|
+
xmlList[xmlList.length - 1].setAttribute('gap', 24);
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
function populateProcedures(procedureList, templateName) {
|
|
230
|
+
for (var i = 0; i < procedureList.length; i++) {
|
|
231
|
+
var name = procedureList[i][0];
|
|
232
|
+
var args = procedureList[i][1];
|
|
233
|
+
// <block type="procedures_callnoreturn" gap="16">
|
|
234
|
+
// <mutation name="do something">
|
|
235
|
+
// <arg name="x"></arg>
|
|
236
|
+
// </mutation>
|
|
237
|
+
// </block>
|
|
238
|
+
var block = Blockly.utils.xml.createElement('block');
|
|
239
|
+
block.setAttribute('type', templateName);
|
|
240
|
+
block.setAttribute('gap', 16);
|
|
241
|
+
var mutation = Blockly.utils.xml.createElement('mutation');
|
|
242
|
+
mutation.setAttribute('name', name);
|
|
243
|
+
block.appendChild(mutation);
|
|
244
|
+
for (var j = 0; j < args.length; j++) {
|
|
245
|
+
var arg = Blockly.utils.xml.createElement('arg');
|
|
246
|
+
arg.setAttribute('name', args[j]);
|
|
247
|
+
mutation.appendChild(arg);
|
|
248
|
+
}
|
|
249
|
+
xmlList.push(block);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
|
|
253
|
+
var tuple = Blockly.Procedures.allProcedures(workspace);
|
|
254
|
+
populateProcedures(tuple[0], 'procedures_callnoreturn');
|
|
255
|
+
populateProcedures(tuple[1], 'procedures_callreturn');
|
|
256
|
+
return xmlList;
|
|
257
|
+
};
|
|
258
|
+
|
|
259
|
+
/**
|
|
260
|
+
* Updates the procedure mutator's flyout so that the arg block is not a
|
|
261
|
+
* duplicate of another arg.
|
|
262
|
+
* @param {!Blockly.Workspace} workspace The procedure mutator's workspace. This
|
|
263
|
+
* workspace's flyout is what is being updated.
|
|
264
|
+
* @private
|
|
265
|
+
*/
|
|
266
|
+
Blockly.Procedures.updateMutatorFlyout_ = function(workspace) {
|
|
267
|
+
var usedNames = [];
|
|
268
|
+
var blocks = workspace.getBlocksByType('procedures_mutatorarg', false);
|
|
269
|
+
for (var i = 0, block; (block = blocks[i]); i++) {
|
|
270
|
+
usedNames.push(block.getFieldValue('NAME'));
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
var xml = Blockly.utils.xml.createElement('xml');
|
|
274
|
+
var argBlock = Blockly.utils.xml.createElement('block');
|
|
275
|
+
argBlock.setAttribute('type', 'procedures_mutatorarg');
|
|
276
|
+
var nameField = Blockly.utils.xml.createElement('field');
|
|
277
|
+
nameField.setAttribute('name', 'NAME');
|
|
278
|
+
var argValue = Blockly.Variables.generateUniqueNameFromOptions(
|
|
279
|
+
Blockly.Procedures.DEFAULT_ARG, usedNames);
|
|
280
|
+
var fieldContent = Blockly.utils.xml.createTextNode(argValue);
|
|
281
|
+
|
|
282
|
+
nameField.appendChild(fieldContent);
|
|
283
|
+
argBlock.appendChild(nameField);
|
|
284
|
+
xml.appendChild(argBlock);
|
|
285
|
+
|
|
286
|
+
workspace.updateToolbox(xml);
|
|
287
|
+
};
|
|
288
|
+
|
|
289
|
+
/**
|
|
290
|
+
* Listens for when a procedure mutator is opened. Then it triggers a flyout
|
|
291
|
+
* update and adds a mutator change listener to the mutator workspace.
|
|
292
|
+
* @param {!Blockly.Events.Abstract} e The event that triggered this listener.
|
|
293
|
+
* @package
|
|
294
|
+
*/
|
|
295
|
+
Blockly.Procedures.mutatorOpenListener = function(e) {
|
|
296
|
+
if (e.type != Blockly.Events.UI || e.element != 'mutatorOpen' ||
|
|
297
|
+
!e.newValue) {
|
|
298
|
+
return;
|
|
299
|
+
}
|
|
300
|
+
var workspaceId = /** @type {string} */ (e.workspaceId);
|
|
301
|
+
var block = Blockly.Workspace.getById(workspaceId)
|
|
302
|
+
.getBlockById(e.blockId);
|
|
303
|
+
var type = block.type;
|
|
304
|
+
if (type != 'procedures_defnoreturn' && type != 'procedures_defreturn') {
|
|
305
|
+
return;
|
|
306
|
+
}
|
|
307
|
+
var workspace = block.mutator.getWorkspace();
|
|
308
|
+
Blockly.Procedures.updateMutatorFlyout_(workspace);
|
|
309
|
+
workspace.addChangeListener(Blockly.Procedures.mutatorChangeListener_);
|
|
310
|
+
};
|
|
311
|
+
|
|
312
|
+
/**
|
|
313
|
+
* Listens for changes in a procedure mutator and triggers flyout updates when
|
|
314
|
+
* necessary.
|
|
315
|
+
* @param {!Blockly.Events.Abstract} e The event that triggered this listener.
|
|
316
|
+
* @private
|
|
317
|
+
*/
|
|
318
|
+
Blockly.Procedures.mutatorChangeListener_ = function(e) {
|
|
319
|
+
if (e.type != Blockly.Events.BLOCK_CREATE &&
|
|
320
|
+
e.type != Blockly.Events.BLOCK_DELETE &&
|
|
321
|
+
e.type != Blockly.Events.BLOCK_CHANGE) {
|
|
322
|
+
return;
|
|
323
|
+
}
|
|
324
|
+
var workspaceId = /** @type {string} */ (e.workspaceId);
|
|
325
|
+
var workspace = /** @type {!Blockly.WorkspaceSvg} */
|
|
326
|
+
(Blockly.Workspace.getById(workspaceId));
|
|
327
|
+
Blockly.Procedures.updateMutatorFlyout_(workspace);
|
|
328
|
+
};
|
|
329
|
+
|
|
330
|
+
/**
|
|
331
|
+
* Find all the callers of a named procedure.
|
|
332
|
+
* @param {string} name Name of procedure.
|
|
333
|
+
* @param {!Blockly.Workspace} workspace The workspace to find callers in.
|
|
334
|
+
* @return {!Array.<!Blockly.Block>} Array of caller blocks.
|
|
335
|
+
*/
|
|
336
|
+
Blockly.Procedures.getCallers = function(name, workspace) {
|
|
337
|
+
var callers = [];
|
|
338
|
+
var blocks = workspace.getAllBlocks(false);
|
|
339
|
+
// Iterate through every block and check the name.
|
|
340
|
+
for (var i = 0; i < blocks.length; i++) {
|
|
341
|
+
if (blocks[i].getProcedureCall) {
|
|
342
|
+
var procedureBlock = /** @type {!Blockly.Procedures.ProcedureBlock} */ (
|
|
343
|
+
blocks[i]);
|
|
344
|
+
var procName = procedureBlock.getProcedureCall();
|
|
345
|
+
// Procedure name may be null if the block is only half-built.
|
|
346
|
+
if (procName && Blockly.Names.equals(procName, name)) {
|
|
347
|
+
callers.push(blocks[i]);
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
}
|
|
351
|
+
return callers;
|
|
352
|
+
};
|
|
353
|
+
|
|
354
|
+
/**
|
|
355
|
+
* When a procedure definition changes its parameters, find and edit all its
|
|
356
|
+
* callers.
|
|
357
|
+
* @param {!Blockly.Block} defBlock Procedure definition block.
|
|
358
|
+
*/
|
|
359
|
+
Blockly.Procedures.mutateCallers = function(defBlock) {
|
|
360
|
+
var oldRecordUndo = Blockly.Events.recordUndo;
|
|
361
|
+
var procedureBlock = /** @type {!Blockly.Procedures.ProcedureBlock} */ (
|
|
362
|
+
defBlock);
|
|
363
|
+
var name = procedureBlock.getProcedureDef()[0];
|
|
364
|
+
var xmlElement = defBlock.mutationToDom(true);
|
|
365
|
+
var callers = Blockly.Procedures.getCallers(name, defBlock.workspace);
|
|
366
|
+
for (var i = 0, caller; (caller = callers[i]); i++) {
|
|
367
|
+
var oldMutationDom = caller.mutationToDom();
|
|
368
|
+
var oldMutation = oldMutationDom && Blockly.Xml.domToText(oldMutationDom);
|
|
369
|
+
caller.domToMutation(xmlElement);
|
|
370
|
+
var newMutationDom = caller.mutationToDom();
|
|
371
|
+
var newMutation = newMutationDom && Blockly.Xml.domToText(newMutationDom);
|
|
372
|
+
if (oldMutation != newMutation) {
|
|
373
|
+
// Fire a mutation on every caller block. But don't record this as an
|
|
374
|
+
// undo action since it is deterministically tied to the procedure's
|
|
375
|
+
// definition mutation.
|
|
376
|
+
Blockly.Events.recordUndo = false;
|
|
377
|
+
Blockly.Events.fire(new Blockly.Events.BlockChange(
|
|
378
|
+
caller, 'mutation', null, oldMutation, newMutation));
|
|
379
|
+
Blockly.Events.recordUndo = oldRecordUndo;
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
};
|
|
383
|
+
|
|
384
|
+
/**
|
|
385
|
+
* Find the definition block for the named procedure.
|
|
386
|
+
* @param {string} name Name of procedure.
|
|
387
|
+
* @param {!Blockly.Workspace} workspace The workspace to search.
|
|
388
|
+
* @return {Blockly.Block} The procedure definition block, or null not found.
|
|
389
|
+
*/
|
|
390
|
+
Blockly.Procedures.getDefinition = function(name, workspace) {
|
|
391
|
+
// Assume that a procedure definition is a top block.
|
|
392
|
+
var blocks = workspace.getTopBlocks(false);
|
|
393
|
+
for (var i = 0; i < blocks.length; i++) {
|
|
394
|
+
if (blocks[i].getProcedureDef) {
|
|
395
|
+
var procedureBlock = /** @type {!Blockly.Procedures.ProcedureBlock} */ (
|
|
396
|
+
blocks[i]);
|
|
397
|
+
var tuple = procedureBlock.getProcedureDef();
|
|
398
|
+
if (tuple && Blockly.Names.equals(tuple[0], name)) {
|
|
399
|
+
return blocks[i];
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
return null;
|
|
404
|
+
};
|
|
@@ -0,0 +1,265 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2020 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @fileoverview This file is a universal registry that provides generic methods
|
|
9
|
+
* for registering and unregistering different types of classes.
|
|
10
|
+
* @author aschmiedt@google.com (Abby Schmiedt)
|
|
11
|
+
*/
|
|
12
|
+
'use strict';
|
|
13
|
+
|
|
14
|
+
goog.provide('Blockly.registry');
|
|
15
|
+
|
|
16
|
+
goog.requireType('Blockly.blockRendering.Renderer');
|
|
17
|
+
goog.requireType('Blockly.Events.Abstract');
|
|
18
|
+
goog.requireType('Blockly.Field');
|
|
19
|
+
goog.requireType('Blockly.IConnectionChecker');
|
|
20
|
+
goog.requireType('Blockly.IFlyout');
|
|
21
|
+
goog.requireType('Blockly.IToolbox');
|
|
22
|
+
goog.requireType('Blockly.Theme');
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* A map of maps. With the keys being the type and name of the class we are
|
|
27
|
+
* registering and the value being the constructor function.
|
|
28
|
+
* e.g. {'field': {'field_angle': Blockly.FieldAngle}}
|
|
29
|
+
*
|
|
30
|
+
* @type {Object<string, Object<string, function(new:?)>>}
|
|
31
|
+
*/
|
|
32
|
+
Blockly.registry.typeMap_ = {};
|
|
33
|
+
|
|
34
|
+
/**
|
|
35
|
+
* The string used to register the default class for a type of plugin.
|
|
36
|
+
* @type {string}
|
|
37
|
+
*/
|
|
38
|
+
Blockly.registry.DEFAULT = 'default';
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* A name with the type of the element stored in the generic.
|
|
42
|
+
* @param {string} name The name of the registry type.
|
|
43
|
+
* @constructor
|
|
44
|
+
* @template T
|
|
45
|
+
*/
|
|
46
|
+
Blockly.registry.Type = function(name) {
|
|
47
|
+
/**
|
|
48
|
+
* @type {string}
|
|
49
|
+
* @private
|
|
50
|
+
*/
|
|
51
|
+
this.name_ = name;
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* Returns the name of the type.
|
|
56
|
+
* @return {string} The name.
|
|
57
|
+
* @override
|
|
58
|
+
*/
|
|
59
|
+
Blockly.registry.Type.prototype.toString = function() {
|
|
60
|
+
return this.name_;
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
/** @type {!Blockly.registry.Type<Blockly.IConnectionChecker>} */
|
|
64
|
+
Blockly.registry.Type.CONNECTION_CHECKER =
|
|
65
|
+
new Blockly.registry.Type('connectionChecker');
|
|
66
|
+
|
|
67
|
+
/** @type {!Blockly.registry.Type<Blockly.Events.Abstract>} */
|
|
68
|
+
Blockly.registry.Type.EVENT = new Blockly.registry.Type('event');
|
|
69
|
+
|
|
70
|
+
/** @type {!Blockly.registry.Type<Blockly.Field>} */
|
|
71
|
+
Blockly.registry.Type.FIELD = new Blockly.registry.Type('field');
|
|
72
|
+
|
|
73
|
+
/** @type {!Blockly.registry.Type<Blockly.blockRendering.Renderer>} */
|
|
74
|
+
Blockly.registry.Type.RENDERER = new Blockly.registry.Type('renderer');
|
|
75
|
+
|
|
76
|
+
/** @type {!Blockly.registry.Type<Blockly.IToolbox>} */
|
|
77
|
+
Blockly.registry.Type.TOOLBOX = new Blockly.registry.Type('toolbox');
|
|
78
|
+
|
|
79
|
+
/** @type {!Blockly.registry.Type<Blockly.Theme>} */
|
|
80
|
+
Blockly.registry.Type.THEME = new Blockly.registry.Type('theme');
|
|
81
|
+
|
|
82
|
+
/** @type {!Blockly.registry.Type<Blockly.ToolboxItem>} */
|
|
83
|
+
Blockly.registry.Type.TOOLBOX_ITEM = new Blockly.registry.Type('toolboxItem');
|
|
84
|
+
|
|
85
|
+
/** @type {!Blockly.registry.Type<Blockly.IFlyout>} */
|
|
86
|
+
Blockly.registry.Type.FLYOUTS_VERTICAL_TOOLBOX =
|
|
87
|
+
new Blockly.registry.Type('flyoutsVerticalToolbox');
|
|
88
|
+
|
|
89
|
+
/** @type {!Blockly.registry.Type<Blockly.IFlyout>} */
|
|
90
|
+
Blockly.registry.Type.FLYOUTS_HORIZONTAL_TOOLBOX =
|
|
91
|
+
new Blockly.registry.Type('flyoutsHorizontalToolbox');
|
|
92
|
+
|
|
93
|
+
/**
|
|
94
|
+
* Registers a class based on a type and name.
|
|
95
|
+
* @param {string|!Blockly.registry.Type<T>} type The type of the plugin.
|
|
96
|
+
* (e.g. Field, Renderer)
|
|
97
|
+
* @param {string} name The plugin's name. (Ex. field_angle, geras)
|
|
98
|
+
* @param {?function(new:T, ...?)|Object} registryItem The class or object to
|
|
99
|
+
* register.
|
|
100
|
+
* @param {boolean=} opt_quiet True to prevent an error when overriding an
|
|
101
|
+
* already registered item.
|
|
102
|
+
* @throws {Error} if the type or name is empty, a name with the given type has
|
|
103
|
+
* already been registered, or if the given class or object is not valid for it's type.
|
|
104
|
+
* @template T
|
|
105
|
+
*/
|
|
106
|
+
Blockly.registry.register = function(type, name, registryItem, opt_quiet) {
|
|
107
|
+
if ((!(type instanceof Blockly.registry.Type) && typeof type != 'string') || String(type).trim() == '') {
|
|
108
|
+
throw Error('Invalid type "' + type + '". The type must be a' +
|
|
109
|
+
' non-empty string or a Blockly.registry.Type.');
|
|
110
|
+
}
|
|
111
|
+
type = String(type).toLowerCase();
|
|
112
|
+
|
|
113
|
+
if ((typeof name != 'string') || (name.trim() == '')) {
|
|
114
|
+
throw Error('Invalid name "' + name + '". The name must be a' +
|
|
115
|
+
' non-empty string.');
|
|
116
|
+
}
|
|
117
|
+
name = name.toLowerCase();
|
|
118
|
+
if (!registryItem) {
|
|
119
|
+
throw Error('Can not register a null value');
|
|
120
|
+
}
|
|
121
|
+
var typeRegistry = Blockly.registry.typeMap_[type];
|
|
122
|
+
// If the type registry has not been created, create it.
|
|
123
|
+
if (!typeRegistry) {
|
|
124
|
+
typeRegistry = Blockly.registry.typeMap_[type] = {};
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
// Validate that the given class has all the required properties.
|
|
128
|
+
Blockly.registry.validate_(type, registryItem);
|
|
129
|
+
|
|
130
|
+
// Don't throw an error if opt_quiet is true.
|
|
131
|
+
if (!opt_quiet && typeRegistry[name]) {
|
|
132
|
+
throw Error('Name "' + name + '" with type "' + type + '" already registered.');
|
|
133
|
+
}
|
|
134
|
+
typeRegistry[name] = registryItem;
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* Checks the given registry item for properties that are required based on the
|
|
139
|
+
* type.
|
|
140
|
+
* @param {string} type The type of the plugin. (e.g. Field, Renderer)
|
|
141
|
+
* @param {Function|Object} registryItem A class or object that we are checking
|
|
142
|
+
* for the required properties.
|
|
143
|
+
* @private
|
|
144
|
+
*/
|
|
145
|
+
Blockly.registry.validate_ = function(type, registryItem) {
|
|
146
|
+
switch (type) {
|
|
147
|
+
case String(Blockly.registry.Type.FIELD):
|
|
148
|
+
if (typeof registryItem.fromJson != 'function') {
|
|
149
|
+
throw Error('Type "' + type + '" must have a fromJson function');
|
|
150
|
+
}
|
|
151
|
+
break;
|
|
152
|
+
}
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Unregisters the registry item with the given type and name.
|
|
157
|
+
* @param {string|!Blockly.registry.Type<T>} type The type of the plugin.
|
|
158
|
+
* (e.g. Field, Renderer)
|
|
159
|
+
* @param {string} name The plugin's name. (Ex. field_angle, geras)
|
|
160
|
+
* @template T
|
|
161
|
+
*/
|
|
162
|
+
Blockly.registry.unregister = function(type, name) {
|
|
163
|
+
type = String(type).toLowerCase();
|
|
164
|
+
name = name.toLowerCase();
|
|
165
|
+
var typeRegistry = Blockly.registry.typeMap_[type];
|
|
166
|
+
if (!typeRegistry) {
|
|
167
|
+
console.warn('No type "' + type + '" found');
|
|
168
|
+
return;
|
|
169
|
+
}
|
|
170
|
+
if (!typeRegistry[name]) {
|
|
171
|
+
console.warn('No name "' + name + '" with type "' + type + '" found');
|
|
172
|
+
return;
|
|
173
|
+
}
|
|
174
|
+
delete Blockly.registry.typeMap_[type][name];
|
|
175
|
+
};
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* Gets the registry item for the given name and type. This can be either a
|
|
179
|
+
* class or an object.
|
|
180
|
+
* @param {string|!Blockly.registry.Type<T>} type The type of the plugin.
|
|
181
|
+
* (e.g. Field, Renderer)
|
|
182
|
+
* @param {string} name The plugin's name. (Ex. field_angle, geras)
|
|
183
|
+
* @return {?function(new:T, ...?)|Object} The class or object with the given
|
|
184
|
+
* name and type or null if none exists.
|
|
185
|
+
* @template T
|
|
186
|
+
*/
|
|
187
|
+
Blockly.registry.getItem_ = function(type, name) {
|
|
188
|
+
type = String(type).toLowerCase();
|
|
189
|
+
name = name.toLowerCase();
|
|
190
|
+
var typeRegistry = Blockly.registry.typeMap_[type];
|
|
191
|
+
if (!typeRegistry) {
|
|
192
|
+
console.warn('No type "' + type + '" found');
|
|
193
|
+
return null;
|
|
194
|
+
}
|
|
195
|
+
if (!typeRegistry[name]) {
|
|
196
|
+
console.warn('No name "' + name + '" with type "' + type + '" found');
|
|
197
|
+
return null;
|
|
198
|
+
}
|
|
199
|
+
return typeRegistry[name];
|
|
200
|
+
};
|
|
201
|
+
|
|
202
|
+
/**
|
|
203
|
+
* Returns whether or not the registry contains an item with the given type and
|
|
204
|
+
* name.
|
|
205
|
+
* @param {string|!Blockly.registry.Type<T>} type The type of the plugin.
|
|
206
|
+
* (e.g. Field, Renderer)
|
|
207
|
+
* @param {string} name The plugin's name. (Ex. field_angle, geras)
|
|
208
|
+
* @return {boolean} True if the registry has an item with the given type and
|
|
209
|
+
* name, false otherwise.
|
|
210
|
+
* @template T
|
|
211
|
+
*/
|
|
212
|
+
Blockly.registry.hasItem = function(type, name) {
|
|
213
|
+
type = String(type).toLowerCase();
|
|
214
|
+
name = name.toLowerCase();
|
|
215
|
+
var typeRegistry = Blockly.registry.typeMap_[type];
|
|
216
|
+
if (!typeRegistry) {
|
|
217
|
+
return false;
|
|
218
|
+
}
|
|
219
|
+
return !!(typeRegistry[name]);
|
|
220
|
+
};
|
|
221
|
+
|
|
222
|
+
/**
|
|
223
|
+
* Gets the class for the given name and type.
|
|
224
|
+
* @param {string|!Blockly.registry.Type<T>} type The type of the plugin.
|
|
225
|
+
* (e.g. Field, Renderer)
|
|
226
|
+
* @param {string} name The plugin's name. (Ex. field_angle, geras)
|
|
227
|
+
* @return {?function(new:T, ...?)} The class with the given name and type or
|
|
228
|
+
* null if none exists.
|
|
229
|
+
* @template T
|
|
230
|
+
*/
|
|
231
|
+
Blockly.registry.getClass = function(type, name) {
|
|
232
|
+
return /** @type {?function(new:T, ...?)} */ (Blockly.registry.getItem_(type, name));
|
|
233
|
+
};
|
|
234
|
+
|
|
235
|
+
/**
|
|
236
|
+
* Gets the object for the given name and type.
|
|
237
|
+
* @param {string|!Blockly.registry.Type<T>} type The type of the plugin.
|
|
238
|
+
* (e.g. Category)
|
|
239
|
+
* @param {string} name The plugin's name. (Ex. logic_category)
|
|
240
|
+
* @returns {T} The object with the given name and type or null if none exists.
|
|
241
|
+
* @template T
|
|
242
|
+
*/
|
|
243
|
+
Blockly.registry.getObject = function(type, name) {
|
|
244
|
+
return /** @type {T} */ (Blockly.registry.getItem_(type, name));
|
|
245
|
+
};
|
|
246
|
+
|
|
247
|
+
/**
|
|
248
|
+
* Gets the class from Blockly options for the given type.
|
|
249
|
+
* This is used for plugins that override a built in feature. (e.g. Toolbox)
|
|
250
|
+
* @param {!Blockly.registry.Type<T>} type The type of the plugin.
|
|
251
|
+
* @param {!Blockly.Options} options The option object to check for the given
|
|
252
|
+
* plugin.
|
|
253
|
+
* @return {?function(new:T, ...?)} The class for the plugin.
|
|
254
|
+
* @template T
|
|
255
|
+
*/
|
|
256
|
+
Blockly.registry.getClassFromOptions = function(type, options) {
|
|
257
|
+
var typeName = type.toString();
|
|
258
|
+
var plugin = options.plugins[typeName] || Blockly.registry.DEFAULT;
|
|
259
|
+
|
|
260
|
+
// If the user passed in a plugin class instead of a registered plugin name.
|
|
261
|
+
if (typeof plugin == 'function') {
|
|
262
|
+
return plugin;
|
|
263
|
+
}
|
|
264
|
+
return Blockly.registry.getClass(type, plugin);
|
|
265
|
+
};
|