nodeskini 1.0.1 → 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.
Files changed (534) hide show
  1. package/blocklySkini/archive/blocklyControleur.js +87 -0
  2. package/blocklySkini/archive/blocklySkini.js +84 -0
  3. package/blocklySkini/archive/blocklyhop.js +75 -0
  4. package/blocklySkini/archive/clientControleurBlocly.js +170 -0
  5. package/blocklySkini/archive/index.html +76 -0
  6. package/blocklySkini/archive/testHHsuspend.txt +89 -0
  7. package/blocklySkini/archive/testHHtrap.txt +262 -0
  8. package/blocklySkini/archive/testOrchestration.txt +177 -0
  9. package/blocklySkini/archive/testOrchestration.xml +447 -0
  10. package/blocklySkini/archive/testOrchestration2.xml +456 -0
  11. package/blocklySkini/blockly/README.md +77 -0
  12. package/blocklySkini/blockly/blockly.d.ts +21480 -0
  13. package/blocklySkini/blockly/blockly.js +25 -0
  14. package/blocklySkini/blockly/blockly.min.js +2188 -0
  15. package/blocklySkini/blockly/blockly_compressed.js +1455 -0
  16. package/blocklySkini/blockly/blockly_compressed.js.map +1 -0
  17. package/blocklySkini/blockly/blocks/colour.js +122 -0
  18. package/blocklySkini/blockly/blocks/lists.js +862 -0
  19. package/blocklySkini/blockly/blocks/logic.js +635 -0
  20. package/blocklySkini/blockly/blocks/loops.js +357 -0
  21. package/blocklySkini/blockly/blocks/math.js +566 -0
  22. package/blocklySkini/blockly/blocks/procedures.js +1072 -0
  23. package/blocklySkini/blockly/blocks/text.js +923 -0
  24. package/blocklySkini/blockly/blocks/variables.js +163 -0
  25. package/blocklySkini/blockly/blocks/variables_dynamic.js +180 -0
  26. package/blocklySkini/blockly/blocks.d.ts +15 -0
  27. package/blocklySkini/blockly/blocks.js +27 -0
  28. package/blocklySkini/blockly/blocks_compressed.js +182 -0
  29. package/blocklySkini/blockly/blocks_compressed.js.map +1 -0
  30. package/blocklySkini/blockly/browser.js +36 -0
  31. package/blocklySkini/blockly/core/block.js +2010 -0
  32. package/blocklySkini/blockly/core/block_animations.js +203 -0
  33. package/blocklySkini/blockly/core/block_drag_surface.js +212 -0
  34. package/blocklySkini/blockly/core/block_dragger.js +378 -0
  35. package/blocklySkini/blockly/core/block_events.js +548 -0
  36. package/blocklySkini/blockly/core/block_svg.js +1763 -0
  37. package/blocklySkini/blockly/core/blockly.js +674 -0
  38. package/blocklySkini/blockly/core/blocks.js +23 -0
  39. package/blocklySkini/blockly/core/bubble.js +880 -0
  40. package/blocklySkini/blockly/core/bubble_dragger.js +274 -0
  41. package/blocklySkini/blockly/core/comment.js +439 -0
  42. package/blocklySkini/blockly/core/components/component.js +554 -0
  43. package/blocklySkini/blockly/core/components/tree/basenode.js +895 -0
  44. package/blocklySkini/blockly/core/components/tree/treecontrol.js +332 -0
  45. package/blocklySkini/blockly/core/components/tree/treenode.js +172 -0
  46. package/blocklySkini/blockly/core/connection.js +682 -0
  47. package/blocklySkini/blockly/core/connection_checker.js +285 -0
  48. package/blocklySkini/blockly/core/connection_db.js +295 -0
  49. package/blocklySkini/blockly/core/constants.js +277 -0
  50. package/blocklySkini/blockly/core/contextmenu.js +307 -0
  51. package/blocklySkini/blockly/core/contextmenu_items.js +534 -0
  52. package/blocklySkini/blockly/core/contextmenu_registry.js +165 -0
  53. package/blocklySkini/blockly/core/css.js +549 -0
  54. package/blocklySkini/blockly/core/dropdowndiv.js +776 -0
  55. package/blocklySkini/blockly/core/events.js +387 -0
  56. package/blocklySkini/blockly/core/events_abstract.js +106 -0
  57. package/blocklySkini/blockly/core/extensions.js +450 -0
  58. package/blocklySkini/blockly/core/field.js +1162 -0
  59. package/blocklySkini/blockly/core/field_angle.js +562 -0
  60. package/blocklySkini/blockly/core/field_checkbox.js +220 -0
  61. package/blocklySkini/blockly/core/field_colour.js +664 -0
  62. package/blocklySkini/blockly/core/field_dropdown.js +760 -0
  63. package/blocklySkini/blockly/core/field_image.js +286 -0
  64. package/blocklySkini/blockly/core/field_label.js +130 -0
  65. package/blocklySkini/blockly/core/field_label_serializable.js +69 -0
  66. package/blocklySkini/blockly/core/field_multilineinput.js +299 -0
  67. package/blocklySkini/blockly/core/field_number.js +317 -0
  68. package/blocklySkini/blockly/core/field_registry.js +66 -0
  69. package/blocklySkini/blockly/core/field_textinput.js +616 -0
  70. package/blocklySkini/blockly/core/field_variable.js +463 -0
  71. package/blocklySkini/blockly/core/flyout_base.js +1071 -0
  72. package/blocklySkini/blockly/core/flyout_button.js +325 -0
  73. package/blocklySkini/blockly/core/flyout_dragger.js +76 -0
  74. package/blocklySkini/blockly/core/flyout_horizontal.js +388 -0
  75. package/blocklySkini/blockly/core/flyout_vertical.js +397 -0
  76. package/blocklySkini/blockly/core/generator.js +482 -0
  77. package/blocklySkini/blockly/core/gesture.js +993 -0
  78. package/blocklySkini/blockly/core/grid.js +222 -0
  79. package/blocklySkini/blockly/core/icon.js +206 -0
  80. package/blocklySkini/blockly/core/inject.js +487 -0
  81. package/blocklySkini/blockly/core/input.js +296 -0
  82. package/blocklySkini/blockly/core/insertion_marker_manager.js +700 -0
  83. package/blocklySkini/blockly/core/interfaces/i_accessibility.js +72 -0
  84. package/blocklySkini/blockly/core/interfaces/i_bounded_element.js +31 -0
  85. package/blocklySkini/blockly/core/interfaces/i_bubble.js +83 -0
  86. package/blocklySkini/blockly/core/interfaces/i_connection_checker.js +94 -0
  87. package/blocklySkini/blockly/core/interfaces/i_contextmenu.js +26 -0
  88. package/blocklySkini/blockly/core/interfaces/i_copyable.js +40 -0
  89. package/blocklySkini/blockly/core/interfaces/i_deletable.js +27 -0
  90. package/blocklySkini/blockly/core/interfaces/i_deletearea.js +28 -0
  91. package/blocklySkini/blockly/core/interfaces/i_flyout.js +178 -0
  92. package/blocklySkini/blockly/core/interfaces/i_movable.js +27 -0
  93. package/blocklySkini/blockly/core/interfaces/i_registrable.js +22 -0
  94. package/blocklySkini/blockly/core/interfaces/i_registrable_field.js +31 -0
  95. package/blocklySkini/blockly/core/interfaces/i_selectable.js +43 -0
  96. package/blocklySkini/blockly/core/interfaces/i_styleable.js +33 -0
  97. package/blocklySkini/blockly/core/interfaces/i_toolbox.js +131 -0
  98. package/blocklySkini/blockly/core/interfaces/i_toolbox_item.js +148 -0
  99. package/blocklySkini/blockly/core/keyboard_nav/action.js +26 -0
  100. package/blocklySkini/blockly/core/keyboard_nav/ast_node.js +684 -0
  101. package/blocklySkini/blockly/core/keyboard_nav/basic_cursor.js +208 -0
  102. package/blocklySkini/blockly/core/keyboard_nav/cursor.js +170 -0
  103. package/blocklySkini/blockly/core/keyboard_nav/flyout_cursor.js +106 -0
  104. package/blocklySkini/blockly/core/keyboard_nav/key_map.js +190 -0
  105. package/blocklySkini/blockly/core/keyboard_nav/marker.js +120 -0
  106. package/blocklySkini/blockly/core/keyboard_nav/navigation.js +1084 -0
  107. package/blocklySkini/blockly/core/keyboard_nav/tab_navigate_cursor.js +48 -0
  108. package/blocklySkini/blockly/core/marker_manager.js +183 -0
  109. package/blocklySkini/blockly/core/menu.js +465 -0
  110. package/blocklySkini/blockly/core/menuitem.js +280 -0
  111. package/blocklySkini/blockly/core/msg.js +31 -0
  112. package/blocklySkini/blockly/core/mutator.js +555 -0
  113. package/blocklySkini/blockly/core/names.js +186 -0
  114. package/blocklySkini/blockly/core/options.js +365 -0
  115. package/blocklySkini/blockly/core/procedures.js +404 -0
  116. package/blocklySkini/blockly/core/registry.js +265 -0
  117. package/blocklySkini/blockly/core/rendered_connection.js +565 -0
  118. package/blocklySkini/blockly/core/renderers/common/block_rendering.js +81 -0
  119. package/blocklySkini/blockly/core/renderers/common/constants.js +1256 -0
  120. package/blocklySkini/blockly/core/renderers/common/debugger.js +431 -0
  121. package/blocklySkini/blockly/core/renderers/common/drawer.js +468 -0
  122. package/blocklySkini/blockly/core/renderers/common/i_path_object.js +151 -0
  123. package/blocklySkini/blockly/core/renderers/common/info.js +775 -0
  124. package/blocklySkini/blockly/core/renderers/common/marker_svg.js +687 -0
  125. package/blocklySkini/blockly/core/renderers/common/path_object.js +279 -0
  126. package/blocklySkini/blockly/core/renderers/common/renderer.js +301 -0
  127. package/blocklySkini/blockly/core/renderers/geras/constants.js +64 -0
  128. package/blocklySkini/blockly/core/renderers/geras/drawer.js +205 -0
  129. package/blocklySkini/blockly/core/renderers/geras/highlight_constants.js +311 -0
  130. package/blocklySkini/blockly/core/renderers/geras/highlighter.js +256 -0
  131. package/blocklySkini/blockly/core/renderers/geras/info.js +483 -0
  132. package/blocklySkini/blockly/core/renderers/geras/measurables/inputs.js +67 -0
  133. package/blocklySkini/blockly/core/renderers/geras/path_object.js +177 -0
  134. package/blocklySkini/blockly/core/renderers/geras/renderer.js +138 -0
  135. package/blocklySkini/blockly/core/renderers/measurables/base.js +44 -0
  136. package/blocklySkini/blockly/core/renderers/measurables/connections.js +114 -0
  137. package/blocklySkini/blockly/core/renderers/measurables/inputs.js +160 -0
  138. package/blocklySkini/blockly/core/renderers/measurables/row_elements.js +185 -0
  139. package/blocklySkini/blockly/core/renderers/measurables/rows.js +532 -0
  140. package/blocklySkini/blockly/core/renderers/measurables/types.js +349 -0
  141. package/blocklySkini/blockly/core/renderers/minimalist/constants.js +29 -0
  142. package/blocklySkini/blockly/core/renderers/minimalist/drawer.js +32 -0
  143. package/blocklySkini/blockly/core/renderers/minimalist/info.js +45 -0
  144. package/blocklySkini/blockly/core/renderers/minimalist/renderer.js +70 -0
  145. package/blocklySkini/blockly/core/renderers/thrasos/info.js +338 -0
  146. package/blocklySkini/blockly/core/renderers/thrasos/renderer.js +45 -0
  147. package/blocklySkini/blockly/core/renderers/zelos/constants.js +1002 -0
  148. package/blocklySkini/blockly/core/renderers/zelos/drawer.js +233 -0
  149. package/blocklySkini/blockly/core/renderers/zelos/info.js +587 -0
  150. package/blocklySkini/blockly/core/renderers/zelos/marker_svg.js +148 -0
  151. package/blocklySkini/blockly/core/renderers/zelos/measurables/inputs.js +47 -0
  152. package/blocklySkini/blockly/core/renderers/zelos/measurables/row_elements.js +37 -0
  153. package/blocklySkini/blockly/core/renderers/zelos/measurables/rows.js +108 -0
  154. package/blocklySkini/blockly/core/renderers/zelos/path_object.js +244 -0
  155. package/blocklySkini/blockly/core/renderers/zelos/renderer.js +130 -0
  156. package/blocklySkini/blockly/core/requires.js +84 -0
  157. package/blocklySkini/blockly/core/scrollbar.js +880 -0
  158. package/blocklySkini/blockly/core/theme/classic.js +87 -0
  159. package/blocklySkini/blockly/core/theme/dark.js +33 -0
  160. package/blocklySkini/blockly/core/theme/deuteranopia.js +104 -0
  161. package/blocklySkini/blockly/core/theme/highcontrast.js +119 -0
  162. package/blocklySkini/blockly/core/theme/modern.js +108 -0
  163. package/blocklySkini/blockly/core/theme/tritanopia.js +103 -0
  164. package/blocklySkini/blockly/core/theme/zelos.js +106 -0
  165. package/blocklySkini/blockly/core/theme.js +236 -0
  166. package/blocklySkini/blockly/core/theme_manager.js +197 -0
  167. package/blocklySkini/blockly/core/toolbox/category.js +690 -0
  168. package/blocklySkini/blockly/core/toolbox/collapsible_category.js +294 -0
  169. package/blocklySkini/blockly/core/toolbox/separator.js +123 -0
  170. package/blocklySkini/blockly/core/toolbox/toolbox.js +984 -0
  171. package/blocklySkini/blockly/core/toolbox/toolbox_item.js +145 -0
  172. package/blocklySkini/blockly/core/toolbox.js +943 -0
  173. package/blocklySkini/blockly/core/tooltip.js +387 -0
  174. package/blocklySkini/blockly/core/touch.js +255 -0
  175. package/blocklySkini/blockly/core/touch_gesture.js +325 -0
  176. package/blocklySkini/blockly/core/trashcan.js +661 -0
  177. package/blocklySkini/blockly/core/ui_events.js +85 -0
  178. package/blocklySkini/blockly/core/utils/aria.js +167 -0
  179. package/blocklySkini/blockly/core/utils/colour.js +208 -0
  180. package/blocklySkini/blockly/core/utils/coordinate.js +125 -0
  181. package/blocklySkini/blockly/core/utils/deprecation.js +34 -0
  182. package/blocklySkini/blockly/core/utils/dom.js +391 -0
  183. package/blocklySkini/blockly/core/utils/global.js +37 -0
  184. package/blocklySkini/blockly/core/utils/idgenerator.js +33 -0
  185. package/blocklySkini/blockly/core/utils/keycodes.js +164 -0
  186. package/blocklySkini/blockly/core/utils/math.js +56 -0
  187. package/blocklySkini/blockly/core/utils/metrics.js +124 -0
  188. package/blocklySkini/blockly/core/utils/object.js +73 -0
  189. package/blocklySkini/blockly/core/utils/rect.js +54 -0
  190. package/blocklySkini/blockly/core/utils/size.js +58 -0
  191. package/blocklySkini/blockly/core/utils/string.js +284 -0
  192. package/blocklySkini/blockly/core/utils/style.js +281 -0
  193. package/blocklySkini/blockly/core/utils/svg.js +181 -0
  194. package/blocklySkini/blockly/core/utils/svg_paths.js +142 -0
  195. package/blocklySkini/blockly/core/utils/toolbox.js +401 -0
  196. package/blocklySkini/blockly/core/utils/useragent.js +110 -0
  197. package/blocklySkini/blockly/core/utils/xml.js +79 -0
  198. package/blocklySkini/blockly/core/utils.js +652 -0
  199. package/blocklySkini/blockly/core/variable_events.js +248 -0
  200. package/blocklySkini/blockly/core/variable_map.js +414 -0
  201. package/blocklySkini/blockly/core/variable_model.js +95 -0
  202. package/blocklySkini/blockly/core/variables.js +571 -0
  203. package/blocklySkini/blockly/core/variables_dynamic.js +100 -0
  204. package/blocklySkini/blockly/core/warning.js +200 -0
  205. package/blocklySkini/blockly/core/widgetdiv.js +241 -0
  206. package/blocklySkini/blockly/core/workspace.js +786 -0
  207. package/blocklySkini/blockly/core/workspace_audio.js +153 -0
  208. package/blocklySkini/blockly/core/workspace_comment.js +373 -0
  209. package/blocklySkini/blockly/core/workspace_comment_render_svg.js +461 -0
  210. package/blocklySkini/blockly/core/workspace_comment_svg.js +701 -0
  211. package/blocklySkini/blockly/core/workspace_drag_surface_svg.js +176 -0
  212. package/blocklySkini/blockly/core/workspace_dragger.js +85 -0
  213. package/blocklySkini/blockly/core/workspace_events.js +93 -0
  214. package/blocklySkini/blockly/core/workspace_svg.js +2661 -0
  215. package/blocklySkini/blockly/core/ws_comment_events.js +417 -0
  216. package/blocklySkini/blockly/core/xml.js +827 -0
  217. package/blocklySkini/blockly/core/zoom_controls.js +449 -0
  218. package/blocklySkini/blockly/core-browser.js +34 -0
  219. package/blocklySkini/blockly/core.d.ts +15 -0
  220. package/blocklySkini/blockly/core.js +38 -0
  221. package/blocklySkini/blockly/dart.d.ts +15 -0
  222. package/blocklySkini/blockly/dart.js +27 -0
  223. package/blocklySkini/blockly/dart_compressed.js +114 -0
  224. package/blocklySkini/blockly/dart_compressed.js.map +1 -0
  225. package/blocklySkini/blockly/generators/dart/colour.js +114 -0
  226. package/blocklySkini/blockly/generators/dart/lists.js +447 -0
  227. package/blocklySkini/blockly/generators/dart/logic.js +127 -0
  228. package/blocklySkini/blockly/generators/dart/loops.js +169 -0
  229. package/blocklySkini/blockly/generators/dart/math.js +485 -0
  230. package/blocklySkini/blockly/generators/dart/procedures.js +111 -0
  231. package/blocklySkini/blockly/generators/dart/text.js +339 -0
  232. package/blocklySkini/blockly/generators/dart/variables.js +32 -0
  233. package/blocklySkini/blockly/generators/dart/variables_dynamic.js +21 -0
  234. package/blocklySkini/blockly/generators/dart.js +290 -0
  235. package/blocklySkini/blockly/generators/javascript/colour.js +89 -0
  236. package/blocklySkini/blockly/generators/javascript/lists.js +388 -0
  237. package/blocklySkini/blockly/generators/javascript/logic.js +129 -0
  238. package/blocklySkini/blockly/generators/javascript/loops.js +184 -0
  239. package/blocklySkini/blockly/generators/javascript/math.js +409 -0
  240. package/blocklySkini/blockly/generators/javascript/procedures.js +113 -0
  241. package/blocklySkini/blockly/generators/javascript/text.js +367 -0
  242. package/blocklySkini/blockly/generators/javascript/variables.js +32 -0
  243. package/blocklySkini/blockly/generators/javascript/variables_dynamic.js +23 -0
  244. package/blocklySkini/blockly/generators/javascript.js +317 -0
  245. package/blocklySkini/blockly/generators/lua/colour.js +76 -0
  246. package/blocklySkini/blockly/generators/lua/lists.js +368 -0
  247. package/blocklySkini/blockly/generators/lua/logic.js +127 -0
  248. package/blocklySkini/blockly/generators/lua/loops.js +173 -0
  249. package/blocklySkini/blockly/generators/lua/math.js +423 -0
  250. package/blocklySkini/blockly/generators/lua/procedures.js +113 -0
  251. package/blocklySkini/blockly/generators/lua/text.js +353 -0
  252. package/blocklySkini/blockly/generators/lua/variables.js +32 -0
  253. package/blocklySkini/blockly/generators/lua/variables_dynamic.js +21 -0
  254. package/blocklySkini/blockly/generators/lua.js +198 -0
  255. package/blocklySkini/blockly/generators/php/colour.js +91 -0
  256. package/blocklySkini/blockly/generators/php/lists.js +498 -0
  257. package/blocklySkini/blockly/generators/php/logic.js +128 -0
  258. package/blocklySkini/blockly/generators/php/loops.js +170 -0
  259. package/blocklySkini/blockly/generators/php/math.js +370 -0
  260. package/blocklySkini/blockly/generators/php/procedures.js +132 -0
  261. package/blocklySkini/blockly/generators/php/text.js +271 -0
  262. package/blocklySkini/blockly/generators/php/variables.js +32 -0
  263. package/blocklySkini/blockly/generators/php/variables_dynamic.js +21 -0
  264. package/blocklySkini/blockly/generators/php.js +318 -0
  265. package/blocklySkini/blockly/generators/python/colour.js +72 -0
  266. package/blocklySkini/blockly/generators/python/lists.js +349 -0
  267. package/blocklySkini/blockly/generators/python/logic.js +127 -0
  268. package/blocklySkini/blockly/generators/python/loops.js +214 -0
  269. package/blocklySkini/blockly/generators/python/math.js +385 -0
  270. package/blocklySkini/blockly/generators/python/procedures.js +134 -0
  271. package/blocklySkini/blockly/generators/python/text.js +293 -0
  272. package/blocklySkini/blockly/generators/python/variables.js +32 -0
  273. package/blocklySkini/blockly/generators/python/variables_dynamic.js +21 -0
  274. package/blocklySkini/blockly/generators/python.js +322 -0
  275. package/blocklySkini/blockly/index.d.ts +22 -0
  276. package/blocklySkini/blockly/index.js +24 -0
  277. package/blocklySkini/blockly/javascript.d.ts +15 -0
  278. package/blocklySkini/blockly/javascript.js +27 -0
  279. package/blocklySkini/blockly/javascript_compressed.js +115 -0
  280. package/blocklySkini/blockly/javascript_compressed.js.map +1 -0
  281. package/blocklySkini/blockly/lua.d.ts +15 -0
  282. package/blocklySkini/blockly/lua.js +27 -0
  283. package/blocklySkini/blockly/lua_compressed.js +94 -0
  284. package/blocklySkini/blockly/lua_compressed.js.map +1 -0
  285. package/blocklySkini/blockly/media/1x1.gif +0 -0
  286. package/blocklySkini/blockly/media/click.mp3 +0 -0
  287. package/blocklySkini/blockly/media/click.ogg +0 -0
  288. package/blocklySkini/blockly/media/click.wav +0 -0
  289. package/blocklySkini/blockly/media/delete.mp3 +0 -0
  290. package/blocklySkini/blockly/media/delete.ogg +0 -0
  291. package/blocklySkini/blockly/media/delete.wav +0 -0
  292. package/blocklySkini/blockly/media/disconnect.mp3 +0 -0
  293. package/blocklySkini/blockly/media/disconnect.ogg +0 -0
  294. package/blocklySkini/blockly/media/disconnect.wav +0 -0
  295. package/blocklySkini/blockly/media/dropdown-arrow.svg +1 -0
  296. package/blocklySkini/blockly/media/handclosed.cur +0 -0
  297. package/blocklySkini/blockly/media/handdelete.cur +0 -0
  298. package/blocklySkini/blockly/media/handopen.cur +0 -0
  299. package/blocklySkini/blockly/media/pilcrow.png +0 -0
  300. package/blocklySkini/blockly/media/quote0.png +0 -0
  301. package/blocklySkini/blockly/media/quote1.png +0 -0
  302. package/blocklySkini/blockly/media/sprites.png +0 -0
  303. package/blocklySkini/blockly/media/sprites.svg +74 -0
  304. package/blocklySkini/blockly/msg/ab.d.ts +16 -0
  305. package/blocklySkini/blockly/msg/ab.js +447 -0
  306. package/blocklySkini/blockly/msg/ar.d.ts +16 -0
  307. package/blocklySkini/blockly/msg/ar.js +447 -0
  308. package/blocklySkini/blockly/msg/az.d.ts +16 -0
  309. package/blocklySkini/blockly/msg/az.js +447 -0
  310. package/blocklySkini/blockly/msg/ba.d.ts +16 -0
  311. package/blocklySkini/blockly/msg/ba.js +447 -0
  312. package/blocklySkini/blockly/msg/bcc.d.ts +16 -0
  313. package/blocklySkini/blockly/msg/bcc.js +447 -0
  314. package/blocklySkini/blockly/msg/be-tarask.d.ts +16 -0
  315. package/blocklySkini/blockly/msg/be-tarask.js +447 -0
  316. package/blocklySkini/blockly/msg/be.d.ts +16 -0
  317. package/blocklySkini/blockly/msg/be.js +447 -0
  318. package/blocklySkini/blockly/msg/bg.d.ts +16 -0
  319. package/blocklySkini/blockly/msg/bg.js +447 -0
  320. package/blocklySkini/blockly/msg/bn.d.ts +16 -0
  321. package/blocklySkini/blockly/msg/bn.js +447 -0
  322. package/blocklySkini/blockly/msg/br.d.ts +16 -0
  323. package/blocklySkini/blockly/msg/br.js +447 -0
  324. package/blocklySkini/blockly/msg/ca.d.ts +16 -0
  325. package/blocklySkini/blockly/msg/ca.js +447 -0
  326. package/blocklySkini/blockly/msg/constants.d.ts +16 -0
  327. package/blocklySkini/blockly/msg/cs.d.ts +16 -0
  328. package/blocklySkini/blockly/msg/cs.js +447 -0
  329. package/blocklySkini/blockly/msg/da.d.ts +16 -0
  330. package/blocklySkini/blockly/msg/da.js +447 -0
  331. package/blocklySkini/blockly/msg/de.d.ts +16 -0
  332. package/blocklySkini/blockly/msg/de.js +447 -0
  333. package/blocklySkini/blockly/msg/diq.d.ts +16 -0
  334. package/blocklySkini/blockly/msg/diq.js +447 -0
  335. package/blocklySkini/blockly/msg/dty.d.ts +16 -0
  336. package/blocklySkini/blockly/msg/dty.js +447 -0
  337. package/blocklySkini/blockly/msg/ee.d.ts +16 -0
  338. package/blocklySkini/blockly/msg/ee.js +447 -0
  339. package/blocklySkini/blockly/msg/el.d.ts +16 -0
  340. package/blocklySkini/blockly/msg/el.js +447 -0
  341. package/blocklySkini/blockly/msg/en-gb.d.ts +16 -0
  342. package/blocklySkini/blockly/msg/en-gb.js +447 -0
  343. package/blocklySkini/blockly/msg/en.d.ts +16 -0
  344. package/blocklySkini/blockly/msg/en.js +447 -0
  345. package/blocklySkini/blockly/msg/eo.d.ts +16 -0
  346. package/blocklySkini/blockly/msg/eo.js +447 -0
  347. package/blocklySkini/blockly/msg/es.d.ts +16 -0
  348. package/blocklySkini/blockly/msg/es.js +447 -0
  349. package/blocklySkini/blockly/msg/et.d.ts +16 -0
  350. package/blocklySkini/blockly/msg/et.js +447 -0
  351. package/blocklySkini/blockly/msg/eu.d.ts +16 -0
  352. package/blocklySkini/blockly/msg/eu.js +447 -0
  353. package/blocklySkini/blockly/msg/fa.d.ts +16 -0
  354. package/blocklySkini/blockly/msg/fa.js +447 -0
  355. package/blocklySkini/blockly/msg/fi.d.ts +16 -0
  356. package/blocklySkini/blockly/msg/fi.js +447 -0
  357. package/blocklySkini/blockly/msg/fr.d.ts +16 -0
  358. package/blocklySkini/blockly/msg/fr.js +447 -0
  359. package/blocklySkini/blockly/msg/gl.d.ts +16 -0
  360. package/blocklySkini/blockly/msg/gl.js +447 -0
  361. package/blocklySkini/blockly/msg/gor.d.ts +16 -0
  362. package/blocklySkini/blockly/msg/gor.js +447 -0
  363. package/blocklySkini/blockly/msg/ha.d.ts +16 -0
  364. package/blocklySkini/blockly/msg/ha.js +447 -0
  365. package/blocklySkini/blockly/msg/he.d.ts +16 -0
  366. package/blocklySkini/blockly/msg/he.js +447 -0
  367. package/blocklySkini/blockly/msg/hi.d.ts +16 -0
  368. package/blocklySkini/blockly/msg/hi.js +447 -0
  369. package/blocklySkini/blockly/msg/hrx.d.ts +16 -0
  370. package/blocklySkini/blockly/msg/hrx.js +447 -0
  371. package/blocklySkini/blockly/msg/hu.d.ts +16 -0
  372. package/blocklySkini/blockly/msg/hu.js +447 -0
  373. package/blocklySkini/blockly/msg/hy.d.ts +16 -0
  374. package/blocklySkini/blockly/msg/hy.js +447 -0
  375. package/blocklySkini/blockly/msg/ia.d.ts +16 -0
  376. package/blocklySkini/blockly/msg/ia.js +447 -0
  377. package/blocklySkini/blockly/msg/id.d.ts +16 -0
  378. package/blocklySkini/blockly/msg/id.js +447 -0
  379. package/blocklySkini/blockly/msg/ig.d.ts +16 -0
  380. package/blocklySkini/blockly/msg/ig.js +447 -0
  381. package/blocklySkini/blockly/msg/is.d.ts +16 -0
  382. package/blocklySkini/blockly/msg/is.js +447 -0
  383. package/blocklySkini/blockly/msg/it.d.ts +16 -0
  384. package/blocklySkini/blockly/msg/it.js +447 -0
  385. package/blocklySkini/blockly/msg/ja.d.ts +16 -0
  386. package/blocklySkini/blockly/msg/ja.js +447 -0
  387. package/blocklySkini/blockly/msg/kab.d.ts +16 -0
  388. package/blocklySkini/blockly/msg/kab.js +447 -0
  389. package/blocklySkini/blockly/msg/kn.d.ts +16 -0
  390. package/blocklySkini/blockly/msg/kn.js +447 -0
  391. package/blocklySkini/blockly/msg/ko.d.ts +16 -0
  392. package/blocklySkini/blockly/msg/ko.js +447 -0
  393. package/blocklySkini/blockly/msg/lb.d.ts +16 -0
  394. package/blocklySkini/blockly/msg/lb.js +447 -0
  395. package/blocklySkini/blockly/msg/lki.d.ts +16 -0
  396. package/blocklySkini/blockly/msg/lki.js +447 -0
  397. package/blocklySkini/blockly/msg/lo.d.ts +16 -0
  398. package/blocklySkini/blockly/msg/lo.js +447 -0
  399. package/blocklySkini/blockly/msg/lrc.d.ts +16 -0
  400. package/blocklySkini/blockly/msg/lrc.js +447 -0
  401. package/blocklySkini/blockly/msg/lt.d.ts +16 -0
  402. package/blocklySkini/blockly/msg/lt.js +447 -0
  403. package/blocklySkini/blockly/msg/lv.d.ts +16 -0
  404. package/blocklySkini/blockly/msg/lv.js +447 -0
  405. package/blocklySkini/blockly/msg/mk.d.ts +16 -0
  406. package/blocklySkini/blockly/msg/mk.js +447 -0
  407. package/blocklySkini/blockly/msg/mnw.d.ts +16 -0
  408. package/blocklySkini/blockly/msg/mnw.js +447 -0
  409. package/blocklySkini/blockly/msg/ms.d.ts +16 -0
  410. package/blocklySkini/blockly/msg/ms.js +447 -0
  411. package/blocklySkini/blockly/msg/msg.d.ts +444 -0
  412. package/blocklySkini/blockly/msg/nb.d.ts +16 -0
  413. package/blocklySkini/blockly/msg/nb.js +447 -0
  414. package/blocklySkini/blockly/msg/nl.d.ts +16 -0
  415. package/blocklySkini/blockly/msg/nl.js +447 -0
  416. package/blocklySkini/blockly/msg/oc.d.ts +16 -0
  417. package/blocklySkini/blockly/msg/oc.js +447 -0
  418. package/blocklySkini/blockly/msg/pl.d.ts +16 -0
  419. package/blocklySkini/blockly/msg/pl.js +447 -0
  420. package/blocklySkini/blockly/msg/pms.d.ts +16 -0
  421. package/blocklySkini/blockly/msg/pms.js +447 -0
  422. package/blocklySkini/blockly/msg/pt-br.d.ts +16 -0
  423. package/blocklySkini/blockly/msg/pt-br.js +447 -0
  424. package/blocklySkini/blockly/msg/pt.d.ts +16 -0
  425. package/blocklySkini/blockly/msg/pt.js +447 -0
  426. package/blocklySkini/blockly/msg/qqq.d.ts +16 -0
  427. package/blocklySkini/blockly/msg/ro.d.ts +16 -0
  428. package/blocklySkini/blockly/msg/ro.js +447 -0
  429. package/blocklySkini/blockly/msg/ru.d.ts +16 -0
  430. package/blocklySkini/blockly/msg/ru.js +447 -0
  431. package/blocklySkini/blockly/msg/sc.d.ts +16 -0
  432. package/blocklySkini/blockly/msg/sc.js +447 -0
  433. package/blocklySkini/blockly/msg/sd.d.ts +16 -0
  434. package/blocklySkini/blockly/msg/sd.js +447 -0
  435. package/blocklySkini/blockly/msg/shn.d.ts +16 -0
  436. package/blocklySkini/blockly/msg/shn.js +447 -0
  437. package/blocklySkini/blockly/msg/sk.d.ts +16 -0
  438. package/blocklySkini/blockly/msg/sk.js +447 -0
  439. package/blocklySkini/blockly/msg/skr-arab.d.ts +16 -0
  440. package/blocklySkini/blockly/msg/skr-arab.js +447 -0
  441. package/blocklySkini/blockly/msg/sl.d.ts +16 -0
  442. package/blocklySkini/blockly/msg/sl.js +447 -0
  443. package/blocklySkini/blockly/msg/sq.d.ts +16 -0
  444. package/blocklySkini/blockly/msg/sq.js +447 -0
  445. package/blocklySkini/blockly/msg/sr-latn.d.ts +16 -0
  446. package/blocklySkini/blockly/msg/sr-latn.js +447 -0
  447. package/blocklySkini/blockly/msg/sr.d.ts +16 -0
  448. package/blocklySkini/blockly/msg/sr.js +447 -0
  449. package/blocklySkini/blockly/msg/sv.d.ts +16 -0
  450. package/blocklySkini/blockly/msg/sv.js +447 -0
  451. package/blocklySkini/blockly/msg/synonyms.d.ts +16 -0
  452. package/blocklySkini/blockly/msg/ta.d.ts +16 -0
  453. package/blocklySkini/blockly/msg/ta.js +447 -0
  454. package/blocklySkini/blockly/msg/tcy.d.ts +16 -0
  455. package/blocklySkini/blockly/msg/tcy.js +447 -0
  456. package/blocklySkini/blockly/msg/te.d.ts +16 -0
  457. package/blocklySkini/blockly/msg/te.js +447 -0
  458. package/blocklySkini/blockly/msg/th.d.ts +16 -0
  459. package/blocklySkini/blockly/msg/th.js +447 -0
  460. package/blocklySkini/blockly/msg/tl.d.ts +16 -0
  461. package/blocklySkini/blockly/msg/tl.js +447 -0
  462. package/blocklySkini/blockly/msg/tlh.d.ts +16 -0
  463. package/blocklySkini/blockly/msg/tlh.js +447 -0
  464. package/blocklySkini/blockly/msg/tr.d.ts +16 -0
  465. package/blocklySkini/blockly/msg/tr.js +447 -0
  466. package/blocklySkini/blockly/msg/ug-arab.d.ts +16 -0
  467. package/blocklySkini/blockly/msg/ug-arab.js +447 -0
  468. package/blocklySkini/blockly/msg/uk.d.ts +16 -0
  469. package/blocklySkini/blockly/msg/uk.js +447 -0
  470. package/blocklySkini/blockly/msg/ur.d.ts +16 -0
  471. package/blocklySkini/blockly/msg/ur.js +447 -0
  472. package/blocklySkini/blockly/msg/vi.d.ts +16 -0
  473. package/blocklySkini/blockly/msg/vi.js +447 -0
  474. package/blocklySkini/blockly/msg/xmf.d.ts +16 -0
  475. package/blocklySkini/blockly/msg/xmf.js +447 -0
  476. package/blocklySkini/blockly/msg/yo.d.ts +16 -0
  477. package/blocklySkini/blockly/msg/yo.js +447 -0
  478. package/blocklySkini/blockly/msg/zh-hans.d.ts +16 -0
  479. package/blocklySkini/blockly/msg/zh-hans.js +447 -0
  480. package/blocklySkini/blockly/msg/zh-hant.d.ts +16 -0
  481. package/blocklySkini/blockly/msg/zh-hant.js +447 -0
  482. package/blocklySkini/blockly/node.js +35 -0
  483. package/blocklySkini/blockly/package.json +84 -0
  484. package/blocklySkini/blockly/php.d.ts +15 -0
  485. package/blocklySkini/blockly/php.js +27 -0
  486. package/blocklySkini/blockly/php_compressed.js +103 -0
  487. package/blocklySkini/blockly/php_compressed.js.map +1 -0
  488. package/blocklySkini/blockly/python.d.ts +15 -0
  489. package/blocklySkini/blockly/python.js +27 -0
  490. package/blocklySkini/blockly/python_compressed.js +98 -0
  491. package/blocklySkini/blockly/python_compressed.js.map +1 -0
  492. package/blocklySkini/blocklySkini.html +81 -0
  493. package/blocklySkini/orchestrations/.xml +1 -0
  494. package/blocklySkini/orchestrations/BluesSkini-1.xml +231 -0
  495. package/blocklySkini/orchestrations/BluesSkini-2.xml +741 -0
  496. package/blocklySkini/orchestrations/BluesSkini-3.xml +731 -0
  497. package/blocklySkini/orchestrations/BluesSkini-4.xml +695 -0
  498. package/blocklySkini/orchestrations/BluesSkini-5.xml +731 -0
  499. package/blocklySkini/orchestrations/BluesSkini.xml +704 -0
  500. package/blocklySkini/orchestrations/FunkBitwig-1.xml +778 -0
  501. package/blocklySkini/orchestrations/FunkBitwig-2.xml +471 -0
  502. package/blocklySkini/orchestrations/JouerLeBonInstrument1-1.xml +784 -0
  503. package/blocklySkini/orchestrations/MajeurMineur-1.xml +638 -0
  504. package/blocklySkini/orchestrations/Opus5-3 - Copie.xml +1041 -0
  505. package/blocklySkini/orchestrations/Opus5-3.xml +1128 -0
  506. package/blocklySkini/orchestrations/Quatuor1-1.xml +357 -0
  507. package/blocklySkini/orchestrations/TechnoBitwig-1.xml +221 -0
  508. package/blocklySkini/orchestrations/TestBlockly.xml +497 -0
  509. package/blocklySkini/orchestrations/TestBlockly1.xml +500 -0
  510. package/blocklySkini/orchestrations/TestBlockly2.xml +792 -0
  511. package/blocklySkini/orchestrations/TestBlockly3-1.xml +1182 -0
  512. package/blocklySkini/orchestrations/TestBlockly3.xml +1251 -0
  513. package/blocklySkini/orchestrations/TestFunction.xml +143 -0
  514. package/blocklySkini/orchestrations/TestIf.xml +80 -0
  515. package/blocklySkini/orchestrations/TestLoop.xml +127 -0
  516. package/blocklySkini/orchestrations/TestOrchestration2.xml +460 -0
  517. package/blocklySkini/orchestrations/TestPrint.xml +70 -0
  518. package/blocklySkini/orchestrations/TestSubMod.xml +81 -0
  519. package/blocklySkini/orchestrations/Testlogic.xml +113 -0
  520. package/blocklySkini/orchestrations/TrouveLaPercu-1.xml +813 -0
  521. package/blocklySkini/orchestrations/TrouveLaPercu-2.xml +813 -0
  522. package/blocklySkini/orchestrations/bar.xml +496 -0
  523. package/blocklySkini/orchestrations/bar2.xml +496 -0
  524. package/blocklySkini/orchestrations/foo.xml +500 -0
  525. package/blocklySkini/orchestrations/opus5Blockly - Copie.xml +496 -0
  526. package/blocklySkini/orchestrations/opus5Blockly-3.xml +868 -0
  527. package/blocklySkini/orchestrations/opus5Blockly.xml +496 -0
  528. package/blocklySkini/orchestrations/testOrchestration3.xml +483 -0
  529. package/blocklySkini/orchestrations/testOrchestration4.xml +487 -0
  530. package/blocklySkini/scripts/hiphop_blocks.js +6104 -0
  531. package/blocklySkini/scripts/main2.js +801 -0
  532. package/blocklySkini/styles/index.css +320 -0
  533. package/blocklySkini/styles/material.css +11552 -0
  534. package/package.json +3 -3
