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,554 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2019 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ /**
8
+ * @fileoverview Definition of the Blockly.Component class.
9
+ * This class is similar to Closure's goog.ui.Component class.
10
+ * @author samelh@google.com (Sam El-Husseini)
11
+ */
12
+ 'use strict';
13
+
14
+ goog.provide('Blockly.Component');
15
+
16
+ goog.provide('Blockly.Component.Error');
17
+ goog.require('Blockly.utils.dom');
18
+ goog.require('Blockly.utils.IdGenerator');
19
+ goog.require('Blockly.utils.style');
20
+
21
+
22
+ /**
23
+ * Default implementation of a UI component.
24
+ * Similar to Closure's goog.ui.Component.
25
+ *
26
+ * @constructor
27
+ */
28
+ Blockly.Component = function() {
29
+
30
+ /**
31
+ * Whether the component is rendered right-to-left.
32
+ * @type {boolean}
33
+ * @protected
34
+ */
35
+ this.rightToLeft_ = Blockly.Component.defaultRightToLeft;
36
+
37
+ /**
38
+ * Unique ID of the component, lazily initialized in {@link
39
+ * Blockly.Component#getId} if needed. This property is strictly private and
40
+ * must not be accessed directly outside of this class!
41
+ * @type {?string}
42
+ * @private
43
+ */
44
+ this.id_ = null;
45
+
46
+ /**
47
+ * Whether the component is in the document.
48
+ * @type {boolean}
49
+ * @private
50
+ */
51
+ this.inDocument_ = false;
52
+
53
+ /**
54
+ * The DOM element for the component.
55
+ * @type {?Element}
56
+ * @private
57
+ */
58
+ this.element_ = null;
59
+
60
+ /**
61
+ * Parent component to which events will be propagated. This property is
62
+ * strictly private and must not be accessed directly outside of this class!
63
+ * @type {?Blockly.Component}
64
+ * @private
65
+ */
66
+ this.parent_ = null;
67
+
68
+ /**
69
+ * Array of child components.
70
+ * Must be kept in sync with `childIndex_`. This property is strictly
71
+ * private and must not be accessed directly outside of this class!
72
+ * @type {?Array.<?Blockly.Component>}
73
+ * @private
74
+ */
75
+ this.children_ = [];
76
+
77
+ /**
78
+ * Map of child component IDs to child components. Used for constant-time
79
+ * random access to child components by ID.
80
+ * Must be kept in sync with `children_`. This property is strictly
81
+ * private and must not be accessed directly outside of this class!
82
+ *
83
+ * @type {?Object}
84
+ * @private
85
+ */
86
+ this.childIndex_ = {};
87
+
88
+ /**
89
+ * Whether or not the component has been disposed.
90
+ * @type {boolean}
91
+ * @private
92
+ */
93
+ this.disposed_ = false;
94
+ };
95
+
96
+
97
+ /**
98
+ * The default right to left value.
99
+ * @type {boolean}
100
+ * @package
101
+ */
102
+ Blockly.Component.defaultRightToLeft = false;
103
+
104
+ /**
105
+ * Errors thrown by the component.
106
+ * @enum {string}
107
+ */
108
+ Blockly.Component.Error = {
109
+ /**
110
+ * Error when the component is already rendered and another render attempt is
111
+ * made.
112
+ */
113
+ ALREADY_RENDERED: 'Component already rendered',
114
+
115
+ /**
116
+ * Error when an attempt is made to set the parent of a component in a way
117
+ * that would result in an inconsistent object graph.
118
+ */
119
+ PARENT_UNABLE_TO_BE_SET: 'Unable to set parent component',
120
+
121
+ /**
122
+ * Error when an attempt is made to add a child component at an out-of-bounds
123
+ * index. We don't support sparse child arrays.
124
+ */
125
+ CHILD_INDEX_OUT_OF_BOUNDS: 'Child component index out of bounds',
126
+
127
+ /**
128
+ * Error when calling an abstract method that should be overriden.
129
+ */
130
+ ABSTRACT_METHOD: 'Unimplemented abstract method'
131
+ };
132
+
133
+ /**
134
+ * Gets the unique ID for the instance of this component. If the instance
135
+ * doesn't already have an ID, generates one on the fly.
136
+ * @return {string} Unique component ID.
137
+ * @package
138
+ */
139
+ Blockly.Component.prototype.getId = function() {
140
+ return this.id_ || (this.id_ = Blockly.utils.IdGenerator.getNextUniqueId());
141
+ };
142
+
143
+ /**
144
+ * Gets the component's element.
145
+ * @return {Element} The element for the component.
146
+ * @package
147
+ */
148
+ Blockly.Component.prototype.getElement = function() {
149
+ return this.element_;
150
+ };
151
+
152
+ /**
153
+ * Sets the component's root element to the given element. Considered
154
+ * protected and final.
155
+ *
156
+ * This should generally only be called during createDom. Setting the element
157
+ * does not actually change which element is rendered, only the element that is
158
+ * associated with this UI component.
159
+ *
160
+ * This should only be used by subclasses and its associated renderers.
161
+ *
162
+ * @param {Element} element Root element for the component.
163
+ * @protected
164
+ */
165
+ Blockly.Component.prototype.setElementInternal = function(element) {
166
+ this.element_ = element;
167
+ };
168
+
169
+ /**
170
+ * Sets the parent of this component to use for event bubbling. Throws an error
171
+ * if the component already has a parent or if an attempt is made to add a
172
+ * component to itself as a child.
173
+ * @param {Blockly.Component} parent The parent component.
174
+ * @protected
175
+ */
176
+ Blockly.Component.prototype.setParent = function(parent) {
177
+ if (this == parent) {
178
+ // Attempting to add a child to itself is an error.
179
+ throw Error(Blockly.Component.Error.PARENT_UNABLE_TO_BE_SET);
180
+ }
181
+
182
+ if (parent && this.parent_ && this.id_ && this.parent_.getChild(this.id_) &&
183
+ this.parent_ != parent) {
184
+ // This component is already the child of some parent.
185
+ throw Error(Blockly.Component.Error.PARENT_UNABLE_TO_BE_SET);
186
+ }
187
+
188
+ this.parent_ = parent;
189
+ };
190
+
191
+ /**
192
+ * Returns the component's parent, if any.
193
+ * @return {?Blockly.Component} The parent component.
194
+ * @protected
195
+ */
196
+ Blockly.Component.prototype.getParent = function() {
197
+ return this.parent_;
198
+ };
199
+
200
+ /**
201
+ * Determines whether the component has been added to the document.
202
+ * @return {boolean} TRUE if rendered. Otherwise, FALSE.
203
+ * @protected
204
+ */
205
+ Blockly.Component.prototype.isInDocument = function() {
206
+ return this.inDocument_;
207
+ };
208
+
209
+ /**
210
+ * Creates the initial DOM representation for the component.
211
+ * @protected
212
+ */
213
+ Blockly.Component.prototype.createDom = function() {
214
+ throw Error(Blockly.Component.Error.ABSTRACT_METHOD);
215
+ };
216
+
217
+ /**
218
+ * Renders the component. If a parent element is supplied, the component's
219
+ * element will be appended to it. If there is no optional parent element and
220
+ * the element doesn't have a parentNode then it will be appended to the
221
+ * document body.
222
+ *
223
+ * If this component has a parent component, and the parent component is
224
+ * not in the document already, then this will not call `enterDocument`
225
+ * on this component.
226
+ *
227
+ * Throws an Error if the component is already rendered.
228
+ *
229
+ * @param {Element=} opt_parentElement Optional parent element to render the
230
+ * component into.
231
+ * @package
232
+ */
233
+ Blockly.Component.prototype.render = function(opt_parentElement) {
234
+ this.render_(opt_parentElement);
235
+ };
236
+
237
+ /**
238
+ * Renders the component. If a parent element is supplied, the component's
239
+ * element will be appended to it. If there is no optional parent element and
240
+ * the element doesn't have a parentNode then it will be appended to the
241
+ * document body.
242
+ *
243
+ * If this component has a parent component, and the parent component is
244
+ * not in the document already, then this will not call `enterDocument`
245
+ * on this component.
246
+ *
247
+ * Throws an Error if the component is already rendered.
248
+ *
249
+ * @param {Element=} opt_parentElement Optional parent element to render the
250
+ * component into.
251
+ * @param {Node=} opt_beforeNode Node before which the component is to
252
+ * be rendered. If left out the node is appended to the parent element.
253
+ * @private
254
+ */
255
+ Blockly.Component.prototype.render_ = function(
256
+ opt_parentElement, opt_beforeNode) {
257
+ if (this.inDocument_) {
258
+ throw Error(Blockly.Component.Error.ALREADY_RENDERED);
259
+ }
260
+
261
+ if (!this.element_) {
262
+ this.createDom();
263
+ }
264
+
265
+ if (opt_parentElement) {
266
+ opt_parentElement.insertBefore(this.element_, opt_beforeNode || null);
267
+ } else {
268
+ document.body.appendChild(this.element_);
269
+ }
270
+
271
+ // If this component has a parent component that isn't in the document yet,
272
+ // we don't call enterDocument() here. Instead, when the parent component
273
+ // enters the document, the enterDocument() call will propagate to its
274
+ // children, including this one. If the component doesn't have a parent
275
+ // or if the parent is already in the document, we call enterDocument().
276
+ if (!this.parent_ || this.parent_.isInDocument()) {
277
+ this.enterDocument();
278
+ }
279
+ };
280
+
281
+ /**
282
+ * Called when the component's element is known to be in the document. Anything
283
+ * using document.getElementById etc. should be done at this stage.
284
+ *
285
+ * If the component contains child components, this call is propagated to its
286
+ * children.
287
+ * @protected
288
+ */
289
+ Blockly.Component.prototype.enterDocument = function() {
290
+ this.inDocument_ = true;
291
+
292
+ // Propagate enterDocument to child components that have a DOM, if any.
293
+ // If a child was decorated before entering the document (permitted when
294
+ // Blockly.Component.ALLOW_DETACHED_DECORATION is true), its enterDocument
295
+ // will be called here.
296
+ this.forEachChild(function(child) {
297
+ if (!child.isInDocument() && child.getElement()) {
298
+ child.enterDocument();
299
+ }
300
+ });
301
+ };
302
+
303
+ /**
304
+ * Called by dispose to clean up the elements and listeners created by a
305
+ * component, or by a parent component/application who has removed the
306
+ * component from the document but wants to reuse it later.
307
+ *
308
+ * If the component contains child components, this call is propagated to its
309
+ * children.
310
+ *
311
+ * It should be possible for the component to be rendered again once this method
312
+ * has been called.
313
+ * @protected
314
+ */
315
+ Blockly.Component.prototype.exitDocument = function() {
316
+ // Propagate exitDocument to child components that have been rendered, if any.
317
+ this.forEachChild(function(child) {
318
+ if (child.isInDocument()) {
319
+ child.exitDocument();
320
+ }
321
+ });
322
+
323
+ this.inDocument_ = false;
324
+ };
325
+
326
+ /**
327
+ * Disposes of the object. If the object hasn't already been disposed of, calls
328
+ * {@link #disposeInternal}.
329
+ * @package
330
+ */
331
+ Blockly.Component.prototype.dispose = function() {
332
+ if (!this.disposed_) {
333
+ // Set disposed_ to true first, in case during the chain of disposal this
334
+ // gets disposed recursively.
335
+ this.disposed_ = true;
336
+ this.disposeInternal();
337
+ }
338
+ };
339
+
340
+ /**
341
+ * Disposes of the component. Calls `exitDocument`, which is expected to
342
+ * remove event handlers and clean up the component. Propagates the call to
343
+ * the component's children, if any. Removes the component's DOM from the
344
+ * document.
345
+ * @protected
346
+ */
347
+ Blockly.Component.prototype.disposeInternal = function() {
348
+ if (this.inDocument_) {
349
+ this.exitDocument();
350
+ }
351
+
352
+ // Disposes of the component's children, if any.
353
+ this.forEachChild(function(child) { child.dispose(); });
354
+
355
+ // Detach the component's element from the DOM.
356
+ if (this.element_) {
357
+ Blockly.utils.dom.removeNode(this.element_);
358
+ }
359
+
360
+ this.children_ = null;
361
+ this.childIndex_ = null;
362
+ this.element_ = null;
363
+ this.parent_ = null;
364
+ };
365
+
366
+ /**
367
+ * Adds the specified component as the last child of this component. See
368
+ * {@link Blockly.Component#addChildAt} for detailed semantics.
369
+ *
370
+ * @see Blockly.Component#addChildAt
371
+ * @param {Blockly.Component} child The new child component.
372
+ * @param {boolean=} opt_render If true, the child component will be rendered
373
+ * into the parent.
374
+ * @package
375
+ */
376
+ Blockly.Component.prototype.addChild = function(child, opt_render) {
377
+ this.addChildAt(child, this.getChildCount(), opt_render);
378
+ };
379
+
380
+ /**
381
+ * Adds the specified component as a child of this component at the given
382
+ * 0-based index.
383
+ *
384
+ * Both `addChild` and `addChildAt` assume the following contract
385
+ * between parent and child components:
386
+ * <ul>
387
+ * <li>the child component's element must be a descendant of the parent
388
+ * component's element, and
389
+ * <li>the DOM state of the child component must be consistent with the DOM
390
+ * state of the parent component (see `isInDocument`) in the
391
+ * steady state -- the exception is to addChildAt(child, i, false) and
392
+ * then immediately decorate/render the child.
393
+ * </ul>
394
+ *
395
+ * In particular, `parent.addChild(child)` will throw an error if the
396
+ * child component is already in the document, but the parent isn't.
397
+ *
398
+ * Clients of this API may call `addChild` and `addChildAt` with
399
+ * `opt_render` set to true. If `opt_render` is true, calling these
400
+ * methods will automatically render the child component's element into the
401
+ * parent component's element. If the parent does not yet have an element, then
402
+ * `createDom` will automatically be invoked on the parent before
403
+ * rendering the child.
404
+ *
405
+ * Invoking {@code parent.addChild(child, true)} will throw an error if the
406
+ * child component is already in the document, regardless of the parent's DOM
407
+ * state.
408
+ *
409
+ * If `opt_render` is true and the parent component is not already
410
+ * in the document, `enterDocument` will not be called on this component
411
+ * at this point.
412
+ *
413
+ * Finally, this method also throws an error if the new child already has a
414
+ * different parent, or the given index is out of bounds.
415
+ *
416
+ * @see Blockly.Component#addChild
417
+ * @param {Blockly.Component} child The new child component.
418
+ * @param {number} index 0-based index at which the new child component is to be
419
+ * added; must be between 0 and the current child count (inclusive).
420
+ * @param {boolean=} opt_render If true, the child component will be rendered
421
+ * into the parent.
422
+ * @protected
423
+ */
424
+ Blockly.Component.prototype.addChildAt = function(child, index, opt_render) {
425
+ if (child.inDocument_ && (opt_render || !this.inDocument_)) {
426
+ // Adding a child that's already in the document is an error, except if the
427
+ // parent is also in the document and opt_render is false (e.g. decorate()).
428
+ throw Error(Blockly.Component.Error.ALREADY_RENDERED);
429
+ }
430
+
431
+ if (index < 0 || index > this.getChildCount()) {
432
+ // Allowing sparse child arrays would lead to strange behavior, so we don't.
433
+ throw Error(Blockly.Component.Error.CHILD_INDEX_OUT_OF_BOUNDS);
434
+ }
435
+
436
+ // Moving child within component, remove old reference.
437
+ this.childIndex_[child.getId()] = child;
438
+ if (child.getParent() == this) {
439
+ // Remove from this.children_
440
+ var i = this.children_.indexOf(child);
441
+ if (i > -1) {
442
+ this.children_.splice(i, 1);
443
+ }
444
+ }
445
+
446
+ // Set the parent of the child to this component. This throws an error if
447
+ // the child is already contained by another component.
448
+ child.setParent(this);
449
+ this.children_.splice(index, 0, child);
450
+
451
+ if (child.inDocument_ && this.inDocument_ && child.getParent() == this) {
452
+ // Changing the position of an existing child, move the DOM node (if
453
+ // necessary).
454
+ var contentElement = this.getContentElement();
455
+ var insertBeforeElement = contentElement.childNodes[index] || null;
456
+ if (insertBeforeElement != child.getElement()) {
457
+ contentElement.insertBefore(child.getElement(), insertBeforeElement);
458
+ }
459
+ } else if (opt_render) {
460
+ // If this (parent) component doesn't have a DOM yet, call createDom now
461
+ // to make sure we render the child component's element into the correct
462
+ // parent element (otherwise render_ with a null first argument would
463
+ // render the child into the document body, which is almost certainly not
464
+ // what we want).
465
+ if (!this.element_) {
466
+ this.createDom();
467
+ }
468
+ // Render the child into the parent at the appropriate location. Note that
469
+ // getChildAt(index + 1) returns undefined if inserting at the end.
470
+ var sibling = this.getChildAt(index + 1);
471
+ // render_() calls enterDocument() if the parent is already in the document.
472
+ child.render_(this.getContentElement(), sibling ? sibling.element_ : null);
473
+ } else if (this.inDocument_ && !child.inDocument_ && child.element_ &&
474
+ child.element_.parentNode &&
475
+ // Under some circumstances, IE8 implicitly creates a Document Fragment
476
+ // for detached nodes, so ensure the parent is an Element as it should be.
477
+ child.element_.parentNode.nodeType ==
478
+ Blockly.utils.dom.NodeType.ELEMENT_NODE) {
479
+ // We don't touch the DOM, but if the parent is in the document, and the
480
+ // child element is in the document but not marked as such, then we call
481
+ // enterDocument on the child.
482
+ child.enterDocument();
483
+ }
484
+ };
485
+
486
+ /**
487
+ * Returns the DOM element into which child components are to be rendered,
488
+ * or null if the component itself hasn't been rendered yet. This default
489
+ * implementation returns the component's root element. Subclasses with
490
+ * complex DOM structures must override this method.
491
+ * @return {Element} Element to contain child elements (null if none).
492
+ * @protected
493
+ */
494
+ Blockly.Component.prototype.getContentElement = function() {
495
+ return this.element_;
496
+ };
497
+
498
+ /**
499
+ * Returns true if the component has children.
500
+ * @return {boolean} True if the component has children.
501
+ * @protected
502
+ */
503
+ Blockly.Component.prototype.hasChildren = function() {
504
+ return this.children_.length != 0;
505
+ };
506
+
507
+ /**
508
+ * Returns the number of children of this component.
509
+ * @return {number} The number of children.
510
+ * @protected
511
+ */
512
+ Blockly.Component.prototype.getChildCount = function() {
513
+ return this.children_.length;
514
+ };
515
+
516
+ /**
517
+ * Returns the child with the given ID, or null if no such child exists.
518
+ * @param {string} id Child component ID.
519
+ * @return {?Blockly.Component} The child with the given ID; null if none.
520
+ * @protected
521
+ */
522
+ Blockly.Component.prototype.getChild = function(id) {
523
+ // Use childIndex_ for O(1) access by ID.
524
+ return id ?
525
+ /** @type {Blockly.Component} */ (this.childIndex_[id]) || null : null;
526
+ };
527
+
528
+ /**
529
+ * Returns the child at the given index, or null if the index is out of bounds.
530
+ * @param {number} index 0-based index.
531
+ * @return {?Blockly.Component} The child at the given index; null if none.
532
+ * @protected
533
+ */
534
+ Blockly.Component.prototype.getChildAt = function(index) {
535
+ // Use children_ for access by index.
536
+ return this.children_[index] || null;
537
+ };
538
+
539
+ /**
540
+ * Calls the given function on each of this component's children in order. If
541
+ * `opt_obj` is provided, it will be used as the 'this' object in the
542
+ * function when called. The function should take two arguments: the child
543
+ * component and its 0-based index. The return value is ignored.
544
+ * @param {function(this:T,?,number):?} f The function to call for every
545
+ * child component; should take 2 arguments (the child and its index).
546
+ * @param {T=} opt_obj Used as the 'this' object in f when called.
547
+ * @template T
548
+ * @protected
549
+ */
550
+ Blockly.Component.prototype.forEachChild = function(f, opt_obj) {
551
+ for (var i = 0; i < this.children_.length; i++) {
552
+ f.call(/** @type {?} */ (opt_obj), this.children_[i], i);
553
+ }
554
+ };