nodeskini 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (534) hide show
  1. package/blocklySkini/archive/blocklyControleur.js +87 -0
  2. package/blocklySkini/archive/blocklySkini.js +84 -0
  3. package/blocklySkini/archive/blocklyhop.js +75 -0
  4. package/blocklySkini/archive/clientControleurBlocly.js +170 -0
  5. package/blocklySkini/archive/index.html +76 -0
  6. package/blocklySkini/archive/testHHsuspend.txt +89 -0
  7. package/blocklySkini/archive/testHHtrap.txt +262 -0
  8. package/blocklySkini/archive/testOrchestration.txt +177 -0
  9. package/blocklySkini/archive/testOrchestration.xml +447 -0
  10. package/blocklySkini/archive/testOrchestration2.xml +456 -0
  11. package/blocklySkini/blockly/README.md +77 -0
  12. package/blocklySkini/blockly/blockly.d.ts +21480 -0
  13. package/blocklySkini/blockly/blockly.js +25 -0
  14. package/blocklySkini/blockly/blockly.min.js +2188 -0
  15. package/blocklySkini/blockly/blockly_compressed.js +1455 -0
  16. package/blocklySkini/blockly/blockly_compressed.js.map +1 -0
  17. package/blocklySkini/blockly/blocks/colour.js +122 -0
  18. package/blocklySkini/blockly/blocks/lists.js +862 -0
  19. package/blocklySkini/blockly/blocks/logic.js +635 -0
  20. package/blocklySkini/blockly/blocks/loops.js +357 -0
  21. package/blocklySkini/blockly/blocks/math.js +566 -0
  22. package/blocklySkini/blockly/blocks/procedures.js +1072 -0
  23. package/blocklySkini/blockly/blocks/text.js +923 -0
  24. package/blocklySkini/blockly/blocks/variables.js +163 -0
  25. package/blocklySkini/blockly/blocks/variables_dynamic.js +180 -0
  26. package/blocklySkini/blockly/blocks.d.ts +15 -0
  27. package/blocklySkini/blockly/blocks.js +27 -0
  28. package/blocklySkini/blockly/blocks_compressed.js +182 -0
  29. package/blocklySkini/blockly/blocks_compressed.js.map +1 -0
  30. package/blocklySkini/blockly/browser.js +36 -0
  31. package/blocklySkini/blockly/core/block.js +2010 -0
  32. package/blocklySkini/blockly/core/block_animations.js +203 -0
  33. package/blocklySkini/blockly/core/block_drag_surface.js +212 -0
  34. package/blocklySkini/blockly/core/block_dragger.js +378 -0
  35. package/blocklySkini/blockly/core/block_events.js +548 -0
  36. package/blocklySkini/blockly/core/block_svg.js +1763 -0
  37. package/blocklySkini/blockly/core/blockly.js +674 -0
  38. package/blocklySkini/blockly/core/blocks.js +23 -0
  39. package/blocklySkini/blockly/core/bubble.js +880 -0
  40. package/blocklySkini/blockly/core/bubble_dragger.js +274 -0
  41. package/blocklySkini/blockly/core/comment.js +439 -0
  42. package/blocklySkini/blockly/core/components/component.js +554 -0
  43. package/blocklySkini/blockly/core/components/tree/basenode.js +895 -0
  44. package/blocklySkini/blockly/core/components/tree/treecontrol.js +332 -0
  45. package/blocklySkini/blockly/core/components/tree/treenode.js +172 -0
  46. package/blocklySkini/blockly/core/connection.js +682 -0
  47. package/blocklySkini/blockly/core/connection_checker.js +285 -0
  48. package/blocklySkini/blockly/core/connection_db.js +295 -0
  49. package/blocklySkini/blockly/core/constants.js +277 -0
  50. package/blocklySkini/blockly/core/contextmenu.js +307 -0
  51. package/blocklySkini/blockly/core/contextmenu_items.js +534 -0
  52. package/blocklySkini/blockly/core/contextmenu_registry.js +165 -0
  53. package/blocklySkini/blockly/core/css.js +549 -0
  54. package/blocklySkini/blockly/core/dropdowndiv.js +776 -0
  55. package/blocklySkini/blockly/core/events.js +387 -0
  56. package/blocklySkini/blockly/core/events_abstract.js +106 -0
  57. package/blocklySkini/blockly/core/extensions.js +450 -0
  58. package/blocklySkini/blockly/core/field.js +1162 -0
  59. package/blocklySkini/blockly/core/field_angle.js +562 -0
  60. package/blocklySkini/blockly/core/field_checkbox.js +220 -0
  61. package/blocklySkini/blockly/core/field_colour.js +664 -0
  62. package/blocklySkini/blockly/core/field_dropdown.js +760 -0
  63. package/blocklySkini/blockly/core/field_image.js +286 -0
  64. package/blocklySkini/blockly/core/field_label.js +130 -0
  65. package/blocklySkini/blockly/core/field_label_serializable.js +69 -0
  66. package/blocklySkini/blockly/core/field_multilineinput.js +299 -0
  67. package/blocklySkini/blockly/core/field_number.js +317 -0
  68. package/blocklySkini/blockly/core/field_registry.js +66 -0
  69. package/blocklySkini/blockly/core/field_textinput.js +616 -0
  70. package/blocklySkini/blockly/core/field_variable.js +463 -0
  71. package/blocklySkini/blockly/core/flyout_base.js +1071 -0
  72. package/blocklySkini/blockly/core/flyout_button.js +325 -0
  73. package/blocklySkini/blockly/core/flyout_dragger.js +76 -0
  74. package/blocklySkini/blockly/core/flyout_horizontal.js +388 -0
  75. package/blocklySkini/blockly/core/flyout_vertical.js +397 -0
  76. package/blocklySkini/blockly/core/generator.js +482 -0
  77. package/blocklySkini/blockly/core/gesture.js +993 -0
  78. package/blocklySkini/blockly/core/grid.js +222 -0
  79. package/blocklySkini/blockly/core/icon.js +206 -0
  80. package/blocklySkini/blockly/core/inject.js +487 -0
  81. package/blocklySkini/blockly/core/input.js +296 -0
  82. package/blocklySkini/blockly/core/insertion_marker_manager.js +700 -0
  83. package/blocklySkini/blockly/core/interfaces/i_accessibility.js +72 -0
  84. package/blocklySkini/blockly/core/interfaces/i_bounded_element.js +31 -0
  85. package/blocklySkini/blockly/core/interfaces/i_bubble.js +83 -0
  86. package/blocklySkini/blockly/core/interfaces/i_connection_checker.js +94 -0
  87. package/blocklySkini/blockly/core/interfaces/i_contextmenu.js +26 -0
  88. package/blocklySkini/blockly/core/interfaces/i_copyable.js +40 -0
  89. package/blocklySkini/blockly/core/interfaces/i_deletable.js +27 -0
  90. package/blocklySkini/blockly/core/interfaces/i_deletearea.js +28 -0
  91. package/blocklySkini/blockly/core/interfaces/i_flyout.js +178 -0
  92. package/blocklySkini/blockly/core/interfaces/i_movable.js +27 -0
  93. package/blocklySkini/blockly/core/interfaces/i_registrable.js +22 -0
  94. package/blocklySkini/blockly/core/interfaces/i_registrable_field.js +31 -0
  95. package/blocklySkini/blockly/core/interfaces/i_selectable.js +43 -0
  96. package/blocklySkini/blockly/core/interfaces/i_styleable.js +33 -0
  97. package/blocklySkini/blockly/core/interfaces/i_toolbox.js +131 -0
  98. package/blocklySkini/blockly/core/interfaces/i_toolbox_item.js +148 -0
  99. package/blocklySkini/blockly/core/keyboard_nav/action.js +26 -0
  100. package/blocklySkini/blockly/core/keyboard_nav/ast_node.js +684 -0
  101. package/blocklySkini/blockly/core/keyboard_nav/basic_cursor.js +208 -0
  102. package/blocklySkini/blockly/core/keyboard_nav/cursor.js +170 -0
  103. package/blocklySkini/blockly/core/keyboard_nav/flyout_cursor.js +106 -0
  104. package/blocklySkini/blockly/core/keyboard_nav/key_map.js +190 -0
  105. package/blocklySkini/blockly/core/keyboard_nav/marker.js +120 -0
  106. package/blocklySkini/blockly/core/keyboard_nav/navigation.js +1084 -0
  107. package/blocklySkini/blockly/core/keyboard_nav/tab_navigate_cursor.js +48 -0
  108. package/blocklySkini/blockly/core/marker_manager.js +183 -0
  109. package/blocklySkini/blockly/core/menu.js +465 -0
  110. package/blocklySkini/blockly/core/menuitem.js +280 -0
  111. package/blocklySkini/blockly/core/msg.js +31 -0
  112. package/blocklySkini/blockly/core/mutator.js +555 -0
  113. package/blocklySkini/blockly/core/names.js +186 -0
  114. package/blocklySkini/blockly/core/options.js +365 -0
  115. package/blocklySkini/blockly/core/procedures.js +404 -0
  116. package/blocklySkini/blockly/core/registry.js +265 -0
  117. package/blocklySkini/blockly/core/rendered_connection.js +565 -0
  118. package/blocklySkini/blockly/core/renderers/common/block_rendering.js +81 -0
  119. package/blocklySkini/blockly/core/renderers/common/constants.js +1256 -0
  120. package/blocklySkini/blockly/core/renderers/common/debugger.js +431 -0
  121. package/blocklySkini/blockly/core/renderers/common/drawer.js +468 -0
  122. package/blocklySkini/blockly/core/renderers/common/i_path_object.js +151 -0
  123. package/blocklySkini/blockly/core/renderers/common/info.js +775 -0
  124. package/blocklySkini/blockly/core/renderers/common/marker_svg.js +687 -0
  125. package/blocklySkini/blockly/core/renderers/common/path_object.js +279 -0
  126. package/blocklySkini/blockly/core/renderers/common/renderer.js +301 -0
  127. package/blocklySkini/blockly/core/renderers/geras/constants.js +64 -0
  128. package/blocklySkini/blockly/core/renderers/geras/drawer.js +205 -0
  129. package/blocklySkini/blockly/core/renderers/geras/highlight_constants.js +311 -0
  130. package/blocklySkini/blockly/core/renderers/geras/highlighter.js +256 -0
  131. package/blocklySkini/blockly/core/renderers/geras/info.js +483 -0
  132. package/blocklySkini/blockly/core/renderers/geras/measurables/inputs.js +67 -0
  133. package/blocklySkini/blockly/core/renderers/geras/path_object.js +177 -0
  134. package/blocklySkini/blockly/core/renderers/geras/renderer.js +138 -0
  135. package/blocklySkini/blockly/core/renderers/measurables/base.js +44 -0
  136. package/blocklySkini/blockly/core/renderers/measurables/connections.js +114 -0
  137. package/blocklySkini/blockly/core/renderers/measurables/inputs.js +160 -0
  138. package/blocklySkini/blockly/core/renderers/measurables/row_elements.js +185 -0
  139. package/blocklySkini/blockly/core/renderers/measurables/rows.js +532 -0
  140. package/blocklySkini/blockly/core/renderers/measurables/types.js +349 -0
  141. package/blocklySkini/blockly/core/renderers/minimalist/constants.js +29 -0
  142. package/blocklySkini/blockly/core/renderers/minimalist/drawer.js +32 -0
  143. package/blocklySkini/blockly/core/renderers/minimalist/info.js +45 -0
  144. package/blocklySkini/blockly/core/renderers/minimalist/renderer.js +70 -0
  145. package/blocklySkini/blockly/core/renderers/thrasos/info.js +338 -0
  146. package/blocklySkini/blockly/core/renderers/thrasos/renderer.js +45 -0
  147. package/blocklySkini/blockly/core/renderers/zelos/constants.js +1002 -0
  148. package/blocklySkini/blockly/core/renderers/zelos/drawer.js +233 -0
  149. package/blocklySkini/blockly/core/renderers/zelos/info.js +587 -0
  150. package/blocklySkini/blockly/core/renderers/zelos/marker_svg.js +148 -0
  151. package/blocklySkini/blockly/core/renderers/zelos/measurables/inputs.js +47 -0
  152. package/blocklySkini/blockly/core/renderers/zelos/measurables/row_elements.js +37 -0
  153. package/blocklySkini/blockly/core/renderers/zelos/measurables/rows.js +108 -0
  154. package/blocklySkini/blockly/core/renderers/zelos/path_object.js +244 -0
  155. package/blocklySkini/blockly/core/renderers/zelos/renderer.js +130 -0
  156. package/blocklySkini/blockly/core/requires.js +84 -0
  157. package/blocklySkini/blockly/core/scrollbar.js +880 -0
  158. package/blocklySkini/blockly/core/theme/classic.js +87 -0
  159. package/blocklySkini/blockly/core/theme/dark.js +33 -0
  160. package/blocklySkini/blockly/core/theme/deuteranopia.js +104 -0
  161. package/blocklySkini/blockly/core/theme/highcontrast.js +119 -0
  162. package/blocklySkini/blockly/core/theme/modern.js +108 -0
  163. package/blocklySkini/blockly/core/theme/tritanopia.js +103 -0
  164. package/blocklySkini/blockly/core/theme/zelos.js +106 -0
  165. package/blocklySkini/blockly/core/theme.js +236 -0
  166. package/blocklySkini/blockly/core/theme_manager.js +197 -0
  167. package/blocklySkini/blockly/core/toolbox/category.js +690 -0
  168. package/blocklySkini/blockly/core/toolbox/collapsible_category.js +294 -0
  169. package/blocklySkini/blockly/core/toolbox/separator.js +123 -0
  170. package/blocklySkini/blockly/core/toolbox/toolbox.js +984 -0
  171. package/blocklySkini/blockly/core/toolbox/toolbox_item.js +145 -0
  172. package/blocklySkini/blockly/core/toolbox.js +943 -0
  173. package/blocklySkini/blockly/core/tooltip.js +387 -0
  174. package/blocklySkini/blockly/core/touch.js +255 -0
  175. package/blocklySkini/blockly/core/touch_gesture.js +325 -0
  176. package/blocklySkini/blockly/core/trashcan.js +661 -0
  177. package/blocklySkini/blockly/core/ui_events.js +85 -0
  178. package/blocklySkini/blockly/core/utils/aria.js +167 -0
  179. package/blocklySkini/blockly/core/utils/colour.js +208 -0
  180. package/blocklySkini/blockly/core/utils/coordinate.js +125 -0
  181. package/blocklySkini/blockly/core/utils/deprecation.js +34 -0
  182. package/blocklySkini/blockly/core/utils/dom.js +391 -0
  183. package/blocklySkini/blockly/core/utils/global.js +37 -0
  184. package/blocklySkini/blockly/core/utils/idgenerator.js +33 -0
  185. package/blocklySkini/blockly/core/utils/keycodes.js +164 -0
  186. package/blocklySkini/blockly/core/utils/math.js +56 -0
  187. package/blocklySkini/blockly/core/utils/metrics.js +124 -0
  188. package/blocklySkini/blockly/core/utils/object.js +73 -0
  189. package/blocklySkini/blockly/core/utils/rect.js +54 -0
  190. package/blocklySkini/blockly/core/utils/size.js +58 -0
  191. package/blocklySkini/blockly/core/utils/string.js +284 -0
  192. package/blocklySkini/blockly/core/utils/style.js +281 -0
  193. package/blocklySkini/blockly/core/utils/svg.js +181 -0
  194. package/blocklySkini/blockly/core/utils/svg_paths.js +142 -0
  195. package/blocklySkini/blockly/core/utils/toolbox.js +401 -0
  196. package/blocklySkini/blockly/core/utils/useragent.js +110 -0
  197. package/blocklySkini/blockly/core/utils/xml.js +79 -0
  198. package/blocklySkini/blockly/core/utils.js +652 -0
  199. package/blocklySkini/blockly/core/variable_events.js +248 -0
  200. package/blocklySkini/blockly/core/variable_map.js +414 -0
  201. package/blocklySkini/blockly/core/variable_model.js +95 -0
  202. package/blocklySkini/blockly/core/variables.js +571 -0
  203. package/blocklySkini/blockly/core/variables_dynamic.js +100 -0
  204. package/blocklySkini/blockly/core/warning.js +200 -0
  205. package/blocklySkini/blockly/core/widgetdiv.js +241 -0
  206. package/blocklySkini/blockly/core/workspace.js +786 -0
  207. package/blocklySkini/blockly/core/workspace_audio.js +153 -0
  208. package/blocklySkini/blockly/core/workspace_comment.js +373 -0
  209. package/blocklySkini/blockly/core/workspace_comment_render_svg.js +461 -0
  210. package/blocklySkini/blockly/core/workspace_comment_svg.js +701 -0
  211. package/blocklySkini/blockly/core/workspace_drag_surface_svg.js +176 -0
  212. package/blocklySkini/blockly/core/workspace_dragger.js +85 -0
  213. package/blocklySkini/blockly/core/workspace_events.js +93 -0
  214. package/blocklySkini/blockly/core/workspace_svg.js +2661 -0
  215. package/blocklySkini/blockly/core/ws_comment_events.js +417 -0
  216. package/blocklySkini/blockly/core/xml.js +827 -0
  217. package/blocklySkini/blockly/core/zoom_controls.js +449 -0
  218. package/blocklySkini/blockly/core-browser.js +34 -0
  219. package/blocklySkini/blockly/core.d.ts +15 -0
  220. package/blocklySkini/blockly/core.js +38 -0
  221. package/blocklySkini/blockly/dart.d.ts +15 -0
  222. package/blocklySkini/blockly/dart.js +27 -0
  223. package/blocklySkini/blockly/dart_compressed.js +114 -0
  224. package/blocklySkini/blockly/dart_compressed.js.map +1 -0
  225. package/blocklySkini/blockly/generators/dart/colour.js +114 -0
  226. package/blocklySkini/blockly/generators/dart/lists.js +447 -0
  227. package/blocklySkini/blockly/generators/dart/logic.js +127 -0
  228. package/blocklySkini/blockly/generators/dart/loops.js +169 -0
  229. package/blocklySkini/blockly/generators/dart/math.js +485 -0
  230. package/blocklySkini/blockly/generators/dart/procedures.js +111 -0
  231. package/blocklySkini/blockly/generators/dart/text.js +339 -0
  232. package/blocklySkini/blockly/generators/dart/variables.js +32 -0
  233. package/blocklySkini/blockly/generators/dart/variables_dynamic.js +21 -0
  234. package/blocklySkini/blockly/generators/dart.js +290 -0
  235. package/blocklySkini/blockly/generators/javascript/colour.js +89 -0
  236. package/blocklySkini/blockly/generators/javascript/lists.js +388 -0
  237. package/blocklySkini/blockly/generators/javascript/logic.js +129 -0
  238. package/blocklySkini/blockly/generators/javascript/loops.js +184 -0
  239. package/blocklySkini/blockly/generators/javascript/math.js +409 -0
  240. package/blocklySkini/blockly/generators/javascript/procedures.js +113 -0
  241. package/blocklySkini/blockly/generators/javascript/text.js +367 -0
  242. package/blocklySkini/blockly/generators/javascript/variables.js +32 -0
  243. package/blocklySkini/blockly/generators/javascript/variables_dynamic.js +23 -0
  244. package/blocklySkini/blockly/generators/javascript.js +317 -0
  245. package/blocklySkini/blockly/generators/lua/colour.js +76 -0
  246. package/blocklySkini/blockly/generators/lua/lists.js +368 -0
  247. package/blocklySkini/blockly/generators/lua/logic.js +127 -0
  248. package/blocklySkini/blockly/generators/lua/loops.js +173 -0
  249. package/blocklySkini/blockly/generators/lua/math.js +423 -0
  250. package/blocklySkini/blockly/generators/lua/procedures.js +113 -0
  251. package/blocklySkini/blockly/generators/lua/text.js +353 -0
  252. package/blocklySkini/blockly/generators/lua/variables.js +32 -0
  253. package/blocklySkini/blockly/generators/lua/variables_dynamic.js +21 -0
  254. package/blocklySkini/blockly/generators/lua.js +198 -0
  255. package/blocklySkini/blockly/generators/php/colour.js +91 -0
  256. package/blocklySkini/blockly/generators/php/lists.js +498 -0
  257. package/blocklySkini/blockly/generators/php/logic.js +128 -0
  258. package/blocklySkini/blockly/generators/php/loops.js +170 -0
  259. package/blocklySkini/blockly/generators/php/math.js +370 -0
  260. package/blocklySkini/blockly/generators/php/procedures.js +132 -0
  261. package/blocklySkini/blockly/generators/php/text.js +271 -0
  262. package/blocklySkini/blockly/generators/php/variables.js +32 -0
  263. package/blocklySkini/blockly/generators/php/variables_dynamic.js +21 -0
  264. package/blocklySkini/blockly/generators/php.js +318 -0
  265. package/blocklySkini/blockly/generators/python/colour.js +72 -0
  266. package/blocklySkini/blockly/generators/python/lists.js +349 -0
  267. package/blocklySkini/blockly/generators/python/logic.js +127 -0
  268. package/blocklySkini/blockly/generators/python/loops.js +214 -0
  269. package/blocklySkini/blockly/generators/python/math.js +385 -0
  270. package/blocklySkini/blockly/generators/python/procedures.js +134 -0
  271. package/blocklySkini/blockly/generators/python/text.js +293 -0
  272. package/blocklySkini/blockly/generators/python/variables.js +32 -0
  273. package/blocklySkini/blockly/generators/python/variables_dynamic.js +21 -0
  274. package/blocklySkini/blockly/generators/python.js +322 -0
  275. package/blocklySkini/blockly/index.d.ts +22 -0
  276. package/blocklySkini/blockly/index.js +24 -0
  277. package/blocklySkini/blockly/javascript.d.ts +15 -0
  278. package/blocklySkini/blockly/javascript.js +27 -0
  279. package/blocklySkini/blockly/javascript_compressed.js +115 -0
  280. package/blocklySkini/blockly/javascript_compressed.js.map +1 -0
  281. package/blocklySkini/blockly/lua.d.ts +15 -0
  282. package/blocklySkini/blockly/lua.js +27 -0
  283. package/blocklySkini/blockly/lua_compressed.js +94 -0
  284. package/blocklySkini/blockly/lua_compressed.js.map +1 -0
  285. package/blocklySkini/blockly/media/1x1.gif +0 -0
  286. package/blocklySkini/blockly/media/click.mp3 +0 -0
  287. package/blocklySkini/blockly/media/click.ogg +0 -0
  288. package/blocklySkini/blockly/media/click.wav +0 -0
  289. package/blocklySkini/blockly/media/delete.mp3 +0 -0
  290. package/blocklySkini/blockly/media/delete.ogg +0 -0
  291. package/blocklySkini/blockly/media/delete.wav +0 -0
  292. package/blocklySkini/blockly/media/disconnect.mp3 +0 -0
  293. package/blocklySkini/blockly/media/disconnect.ogg +0 -0
  294. package/blocklySkini/blockly/media/disconnect.wav +0 -0
  295. package/blocklySkini/blockly/media/dropdown-arrow.svg +1 -0
  296. package/blocklySkini/blockly/media/handclosed.cur +0 -0
  297. package/blocklySkini/blockly/media/handdelete.cur +0 -0
  298. package/blocklySkini/blockly/media/handopen.cur +0 -0
  299. package/blocklySkini/blockly/media/pilcrow.png +0 -0
  300. package/blocklySkini/blockly/media/quote0.png +0 -0
  301. package/blocklySkini/blockly/media/quote1.png +0 -0
  302. package/blocklySkini/blockly/media/sprites.png +0 -0
  303. package/blocklySkini/blockly/media/sprites.svg +74 -0
  304. package/blocklySkini/blockly/msg/ab.d.ts +16 -0
  305. package/blocklySkini/blockly/msg/ab.js +447 -0
  306. package/blocklySkini/blockly/msg/ar.d.ts +16 -0
  307. package/blocklySkini/blockly/msg/ar.js +447 -0
  308. package/blocklySkini/blockly/msg/az.d.ts +16 -0
  309. package/blocklySkini/blockly/msg/az.js +447 -0
  310. package/blocklySkini/blockly/msg/ba.d.ts +16 -0
  311. package/blocklySkini/blockly/msg/ba.js +447 -0
  312. package/blocklySkini/blockly/msg/bcc.d.ts +16 -0
  313. package/blocklySkini/blockly/msg/bcc.js +447 -0
  314. package/blocklySkini/blockly/msg/be-tarask.d.ts +16 -0
  315. package/blocklySkini/blockly/msg/be-tarask.js +447 -0
  316. package/blocklySkini/blockly/msg/be.d.ts +16 -0
  317. package/blocklySkini/blockly/msg/be.js +447 -0
  318. package/blocklySkini/blockly/msg/bg.d.ts +16 -0
  319. package/blocklySkini/blockly/msg/bg.js +447 -0
  320. package/blocklySkini/blockly/msg/bn.d.ts +16 -0
  321. package/blocklySkini/blockly/msg/bn.js +447 -0
  322. package/blocklySkini/blockly/msg/br.d.ts +16 -0
  323. package/blocklySkini/blockly/msg/br.js +447 -0
  324. package/blocklySkini/blockly/msg/ca.d.ts +16 -0
  325. package/blocklySkini/blockly/msg/ca.js +447 -0
  326. package/blocklySkini/blockly/msg/constants.d.ts +16 -0
  327. package/blocklySkini/blockly/msg/cs.d.ts +16 -0
  328. package/blocklySkini/blockly/msg/cs.js +447 -0
  329. package/blocklySkini/blockly/msg/da.d.ts +16 -0
  330. package/blocklySkini/blockly/msg/da.js +447 -0
  331. package/blocklySkini/blockly/msg/de.d.ts +16 -0
  332. package/blocklySkini/blockly/msg/de.js +447 -0
  333. package/blocklySkini/blockly/msg/diq.d.ts +16 -0
  334. package/blocklySkini/blockly/msg/diq.js +447 -0
  335. package/blocklySkini/blockly/msg/dty.d.ts +16 -0
  336. package/blocklySkini/blockly/msg/dty.js +447 -0
  337. package/blocklySkini/blockly/msg/ee.d.ts +16 -0
  338. package/blocklySkini/blockly/msg/ee.js +447 -0
  339. package/blocklySkini/blockly/msg/el.d.ts +16 -0
  340. package/blocklySkini/blockly/msg/el.js +447 -0
  341. package/blocklySkini/blockly/msg/en-gb.d.ts +16 -0
  342. package/blocklySkini/blockly/msg/en-gb.js +447 -0
  343. package/blocklySkini/blockly/msg/en.d.ts +16 -0
  344. package/blocklySkini/blockly/msg/en.js +447 -0
  345. package/blocklySkini/blockly/msg/eo.d.ts +16 -0
  346. package/blocklySkini/blockly/msg/eo.js +447 -0
  347. package/blocklySkini/blockly/msg/es.d.ts +16 -0
  348. package/blocklySkini/blockly/msg/es.js +447 -0
  349. package/blocklySkini/blockly/msg/et.d.ts +16 -0
  350. package/blocklySkini/blockly/msg/et.js +447 -0
  351. package/blocklySkini/blockly/msg/eu.d.ts +16 -0
  352. package/blocklySkini/blockly/msg/eu.js +447 -0
  353. package/blocklySkini/blockly/msg/fa.d.ts +16 -0
  354. package/blocklySkini/blockly/msg/fa.js +447 -0
  355. package/blocklySkini/blockly/msg/fi.d.ts +16 -0
  356. package/blocklySkini/blockly/msg/fi.js +447 -0
  357. package/blocklySkini/blockly/msg/fr.d.ts +16 -0
  358. package/blocklySkini/blockly/msg/fr.js +447 -0
  359. package/blocklySkini/blockly/msg/gl.d.ts +16 -0
  360. package/blocklySkini/blockly/msg/gl.js +447 -0
  361. package/blocklySkini/blockly/msg/gor.d.ts +16 -0
  362. package/blocklySkini/blockly/msg/gor.js +447 -0
  363. package/blocklySkini/blockly/msg/ha.d.ts +16 -0
  364. package/blocklySkini/blockly/msg/ha.js +447 -0
  365. package/blocklySkini/blockly/msg/he.d.ts +16 -0
  366. package/blocklySkini/blockly/msg/he.js +447 -0
  367. package/blocklySkini/blockly/msg/hi.d.ts +16 -0
  368. package/blocklySkini/blockly/msg/hi.js +447 -0
  369. package/blocklySkini/blockly/msg/hrx.d.ts +16 -0
  370. package/blocklySkini/blockly/msg/hrx.js +447 -0
  371. package/blocklySkini/blockly/msg/hu.d.ts +16 -0
  372. package/blocklySkini/blockly/msg/hu.js +447 -0
  373. package/blocklySkini/blockly/msg/hy.d.ts +16 -0
  374. package/blocklySkini/blockly/msg/hy.js +447 -0
  375. package/blocklySkini/blockly/msg/ia.d.ts +16 -0
  376. package/blocklySkini/blockly/msg/ia.js +447 -0
  377. package/blocklySkini/blockly/msg/id.d.ts +16 -0
  378. package/blocklySkini/blockly/msg/id.js +447 -0
  379. package/blocklySkini/blockly/msg/ig.d.ts +16 -0
  380. package/blocklySkini/blockly/msg/ig.js +447 -0
  381. package/blocklySkini/blockly/msg/is.d.ts +16 -0
  382. package/blocklySkini/blockly/msg/is.js +447 -0
  383. package/blocklySkini/blockly/msg/it.d.ts +16 -0
  384. package/blocklySkini/blockly/msg/it.js +447 -0
  385. package/blocklySkini/blockly/msg/ja.d.ts +16 -0
  386. package/blocklySkini/blockly/msg/ja.js +447 -0
  387. package/blocklySkini/blockly/msg/kab.d.ts +16 -0
  388. package/blocklySkini/blockly/msg/kab.js +447 -0
  389. package/blocklySkini/blockly/msg/kn.d.ts +16 -0
  390. package/blocklySkini/blockly/msg/kn.js +447 -0
  391. package/blocklySkini/blockly/msg/ko.d.ts +16 -0
  392. package/blocklySkini/blockly/msg/ko.js +447 -0
  393. package/blocklySkini/blockly/msg/lb.d.ts +16 -0
  394. package/blocklySkini/blockly/msg/lb.js +447 -0
  395. package/blocklySkini/blockly/msg/lki.d.ts +16 -0
  396. package/blocklySkini/blockly/msg/lki.js +447 -0
  397. package/blocklySkini/blockly/msg/lo.d.ts +16 -0
  398. package/blocklySkini/blockly/msg/lo.js +447 -0
  399. package/blocklySkini/blockly/msg/lrc.d.ts +16 -0
  400. package/blocklySkini/blockly/msg/lrc.js +447 -0
  401. package/blocklySkini/blockly/msg/lt.d.ts +16 -0
  402. package/blocklySkini/blockly/msg/lt.js +447 -0
  403. package/blocklySkini/blockly/msg/lv.d.ts +16 -0
  404. package/blocklySkini/blockly/msg/lv.js +447 -0
  405. package/blocklySkini/blockly/msg/mk.d.ts +16 -0
  406. package/blocklySkini/blockly/msg/mk.js +447 -0
  407. package/blocklySkini/blockly/msg/mnw.d.ts +16 -0
  408. package/blocklySkini/blockly/msg/mnw.js +447 -0
  409. package/blocklySkini/blockly/msg/ms.d.ts +16 -0
  410. package/blocklySkini/blockly/msg/ms.js +447 -0
  411. package/blocklySkini/blockly/msg/msg.d.ts +444 -0
  412. package/blocklySkini/blockly/msg/nb.d.ts +16 -0
  413. package/blocklySkini/blockly/msg/nb.js +447 -0
  414. package/blocklySkini/blockly/msg/nl.d.ts +16 -0
  415. package/blocklySkini/blockly/msg/nl.js +447 -0
  416. package/blocklySkini/blockly/msg/oc.d.ts +16 -0
  417. package/blocklySkini/blockly/msg/oc.js +447 -0
  418. package/blocklySkini/blockly/msg/pl.d.ts +16 -0
  419. package/blocklySkini/blockly/msg/pl.js +447 -0
  420. package/blocklySkini/blockly/msg/pms.d.ts +16 -0
  421. package/blocklySkini/blockly/msg/pms.js +447 -0
  422. package/blocklySkini/blockly/msg/pt-br.d.ts +16 -0
  423. package/blocklySkini/blockly/msg/pt-br.js +447 -0
  424. package/blocklySkini/blockly/msg/pt.d.ts +16 -0
  425. package/blocklySkini/blockly/msg/pt.js +447 -0
  426. package/blocklySkini/blockly/msg/qqq.d.ts +16 -0
  427. package/blocklySkini/blockly/msg/ro.d.ts +16 -0
  428. package/blocklySkini/blockly/msg/ro.js +447 -0
  429. package/blocklySkini/blockly/msg/ru.d.ts +16 -0
  430. package/blocklySkini/blockly/msg/ru.js +447 -0
  431. package/blocklySkini/blockly/msg/sc.d.ts +16 -0
  432. package/blocklySkini/blockly/msg/sc.js +447 -0
  433. package/blocklySkini/blockly/msg/sd.d.ts +16 -0
  434. package/blocklySkini/blockly/msg/sd.js +447 -0
  435. package/blocklySkini/blockly/msg/shn.d.ts +16 -0
  436. package/blocklySkini/blockly/msg/shn.js +447 -0
  437. package/blocklySkini/blockly/msg/sk.d.ts +16 -0
  438. package/blocklySkini/blockly/msg/sk.js +447 -0
  439. package/blocklySkini/blockly/msg/skr-arab.d.ts +16 -0
  440. package/blocklySkini/blockly/msg/skr-arab.js +447 -0
  441. package/blocklySkini/blockly/msg/sl.d.ts +16 -0
  442. package/blocklySkini/blockly/msg/sl.js +447 -0
  443. package/blocklySkini/blockly/msg/sq.d.ts +16 -0
  444. package/blocklySkini/blockly/msg/sq.js +447 -0
  445. package/blocklySkini/blockly/msg/sr-latn.d.ts +16 -0
  446. package/blocklySkini/blockly/msg/sr-latn.js +447 -0
  447. package/blocklySkini/blockly/msg/sr.d.ts +16 -0
  448. package/blocklySkini/blockly/msg/sr.js +447 -0
  449. package/blocklySkini/blockly/msg/sv.d.ts +16 -0
  450. package/blocklySkini/blockly/msg/sv.js +447 -0
  451. package/blocklySkini/blockly/msg/synonyms.d.ts +16 -0
  452. package/blocklySkini/blockly/msg/ta.d.ts +16 -0
  453. package/blocklySkini/blockly/msg/ta.js +447 -0
  454. package/blocklySkini/blockly/msg/tcy.d.ts +16 -0
  455. package/blocklySkini/blockly/msg/tcy.js +447 -0
  456. package/blocklySkini/blockly/msg/te.d.ts +16 -0
  457. package/blocklySkini/blockly/msg/te.js +447 -0
  458. package/blocklySkini/blockly/msg/th.d.ts +16 -0
  459. package/blocklySkini/blockly/msg/th.js +447 -0
  460. package/blocklySkini/blockly/msg/tl.d.ts +16 -0
  461. package/blocklySkini/blockly/msg/tl.js +447 -0
  462. package/blocklySkini/blockly/msg/tlh.d.ts +16 -0
  463. package/blocklySkini/blockly/msg/tlh.js +447 -0
  464. package/blocklySkini/blockly/msg/tr.d.ts +16 -0
  465. package/blocklySkini/blockly/msg/tr.js +447 -0
  466. package/blocklySkini/blockly/msg/ug-arab.d.ts +16 -0
  467. package/blocklySkini/blockly/msg/ug-arab.js +447 -0
  468. package/blocklySkini/blockly/msg/uk.d.ts +16 -0
  469. package/blocklySkini/blockly/msg/uk.js +447 -0
  470. package/blocklySkini/blockly/msg/ur.d.ts +16 -0
  471. package/blocklySkini/blockly/msg/ur.js +447 -0
  472. package/blocklySkini/blockly/msg/vi.d.ts +16 -0
  473. package/blocklySkini/blockly/msg/vi.js +447 -0
  474. package/blocklySkini/blockly/msg/xmf.d.ts +16 -0
  475. package/blocklySkini/blockly/msg/xmf.js +447 -0
  476. package/blocklySkini/blockly/msg/yo.d.ts +16 -0
  477. package/blocklySkini/blockly/msg/yo.js +447 -0
  478. package/blocklySkini/blockly/msg/zh-hans.d.ts +16 -0
  479. package/blocklySkini/blockly/msg/zh-hans.js +447 -0
  480. package/blocklySkini/blockly/msg/zh-hant.d.ts +16 -0
  481. package/blocklySkini/blockly/msg/zh-hant.js +447 -0
  482. package/blocklySkini/blockly/node.js +35 -0
  483. package/blocklySkini/blockly/package.json +84 -0
  484. package/blocklySkini/blockly/php.d.ts +15 -0
  485. package/blocklySkini/blockly/php.js +27 -0
  486. package/blocklySkini/blockly/php_compressed.js +103 -0
  487. package/blocklySkini/blockly/php_compressed.js.map +1 -0
  488. package/blocklySkini/blockly/python.d.ts +15 -0
  489. package/blocklySkini/blockly/python.js +27 -0
  490. package/blocklySkini/blockly/python_compressed.js +98 -0
  491. package/blocklySkini/blockly/python_compressed.js.map +1 -0
  492. package/blocklySkini/blocklySkini.html +81 -0
  493. package/blocklySkini/orchestrations/.xml +1 -0
  494. package/blocklySkini/orchestrations/BluesSkini-1.xml +231 -0
  495. package/blocklySkini/orchestrations/BluesSkini-2.xml +741 -0
  496. package/blocklySkini/orchestrations/BluesSkini-3.xml +731 -0
  497. package/blocklySkini/orchestrations/BluesSkini-4.xml +695 -0
  498. package/blocklySkini/orchestrations/BluesSkini-5.xml +731 -0
  499. package/blocklySkini/orchestrations/BluesSkini.xml +704 -0
  500. package/blocklySkini/orchestrations/FunkBitwig-1.xml +778 -0
  501. package/blocklySkini/orchestrations/FunkBitwig-2.xml +471 -0
  502. package/blocklySkini/orchestrations/JouerLeBonInstrument1-1.xml +784 -0
  503. package/blocklySkini/orchestrations/MajeurMineur-1.xml +638 -0
  504. package/blocklySkini/orchestrations/Opus5-3 - Copie.xml +1041 -0
  505. package/blocklySkini/orchestrations/Opus5-3.xml +1128 -0
  506. package/blocklySkini/orchestrations/Quatuor1-1.xml +357 -0
  507. package/blocklySkini/orchestrations/TechnoBitwig-1.xml +221 -0
  508. package/blocklySkini/orchestrations/TestBlockly.xml +497 -0
  509. package/blocklySkini/orchestrations/TestBlockly1.xml +500 -0
  510. package/blocklySkini/orchestrations/TestBlockly2.xml +792 -0
  511. package/blocklySkini/orchestrations/TestBlockly3-1.xml +1182 -0
  512. package/blocklySkini/orchestrations/TestBlockly3.xml +1251 -0
  513. package/blocklySkini/orchestrations/TestFunction.xml +143 -0
  514. package/blocklySkini/orchestrations/TestIf.xml +80 -0
  515. package/blocklySkini/orchestrations/TestLoop.xml +127 -0
  516. package/blocklySkini/orchestrations/TestOrchestration2.xml +460 -0
  517. package/blocklySkini/orchestrations/TestPrint.xml +70 -0
  518. package/blocklySkini/orchestrations/TestSubMod.xml +81 -0
  519. package/blocklySkini/orchestrations/Testlogic.xml +113 -0
  520. package/blocklySkini/orchestrations/TrouveLaPercu-1.xml +813 -0
  521. package/blocklySkini/orchestrations/TrouveLaPercu-2.xml +813 -0
  522. package/blocklySkini/orchestrations/bar.xml +496 -0
  523. package/blocklySkini/orchestrations/bar2.xml +496 -0
  524. package/blocklySkini/orchestrations/foo.xml +500 -0
  525. package/blocklySkini/orchestrations/opus5Blockly - Copie.xml +496 -0
  526. package/blocklySkini/orchestrations/opus5Blockly-3.xml +868 -0
  527. package/blocklySkini/orchestrations/opus5Blockly.xml +496 -0
  528. package/blocklySkini/orchestrations/testOrchestration3.xml +483 -0
  529. package/blocklySkini/orchestrations/testOrchestration4.xml +487 -0
  530. package/blocklySkini/scripts/hiphop_blocks.js +6104 -0
  531. package/blocklySkini/scripts/main2.js +801 -0
  532. package/blocklySkini/styles/index.css +320 -0
  533. package/blocklySkini/styles/material.css +11552 -0
  534. package/package.json +3 -3