@@ -0,0 +1,534 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2020 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ /**
8
+ * @fileoverview Registers default context menu items.
9
+ * @author maribethb@google.com (Maribeth Bottorff)
10
+ */
11
+ 'use strict';
12
+
13
+ /**
14
+ * @name Blockly.ContextMenuItems
15
+ * @namespace
16
+ */
17
+ goog.provide('Blockly.ContextMenuItems');
18
+
19
+ goog.requireType('Blockly.BlockSvg');
20
+
21
+ /** Option to undo previous action. */
22
+ Blockly.ContextMenuItems.registerUndo = function() {
23
+ /** @type {!Blockly.ContextMenuRegistry.RegistryItem} */
24
+ var undoOption = {
25
+ displayText: function() {
26
+ return Blockly.Msg['UNDO'];
27
+ },
28
+ preconditionFn: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) {
29
+ if (scope.workspace.getUndoStack().length > 0) {
30
+ return 'enabled';
31
+ }
32
+ return 'disabled';
33
+ },
34
+ callback: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) {
35
+ scope.workspace.undo(false);
36
+ },
37
+ scopeType: Blockly.ContextMenuRegistry.ScopeType.WORKSPACE,
38
+ id: 'undoWorkspace',
39
+ weight: 0,
40
+ };
41
+ Blockly.ContextMenuRegistry.registry.register(undoOption);
42
+ };
43
+
44
+ /** Option to redo previous action. */
45
+ Blockly.ContextMenuItems.registerRedo = function() {
46
+ /** @type {!Blockly.ContextMenuRegistry.RegistryItem} */
47
+ var redoOption = {
48
+ displayText: function() { return Blockly.Msg['REDO']; },
49
+ preconditionFn: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) {
50
+ if (scope.workspace.getRedoStack().length > 0) {
51
+ return 'enabled';
52
+ }
53
+ return 'disabled';
54
+ },
55
+ callback: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) {
56
+ scope.workspace.undo(true);
57
+ },
58
+ scopeType: Blockly.ContextMenuRegistry.ScopeType.WORKSPACE,
59
+ id: 'redoWorkspace',
60
+ weight: 0,
61
+ };
62
+ Blockly.ContextMenuRegistry.registry.register(redoOption);
63
+ };
64
+
65
+ /** Option to clean up blocks. */
66
+ Blockly.ContextMenuItems.registerCleanup = function() {
67
+ /** @type {!Blockly.ContextMenuRegistry.RegistryItem} */
68
+ var cleanOption = {
69
+ displayText: function() {
70
+ return Blockly.Msg['CLEAN_UP'];
71
+ },
72
+ preconditionFn: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) {
73
+ if (scope.workspace.isMovable()) {
74
+ if (scope.workspace.getTopBlocks(false).length > 1) {
75
+ return 'enabled';
76
+ }
77
+ return 'disabled';
78
+ }
79
+ return 'hidden';
80
+ },
81
+ callback: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) {
82
+ scope.workspace.cleanUp();
83
+ },
84
+ scopeType: Blockly.ContextMenuRegistry.ScopeType.WORKSPACE,
85
+ id: 'cleanWorkspace',
86
+ weight: 0,
87
+ };
88
+ Blockly.ContextMenuRegistry.registry.register(cleanOption);
89
+ };
90
+
91
+ /**
92
+ * Creates a callback to collapse or expand top blocks.
93
+ * @param {boolean} shouldCollapse Whether a block should collapse.
94
+ * @param {!Array<Blockly.BlockSvg>} topBlocks Top blocks in the workspace.
95
+ * @private
96
+ */
97
+ Blockly.ContextMenuItems.toggleOption_ = function(shouldCollapse, topBlocks) {
98
+ var DELAY = 10;
99
+ var ms = 0;
100
+ for (var i = 0; i < topBlocks.length; i++) {
101
+ var block = topBlocks[i];
102
+ while (block) {
103
+ setTimeout(block.setCollapsed.bind(block, shouldCollapse), ms);
104
+ block = block.getNextBlock();
105
+ ms += DELAY;
106
+ }
107
+ }
108
+ };
109
+
110
+ /** Option to collapse all blocks. */
111
+ Blockly.ContextMenuItems.registerCollapse = function() {
112
+ /** @type {!Blockly.ContextMenuRegistry.RegistryItem} */
113
+ var collapseOption = {
114
+ displayText: function() {
115
+ return Blockly.Msg['COLLAPSE_ALL'];
116
+ },
117
+ preconditionFn: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) {
118
+ if (scope.workspace.options.collapse) {
119
+ var topBlocks = scope.workspace.getTopBlocks(false);
120
+ for (var i = 0; i < topBlocks.length; i++) {
121
+ var block = topBlocks[i];
122
+ while (block) {
123
+ if (!block.isCollapsed()) {
124
+ return 'enabled';
125
+ }
126
+ block = block.getNextBlock();
127
+ }
128
+ }
129
+ return 'disabled';
130
+ }
131
+ return 'hidden';
132
+ },
133
+ callback: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) {
134
+ Blockly.ContextMenuItems.toggleOption_(true, scope.workspace.getTopBlocks(true));
135
+ },
136
+ scopeType: Blockly.ContextMenuRegistry.ScopeType.WORKSPACE,
137
+ id: 'collapseWorkspace',
138
+ weight: 0,
139
+ };
140
+ Blockly.ContextMenuRegistry.registry.register(collapseOption);
141
+ };
142
+
143
+ /** Option to expand all blocks. */
144
+ Blockly.ContextMenuItems.registerExpand = function() {
145
+ /** @type {!Blockly.ContextMenuRegistry.RegistryItem} */
146
+ var expandOption = {
147
+ displayText: function() {
148
+ return Blockly.Msg['EXPAND_ALL'];
149
+ },
150
+ preconditionFn: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) {
151
+ if (scope.workspace.options.collapse) {
152
+ var topBlocks = scope.workspace.getTopBlocks(false);
153
+ for (var i = 0; i < topBlocks.length; i++) {
154
+ var block = topBlocks[i];
155
+ while (block) {
156
+ if (block.isCollapsed()) {
157
+ return 'enabled';
158
+ }
159
+ block = block.getNextBlock();
160
+ }
161
+ }
162
+ return 'disabled';
163
+ }
164
+ return 'hidden';
165
+ },
166
+ callback: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) {
167
+ Blockly.ContextMenuItems.toggleOption_(false, scope.workspace.getTopBlocks(true));
168
+ },
169
+ scopeType: Blockly.ContextMenuRegistry.ScopeType.WORKSPACE,
170
+ id: 'expandWorkspace',
171
+ weight: 0,
172
+ };
173
+ Blockly.ContextMenuRegistry.registry.register(expandOption);
174
+ };
175
+
176
+ /**
177
+ * Adds a block and its children to a list of deletable blocks.
178
+ * @param {!Blockly.BlockSvg} block to delete.
179
+ * @param {!Array.<!Blockly.BlockSvg>} deleteList list of blocks that can be deleted. This will be
180
+ * modifed in place with the given block and its descendants.
181
+ * @private
182
+ */
183
+ Blockly.ContextMenuItems.addDeletableBlocks_ = function(block, deleteList) {
184
+ if (block.isDeletable()) {
185
+ Array.prototype.push.apply(deleteList, block.getDescendants(false));
186
+ } else {
187
+ var children = /** @type !Array.<!Blockly.BlockSvg> */ (block.getChildren(false));
188
+ for (var i = 0; i < children.length; i++) {
189
+ Blockly.ContextMenuItems.addDeletableBlocks_(children[i], deleteList);
190
+ }
191
+ }
192
+ };
193
+
194
+ /**
195
+ * Constructs a list of blocks that can be deleted in the given workspace.
196
+ * @param {!Blockly.WorkspaceSvg} workspace to delete all blocks from.
197
+ * @return {!Array.<!Blockly.BlockSvg>} list of blocks to delete.
198
+ * @private
199
+ */
200
+ Blockly.ContextMenuItems.getDeletableBlocks_ = function(workspace) {
201
+ var deleteList = [];
202
+ var topBlocks = workspace.getTopBlocks(true);
203
+ for (var i = 0; i < topBlocks.length; i++) {
204
+ Blockly.ContextMenuItems.addDeletableBlocks_(topBlocks[i], deleteList);
205
+ }
206
+ return deleteList;
207
+ };
208
+
209
+ /** Deletes the given blocks. Used to delete all blocks in the workspace.
210
+ * @param {!Array.<!Blockly.BlockSvg>} deleteList list of blocks to delete.
211
+ * @param {string} eventGroup event group id with which all delete events should be associated.
212
+ * @private
213
+ */
214
+ Blockly.ContextMenuItems.deleteNext_ = function(deleteList, eventGroup) {
215
+ var DELAY = 10;
216
+ Blockly.Events.setGroup(eventGroup);
217
+ var block = deleteList.shift();
218
+ if (block) {
219
+ if (block.workspace) {
220
+ block.dispose(false, true);
221
+ setTimeout(Blockly.ContextMenuItems.deleteNext_, DELAY, deleteList, eventGroup);
222
+ } else {
223
+ Blockly.ContextMenuItems.deleteNext_(deleteList, eventGroup);
224
+ }
225
+ }
226
+ Blockly.Events.setGroup(false);
227
+ };
228
+
229
+ /** Option to delete all blocks. */
230
+ Blockly.ContextMenuItems.registerDeleteAll = function() {
231
+ /** @type {!Blockly.ContextMenuRegistry.RegistryItem} */
232
+ var deleteOption = {
233
+ displayText: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) {
234
+ if (!scope.workspace) {
235
+ return;
236
+ }
237
+ var deletableBlocksLength =
238
+ Blockly.ContextMenuItems.getDeletableBlocks_(scope.workspace).length;
239
+ if (deletableBlocksLength == 1) {
240
+ return Blockly.Msg['DELETE_BLOCK'];
241
+ } else {
242
+ return Blockly.Msg['DELETE_X_BLOCKS'].replace('%1', String(deletableBlocksLength));
243
+ }
244
+ },
245
+ preconditionFn: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) {
246
+ if (!scope.workspace) {
247
+ return;
248
+ }
249
+ var deletableBlocksLength =
250
+ Blockly.ContextMenuItems.getDeletableBlocks_(scope.workspace).length;
251
+ return deletableBlocksLength > 0 ? 'enabled' : 'disabled';
252
+ },
253
+ callback: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) {
254
+ if (!scope.workspace) {
255
+ return;
256
+ }
257
+ scope.workspace.cancelCurrentGesture();
258
+ var deletableBlocks = Blockly.ContextMenuItems.getDeletableBlocks_(scope.workspace);
259
+ var eventGroup = Blockly.utils.genUid();
260
+ if (deletableBlocks.length < 2) {
261
+ Blockly.ContextMenuItems.deleteNext_(deletableBlocks, eventGroup);
262
+ } else {
263
+ Blockly.confirm(
264
+ Blockly.Msg['DELETE_ALL_BLOCKS'].replace('%1', deletableBlocks.length),
265
+ function(ok) {
266
+ if (ok) {
267
+ Blockly.ContextMenuItems.deleteNext_(deletableBlocks, eventGroup);
268
+ }
269
+ });
270
+ }
271
+ },
272
+ scopeType: Blockly.ContextMenuRegistry.ScopeType.WORKSPACE,
273
+ id: 'workspaceDelete',
274
+ weight: 0,
275
+ };
276
+ Blockly.ContextMenuRegistry.registry.register(deleteOption);
277
+ };
278
+
279
+ /**
280
+ * Registers all workspace-scoped context menu items.
281
+ * @private
282
+ */
283
+ Blockly.ContextMenuItems.registerWorkspaceOptions_ = function() {
284
+ Blockly.ContextMenuItems.registerUndo();
285
+ Blockly.ContextMenuItems.registerRedo();
286
+ Blockly.ContextMenuItems.registerCleanup();
287
+ Blockly.ContextMenuItems.registerCollapse();
288
+ Blockly.ContextMenuItems.registerExpand();
289
+ Blockly.ContextMenuItems.registerDeleteAll();
290
+ };
291
+
292
+ /** Option to duplicate a block. */
293
+ Blockly.ContextMenuItems.registerDuplicate = function() {
294
+ /** @type {!Blockly.ContextMenuRegistry.RegistryItem} */
295
+ var duplicateOption = {
296
+ displayText: function() {
297
+ return Blockly.Msg['DUPLICATE_BLOCK'];
298
+ },
299
+ preconditionFn: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) {
300
+ var block = scope.block;
301
+ if (!block.isInFlyout && block.isDeletable() && block.isMovable()) {
302
+ if (block.isDuplicatable()) {
303
+ return 'enabled';
304
+ }
305
+ return 'disabled';
306
+ }
307
+ return 'hidden';
308
+ },
309
+ callback: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) {
310
+ if (scope.block) {
311
+ Blockly.duplicate(scope.block);
312
+ }
313
+ },
314
+ scopeType: Blockly.ContextMenuRegistry.ScopeType.BLOCK,
315
+ id: 'blockDuplicate',
316
+ weight: 0,
317
+ };
318
+ Blockly.ContextMenuRegistry.registry.register(duplicateOption);
319
+ };
320
+
321
+ /** Option to add or remove block-level comment. */
322
+ Blockly.ContextMenuItems.registerComment = function() {
323
+ /** @type {!Blockly.ContextMenuRegistry.RegistryItem} */
324
+ var commentOption = {
325
+ displayText: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) {
326
+ if (scope.block.getCommentIcon()) {
327
+ // If there's already a comment, option is to remove.
328
+ return Blockly.Msg['REMOVE_COMMENT'];
329
+ }
330
+ // If there's no comment yet, option is to add.
331
+ return Blockly.Msg['ADD_COMMENT'];
332
+ },
333
+ preconditionFn: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) {
334
+ var block = scope.block;
335
+ // IE doesn't support necessary features for comment editing.
336
+ if (!Blockly.utils.userAgent.IE && !block.isInFlyout && block.workspace.options.comments &&
337
+ !block.isCollapsed() && block.isEditable()) {
338
+ return 'enabled';
339
+ }
340
+ return 'hidden';
341
+ },
342
+ callback: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) {
343
+ var block = scope.block;
344
+ if (block.getCommentIcon()) {
345
+ block.setCommentText(null);
346
+ } else {
347
+ block.setCommentText('');
348
+ }
349
+ },
350
+ scopeType: Blockly.ContextMenuRegistry.ScopeType.BLOCK,
351
+ id: 'blockComment',
352
+ weight: 0,
353
+ };
354
+ Blockly.ContextMenuRegistry.registry.register(commentOption);
355
+ };
356
+
357
+ /** Option to inline variables. */
358
+ Blockly.ContextMenuItems.registerInline = function() {
359
+ /** @type {!Blockly.ContextMenuRegistry.RegistryItem} */
360
+ var inlineOption = {
361
+ displayText: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) {
362
+ return (scope.block.getInputsInline()) ?
363
+ Blockly.Msg['EXTERNAL_INPUTS'] : Blockly.Msg['INLINE_INPUTS'];
364
+ },
365
+ preconditionFn: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) {
366
+ var block = scope.block;
367
+ if (!block.isInFlyout && block.isMovable() && !block.isCollapsed()) {
368
+ for (var i = 1; i < block.inputList.length; i++) {
369
+ // Only display this option if there are two value or dummy inputs next to each other.
370
+ if (block.inputList[i - 1].type != Blockly.NEXT_STATEMENT &&
371
+ block.inputList[i].type != Blockly.NEXT_STATEMENT) {
372
+ return 'enabled';
373
+ }
374
+ }
375
+ }
376
+ return 'hidden';
377
+ },
378
+ callback: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) {
379
+ scope.block.setInputsInline(!scope.block.getInputsInline());
380
+ },
381
+ scopeType: Blockly.ContextMenuRegistry.ScopeType.BLOCK,
382
+ id: 'blockInline',
383
+ weight: 0,
384
+ };
385
+ Blockly.ContextMenuRegistry.registry.register(inlineOption);
386
+ };
387
+
388
+ /** Option to collapse or expand a block. */
389
+ Blockly.ContextMenuItems.registerCollapseExpandBlock = function() {
390
+ /** @type {!Blockly.ContextMenuRegistry.RegistryItem} */
391
+ var collapseExpandOption = {
392
+ displayText: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) {
393
+ if (scope.block.isCollapsed()) {
394
+ return Blockly.Msg['EXPAND_BLOCK'];
395
+ }
396
+ return Blockly.Msg['COLLAPSE_BLOCK'];
397
+ },
398
+ preconditionFn: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) {
399
+ var block = scope.block;
400
+ if (!block.isInFlyout && block.isMovable()) {
401
+ return 'enabled';
402
+ }
403
+ return 'hidden';
404
+ },
405
+ callback: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) {
406
+ scope.block.setCollapsed(!scope.block.isCollapsed());
407
+ },
408
+ scopeType: Blockly.ContextMenuRegistry.ScopeType.BLOCK,
409
+ id: 'blockCollapseExpand',
410
+ weight: 0,
411
+ };
412
+ Blockly.ContextMenuRegistry.registry.register(collapseExpandOption);
413
+ };
414
+
415
+ /** Option to disable or enable a block. */
416
+ Blockly.ContextMenuItems.registerDisable = function() {
417
+ /** @type {!Blockly.ContextMenuRegistry.RegistryItem} */
418
+ var disableOption = {
419
+ displayText: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) {
420
+ return (scope.block.isEnabled()) ?
421
+ Blockly.Msg['DISABLE_BLOCK'] : Blockly.Msg['ENABLE_BLOCK'];
422
+ },
423
+ preconditionFn: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) {
424
+ var block = scope.block;
425
+ if (!block.isInFlyout && block.workspace.options.disable && block.isEditable()) {
426
+ if (block.getInheritedDisabled()) {
427
+ return 'disabled';
428
+ }
429
+ return 'enabled';
430
+ }
431
+ return 'hidden';
432
+ },
433
+ callback: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) {
434
+ var block = scope.block;
435
+ var group = Blockly.Events.getGroup();
436
+ if (!group) {
437
+ Blockly.Events.setGroup(true);
438
+ }
439
+ block.setEnabled(!block.isEnabled());
440
+ if (!group) {
441
+ Blockly.Events.setGroup(false);
442
+ }
443
+ },
444
+ scopeType: Blockly.ContextMenuRegistry.ScopeType.BLOCK,
445
+ id: 'blockDisable',
446
+ weight: 0,
447
+ };
448
+ Blockly.ContextMenuRegistry.registry.register(disableOption);
449
+ };
450
+
451
+ /** Option to delete a block. */
452
+ Blockly.ContextMenuItems.registerDelete = function() {
453
+ /** @type {!Blockly.ContextMenuRegistry.RegistryItem} */
454
+ var deleteOption = {
455
+ displayText: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) {
456
+ var block = scope.block;
457
+ // Count the number of blocks that are nested in this block.
458
+ var descendantCount = block.getDescendants(false).length;
459
+ var nextBlock = block.getNextBlock();
460
+ if (nextBlock) {
461
+ // Blocks in the current stack would survive this block's deletion.
462
+ descendantCount -= nextBlock.getDescendants(false).length;
463
+ }
464
+ return (descendantCount == 1) ? Blockly.Msg['DELETE_BLOCK'] :
465
+ Blockly.Msg['DELETE_X_BLOCKS'].replace('%1', String(descendantCount));
466
+ },
467
+ preconditionFn: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) {
468
+ if (!scope.block.isInFlyout && scope.block.isDeletable()) {
469
+ return 'enabled';
470
+ }
471
+ return 'hidden';
472
+ },
473
+ callback: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) {
474
+ Blockly.Events.setGroup(true);
475
+ scope.block.dispose(true, true);
476
+ Blockly.Events.setGroup(false);
477
+ },
478
+ scopeType: Blockly.ContextMenuRegistry.ScopeType.BLOCK,
479
+ id: 'blockDelete',
480
+ weight: 0,
481
+ };
482
+ Blockly.ContextMenuRegistry.registry.register(deleteOption);
483
+ };
484
+
485
+ /** Option to open help for a block. */
486
+ Blockly.ContextMenuItems.registerHelp = function() {
487
+ /** @type {!Blockly.ContextMenuRegistry.RegistryItem} */
488
+ var helpOption = {
489
+ displayText: function() {
490
+ return Blockly.Msg['HELP'];
491
+ },
492
+ preconditionFn: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) {
493
+ var block = scope.block;
494
+ var url = (typeof block.helpUrl == 'function') ?
495
+ block.helpUrl() : block.helpUrl;
496
+ if (url) {
497
+ return 'enabled';
498
+ }
499
+ return 'hidden';
500
+ },
501
+ callback: function(/** @type {!Blockly.ContextMenuRegistry.Scope} */ scope) {
502
+ scope.block.showHelp();
503
+ },
504
+ scopeType: Blockly.ContextMenuRegistry.ScopeType.BLOCK,
505
+ id: 'blockHelp',
506
+ weight: 0,
507
+ };
508
+ Blockly.ContextMenuRegistry.registry.register(helpOption);
509
+ };
510
+
511
+ /**
512
+ * Registers all block-scoped context menu items.
513
+ * @private
514
+ */
515
+ Blockly.ContextMenuItems.registerBlockOptions_ = function() {
516
+ Blockly.ContextMenuItems.registerDuplicate();
517
+ Blockly.ContextMenuItems.registerComment();
518
+ Blockly.ContextMenuItems.registerInline();
519
+ Blockly.ContextMenuItems.registerCollapseExpandBlock();
520
+ Blockly.ContextMenuItems.registerDisable();
521
+ Blockly.ContextMenuItems.registerDelete();
522
+ Blockly.ContextMenuItems.registerHelp();
523
+ };
524
+
525
+ /**
526
+ * Registers all default context menu items. This should be called once per instance of
527
+ * ContextMenuRegistry.
528
+ * @package
529
+ */
530
+ Blockly.ContextMenuItems.registerDefaultOptions = function() {
531
+ Blockly.ContextMenuItems.registerWorkspaceOptions_();
532
+ Blockly.ContextMenuItems.registerBlockOptions_();
533
+ };
534
+
@@ -0,0 +1,165 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2020 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ /**
8
+ * @fileoverview Registry for context menu option items.
9
+ * @author maribethb@google.com (Maribeth Bottorff)
10
+ */
11
+ 'use strict';
12
+
13
+ /**
14
+ * @name Blockly.ContextMenuRegistry
15
+ * @namespace
16
+ */
17
+ goog.provide('Blockly.ContextMenuRegistry');
18
+
19
+ goog.require('Blockly.ContextMenuItems');
20
+
21
+ /**
22
+ * Class for the registry of context menu items. This is intended to be a singleton. You should
23
+ * not create a new instance, and only access this class from Blockly.ContextMenuRegistry.registry.
24
+ * @constructor
25
+ */
26
+ Blockly.ContextMenuRegistry = function() {
27
+
28
+ // Singleton instance should be registered once.
29
+ Blockly.ContextMenuRegistry.registry = this;
30
+
31
+ /**
32
+ * Registry of all registered RegistryItems, keyed by id.
33
+ * @type {!Object<string, Blockly.ContextMenuRegistry.RegistryItem>}
34
+ * @private
35
+ */
36
+ this.registry_ = {};
37
+ Blockly.ContextMenuItems.registerDefaultOptions();
38
+ };
39
+
40
+ /**
41
+ * Where this menu item should be rendered. If the menu item should be rendered in multiple
42
+ * scopes, e.g. on both a block and a workspace, it should be registered for each scope.
43
+ * @enum {string}
44
+ */
45
+ Blockly.ContextMenuRegistry.ScopeType = {
46
+ BLOCK: 'block',
47
+ WORKSPACE: 'workspace',
48
+ };
49
+
50
+ /**
51
+ * The actual workspace/block where the menu is being rendered. This is passed to callback and
52
+ * displayText functions that depend on this information.
53
+ * @typedef {{
54
+ * block: (Blockly.BlockSvg|undefined),
55
+ * workspace: (Blockly.WorkspaceSvg|undefined)
56
+ * }}
57
+ */
58
+ Blockly.ContextMenuRegistry.Scope;
59
+
60
+ /**
61
+ * A menu item as entered in the registry.
62
+ * @typedef {{
63
+ * callback: function(!Blockly.ContextMenuRegistry.Scope),
64
+ * scopeType: !Blockly.ContextMenuRegistry.ScopeType,
65
+ * displayText: ((function(!Blockly.ContextMenuRegistry.Scope):string)|string),
66
+ * preconditionFn: function(!Blockly.ContextMenuRegistry.Scope):string,
67
+ * weight: number,
68
+ * id: string
69
+ * }}
70
+ */
71
+ Blockly.ContextMenuRegistry.RegistryItem;
72
+
73
+ /**
74
+ * A menu item as presented to contextmenu.js.
75
+ * @typedef {{
76
+ * text: string,
77
+ * enabled: boolean,
78
+ * callback: function(!Blockly.ContextMenuRegistry.Scope),
79
+ * scope: !Blockly.ContextMenuRegistry.Scope,
80
+ * weight: number
81
+ * }}
82
+ */
83
+ Blockly.ContextMenuRegistry.ContextMenuOption;
84
+
85
+ /**
86
+ * Singleton instance of this class. All interactions with this class should be done on this object.
87
+ * @type {?Blockly.ContextMenuRegistry}
88
+ */
89
+ Blockly.ContextMenuRegistry.registry = null;
90
+
91
+ /**
92
+ * Registers a RegistryItem.
93
+ * @param {!Blockly.ContextMenuRegistry.RegistryItem} item Context menu item to register.
94
+ * @throws {Error} if an item with the given id already exists.
95
+ */
96
+ Blockly.ContextMenuRegistry.prototype.register = function(item) {
97
+ if (this.registry_[item.id]) {
98
+ throw Error('Menu item with id "' + item.id + '" is already registered.');
99
+ }
100
+ this.registry_[item.id] = item;
101
+ };
102
+
103
+ /**
104
+ * Unregisters a RegistryItem with the given id.
105
+ * @param {string} id The id of the RegistryItem to remove.
106
+ * @throws {Error} if an item with the given id does not exist.
107
+ */
108
+ Blockly.ContextMenuRegistry.prototype.unregister = function(id) {
109
+ if (this.registry_[id]) {
110
+ delete this.registry_[id];
111
+ } else {
112
+ throw new Error('Menu item with id "' + id + '" not found.');
113
+ }
114
+ };
115
+
116
+ /**
117
+ * @param {string} id The id of the RegistryItem to get.
118
+ * @returns {?Blockly.ContextMenuRegistry.RegistryItem} RegistryItem or null if not found
119
+ */
120
+ Blockly.ContextMenuRegistry.prototype.getItem = function(id) {
121
+ if (this.registry_[id]) {
122
+ return this.registry_[id];
123
+ }
124
+ return null;
125
+ };
126
+
127
+ /**
128
+ * Gets the valid context menu options for the given scope type (e.g. block or workspace) and scope.
129
+ * Blocks are only shown if the preconditionFn shows they should not be hidden.
130
+ * @param {!Blockly.ContextMenuRegistry.ScopeType} scopeType Type of scope where menu should be
131
+ * shown (e.g. on a block or on a workspace)
132
+ * @param {!Blockly.ContextMenuRegistry.Scope} scope Current scope of context menu
133
+ * (i.e., the exact workspace or block being clicked on)
134
+ * @returns {!Array.<!Blockly.ContextMenuRegistry.ContextMenuOption>} the list of ContextMenuOptions
135
+ */
136
+ Blockly.ContextMenuRegistry.prototype.getContextMenuOptions = function(scopeType, scope) {
137
+ var menuOptions = [];
138
+ var registry = this.registry_;
139
+ Object.keys(registry).forEach(function(id) {
140
+ var item = registry[id];
141
+ if (scopeType == item.scopeType) {
142
+ var precondition = item.preconditionFn(scope);
143
+ if (precondition != 'hidden') {
144
+ var displayText = typeof item.displayText == 'function' ?
145
+ item.displayText(scope) : item.displayText;
146
+ /** @type {!Blockly.ContextMenuRegistry.ContextMenuOption} */
147
+ var menuOption = {
148
+ text: displayText,
149
+ enabled: (precondition == 'enabled'),
150
+ callback: item.callback,
151
+ scope: scope,
152
+ weight: item.weight,
153
+ };
154
+ menuOptions.push(menuOption);
155
+ }
156
+ }
157
+ });
158
+ menuOptions.sort(function(a, b) {
159
+ return a.weight - b.weight;
160
+ });
161
+ return menuOptions;
162
+ };
163
+
164
+ // Creates and assigns the singleton instance.
165
+ new Blockly.ContextMenuRegistry();