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.
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 +4 -3
@@ -0,0 +1,404 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2012 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ /**
8
+ * @fileoverview Utility functions for handling procedures.
9
+ * @author fraser@google.com (Neil Fraser)
10
+ */
11
+ 'use strict';
12
+
13
+ /**
14
+ * @name Blockly.Procedures
15
+ * @namespace
16
+ */
17
+ goog.provide('Blockly.Procedures');
18
+
19
+ goog.require('Blockly.Blocks');
20
+ goog.require('Blockly.constants');
21
+ goog.require('Blockly.Events');
22
+ goog.require('Blockly.Events.BlockChange');
23
+ goog.require('Blockly.Field');
24
+ goog.require('Blockly.Msg');
25
+ goog.require('Blockly.Names');
26
+ goog.require('Blockly.utils.xml');
27
+ goog.require('Blockly.Workspace');
28
+ goog.require('Blockly.Xml');
29
+
30
+
31
+ /**
32
+ * Constant to separate procedure names from variables and generated functions
33
+ * when running generators.
34
+ * @deprecated Use Blockly.PROCEDURE_CATEGORY_NAME
35
+ */
36
+ Blockly.Procedures.NAME_TYPE = Blockly.PROCEDURE_CATEGORY_NAME;
37
+
38
+ /**
39
+ * The default argument for a procedures_mutatorarg block.
40
+ * @type {string}
41
+ */
42
+ Blockly.Procedures.DEFAULT_ARG = 'x';
43
+
44
+ /**
45
+ * Procedure block type.
46
+ * @typedef {{
47
+ * getProcedureCall: function():string,
48
+ * renameProcedure: function(string,string),
49
+ * getProcedureDef: function():!Array
50
+ * }}
51
+ */
52
+ Blockly.Procedures.ProcedureBlock;
53
+
54
+ /**
55
+ * Find all user-created procedure definitions in a workspace.
56
+ * @param {!Blockly.Workspace} root Root workspace.
57
+ * @return {!Array.<!Array.<!Array>>} Pair of arrays, the
58
+ * first contains procedures without return variables, the second with.
59
+ * Each procedure is defined by a three-element list of name, parameter
60
+ * list, and return value boolean.
61
+ */
62
+ Blockly.Procedures.allProcedures = function(root) {
63
+ var proceduresNoReturn = root.getBlocksByType('procedures_defnoreturn', false)
64
+ .map(function(block) {
65
+ return /** @type {!Blockly.Procedures.ProcedureBlock} */ (block).getProcedureDef();
66
+ });
67
+ var proceduresReturn = root.getBlocksByType('procedures_defreturn', false).map(function(block) {
68
+ return /** @type {!Blockly.Procedures.ProcedureBlock} */ (block).getProcedureDef();
69
+ });
70
+ proceduresNoReturn.sort(Blockly.Procedures.procTupleComparator_);
71
+ proceduresReturn.sort(Blockly.Procedures.procTupleComparator_);
72
+ return [proceduresNoReturn, proceduresReturn];
73
+ };
74
+
75
+ /**
76
+ * Comparison function for case-insensitive sorting of the first element of
77
+ * a tuple.
78
+ * @param {!Array} ta First tuple.
79
+ * @param {!Array} tb Second tuple.
80
+ * @return {number} -1, 0, or 1 to signify greater than, equality, or less than.
81
+ * @private
82
+ */
83
+ Blockly.Procedures.procTupleComparator_ = function(ta, tb) {
84
+ return ta[0].toLowerCase().localeCompare(tb[0].toLowerCase());
85
+ };
86
+
87
+ /**
88
+ * Ensure two identically-named procedures don't exist.
89
+ * Take the proposed procedure name, and return a legal name i.e. one that
90
+ * is not empty and doesn't collide with other procedures.
91
+ * @param {string} name Proposed procedure name.
92
+ * @param {!Blockly.Block} block Block to disambiguate.
93
+ * @return {string} Non-colliding name.
94
+ */
95
+ Blockly.Procedures.findLegalName = function(name, block) {
96
+ if (block.isInFlyout) {
97
+ // Flyouts can have multiple procedures called 'do something'.
98
+ return name;
99
+ }
100
+ name = name || Blockly.Msg['UNNAMED_KEY'] || 'unnamed';
101
+ while (!Blockly.Procedures.isLegalName_(name, block.workspace, block)) {
102
+ // Collision with another procedure.
103
+ var r = name.match(/^(.*?)(\d+)$/);
104
+ if (!r) {
105
+ name += '2';
106
+ } else {
107
+ name = r[1] + (parseInt(r[2], 10) + 1);
108
+ }
109
+ }
110
+ return name;
111
+ };
112
+
113
+ /**
114
+ * Does this procedure have a legal name? Illegal names include names of
115
+ * procedures already defined.
116
+ * @param {string} name The questionable name.
117
+ * @param {!Blockly.Workspace} workspace The workspace to scan for collisions.
118
+ * @param {Blockly.Block=} opt_exclude Optional block to exclude from
119
+ * comparisons (one doesn't want to collide with oneself).
120
+ * @return {boolean} True if the name is legal.
121
+ * @private
122
+ */
123
+ Blockly.Procedures.isLegalName_ = function(name, workspace, opt_exclude) {
124
+ return !Blockly.Procedures.isNameUsed(name, workspace, opt_exclude);
125
+ };
126
+
127
+ /**
128
+ * Return if the given name is already a procedure name.
129
+ * @param {string} name The questionable name.
130
+ * @param {!Blockly.Workspace} workspace The workspace to scan for collisions.
131
+ * @param {Blockly.Block=} opt_exclude Optional block to exclude from
132
+ * comparisons (one doesn't want to collide with oneself).
133
+ * @return {boolean} True if the name is used, otherwise return false.
134
+ */
135
+ Blockly.Procedures.isNameUsed = function(name, workspace, opt_exclude) {
136
+ var blocks = workspace.getAllBlocks(false);
137
+ // Iterate through every block and check the name.
138
+ for (var i = 0; i < blocks.length; i++) {
139
+ if (blocks[i] == opt_exclude) {
140
+ continue;
141
+ }
142
+ if (blocks[i].getProcedureDef) {
143
+ var procedureBlock = /** @type {!Blockly.Procedures.ProcedureBlock} */ (
144
+ blocks[i]);
145
+ var procName = procedureBlock.getProcedureDef();
146
+ if (Blockly.Names.equals(procName[0], name)) {
147
+ return true;
148
+ }
149
+ }
150
+ }
151
+ return false;
152
+ };
153
+
154
+ /**
155
+ * Rename a procedure. Called by the editable field.
156
+ * @param {string} name The proposed new name.
157
+ * @return {string} The accepted name.
158
+ * @this {Blockly.Field}
159
+ */
160
+ Blockly.Procedures.rename = function(name) {
161
+ // Strip leading and trailing whitespace. Beyond this, all names are legal.
162
+ name = name.trim();
163
+
164
+ var legalName = Blockly.Procedures.findLegalName(name,
165
+ /** @type {!Blockly.Block} */ (this.getSourceBlock()));
166
+ var oldName = this.getValue();
167
+ if (oldName != name && oldName != legalName) {
168
+ // Rename any callers.
169
+ var blocks = this.getSourceBlock().workspace.getAllBlocks(false);
170
+ for (var i = 0; i < blocks.length; i++) {
171
+ if (blocks[i].renameProcedure) {
172
+ var procedureBlock = /** @type {!Blockly.Procedures.ProcedureBlock} */ (
173
+ blocks[i]);
174
+ procedureBlock.renameProcedure(
175
+ /** @type {string} */ (oldName), legalName);
176
+ }
177
+ }
178
+ }
179
+ return legalName;
180
+ };
181
+
182
+ /**
183
+ * Construct the blocks required by the flyout for the procedure category.
184
+ * @param {!Blockly.Workspace} workspace The workspace containing procedures.
185
+ * @return {!Array.<!Element>} Array of XML block elements.
186
+ */
187
+ Blockly.Procedures.flyoutCategory = function(workspace) {
188
+ var xmlList = [];
189
+ if (Blockly.Blocks['procedures_defnoreturn']) {
190
+ // <block type="procedures_defnoreturn" gap="16">
191
+ // <field name="NAME">do something</field>
192
+ // </block>
193
+ var block = Blockly.utils.xml.createElement('block');
194
+ block.setAttribute('type', 'procedures_defnoreturn');
195
+ block.setAttribute('gap', 16);
196
+ var nameField = Blockly.utils.xml.createElement('field');
197
+ nameField.setAttribute('name', 'NAME');
198
+ nameField.appendChild(Blockly.utils.xml.createTextNode(
199
+ Blockly.Msg['PROCEDURES_DEFNORETURN_PROCEDURE']));
200
+ block.appendChild(nameField);
201
+ xmlList.push(block);
202
+ }
203
+ if (Blockly.Blocks['procedures_defreturn']) {
204
+ // <block type="procedures_defreturn" gap="16">
205
+ // <field name="NAME">do something</field>
206
+ // </block>
207
+ var block = Blockly.utils.xml.createElement('block');
208
+ block.setAttribute('type', 'procedures_defreturn');
209
+ block.setAttribute('gap', 16);
210
+ var nameField = Blockly.utils.xml.createElement('field');
211
+ nameField.setAttribute('name', 'NAME');
212
+ nameField.appendChild(Blockly.utils.xml.createTextNode(
213
+ Blockly.Msg['PROCEDURES_DEFRETURN_PROCEDURE']));
214
+ block.appendChild(nameField);
215
+ xmlList.push(block);
216
+ }
217
+ if (Blockly.Blocks['procedures_ifreturn']) {
218
+ // <block type="procedures_ifreturn" gap="16"></block>
219
+ var block = Blockly.utils.xml.createElement('block');
220
+ block.setAttribute('type', 'procedures_ifreturn');
221
+ block.setAttribute('gap', 16);
222
+ xmlList.push(block);
223
+ }
224
+ if (xmlList.length) {
225
+ // Add slightly larger gap between system blocks and user calls.
226
+ xmlList[xmlList.length - 1].setAttribute('gap', 24);
227
+ }
228
+
229
+ function populateProcedures(procedureList, templateName) {
230
+ for (var i = 0; i < procedureList.length; i++) {
231
+ var name = procedureList[i][0];
232
+ var args = procedureList[i][1];
233
+ // <block type="procedures_callnoreturn" gap="16">
234
+ // <mutation name="do something">
235
+ // <arg name="x"></arg>
236
+ // </mutation>
237
+ // </block>
238
+ var block = Blockly.utils.xml.createElement('block');
239
+ block.setAttribute('type', templateName);
240
+ block.setAttribute('gap', 16);
241
+ var mutation = Blockly.utils.xml.createElement('mutation');
242
+ mutation.setAttribute('name', name);
243
+ block.appendChild(mutation);
244
+ for (var j = 0; j < args.length; j++) {
245
+ var arg = Blockly.utils.xml.createElement('arg');
246
+ arg.setAttribute('name', args[j]);
247
+ mutation.appendChild(arg);
248
+ }
249
+ xmlList.push(block);
250
+ }
251
+ }
252
+
253
+ var tuple = Blockly.Procedures.allProcedures(workspace);
254
+ populateProcedures(tuple[0], 'procedures_callnoreturn');
255
+ populateProcedures(tuple[1], 'procedures_callreturn');
256
+ return xmlList;
257
+ };
258
+
259
+ /**
260
+ * Updates the procedure mutator's flyout so that the arg block is not a
261
+ * duplicate of another arg.
262
+ * @param {!Blockly.Workspace} workspace The procedure mutator's workspace. This
263
+ * workspace's flyout is what is being updated.
264
+ * @private
265
+ */
266
+ Blockly.Procedures.updateMutatorFlyout_ = function(workspace) {
267
+ var usedNames = [];
268
+ var blocks = workspace.getBlocksByType('procedures_mutatorarg', false);
269
+ for (var i = 0, block; (block = blocks[i]); i++) {
270
+ usedNames.push(block.getFieldValue('NAME'));
271
+ }
272
+
273
+ var xml = Blockly.utils.xml.createElement('xml');
274
+ var argBlock = Blockly.utils.xml.createElement('block');
275
+ argBlock.setAttribute('type', 'procedures_mutatorarg');
276
+ var nameField = Blockly.utils.xml.createElement('field');
277
+ nameField.setAttribute('name', 'NAME');
278
+ var argValue = Blockly.Variables.generateUniqueNameFromOptions(
279
+ Blockly.Procedures.DEFAULT_ARG, usedNames);
280
+ var fieldContent = Blockly.utils.xml.createTextNode(argValue);
281
+
282
+ nameField.appendChild(fieldContent);
283
+ argBlock.appendChild(nameField);
284
+ xml.appendChild(argBlock);
285
+
286
+ workspace.updateToolbox(xml);
287
+ };
288
+
289
+ /**
290
+ * Listens for when a procedure mutator is opened. Then it triggers a flyout
291
+ * update and adds a mutator change listener to the mutator workspace.
292
+ * @param {!Blockly.Events.Abstract} e The event that triggered this listener.
293
+ * @package
294
+ */
295
+ Blockly.Procedures.mutatorOpenListener = function(e) {
296
+ if (e.type != Blockly.Events.UI || e.element != 'mutatorOpen' ||
297
+ !e.newValue) {
298
+ return;
299
+ }
300
+ var workspaceId = /** @type {string} */ (e.workspaceId);
301
+ var block = Blockly.Workspace.getById(workspaceId)
302
+ .getBlockById(e.blockId);
303
+ var type = block.type;
304
+ if (type != 'procedures_defnoreturn' && type != 'procedures_defreturn') {
305
+ return;
306
+ }
307
+ var workspace = block.mutator.getWorkspace();
308
+ Blockly.Procedures.updateMutatorFlyout_(workspace);
309
+ workspace.addChangeListener(Blockly.Procedures.mutatorChangeListener_);
310
+ };
311
+
312
+ /**
313
+ * Listens for changes in a procedure mutator and triggers flyout updates when
314
+ * necessary.
315
+ * @param {!Blockly.Events.Abstract} e The event that triggered this listener.
316
+ * @private
317
+ */
318
+ Blockly.Procedures.mutatorChangeListener_ = function(e) {
319
+ if (e.type != Blockly.Events.BLOCK_CREATE &&
320
+ e.type != Blockly.Events.BLOCK_DELETE &&
321
+ e.type != Blockly.Events.BLOCK_CHANGE) {
322
+ return;
323
+ }
324
+ var workspaceId = /** @type {string} */ (e.workspaceId);
325
+ var workspace = /** @type {!Blockly.WorkspaceSvg} */
326
+ (Blockly.Workspace.getById(workspaceId));
327
+ Blockly.Procedures.updateMutatorFlyout_(workspace);
328
+ };
329
+
330
+ /**
331
+ * Find all the callers of a named procedure.
332
+ * @param {string} name Name of procedure.
333
+ * @param {!Blockly.Workspace} workspace The workspace to find callers in.
334
+ * @return {!Array.<!Blockly.Block>} Array of caller blocks.
335
+ */
336
+ Blockly.Procedures.getCallers = function(name, workspace) {
337
+ var callers = [];
338
+ var blocks = workspace.getAllBlocks(false);
339
+ // Iterate through every block and check the name.
340
+ for (var i = 0; i < blocks.length; i++) {
341
+ if (blocks[i].getProcedureCall) {
342
+ var procedureBlock = /** @type {!Blockly.Procedures.ProcedureBlock} */ (
343
+ blocks[i]);
344
+ var procName = procedureBlock.getProcedureCall();
345
+ // Procedure name may be null if the block is only half-built.
346
+ if (procName && Blockly.Names.equals(procName, name)) {
347
+ callers.push(blocks[i]);
348
+ }
349
+ }
350
+ }
351
+ return callers;
352
+ };
353
+
354
+ /**
355
+ * When a procedure definition changes its parameters, find and edit all its
356
+ * callers.
357
+ * @param {!Blockly.Block} defBlock Procedure definition block.
358
+ */
359
+ Blockly.Procedures.mutateCallers = function(defBlock) {
360
+ var oldRecordUndo = Blockly.Events.recordUndo;
361
+ var procedureBlock = /** @type {!Blockly.Procedures.ProcedureBlock} */ (
362
+ defBlock);
363
+ var name = procedureBlock.getProcedureDef()[0];
364
+ var xmlElement = defBlock.mutationToDom(true);
365
+ var callers = Blockly.Procedures.getCallers(name, defBlock.workspace);
366
+ for (var i = 0, caller; (caller = callers[i]); i++) {
367
+ var oldMutationDom = caller.mutationToDom();
368
+ var oldMutation = oldMutationDom && Blockly.Xml.domToText(oldMutationDom);
369
+ caller.domToMutation(xmlElement);
370
+ var newMutationDom = caller.mutationToDom();
371
+ var newMutation = newMutationDom && Blockly.Xml.domToText(newMutationDom);
372
+ if (oldMutation != newMutation) {
373
+ // Fire a mutation on every caller block. But don't record this as an
374
+ // undo action since it is deterministically tied to the procedure's
375
+ // definition mutation.
376
+ Blockly.Events.recordUndo = false;
377
+ Blockly.Events.fire(new Blockly.Events.BlockChange(
378
+ caller, 'mutation', null, oldMutation, newMutation));
379
+ Blockly.Events.recordUndo = oldRecordUndo;
380
+ }
381
+ }
382
+ };
383
+
384
+ /**
385
+ * Find the definition block for the named procedure.
386
+ * @param {string} name Name of procedure.
387
+ * @param {!Blockly.Workspace} workspace The workspace to search.
388
+ * @return {Blockly.Block} The procedure definition block, or null not found.
389
+ */
390
+ Blockly.Procedures.getDefinition = function(name, workspace) {
391
+ // Assume that a procedure definition is a top block.
392
+ var blocks = workspace.getTopBlocks(false);
393
+ for (var i = 0; i < blocks.length; i++) {
394
+ if (blocks[i].getProcedureDef) {
395
+ var procedureBlock = /** @type {!Blockly.Procedures.ProcedureBlock} */ (
396
+ blocks[i]);
397
+ var tuple = procedureBlock.getProcedureDef();
398
+ if (tuple && Blockly.Names.equals(tuple[0], name)) {
399
+ return blocks[i];
400
+ }
401
+ }
402
+ }
403
+ return null;
404
+ };
@@ -0,0 +1,265 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2020 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ /**
8
+ * @fileoverview This file is a universal registry that provides generic methods
9
+ * for registering and unregistering different types of classes.
10
+ * @author aschmiedt@google.com (Abby Schmiedt)
11
+ */
12
+ 'use strict';
13
+
14
+ goog.provide('Blockly.registry');
15
+
16
+ goog.requireType('Blockly.blockRendering.Renderer');
17
+ goog.requireType('Blockly.Events.Abstract');
18
+ goog.requireType('Blockly.Field');
19
+ goog.requireType('Blockly.IConnectionChecker');
20
+ goog.requireType('Blockly.IFlyout');
21
+ goog.requireType('Blockly.IToolbox');
22
+ goog.requireType('Blockly.Theme');
23
+
24
+
25
+ /**
26
+ * A map of maps. With the keys being the type and name of the class we are
27
+ * registering and the value being the constructor function.
28
+ * e.g. {'field': {'field_angle': Blockly.FieldAngle}}
29
+ *
30
+ * @type {Object<string, Object<string, function(new:?)>>}
31
+ */
32
+ Blockly.registry.typeMap_ = {};
33
+
34
+ /**
35
+ * The string used to register the default class for a type of plugin.
36
+ * @type {string}
37
+ */
38
+ Blockly.registry.DEFAULT = 'default';
39
+
40
+ /**
41
+ * A name with the type of the element stored in the generic.
42
+ * @param {string} name The name of the registry type.
43
+ * @constructor
44
+ * @template T
45
+ */
46
+ Blockly.registry.Type = function(name) {
47
+ /**
48
+ * @type {string}
49
+ * @private
50
+ */
51
+ this.name_ = name;
52
+ };
53
+
54
+ /**
55
+ * Returns the name of the type.
56
+ * @return {string} The name.
57
+ * @override
58
+ */
59
+ Blockly.registry.Type.prototype.toString = function() {
60
+ return this.name_;
61
+ };
62
+
63
+ /** @type {!Blockly.registry.Type<Blockly.IConnectionChecker>} */
64
+ Blockly.registry.Type.CONNECTION_CHECKER =
65
+ new Blockly.registry.Type('connectionChecker');
66
+
67
+ /** @type {!Blockly.registry.Type<Blockly.Events.Abstract>} */
68
+ Blockly.registry.Type.EVENT = new Blockly.registry.Type('event');
69
+
70
+ /** @type {!Blockly.registry.Type<Blockly.Field>} */
71
+ Blockly.registry.Type.FIELD = new Blockly.registry.Type('field');
72
+
73
+ /** @type {!Blockly.registry.Type<Blockly.blockRendering.Renderer>} */
74
+ Blockly.registry.Type.RENDERER = new Blockly.registry.Type('renderer');
75
+
76
+ /** @type {!Blockly.registry.Type<Blockly.IToolbox>} */
77
+ Blockly.registry.Type.TOOLBOX = new Blockly.registry.Type('toolbox');
78
+
79
+ /** @type {!Blockly.registry.Type<Blockly.Theme>} */
80
+ Blockly.registry.Type.THEME = new Blockly.registry.Type('theme');
81
+
82
+ /** @type {!Blockly.registry.Type<Blockly.ToolboxItem>} */
83
+ Blockly.registry.Type.TOOLBOX_ITEM = new Blockly.registry.Type('toolboxItem');
84
+
85
+ /** @type {!Blockly.registry.Type<Blockly.IFlyout>} */
86
+ Blockly.registry.Type.FLYOUTS_VERTICAL_TOOLBOX =
87
+ new Blockly.registry.Type('flyoutsVerticalToolbox');
88
+
89
+ /** @type {!Blockly.registry.Type<Blockly.IFlyout>} */
90
+ Blockly.registry.Type.FLYOUTS_HORIZONTAL_TOOLBOX =
91
+ new Blockly.registry.Type('flyoutsHorizontalToolbox');
92
+
93
+ /**
94
+ * Registers a class based on a type and name.
95
+ * @param {string|!Blockly.registry.Type<T>} type The type of the plugin.
96
+ * (e.g. Field, Renderer)
97
+ * @param {string} name The plugin's name. (Ex. field_angle, geras)
98
+ * @param {?function(new:T, ...?)|Object} registryItem The class or object to
99
+ * register.
100
+ * @param {boolean=} opt_quiet True to prevent an error when overriding an
101
+ * already registered item.
102
+ * @throws {Error} if the type or name is empty, a name with the given type has
103
+ * already been registered, or if the given class or object is not valid for it's type.
104
+ * @template T
105
+ */
106
+ Blockly.registry.register = function(type, name, registryItem, opt_quiet) {
107
+ if ((!(type instanceof Blockly.registry.Type) && typeof type != 'string') || String(type).trim() == '') {
108
+ throw Error('Invalid type "' + type + '". The type must be a' +
109
+ ' non-empty string or a Blockly.registry.Type.');
110
+ }
111
+ type = String(type).toLowerCase();
112
+
113
+ if ((typeof name != 'string') || (name.trim() == '')) {
114
+ throw Error('Invalid name "' + name + '". The name must be a' +
115
+ ' non-empty string.');
116
+ }
117
+ name = name.toLowerCase();
118
+ if (!registryItem) {
119
+ throw Error('Can not register a null value');
120
+ }
121
+ var typeRegistry = Blockly.registry.typeMap_[type];
122
+ // If the type registry has not been created, create it.
123
+ if (!typeRegistry) {
124
+ typeRegistry = Blockly.registry.typeMap_[type] = {};
125
+ }
126
+
127
+ // Validate that the given class has all the required properties.
128
+ Blockly.registry.validate_(type, registryItem);
129
+
130
+ // Don't throw an error if opt_quiet is true.
131
+ if (!opt_quiet && typeRegistry[name]) {
132
+ throw Error('Name "' + name + '" with type "' + type + '" already registered.');
133
+ }
134
+ typeRegistry[name] = registryItem;
135
+ };
136
+
137
+ /**
138
+ * Checks the given registry item for properties that are required based on the
139
+ * type.
140
+ * @param {string} type The type of the plugin. (e.g. Field, Renderer)
141
+ * @param {Function|Object} registryItem A class or object that we are checking
142
+ * for the required properties.
143
+ * @private
144
+ */
145
+ Blockly.registry.validate_ = function(type, registryItem) {
146
+ switch (type) {
147
+ case String(Blockly.registry.Type.FIELD):
148
+ if (typeof registryItem.fromJson != 'function') {
149
+ throw Error('Type "' + type + '" must have a fromJson function');
150
+ }
151
+ break;
152
+ }
153
+ };
154
+
155
+ /**
156
+ * Unregisters the registry item with the given type and name.
157
+ * @param {string|!Blockly.registry.Type<T>} type The type of the plugin.
158
+ * (e.g. Field, Renderer)
159
+ * @param {string} name The plugin's name. (Ex. field_angle, geras)
160
+ * @template T
161
+ */
162
+ Blockly.registry.unregister = function(type, name) {
163
+ type = String(type).toLowerCase();
164
+ name = name.toLowerCase();
165
+ var typeRegistry = Blockly.registry.typeMap_[type];
166
+ if (!typeRegistry) {
167
+ console.warn('No type "' + type + '" found');
168
+ return;
169
+ }
170
+ if (!typeRegistry[name]) {
171
+ console.warn('No name "' + name + '" with type "' + type + '" found');
172
+ return;
173
+ }
174
+ delete Blockly.registry.typeMap_[type][name];
175
+ };
176
+
177
+ /**
178
+ * Gets the registry item for the given name and type. This can be either a
179
+ * class or an object.
180
+ * @param {string|!Blockly.registry.Type<T>} type The type of the plugin.
181
+ * (e.g. Field, Renderer)
182
+ * @param {string} name The plugin's name. (Ex. field_angle, geras)
183
+ * @return {?function(new:T, ...?)|Object} The class or object with the given
184
+ * name and type or null if none exists.
185
+ * @template T
186
+ */
187
+ Blockly.registry.getItem_ = function(type, name) {
188
+ type = String(type).toLowerCase();
189
+ name = name.toLowerCase();
190
+ var typeRegistry = Blockly.registry.typeMap_[type];
191
+ if (!typeRegistry) {
192
+ console.warn('No type "' + type + '" found');
193
+ return null;
194
+ }
195
+ if (!typeRegistry[name]) {
196
+ console.warn('No name "' + name + '" with type "' + type + '" found');
197
+ return null;
198
+ }
199
+ return typeRegistry[name];
200
+ };
201
+
202
+ /**
203
+ * Returns whether or not the registry contains an item with the given type and
204
+ * name.
205
+ * @param {string|!Blockly.registry.Type<T>} type The type of the plugin.
206
+ * (e.g. Field, Renderer)
207
+ * @param {string} name The plugin's name. (Ex. field_angle, geras)
208
+ * @return {boolean} True if the registry has an item with the given type and
209
+ * name, false otherwise.
210
+ * @template T
211
+ */
212
+ Blockly.registry.hasItem = function(type, name) {
213
+ type = String(type).toLowerCase();
214
+ name = name.toLowerCase();
215
+ var typeRegistry = Blockly.registry.typeMap_[type];
216
+ if (!typeRegistry) {
217
+ return false;
218
+ }
219
+ return !!(typeRegistry[name]);
220
+ };
221
+
222
+ /**
223
+ * Gets the class for the given name and type.
224
+ * @param {string|!Blockly.registry.Type<T>} type The type of the plugin.
225
+ * (e.g. Field, Renderer)
226
+ * @param {string} name The plugin's name. (Ex. field_angle, geras)
227
+ * @return {?function(new:T, ...?)} The class with the given name and type or
228
+ * null if none exists.
229
+ * @template T
230
+ */
231
+ Blockly.registry.getClass = function(type, name) {
232
+ return /** @type {?function(new:T, ...?)} */ (Blockly.registry.getItem_(type, name));
233
+ };
234
+
235
+ /**
236
+ * Gets the object for the given name and type.
237
+ * @param {string|!Blockly.registry.Type<T>} type The type of the plugin.
238
+ * (e.g. Category)
239
+ * @param {string} name The plugin's name. (Ex. logic_category)
240
+ * @returns {T} The object with the given name and type or null if none exists.
241
+ * @template T
242
+ */
243
+ Blockly.registry.getObject = function(type, name) {
244
+ return /** @type {T} */ (Blockly.registry.getItem_(type, name));
245
+ };
246
+
247
+ /**
248
+ * Gets the class from Blockly options for the given type.
249
+ * This is used for plugins that override a built in feature. (e.g. Toolbox)
250
+ * @param {!Blockly.registry.Type<T>} type The type of the plugin.
251
+ * @param {!Blockly.Options} options The option object to check for the given
252
+ * plugin.
253
+ * @return {?function(new:T, ...?)} The class for the plugin.
254
+ * @template T
255
+ */
256
+ Blockly.registry.getClassFromOptions = function(type, options) {
257
+ var typeName = type.toString();
258
+ var plugin = options.plugins[typeName] || Blockly.registry.DEFAULT;
259
+
260
+ // If the user passed in a plugin class instead of a registered plugin name.
261
+ if (typeof plugin == 'function') {
262
+ return plugin;
263
+ }
264
+ return Blockly.registry.getClass(type, plugin);
265
+ };