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,208 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2019 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @fileoverview The class representing a basic cursor.
|
|
9
|
+
* Used to demo switching between different cursors.
|
|
10
|
+
* @author aschmiedt@google.com (Abby Schmiedt)
|
|
11
|
+
*/
|
|
12
|
+
'use strict';
|
|
13
|
+
|
|
14
|
+
goog.provide('Blockly.BasicCursor');
|
|
15
|
+
|
|
16
|
+
goog.require('Blockly.ASTNode');
|
|
17
|
+
goog.require('Blockly.Cursor');
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
/**
|
|
21
|
+
* Class for a basic cursor.
|
|
22
|
+
* This will allow the user to get to all nodes in the AST by hitting next or
|
|
23
|
+
* previous.
|
|
24
|
+
* @constructor
|
|
25
|
+
* @extends {Blockly.Cursor}
|
|
26
|
+
*/
|
|
27
|
+
Blockly.BasicCursor = function() {
|
|
28
|
+
Blockly.BasicCursor.superClass_.constructor.call(this);
|
|
29
|
+
};
|
|
30
|
+
Blockly.utils.object.inherits(Blockly.BasicCursor, Blockly.Cursor);
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Find the next node in the pre order traversal.
|
|
34
|
+
* @return {Blockly.ASTNode} The next node, or null if the current node is
|
|
35
|
+
* not set or there is no next value.
|
|
36
|
+
* @override
|
|
37
|
+
*/
|
|
38
|
+
Blockly.BasicCursor.prototype.next = function() {
|
|
39
|
+
var curNode = this.getCurNode();
|
|
40
|
+
if (!curNode) {
|
|
41
|
+
return null;
|
|
42
|
+
}
|
|
43
|
+
var newNode = this.getNextNode_(curNode, this.validNode_);
|
|
44
|
+
|
|
45
|
+
if (newNode) {
|
|
46
|
+
this.setCurNode(newNode);
|
|
47
|
+
}
|
|
48
|
+
return newNode;
|
|
49
|
+
};
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* For a basic cursor we only have the ability to go next and previous, so
|
|
53
|
+
* in will also allow the user to get to the next node in the pre order traversal.
|
|
54
|
+
* @return {Blockly.ASTNode} The next node, or null if the current node is
|
|
55
|
+
* not set or there is no next value.
|
|
56
|
+
* @override
|
|
57
|
+
*/
|
|
58
|
+
Blockly.BasicCursor.prototype.in = function() {
|
|
59
|
+
return this.next();
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Find the previous node in the pre order traversal.
|
|
64
|
+
* @return {Blockly.ASTNode} The previous node, or null if the current node
|
|
65
|
+
* is not set or there is no previous value.
|
|
66
|
+
* @override
|
|
67
|
+
*/
|
|
68
|
+
Blockly.BasicCursor.prototype.prev = function() {
|
|
69
|
+
var curNode = this.getCurNode();
|
|
70
|
+
if (!curNode) {
|
|
71
|
+
return null;
|
|
72
|
+
}
|
|
73
|
+
var newNode = this.getPreviousNode_(curNode, this.validNode_);
|
|
74
|
+
|
|
75
|
+
if (newNode) {
|
|
76
|
+
this.setCurNode(newNode);
|
|
77
|
+
}
|
|
78
|
+
return newNode;
|
|
79
|
+
};
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* For a basic cursor we only have the ability to go next and previous, so
|
|
83
|
+
* out will allow the user to get to the previous node in the pre order traversal.
|
|
84
|
+
* @return {Blockly.ASTNode} The previous node, or null if the current node is
|
|
85
|
+
* not set or there is no previous value.
|
|
86
|
+
* @override
|
|
87
|
+
*/
|
|
88
|
+
Blockly.BasicCursor.prototype.out = function() {
|
|
89
|
+
return this.prev();
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Uses pre order traversal to navigate the Blockly AST. This will allow
|
|
94
|
+
* a user to easily navigate the entire Blockly AST without having to go in
|
|
95
|
+
* and out levels on the tree.
|
|
96
|
+
* @param {Blockly.ASTNode} node The current position in the AST.
|
|
97
|
+
* @param {!function(Blockly.ASTNode) : boolean} isValid A function true/false
|
|
98
|
+
* depending on whether the given node should be traversed.
|
|
99
|
+
* @return {Blockly.ASTNode} The next node in the traversal.
|
|
100
|
+
* @protected
|
|
101
|
+
*/
|
|
102
|
+
Blockly.BasicCursor.prototype.getNextNode_ = function(node, isValid) {
|
|
103
|
+
if (!node) {
|
|
104
|
+
return null;
|
|
105
|
+
}
|
|
106
|
+
var newNode = node.in() || node.next();
|
|
107
|
+
if (isValid(newNode)) {
|
|
108
|
+
return newNode;
|
|
109
|
+
} else if (newNode) {
|
|
110
|
+
return this.getNextNode_(newNode, isValid);
|
|
111
|
+
}
|
|
112
|
+
var siblingOrParent = this.findSiblingOrParent_(node.out());
|
|
113
|
+
if (isValid(siblingOrParent)) {
|
|
114
|
+
return siblingOrParent;
|
|
115
|
+
} else if (siblingOrParent) {
|
|
116
|
+
return this.getNextNode_(siblingOrParent, isValid);
|
|
117
|
+
}
|
|
118
|
+
return null;
|
|
119
|
+
};
|
|
120
|
+
|
|
121
|
+
/**
|
|
122
|
+
* Reverses the pre order traversal in order to find the previous node. This will
|
|
123
|
+
* allow a user to easily navigate the entire Blockly AST without having to go in
|
|
124
|
+
* and out levels on the tree.
|
|
125
|
+
* @param {Blockly.ASTNode} node The current position in the AST.
|
|
126
|
+
* @param {!function(Blockly.ASTNode) : boolean} isValid A function true/false
|
|
127
|
+
* depending on whether the given node should be traversed.
|
|
128
|
+
* @return {Blockly.ASTNode} The previous node in the traversal or null if no
|
|
129
|
+
* previous node exists.
|
|
130
|
+
* @protected
|
|
131
|
+
*/
|
|
132
|
+
Blockly.BasicCursor.prototype.getPreviousNode_ = function(node, isValid) {
|
|
133
|
+
if (!node) {
|
|
134
|
+
return null;
|
|
135
|
+
}
|
|
136
|
+
var newNode = node.prev();
|
|
137
|
+
|
|
138
|
+
if (newNode) {
|
|
139
|
+
newNode = this.getRightMostChild_(newNode);
|
|
140
|
+
} else {
|
|
141
|
+
newNode = node.out();
|
|
142
|
+
}
|
|
143
|
+
if (isValid(newNode)) {
|
|
144
|
+
return newNode;
|
|
145
|
+
} else if (newNode) {
|
|
146
|
+
return this.getPreviousNode_(newNode, isValid);
|
|
147
|
+
}
|
|
148
|
+
return null;
|
|
149
|
+
};
|
|
150
|
+
|
|
151
|
+
/**
|
|
152
|
+
* Decides what nodes to traverse and which ones to skip. Currently, it
|
|
153
|
+
* skips output, stack and workspace nodes.
|
|
154
|
+
* @param {Blockly.ASTNode} node The AST node to check whether it is valid.
|
|
155
|
+
* @return {boolean} True if the node should be visited, false otherwise.
|
|
156
|
+
* @protected
|
|
157
|
+
*/
|
|
158
|
+
Blockly.BasicCursor.prototype.validNode_ = function(node) {
|
|
159
|
+
var isValid = false;
|
|
160
|
+
var type = node && node.getType();
|
|
161
|
+
if (type == Blockly.ASTNode.types.OUTPUT ||
|
|
162
|
+
type == Blockly.ASTNode.types.INPUT ||
|
|
163
|
+
type == Blockly.ASTNode.types.FIELD ||
|
|
164
|
+
type == Blockly.ASTNode.types.NEXT ||
|
|
165
|
+
type == Blockly.ASTNode.types.PREVIOUS ||
|
|
166
|
+
type == Blockly.ASTNode.types.WORKSPACE) {
|
|
167
|
+
isValid = true;
|
|
168
|
+
}
|
|
169
|
+
return isValid;
|
|
170
|
+
};
|
|
171
|
+
|
|
172
|
+
/**
|
|
173
|
+
* From the given node find either the next valid sibling or parent.
|
|
174
|
+
* @param {Blockly.ASTNode} node The current position in the AST.
|
|
175
|
+
* @return {Blockly.ASTNode} The parent AST node or null if there are no
|
|
176
|
+
* valid parents.
|
|
177
|
+
* @private
|
|
178
|
+
*/
|
|
179
|
+
Blockly.BasicCursor.prototype.findSiblingOrParent_ = function(node) {
|
|
180
|
+
if (!node) {
|
|
181
|
+
return null;
|
|
182
|
+
}
|
|
183
|
+
var nextNode = node.next();
|
|
184
|
+
if (nextNode) {
|
|
185
|
+
return nextNode;
|
|
186
|
+
}
|
|
187
|
+
return this.findSiblingOrParent_(node.out());
|
|
188
|
+
};
|
|
189
|
+
|
|
190
|
+
|
|
191
|
+
/**
|
|
192
|
+
* Get the right most child of a node.
|
|
193
|
+
* @param {Blockly.ASTNode} node The node to find the right most child of.
|
|
194
|
+
* @return {Blockly.ASTNode} The right most child of the given node, or the node
|
|
195
|
+
* if no child exists.
|
|
196
|
+
* @private
|
|
197
|
+
*/
|
|
198
|
+
Blockly.BasicCursor.prototype.getRightMostChild_ = function(node) {
|
|
199
|
+
if (!node.in()) {
|
|
200
|
+
return node;
|
|
201
|
+
}
|
|
202
|
+
var newNode = node.in();
|
|
203
|
+
while (newNode.next()) {
|
|
204
|
+
newNode = newNode.next();
|
|
205
|
+
}
|
|
206
|
+
return this.getRightMostChild_(newNode);
|
|
207
|
+
|
|
208
|
+
};
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2019 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @fileoverview The class representing a cursor.
|
|
9
|
+
* Used primarily for keyboard navigation.
|
|
10
|
+
* @author aschmiedt@google.com (Abby Schmiedt)
|
|
11
|
+
*/
|
|
12
|
+
'use strict';
|
|
13
|
+
|
|
14
|
+
goog.provide('Blockly.Cursor');
|
|
15
|
+
|
|
16
|
+
goog.require('Blockly.Action');
|
|
17
|
+
goog.require('Blockly.ASTNode');
|
|
18
|
+
goog.require('Blockly.Marker');
|
|
19
|
+
goog.require('Blockly.navigation');
|
|
20
|
+
goog.require('Blockly.utils.object');
|
|
21
|
+
|
|
22
|
+
goog.requireType('Blockly.IBlocklyActionable');
|
|
23
|
+
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Class for a cursor.
|
|
27
|
+
* A cursor controls how a user navigates the Blockly AST.
|
|
28
|
+
* @constructor
|
|
29
|
+
* @extends {Blockly.Marker}
|
|
30
|
+
* @implements {Blockly.IBlocklyActionable}
|
|
31
|
+
*/
|
|
32
|
+
Blockly.Cursor = function() {
|
|
33
|
+
Blockly.Cursor.superClass_.constructor.call(this);
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* @override
|
|
37
|
+
*/
|
|
38
|
+
this.type = 'cursor';
|
|
39
|
+
};
|
|
40
|
+
Blockly.utils.object.inherits(Blockly.Cursor, Blockly.Marker);
|
|
41
|
+
|
|
42
|
+
/**
|
|
43
|
+
* Find the next connection, field, or block.
|
|
44
|
+
* @return {Blockly.ASTNode} The next element, or null if the current node is
|
|
45
|
+
* not set or there is no next value.
|
|
46
|
+
* @protected
|
|
47
|
+
*/
|
|
48
|
+
Blockly.Cursor.prototype.next = function() {
|
|
49
|
+
var curNode = this.getCurNode();
|
|
50
|
+
if (!curNode) {
|
|
51
|
+
return null;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
var newNode = curNode.next();
|
|
55
|
+
while (newNode && newNode.next() &&
|
|
56
|
+
(newNode.getType() == Blockly.ASTNode.types.NEXT ||
|
|
57
|
+
newNode.getType() == Blockly.ASTNode.types.BLOCK)) {
|
|
58
|
+
newNode = newNode.next();
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
if (newNode) {
|
|
62
|
+
this.setCurNode(newNode);
|
|
63
|
+
}
|
|
64
|
+
return newNode;
|
|
65
|
+
};
|
|
66
|
+
|
|
67
|
+
/**
|
|
68
|
+
* Find the in connection or field.
|
|
69
|
+
* @return {Blockly.ASTNode} The in element, or null if the current node is
|
|
70
|
+
* not set or there is no in value.
|
|
71
|
+
* @protected
|
|
72
|
+
*/
|
|
73
|
+
Blockly.Cursor.prototype.in = function() {
|
|
74
|
+
var curNode = this.getCurNode();
|
|
75
|
+
if (!curNode) {
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
// If we are on a previous or output connection, go to the block level before
|
|
79
|
+
// performing next operation.
|
|
80
|
+
if (curNode.getType() == Blockly.ASTNode.types.PREVIOUS ||
|
|
81
|
+
curNode.getType() == Blockly.ASTNode.types.OUTPUT) {
|
|
82
|
+
curNode = curNode.next();
|
|
83
|
+
}
|
|
84
|
+
var newNode = curNode.in();
|
|
85
|
+
|
|
86
|
+
if (newNode) {
|
|
87
|
+
this.setCurNode(newNode);
|
|
88
|
+
}
|
|
89
|
+
return newNode;
|
|
90
|
+
};
|
|
91
|
+
|
|
92
|
+
/**
|
|
93
|
+
* Find the previous connection, field, or block.
|
|
94
|
+
* @return {Blockly.ASTNode} The previous element, or null if the current node
|
|
95
|
+
* is not set or there is no previous value.
|
|
96
|
+
* @protected
|
|
97
|
+
*/
|
|
98
|
+
Blockly.Cursor.prototype.prev = function() {
|
|
99
|
+
var curNode = this.getCurNode();
|
|
100
|
+
if (!curNode) {
|
|
101
|
+
return null;
|
|
102
|
+
}
|
|
103
|
+
var newNode = curNode.prev();
|
|
104
|
+
|
|
105
|
+
while (newNode && newNode.prev() &&
|
|
106
|
+
(newNode.getType() == Blockly.ASTNode.types.NEXT ||
|
|
107
|
+
newNode.getType() == Blockly.ASTNode.types.BLOCK)) {
|
|
108
|
+
newNode = newNode.prev();
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
if (newNode) {
|
|
112
|
+
this.setCurNode(newNode);
|
|
113
|
+
}
|
|
114
|
+
return newNode;
|
|
115
|
+
};
|
|
116
|
+
|
|
117
|
+
/**
|
|
118
|
+
* Find the out connection, field, or block.
|
|
119
|
+
* @return {Blockly.ASTNode} The out element, or null if the current node is
|
|
120
|
+
* not set or there is no out value.
|
|
121
|
+
* @protected
|
|
122
|
+
*/
|
|
123
|
+
Blockly.Cursor.prototype.out = function() {
|
|
124
|
+
var curNode = this.getCurNode();
|
|
125
|
+
if (!curNode) {
|
|
126
|
+
return null;
|
|
127
|
+
}
|
|
128
|
+
var newNode = curNode.out();
|
|
129
|
+
|
|
130
|
+
if (newNode && newNode.getType() == Blockly.ASTNode.types.BLOCK) {
|
|
131
|
+
newNode = newNode.prev() || newNode;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
if (newNode) {
|
|
135
|
+
this.setCurNode(newNode);
|
|
136
|
+
}
|
|
137
|
+
return newNode;
|
|
138
|
+
};
|
|
139
|
+
|
|
140
|
+
/**
|
|
141
|
+
* Handles the given action.
|
|
142
|
+
* This is only triggered when keyboard navigation is enabled.
|
|
143
|
+
* @param {!Blockly.Action} action The action to be handled.
|
|
144
|
+
* @return {boolean} True if the action has been handled, false otherwise.
|
|
145
|
+
*/
|
|
146
|
+
Blockly.Cursor.prototype.onBlocklyAction = function(action) {
|
|
147
|
+
// If we are on a field give it the option to handle the action
|
|
148
|
+
if (this.getCurNode() &&
|
|
149
|
+
this.getCurNode().getType() === Blockly.ASTNode.types.FIELD &&
|
|
150
|
+
(/** @type {!Blockly.Field} */ (this.getCurNode().getLocation()))
|
|
151
|
+
.onBlocklyAction(action)) {
|
|
152
|
+
return true;
|
|
153
|
+
}
|
|
154
|
+
switch (action.name) {
|
|
155
|
+
case Blockly.navigation.actionNames.PREVIOUS:
|
|
156
|
+
this.prev();
|
|
157
|
+
return true;
|
|
158
|
+
case Blockly.navigation.actionNames.OUT:
|
|
159
|
+
this.out();
|
|
160
|
+
return true;
|
|
161
|
+
case Blockly.navigation.actionNames.NEXT:
|
|
162
|
+
this.next();
|
|
163
|
+
return true;
|
|
164
|
+
case Blockly.navigation.actionNames.IN:
|
|
165
|
+
this.in();
|
|
166
|
+
return true;
|
|
167
|
+
default:
|
|
168
|
+
return false;
|
|
169
|
+
}
|
|
170
|
+
};
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2019 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @fileoverview The class representing a cursor used to navigate the flyout.
|
|
9
|
+
* Used primarily for keyboard navigation.
|
|
10
|
+
* @author aschmiedt@google.com (Abby Schmiedt)
|
|
11
|
+
*/
|
|
12
|
+
'use strict';
|
|
13
|
+
|
|
14
|
+
goog.provide('Blockly.FlyoutCursor');
|
|
15
|
+
|
|
16
|
+
goog.require('Blockly.Cursor');
|
|
17
|
+
goog.require('Blockly.navigation');
|
|
18
|
+
goog.require('Blockly.utils.object');
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Class for a flyout cursor.
|
|
23
|
+
* This controls how a user navigates blocks in the flyout.
|
|
24
|
+
* @constructor
|
|
25
|
+
* @extends {Blockly.Cursor}
|
|
26
|
+
*/
|
|
27
|
+
Blockly.FlyoutCursor = function() {
|
|
28
|
+
Blockly.FlyoutCursor.superClass_.constructor.call(this);
|
|
29
|
+
};
|
|
30
|
+
Blockly.utils.object.inherits(Blockly.FlyoutCursor, Blockly.Cursor);
|
|
31
|
+
|
|
32
|
+
/**
|
|
33
|
+
* Handles the given action.
|
|
34
|
+
* This is only triggered when keyboard navigation is enabled.
|
|
35
|
+
* @param {!Blockly.Action} action The action to be handled.
|
|
36
|
+
* @return {boolean} True if the action has been handled, false otherwise.
|
|
37
|
+
* @override
|
|
38
|
+
*/
|
|
39
|
+
Blockly.FlyoutCursor.prototype.onBlocklyAction = function(action) {
|
|
40
|
+
switch (action.name) {
|
|
41
|
+
case Blockly.navigation.actionNames.PREVIOUS:
|
|
42
|
+
this.prev();
|
|
43
|
+
return true;
|
|
44
|
+
case Blockly.navigation.actionNames.NEXT:
|
|
45
|
+
this.next();
|
|
46
|
+
return true;
|
|
47
|
+
default:
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* Find the next connection, field, or block.
|
|
54
|
+
* @return {Blockly.ASTNode} The next element, or null if the current node is
|
|
55
|
+
* not set or there is no next value.
|
|
56
|
+
* @override
|
|
57
|
+
*/
|
|
58
|
+
Blockly.FlyoutCursor.prototype.next = function() {
|
|
59
|
+
var curNode = this.getCurNode();
|
|
60
|
+
if (!curNode) {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
var newNode = curNode.next();
|
|
64
|
+
|
|
65
|
+
if (newNode) {
|
|
66
|
+
this.setCurNode(newNode);
|
|
67
|
+
}
|
|
68
|
+
return newNode;
|
|
69
|
+
};
|
|
70
|
+
|
|
71
|
+
/**
|
|
72
|
+
* This is a no-op since a flyout cursor can not go in.
|
|
73
|
+
* @return {null} Always null.
|
|
74
|
+
* @override
|
|
75
|
+
*/
|
|
76
|
+
Blockly.FlyoutCursor.prototype.in = function() {
|
|
77
|
+
return null;
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Find the previous connection, field, or block.
|
|
82
|
+
* @return {Blockly.ASTNode} The previous element, or null if the current node
|
|
83
|
+
* is not set or there is no previous value.
|
|
84
|
+
* @override
|
|
85
|
+
*/
|
|
86
|
+
Blockly.FlyoutCursor.prototype.prev = function() {
|
|
87
|
+
var curNode = this.getCurNode();
|
|
88
|
+
if (!curNode) {
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
var newNode = curNode.prev();
|
|
92
|
+
|
|
93
|
+
if (newNode) {
|
|
94
|
+
this.setCurNode(newNode);
|
|
95
|
+
}
|
|
96
|
+
return newNode;
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
/**
|
|
100
|
+
* This is a no-op since a flyout cursor can not go out.
|
|
101
|
+
* @return {null} Always null.
|
|
102
|
+
* @override
|
|
103
|
+
*/
|
|
104
|
+
Blockly.FlyoutCursor.prototype.out = function() {
|
|
105
|
+
return null;
|
|
106
|
+
};
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2019 Google LLC
|
|
4
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* @fileoverview The namespace used to keep track of keyboard actions and the
|
|
9
|
+
* key codes used to execute those actions.
|
|
10
|
+
* This is used primarily for keyboard navigation.
|
|
11
|
+
*/
|
|
12
|
+
'use strict';
|
|
13
|
+
|
|
14
|
+
goog.provide('Blockly.user.keyMap');
|
|
15
|
+
|
|
16
|
+
// TODO: Fix circular dependency.
|
|
17
|
+
// goog.require('Blockly.navigation');
|
|
18
|
+
goog.require('Blockly.utils.KeyCodes');
|
|
19
|
+
goog.require('Blockly.utils.object');
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
/**
|
|
23
|
+
* Holds the serialized key to key action mapping.
|
|
24
|
+
* @type {!Object<string, Blockly.Action>}
|
|
25
|
+
* @private
|
|
26
|
+
*/
|
|
27
|
+
Blockly.user.keyMap.map_ = {};
|
|
28
|
+
|
|
29
|
+
/**
|
|
30
|
+
* Object holding valid modifiers.
|
|
31
|
+
* @enum {string}
|
|
32
|
+
*/
|
|
33
|
+
Blockly.user.keyMap.modifierKeys = {
|
|
34
|
+
SHIFT: 'Shift',
|
|
35
|
+
CONTROL: 'Control',
|
|
36
|
+
ALT: 'Alt',
|
|
37
|
+
META: 'Meta'
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
/**
|
|
41
|
+
* Update the key map to contain the new action.
|
|
42
|
+
* @param {string} keyCode The key code serialized by the serializeKeyEvent.
|
|
43
|
+
* @param {!Blockly.Action} action The action to be executed when the keys
|
|
44
|
+
* corresponding to the serialized key code is pressed.
|
|
45
|
+
*/
|
|
46
|
+
Blockly.user.keyMap.setActionForKey = function(keyCode, action) {
|
|
47
|
+
var oldKey = Blockly.user.keyMap.getKeyByAction(action);
|
|
48
|
+
// If the action already exists in the key map remove it and add the new mapping.
|
|
49
|
+
if (oldKey) {
|
|
50
|
+
delete Blockly.user.keyMap.map_[oldKey];
|
|
51
|
+
}
|
|
52
|
+
Blockly.user.keyMap.map_[keyCode] = action;
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Creates a new key map.
|
|
57
|
+
* @param {!Object<string, Blockly.Action>} keyMap The object holding the key
|
|
58
|
+
* to action mapping.
|
|
59
|
+
*/
|
|
60
|
+
Blockly.user.keyMap.setKeyMap = function(keyMap) {
|
|
61
|
+
Blockly.user.keyMap.map_ = keyMap;
|
|
62
|
+
};
|
|
63
|
+
|
|
64
|
+
/**
|
|
65
|
+
* Gets the current key map.
|
|
66
|
+
* @return {Object<string,Blockly.Action>} The object holding the key to
|
|
67
|
+
* action mapping.
|
|
68
|
+
*/
|
|
69
|
+
Blockly.user.keyMap.getKeyMap = function() {
|
|
70
|
+
var map = {};
|
|
71
|
+
Blockly.utils.object.mixin(map, Blockly.user.keyMap.map_);
|
|
72
|
+
return map;
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Get the action by the serialized key code.
|
|
77
|
+
* @param {string} keyCode The serialized key code.
|
|
78
|
+
* @return {Blockly.Action|undefined} The action holding the function to
|
|
79
|
+
* call when the given keyCode is used or undefined if no action exists.
|
|
80
|
+
*/
|
|
81
|
+
Blockly.user.keyMap.getActionByKeyCode = function(keyCode) {
|
|
82
|
+
return Blockly.user.keyMap.map_[keyCode];
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
/**
|
|
86
|
+
* Get the serialized key that corresponds to the action.
|
|
87
|
+
* @param {!Blockly.Action} action The action for which we want to get
|
|
88
|
+
* the key.
|
|
89
|
+
* @return {?string} The serialized key or null if the action does not have
|
|
90
|
+
* a key mapping.
|
|
91
|
+
*/
|
|
92
|
+
Blockly.user.keyMap.getKeyByAction = function(action) {
|
|
93
|
+
var keys = Object.keys(Blockly.user.keyMap.map_);
|
|
94
|
+
for (var i = 0, key; (key = keys[i]); i++) {
|
|
95
|
+
if (Blockly.user.keyMap.map_[key].name === action.name) {
|
|
96
|
+
return key;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return null;
|
|
100
|
+
};
|
|
101
|
+
|
|
102
|
+
/**
|
|
103
|
+
* Serialize the key event.
|
|
104
|
+
* @param {!KeyboardEvent} e A key up event holding the key code.
|
|
105
|
+
* @return {string} A string containing the serialized key event.
|
|
106
|
+
* @package
|
|
107
|
+
*/
|
|
108
|
+
Blockly.user.keyMap.serializeKeyEvent = function(e) {
|
|
109
|
+
var modifiers = Blockly.utils.object.values(Blockly.user.keyMap.modifierKeys);
|
|
110
|
+
var key = '';
|
|
111
|
+
for (var i = 0, keyName; (keyName = modifiers[i]); i++) {
|
|
112
|
+
if (e.getModifierState(keyName)) {
|
|
113
|
+
key += keyName;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
key += e.keyCode;
|
|
117
|
+
return key;
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
/**
|
|
121
|
+
* Checks whether any of the given modifiers are not valid.
|
|
122
|
+
* @param {!Array.<string>} modifiers List of modifiers to be used with the key.
|
|
123
|
+
* @param {!Array.<string>} validModifiers List of modifiers we support.
|
|
124
|
+
* @throws {Error} if the modifier is not in the valid modifiers list.
|
|
125
|
+
* @private
|
|
126
|
+
*/
|
|
127
|
+
Blockly.user.keyMap.checkModifiers_ = function(modifiers, validModifiers) {
|
|
128
|
+
for (var i = 0, modifier; (modifier = modifiers[i]); i++) {
|
|
129
|
+
if (validModifiers.indexOf(modifier) < 0) {
|
|
130
|
+
throw Error(modifier + ' is not a valid modifier key.');
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
/**
|
|
136
|
+
* Create the serialized key code that will be used in the key map.
|
|
137
|
+
* @param {number} keyCode Number code representing the key.
|
|
138
|
+
* @param {!Array.<string>} modifiers List of modifiers to be used with the key.
|
|
139
|
+
* All valid modifiers can be found in the Blockly.user.keyMap.modifierKeys.
|
|
140
|
+
* @return {string} The serialized key code for the given modifiers and key.
|
|
141
|
+
*/
|
|
142
|
+
Blockly.user.keyMap.createSerializedKey = function(keyCode, modifiers) {
|
|
143
|
+
var key = '';
|
|
144
|
+
var validModifiers = Blockly.utils.object.values(Blockly.user.keyMap.modifierKeys);
|
|
145
|
+
Blockly.user.keyMap.checkModifiers_(modifiers, validModifiers);
|
|
146
|
+
for (var i = 0, validModifier; (validModifier = validModifiers[i]); i++) {
|
|
147
|
+
if (modifiers.indexOf(validModifier) > -1) {
|
|
148
|
+
key += validModifier;
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
key += keyCode;
|
|
152
|
+
return key;
|
|
153
|
+
};
|
|
154
|
+
|
|
155
|
+
/**
|
|
156
|
+
* Creates the default key map.
|
|
157
|
+
* @return {!Object<string,Blockly.Action>} An object holding the default key
|
|
158
|
+
* to action mapping.
|
|
159
|
+
*/
|
|
160
|
+
Blockly.user.keyMap.createDefaultKeyMap = function() {
|
|
161
|
+
var map = {};
|
|
162
|
+
var controlK = Blockly.user.keyMap.createSerializedKey(
|
|
163
|
+
Blockly.utils.KeyCodes.K, [Blockly.user.keyMap.modifierKeys.CONTROL,
|
|
164
|
+
Blockly.user.keyMap.modifierKeys.SHIFT]);
|
|
165
|
+
var shiftW = Blockly.user.keyMap.createSerializedKey(
|
|
166
|
+
Blockly.utils.KeyCodes.W, [Blockly.user.keyMap.modifierKeys.SHIFT]);
|
|
167
|
+
var shiftA = Blockly.user.keyMap.createSerializedKey(
|
|
168
|
+
Blockly.utils.KeyCodes.A, [Blockly.user.keyMap.modifierKeys.SHIFT]);
|
|
169
|
+
var shiftS = Blockly.user.keyMap.createSerializedKey(
|
|
170
|
+
Blockly.utils.KeyCodes.S, [Blockly.user.keyMap.modifierKeys.SHIFT]);
|
|
171
|
+
var shiftD = Blockly.user.keyMap.createSerializedKey(
|
|
172
|
+
Blockly.utils.KeyCodes.D, [Blockly.user.keyMap.modifierKeys.SHIFT]);
|
|
173
|
+
|
|
174
|
+
map[Blockly.utils.KeyCodes.W] = Blockly.navigation.ACTION_PREVIOUS;
|
|
175
|
+
map[Blockly.utils.KeyCodes.A] = Blockly.navigation.ACTION_OUT;
|
|
176
|
+
map[Blockly.utils.KeyCodes.S] = Blockly.navigation.ACTION_NEXT;
|
|
177
|
+
map[Blockly.utils.KeyCodes.D] = Blockly.navigation.ACTION_IN;
|
|
178
|
+
map[Blockly.utils.KeyCodes.I] = Blockly.navigation.ACTION_INSERT;
|
|
179
|
+
map[Blockly.utils.KeyCodes.ENTER] = Blockly.navigation.ACTION_MARK;
|
|
180
|
+
map[Blockly.utils.KeyCodes.X] = Blockly.navigation.ACTION_DISCONNECT;
|
|
181
|
+
map[Blockly.utils.KeyCodes.T] = Blockly.navigation.ACTION_TOOLBOX;
|
|
182
|
+
map[Blockly.utils.KeyCodes.E] = Blockly.navigation.ACTION_EXIT;
|
|
183
|
+
map[Blockly.utils.KeyCodes.ESC] = Blockly.navigation.ACTION_EXIT;
|
|
184
|
+
map[controlK] = Blockly.navigation.ACTION_TOGGLE_KEYBOARD_NAV;
|
|
185
|
+
map[shiftW] = Blockly.navigation.ACTION_MOVE_WS_CURSOR_UP;
|
|
186
|
+
map[shiftA] = Blockly.navigation.ACTION_MOVE_WS_CURSOR_LEFT;
|
|
187
|
+
map[shiftS] = Blockly.navigation.ACTION_MOVE_WS_CURSOR_DOWN;
|
|
188
|
+
map[shiftD] = Blockly.navigation.ACTION_MOVE_WS_CURSOR_RIGHT;
|
|
189
|
+
return map;
|
|
190
|
+
};
|