@@ -0,0 +1,387 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2011 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ /**
8
+ * @fileoverview Library to create tooltips for Blockly.
9
+ * First, call Blockly.Tooltip.init() after onload.
10
+ * Second, set the 'tooltip' property on any SVG element that needs a tooltip.
11
+ * If the tooltip is a string, then that message will be displayed.
12
+ * If the tooltip is an SVG element, then that object's tooltip will be used.
13
+ * Third, call Blockly.Tooltip.bindMouseEvents(e) passing the SVG element.
14
+ * @author fraser@google.com (Neil Fraser)
15
+ */
16
+ 'use strict';
17
+
18
+ /**
19
+ * @name Blockly.Tooltip
20
+ * @namespace
21
+ */
22
+ goog.provide('Blockly.Tooltip');
23
+
24
+ goog.require('Blockly.utils.string');
25
+
26
+ /**
27
+ * A type which can define a tooltip.
28
+ * Either a string, an object containing a tooltip property, or a function which
29
+ * returns either a string, or another arbitrarily nested function which
30
+ * eventually unwinds to a string.
31
+ * @typedef {string|{tooltip}|function(): (string|!Function)}
32
+ */
33
+ Blockly.Tooltip.TipInfo;
34
+
35
+ /**
36
+ * Is a tooltip currently showing?
37
+ */
38
+ Blockly.Tooltip.visible = false;
39
+
40
+ /**
41
+ * Is someone else blocking the tooltip from being shown?
42
+ * @type {boolean}
43
+ * @private
44
+ */
45
+ Blockly.Tooltip.blocked_ = false;
46
+
47
+ /**
48
+ * Maximum width (in characters) of a tooltip.
49
+ */
50
+ Blockly.Tooltip.LIMIT = 50;
51
+
52
+ /**
53
+ * PID of suspended thread to clear tooltip on mouse out.
54
+ * @private
55
+ */
56
+ Blockly.Tooltip.mouseOutPid_ = 0;
57
+
58
+ /**
59
+ * PID of suspended thread to show the tooltip.
60
+ * @private
61
+ */
62
+ Blockly.Tooltip.showPid_ = 0;
63
+
64
+ /**
65
+ * Last observed X location of the mouse pointer (freezes when tooltip appears).
66
+ * @private
67
+ */
68
+ Blockly.Tooltip.lastX_ = 0;
69
+
70
+ /**
71
+ * Last observed Y location of the mouse pointer (freezes when tooltip appears).
72
+ * @private
73
+ */
74
+ Blockly.Tooltip.lastY_ = 0;
75
+
76
+ /**
77
+ * Current element being pointed at.
78
+ * @type {Element}
79
+ * @private
80
+ */
81
+ Blockly.Tooltip.element_ = null;
82
+
83
+ /**
84
+ * Once a tooltip has opened for an element, that element is 'poisoned' and
85
+ * cannot respawn a tooltip until the pointer moves over a different element.
86
+ * @type {Element}
87
+ * @private
88
+ */
89
+ Blockly.Tooltip.poisonedElement_ = null;
90
+
91
+ /**
92
+ * Horizontal offset between mouse cursor and tooltip.
93
+ */
94
+ Blockly.Tooltip.OFFSET_X = 0;
95
+
96
+ /**
97
+ * Vertical offset between mouse cursor and tooltip.
98
+ */
99
+ Blockly.Tooltip.OFFSET_Y = 10;
100
+
101
+ /**
102
+ * Radius mouse can move before killing tooltip.
103
+ */
104
+ Blockly.Tooltip.RADIUS_OK = 10;
105
+
106
+ /**
107
+ * Delay before tooltip appears.
108
+ */
109
+ Blockly.Tooltip.HOVER_MS = 750;
110
+
111
+ /**
112
+ * Horizontal padding between tooltip and screen edge.
113
+ */
114
+ Blockly.Tooltip.MARGINS = 5;
115
+
116
+ /**
117
+ * The HTML container. Set once by Blockly.Tooltip.createDom.
118
+ * @type {Element}
119
+ */
120
+ Blockly.Tooltip.DIV = null;
121
+
122
+ /**
123
+ * Returns the tooltip text for the given element.
124
+ * @param {?Object} object The object to get the the tooltip text of.
125
+ * @returns {string} The tooltip text of the element.
126
+ */
127
+ Blockly.Tooltip.getTooltipOfObject = function(object) {
128
+ var obj = Blockly.Tooltip.getTargetObject_(object);
129
+ if (obj) {
130
+ var tooltip = obj.tooltip;
131
+ while (typeof tooltip == 'function') {
132
+ tooltip = tooltip();
133
+ }
134
+ if (typeof tooltip != 'string') {
135
+ throw Error('Tooltip function must return a string.');
136
+ }
137
+ return tooltip;
138
+ }
139
+ return '';
140
+ };
141
+
142
+ /**
143
+ * Returns the target object that the given object is targeting for its
144
+ * tooltip. Could be the object itself.
145
+ * @param {?Object} obj The object are trying to find the target tooltip
146
+ * object of.
147
+ * @returns {?{tooltip}} The target tooltip object.
148
+ * @private
149
+ */
150
+ Blockly.Tooltip.getTargetObject_ = function(obj) {
151
+ while (obj && obj.tooltip) {
152
+ if ((typeof obj.tooltip == 'string') ||
153
+ (typeof obj.tooltip == 'function')) {
154
+ return obj;
155
+ }
156
+ obj = obj.tooltip;
157
+ }
158
+ return null;
159
+ };
160
+
161
+ /**
162
+ * Create the tooltip div and inject it onto the page.
163
+ */
164
+ Blockly.Tooltip.createDom = function() {
165
+ if (Blockly.Tooltip.DIV) {
166
+ return; // Already created.
167
+ }
168
+ // Create an HTML container for popup overlays (e.g. editor widgets).
169
+ Blockly.Tooltip.DIV = document.createElement('div');
170
+ Blockly.Tooltip.DIV.className = 'blocklyTooltipDiv';
171
+ var container = Blockly.parentContainer || document.body;
172
+ container.appendChild(Blockly.Tooltip.DIV);
173
+ };
174
+
175
+ /**
176
+ * Binds the required mouse events onto an SVG element.
177
+ * @param {!Element} element SVG element onto which tooltip is to be bound.
178
+ */
179
+ Blockly.Tooltip.bindMouseEvents = function(element) {
180
+ element.mouseOverWrapper_ = Blockly.bindEvent_(element, 'mouseover', null,
181
+ Blockly.Tooltip.onMouseOver_);
182
+ element.mouseOutWrapper_ = Blockly.bindEvent_(element, 'mouseout', null,
183
+ Blockly.Tooltip.onMouseOut_);
184
+
185
+ // Don't use bindEvent_ for mousemove since that would create a
186
+ // corresponding touch handler, even though this only makes sense in the
187
+ // context of a mouseover/mouseout.
188
+ element.addEventListener('mousemove', Blockly.Tooltip.onMouseMove_, false);
189
+ };
190
+
191
+ /**
192
+ * Unbinds tooltip mouse events from the SVG element.
193
+ * @param {!Element} element SVG element onto which tooltip is bound.
194
+ */
195
+ Blockly.Tooltip.unbindMouseEvents = function(element) {
196
+ if (!element) {
197
+ return;
198
+ }
199
+ Blockly.unbindEvent_(element.mouseOverWrapper_);
200
+ Blockly.unbindEvent_(element.mouseOutWrapper_);
201
+ element.removeEventListener('mousemove', Blockly.Tooltip.onMouseMove_);
202
+ };
203
+
204
+ /**
205
+ * Hide the tooltip if the mouse is over a different object.
206
+ * Initialize the tooltip to potentially appear for this object.
207
+ * @param {!Event} e Mouse event.
208
+ * @private
209
+ */
210
+ Blockly.Tooltip.onMouseOver_ = function(e) {
211
+ if (Blockly.Tooltip.blocked_) {
212
+ // Someone doesn't want us to show tooltips.
213
+ return;
214
+ }
215
+ // If the tooltip is an object, treat it as a pointer to the next object in
216
+ // the chain to look at. Terminate when a string or function is found.
217
+ var element = /** @type {Element} */ (Blockly.Tooltip.getTargetObject_(
218
+ e.currentTarget));
219
+ if (Blockly.Tooltip.element_ != element) {
220
+ Blockly.Tooltip.hide();
221
+ Blockly.Tooltip.poisonedElement_ = null;
222
+ Blockly.Tooltip.element_ = element;
223
+ }
224
+ // Forget about any immediately preceding mouseOut event.
225
+ clearTimeout(Blockly.Tooltip.mouseOutPid_);
226
+ };
227
+
228
+ /**
229
+ * Hide the tooltip if the mouse leaves the object and enters the workspace.
230
+ * @param {!Event} _e Mouse event.
231
+ * @private
232
+ */
233
+ Blockly.Tooltip.onMouseOut_ = function(_e) {
234
+ if (Blockly.Tooltip.blocked_) {
235
+ // Someone doesn't want us to show tooltips.
236
+ return;
237
+ }
238
+ // Moving from one element to another (overlapping or with no gap) generates
239
+ // a mouseOut followed instantly by a mouseOver. Fork off the mouseOut
240
+ // event and kill it if a mouseOver is received immediately.
241
+ // This way the task only fully executes if mousing into the void.
242
+ Blockly.Tooltip.mouseOutPid_ = setTimeout(function() {
243
+ Blockly.Tooltip.element_ = null;
244
+ Blockly.Tooltip.poisonedElement_ = null;
245
+ Blockly.Tooltip.hide();
246
+ }, 1);
247
+ clearTimeout(Blockly.Tooltip.showPid_);
248
+ };
249
+
250
+ /**
251
+ * When hovering over an element, schedule a tooltip to be shown. If a tooltip
252
+ * is already visible, hide it if the mouse strays out of a certain radius.
253
+ * @param {!Event} e Mouse event.
254
+ * @private
255
+ */
256
+ Blockly.Tooltip.onMouseMove_ = function(e) {
257
+ if (!Blockly.Tooltip.element_ || !Blockly.Tooltip.element_.tooltip) {
258
+ // No tooltip here to show.
259
+ return;
260
+ } else if (Blockly.Tooltip.blocked_) {
261
+ // Someone doesn't want us to show tooltips. We are probably handling a
262
+ // user gesture, such as a click or drag.
263
+ return;
264
+ }
265
+ if (Blockly.Tooltip.visible) {
266
+ // Compute the distance between the mouse position when the tooltip was
267
+ // shown and the current mouse position. Pythagorean theorem.
268
+ var dx = Blockly.Tooltip.lastX_ - e.pageX;
269
+ var dy = Blockly.Tooltip.lastY_ - e.pageY;
270
+ if (Math.sqrt(dx * dx + dy * dy) > Blockly.Tooltip.RADIUS_OK) {
271
+ Blockly.Tooltip.hide();
272
+ }
273
+ } else if (Blockly.Tooltip.poisonedElement_ != Blockly.Tooltip.element_) {
274
+ // The mouse moved, clear any previously scheduled tooltip.
275
+ clearTimeout(Blockly.Tooltip.showPid_);
276
+ // Maybe this time the mouse will stay put. Schedule showing of tooltip.
277
+ Blockly.Tooltip.lastX_ = e.pageX;
278
+ Blockly.Tooltip.lastY_ = e.pageY;
279
+ Blockly.Tooltip.showPid_ =
280
+ setTimeout(Blockly.Tooltip.show_, Blockly.Tooltip.HOVER_MS);
281
+ }
282
+ };
283
+
284
+ /**
285
+ * Dispose of the tooltip.
286
+ * @package
287
+ */
288
+ Blockly.Tooltip.dispose = function() {
289
+ Blockly.Tooltip.element_ = null;
290
+ Blockly.Tooltip.poisonedElement_ = null;
291
+ Blockly.Tooltip.hide();
292
+ };
293
+
294
+ /**
295
+ * Hide the tooltip.
296
+ */
297
+ Blockly.Tooltip.hide = function() {
298
+ if (Blockly.Tooltip.visible) {
299
+ Blockly.Tooltip.visible = false;
300
+ if (Blockly.Tooltip.DIV) {
301
+ Blockly.Tooltip.DIV.style.display = 'none';
302
+ }
303
+ }
304
+ if (Blockly.Tooltip.showPid_) {
305
+ clearTimeout(Blockly.Tooltip.showPid_);
306
+ }
307
+ };
308
+
309
+ /**
310
+ * Hide any in-progress tooltips and block showing new tooltips until the next
311
+ * call to unblock().
312
+ * @package
313
+ */
314
+ Blockly.Tooltip.block = function() {
315
+ Blockly.Tooltip.hide();
316
+ Blockly.Tooltip.blocked_ = true;
317
+ };
318
+
319
+ /**
320
+ * Unblock tooltips: allow them to be scheduled and shown according to their own
321
+ * logic.
322
+ * @package
323
+ */
324
+ Blockly.Tooltip.unblock = function() {
325
+ Blockly.Tooltip.blocked_ = false;
326
+ };
327
+
328
+ /**
329
+ * Create the tooltip and show it.
330
+ * @private
331
+ */
332
+ Blockly.Tooltip.show_ = function() {
333
+ if (Blockly.Tooltip.blocked_) {
334
+ // Someone doesn't want us to show tooltips.
335
+ return;
336
+ }
337
+ Blockly.Tooltip.poisonedElement_ = Blockly.Tooltip.element_;
338
+ if (!Blockly.Tooltip.DIV) {
339
+ return;
340
+ }
341
+ // Erase all existing text.
342
+ Blockly.Tooltip.DIV.textContent = '';
343
+ var tip = Blockly.Tooltip.getTooltipOfObject(Blockly.Tooltip.element_);
344
+ tip = Blockly.utils.string.wrap(tip, Blockly.Tooltip.LIMIT);
345
+ // Create new text, line by line.
346
+ var lines = tip.split('\n');
347
+ for (var i = 0; i < lines.length; i++) {
348
+ var div = document.createElement('div');
349
+ div.appendChild(document.createTextNode(lines[i]));
350
+ Blockly.Tooltip.DIV.appendChild(div);
351
+ }
352
+ var rtl = Blockly.Tooltip.element_.RTL;
353
+ var windowWidth = document.documentElement.clientWidth;
354
+ var windowHeight = document.documentElement.clientHeight;
355
+ // Display the tooltip.
356
+ Blockly.Tooltip.DIV.style.direction = rtl ? 'rtl' : 'ltr';
357
+ Blockly.Tooltip.DIV.style.display = 'block';
358
+ Blockly.Tooltip.visible = true;
359
+ // Move the tooltip to just below the cursor.
360
+ var anchorX = Blockly.Tooltip.lastX_;
361
+ if (rtl) {
362
+ anchorX -= Blockly.Tooltip.OFFSET_X + Blockly.Tooltip.DIV.offsetWidth;
363
+ } else {
364
+ anchorX += Blockly.Tooltip.OFFSET_X;
365
+ }
366
+ var anchorY = Blockly.Tooltip.lastY_ + Blockly.Tooltip.OFFSET_Y;
367
+
368
+ if (anchorY + Blockly.Tooltip.DIV.offsetHeight >
369
+ windowHeight + window.scrollY) {
370
+ // Falling off the bottom of the screen; shift the tooltip up.
371
+ anchorY -= Blockly.Tooltip.DIV.offsetHeight + 2 * Blockly.Tooltip.OFFSET_Y;
372
+ }
373
+ if (rtl) {
374
+ // Prevent falling off left edge in RTL mode.
375
+ anchorX = Math.max(Blockly.Tooltip.MARGINS - window.scrollX, anchorX);
376
+ } else {
377
+ if (anchorX + Blockly.Tooltip.DIV.offsetWidth >
378
+ windowWidth + window.scrollX - 2 * Blockly.Tooltip.MARGINS) {
379
+ // Falling off the right edge of the screen;
380
+ // clamp the tooltip on the edge.
381
+ anchorX = windowWidth - Blockly.Tooltip.DIV.offsetWidth -
382
+ 2 * Blockly.Tooltip.MARGINS;
383
+ }
384
+ }
385
+ Blockly.Tooltip.DIV.style.top = anchorY + 'px';
386
+ Blockly.Tooltip.DIV.style.left = anchorX + 'px';
387
+ };
@@ -0,0 +1,255 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2016 Google LLC
4
+ * SPDX-License-Identifier: Apache-2.0
5
+ */
6
+
7
+ /**
8
+ * @fileoverview Touch handling for Blockly.
9
+ * @author fenichel@google.com (Rachel Fenichel)
10
+ */
11
+ 'use strict';
12
+
13
+ /**
14
+ * @name Blockly.Touch
15
+ * @namespace
16
+ */
17
+ goog.provide('Blockly.Touch');
18
+
19
+ goog.require('Blockly.utils');
20
+ goog.require('Blockly.utils.global');
21
+ goog.require('Blockly.utils.string');
22
+
23
+
24
+ /**
25
+ * Whether touch is enabled in the browser.
26
+ * Copied from Closure's goog.events.BrowserFeature.TOUCH_ENABLED
27
+ */
28
+ Blockly.Touch.TOUCH_ENABLED =
29
+ ('ontouchstart' in Blockly.utils.global ||
30
+ !!(Blockly.utils.global['document'] && document.documentElement &&
31
+ 'ontouchstart' in document.documentElement) ||
32
+ // IE10 uses non-standard touch events, so it has a different check.
33
+ !!(Blockly.utils.global['navigator'] &&
34
+ (Blockly.utils.global['navigator']['maxTouchPoints'] ||
35
+ Blockly.utils.global['navigator']['msMaxTouchPoints'])));
36
+
37
+ /**
38
+ * Which touch events are we currently paying attention to?
39
+ * @type {?string}
40
+ * @private
41
+ */
42
+ Blockly.Touch.touchIdentifier_ = null;
43
+
44
+ /**
45
+ * The TOUCH_MAP lookup dictionary specifies additional touch events to fire,
46
+ * in conjunction with mouse events.
47
+ * @type {Object}
48
+ */
49
+ Blockly.Touch.TOUCH_MAP = {};
50
+ if (Blockly.utils.global['PointerEvent']) {
51
+ Blockly.Touch.TOUCH_MAP = {
52
+ 'mousedown': ['pointerdown'],
53
+ 'mouseenter': ['pointerenter'],
54
+ 'mouseleave': ['pointerleave'],
55
+ 'mousemove': ['pointermove'],
56
+ 'mouseout': ['pointerout'],
57
+ 'mouseover': ['pointerover'],
58
+ 'mouseup': ['pointerup', 'pointercancel'],
59
+ 'touchend': ['pointerup'],
60
+ 'touchcancel': ['pointercancel']
61
+ };
62
+ } else if (Blockly.Touch.TOUCH_ENABLED) {
63
+ Blockly.Touch.TOUCH_MAP = {
64
+ 'mousedown': ['touchstart'],
65
+ 'mousemove': ['touchmove'],
66
+ 'mouseup': ['touchend', 'touchcancel']
67
+ };
68
+ }
69
+
70
+ /**
71
+ * PID of queued long-press task.
72
+ * @private
73
+ */
74
+ Blockly.longPid_ = 0;
75
+
76
+ /**
77
+ * Context menus on touch devices are activated using a long-press.
78
+ * Unfortunately the contextmenu touch event is currently (2015) only supported
79
+ * by Chrome. This function is fired on any touchstart event, queues a task,
80
+ * which after about a second opens the context menu. The tasks is killed
81
+ * if the touch event terminates early.
82
+ * @param {!Event} e Touch start event.
83
+ * @param {Blockly.Gesture} gesture The gesture that triggered this longStart.
84
+ * @package
85
+ */
86
+ Blockly.longStart = function(e, gesture) {
87
+ Blockly.longStop_();
88
+ // Punt on multitouch events.
89
+ if (e.changedTouches && e.changedTouches.length != 1) {
90
+ return;
91
+ }
92
+ Blockly.longPid_ = setTimeout(function() {
93
+ // Additional check to distinguish between touch events and pointer events
94
+ if (e.changedTouches) {
95
+ // TouchEvent
96
+ e.button = 2; // Simulate a right button click.
97
+ // e was a touch event. It needs to pretend to be a mouse event.
98
+ e.clientX = e.changedTouches[0].clientX;
99
+ e.clientY = e.changedTouches[0].clientY;
100
+ }
101
+
102
+ // Let the gesture route the right-click correctly.
103
+ if (gesture) {
104
+ gesture.handleRightClick(e);
105
+ }
106
+
107
+ }, Blockly.LONGPRESS);
108
+ };
109
+
110
+ /**
111
+ * Nope, that's not a long-press. Either touchend or touchcancel was fired,
112
+ * or a drag hath begun. Kill the queued long-press task.
113
+ * @package
114
+ */
115
+ Blockly.longStop_ = function() {
116
+ if (Blockly.longPid_) {
117
+ clearTimeout(Blockly.longPid_);
118
+ Blockly.longPid_ = 0;
119
+ }
120
+ };
121
+
122
+ /**
123
+ * Clear the touch identifier that tracks which touch stream to pay attention
124
+ * to. This ends the current drag/gesture and allows other pointers to be
125
+ * captured.
126
+ */
127
+ Blockly.Touch.clearTouchIdentifier = function() {
128
+ Blockly.Touch.touchIdentifier_ = null;
129
+ };
130
+
131
+ /**
132
+ * Decide whether Blockly should handle or ignore this event.
133
+ * Mouse and touch events require special checks because we only want to deal
134
+ * with one touch stream at a time. All other events should always be handled.
135
+ * @param {!Event} e The event to check.
136
+ * @return {boolean} True if this event should be passed through to the
137
+ * registered handler; false if it should be blocked.
138
+ */
139
+ Blockly.Touch.shouldHandleEvent = function(e) {
140
+ return !Blockly.Touch.isMouseOrTouchEvent(e) ||
141
+ Blockly.Touch.checkTouchIdentifier(e);
142
+ };
143
+
144
+ /**
145
+ * Get the touch identifier from the given event. If it was a mouse event, the
146
+ * identifier is the string 'mouse'.
147
+ * @param {!Event} e Mouse event or touch event.
148
+ * @return {string} The touch identifier from the first changed touch, if
149
+ * defined. Otherwise 'mouse'.
150
+ */
151
+ Blockly.Touch.getTouchIdentifierFromEvent = function(e) {
152
+ return e.pointerId != undefined ? e.pointerId :
153
+ (e.changedTouches && e.changedTouches[0] &&
154
+ e.changedTouches[0].identifier !== undefined &&
155
+ e.changedTouches[0].identifier !== null) ?
156
+ e.changedTouches[0].identifier : 'mouse';
157
+ };
158
+
159
+ /**
160
+ * Check whether the touch identifier on the event matches the current saved
161
+ * identifier. If there is no identifier, that means it's a mouse event and
162
+ * we'll use the identifier "mouse". This means we won't deal well with
163
+ * multiple mice being used at the same time. That seems okay.
164
+ * If the current identifier was unset, save the identifier from the
165
+ * event. This starts a drag/gesture, during which touch events with other
166
+ * identifiers will be silently ignored.
167
+ * @param {!Event} e Mouse event or touch event.
168
+ * @return {boolean} Whether the identifier on the event matches the current
169
+ * saved identifier.
170
+ */
171
+ Blockly.Touch.checkTouchIdentifier = function(e) {
172
+ var identifier = Blockly.Touch.getTouchIdentifierFromEvent(e);
173
+
174
+ // if (Blockly.touchIdentifier_ )is insufficient because Android touch
175
+ // identifiers may be zero.
176
+ if (Blockly.Touch.touchIdentifier_ !== undefined &&
177
+ Blockly.Touch.touchIdentifier_ !== null) {
178
+ // We're already tracking some touch/mouse event. Is this from the same
179
+ // source?
180
+ return Blockly.Touch.touchIdentifier_ == identifier;
181
+ }
182
+ if (e.type == 'mousedown' || e.type == 'touchstart' ||
183
+ e.type == 'pointerdown') {
184
+ // No identifier set yet, and this is the start of a drag. Set it and
185
+ // return.
186
+ Blockly.Touch.touchIdentifier_ = identifier;
187
+ return true;
188
+ }
189
+ // There was no identifier yet, but this wasn't a start event so we're going
190
+ // to ignore it. This probably means that another drag finished while this
191
+ // pointer was down.
192
+ return false;
193
+ };
194
+
195
+ /**
196
+ * Set an event's clientX and clientY from its first changed touch. Use this to
197
+ * make a touch event work in a mouse event handler.
198
+ * @param {!Event} e A touch event.
199
+ */
200
+ Blockly.Touch.setClientFromTouch = function(e) {
201
+ if (Blockly.utils.string.startsWith(e.type, 'touch')) {
202
+ // Map the touch event's properties to the event.
203
+ var touchPoint = e.changedTouches[0];
204
+ e.clientX = touchPoint.clientX;
205
+ e.clientY = touchPoint.clientY;
206
+ }
207
+ };
208
+
209
+ /**
210
+ * Check whether a given event is a mouse or touch event.
211
+ * @param {!Event} e An event.
212
+ * @return {boolean} True if it is a mouse or touch event; false otherwise.
213
+ */
214
+ Blockly.Touch.isMouseOrTouchEvent = function(e) {
215
+ return Blockly.utils.string.startsWith(e.type, 'touch') ||
216
+ Blockly.utils.string.startsWith(e.type, 'mouse') ||
217
+ Blockly.utils.string.startsWith(e.type, 'pointer');
218
+ };
219
+
220
+ /**
221
+ * Check whether a given event is a touch event or a pointer event.
222
+ * @param {!Event} e An event.
223
+ * @return {boolean} True if it is a touch event; false otherwise.
224
+ */
225
+ Blockly.Touch.isTouchEvent = function(e) {
226
+ return Blockly.utils.string.startsWith(e.type, 'touch') ||
227
+ Blockly.utils.string.startsWith(e.type, 'pointer');
228
+ };
229
+
230
+ /**
231
+ * Split an event into an array of events, one per changed touch or mouse
232
+ * point.
233
+ * @param {!Event} e A mouse event or a touch event with one or more changed
234
+ * touches.
235
+ * @return {!Array.<!Event>} An array of mouse or touch events. Each touch
236
+ * event will have exactly one changed touch.
237
+ */
238
+ Blockly.Touch.splitEventByTouches = function(e) {
239
+ var events = [];
240
+ if (e.changedTouches) {
241
+ for (var i = 0; i < e.changedTouches.length; i++) {
242
+ var newEvent = {
243
+ type: e.type,
244
+ changedTouches: [e.changedTouches[i]],
245
+ target: e.target,
246
+ stopPropagation: function() { e.stopPropagation(); },
247
+ preventDefault: function() { e.preventDefault(); }
248
+ };
249
+ events[i] = newEvent;
250
+ }
251
+ } else {
252
+ events.push(e);
253
+ }
254
+ return events;
255
+ };